基于MongoDB开发的物流系统(简易版)

 

 

 

 

 

application.yml

spring:
  data:
    mongodb:
      uri: mongodb://localhost/project1

 Order

@Data
@AllArgsConstructor
@NoArgsConstructor
/**
 * 订单
 */
public class Order implements Serializable {

    private String id;  //订单编号
    private String status;  //订单状态
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date orderTime; //下单时间

    private String shipper; //发货人
    private String shipperAddress;  //发货人地址
    private String shipperPhone;    //发货人电话
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date shipperTime;     //发货时间

    private String receiver;    //收货人
    private String receiverAddress;  //收货人地址
    private String receiverPhone;   //收货人电话
    private List<Logistics> logistics;  //物流信息的集合


}

Logistics

@Data
@AllArgsConstructor
@NoArgsConstructor
/**
 * 物流
 */
public class Logistics implements Serializable {
    private String orderId; //订单编号
    private String operation;   //操作名称
    private String operator;    //操作员
    private String phone;   //操作员电话
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date operationTime; //操作时间
    private String address; //操作地址
    private String details; //详细信息
}

OrderService

@Service
public class OrderService {
    @Resource
    private MongoTemplate mongoTemplate;

    /**
     * 添加订单至MongoDB
     * @param order
     */
    public void addOrder(Order order) {
        //订单编号根据雪花算法生成
        order.setId(IdUtil.getSnowflake(1, 1).nextIdStr());
        //设置订单状态
        order.setStatus("已下单");
        //设置下单时间
        order.setOrderTime(new Date());
        //设置发货时间
        order.setShipperTime(new Date());
        //添加订单至MongoDB
        mongoTemplate.insert(order, "order");
    }

    /**
     * 更新订单信息
     * 追加物流信息
     * @param logistics
     */
    public void updateOrderAndLogistics(Logistics logistics) {
        //获取操作名称
        String status = logistics.getOperation();
        //设置操作时间
        logistics.setOperationTime(new Date());
        //初始化Query对象,根据订单编号查询
        Query query = new Query(Criteria.where("_id").is(logistics.getOrderId()));

        //初始化修改对象
        Update update = new Update();
        //更新订单状态
        update.set("status",status);
        //追加物流信息
        update.push("logistics", logistics);
        //更新订单信息
        mongoTemplate.upsert(query,update,Order.class,"order");
    }

    /**
     * 根据订单编号来查询
     * @param id
     * @return
     */
    public Order selectOrderById(String id) {
        //初始化Query对象,根据订单编号来查询
        Query query = new Query(Criteria.where("_id").is(id));
        return mongoTemplate.findOne(query,Order.class,"order");
    }

    /**
     * 查询所有订单
     * @return
     */
    public Map<String, Object> selectOrderList() {
        List<Order> list = mongoTemplate.findAll(Order.class,"order");
        Map<String, Object> result = new HashMap<>();
        if (list == null || list.isEmpty()) {
            result.put("code", "400");
            result.put("message","没有相关订单");
        } else{
            result.put("code", "0");
            result.put("count",list.size());
            result.put("data",list);
        }
        return result;
    }

    /**
     * 删除
     * @param id
     * @return
     */
    public boolean deleteOrderById(String id) {
        Query query = new Query(Criteria.where("_id").is(id));
        DeleteResult result = mongoTemplate.remove(query,Order.class,"order");
        return result.getDeletedCount() >0 ? true : false;
    }


}

index.html

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/html">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <title>物流订单系统</title>
    <link rel="stylesheet" href="https://lib.baomitu.com/layui/2.6.8/css/layui.min.css">
</head>
<body>
<div class="layui-layout layui-layout-admin">
    <div class="layui-header">
        <div class="layui-logo layui-hide-xs layui-bg-bla
  • 4
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
好的,以下是一个基于 MongoDB 数据库开发的简单人事管理系统的设计和实现步骤: 1. 确定数据库结构 首先需要确定数据库的结构,即需要存储哪些信息。人事管理系统一般需要存储员工的个人信息、部门信息、职位信息、薪资信息等。根据这些需求,可以设计出以下几个集合: - employees:存储员工个人信息,包括姓名、性别、生日、电话、邮箱、入职日期、职位、部门等。 - departments:存储部门信息,包括部门名称、部门编号、部门经理等。 - positions:存储职位信息,包括职位名称、职位编号、职位薪资等。 - salaries:存储薪资信息,包括员工编号、薪资起始日期、薪资结束日期、薪资数额等。 2. 连接 MongoDB 数据库 使用 MongoDB 的官方驱动程序或者第三方库连接 MongoDB 数据库。在连接时,需要指定数据库名称和集合名称。 3. 实现基本的 CRUD 操作 可以使用 MongoDB 提供的 API 实现基本的 CRUD 操作。例如,可以使用 insertOne() 方法向 employees 集合中插入一条员工记录: ``` db.collection("employees").insertOne({ name: "张三", gender: "男", birthday: "1990-01-01", phone: "13888888888", email: "zhangsan@example.com", hireDate: "2020-01-01", position: "经理", department: "销售部" }) ``` 可以使用 find() 方法查询 employees 集合中的所有记录: ``` db.collection("employees").find({}) ``` 可以使用 updateOne() 方法更新 employees 集合中的一条记录: ``` db.collection("employees").updateOne( { name: "张三" }, { $set: { position: "高级经理" } } ) ``` 可以使用 deleteOne() 方法删除 employees 集合中的一条记录: ``` db.collection("employees").deleteOne({ name: "张三" }) ``` 4. 实现高级查询 除了基本的 CRUD 操作,人事管理系统还需要实现高级查询功能。例如,可以使用 aggregate() 方法计算员工的平均薪资: ``` db.collection("salaries").aggregate([ { $group: { _id: "$employeeId", avgSalary: { $avg: "$salary" } } } ]) ``` 可以使用 lookup() 方法将 employees 集合和 salaries 集合进行联接查询: ``` db.collection("employees").aggregate([ { $lookup: { from: "salaries", localField: "_id", foreignField: "employeeId", as: "salaries" } } ]) ``` 可以使用 find() 方法进行复杂的条件查询: ``` db.collection("employees").find({ $and: [ { gender: "男" }, { hireDate: { $gte: "2020-01-01" } }, { "salaries.salary": { $gte: 5000 } } ] }) ``` 5. 实现用户界面 最后,需要实现一个用户界面,让用户可以方便地使用人事管理系统。可以使用 Web 框架(如 Express)和模板引擎(如 EJS)实现一个简单的 Web 应用程序。用户可以通过界面进行增删改查操作,还可以进行高级查询和统计分析。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值