no message
							parent
							
								
									8232d13869
								
							
						
					
					
						commit
						6592dee8f5
					
				| 
						 | 
				
			
			@ -96,7 +96,7 @@ public class BydAppController {
 | 
			
		|||
    @PostMapping("/containerIn")
 | 
			
		||||
    @Log("容器入场")
 | 
			
		||||
    @ApiOperation("容器入场")
 | 
			
		||||
    @PreAuthorize("@el.check('app:containerIn')")
 | 
			
		||||
    @AnonymousAccess
 | 
			
		||||
    public ResponseEntity<Object> containerIn(@RequestBody ContainerIn containerIn) {
 | 
			
		||||
        try {
 | 
			
		||||
            String containerCode = containerIn.getContainerCode();//容器号
 | 
			
		||||
| 
						 | 
				
			
			@ -112,7 +112,7 @@ public class BydAppController {
 | 
			
		|||
    @PostMapping("/containerOut")
 | 
			
		||||
    @Log("容器出场")
 | 
			
		||||
    @ApiOperation("容器出场")
 | 
			
		||||
    @PreAuthorize("@el.check('app:containerOut')")
 | 
			
		||||
    @AnonymousAccess
 | 
			
		||||
    public ResponseEntity<Object> containerOut(@RequestBody ContainerIn containerIn) {
 | 
			
		||||
        try {
 | 
			
		||||
            String containerCode = containerIn.getContainerCode();
 | 
			
		||||
| 
						 | 
				
			
			@ -158,7 +158,7 @@ public class BydAppController {
 | 
			
		|||
    }
 | 
			
		||||
 | 
			
		||||
    private ResponseEntity<Object> badRequest(String message) {
 | 
			
		||||
        return new ResponseEntity<>(ApiResult.fail(BAD_REQUEST.value(), message, ""), HttpStatus.BAD_REQUEST);
 | 
			
		||||
        return new ResponseEntity<>(message, HttpStatus.BAD_REQUEST);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private ResponseEntity<Object> successResponse(Object data) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -48,4 +48,6 @@ public interface StockRepository extends JpaRepository<Stock, Long>, JpaSpecific
 | 
			
		|||
    @Query(" from Stock s where s.point.code = :pointCode")
 | 
			
		||||
    Stock fingByPointCode(String pointCode);
 | 
			
		||||
 | 
			
		||||
    @Query(" from Stock s where s.point.area.code = :araeCode and s.enabled=true and s.status='FREE' and s.point.id>0 and s.point.status='USED'   ")
 | 
			
		||||
    List<Stock> findByEnmptyStock(String araeCode);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -204,4 +204,9 @@ public interface StockService {
 | 
			
		|||
     */
 | 
			
		||||
    void moveStock(TransTask transTask);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 成品下线呼叫空货架
 | 
			
		||||
     */
 | 
			
		||||
    void cpCallStock();
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -624,6 +624,36 @@ public class StockServiceImpl implements StockService {
 | 
			
		|||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    @Transactional(rollbackFor = Exception.class)
 | 
			
		||||
    public void cpCallStock() {
 | 
			
		||||
        // 尝试从成品入库缓存区查询空车
 | 
			
		||||
        List<Stock> emptyStockList = stockRepository.findByEnmptyStock(AreaNameDic.CPRKCHQ);
 | 
			
		||||
        if (emptyStockList.isEmpty()) {
 | 
			
		||||
            // 如果成品入库缓存区没有空车,则从入库区查询
 | 
			
		||||
            emptyStockList = stockRepository.findByEnmptyStock(AreaNameDic.CPRKQ);
 | 
			
		||||
            if (emptyStockList.isEmpty()) {
 | 
			
		||||
                throw new RuntimeException("成品入库区没有空车,请稍后再试!");
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        Stock emptyStock = emptyStockList.get(0);
 | 
			
		||||
        Point srcPoint = emptyStock.getPoint();
 | 
			
		||||
        Point endPoint = pointService.findByCode(null, BaseStatus.FREE, BaseStatus.BOX, AreaNameDic.CPXXQ, null, null);
 | 
			
		||||
        if (endPoint == null) {
 | 
			
		||||
            throw new RuntimeException("成品下线区没有空闲点位,请稍后再试!");
 | 
			
		||||
        }
 | 
			
		||||
        // 创建并下发任务
 | 
			
		||||
        AgvTask agvTask = new AgvTask(BizStatus.EMPTY_IN, emptyStock.getCode(), srcPoint.getCode(), endPoint.getCode(), BizStatus.OPEN, "RACK_MOVE");
 | 
			
		||||
        agvTaskService.create(agvTask);
 | 
			
		||||
        agvTaskService.sendAgvTaskImpl(agvTask);
 | 
			
		||||
 | 
			
		||||
        // 更新点位状态
 | 
			
		||||
        endPoint.setStatus(BaseStatus.USED);
 | 
			
		||||
        pointService.update(endPoint);
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 验证任务
 | 
			
		||||
     *
 | 
			
		||||
| 
						 | 
				
			
			@ -790,11 +820,6 @@ public class StockServiceImpl implements StockService {
 | 
			
		|||
        agvTaskService.sendAgvTaskImpl(agvTask);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private Task createTask(Item item, ItemKey itemKey, AsnDetail asnDetail, Stock stock, Point srcPoint, Point endPoint, AgvTask agvTask) {
 | 
			
		||||
        Task task = new Task(item, itemKey, asnDetail.getOrderNumber(), BizStatus.ASN, asnDetail, null, null, null, stock, null, srcPoint, endPoint, stock.getCode(), null, srcPoint == null ? null : srcPoint.getCode(), endPoint == null ? null : endPoint.getCode(), null, BizStatus.OPEN, asnDetail.getOrderQty(), null, null, item.getDept(), agvTask);
 | 
			
		||||
        taskRepository.save(task);
 | 
			
		||||
        return task;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void updateStockAndPoints(Stock stock, Point srcPoint, Point endPoint) {
 | 
			
		||||
        stock.setStatus(BaseStatus.USED);
 | 
			
		||||
| 
						 | 
				
			
			@ -861,27 +886,9 @@ public class StockServiceImpl implements StockService {
 | 
			
		|||
    }
 | 
			
		||||
 | 
			
		||||
    private boolean isRestrictedArea(String areaName) {
 | 
			
		||||
        return areaName.equals(AreaNameDic.CPXXQ) || areaName.equals(AreaNameDic.DXJRKQ);
 | 
			
		||||
        return areaName.equals(AreaNameDic.CPRKQ) || areaName.equals(AreaNameDic.CPRKCHQ) || areaName.equals(AreaNameDic.DXJRKQ);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void handleFullContainer(Stock stock, Point point, String itemCode) {
 | 
			
		||||
        Item item = validateItem(itemCode);//验证物料
 | 
			
		||||
        clearInventory(stock);//清空库存
 | 
			
		||||
        AsnDetail asnDetail = asnDetailService.createAsnDetail(item, stock);
 | 
			
		||||
        ItemKey itemKey = itemKeyService.getItemKey(item, asnDetail.getPropC1(), asnDetail.getOrderNumber());
 | 
			
		||||
        Task task = taskService.createTask(item, itemKey, asnDetail, stock, point);
 | 
			
		||||
 | 
			
		||||
        task.setMoveQty(task.getPlanQty());
 | 
			
		||||
        taskService.update(task);
 | 
			
		||||
 | 
			
		||||
        inventoryService.updateInventory(task, stock);
 | 
			
		||||
 | 
			
		||||
        point.setStatus(BaseStatus.USED);
 | 
			
		||||
        pointService.update(point);
 | 
			
		||||
        stock.setStatus(BaseStatus.USED);
 | 
			
		||||
        stock.setPoint(point);
 | 
			
		||||
        update(stock);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 清空库存
 | 
			
		||||
| 
						 | 
				
			
			@ -897,7 +904,7 @@ public class StockServiceImpl implements StockService {
 | 
			
		|||
    }
 | 
			
		||||
 | 
			
		||||
    private void handleEmptyContainer(Stock stock, Point point) {
 | 
			
		||||
            point.setStatus(BaseStatus.USED);
 | 
			
		||||
        point.setStatus(BaseStatus.USED);
 | 
			
		||||
        pointService.update(point);
 | 
			
		||||
        stock.setStatus(BaseStatus.FREE);
 | 
			
		||||
        stock.setPoint(point);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -72,9 +72,13 @@ public class Pick extends BaseEntity implements Serializable {
 | 
			
		|||
    @OneToOne
 | 
			
		||||
    @JoinColumn(name = "`point_id`")
 | 
			
		||||
    @ApiModelProperty(value = "备料点位")
 | 
			
		||||
    @NotNull
 | 
			
		||||
    private Point point;
 | 
			
		||||
 | 
			
		||||
    @OneToOne
 | 
			
		||||
    @JoinColumn(name = "`call_point_id`")
 | 
			
		||||
    @ApiModelProperty(value = "叫料点位")
 | 
			
		||||
    private Point callPoint;
 | 
			
		||||
 | 
			
		||||
    @Column(name = "`is_call`")
 | 
			
		||||
    @ApiModelProperty(value = "是否叫料")
 | 
			
		||||
    private Boolean isCall;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -34,5 +34,5 @@ public interface GdRepository extends JpaRepository<Gd, Long>, JpaSpecificationE
 | 
			
		|||
     * @return
 | 
			
		||||
     */
 | 
			
		||||
    @Query(value = " FROM Gd g WHERE g.code=:code  ")
 | 
			
		||||
    Gd findByGdList(String code);
 | 
			
		||||
    Gd findByGdCode(String code);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -70,6 +70,11 @@ public class PickDto implements Serializable {
 | 
			
		|||
     */
 | 
			
		||||
    private Point point;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 叫点位
 | 
			
		||||
     */
 | 
			
		||||
    private Point callPoint;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 是否叫料
 | 
			
		||||
     */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -176,7 +176,7 @@ public class GdServiceImpl implements GdService {
 | 
			
		|||
     * @param yclbl -> 备料参数
 | 
			
		||||
     */
 | 
			
		||||
    private void checkIfGdExists(Yclbl yclbl) {
 | 
			
		||||
        Gd gd = gdRepository.findByGdList(yclbl.getOrderNo());
 | 
			
		||||
        Gd gd = gdRepository.findByGdCode(yclbl.getOrderNo());
 | 
			
		||||
        if (gd != null) {
 | 
			
		||||
            throw new IllegalArgumentException(yclbl.getOrderNo() + "备料工单已存在!");
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -15,6 +15,8 @@
 | 
			
		|||
 */
 | 
			
		||||
package com.youchain.businessdata.service.impl;
 | 
			
		||||
 | 
			
		||||
import com.youchain.basicdata.domain.Point;
 | 
			
		||||
import com.youchain.basicdata.repository.PointRepository;
 | 
			
		||||
import com.youchain.businessdata.domain.*;
 | 
			
		||||
import com.youchain.businessdata.repository.AgvTaskRepository;
 | 
			
		||||
import com.youchain.businessdata.repository.TaskRepository;
 | 
			
		||||
| 
						 | 
				
			
			@ -50,6 +52,7 @@ public class PickServiceImpl implements PickService {
 | 
			
		|||
 | 
			
		||||
    private final PickRepository pickRepository;
 | 
			
		||||
    private final TaskRepository taskRepository;
 | 
			
		||||
    private final PointRepository pointRepository;
 | 
			
		||||
    private final AgvTaskRepository agvTaskRepository;
 | 
			
		||||
    private final AgvTaskService agvTaskService;
 | 
			
		||||
    private final PickMapper pickMapper;
 | 
			
		||||
| 
						 | 
				
			
			@ -135,10 +138,17 @@ public class PickServiceImpl implements PickService {
 | 
			
		|||
        if (pick == null) {
 | 
			
		||||
            throw new IllegalArgumentException(gdNo + "工单未备料,叫料失败!");
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        List<Point> pointList = pointRepository.findByCode(pointCode, null, null, null, null, null);
 | 
			
		||||
        if (pointList.isEmpty()) {
 | 
			
		||||
            throw new IllegalArgumentException(pointCode + "点位系统不存在,请维护!");
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (pick.getIsCall()) {
 | 
			
		||||
            throw new IllegalArgumentException(gdNo + "工单已叫料,请勿重复叫料!");
 | 
			
		||||
        }
 | 
			
		||||
        pick.setIsCall(true);
 | 
			
		||||
        pick.setCallPoint(pointList.get(0));
 | 
			
		||||
        pickRepository.save(pick);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -149,10 +159,19 @@ public class PickServiceImpl implements PickService {
 | 
			
		|||
        if (pick == null) {
 | 
			
		||||
            throw new IllegalArgumentException(gdNo + "工单未备料,叫料失败!");
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        List<Point> pointList = pointRepository.findByCode(pointCode, null, null, null, null, null);
 | 
			
		||||
        if (pointList.isEmpty()) {
 | 
			
		||||
            throw new IllegalArgumentException(pointCode + "点位系统不存在,请维护!");
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (pick.getIsCall()) {
 | 
			
		||||
            throw new IllegalArgumentException(gdNo + "工单已叫料,请勿重复叫料!");
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        pick.setIsCall(true);
 | 
			
		||||
        pick.setCallPoint(pointList.get(0));
 | 
			
		||||
        pickRepository.save(pick);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,5 +1,6 @@
 | 
			
		|||
package com.youchain.modules.quartz.task;
 | 
			
		||||
 | 
			
		||||
import com.youchain.basicdata.service.StockService;
 | 
			
		||||
import com.youchain.businessdata.domain.Pick;
 | 
			
		||||
import com.youchain.businessdata.repository.PickRepository;
 | 
			
		||||
import com.youchain.businessdata.service.AgvTaskService;
 | 
			
		||||
| 
						 | 
				
			
			@ -28,6 +29,9 @@ public class pickTask {
 | 
			
		|||
    @Autowired
 | 
			
		||||
    public PickService pickService;
 | 
			
		||||
 | 
			
		||||
    @Autowired
 | 
			
		||||
    public StockService stockService;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 定时检测打开和分配中的出库单,分配库存
 | 
			
		||||
     */
 | 
			
		||||
| 
						 | 
				
			
			@ -60,4 +64,11 @@ public class pickTask {
 | 
			
		|||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 成品下线呼叫空货架
 | 
			
		||||
     */
 | 
			
		||||
    public void cpCallStock() {
 | 
			
		||||
        stockService.cpCallStock();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -37,6 +37,11 @@ public interface AreaNameDic {
 | 
			
		|||
     */
 | 
			
		||||
    public static String CPRKQ = "CPRKQ";
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 成品入库缓存区
 | 
			
		||||
     */
 | 
			
		||||
    public static String CPRKCHQ = "CPRKCHQ";
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 成品下线区
 | 
			
		||||
     */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue