新火炬后端单体项目初始化代码
zhangherong
3 天以前 d4a7b1faad635b4817891185a4f471595db2eece
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
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<CuttingInventoryMapper, CuttingInventory> implements ICuttingInventoryService {
    @Override
    public IPage<Map<String, Object>> statisticsByCuttingIdAndStatus(Page<Map<String, Object>> page) {        // 执行分页统计查询
        IPage<Map<String, Object>> result = baseMapper.statisticsByCuttingIdAndStatus(page);
        return result;
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void updateStatus(List<String> ids, String status) {
        if (ids != null && !ids.isEmpty() && StringUtils.isNotBlank(status)) {
//            UpdateWrapper<CuttingInventory> 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<CuttingInventory> 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<String> 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<CuttingInventory> inventoryList = this.listByIds(ids);
            List<String> toRestoreIds = inventoryList.stream()
                    .filter(inv -> "待出库".equals(inv.getInventoryStatus())) // 只处理"待出库"状态的
                    .map(CuttingInventory::getId)
                    .collect(Collectors.toList());
            //FIXME:在报废前有多个状态,如果报废作废,刀具库存状态如何退回原来的状态。
            if (!toRestoreIds.isEmpty()) {
                UpdateWrapper<CuttingInventory> 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);
            }
        }
    }
 
 
 
}