From aef1578bf182a0dd1023797e80636304c54e1c87 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, 11 Jul 2024 21:11:16 +0800 Subject: [PATCH] no message --- .../java/com/youchain/utils/HttpPostUtil.java | 70 +++++++++------ .../com/youchain/utils/HttpPostUtil.class | Bin 3654 -> 4641 bytes .../java/com/youchain/rest/LogController.java | 5 +- .../service/dto/LogQueryCriteria.java | 2 + .../inputJson/MissionStateCallback.java | 2 +- .../basicdata/repository/PointRepository.java | 2 +- .../basicdata/repository/StockRepository.java | 1 + .../basicdata/rest/PointController.java | 2 +- .../basicdata/rest/StockController.java | 10 +-- .../businessdata/rest/AgvTaskController.java | 2 +- .../rest/KMReSAgvTaskController.java | 82 ++++++++++++++++++ .../businessdata/rest/KMReSController.java | 42 ++++++--- .../businessdata/rest/MlsController.java | 8 +- .../businessdata/service/TaskService.java | 2 +- .../service/impl/AgvTaskServiceImpl.java | 17 ++-- .../service/impl/InventoryServiceImpl.java | 26 ++---- .../service/impl/MoServiceImpl.java | 2 +- .../service/impl/TaskServiceImpl.java | 6 +- .../quartz/rest/QuartzJobController.java | 3 +- .../quartz/service/dto/JobQueryCriteria.java | 3 +- .../youchain/modules/quartz/task/moTask.java | 2 +- .../modules/quartz/task/orderTask.java | 2 +- .../modules/quartz/task/pickTask.java | 20 ++--- .../youchain/modules/quartz/task/plcTask.java | 36 ++++---- .../java/com/youchain/utils/BizStatus.java | 2 + .../main/resources/config/application-dev.yml | 4 +- .../src/main/resources/config/application.yml | 2 +- 27 files changed, 234 insertions(+), 121 deletions(-) create mode 100644 youchain-system/src/main/java/com/youchain/businessdata/rest/KMReSAgvTaskController.java diff --git a/youchain-common/src/main/java/com/youchain/utils/HttpPostUtil.java b/youchain-common/src/main/java/com/youchain/utils/HttpPostUtil.java index a717bc6..7d30127 100644 --- a/youchain-common/src/main/java/com/youchain/utils/HttpPostUtil.java +++ b/youchain-common/src/main/java/com/youchain/utils/HttpPostUtil.java @@ -1,7 +1,7 @@ package com.youchain.utils; -import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; +import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; import org.apache.commons.compress.utils.IOUtils; @@ -62,31 +62,51 @@ public class HttpPostUtil { System.out.println("token:"+token); InputStream instr = null; String str = ""; - try { - URL url = new URL(api_url); - URLConnection urlCon = url.openConnection(); - urlCon.setConnectTimeout(3000); - byte[] xmlData = request.getBytes(); - urlCon.setDoOutput(true); - urlCon.setDoInput(true); - urlCon.setUseCaches(false); - urlCon.setRequestProperty("token", token); - urlCon.setRequestProperty("content-Type", "application/json"); - urlCon.setRequestProperty("charset", "UTF-8"); - urlCon.setRequestProperty("Content-length", String.valueOf(xmlData.length)); - DataOutputStream printout = new DataOutputStream(urlCon.getOutputStream()); - printout.write(xmlData); - printout.flush(); - printout.close(); - instr = urlCon.getInputStream(); - byte[] bis = IOUtils.toByteArray(instr); - String ResponseString = new String(bis, "UTF-8"); - if ((ResponseString == null) || ("".equals(ResponseString.trim()))) { - System.out.println("返回空"); + int i=1; + boolean bit=false; + while (true) { + try { + URL url = new URL(api_url); + URLConnection urlCon = url.openConnection(); + urlCon.setConnectTimeout(3000); + byte[] xmlData = request.getBytes(); + urlCon.setDoOutput(true); + urlCon.setDoInput(true); + urlCon.setUseCaches(false); + urlCon.setRequestProperty("token", token); + urlCon.setRequestProperty("content-Type", "application/json"); + urlCon.setRequestProperty("charset", "UTF-8"); + urlCon.setRequestProperty("Content-length", String.valueOf(xmlData.length)); + DataOutputStream printout = new DataOutputStream(urlCon.getOutputStream()); + printout.write(xmlData); + printout.flush(); + printout.close(); + instr = urlCon.getInputStream(); + byte[] bis = IOUtils.toByteArray(instr); + String ResponseString = new String(bis, "UTF-8"); + if ((ResponseString == null) || ("".equals(ResponseString.trim()))) { + System.out.println("返回空"); + }else { + JSONObject jsonObject=JSONObject.parseObject(ResponseString); + if (jsonObject.getString("code").equals("0")){ + bit=true; + } + } + str = ResponseString; + } catch (Exception e) { + log.info(api_url + "接口异常"); + } finally { + if (i>3||bit==true){ + break; + } + try { + Thread.sleep(5000); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + // 跳出循环 + i=i+1; } - str = ResponseString; - } catch (Exception e) { - log.info(api_url+"接口异常"); } return str; } diff --git a/youchain-common/target/classes/com/youchain/utils/HttpPostUtil.class b/youchain-common/target/classes/com/youchain/utils/HttpPostUtil.class index 29eb18452db6351d9b89d130479c4d417320e139..182278b9b27e0fa8aac7cf948e03fbf686fb4197 100644 GIT binary patch delta 2410 zcma)733n4!6#iZ^$(u~3v;+!F*{l|&ASZ}eHB~DrvKK1|6cC%XF{HFfZ38HxVR69? zkccdbid#iRpx`u60T)C?Q9;}{TyXmb>N(c$O=*iqk2r_j>mOG4LpG-bv&iUr*$-WSQ?)mD-1k? zEfUX4JZInnJTI};zzf*sme{`IlcS=?T8SO3OQKm~5;Np3>AkMXlu^@|h)=GpiBu&8 z@+Vd$>Vo0gSY@~}9K1f`>@x8p z?DQOWVNMG&CU#?wM5~FHus6NVJ*c1rdrj=aepX=OWxQhIRlH{60A4q7P?ol(!PuGGN)xH% zBfUZlD9-syc9C#3xzJb}iPZCi29GbCCeWwri)gU3g5tty={b7Yj1VOX@KnH)r>D^; zIcP_57UU>6dWN(>?4aYqWwc&ru{SQKZ?*$)1x9n`!<86A)To`(H&BSn(q|brrxdK7 z!XAZP7>jY-V=T5}JSM<{X?PS9F^M79q5`Fu46==Zui~1H{U|~iu4dTZU|>Wm zuHhOVdei6$_L`%Zjv3ted{VBQYi`UWpafbQDvrRAnC1Mqhb0n^lsBr8oK(=83 zv{O+K5@A0o8O7(~hTvB1^;N0*cv49wlfxtqr!s1X$Hlwf=?(!CBLu_~h%Gi**G1LVo)a;H>Q~ov7h)_2N zKCA;?&;`$ScFykF+3L2x>5tWxwjC)chKnL`Aqg;Djm`;9&$?m!2cRdNbfJ9zQ z5-%fi1tzAjn(z%|@Z;q0Hu85bKRrMuzD3@?%Miy%qR&X89~tUb%n%x83O{CvJj@pT zah=FVl^BL>AMx$0tKpjh}5LY2A<`K7$xJAS*A#OQww<8r3s|Z|6 z;Ccd{CSVHz+X!eTU>5`Jmiw8Uq`2sIVr`ewOuE@Y$cXX?H)d=e_*0@Pq0JB3pA4s>rLSawJ@MSUxA3%08^Y(`eci_Ue4 zzsug})5Zhn4AO}O#!A%sX~IK0yt+23J^OEAnTvW75_KoPYGdR2r;skEnPj;;n@N=4 k>4=kL?cFxtX{Bs3flvm;J5i`Qt~jOR_TntTH5cmt1R5IuiU0rr delta 1498 zcmaKr?Nd}$9LGO*AMU+-_oBF#ctt@8nn(*WP}`m?u`E-}hinGsQ03Uyh*uyV#}dQqcOe?Tvw-t~eP&D2cvJC}5vUbM6OJ-_qY-@`e-@An)l zJU>1C{oeyaKpE#O=CVG*BWy58S_D~dvQe#%DtOGImd8ytnLJ@oXAxzyf-M$X*=A8d zy|Nk@#Rp;m;~~ zPQmjgFPOY&@KS_QUN&iq@(Qn-yk@fBq}`;(;B|{Pc+- zg>2sExXlN2*?dU1%|{A)=ysb!g~5;c#O(+br9b6_#?;Npoyn5AhLVb8Dp}c_YHUue zOf}Uex7mEg=Qib>v^hnuO&{}YzEJQbokKU9m!9%j^W_ z%dSLLP1f-B{b;Ae2(Um<_nkT1BDOsqK%84;7vVN;m#F!Dzgzj5w!oce?@p_*Mp4yW zGK)L7Q+h1n1Pf&!W(}R(%_1pzkPTF@7=vEf-y=U$E;WyPB|5^NSlq|`l8dIZRDALg z>jAMeIr&AFv0OFgM=He^ap(qNUrYJ)XCR)H}_9-%9v&_*WHZRLgrj@p_A@$&shV8yw&qpq__-{Xf`8?r zd^M6EkRzsl_LUQq(_QeD6Y`a_SSe?e=p{*reEvr}I^q8W`tq6X%O@*%Sw1y#HB&Bj h>3z*YD;AgNDps1|rap?*Bh#*UWK(4KkoW>T{0|gp7x4f9 diff --git a/youchain-logging/src/main/java/com/youchain/rest/LogController.java b/youchain-logging/src/main/java/com/youchain/rest/LogController.java index e978dfb..d9300cb 100644 --- a/youchain-logging/src/main/java/com/youchain/rest/LogController.java +++ b/youchain-logging/src/main/java/com/youchain/rest/LogController.java @@ -15,6 +15,7 @@ */ package com.youchain.rest; +import com.youchain.annotation.AnonymousAccess; import com.youchain.utils.SecurityUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -61,7 +62,7 @@ public class LogController { } @GetMapping @ApiOperation("日志查询") - @PreAuthorize("@el.check()") + @AnonymousAccess public ResponseEntity queryLog(LogQueryCriteria criteria, Pageable pageable){ criteria.setLogType("INFO"); return new ResponseEntity<>(logService.queryAll(criteria,pageable), HttpStatus.OK); @@ -77,7 +78,7 @@ public class LogController { @GetMapping(value = "/error") @ApiOperation("错误日志查询") - @PreAuthorize("@el.check()") + @AnonymousAccess public ResponseEntity queryErrorLog(LogQueryCriteria criteria, Pageable pageable){ criteria.setLogType("ERROR"); return new ResponseEntity<>(logService.queryAll(criteria,pageable), HttpStatus.OK); diff --git a/youchain-logging/src/main/java/com/youchain/service/dto/LogQueryCriteria.java b/youchain-logging/src/main/java/com/youchain/service/dto/LogQueryCriteria.java index e324caa..999a692 100644 --- a/youchain-logging/src/main/java/com/youchain/service/dto/LogQueryCriteria.java +++ b/youchain-logging/src/main/java/com/youchain/service/dto/LogQueryCriteria.java @@ -37,6 +37,8 @@ public class LogQueryCriteria { @Query private String logType; + @Query(type = Query.Type.RIGHT_LIKE) + private String description; @Query(type = Query.Type.BETWEEN) private List createTime; diff --git a/youchain-system/src/main/java/com/youchain/appupdate/inputJson/MissionStateCallback.java b/youchain-system/src/main/java/com/youchain/appupdate/inputJson/MissionStateCallback.java index b52acc8..c2d4202 100644 --- a/youchain-system/src/main/java/com/youchain/appupdate/inputJson/MissionStateCallback.java +++ b/youchain-system/src/main/java/com/youchain/appupdate/inputJson/MissionStateCallback.java @@ -18,5 +18,5 @@ public class MissionStateCallback { String missionStatus; /* 当前点位*/ @ApiModelProperty(value = "当前点位") - String slotCode; + String slotCode="222"; } 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 1527558..d55ba51 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 @@ -65,7 +65,7 @@ public interface PointRepository extends JpaRepository, JpaSpecific +" order by p.pos_x,p.pos_y asc " +" LIMIT ?1,?2 ", nativeQuery = true) List> getDataPointLimit(int currentPage, int pageSize); - @Query(value =" select p.`code` 'pointCode',i.`code` 'itemCode' from base_point p " + @Query(value =" select p.`code` 'pointCode',i.`code` 'itemCode' from base_point p " +" left join base_area a on p.area_id=a.id " +" left join data_inventory inv on inv.point_id=p.id " +" left join data_item_key ik on ik.id=inv.item_key_id " diff --git a/youchain-system/src/main/java/com/youchain/basicdata/repository/StockRepository.java b/youchain-system/src/main/java/com/youchain/basicdata/repository/StockRepository.java index ade496c..b182a0e 100644 --- a/youchain-system/src/main/java/com/youchain/basicdata/repository/StockRepository.java +++ b/youchain-system/src/main/java/com/youchain/basicdata/repository/StockRepository.java @@ -44,4 +44,5 @@ public interface StockRepository extends JpaRepository, JpaSpecific */ @Query(value = "SELECT * FROM base_stock u WHERE u.code = ?1 ", nativeQuery = true) Stock getStockByCode(String code); + Stock findFirstByStatus(String status); } \ No newline at end of file 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 6729af5..9f17074 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 @@ -120,7 +120,7 @@ public class PointController { ApiError apiError = ApiError.errorJosn(BAD_REQUEST.value(), "找不到库区" + areaCode); return new ResponseEntity(apiError, HttpStatus.valueOf(apiError.getStatus())); } - Point point = pointService.getPoint(code, null, null, null); + Point point = pointRepository.findByCode(code); if (point == null) { point = new Point(); point.setCode(code); diff --git a/youchain-system/src/main/java/com/youchain/basicdata/rest/StockController.java b/youchain-system/src/main/java/com/youchain/basicdata/rest/StockController.java index 0b6bcff..38f7548 100644 --- a/youchain-system/src/main/java/com/youchain/basicdata/rest/StockController.java +++ b/youchain-system/src/main/java/com/youchain/basicdata/rest/StockController.java @@ -97,7 +97,7 @@ public class StockController { int j=0; String code=readAll.get(i).get("代码").toString().trim(); String stockTypeCode=readAll.get(i).get("类型").toString().trim(); - String pointCode=readAll.get(i).get("点位").toString().trim(); +// String pointCode=readAll.get(i).get("点位").toString().trim(); StockType st=stockTypeService.findByCode(stockTypeCode); if(code==null || code.length()<=0){ break; @@ -112,19 +112,19 @@ public class StockController { stock.setCode(code); stock.setName(code); stock.setStatus(BaseStatus.FREE); - if (ImportEntityUtils.stringFlag(pointCode)){ + /*if (ImportEntityUtils.stringFlag(pointCode)){ Point point=pointRepository.findByCode(pointCode); stock.setPoint(point); - } + }*/ stock.setEnabled(true); stock.setStockType(st); stock.setDept(UserUtils.getDept()); stockService.create(stock); }else{ - if (ImportEntityUtils.stringFlag(pointCode)){ + /*if (ImportEntityUtils.stringFlag(pointCode)){ Point point=pointRepository.findByCode(pointCode); stock.setPoint(point); - } + }*/ stock.setCode(code); stock.setName(code); stock.setStockType(st); diff --git a/youchain-system/src/main/java/com/youchain/businessdata/rest/AgvTaskController.java b/youchain-system/src/main/java/com/youchain/businessdata/rest/AgvTaskController.java index e5a6b62..5d374ae 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/rest/AgvTaskController.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/rest/AgvTaskController.java @@ -112,7 +112,7 @@ public class AgvTaskController { return new ResponseEntity<>(HttpStatus.OK); } @PostMapping("/closeAgvTask") - @Log("关闭agvTask") + @Log("取消搬运任务") @AnonymousAccess public ResponseEntity closeAgvTask(@RequestBody Long id) { agvTaskService.closeAgvTask(id); diff --git a/youchain-system/src/main/java/com/youchain/businessdata/rest/KMReSAgvTaskController.java b/youchain-system/src/main/java/com/youchain/businessdata/rest/KMReSAgvTaskController.java new file mode 100644 index 0000000..c16d650 --- /dev/null +++ b/youchain-system/src/main/java/com/youchain/businessdata/rest/KMReSAgvTaskController.java @@ -0,0 +1,82 @@ +package com.youchain.businessdata.rest; + +import com.youchain.annotation.AnonymousAccess; +import com.youchain.annotation.Log; +import com.youchain.appupdate.inputJson.MissionStateCallback; +import com.youchain.businessdata.domain.AgvTask; +import com.youchain.businessdata.domain.ItemKey; +import com.youchain.businessdata.domain.Task; +import com.youchain.businessdata.inputJson.ReturnIssueInfo; +import com.youchain.businessdata.inputJson.ReturnIssueInfoParams; +import com.youchain.businessdata.inputJson.ReturnMoInfo; +import com.youchain.businessdata.inputJson.ReturnMoParams; +import com.youchain.businessdata.repository.AgvTaskRepository; +import com.youchain.businessdata.repository.InventoryRepository; +import com.youchain.businessdata.repository.TaskRepository; +import com.youchain.businessdata.service.AgvTaskService; +import com.youchain.businessdata.service.MlsService; +import com.youchain.businessdata.service.OrderService; +import com.youchain.businessdata.service.TaskService; +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.BizStatus; +import com.youchain.utils.UrlApi; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.sql.Timestamp; +import java.util.Date; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.concurrent.CompletableFuture; + + +@RestController +@RequiredArgsConstructor +@Api(tags = "KMReS") +@RequestMapping("/api/amr") +@Slf4j +public class KMReSAgvTaskController { + + private final KMReSController kmReSController; + private final AgvTaskRepository agvTaskRepository; + + @PostMapping("/cancelAgvTasks") + @Log("取消搬运任务") + @ApiOperation("取消搬运任务") + @AnonymousAccess + public ResponseEntity closeAgvTask(@RequestBody Long id) { + AgvTask agvTask=agvTaskRepository.getById(Math.toIntExact(id)); + MissionStateCallback missionStateCallback=new MissionStateCallback(); + missionStateCallback.setMissionStatus(BizStatus.CANCEL); + missionStateCallback.setMissionCode(agvTask.getJobForce()); + missionStateCallback.setContainerCode(agvTask.getStockCode()); + kmReSController.missionStateCallbackChild(missionStateCallback); + return new ResponseEntity<>(ApiResult.fail(200, "操作成功", null),HttpStatus.OK); + } + @PostMapping("/pickerSendAgvTasks") + @Log("完成搬运任务") + @ApiOperation("完成搬运任务") + @AnonymousAccess + public ResponseEntity pickerSendAgvTask(@RequestBody Long id) { + AgvTask agvTask=agvTaskRepository.getById(Math.toIntExact(id)); + MissionStateCallback missionStateCallback=new MissionStateCallback(); + missionStateCallback.setMissionStatus(BizStatus.PICKER_SEND); + missionStateCallback.setMissionCode(agvTask.getJobForce()); + missionStateCallback.setContainerCode(agvTask.getStockCode()); + missionStateCallback.setSlotCode(agvTask.getEndSlotCode()); + kmReSController.missionStateCallbackChild(missionStateCallback); + return new ResponseEntity<>(ApiResult.fail(200, "操作成功", null),HttpStatus.OK); + } +} 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 9ed6cba..8a7d8dc 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 @@ -4,6 +4,7 @@ import com.youchain.annotation.Log; import com.youchain.annotation.AnonymousAccess; import com.youchain.appupdate.inputJson.MissionStateCallback; import com.youchain.businessdata.domain.AgvTask; +import com.youchain.businessdata.domain.Inventory; import com.youchain.businessdata.domain.ItemKey; import com.youchain.businessdata.domain.Task; import com.youchain.businessdata.inputJson.ReturnIssueInfo; @@ -11,6 +12,7 @@ import com.youchain.businessdata.inputJson.ReturnIssueInfoParams; import com.youchain.businessdata.inputJson.ReturnMoInfo; import com.youchain.businessdata.inputJson.ReturnMoParams; import com.youchain.businessdata.repository.AgvTaskRepository; +import com.youchain.businessdata.repository.InventoryRepository; import com.youchain.businessdata.repository.TaskRepository; import com.youchain.businessdata.service.AgvTaskService; import com.youchain.businessdata.service.MlsService; @@ -48,6 +50,7 @@ public class KMReSController { private final AgvTaskService agvTaskService; private final AgvTaskRepository agvTaskRepository; private final TaskRepository taskRepository; + private final InventoryRepository inventoryRepository; private final TaskService taskService; private final OrderService orderService; private final MlsService mlsService; @@ -59,6 +62,11 @@ public class KMReSController { @AnonymousAccess public ResponseEntity missionStateCallback(@RequestBody MissionStateCallback missionStateCallback) { System.out.println("接口任务回调:"+missionStateCallback.toString()); + missionStateCallbackChild(missionStateCallback); + return ResponseEntity.ok(ApiResult.success(HttpStatus.OK.value(), "", "")); + } + + public void missionStateCallbackChild(MissionStateCallback missionStateCallback) { String missionCode = missionStateCallback.getMissionCode(); // 作业 id String containerCode = missionStateCallback.getContainerCode(); // 容器编号 String missionStatus = missionStateCallback.getMissionStatus(); // 作业当前状态 @@ -74,7 +82,6 @@ public class KMReSController { asnTask(id, missionStatus,slotCode); } } - return ResponseEntity.ok(ApiResult.success(HttpStatus.OK.value(), "", "")); } public void asnTask(String id, String missionStatus, String slotCode) { @@ -82,12 +89,9 @@ public class KMReSController { AgvTaskDto agvTaskDto = agvTaskService.findById(Integer.parseInt(id)); AgvTask agvTask = agvTaskService.toEntity(agvTaskDto); Task task = getFirstTask(agvTask.getId()); - /*if (agvTask.getEndSlotCode().equals(slotCode)){ - missionStatus="PICKER_SEND"; - }*/ agvTaskService.agvTaskCallback(agvTask, task, missionStatus); - if (missionStatus.equals("PICKER_SEND")) { + if (missionStatus.equals(BizStatus.PICKER_SEND)) { CompletableFuture.runAsync(() -> { returnMo(task.getBillCode());// 回传MO信息 }); @@ -95,9 +99,9 @@ public class KMReSController { } public void pickTask(String id, String containerCode, String missionStatus) { - if ("CANCELED".equals(missionStatus)) { + if (BizStatus.CANCEL.equals(missionStatus)) { cancelAgvTasks(id); - } else if ("PICKER_SEND".equals(missionStatus)){ + } else if (BizStatus.PICKER_SEND.equals(missionStatus)){ AgvTask agvTask = agvTaskRepository.getById(Integer.valueOf(id)); Task task = getFirstTask(agvTask.getId()); agvTaskService.agvTaskCallback(agvTask, missionStatus, containerCode); @@ -110,13 +114,23 @@ public class KMReSController { } public void cancelAgvTasks(String id) { - List agvTaskList = agvTaskService.findByjobCode(id); - for (AgvTask agvTask : agvTaskList) { - if (!agvTask.getStatus().equals(BizStatus.FINISH)) { - agvTask.setStatus(BizStatus.CANCEL); - agvTask.setEndTime(new Timestamp(new Date().getTime())); - agvTaskService.update(agvTask); - } + AgvTask agvTask = agvTaskRepository.getById(Integer.valueOf(id)); + if (!agvTask.getStatus().equals(BizStatus.FINISH)) { + agvTask.setStatus(BizStatus.CANCEL); + agvTask.setEndTime(new Timestamp(new Date().getTime())); + agvTaskService.update(agvTask); + /* 取消Task*//* + List taskList=taskRepository.getAgvTaskList(agvTask.getId()); + for (Task task:taskList){ + task.setTaskStatus(BizStatus.CANCEL); + taskRepository.save(task); + if (task.getInvId()!=null) { + *//* 退回库存*//* + Inventory inventory = inventoryRepository.getById(task.getInvId()); + inventory.setQueuedQty(0d); + inventoryRepository.save(inventory); + } + }*/ } } diff --git a/youchain-system/src/main/java/com/youchain/businessdata/rest/MlsController.java b/youchain-system/src/main/java/com/youchain/businessdata/rest/MlsController.java index ab5ab6f..3f3625c 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/rest/MlsController.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/rest/MlsController.java @@ -89,12 +89,12 @@ public class MlsController { @AnonymousAccess @Log("叫料指令") @ApiOperation("叫料指令") - public ResponseEntity getIssueInfo(@RequestBody IssueInfo issueInfo) { - /*try { + public synchronized ResponseEntity getIssueInfo(@RequestBody IssueInfo issueInfo) { + try { + mlsService.getIssueInfo(issueInfo); } catch (Exception e) { return new ResponseEntity<>(ApiResult.success(BAD_REQUEST.value(), e.getMessage(), ""), HttpStatus.BAD_REQUEST); - }*/ - mlsService.getIssueInfo(issueInfo); + } return new ResponseEntity<>(ApiResult.success(OK.value(), "", ""), HttpStatus.OK); } diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/TaskService.java b/youchain-system/src/main/java/com/youchain/businessdata/service/TaskService.java index 34c3e4b..f99c52c 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/TaskService.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/TaskService.java @@ -105,7 +105,7 @@ public interface TaskService { * @param taskId * @throws Exception */ - void pickConfirm(long taskId,double pickedQuantity) throws Exception; + void pickConfirm(long taskId,double pickedQuantity); /** * 退货 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 6963fc4..f2596c0 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 @@ -379,7 +379,7 @@ public class AgvTaskServiceImpl implements AgvTaskService { @Transactional(rollbackFor = Exception.class) public void agvTaskCallback(AgvTask agvTask, Task task, String status) { - if (status.equals("PICKER_SEND")) { + if (status.equals(BizStatus.PICKER_SEND)) { //入库 if (agvTask.getType().equals(BizStatus.ASN)&&task!=null) { //增加库存 @@ -420,10 +420,13 @@ public class AgvTaskServiceImpl implements AgvTaskService { /* 解绑容器库位*/ Stock stock=task.getSrcStock(); Point point=stock.getPoint(); - point.setStatus(BaseStatus.FREE); - pointRepository.save(point); + if (point!=null){ + point.setStatus(BaseStatus.FREE); + pointRepository.save(point); + } stock.setStatus(BaseStatus.FREE); stock.setPoint(null); + stock.setName(stock.getCode()); stockRepository.save(stock); /*关闭Task*/ task.setTaskStatus(BizStatus.CLOSE); @@ -441,17 +444,17 @@ public class AgvTaskServiceImpl implements AgvTaskService { @Transactional(rollbackFor = Exception.class) public void agvTaskCallback(AgvTask agvTask, String status, String containerCode) { - if (status.equals("PICKER_SEND")) { + if (status.equals(BizStatus.PICKER_SEND)) { //小件:AGV把料箱放到料箱车上扣减库存 List taskList = taskRepository.getAgvTaskList(agvTask.getId()); //扣除库存 for (Task task : taskList) { - try { - taskService.pickConfirm(task.getId(), task.getPlanQty()); + taskService.pickConfirm(task.getId(), task.getPlanQty()); + /*try { } catch (Exception e) { throw new RuntimeException(e.getMessage()); - } + }*/ } agvTask.setStatus(BizStatus.FINISH); 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 a1df175..4bd5a81 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 @@ -104,27 +104,15 @@ public class InventoryServiceImpl implements InventoryService { List> list = new ArrayList<>(); for (InventoryDto inventory : all) { Map map = new LinkedHashMap<>(); - map.put("单据号", inventory.getBillCode()); - map.put("物料属性", inventory.getItemKey()); - map.put("点位", inventory.getPoint()); - map.put("点位号", inventory.getPointCode()); - map.put("容器", inventory.getStock()); + map.put("工单编号", inventory.getBillCode()); + map.put("MO票", inventory.getItemKey().getPropC1()); + map.put("物料编码", inventory.getItemKey().getItem().getCode()); + map.put("物料名称", inventory.getItemKey().getItem().getName()); + map.put("库位号", inventory.getPointCode()); map.put("容器号", inventory.getStockCode()); - map.put("大容器", inventory.getBigStock()); map.put("数量", inventory.getQuantity()); - map.put("分配数", inventory.getQueuedQty()); - map.put("重量", inventory.getWeight()); - map.put("体积", inventory.getVolume()); - map.put("描述", inventory.getDescription()); - map.put("是否锁定", inventory.getBeLock()); - map.put("是否不良品", inventory.getBeReject()); - map.put("状态", inventory.getStatus()); - map.put("存货日期", inventory.getStorageDate()); - map.put("仓库ID", inventory.getDept()); - map.put("创建人", inventory.getCreateBy()); - map.put("修改人", inventory.getUpdateBy()); - map.put("创建时间", inventory.getCreateTime()); - map.put("修改时间", inventory.getUpdateTime()); + map.put("占用数", inventory.getQueuedQty()); + map.put("入库时间", inventory.getCreateTime()); list.add(map); } FileUtil.downloadExcel(list, response); diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/MoServiceImpl.java b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/MoServiceImpl.java index 264c986..e4e8f5e 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/MoServiceImpl.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/MoServiceImpl.java @@ -197,7 +197,7 @@ public class MoServiceImpl implements MoService { // 生成AGV任务和入库任务 createTasks(item, stock, srcPoint, endPoint, moDto.getLabelNo(), moDto, orderDto); - + stock.setName(labelNo); // 更新容器状态和目标点位状态 updateStockAndEndPoint(stock, endPoint); 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 a23b0bf..df7914e 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 @@ -152,7 +152,7 @@ public class TaskServiceImpl implements TaskService { @Override @Transactional(rollbackFor = Exception.class) - public synchronized void pickConfirm(long taskId, double pickedQuantity) throws Exception { + public synchronized void pickConfirm(long taskId, double pickedQuantity) { if (taskId > 0) { TaskDto taskDto = findById(taskId); Task task = taskMapper.toEntity(taskDto);//Dto转实体 @@ -172,6 +172,10 @@ public class TaskServiceImpl implements TaskService { } Stock stock=inv.getStock(); Point point=stock.getPoint(); + /*重置料箱名称为料箱名称*/ + if (stock.getName()!=stock.getCode()){ + stock.setName(stock.getCode()); + } stock.setStatus(BaseStatus.FREE); stock.setPoint(null); stockRepository.save(stock); diff --git a/youchain-system/src/main/java/com/youchain/modules/quartz/rest/QuartzJobController.java b/youchain-system/src/main/java/com/youchain/modules/quartz/rest/QuartzJobController.java index 42b4621..06174ca 100644 --- a/youchain-system/src/main/java/com/youchain/modules/quartz/rest/QuartzJobController.java +++ b/youchain-system/src/main/java/com/youchain/modules/quartz/rest/QuartzJobController.java @@ -16,6 +16,7 @@ package com.youchain.modules.quartz.rest; +import com.youchain.annotation.AnonymousAccess; import com.youchain.annotation.Log; import com.youchain.exception.BadRequestException; import com.youchain.modules.quartz.domain.QuartzJob; @@ -74,7 +75,7 @@ public class QuartzJobController { @ApiOperation("查询任务执行日志") @GetMapping(value = "/logs") - @PreAuthorize("@el.check('timing:list')") + @AnonymousAccess public ResponseEntity queryQuartzJobLog(JobQueryCriteria criteria, Pageable pageable){ return new ResponseEntity<>(quartzJobService.queryAllLog(criteria,pageable), HttpStatus.OK); } diff --git a/youchain-system/src/main/java/com/youchain/modules/quartz/service/dto/JobQueryCriteria.java b/youchain-system/src/main/java/com/youchain/modules/quartz/service/dto/JobQueryCriteria.java index 126d82f..d9b9523 100644 --- a/youchain-system/src/main/java/com/youchain/modules/quartz/service/dto/JobQueryCriteria.java +++ b/youchain-system/src/main/java/com/youchain/modules/quartz/service/dto/JobQueryCriteria.java @@ -32,7 +32,8 @@ public class JobQueryCriteria { @Query private Boolean isSuccess; - + @Query(propName="exceptionDetail",type = Query.Type.INNER_LIKE) + private String errorDialog; @Query(type = Query.Type.BETWEEN) private List createTime; } diff --git a/youchain-system/src/main/java/com/youchain/modules/quartz/task/moTask.java b/youchain-system/src/main/java/com/youchain/modules/quartz/task/moTask.java index a3c6cf6..89fab3c 100644 --- a/youchain-system/src/main/java/com/youchain/modules/quartz/task/moTask.java +++ b/youchain-system/src/main/java/com/youchain/modules/quartz/task/moTask.java @@ -49,7 +49,7 @@ public class moTask { mlsService.getMoInfo(resultJson); long time = System.currentTimeMillis() - startTime; // 保存日志 - logService.saveLogInfo(moInfo, UrlApi.publicApi, resultJson, "获取MO票信息", time, "INFO"); + logService.saveLogInfo(moInfo, UrlApi.publicApi, null, "获取MO票信息", time, "INFO"); } } @Log("获取MLS Mo票数据") diff --git a/youchain-system/src/main/java/com/youchain/modules/quartz/task/orderTask.java b/youchain-system/src/main/java/com/youchain/modules/quartz/task/orderTask.java index 068066e..8dad2c8 100644 --- a/youchain-system/src/main/java/com/youchain/modules/quartz/task/orderTask.java +++ b/youchain-system/src/main/java/com/youchain/modules/quartz/task/orderTask.java @@ -51,7 +51,7 @@ public class orderTask { mlsService.getOrderInfo(resultJson); long time = System.currentTimeMillis() - startTime; // 保存日志 - logService.saveLogInfo(orderInfo, UrlApi.publicApi, resultJson, "获取送货单信息", time,"INFO"); + logService.saveLogInfo(orderInfo, UrlApi.publicApi, null, "获取送货单信息", time,"INFO"); } } @Log("获取MLS送货单数据") 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 a3ff796..4545d17 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 @@ -32,23 +32,19 @@ public class pickTask { private static final int MAX_TASK_COUNT = 5; private static final long TIMEOUT_MS = 2*60*1000; - private long lastTaskTime = System.currentTimeMillis(); - public void pickTask() { // 下发出库任务 List agvTaskList = agvTaskService.queryByAgvTask(BizStatus.OPEN,BizStatus.PICK); if (agvTaskList.size() > 0) { - if ((agvTaskList.size() == MAX_TASK_COUNT)) { - Result(agvTaskService.sendAgvTaskLXImpl(agvTaskList)); - lastTaskTime = System.currentTimeMillis(); + /* 第一个任务的创建视角*/ + 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 >=TIMEOUT_MS) ){ - if(agvTaskList.size()>MAX_TASK_COUNT){ - List newAgvTask = agvTaskList.subList(0,MAX_TASK_COUNT); - Result(agvTaskService.sendAgvTaskLXImpl(newAgvTask)); - }else{ - Result(agvTaskService.sendAgvTaskLXImpl(agvTaskList)); - lastTaskTime = System.currentTimeMillis(); - } + Result(agvTaskService.sendAgvTaskLXImpl(agvTaskList)); } else { throw new RuntimeException("出库料箱任务未满足条件(不满足五个料箱需等待2分钟)!"); } diff --git a/youchain-system/src/main/java/com/youchain/modules/quartz/task/plcTask.java b/youchain-system/src/main/java/com/youchain/modules/quartz/task/plcTask.java index 3fc0ca4..eaef874 100644 --- a/youchain-system/src/main/java/com/youchain/modules/quartz/task/plcTask.java +++ b/youchain-system/src/main/java/com/youchain/modules/quartz/task/plcTask.java @@ -2,6 +2,8 @@ package com.youchain.modules.quartz.task; import com.alibaba.fastjson.JSONObject; import com.github.s7connector.api.S7Connector; +import com.youchain.basicdata.domain.Stock; +import com.youchain.basicdata.repository.StockRepository; import com.youchain.businessdata.rest.MoController; import com.youchain.businessdata.rest.PlcController; import com.youchain.businessdata.service.MoService; @@ -10,8 +12,7 @@ import com.youchain.exception.handler.ApiResult; import com.youchain.modules.quartz.domain.QuartzLog; import com.youchain.modules.quartz.repository.QuartzLogRepository; import com.youchain.service.LogService; -import com.youchain.utils.S7ConnectorUtils; -import com.youchain.utils.UrlApi; +import com.youchain.utils.*; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; @@ -30,14 +31,16 @@ public class plcTask { private final PlcController plcController; private final MoService moService; private final TaskService taskService; + private final StockRepository stockRepository; private final QuartzLogRepository quartzLogRepository; public LogService logService; @Autowired - public plcTask(PlcController plcController,MoService moService,TaskService taskService,QuartzLogRepository quartzLogRepository) { + public plcTask(PlcController plcController,MoService moService,TaskService taskService,QuartzLogRepository quartzLogRepository,StockRepository stockRepository) { this.plcController = plcController; this.moService = moService; this.taskService = taskService; this.quartzLogRepository = quartzLogRepository; + this.stockRepository = stockRepository; } public synchronized void plcTask() { @@ -47,9 +50,19 @@ public class plcTask { // String mo="LB]A0006897]240625]12125300000145]200]240625104089]]"; // String lx="05010010"; // LB]A0006907]240522]12125300001741]50.00]240522554318]] -// LB]A0006897]240625]1212504010001300000145]200]240625104089]] +// LB]A0006897]240625]12125300000145]200]240625104089]] String mo = S7ConnectorUtils.readMo(S7ConnectorUtils.s7Connector,12); String lx = S7ConnectorUtils.readMo(S7ConnectorUtils.s7Connector,0); + if(mo.length()>10){ + if (!mo.substring(0, 2).equals("LB")){ + /*MO票不全,补全MO票,获取料箱吗*/ + mo=lx+mo; + Stock stock = stockRepository.findFirstByStatus(BaseStatus.FREE); + if (stock!=null){ + lx=stock.getCode(); + } + } + } if (mo.length()>0&&lx.length()>0){ jsonObject.put("mo",mo); jsonObject.put("lx",lx); @@ -89,20 +102,5 @@ public class plcTask { }else { throw new RuntimeException("数据格式错误,MO票" + mo+",料箱码"+lx+",错误信息:"); } - /*try { - S7ConnectorUtils.connect(); - JSONObject jsonObject=new JSONObject(); - String mo = S7ConnectorUtils.readMo(S7ConnectorUtils.s7Connector,12); - String lx = S7ConnectorUtils.readMo(S7ConnectorUtils.s7Connector,0); - if (mo.length()>0&&lx.length()>0){ - jsonObject.put("mo",mo); - jsonObject.put("lx",lx); - plcController.scanMo(jsonObject+""); - }else { - throw new RuntimeException("数据格式错误:"+mo+"|"+lx); - } - } catch (Exception e) { - throw new RuntimeException("异常信息" + e.getMessage()); - }*/ } } 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 23f7025..7b08ef3 100644 --- a/youchain-system/src/main/java/com/youchain/utils/BizStatus.java +++ b/youchain-system/src/main/java/com/youchain/utils/BizStatus.java @@ -29,6 +29,8 @@ public interface BizStatus { * 出入库状态-已取消||任务状态-已取消 */ public static String CANCEL = "CANCEL"; + /* 放料*/ + public static String PICKER_SEND = "PICKER_SEND"; /** * 出入库状态-已关闭 */ diff --git a/youchain-system/src/main/resources/config/application-dev.yml b/youchain-system/src/main/resources/config/application-dev.yml index 324d22f..8937805 100644 --- a/youchain-system/src/main/resources/config/application-dev.yml +++ b/youchain-system/src/main/resources/config/application-dev.yml @@ -15,9 +15,9 @@ spring: db-type: com.alibaba.druid.pool.DruidDataSource driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy # url: jdbc:log4jdbc:mysql://${DB_HOST:47.100.54.81}:${DB_PORT:53306}/${DB_NAME:hefeihvac_wms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false -# url: jdbc:log4jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3306}/${DB_NAME:hefeihvac_wms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false + url: jdbc:log4jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3306}/${DB_NAME:hefeihvac_wms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false # url: jdbc:log4jdbc:mysql://${DB_HOST:10.175.163.49}:${DB_PORT:3306}/${DB_NAME:hefeihvac_wms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false - url: jdbc:log4jdbc:mysql://${DB_HOST:10.173.188.206}:${DB_PORT:53306}/${DB_NAME:wms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false +# url: jdbc:log4jdbc:mysql://${DB_HOST:10.173.188.206}:${DB_PORT:53306}/${DB_NAME:wms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false username: ${DB_USER:root} # password: ${DB_PWD:Youchain@56} password: ${DB_PWD:123456} diff --git a/youchain-system/src/main/resources/config/application.yml b/youchain-system/src/main/resources/config/application.yml index ba482fe..a7f2ad3 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: dev + active: prod jackson: time-zone: GMT+8 data: