From a661dae55f2e07036b1f0e502afa6277a2213a35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9A=B4=E7=82=B3=E6=9E=97?= <15237758276@163.com> Date: Thu, 1 Aug 2024 09:41:38 +0800 Subject: [PATCH] no message --- .../youchain/exception/handler/ApiResult.java | 6 ++ .../exception/handler/ApiResult.class | Bin 3489 -> 3983 bytes .../java/com/youchain/Netty/model/Jb.java | 10 ++ .../Netty/rest/PdaHvacController.java | 77 ++++++++++++++ .../youchain/basicdata/model/YhWcModel.java | 11 ++ .../basicdata/repository/PointRepository.java | 2 +- .../basicdata/rest/PointController.java | 14 +++ .../service/impl/PointServiceImpl.java | 7 ++ .../businessdata/domain/Inventory.java | 4 +- .../repository/InventoryRepository.java | 3 +- .../repository/TaskRepository.java | 2 + .../businessdata/rest/KMReSController.java | 49 +++++++++ .../rest/PickDetailController.java | 95 +++++++++++++++++- .../service/dto/InventoryQueryCriteria.java | 4 +- .../service/impl/AgvTaskServiceImpl.java | 8 +- .../service/impl/InventoryServiceImpl.java | 2 +- .../service/impl/MlsServiceImpl.java | 17 +++- .../modules/quartz/task/configTask.java | 1 + .../modules/quartz/task/pickTask.java | 28 ++++++ .../java/com/youchain/utils/BaseCode.java | 1 + .../java/com/youchain/utils/BizStatus.java | 9 +- 21 files changed, 330 insertions(+), 20 deletions(-) create mode 100644 youchain-system/src/main/java/com/youchain/Netty/model/Jb.java create mode 100644 youchain-system/src/main/java/com/youchain/Netty/rest/PdaHvacController.java create mode 100644 youchain-system/src/main/java/com/youchain/basicdata/model/YhWcModel.java diff --git a/youchain-common/src/main/java/com/youchain/exception/handler/ApiResult.java b/youchain-common/src/main/java/com/youchain/exception/handler/ApiResult.java index 64995f8..3be6812 100644 --- a/youchain-common/src/main/java/com/youchain/exception/handler/ApiResult.java +++ b/youchain-common/src/main/java/com/youchain/exception/handler/ApiResult.java @@ -7,6 +7,7 @@ import org.springframework.http.HttpStatus; public class ApiResult { private Object data;//数据 private String msg;//内容 + private String notify;//样式 private int code;//编码 public static ApiResult fail() { @@ -36,6 +37,11 @@ public class ApiResult { public static ApiResult result(int code, String msg, Object data) { ApiResult rs = new ApiResult(); + if (code==200){ + rs.setNotify("success"); + }else { + rs.setNotify("error"); + } rs.setCode(code); rs.setMsg(msg); rs.setData(data); diff --git a/youchain-common/target/classes/com/youchain/exception/handler/ApiResult.class b/youchain-common/target/classes/com/youchain/exception/handler/ApiResult.class index 03990c6f632fa303a00ca5fbf770dd75b68dcdb0..3c76bba7258b87fd71628fa1df8deb15449d7867 100644 GIT binary patch literal 3983 zcmb_e{cl^<8Gf#PzwF*LiQ6P~+dLO~!|=e*~f=REIw z-mmNb{O_M112}+JY@AO*N7=@r1y95!8+XXOY@;G`RfY>PTugANC9#5f5))XGWkZHl z8J-eIQ-+odzChX{U6SFlET6V;C5g1C_?^tZm*EdKp0V+)jpt-trYKX72me(Jh_M6rEGLOu9!>=w~;r()B(bJ&KP+W4W zH4XX9)NHx2QoPb=mn&|yUi6+Wd#ir6Q7=~9`eMy%7VlfFp7L7lnkdnaDuTh;YTcV} zublUqXWa8OQl8Ar^cfXu?%N5?{6Wf6vyHM_JL@*9q9ar^H0Sx1#^Qq8bXPpzYqm64 zt#-NWwJ06V{797x{RBVFE6k>Ho`#s%n*AZ(9ysm0<%@Ifs(L%~QA1+c^SSG{$u-H? zHJZ!C)~dvLNgQ&y(Y#o!`2K3~Ar1jh!sb`1ykH)x)~o(u=1OMjEd55V2UJ3BCsRa9 znFP#9R;@qp<&_vSAEuU&1<65j=9ks#l8^NJw3`Q1ZxW%{*8xIuu`fYDkDhWsuV-fD z(Da^ayEQ&)-R&;@<4p2~2BYCuye66C{S!g)B-LKHu+@R8oJ6p%E|Kjwg6C;So^G_8W$$=Zif3!D#BP%) zXc+kF^;f_6*Bf8{sd97>+wQg8LlI%kq94b?|@; zkK?$8v9;t09(aGdT3Zy)5B8px5%*6!_$ywL;cpCKew+@PW_a@Bfr}_x`SCJ)i~_#Q zC{8(e0!K9rt*HottYP0KlAnZ^+*;c^u|$V4b2eEprn|c8)fY7s`jfYtn|-yi?zybA zb@*;Jeh+@P*tGVv^>o<7FU15uOgdr`6-qG)jG7r6H8XUaN02}s1!%a9tG$SG1d_wr zYbj0p5V3c;(op1Ras~z!{&w;S{uuFc!`hk4hu~NrcpHAs!|?zjxxy8}$`m29lyNca zr#uiR06YRWK`nPgScQM5;!#$ODg1%ZssmIg^vPktXCn;Tr3`ZdROlfw!q9rke-V;R zlPo3%kt~~w;JR6HjRv65%VNLyT~kj>i1XK;wMpmg`!UXA;fMDBowH8u#gCvr_5qCf zoqWh!a0)521M3p9^hc{kMMqXyOjkxSw-|*%wk(b%f!<;E`mYg@Ux%V*`?Xe)?&Cp}g z9@Y|GmC+C_;fErMa%i)Z(zAjZBIP86l3$}J%HhpYO8e_kPAN)$)4oHw>wP$zrIg0j zqs%Hwe(VBD?KtNIeR(yPeFuhqJ@+Z}t1#l%bDuz;%V#@CsU?MNth{Y+${82i=egQm z(hHwsOIrU7!`E1|X}yDyE_}3P5Heaa(}rNo&yc!?fwYlkVfR2|C5xc3lAX2$WQQOt z&7u!Lx@1RC>OqSSD&kyVbuYeGv7j2-2*33wSzCCa&;vbe58Z=dcUEq-3iGkjH>!e~qnd0nRrVweTzcZ0#Fq3L+-@Mb#si1PgSp zE`Ke;h}}caOR5^;*Nu4|yd=ofZfz4v`@5}~j3-sV_;-X%>^7P_%_QR!LkAD()4PWb zRwOh}POF&6k`b|oa@W{1JJ_N2M@zaKr1kK`mN*4RVR`9Hu!EnaZVKd4 lPN|y%c}(Q-K;G8Dp448-9qilK_xjuQkzTuglA2<0{|^aVx^4gf literal 3489 zcmb_fZF3V<6n-|@O*UcMrhyg$6oy*{0hjkR~D7@Zv9U zoN2dY!zUpQ=fe0D=fl{Jd0Cn=EXZkEhD8}HIb9NI zS)@!5*)TR?UdIKQFUpY9v7#d{VnIhy=1W186sU`)Z7PUPT`(`3shpW#PMuh|V5RL5 z1^$)ta`VxgUCQQ{d8DQbi zI+eu7>%1gAZRRJ$sscS@mNTwD+U%*x=?U8MAk|$Cgl-pH_Z5Wa3YAjYI+~U0Z?C_R zJ;JPlw#Q$6`R7mHJo@(bUw6LiGmyeSee?0>*B^axqfbHqdLN#F*YSpdLpW^UZMFPpiF zbz+HZumsjw;Q_N)wDOAzl8u#DE3Ag%ZVHi4qe;J3R{x>jBR;K$)(l6wRW@$G51;T) z$tNjrW+sR8MuhMRc7xBCs~yyopKzygJ*p`8;roFrM$R$78EAL(2Z$s36V#U*!L5lw zPubU?97UXmy{?K>16NdbToACJg6(_WikiHt$ zI?3DdBINNkd;VYItkQby0o1eipv@$=RuM=hst6_rtI(5@VK-^r&?xVQ&fK;!jZuPZ zrWcaLxC>HGVyvFTm=mdww>q&G`$$)dbSl`7*GPvH&3?|39zA{sq5BB0I^dSr9><`Y z9Gzci_EA@n{^H$FdH1#WJ#4tm!^V;eG+fr|m)U2YxqJu4TFZLN%WO?8F1M|{9BO%) zZLY=T(5*FYhg)7|6ZNt<%vq{15Kr8N(K=|i1Or~s@?cj>&?)Q)Jz;Zh1=+SzM0Mo#zVMpgi?1oX1gCtB-%0qrZF@HxLviYe?Bzc*Si6<>!JTfw>j`c)FGD7S5F^5lCl1)95xXIR0#YSg8 zI;_e;O!ZE5;h0A~t+^X=@jdSRtesgW`x*-~MajqiANJxTo%AEg=5vaY>hN?N>Qj=X zk|#wWHBgkNR9ap8WTOjOO`)cvHg8dl(ef*S7xOvVR2cKn18ib{?22|*u~`DHVoNmU j%27^HwoTdZsA5~RhjJA!t!)8~&1b0Id`=VHhxh*lrc7i$ diff --git a/youchain-system/src/main/java/com/youchain/Netty/model/Jb.java b/youchain-system/src/main/java/com/youchain/Netty/model/Jb.java new file mode 100644 index 0000000..1ea7baf --- /dev/null +++ b/youchain-system/src/main/java/com/youchain/Netty/model/Jb.java @@ -0,0 +1,10 @@ +package com.youchain.Netty.model; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class Jb { + @ApiModelProperty(value = "点位编码") + String pointCode;//点位编码 +} diff --git a/youchain-system/src/main/java/com/youchain/Netty/rest/PdaHvacController.java b/youchain-system/src/main/java/com/youchain/Netty/rest/PdaHvacController.java new file mode 100644 index 0000000..679f03c --- /dev/null +++ b/youchain-system/src/main/java/com/youchain/Netty/rest/PdaHvacController.java @@ -0,0 +1,77 @@ +/* + * Copyright 2019-2020 Zheng Jie + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.youchain.Netty.rest; + +import com.youchain.Netty.model.Jb; +import com.youchain.annotation.AnonymousAccess; +import com.youchain.annotation.Log; +import com.youchain.basicdata.domain.Point; +import com.youchain.basicdata.repository.PointRepository; +import com.youchain.exception.handler.ApiResult; +import com.youchain.modules.mnt.domain.App; +import com.youchain.modules.mnt.service.AppService; +import com.youchain.modules.mnt.service.dto.AppQueryCriteria; +import com.youchain.utils.BaseStatus; +import com.youchain.utils.BizStatus; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.List; +import java.util.Set; + +/** +* @author zhanghouying +* @date 2019-08-24 +*/ +@RestController +@RequiredArgsConstructor +@Api(tags = "合肥暖通PDA") +@RequestMapping("/api/pdaHvac") +public class PdaHvacController { + private final PointRepository pointRepository; + @Log("解绑备货位") + @ApiOperation("解绑备货位") + @PostMapping(value = "/jb") + @AnonymousAccess + public ResponseEntity Jb(@RequestBody Jb jb){ + ApiResult apiResult=ApiResult.fail(200,"解绑成功",null); + Point point = pointRepository.findByCode(jb.getPointCode()); + if (point!=null){ + if (!point.getStatus().equals(BaseStatus.USED)) { + apiResult=ApiResult.fail(400,"库位未占用",null); + } + else if (!point.getArea().getCode().equals("出库接驳口")){ + apiResult=ApiResult.fail(400,"库位不在出库接驳点",null); + } + else { + point.setStatus(BaseStatus.FREE); + pointRepository.save(point); + } + }else { + apiResult=ApiResult.fail(400,"未查询到库位",null); + } + return new ResponseEntity<>(apiResult,apiResult.getStatus()); + } +} diff --git a/youchain-system/src/main/java/com/youchain/basicdata/model/YhWcModel.java b/youchain-system/src/main/java/com/youchain/basicdata/model/YhWcModel.java new file mode 100644 index 0000000..705c40f --- /dev/null +++ b/youchain-system/src/main/java/com/youchain/basicdata/model/YhWcModel.java @@ -0,0 +1,11 @@ +package com.youchain.basicdata.model; + +import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class YhWcModel { + @ApiModelProperty(value = "工单编码") + String gdCode; +} 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 d55ba51..c0d4908 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 @@ -33,7 +33,7 @@ public interface PointRepository extends JpaRepository, JpaSpecific public List> getKyPointList(); @Query(value = "SELECT p FROM Point p WHERE p.code=?1", nativeQuery = false) Point findByCode(String code); - @Query(value = "SELECT p FROM Point p WHERE p.area.name=?1 and p.status=?2 and p.enabled=1", nativeQuery = false) + @Query(value = "SELECT p FROM Point p WHERE p.area.name=?1 and p.status=?2 and p.enabled=true", nativeQuery = false) List findByAreaAndStatus(String areaName,String status); /** 库位信息化看板*/ diff --git a/youchain-system/src/main/java/com/youchain/basicdata/rest/PointController.java b/youchain-system/src/main/java/com/youchain/basicdata/rest/PointController.java index 9f17074..fccd230 100644 --- a/youchain-system/src/main/java/com/youchain/basicdata/rest/PointController.java +++ b/youchain-system/src/main/java/com/youchain/basicdata/rest/PointController.java @@ -185,6 +185,20 @@ public class PointController { public ResponseEntity queryPoint(PointQueryCriteria criteria, Pageable pageable) { return new ResponseEntity<>(pointService.queryAll(criteria, pageable), HttpStatus.OK); } + @PostMapping("/clearCk") + @ApiOperation("清空备货位") + @AnonymousAccess + public ResponseEntity clearCk() { + /* 清空出库接驳口*/ + List pointList = pointRepository.findByAreaAndStatus("出库接驳口", BaseStatus.USED); + for (Point p : pointList) { + p.setStatus(BaseStatus.FREE); + pointRepository.save(p); + } + ApiResult apiResult=ApiResult.fail(200,"操作成功",null); + return new ResponseEntity<>(apiResult, apiResult.getStatus()); + } + @GetMapping(value = "/queryPointList") @ApiOperation("下拉查询点位") diff --git a/youchain-system/src/main/java/com/youchain/basicdata/service/impl/PointServiceImpl.java b/youchain-system/src/main/java/com/youchain/basicdata/service/impl/PointServiceImpl.java index d7b9f25..b7c31e3 100644 --- a/youchain-system/src/main/java/com/youchain/basicdata/service/impl/PointServiceImpl.java +++ b/youchain-system/src/main/java/com/youchain/basicdata/service/impl/PointServiceImpl.java @@ -146,6 +146,13 @@ public class PointServiceImpl implements PointService { map.put("外部编码", point.getCode()); map.put("名称", point.getName()); map.put("状态", point.getStatus()); + String types=""; + if (point.getType().equals(BaseStatus.STORAGE)) { + types = "存储点"; + } else if (point.getType().equals(BaseStatus.BOX)) { + types = "线边点位"; + } + map.put("存储类型", types); map.put("描述", point.getDescription()); map.put("库区", point.getArea().getName()); map.put("地标码", point.getBeatCode()); diff --git a/youchain-system/src/main/java/com/youchain/businessdata/domain/Inventory.java b/youchain-system/src/main/java/com/youchain/businessdata/domain/Inventory.java index a15084d..995c84c 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/domain/Inventory.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/domain/Inventory.java @@ -108,8 +108,8 @@ public class Inventory extends BaseEntity implements Serializable { private String description; @Column(name = "`be_lock`") - @ApiModelProperty(value = "是否锁定") - private Boolean beLock=false; + @ApiModelProperty(value = "检验") + private Boolean beLock=true; @Column(name = "`be_reject`") @ApiModelProperty(value = "是否不良品") 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 5dea283..5033310 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 @@ -29,5 +29,6 @@ import java.util.List; * @date 2023-08-22 **/ public interface InventoryRepository extends JpaRepository, JpaSpecificationExecutor { - + @Query(value = "select inv from Inventory inv where inv.billCode=?1 ") + List findByBillCode(String billCode); } diff --git a/youchain-system/src/main/java/com/youchain/businessdata/repository/TaskRepository.java b/youchain-system/src/main/java/com/youchain/businessdata/repository/TaskRepository.java index 7008858..9199f3d 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/repository/TaskRepository.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/repository/TaskRepository.java @@ -80,4 +80,6 @@ public interface TaskRepository extends JpaRepository, JpaSpecificat */ @Query(value = "select * from data_task a where a.dst_point_code like 'MA1151-QHL%' and a.create_time > :time", nativeQuery = true) List queryInQHALLData(String time); + + List findByTaskStatus(String inspect); } \ No newline at end of file diff --git a/youchain-system/src/main/java/com/youchain/businessdata/rest/KMReSController.java b/youchain-system/src/main/java/com/youchain/businessdata/rest/KMReSController.java index 8a7d8dc..6787cb5 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/rest/KMReSController.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/rest/KMReSController.java @@ -3,6 +3,8 @@ package com.youchain.businessdata.rest; import com.youchain.annotation.Log; import com.youchain.annotation.AnonymousAccess; import com.youchain.appupdate.inputJson.MissionStateCallback; +import com.youchain.basicdata.domain.Point; +import com.youchain.basicdata.repository.PointRepository; import com.youchain.businessdata.domain.AgvTask; import com.youchain.businessdata.domain.Inventory; import com.youchain.businessdata.domain.ItemKey; @@ -22,6 +24,7 @@ import com.youchain.businessdata.service.dto.AgvTaskDto; import com.youchain.businessdata.service.dto.OrderDto; import com.youchain.exception.handler.ApiResult; import com.youchain.service.LogService; +import com.youchain.utils.BaseStatus; import com.youchain.utils.BizStatus; import com.youchain.utils.UrlApi; import io.swagger.annotations.Api; @@ -49,6 +52,7 @@ public class KMReSController { private final AgvTaskService agvTaskService; private final AgvTaskRepository agvTaskRepository; + private final PointRepository pointRepository; private final TaskRepository taskRepository; private final InventoryRepository inventoryRepository; private final TaskService taskService; @@ -80,10 +84,55 @@ public class KMReSController { } else if (agvTask.getType().equals(BizStatus.ASN)) { //入库 asnTask(id, missionStatus,slotCode); + } else if (agvTask.getType().equals(BizStatus.INV)) { + invTask(id, missionStatus,slotCode); + } else if (agvTask.getType().equals(BizStatus.INV_BACK)) { + invBackTask(id, missionStatus,slotCode); } } } + /* 验货 返空任务完成*/ + private void invBackTask(String id, String missionStatus, String slotCode) { + if (missionStatus.equals(BizStatus.PICKER_RECEIVE)) { + /* 清空起点*/ + Point point=pointRepository.findByCode(slotCode); + point.setStatus(BaseStatus.FREE); + pointRepository.save(point); + }else + if (missionStatus.equals(BizStatus.PICKER_SEND)) { + AgvTask agvTask=agvTaskRepository.getById(Integer.valueOf(id)); + Point point=pointRepository.findByCode(slotCode); + if (point!=null){ + /* 修改任务状态*/ + Task task = getFirstTask(agvTask.getId()); + task.setTaskStatus(BizStatus.FINISH); + taskRepository.save(task); + /* 清除库存占用*/ + Inventory inventory=inventoryRepository.getById(task.getInvId()); + inventory.setQueuedQty(0d); + inventoryRepository.save(inventory); + } + agvTask.setStatus(BizStatus.FINISH); + agvTaskRepository.save(agvTask); + } + } + + private void invTask(String id, String missionStatus, String slotCode) { + if (missionStatus.equals(BizStatus.PICKER_SEND)) { + AgvTask agvTask=agvTaskRepository.getById(Integer.valueOf(id)); + Point point=pointRepository.findByCode(slotCode); + if (point!=null){ + Task task = getFirstTask(agvTask.getId()); + task.setTaskStatus(BizStatus.INSPECT); + task.setMoveQty(task.getPlanQty()); + taskRepository.save(task); + } + agvTask.setStatus(BizStatus.FINISH); + agvTaskRepository.save(agvTask); + } + } + public void asnTask(String id, String missionStatus, String slotCode) { //执行第一个任务后 可以继续执行第二个任务 并携带第一个任务的返回值 第二个任务执行完没有返回值 AgvTaskDto agvTaskDto = agvTaskService.findById(Integer.parseInt(id)); diff --git a/youchain-system/src/main/java/com/youchain/businessdata/rest/PickDetailController.java b/youchain-system/src/main/java/com/youchain/businessdata/rest/PickDetailController.java index 0b350ee..4221407 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/rest/PickDetailController.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/rest/PickDetailController.java @@ -22,22 +22,29 @@ import com.youchain.annotation.AnonymousAccess; import com.youchain.annotation.Log; import com.youchain.basicdata.domain.Box; import com.youchain.basicdata.domain.Item; +import com.youchain.basicdata.domain.Point; +import com.youchain.basicdata.model.YhWcModel; +import com.youchain.basicdata.repository.PointRepository; import com.youchain.basicdata.service.ItemService; import com.youchain.businessdata.ReturnJson.RPTaskList; +import com.youchain.businessdata.domain.AgvTask; import com.youchain.businessdata.domain.Inventory; import com.youchain.businessdata.domain.PickDetail; import com.youchain.businessdata.domain.Task; import com.youchain.businessdata.inputJson.IPPickDetail; import com.youchain.businessdata.inputJson.IScanPut; -import com.youchain.businessdata.service.InventoryLogService; -import com.youchain.businessdata.service.PickDetailService; -import com.youchain.businessdata.service.TaskService; +import com.youchain.businessdata.repository.AgvTaskRepository; +import com.youchain.businessdata.repository.InventoryRepository; +import com.youchain.businessdata.repository.TaskRepository; +import com.youchain.businessdata.service.*; import com.youchain.businessdata.service.dto.PickDetailDto; import com.youchain.businessdata.service.dto.PickDetailQueryCriteria; import com.youchain.businessdata.service.dto.TaskDto; import com.youchain.businessdata.service.dto.TaskQueryCriteria; +import com.youchain.exception.BadRequestException; import com.youchain.exception.handler.ApiError; import com.youchain.exception.handler.ApiResult; +import com.youchain.utils.BaseStatus; import com.youchain.utils.BizStatus; import com.youchain.utils.HttpUtils; import lombok.extern.slf4j.Slf4j; @@ -75,6 +82,11 @@ public class PickDetailController { private final PickDetailService pickDetailService; private final TaskService taskService; + private final TaskRepository taskRepository; + private final AgvTaskService agvTaskService; + private final AgvTaskRepository agvTaskRepository; + private final PointRepository pointRepository; + private final InventoryRepository inventoryRepository; @Log("导出数据") @@ -172,6 +184,83 @@ public class PickDetailController { List t=taskService.queryTaskApp(null); return new ResponseEntity<>(t,HttpStatus.OK); } + @PostMapping("/yhWc") + @Log("验货完成") + @ApiOperation("验货完成") + @AnonymousAccess + public ResponseEntity yhWc(@RequestBody YhWcModel yhWcModel){ + List inventoryList=inventoryRepository.findByBillCode(yhWcModel.getGdCode()); + if (inventoryList.size()<1){ + throw new BadRequestException(HttpStatus.INTERNAL_SERVER_ERROR, "工单号错误,未查询到库存"); + }else { + /* 更新检验状态*/ + for (Inventory inventory:inventoryList){ + if (inventory.getBeLock()==true){ + inventory.setBeLock(false); + inventoryRepository.save(inventory); + } + } + /* 验货返空*/ + List taskList=taskRepository.findByTaskStatus(BizStatus.INSPECT); + for (Task task:taskList){ + /* 生成搬运任务*/ + AgvTask agvTask = new AgvTask(BizStatus.INV_BACK, task.getSrcStock().getCode(), task.getDstPoint().getCode(), task.getSrcPoint().getCode(), BizStatus.OPEN, "PICKER_MOVE"); + agvTaskRepository.save(agvTask); + /* 修改Task状态*/ + task.setTaskStatus(BizStatus.RETURN); + task.setAgvTask(agvTask); + taskRepository.save(task); + } + } + /* 检测验货中的物料-确认返空*/ + ApiResult apiResult=ApiResult.fail(200,"验货完成",null); + return new ResponseEntity<>(apiResult,apiResult.getStatus()); + } + @PostMapping("/yhFk") + @Log("验货-返空") + @ApiOperation("验货-返空") + @AnonymousAccess + public ResponseEntity fk(@RequestBody YhWcModel yhWcModel){ + + + ApiResult apiResult=ApiResult.fail(200,"验货完成",null); + return new ResponseEntity<>(apiResult,apiResult.getStatus()); + } + @PostMapping("/hjYh") + @Log("呼叫验货") + @ApiOperation("呼叫验货") + @AnonymousAccess + public ResponseEntity hjYh(@RequestBody Long[] ids){ + int a=0; + List pointList = pointRepository.findByAreaAndStatus("验货货架", BaseStatus.FREE); + if (ids.length>pointList.size()){ + throw new BadRequestException(HttpStatus.INTERNAL_SERVER_ERROR, "验货货架,没有库位"); + } + for (Long id:ids){ + Inventory inventory=inventoryRepository.getById(id); + if (inventory.getBeLock()==true&&inventory.getQueuedQty()==0){ + Point endPoint=pointList.get(a); + /* 生成搬运任务*/ + AgvTask agvTask = new AgvTask(BizStatus.INV, inventory.getStock().getCode(), inventory.getPoint().getCode(), endPoint.getCode(), BizStatus.OPEN, "PICKER_MOVE"); + agvTaskRepository.save(agvTask); + /* 占用库存*/ + inventory.setQueuedQty(inventory.getQuantity()); + inventoryRepository.save(inventory); + /* 生成Task任务*/ + Task task = new Task(inventory.getItemKey().getItem(), inventory.getItemKey(), inventory.getBillCode(), BizStatus.INV, null, null, null, null, inventory.getStock() + , inventory.getStock(), inventory.getPoint(), endPoint, inventory.getStock().getCode(), inventory.getStock().getCode(), + inventory.getPoint().getCode(), endPoint.getCode(), null, BizStatus.OPEN, inventory.getQuantity(), null, inventory.getId(), inventory.getDept(), agvTask); + taskService.create(task); + System.out.println("id:"+id); + /* 锁定目标位*/ + endPoint.setStatus(BaseStatus.USED); + pointRepository.save(endPoint); + a=a+1; + } + } + ApiResult apiResult=ApiResult.fail(200,"呼叫成功,新增"+a+"条搬运任务",null); + return new ResponseEntity<>(apiResult,apiResult.getStatus()); + } @PostMapping("/pickingApp") @Log("APP拣货确认") 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 71c594a..f47bf90 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 @@ -58,7 +58,9 @@ public class InventoryQueryCriteria{ // NOT_EQUAL 不等于 @Query(type = Query.Type.NOT_EQUAL) private Double quantity; - + /** 是否检验*/ + @Query(type = Query.Type.EQUAL) + private Boolean beLock; @Query(joinName = "stock", propName="code",type = Query.Type.INNER_LIKE) private String stockCode; 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 f2596c0..e22e394 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 @@ -287,14 +287,14 @@ public class AgvTaskServiceImpl implements AgvTaskService { objMap.put("missionData", missionDataArray); jsonObject.putAll(objMap); - /*String resultJson = "{\n" + + String resultJson = "{\n" + " \"data\": null,\n" + " \"code\": \"0\",\n" + " \"message\": null,\n" + " \"success\": true\n" + - "}";*/ - String resultJson = HttpPostUtil.sendPostReq(UrlApi.submitMission, jsonObject.toString()); - if (resultJson == null) { + "}"; +// String resultJson = HttpPostUtil.sendPostReq(UrlApi.submitMission, jsonObject.toString()); + if (resultJson== null) { return null; } JSONObject resulObject = JSON.parseObject(resultJson); 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 4bd5a81..8c7c1c2 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 @@ -212,7 +212,7 @@ public class InventoryServiceImpl implements InventoryService { if (billCode.isEmpty()) { return null; } - String hql = " from Inventory inv where 1=1 and inv.billCode in (:billCode) and inv.quantity-inv.queuedQty>0 "; + String hql = " from Inventory inv where 1=1 and inv.billCode in (:billCode) "; Query query = entityManager.createQuery(hql); query.setParameter("billCode", billCode); List list = query.getResultList(); diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/MlsServiceImpl.java b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/MlsServiceImpl.java index e717b10..01107f5 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/MlsServiceImpl.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/MlsServiceImpl.java @@ -442,7 +442,7 @@ public class MlsServiceImpl implements MlsService { Point endPoint; List pointList = pointRepository.findByAreaAndStatus("出库接驳口", BaseStatus.FREE); if (pointList.size() < 1) { - errorMsgList.add(inv.getItemKey().getPropC1() + "标签分配无空闲缓存位!"); + errorMsgList.add(inv.getItemKey().getPropC1() + "标签分配无空闲备货位!"); continue; /* 出库接驳口无空闲库位,更新状态重新分配*/ /*pointList = pointRepository.findByAreaAndStatus("出库接驳口", BaseStatus.USED); @@ -451,6 +451,14 @@ public class MlsServiceImpl implements MlsService { pointRepository.save(p); }*/ } + if (inv.getBeLock()==true&&BaseCode.PICK_YH_QR.equals("1")){ + errorMsgList.add(inv.getItemKey().getPropC1() + "库存未验货!"); + continue; + } + if (inv.getQueuedQty()>0){ + errorMsgList.add(inv.getItemKey().getPropC1() + "库存已被占用!"); + continue; + } endPoint = pointList.get(0); endPoint.setStatus(BaseStatus.USED); pointRepository.save(endPoint); @@ -476,7 +484,9 @@ public class MlsServiceImpl implements MlsService { Task task = createTask(item, itemKey, pd, inv.getBillCode(), stock, startPoint, endPoint, agvTask, inv); taskToCreate.add(task); } - + if (!errorMsgList.isEmpty()) { + throw new RuntimeException(errorMsgList.toString()); + } ExecutorService executor = ThreadPoolExecutorUtil.getPoll("getIssueInfo-job"); // 批量更新库存信息 @@ -517,12 +527,9 @@ public class MlsServiceImpl implements MlsService { executor.shutdown(); }); - if (!errorMsgList.isEmpty()) { throw new RuntimeException(errorMsgList.toString()); } - - } private void processInventory(Inventory inv, Point endPoint) { diff --git a/youchain-system/src/main/java/com/youchain/modules/quartz/task/configTask.java b/youchain-system/src/main/java/com/youchain/modules/quartz/task/configTask.java index 80f01e3..4efca34 100644 --- a/youchain-system/src/main/java/com/youchain/modules/quartz/task/configTask.java +++ b/youchain-system/src/main/java/com/youchain/modules/quartz/task/configTask.java @@ -15,5 +15,6 @@ public class configTask { BaseCode.MLS_IP=body.getString("MLS_IP"); BaseCode.PLC_PORT=body.getIntValue("PLC_PORT"); BaseCode.PLC_IP=body.getString("PLC_IP"); + BaseCode.PICK_YH_QR=body.getString("PICK_YH_QR"); } } 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 4545d17..94eb455 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 @@ -54,6 +54,34 @@ public class pickTask { } + public void yhTask() { + /* 发送验货任务*/ + pickTaskByType(BizStatus.INV); + /* 发送验货返库任务*/ + pickTaskByType(BizStatus.INV_BACK); + System.out.println("发送验货任务"); + } + + private void pickTaskByType(String agvType) { + // 下发验货任务 + List agvTaskList = agvTaskService.queryByAgvTask(BizStatus.OPEN, agvType); + if (agvTaskList.size() > 0) { + /* 第一个任务的创建视角*/ + long lastTaskTime = agvTaskList.get(0).getCreateTime().getTime(); + if ((agvTaskList.size() >= MAX_TASK_COUNT)) { + /* 数量大于等于5时*/ + // 取集合中的前五个任务合并发送 + List agvTasks=agvTaskList.subList(0, MAX_TASK_COUNT); + Result(agvTaskService.sendAgvTaskLXImpl(agvTasks)); + }else if((System.currentTimeMillis() - lastTaskTime >=1*60*1000) ){ + Result(agvTaskService.sendAgvTaskLXImpl(agvTaskList)); + } else { +// throw new RuntimeException("出库料箱任务未满足条件(不满足五个料箱需等待2分钟)!"); + } + } else { +// throw new RuntimeException("无出库料箱任务!"); + } + } private void Result(String result) { if(result==null ||result.length()==0){ diff --git a/youchain-system/src/main/java/com/youchain/utils/BaseCode.java b/youchain-system/src/main/java/com/youchain/utils/BaseCode.java index 3eafbb5..55e9787 100644 --- a/youchain-system/src/main/java/com/youchain/utils/BaseCode.java +++ b/youchain-system/src/main/java/com/youchain/utils/BaseCode.java @@ -11,6 +11,7 @@ import javax.annotation.PostConstruct; **/ @Component public class BaseCode { + public static String PICK_YH_QR="0"; /** PLC IP*/ public static String PLC_IP = "10.173.188.201"; /** PLC 端口号*/ diff --git a/youchain-system/src/main/java/com/youchain/utils/BizStatus.java b/youchain-system/src/main/java/com/youchain/utils/BizStatus.java index 7b08ef3..465e262 100644 --- a/youchain-system/src/main/java/com/youchain/utils/BizStatus.java +++ b/youchain-system/src/main/java/com/youchain/utils/BizStatus.java @@ -31,6 +31,8 @@ public interface BizStatus { public static String CANCEL = "CANCEL"; /* 放料*/ public static String PICKER_SEND = "PICKER_SEND"; + /** 取料*/ + public static String PICKER_RECEIVE = "PICKER_RECEIVE"; /** * 出入库状态-已关闭 */ @@ -60,6 +62,8 @@ public interface BizStatus { * 任务状态-执行中 */ public static String ATCALL = "ATCALL"; + /** 任务状态-验货中*/ + public static String INSPECT = "INSPECT"; /** * 任务状态-工作中 @@ -93,9 +97,11 @@ public interface BizStatus { public static String PICK = "PICK"; /** - * 盘点任务 + * 验货任务 */ public static String INV = "INV"; + /** 验货返库*/ + public static String INV_BACK = "INV_BACK"; /** * 库存日志-移位 @@ -207,5 +213,4 @@ public interface BizStatus { * 空车出库/空箱出库 */ public static String EMPTY_OUT = "EMPTY_OUT"; - }