From 39f050923edd4e0ddc319bcc3b8c119980487f96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9A=B4=E7=82=B3=E6=9E=97?= <15237758276@163.com> Date: Wed, 15 Jan 2025 15:06:37 +0800 Subject: [PATCH] no message --- .../appupdate/rest/SceneAppController.java | 95 +++++++++++--- .../basicdata/repository/PointRepository.java | 8 +- .../repository/AgvTaskRepository.java | 18 ++- .../repository/InventoryRepository.java | 19 ++- .../repository/PickDetailRepository.java | 3 + .../service/InventoryService.java | 2 + .../service/dto/InventoryQueryCriteria.java | 2 + .../service/impl/AgvTaskServiceImpl.java | 26 ++-- .../service/impl/AsnServiceImpl.java | 2 +- .../service/impl/InventoryServiceImpl.java | 38 ++++-- .../service/impl/PickDetailServiceImpl.java | 124 ++++-------------- .../service/impl/TaskServiceImpl.java | 103 +++++++++++++-- .../modules/quartz/task/TestTask.java | 81 +++++++----- .../modules/quartz/task/pickTask.java | 16 ++- .../src/main/resources/config/application.yml | 2 +- 15 files changed, 350 insertions(+), 189 deletions(-) diff --git a/youchain-system/src/main/java/com/youchain/appupdate/rest/SceneAppController.java b/youchain-system/src/main/java/com/youchain/appupdate/rest/SceneAppController.java index 3613ea3..24fc265 100644 --- a/youchain-system/src/main/java/com/youchain/appupdate/rest/SceneAppController.java +++ b/youchain-system/src/main/java/com/youchain/appupdate/rest/SceneAppController.java @@ -23,6 +23,7 @@ import com.youchain.businessdata.repository.TaskRepository; import com.youchain.businessdata.service.*; import com.youchain.businessdata.service.dto.InventoryDto; import com.youchain.businessdata.service.mapstruct.InventoryMapper; +import com.youchain.exception.BadRequestException; import com.youchain.exception.handler.ApiResult; import com.youchain.modules.system.service.DictService; import com.youchain.modules.system.service.dto.DictDto; @@ -185,7 +186,7 @@ public class SceneAppController { taskList = taskRepository.findBySjTask(rfid); // 人工入库 直接生成库存 if (taskList==null||taskList.size()<1){ - ApiResult apiResult = ApiResult.fail(500,"为查询到数据",taskList); + ApiResult apiResult = ApiResult.fail(500,"未查询到数据",taskList); return new ResponseEntity<>(apiResult, HttpStatus.valueOf(apiResult.getStatus())); } } @@ -267,7 +268,7 @@ public class SceneAppController { data.put("rfid", rfid); if (!item.getGoodType().equals(BizStatus.BCP)){ apiResult=ApiResult.fail(500,"非半成品",null); - System.out.println(); + return new ResponseEntity<>(apiResult, HttpStatus.valueOf(apiResult.getStatus())); }else { apiResult = taskService.manualReceiving(rfid, point, agvFlag,null); } @@ -283,6 +284,8 @@ public class SceneAppController { //回滚 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); // apiCode=200; + }else { + agvTaskService.pointStockRk("BTP", point.getId()); } ApiResult apiResult=ApiResult.fail(apiCode,msg,apiData); return new ResponseEntity<>(apiResult, HttpStatus.valueOf(apiResult.getStatus())); @@ -366,29 +369,81 @@ public class SceneAppController { } @PostMapping("/inv/subInvPoint") @Log("app接口》库存-更新点位") - @ApiOperation("库存-库存查询") + @ApiOperation("更新点位") @AnonymousAccess public ResponseEntity subInvPoint(@RequestBody(required=false) String requestText) { + ApiResult apiResult; JSONObject request=JSONObject.parseObject(requestText); - Long invId=request.getLong("id"); + /*获取操作库存*/ + JSONArray jsonArray=request.getJSONArray("resInvThInvList"); + List invIds=new ArrayList<>(); + for (int i = 0; i < jsonArray.size(); i++) { + Long invId=jsonArray.getJSONObject(i).getLong("id"); + invIds.add(invId); + } + + List inventoryList0=inventoryRepository.findByIds(invIds); + Inventory inventory=inventoryList0.get(0); + String pointCode=request.getJSONObject("point").getString("code"); Point point=pointRepository.findByCode(pointCode); - ApiResult apiResult; - if (point.getStorageType()==null){ - apiResult = ApiResult.fail(500, "请先做容器入场", ""); - }else { - Inventory inventory = inventoryService.editInvPoint(invId,point); - if (inventory.getQueuedQty()<1){ - apiResult = ApiResult.fail(200, "修改成功", ""); - }else { - apiResult = ApiResult.fail(500, "库存被占用", ""); + /* 查询目标点位是否有其他库存*/ + List inventoryList =inventoryRepository.findByPoint(point.getId()); + /* 核实目标位物料编码*/ + if (inventoryList.size()>0) { + if (!inventoryList.get(0).getItemKey().getItem().getCode().equals(inventory.getItemKey().getItem().getCode())) { + throw new BadRequestException("库位存放有其他物料"); } } + + /*获取原库位*/ + Point ypoint=null; + if (inventory.getPoint()!=null){ + ypoint=inventory.getPoint(); + } + /* 原库位没有库存*/ + if (ypoint!=null&&ypoint.getStorageType()!=null){ + /*查询原位是否还有库存*/ + List inventories=inventoryRepository.findByPointQt(ypoint.getId(),invIds); + if (inventories==null||inventories.size()<1) { + /* 容器出场*/ + if (ypoint.getArea().getCode().equals("LX")) { + /*料箱-不调用接口*/ + ypoint.setStorageType(null); + pointRepository.save(ypoint); + } else { + agvTaskService.pointStockCk(ypoint.getStorageType(), ypoint.getId()); + } + } + } + /*目标位没有托盘*/ + if (point.getStorageType()==null){ + /* 容器入场*/ + if (point.getArea().getCode().equals("LX")){ + /*料箱-不调用接口*/ + point.setStorageType(BizStatus.LX); + pointRepository.save(point); + }else if (point.getArea().getCode().equals("BCP")){ + agvTaskService.pointStockRk("BTP", point.getId()); + }else { + agvTaskService.pointStockRk("CTP", point.getId()); + } + } + for (Inventory i:inventoryList0){ + i.setPoint(point); + inventoryRepository.save(i); + } + apiResult = ApiResult.fail(200, "修改成功", ""); + /*if (inventory.getQueuedQty()<1){ + apiResult = ApiResult.fail(200, "修改成功", ""); + }else { + apiResult = ApiResult.fail(500, "库存被占用", ""); + }*/ return new ResponseEntity<>(apiResult, HttpStatus.valueOf(apiResult.getStatus())); } @PostMapping("/inv/thInvList") @Log("app接口》库存查询") - @ApiOperation("拣货-库存查询") + @ApiOperation("库存查询") @AnonymousAccess public ResponseEntity thInvList(@RequestBody(required=false) JSONObject request) { String msg=""; @@ -402,6 +457,13 @@ public class SceneAppController { // String param=request.getString("param"); if (type.equals("query")){ inventoryList=inventoryRepository.findByParam(rfid); + for (Inventory inventory:inventoryList){ + if (inventory.getPoint()==null){ + Point point=new Point(); + point.setCode(""); + inventory.setPoint(point); + } + } msg="查询成功"; }else { inventoryList = inventoryRepository.findByItemKeyC7(rfid); @@ -434,7 +496,7 @@ public class SceneAppController { } @PostMapping("/inv/ctInv") @Log("app接口》拆托") - @ApiOperation("拣货-拆托") + @ApiOperation("拆托") @AnonymousAccess @Transactional public ResponseEntity ctInv(@RequestBody(required=false) JSONObject request) { @@ -454,7 +516,8 @@ public class SceneAppController { point=startInventory.getPoint(); } InventoryDto inventoryDto= inventoryMapper.toDto(startInventory); - inventoryRepository.delete(startInventory); + /*清楚ItemKey*/ + inventoryService.delete(startInventory); // 添加删除 日志 inventoryLogService.storeInventoryLog(BizStatus.MODIFY_LOT,BizStatus.REDUCE,inventoryDto.getItemKey().getPropC3(),inventoryDto.getItemKey(),point,null,null,null,inventoryDto.getQuantity(),inventoryDto.getQuantity(), inventoryDto.getItemKey().getPropC6(),null,inventoryDto.getId(),inventoryDto.getDescription()); // 库存调整反馈 diff --git a/youchain-system/src/main/java/com/youchain/basicdata/repository/PointRepository.java b/youchain-system/src/main/java/com/youchain/basicdata/repository/PointRepository.java index 032fa95..11e1dd7 100644 --- a/youchain-system/src/main/java/com/youchain/basicdata/repository/PointRepository.java +++ b/youchain-system/src/main/java/com/youchain/basicdata/repository/PointRepository.java @@ -30,7 +30,7 @@ import java.util.Map; * @date 2023-07-26 **/ public interface PointRepository extends JpaRepository, JpaSpecificationExecutor { - @Query(value = "SELECT p FROM Point p WHERE (?1 = 'null' or ?1 = p.area.code or p.area.code='TAGM') and (?2 = 'null' or ?2 = p.type or 'PLATFORM' = p.type) " + + @Query(value = "SELECT p FROM Point p WHERE ?1 = p.area.code and ?2 = p.type " + "and p.enabled=true and (p.storageType is null or length(p.storageType)=0) ", nativeQuery = false) List getKyPointList(String areaCode,String asnType); @Query(value = "SELECT p FROM Point p WHERE (?1 = 'null' or ?1 = p.area.code) and (?2 = 'null' or ?2 = p.type) " + @@ -42,8 +42,12 @@ public interface PointRepository extends JpaRepository, JpaSpecific List getLxzPointList(String areaCode, String asnType,String inCode); /** AGV成品分配库位*/ - @Query(value = "SELECT p FROM Point p WHERE p.area.code=?1 and p.type='STORAGE' and p.enabled=true and (p.storageType is null or length(p.storageType)=0) order by p.heat desc") + @Query(value = "SELECT p FROM Point p WHERE p.area.code=?1 and p.type='STORAGE' and p.enabled=true and (p.storageType is null or length(p.storageType)=0) order by p.heat desc,p.code asc") List findByCpAreaCode(String areaCode); + /** 密集存储*/ + @Query(value = "select * from base_point where beat_code=?1 and enabled=true and (storage_type is null or length(storage_type)=0) order by heat desc" + , nativeQuery = true) + List findByBeatCode(String beatCode); /** 取消 库位*/ @Query(value = "SELECT p FROM Point p WHERE p.area.code=?1 and p.status='USED' and p.enabled=true and (p.storageType is null or length(p.storageType)=0) order by p.heat asc ") List findByAreaCode(String areaCode); diff --git a/youchain-system/src/main/java/com/youchain/businessdata/repository/AgvTaskRepository.java b/youchain-system/src/main/java/com/youchain/businessdata/repository/AgvTaskRepository.java index fd90c66..d48fa45 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/repository/AgvTaskRepository.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/repository/AgvTaskRepository.java @@ -84,9 +84,21 @@ public interface AgvTaskRepository extends JpaRepository, JpaS */ @Query(value = "select * from data_agv_task where line_slot_code=?1 and type='PICK' and `status`='OPEN' and line_slot_code is not null ORDER BY create_time ", nativeQuery = true) List queryLineAgvTask(String line_slot_code); - /** 定时发送任务*/ - @Query(value = "select * from data_agv_task where `status`='OPEN' ", nativeQuery = true) - List findByTiming(); + /** 料箱托盘任务*/ + @Query(value = "select * from data_agv_task where `status` in ('OPEN','ATCALL','ATWORK') and stock_type_code in ('Rack_760_1200') ", nativeQuery = true) + List findByLxTiming(); + /*叉车任务*/ + @Query(value = "select * from data_agv_task where `status` in ('OPEN','ATCALL','ATWORK') and stock_type_code in ('Semi_finished_goods_pallet','Finished_goods_pallet')", nativeQuery = true) + List findByAmrTiming(); @Query(value = "select a FROM AgvTask a where a.jobId=?1") AgvTask findByJobId(String jobId); + @Query(value = " select beat_code from ( " + +" select p.heat,p.beat_code from data_inventory inv " + +" left join base_point p on inv.point_id=p.id " + +" left join data_item_key ik on inv.item_key_id=ik.id " + +" left join base_item i on ik.item_id=i.id " + +" where ik.prop_c1=?1 and ik.prop_c3=?2 and i.`code`=?3 " + +" ORDER BY p.heat DESC) as subquery " + +" group by beat_code HAVING min(heat)!=1 ", nativeQuery = true) + List findByBeatCode(String prop_c1,String prop_c3,String itemCode); } diff --git a/youchain-system/src/main/java/com/youchain/businessdata/repository/InventoryRepository.java b/youchain-system/src/main/java/com/youchain/businessdata/repository/InventoryRepository.java index e542fcc..8cb0f4b 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/repository/InventoryRepository.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/repository/InventoryRepository.java @@ -34,7 +34,7 @@ public interface InventoryRepository extends JpaRepository, Jpa * @param itemId * @return */ - @Query(value = "SELECT inv FROM Inventory inv WHERE inv.itemKey in (select ik.id from ItemKey ik where ik.item.id = ?1 ) and inv.quantity>0 and inv.queuedQty=0 order by inv.point.heat asc ,inv.createTime asc ", nativeQuery = false) + @Query(value = "SELECT inv FROM Inventory inv WHERE inv.itemKey in (select ik.id from ItemKey ik where ik.item.id = ?1 ) and inv.quantity>0 and inv.queuedQty=0 order by inv.itemKey.propC1 asc ,inv.point.heat asc ", nativeQuery = false) List queryInventory(long itemId); @Query(value = "SELECT i FROM Inventory i WHERE i.itemKey.item.id=?1 and i.point.id=?2 ", nativeQuery = false) List findByItemAndPoint(long itemId,long pointId); @@ -42,8 +42,15 @@ public interface InventoryRepository extends JpaRepository, Jpa Inventory findByItemKey(Long itemKeyId); @Query(value = "SELECT i FROM Inventory i WHERE i.itemKey.propC7=?1", nativeQuery = false) List findByItemKeyC7(String rfid); - @Query(value = "SELECT i FROM Inventory i WHERE (i.itemKey.propC7 like ?1 or i.itemKey.item.code like ?1 or " + - "i.point.code like ?1 or i.itemKey.propC1 like ?1 or i.itemKey.propC6 like ?1)", nativeQuery = false) + @Query(value = " select * from data_inventory inv " + +" left join data_item_key ik on inv.item_key_id=ik.id " + +" left join base_item i on ik.id=i.id " + +" left join base_point p on inv.point_id=p.id " + +" where ik.prop_c7 like ?1 " + +" or ik.prop_c6 like ?1 " + +" or ik.prop_c1 like ?1 " + +" or i.`code` like ?1 " + +" or p.`code` like ?1 ", nativeQuery = true) List findByParam(String param); @Query(value = "SELECT i FROM Inventory i WHERE i.id=?1", nativeQuery = false) @@ -57,4 +64,10 @@ public interface InventoryRepository extends JpaRepository, Jpa +" LEFT JOIN data_task t on t.inv_id=inv.id " +" GROUP BY t.asn_detail_id ", nativeQuery = true) List findByBackSap(); + @Query(value = "SELECT inv FROM Inventory inv WHERE inv.itemKey in (select ik.id from ItemKey ik where ik.item.id = ?1 ) and inv.quantity>0 and inv.queuedQty=0 and ?2-inv.quantity>=0 order by ?2-inv.quantity asc ", nativeQuery = false) + List queryInventoryQty(Long id, double d); + @Query(value = "SELECT i FROM Inventory i WHERE i.point.id=?1 and i.id not in ?2", nativeQuery = false) + List findByPointQt(Long id,List ids); + @Query(value = "SELECT i FROM Inventory i WHERE i.id in ?1", nativeQuery = false) + List findByIds(List invIds); } \ No newline at end of file diff --git a/youchain-system/src/main/java/com/youchain/businessdata/repository/PickDetailRepository.java b/youchain-system/src/main/java/com/youchain/businessdata/repository/PickDetailRepository.java index da34cae..1c20b07 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/repository/PickDetailRepository.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/repository/PickDetailRepository.java @@ -64,4 +64,7 @@ public interface PickDetailRepository extends JpaRepository, J /** 查询拣货和分配中的 全部出库明细*/ @Query(value = "select pd from PickDetail pd where pd.status in ('PICKUP','ALLOCATE')") List getPickDetail(); + /* 查询执行中,未分配完成的出库明细数据*/ + @Query(value = "select pd from PickDetail pd where pd.orderQty>pd.allocatedQty and pd.pick.status in ('PICKUP','ALLOCATE')") + List findPdAllQty(); } \ No newline at end of file diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/InventoryService.java b/youchain-system/src/main/java/com/youchain/businessdata/service/InventoryService.java index 49c1659..13f04b9 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/InventoryService.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/InventoryService.java @@ -117,4 +117,6 @@ public interface InventoryService { void pickDelInventory(List taskList); Inventory editInvPoint(Long invId, Point point); + + void delete(Inventory inv); } \ No newline at end of file diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/dto/InventoryQueryCriteria.java b/youchain-system/src/main/java/com/youchain/businessdata/service/dto/InventoryQueryCriteria.java index a63cf67..11c8ac3 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/dto/InventoryQueryCriteria.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/dto/InventoryQueryCriteria.java @@ -32,6 +32,8 @@ public class InventoryQueryCriteria{ private String itemCode;*/ @Query(joinName = "itemKey>item", propName="id",type = Query.Type.EQUAL) private String itemId; + @Query(joinName = "itemKey", propName="propC7",type = Query.Type.RIGHT_LIKE) + private String itemKeyPropC7; @Query(joinName = "point", propName="code",type = Query.Type.RIGHT_LIKE) private String pointCode; @Query(joinName = "point>area", propName="code",type = Query.Type.EQUAL) diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/AgvTaskServiceImpl.java b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/AgvTaskServiceImpl.java index 1db8f8c..c3b5ed0 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/AgvTaskServiceImpl.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/AgvTaskServiceImpl.java @@ -31,6 +31,7 @@ import com.youchain.businessdata.domain.*; import com.youchain.businessdata.repository.AsnDetailRepository; import com.youchain.businessdata.repository.TaskRepository; import com.youchain.businessdata.service.*; +import com.youchain.exception.BadRequestException; import com.youchain.exception.handler.ApiResult; import com.youchain.modules.quartz.utils.TimeNumberUtils; import com.youchain.modules.system.service.DictService; @@ -163,18 +164,18 @@ public class AgvTaskServiceImpl implements AgvTaskService { JSONObject jsonObject = new JSONObject(new LinkedHashMap<>()); String api=""; if (agvTask.getType().equals(BizStatus.AGV)) { - //搬运任务 - jsonObject.put("requestId", agvTask.getJobId()); if (agvTask.getJobId()==null||agvTask.getJobId().length()<1){ agvTask.setJobId(agvTask.getId()+""); } + //搬运任务 + jsonObject.put("requestId", agvTask.getJobId()); jsonObject.put("missionCode", agvTask.getJobId()); jsonObject.put("priority", agvTask.getJobPriority()); jsonObject.put("containerModeCode", agvTask.getStockTypeCode()); jsonObject.put("startPosition", agvTask.getStartSlotCode()); jsonObject.put("endPosition", agvTask.getEndSlotCode()); - /* 出库任务过射频门*/ - if (agvTask.getJobType().equals(BizStatus.PICK)){ + /* 出库任务过射频门,整托任务不需要过射频门*/ + if (agvTask.getJobType().equals(BizStatus.PICK)&&!agvTask.getStockTypeCode().equals("Finished_goods_pallet")){ jsonObject.put("endPosition", "102TK1"); } // jsonObject.put("viewBoardType", ""); @@ -509,7 +510,7 @@ public class AgvTaskServiceImpl implements AgvTaskService { /* 搬运任务完成*/ agvTask.setStatus(BizStatus.FINISH); agvTask.setEndTime(new Timestamp((new Date()).getTime())); - agvTask.setJobPriorityType((int) (agvTask.getEndTime().getTime()-agvTask.getStartTime().getTime())); +// agvTask.setJobPriorityType((int) (agvTask.getEndTime().getTime()-agvTask.getStartTime().getTime())); if (endPoint!=null) { endPoint.setAgvStatus(BaseStatus.FREE); pointRepository.save(endPoint); @@ -581,9 +582,11 @@ public class AgvTaskServiceImpl implements AgvTaskService { } }else if (status.equals("5")) { /* 开始检测RFID*/ - Reader.READER_ERR err = RfidDocJava.startRfid(); - System.out.println(agvTask.getId()+"搬运任务完成,开始扫描:"+err.toString()); - agvTask.setJobMessage(err.toString()); + if (agvTask.getJobType().equals(BizStatus.ASN)){ + Reader.READER_ERR err = RfidDocJava.startRfid(); + System.out.println(agvTask.getId()+"搬运任务完成,开始扫描:"+err.toString()); + agvTask.setJobMessage(err.toString()); + } } agvTaskRepository.save(agvTask); } @@ -717,12 +720,12 @@ public class AgvTaskServiceImpl implements AgvTaskService { public ApiResult pointStockRk(String storageType, Long id) { Point point=pointRepository.getById(id); if (point.getStorageType()!=null&&point.getStorageType().length()>0){ - return ApiResult.fail(500, "点位已记录容器", null); + throw new BadRequestException("点位已记录容器"); } AgvTask agvTask=addAgvTask(BizStatus.AGV_R,storageType,null,point.getCode(),BizStatus.OPEN,BizStatus.ASN); JSONObject resultJson = JSONObject.parseObject(sendAgvTaskImpl(agvTask)); if (!resultJson.getString("code").equals("0")){ - return ApiResult.fail(500, "容器入场失败"+resultJson, resultJson); + throw new BadRequestException("容器入场失败"+resultJson); } point.setStorageType(storageType); pointRepository.save(point); @@ -737,7 +740,7 @@ public class AgvTaskServiceImpl implements AgvTaskService { AgvTask agvTask=addAgvTask(BizStatus.AGV_C,storageType,null,point.getCode(),BizStatus.OPEN,BizStatus.ASN); JSONObject resultJson = JSONObject.parseObject(sendAgvTaskImpl(agvTask)); if (!resultJson.getString("code").equals("0")){ - return ApiResult.fail(500, "容器入场失败"+resultJson, resultJson); + throw new BadRequestException("容器出场失败"+resultJson); } point.setStorageType(null); pointRepository.save(point); @@ -866,7 +869,6 @@ public class AgvTaskServiceImpl implements AgvTaskService { } if (agvTask!=null) { RfidDocJava.lampGreen(); - sendAgvTaskImpl(agvTask); }else { RfidDocJava.lampRed(); } diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/AsnServiceImpl.java b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/AsnServiceImpl.java index 5461df7..b697f3a 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/AsnServiceImpl.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/AsnServiceImpl.java @@ -167,7 +167,7 @@ public class AsnServiceImpl implements AsnService { Item item = asnDetail.getItem(); Double zzsQty=item.getExtendD1();// 装载数 if (zzsQty<1){ - return ApiResult.success(500,"请写入物料单个库位的预期占用数量"+item.getCode(),asn.getId()); + return ApiResult.success(500,"请写入物料的整托数"+item.getCode(),asn.getId()); } Double orderQty=asnDetail.getOrderQty()-asnDetail.getReceivedQty();// 订单数 double result = orderQty / zzsQty; diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/InventoryServiceImpl.java b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/InventoryServiceImpl.java index cec27b0..4ecd3a7 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/InventoryServiceImpl.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/InventoryServiceImpl.java @@ -15,13 +15,16 @@ */ package com.youchain.businessdata.service.impl; +import com.youchain.basicdata.domain.Item; import com.youchain.basicdata.domain.Point; import com.youchain.basicdata.domain.Stock; +import com.youchain.basicdata.repository.ItemRepository; import com.youchain.basicdata.repository.PointRepository; import com.youchain.businessdata.domain.*; import com.youchain.businessdata.repository.*; import com.youchain.businessdata.service.InventoryLogService; import com.youchain.businessdata.service.dto.*; +import com.youchain.exception.BadRequestException; import com.youchain.modules.system.domain.Dept; import com.youchain.utils.*; import lombok.RequiredArgsConstructor; @@ -53,6 +56,7 @@ import java.util.LinkedHashMap; public class InventoryServiceImpl implements InventoryService { private final InventoryRepository inventoryRepository; + private final ItemRepository itemRepository; private final InventoryLogService inventoryLogService; private final AsnRepository asnRepository; private final AsnDetailRepository asnDetailRepository; @@ -99,6 +103,20 @@ public class InventoryServiceImpl implements InventoryService { public void update(Inventory resources) { Inventory inventory = inventoryRepository.findById(resources.getId()).orElseGet(Inventory::new); ValidationUtil.isNull(inventory.getId(), "Inventory", "id", resources.getId()); + + //修改数量 + String rfid=resources.getItemKey().getPropC7();//16进制 供货数量 + String str1=rfid.substring(0, 9); + Item item=itemRepository.findByCode(str1); + String str2=rfid.substring(9,20); + String str3=String.format("%04x", Math.round(inventory.getQuantity())); + String str4=rfid.substring(24,rfid.length()); + + ItemKey itemKey=inventory.getItemKey(); + itemKey.setPropC7(str1+str2+str3+str4); + itemKey.setItem(item); + itemKeyRepository.save(itemKey); + inventory.copy(resources); inventoryRepository.save(inventory); } @@ -110,15 +128,13 @@ public class InventoryServiceImpl implements InventoryService { InventoryDto inventoryDto= inventoryMapper.toDto(inventory); double quantity=inventory.getQuantity(); ItemKey itemKey=inventory.getItemKey(); - itemKey.setEnabled(false); Point point=inventory.getPoint(); if (point!=null) { point.setStorageType(null); point.setStatus(BaseStatus.FREE); pointRepository.save(point); } - itemKeyRepository.save(itemKey); - inventoryRepository.deleteById(id); + delete(inventory); // 添加日志 inventoryLogService.storeInventoryLog(BizStatus.DEL,BizStatus.REDUCE,itemKey.getPropC3(),itemKey,point,null,null,null,quantity,quantity, itemKey.getPropC6(),null,inventoryDto.getId(),inventoryDto.getDescription()); // 反馈修改库存 @@ -327,11 +343,7 @@ public class InventoryServiceImpl implements InventoryService { ,task.getMoveQty(),inventory.getZtBid() ,inventory.getProdMtrl()); inventoryLogService.storeInventoryLog(BizStatus.PICK_DOWN,BizStatus.REDUCE,inventory.getItemKey().getPropC3(),inventory.getItemKey(),task.getSrcPoint(),task.getDstPoint(),null,null,inventory.getQuantity(),task.getMoveQty(), task.getItemKey().getPropC6(),null,inventory.getId(),""); - inventoryRepository.delete(inventory); - // 失效ItemKey - ItemKey itemKey=inventory.getItemKey(); - itemKey.setEnabled(false); - itemKeyRepository.save(itemKey); + delete(inventory); } // 查询原库位是否有其他库存,如果有移出到线边 if (pointStart!=null){ @@ -348,6 +360,7 @@ public class InventoryServiceImpl implements InventoryService { @Override public Inventory editInvPoint(Long invId, Point point) { Inventory inventory=inventoryRepository.getById(invId); + if (inventory!=null&&inventory.getQueuedQty()<1){ inventory.setPoint(point); inventoryRepository.save(inventory); @@ -355,6 +368,15 @@ public class InventoryServiceImpl implements InventoryService { return inventory; } + @Override + public void delete(Inventory inv) { + // 失效ItemKey + ItemKey itemKey = inv.getItemKey(); + itemKey.setEnabled(false); + itemKeyRepository.save(itemKey); + inventoryRepository.delete(inv); + } + public List queryItemStock(){ String hql = "select inv.itemKey.item.code,max(inv.itemKey.item.name),count(inv.id) " + " from Inventory inv where 1=1 and inv.quantity>0 group by inv.itemKey.item.code order by inv.itemKey.item.code"; diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/PickDetailServiceImpl.java b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/PickDetailServiceImpl.java index 74f1078..f11bc03 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/PickDetailServiceImpl.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/PickDetailServiceImpl.java @@ -186,9 +186,22 @@ public class PickDetailServiceImpl implements PickDetailService { if (pickDetail.getOrderQty() > pickDetail.getAllocatedQty()) { List inventoryList = inventoryRepository.queryInventory(item.getId()); if (inventoryList.size() > 0) { - // 查询当前库存 所在库位物料总数 - ApiResult apiResult = allocate(pickDetail, dept, quantity, agvFlag, endPoint, inventoryList); - if (apiResult != null) return apiResult; + //待分配数量 + double d=pickDetail.getOrderQty()-pickDetail.getAllocatedQty(); + if (d>=inventoryList.get(0).getQuantity()){ + //分配整托 + // 查询当前库存 所在库位物料总数 + ApiResult apiResult = allocate(pickDetail, dept, quantity, agvFlag, endPoint, inventoryList); + if (apiResult != null) return apiResult; + }else { + //不足整托,分配数量差距最小的托 + inventoryList = inventoryRepository.queryInventoryQty(item.getId(),d); + if (inventoryList.size()<1) { + return ApiResult.fail(201, "请拆托:", null); + } + ApiResult apiResult = allocate(pickDetail, dept, quantity, agvFlag, endPoint, inventoryList); + if (apiResult != null) return apiResult; + } } else { return ApiResult.fail(500, item.getCode() + "料号,无库存", ""); @@ -211,12 +224,9 @@ public class PickDetailServiceImpl implements PickDetailService { //整托分配 allocateQty = inv.getQuantity(); if (unQty < allocateQty) { - /*return ApiResult.fail(201, "单号:" + pickDetail.getPick().getRelatedBill1() - + "行:" + pickDetail.getLineNo() + ",剩余订单数量不足一托" + "订单数量" + quantity + ",剩余未分配数量" - + unQty + ",库存单托数量" + inv.getQuantity(), null);*/ - return ApiResult.fail(201, "拆托:" + unQty, null); + return ApiResult.fail(201, "请拆托:" + unQty, null); } - //更新库存 + //更新库 inv.setQueuedQty(allocateQty); inventoryRepository.save(inv); unQty = unQty - allocateQty; @@ -243,7 +253,7 @@ public class PickDetailServiceImpl implements PickDetailService { if (task.getTaskType().equals(BizStatus.RM_CK)) { // 如果是料箱出库,先不生成搬运任务 } else { - //生成AGV任务 + //出库分配-生成AGV任务 AgvTask agvTask = agvTaskService.addAgvTask(BizStatus.AGV, startPoint.getStorageType(), startPoint.getCode(), endPoint.getCode(), BizStatus.OPEN, BizStatus.PICK); //更新Task任务 写入关联AGV task.setAgvTask(agvTask); @@ -251,102 +261,12 @@ public class PickDetailServiceImpl implements PickDetailService { } taskRepository.save(task); } - /*List inventoryEndList=inventoryRepository.findByItemAndPoint(inv.getItemKey().getItem().getId(),inv.getPoint().getId()); - if (inventoryEndList.size()>1){ - for (Inventory inventory:inventoryEndList){ - - inv=inventory; - //整托分配 - allocateQty = inv.getQuantity(); - if (unQty < allocateQty) { - *//*return ApiResult.fail(201, "单号:" + pickDetail.getPick().getRelatedBill1() - + "行:" + pickDetail.getLineNo() + ",剩余订单数量不足一托" + "订单数量" + quantity + ",剩余未分配数量" - + unQty + ",库存单托数量" + inv.getQuantity(), null);*//* - return ApiResult.fail(201, "拆托:" + unQty, null); - } - //更新库存 - inv.setQueuedQty(allocateQty); - inventoryRepository.save(inv); - unQty = unQty - allocateQty; - //更新出库单 - pickDetail.setAllocatedQty(pickDetail.getAllocatedQty() + allocateQty); - pickDetail.setStatus(BizStatus.ALLOCATE); - pickDetailRepository.save(pickDetail); - //生成Task任务 - Task task = new Task(); - task.setItem(inv.getItemKey().getItem()); - task.setItemKey(inv.getItemKey()); - task.setPickDetail(pickDetail); - task.setBillCode(pickDetail.getPick().getRelatedBill1()); - task.setSrcPoint(startPoint); - task.setDstPoint(endPoint); - task.setTaskType(pickDetail.getPick().getBillType().getCode()); - task.setTaskStatus(BizStatus.ALLOCATE); - task.setBeSkip(agvFlag);//是否AGV出库 - task.setPlanQty(allocateQty); - task.setDept(dept); - task.setInventory(inv); - if (agvFlag == 1) { - *//** 是否AGV任务*//* - if (task.getTaskType().equals(BizStatus.RM_CK)) { - // 如果是料箱出库,先不生成搬运任务 - } else { - //生成AGV任务 - AgvTask agvTask = agvTaskService.addAgvTask(BizStatus.AGV, startPoint.getStorageType(), startPoint.getCode(), endPoint.getCode(), BizStatus.OPEN, BizStatus.PICK); - //更新Task任务 写入关联AGV - task.setAgvTask(agvTask); - } - } - taskRepository.save(task); - } - }else { - //整托分配 - allocateQty = inv.getQuantity(); - if (unQty < allocateQty) { - *//*return ApiResult.fail(201, "单号:" + pickDetail.getPick().getRelatedBill1() - + "行:" + pickDetail.getLineNo() + ",剩余订单数量不足一托" + "订单数量" + quantity + ",剩余未分配数量" - + unQty + ",库存单托数量" + inv.getQuantity(), null);*//* - return ApiResult.fail(201, "拆托:" + unQty, null); - } - //更新库存 - inv.setQueuedQty(allocateQty); - inventoryRepository.save(inv); - unQty = unQty - allocateQty; - //更新出库单 - pickDetail.setAllocatedQty(pickDetail.getAllocatedQty() + allocateQty); - pickDetail.setStatus(BizStatus.ALLOCATE); - pickDetailRepository.save(pickDetail); - //生成Task任务 - Task task = new Task(); - task.setItem(inv.getItemKey().getItem()); - task.setItemKey(inv.getItemKey()); - task.setPickDetail(pickDetail); - task.setBillCode(pickDetail.getPick().getRelatedBill1()); - task.setSrcPoint(startPoint); - task.setDstPoint(endPoint); - task.setTaskType(pickDetail.getPick().getBillType().getCode()); - task.setTaskStatus(BizStatus.ALLOCATE); - task.setBeSkip(agvFlag);//是否AGV出库 - task.setPlanQty(allocateQty); - task.setDept(dept); - task.setInventory(inv); - if (agvFlag == 1) { - *//** 是否AGV任务*//* - if (task.getTaskType().equals(BizStatus.RM_CK)) { - // 如果是料箱出库,先不生成搬运任务 - } else { - //生成AGV任务 - AgvTask agvTask = agvTaskService.addAgvTask(BizStatus.AGV, startPoint.getStorageType(), startPoint.getCode(), endPoint.getCode(), BizStatus.OPEN, BizStatus.PICK); - //更新Task任务 写入关联AGV - task.setAgvTask(agvTask); - } - } - taskRepository.save(task); - }*/ } return null; } - + /*密集存储-入库-如果已入库相同的物料放在一起*/ + /*密集存储-出库-如果分配库存的外面有物料先出外围的物料*/ + /*x修改库存位置时-如果库存已分配同步修改AgvTask起点和关联的Task起点*/ @Override @Transactional(rollbackFor = Exception.class) public synchronized void allocateAll(long id, Point endPoint) throws Exception { diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/TaskServiceImpl.java b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/TaskServiceImpl.java index f86deee..af30e75 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/TaskServiceImpl.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/TaskServiceImpl.java @@ -51,6 +51,7 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.transaction.interceptor.TransactionAspectSupport; +import java.sql.Timestamp; import java.util.*; import java.io.IOException; import javax.persistence.EntityManager; @@ -209,7 +210,7 @@ public class TaskServiceImpl implements TaskService { inv.setQueuedQty(inv.getQueuedQty() - pickedQuantity); inventoryRepository.save(inv); if(inv.getQuantity()<=0){ - inventoryRepository.delete(inv); + inventoryService.delete(inv); } Stock stock=inv.getStock(); stock.setStatus(BaseStatus.FREE); @@ -441,12 +442,29 @@ public class TaskServiceImpl implements TaskService { stockTypeCode=BizStatus.CP; } if (pointEnd==null) { - /* 成品入库,半成品入库分配库位*/ - List pointEndList = pointRepository.findByCpAreaCode(stockTypeCode); - if (pointEndList.size() > 0) { - pointEnd = pointEndList.get(0); - } else { - return ApiResult.fail(500, "没有可用存储库位", null); + int mj=0; + if (stockTypeCode.equals(BizStatus.BCP)||stockTypeCode.equals(BizStatus.CP)){ + mj=1; + } + if (mj==1){ + /*密集存储-入库-如果已入库相同的物料放在一起*/ + List beatCodeList=agvTaskRepository.findByBeatCode(propC1,propC3,itemCode); + if (beatCodeList.size()>0){ + List pointEndList = pointRepository.findByBeatCode(beatCodeList.get(0)); + if (pointEndList.size()>0){ + pointEnd = pointEndList.get(0); + } + } + + } + if (pointEnd==null){ + /* 成品入库,半成品入库分配库位*/ + List pointEndList = pointRepository.findByCpAreaCode(stockTypeCode); + if (pointEndList.size() > 0) { + pointEnd = pointEndList.get(0); + } else { + return ApiResult.fail(500, "没有可用存储库位", null); + } } } } @@ -516,8 +534,20 @@ public class TaskServiceImpl implements TaskService { return ApiResult.result(200, "操作成功", billTypeCode); }else { + if (pointStart.getStorageType()!=null&&pointStart.getStorageType().length()>0){ +// throw new BadRequestException("点位已记录容器"); + }else { + if (!pointStart.getArea().getCode().equals("LX")) { + AgvTask agvTask = addAgvTask(BizStatus.AGV_R, storageType, null, pointStart.getCode(), BizStatus.OPEN, BizStatus.ASN); + JSONObject resultJson = JSONObject.parseObject(sendAgvTaskImpl(agvTask)); + if (!resultJson.getString("code").equals("0")) { + throw new BadRequestException("容器入场失败" + resultJson); + } + } + pointStart.setStorageType(storageType); + pointRepository.save(pointStart); + } /** 人工入库*/ - pointStart.setStorageType(storageType); pointStart.setStatus(BaseStatus.USED); pointRepository.save(pointStart); /*入库 生成库存*/ @@ -527,6 +557,63 @@ public class TaskServiceImpl implements TaskService { } return ApiResult.result(200, "操作成功", null); } + + private String sendAgvTaskImpl(AgvTask agvTask) { + JSONObject jsonObject = new JSONObject(new LinkedHashMap<>()); + String api=""; + if (agvTask.getType().equals(BizStatus.AGV)) { + if (agvTask.getJobId()==null||agvTask.getJobId().length()<1){ + agvTask.setJobId(agvTask.getId()+""); + } + //搬运任务 + jsonObject.put("requestId", agvTask.getJobId()); + jsonObject.put("missionCode", agvTask.getJobId()); + jsonObject.put("priority", agvTask.getJobPriority()); + jsonObject.put("containerModeCode", agvTask.getStockTypeCode()); + jsonObject.put("startPosition", agvTask.getStartSlotCode()); + jsonObject.put("endPosition", agvTask.getEndSlotCode()); + /* 出库任务过射频门,整托任务不需要过射频门*/ + if (agvTask.getJobType().equals(BizStatus.PICK)&&!agvTask.getStockTypeCode().equals("Finished_goods_pallet")){ + jsonObject.put("endPosition", "102TK1"); + } +// jsonObject.put("viewBoardType", ""); + api=UrlApi.submitMission; + } + if (agvTask.getType().equals(BizStatus.AGV_R)){ + jsonObject.put("requestId", agvTask.getJobId()); + jsonObject.put("containerModeCode", agvTask.getStockTypeCode()); +// jsonObject.put("containerCode", agvTask.getStockTypeCode()); + jsonObject.put("position", agvTask.getEndSlotCode()); + api=UrlApi.containerIn; + } + if (agvTask.getType().equals(BizStatus.AGV_C)){ + jsonObject.put("requestId", agvTask.getJobId()); + jsonObject.put("containerCode", ""); + jsonObject.put("position", agvTask.getEndSlotCode()); + api=UrlApi.containerOut; + } + String resultJson = HttpPostUtil.sendPostReq(api, jsonObject.toString());//返回ResponseJson*/ + JSONObject resulObject = JSON.parseObject(resultJson); + String code = resulObject.getString("code") == null ? "" : resulObject.getString("code"); + if (code.equals("0")) { + if (agvTask.getType().equals(BizStatus.AGV_R)||agvTask.getType().equals(BizStatus.AGV_C)){ + agvTask.setStatus(BizStatus.FINISH); + }else { + agvTask.setStatus(BizStatus.ATCALL); + } + agvTask.setJobMessage(resultJson); + agvTask.setReqMessage(jsonObject.toString()); + agvTask.setStartTime(new Timestamp(new Date().getTime())); + agvTaskRepository.save(agvTask); + } else { + agvTask.setJobMessage(resultJson); + agvTask.setStatus(BizStatus.UNUSUAL); + agvTask.setReqMessage(jsonObject.toString()); + agvTaskRepository.save(agvTask); + } + return resultJson; + } + /** 入库-生成库存*/ public Inventory addAsnInventory(Task task) { Point point=task.getDstPoint(); diff --git a/youchain-system/src/main/java/com/youchain/modules/quartz/task/TestTask.java b/youchain-system/src/main/java/com/youchain/modules/quartz/task/TestTask.java index b403b3d..4089447 100644 --- a/youchain-system/src/main/java/com/youchain/modules/quartz/task/TestTask.java +++ b/youchain-system/src/main/java/com/youchain/modules/quartz/task/TestTask.java @@ -33,10 +33,7 @@ import com.youchain.exception.BadRequestException; import com.youchain.exception.handler.ApiResult; import com.youchain.modules.system.repository.DeptRepository; import com.youchain.rfid.RfidDocJava; -import com.youchain.utils.BaseStatus; -import com.youchain.utils.BizStatus; -import com.youchain.utils.HttpPostUtil; -import com.youchain.utils.UrlApi; +import com.youchain.utils.*; import lombok.Synchronized; import lombok.extern.slf4j.Slf4j; import org.checkerframework.checker.units.qual.A; @@ -138,13 +135,31 @@ public class TestTask { } public void TimingSendAgvTask(){ // 定时发送任务 - List agvTasks=agvTaskRepository.findByTiming(); - for (int i = 0; i < agvTasks.size(); i++) { - AgvTask agvTask=agvTasks.get(i); - /*if (agvTask.getJobType().equals(BizStatus.PICK)){ + List agvTaskLx=agvTaskRepository.findByLxTiming(); + if (agvTaskLx.size()>0){ + AgvTask agvTask=agvTaskLx.get(0); + if (agvTask.getStatus().equals(BizStatus.OPEN)){ + agvTaskService.sendAgvTaskImpl(agvTask); + } + } - }*/ - agvTaskService.sendAgvTaskImpl(agvTasks.get(i)); + List agvTaskAmr=agvTaskRepository.findByAmrTiming(); + if (agvTaskAmr.size()>0){ + AgvTask agvTask=agvTaskAmr.get(0); + if (agvTask.getStatus().equals(BizStatus.OPEN)){ + /*如果起点被阻挡*/ + /*Point pointStart=pointRepository.findByCode(agvTask.getStartSlotCode()); + if (pointStart.getBeatCode()!=null&&pointStart.getBeatCode().length()>0){ + + }*/ + /*如果终点被阻挡*/ + /*Point endStart=pointRepository.findByCode(agvTask.getStartSlotCode()); + if (endStart.getBeatCode()!=null&&endStart.getBeatCode().length()>0){ + + }*/ + agvTaskService.sendAgvTaskImpl(agvTask); + + } } } public void posBaseStatus(String req){ @@ -176,31 +191,33 @@ public class TestTask { } public void asnPutaway(){ synchronized ("asnPutaway") { - Reader.READER_ERR err = RfidDocJava.startRfid(); - System.out.println("开始扫描:"+err.toString()); - try { - Thread.sleep(5000); - }catch (Exception e){ + new Thread(()->{ + Reader.READER_ERR err = RfidDocJava.startRfid(); + System.out.println("开始扫描:"+err.toString()); + try { + Thread.sleep(5000); + }catch (Exception e){ - } + } // Point point=pointRepository.getById(BaseStatus.DoorPoint.getId()); - String st = pointRepository.findByCode("102TK1").getStorageType(); - if (st.equals("BTP")){ - /* 半成品入库*/ - agvTaskService.addTaskRfid(BizStatus.SM_RK); - }else if (st.equals("LXZ")){ - /* 料箱入库*/ - agvTaskService.addTaskRfid(BizStatus.RM_RK); - }else { - /* 直接关闭扫描*/ - HashSet vt = RfidDocJava.readRfid(); - throw new BadRequestException("未确定点位容器分配类型"); - } - try { - Thread.sleep(5000); - }catch (Exception e){ + String st = pointRepository.findByCode("102TK1").getStorageType(); + if (st.equals("BTP")){ + /* 半成品入库*/ + agvTaskService.addTaskRfid(BizStatus.SM_RK); + }else if (st.equals("LXZ")){ + /* 料箱入库*/ + agvTaskService.addTaskRfid(BizStatus.RM_RK); + }else { + /* 直接关闭扫描*/ + HashSet vt = RfidDocJava.readRfid(); + throw new BadRequestException("未确定点位容器分配类型"); + } + try { + Thread.sleep(5000); + }catch (Exception e){ - } + } + }).start(); } } } diff --git a/youchain-system/src/main/java/com/youchain/modules/quartz/task/pickTask.java b/youchain-system/src/main/java/com/youchain/modules/quartz/task/pickTask.java index 4fc0980..e549326 100644 --- a/youchain-system/src/main/java/com/youchain/modules/quartz/task/pickTask.java +++ b/youchain-system/src/main/java/com/youchain/modules/quartz/task/pickTask.java @@ -5,8 +5,11 @@ import com.alibaba.fastjson.JSONObject; import com.youchain.basicdata.domain.Point; import com.youchain.basicdata.repository.PointRepository; import com.youchain.businessdata.domain.AgvTask; +import com.youchain.businessdata.domain.PickDetail; import com.youchain.businessdata.repository.AgvTaskRepository; +import com.youchain.businessdata.repository.PickDetailRepository; import com.youchain.businessdata.service.AgvTaskService; +import com.youchain.businessdata.service.PickDetailService; import com.youchain.exception.BadRequestException; import com.youchain.exception.handler.ApiResult; import com.youchain.utils.BaseStatus; @@ -34,6 +37,10 @@ public class pickTask { public AgvTaskRepository agvTaskRepository; @Autowired public PointRepository pointRepository; + @Autowired + public PickDetailRepository pickDetailRepository; + @Autowired + public PickDetailService pickDetailService; @Autowired public AgvTaskService agvTaskService; @@ -41,7 +48,14 @@ public class pickTask { private Map> groupedTasks = new HashMap<>(); private long lastTaskTime = System.currentTimeMillis(); - + /* 分配库存*/ + public void fpPick() { + List pickDetailList=pickDetailRepository.findPdAllQty(); + for (PickDetail pickDetail:pickDetailList){ + Long[] pfIds={ pickDetail.getId() }; + ApiResult apiResult = pickDetailService.allocate(pfIds); + } + } public void addAgvAsn() { /* 生成RFID上架搬运任务*/ ApiResult apiResult=null; diff --git a/youchain-system/src/main/resources/config/application.yml b/youchain-system/src/main/resources/config/application.yml index 6661064..37f08bf 100644 --- a/youchain-system/src/main/resources/config/application.yml +++ b/youchain-system/src/main/resources/config/application.yml @@ -6,7 +6,7 @@ spring: freemarker: check-template-location: false profiles: - active: dock + active: dev jackson: time-zone: GMT+8 data: