精华内容
下载资源
问答
  • 系统名称:仓库ERP管理系统(springboot) 技术:springboot + mybatis + easyui 运行环境:jdk1.8+ maven3+ MySQL5.5 开发工具:IDEA/ Eclipse 详细设计及实现: ...说明:本系统源下载无需积分,在公众号【C you ...
  • Thinkphp二开的进销存多仓库erp系统源码,可用,需要清数据库,Thinkphp二开的进销存多仓库erp系统源码
  • 亲测可用的多仓库ERP进销存系统,方便二次开发。登录账户:admin,密码:admin888 数据库在db目录下,数据库连接配置文件在\Application\Common\Conf目录下。
  • Thinkphp框架二次开发多仓库ERP进存销系统源码开源版.rar
  • php门店仓库多商户多仓库 ERP进销存管理系统源码 带扫描入库 Saas营销版php门店仓库多商户多仓库 ERP进销存管理系统源码 带扫描入库 Saas营销版 多商户Saas营销版 无限开商户,用户前端自行注册,后台管理员审核开通...

    php门店仓库多商户多仓库 ERP进销存管理系统源码 带扫描入库 Saas营销版php门店仓库多商户多仓库 ERP进销存管理系统源码 带扫描入库 Saas营销版
    多商户Saas营销版 无限开商户,用户前端自行注册,后台管理员审核开通

    管理员开通商户,可以设置商户到期时间、权限等等,无限开商户,搭建起来就可以赚钱。
    支持多个企业,多个企业之间数据完全独立。
    每个企业下面支持多个子公司,多个子公司之间数据也完全独立。
    每个子公司下面支持多个门店,各个门店之间商品等基础数据共享,但单据数据完全隔离。
    每个门店下面支持多个仓库。
    所以是多商户、多企业、多门店、多仓库版,上下级最多可达3级,总公司-子公司-门店,到子公司两级一般已经称为多商户了,我们可以支持到三级,公司里可以再有子公司。
    总公司和子公司账号可以切换到各个门店级别进行对应门店的操作。
    总公司账号登陆可以看到所有子公司数据的汇总,子公司账号登陆
    可以看到所有门店数据的汇总。
    除同一门店里多个仓库之间可以调拨之外,不同门店之间不同仓库也可以调拨百度网盘

    展开全文
  • 仓库ERP操作流程.docx

    2020-11-08 08:38:10
    ERP 系统入库操作流程 列表中查询到需要入1.陈文他们下完合同之后可以在 出入库调度管理 制定入库单 库的合同产品以及数量但是 入库调度 那一列显示的是 等待质检 如下图所示 列表中查询到需要入 2.在 质量控制 质检...
  • 和智云仓库管理系统源代码PHP版本,无加密 演示地址: http://axdemo.epizy.com
  • PHP语言开发的ERP进销存管理系统多仓库全开源无限制优化版,扫描入库+库存预警+仓库管理+商品管理+供应商管理。有购货,销货,仓库管理,商品管理,供应商管理,职员管理等非常多的功能。 本系统开发 ...
  • 最新版ERP仓库进销存系统完整开源版本源码
  • PHP语言开发的ERP进销存管理系统多仓库全开源无限制优化版,扫描入库+库存预警+仓库管理+商品管理+供应商管理。有购货,销货,仓库管理,商品管理,供应商管理,职员管理等非常多的功能。
  • 一款非常好用的Thinkphp制作的erp进销存多仓库erp系统源码,THINKPHP框架二次开发wms,各功能齐全,非常适合中小店使用。 文件:590m.com/f/25127180-497690772-937e77(访问密码:551685) 以下内容无关: -----------...

    一款非常好用的Thinkphp制作的erp进销存多仓库erp系统源码,THINKPHP框架二次开发wms,各功能齐全,非常适合中小店使用。

    文件:590m.com/f/25127180-497690772-937e77(访问密码:551685)

    以下内容无关:

    -------------------------------------------分割线---------------------------------------------

    学习数据结构,进行单链表操作是很基础的内容;只要掌握单链表,那么循环链表、栈和队列的操作将是水到渠成的事情。单链表的难点在于结构体和指针的配合使用,这点掌握熟练,那么单链表也不在话下。这篇文章的示例程序是在Ubuntu16.04操作系统环境中进行的。

       我们学习链表的目的是什么?也就是说我们学习链表是要解决什么样的问题呢?大家都知道,针对数组,一组数据的数据类型少,产生了结构体,而结构体和数组都有一个共同的特点,在定义的时候就要规定明确的数据个数。所以对于有限个数据的处理,我们使用结构体或数组就够用了,但是,很多实际问题,我们无法在定义的时候能够明确具体的数据个数,很多时候会有未知个数的数据需要处理,这时我们就需要使用链表来进行操作了。
    
       下面我们便以代码为例,简单说明一下单链表的操作。
    
       首先编写头文件,头文件的名称为:linklist.h。声明结构体,声明各个操作函数。一般的单链表操作,是不会在节点中加入编号的,而我个人认为,加入编号方便后续的编程实现,也不容易产生混乱,可以进一步验证正确与否,尽管这样做,对于代码编写难度略有提高。
    

    复制代码
    1 /*
    2 * 文件名为:linklist.h
    3 * 文件作用:声明结构体,声明各个操作函数,便于主函数的调用
    4 * 文件用途:用于单链表的操作使用
    5 /
    6 typedef int datatype; /自定义变量datatype 便于阅读。/
    7 /
    定义结构体部分*/
    8 typedef struct node{
    9 datatype data;
    10 int no;
    11 struct node * next;
    12 }listnode,linklist;
    13
    14 /
    声明各个操作函数*/
    15 /* 声明创建空表函数,返回值为空表指针*/
    16 linklist list_create(void);
    17 /* 声明头结点插入节点函数,返回值为操作是否成功,成功:0失败:-1*/
    18 int list_head_insert(linklist H,datatype x);
    19 /* 声明按节点编号插入节点函数,返回值为操作是否成功,成功:0失败:-1*/
    20 int list_pos_insert(linklist H,datatype x,int pos);
    21 /* 声明按数值查找函数,返回值为节点编号,失败:-1*/
    22 int list_number_search(linklist H,datatype x);
    23 /* 声明按节点序号查找函数,返回值为该节点编号下的数值,失败:-1*/
    24 int list_pos_search(linklist H,int pos);
    25 /* 声明删除指定节点编号的节点函数,返回值为操作是否成功,成功:0失败:-1*/
    26 int list_delete(linklist H,int pos);
    27 /* 声明将链表数据全部倒置,返回值为操作是否成功,成功:0失败:-1*/
    28 int list_invode(linklist H);
    29 /* 声明链表输出显示各个节点数据的函数,返回值为操作是否成功,成功:0失败:-1*/
    30 int list_show(linklist H);
    复制代码
    以上便是头文件的编写,下面创建linklist.c文件,用于各个函数功能的实现。由于文件中代码行数较多,不方便讲述,所以下面的讲述,不是将代码整段贴在下面,而是以函数为单位进行了分割,组合起来和源文件也是一模一样的。

       第一个函数功能是创建空表,函数没有参数,但是返回值是指向创建空表的指针。首先要创建动态内存,赋值给空表指针,判断指针是否为空来确定动态内存是否分配成功,若成功,则继续给空表内的各个数值及指针赋值。最后返回指针,完成空表的创建。
    

    复制代码
    1 #include <stdio.h>
    2 #include <stdlib.h>
    3 #include “linklist.h”
    4 linklist list_create(void)
    5 {
    6 linklist H = NULL;
    7 /* 申请动态内存,赋值给指针*/
    8 H = (linklist)malloc(sizeof(listnode));
    9 /* 判断动态内存是否申请成功*/
    10 if(H == NULL)
    11 {
    12 printf(“no memory\n”);
    13 return NULL;
    14 }else
    15 {
    16 /* 给空表中结构体中的各个成员赋值*/
    17 H -> data = 0;
    18 H -> no = -1;
    19 H -> next = NULL;
    20 /* 返回空表指针*/
    21 return H;
    22 }
    23 }
    复制代码
    第二个函数功能是,在头结点之后插入结点元素。函数有两个参数,第一个参数是:所要插入节点的链表指针,第二个参数是:插入节点中结构体成员中数据的数值。返回值为操作是否成功,若成功则返回0,若失败则返回-1。

       首先要判断传参传入的链表指针是否为空,若为空说明是一个失败的链表,不能继续执行插入操作,因此返回-1,就此程序结束;若不为空则继续执行插入操作。在执行插入之前先要创建一个节点,节点的创建也需要申请动态内存管理空间,将动态内存申请的节点指针,赋予头结点的节点指针,头结点的节点指针赋予动态内存申请的指针,将参数传入的数据赋值给新创建的节点结构体中的成员,成员编号赋予0,表示头结点的下一个编号。由于每次调用这个函数,我们不能确定是第几次给头结点插入节点,因此节点的编号必然需要刷新,这样构建循环,在循环中让插入的节点的下一个节点依次自增1,使编号不会混乱。最后返回0值表明程序顺利执行。
    
    展开全文
  • 主要模块有零售管理、采购管理、销售管理、仓库管理、财务管理、报表查询、系统管理等。支持预付款、收入支出、仓库调拨、组装拆卸、订单等特色功能。拥有库存状况、出入库统计等报表。权限控制更加精确 02 技术 ...

    作者: C you again,从事软件开发 努力在IT搬砖路上的技术小白
    公众号:C you again】,分享计算机类毕业设计源码、IT技术文章、游戏源码、网页模板、程序人生等等。公众号回复 【粉丝】进博主技术群,与大佬交流,领取干货学习资料
    关于转载:欢迎转载博主文章,转载时表明出处
    求赞环节:创作不易,记得 点赞+评论+转发 谢谢你一路支持

    查看更多系统:系统大全,课程设计、毕业设计,请点击这里查看

    01 系统概述

    基于SpringBoot框架和SaaS模式,非常好用的ERP软件,目前专注进销存+财务功能。主要模块有零售管理、采购管理、销售管理、仓库管理、财务管理、报表查询、系统管理等。支持预付款、收入支出、仓库调拨、组装拆卸、订单等特色功能。拥有库存状况、出入库统计等报表。权限控制更加精确

    02 技术

    springboot + mybatis + easyui

    03 运行环境

    • 开发工具:idea/eclipse,推荐使用idea
    • maven3+,并且在开发工具中配置好
    • jdk1.8+,推荐1.8
    • MySQL5.5+, 推荐5.7,5.6

    04 技术架构

    • 核心框架:SpringBoot 2.0.0
    • 持久层框架:Mybatis 1.3.2
    • 日志管理:Log4j 2.10.0
    • JS框架:Jquery 1.8.0
    • UI框架: EasyUI 1.9.4
    • 模板框架: AdminLTE 2.4.0
    • 项目管理框架:Maven 3.2.3

    05 功能模块

    • 零售管理
    • 采购管理
    • 销售管理
    • 仓库管理
    • 财务管理
    • 报表查询
    • 商品管理
    • 基本信息
    • 系统管理

    06 项目结构

    在这里插入图片描述

    07 运行截图

    零售关系-》零售出库

    在这里插入图片描述

    采购管理-》采购入库

    在这里插入图片描述

    财务管理-》收入单

    在这里插入图片描述

    商品管理-》商品信息

    在这里插入图片描述

    08 主要代码

    用户管理

    package com.jsh.erp.controller;
    
    import com.alibaba.fastjson.JSON;
    import com.alibaba.fastjson.JSONArray;
    import com.alibaba.fastjson.JSONObject;
    import com.github.pagehelper.PageHelper;
    import com.github.pagehelper.PageInfo;
    import com.jsh.erp.constants.BusinessConstants;
    import com.jsh.erp.constants.ExceptionConstants;
    import com.jsh.erp.datasource.entities.Tenant;
    import com.jsh.erp.datasource.entities.User;
    import com.jsh.erp.datasource.entities.UserEx;
    import com.jsh.erp.datasource.vo.TreeNodeEx;
    import com.jsh.erp.exception.BusinessParamCheckingException;
    import com.jsh.erp.service.log.LogService;
    import com.jsh.erp.service.tenant.TenantService;
    import com.jsh.erp.service.user.UserService;
    import com.jsh.erp.utils.*;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.web.bind.annotation.*;
    import org.springframework.web.context.request.RequestContextHolder;
    import org.springframework.web.context.request.ServletRequestAttributes;
    
    import javax.annotation.Resource;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.net.URLEncoder;
    import java.security.NoSuchAlgorithmException;
    import java.util.*;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    
    import static com.jsh.erp.utils.ResponseJsonUtil.returnJson;
    
    /**
     * @author 
     */
    @RestController
    @RequestMapping(value = "/user")
    public class UserController {
        private Logger logger = LoggerFactory.getLogger(UserController.class);
    
        @Value("${manage.roleId}")
        private Integer manageRoleId;
    
        @Resource
        private UserService userService;
    
        @Resource
        private TenantService tenantService;
    
        @Resource
        private LogService logService;
    
        private static String message = "成功";
        private static final String HTTP = "http://";
        private static final String CODE_OK = "200";
    
        @PostMapping(value = "/login")
        public BaseResponseInfo login(@RequestParam(value = "loginName", required = false) String loginName,
                            @RequestParam(value = "password", required = false) String password,
                            HttpServletRequest request)throws Exception {
            logger.info("============用户登录 login 方法调用开始==============");
            String msgTip = "";
            User user=null;
            BaseResponseInfo res = new BaseResponseInfo();
            try {
                String username = loginName.trim();
                password = password.trim();
                //判断用户是否已经登录过,登录过不再处理
                Object userInfo = request.getSession().getAttribute("user");
                User sessionUser = new User();
                if (userInfo != null) {
                    sessionUser = (User) userInfo;
                }
                if (sessionUser != null && username.equalsIgnoreCase(sessionUser.getLoginame())) {
                    logger.info("====用户 " + username + "已经登录过, login 方法调用结束====");
                    msgTip = "user already login";
                }
                //获取用户状态
                int userStatus = -1;
                try {
                    request.getSession().removeAttribute("tenantId");
                    userStatus = userService.validateUser(username, password);
                } catch (Exception e) {
                    e.printStackTrace();
                    logger.error(">>>>>>>>>>>>>用户  " + username + " 登录 login 方法 访问服务层异常====", e);
                    msgTip = "access service exception";
                }
                switch (userStatus) {
                    case ExceptionCodeConstants.UserExceptionCode.USER_NOT_EXIST:
                        msgTip = "user is not exist";
                        break;
                    case ExceptionCodeConstants.UserExceptionCode.USER_PASSWORD_ERROR:
                        msgTip = "user password error";
                        break;
                    case ExceptionCodeConstants.UserExceptionCode.BLACK_USER:
                        msgTip = "user is black";
                        break;
                    case ExceptionCodeConstants.UserExceptionCode.USER_ACCESS_EXCEPTION:
                        msgTip = "access service error";
                        break;
                    default:
                        try {
                            msgTip = "user can login";
                            //验证通过 ,可以登录,放入session,记录登录日志
                            user = userService.getUserByUserName(username);
                            request.getSession().setAttribute("user",user);
                            if(user.getTenantId()!=null) {
                                Tenant tenant = tenantService.getTenantByTenantId(user.getTenantId());
                                if(tenant!=null) {
                                    Long tenantId = tenant.getTenantId();
                                    Integer userNumLimit = tenant.getUserNumLimit();
                                    Integer billsNumLimit = tenant.getBillsNumLimit();
                                    if(tenantId!=null) {
                                        request.getSession().setAttribute("tenantId",tenantId); //租户tenantId
                                        request.getSession().setAttribute("userNumLimit",userNumLimit); //用户限制数
                                        request.getSession().setAttribute("billsNumLimit",billsNumLimit); //单据限制数
                                    }
                                }
                            }
                            logService.insertLog("用户",
                                    new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_LOGIN).append(user.getId()).toString(),
                                    ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest());
                        } catch (Exception e) {
                            e.printStackTrace();
                            logger.error(">>>>>>>>>>>>>>>查询用户名为:" + username + " ,用户信息异常", e);
                        }
                        break;
                }
                Map<String, Object> data = new HashMap<String, Object>();
                data.put("msgTip", msgTip);
                /**
                 * 在IE模式下,无法获取到user数据,
                 * 在此处明确添加上user信息
                 * */
                if(user!=null){
                    data.put("user",user);
                }
                res.code = 200;
                res.data = data;
                logger.info("===============用户登录 login 方法调用结束===============");
            } catch(Exception e){
                e.printStackTrace();
                logger.error(e.getMessage());
                res.code = 500;
                res.data = "用户登录失败";
            }
            return res;
        }
    
        @GetMapping(value = "/getUserSession")
        public BaseResponseInfo getSessionUser(HttpServletRequest request)throws Exception {
            BaseResponseInfo res = new BaseResponseInfo();
            try {
                Map<String, Object> data = new HashMap<String, Object>();
                Object userInfo = request.getSession().getAttribute("user");
                if(userInfo!=null) {
                    User user = (User) userInfo;
                    user.setPassword(null);
                    data.put("user", user);
                }
                res.code = 200;
                res.data = data;
            } catch(Exception e){
                e.printStackTrace();
                res.code = 500;
                res.data = "获取session失败";
            }
            return res;
        }
    
        @GetMapping(value = "/logout")
        public BaseResponseInfo logout(HttpServletRequest request, HttpServletResponse response)throws Exception {
            BaseResponseInfo res = new BaseResponseInfo();
            try {
                request.getSession().removeAttribute("user");
                request.getSession().removeAttribute("tenantId");
                request.getSession().removeAttribute("userNumLimit");
                request.getSession().removeAttribute("billsNumLimit");
                response.sendRedirect("/login.html");
            } catch(Exception e){
                e.printStackTrace();
                res.code = 500;
                res.data = "退出失败";
            }
            return res;
        }
    
        @PostMapping(value = "/resetPwd")
        public String resetPwd(@RequestParam("id") Long id,
                                         HttpServletRequest request) throws Exception {
            Map<String, Object> objectMap = new HashMap<String, Object>();
            String password = "123456";
            String md5Pwd = Tools.md5Encryp(password);
            int update = userService.resetPwd(md5Pwd, id);
            if(update > 0) {
                return returnJson(objectMap, message, ErpInfo.OK.code);
            } else {
                return returnJson(objectMap, message, ErpInfo.ERROR.code);
            }
        }
    
        @PostMapping(value = "/updatePwd")
        public String updatePwd(@RequestParam("userId") Long userId, @RequestParam("password") String password,
                                @RequestParam("oldpwd") String oldpwd, HttpServletRequest request)throws Exception {
            Integer flag = 0;
            Map<String, Object> objectMap = new HashMap<String, Object>();
            try {
                User user = userService.getUser(userId);
                String oldPassword = Tools.md5Encryp(oldpwd);
                String md5Pwd = Tools.md5Encryp(password);
                //必须和原始密码一致才可以更新密码
                if(user.getLoginame().equals("jsh")){
                    flag = 3; //管理员jsh不能修改密码
                } else if (oldPassword.equalsIgnoreCase(user.getPassword())) {
                    user.setPassword(md5Pwd);
                    flag = userService.updateUserByObj(user); //1-成功
                } else {
                    flag = 2; //原始密码输入错误
                }
                objectMap.put("status", flag);
                if(flag > 0) {
                    return returnJson(objectMap, message, ErpInfo.OK.code);
                } else {
                    return returnJson(objectMap, message, ErpInfo.ERROR.code);
                }
            } catch (Exception e) {
                logger.error(">>>>>>>>>>>>>修改用户ID为 : " + userId + "密码信息失败", e);
                flag = 3;
                objectMap.put("status", flag);
                return returnJson(objectMap, message, ErpInfo.ERROR.code);
            }
        }
    
        /**
         * 获取全部用户数据列表
         * @param request
         * @return
         */
        @GetMapping(value = "/getAllList")
        public BaseResponseInfo getAllList(HttpServletRequest request)throws Exception {
            BaseResponseInfo res = new BaseResponseInfo();
            try {
                Map<String, Object> data = new HashMap<String, Object>();
                List<User> dataList = userService.getUser();
                if(dataList!=null) {
                    data.put("userList", dataList);
                }
                res.code = 200;
                res.data = data;
            } catch(Exception e){
                e.printStackTrace();
                res.code = 500;
                res.data = "获取失败";
            }
            return res;
        }
        /**
         * create by: cjl
         * description:
         *  查询分页用户列表
         * create time: 2019/3/8 15:08
         * @Param: pageSize
         * @Param: currentPage
         * @Param: search
         * @return java.lang.String
         */
        @GetMapping(value = "/getUserList")
        public String getUserList(@RequestParam(value = Constants.PAGE_SIZE, required = false) Integer pageSize,
                                           @RequestParam(value = Constants.CURRENT_PAGE, required = false) Integer currentPage,
                                           @RequestParam(value = Constants.SEARCH, required = false) String search)throws Exception {
    
            Map<String, Object> parameterMap = new HashMap<String, Object>();
            //查询参数
            JSONObject obj= JSON.parseObject(search);
            Set<String> key= obj.keySet();
            for(String keyEach: key){
                parameterMap.put(keyEach,obj.getString(keyEach));
            }
            PageQueryInfo queryInfo = new PageQueryInfo();
            Map<String, Object> objectMap = new HashMap<String, Object>();
            if (pageSize == null || pageSize <= 0) {
                pageSize = BusinessConstants.DEFAULT_PAGINATION_PAGE_SIZE;
            }
            if (currentPage == null || currentPage <= 0) {
                currentPage = BusinessConstants.DEFAULT_PAGINATION_PAGE_NUMBER;
            }
            PageHelper.startPage(currentPage,pageSize,true);
            List<UserEx> list = userService.getUserList(parameterMap);
            //获取分页查询后的数据
            PageInfo<UserEx> pageInfo = new PageInfo<>(list);
            objectMap.put("page", queryInfo);
            if (list == null) {
                queryInfo.setRows(new ArrayList<Object>());
                queryInfo.setTotal(BusinessConstants.DEFAULT_LIST_NULL_NUMBER);
                return returnJson(objectMap, "查找不到数据", ErpInfo.OK.code);
            }
            queryInfo.setRows(list);
            queryInfo.setTotal(pageInfo.getTotal());
            return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code);
        }
    
        /**
         * create by: cjl
         * description:
         *  新增用户及机构和用户关系
         * create time: 2019/3/8 16:06
         * @Param: beanJson
         * @return java.lang.Object
         */
        @PostMapping("/addUser")
        @ResponseBody
        public Object addUser(@RequestParam("info") String beanJson, HttpServletRequest request)throws Exception{
            JSONObject result = ExceptionConstants.standardSuccess();
            Long userNumLimit = Long.parseLong(request.getSession().getAttribute("userNumLimit").toString());
            Long count = userService.countUser(null,null);
            if(count>= userNumLimit) {
                throw new BusinessParamCheckingException(ExceptionConstants.USER_OVER_LIMIT_FAILED_CODE,
                        ExceptionConstants.USER_OVER_LIMIT_FAILED_MSG);
            } else {
                UserEx ue= JSON.parseObject(beanJson, UserEx.class);
                userService.addUserAndOrgUserRel(ue);
            }
            return result;
        }
    
    
        /**
         * 注册用户
         * @param loginame
         * @param password
         * @return
         * @throws Exception
         */
        @PostMapping(value = "/registerUser")
        public Object registerUser(@RequestParam(value = "loginame", required = false) String loginame,
                                   @RequestParam(value = "password", required = false) String password,
                                   HttpServletRequest request)throws Exception{
            JSONObject result = ExceptionConstants.standardSuccess();
            UserEx ue= new UserEx();
            ue.setUsername(loginame);
            ue.setLoginame(loginame);
            ue.setPassword(password);
            userService.checkUserNameAndLoginName(ue); //检查用户名和登录名
            ue = userService.registerUser(ue,manageRoleId,request);
            return result;
        }
        /**
         * create by: cjl
         * description:
         *  修改用户及机构和用户关系
         * create time: 2019/3/8 16:06
         * @Param: beanJson
         * @return java.lang.Object
         */
        @PostMapping("/updateUser")
        @ResponseBody
        public Object updateUser(@RequestParam("info") String beanJson,@RequestParam("id") Long id)throws Exception{
            JSONObject result = ExceptionConstants.standardSuccess();
            UserEx ue= JSON.parseObject(beanJson, UserEx.class);
            ue.setId(id);
            userService.updateUserAndOrgUserRel(ue);
            return result;
        }
        @PostMapping("/deleteUser")
        @ResponseBody
        public Object deleteUser(@RequestParam("ids") String ids)throws Exception{
            JSONObject result = ExceptionConstants.standardSuccess();
            userService.batDeleteUser(ids);
            return result;
        }
        @PostMapping("/batchDeleteUser")
        @ResponseBody
        public Object batchDeleteUser(@RequestParam("ids") String ids)throws Exception{
            JSONObject result = ExceptionConstants.standardSuccess();
            userService.batDeleteUser(ids);
            return result;
        }
        @RequestMapping("/getOrganizationUserTree")
        public JSONArray getOrganizationUserTree()throws Exception{
            JSONArray arr=new JSONArray();
            List<TreeNodeEx> organizationUserTree= userService.getOrganizationUserTree();
            if(organizationUserTree!=null&&organizationUserTree.size()>0){
                for(TreeNodeEx node:organizationUserTree){
                    String str=JSON.toJSONString(node);
                    JSONObject obj=JSON.parseObject(str);
                    arr.add(obj) ;
                }
            }
            return arr;
        }
    }
    
    

    账户管理

    package com.jsh.erp.controller;
    
    import com.alibaba.fastjson.JSONArray;
    import com.alibaba.fastjson.JSONObject;
    import com.jsh.erp.constants.BusinessConstants;
    import com.jsh.erp.constants.ExceptionConstants;
    import com.jsh.erp.datasource.entities.Account;
    import com.jsh.erp.datasource.vo.AccountVo4InOutList;
    import com.jsh.erp.exception.BusinessRunTimeException;
    import com.jsh.erp.service.account.AccountService;
    import com.jsh.erp.utils.BaseResponseInfo;
    import com.jsh.erp.utils.ErpInfo;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.web.bind.annotation.*;
    
    import javax.annotation.Resource;
    import javax.servlet.http.HttpServletRequest;
    import java.math.BigDecimal;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import static com.jsh.erp.utils.ResponseJsonUtil.returnJson;
    
    /**
     * @author jishenghua 75271*8920
     */
    @RestController
    @RequestMapping(value = "/account")
    public class AccountController {
        private Logger logger = LoggerFactory.getLogger(AccountController.class);
    
        @Resource
        private AccountService accountService;
    
        /**
         * 查找结算账户信息-下拉框
         * @param request
         * @return
         */
        @GetMapping(value = "/findBySelect")
        public String findBySelect(HttpServletRequest request) throws Exception {
            String res = null;
            try {
                List<Account> dataList = accountService.findBySelect();
                //存放数据json数组
                JSONArray dataArray = new JSONArray();
                if (null != dataList) {
                    for (Account account : dataList) {
                        JSONObject item = new JSONObject();
                        item.put("Id", account.getId());
                        //结算账户名称
                        item.put("AccountName", account.getName());
                        dataArray.add(item);
                    }
                }
                res = dataArray.toJSONString();
            } catch(Exception e){
                e.printStackTrace();
                res = "获取数据失败";
            }
            return res;
        }
    
        /**
         * 获取所有结算账户
         * @param request
         * @return
         */
        @GetMapping(value = "/getAccount")
        public BaseResponseInfo getAccount(HttpServletRequest request) throws Exception {
            BaseResponseInfo res = new BaseResponseInfo();
            Map<String, Object> map = new HashMap<String, Object>();
            try {
                List<Account> accountList = accountService.getAccount();
                map.put("accountList", accountList);
                res.code = 200;
                res.data = map;
            } catch(Exception e){
                e.printStackTrace();
                res.code = 500;
                res.data = "获取数据失败";
            }
            return res;
        }
    
        /**
         * 账户流水信息
         * @param currentPage
         * @param pageSize
         * @param accountId
         * @param initialAmount
         * @param request
         * @return
         */
        @GetMapping(value = "/findAccountInOutList")
        public BaseResponseInfo findAccountInOutList(@RequestParam("currentPage") Integer currentPage,
                                                     @RequestParam("pageSize") Integer pageSize,
                                                     @RequestParam("accountId") Long accountId,
                                                     @RequestParam("initialAmount") BigDecimal initialAmount,
                                                     HttpServletRequest request) throws Exception{
            BaseResponseInfo res = new BaseResponseInfo();
            Map<String, Object> map = new HashMap<String, Object>();
            try {
                List<AccountVo4InOutList> dataList = accountService.findAccountInOutList(accountId, (currentPage-1)*pageSize, pageSize);
                int total = accountService.findAccountInOutListCount(accountId);
                map.put("total", total);
                //存放数据json数组
                JSONArray dataArray = new JSONArray();
                if (null != dataList) {
                    for (AccountVo4InOutList aEx : dataList) {
                        String timeStr = aEx.getOperTime().toString();
                        BigDecimal balance = accountService.getAccountSum(accountId, timeStr, "date").add(accountService.getAccountSumByHead(accountId, timeStr, "date"))
                                .add(accountService.getAccountSumByDetail(accountId, timeStr, "date")).add(accountService.getManyAccountSum(accountId, timeStr, "date")).add(initialAmount);
                        aEx.setBalance(balance);
                        dataArray.add(aEx);
                    }
                }
                map.put("rows", dataArray);
                res.code = 200;
                res.data = map;
            } catch(Exception e){
                e.printStackTrace();
                res.code = 500;
                res.data = "获取数据失败";
            }
            return res;
        }
    
    
        @PostMapping(value = "/updateAmountIsDefault")
        public String updateAmountIsDefault(@RequestParam("isDefault") Boolean isDefault,
                                     @RequestParam("accountId") Long accountId,
                                     HttpServletRequest request) throws Exception{
            Map<String, Object> objectMap = new HashMap<String, Object>();
            int res = accountService.updateAmountIsDefault(isDefault, accountId);
            if(res > 0) {
                return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code);
            } else {
                return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code);
            }
        }
        /**
         * create by: qiankunpingtai
         * website:https://qiankunpingtai.cn
         * description:
         *  批量删除账户信息
         * create time: 2019/3/29 10:49
         * @Param: ids
         * @return java.lang.Object
         */
        @RequestMapping(value = "/batchDeleteAccountByIds")
        public Object batchDeleteAccountByIds(@RequestParam("ids") String ids,@RequestParam(value="deleteType",
                required =false,defaultValue=BusinessConstants.DELETE_TYPE_NORMAL)String deleteType) throws Exception {
    
            JSONObject result = ExceptionConstants.standardSuccess();
            /**
             * create by: qiankunpingtai
             * create time: 2019/4/10 10:19
             * website:https://qiankunpingtai.cn
             * description:
             *  出于兼容性考虑,没有传递删除类型时,默认为正常删除
             */
            int i=0;
            if(BusinessConstants.DELETE_TYPE_NORMAL.equals(deleteType)){
                 i= accountService.batchDeleteAccountByIdsNormal(ids);
            }else if(BusinessConstants.DELETE_TYPE_FORCE.equals(deleteType)){
                 i= accountService.batchDeleteAccountByIds(ids);
            }else{
                logger.error("异常码[{}],异常提示[{}],参数,ids[{}],deleteType[{}]",
                        ExceptionConstants.DELETE_REFUSED_CODE,ExceptionConstants.DELETE_REFUSED_MSG,ids,deleteType);
                throw new BusinessRunTimeException(ExceptionConstants.DELETE_REFUSED_CODE,
                        ExceptionConstants.DELETE_REFUSED_MSG);
            }
            if(i<1){
                logger.error("异常码[{}],异常提示[{}],参数,ids[{}]",
                        ExceptionConstants.ACCOUNT_DELETE_FAILED_CODE,ExceptionConstants.ACCOUNT_DELETE_FAILED_MSG,ids);
                throw new BusinessRunTimeException(ExceptionConstants.ACCOUNT_DELETE_FAILED_CODE,
                        ExceptionConstants.ACCOUNT_DELETE_FAILED_MSG);
            }
            return result;
        }
    
    }
    
    

    09 源码下载

    关注公众号【C you again】,回复“springboot 仓库ERP管理系统”免费领取。
    亦可直接扫描主页二维码关注,回复“springboot 仓库ERP管理系统”免费领取,点此打开个人主页

    10 如何使用

    1. 下载代码后解压缩
    2. 导入
    • 将项目导入到开发工具当中
    • 配置maven(因为我是直接从我工程中打包的,里面含有我本地的maven配置,所以需要重新配置一下)
    • 导入sql到MySQL当中,修改application.properties中的数据源信息,和你自己的对应上就可以了
    • 启动之后会有网址访问提示,直接访问就ok。默认用户名密码:admin/123456

    在这里插入图片描述
    说明:此源码来源于网络,若有侵权,请联系删除!!

    展开全文
  • ERP数据仓库ERP数据仓库 BWBW企业用户培训企业用户培训 ERPERP数据仓库数据仓库 BWBW企业用户培训企业用户培训 埃森哲咨询公司埃森哲咨询公司 埃森哲咨询公司埃森哲咨询公司 20072007年年0404月月 20020077年年0404 ...
  • ERP仓库管理教程

    2014-09-01 13:43:07
    ERP仓库管理系统资源介绍了仓库管理的教程与模块分析,设计理念十分清晰!
  • ERP(多仓库

    2017-06-16 10:32:35
    erp仓库版。在X宝花钱买的
  • 仓库ERP系统数据源之一仓库管理也是企业高管的普遍心病在系统上线初 期每天物料出入库频繁收发单据数量大仓管员录单员加班多再加上 编码观念没有深入人心等原因很容易造成系统数据紊乱影响生产经营 为了切实改善...
  • 易语言ERP仓库进销存

    2019-05-26 15:58:11
    易语言ERP仓库进销存,小厂非常实用,也可以做为参考,也可以在原来基础上修改!
  • ERP系统助力仓库库间调拨管理,加速仓库运转
  • 随着信息技术的发展和市场环境的变化,ERP正向智能化方向发展z而数据仓库、联机分析处理以及数据挖掘是智能化的核心技术。实施智能化需要有正确的数据,并将ERP中面向作业的数据转化为面向分析的数据,然后从这些...
  • ERP仓库管理系统

    2012-02-28 14:15:25
    系统包含了入库管理,库存管理,出库管理,统计报表,会员管理,帐务管理等功能,完全能满足一般企业的仓库管理。系统界面美观大方,功能强大并且易用,是企业仓库管理的最佳工具 安装时注意查看conn.asp和conn2.asp...
  • ERP 系统如何加强仓库管理 仓库ERP系统数据源之一仓库管理也是企业高管的普遍心病 在系统上线初期每天物 料出入库频繁收发单据数量大仓管员录单员加班多再加上编码观念没有深入人心 等原因很容易造成系统数据紊乱...
  • 仿金蝶erp仓库系统

    2019-03-26 18:13:08
    仿金蝶erp仓库系统,可以让有需要的朋友用来学习。这个资源是我自己用过的,所以基本没什么问题,可以直接安装测试
  • 仓库管理规范 一 总则 物控是ERP系统管理的两大重要组成部分之一仓库则是公司的物控管理中心是物 管的主体和实施者 仓库的管理要从进货入库开始到销货出库结束源头的管理是仓库管理的重中之重 仓库要保证所有购进的...
  • ERP仓库管理系统需求

    千次阅读 2018-06-30 10:26:43
    ERP仓库管理系统需求 目录 1.系统管理... 2 2.供货管理... 12 3.仓库管理... 24 4.出货管理... 27一:系统管理1. 输入账号、密码进入系统功能:可能出现以下情况:1.1账号或密码错误,或者员工已经辞职离开: ...

    ERP仓库管理系统需求

    目录

    1.系统管理... 2

    2.供货管理... 12

    3.仓库管理... 24

    4.出货管理... 27

    一:系统管理


    1.     输入账号、密码进入系统

    功能:

    可能出现以下情况:

    1.1账号或密码错误,或者员工已经辞职离开:

        

           1.2账号不存在:

           1.3登录成功后进入:


    2.     根据权限判断能够进入的界面(4个模块)

    2.1点击想要进入的模块,如果权限不足,会跳出以下提示:

    2.2权限足够,则会进入想进入的模块

     

     

    3.     系统管理模块

    a)       操作人员管理:  (部门、职务、人员、权限)

    部门:人力资源部,采购部,仓储部,销售部

    职务: 增、删、改和查询

    人员:1.编号、姓名、密码、部门、职务、权限

    2.增、删、改和查询(高级查询:【人员编号或者人员姓名等,查询这个人员的信息】)

    管理权限:每一个人,都有一张权限表(包括管理员),登录之后能够使用的功能。

     

    功能:

    1.1根据查看的权限的高低会显示不同的样子,如下:

    1.1.1具有查看自己本人信息的,会进入如下界面,只显示自己的信息:

     

    1.1.2具有查看所有信息的则会跳出如下界面,分页显示出所有信息:

     

    1.2点击上方的各个按钮时,会根据权限判断是否能进行相关的操作

    权限不足则会跳出如下界面:

    权限足够,则会进入下面界面:

    1.2.1添加人员:(编号自动生成、默认状态为:不离职,且都不改变;根据下划线选择所在部门和职务;姓名、密码都不能为空)

     

    可能出现以下情况:

    1.2.1.1姓名为空 

    1.2.1.2密码为空

     

    1.2.1.3部门未选择 

    1.2.1.4职务未选择 

    1.2.1.1添加成功后,点击确定后再次调回人员管理界面

     

    1.2.2 删除人员(管理员张三无法被删除)

    会出现以下情况:

    1.2.2.1管理员张三无法被删除 

    1.2.2.2删除成功

     

    然后当前显示的人员信息表也对应进行改变

     

    1.2.3修改人员:(编号)

    选择想要改变的进行修改,注意:

    1.2.3.1.姓名、密码均不能为空;

    1.2.3.2.所在部门和职务必须选择一个;

    1.2.3.3.离职状态除管理员其余都可修改。

    管理员如下:(是否离职状态不可被修改)

     

     

    1.2.4职务管理:(只有管理员张三才可进行操作,其余人均不可操作)

    管理员操作界面如下:(也可以进行翻页操作)

    1.2.4.1添加职务

    1.2.4.2修改职务

     

    1.2.4.3删除职务

     

    1.2.5 权限管理:(双击人员表进入权限管理界面)

    1.2.5.1人力资源部

    1.2.5.2采购部

    1.2.5.3仓储部

    1.2.5.4销售部 

    权限不足则会显示如下:

    1.2.5.5确认修改权限按钮失效

     

    二:供货管理(进货)

     

    2.进入采购管理的操作界面:

     

    2.1订单管理:(同样根据查看权限的不同,显示界面不同)

    2.1.1有查看所有信息权限显示

    (显示所有人员处理的订单) 

    2.1.2查看个人信息权限

    (显示自己所处理的订单)

     

    2.2订单的增删改:(根据权限的不同)

    权限不足显示

     

    权限足够的情况下功能:

     

    2.2.1填写采购单. (采购单号,采购日期,采购人员,供应商,物品清单)

    订单中商品必须要进行填写,否则不能提交订单

    功能:

    2.2.1.1单击商品编号或者商品名称、或商品规格跳出(商品信息界面),对商品进行选择添加,双击后显示在对应的框中

    1.1商品信息界面

    2.2.1.2.点击添加商品后放入下方的订单商品信息表中,不进入数据库,显示如下:

    2.2.1.3点击删除按钮后可以对所选中的订单中商品进行删除操作

    2.2.2.1.4点击保存按钮可实现订单的添加

    2.2.2修改没有审核采购单.

    2.2.2.1未选中要修改的订单

     

    功能:

    点击后调转到如下方的订单信息界面(订单信息不可修改)

    订单中的商品信息可以进行修改(添加、删除操作)

    点击保存后进行保存修改后的订单操作

     

    2.2.3删除没有审核的采购单

    2.2.3.1未选中订单状态

     

    删除选中项的所有信息(包括订单中的商品信息一起删除)

    2.2.3.2提示删除成功操作

     

    2.2.4查询自己的采购单(高级查询,按日期倒序,先看没有审核[最早的采购单],后看审核过的[先看最晚的采购单]).[部门经理或者有权限的,那么可以查看下属的所有采购单信息]

    2.2.4.1点击已审核订单,跳转至如下界面:

    2.2.4.1.1拥有查看所有信息人员权限显示效果

     

    2.2.4.1.2只有查看个人信息人员权限显示效果(该图是无已审核定订单的情况)

      

    2.2.4.2点击未审核订单按钮

    2.2.4.2.1拥有查看所有信息人员权限显示效果 

    2.2.4.2.2只有查看个人信息人员权限显示效果(该图是无已审核定订单的情况)

     

    2.2.5审核采购单 (通过、不通过和没有审核过),不通过的审核单可以修改,[修改后有变成没有审核的]

    2.2.5.1通过的订单

     

    2.2.5.2审核成功后

     

    2.2.6管理商品信息: 增、删、改、查操作。

    跳转至如下界面(显示所有商品):

     

    功能:

    权限不足显示

     

    2.2.6.1添加物品(编号自动生成)

     

    注意:名称、规格、数量都不能为空,否则提示如下界面:

    2.2.6.2修改商品:

    选择要修改的商品编号进行修改:

     

    2.2.6.3删除商品:(需要选择要删除的商品)

    2.2.6.3.1未选中商品提示

    2.2.6.3.2删除选中商品成功后提示

     

    2.2.7管理供货商信息:增、删、改、查操作。

    跳转至如下界面:

     

    功能:

    权限不足显示

     

    2.2.7.1添加供货商:

    (商品名、商铺地址、商铺负责人、商铺电话都不能为空)

     

    2.2.7.2修改供货商:

    选择要修改的商铺号,效果如下:

     

    2.2.7.3删除供货商:(选择要删除的商铺进行删除)

    2.2.7.3.1未选商铺显示效果: 

    2.2.7.3.2删除成功后提示

     

     

    三:仓库管理

     

    3.1仓库信息管理:(商品管理、仓库管理、区域管理、货架管理)

    这四个区域都可进行相应的删除和添加操作,但需要对应的权限

    仓库管理: 增、删、改、查操作。(仓库1,2,3。每一个仓库下区域,每一个区域下货架编号。。。) 如果删除,需要判断是否被连接过,如果连接过不能删除

     

    3.2进仓管理:

    查询审核过的采购单,一键添加入仓单,每一个商品清单都需要设置仓库的保存位置. 保存入仓单.(库存信息发生改变.)

    注意:修改入库单: 修改后那么库存需要同时改变.

    查看入库单信息

     


    3.3出仓管理:查询审核过的销售单,一键添加出仓单,每一个商品清单都需要设置取货仓库位置. 保存出仓单. (库存信息发生改变.)

    修改出仓单: 改动后,库存也需要改动.

     

    3.4库存信息:(展示所有库存商品的信息)

     

    四:出货管理

    跳转界面:

     

    4.1订单管理:

    4.1有查看所有功能权限显示

    4.1有查看个人功能权限显示

     

    功能:

    增删改权限的限制,权限不足显示:

    权限不足显示

      

    4.1.1添加订单:(单击选择顾客进行添加)

    订单中的商品单击进行选择可以进行增删操作

    添加商品:

    删除商品:

     

    4.1.2修改订单:(选中要修改的订单)注意:已通过订单不可被修改

    未选中提示 

    4.1.3删除订单:(删除成功后会提示删除成功)

    未选中提示 

    4.1.4审核管理: (已通过的不需要审核)

    4.1.4.1通过的订单

     

    4.1.1.2审核成功后

     

    4.1.5查询自己的销售单(高级查询,按日期倒序,先看没有审核[最早的销售单],后看审核过的[先看最晚的销售单]).[部门经理或者有权限的,那么可以查看下属的所有销售单信息]

     

    4.1.5.1点击已审核订单按钮:

    4.1.5.1.1有查看所有信息权限显示如上

    4.1.5.1.2有查看个人信息权限显示如上

     

    4.1.5.2点击未审核订单按钮:

    4.1.5.2.1有查看所有信息权限显示如上


    4.1.5.1.2有查看个人信息权限显示如上(此处是无未审核订单情况)

     

    4.2顾客管理:(跳转至如下界面)

    功能:

    权限不足显示

      

    权限不足显示

    4.2.1添加顾客:

    (顾客号、顾客名、顾客地址、顾客电话都不能为空)

      

    4.2.2修改顾客:

    选中要修改的顾客,效果如下:

    4.2.3删除顾客:(选中后才能删除)

    4.2.3.1未选中提示

    4.2.3.1删除成功后提示

     

     

    数据库表:

    表Authority:权限表

    字段名

    名称

    数据类型

    主键

    是否为空

    AID

    权限编号

    varchar(20)

    Not null

    AName

    权限名称

    varchar(20)

     

    Not null 

     

    表Customer:客户表

    字段名

    名称

    数据类型

    主键

    是否为空

    CID

    客户编号

    varchar(20)

    Not null

    CName

    客户名称

    varchar(50)

     

    Not null

    CAddress

    客户地址

    varchar(50)

     

    Not null

    CMob

    客户电话

    varchar(50)

     

    Not null

      

    表Department:部门表

    字段名

    名称

    数据类型

    主键

    是否为空

    DID

    部门编号

    varchar(20)

    Not null

    DName

    部门名称

    varchar(20)

     

    Not null

     

    表ERP:仓库表

    字段名

    名称

    数据类型

    主键

    是否为空

    ERPID

    仓库编号

    varchar(20)

    Not null

    ERPName

    仓库名称

    varchar(20)

     

    Not null

     

    表ERPArea:仓库区域表

    字段名

    名称

    数据类型

    主键

    是否为空

    ERPAreaID

    区域编号

    varchar(20)

    Not null

    ERPID

    仓库编号

    varchar(20)

    null

    ERPAreaName

    区域名称

    varchar(20)

     

    Not null

     

    表ERPGoods:仓库商品表

    字段名

    名称

    数据类型

    主键

    是否为空

    GID

    区域编号

    varchar(20)

    Not null

    GCount

    数量

    int

     

    Not null

    GDate

    日期

    date

     

    Not null

    GPrice

    单价

    money

     

    Not null

    GEID

    仓库编号

    varchar(20)

    Not null

    GAID

    区域编号

    varchar(20)

    Not null

    GSID

    货架编号

    varchar(20)

    Not null

     

    表ERPShilf:仓库商品表

    字段名

    名称

    数据类型

    主键

    是否为空

    ERPShilfID

    货架编号

    varchar(20)

    Not null

    ERPAreaID

    区域编号

    varchar(20)

     

    null

    ERPShilfName

    货架名称

    varchar(20)

     

    Not null

     

    表Goods:商品表

    字段名

    名称

    数据类型

    主键

    是否为空

    GID

    商品编号

    varchar(20)

    Not null

    GName

    商品名称

    varchar(20)

     

    Not null

    GSize

    规格

    varchar(20)

     

    Not null

    GCount

    数量

    int

     

    Not null

      

    表Goods:商品表

    字段名

    名称

    数据类型

    主键

    是否为空

    GID

    商品编号

    varchar(20)

    Not null

    GName

    商品名称

    varchar(20)

     

    Not null

    GSize

    规格

    varchar(20)

     

    Not null

    GCount

    数量

    int

     

    Not null

      

    表InERPForm:入库表

    字段名

    名称

    数据类型

    主键

    是否为空

    InEFrmID

    入库编号

    varchar(20)

    Not null

    InEFrmUID

    员工编号

    varchar(20)

    Not null

    InEFrmDate

    日期

    date

     

    Not null

      

    表InERPProduct:入库商品表

    字段名

    名称

    数据类型

    主键

    是否为空

    InEGID

    区域编号

    varchar(20)

    Not null

    InEFrmID

    入库编号

    varchar(20)

    null

    InEPCount

    数量

    int

     

    Not null

    InEPDate

    日期

    date

     

    Not null

    InEPPrice

    单价

    money

     

    Not null

    ERPID

    仓库编号

    varchar(20)

    Not null

    ERPAreaID

    区域编号

    varchar(20)

    Not null

    InEPShilfID

    货架编号

    varchar(20)

    Not null

    GoodType

    种类

    varchar(20)

     

    Not null

      

    表OrderList:采购订单表

    字段名

    名称

    数据类型

    主键

    是否为空

    OID

    订单号

    varchar(20)

    Not null

    OShopID

    供货商

    varchar(20)

    null

    OUID

    员工编号

    varchar(20)

     

    Not null

    ODate

    日期

    date

     

    Not null

    OState

    审核状态

    varchar(6)

     

    Not null

    OStored

    是否入库

    varchar(2)

     

    null

     

    表[User]:人员表

    字段名

    名称

    数据类型

    主键

    是否为空

    UID

    人员编号

    varchar(20)

    Not null

    UName

    人员名称

    varchar(20)

     

    Not null

    UPwd

    人员密码

    varchar(20)

     

    Not null

    UDID

    部门编号

    varchar(20)

    Not null

    UPID

    职务编号

    varchar(20)

    Not null

    IsQuit

    是否离职

    varchar(2)

     

    Not null

     

    表Shop :供货商表

    字段名

    名称

    数据类型

    主键

    是否为空

    ShopID

    供货商编号

    varchar(20)

    Not null

    ShopName

    供货商名称

    varchar(50)

     

    Not null

    ShopAddress

    供货商地址

    varchar(50)

     

    Not null

    ShopOwner

    供货商负责人

    varchar(20)

     

    Not null

    ShopMob

    供货商电话

    varchar(50)

     

    Not null

                

    表Position :职务表

    字段名

    名称

    数据类型

    主键

    是否为空

    PID

    职务编号

    varchar(20)

    Not null

    PName

    职务名称

    varchar(20)

     

    Not null

    PExist

    是否存在

    bit

     

    Not null






    表PerAuthority :个人权限表

    字段名

    名称

    数据类型

    主键

    是否为空

    PUID

    员工编号

    varchar(20)

    Not null

    PDID

    部门编号

    varchar(20)

    Not null

    PAID

    权限编号

    varchar(20)

    Not null

     

    表OutGood :出货订单中的物品表

    字段名

    名称

    数据类型

    主键

    是否为空

    OGOID

    订单号

    varchar(20)

    Not null

    OGGID

    商品号

    varchar(50)

    Not null

    OGDate

    日期

    date

     

    Not null

    OGNum

    商品数量

    int

     

    Not null

    OGPrice

    商品单价

    money

     

    Not null

    OGTotalPrice

    商品总价

    money

     

    Not null

     

    表OutERPProduct:仓库出货表

    字段名

    名称

    数据类型

    主键

    是否为空

    OutEFrmID

    出库单编号

    varchar(20)

    Not null

    OutEFrmUID

    出库人员编号

    varchar(20)

     

    Not null

    OutEFrmDate

    日期

    date

     

    Not null

     

    表OuterOrder :出货订单

    字段名

    名称

    数据类型

    主键

    是否为空

    OOID

    订单号

    varchar(20)

    Not null

    OOCID

    顾客号

    varchar(20)

    Not null

    OOUID

    人员号

    varchar(20)

    Not null

    OODate

    日期

    Date

     

    Not null

    OOState

    审核状态

    varchar(6)

     

    Not null

    OOSend

    发货状态

    varchar(6)

     

    Not null

     

    表OrderProduct :采购订单中的商品

    字段名

    名称

    数据类型

    主键

    是否为空

    OPOID

    订单号

    varchar(20)

    Not null

    OPGID

    供货商号

    varchar(20)

    Not null

    GDate

    日期

    Date

     

    Not null

    OPNum

    商品数量

    int

     

    Not null

    OPPrice

    商品单价

    money

     

    Not null

    OPTotalPrice

    商品总价

    money

     

    Not null

     

     

     

    展开全文
  • 仿金蝶电商ERP进销存系统V3多仓库带扫描php网页版B/S进销存系统 此版本在原多仓的版本上进行了功能优化,扫描枪和库存预警等许多功能使用更便捷, 代码也进行了很多的优化,整体速度提升60%以上,更多功能请您...
  • 用友 ERP 系统 仓库岗位操 作 手 册 手册名称 仓库操作手册 适用部门 仓库部 编写人员 版本号 1.0 编写日期 2012 年 12 月 1 日 业务 采购订单 业务问题操作问题 对 到货单 业务问题操作问题 口 采购发票 业务问题...
  • 仿金蝶ERP进销存仓库管理系统多仓库版,扫描枪入库+库存预警,含购货,销货,仓库管理,商品管理,供应商管理,职员管理等非常多的功能。该 ERP部署安装非常简单,只需要空间支持PHP上传到根目录即可简单安装即可。...
  • 对于很多的企业来说,虽然已经有了ERP系统,但是他们的仓库管理模式仍然是采用手工记账的方式进行日常的仓库操作,包括入库、盘点、调拨、补货、质检等。随着仓储业务的日益频繁,现有的仓储方式不仅工作量大、繁琐...
  • ERP&SQL仓库管理系统

    2013-03-24 10:58:07
    ERP&SQL仓库管理系统课程设计,华中科技大学。
  • 仓库管理系统 ERP系统,集采购,销售,仓库,供应商关系于一体。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,607
精华内容 642
关键字:

仓库erp