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 { @Autowired private OrderDetlService orderDetlService; @Autowired private LocDetlService locDetlService; @Autowired private LocMastService locMastService; @Autowired private WorkService workService; @Transactional public ReturnT start(Order order) { Set locNos = pakoutLoc(order); for (String locNo : locNos){ LocMast locMast = locMastService.selectByLoc(locNo); if(!"F".equals(locMast.getLocSts())){ throw new CoolException("库位状态已变更"); } //生成工作档 //生成工作档明细 //修改库位状态 } return SUCCESS; } private Set pakoutLoc(Order order){ //需要出库的库位 Set locNos = new HashSet<>(); //根据订单生成四项库出库工作档 List orderDetlList = orderDetlService.selectList(new EntityWrapper().eq("order_no", order.getOrderNo())); orderDetlList.forEach(orderDetl -> { String matnr = orderDetl.getMatnr(); Double orderAnfme = orderDetl.getAnfme(); List locDetls = locDetlService.selectList(new EntityWrapper() .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; } } } } }