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<WaveMapper, Wave> 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<PickOutDto> pickOutDtosk, Long userId, Long hostId) {
|
HashSet<String> orderIds = new HashSet<>();
|
/**
|
* 控管
|
*/
|
if (Cools.isEmpty(pickOutDtosk)) {
|
throw new CoolException("数据传输错误,请联系管理员");
|
}
|
Wave wave = waveService.selectOne(new EntityWrapper<Wave>()
|
.eq("id", pickOutDtosk.get(0).getWaveId()));
|
List<WaveDetl> waveDetls = waveDetlService.selectList(new EntityWrapper<WaveDetl>()
|
.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<Pickout>()
|
.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<String>(orderIds)) {
|
orderService.changeSettleTo12(s);
|
}
|
/**
|
* 更改波次单状态,从"待处理"到"处理中"
|
*/
|
wave.setStatus((short) 1);
|
waveService.update(wave,new EntityWrapper<Wave>()
|
.eq("id",wave.getId()));
|
|
|
return R.ok();
|
}
|
|
@Override
|
public String getCurrNum(String waveNo) {
|
return this.baseMapper.getCurrNum(waveNo);
|
}
|
}
|