From d95d590ec2aac453a10d2f6395cdf38fb8a3e9ca Mon Sep 17 00:00:00 2001 From: zhangzq Date: Mon, 15 Jul 2024 09:05:53 +0800 Subject: [PATCH] =?UTF-8?q?rev:=E4=BB=93=E5=BA=93=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- wms_pro/hd/nladmin-system/pom.xml | 6 + .../src/main/java/org/nl/AppRun.java | 4 + .../java/org/nl/common/TableDataInfo.java | 9 +- .../domain/exception/handler/ApiError.java | 2 +- .../java/org/nl/common/enums/StatusEnum.java | 8 +- .../common/publish/BussEventMulticaster.java | 1 - .../org/nl/common/utils/AsyncHttpRequest.java | 129 ++++++++-------- .../main/java/org/nl/common/utils/IPUtil.java | 22 +++ .../org/nl/common/utils/InterationUtil.java | 14 +- .../clientSocket/HeartClientServer.java | 25 +-- .../clientSocket/HeartConsumerHandler.java | 4 +- .../clientSocket/RunClientHeartMain.java | 2 +- .../main/java/org/nl/config/DruidFilter.java | 2 +- .../config/lucene/remote/AbstraceServer.java | 1 + .../form_struc/service/dao/BmFormStruc.java | 4 + .../controller/SchBasePointController.java | 1 + .../point/service/dao/SchBasePoint.java | 2 +- .../controller/SchBaseTaskController.java | 7 + .../task/handler/AbstractTask.java | 9 +- .../handler/impl/ConveyorOutStorageTask.java | 2 +- .../handler/impl/GroupDickInStorageTask.java | 5 +- .../task/handler/impl/InStorageTask.java | 1 - ...eStorageTask.java => MoveStorageTask.java} | 13 +- .../task/handler/impl/OutStorageTask.java | 4 - .../handler/impl/PalletInStorageTask.java | 7 - .../task/handler/impl/PickStorageTask.java | 2 +- .../task/handler/impl/ToPickPlatformTask.java | 40 +++-- .../task/service/ISchBaseTaskService.java | 2 + .../task/service/TaskScheduleService.java | 2 +- .../service/impl/SchBaseTaskServiceImpl.java | 143 ++++++++++++++++-- .../wms/external_system/GateWayService.java | 43 +++++- .../acs/controller/AcsToWmsController.java | 17 ++- .../acs/service/AcsToWmsService.java | 24 +-- .../acs/service/WmsToAcsService.java | 23 +++ .../wms/external_system/dto/InteracteDto.java | 5 +- .../execution/ExecutionController.java | 68 +++++++-- .../behavior/FlowNodeActivityBehavior.java | 1 - .../impl/EndEventActivityBehavior.java | 3 +- .../impl/StrucFormActivityBehavior.java | 2 + .../nodeType/excess/impl/DecisionHandler.java | 2 +- .../StorageChangesProcessHandler.java | 7 - .../execution/IActRuExecutionService.java | 2 + .../dao/mapper/ActRuExecutionMapper.java | 11 ++ .../impl/ActRuExecutionServiceImpl.java | 5 + .../impl/FlowOperationServiceImpl.java | 2 +- .../service/IMdPbVehicleMaterService.java | 7 + .../service/dao/MdPbVehicleMater.java | 4 + .../impl/MdPbVehicleMaterServiceImpl.java | 16 +- .../form_data/service/dao/PmFormData.java | 5 +- .../dao/mapper/xml/PmFormDataMapper.xml | 1 + .../form_data/service/dto/PmFormDataDto.java | 4 + .../service/impl/PmFormDataServiceImpl.java | 2 +- .../StIvtIostorinvOutController.java | 10 +- .../iostor/IStIvtIostorinvService.java | 1 + .../impl/StIvtIostorinvServiceImpl.java | 32 +++- .../iostor_dtl/dao/StIvtIostorinvdtl.java | 7 +- .../iostor_dtl/dto/StIvtIostorinvdtlVo.java | 1 + .../impl/StIvtIostorinvdtlServiceImpl.java | 8 +- .../pick/controller/PickingController.java | 3 + .../pick/service/PickingService.java | 56 +++++-- .../service/IStIvtStructattrService.java | 6 +- .../dao/mapper/xml/StIvtStructattrMapper.xml | 1 + .../impl/StIvtStructattrServiceImpl.java | 9 +- .../monitor/impl/MonitorServiceImpl.java | 12 +- .../src/main/resources/config/application.yml | 2 +- .../src/main/resources/logback-spring.xml | 1 + .../qd/src/views/monitor/eslog/view/index.vue | 4 +- .../views/wms/base_manage/struct/index.vue | 1 - .../views/wms/dispatch_manage/point/index.vue | 65 +------- .../views/wms/dispatch_manage/task/index.vue | 2 +- .../act/execution/curdExecution.js | 7 + .../wms/flow_manage/act/execution/index.vue | 13 +- .../views/wms/md_manage/group_dick/index.vue | 10 +- .../views/wms/stor_manage/out/AddDialog.vue | 36 ++++- .../src/views/wms/stor_manage/out/index.vue | 14 +- .../views/wms/stor_manage/out/storinvout.js | 8 + .../warehouse/checkStorage/AddDialog.vue | 1 + .../warehouse/checkStorage/ViewDialog.vue | 3 +- .../stor_manage/warehouse/move/AddDialog.vue | 2 + .../stor_manage/warehouse/move/ViewDialog.vue | 1 - .../stor_manage/warehouse/pick/TaskDialog.vue | 4 + .../stor_manage/warehouse/pick/ViewDialog.vue | 1 - .../wms/stor_manage/warehouse/pick/index.vue | 12 +- 83 files changed, 742 insertions(+), 318 deletions(-) rename wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/{moveStorageTask.java => MoveStorageTask.java} (86%) diff --git a/wms_pro/hd/nladmin-system/pom.xml b/wms_pro/hd/nladmin-system/pom.xml index cfa5fd69..7647f453 100644 --- a/wms_pro/hd/nladmin-system/pom.xml +++ b/wms_pro/hd/nladmin-system/pom.xml @@ -61,6 +61,12 @@ 0.4.8 + + org.apache.httpcomponents + httpasyncclient + 4.1.4 + + org.fusesource.jansi diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/AppRun.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/AppRun.java index ef41ce7c..53e9f80c 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/AppRun.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/AppRun.java @@ -4,6 +4,7 @@ import cn.dev33.satoken.annotation.SaIgnore; import org.mybatis.spring.annotation.MapperScan; import org.nl.common.utils.SpringContextHolder; +import org.nl.common.websocket.heartSocket.clientSocket.HeartClientServer; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.support.AbstractBeanFactory; import org.springframework.boot.CommandLineRunner; @@ -19,6 +20,8 @@ import org.springframework.transaction.annotation.EnableTransactionManagement; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; +import java.net.InetSocketAddress; + /** * 开启审计功能 -> @EnableJpaAuditing * https://www.cnblogs.com/niceyoo/p/10908647.html @@ -42,6 +45,7 @@ public class AppRun implements CommandLineRunner { @Override public void run(String... args) { + HeartClientServer heartServer = new HeartClientServer(new InetSocketAddress("192.168.10.48", 20889)); System.out.println("--------项目启动完成--------"); } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/TableDataInfo.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/TableDataInfo.java index 9be6f89a..0be69ec5 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/TableDataInfo.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/TableDataInfo.java @@ -98,11 +98,18 @@ public class TableDataInfo implements Serializable { return rspData; } + public static TableDataInfo build() { TableDataInfo rspData = new TableDataInfo<>(); rspData.setCode(String.valueOf(HttpStatus.HTTP_OK)); rspData.setMsg("操作成功"); return rspData; } - + public static TableDataInfo buildJson(Object result) { + TableDataInfo rspData = new TableDataInfo<>(); + rspData.setCode(String.valueOf(HttpStatus.HTTP_OK)); + rspData.setData(result); + rspData.setMsg("操作成功"); + return rspData; + } } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/domain/exception/handler/ApiError.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/domain/exception/handler/ApiError.java index 52b4c43d..dbc68d5b 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/domain/exception/handler/ApiError.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/domain/exception/handler/ApiError.java @@ -27,7 +27,7 @@ import java.time.LocalDateTime; * @date 2018-11-23 */ @Data -class ApiError { +public class ApiError { private String code = "400"; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/enums/StatusEnum.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/enums/StatusEnum.java index 251b2073..c3aefa52 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/enums/StatusEnum.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/enums/StatusEnum.java @@ -22,7 +22,7 @@ public enum StatusEnum { * 流程相关 */ MODEL_STATUS(ForkMap.of("发布", "10",null, "未发布", "30",null)), - FLOW_STATUS(ForkMap.of("启动", "10",null, "节点完成", "20",null,"暂停", "30",null,"完成", "80",null)), + FLOW_STATUS(ForkMap.of("启动", "10",null, "节点完成", "20",null,"暂停", "30",null,"完成", "80",null,"异常完成", "82",null)), /** * 单据状态 */ @@ -33,7 +33,7 @@ public enum StatusEnum { */ IOBILL_TYPE_IN(ForkMap.of("生产入库", "10","inStorageTask", "调拨入库", "11","inStorageTask", "退货入库", "12","inStorageTask","拣选回库", "13","inStorageTask","盘点入库", "14","inStorageTask","托盘入库", "30","inStorageTask")), IOBILL_TYPE_OUT(ForkMap.of("销售出库", "20","outStorageTask","生产出库", "21","outStorageTask", "调拨出库", "22","outStorageTask","拣选出库", "23","conveyorOutStorageTask","盘点出库", "24","outStorageTask","出库拣选", "25","toPickPlatformTask","托盘出库", "40","outStorageTask")), - IOBILL_TYPE_MOVE(ForkMap.of("移库", "50","moveStorageTask")), + IOBILL_TYPE_MOVE(ForkMap.of("移库", "50","moveStorageTask","异常位移库", "51","moveStorageTask")), EXT_TASK_TYPE(ForkMap.of("盘点", "60","moveStorageTask")), profit_loss(ForkMap.of("盘亏", "0",null,"盘盈", "1",null,"实盘", "2",null)), @@ -50,8 +50,10 @@ public enum StatusEnum { /** * 点位锁类型 */ - LOCK(ForkMap.of("无锁","00",null,"入库锁","10",null,"入库盘点锁","16",null,"出库锁","20",null,"盘点出库锁","26",null,"移库锁","50",null)), + LOCK(ForkMap.of("无锁","00",null,"入库锁","10",null,"入库盘点锁","16",null,"出库锁","20",null,"盘点出库锁","26",null,"移库锁","50",null,"异常锁定","60",null)), STRATEGY_TYPE(ForkMap.of("入库", "1",null, "出库", "2", null,"出入库", "3",null)), + + PRODUCT_AREA(ForkMap.of("一层车间", "A1",null, "二层车间", "A2", null,"三层车间", "A3",null)), ; /** diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/publish/BussEventMulticaster.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/publish/BussEventMulticaster.java index 14a5029f..35eec657 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/publish/BussEventMulticaster.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/publish/BussEventMulticaster.java @@ -77,7 +77,6 @@ public class BussEventMulticaster implements BeanPostProcessor { if (bean instanceof AbstraceListener){ AbstraceListener listener = (AbstraceListener) bean; LISTENER_SRT.add(listener); - System.out.println("_________"+beanName); } return bean; } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/utils/AsyncHttpRequest.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/utils/AsyncHttpRequest.java index d0b9348d..5f11faf7 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/utils/AsyncHttpRequest.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/utils/AsyncHttpRequest.java @@ -1,65 +1,64 @@ -//package org.nl.common.utils; -// -//import org.apache.http.HttpResponse; -//import org.apache.http.client.methods.HttpGet; -//import org.apache.http.client.methods.HttpPost; -//import org.apache.http.client.methods.HttpRequestBase; -//import org.apache.http.concurrent.FutureCallback; -//import org.apache.http.entity.StringEntity; -//import org.apache.http.impl.nio.client.CloseableHttpAsyncClient; -//import org.apache.http.impl.nio.client.HttpAsyncClients; -//import org.nl.modules.wql.util.SpringContextHolder; -//import org.springframework.context.annotation.Bean; -//import org.springframework.stereotype.Component; -// -//import java.util.concurrent.Future; -// -///* -// * HTtp异步调用 -// */ -//public class AsyncHttpRequest { -// -// private StringEntity entity; -// public HttpRequestBase httpbase; -// private String url; -// -// public AsyncHttpRequest(String url) { -// this.url=url; -// } -// -// public static AsyncHttpRequest post(String url,String body){ -// return new AsyncHttpRequest(url).body(body); -// }; -// -// public static AsyncHttpRequest get(String url){ -// return new AsyncHttpRequest(url).getEntity(); -// }; -// private AsyncHttpRequest getEntity(){ -// HttpGet httpGet = new HttpGet(this.url); -// this.httpbase = httpGet; -// return this; -// }; -// private AsyncHttpRequest body(String body){ -// this.entity = new StringEntity(body, "UTF-8"); -// this.entity.setContentType("application/json"); -// HttpPost httpPost = new HttpPost(this.url); -// httpPost.setEntity(entity); -// this.httpbase = httpPost; -// return this; -// }; -// public Future execute(FutureCallback callback){ -// CloseableHttpAsyncClient client = SpringContextHolder.getBean(CloseableHttpAsyncClient.class); -// Future execute = client.execute(httpbase, callback); -// return execute; -// }; -//} -//@Component -//class HttpAsyncClientInit{ -// -// @Bean -// public CloseableHttpAsyncClient closeableHttpAsyncClient(){ -// CloseableHttpAsyncClient aDefault = HttpAsyncClients.createDefault(); -// aDefault.start(); -// return aDefault; -// } -//} +package org.nl.common.utils; + +import org.apache.http.HttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.client.methods.HttpRequestBase; +import org.apache.http.concurrent.FutureCallback; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.nio.client.CloseableHttpAsyncClient; +import org.apache.http.impl.nio.client.HttpAsyncClients; +import org.springframework.context.annotation.Bean; +import org.springframework.stereotype.Component; + +import java.util.concurrent.Future; + +/* + * HTtp异步调用 + */ +public class AsyncHttpRequest { + + private StringEntity entity; + public HttpRequestBase httpbase; + private String url; + + public AsyncHttpRequest(String url) { + this.url=url; + } + + public static AsyncHttpRequest post(String url,String body){ + return new AsyncHttpRequest(url).body(body); + }; + + public static AsyncHttpRequest get(String url){ + return new AsyncHttpRequest(url).getEntity(); + }; + private AsyncHttpRequest getEntity(){ + HttpGet httpGet = new HttpGet(this.url); + this.httpbase = httpGet; + return this; + }; + private AsyncHttpRequest body(String body){ + this.entity = new StringEntity(body, "UTF-8"); + this.entity.setContentType("application/json"); + HttpPost httpPost = new HttpPost(this.url); + httpPost.setEntity(entity); + this.httpbase = httpPost; + return this; + }; + public Future execute(FutureCallback callback){ + CloseableHttpAsyncClient client = SpringContextHolder.getBean(CloseableHttpAsyncClient.class); + Future execute = client.execute(httpbase, callback); + return execute; + }; +} +@Component +class HttpAsyncClientInit{ + + @Bean + public CloseableHttpAsyncClient closeableHttpAsyncClient(){ + CloseableHttpAsyncClient aDefault = HttpAsyncClients.createDefault(); + aDefault.start(); + return aDefault; + } +} diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/utils/IPUtil.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/utils/IPUtil.java index aae2b4b0..bb82737f 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/utils/IPUtil.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/utils/IPUtil.java @@ -17,6 +17,7 @@ package org.nl.common.utils; import lombok.extern.slf4j.Slf4j; +import javax.servlet.http.HttpServletRequest; import java.net.InetAddress; import java.net.NetworkInterface; import java.util.Enumeration; @@ -72,4 +73,25 @@ public class IPUtil { return ""; } } + public static String getIp(HttpServletRequest request) { + String ip = request.getHeader("X-Forwarded-For"); + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + ip = request.getHeader("Proxy-Client-IP"); + } + + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + ip = request.getHeader("WL-Proxy-Client-IP"); + } + + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + ip = request.getRemoteAddr(); + } + + if (ip != null && ip.contains(",")) { + String[] ipArray = ip.split(","); + ip = ipArray[0]; + } + + return ip; + } } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/utils/InterationUtil.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/utils/InterationUtil.java index 1d75788f..05400347 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/utils/InterationUtil.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/utils/InterationUtil.java @@ -35,7 +35,7 @@ public class InterationUtil { String url = acsUrl + api; try { String resultMsg = HttpRequest.post(url) - .timeout(1000) + .timeout(3000) .body(String.valueOf(param)) .execute().body(); JSONObject response = JSONObject.parseObject(resultMsg); @@ -46,4 +46,16 @@ public class InterationUtil { throw new BadRequestException("acs网络不通:"+ex.getMessage()); } } + public static TableDataInfo asyncNotifyExt(String api, JSONObject param) { + log.info("下发ACS参数----------------------------------------+"+api+",---"+param.toString()); + String isConnect = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("IS_CONNECT_ACS").getValue(); + if (STATUS_FLASE.equals(isConnect)) { + return TableDataInfo.build(); + } + String acsUrl = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("wcs_url").getValue(); + AsyncHttpRequest.post(acsUrl + api,String.valueOf(param)) + .execute(null); + return TableDataInfo.build(); + + } } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/websocket/heartSocket/clientSocket/HeartClientServer.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/websocket/heartSocket/clientSocket/HeartClientServer.java index 5566942f..2ea8fe06 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/websocket/heartSocket/clientSocket/HeartClientServer.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/websocket/heartSocket/clientSocket/HeartClientServer.java @@ -47,7 +47,7 @@ public class HeartClientServer extends AbstraceServer { @Override protected void initChannel(SocketChannel ch) throws Exception { ch.pipeline() - .addLast("client-idle-handler", new IdleStateHandler(5, 5,5 , TimeUnit.SECONDS)) + .addLast("client-idle-handler", new IdleStateHandler(0, 5,0 , TimeUnit.SECONDS)) .addLast( new StringEncoder()) .addLast( new StringDecoder()) .addLast(new HeartConsumerHandler(body)); @@ -90,15 +90,20 @@ public class HeartClientServer extends AbstraceServer { this.doDestroy(); } } - public void pingpong() throws InterruptedException { - while (channel!=null && channel.isActive()){ - Thread.sleep(2000); - System.out.println("-----chilend-------"); - ByteBuf log = Unpooled.copiedBuffer("ping--222-", CharsetUtil.UTF_8); - if (channel==null){ - return; + public void pingpong() { + new Thread(()->{ + while (channel!=null && channel.isActive()){ + try { + Thread.sleep(2000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + ByteBuf log = Unpooled.copiedBuffer("ping--222-", CharsetUtil.UTF_8); + if (channel==null){ + return; + } + channel.writeAndFlush(log); } - channel.writeAndFlush(log); - } + }).start(); } } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/websocket/heartSocket/clientSocket/HeartConsumerHandler.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/websocket/heartSocket/clientSocket/HeartConsumerHandler.java index ce0c72bb..bb0daa12 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/websocket/heartSocket/clientSocket/HeartConsumerHandler.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/websocket/heartSocket/clientSocket/HeartConsumerHandler.java @@ -28,8 +28,8 @@ public class HeartConsumerHandler extends SimpleChannelInboundHandler { System.out.println("断开连接---"); //重新建立 ctx.close(); - server.doDisConnect(); - super.channelInactive(ctx); + server.channel.close(); + server.channel.flush(); } @Override diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/websocket/heartSocket/clientSocket/RunClientHeartMain.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/websocket/heartSocket/clientSocket/RunClientHeartMain.java index 88276513..eb2ef767 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/websocket/heartSocket/clientSocket/RunClientHeartMain.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/websocket/heartSocket/clientSocket/RunClientHeartMain.java @@ -15,6 +15,6 @@ import java.nio.charset.StandardCharsets; */ public class RunClientHeartMain { public static void main(String[] args) throws InterruptedException { - HeartClientServer heartServer = new HeartClientServer(new InetSocketAddress("192.168.10.57", 20889)); + HeartClientServer heartServer = new HeartClientServer(new InetSocketAddress("192.168.10.48", 20889)); } } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/config/DruidFilter.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/config/DruidFilter.java index 1a77f8b9..a985330f 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/config/DruidFilter.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/config/DruidFilter.java @@ -54,7 +54,7 @@ public class DruidFilter extends FilterEventAdapter { } executeSql = SQLUtils.format(executeSql, JdbcUtils.MYSQL, params); } -// log.info("[----SQL----][update][ SQL: {} ]", executeSql); + log.info("[----SQL----][update][ SQL: {} ]", executeSql); } super.statementExecuteAfter(statement, sql, result); } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/config/lucene/remote/AbstraceServer.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/config/lucene/remote/AbstraceServer.java index ca9a8c06..38ec1d96 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/config/lucene/remote/AbstraceServer.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/config/lucene/remote/AbstraceServer.java @@ -40,6 +40,7 @@ public abstract class AbstraceServer { public void doDisConnect(){ if (channel!=null){ channel.close(); + channel.flush(); doConnect(); } }; diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/config_manage/form_struc/service/dao/BmFormStruc.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/config_manage/form_struc/service/dao/BmFormStruc.java index 522f21b9..d3081298 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/config_manage/form_struc/service/dao/BmFormStruc.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/config_manage/form_struc/service/dao/BmFormStruc.java @@ -92,6 +92,10 @@ public class BmFormStruc implements Serializable { * 载具 */ private String vehicle_code; + /** + * 载具组盘id + */ + private String vehicle_id; /** * 数量 diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/point/controller/SchBasePointController.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/point/controller/SchBasePointController.java index b3be9976..5f8380d0 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/point/controller/SchBasePointController.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/point/controller/SchBasePointController.java @@ -2,6 +2,7 @@ package org.nl.wms.dispatch_manage.point.controller; import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONObject; import org.nl.common.TableDataInfo; import org.nl.common.domain.entity.PageQuery; import org.nl.common.utils.IdUtil; diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/point/service/dao/SchBasePoint.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/point/service/dao/SchBasePoint.java index b6aa0c34..b2c29a17 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/point/service/dao/SchBasePoint.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/point/service/dao/SchBasePoint.java @@ -73,7 +73,7 @@ public class SchBasePoint implements Serializable { /** * 是否启用 */ - private String is_used; + private Boolean is_used; /** * 创建人 diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/controller/SchBaseTaskController.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/controller/SchBaseTaskController.java index 0cb9ef5a..3070c78e 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/controller/SchBaseTaskController.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/controller/SchBaseTaskController.java @@ -9,6 +9,7 @@ import org.nl.wms.dispatch_manage.task.service.ISchBaseTaskService; import org.nl.wms.dispatch_manage.task.service.TaskScheduleService; import org.nl.wms.dispatch_manage.task.service.dao.SchBaseTask; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.util.CollectionUtils; @@ -34,6 +35,8 @@ public class SchBaseTaskController { private ISchBaseTaskService iSchBaseTaskService; @Autowired private TaskScheduleService taskScheduleService; + @Autowired + private RedisTemplate redisTemplate; @@ -81,5 +84,9 @@ public class SchBaseTaskController { taskScheduleService.taskPublish(); return new ResponseEntity<>(HttpStatus.OK); } + @GetMapping("/taskMsgSchedule") + public ResponseEntity taskMsgSchedule() { + return new ResponseEntity<>(HttpStatus.OK); + } } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/AbstractTask.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/AbstractTask.java index f753825f..31a97eb9 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/AbstractTask.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/AbstractTask.java @@ -29,11 +29,10 @@ public abstract class AbstractTask { public void updateTask(JSONObject data){ ISchBaseTaskService taskService = SpringContextHolder.getBean(ISchBaseTaskService.class); - String status = data.getString("status"); - SchBaseTask task = taskService.getOne(new QueryWrapper().eq("task_code", data.getString("task_code"))); - if (!task.getStatus().equals(status) && !task.getStatus().equals(StatusEnum.FORM_STATUS.code("完成"))){ - taskService.update(new UpdateWrapper().set("status",status).eq("task_code",data.getString("task_code"))); - } + taskService.update(new UpdateWrapper() + .set("status",data.getString("status")) + .eq("task_code",data.getString("task_code"))); + } public abstract void updateStatus(JSONObject data); diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/ConveyorOutStorageTask.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/ConveyorOutStorageTask.java index 8192fda0..0af78d24 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/ConveyorOutStorageTask.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/ConveyorOutStorageTask.java @@ -68,7 +68,7 @@ public class ConveyorOutStorageTask extends AbstractTask { throw new BadRequestException("创建任务失败:方法请求参数不能为空"); } List list = taskService.list(new QueryWrapper().eq("vehicle_code", vehicle_code) - .ne("status", StatusEnum.FORM_STATUS.code("完成"))); + .lt("status", StatusEnum.FORM_STATUS.code("完成"))); if (!CollectionUtils.isEmpty(list)){ throw new BadRequestException("当前载具存在任务:"+list.stream().map(SchBaseTask::getTask_code).collect(Collectors.joining(","))); } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/GroupDickInStorageTask.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/GroupDickInStorageTask.java index 982058b3..c686462f 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/GroupDickInStorageTask.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/GroupDickInStorageTask.java @@ -13,9 +13,6 @@ import org.nl.common.utils.MapOf; import org.nl.wms.dispatch_manage.task.handler.AbstractTask; import org.nl.wms.dispatch_manage.task.service.ISchBaseTaskService; import org.nl.wms.dispatch_manage.task.service.dao.SchBaseTask; -import org.nl.wms.flow_manage.flow.framework.entity.ExecutionDto; -import org.nl.wms.flow_manage.flow.service.deployment.IActReProcdefService; -import org.nl.wms.flow_manage.flow.service.deployment.dao.ActReProcdef; import org.nl.wms.flow_manage.flow.service.execution.IActRuExecutionService; import org.nl.wms.flow_manage.flow.service.execution.dao.ActRuExecution; import org.nl.wms.flow_manage.monitor.event.FlowContinueEvent; @@ -25,7 +22,6 @@ import org.nl.wms.md_manage.group_dick.service.dao.MdGruopDick; import org.nl.wms.md_manage.vehicleMater.service.IMdPbVehicleMaterService; import org.nl.wms.md_manage.vehicleMater.service.dao.MdPbVehicleMater; import org.nl.wms.md_manage.vehicleMater.service.dto.MdPbVehicleMaterVo; -import org.nl.wms.pm_manage.form_data.service.dao.PmFormData; import org.nl.wms.stor_manage.struct.service.IStIvtStructattrService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -79,6 +75,7 @@ public class GroupDickInStorageTask extends AbstractTask { //更新载具proc_inst_id String currentInstId = vehicleMater.getProc_inst_id(); if (StringUtils.isNotEmpty(currentInstId)){ + System.out.println("载具"+vehicle_code+"任务流程信息不存在"+currentInstId); ActRuExecution execution = iActRuExecutionService.getById(currentInstId); if (execution == null){ throw new BadRequestException("申请任务失败:载具"+vehicle_code+"任务流程信息不存在"+currentInstId); diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/InStorageTask.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/InStorageTask.java index 82b20b0c..d665d4ef 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/InStorageTask.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/InStorageTask.java @@ -22,7 +22,6 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; -import java.math.BigDecimal; import java.util.List; import java.util.stream.Collectors; diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/moveStorageTask.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/MoveStorageTask.java similarity index 86% rename from wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/moveStorageTask.java rename to wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/MoveStorageTask.java index e623a1bd..0a6a3b90 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/moveStorageTask.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/MoveStorageTask.java @@ -6,15 +6,12 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import org.apache.commons.lang3.StringUtils; -import org.nl.common.domain.constant.DictConstantPool; import org.nl.common.domain.exception.BadRequestException; import org.nl.common.enums.StatusEnum; -import org.nl.common.publish.BussEventMulticaster; import org.nl.common.utils.CodeUtil; import org.nl.common.utils.IdUtil; import org.nl.common.utils.SecurityUtils; import org.nl.wms.dispatch_manage.task.handler.AbstractTask; -import org.nl.wms.dispatch_manage.task.handler.StructEvent; import org.nl.wms.dispatch_manage.task.service.ISchBaseTaskService; import org.nl.wms.dispatch_manage.task.service.dao.SchBaseTask; import org.nl.wms.md_manage.vehicleMater.service.IMdPbVehicleMaterService; @@ -36,7 +33,7 @@ import java.util.stream.Collectors; * 出库任务入库任务 */ @Service -public class moveStorageTask extends AbstractTask { +public class MoveStorageTask extends AbstractTask { @Autowired private ISchBaseTaskService taskService; @@ -57,14 +54,10 @@ public class moveStorageTask extends AbstractTask { String end_struct_code = form_data.getString("end_struct_code"); List list = taskService.list(new QueryWrapper().eq("vehicle_code", vehicle_code) - .ne("status", StatusEnum.FORM_STATUS.code("完成"))); + .lt("status", StatusEnum.FORM_STATUS.code("完成"))); if (!CollectionUtils.isEmpty(list)){ throw new BadRequestException("当前载具存在任务:"+list.stream().map(SchBaseTask::getTask_code).collect(Collectors.joining(","))); } - StIvtStructattr source = iStIvtStructattrService.getOne(new QueryWrapper().eq("vehicle_code", vehicle_code)); - if (!source.getStruct_code().equals(start_struct_code)){ - throw new BadRequestException("载具库位变动:当前货位"+source.getStruct_code()+",移库前货位"+start_struct_code); - } StIvtStructattr target = iStIvtStructattrService.getOne(new QueryWrapper().eq("struct_code", end_struct_code)); if (StringUtils.isNotEmpty(target.getVehicle_code())){ throw new BadRequestException("目标货位存在载具:"+target.getVehicle_code()); @@ -79,7 +72,7 @@ public class moveStorageTask extends AbstractTask { task.setCreate_name(SecurityUtils.getCurrentNickName()); task.setTask_type(from.getString("task_type")); task.setVehicle_code(vehicle_code); - task.setPoint_code1(source.getStruct_code()); + task.setPoint_code1(start_struct_code); task.setPoint_code2(end_struct_code); taskService.save(task); iMdPbVehicleMaterService.update(new LambdaUpdateWrapper() diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/OutStorageTask.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/OutStorageTask.java index c9f23bf1..38e8005a 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/OutStorageTask.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/OutStorageTask.java @@ -9,21 +9,17 @@ import org.apache.commons.lang3.StringUtils; import org.nl.common.domain.constant.DictConstantPool; import org.nl.common.domain.exception.BadRequestException; import org.nl.common.enums.StatusEnum; -import org.nl.common.publish.BussEventMulticaster; import org.nl.common.utils.CodeUtil; import org.nl.common.utils.IdUtil; import org.nl.common.utils.SecurityUtils; import org.nl.wms.dispatch_manage.task.handler.AbstractTask; -import org.nl.wms.dispatch_manage.task.handler.StructEvent; import org.nl.wms.dispatch_manage.task.service.ISchBaseTaskService; import org.nl.wms.dispatch_manage.task.service.dao.SchBaseTask; -import org.nl.wms.flow_manage.flow.framework.process.nodeType.excess.impl.process.classprocess.ClassProcess; import org.nl.wms.md_manage.vehicleMater.service.IMdPbVehicleMaterService; import org.nl.wms.md_manage.vehicleMater.service.dao.MdPbVehicleMater; import org.nl.wms.stor_manage.struct.service.IStIvtStructattrService; import org.nl.wms.stor_manage.struct.service.dao.StIvtStructattr; import org.nl.wms.system_manage.service.param.ISysParamService; -import org.nl.wms.system_manage.service.param.dao.Param; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/PalletInStorageTask.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/PalletInStorageTask.java index 45179af0..7c80b26b 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/PalletInStorageTask.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/PalletInStorageTask.java @@ -3,25 +3,18 @@ package org.nl.wms.dispatch_manage.task.handler.impl; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.nl.common.domain.exception.BadRequestException; -import org.nl.common.enums.StatusEnum; import org.nl.common.publish.BussEventMulticaster; import org.nl.common.utils.MapOf; import org.nl.wms.dispatch_manage.task.handler.AbstractTask; -import org.nl.wms.dispatch_manage.task.handler.StructEvent; import org.nl.wms.dispatch_manage.task.service.ISchBaseTaskService; import org.nl.wms.dispatch_manage.task.service.dao.SchBaseTask; import org.nl.wms.flow_manage.flow.service.execution.IActRuExecutionService; import org.nl.wms.flow_manage.flow.service.execution.dao.ActRuExecution; import org.nl.wms.flow_manage.monitor.event.FlowContinueEvent; -import org.nl.wms.flow_manage.monitor.event.FlowStartEvent; -import org.nl.wms.md_manage.group_dick.service.IMdGruopDickService; -import org.nl.wms.md_manage.group_dick.service.dao.MdGruopDick; import org.nl.wms.md_manage.vehicleMater.service.IMdPbVehicleMaterService; -import org.nl.wms.md_manage.vehicleMater.service.dao.MdPbVehicleMater; import org.nl.wms.md_manage.vehicleMater.service.dto.MdPbVehicleMaterVo; import org.nl.wms.stor_manage.struct.service.IStIvtStructattrService; import org.springframework.beans.factory.annotation.Autowired; diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/PickStorageTask.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/PickStorageTask.java index dcfb1a17..53dcb49f 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/PickStorageTask.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/PickStorageTask.java @@ -54,7 +54,7 @@ public class PickStorageTask extends AbstractTask { List list = iSchBaseTaskService.list(new QueryWrapper() .eq("task_type", from.getString("task_type")) - .ne("status", StatusEnum.FORM_STATUS.code("完成"))); + .lt("status", StatusEnum.FORM_STATUS.code("完成"))); if (!CollectionUtils.isEmpty(list)){ throw new BadRequestException("当前载具存在任务:"+list.stream().map(SchBaseTask::getTask_code).collect(Collectors.joining(","))); } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/ToPickPlatformTask.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/ToPickPlatformTask.java index 803f116a..fe0ec628 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/ToPickPlatformTask.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/ToPickPlatformTask.java @@ -6,12 +6,13 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import org.apache.commons.lang3.StringUtils; -import org.nl.common.domain.constant.DictConstantPool; import org.nl.common.domain.exception.BadRequestException; import org.nl.common.enums.StatusEnum; import org.nl.common.utils.CodeUtil; import org.nl.common.utils.IdUtil; import org.nl.common.utils.SecurityUtils; +import org.nl.wms.dispatch_manage.point.service.ISchBasePointService; +import org.nl.wms.dispatch_manage.point.service.dao.SchBasePoint; import org.nl.wms.dispatch_manage.task.handler.AbstractTask; import org.nl.wms.dispatch_manage.task.service.ISchBaseTaskService; import org.nl.wms.dispatch_manage.task.service.dao.SchBaseTask; @@ -19,7 +20,6 @@ import org.nl.wms.md_manage.vehicleMater.service.IMdPbVehicleMaterService; import org.nl.wms.md_manage.vehicleMater.service.dao.MdPbVehicleMater; import org.nl.wms.stor_manage.struct.service.IStIvtStructattrService; import org.nl.wms.stor_manage.struct.service.dao.StIvtStructattr; -import org.nl.wms.system_manage.service.param.ISysParamService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -35,28 +35,43 @@ import java.util.stream.Collectors; */ @Service public class ToPickPlatformTask extends AbstractTask { - + private static volatile String Lask_Point; @Autowired - private ISchBaseTaskService taskService; - @Autowired - private ISysParamService iSysParamService; - + private ISchBaseTaskService iSchBaseTaskService; @Autowired private IStIvtStructattrService iStIvtStructattrService; @Autowired private IMdPbVehicleMaterService iMdPbVehicleMaterService; + @Autowired + private ISchBasePointService iSchBasePointService; @Override @Transactional public JSONObject createTask(JSONObject from) { String vehicle_code = from.getString("vehicle_code"); - String target_point = from.getString("target_point"); + String target_point = null;// = from.getString("target_point"); + + List targetPoints = iSchBasePointService.list(new QueryWrapper() + .eq("region_code", "PICK01").eq("is_used", true)); //通过全局变量获取目标位置 + if (CollectionUtils.isEmpty(targetPoints)){ + throw new BadRequestException("当前拣选工位未启用"); + } + //轮询 + for (int i = 0; i < targetPoints.size(); i++) { + String code = targetPoints.get(i).getCode(); + if (targetPoints.size()>1 && !code.equals(Lask_Point)){ + target_point = code; + break; + } + target_point = code; + } + if (StringUtils.isEmpty(vehicle_code) ||StringUtils.isEmpty(target_point)){ throw new BadRequestException("创建任务失败:方法请求参数不能为空"); } - List list = taskService.list(new QueryWrapper().eq("vehicle_code", vehicle_code) - .ne("status", StatusEnum.FORM_STATUS.code("完成"))); + List list = iSchBaseTaskService.list(new QueryWrapper().eq("vehicle_code", vehicle_code) + .lt("status", StatusEnum.FORM_STATUS.code("完成"))); if (!CollectionUtils.isEmpty(list)){ throw new BadRequestException("当前载具存在任务:"+list.stream().map(SchBaseTask::getTask_code).collect(Collectors.joining(","))); } @@ -74,7 +89,8 @@ public class ToPickPlatformTask extends AbstractTask { task.setVehicle_code(vehicle_code); task.setPoint_code1(struct.getStruct_code()); task.setPoint_code2(target_point); - taskService.save(task); + iSchBaseTaskService.save(task); + Lask_Point = target_point; iMdPbVehicleMaterService.update(new LambdaUpdateWrapper() .set(MdPbVehicleMater::getTask_code,task.getTask_code()) .eq(MdPbVehicleMater::getVehicle_code,task.getVehicle_code())); @@ -95,7 +111,7 @@ public class ToPickPlatformTask extends AbstractTask { @Override public void finish(JSONObject data) { this.updateTask(data); - SchBaseTask schBaseTask = taskService.getOne(new QueryWrapper().eq("task_code", data.getString("task_code"))); + SchBaseTask schBaseTask = iSchBaseTaskService.getOne(new QueryWrapper().eq("task_code", data.getString("task_code"))); iStIvtStructattrService.changeStruct(schBaseTask.getPoint_code1(),schBaseTask.getVehicle_code(),schBaseTask.getTask_type(), null,Boolean.FALSE); } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/service/ISchBaseTaskService.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/service/ISchBaseTaskService.java index 99502563..cc4fad57 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/service/ISchBaseTaskService.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/service/ISchBaseTaskService.java @@ -61,4 +61,6 @@ public interface ISchBaseTaskService extends IService { */ void operation(JSONObject param); + JSONObject errorTask(JSONObject param,String type); + } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/service/TaskScheduleService.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/service/TaskScheduleService.java index f15f63b2..5bbc8f65 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/service/TaskScheduleService.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/service/TaskScheduleService.java @@ -58,7 +58,7 @@ public class TaskScheduleService { iSchBaseTaskService.update(new UpdateWrapper() .eq("task_code",resultM.get("task_code")) .set("status",StatusEnum.FORM_STATUS.code("暂停")) - .set("update_time", DateUtil.now()).set("remark",resultM.get("error"))); + .set("update_time", DateUtil.now()).set("remark",resultM.get("msg"))); } } } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/service/impl/SchBaseTaskServiceImpl.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/service/impl/SchBaseTaskServiceImpl.java index 423e2e10..2d21ac38 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/service/impl/SchBaseTaskServiceImpl.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/service/impl/SchBaseTaskServiceImpl.java @@ -3,6 +3,7 @@ package org.nl.wms.dispatch_manage.task.service.impl; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import lombok.SneakyThrows; import org.apache.commons.lang3.StringUtils; import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; @@ -14,22 +15,28 @@ import org.nl.common.domain.entity.PageQuery; import org.nl.common.domain.exception.BadRequestException; import org.nl.common.enums.StatusEnum; import org.nl.common.publish.BussEventMulticaster; -import org.nl.common.utils.CodeUtil; -import org.nl.common.utils.ListOf; -import org.nl.common.utils.MapOf; -import org.nl.common.utils.SecurityUtils; +import org.nl.common.utils.*; +import org.nl.wms.dispatch_manage.task.handler.AbstractTask; +import org.nl.wms.dispatch_manage.task.handler.impl.MoveStorageTask; import org.nl.wms.dispatch_manage.task.service.dao.SchBaseTask; import org.nl.wms.dispatch_manage.task.service.dao.mapper.SchBaseTaskMapper; import org.nl.wms.dispatch_manage.task.service.ISchBaseTaskService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.nl.wms.dispatch_manage.task.service.dto.SchBaseTaskQuery; +import org.nl.wms.flow_manage.flow.framework.process.nodeType.excess.impl.DecisionHandler; +import org.nl.wms.flow_manage.flow.service.execution.IActRuExecutionService; +import org.nl.wms.flow_manage.flow.service.execution.dao.ActRuExecution; import org.nl.wms.flow_manage.monitor.event.FlowContinueEvent; import org.nl.wms.md_manage.vehicleMater.service.IMdPbVehicleMaterService; import org.nl.wms.md_manage.vehicleMater.service.dao.MdPbVehicleMater; +import org.nl.wms.stor_manage.struct.service.IStIvtStructattrService; +import org.nl.wms.stor_manage.struct.service.dao.StIvtStructattr; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import java.util.*; +import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Collectors; /** @@ -44,7 +51,14 @@ import java.util.stream.Collectors; public class SchBaseTaskServiceImpl extends ServiceImpl implements ISchBaseTaskService { @Autowired - IMdPbVehicleMaterService iMdPbVehicleMaterService; + private IMdPbVehicleMaterService iMdPbVehicleMaterService; + @Autowired + private IActRuExecutionService iActRuExecutionService; + @Autowired + private IStIvtStructattrService iStIvtStructattrService; + @Autowired + @Lazy + private MoveStorageTask moveStorageTask; @Override public IPage queryAll(SchBaseTaskQuery whereJson, PageQuery page) { @@ -75,7 +89,9 @@ public class SchBaseTaskServiceImpl extends ServiceImpl().eq("task_code", task_code)); if (task.getStatus().equals(StatusEnum.FORM_STATUS.code("完成"))){ throw new BadRequestException("当前任务已完成"); } - this.update(new UpdateWrapper() - .set("status",param.getString("status")) - .eq("task_code", task_code)); if (param.getString("status").equals(StatusEnum.FORM_STATUS.code("完成"))){ MdPbVehicleMater vehicleMater = iMdPbVehicleMaterService.getOne(new QueryWrapper() .eq("vehicle_code", task.getVehicle_code())); - if (!StringUtils.isEmpty(vehicleMater.getProc_inst_id())){ + if (vehicleMater!=null && !StringUtils.isEmpty(vehicleMater.getProc_inst_id())){ FlowContinueEvent continueEvent = new FlowContinueEvent(vehicleMater.getProc_inst_id(), null, null); BussEventMulticaster.Publish(continueEvent); + }else { + String handleClass = task.getHandle_class(); + try { + AbstractTask bean = (AbstractTask)SpringContextHolder.getBean(Class.forName(handleClass)); + bean.finish(param); + }catch (Exception ex){ + throw new BadRequestException(ex.getMessage()); + } } + }else { + this.update(new UpdateWrapper() + .set("status",param.getString("status")) + .eq("task_code", task_code)); } } + + /** + "type": + "rm" 入满 标记目标货位异常,重新分配货位;更新任务终点,反馈目的货位 + "rzd"入库阻挡 异常位生成移库单,标记目标货位异常,后续人工处理;更新任务终点,反馈目的货位 + "ck"空出 修改目标货位为空位,任务直接取消,不扣件关联单据已出库数量 + "czd"取货阻挡 异常位生成移库单,标记目标货位异常,后续人工处理;任务重新下发 + * @return + */ + @Override + public JSONObject errorTask(JSONObject param, String type) { + String task_code = param.getString("task_code"); + String struct_code = param.getString("struct_code"); + StIvtStructattr stIvtStructattr = iStIvtStructattrService.getOne(new QueryWrapper().eq("struct_code", struct_code)); + SchBaseTask task = this.getOne(new QueryWrapper().eq("task_code", task_code)); + + switch (type){ + case "ck": + MdPbVehicleMater vehicleCode = iMdPbVehicleMaterService.getOne(new QueryWrapper().eq("vehicle_code", task.getVehicle_code())); + iActRuExecutionService.update(new UpdateWrapper() + .set("status",StatusEnum.FLOW_STATUS.code("异常完成")) + .set("remark",task.getVehicle_code()+"载具空出:货位"+struct_code) + .eq("proc_inst_id",vehicleCode.getProc_inst_id())); + iStIvtStructattrService.update(new UpdateWrapper() + .set("update_time", DateUtil.now()) + .set("vehicle_code",null) + .set("remark",struct_code+"出库异常") + .eq("struct_code", struct_code)); + this.update(new UpdateWrapper() + .set("status",StatusEnum.FORM_STATUS.code("取消")) + .set("remark",struct_code+"出库异常") + .set("update_time",DateUtil.now()) + .eq("task_code",task_code)); + break; + case "rm": + return dicisionStruct(struct_code,stIvtStructattr, task); + case "rzd": + iStIvtStructattrService.update(new UpdateWrapper() + .set("update_time", DateUtil.now()) + .set("vehicle_code",null) + .set("lock_type",StatusEnum.LOCK.code("无锁")) + .eq("struct_code", task.getPoint_code2())); + return dicisionStruct(struct_code,stIvtStructattr, task); + case "czd": + moveTask(task_code, struct_code, stIvtStructattr); + break; + default: + } + return null; + } + + private void moveTask(String task_code, String struct_code, StIvtStructattr stIvtStructattr) { + AtomicReference moveStruct = new AtomicReference<>(); + this.update(new UpdateWrapper() + .set("status",StatusEnum.FORM_STATUS.code("生成")) + .set("remark",struct_code+"出库阻挡二次下发") + .set("update_time",DateUtil.now()) + .eq("task_code",task_code)); + RedissonUtils.lock(()->{ + System.out.println("---3--"+Thread.currentThread().getName()); + Map process = SpringContextHolder.getBean(DecisionHandler.class).dispenseTransa(ListOf.of("nearby"), new JSONObject(MapOf.of("stor_code", stIvtStructattr.getStor_code()))); + moveStruct.set(((Map) process.get("form_data")).get("end_struct_code")); + },"1"+ stIvtStructattr.getStor_code(),5); + Map moveForm = MapOf.of("task_type", StatusEnum.IOBILL_TYPE_MOVE.code("异常位移库") + , "is_send", false + , "vehicle_code", "YCZJ" + task_code, "form_data", new JSONObject(MapOf.of("start_struct_code", struct_code, "end_struct_code", moveStruct.get()))); + moveStorageTask.createTask(new JSONObject(moveForm)); + } + + private JSONObject dicisionStruct(String struct_code, StIvtStructattr stIvtStructattr, SchBaseTask task) { + String task_code = task.getTask_code(); + MdPbVehicleMater vehicleCode = iMdPbVehicleMaterService.getOne(new QueryWrapper().eq("vehicle_code", task.getVehicle_code())); + //查询分配规则 + Map map = SpringContextHolder.getBean(DecisionHandler.class) + .dispenseTransa(ListOf.of("nearby"), new JSONObject(MapOf.of("stor_code", stIvtStructattr.getStor_code()))); + String new_struct_code = ((Map) map.get("form_data")).get("end_struct_code"); + + iActRuExecutionService.update(new UpdateWrapper() + .set("remark", struct_code +"入满异常重新分配货位"+new_struct_code) + .eq("proc_inst_id",vehicleCode.getProc_inst_id())); + this.update(new UpdateWrapper() + .set("point_code2",new_struct_code) + .set("remark", struct_code +"入满异常重新分配货位"+new_struct_code) + .eq("task_code", task_code)); + iStIvtStructattrService.update(new UpdateWrapper() + .eq("struct_code", struct_code) + .set("lock_type",StatusEnum.LOCK.code("异常锁定")) + .set("update_time",DateUtil.now()) + .set("remark","入满异常:"+ task_code) + .set("vehicle_code","YCZJ"+ task_code)); + JSONObject result = new JSONObject(); + result.put("point_code2",new_struct_code); + return result; + } } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/external_system/GateWayService.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/external_system/GateWayService.java index d246b939..243a386d 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/external_system/GateWayService.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/external_system/GateWayService.java @@ -1,13 +1,22 @@ package org.nl.wms.external_system; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.apache.commons.lang3.StringUtils; +import org.nl.common.domain.exception.BadRequestException; +import org.nl.common.utils.MapOf; +import org.nl.common.utils.RedissonUtils; +import org.nl.wms.base_manage.vehicle.service.IBmVehicleInfoService; +import org.nl.wms.base_manage.vehicle.service.dao.BmVehicleInfo; import org.nl.wms.dispatch_manage.task.service.ISchBaseTaskService; import org.nl.wms.external_system.acs.service.AcsToWmsService; import org.nl.wms.external_system.dto.InteracteDto; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.Map; +import java.util.concurrent.atomic.AtomicReference; + /* * @author ZZQ * @Date 2024/5/6 14:53 @@ -20,18 +29,44 @@ public class GateWayService { @Autowired private ISchBaseTaskService iSchBaseTaskService; + @Autowired + private IBmVehicleInfoService iBmVehicleInfoService; - public void apply(InteracteDto param){ + public JSONObject apply(InteracteDto param){ + JSONObject jsonObject = new JSONObject(param.getData()); //处理日志相关 + JSONObject result = new JSONObject(); String service = param.getService(); String type = param.getType(); //根据服务拆分不同的业务 + if (service.equals("InStorage")){ - acsToWmsService.applyTask(param.getService(), type, (JSONObject) JSON.toJSON(param.getData())); + RedissonUtils.lock(()->{ + acsToWmsService.applyTask(param.getService(), type, jsonObject); + },param.getService() + param.getType(),null); } if (service.equals("Task")){ - iSchBaseTaskService.operation((JSONObject) JSON.toJSON(param.getData())); + iSchBaseTaskService.operation(jsonObject); } + if (service.equals("DeviceInfo")){ + String vehicle_code = jsonObject.getString("vehicle"); + if (StringUtils.isEmpty(vehicle_code)){ + throw new BadRequestException("参数vehicle不能为空"); + } + BmVehicleInfo vehicle = iBmVehicleInfoService.getOne(new QueryWrapper() + .eq("vehicle_code", vehicle_code)); + Integer h = vehicle.getH(); + result.putAll(MapOf.of("height",h,"type",(h-200)/20)); + } + if (service.equals("ErrorTask")){ + AtomicReference reference = new AtomicReference<>(new JSONObject()); + RedissonUtils.lock(()->{ + reference.set(iSchBaseTaskService.errorTask(jsonObject, param.getType())); + },param.getService() + param.getType(),null); + return reference.get(); + } + return result; } + } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/external_system/acs/controller/AcsToWmsController.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/external_system/acs/controller/AcsToWmsController.java index 999213b8..1d5b6c71 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/external_system/acs/controller/AcsToWmsController.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/external_system/acs/controller/AcsToWmsController.java @@ -1,12 +1,15 @@ package org.nl.wms.external_system.acs.controller; import cn.dev33.satoken.annotation.SaIgnore; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; +import com.alibaba.fastjson.JSONObject; import org.nl.common.TableDataInfo; +import org.nl.common.anno.Log; +import org.nl.common.domain.exception.handler.ApiError; +import org.nl.common.utils.RedissonUtils; import org.nl.wms.external_system.GateWayService; import org.nl.wms.external_system.dto.InteracteDto; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PostMapping; @@ -14,6 +17,8 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.concurrent.atomic.AtomicReference; + /* * @author ZZQ * @Date 2024/5/6 14:53 @@ -27,8 +32,12 @@ public class AcsToWmsController { @PostMapping("/apply") @SaIgnore + @Log("acs请求wms") public ResponseEntity apply(@RequestBody InteracteDto form) { - gateWayService.apply(form); - return new ResponseEntity<>(TableDataInfo.build(),HttpStatus.OK); + try { + return new ResponseEntity<>(TableDataInfo.buildJson(gateWayService.apply(form)),HttpStatus.OK); + }catch (Exception ex){ + return new ResponseEntity<>(ApiError.error(ex.getMessage()),HttpStatus.BAD_REQUEST); + } } } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/external_system/acs/service/AcsToWmsService.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/external_system/acs/service/AcsToWmsService.java index 421d2e5b..68d12e30 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/external_system/acs/service/AcsToWmsService.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/external_system/acs/service/AcsToWmsService.java @@ -27,6 +27,16 @@ import java.util.Map; /* * @author ZZQ * @Date 2024/5/6 14:53 + * + { + "service": "ZPInStorage", + "ip": "ip_7va9w", + "request_time": "request_time_pbi5u", + "trace_id": "trace_id_xl8dk", + "data": { + "D00018": "start001" + } + } */ @Service public class AcsToWmsService { @@ -39,23 +49,13 @@ public class AcsToWmsService { public void applyTask(String service,String type,JSONObject data){ if (service.equals("InStorage")){ - /* - { - "service": "ZPInStorage", - "ip": "ip_7va9w", - "request_time": "request_time_pbi5u", - "trace_id": "trace_id_xl8dk", - "data": { - "D00018": "start001" - } - } - * */ + applyTaskMap.get(type).createTask(data); } } - public void updateTAsk(String type,JSONObject data){ + public void updateTask(String type,JSONObject data){ String task_code = data.getString("task_code"); SchBaseTask task = iSchBaseTaskService.getOne(new QueryWrapper().eq("task_code", task_code) .lt("status", StatusEnum.FORM_STATUS.code("完成"))); diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/external_system/acs/service/WmsToAcsService.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/external_system/acs/service/WmsToAcsService.java index ea27267a..f34dd725 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/external_system/acs/service/WmsToAcsService.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/external_system/acs/service/WmsToAcsService.java @@ -1,11 +1,14 @@ package org.nl.wms.external_system.acs.service; +import cn.hutool.core.convert.Convert; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.apache.commons.beanutils.ConvertUtils; import org.nl.common.TableDataInfo; import org.nl.common.utils.InterationUtil; +import org.nl.common.utils.MapOf; import org.nl.common.utils.SpringContextHolder; import org.nl.wms.dispatch_manage.task.service.dao.SchBaseTask; import org.nl.wms.external_system.dto.InteracteDto; @@ -32,6 +35,26 @@ public class WmsToAcsService implements InitializingBean { .eq("form_type","sch_base_task")); } + public TableDataInfo changeMode(String deviceCode,String type,String mode){ + InteracteDto dto = InteracteDto.builder().service("wmsToAcsService") + .trace_id(MDC.get("trace_id")) + .type(type) + .data(MapOf.of("device_code", deviceCode, "type", mode)) + .build(); + TableDataInfo result = InterationUtil.notifyExt("/api/wmsToAcs/apply", (JSONObject) JSON.toJSON(dto)); + return result; + } + + public TableDataInfo toCommand(String deviceCode,String toCommand){ + InteracteDto dto = InteracteDto.builder().service("wmsToAcsService") + .trace_id(MDC.get("trace_id")) + .type("toCommand") + .data(MapOf.of("device_code", deviceCode, "toCommand", toCommand)) + .build(); + TableDataInfo result = InterationUtil.notifyExt("/api/wmsToAcs/apply", (JSONObject) JSON.toJSON(dto)); + return result; + } + /** * 系统交互 */ diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/external_system/dto/InteracteDto.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/external_system/dto/InteracteDto.java index 5f5b2e00..6e441b41 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/external_system/dto/InteracteDto.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/external_system/dto/InteracteDto.java @@ -10,6 +10,7 @@ import lombok.NoArgsConstructor; import org.nl.common.utils.IPUtil; import java.util.List; +import java.util.Map; /* * @author ZZQ @@ -19,7 +20,7 @@ import java.util.List; @Builder @NoArgsConstructor @AllArgsConstructor -public class InteracteDto { +public class InteracteDto { private String service; private String type; @@ -29,5 +30,5 @@ public class InteracteDto { /** * 要么JSONArray要么JSONObject */ - private Object data; + private T data; } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/controller/execution/ExecutionController.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/controller/execution/ExecutionController.java index fe182310..d6a7d68d 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/controller/execution/ExecutionController.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/controller/execution/ExecutionController.java @@ -5,10 +5,17 @@ import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import org.nl.common.TableDataInfo; +import org.nl.common.anno.Log; import org.nl.common.domain.entity.PageQuery; +import org.nl.common.domain.exception.BadRequestException; import org.nl.common.enums.StatusEnum; import org.nl.common.utils.IdUtil; import org.nl.common.utils.SecurityUtils; +import org.nl.wms.dispatch_manage.task.service.ISchBaseTaskService; +import org.nl.wms.dispatch_manage.task.service.dao.SchBaseTask; import org.nl.wms.flow_manage.flow.service.deployment.IActReProcdefService; import org.nl.wms.flow_manage.flow.service.execution.IActRuExecutionService; import org.nl.wms.flow_manage.flow.service.execution.IFlowOperationService; @@ -16,15 +23,20 @@ import org.nl.wms.flow_manage.flow.service.execution.dao.ActRuExecution; import org.nl.wms.flow_manage.flow.service.execution.dto.ExecutionQuery; import org.nl.wms.flow_manage.flow.service.history.IActHiExecutionService; import org.nl.wms.flow_manage.flow.service.history.dao.ActHiExecution; +import org.nl.wms.md_manage.vehicleMater.service.IMdPbVehicleMaterService; +import org.nl.wms.md_manage.vehicleMater.service.dao.MdPbVehicleMater; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; +import org.springframework.util.CollectionUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.function.Consumer; +import java.util.stream.Collectors; /* * @author ZZQ @@ -37,18 +49,22 @@ public class ExecutionController { @Autowired - IFlowOperationService flowOperationService; + private IFlowOperationService iFlowOperationService; @Autowired - private IActRuExecutionService executionService; + private IActRuExecutionService iActRuExecutionService; @Autowired private IActHiExecutionService iActHiExecutionService; @Autowired - private IActReProcdefService procdefService; + private IActReProcdefService iActReProcdefService; + @Autowired + private IMdPbVehicleMaterService iMdPbVehicleMaterService; + @Autowired + private ISchBaseTaskService iSchBaseTaskService; @GetMapping public ResponseEntity getAll(ExecutionQuery query, PageQuery page) { - return new ResponseEntity<>(executionService.getAll(query, page), HttpStatus.OK); + return new ResponseEntity<>(iActRuExecutionService.getAll(query, page), HttpStatus.OK); } @PostMapping @@ -56,7 +72,7 @@ public class ExecutionController { dto.setCreate_id(SecurityUtils.getCurrentUserId()); dto.setCreate_time(DateUtil.now()); dto.setProc_inst_id(IdUtil.getStringId()); - executionService.save(dto); + iActRuExecutionService.save(dto); return new ResponseEntity<>(HttpStatus.OK); } @@ -64,7 +80,7 @@ public class ExecutionController { public ResponseEntity update(@Validated @RequestBody ActRuExecution dto) { dto.setStatus(StatusEnum.MODEL_STATUS.code("未发布")); dto.setUpdate_time(DateUtil.now()); - executionService.updateById(dto); + iActRuExecutionService.updateById(dto); return new ResponseEntity<>(HttpStatus.OK); } @@ -74,10 +90,10 @@ public class ExecutionController { removeCollect.addAll(Arrays.asList(ids)); if (ids.length > 0) { for (String proc_inst_id : ids) { - removeCollect.addAll(executionService.getChildList(proc_inst_id)); + removeCollect.addAll(iActRuExecutionService.getChildList(proc_inst_id)); } if (removeCollect.size()>0){ - executionService.removeByIds(removeCollect); + iActRuExecutionService.removeByIds(removeCollect); } } return new ResponseEntity<>(HttpStatus.OK); @@ -102,30 +118,56 @@ public class ExecutionController { } @GetMapping(value = "/confirm/{proc_inst_id}") + @Log("手动触发流程") public ResponseEntity flowConfirm(@PathVariable String proc_inst_id) { - return new ResponseEntity<>(flowOperationService.flowConfirm(proc_inst_id, null, null, null), HttpStatus.OK); + return new ResponseEntity<>(iFlowOperationService.flowConfirm(proc_inst_id, null, null, null), HttpStatus.OK); } @GetMapping(value = "/queryByParentId/{id}") public ResponseEntity queryByParentId(@PathVariable String id) { LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(ActRuExecution::getParent_id, id); - return new ResponseEntity<>(executionService.list(lqw), HttpStatus.OK); + return new ResponseEntity<>(iActRuExecutionService.list(lqw), HttpStatus.OK); } @GetMapping(value = "/getDeploymentById/{id}") public ResponseEntity getDeploymentById(@PathVariable String id) { - return new ResponseEntity<>(procdefService.getById(id), HttpStatus.OK); + return new ResponseEntity<>(iActReProcdefService.getById(id), HttpStatus.OK); } @PostMapping("/changePdfActive") public ResponseEntity changePdfActive(@Validated @RequestBody ActRuExecution dto) { - executionService.updateById(dto); + iActRuExecutionService.updateById(dto); return new ResponseEntity<>(HttpStatus.OK); } @GetMapping(value = "/queryHisActivityId/{proc_inst_id}") public ResponseEntity queryHisActivityId(@PathVariable String proc_inst_id) { - return new ResponseEntity<>(executionService.queryHisActivityId(proc_inst_id), HttpStatus.OK); + return new ResponseEntity<>(iActRuExecutionService.queryHisActivityId(proc_inst_id), HttpStatus.OK); + } + + @GetMapping(value = "/errorFinish/{proc_inst_id}") + @Log("异常中断流程") + public ResponseEntity errorFinish(@PathVariable String proc_inst_id) { + List vehicleMaters = iMdPbVehicleMaterService.list(new QueryWrapper() + .eq("proc_inst_id", proc_inst_id) + .eq("is_delete", false) + .select("vehicle_code")); + if (!CollectionUtils.isEmpty(vehicleMaters)){ + List tasks = iSchBaseTaskService.list(new QueryWrapper() + .select("task_code") + .nested(query->{ + query.eq("status",StatusEnum.FORM_STATUS.code("生成")) + .or().eq("status",StatusEnum.FORM_STATUS.code("暂停")); + }) + .in("vehicle_code", vehicleMaters.stream().map(MdPbVehicleMater::getVehicle_code).collect(Collectors.toList()))); + if (!CollectionUtils.isEmpty(tasks)){ + throw new BadRequestException("当前流程存在执行中的任务无法异常中断,操作完任务后在终止流程"+tasks.stream().map(SchBaseTask::getTask_code).collect(Collectors.joining(","))); + } + } + iActRuExecutionService.update(new UpdateWrapper() + .set("status",StatusEnum.FLOW_STATUS.code("异常完成")) + .eq("proc_inst_id",proc_inst_id)); + return new ResponseEntity<>(TableDataInfo.build(), HttpStatus.OK); } } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/engine/behavior/FlowNodeActivityBehavior.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/engine/behavior/FlowNodeActivityBehavior.java index 4b1088a9..25aad9c7 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/engine/behavior/FlowNodeActivityBehavior.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/engine/behavior/FlowNodeActivityBehavior.java @@ -73,7 +73,6 @@ public abstract class FlowNodeActivityBehavior { .set("form_id",entity.getForm_id()) .set("update_time", DateUtil.now())); this.leaveActivity(entity); - // }catch (Exception ex){ ex.printStackTrace(); log.error(entity.getActivityName()+"流程执行异常:{}",ex.getMessage()); diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/engine/behavior/impl/EndEventActivityBehavior.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/engine/behavior/impl/EndEventActivityBehavior.java index 146a4664..dd35728f 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/engine/behavior/impl/EndEventActivityBehavior.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/engine/behavior/impl/EndEventActivityBehavior.java @@ -42,8 +42,7 @@ public class EndEventActivityBehavior extends FlowNodeActivityBehavior0){ diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/process/nodeType/excess/impl/DecisionHandler.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/process/nodeType/excess/impl/DecisionHandler.java index 7dbb2244..4999b758 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/process/nodeType/excess/impl/DecisionHandler.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/process/nodeType/excess/impl/DecisionHandler.java @@ -89,7 +89,7 @@ public class DecisionHandler extends TypeHandler process = SpringContextHolder.getBean(DecisionHandler.class).dispenseTransa(params, iostorinvdtl); atomicResult.set(process); - },decisioner.strategyConfig.getStrategy_type()+iostorinvdtl.getString("stor_code"),10); + },decisioner.strategyConfig.getStrategy_type()+iostorinvdtl.getString("stor_code"),5); return atomicResult.get(); } @Transactional(propagation= Propagation.REQUIRES_NEW) diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/service/classprocessimpl/StorageChangesProcessHandler.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/service/classprocessimpl/StorageChangesProcessHandler.java index 65bb84bd..de7096ad 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/service/classprocessimpl/StorageChangesProcessHandler.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/service/classprocessimpl/StorageChangesProcessHandler.java @@ -1,25 +1,18 @@ package org.nl.wms.flow_manage.flow.service.classprocessimpl; import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import lombok.SneakyThrows; -import org.apache.commons.lang3.ClassUtils; import org.apache.commons.lang3.StringUtils; import org.nl.common.domain.exception.BadRequestException; -import org.nl.common.enums.StatusEnum; -import org.nl.common.publish.BussEventMulticaster; import org.nl.common.utils.ListOf; -import org.nl.common.utils.MapOf; import org.nl.common.utils.SpelUtil; import org.nl.common.utils.SpringContextHolder; import org.nl.wms.dispatch_manage.task.handler.AbstractTask; -import org.nl.wms.dispatch_manage.task.handler.StructEvent; import org.nl.wms.flow_manage.flow.framework.process.nodeType.excess.impl.process.classprocess.ClassProcess; import org.nl.wms.stor_manage.struct.service.IStIvtStructattrService; -import org.nl.wms.stor_manage.struct.service.dao.StIvtStructattr; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/service/execution/IActRuExecutionService.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/service/execution/IActRuExecutionService.java index 9d54d111..98fc1bf7 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/service/execution/IActRuExecutionService.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/service/execution/IActRuExecutionService.java @@ -23,4 +23,6 @@ public interface IActRuExecutionService extends IService { List getChildList(String proc_inst_id); + + String getParentByChild(String proc_inst_id); } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/service/execution/dao/mapper/ActRuExecutionMapper.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/service/execution/dao/mapper/ActRuExecutionMapper.java index 96c8f69e..12a88dcf 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/service/execution/dao/mapper/ActRuExecutionMapper.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/service/execution/dao/mapper/ActRuExecutionMapper.java @@ -27,4 +27,15 @@ public interface ActRuExecutionMapper extends BaseMapper { " ) t3\n" + " where childId != '0'") String findAllChild(String proc_inst_id); + @Select("select min(inst_id) from (SELECT\n" + + "@r AS inst_id,\n" + + "( SELECT @r := parent_id FROM act_ru_execution WHERE proc_inst_id = inst_id ) AS parentId,\n" + + "@l := @l + 1 AS L \n" + + "FROM\n" + + "\t( SELECT @r := #{proc_inst_id}, @l := 0 ) vars,\n" + + "\tact_ru_execution h \n" + + "WHERE\n" + + "\t@r <> 0 \n" + + "\tAND parent_id > 0 ) as d") + String findParent(String proc_inst_id); } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/service/execution/impl/ActRuExecutionServiceImpl.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/service/execution/impl/ActRuExecutionServiceImpl.java index 702b21e8..b9d5f664 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/service/execution/impl/ActRuExecutionServiceImpl.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/service/execution/impl/ActRuExecutionServiceImpl.java @@ -105,4 +105,9 @@ public class ActRuExecutionServiceImpl extends ServiceImpl(); } + + @Override + public String getParentByChild(String proc_inst_id) { + return this.baseMapper.findParent(proc_inst_id); + } } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/service/execution/impl/FlowOperationServiceImpl.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/service/execution/impl/FlowOperationServiceImpl.java index 05581b82..7d773005 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/service/execution/impl/FlowOperationServiceImpl.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/service/execution/impl/FlowOperationServiceImpl.java @@ -93,7 +93,7 @@ public class FlowOperationServiceImpl implements IFlowOperationService { //判断子流程 List childList = iActRuExecutionService.list(new QueryWrapper() .eq("parent_id", proc_inst_id) - .ne("status", StatusEnum.FLOW_STATUS.code("完成"))); + .lt("status", StatusEnum.FLOW_STATUS.code("完成"))); if (!CollectionUtils.isEmpty(childList)){ throw new BadRequestException("当前流程存在未完成的子流程"); } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/md_manage/vehicleMater/service/IMdPbVehicleMaterService.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/md_manage/vehicleMater/service/IMdPbVehicleMaterService.java index 4d25f856..3d128b46 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/md_manage/vehicleMater/service/IMdPbVehicleMaterService.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/md_manage/vehicleMater/service/IMdPbVehicleMaterService.java @@ -23,5 +23,12 @@ public interface IMdPbVehicleMaterService extends IService { List getVehicleMaters(String vehicle_code); + /** + * 载具编码与id对应关系 + * @param vehicle_code + * @return + */ + Map getVehicleCode2Id(String...vehicle_code); + } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/md_manage/vehicleMater/service/dao/MdPbVehicleMater.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/md_manage/vehicleMater/service/dao/MdPbVehicleMater.java index 89d9720b..cf9975a2 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/md_manage/vehicleMater/service/dao/MdPbVehicleMater.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/md_manage/vehicleMater/service/dao/MdPbVehicleMater.java @@ -66,6 +66,10 @@ public class MdPbVehicleMater implements Serializable { * 载具锁定 */ private Boolean is_lock; + /** + * 载具是否出库 + */ + private Boolean is_delete; /** * 数量计量单位标识 diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/md_manage/vehicleMater/service/impl/MdPbVehicleMaterServiceImpl.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/md_manage/vehicleMater/service/impl/MdPbVehicleMaterServiceImpl.java index 8411f62b..486722b2 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/md_manage/vehicleMater/service/impl/MdPbVehicleMaterServiceImpl.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/md_manage/vehicleMater/service/impl/MdPbVehicleMaterServiceImpl.java @@ -7,10 +7,12 @@ import org.nl.wms.md_manage.vehicleMater.service.IMdPbVehicleMaterService; import org.nl.wms.md_manage.vehicleMater.service.dao.MdPbVehicleMater; import org.nl.wms.md_manage.vehicleMater.service.dao.mapper.MdPbVehicleMaterMapper; import org.nl.wms.md_manage.vehicleMater.service.dto.MdPbVehicleMaterVo; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.function.BiConsumer; /** *

@@ -39,4 +41,16 @@ public class MdPbVehicleMaterServiceImpl extends ServiceImpl getVehicleMaters(String vehicle_code) { return this.baseMapper.getVehicleMaters(vehicle_code); } + + @Override + public Map getVehicleCode2Id(String... vehicle_code) { + if (vehicle_code!=null){ + List list = this.list(new QueryWrapper() + .in("vehicle_code", vehicle_code) + .eq("is_delete", false)); + Map collect = list.stream().collect(HashMap::new, (map, vehicle) -> map.put(vehicle.getVehicle_code(), vehicle.getId()), HashMap::putAll); + return collect; + } + return null; + } } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/PmFormData.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/PmFormData.java index 8127c86a..345ccb25 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/PmFormData.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/PmFormData.java @@ -95,7 +95,10 @@ public class PmFormData implements Serializable { * 载具 */ private String vehicle_code; - + /** + * 载具组盘id + */ + private String vehicle_id; /** * 自定义表单字段 diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/mapper/xml/PmFormDataMapper.xml b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/mapper/xml/PmFormDataMapper.xml index ffee32ef..e4d51632 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/mapper/xml/PmFormDataMapper.xml +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/mapper/xml/PmFormDataMapper.xml @@ -42,6 +42,7 @@ + diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dto/PmFormDataDto.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dto/PmFormDataDto.java index 62448356..fd0075d0 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dto/PmFormDataDto.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dto/PmFormDataDto.java @@ -121,6 +121,10 @@ public class PmFormDataDto implements Serializable { * 载具 */ private String vehicle_code; + /** + * 载具组盘id + */ + private String vehicle_id; /** diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/impl/PmFormDataServiceImpl.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/impl/PmFormDataServiceImpl.java index 6d3564ca..a8eebf4f 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/impl/PmFormDataServiceImpl.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/impl/PmFormDataServiceImpl.java @@ -164,7 +164,7 @@ public class PmFormDataServiceImpl extends ServiceImpl fields = ListOf.ofSet(formStruc.getBiz_code(), formStruc.getBiz_id(), formStruc.getBiz_code(), formStruc.getBiz_status(), formStruc.getMaterial_id(), formStruc.getPcsn(), formStruc.getVehicle_code(), formStruc.getUnit_id(), formStruc.getQty()); + Set fields = ListOf.ofSet(formStruc.getBiz_code(), formStruc.getBiz_id(), formStruc.getBiz_code(), formStruc.getBiz_status(), formStruc.getMaterial_id(), formStruc.getPcsn(), formStruc.getVehicle_code(), formStruc.getVehicle_id(),formStruc.getUnit_id(), formStruc.getQty()); JSONObject data = fieldMapping(fields, fieldMapping, sourceData); data.put("form_type",formStruc.getForm_type()); JSONObject form_param = formStruc.getForm_param(); diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/controller/StIvtIostorinvOutController.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/controller/StIvtIostorinvOutController.java index b7174d42..eb7d30c4 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/controller/StIvtIostorinvOutController.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/controller/StIvtIostorinvOutController.java @@ -4,6 +4,7 @@ package org.nl.wms.stor_manage.io.controller; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.nl.common.TableDataInfo; +import org.nl.common.anno.Log; import org.nl.common.domain.entity.PageQuery; import org.nl.wms.dispatch_manage.task.service.ISchBaseTaskService; import org.nl.wms.stor_manage.io.service.dto.StorInvQuery; @@ -90,7 +91,14 @@ public class StIvtIostorinvOutController { @PostMapping("/taskOpen") public ResponseEntity taskOpen(@RequestBody JSONObject dtl) { iStIvtIostorinvService.taskOpen(dtl); - return new ResponseEntity<>(HttpStatus.OK); + return new ResponseEntity<>(TableDataInfo.build(),HttpStatus.OK); + } + + @GetMapping("/cancelMst/{inv_id}") + @Log("强制取消单据") + public ResponseEntity cancelMst(@PathVariable String inv_id) { + iStIvtIostorinvService.cancelMst(inv_id); + return new ResponseEntity<>(TableDataInfo.build(),HttpStatus.OK); } } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/service/iostor/IStIvtIostorinvService.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/service/iostor/IStIvtIostorinvService.java index dca627a8..659d1736 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/service/iostor/IStIvtIostorinvService.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/service/iostor/IStIvtIostorinvService.java @@ -36,6 +36,7 @@ public interface IStIvtIostorinvService extends IService { void cancelVehicle(JSONObject form); String canceldispense(JSONObject form); + String cancelMst(String id); void taskOpen(JSONObject form); } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/service/iostor/impl/StIvtIostorinvServiceImpl.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/service/iostor/impl/StIvtIostorinvServiceImpl.java index c42ac854..f3d26ac3 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/service/iostor/impl/StIvtIostorinvServiceImpl.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/service/iostor/impl/StIvtIostorinvServiceImpl.java @@ -93,6 +93,7 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl() .set("update_time", now) .set("vehicle_code",vehicleMaters.stream().map(MdPbVehicleMater::getVehicle_code).collect(Collectors.joining(","))) + .set("vehicle_id",vehicleMaters.stream().map(MdPbVehicleMater::getId).collect(Collectors.joining(","))) .eq("id", dtl.getId()) ); //更新组单据 @@ -163,12 +164,15 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl().in("vehicle_code",Arrays.asList(vehicles))); - iMdGruopDickService.remove(new QueryWrapper().in("vehicle_code",Arrays.asList(vehicles))); + String[] vehicles = dtl.getVehicle_id().split(","); + iMdPbVehicleMaterService.remove(new QueryWrapper().in("id",Arrays.asList(vehicles))); + iMdGruopDickService.remove(new QueryWrapper() + .in("vehicle_code",Arrays.asList(dtl.getVehicle_id().split(","))) + .lt("status",StatusEnum.FORM_STATUS.code("完成"))); iStIvtIostorinvDtlService.update(new UpdateWrapper() .set("update_time",DateUtil.now()) .set("vehicle_code",null) + .set("vehicle_id",null) .eq("id",dtl.getId()) ); this.update(new UpdateWrapper() @@ -186,8 +190,10 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl stringMap = iMdPbVehicleMaterService.getVehicleCode2Id(vehicle_code.split(",")); iStIvtIostorinvDtlService.update(new UpdateWrapper() .set("vehicle_code",vehicle_code) + .set("vehicle_id",stringMap.values().stream().collect(Collectors.joining(","))) .eq("id",form.getString("id"))); int count = iStIvtIostorinvDtlService.count(new QueryWrapper() .eq("inv_id", form.getString("inv_id")).isNull("vehicle_code")); @@ -208,9 +214,11 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl() .set("frozen_qty", 0) + .eq("is_delete",false) .in("vehicle_code", Arrays.asList(split))); iStIvtIostorinvDtlService.update(new UpdateWrapper() .set("vehicle_code",null) + .set("vehicle_id",null) .eq("id",form.getString("id"))); this.update(new UpdateWrapper() @@ -245,4 +253,22 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl iostorinvdtls = iStIvtIostorinvDtlService.list(new QueryWrapper().eq("inv_id", id)); + String collect = iostorinvdtls.stream().map(StIvtIostorinvdtl::getVehicle_id).collect(Collectors.joining(",")); + if (StringUtils.isNotEmpty(collect)){ + String[] split = collect.split(","); + //更新点位锁,删除分配 + iMdPbVehicleMaterService.update(new UpdateWrapper() + .set("frozen_qty", 0) + .in("id", Arrays.asList(split))); + } + this.update(new UpdateWrapper() + .set("status",StatusEnum.FORM_STATUS.code("取消")) + .eq("id",id)); + return null; + } } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/service/iostor_dtl/dao/StIvtIostorinvdtl.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/service/iostor_dtl/dao/StIvtIostorinvdtl.java index 11cc3ce4..934d8ab9 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/service/iostor_dtl/dao/StIvtIostorinvdtl.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/service/iostor_dtl/dao/StIvtIostorinvdtl.java @@ -74,7 +74,10 @@ public class StIvtIostorinvdtl implements Serializable { * 分配的载具 */ private String vehicle_code; - + /** + * 组盘记录表id + */ + private String vehicle_id; /** * 仓库 @@ -92,7 +95,7 @@ public class StIvtIostorinvdtl implements Serializable { @TableField(typeHandler = FastjsonTypeHandler.class) - private JSONObject form_data = new JSONObject();; + private JSONObject form_data = new JSONObject(); diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/service/iostor_dtl/dto/StIvtIostorinvdtlVo.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/service/iostor_dtl/dto/StIvtIostorinvdtlVo.java index 8bcc1a9b..9dec840b 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/service/iostor_dtl/dto/StIvtIostorinvdtlVo.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/service/iostor_dtl/dto/StIvtIostorinvdtlVo.java @@ -72,6 +72,7 @@ public class StIvtIostorinvdtlVo { * 分配的载具 */ private String vehicle_code; + private String vehicle_id; /** diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/service/iostor_dtl/impl/StIvtIostorinvdtlServiceImpl.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/service/iostor_dtl/impl/StIvtIostorinvdtlServiceImpl.java index b53e46d4..bb977f44 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/service/iostor_dtl/impl/StIvtIostorinvdtlServiceImpl.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/service/iostor_dtl/impl/StIvtIostorinvdtlServiceImpl.java @@ -73,14 +73,16 @@ public class StIvtIostorinvdtlServiceImpl extends ServiceImpl dtl = this.list(new QueryWrapper().eq("inv_id", inv_id)); for (StIvtIostorinvdtl iostorinvdtl : dtl) { - for (String vehicle_code : iostorinvdtl.getVehicle_code().split(",")) { + for (String vehicle_id : iostorinvdtl.getVehicle_id().split(",")) { StIvtIostorinvdtlVo vo = new StIvtIostorinvdtlVo(); BeanUtils.copyProperties(iostorinvdtl,vo); MdPbVehicleMater one = iMdPbVehicleMaterService.getOne(new QueryWrapper() - .eq("vehicle_code", vehicle_code) + .eq("id", vehicle_id) + .eq("is_delete", false) .eq("material_id", iostorinvdtl.getMaterial_id())); vo.setVehicleMater(one); - vo.setVehicle_code(vehicle_code); + vo.setVehicle_code(one.getVehicle_code()); + vo.setVehicle_id(vehicle_id); list.add(vo); } } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/pick/controller/PickingController.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/pick/controller/PickingController.java index 8c11e5f5..213ee8f0 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/pick/controller/PickingController.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/pick/controller/PickingController.java @@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import org.nl.common.TableDataInfo; +import org.nl.common.anno.Log; import org.nl.common.domain.entity.PageQuery; import org.nl.wms.pm_manage.form_data.service.IPmFormDataService; import org.nl.wms.pm_manage.form_data.service.dao.PmFormData; @@ -53,6 +54,7 @@ public class PickingController { return new ResponseEntity<>(HttpStatus.OK); } @PostMapping("/savePickTask") + @Log("拣选作业") public ResponseEntity savePickTask(@RequestBody JSONArray params) { pickingService.savePickTask(params); return new ResponseEntity<>(HttpStatus.OK); @@ -66,6 +68,7 @@ public class PickingController { return new ResponseEntity<>(HttpStatus.OK); } @PostMapping("/taskOpen") + @Log("拣选作业下发") public ResponseEntity taskOpen(@RequestBody JSONObject param) { pickingService.taskOpen(param); return new ResponseEntity<>(HttpStatus.OK); diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/pick/service/PickingService.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/pick/service/PickingService.java index cce34f4c..9758d06b 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/pick/service/PickingService.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/pick/service/PickingService.java @@ -11,12 +11,10 @@ import org.nl.common.domain.exception.BadRequestException; import org.nl.common.enums.StatusEnum; import org.nl.common.function.PermeateFunction; import org.nl.common.publish.BussEventMulticaster; -import org.nl.common.utils.CodeUtil; -import org.nl.common.utils.IdUtil; -import org.nl.common.utils.SecurityUtils; -import org.nl.common.utils.SpringContextHolder; +import org.nl.common.utils.*; import org.nl.wms.base_manage.vehicle.service.IBmVehicleInfoService; import org.nl.wms.base_manage.vehicle.service.dao.BmVehicleInfo; +import org.nl.wms.external_system.acs.service.WmsToAcsService; import org.nl.wms.flow_manage.flow.framework.entity.ExecutionDto; import org.nl.wms.flow_manage.monitor.event.FlowContinueEvent; import org.nl.wms.flow_manage.monitor.event.FlowStartEvent; @@ -47,6 +45,8 @@ import java.util.stream.Collectors; */ @Service public class PickingService { + + private static Map Pick_Convery = MapOf.of("1309","1207","1311","1209"); @Autowired private IPmFormDataService iFormDataService; @Autowired @@ -55,6 +55,8 @@ public class PickingService { private IMdGruopDickService iMdGruopDickService; @Autowired private IBmVehicleInfoService iBmVehicleInfoService; + @Autowired + private WmsToAcsService wmsToAcsService; /** * 生成拣选任务 @@ -122,8 +124,6 @@ public class PickingService { if (!mst.getStatus().equals(StatusEnum.FORM_STATUS.code("已分配"))){ throw new BadRequestException("下发失败:当前单据未分配或者一下发"); } - PickingService pickingService = SpringContextHolder.getBean(this.getClass()); - pickingService.disGroup(mst); JSONObject mstJ = (JSONObject) JSON.toJSON(mst); ExecutionDto dto = new ExecutionDto(); dto.setForm_id(mst.getId()); @@ -132,16 +132,40 @@ public class PickingService { dto.setSource_form_id(mst.getSource_form_id()); dto.setT(mstJ); dto.setItem(packageT(mstJ,"id")); - //只有透传才有vehicle_code参数否则只有inst_id - FlowContinueEvent continueEvent = new FlowContinueEvent(mst.getProc_inst_id(), (PermeateFunction) (inst_id, vehicle_code) -> iMdPbVehicleMaterService.update(new UpdateWrapper() - .set("proc_inst_id",inst_id).eq("vehicle_code",vehicle_code)), null) - .setDto(dto); - continueEvent.setCallback(emp->{ - iFormDataService.update(new UpdateWrapper() - .set("status",StatusEnum.FORM_STATUS.code("执行中")) - .eq("id",mst.getId())); - }); - BussEventMulticaster.Publish(continueEvent); + + JSONObject form_data = mstJ.getJSONObject("form_data"); + String platform = form_data.getString("point_code"); + String sourceVehicle = mstJ.getString("vehicle_code"); + List converys = new ArrayList<>(); + for (ExecutionDto executionDto : dto.getItem()) { + for (ExecutionDto executionDto1 : executionDto.getItem()) { + JSONObject dis = executionDto1.getT(); + if (!"false".equals(dis.getJSONObject("form_data").getString("s_move"))){ + String vehicle_code = dis.getString("vehicle_code"); + if (vehicle_code.equals(sourceVehicle)){ + converys.add(platform); + }else { + converys.add(Pick_Convery.get(platform)); + } + } + } + } + for (String convery : converys) { + wmsToAcsService.toCommand(convery,"1"); + } + +// PickingService pickingService = SpringContextHolder.getBean(this.getClass()); +// pickingService.disGroup(mst); +// //只有透传才有vehicle_code参数否则只有inst_id +// FlowContinueEvent continueEvent = new FlowContinueEvent(mst.getProc_inst_id(), (PermeateFunction) (inst_id, vehicle_code) -> iMdPbVehicleMaterService.update(new UpdateWrapper() +// .set("proc_inst_id",inst_id).eq("vehicle_code",vehicle_code)), null) +// .setDto(dto); +// continueEvent.setCallback(emp->{ +// iFormDataService.update(new UpdateWrapper() +// .set("status",StatusEnum.FORM_STATUS.code("执行中")) +// .eq("id",mst.getId())); +// }); +// BussEventMulticaster.Publish(continueEvent); } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/IStIvtStructattrService.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/IStIvtStructattrService.java index 8a6db19d..ded70ae9 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/IStIvtStructattrService.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/IStIvtStructattrService.java @@ -28,7 +28,11 @@ public interface IStIvtStructattrService extends IService { */ List> getByQuery(StructattrQuery query); - void changeStruct(String struct_code, String vehicle_code, String task_type, BigDecimal change_qty,Boolean growth); + void changeStruct(String struct_code + , String vehicle_code + , String task_type + , BigDecimal change_qty + , Boolean growth); void deleteAll(Long[] ids); Object pageQuery(StructattrQuery query, PageQuery page); diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/dao/mapper/xml/StIvtStructattrMapper.xml b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/dao/mapper/xml/StIvtStructattrMapper.xml index 4b37c931..33f1087d 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/dao/mapper/xml/StIvtStructattrMapper.xml +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/dao/mapper/xml/StIvtStructattrMapper.xml @@ -4,6 +4,7 @@