package com.zy.asrs.task.handler;
|
|
import com.baomidou.mybatisplus.mapper.EntityWrapper;
|
import com.core.exception.CoolException;
|
import com.zy.asrs.entity.LocDetl;
|
import com.zy.asrs.entity.LocMast;
|
import com.zy.asrs.entity.Order;
|
import com.zy.asrs.entity.OrderDetl;
|
import com.zy.asrs.service.LocDetlService;
|
import com.zy.asrs.service.LocMastService;
|
import com.zy.asrs.service.OrderDetlService;
|
import com.zy.asrs.service.WorkService;
|
import com.zy.asrs.task.AbstractHandler;
|
import com.zy.asrs.task.core.ReturnT;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.util.HashSet;
|
import java.util.List;
|
import java.util.Set;
|
|
@Service
|
public class AutoReplenishmentHandler extends AbstractHandler<String> {
|
|
@Autowired
|
private OrderDetlService orderDetlService;
|
@Autowired
|
private LocDetlService locDetlService;
|
@Autowired
|
private LocMastService locMastService;
|
@Autowired
|
private WorkService workService;
|
|
@Transactional
|
public ReturnT<String> start(Order order) {
|
|
Set<String> locNos = pakoutLoc(order);
|
for (String locNo : locNos){
|
LocMast locMast = locMastService.selectByLoc(locNo);
|
if(!"F".equals(locMast.getLocSts())){
|
throw new CoolException("库位状态已变更");
|
}
|
//生成工作档
|
|
//生成工作档明细
|
//修改库位状态
|
}
|
|
|
return SUCCESS;
|
}
|
|
private Set<String> pakoutLoc(Order order){
|
//需要出库的库位
|
Set<String> locNos = new HashSet<>();
|
//根据订单生成四项库出库工作档
|
List<OrderDetl> orderDetlList = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("order_no", order.getOrderNo()));
|
orderDetlList.forEach(orderDetl -> {
|
String matnr = orderDetl.getMatnr();
|
Double orderAnfme = orderDetl.getAnfme();
|
|
List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>()
|
.eq("matnr", matnr)
|
.eq("loc_sts","F")
|
.groupBy("loc_no"));
|
for (LocDetl locDetl : locDetls){
|
String locNo = locDetl.getLocNo();
|
//订单待出数量减去库存数量
|
orderAnfme -= locDetl.getAnfme();
|
//添加待出库库位
|
locNos.add(locNo);
|
|
if(orderAnfme <= 0){
|
orderDetl.setQty(orderDetl.getAnfme() - orderAnfme);
|
orderDetlService.updateById(orderDetl);
|
break;
|
}
|
}
|
|
});
|
|
return locNos;
|
}
|
|
public static void main(String[] args) {
|
for (int i=0; i<10; i++){
|
for (int y=0; y<10; y++){
|
System.out.println(i);
|
System.out.println(y);
|
if(y == 5){
|
break;
|
}
|
}
|
}
|
}
|
|
|
}
|