package cn.iocoder.yudao.module.mes.service.wm.equipmentreceipt;
|
|
import cn.hutool.core.util.ObjUtil;
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
import cn.iocoder.yudao.module.mes.controller.admin.wm.equipmentreceipt.vo.line.MesWmEquipmentReceiptLinePageReqVO;
|
import cn.iocoder.yudao.module.mes.controller.admin.wm.equipmentreceipt.vo.line.MesWmEquipmentReceiptLineSaveReqVO;
|
import cn.iocoder.yudao.module.mes.dal.dataobject.dv.machinery.MesDvMachineryDO;
|
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.equipmentreceipt.MesWmEquipmentReceiptLineDO;
|
import cn.iocoder.yudao.module.mes.dal.mysql.wm.equipmentreceipt.MesWmEquipmentReceiptLineMapper;
|
import cn.iocoder.yudao.module.mes.service.dv.machinery.MesDvMachineryService;
|
import jakarta.annotation.Resource;
|
import org.springframework.context.annotation.Lazy;
|
import org.springframework.stereotype.Service;
|
import org.springframework.validation.annotation.Validated;
|
|
import java.math.BigDecimal;
|
import java.util.List;
|
|
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
|
|
/**
|
* MES 设备入库单行 Service 实现类
|
*/
|
@Service
|
@Validated
|
public class MesWmEquipmentReceiptLineServiceImpl implements MesWmEquipmentReceiptLineService {
|
|
@Resource
|
private MesWmEquipmentReceiptLineMapper equipmentReceiptLineMapper;
|
@Resource
|
private MesDvMachineryService machineryService;
|
@Resource
|
@Lazy
|
private MesWmEquipmentReceiptService equipmentReceiptService;
|
|
@Override
|
public Long createEquipmentReceiptLine(MesWmEquipmentReceiptLineSaveReqVO createReqVO) {
|
// 校验入库单可编辑
|
equipmentReceiptService.validateEquipmentReceiptEditable(createReqVO.getReceiptId());
|
// 校验设备存在且已关联物料
|
validateMachineryHasItem(createReqVO.getMachineryId());
|
// 校验数量
|
validateQuantity(createReqVO.getQuantity());
|
|
MesWmEquipmentReceiptLineDO line = BeanUtils.toBean(createReqVO, MesWmEquipmentReceiptLineDO.class);
|
equipmentReceiptLineMapper.insert(line);
|
return line.getId();
|
}
|
|
@Override
|
public void updateEquipmentReceiptLine(MesWmEquipmentReceiptLineSaveReqVO updateReqVO) {
|
// 校验行存在
|
validateEquipmentReceiptLineExists(updateReqVO.getId());
|
// 校验入库单可编辑
|
equipmentReceiptService.validateEquipmentReceiptEditable(updateReqVO.getReceiptId());
|
// 校验设备存在且已关联物料
|
validateMachineryHasItem(updateReqVO.getMachineryId());
|
// 校验数量
|
validateQuantity(updateReqVO.getQuantity());
|
|
MesWmEquipmentReceiptLineDO updateObj = BeanUtils.toBean(updateReqVO, MesWmEquipmentReceiptLineDO.class);
|
equipmentReceiptLineMapper.updateById(updateObj);
|
}
|
|
@Override
|
public void deleteEquipmentReceiptLine(Long id) {
|
// 校验行存在
|
MesWmEquipmentReceiptLineDO line = validateEquipmentReceiptLineExists(id);
|
// 校验入库单可编辑
|
equipmentReceiptService.validateEquipmentReceiptEditable(line.getReceiptId());
|
|
equipmentReceiptLineMapper.deleteById(id);
|
}
|
|
@Override
|
public void deleteByReceiptId(Long receiptId) {
|
equipmentReceiptLineMapper.delete(MesWmEquipmentReceiptLineDO::getReceiptId, receiptId);
|
}
|
|
@Override
|
public MesWmEquipmentReceiptLineDO getEquipmentReceiptLine(Long id) {
|
return equipmentReceiptLineMapper.selectById(id);
|
}
|
|
@Override
|
public List<MesWmEquipmentReceiptLineDO> getEquipmentReceiptLineListByReceiptId(Long receiptId) {
|
return equipmentReceiptLineMapper.selectListByReceiptId(receiptId);
|
}
|
|
@Override
|
public PageResult<MesWmEquipmentReceiptLineDO> getEquipmentReceiptLinePage(MesWmEquipmentReceiptLinePageReqVO pageReqVO) {
|
return equipmentReceiptLineMapper.selectPage(pageReqVO);
|
}
|
|
private MesWmEquipmentReceiptLineDO validateEquipmentReceiptLineExists(Long id) {
|
MesWmEquipmentReceiptLineDO line = equipmentReceiptLineMapper.selectById(id);
|
if (line == null) {
|
throw exception(WM_EQUIP_RECEIPT_LINE_NOT_EXISTS);
|
}
|
return line;
|
}
|
|
private void validateMachineryHasItem(Long machineryId) {
|
machineryService.validateMachineryExists(machineryId);
|
MesDvMachineryDO machinery = machineryService.getMachinery(machineryId);
|
if (machinery == null || machinery.getItemId() == null) {
|
throw exception(WM_EQUIP_RECEIPT_MACHINERY_NOT_VALID);
|
}
|
}
|
|
private void validateQuantity(BigDecimal quantity) {
|
if (quantity == null || quantity.compareTo(BigDecimal.ZERO) <= 0) {
|
throw exception(WM_EQUIP_RECEIPT_QUANTITY_INVALID);
|
}
|
}
|
|
}
|