package com.zy.asrs.task.handler;
|
|
import com.baomidou.mybatisplus.mapper.EntityWrapper;
|
import com.baomidou.mybatisplus.mapper.Wrapper;
|
import com.core.common.Cools;
|
import com.zy.asrs.entity.*;
|
import com.zy.asrs.service.AgvLocDetlService;
|
import com.zy.asrs.service.AgvLocMastService;
|
import com.zy.asrs.service.OrderService;
|
import com.zy.asrs.task.AbstractHandler;
|
import com.zy.asrs.task.core.ReturnT;
|
import com.zy.asrs.utils.Utils;
|
import com.zy.common.model.LocDto;
|
import com.zy.common.model.OrderDto;
|
import com.zy.common.model.TaskDto;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.Optional;
|
import java.util.stream.Collectors;
|
|
/**
|
* Created by vincent on 2020/7/7
|
*/
|
@Service
|
public class AutoOrderHandler extends AbstractHandler<String> {
|
|
@Autowired
|
private OrderService orderService;
|
|
@Autowired
|
private AgvLocMastService agvLocMastService;
|
|
@Autowired
|
private AgvLocDetlService agvLocDetlService;
|
|
@Transactional
|
public ReturnT<String> start(Order order) {
|
// double issued = Optional.of(orderDetl.getAnfme() - orderDetl.getQty()).orElse(0.0D);
|
// if (issued <= 0.0D) {
|
// continue;
|
// }
|
//
|
//
|
// Double issued = orderDetl.getAnfme() - orderDetl.getQty();
|
// //根据物料号和批次找到对应的库存,并且按照修改时间排序
|
// Wrapper<AgvLocDetl> wrapper = new EntityWrapper<AgvLocDetl>().eq("matnr", orderDetl.getMatnr()).orderBy("modi_time");
|
//
|
// wapperSetCondition(wrapper, "three_code", orderDetl.getThreeCode());
|
// List<AgvLocDetl> agvLocDetls = agvLocDetlService.selectList(wrapper);
|
//
|
// for (AgvLocDetl agvLocDetl : agvLocDetls) {
|
// //判断当前库位货物是否F在库
|
// AgvLocMast agvLocMast = agvLocMastService.selectById(agvLocDetl.getLocNo());
|
// if (!"F".equals(agvLocMast.getLocSts())) {
|
// continue;
|
// }
|
// //当前库位的库存量
|
// double anfme = agvLocDetl.getAnfme();
|
// //int ioType = anfme > issued ? 101 : 103;
|
// anfme = anfme > issued ? issued : anfme;
|
// //用于显示工作明细档的订单号
|
// String orderNoWrkDtel = Utils.getOrderNo(orderNo, anfme);
|
// //更新订单数量
|
// orderNo = Utils.orderMergeUpdate(orderNo, anfme);
|
// LocDto locDto = new LocDto(agvLocDetl.getLocNo(), agvLocDetl.getMatnr(), agvLocDetl.getMaktx(), agvLocDetl.getBatch(), orderNoWrkDtel, anfme, agvLocDetl.getProcessSts());
|
// locDto.setCsocode(csocode);
|
// locDto.setIsoseq(isoseq);
|
// locDto.setContainerCode(agvLocDetl.getSuppCode());
|
// locDto.setProcessSts(agvLocDetl.getProcessSts());
|
// //当前库位所处楼层
|
// int floor = Integer.parseInt(agvLocDetl.getLocNo().split("F")[1]);
|
// //locDto.setAgvStaNos(queryAgvStaNosByFloor(floor));
|
// locDto.setAgvStaNos(agvBasDevpService.selectCacheShelvesStationCodeByLocType(agvLocMast.getLocType1(), floor));
|
// locDtoList.add(locDto);
|
//
|
// issued -= anfme;
|
// }
|
//
|
//
|
// // 订单预校验 ===>> 1.订单状态; 2.订单带出数量
|
// List<OrderDto> orderDtos = orderPreVerification(locDtos);
|
//
|
// List<TaskDto> taskDtos = new ArrayList<>();
|
// List<TaskDto> agvTaskDtos = new ArrayList<>();
|
// generateTaskDto(locDtos, taskDtos, agvTaskDtos);
|
//
|
// //生成AGV出库任务
|
// agvWorkService.stockOutWrkMast(agvTaskDtos, getUserId());
|
//
|
// // 生成出库任务
|
// taskDtos.stream().map(TaskDto::getLocNo).distinct().collect(Collectors.toList());
|
// for (TaskDto taskDto : taskDtos) {
|
// BasDevp staNo = basDevpService.checkSiteStatus(taskDto.getStaNo());
|
// workService.stockOut(staNo, taskDto, getUserId());
|
// }
|
return SUCCESS;
|
}
|
|
|
private void wapperSetCondition(Wrapper wrapper, String column, String condition) {
|
if (Cools.isEmpty(condition)) {
|
wrapper.andNew().eq(column, "").or().isNull(column);
|
} else {
|
wrapper.andNew().eq(column, condition);
|
}
|
}
|
}
|