package cn.iocoder.yudao.module.mes.service.wm.miscissue; import cn.hutool.core.collection.CollUtil; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.mes.controller.admin.wm.miscissue.vo.line.MesWmMiscIssueLineSaveReqVO; import cn.iocoder.yudao.module.mes.dal.dataobject.wm.miscissue.MesWmMiscIssueDetailDO; import cn.iocoder.yudao.module.mes.dal.mysql.wm.miscissue.MesWmMiscIssueDetailMapper; 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_ISSUE_DETAIL_NOT_EXISTS; /** * MES 杂项出库明细 Service 实现类 */ @Service @Validated public class MesWmMiscIssueDetailServiceImpl implements MesWmMiscIssueDetailService { @Resource private MesWmMiscIssueDetailMapper issueDetailMapper; @Override public Long createMiscIssueDetail(MesWmMiscIssueLineSaveReqVO createReqVO) { MesWmMiscIssueDetailDO detail = BeanUtils.toBean(createReqVO, MesWmMiscIssueDetailDO.class); detail.setId(null); // 清空 id,让数据库自动生成 detail.setLineId(createReqVO.getId()); // VO 的 id 就是 lineId issueDetailMapper.insert(detail); return detail.getId(); } @Override public void updateMiscIssueDetail(MesWmMiscIssueLineSaveReqVO updateReqVO) { // 基于 lineId 查询唯一的 detail 记录(VO 的 id 字段是 lineId) List details = issueDetailMapper.selectListByLineId(updateReqVO.getId()); if (CollUtil.isEmpty(details)) { return; } // 更新 detail(应该只有一条记录) MesWmMiscIssueDetailDO updateObj = BeanUtils.toBean(updateReqVO, MesWmMiscIssueDetailDO.class); updateObj.setId(details.get(0).getId()); // 使用查询到的 detail id updateObj.setLineId(updateReqVO.getId()); // VO 的 id 就是 lineId issueDetailMapper.updateById(updateObj); } @Override public void deleteMiscIssueDetailByIssueId(Long issueId) { issueDetailMapper.deleteByIssueId(issueId); } @Override public void deleteMiscIssueDetailByLineId(Long lineId) { issueDetailMapper.deleteByLineId(lineId); } @Override public void validateMiscIssueDetailExists(Long id) { if (issueDetailMapper.selectById(id) == null) { throw exception(WM_MISC_ISSUE_DETAIL_NOT_EXISTS); } } }