/* * Copyright (c) 2018-2025, ztt All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the pig4cloud.com developer nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * Author: ztt */ package com.chinaztt.mes.warehouse.service.impl; import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.chinaztt.mes.common.numgen.NumberGenerator; import com.chinaztt.mes.warehouse.dto.PalletTransportsDTO; import com.chinaztt.mes.warehouse.entity.PalletTransports; import com.chinaztt.mes.warehouse.entity.PalletTransportsDetail; import com.chinaztt.mes.warehouse.entity.PalletTransportsMaterial; import com.chinaztt.mes.warehouse.entity.PalletTransportsOptask; import com.chinaztt.mes.warehouse.mapper.PalletTransportsDetailMapper; import com.chinaztt.mes.warehouse.mapper.PalletTransportsMapper; import com.chinaztt.mes.warehouse.mapper.PalletTransportsMaterialMapper; import com.chinaztt.mes.warehouse.mapper.PalletTransportsOptaskMapper; import com.chinaztt.mes.warehouse.service.PalletTransportsService; import com.chinaztt.mes.warehouse.state.constant.PalletTransportsState; import com.chinaztt.mes.warehouse.state.pallettransportsdetail.PalletTransportsDetailStateStringValues; import com.chinaztt.ztt.common.core.util.R; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.util.List; /** * 货盘运输任务主表 * * @author shz * @date 2022-05-24 17:17:26 */ @Transactional(rollbackFor = Exception.class) @Service @AllArgsConstructor public class PalletTransportsServiceImpl extends ServiceImpl implements PalletTransportsService { private NumberGenerator numberGenerator; private PalletTransportsMaterialMapper palletTransportsMaterialMapper; private PalletTransportsOptaskMapper palletTransportsOptaskMapper; private PalletTransportsDetailMapper palletTransportsDetailMapper; @Override public IPage getPage(Page page, QueryWrapper gen) { return this.baseMapper.getPage(page, gen); } @Override public boolean fullSave(PalletTransports palletTransports) { palletTransports.setTransportsNo(numberGenerator.generateNumberWithPrefix(PalletTransports.DIGIT, PalletTransports.PREFIX, PalletTransports::getTransportsNo)); return this.save(palletTransports); } @Override public PalletTransportsDTO getTransportsById(Long id) { return this.baseMapper.getTransportsById(id); } /** * 批量添加货盘运输物料需求 * * @param palletTransportsMaterialList 货盘运输物料需求 * @param ids 工单id * @return */ @Override public R batchSave(String ids, List palletTransportsMaterialList) { try { PalletTransports palletTransports = new PalletTransports(); palletTransports.setTransportsNo(numberGenerator.generateNumberWithPrefix(PalletTransports.DIGIT, PalletTransports.PREFIX, PalletTransports::getTransportsNo)); baseMapper.insert(palletTransports); palletTransportsMaterialList.forEach(palletTransportsMaterial -> { //移库数量是0 palletTransportsMaterial.setTransferQuantity(BigDecimal.ZERO); palletTransportsMaterial.setSurplusQuantity(palletTransportsMaterial.getDemandQuantity()); palletTransportsMaterial.setTransportsId(palletTransports.getId()); palletTransportsMaterialMapper.insert(palletTransportsMaterial); }); String[] idsArray = ids.split("_"); for (String id : idsArray) { PalletTransportsOptask palletTransportsOptask = new PalletTransportsOptask(); palletTransportsOptask.setOperationTaskId(new Long(id)); palletTransportsOptask.setTransportsId(palletTransports.getId()); palletTransportsOptaskMapper.insert(palletTransportsOptask); } return R.ok(); } catch (Exception e) { return R.failed("新增异常"); } } @Override public boolean delAll(Long id) { List materialList = palletTransportsMaterialMapper.selectList(Wrappers.lambdaQuery().eq(PalletTransportsMaterial::getTransportsId, id)); if(CollectionUtil.isNotEmpty(materialList)){ throw new RuntimeException("有物料需求记录,无法删除"); } baseMapper.deleteById(id); palletTransportsMaterialMapper.delete(Wrappers.lambdaQuery().eq(PalletTransportsMaterial::getTransportsId, id)); palletTransportsOptaskMapper.delete(Wrappers.lambdaQuery().eq(PalletTransportsOptask::getTransportsId, id)); return true; } }