这是五个实体类: @Data public class SysRole extends BaseEntity { private String roleName; } @Data public class SysUserRoleRel { @TableId(type = IdType.ASSIGN_ID) private Long id; private Long userId; private Long roleId; } @Data public class SysUser extends BaseEntity { private String phone; } @Data public class WmsMessage { private Long id; private Long roleId; private Long userId; private Long inter_order_id; private Date interTime; private Integer status; } @Data public class WmsStoreInterOrder extends BaseEntity { //入库时间 private Date interTime; } SysUserRoleRel和WmsMessage是个中间表, userId是SysUser的id, roleId是SysRole的id, inter_order_id是WmsStoreInterOrder类的id, interTime是WmsStoreInterOrder类的interTime, 需求:自动检测WmsStoreInterOrder表的最新数据,并将WmsStoreInterOrder的id和interTime自动增加到WmsMessage类的inter_order_id和interTime, 当WmsStoreInterOrder在数据库每增加一条数据, 那么有多少userId的roleId等于4,就加多少条数据, 比如,WmsStoreInterOrder表新增了一条数据, 有5个userId的role等于4,那么WmsMessage就要增加5条数据,相同的inter_order_id存放在这5个userId的后面, 还要获取到WmsStoreInterOrder类的interTime,也放到WmsMessage,放5个, 能帮我用mybatis-plus写个关于WmsMessage类的自动增加吗,不要写mapper和sql,业务写在service
时间: 2024-03-12 12:48:40 浏览: 126
Mybatis实体类和表映射问题(推荐)
好的,根据您的需求,我可以给您提供以下代码实现:
```java
@Service
public class WmsMessageService extends ServiceImpl<WmsMessageMapper, WmsMessage> {
@Autowired
private WmsStoreInterOrderMapper wmsStoreInterOrderMapper;
@Autowired
private SysUserRoleRelMapper sysUserRoleRelMapper;
public void autoAddWmsMessage() {
// 获取最新的WmsStoreInterOrder数据
WmsStoreInterOrder latestWmsStoreInterOrder = wmsStoreInterOrderMapper.getLatestWmsStoreInterOrder();
if (latestWmsStoreInterOrder == null) {
// WmsStoreInterOrder表没有数据,直接返回
return;
}
// 获取roleId等于4的userId列表
List<Long> userIdList = sysUserRoleRelMapper.getUserIdListByRoleId(4L);
if (userIdList.isEmpty()) {
// 没有符合条件的数据,直接返回
return;
}
// 构建WmsMessage对象列表
List<WmsMessage> wmsMessageList = new ArrayList<>();
for (Long userId : userIdList) {
WmsMessage wmsMessage = new WmsMessage();
wmsMessage.setUserId(userId);
wmsMessage.setRoleId(4L);
wmsMessage.setInterOrderId(latestWmsStoreInterOrder.getId());
wmsMessage.setInterTime(latestWmsStoreInterOrder.getInterTime());
wmsMessage.setStatus(0);
wmsMessageList.add(wmsMessage);
}
// 批量插入WmsMessage数据
saveBatch(wmsMessageList);
}
}
```
其中,`getLatestWmsStoreInterOrder()`方法是在`WmsStoreInterOrderMapper`中自定义的方法,用于获取WmsStoreInterOrder表的最新数据:
```java
public interface WmsStoreInterOrderMapper extends BaseMapper<WmsStoreInterOrder> {
/**
* 获取WmsStoreInterOrder表的最新数据
*/
WmsStoreInterOrder getLatestWmsStoreInterOrder();
}
```
`getUserIdListByRoleId()`方法是在`SysUserRoleRelMapper`中自定义的方法,用于获取roleId等于4的userId列表:
```java
public interface SysUserRoleRelMapper extends BaseMapper<SysUserRoleRel> {
/**
* 获取roleId等于4的userId列表
*/
List<Long> getUserIdListByRoleId(Long roleId);
}
```
这样,在需要自动增加WmsMessage数据的时候,只需要调用`autoAddWmsMessage()`方法即可。
阅读全文