liyong
4 天以前 be5783c8a7e13bbc76d33c95643d75779cce21db
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
package cn.iocoder.yudao.module.mes.service.wm.miscreceipt;
 
import cn.hutool.core.collection.CollUtil;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.mes.controller.admin.wm.miscreceipt.vo.line.MesWmMiscReceiptLineSaveReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.miscreceipt.MesWmMiscReceiptDetailDO;
import cn.iocoder.yudao.module.mes.dal.mysql.wm.miscreceipt.MesWmMiscReceiptDetailMapper;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
 
import java.util.List;
 
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.WM_MISC_RECEIPT_DETAIL_NOT_EXISTS;
 
/**
 * MES 杂项入库明细 Service 实现类
 */
@Service
@Validated
public class MesWmMiscReceiptDetailServiceImpl implements MesWmMiscReceiptDetailService {
 
    @Resource
    private MesWmMiscReceiptDetailMapper receiptDetailMapper;
 
    @Override
    public Long createMiscReceiptDetail(MesWmMiscReceiptLineSaveReqVO createReqVO) {
        MesWmMiscReceiptDetailDO detail = BeanUtils.toBean(createReqVO, MesWmMiscReceiptDetailDO.class);
        detail.setId(null); // 清空 id,让数据库自动生成
        detail.setLineId(createReqVO.getId()); // VO 的 id 就是 lineId
        receiptDetailMapper.insert(detail);
        return detail.getId();
    }
 
    @Override
    public void updateMiscReceiptDetail(MesWmMiscReceiptLineSaveReqVO updateReqVO) {
        // 基于 lineId 查询唯一的 detail 记录(VO 的 id 字段是 lineId)
        List<MesWmMiscReceiptDetailDO> details = receiptDetailMapper.selectListByLineId(updateReqVO.getId());
        if (CollUtil.isEmpty(details)) {
            return;
        }
 
        // 更新 detail(应该只有一条记录)
        MesWmMiscReceiptDetailDO updateObj = BeanUtils.toBean(updateReqVO, MesWmMiscReceiptDetailDO.class);
        updateObj.setId(details.get(0).getId()); // 使用查询到的 detail id
        updateObj.setLineId(updateReqVO.getId()); // VO 的 id 就是 lineId
        receiptDetailMapper.updateById(updateObj);
    }
 
    @Override
    public void deleteMiscReceiptDetailByReceiptId(Long receiptId) {
        receiptDetailMapper.deleteByReceiptId(receiptId);
    }
 
    @Override
    public void deleteMiscReceiptDetailByLineId(Long lineId) {
        receiptDetailMapper.deleteByLineId(lineId);
    }
 
    @Override
    public void validateMiscReceiptDetailExists(Long id) {
        if (receiptDetailMapper.selectById(id) == null) {
            throw exception(WM_MISC_RECEIPT_DETAIL_NOT_EXISTS);
        }
    }
 
}