package zy.cloud.wms.manager.service.impl; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; import com.core.common.R; import com.core.exception.CoolException; import org.springframework.beans.factory.annotation.Autowired; import zy.cloud.wms.common.model.PickOutDto; import zy.cloud.wms.manager.entity.*; import zy.cloud.wms.manager.mapper.WaveMapper; import zy.cloud.wms.manager.service.*; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import org.springframework.stereotype.Service; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashSet; import java.util.List; @Service("waveService") public class WaveServiceImpl extends ServiceImpl implements WaveService { @Autowired private WaveDetlService waveDetlService; @Autowired private OrderService orderService; @Autowired private WaveService waveService; @Autowired private PickoutService pickoutService; @Autowired private PickoutDetlService pickoutDetlService; @Autowired private MatService matService; /** * 通过波次生成拣货单 * @param * @param userId * @param hostId */ @Override public R createOut(List pickOutDtosk, Long userId, Long hostId) { HashSet orderIds = new HashSet<>(); /** * 控管 */ if (Cools.isEmpty(pickOutDtosk)) { throw new CoolException("数据传输错误,请联系管理员"); } Wave wave = waveService.selectOne(new EntityWrapper() .eq("id", pickOutDtosk.get(0).getWaveId())); List waveDetls = waveDetlService.selectList(new EntityWrapper() .eq("wave_id", wave.getId())); /** * 生成拣货单 */ Pickout pickout = new Pickout(); pickout.setHostId(hostId); pickout.setUserId(userId); pickout.setWrkNo("PO-"+new SimpleDateFormat("yyyyMMddHHmmss").format(new Date())); pickout.setWrkSts(1L); pickout.setCreateBy(userId.intValue()); pickout.setUpdateBy(userId.intValue()); pickout.setOrderQty(wave.getOrdersQty()); pickout.setWaveNo(wave.getWaveNo()); pickoutService.insert(pickout); for (PickOutDto pickOutDto : pickOutDtosk) { Mat mat = matService.selectByMatnr(hostId, pickOutDto.getMatnr()); if (Cools.isEmpty(mat)) { pickoutService.delete(new EntityWrapper() .eq("id",pickout.getId())); throw new CoolException("查询不到该物料明细"); } PickoutDetl pickoutDetl = new PickoutDetl(); pickoutDetl.setHeadId(pickout.getId()); pickoutDetl.setNodeId(pickOutDto.getNodeId().longValue()); pickoutDetl.setNodeName(pickOutDto.getLocNo()); pickoutDetl.setAnfme(pickOutDto.getAnfme().doubleValue()); pickoutDetl.setMatnr(pickOutDto.getMatnr()); pickoutDetl.setMaktx(mat.getMaktx()); pickoutDetl.setName(mat.getName()); pickoutDetl.setSpecs(mat.getSpecs()); pickoutDetl.setModel(mat.getModel()); pickoutDetl.setUnit(mat.getUnit()); pickoutDetl.setPrice(mat.getPrice()); pickoutDetl.setWeight(mat.getWeight()); pickoutDetl.setStatus(1); pickoutDetl.setCreateBy(userId.intValue()); pickoutDetl.setUpdateBy(userId.intValue()); pickoutDetl.setWrkNo(pickout.getWrkNo()); pickoutDetlService.insert(pickoutDetl); } /** * 更改出库单状态,从"生成波次"到"波次拣货中" */ for (WaveDetl waveDetl : waveDetls) { String orderNos = waveDetl.getOrderNos(); String[] split = orderNos.split(","); for (String s : split) { orderIds.add(s); } } for (String s : new ArrayList(orderIds)) { orderService.changeSettleTo12(s); } /** * 更改波次单状态,从"待处理"到"处理中" */ wave.setStatus((short) 1); waveService.update(wave,new EntityWrapper() .eq("id",wave.getId())); return R.ok(); } }