package org.jeecg.modules.cms.service.impl; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.shiro.SecurityUtils; import org.jeecg.common.system.vo.LoginUser; import org.jeecg.common.util.oConvertUtils; import org.jeecg.modules.cms.entity.CuttingInventory; import org.jeecg.modules.cms.mapper.CuttingInventoryMapper; import org.jeecg.modules.cms.service.ICuttingInventoryService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Collections; import java.util.Date; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * @Description: 刀具库存 * @Author: jeecg-boot * @Date: 2025-07-28 * @Version: V1.0 */ @Service public class CuttingInventoryServiceImpl extends ServiceImpl implements ICuttingInventoryService { @Override public IPage> statisticsByCuttingIdAndStatus(Page> page) { // 执行分页统计查询 IPage> result = baseMapper.statisticsByCuttingIdAndStatus(page); return result; } @Override @Transactional(rollbackFor = Exception.class) public void updateStatus(List ids, String status) { if (ids != null && !ids.isEmpty() && StringUtils.isNotBlank(status)) { // UpdateWrapper updateWrapper = new UpdateWrapper<>(); // updateWrapper.in("id", ids); // updateWrapper.set("inventory_status", status); // 根据实际数据库字段名调整 LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); String username = "System"; // 默认用户名 if (user != null) { username = oConvertUtils.getString(user.getUsername(), "System"); } UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.in("id", ids); updateWrapper.set("inventory_status", status); updateWrapper.set("update_time", new Date()); updateWrapper.set("update_by", username); this.update(updateWrapper); } } @Override public void restoreStatus(List ids) { if (ids != null && !ids.isEmpty()) { // 获取当前登录用户信息 LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); String username = "System"; // 默认用户名 if (user != null) { username = oConvertUtils.getString(user.getUsername(), "System"); } // 方式1: 查询当前状态并根据状态决定恢复到哪个状态 List inventoryList = this.listByIds(ids); List toRestoreIds = inventoryList.stream() .filter(inv -> "待出库".equals(inv.getInventoryStatus())) // 出库单作废的情况下,只会有待出库退回正常状态的情况。 .map(CuttingInventory::getId) .collect(Collectors.toList()); if (!toRestoreIds.isEmpty()) { UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.in("id", toRestoreIds); updateWrapper.set("inventory_status", "在库"); updateWrapper.set("update_time", new Date()); updateWrapper.set("update_by", username); this.update(updateWrapper); } } } }