Commit 7c6cdf5ddbedecceba6af05fc8d0163fba7ecc74

Authored by 易文鹏
1 parent 46232207

feat:自动出库的出库逻辑由上一条单据尾状态等于拣货完成(任务全部出库完成)后,才执行下一条,改为所有单据状态为【已自动出库】或【自动执行中】的单据下的所有出…

…库任务,大于等于到达拣选台后就可以执行下一条了。(限制仅限于单据下的立库任务)
src/main/java/com/huaheng/api/wcs/controller/ArrivedNoticeController.java
... ... @@ -63,6 +63,10 @@ public class ArrivedNoticeController extends BaseController {
63 63 return AjaxResult.success("状态已经是到达站台了,不要重复更新");
64 64 }
65 65 taskHeader.setStatus(QuantityConstant.TASK_STATUS_ARRIVED_STATION);
  66 + taskDetailService.findByTaskId(Integer.valueOf(taskNo)).forEach(e -> {
  67 + e.setStatus(QuantityConstant.TASK_STATUS_ARRIVED_STATION);
  68 + taskDetailService.updateById(e);
  69 + });
66 70 } else {
67 71 return AjaxResult.error("没有找到任务taskNo:" + taskNo);
68 72 }
... ...
src/main/java/com/huaheng/pc/monitor/job/task/RyTask.java
... ... @@ -180,16 +180,7 @@ public class RyTask extends BaseController {
180 180 * 自动出库,自动出库单据间隔从定时任务那边配置
181 181 */
182 182 public void autoShipment() {
183   - //如果上一条出库单未完成,就不执行下一条
184   - ShipmentHeader header = shipmentHeaderService.getOne(new LambdaQueryWrapper<ShipmentHeader>()
185   - .eq(ShipmentHeader::getDeleted, 0)
186   - .in(ShipmentHeader::getAutoShipmentStatus, 2, 3)
187   - .last("ORDER BY requestedStartDate asc,id asc limit 1"));
188   - if (header != null) {
189   - if (header.getLastStatus() < QuantityConstant.SHIPMENT_HEADER_COMPLETED) {//尾状态小于拣货完成(出库单未完成),就不继续走了
190   - return;
191   - }
192   - }
  183 +
193 184 //039一厂设备立库、042二厂设备立库优先出库,requestedStartDate升序排序,如果没有就按照created升序
194 185 List<ShipmentHeader> shipmentHeaders = shipmentHeaderService.list(new LambdaQueryWrapper<ShipmentHeader>()
195 186 .eq(ShipmentHeader::getDeleted, 0)
... ... @@ -201,6 +192,27 @@ public class RyTask extends BaseController {
201 192 return;
202 193 }
203 194  
  195 +
  196 + //如果有任务状态小于到达拣选台,就不继续走了
  197 + List<ShipmentHeader> shipmentHeaderList = shipmentHeaderService.list(new LambdaQueryWrapper<ShipmentHeader>()
  198 + .eq(ShipmentHeader::getDeleted, 0)
  199 + .ne(ShipmentHeader::getLastStatus, 500)
  200 + .in(ShipmentHeader::getAutoShipmentStatus, 2, 3)
  201 + .last("ORDER BY requestedStartDate asc,id asc"));
  202 +
  203 + if (!shipmentHeaderList.isEmpty()) {
  204 + for (ShipmentHeader shipmentHeader : shipmentHeaderList) {
  205 + List<TaskDetail> list = taskDetailService.list(new LambdaQueryWrapper<TaskDetail>()
  206 + .lt(TaskDetail::getStatus, 50) //状态小于到达拣选台
  207 + .eq(TaskDetail::getFlat, 0)
  208 + .eq(TaskDetail::getBillCode, shipmentHeader.getCode()));
  209 + if (!list.isEmpty()) {
  210 + return;
  211 + }
  212 + }
  213 + }
  214 +
  215 +
204 216 // 查找039一厂设备立库或042二厂设备立库的出库单
205 217 ShipmentHeader priorityHeader = shipmentHeaders.stream().filter(h -> "039".equals(h.getWarehouse()) || "042".equals(h.getWarehouse())).findFirst().orElse(null);
206 218 if (priorityHeader == null) {
... ...