某系统有库存管理功能,要求具备管理员角色或者仓库管理员角色的用户,可以查看设备入库情况,同时可以对未入库的设备,实现【入库】操作 请根据以上需求分析对应的数据库表 1、用户、角色 2、设备信息表,包括库存数量和设备名等信息 3、采购信息表,包含采购的设备、采购的数量、采购的时间和是否完成入库 4、入库记录表 包括入库时间、入库数量、操作人和入库的设备 实现如下功能: 1、用户登录之后,显示该用户拥有的角色信息 2、如果具备相应角色权限 a、可查看设备在库情况 b、可查看所有未入库的设备信息 c、可实现入库操作,并记录入库的情况 要求: A、提交核心配置文件、映射文件 B、提交Mapper接口 C、可编写适当的界面,直观的展示测试的效果
时间: 2023-07-10 13:09:19 浏览: 138
根据以上需求分析,我们可以设计以下数据库表结构:
1. 用户信息表(user_info)
- 用户编号(user_id)
- 用户名(username)
- 密码(password)
- 角色编号(role_id)
2. 角色信息表(role_info)
- 角色编号(role_id)
- 角色名称(role_name)
3. 设备信息表(device_info)
- 设备编号(device_id)
- 设备名称(device_name)
- 库存数量(stock_num)
4. 采购信息表(purchase_info)
- 采购编号(purchase_id)
- 设备编号(device_id)
- 采购数量(purchase_num)
- 采购时间(purchase_time)
- 是否完成入库(is_in_stock)
5. 入库记录表(stock_in_record)
- 入库记录编号(record_id)
- 入库时间(stock_in_time)
- 入库数量(stock_in_num)
- 操作人编号(operator_id)
- 设备编号(device_id)
其中,用户信息表和角色信息表是一对多的关系,即一个用户可以对应多个角色;采购信息表和设备信息表是多对一的关系,即多条采购记录对应同一个设备;入库记录表和设备信息表也是多对一的关系,即多条入库记录对应同一个设备。
在数据库表结构设计完成后,我们需要编写相应的Mapper接口以及XML映射文件来实现对应的功能。下面是相关代码示例:
1. UserMapper.java
```
public interface UserMapper {
User getUserByUsernameAndPassword(@Param("username") String username, @Param("password") String password);
List<Role> getRolesByUserId(@Param("userId") Integer userId);
}
```
2. DeviceMapper.java
```
public interface DeviceMapper {
List<Device> getAllDevices();
Device getDeviceById(@Param("deviceId") Integer deviceId);
void updateDevice(Device device);
}
```
3. PurchaseMapper.java
```
public interface PurchaseMapper {
List<Purchase> getUnstockedPurchases();
void updatePurchase(Purchase purchase);
}
```
4. StockInRecordMapper.java
```
public interface StockInRecordMapper {
void insertStockInRecord(StockInRecord stockInRecord);
}
```
5. UserMapper.xml
```
<mapper namespace="com.example.mapper.UserMapper">
<select id="getUserByUsernameAndPassword" parameterType="map" resultType="com.example.entity.User">
SELECT * FROM user_info WHERE username = #{username} AND password = #{password}
</select>
<select id="getRolesByUserId" parameterType="int" resultMap="roleResultMap">
SELECT r.* FROM role_info r JOIN user_info u ON r.role_id = u.role_id WHERE u.user_id = #{userId}
</select>
<resultMap id="roleResultMap" type="com.example.entity.Role">
<id property="roleId" column="role_id"/>
<result property="roleName" column="role_name"/>
</resultMap>
</mapper>
```
6. DeviceMapper.xml
```
<mapper namespace="com.example.mapper.DeviceMapper">
<select id="getAllDevices" resultType="com.example.entity.Device">
SELECT * FROM device_info
</select>
<select id="getDeviceById" parameterType="int" resultType="com.example.entity.Device">
SELECT * FROM device_info WHERE device_id = #{deviceId}
</select>
<update id="updateDevice">
UPDATE device_info SET stock_num = #{stockNum} WHERE device_id = #{deviceId}
</update>
</mapper>
```
7. PurchaseMapper.xml
```
<mapper namespace="com.example.mapper.PurchaseMapper">
<select id="getUnstockedPurchases" resultType="com.example.entity.Purchase">
SELECT * FROM purchase_info WHERE is_in_stock = 0
</select>
<update id="updatePurchase">
UPDATE purchase_info SET is_in_stock = 1 WHERE purchase_id = #{purchaseId}
</update>
</mapper>
```
8. StockInRecordMapper.xml
```
<mapper namespace="com.example.mapper.StockInRecordMapper">
<insert id="insertStockInRecord">
INSERT INTO stock_in_record (stock_in_time, stock_in_num, operator_id, device_id) VALUES (#{stockInTime}, #{stockInNum}, #{operatorId}, #{deviceId})
</insert>
</mapper>
```
最后,我们可以根据需要编写相应的界面来直观地展示测试的效果。
阅读全文