优化项目结构和菜单结构

This commit is contained in:
Richie 2025-03-02 01:40:08 +08:00
parent 1fe6ae1de0
commit 5a1c4f66e9
537 changed files with 17332 additions and 2614 deletions

View File

@ -110,6 +110,11 @@ graph TD
`java -Dserver.port=8888 -Dcsp.sentinel.dashboard.server=localhost:8888 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard.jar` `java -Dserver.port=8888 -Dcsp.sentinel.dashboard.server=localhost:8888 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard.jar`
#### 启动KRaft模式kafka
+ 0 进入kafka解压目录
+ 1 生成UUID`bin\windows\kafka-storage.bat random-uuid`
+ 2 格式化`bin\windows\kafka-storage.bat format -t ujpyXZx-S9-jGlwxgORmow -c config\kraft\server.properties`
+ 3 启动`bin\windows\kafka-server-start.bat config\kraft\server.properties`
### 2、项目结构 ### 2、项目结构
#### 2.1 core #### 2.1 core

View File

@ -1,4 +1,4 @@
package com.qihang.common; package cn.qihangerp.common;
/** /**
* Hello world! * Hello world!

View File

@ -1,5 +1,6 @@
package com.qihang.common.common; package cn.qihangerp.common;
import cn.qihangerp.common.common.ServiceException;
import com.baomidou.mybatisplus.core.metadata.OrderItem; import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.Data; import lombok.Data;

View File

@ -1,7 +1,7 @@
package com.qihang.common.common; package cn.qihangerp.common;
import cn.qihangerp.common.enums.HttpStatus;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.qihang.common.enums.HttpStatus;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;

View File

@ -1,4 +1,4 @@
package com.qihang.common.common; package cn.qihangerp.common;
import lombok.Data; import lombok.Data;

View File

@ -1,4 +1,4 @@
package com.qihang.common.common; package cn.qihangerp.common;
/** /**
* 描述 * 描述
* 结果枚举 * 结果枚举

View File

@ -1,4 +1,4 @@
package com.qihang.common.api; package cn.qihangerp.common.api;
import lombok.Data; import lombok.Data;

View File

@ -1,4 +1,4 @@
package com.qihang.common.bo; package cn.qihangerp.common.bo;
import lombok.Data; import lombok.Data;

View File

@ -1,7 +1,7 @@
package com.qihang.common.common; package cn.qihangerp.common.common;
import com.qihang.common.enums.HttpStatus; import cn.qihangerp.common.enums.HttpStatus;
import java.util.HashMap; import java.util.HashMap;
import java.util.Objects; import java.util.Objects;

View File

@ -1,6 +1,6 @@
package com.qihang.common.common; package cn.qihangerp.common.common;
import com.qihang.common.utils.StringUtils; import cn.qihangerp.common.utils.StringUtils;
import java.nio.charset.Charset; import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;

View File

@ -1,4 +1,4 @@
package com.qihang.common.common; package cn.qihangerp.common.common;
/** /**
* 业务异常 * 业务异常

View File

@ -1,4 +1,4 @@
package com.qihang.common.common; package cn.qihangerp.common.common;
import java.io.Serializable; import java.io.Serializable;
import java.util.List; import java.util.List;

View File

@ -1,4 +1,4 @@
package com.qihang.sys.api.utils; package cn.qihangerp.common.config;
import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONReader; import com.alibaba.fastjson2.JSONReader;

View File

@ -1,4 +1,4 @@
package com.qihang.common.config; package cn.qihangerp.common.config;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.BoundSetOperations; import org.springframework.data.redis.core.BoundSetOperations;

View File

@ -1,4 +1,4 @@
package com.qihang.common.config; package cn.qihangerp.common.config;
import org.springframework.cache.annotation.CachingConfigurerSupport; import org.springframework.cache.annotation.CachingConfigurerSupport;

View File

@ -1,4 +1,4 @@
package com.qihang.common.constant; package cn.qihangerp.common.constant;
/** /**
* 缓存的key 常量 * 缓存的key 常量

View File

@ -1,4 +1,4 @@
package com.qihang.common.constant; package cn.qihangerp.common.constant;
import io.jsonwebtoken.Claims; import io.jsonwebtoken.Claims;

View File

@ -1,7 +1,7 @@
package com.qihang.common.constant; package cn.qihangerp.common.constant;
import com.qihang.common.common.CharsetKit; import cn.qihangerp.common.common.CharsetKit;
import com.qihang.common.utils.StringUtils; import cn.qihangerp.common.utils.StringUtils;
import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.ArrayUtils;
import java.math.BigDecimal; import java.math.BigDecimal;

View File

@ -1,7 +1,7 @@
package com.qihang.common.constant; package cn.qihangerp.common.constant;
import com.qihang.common.utils.StringUtils; import cn.qihangerp.common.utils.StringUtils;
/** /**
* 字符串格式化 * 字符串格式化

View File

@ -1,4 +1,4 @@
package com.qihang.common.constant; package cn.qihangerp.common.constant;
/** /**
* 用户常量信息 * 用户常量信息

View File

@ -1,4 +1,4 @@
package com.qihang.common.enums; package cn.qihangerp.common.enums;
/** /**
* 描述 * 描述

View File

@ -1,4 +1,4 @@
package com.qihang.common.enums;//package com.qihang.oms.api.common; package cn.qihangerp.common.enums;//package com.qihang.oms.api.common;
/** /**
* 返回状态码 * 返回状态码

View File

@ -1,4 +1,4 @@
package com.qihang.common.enums; package cn.qihangerp.common.enums;
/** /**
* 描述 * 描述

View File

@ -1,4 +1,4 @@
package com.qihang.common.enums; package cn.qihangerp.common.enums;
/** /**
* 描述 * 描述

View File

@ -1,4 +1,4 @@
package com.qihang.common.enums; package cn.qihangerp.common.enums;
/** /**
* 用户状态 * 用户状态

View File

@ -1,8 +1,8 @@
package com.qihang.common.exception; package cn.qihangerp.common.exception;
import com.qihang.common.utils.MessageUtils; import cn.qihangerp.common.utils.MessageUtils;
import com.qihang.common.utils.StringUtils; import cn.qihangerp.common.utils.StringUtils;
/** /**
* 基础异常 * 基础异常

View File

@ -1,4 +1,4 @@
package com.qihang.common.exception; package cn.qihangerp.common.exception;

View File

@ -1,4 +1,4 @@
package com.qihang.common.exception; package cn.qihangerp.common.exception;
/** /**
* 用户不存在异常类 * 用户不存在异常类

View File

@ -1,10 +1,8 @@
package com.qihang.common.mq; package cn.qihangerp.common.mq;
import com.qihang.common.enums.EnumShopType; import cn.qihangerp.common.enums.EnumShopType;
import lombok.Data; import lombok.Data;
import java.util.List;
@Data @Data
public class MqMessage { public class MqMessage {
private int mqType;// 消息类型1订单消息2退款消息 private int mqType;// 消息类型1订单消息2退款消息

View File

@ -1,4 +1,4 @@
package com.qihang.common.mq; package cn.qihangerp.common.mq;
public class MqType { public class MqType {
/** /**

View File

@ -1,4 +1,4 @@
package com.qihang.common.mq; package cn.qihangerp.common.mq;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.RedisTemplate;

View File

@ -1,4 +1,4 @@
package com.qihang.common.task; package cn.qihangerp.common.task;
public interface IPollableService { public interface IPollableService {
/** /**

View File

@ -1,4 +1,4 @@
package com.qihang.common.task; package cn.qihangerp.common.task;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;

View File

@ -1,4 +1,4 @@
package com.qihang.common.utils; package cn.qihangerp.common.utils;
import org.apache.commons.lang3.time.DateFormatUtils; import org.apache.commons.lang3.time.DateFormatUtils;

View File

@ -1,4 +1,4 @@
package com.qihang.sys.api.utils; package cn.qihangerp.common.utils;
/** /**
* ID生成器工具类 * ID生成器工具类

View File

@ -1,4 +1,4 @@
package com.qihang.common.utils; package cn.qihangerp.common.utils;
import org.springframework.context.MessageSource; import org.springframework.context.MessageSource;
import org.springframework.context.i18n.LocaleContextHolder; import org.springframework.context.i18n.LocaleContextHolder;

View File

@ -1,4 +1,4 @@
package com.qihang.common.utils; package cn.qihangerp.common.utils;
import org.springframework.aop.framework.AopContext; import org.springframework.aop.framework.AopContext;
import org.springframework.beans.BeansException; import org.springframework.beans.BeansException;

View File

@ -1,7 +1,7 @@
package com.qihang.common.utils; package cn.qihangerp.common.utils;
import com.qihang.common.constant.Constants; import cn.qihangerp.common.constant.Constants;
import com.qihang.common.constant.StrFormatter; import cn.qihangerp.common.constant.StrFormatter;
import java.util.*; import java.util.*;

View File

@ -1,4 +1,4 @@
package com.qihang.sys.api.utils; package cn.qihangerp.common.utils;

View File

@ -1,4 +1,4 @@
package com.qihang.sys.api.utils.http; package cn.qihangerp.common.utils.http;
import jakarta.servlet.ServletRequest; import jakarta.servlet.ServletRequest;
import org.apache.commons.lang3.exception.ExceptionUtils; import org.apache.commons.lang3.exception.ExceptionUtils;

View File

@ -1,7 +1,7 @@
package com.qihang.common.utils.http; package cn.qihangerp.common.utils.http;
import com.qihang.common.constant.Constants; import cn.qihangerp.common.utils.StringUtils;
import com.qihang.common.utils.StringUtils; import cn.qihangerp.common.constant.Constants;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;

View File

@ -1,5 +1,5 @@
server: server:
port: 8080 port: 8088
spring: spring:
application: application:
name: gateway name: gateway
@ -13,8 +13,8 @@ spring:
nacos: nacos:
discovery: discovery:
server-addr: 127.0.0.1:8848 server-addr: 127.0.0.1:8848
# username: nacos username: nacos
# password: nacos password: nacos
sentinel: sentinel:
transport: transport:
dashboard: 127.0.0.1:8888 # sentinel控制台地址 dashboard: 127.0.0.1:8888 # sentinel控制台地址

34
goods/pom.xml Normal file
View File

@ -0,0 +1,34 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>cn.qihangerp</groupId>
<artifactId>qihangerp-cloud</artifactId>
<version>2.0.6</version>
</parent>
<groupId>cn.qihangerp.module</groupId>
<artifactId>goods</artifactId>
<packaging>jar</packaging>
<name>goods</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>cn.qihangerp</groupId>
<artifactId>common</artifactId>
<version>2.0.6</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-spring-boot3-starter</artifactId>
<version>3.5.5</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,13 @@
package cn.qihangerp.module;
/**
* Hello world!
*
*/
public class App
{
public static void main( String[] args )
{
System.out.println( "Hello World!" );
}
}

View File

@ -0,0 +1,4 @@
package cn.qihangerp.module.goods;
public class a {
}

View File

@ -0,0 +1,216 @@
package cn.qihangerp.module.goods.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* 商品库存管理
* @TableName o_goods
*/
@Data
public class OGoods implements Serializable {
/**
* 主键id
*/
@TableId(value = "id", type= IdType.AUTO)
private String id;
/**
* 商品名称
*/
private String name;
/**
* 商品图片地址
*/
private String image;
/**
* 商品唯一ID
*/
private String outerErpGoodsId;
/**
* 商品编号
*/
private String goodsNum;
/**
* 单位名称
*/
private String unitName;
/**发货地*/
private String province;
private String city;
private String town;
/**
* 商品分类ID
*/
private Long categoryId;
/**
* 条码
*/
private String barCode;
/**
* 备注
*/
private String remark;
/**
* 状态1销售中2已下架
*/
private Integer status;
/**
* 衣长/裙长/裤长
*/
private Double length;
/**
* 高度/袖长
*/
private Double height;
/**
* 宽度/胸阔()
*/
private Double width;
/**
* 肩阔
*/
private Double width1;
/**
* 腰阔
*/
private Double width2;
/**
* 臀阔
*/
private Double width3;
/**
* 重量
*/
private Double weight;
/**
* 0启用 1禁用
*/
private Integer disable;
/**
* 保质期
*/
private String period;
/**
* 预计采购价格
*/
private BigDecimal purPrice;
/**
* 建议批发价
*/
private BigDecimal wholePrice;
/**
* 建议零售价
*/
private BigDecimal retailPrice;
/**
* 单位成本
*/
private BigDecimal unitCost;
/**
* 供应商id
*/
private Long supplierId;
/**
* 品牌id
*/
private Long brandId;
/**
* 属性1季节
*/
private String attr1;
/**
* 属性2分类
*/
private String attr2;
/**
* 属性3风格
*/
private String attr3;
/**
* 属性4年份
*/
private String attr4;
/**
* 属性5面料
*/
private String attr5;
/**
* 外链url
*/
private String linkUrl;
/**
* 最低库存预警
*/
private Integer lowQty;
/**
* 最高库存预警
*/
private Integer highQty;
/**
* 创建人
*/
private String createBy;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新人
*/
private String updateBy;
/**
* 更新时间
*/
private Date updateTime;
@TableField(exist = false)
private List<OGoodsSku> skuList;
private static final long serialVersionUID = 1L;
}

View File

@ -0,0 +1,49 @@
package cn.qihangerp.module.goods.domain;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
*
* @TableName o_goods_brand
*/
@Data
public class OGoodsBrand implements Serializable {
/**
* 主键ID
*/
private Integer id;
/**
* 品牌名
*/
private String name;
/**
* 状态
*/
private Integer status;
/**
*
*/
private String createBy;
/**
*
*/
private Date createTime;
/**
*
*/
private String updateBy;
/**
*
*/
private Date updateTime;
private static final long serialVersionUID = 1L;
}

View File

@ -0,0 +1,83 @@
package cn.qihangerp.module.goods.domain;
import java.io.Serializable;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
/**
*
* @TableName o_goods_category
*/
@Data
public class OGoodsCategory implements Serializable {
/**
*
*/
@TableId(type = IdType.AUTO)
private Long id;
/**
* 分类编码
*/
private String number;
/**
* 分类名称
*/
private String name;
/**
*
*/
private String remark;
/**
* 上架分类id
*/
private Long parentId;
/**
* 分类路径
*/
private String path;
/**
* 排序值
*/
private Integer sort;
/**
* 图片
*/
private String image;
/**
* 0正常 1删除
*/
private Integer isdelete;
/**
* 创建人
*/
private String createBy;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新人
*/
private String updateBy;
/**
* 更新时间
*/
private Date updateTime;
private static final long serialVersionUID = 1L;
}

View File

@ -0,0 +1,42 @@
package cn.qihangerp.module.goods.domain;
import java.io.Serializable;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
/**
*
* @TableName o_goods_category_attribute
*/
@Data
public class OGoodsCategoryAttribute implements Serializable {
/**
* 主键id
*/
@TableId(type = IdType.AUTO)
private Long id;
/**
*
*/
private Long categoryId;
/**
* 类型0属性1规格
*/
private Integer type;
/**
* '属性名'
*/
private String title;
/**
* 固定值color颜色size尺码style款式
*/
private String code;
private static final long serialVersionUID = 1L;
}

View File

@ -0,0 +1,47 @@
package cn.qihangerp.module.goods.domain;
import java.io.Serializable;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
/**
*
* @TableName o_goods_category_attribute_value
*/
@Data
public class OGoodsCategoryAttributeValue implements Serializable {
/**
* 主键属性值id
*/
@TableId(type = IdType.AUTO)
private Integer id;
/**
* 属性id
*/
private Long categoryAttributeId;
/**
* 属性值文本
*/
private String value;
/**
* 生成SKU的编码
*/
private String skuCode;
/**
*
*/
private Integer ordernum;
/**
*
*/
private Integer isdelete;
private static final long serialVersionUID = 1L;
}

View File

@ -0,0 +1,69 @@
package cn.qihangerp.module.goods.domain;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
* 商品库存表
* @TableName o_goods_inventory
*/
@Data
public class OGoodsInventory implements Serializable {
/**
* 主键ID
*/
private String id;
/**
* 商品id
*/
private String goodsId;
/**
* 商品编码
*/
private String goodsNum;
/**
* 商品规格id
*/
private String skuId;
/**
* 规格编码唯一
*/
private String skuCode;
/**
* 当前库存
*/
private Long quantity;
/**
* 0正常 1删除
*/
private Integer isDelete;
/**
* 创建时间
*/
private Date createTime;
/**
* 创建人
*/
private String createBy;
/**
* 更新时间
*/
private Date updateTime;
/**
* 更新人
*/
private String updateBy;
private static final long serialVersionUID = 1L;
}

View File

@ -0,0 +1,99 @@
package cn.qihangerp.module.goods.domain;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
* 商品库存批次
* @TableName o_goods_inventory_batch
*/
@Data
public class OGoodsInventoryBatch implements Serializable {
/**
* 主键ID
*/
private Long id;
/**
* 批次号
*/
private String batchNum;
/**
* 初始数量
*/
private Long originQty;
/**
* 当前数量
*/
private Long currentQty;
/**
* 采购价
*/
private Double purPrice;
/**
* 采购单id
*/
private Long purId;
/**
* 采购单itemId
*/
private Long purItemId;
/**
* 备注
*/
private String remark;
/**
* 规格id
*/
private String skuId;
/**
* 商品id
*/
private String goodsId;
/**
* sku编码
*/
private String skuCode;
/**
* 仓库id
*/
private Long warehouseId;
/**
* 仓位id
*/
private Long positionId;
/**
* 创建时间
*/
private Date createTime;
/**
* 创建人
*/
private String createBy;
/**
* 更新时间
*/
private Date updateTime;
/**
* 更新人
*/
private String updateBy;
private static final long serialVersionUID = 1L;
}

View File

@ -0,0 +1,122 @@
package cn.qihangerp.module.goods.domain;
//import com.baomidou.mybatisplus.annotation.IdType;
//import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* 商品规格库存管理
* @TableName o_goods_sku
*/
@Data
public class OGoodsSku implements Serializable {
/**
* 主键id
*/
@TableId(value = "id", type= IdType.AUTO)
private String id;
private String goodsId;
/**
* 商品id
*/
private String outerErpGoodsId;
/**
* skuId(唯一)
*/
private String outerErpSkuId;
private String goodsName;
/**
* 规格名
*/
private String skuName;
/**
* 规格编码
*/
private String skuCode;
/**
* 颜色id
*/
private Long colorId;
/**
* 颜色值
*/
private String colorValue;
/**
* 颜色图片
*/
private String colorImage;
/**
* 尺码id
*/
private Long sizeId;
/**
* 尺码值
*/
private String sizeValue;
/**
* 款式id
*/
private Long styleId;
/**
* 款式值
*/
private String styleValue;
/**
* 库存条形码
*/
private String barCode;
/**
* 建议零售价
*/
private BigDecimal retailPrice;
private BigDecimal purPrice;
/**
* 单位成本
*/
private BigDecimal unitCost;
/**
* 备注
*/
private String remark;
/**
* 状态
*/
private Integer status;
/**
* 最低库存预警
*/
private Integer lowQty;
/**
* 最高库存预警
*/
private Integer highQty;
private String volume;
private static final long serialVersionUID = 1L;
}

View File

@ -0,0 +1,57 @@
package cn.qihangerp.module.goods.domain;
import java.io.Serializable;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
/**
*
* @TableName o_goods_sku_attr
*/
@Data
public class OGoodsSkuAttr implements Serializable {
/**
*
*/
@TableId(value = "id", type= IdType.AUTO)
private Long id;
/**
*
*/
private String goodsId;
/**
*
*/
private String type;
/**
*
*/
private String k;
/**
*
*/
private Long kid;
/**
*
*/
private Long vid;
/**
*
*/
private String v;
/**
*
*/
private String img;
private static final long serialVersionUID = 1L;
}

View File

@ -0,0 +1,119 @@
package cn.qihangerp.module.goods.domain;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
*
* @TableName o_goods_supplier
*/
@Data
public class OGoodsSupplier implements Serializable {
/**
*
*/
private String id;
/**
* 供应商名称
*/
private String name;
/**
* 供应商编码
*/
private String number;
/**
* 税率
*/
private Double taxrate;
/**
* 期初应付款
*/
private Double amount;
/**
* 期初预付款
*/
private Double periodmoney;
/**
* 初期往来余额
*/
private Double difmoney;
/**
* 余额日期
*/
private Date begindate;
/**
* 备注
*/
private String remark;
/**
* 职位
*/
private String place;
/**
* 联系人
*/
private String linkman;
/**
* 联系方式
*/
private String contact;
/**
*
*/
private String province;
/**
*
*/
private String city;
/**
* 区县
*/
private String county;
/**
* 收货地址详情
*/
private String address;
/**
*
*/
private String pinyin;
/**
* 0启用 1禁用
*/
private Integer disable;
/**
* 0正常 1删除
*/
private Integer isdelete;
/**
* 分管采购员
*/
private String purchasername;
/**
* 创建时间
*/
private Date createtime;
private static final long serialVersionUID = 1L;
}

View File

@ -0,0 +1,126 @@
package cn.qihangerp.module.goods.domain.bo;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
/**
* 商品管理对象 erp_goods
*
* @author qihang
* @date 2023-12-29
*/
@Data
public class GoodsAddBo
{
private static final long serialVersionUID = 1L;
/** 主键id */
private Long id;
/** 商品名称 */
private String name;
/** 商品图片地址 */
private String image;
/** 商品编号 */
private String number;
/** 外部商品id */
private String outerErpGoodsId;
/**发货地*/
private String province;
private String city;
private String town;
/** 单位名称 */
private String unitName;
/** 商品分类ID */
private Long categoryId;
/** 条码 */
private String barCode;
/** 状态1销售中2已下架 */
private Integer status;
// /** 衣长/裙长/裤长 */
// private Long length;
//
// /** 高度/袖长 */
// private Long height;
//
// /** 宽度/胸阔(围) */
// private Long width;
//
// /** 肩阔 */
// private Long width1;
//
// /** 腰阔 */
// private Long width2;
//
// /** 臀阔 */
// private Long width3;
//
// /** 重量 */
// private Long weight;
//
// /** 0启用 1禁用 */
// private Integer disable;
/** 保质期 */
private String period;
/** 预计采购价格 */
private BigDecimal purPrice;
/** 建议批发价 */
private BigDecimal wholePrice;
/** 建议零售价 */
private BigDecimal retailPrice;
/** 单位成本 */
private BigDecimal unitCost;
/** 供应商id */
private Long supplierId;
/** 品牌id */
private Long brandId;
// /** 属性1季节 */
// private String attr1;
//
// /** 属性2分类 */
// private String attr2;
//
// /** 属性3风格 */
// private String attr3;
//
// /** 属性4年份 */
// private String attr4;
//
// /** 属性5面料 */
private String attr5;
/** 外链url */
private String linkUrl;
// /** 最低库存(预警) */
// private Long lowQty;
//
// /** 最高库存(预警) */
// private Long highQty;
private Long[] colorValues;
private Map<Long,String> colorImages;
// private Map<Long,String> colorNames;
private Long[] sizeValues;
private Long[] styleValues;
private List<GoodsAddSkuBo> specList;
}

View File

@ -1,64 +1,36 @@
package com.qihang.oms.vo; package cn.qihangerp.module.goods.domain.bo;
import java.math.BigDecimal; import java.math.BigDecimal;
public class GoodsSpecListVo { public class GoodsAddSkuBo {
private Long colorId;
private Long id;
private Long goodsId;
/** 商品名称 */
private String name;
/** 商品编号 */
private String number;
private String specNum;
private String colorValue; private String colorValue;
/** 商品图片地址 */ private Long sizeId;
private String colorImage;
private String sizeValue; private String sizeValue;
private Long styleId;
private String styleValue; private String styleValue;
private String specNum;
private BigDecimal purPrice; private BigDecimal purPrice;
public Long getId() { //外部ERP商品Sku Id
return id; private String outerErpSkuId;
public String getOuterErpSkuId() {
return outerErpSkuId;
} }
public void setId(Long id) { public void setOuterErpSkuId(String outerErpSkuId) {
this.id = id; this.outerErpSkuId = outerErpSkuId;
} }
public Long getGoodsId() { public Long getColorId() {
return goodsId; return colorId;
} }
public void setGoodsId(Long goodsId) { public void setColorId(Long colorId) {
this.goodsId = goodsId; this.colorId = colorId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public String getSpecNum() {
return specNum;
}
public void setSpecNum(String specNum) {
this.specNum = specNum;
} }
public String getColorValue() { public String getColorValue() {
@ -69,12 +41,12 @@ public class GoodsSpecListVo {
this.colorValue = colorValue; this.colorValue = colorValue;
} }
public String getColorImage() { public Long getSizeId() {
return colorImage; return sizeId;
} }
public void setColorImage(String colorImage) { public void setSizeId(Long sizeId) {
this.colorImage = colorImage; this.sizeId = sizeId;
} }
public String getSizeValue() { public String getSizeValue() {
@ -85,6 +57,14 @@ public class GoodsSpecListVo {
this.sizeValue = sizeValue; this.sizeValue = sizeValue;
} }
public Long getStyleId() {
return styleId;
}
public void setStyleId(Long styleId) {
this.styleId = styleId;
}
public String getStyleValue() { public String getStyleValue() {
return styleValue; return styleValue;
} }
@ -93,6 +73,14 @@ public class GoodsSpecListVo {
this.styleValue = styleValue; this.styleValue = styleValue;
} }
public String getSpecNum() {
return specNum;
}
public void setSpecNum(String specNum) {
this.specNum = specNum;
}
public BigDecimal getPurPrice() { public BigDecimal getPurPrice() {
return purPrice; return purPrice;
} }

View File

@ -0,0 +1,19 @@
package cn.qihangerp.module.goods.domain.bo;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class GoodsSkuAddBo {
private String erpSkuId; //erp商品ID
private String erpSkuName;// erp商品名称
private String erpSkuCode;// erp商品编码
private BigDecimal salePrice;// erp商品零售价
private String productSpec;// erp商品规格
private String productColor;// erp商品颜色
private String materialKind;// erp商品材质
private String productVolume;// erp商品体积
private String productPicture1;// erp商品图片地址
private Integer productIsUse;// 是否在用
}

View File

@ -0,0 +1,29 @@
package cn.qihangerp.module.goods.domain.vo;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class GoodsSpecListVo {
private Long skuId;
// private Long goodsId;
/** 商品名称 */
private String goodsName;
private String skuName;
/** 商品编号 */
private String outerErpSkuId;
private String skuCode;
private String colorValue;
/** 商品图片地址 */
private String colorImage;
private String sizeValue;
private String styleValue;
private BigDecimal retailPrice;
private BigDecimal purPrice;
}

View File

@ -0,0 +1,18 @@
package cn.qihangerp.module.goods.mapper;
import cn.qihangerp.module.goods.domain.OGoodsBrand;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @author qilip
* @description 针对表o_goods_brand的数据库操作Mapper
* @createDate 2024-09-07 16:11:56
* @Entity cn.qihangerp.module.goods.domain.OGoodsBrand
*/
public interface OGoodsBrandMapper extends BaseMapper<OGoodsBrand> {
}

View File

@ -0,0 +1,18 @@
package cn.qihangerp.module.goods.mapper;
import cn.qihangerp.module.goods.domain.OGoodsCategoryAttribute;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @author qilip
* @description 针对表o_goods_category_attribute的数据库操作Mapper
* @createDate 2024-09-07 16:11:56
* @Entity cn.qihangerp.module.goods.domain.OGoodsCategoryAttribute
*/
public interface OGoodsCategoryAttributeMapper extends BaseMapper<OGoodsCategoryAttribute> {
}

View File

@ -0,0 +1,18 @@
package cn.qihangerp.module.goods.mapper;
import cn.qihangerp.module.goods.domain.OGoodsCategoryAttributeValue;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @author qilip
* @description 针对表o_goods_category_attribute_value的数据库操作Mapper
* @createDate 2024-09-07 16:11:56
* @Entity cn.qihangerp.module.goods.domain.OGoodsCategoryAttributeValue
*/
public interface OGoodsCategoryAttributeValueMapper extends BaseMapper<OGoodsCategoryAttributeValue> {
}

View File

@ -0,0 +1,18 @@
package cn.qihangerp.module.goods.mapper;
import cn.qihangerp.module.goods.domain.OGoodsCategory;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @author qilip
* @description 针对表o_goods_category的数据库操作Mapper
* @createDate 2024-09-07 16:11:56
* @Entity cn.qihangerp.module.goods.domain.OGoodsCategory
*/
public interface OGoodsCategoryMapper extends BaseMapper<OGoodsCategory> {
}

View File

@ -0,0 +1,18 @@
package cn.qihangerp.module.goods.mapper;
import cn.qihangerp.module.goods.domain.OGoodsInventoryBatch;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @author qilip
* @description 针对表o_goods_inventory_batch(商品库存批次)的数据库操作Mapper
* @createDate 2024-09-23 22:39:50
* @Entity cn.qihangerp.module.goods.domain.OGoodsInventoryBatch
*/
public interface OGoodsInventoryBatchMapper extends BaseMapper<OGoodsInventoryBatch> {
}

View File

@ -0,0 +1,18 @@
package cn.qihangerp.module.goods.mapper;
import cn.qihangerp.module.goods.domain.OGoodsInventory;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @author qilip
* @description 针对表o_goods_inventory(商品库存表)的数据库操作Mapper
* @createDate 2024-09-23 22:39:50
* @Entity cn.qihangerp.module.goods.domain.OGoodsInventory
*/
public interface OGoodsInventoryMapper extends BaseMapper<OGoodsInventory> {
long getAllInventoryQuantity();
}

View File

@ -0,0 +1,22 @@
package cn.qihangerp.module.goods.mapper;
import cn.qihangerp.module.goods.domain.OGoods;
import cn.qihangerp.module.goods.domain.vo.GoodsSpecListVo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
/**
* @author TW
* @description 针对表o_goods(商品库存管理)的数据库操作Mapper
* @createDate 2024-03-11 14:24:49
* @Entity cn.qihangerp.module.goods.domain.OGoods
*/
public interface OGoodsMapper extends BaseMapper<OGoods> {
List<GoodsSpecListVo> searchGoodsSpec(String keyword);
}

View File

@ -0,0 +1,18 @@
package cn.qihangerp.module.goods.mapper;
import cn.qihangerp.module.goods.domain.OGoodsSkuAttr;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @author qilip
* @description 针对表o_goods_sku_attr的数据库操作Mapper
* @createDate 2024-09-07 20:31:18
* @Entity cn.qihangerp.module.goods.domain.OGoodsSkuAttr
*/
public interface OGoodsSkuAttrMapper extends BaseMapper<OGoodsSkuAttr> {
}

View File

@ -0,0 +1,19 @@
package cn.qihangerp.module.goods.mapper;
import cn.qihangerp.module.goods.domain.OGoodsSku;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @author TW
* @description 针对表o_goods_sku(商品规格库存管理)的数据库操作Mapper
* @createDate 2024-03-11 14:24:49
* @Entity cn.qihangerp.domain.OGoodsSku
*/
public interface OGoodsSkuMapper extends BaseMapper<OGoodsSku> {
}

View File

@ -0,0 +1,18 @@
package cn.qihangerp.module.goods.mapper;
import cn.qihangerp.module.goods.domain.OGoodsSupplier;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @author qilip
* @description 针对表o_goods_supplier的数据库操作Mapper
* @createDate 2024-09-07 16:35:43
* @Entity cn.qihangerp.module.goods.domain.OGoodsSupplier
*/
public interface OGoodsSupplierMapper extends BaseMapper<OGoodsSupplier> {
}

View File

@ -0,0 +1,15 @@
package cn.qihangerp.module.goods.service;
import cn.qihangerp.common.PageQuery;
import cn.qihangerp.common.PageResult;
import cn.qihangerp.module.goods.domain.OGoodsBrand;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* @author qilip
* @description 针对表o_goods_brand的数据库操作Service
* @createDate 2024-09-07 16:11:56
*/
public interface OGoodsBrandService extends IService<OGoodsBrand> {
PageResult<OGoodsBrand> queryPageList(OGoodsBrand bo, PageQuery pageQuery);
}

View File

@ -0,0 +1,13 @@
package cn.qihangerp.module.goods.service;
import cn.qihangerp.module.goods.domain.OGoodsCategoryAttribute;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* @author qilip
* @description 针对表o_goods_category_attribute的数据库操作Service
* @createDate 2024-09-07 16:11:56
*/
public interface OGoodsCategoryAttributeService extends IService<OGoodsCategoryAttribute> {
}

View File

@ -0,0 +1,13 @@
package cn.qihangerp.module.goods.service;
import cn.qihangerp.module.goods.domain.OGoodsCategoryAttributeValue;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* @author qilip
* @description 针对表o_goods_category_attribute_value的数据库操作Service
* @createDate 2024-09-07 16:11:56
*/
public interface OGoodsCategoryAttributeValueService extends IService<OGoodsCategoryAttributeValue> {
}

View File

@ -0,0 +1,13 @@
package cn.qihangerp.module.goods.service;
import cn.qihangerp.module.goods.domain.OGoodsCategory;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* @author qilip
* @description 针对表o_goods_category的数据库操作Service
* @createDate 2024-09-07 16:11:56
*/
public interface OGoodsCategoryService extends IService<OGoodsCategory> {
void addCategory(OGoodsCategory category);
}

View File

@ -0,0 +1,13 @@
package cn.qihangerp.module.goods.service;
import cn.qihangerp.module.goods.domain.OGoodsInventoryBatch;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* @author qilip
* @description 针对表o_goods_inventory_batch(商品库存批次)的数据库操作Service
* @createDate 2024-09-23 22:39:50
*/
public interface OGoodsInventoryBatchService extends IService<OGoodsInventoryBatch> {
}

View File

@ -0,0 +1,16 @@
package cn.qihangerp.module.goods.service;
import cn.qihangerp.common.PageQuery;
import cn.qihangerp.common.PageResult;
import cn.qihangerp.module.goods.domain.OGoodsInventory;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* @author qilip
* @description 针对表o_goods_inventory(商品库存表)的数据库操作Service
* @createDate 2024-09-23 22:39:50
*/
public interface OGoodsInventoryService extends IService<OGoodsInventory> {
PageResult<OGoodsInventory> queryPageList(OGoodsInventory bo, PageQuery pageQuery);
long getAllInventoryQuantity();
}

View File

@ -0,0 +1,58 @@
package cn.qihangerp.module.goods.service;
import cn.qihangerp.common.PageQuery;
import cn.qihangerp.common.PageResult;
import cn.qihangerp.common.ResultVo;
import cn.qihangerp.module.goods.domain.OGoods;
import cn.qihangerp.module.goods.domain.OGoodsSku;
import cn.qihangerp.module.goods.domain.bo.GoodsAddBo;
import cn.qihangerp.module.goods.domain.bo.GoodsSkuAddBo;
import cn.qihangerp.module.goods.domain.vo.GoodsSpecListVo;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
* @author TW
* @description 针对表o_goods(商品库存管理)的数据库操作Service
* @createDate 2024-03-11 14:24:49
*/
public interface OGoodsService extends IService<OGoods> {
PageResult<OGoodsSku> querySkuPageList(OGoodsSku bo, PageQuery pageQuery);
PageResult<OGoods> queryPageList(OGoods bo, PageQuery pageQuery);
List<GoodsSpecListVo> searchGoodsSpec(String keyword);
List<OGoods> selectGoodsList(OGoods goods);
OGoods selectGoodsById(Long id);
/**
* 新增商品管理
*
* @param goods 商品管理
* @return 结果
*/
public ResultVo<Long> insertGoods(String userName , GoodsAddBo goods);
/**
* 修改商品管理
*
* @param goods 商品管理
* @return 结果
*/
public int updateGoods(OGoods goods);
/**
* 批量删除商品管理
*
* @param ids 需要删除的商品管理主键集合
* @return 结果
*/
public int deleteGoodsByIds(Long[] ids);
int insertGoodsSku(OGoodsSku goodsSku);
// int saveGoodsSku(GoodsSkuAddBo addBo);
// int batchSaveGoodsSku(List<GoodsSkuAddBo> list);
}

View File

@ -0,0 +1,13 @@
package cn.qihangerp.module.goods.service;
import cn.qihangerp.module.goods.domain.OGoodsSkuAttr;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* @author qilip
* @description 针对表o_goods_sku_attr的数据库操作Service
* @createDate 2024-09-07 20:31:18
*/
public interface OGoodsSkuAttrService extends IService<OGoodsSkuAttr> {
}

View File

@ -0,0 +1,16 @@
package cn.qihangerp.module.goods.service;
import cn.qihangerp.module.goods.domain.OGoodsSku;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
* @author TW
* @description 针对表o_goods_sku(商品规格库存管理)的数据库操作Service
* @createDate 2024-03-11 14:24:49
*/
public interface OGoodsSkuService extends IService<OGoodsSku> {
List<OGoodsSku> searchGoodsSpec(String keyword);
}

View File

@ -0,0 +1,15 @@
package cn.qihangerp.module.goods.service;
import cn.qihangerp.common.PageQuery;
import cn.qihangerp.common.PageResult;
import cn.qihangerp.module.goods.domain.OGoodsSupplier;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* @author qilip
* @description 针对表o_goods_supplier的数据库操作Service
* @createDate 2024-09-07 16:35:43
*/
public interface OGoodsSupplierService extends IService<OGoodsSupplier> {
PageResult<OGoodsSupplier> queryPageList(OGoodsSupplier bo, PageQuery pageQuery);
}

View File

@ -0,0 +1,41 @@
package cn.qihangerp.module.goods.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import cn.qihangerp.common.PageQuery;
import cn.qihangerp.common.PageResult;
import cn.qihangerp.module.goods.domain.OGoodsBrand;
import cn.qihangerp.module.goods.service.OGoodsBrandService;
import cn.qihangerp.module.goods.mapper.OGoodsBrandMapper;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
/**
* @author qilip
* @description 针对表o_goods_brand的数据库操作Service实现
* @createDate 2024-09-07 16:11:56
*/
@AllArgsConstructor
@Service
public class OGoodsBrandServiceImpl extends ServiceImpl<OGoodsBrandMapper, OGoodsBrand>
implements OGoodsBrandService {
private final OGoodsBrandMapper mapper;
@Override
public PageResult<OGoodsBrand> queryPageList(OGoodsBrand bo, PageQuery pageQuery) {
LambdaQueryWrapper<OGoodsBrand> queryWrapper = new LambdaQueryWrapper<OGoodsBrand>();
queryWrapper.like(StringUtils.hasText(bo.getName()), OGoodsBrand::getName, bo.getName());
Page<OGoodsBrand> pages = mapper.selectPage(pageQuery.build(), queryWrapper);
return PageResult.build(pages);
}
}

View File

@ -0,0 +1,22 @@
package cn.qihangerp.module.goods.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import cn.qihangerp.module.goods.domain.OGoodsCategoryAttribute;
import cn.qihangerp.module.goods.service.OGoodsCategoryAttributeService;
import cn.qihangerp.module.goods.mapper.OGoodsCategoryAttributeMapper;
import org.springframework.stereotype.Service;
/**
* @author qilip
* @description 针对表o_goods_category_attribute的数据库操作Service实现
* @createDate 2024-09-07 16:11:56
*/
@Service
public class OGoodsCategoryAttributeServiceImpl extends ServiceImpl<OGoodsCategoryAttributeMapper, OGoodsCategoryAttribute>
implements OGoodsCategoryAttributeService{
}

View File

@ -0,0 +1,22 @@
package cn.qihangerp.module.goods.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import cn.qihangerp.module.goods.domain.OGoodsCategoryAttributeValue;
import cn.qihangerp.module.goods.service.OGoodsCategoryAttributeValueService;
import cn.qihangerp.module.goods.mapper.OGoodsCategoryAttributeValueMapper;
import org.springframework.stereotype.Service;
/**
* @author qilip
* @description 针对表o_goods_category_attribute_value的数据库操作Service实现
* @createDate 2024-09-07 16:11:56
*/
@Service
public class OGoodsCategoryAttributeValueServiceImpl extends ServiceImpl<OGoodsCategoryAttributeValueMapper, OGoodsCategoryAttributeValue>
implements OGoodsCategoryAttributeValueService{
}

View File

@ -0,0 +1,66 @@
package cn.qihangerp.module.goods.service.impl;
import cn.qihangerp.module.goods.domain.OGoodsCategoryAttribute;
import cn.qihangerp.module.goods.domain.OGoodsCategoryAttributeValue;
import cn.qihangerp.module.goods.mapper.OGoodsCategoryAttributeMapper;
import cn.qihangerp.module.goods.mapper.OGoodsCategoryAttributeValueMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import cn.qihangerp.module.goods.domain.OGoodsCategory;
import cn.qihangerp.module.goods.service.OGoodsCategoryService;
import cn.qihangerp.module.goods.mapper.OGoodsCategoryMapper;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
/**
* @author qilip
* @description 针对表o_goods_category的数据库操作Service实现
* @createDate 2024-09-07 16:11:56
*/
@AllArgsConstructor
@Service
public class OGoodsCategoryServiceImpl extends ServiceImpl<OGoodsCategoryMapper, OGoodsCategory>
implements OGoodsCategoryService{
private final OGoodsCategoryMapper oGoodsCategoryMapper;
private final OGoodsCategoryAttributeMapper attributeMapper;
private final OGoodsCategoryAttributeValueMapper attributeValueMapper;
@Transactional
@Override
public void addCategory(OGoodsCategory category) {
// 添加分类
if(category.getSort()==null){
category.setSort(0);
}
if(category.getParentId()==null){
category.setParentId(0L);
}
category.setCreateTime(new Date());
category.setIsdelete(0);
oGoodsCategoryMapper.insert(category);
// 如果是已经分类添加默认规格
if(category.getParentId()==0) {
// 添加颜色规格
OGoodsCategoryAttribute att1 = new OGoodsCategoryAttribute();
att1.setCategoryId(category.getId());
att1.setType(1);
att1.setTitle("颜色");
att1.setCode("color");
attributeMapper.insert(att1);
// 添加颜色规格值
OGoodsCategoryAttributeValue av1 = new OGoodsCategoryAttributeValue();
av1.setCategoryAttributeId(att1.getId());
av1.setValue("默认");
av1.setSkuCode("00");
av1.setOrdernum(0);
av1.setIsdelete(0);
attributeValueMapper.insert(av1);
}
}
}

View File

@ -0,0 +1,22 @@
package cn.qihangerp.module.goods.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import cn.qihangerp.module.goods.domain.OGoodsInventoryBatch;
import cn.qihangerp.module.goods.service.OGoodsInventoryBatchService;
import cn.qihangerp.module.goods.mapper.OGoodsInventoryBatchMapper;
import org.springframework.stereotype.Service;
/**
* @author qilip
* @description 针对表o_goods_inventory_batch(商品库存批次)的数据库操作Service实现
* @createDate 2024-09-23 22:39:50
*/
@Service
public class OGoodsInventoryBatchServiceImpl extends ServiceImpl<OGoodsInventoryBatchMapper, OGoodsInventoryBatch>
implements OGoodsInventoryBatchService{
}

View File

@ -0,0 +1,47 @@
package cn.qihangerp.module.goods.service.impl;
import cn.qihangerp.common.PageQuery;
import cn.qihangerp.common.PageResult;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import cn.qihangerp.module.goods.domain.OGoodsInventory;
import cn.qihangerp.module.goods.service.OGoodsInventoryService;
import cn.qihangerp.module.goods.mapper.OGoodsInventoryMapper;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
/**
* @author qilip
* @description 针对表o_goods_inventory(商品库存表)的数据库操作Service实现
* @createDate 2024-09-23 22:39:50
*/
@AllArgsConstructor
@Service
public class OGoodsInventoryServiceImpl extends ServiceImpl<OGoodsInventoryMapper, OGoodsInventory>
implements OGoodsInventoryService{
private final OGoodsInventoryMapper mapper;
@Override
public PageResult<OGoodsInventory> queryPageList(OGoodsInventory bo, PageQuery pageQuery) {
LambdaQueryWrapper<OGoodsInventory> queryWrapper = new LambdaQueryWrapper<OGoodsInventory>();
queryWrapper.eq(bo.getGoodsId()!=null,OGoodsInventory::getGoodsId,bo.getGoodsId());
queryWrapper.eq(bo.getSkuId()!=null,OGoodsInventory::getSkuId,bo.getSkuId());
queryWrapper.eq(StringUtils.hasText(bo.getGoodsNum()),OGoodsInventory::getGoodsNum,bo.getGoodsNum());
queryWrapper.eq(StringUtils.hasText(bo.getSkuCode()),OGoodsInventory::getSkuCode,bo.getSkuCode());
Page<OGoodsInventory> pages = mapper.selectPage(pageQuery.build(), queryWrapper);
return PageResult.build(pages);
}
@Override
public long getAllInventoryQuantity() {
return mapper.getAllInventoryQuantity();
}
}

View File

@ -0,0 +1,329 @@
package cn.qihangerp.module.goods.service.impl;
import cn.qihangerp.module.goods.domain.OGoodsInventory;
import cn.qihangerp.module.goods.domain.OGoodsSku;
import cn.qihangerp.module.goods.domain.bo.GoodsSkuAddBo;
import cn.qihangerp.module.goods.domain.vo.GoodsSpecListVo;
import cn.qihangerp.module.goods.mapper.OGoodsInventoryMapper;
import cn.qihangerp.module.goods.mapper.OGoodsMapper;
import cn.qihangerp.module.goods.mapper.OGoodsSkuAttrMapper;
import cn.qihangerp.module.goods.mapper.OGoodsSkuMapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import cn.qihangerp.common.PageQuery;
import cn.qihangerp.common.PageResult;
import cn.qihangerp.common.ResultVo;
import cn.qihangerp.module.goods.domain.OGoods;
import cn.qihangerp.module.goods.domain.OGoodsSkuAttr;
import cn.qihangerp.module.goods.domain.bo.GoodsAddBo;
import cn.qihangerp.module.goods.domain.bo.GoodsAddSkuBo;
import cn.qihangerp.module.goods.service.OGoodsService;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import java.util.Date;
import java.util.List;
/**
* @author TW
* @description 针对表o_goods(商品库存管理)的数据库操作Service实现
* @createDate 2024-03-11 14:24:49
*/
@AllArgsConstructor
@Service
public class OGoodsServiceImpl extends ServiceImpl<OGoodsMapper, OGoods>
implements OGoodsService{
private final OGoodsMapper goodsMapper;
private final OGoodsSkuMapper skuMapper;
private final OGoodsSkuAttrMapper skuAttrMapper;
private final OGoodsInventoryMapper inventoryMapper;
// private final OOrderItemMapper orderItemMapper;
@Override
public PageResult<OGoodsSku> querySkuPageList(OGoodsSku bo, PageQuery pageQuery) {
LambdaQueryWrapper<OGoodsSku> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(bo.getStatus()!=null, OGoodsSku::getStatus,bo.getStatus());
queryWrapper.eq(bo.getOuterErpSkuId()!=null,OGoodsSku::getOuterErpSkuId,bo.getOuterErpSkuId());
queryWrapper.eq(bo.getOuterErpGoodsId()!=null,OGoodsSku::getOuterErpGoodsId,bo.getOuterErpGoodsId());
queryWrapper.eq(StringUtils.hasText(bo.getSkuCode()),OGoodsSku::getSkuCode,bo.getSkuCode());
Page<OGoodsSku> pages = skuMapper.selectPage(pageQuery.build(), queryWrapper);
return PageResult.build(pages);
}
@Override
public PageResult<OGoods> queryPageList(OGoods bo, PageQuery pageQuery) {
LambdaQueryWrapper<OGoods> queryWrapper = new LambdaQueryWrapper<OGoods>();
queryWrapper.eq(bo.getStatus()!=null, OGoods::getStatus,bo.getStatus());
queryWrapper.eq(bo.getCategoryId()!=null,OGoods::getCategoryId,bo.getCategoryId());
queryWrapper.eq(bo.getSupplierId()!=null,OGoods::getSupplierId,bo.getSupplierId());
queryWrapper.eq(StringUtils.hasText(bo.getGoodsNum()),OGoods::getGoodsNum,bo.getGoodsNum());
queryWrapper.like(StringUtils.hasText(bo.getName()),OGoods::getName,bo.getName());
Page<OGoods> pages = goodsMapper.selectPage(pageQuery.build(), queryWrapper);
if(pages.getRecords()!=null){
for(OGoods g:pages.getRecords()){
g.setSkuList(skuMapper.selectList(new LambdaQueryWrapper<OGoodsSku>().eq(OGoodsSku::getGoodsId,g.getId())));
}
}
return PageResult.build(pages);
}
@Override
public List<GoodsSpecListVo> searchGoodsSpec(String keyword) {
return goodsMapper.searchGoodsSpec(keyword);
}
@Override
public List<OGoods> selectGoodsList(OGoods goods) {
List<OGoods> list = goodsMapper.selectList(new LambdaQueryWrapper<>());
return list;
}
@Override
public OGoods selectGoodsById(Long id) {
return goodsMapper.selectById(id);
}
@Transactional
@Override
public ResultVo<Long> insertGoods(String userName , GoodsAddBo bo)
{
if(StringUtils.isEmpty(bo.getNumber())) return ResultVo.error(500,"商品编码不能为空");
// 查询编码是否存在
List<OGoods> goodsList = goodsMapper.selectList(new LambdaQueryWrapper<OGoods>().eq(OGoods::getGoodsNum,bo.getNumber()));
if(goodsList!=null && goodsList.size()>0) return ResultVo.error(-1,"商品编码已存在");// return -1;
OGoods goods = new OGoods();
goods.setGoodsNum(bo.getNumber());
goods.setName(bo.getName());
goods.setImage(bo.getImage());
goods.setOuterErpGoodsId(bo.getOuterErpGoodsId());
goods.setUnitName(bo.getUnitName());
goods.setCategoryId(bo.getCategoryId());
goods.setBarCode(bo.getBarCode());
goods.setStatus(1);
goods.setLength(0.0);
goods.setHeight(0.0);
goods.setWidth(0.0);
goods.setWidth1(0.0);
goods.setWidth2(0.0);
goods.setWidth3(0.0);
goods.setWeight(0.0);
goods.setDisable(0);
goods.setPeriod(bo.getPeriod());
goods.setPurPrice(bo.getPurPrice());
goods.setWholePrice(bo.getWholePrice());
goods.setRetailPrice(bo.getRetailPrice());
goods.setUnitCost(bo.getUnitCost());
goods.setSupplierId(bo.getSupplierId());
goods.setBrandId(bo.getBrandId());
goods.setLinkUrl(bo.getLinkUrl());
goods.setLowQty(0);
goods.setHighQty(0);
goods.setCreateBy(userName);
goods.setCreateTime(new Date());
goods.setProvince(bo.getProvince());
goods.setCity(bo.getCity());
goods.setTown(bo.getTown());
// 1添加主表o_goods
goodsMapper.insert(goods);
// 2添加规格表erp_goods_spec
for (GoodsAddSkuBo skuBo:bo.getSpecList()) {
OGoodsSku spec = new OGoodsSku();
spec.setGoodsId(goods.getId());
spec.setOuterErpGoodsId(bo.getOuterErpGoodsId());
spec.setOuterErpSkuId(skuBo.getOuterErpSkuId());
spec.setGoodsName(bo.getName());
String skuName ="";
if(StringUtils.hasText(skuBo.getColorValue()))
skuName+= skuBo.getColorValue();
if(StringUtils.hasText(skuBo.getSizeValue()))
skuName+= " "+ skuBo.getSizeValue();
if(StringUtils.hasText(skuBo.getStyleValue()))
skuName+= " "+ skuBo.getStyleValue();
spec.setSkuName(skuName);
spec.setSkuCode(skuBo.getSpecNum());
spec.setColorId(skuBo.getColorId());
spec.setColorValue(skuBo.getColorValue());
if(bo.getColorImages()!=null && StringUtils.hasText(bo.getColorImages().get(skuBo.getColorId()))){
spec.setColorImage(bo.getColorImages().get(skuBo.getColorId()));
}else {
spec.setColorImage(goods.getImage());
}
spec.setSizeId(skuBo.getSizeId());
spec.setSizeValue(skuBo.getSizeValue());
spec.setStyleId(skuBo.getStyleId());
spec.setStyleValue(skuBo.getStyleValue());
if(bo.getPurPrice() == null){
spec.setPurPrice(goods.getPurPrice());
}else spec.setPurPrice(bo.getPurPrice());
spec.setStatus(1);
skuMapper.insert(spec);
// 添加商品库存表
OGoodsInventory inventory = new OGoodsInventory();
inventory.setSkuId(spec.getId());
inventory.setGoodsId(goods.getId());
inventory.setGoodsNum(bo.getNumber());
inventory.setSkuCode(skuBo.getSpecNum());
inventory.setQuantity(0L);
inventory.setIsDelete(0);
inventory.setCreateTime(new Date());
inventory.setCreateBy("添加商品");
inventoryMapper.insert(inventory);
}
// 3添加规格属性表erp_goods_spec_attr
if(bo.getColorValues()!=null) {
for (Long val:bo.getColorValues()) {
OGoodsSkuAttr specAttr = new OGoodsSkuAttr();
specAttr.setGoodsId(goods.getId());
specAttr.setType("color");
specAttr.setK("颜色");
specAttr.setKid(114L);
specAttr.setVid(val);
skuAttrMapper.insert(specAttr);
}
}
if(bo.getSizeValues()!=null) {
for (Long val:bo.getSizeValues()) {
OGoodsSkuAttr specAttr = new OGoodsSkuAttr();
specAttr.setGoodsId(goods.getId());
specAttr.setType("size");
specAttr.setK("尺码");
specAttr.setKid(115L);
specAttr.setVid(val);
skuAttrMapper.insert(specAttr);
}
}
if(bo.getColorValues()!=null) {
for (Long val:bo.getColorValues()) {
OGoodsSkuAttr specAttr = new OGoodsSkuAttr();
specAttr.setGoodsId(goods.getId());
specAttr.setType("style");
specAttr.setK("款式");
specAttr.setKid(116L);
specAttr.setVid(val);
skuAttrMapper.insert(specAttr);
}
}
// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return ResultVo.success(Long.parseLong(goods.getId()));
}
@Override
public int updateGoods(OGoods goods) {
return goodsMapper.updateById(goods);
}
@Transactional
@Override
public int deleteGoodsByIds(Long[] ids) {
// 有业务关联的商品
// for (Long id:ids){
// List<OOrderItem> oOrderItems = orderItemMapper.selectList(new LambdaQueryWrapper<OOrderItem>().eq(OOrderItem::getGoodsId, id));
// if(oOrderItems.isEmpty()){
// // 删除库存
// inventoryMapper.delete(new LambdaQueryWrapper<OGoodsInventory>().eq(OGoodsInventory::getGoodsId,id));
// // 删除skuAttr
// skuAttrMapper.delete(new LambdaQueryWrapper<OGoodsSkuAttr>().eq(OGoodsSkuAttr::getGoodsId,id));
// // 删除sku
// skuMapper.delete(new LambdaQueryWrapper<OGoodsSku>().eq(OGoodsSku::getGoodsId,id));
// // 删除商品
// goodsMapper.deleteById(id);
// }else{
// return -100;//有关联的订单不能删除
// }
// }
return 0;
}
@Override
public int insertGoodsSku(OGoodsSku goodsSku) {
// 是否存在
List<OGoodsSku> oGoodsSkus = skuMapper.selectList(new LambdaQueryWrapper<OGoodsSku>().eq(OGoodsSku::getOuterErpSkuId, goodsSku.getOuterErpSkuId()).or().eq(OGoodsSku::getSkuCode, goodsSku.getSkuCode()));
if(oGoodsSkus==null || oGoodsSkus.size() ==0) {
// 查询goodsId外键
if (StringUtils.hasText(goodsSku.getOuterErpGoodsId())) {
List<OGoods> oGoods = goodsMapper.selectList(new LambdaQueryWrapper<OGoods>().eq(OGoods::getOuterErpGoodsId, goodsSku.getOuterErpGoodsId()));
if (oGoods != null && oGoods.size() > 0) {
goodsSku.setGoodsId(oGoods.get(0).getId());
} else {
goodsSku.setGoodsId("0");
}
} else {
goodsSku.setGoodsId("0");
}
return skuMapper.insert(goodsSku);
}
return -1;
}
// @Override
// public int saveGoodsSku(GoodsSkuAddBo addBo) {
// // 是否存在
// List<OGoodsSku> oGoodsSkus = skuMapper.selectList(new LambdaQueryWrapper<OGoodsSku>().eq(OGoodsSku::getOuterErpSkuId, addBo.getErpSkuId()));
// if(oGoodsSkus==null || oGoodsSkus.size() ==0) {
// //不存在新增
// OGoodsSku insert = new OGoodsSku();
// insert.setGoodsId(addBo.getGoodsk);
// insert.setOuterErpGoodsId("0");
// insert.setOuterErpSkuId(addBo.getErpSkuId());
// insert.setSkuName(addBo.getProductSpec());
// insert.setSkuCode(addBo.getErpSkuCode());
// insert.setGoodsName(addBo.getErpSkuName());
// insert.setRetailPrice(addBo.getSalePrice());
// insert.setColorValue(addBo.getProductColor());
// insert.setColorImage(addBo.getProductPicture1());
// insert.setSizeValue(addBo.getMaterialKind());
// insert.setVolume(addBo.getProductVolume());
// insert.setStatus(addBo.getProductIsUse());
// skuMapper.insert(insert);
// }else{
// // 存在修改
// OGoodsSku update = new OGoodsSku();
// update.setId(oGoodsSkus.get(0).getId());
// update.setOuterErpSkuId(addBo.getErpSkuId());
// update.setSkuName(addBo.getProductSpec());
// update.setSkuCode(addBo.getErpSkuCode());
// update.setGoodsName(addBo.getErpSkuName());
// update.setRetailPrice(addBo.getSalePrice());
// update.setColorValue(addBo.getProductColor());
// update.setColorImage(addBo.getProductPicture1());
// update.setSizeValue(addBo.getMaterialKind());
// update.setVolume(addBo.getProductVolume());
// update.setStatus(addBo.getProductIsUse());
// skuMapper.updateById(update);
// }
// return 1;
// }
//
// @Override
// public int batchSaveGoodsSku(List<GoodsSkuAddBo> list) {
// for (var bo:list) {
// if(StringUtils.hasText(bo.getErpSkuId()) && StringUtils.hasText(bo.getErpSkuCode()) ){
// this.saveGoodsSku(bo);
// }
// }
// return 1;
// }
}

View File

@ -0,0 +1,22 @@
package cn.qihangerp.module.goods.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import cn.qihangerp.module.goods.domain.OGoodsSkuAttr;
import cn.qihangerp.module.goods.service.OGoodsSkuAttrService;
import cn.qihangerp.module.goods.mapper.OGoodsSkuAttrMapper;
import org.springframework.stereotype.Service;
/**
* @author qilip
* @description 针对表o_goods_sku_attr的数据库操作Service实现
* @createDate 2024-09-07 20:31:18
*/
@Service
public class OGoodsSkuAttrServiceImpl extends ServiceImpl<OGoodsSkuAttrMapper, OGoodsSkuAttr>
implements OGoodsSkuAttrService{
}

View File

@ -0,0 +1,41 @@
package cn.qihangerp.module.goods.service.impl;
import cn.qihangerp.module.goods.domain.OGoodsSku;
import cn.qihangerp.module.goods.mapper.OGoodsSkuMapper;
import cn.qihangerp.module.goods.service.OGoodsSkuService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @author TW
* @description 针对表o_goods_sku(商品规格库存管理)的数据库操作Service实现
* @createDate 2024-03-11 14:24:49
*/
@AllArgsConstructor
@Service
public class OGoodsSkuServiceImpl extends ServiceImpl<OGoodsSkuMapper, OGoodsSku>
implements OGoodsSkuService {
private final OGoodsSkuMapper skuMapper;
@Override
public List<OGoodsSku> searchGoodsSpec(String keyword) {
LambdaQueryWrapper<OGoodsSku> queryWrapper =
new LambdaQueryWrapper<OGoodsSku>()
.likeRight(OGoodsSku::getGoodsId,keyword).or()
.likeRight(OGoodsSku::getId,keyword).or()
.likeRight(OGoodsSku::getSkuCode,keyword).or()
.like(OGoodsSku::getGoodsName,keyword).or()
.like(OGoodsSku::getSkuName,keyword)
;
queryWrapper.last("LIMIT 10");
return skuMapper.selectList(queryWrapper);
}
}

View File

@ -0,0 +1,39 @@
package cn.qihangerp.module.goods.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import cn.qihangerp.common.PageQuery;
import cn.qihangerp.common.PageResult;
import cn.qihangerp.module.goods.domain.OGoodsSupplier;
import cn.qihangerp.module.goods.service.OGoodsSupplierService;
import cn.qihangerp.module.goods.mapper.OGoodsSupplierMapper;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
/**
* @author qilip
* @description 针对表o_goods_supplier的数据库操作Service实现
* @createDate 2024-09-07 16:35:43
*/
@AllArgsConstructor
@Service
public class OGoodsSupplierServiceImpl extends ServiceImpl<OGoodsSupplierMapper, OGoodsSupplier>
implements OGoodsSupplierService{
private final OGoodsSupplierMapper mapper;
@Override
public PageResult<OGoodsSupplier> queryPageList(OGoodsSupplier bo, PageQuery pageQuery) {
LambdaQueryWrapper<OGoodsSupplier> queryWrapper = new LambdaQueryWrapper<OGoodsSupplier>();
queryWrapper.like(StringUtils.hasText(bo.getName()), OGoodsSupplier::getName, bo.getName());
Page<OGoodsSupplier> pages = mapper.selectPage(pageQuery.build(), queryWrapper);
return PageResult.build(pages);
}
}

View File

@ -0,0 +1,22 @@
<?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="cn.qihangerp.module.goods.mapper.OGoodsBrandMapper">
<resultMap id="BaseResultMap" type="cn.qihangerp.module.goods.domain.OGoodsBrand">
<id property="id" column="id" jdbcType="INTEGER"/>
<result property="name" column="name" jdbcType="VARCHAR"/>
<result property="status" column="status" jdbcType="INTEGER"/>
<result property="createBy" column="create_by" jdbcType="VARCHAR"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="updateBy" column="update_by" jdbcType="VARCHAR"/>
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
</resultMap>
<sql id="Base_Column_List">
id,name,status,
create_by,create_time,update_by,
update_time
</sql>
</mapper>

View File

@ -0,0 +1,19 @@
<?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="cn.qihangerp.module.goods.mapper.OGoodsCategoryAttributeMapper">
<resultMap id="BaseResultMap" type="cn.qihangerp.module.goods.domain.OGoodsCategoryAttribute">
<id property="id" column="id" jdbcType="INTEGER"/>
<result property="categoryId" column="category_id" jdbcType="INTEGER"/>
<result property="type" column="type" jdbcType="INTEGER"/>
<result property="title" column="title" jdbcType="VARCHAR"/>
<result property="code" column="code" jdbcType="CHAR"/>
</resultMap>
<sql id="Base_Column_List">
id,category_id,type,
title,code
</sql>
</mapper>

View File

@ -0,0 +1,20 @@
<?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="cn.qihangerp.module.goods.mapper.OGoodsCategoryAttributeValueMapper">
<resultMap id="BaseResultMap" type="cn.qihangerp.module.goods.domain.OGoodsCategoryAttributeValue">
<id property="id" column="id" jdbcType="INTEGER"/>
<result property="categoryAttributeId" column="category_attribute_id" jdbcType="INTEGER"/>
<result property="value" column="value" jdbcType="VARCHAR"/>
<result property="skuCode" column="sku_code" jdbcType="VARCHAR"/>
<result property="ordernum" column="orderNum" jdbcType="INTEGER"/>
<result property="isdelete" column="isDelete" jdbcType="INTEGER"/>
</resultMap>
<sql id="Base_Column_List">
id,category_attribute_id,value,
sku_code,orderNum,isDelete
</sql>
</mapper>

View File

@ -0,0 +1,30 @@
<?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="cn.qihangerp.module.goods.mapper.OGoodsCategoryMapper">
<resultMap id="BaseResultMap" type="cn.qihangerp.module.goods.domain.OGoodsCategory">
<id property="id" column="id" jdbcType="INTEGER"/>
<result property="number" column="number" jdbcType="VARCHAR"/>
<result property="name" column="name" jdbcType="VARCHAR"/>
<result property="remark" column="remark" jdbcType="VARCHAR"/>
<result property="parentId" column="parent_id" jdbcType="INTEGER"/>
<result property="path" column="path" jdbcType="VARCHAR"/>
<result property="sort" column="sort" jdbcType="INTEGER"/>
<result property="image" column="image" jdbcType="VARCHAR"/>
<result property="isdelete" column="isDelete" jdbcType="TINYINT"/>
<result property="createBy" column="create_by" jdbcType="VARCHAR"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="updateBy" column="update_by" jdbcType="VARCHAR"/>
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
</resultMap>
<sql id="Base_Column_List">
id,`number`,`name`,
remark,parent_id,path,
sort,image,isDelete,
create_by,create_time,update_by,
update_time
</sql>
</mapper>

View File

@ -0,0 +1,35 @@
<?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="cn.qihangerp.module.goods.mapper.OGoodsInventoryBatchMapper">
<resultMap id="BaseResultMap" type="cn.qihangerp.module.goods.domain.OGoodsInventoryBatch">
<id property="id" column="id" jdbcType="BIGINT"/>
<result property="batchNum" column="batch_num" jdbcType="VARCHAR"/>
<result property="originQty" column="origin_qty" jdbcType="BIGINT"/>
<result property="currentQty" column="current_qty" jdbcType="BIGINT"/>
<result property="purPrice" column="pur_price" jdbcType="DOUBLE"/>
<result property="purId" column="pur_id" jdbcType="BIGINT"/>
<result property="purItemId" column="pur_item_id" jdbcType="BIGINT"/>
<result property="remark" column="remark" jdbcType="VARCHAR"/>
<result property="skuId" column="sku_id" jdbcType="BIGINT"/>
<result property="goodsId" column="goods_id" jdbcType="BIGINT"/>
<result property="skuCode" column="sku_code" jdbcType="VARCHAR"/>
<result property="warehouseId" column="warehouse_id" jdbcType="BIGINT"/>
<result property="positionId" column="position_id" jdbcType="BIGINT"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="createBy" column="create_by" jdbcType="VARCHAR"/>
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
<result property="updateBy" column="update_by" jdbcType="VARCHAR"/>
</resultMap>
<sql id="Base_Column_List">
id,batch_num,origin_qty,
current_qty,pur_price,pur_id,
pur_item_id,remark,sku_id,
goods_id,sku_code,warehouse_id,
position_id,create_time,create_by,
update_time,update_by
</sql>
</mapper>

View File

@ -0,0 +1,30 @@
<?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="cn.qihangerp.module.goods.mapper.OGoodsInventoryMapper">
<resultMap id="BaseResultMap" type="cn.qihangerp.module.goods.domain.OGoodsInventory">
<id property="id" column="id" jdbcType="BIGINT"/>
<result property="goodsId" column="goods_id" jdbcType="BIGINT"/>
<result property="goodsNum" column="goods_num" jdbcType="VARCHAR"/>
<result property="skuId" column="sku_id" jdbcType="BIGINT"/>
<result property="skuCode" column="sku_code" jdbcType="VARCHAR"/>
<result property="quantity" column="quantity" jdbcType="BIGINT"/>
<result property="isDelete" column="is_delete" jdbcType="TINYINT"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="createBy" column="create_by" jdbcType="VARCHAR"/>
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
<result property="updateBy" column="update_by" jdbcType="VARCHAR"/>
</resultMap>
<sql id="Base_Column_List">
id,goods_id,goods_num,
sku_id,sku_code,quantity,
is_delete,create_time,create_by,
update_time,update_by
</sql>
<select id="getAllInventoryQuantity" resultType="Long">
SELECT IFNULL(SUM(quantity),0) as count FROM o_goods_inventory where is_delete=0
</select>
</mapper>

Some files were not shown because too many files have changed in this diff Show More