huangjiayang
2025-05-16 af9cf36e3b1ce59debb09effb579f5722b1c525e
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
package com.aps.core.service.impl;
 
import java.math.BigDecimal;
import java.util.List;
 
import cn.hutool.core.util.IdUtil;
import com.aps.common.core.utils.DateUtils;
import com.aps.common.security.utils.SecurityUtils;
import com.aps.core.domain.*;
import com.aps.core.mapper.ApsMaterialStorageManagementMapper;
import jakarta.annotation.Resource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.aps.core.mapper.ApsPlateStandardRequireBomStockDetailMapper;
import com.aps.core.service.IApsPlateStandardRequireBomStockDetailService;
import org.springframework.transaction.annotation.Transactional;
 
/**
 * ApsPlateStandardRequireBomStockDetailService业务层处理
 * 
 * @author zhl
 * @date 2025-05-06
 */
@Service
public class ApsPlateStandardRequireBomStockDetailServiceImpl implements IApsPlateStandardRequireBomStockDetailService 
{
    @Autowired
    private ApsPlateStandardRequireBomStockDetailMapper apsPlateStandardRequireBomStockDetailMapper;
    @Resource
    ApsMaterialStorageManagementMapper itemStorageMapper;
 
    @Resource
    ApsPlateStandardRequireBomStockDetailMapper plateBomStockDetailMapper;
    /**
     * 查询ApsPlateStandardRequireBomStockDetail
     * 
     * @param id ApsPlateStandardRequireBomStockDetail主键
     * @return ApsPlateStandardRequireBomStockDetail
     */
    @Override
    public ApsPlateStandardRequireBomStockDetail selectApsPlateStandardRequireBomStockDetailById(Long id)
    {
        return apsPlateStandardRequireBomStockDetailMapper.selectApsPlateStandardRequireBomStockDetailById(id);
    }
 
    /**
     * 查询ApsPlateStandardRequireBomStockDetail列表
     * 
     * @param apsPlateStandardRequireBomStockDetail ApsPlateStandardRequireBomStockDetail
     * @return ApsPlateStandardRequireBomStockDetail
     */
    @Override
    public List<ApsPlateStandardRequireBomStockDetail> selectApsPlateStandardRequireBomStockDetailList(ApsPlateStandardRequireBomStockDetail apsPlateStandardRequireBomStockDetail)
    {
        return apsPlateStandardRequireBomStockDetailMapper.selectApsPlateStandardRequireBomStockDetailList(apsPlateStandardRequireBomStockDetail);
    }
 
    /**
     * 新增ApsPlateStandardRequireBomStockDetail
     * 
     * @param apsPlateStandardRequireBomStockDetail ApsPlateStandardRequireBomStockDetail
     * @return 结果
     */
    @Override
    public int insertApsPlateStandardRequireBomStockDetail(ApsPlateStandardRequireBomStockDetail apsPlateStandardRequireBomStockDetail)
    {
        apsPlateStandardRequireBomStockDetail.setCreateTime(DateUtils.getNowDate());
        return apsPlateStandardRequireBomStockDetailMapper.insertApsPlateStandardRequireBomStockDetail(apsPlateStandardRequireBomStockDetail);
    }
 
    /**
     * 修改ApsPlateStandardRequireBomStockDetail
     * 
     * @param apsPlateStandardRequireBomStockDetail ApsPlateStandardRequireBomStockDetail
     * @return 结果
     */
    @Override
    public int updateApsPlateStandardRequireBomStockDetail(ApsPlateStandardRequireBomStockDetail apsPlateStandardRequireBomStockDetail)
    {
        apsPlateStandardRequireBomStockDetail.setUpdateTime(DateUtils.getNowDate());
        return apsPlateStandardRequireBomStockDetailMapper.updateApsPlateStandardRequireBomStockDetail(apsPlateStandardRequireBomStockDetail);
    }
 
    /**
     * 批量删除ApsPlateStandardRequireBomStockDetail
     * 
     * @param ids 需要删除的ApsPlateStandardRequireBomStockDetail主键
     * @return 结果
     */
    @Override
    public int deleteApsPlateStandardRequireBomStockDetailByIds(Long[] ids)
    {
        return apsPlateStandardRequireBomStockDetailMapper.deleteApsPlateStandardRequireBomStockDetailByIds(ids);
    }
 
    /**
     * 删除ApsPlateStandardRequireBomStockDetail信息
     * 
     * @param id ApsPlateStandardRequireBomStockDetail主键
     * @return 结果
     */
    @Override
    public int deleteApsPlateStandardRequireBomStockDetailById(Long id)
    {
        return apsPlateStandardRequireBomStockDetailMapper.deleteApsPlateStandardRequireBomStockDetailById(id);
    }
 
 
    /**
     * 计算物料剩余库存 并保存物料剩余库存明细。
     * */
    @Transactional
    @Override
    public void saveStorageAndDetail(ApsMaterialStorageManagement itemStorage, ApsPlatePlan plan, String bomLineId,
                                     String itemCode, String batchNum, BigDecimal deductionAmount,
                                     BigDecimal afterStockAmount,Long requireId
            ,List<ApsPlateStandardRequireBomStockDetail> stockDetailsList){
 
 
        //itemStorageMapper.updateMaterialStorageByVersion(itemStorage.getId(), afterStockAmount,itemStorage.getVersion());
        /*记录扣减明细*/
        ApsPlateStandardRequireBomStockDetail bomStockDetail = ApsPlateStandardRequireBomStockDetail.builder()
                .id(IdUtil.getSnowflakeNextId())
                .requireId(requireId)
                .requireTrackId(plan.getRequireId())
                .bomLineId(bomLineId)
                .bomLineCode(itemCode)
                .beforeStockAmount(itemStorage.getRemainderStock())
                .deductionAmount(deductionAmount)
                .afterStockAmount(afterStockAmount)
                .batchNumber(batchNum)
                .orgCode(itemStorage.getApplicableFactories())
                .delFlag("0")
                .build();
        bomStockDetail.setCreateBy(SecurityUtils.getUsername());
        bomStockDetail.setCreateTime(DateUtils.getNowDate());
 
        stockDetailsList.add(bomStockDetail);
       // plateBomStockDetailMapper.insertApsPlateStandardRequireBomStockDetail(bomStockDetail);
        /*更新内存中物料剩余库存*/
        itemStorage.setRemainderStock(afterStockAmount);
        if(null== itemStorage.getVersion()){
            itemStorage.setVersion(1);
        }else{
            itemStorage.setVersion(itemStorage.getVersion()+1);
        }
    }
}