ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TDataGeneratorController.java
@@ -1,16 +1,21 @@ package com.ruoyi.web.controller.api; import com.ruoyi.common.basic.PageInfo; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.system.domain.TDataGenerator; import com.ruoyi.system.dto.OrderMealGeneratorDTO; import com.ruoyi.system.dto.OrderSaleGeneratorDTO; import com.ruoyi.system.query.TDataGeneratorQuery; import com.ruoyi.system.service.TDataGeneratorService; import com.ruoyi.system.service.TOrderMealService; import com.ruoyi.system.vo.TDataGeneratorVO; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.List; /** * <p> @@ -34,9 +39,29 @@ } @ApiOperation( value = "餐饮数据生成") @PostMapping(value = "/dataGenerator") public AjaxResult<String> dataGenerator(@RequestBody OrderMealGeneratorDTO dto) { dataGeneratorService.dataGenerator(dto); @PostMapping(value = "/mealDataGenerator") public AjaxResult<String> mealDataGenerator(@RequestBody OrderMealGeneratorDTO dto) { dataGeneratorService.mealDataGenerator(dto); return AjaxResult.success(); } @ApiOperation( value = "销售数据生成") @PostMapping(value = "/saleDataGenerator") public AjaxResult<String> saleDataGenerator(@RequestBody OrderSaleGeneratorDTO dto) { dataGeneratorService.saleDataGenerator(dto); return AjaxResult.success(); } @ApiOperation( value = "数据生成分页") @PostMapping(value = "/pageList") public AjaxResult<PageInfo<TDataGeneratorVO>> pageList(@Validated @RequestBody TDataGeneratorQuery query) { return AjaxResult.success(dataGeneratorService.pageList(query)); } @ApiOperation( value = "数据覆盖") @GetMapping(value = "/dataCoverage") public AjaxResult<String> dataCoverage(@RequestParam(value = "id") Long id) { dataGeneratorService.dataCoverage(id); return AjaxResult.success(); } ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java
@@ -178,6 +178,10 @@ if (flag){ return error("修改角色'" + dto.getRoleName() + "'失败,角色名称已存在"); } SysRole sysRole = roleService.selectRoleById(dto.getRoleId()); if("meal".equals(sysRole.getRoleKey()) || "sale".equals(sysRole.getRoleKey()) || "admin".equals(sysRole.getRoleKey())){ return error("当前角色无法修改"); } if (roleService.editRole(dto) > 0) { // 更新缓存用户权限 @@ -215,6 +219,10 @@ @PutMapping("/changeStatus") public AjaxResult changeStatus(@RequestBody SysRole role) { SysRole sysRole = roleService.selectRoleById(role.getRoleId()); if("meal".equals(sysRole.getRoleKey()) || "sale".equals(sysRole.getRoleKey()) || "admin".equals(sysRole.getRoleKey())){ return error("当前角色无法修改状态"); } role.setUpdateBy(getUsername()); roleService.updateStatus(role); return AjaxResult.success(); @@ -224,7 +232,23 @@ * 删除角色 */ // @PreAuthorize("@ss.hasPermi('system:role:remove')") @ApiOperation(value = "删除角色") @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)); } /** * 删除角色 */ // @PreAuthorize("@ss.hasPermi('system:role:remove')") @ApiOperation(value = "批量删除角色") @Log(title = "角色信息-角色删除角色", businessType = BusinessType.DELETE) @DeleteMapping("/deleteById/{ids}") public AjaxResult remove(@PathVariable String ids) ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
@@ -82,105 +82,6 @@ // } /** * 人员借用列表 */ // @ApiOperation(value = "人员借用列表") // @GetMapping("/userBorrowList") // public AjaxResult userBorrowList(@RequestParam(required = false) String name, // @RequestParam(required = false) Integer type) // { // // UserAddListVO userAddListVO = new UserAddListVO(); // // Long companyId = tokenService.getLoginUser().getUser().getCompanyId(); // // List<TCompany> companyList = new ArrayList<>(); // List<TDept> deptList = new ArrayList<>(); // List<SysUser> userList = new ArrayList<>(); // // 查询公司 // if(Objects.nonNull(type) && type == 1){ // companyList = companyService.userAddListByCompanyName(name); // } // // 查询部门 // if(Objects.nonNull(type) && type == 2){ // deptList = tDeptService.userAddListByDeptName(name); // } // // 查询用户 // if(Objects.nonNull(type) && type == 3){ // userList = userService.selectListByNamePhone(name); // } // // if(Objects.isNull(type)){ // companyList = companyService.userAddListByCompanyName(name); // deptList = tDeptService.userAddListByDeptName(name); // userList = userService.selectListByNamePhone(name); // } // // List<Long> companyIds = companyList.stream().map(TCompany::getId).collect(Collectors.toList()); // List<Long> deptCompanyIds = deptList.stream().map(TDept::getCompanyId).collect(Collectors.toList()); // List<Long> userCompanyIds = userList.stream().map(SysUser::getCompanyId).collect(Collectors.toList()); // companyIds.addAll(deptCompanyIds); // companyIds.addAll(userCompanyIds); // // companyIds = companyIds.stream().distinct().collect(Collectors.toList()); // // if(CollectionUtils.isEmpty(companyIds)){ // return AjaxResult.success(userAddListVO); // } // SysUser user1 = tokenService.getLoginUser().getUser(); // if(!user1.isAdmin()){ // companyIds = companyIds.stream().filter(e->!e.equals(companyId)).collect(Collectors.toList()); // } // // // 查询符合要求的公司 // List<UserLevelVO> parent = companyService.userAddListByCompanyIds(companyIds); // // List<TDept> depts = tDeptService.selectList(); // // List<SysUser> sysUsers = userService.selectList(); // // for (UserLevelVO userLevelVO : parent) { // // // 找到公司下的部门 // List<TDept> tDepts = depts.stream().filter(e -> userLevelVO.getKey().equals(e.getCompanyId())).collect(Collectors.toList()); // List<UserLevelVO> children = new ArrayList<>(); // // 封装部门 // for (TDept dept : tDepts) { // userLevelVO.setChildren(children); // UserLevelVO userLevelVO1 = new UserLevelVO(); // userLevelVO1.setKey(dept.getId()); // userLevelVO1.setTitle(dept.getDeptName()); // // 找到部门下的人员 // List<SysUser> users; // if(StringUtils.isNotEmpty(name) && type == 3){ // users = sysUsers.stream().filter(e -> userLevelVO1.getKey().equals(e.getDeptId()) // && ((StringUtils.isNotEmpty(e.getNickName()) && e.getNickName().contains(name))) // || (StringUtils.isNotEmpty(e.getPhonenumber()) && e.getPhonenumber().contains(name))).collect(Collectors.toList()); // }else { // users = sysUsers.stream().filter(e -> userLevelVO1.getKey().equals(e.getDeptId())).collect(Collectors.toList()); // } // List<UserLevelVO> children1 = new ArrayList<>(); // // 封装人员 // for (SysUser user : users) { // UserLevelVO userLevelVO2 = new UserLevelVO(); // userLevelVO2.setKey(user.getUserId()); // userLevelVO2.setTitle(user.getNickName()); // userLevelVO2.setAvatar(user.getAvatar()); // userLevelVO2.setFlag(true); // children1.add(userLevelVO2); // } // userLevelVO1.setChildren(children1); // // children.add(userLevelVO1); // } // userLevelVO.setChildren(children); // } // userAddListVO.setUserLevelVOS(parent); // userAddListVO.setUserList(sysUsers); // return AjaxResult.success(userAddListVO); // } /** * 获取用户详情 */ @ApiOperation(value = "获取用户详情") @@ -270,7 +171,6 @@ @PostMapping("/add") public AjaxResult add(@Validated @RequestBody SysUser user) { user.setUserName(user.getPhonenumber()); if (!userService.checkUserNameUnique(user)) { return error("新增用户'" + user.getUserName() + "'失败,登录账号已存在"); @@ -279,6 +179,7 @@ { return error("新增用户'" + user.getUserName() + "'失败,手机号码已存在"); } user.setPassword("123456"); user.setCreateBy(getUsername()); user.setPassword(SecurityUtils.encryptPassword(user.getPassword())); userService.insertUser(user); @@ -359,7 +260,7 @@ SysUser user = new SysUser(); user.setUserId(dto.getUserId()); user.setStatus(String.valueOf(dto.getStatus())); user.setRemark(dto.getRemark()); user.setDisableRemark(dto.getDisableRemark()); user.setUpdateBy(getUsername()); return AjaxResult.success(userService.updateUserStatus(user)); } ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
@@ -112,11 +112,18 @@ /** 角色ID */ @ApiModelProperty(value = "角色ID") private Long roleId; @ApiModelProperty(value = "角色类型 1=平台 2=餐饮店铺 3=销售店铺") private Integer roleType; /** * 是否为黑名单 1是 0否 */ @ApiModelProperty(value = "是否为黑名单 1是 0否") private Integer ifBlack; /** * 禁用备注 */ @ApiModelProperty(value = "禁用备注") private String disableRemark; @TableField(exist = false) private String roleName; ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUser.java
@@ -60,6 +60,7 @@ * 操作系统 */ private String os; private String nickName; /** * 权限列表 @@ -89,6 +90,14 @@ this.permissions = permissions; } public String getNickName() { return nickName; } public void setNickName(String nickName) { this.nickName = nickName; } public Long getUserId() { return userId; ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
@@ -113,6 +113,7 @@ } AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"))); LoginUser loginUser = (LoginUser) authentication.getPrincipal(); loginUser.setNickName(user.getNickName()); recordLoginInfo(loginUser.getUserId()); // 生成token return loginUser; ruoyi-system/pom.xml
@@ -55,11 +55,11 @@ <!-- <version>4.3.2</version>--> <!-- </dependency>--> <!-- <dependency>--> <!-- <groupId>org.springframework</groupId>--> <!-- <artifactId>spring-test</artifactId>--> <!-- <version>5.1.3.RELEASE</version>--> <!-- </dependency>--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>5.1.3.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> @@ -70,6 +70,11 @@ <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-core</artifactId> </dependency> <dependency> <groupId>com.ruoyi</groupId> <artifactId>ruoyi-framework</artifactId> <version>3.8.6</version> </dependency> </dependencies> ruoyi-system/src/main/java/com/ruoyi/system/domain/TDataGenerator.java
@@ -1,6 +1,7 @@ package com.ruoyi.system.domain; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.core.domain.BaseModel; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -8,6 +9,8 @@ import lombok.EqualsAndHashCode; import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; /** @@ -43,22 +46,43 @@ @ApiModelProperty(value = "开始时间") @TableField("startTime") private LocalDateTime startTime; @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") private LocalDate startTime; @ApiModelProperty(value = "结束时间") @TableField("endTime") private LocalDateTime endTime; @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") private LocalDate endTime; @ApiModelProperty(value = "最小金额") @TableField("minMoney") private Double minMoney; private BigDecimal minMoney; @ApiModelProperty(value = "最大金额") @TableField("maxMoney") private Double maxMoney; private BigDecimal maxMoney; @ApiModelProperty(value = "状态 1=生成中 2=待覆盖 3=已覆盖") @TableField("status") private Integer status; @ApiModelProperty(value = "订单类型 1=餐饮 2=销售") @TableField("orderType") private Integer orderType; @ApiModelProperty(value = "微信支付占比") @TableField("weiXinPay") private BigDecimal weiXinPay; @ApiModelProperty(value = "支付宝支付占比") @TableField("aliPay") private BigDecimal aliPay; @ApiModelProperty(value = "支付宝支付占比") @TableField("cardPay") private BigDecimal cardPay; @ApiModelProperty(value = "现金支付占比") @TableField("moneyPay") private BigDecimal moneyPay; @ApiModelProperty(value = "其他支付") @TableField("otherPay") private BigDecimal otherPay; } ruoyi-system/src/main/java/com/ruoyi/system/domain/TOrderMeal.java
@@ -62,10 +62,19 @@ @ApiModelProperty(value = "支付状态 1=待支付 2=已支付") @TableField("status") private Integer status; @ApiModelProperty(value = "是否覆盖 1=是 0=否") @TableField("isCover") private Integer isCover; @ApiModelProperty(value = "数据生成id") @TableField("generatorId") private Long generatorId; @ApiModelProperty(value = "店铺id") @TableField("shopId") private Long shopId; @ApiModelProperty(value = "商品集合") @TableField(exist = false) private List<TOrderMealGoods> mealOrderGoods;; private List<TOrderMealGoods> mealOrderGoods; } ruoyi-system/src/main/java/com/ruoyi/system/domain/TOrderSale.java
@@ -1,6 +1,7 @@ package com.ruoyi.system.domain; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.core.domain.BaseModel; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -9,7 +10,9 @@ import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.List; /** * <p> @@ -31,8 +34,9 @@ private Long id; @ApiModelProperty(value = "下单时间") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") @TableField("orderTime") private LocalDateTime orderTime; private LocalDate orderTime; @ApiModelProperty(value = "备注说明") @TableField("remark") @@ -53,6 +57,13 @@ @ApiModelProperty(value = "支付状态 1=待支付 2=已支付") @TableField("status") private Integer status; @ApiModelProperty(value = "店铺id") @TableField("shopId") private Long shopId; @ApiModelProperty(value = "销售订单商品") @TableField(exist = false) private List<TOrderSaleGoods> orderSaleGoods; } ruoyi-system/src/main/java/com/ruoyi/system/domain/TOrderStock.java
@@ -1,6 +1,7 @@ package com.ruoyi.system.domain; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.core.domain.BaseModel; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -9,7 +10,9 @@ import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.List; /** * <p> @@ -35,11 +38,28 @@ private String stockNum; @ApiModelProperty(value = "进货日期") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") @TableField("stockTime") private LocalDateTime stockTime; private LocalDate stockTime; @ApiModelProperty(value = "进货总价") @TableField("stockTotalPrice") private BigDecimal stockTotalPrice; // @ApiModelProperty(value = "进货总价") // @TableField("stockTotalPrice") // private BigDecimal stockTotalPrice; @ApiModelProperty(value = "是否覆盖 1=是 0=否") @TableField("isCover") private Integer isCover; @ApiModelProperty(value = "数据生成id") @TableField("generatorId") private Long generatorId; @ApiModelProperty(value = "店铺id") @TableField("shopId") private Long shopId; // @ApiModelProperty(value = "支付方式 1=现金 2=支付宝 3=微信 4=银行卡 5=其他") // @TableField("payType") // private Integer payType; @ApiModelProperty(value = "进货数据商品集合") @TableField(exist = false) private List<TOrderStockGoods> orderStockGoods; } ruoyi-system/src/main/java/com/ruoyi/system/domain/TStockDataSet.java
New file @@ -0,0 +1,42 @@ package com.ruoyi.system.domain; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.core.domain.BaseModel; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import java.math.BigDecimal; import java.time.LocalDate; @Data @EqualsAndHashCode(callSuper = false) @TableName("t_stock_data_set") @ApiModel(value="TStockDataSet对象", description="进货数据设置") public class TStockDataSet extends BaseModel { @TableId(value = "id", type = IdType.AUTO) private Long id; @ApiModelProperty(value = "进货日期") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") @TableField("stockDate") private LocalDate stockDate; @ApiModelProperty(value = "损耗率") @TableField("lossRate") private BigDecimal lossRate; @ApiModelProperty(value = "数据生成id") @TableField("generatorId") private Long generatorId; @ApiModelProperty(value = "店铺id") @TableField("shopId") private Long shopId; } ruoyi-system/src/main/java/com/ruoyi/system/dto/OrderMealGeneratorDTO.java
@@ -6,6 +6,7 @@ import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDate; import java.util.List; @Data @@ -15,11 +16,17 @@ @ApiModelProperty(value = "店铺id") private Long shopId; @ApiModelProperty(value = "开始时间") private LocalDate startTime; @ApiModelProperty(value = "结束时间") private LocalDate endTime; @ApiModelProperty(value = "营业额小") private BigDecimal minTurnover; private BigDecimal minMoney; @ApiModelProperty(value = "营业额大") private BigDecimal maxTurnover; private BigDecimal maxMoney; @ApiModelProperty(value = "微信占比") private BigDecimal weiXinProportion; ruoyi-system/src/main/java/com/ruoyi/system/dto/OrderSaleGeneratorDTO.java
New file @@ -0,0 +1,32 @@ package com.ruoyi.system.dto; import com.ruoyi.system.domain.TOrderSale; import com.ruoyi.system.domain.TStockDataSet; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; import java.time.LocalDate; import java.util.List; @Data @ApiModel(value = "销售数据生成DTO") public class OrderSaleGeneratorDTO implements Serializable { @ApiModelProperty(value = "店铺id") private Long shopId; @ApiModelProperty(value = "开始时间") private LocalDate startTime; @ApiModelProperty(value = "结束时间") private LocalDate endTime; @ApiModelProperty(value = "销售订单") private List<TOrderSale> orderSales; @ApiModelProperty(value = "进货数据设置") private List<TStockDataSet> stockDataSets; } ruoyi-system/src/main/java/com/ruoyi/system/dto/StockDataSetDTO.java
New file @@ -0,0 +1,23 @@ package com.ruoyi.system.dto; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDate; @Data @ApiModel(value = "进货数据设置DTO") public class StockDataSetDTO implements Serializable { @ApiModelProperty(value = "进货日期") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") private LocalDate stockDate; @ApiModelProperty(value = "损耗率") private BigDecimal lossRate; } ruoyi-system/src/main/java/com/ruoyi/system/dto/SysUserUpdateStatusDTO.java
@@ -16,7 +16,7 @@ @ApiModelProperty(value = "状态 帐号状态(0正常 1停用)") private Integer status; @ApiModelProperty(value = "备注") private String remark; @ApiModelProperty(value = "禁用备注") private String disableRemark; } ruoyi-system/src/main/java/com/ruoyi/system/mapper/TDataGeneratorMapper.java
@@ -2,7 +2,13 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.common.basic.PageInfo; import com.ruoyi.system.domain.TDataGenerator; import com.ruoyi.system.query.TDataGeneratorQuery; import com.ruoyi.system.vo.TDataGeneratorVO; import org.apache.ibatis.annotations.Param; import java.util.List; /** * <p> @@ -14,4 +20,11 @@ */ public interface TDataGeneratorMapper extends BaseMapper<TDataGenerator> { /** * 数据生成分页 * @param query * @param pageInfo * @return */ List<TDataGeneratorVO> pageList(@Param("query") TDataGeneratorQuery query, @Param("pageInfo")PageInfo<TDataGeneratorVO> pageInfo); } ruoyi-system/src/main/java/com/ruoyi/system/mapper/TStockDataSetMapper.java
New file @@ -0,0 +1,8 @@ package com.ruoyi.system.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.system.domain.TStockDataSet; public interface TStockDataSetMapper extends BaseMapper<TStockDataSet> { } ruoyi-system/src/main/java/com/ruoyi/system/query/SysUserQuery.java
@@ -5,18 +5,20 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; @Data @ApiModel(value = "账户列表query") public class SysUserQuery extends BasePage { @ApiModelProperty(value = "姓名") private String nickName; @ApiModelProperty(value = "姓名或者手机号") private String nickNameOrPhone; @ApiModelProperty(value = "角色id") private Integer roleId; private List<Integer> roleIds; @ApiModelProperty(value = "手机号") private String phonenumber; // @ApiModelProperty(value = "手机号") // private String phonenumber; @ApiModelProperty(value = "状态 0=正常 1=停用") private String status; ruoyi-system/src/main/java/com/ruoyi/system/query/TDataGeneratorQuery.java
New file @@ -0,0 +1,23 @@ package com.ruoyi.system.query; import com.ruoyi.common.core.domain.model.TimeRangeQueryBody; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotNull; @Data @ApiModel(value = "数据生成分页") public class TDataGeneratorQuery extends TimeRangeQueryBody { @ApiModelProperty(value = "操作人姓名") private String userName; @ApiModelProperty(value = "店铺名称") private String shopName; @ApiModelProperty(value = "状态 1=生成中 2=待覆盖 3=已覆盖") private Integer status; @ApiModelProperty(value = "订单类型 1=餐饮 2=销售") @NotNull(message = "订单类型不能为空") private Integer orderType; } ruoyi-system/src/main/java/com/ruoyi/system/service/TDataGeneratorService.java
@@ -1,8 +1,12 @@ package com.ruoyi.system.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.common.basic.PageInfo; import com.ruoyi.system.domain.TDataGenerator; import com.ruoyi.system.dto.OrderMealGeneratorDTO; import com.ruoyi.system.dto.OrderSaleGeneratorDTO; import com.ruoyi.system.query.TDataGeneratorQuery; import com.ruoyi.system.vo.TDataGeneratorVO; /** * <p> @@ -17,5 +21,24 @@ * 餐饮数据生成 * @param dto */ void dataGenerator(OrderMealGeneratorDTO dto); void mealDataGenerator(OrderMealGeneratorDTO dto); /** * 销售数据生成 * @param dto */ void saleDataGenerator(OrderSaleGeneratorDTO dto); /** * 数据生成分页 * @param query */ PageInfo<TDataGeneratorVO> pageList(TDataGeneratorQuery query); /** * 数据覆盖 * @param id * @return */ void dataCoverage(Long id); } ruoyi-system/src/main/java/com/ruoyi/system/service/TStockDataSetService.java
New file @@ -0,0 +1,20 @@ package com.ruoyi.system.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.common.basic.PageInfo; import com.ruoyi.system.domain.TShop; import com.ruoyi.system.domain.TStockDataSet; import com.ruoyi.system.query.TShopQuery; import com.ruoyi.system.vo.TShopVO; /** * <p> * </p> * * @author xiaochen * @since 2024-08-14 */ public interface TStockDataSetService extends IService<TStockDataSet> { } ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
@@ -646,9 +646,15 @@ SysUser sysUser = new SysUser(); sysUser.setUserName(dto.getAccount()); sysUser.setNickName(dto.getShopHead()); if(dto.getShopType() ==1){ sysUser.setRoleType(2); }else { sysUser.setRoleType(3); } sysUser.setPassword(SecurityUtils.encryptPassword(dto.getPassword())); this.insertUser(sysUser); // TODO 自动绑定角色 } @Override @@ -659,6 +665,11 @@ } sysUser.setUserName(dto.getAccount()); sysUser.setNickName(dto.getShopHead()); if(dto.getShopType() ==1){ sysUser.setRoleType(2); }else { sysUser.setRoleType(3); } sysUser.setPassword(SecurityUtils.encryptPassword(dto.getPassword())); this.updateUser(sysUser); } ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TDataGeneratorServiceImpl.java
@@ -1,22 +1,30 @@ package com.ruoyi.system.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.basic.PageInfo; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.constant.OrderNumConstants; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.CodeGenerateUtils; import com.ruoyi.framework.web.service.TokenService; import com.ruoyi.system.domain.*; import com.ruoyi.system.dto.OrderMealGeneratorCountDTO; import com.ruoyi.system.dto.OrderMealGeneratorDTO; import com.ruoyi.system.dto.TOrderMealDTO; import com.ruoyi.system.dto.*; import com.ruoyi.system.mapper.TDataGeneratorMapper; import com.ruoyi.system.query.TDataGeneratorQuery; import com.ruoyi.system.service.*; import com.ruoyi.system.vo.SysUserVO; import com.ruoyi.system.vo.TDataGeneratorVO; import com.ruoyi.system.vo.TFoundationConfigVO; import org.apache.poi.ss.formula.functions.T; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.math.RoundingMode; import java.time.LocalDate; import java.util.*; import java.util.stream.Collectors; @@ -41,9 +49,38 @@ private TOrderMealService orderMealService; @Autowired private TOrderMealGoodsService orderMealGoodsService; @Autowired private TOrderSaleService orderSaleService; @Autowired private TOrderSaleGoodsService orderSaleGoodsService; @Autowired private TOrderStockService orderStockService; @Autowired private TOrderStockGoodsService orderStockGoodsService; @Autowired private TokenService tokenService; @Autowired private TStockDataSetService stockDataSetService; @Override public void dataGenerator(OrderMealGeneratorDTO dto) { public void mealDataGenerator(OrderMealGeneratorDTO dto) { // 存储数据生成数据 TDataGenerator dataGenerator = new TDataGenerator(); dataGenerator.setUserId(tokenService.getLoginUser().getUserId()); dataGenerator.setUserName(tokenService.getLoginUser().getNickName()); dataGenerator.setShopId(dataGenerator.getShopId()); dataGenerator.setStartTime(dto.getStartTime()); dataGenerator.setEndTime(dto.getEndTime()); dataGenerator.setMinMoney(dto.getMinMoney()); dataGenerator.setMaxMoney(dto.getMaxMoney()); dataGenerator.setStatus(2); dataGenerator.setOrderType(1); dataGenerator.setWeiXinPay(dto.getWeiXinProportion()); dataGenerator.setAliPay(dto.getAliProportion()); dataGenerator.setCardPay(dto.getCardProportion()); dataGenerator.setMoneyPay(dto.getMoneyProportion()); dataGenerator.setOtherPay(dto.getOtherProportion()); this.save(dataGenerator); long start = System.currentTimeMillis(); // 查询所有的人数用餐标准 List<TFoundationConfigVO> foundationConfigs = foundationConfigService.getList(); @@ -99,7 +136,7 @@ } } BigDecimal sumMoney = orderMeals.stream().map(TOrderMeal::getPayMoney).reduce(BigDecimal::add).get(); if(sumMoney.compareTo(dto.getMinTurnover()) >= 0 || sumMoney.compareTo(dto.getMaxTurnover()) <= 0){ if(sumMoney.compareTo(dto.getMinMoney()) >= 0 || sumMoney.compareTo(dto.getMaxMoney()) <= 0){ int weiXin = getRandomPayType(orderMeals.size(), dto.getWeiXinProportion()); int ali = getRandomPayType(orderMeals.size(), dto.getAliProportion()); int card = getRandomPayType(orderMeals.size(), dto.getCardProportion()); @@ -148,12 +185,17 @@ allOrderMeals.addAll(cardOrderMeals); allOrderMeals.addAll(moneyOrderMeals); allOrderMeals.addAll(otherOrderMeals); allOrderMeals.forEach(e->{ e.setIsCover(0); e.setGeneratorId(dataGenerator.getId()); }); orderMealService.saveBatch(allOrderMeals); for (TOrderMeal weiXinOrderMeal : allOrderMeals) { weiXinOrderMeal.getMealOrderGoods().forEach(e->e.setOrderId(weiXinOrderMeal.getId())); for (TOrderMeal orderMeal : allOrderMeals) { orderMeal.getMealOrderGoods().forEach(e->e.setOrderId(orderMeal.getId())); } orderMealGoodsService.saveBatch(allOrderMeals.stream().map(TOrderMeal::getMealOrderGoods).flatMap(Collection::stream).collect(Collectors.toList())); // 存储 long end = System.currentTimeMillis() - start; System.err.println("相差时间========="+end); }else { @@ -162,6 +204,237 @@ } @Override public void saleDataGenerator(OrderSaleGeneratorDTO dto) { // 查询上一次的数据生成时间 TDataGenerator lastDataGenerator = this.getOne(new LambdaQueryWrapper<TDataGenerator>().eq(TDataGenerator::getShopId, dto.getShopId()).orderByDesc(TDataGenerator::getCreateTime).last("limit 1")); if(Objects.nonNull(lastDataGenerator) && lastDataGenerator.getEndTime().isAfter(dto.getStartTime())){ throw new ServiceException("数据生成时间不能小于上次生成时间"); } // 查询上次生成最后一次的时间 后续涛哥不用这个类,可以改成TOrderStock的最后一条数据 TStockDataSet stockDataSet = stockDataSetService.getOne(new LambdaQueryWrapper<TStockDataSet>() .eq(TStockDataSet::getShopId, dto.getShopId()) .orderByDesc(TStockDataSet::getStockDate) .last("limit 1")); // 存储数据生成数据 TDataGenerator dataGenerator = new TDataGenerator(); dataGenerator.setUserId(tokenService.getLoginUser().getUserId()); dataGenerator.setUserName(tokenService.getLoginUser().getNickName()); dataGenerator.setShopId(dataGenerator.getShopId()); dataGenerator.setStartTime(dto.getStartTime()); dataGenerator.setEndTime(dto.getEndTime()); dataGenerator.setStatus(2); dataGenerator.setOrderType(2); this.save(dataGenerator); // 存储进货数据设置 List<TStockDataSet> stockDataSets = dto.getStockDataSets(); stockDataSets.forEach(e->e.setGeneratorId(dataGenerator.getId())); stockDataSetService.saveBatch(stockDataSets); // 添加销售订单数 List<TOrderSale> orderSales = dto.getOrderSales(); orderSaleService.saveBatch(orderSales); for (TOrderSale orderSale : orderSales) { orderSale.getOrderSaleGoods().forEach(e->e.setOrderId(orderSale.getId())); } List<TOrderSaleGoods> orderSaleGoods = orderSales.stream().map(TOrderSale::getOrderSaleGoods).flatMap(Collection::stream).collect(Collectors.toList()); orderSaleGoodsService.saveBatch(orderSaleGoods); // 生成进货数据 List<TOrderStock> stockList = new ArrayList<>(); stockDataSets.stream().sorted(Comparator.comparing(TStockDataSet::getStockDate)); for (int i = 0; i < stockDataSets.size(); i++) { TStockDataSet start = stockDataSets.get(i); LocalDate startTime = start.getStockDate(); if(i==stockDataSets.size()-1){ // 最后一次 LocalDate endTime = LocalDate.now(); List<Long> saleIds = orderSales.stream().filter(e -> e.getOrderTime().compareTo(startTime) >= 0 && e.getOrderTime().compareTo(endTime) <= 0).map(TOrderSale::getId).collect(Collectors.toList()); List<TOrderSaleGoods> orderSaleGoodsList = orderSaleGoods.stream().filter(e -> saleIds.contains(e.getOrderId())).collect(Collectors.toList()); // 根据商品新生成一条数据 TOrderStock orderStock = new TOrderStock(); orderStock.setStockNum(OrderNumConstants.STOCK + CodeGenerateUtils.generateVolumeSn()); orderStock.setStockTime(startTime); orderStock.setIsCover(0); orderStock.setGeneratorId(dataGenerator.getId()); orderStock.setShopId(dto.getShopId()); Map<String, List<TOrderSaleGoods>> goodsList = orderSaleGoodsList.stream().collect(Collectors.groupingBy(TOrderSaleGoods::getGoodsName)); List<TOrderStockGoods> orderStockGoods = new ArrayList<>(); goodsList.forEach((k,v)->{ TOrderStockGoods tOrderStockGoods = new TOrderStockGoods(); tOrderStockGoods.setGoodsName(k); tOrderStockGoods.setGoodsNum(v.get(0).getGoodsNum()); tOrderStockGoods.setCostPrice(v.get(0).getGoodsCostPrice()); tOrderStockGoods.setSalePrice(v.get(0).getSalePrice()); tOrderStockGoods.setGoodsPicture(v.get(0).getGoodsPicture()); tOrderStockGoods.setStockCount(v.stream().mapToInt(TOrderSaleGoods::getGoodsCount).sum()); orderStockGoods.add(tOrderStockGoods); }); orderStock.setOrderStockGoods(orderStockGoods); stockList.add(orderStock); }else if(i==0 && Objects.nonNull(stockDataSet)){ // 第一次 第一次的进货时间为上一次的结束时间 开始时间为上一次的开始时间 LocalDate startTime1 = stockDataSet.getStockDate(); List<Long> saleIds = orderSales.stream().filter(e -> e.getOrderTime().compareTo(startTime) < 0).map(TOrderSale::getId).collect(Collectors.toList()); List<TOrderSaleGoods> orderSaleGoodsList = orderSaleGoods.stream().filter(e -> saleIds.contains(e.getOrderId())).collect(Collectors.toList()); // 查询上一次开始之后的订单数据 List<TOrderSale> orderSales1 = orderSaleService.list(new LambdaQueryWrapper<TOrderSale>().gt(TOrderSale::getOrderTime, startTime1)); List<Long> saleIds1 = orderSales1.stream().map(TOrderSale::getId).collect(Collectors.toList()); // 查询上一次的商品 List<TOrderSaleGoods> list = orderSaleGoodsService.list(new LambdaQueryWrapper<TOrderSaleGoods>().in(TOrderSaleGoods::getOrderId, saleIds1)); // 结合上次最后一次的数据 list.addAll(orderSaleGoodsList); // 删除上一次的数据生成 新生成一条数据 TOrderStock orderStock = new TOrderStock(); orderStock.setStockNum(OrderNumConstants.STOCK + CodeGenerateUtils.generateVolumeSn()); orderStock.setStockTime(startTime); orderStock.setIsCover(0); orderStock.setGeneratorId(dataGenerator.getId()); orderStock.setShopId(dto.getShopId()); Map<String, List<TOrderSaleGoods>> goodsList = list.stream().collect(Collectors.groupingBy(TOrderSaleGoods::getGoodsName)); List<TOrderStockGoods> orderStockGoods = new ArrayList<>(); goodsList.forEach((k,v)->{ TOrderStockGoods tOrderStockGoods = new TOrderStockGoods(); tOrderStockGoods.setGoodsName(k); tOrderStockGoods.setGoodsNum(v.get(0).getGoodsNum()); tOrderStockGoods.setCostPrice(v.get(0).getGoodsCostPrice()); tOrderStockGoods.setSalePrice(v.get(0).getSalePrice()); tOrderStockGoods.setGoodsPicture(v.get(0).getGoodsPicture()); tOrderStockGoods.setStockCount(v.stream().mapToInt(TOrderSaleGoods::getGoodsCount).sum()); orderStockGoods.add(tOrderStockGoods); }); orderStock.setOrderStockGoods(orderStockGoods); stockList.add(orderStock); // 处理第一次到下一次的数据 TStockDataSet end = stockDataSets.get(i + 1); LocalDate endTime = end.getStockDate(); List<Long> saleIds2 = orderSales.stream().filter(e -> e.getOrderTime().compareTo(startTime) >= 0 && e.getOrderTime().compareTo(endTime) < 0).map(TOrderSale::getId).collect(Collectors.toList()); List<TOrderSaleGoods> orderSaleGoodsList2 = orderSaleGoods.stream().filter(e -> saleIds2.contains(e.getOrderId())).collect(Collectors.toList()); // 根据商品新生成一条数据 TOrderStock orderStock1 = new TOrderStock(); orderStock1.setStockNum(OrderNumConstants.STOCK + CodeGenerateUtils.generateVolumeSn()); orderStock1.setStockTime(startTime); orderStock1.setIsCover(0); orderStock1.setGeneratorId(dataGenerator.getId()); orderStock1.setShopId(dto.getShopId()); Map<String, List<TOrderSaleGoods>> goodsList1 = orderSaleGoodsList2.stream().collect(Collectors.groupingBy(TOrderSaleGoods::getGoodsName)); List<TOrderStockGoods> orderStockGoods1 = new ArrayList<>(); goodsList1.forEach((k,v)->{ TOrderStockGoods tOrderStockGoods = new TOrderStockGoods(); tOrderStockGoods.setGoodsName(k); tOrderStockGoods.setGoodsNum(v.get(0).getGoodsNum()); tOrderStockGoods.setCostPrice(v.get(0).getGoodsCostPrice()); tOrderStockGoods.setSalePrice(v.get(0).getSalePrice()); tOrderStockGoods.setGoodsPicture(v.get(0).getGoodsPicture()); tOrderStockGoods.setStockCount(v.stream().mapToInt(TOrderSaleGoods::getGoodsCount).sum()); orderStockGoods1.add(tOrderStockGoods); }); orderStock1.setOrderStockGoods(orderStockGoods1); stockList.add(orderStock1); }else { TStockDataSet end = stockDataSets.get(i + 1); LocalDate endTime = end.getStockDate(); List<Long> saleIds = orderSales.stream().filter(e -> e.getOrderTime().compareTo(startTime) >= 0 && e.getOrderTime().compareTo(endTime) < 0).map(TOrderSale::getId).collect(Collectors.toList()); List<TOrderSaleGoods> orderSaleGoodsList = orderSaleGoods.stream().filter(e -> saleIds.contains(e.getOrderId())).collect(Collectors.toList()); // 根据商品新生成一条数据 TOrderStock orderStock = new TOrderStock(); orderStock.setStockNum(OrderNumConstants.STOCK + CodeGenerateUtils.generateVolumeSn()); orderStock.setStockTime(startTime); orderStock.setIsCover(0); orderStock.setGeneratorId(dataGenerator.getId()); orderStock.setShopId(dto.getShopId()); Map<String, List<TOrderSaleGoods>> goodsList = orderSaleGoodsList.stream().collect(Collectors.groupingBy(TOrderSaleGoods::getGoodsName)); List<TOrderStockGoods> orderStockGoods = new ArrayList<>(); goodsList.forEach((k,v)->{ TOrderStockGoods tOrderStockGoods = new TOrderStockGoods(); tOrderStockGoods.setGoodsName(k); tOrderStockGoods.setGoodsNum(v.get(0).getGoodsNum()); tOrderStockGoods.setCostPrice(v.get(0).getGoodsCostPrice()); tOrderStockGoods.setSalePrice(v.get(0).getSalePrice()); tOrderStockGoods.setGoodsPicture(v.get(0).getGoodsPicture()); tOrderStockGoods.setStockCount(v.stream().mapToInt(TOrderSaleGoods::getGoodsCount).sum()); orderStockGoods.add(tOrderStockGoods); }); orderStock.setOrderStockGoods(orderStockGoods); stockList.add(orderStock); } } // 删除上一次的数据生成 TOrderStock orderStock = orderStockService.getOne(Wrappers.lambdaQuery(TOrderStock.class) .eq(TOrderStock::getShopId, dto.getShopId()) .orderByDesc(TOrderStock::getStockTime) .last("LIMIT 1")); if(Objects.nonNull(orderStock)){ orderStockService.removeById(orderStock); } // 添加数据 orderStockService.saveBatch(stockList); for (TOrderStock stock : stockList) { stock.getOrderStockGoods().forEach(e->e.setOrderId(stock.getId())); } List<TOrderStockGoods> orderStockGoods = stockList.stream().map(TOrderStock::getOrderStockGoods).flatMap(Collection::stream).collect(Collectors.toList()); orderStockGoodsService.saveBatch(orderStockGoods); } @Override public PageInfo<TDataGeneratorVO> pageList(TDataGeneratorQuery query) { PageInfo<TDataGeneratorVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); List<TDataGeneratorVO> list = this.baseMapper.pageList(query,pageInfo); List<Long> ids = list.stream().map(TDataGeneratorVO::getId).collect(Collectors.toList()); if(query.getOrderType() == 1){ List<TOrderMeal> orderMeals = orderMealService.list(Wrappers.lambdaQuery(TOrderMeal.class) .in(TOrderMeal::getGeneratorId, ids)); List<Long> mealIds = orderMeals.stream().map(TOrderMeal::getId).collect(Collectors.toList()); 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); tDataGeneratorVO.setTotalRevenue(money); } }else { List<TOrderStock> orderStocks = orderStockService.list(Wrappers.lambdaQuery(TOrderStock.class) .in(TOrderStock::getGeneratorId, ids)); List<Long> stockIds = orderStocks.stream().map(TOrderStock::getId).collect(Collectors.toList()); List<TOrderStockGoods> stockGoods = orderStockGoodsService.list(Wrappers.lambdaQuery(TOrderStockGoods.class) .in(TOrderStockGoods::getOrderId, stockIds)); for (TDataGeneratorVO tDataGeneratorVO : list) { List<Long> collect = orderStocks.stream().filter(e -> e.getGeneratorId().equals(tDataGeneratorVO.getId())).map(TOrderStock::getId).collect(Collectors.toList()); BigDecimal money = stockGoods.stream().filter(e -> collect.contains(e.getOrderId())) .reduce(BigDecimal.ZERO, (x, y) -> x.add(y.getStockPrice().multiply(new BigDecimal(y.getStockCount()))), BigDecimal::add); tDataGeneratorVO.setTotalRevenue(money); } } pageInfo.setRecords(list); return pageInfo; } @Override public void dataCoverage(Long id) { TDataGenerator dataGenerator = this.getOne(Wrappers.lambdaQuery(TDataGenerator.class) .eq(TDataGenerator::getId, id)); if(dataGenerator.getOrderType() == 1){ // 删除时间段的数据 orderMealService.remove(Wrappers.lambdaQuery(TOrderMeal.class) .gt(TOrderMeal::getCreateTime, dataGenerator.getStartTime()) .lt(TOrderMeal::getCreateTime, dataGenerator.getEndTime())); // 修改覆盖类型为已覆盖 orderMealService.update(Wrappers.lambdaUpdate(TOrderMeal.class).set(TOrderMeal::getIsCover, 1).eq(TOrderMeal::getGeneratorId, id)); }else { // 修改覆盖类型为已覆盖 orderStockService.update(Wrappers.lambdaUpdate(TOrderStock.class).set(TOrderStock::getIsCover, 1).eq(TOrderStock::getGeneratorId, id)); } } private int getRandomPayType(Integer size,BigDecimal count) { BigDecimal bigDecimal = new BigDecimal(size).multiply(count.divide(new BigDecimal(100))).setScale(0, RoundingMode.HALF_UP); return Integer.parseInt(bigDecimal.toString()); ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TStockDataSetServiceImpl.java
New file @@ -0,0 +1,27 @@ package com.ruoyi.system.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.basic.PageInfo; import com.ruoyi.system.domain.TShop; import com.ruoyi.system.domain.TStockDataSet; import com.ruoyi.system.mapper.TShopMapper; import com.ruoyi.system.mapper.TStockDataSetMapper; import com.ruoyi.system.query.TShopQuery; import com.ruoyi.system.service.TShopService; import com.ruoyi.system.service.TStockDataSetService; import com.ruoyi.system.vo.TShopVO; import org.springframework.stereotype.Service; import java.util.List; /** * <p> * </p> * * @author xiaochen * @since 2024-08-14 */ @Service public class TStockDataSetServiceImpl extends ServiceImpl<TStockDataSetMapper, TStockDataSet> implements TStockDataSetService { } ruoyi-system/src/main/java/com/ruoyi/system/vo/TDataGeneratorVO.java
New file @@ -0,0 +1,19 @@ package com.ruoyi.system.vo; import com.ruoyi.system.domain.TDataGenerator; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; @Data @ApiModel(value = "数据生成VO") public class TDataGeneratorVO extends TDataGenerator { @ApiModelProperty(value = "店铺名称") private String shopName; @ApiModelProperty(value = "营业额合计") private BigDecimal totalRevenue; } ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -228,14 +228,15 @@ left join sys_user_role ur on u.user_id = ur.user_id left join sys_role r on r.role_id = ur.role_id WHERE u.del_flag = 0 <if test="query.nickName != null and query.nickName != ''"> AND u.nick_name LIKE concat('%',#{query.nickName},'%') <if test="query.nickNameOrPhone != null and query.nickNameOrPhone != ''"> AND (u.nick_name LIKE concat('%',#{query.nickNameOrPhone},'%') OR u.phonenumber LIKE concat('%',#{query.nickNameOrPhone},'%')) </if> <if test="query.roleId != null"> AND r.role_id = #{query.roleId} </if> <if test="query.phonenumber != null and query.phonenumber != ''"> AND u.phonenumber LIKE concat('%',#{query.phonenumber},'%') <if test="query.roleIds != null and query.roleIds.size()>0"> AND r.role_id in <foreach collection="query.roleIds" separator="," item="id" open="(" close=")"> #{id} </foreach> </if> <if test="query.status != null and query.status != ''"> AND u.status = #{query.status} ruoyi-system/src/main/resources/mapper/system/TDataGeneratorMapper.xml
@@ -18,11 +18,44 @@ <result column="disabled" property="disabled" /> <result column="createBy" property="createBy" /> <result column="updateBy" property="updateBy" /> <result column="orderType" property="orderType" /> <result column="weiXinPay" property="weiXinPay" /> <result column="aliPay" property="aliPay" /> <result column="cardPay" property="cardPay" /> <result column="moneyPay" property="moneyPay" /> <result column="otherPay" property="otherPay" /> </resultMap> <!-- 通用查询结果列 --> <sql id="Base_Column_List"> id, userId, userName, shopId, startTime, endTime, minMoney, maxMoney, status, createTime, updateTime, disabled, createBy, updateBy id, userId, userName, shopId, startTime, endTime, minMoney, maxMoney, status, createTime, updateTime, disabled, createBy, updateBy,orderType,weiXinPay, aliPay,cardPay,moneyPay,otherPay </sql> <select id="pageList" 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, tdg.updateTime, tdg.disabled, tdg.createBy, tdg.updateBy,tdg.orderType,tdg.weiXinPay,tdg.aliPay,tdg.cardPay,tdg.moneyPay,tdg.otherPay, ts.shopName from t_data_generator tdg left join t_shop ts on tdg.shopId = ts.id <where> <if test="query.shopName != null and query.shopName != ''"> and ts.shopName like concat('%', #{query.shopName}, '%') </if> <if test="query.userName != null and query.userName != ''"> and tdg.shopName like concat('%', #{query.userName}, '%') </if> <if test="query.status != null"> and tdg.status = #{query.status} </if> <if test="query.orderType != null"> and tdg.orderType = #{query.orderType} </if> <if test="query.startTime != null and query.startTime != '' and query.endTime != null and query.endTime != ''"> AND DATE_FORMAT(tdg.createTime, '%Y-%m-%d %H:%i:%s') BETWEEN #{query.startTime} AND #{query.endTime} </if> AND tdg.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()} </where> </select> </mapper> ruoyi-system/src/main/resources/mapper/system/TOrderMealMapper.xml
@@ -18,11 +18,13 @@ <result column="updateBy" property="updateBy" /> <result column="orderNum" property="orderNum" /> <result column="status" property="status" /> <result column="isCover" property="isCover" /> <result column="shopId" property="shopId" /> </resultMap> <!-- 通用查询结果列 --> <sql id="Base_Column_List"> id, boardId, mealType, mealPerson, orderMoney, payMoney, payType, createTime, updateTime, disabled, createBy, updateBy, orderNum, status id, boardId, mealType, mealPerson, orderMoney, payMoney, payType, createTime, updateTime, disabled, createBy, updateBy, orderNum, status,isCover,shopId </sql> </mapper> ruoyi-system/src/main/resources/mapper/system/TOrderSaleMapper.xml
@@ -16,11 +16,12 @@ <result column="status" property="status" /> <result column="orderMoney" property="orderMoney" /> <result column="payMoney" property="payMoney" /> <result column="shopId" property="shopId" /> </resultMap> <!-- 通用查询结果列 --> <sql id="Base_Column_List"> id, orderTime, remark, createTime, updateTime, disabled, createBy, updateBy, orderNum, status,orderMoney,payMoney id, orderTime, remark, createTime, updateTime, disabled, createBy, updateBy, orderNum, status,orderMoney,payMoney,shopId </sql> </mapper> ruoyi-system/src/main/resources/mapper/system/TOrderStockMapper.xml
@@ -7,17 +7,18 @@ <id column="id" property="id" /> <result column="stockNum" property="stockNum" /> <result column="stockTime" property="stockTime" /> <result column="stockTotalPrice" property="stockTotalPrice" /> <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" /> <result column="isCover" property="isCover" /> <result column="shopId" property="shopId" /> </resultMap> <!-- 通用查询结果列 --> <sql id="Base_Column_List"> id, stockNum, stockTime, stockTotalPrice, createTime, updateTime, disabled, createBy, updateBy id, stockNum, stockTime, createTime, updateTime, disabled, createBy, updateBy,isCover,shopId </sql> <select id="pageList" resultType="com.ruoyi.system.vo.TOrderStockVO"> SELECT <include refid="Base_Column_List"></include> ruoyi-system/src/main/resources/mapper/system/TStockDataSetMapper.xml
New file @@ -0,0 +1,24 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.ruoyi.system.mapper.TStockDataSetMapper"> <!-- 通用查询映射结果 --> <resultMap id="BaseResultMap" type="com.ruoyi.system.domain.TStockDataSet"> <id column="id" property="id" /> <result column="stockDate" property="stockDate" /> <result column="lossRate" property="lossRate" /> <result column="generatorId" property="generatorId" /> <result column="shopId" property="shopId" /> <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,generatorId, stockDate, lossRate,shopId, createTime, updateTime, disabled, createBy, updateBy </sql> </mapper>