From e0b08e08da2551bc211b481c53b5085c0cb3a98d Mon Sep 17 00:00:00 2001 From: zhangzq Date: Thu, 20 Jun 2024 08:53:44 +0800 Subject: [PATCH] =?UTF-8?q?add:=E6=B5=81=E7=A8=8B=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=9B=9E=E8=B0=83=E9=80=8F=E4=BC=A0=EF=BC=9A=E5=AD=90=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E8=BD=BD=E5=85=B7=E4=BF=AE=E6=94=B9=E6=B5=81=E7=A8=8B?= =?UTF-8?q?=E5=AE=9E=E4=BE=8B=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/nl/common/TableDataInfo.java | 10 +- .../domain/exception/handler/ApiError.java | 4 +- .../handler/GlobalExceptionHandler.java | 2 +- .../nl/common/function/PermeateFunction.java | 29 ++++++ .../common/publish/BussEventMulticaster.java | 2 +- .../nl/common/publish/event/PublishEvent.java | 3 + .../handler/impl/GroupDickInStorageTask.java | 30 +++--- .../node/impl/SubProcessConverter.java | 1 + .../impl/StartEventActivityBehavior.java | 6 +- .../impl/SubProcessActivityBehavior.java | 14 ++- .../framework/entity/ExecutionEntity.java | 5 +- .../node/impl/SubProcess/SubProcess.java | 12 ++- .../OutStorageTaskHandler.java | 93 ------------------- .../classprocessimpl/StackingTaskHandler.java | 77 --------------- .../execution/IFlowOperationService.java | 4 +- .../impl/FlowOperationServiceImpl.java | 4 +- .../monitor/FlowEventListener.java | 2 +- .../monitor/event/FlowContinueEvent.java | 8 +- .../monitor/event/FlowStartEvent.java | 15 ++- .../impl/StIvtIostorinvServiceImpl.java | 15 ++- .../pick/service/PickingService.java | 10 +- 21 files changed, 124 insertions(+), 222 deletions(-) create mode 100644 wms_pro/hd/nladmin-system/src/main/java/org/nl/common/function/PermeateFunction.java delete mode 100644 wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/service/classprocessimpl/OutStorageTaskHandler.java delete mode 100644 wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/service/classprocessimpl/StackingTaskHandler.java 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 3b05db1e..8401872b 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 @@ -36,7 +36,7 @@ public class TableDataInfo implements Serializable { /** * 消息状态码 */ - private int code; + private String code; /** * 消息内容 @@ -56,7 +56,7 @@ public class TableDataInfo implements Serializable { public static TableDataInfo build(IPage page) { TableDataInfo rspData = new TableDataInfo<>(); - rspData.setCode(HttpStatus.HTTP_OK); + rspData.setCode(String.valueOf(HttpStatus.HTTP_OK)); rspData.setMsg("查询成功"); rspData.setContent(page.getRecords()); rspData.setTotalElements(page.getTotal()); @@ -65,7 +65,7 @@ public class TableDataInfo implements Serializable { public static TableDataInfo buildByDivForm(IPage page,String json_field) { TableDataInfo rspData = new TableDataInfo<>(); - rspData.setCode(HttpStatus.HTTP_OK); + rspData.setCode(String.valueOf(HttpStatus.HTTP_OK)); rspData.setMsg("查询成功"); List records = page.getRecords(); records.forEach(a->{ @@ -86,7 +86,7 @@ public class TableDataInfo implements Serializable { public static TableDataInfo build(List list) { TableDataInfo rspData = new TableDataInfo<>(); - rspData.setCode(HttpStatus.HTTP_OK); + rspData.setCode(String.valueOf(HttpStatus.HTTP_OK)); rspData.setMsg("查询成功"); rspData.setContent(list); rspData.setTotalElements(list.size()); @@ -95,7 +95,7 @@ public class TableDataInfo implements Serializable { public static TableDataInfo build() { TableDataInfo rspData = new TableDataInfo<>(); - rspData.setCode(HttpStatus.HTTP_OK); + rspData.setCode(String.valueOf(HttpStatus.HTTP_OK)); 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 a546ed41..1c6eb4b6 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 @@ -30,7 +30,7 @@ import java.time.LocalDateTime; @Data class ApiError { - private String code = "400"; + private String status = "400"; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime timestamp; private String message; @@ -47,7 +47,7 @@ class ApiError { public static ApiError error(Integer status, String message){ ApiError apiError = new ApiError(); - apiError.setCode(String.valueOf(status)); + apiError.setStatus(String.valueOf(status)); apiError.setMessage(message); return apiError; } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/domain/exception/handler/GlobalExceptionHandler.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/domain/exception/handler/GlobalExceptionHandler.java index 96e5eb53..a42fe876 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/domain/exception/handler/GlobalExceptionHandler.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/domain/exception/handler/GlobalExceptionHandler.java @@ -85,6 +85,6 @@ public class GlobalExceptionHandler { * 统一返回 */ private ResponseEntity buildResponseEntity(ApiError apiError) { - return new ResponseEntity<>(apiError, HttpStatus.valueOf(Integer.valueOf(apiError.getCode()))); + return new ResponseEntity<>(apiError, HttpStatus.valueOf(Integer.valueOf(apiError.getStatus()))); } } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/function/PermeateFunction.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/function/PermeateFunction.java new file mode 100644 index 00000000..944ee93f --- /dev/null +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/function/PermeateFunction.java @@ -0,0 +1,29 @@ +package org.nl.common.function; + +import com.baomidou.mybatisplus.extension.api.R; +import org.nl.common.utils.MapOf; + +import java.io.Serializable; +import java.util.*; +import java.util.function.BiConsumer; +import java.util.function.Function; +import java.util.function.Supplier; + +/* + * @author ZZQ + * @Date 2024/6/19 17:44 + */ +@FunctionalInterface +public interface PermeateFunction { + + + void accept(T t,U u); + + //函数透传方式 + default PermeateFunction andThen(Supplier middle) { + Objects.requireNonNull(middle); + return (inst_id,vehicle)->{ + accept(inst_id,middle.get()); + }; + } +} 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..1867ee56 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 @@ -30,7 +30,7 @@ public class BussEventMulticaster implements BeanPostProcessor { if (sync){ String result= listener.doEvent(event); if (event.getCallback() !=null && result !=null){ - event.getCallback().accept(result); + event.getCallback().accept(result,null); }; }else { //TODO:异步回调 diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/publish/event/PublishEvent.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/publish/event/PublishEvent.java index adcbbf27..ac5c2961 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/publish/event/PublishEvent.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/publish/event/PublishEvent.java @@ -4,7 +4,9 @@ import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.SuperBuilder; +import org.nl.common.function.PermeateFunction; +import java.util.function.BiConsumer; import java.util.function.Consumer; /* @@ -18,4 +20,5 @@ import java.util.function.Consumer; public abstract class PublishEvent { private Consumer callback = null; + } 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 9948b6ac..8873d2fd 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 @@ -12,14 +12,19 @@ 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.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; 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.pm_manage.form_data.service.dao.PmFormData; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; @@ -45,7 +50,7 @@ public class GroupDickInStorageTask extends AbstractTask { @Autowired private IMdGruopDickService iMdGruopDickService; @Autowired - private IActReProcdefService iActReProcdefService; + private IActRuExecutionService iActRuExecutionService; @Override public JSONObject createTask(JSONObject data) { @@ -67,20 +72,21 @@ public class GroupDickInStorageTask extends AbstractTask { mstJ.put("stor_code", vehicleMater.getStor_code()); //更新载具proc_inst_id String currentInstId = vehicleMater.getProc_inst_id(); - String model_key = "md_group"; if (StringUtils.isNotEmpty(currentInstId)){ - ActReProcdef procdefByInst = iActReProcdefService.getProcdefByInst(currentInstId); - if (procdefByInst!=null){ - model_key = procdefByInst.getModel_key(); + ActRuExecution execution = iActRuExecutionService.getById(currentInstId); + if (execution == null){ + throw new BadRequestException("申请任务失败:载具"+vehicle_code+"任务流程信息不存在"+currentInstId); } + BussEventMulticaster.Publish(new FlowContinueEvent(currentInstId,null , new JSONObject(MapOf.of("start_point", point_code1)))); + }else { + BussEventMulticaster.Publish( + new FlowStartEvent("md_group", + (proc_inst_id,empPlace) -> iMdPbVehicleMaterService.update(new UpdateWrapper().set("proc_inst_id",proc_inst_id).eq("vehicle_code",vehicle_code)) + ,new JSONObject(MapOf.of("start_point", point_code1))) + .build("md_group_dick",mst.getId(),mst.getSource_form_type(),mst.getSource_form_id(), mstJ) + .build("md_pb_vehicleMater",item) + ); } - BussEventMulticaster.Publish( - new FlowStartEvent(model_key, - proc_inst_id -> iMdPbVehicleMaterService.update(new UpdateWrapper().set("proc_inst_id",proc_inst_id).eq("vehicle_code",vehicle_code)) - ,new JSONObject(MapOf.of("start_point", point_code1))) - .build("md_group_dick",mst.getId(),mst.getSource_form_type(),mst.getSource_form_id(), mstJ) - .build("md_pb_vehicleMater",item) - ); //执行流程// } return null; diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/converter/node/impl/SubProcessConverter.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/converter/node/impl/SubProcessConverter.java index f8b3f9c0..eff9858e 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/converter/node/impl/SubProcessConverter.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/converter/node/impl/SubProcessConverter.java @@ -28,6 +28,7 @@ public class SubProcessConverter extends BaseNodeConverter { subProcess.setName(properties.getString("name")); subProcess.setSplit(properties.getString("split")); subProcess.setSplitSwitch(properties.getBoolean("splitSwitch")); + subProcess.setPermeate(properties.getBoolean("permeate")); subProcess.setDocumentation(properties.getString("documentation")); //设置触发事件 subProcess.setExecutionListeners(null); diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/engine/behavior/impl/StartEventActivityBehavior.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/engine/behavior/impl/StartEventActivityBehavior.java index 44f0bda6..11fa6fb1 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/engine/behavior/impl/StartEventActivityBehavior.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/engine/behavior/impl/StartEventActivityBehavior.java @@ -6,6 +6,7 @@ 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.enums.StatusEnum; +import org.nl.common.function.PermeateFunction; import org.nl.common.utils.IdUtil; import org.nl.wms.config_manage.form_struc.service.IBmFormStrucService; import org.nl.wms.config_manage.form_struc.service.dao.BmFormStruc; @@ -27,6 +28,7 @@ import org.springframework.stereotype.Service; import java.util.List; import java.util.Set; +import java.util.function.BiConsumer; import java.util.function.Consumer; import java.util.stream.Collectors; @@ -69,9 +71,9 @@ public class StartEventActivityBehavior extends FlowNodeActivityBehavior { .append(" where id = ") .append("'"+entity.getForm_id()+"'"); iPmFormDataService.dynamicSql(sql.toString()); - Consumer callback = entity.getCallback(); + PermeateFunction callback = entity.getCallback(); if (callback!=null){ - callback.accept(proc_inst_id); + callback.accept(proc_inst_id,null); } ActRuExecution execution = new ActRuExecution(); execution.setProc_inst_id(proc_inst_id); diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/engine/behavior/impl/SubProcessActivityBehavior.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/engine/behavior/impl/SubProcessActivityBehavior.java index 199192fa..fdcf6f88 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/engine/behavior/impl/SubProcessActivityBehavior.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/engine/behavior/impl/SubProcessActivityBehavior.java @@ -13,29 +13,30 @@ import org.nl.wms.flow_manage.flow.framework.entity.node.base.impl.FlowElement; import org.nl.wms.flow_manage.flow.framework.entity.node.impl.EventNode.StartEvent; import org.nl.wms.flow_manage.flow.framework.entity.node.impl.SubProcess.SubProcess; import org.nl.wms.flow_manage.flow.service.deployment.IActReProcdefService; +import org.nl.wms.md_manage.vehicleMater.service.IMdPbVehicleMaterService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; +import javax.security.auth.callback.Callback; import java.util.*; import java.util.concurrent.CompletableFuture; +import java.util.function.Consumer; import java.util.function.Function; +import java.util.function.Supplier; /* * @author ZZQ * @Date 2024/5/6 17:47 - * 后续可以定义规则 + * 后续可以定义规则:子流程如果根据vehicle_code拆分的话,每个载具都有一个自己的流程,所以需要跟新载具流程实例id */ @Service("subProcess") public class SubProcessActivityBehavior extends FlowNodeActivityBehavior { - @Autowired - private IActReProcdefService reProcdefService; - @Autowired - private BpmnJSONConverter bpmnJSONConverter; @Autowired private CommandExecutor commandExecutor; + @Override public void execute(ExecutionEntity entity) { //两种方式:一种根据明细生成多个子流程并行,还有个顺序执行 @@ -94,6 +95,9 @@ public class SubProcessActivityBehavior extends FlowNodeActivityBehavior ((JSONObject) o).getJSONObject("t").getString("vehicle_code"))); + } subEntity.setT(o); //在endEvent中有个所有子流程结束的判断:如果判断成功会触发父流程:startEvent暂时通过等待处理防止自动流程导致endEvent判断出错 commandExecutor.execute(new StartInstanceCmd(), subEntity); diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/entity/ExecutionEntity.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/entity/ExecutionEntity.java index 5eadbd50..a1bc12b1 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/entity/ExecutionEntity.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/entity/ExecutionEntity.java @@ -5,9 +5,12 @@ import lombok.Data; import lombok.Getter; import org.apache.commons.lang3.StringUtils; import org.nl.common.domain.exception.BadRequestException; +import org.nl.common.function.PermeateFunction; import org.nl.wms.config_manage.form_struc.service.dao.BmFormStruc; import org.nl.wms.flow_manage.flow.framework.entity.node.base.impl.FlowElement; +import java.util.Set; +import java.util.function.BiConsumer; import java.util.function.Consumer; /* @@ -61,7 +64,7 @@ public class ExecutionEntity implements Cloneable{ protected JSONObject auxParam = new JSONObject(); //回调执行 - protected Consumer callback = null; + protected PermeateFunction callback = null; protected T t; diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/entity/node/impl/SubProcess/SubProcess.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/entity/node/impl/SubProcess/SubProcess.java index 8ada5235..0afceb99 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/entity/node/impl/SubProcess/SubProcess.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/entity/node/impl/SubProcess/SubProcess.java @@ -28,10 +28,18 @@ public class SubProcess extends FlowNode { protected Map flowElementMap = new LinkedHashMap<>(); protected List flowElementList = new ArrayList<>(); - + /** + * 基于字段拆分 + */ protected String split; - + /** + * 数据拆分 + */ protected Boolean splitSwitch; + /** + * 透传回调函数 + */ + protected Boolean permeate; diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/service/classprocessimpl/OutStorageTaskHandler.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/service/classprocessimpl/OutStorageTaskHandler.java deleted file mode 100644 index 3ecd9186..00000000 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/service/classprocessimpl/OutStorageTaskHandler.java +++ /dev/null @@ -1,93 +0,0 @@ -package org.nl.wms.flow_manage.flow.service.classprocessimpl; - -import cn.hutool.core.date.DateUtil; -import com.alibaba.fastjson.JSON; -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.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.flow_manage.flow.framework.process.nodeType.excess.impl.process.classprocess.ClassProcess; -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; -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; -import org.springframework.util.CollectionUtils; - -import java.util.List; -import java.util.stream.Collectors; - -/* - * @author ZZQ - * @Date 2024/5/6 14:34 - * 出库任务入库任务 - */ -public class OutStorageTaskHandler implements ClassProcess { - - @Autowired - private ISchBaseTaskService taskService; - @Autowired - private ISysParamService iSysParamService; - - @Autowired - private IStIvtStructattrService iStIvtStructattrService; - @Autowired - private IMdPbVehicleMaterService iMdPbVehicleMaterService; - - @Override - @Transactional - public JSONObject process(JSONObject from, JSONObject param) { - //区分出库还是入库 - //根据不同的仓位设置不同的终点 - Param outStorage = iSysParamService.findByCode("OutStorage"); - if (outStorage==null || StringUtils.isEmpty(outStorage.getValue())){ - throw new BadRequestException("创建任务失败:OutStorageTaskHandler#process()未配置出库对应点位"); - } - JSONObject outStorageConfig = JSONObject.parseObject(outStorage.getValue()); - String end_point = outStorageConfig.getString(from.getString("stor_code")); - - String vehicle_code = from.getString("vehicle_code"); - StIvtStructattr struct = iStIvtStructattrService.getOne(new QueryWrapper().eq("vehicle_code", vehicle_code)); - String struct_code = struct.getStruct_code(); - if (StringUtils.isEmpty(vehicle_code) ||StringUtils.isEmpty(end_point)||StringUtils.isEmpty(struct_code)){ - throw new BadRequestException("创建任务失败:OutStorageTaskHandler#process()方法请求参数不能为空"); - } - List list = taskService.list(new QueryWrapper().eq("vehicle_code", vehicle_code) - .ne("status", StatusEnum.FORM_STATUS.code("完成"))); - if (!CollectionUtils.isEmpty(list)){ - throw new BadRequestException("当前载具存在任务:"+list.stream().map(SchBaseTask::getTask_code).collect(Collectors.joining(","))); - } - SchBaseTask task = new SchBaseTask(); - task.setId(IdUtil.getStringId()); - task.setTask_code(CodeUtil.getNewCode("TASK_CODE")); - task.setStatus(StatusEnum.FORM_STATUS.code("生成")); - task.setHandle_class(this.getClass().getName()); - task.setAcs_type(""); - task.setCreate_time(DateUtil.now()); - task.setCreate_name(SecurityUtils.getCurrentNickName()); - task.setTask_type(param.getString("task_type")); - task.setVehicle_code(vehicle_code); - task.setPoint_code1(struct_code); - task.setPoint_code2(end_point); - taskService.save(task); - iMdPbVehicleMaterService.update(new LambdaUpdateWrapper() - .set(MdPbVehicleMater::getTask_code,task.getTask_code()) - .eq(MdPbVehicleMater::getVehicle_code,task.getVehicle_code())); - Boolean isSend = param.getBoolean("is_send"); - if (isSend){ - //参数封装,调acs接口 - } - return (JSONObject)JSON.toJSON(task); - } -} diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/service/classprocessimpl/StackingTaskHandler.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/service/classprocessimpl/StackingTaskHandler.java deleted file mode 100644 index 77306f53..00000000 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/service/classprocessimpl/StackingTaskHandler.java +++ /dev/null @@ -1,77 +0,0 @@ -package org.nl.wms.flow_manage.flow.service.classprocessimpl; - -import cn.hutool.core.date.DateUtil; -import com.alibaba.fastjson.JSON; -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.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.flow_manage.flow.framework.process.nodeType.excess.impl.process.classprocess.ClassProcess; -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; -import org.nl.wms.md_manage.vehicleMater.service.dao.MdPbVehicleMater; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.CollectionUtils; - -import java.util.List; -import java.util.stream.Collectors; - -/* - * @author ZZQ - * @Date 2024/5/6 14:34 - * 堆垛机入库任务 - */ -@Service -public class StackingTaskHandler implements ClassProcess { - - @Autowired - ISchBaseTaskService taskService; - - @Autowired - IMdPbVehicleMaterService iMdPbVehicleMaterService; - - @Override - @Transactional - public JSONObject process(JSONObject from, JSONObject param) { - //区分出库还是入库 - String vehicle_code = from.getString("vehicle_code"); - String struct_code = from.getString("struct_code"); - String start_point = param.getString("start_point"); - if (StringUtils.isEmpty(vehicle_code) ||StringUtils.isEmpty(start_point)||StringUtils.isEmpty(struct_code)){ - throw new BadRequestException("创建任务失败:StackingTaskHandler#process()方法请求参数不能为空"); - } - List list = taskService.list(new QueryWrapper().eq("vehicle_code", vehicle_code) - .ne("status", StatusEnum.FORM_STATUS.code("完成"))); - if (!CollectionUtils.isEmpty(list)){ - throw new BadRequestException("当前载具存在任务:"+list.stream().map(SchBaseTask::getTask_code).collect(Collectors.joining(","))); - } - SchBaseTask task = new SchBaseTask(); - task.setId(IdUtil.getStringId()); - task.setSource_form_id(from.getString("id")); - task.setTask_code(CodeUtil.getNewCode("TASK_CODE")); - task.setStatus(StatusEnum.FORM_STATUS.code("生成")); - task.setHandle_class(this.getClass().getName()); - task.setAcs_type(""); - task.setCreate_time(DateUtil.now()); - task.setCreate_name(SecurityUtils.getCurrentNickName()); - task.setTask_type(param.getString("task_type")); - task.setVehicle_code(vehicle_code); - task.setPoint_code1(start_point); - task.setPoint_code2(struct_code); - taskService.create(task); - iMdPbVehicleMaterService.update(new LambdaUpdateWrapper() - .set(MdPbVehicleMater::getTask_code,task.getTask_code()) - .eq(MdPbVehicleMater::getVehicle_code,task.getVehicle_code())); - - return (JSONObject)JSON.toJSON(task); - } -} diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/service/execution/IFlowOperationService.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/service/execution/IFlowOperationService.java index 3f5f939d..958972b9 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/service/execution/IFlowOperationService.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/service/execution/IFlowOperationService.java @@ -2,8 +2,10 @@ package org.nl.wms.flow_manage.flow.service.execution; import com.alibaba.fastjson.JSONObject; +import org.nl.common.function.PermeateFunction; import org.nl.wms.flow_manage.flow.framework.entity.ExecutionDto; +import java.util.function.BiConsumer; import java.util.function.Consumer; /** @@ -14,7 +16,7 @@ import java.util.function.Consumer; **/ public interface IFlowOperationService { - String startUp(String model_key, Consumer callback,ExecutionDto dto,JSONObject auxParam); + String startUp(String model_key, PermeateFunction callback, ExecutionDto dto, JSONObject auxParam); Boolean flowConfirm(String proc_inst_id,JSONObject auxParam,ExecutionDto dto); 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 55ae258f..4718ceb3 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 @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import org.apache.commons.lang3.StringUtils; import org.nl.common.domain.exception.BadRequestException; import org.nl.common.enums.StatusEnum; +import org.nl.common.function.PermeateFunction; import org.nl.wms.flow_manage.flow.framework.BpmnModel; import org.nl.wms.flow_manage.flow.framework.converter.BpmnJSONConverter; import org.nl.wms.flow_manage.flow.framework.engine.cmd.CommandExecutor; @@ -26,6 +27,7 @@ import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.List; +import java.util.function.BiConsumer; import java.util.function.Consumer; /* @@ -47,7 +49,7 @@ public class FlowOperationServiceImpl implements IFlowOperationService { private CommandExecutor commandExecutor; @Override - public String startUp(String model_key, Consumer callback, ExecutionDto dto, JSONObject auxParam) { + public String startUp(String model_key, PermeateFunction callback, ExecutionDto dto, JSONObject auxParam) { ActRuExecution one = iActRuExecutionService.getOne(new QueryWrapper() .eq("form_type", dto.getForm_type()) .eq("form_id", dto.getForm_id()) diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/monitor/FlowEventListener.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/monitor/FlowEventListener.java index 1194991e..79b78b75 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/monitor/FlowEventListener.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/monitor/FlowEventListener.java @@ -23,6 +23,6 @@ public class FlowEventListener extends AbstraceListener { protected String doEvent(FlowStartEvent event) { String s = JSON.toJSONString(event.getDto()); log.info("触发流程"+ s); - return flowOperationService.startUp(event.getModel_key(), event.getCallback(), event.getDto(), event.getAuxParam()); + return flowOperationService.startUp(event.getModel_key(), event.getFlowStartCallback(), event.getDto(), event.getAuxParam()); } } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/monitor/event/FlowContinueEvent.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/monitor/event/FlowContinueEvent.java index 674419b5..ab764576 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/monitor/event/FlowContinueEvent.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/monitor/event/FlowContinueEvent.java @@ -3,11 +3,13 @@ package org.nl.wms.flow_manage.monitor.event; import com.alibaba.fastjson.JSONObject; import lombok.Data; import org.nl.common.domain.exception.BadRequestException; +import org.nl.common.function.PermeateFunction; import org.nl.common.publish.event.PublishEvent; import org.nl.wms.flow_manage.flow.framework.entity.ExecutionDto; import java.util.ArrayList; import java.util.List; +import java.util.function.BiConsumer; import java.util.function.Consumer; /* @@ -23,15 +25,17 @@ public class FlowContinueEvent extends PublishEvent { * 实例id */ private String proc_inst_id; + + private PermeateFunction flowStartCallback; /** * 流程实例全局数据 */ private JSONObject auxParam; - public FlowContinueEvent(String proc_inst_id, Consumer callback, JSONObject auxParam) { + public FlowContinueEvent(String proc_inst_id,PermeateFunction flowStartCallback, JSONObject auxParam) { this.proc_inst_id = proc_inst_id; this.auxParam = auxParam; - this.setCallback(callback); + this.flowStartCallback = flowStartCallback; } public FlowContinueEvent setDto(ExecutionDto dto) { diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/monitor/event/FlowStartEvent.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/monitor/event/FlowStartEvent.java index 43646ffe..c2415dd9 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/monitor/event/FlowStartEvent.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/monitor/event/FlowStartEvent.java @@ -1,15 +1,13 @@ package org.nl.wms.flow_manage.monitor.event; import com.alibaba.fastjson.JSONObject; -import org.apache.poi.ss.formula.functions.T; import org.nl.common.domain.exception.BadRequestException; +import org.nl.common.function.PermeateFunction; import org.nl.common.publish.event.PublishEvent; import org.nl.wms.flow_manage.flow.framework.entity.ExecutionDto; import java.util.ArrayList; import java.util.List; -import java.util.Map; -import java.util.function.Consumer; /* * @author ZZQ @@ -22,15 +20,18 @@ public class FlowStartEvent extends PublishEvent { private String model_key; + private PermeateFunction flowStartCallback; + + /** * 流程实例全局数据 */ private JSONObject auxParam; - public FlowStartEvent(String model_key, Consumer callback,JSONObject auxParam) { + public FlowStartEvent(String model_key, PermeateFunction biCallback, JSONObject auxParam) { this.model_key = model_key; this.auxParam = auxParam; - this.setCallback(callback); + this.flowStartCallback = biCallback; } public String getModel_key() { @@ -72,6 +73,10 @@ public class FlowStartEvent extends PublishEvent { return this; } + public PermeateFunction getFlowStartCallback() { + return flowStartCallback; + } + public ExecutionDto getDto() { return dto; } 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 0d1f137b..17a7aba9 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 @@ -8,10 +8,7 @@ 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.CodeUtil; -import org.nl.common.utils.IdUtil; -import org.nl.common.utils.MapOf; -import org.nl.common.utils.SecurityUtils; +import org.nl.common.utils.*; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.nl.wms.base_manage.vehicle.service.IBmVehicleInfoService; import org.nl.wms.base_manage.vehicle.service.dao.BmVehicleInfo; @@ -230,11 +227,13 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl dtlVo = iStIvtIostorinvDtlService.getDtlVo(iostorinv.getId()); - Set vechiles = dtlVo.stream().map(StIvtIostorinvdtlVo::getVehicle_code).collect(Collectors.toSet()); + List vechiles = dtlVo.stream().map(StIvtIostorinvdtlVo::getVehicle_code).collect(Collectors.toList()); //扔一个物料信息进去 - BussEventMulticaster.Publish(new FlowStartEvent("st_ivt_iostorinv_"+(iostorinv.getIn_storage()?"in":"out"), - proc_inst_id -> iMdPbVehicleMaterService.update(new UpdateWrapper() - .set("proc_inst_id",proc_inst_id).in("vehicle_code",vechiles)),null) + BussEventMulticaster.Publish(new FlowStartEvent("st_ivt_iostorinv_"+(iostorinv.getIn_storage()?"in":"out") + , (proc_inst_id,innerVehicle) -> iMdPbVehicleMaterService.update(new UpdateWrapper() + .set("proc_inst_id",proc_inst_id) + .in("vehicle_code",innerVehicle==null?vechiles: ListOf.of(innerVehicle))) + ,null) .build("st_ivt_iostorinv",iostorinv.getId(),iostorinv.getSource_form_type(),iostorinv.getSource_form_id(),form) .build("st_ivt_iostorinvdtl",dtlVo) ); 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 f24ac01e..601fc0d8 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 @@ -148,10 +148,14 @@ public class PickingService { dto.setT(mstJ); dto.setItem(packageT(mstJ,"id")); - BussEventMulticaster.Publish(new FlowContinueEvent(mst.getProc_inst_id(), o -> iFormDataService.update(new UpdateWrapper() + FlowContinueEvent continueEvent = new FlowContinueEvent(mst.getProc_inst_id(), null,null) + .setDto(dto); + continueEvent.setCallback(emp->{ + iFormDataService.update(new UpdateWrapper() .set("status",StatusEnum.FORM_STATUS.code("执行中")) - .eq("id",mst.getId())), null) - .setDto(dto)); + .eq("id",mst.getId())); + }); + BussEventMulticaster.Publish(continueEvent); } private List packageT(JSONObject current,String itemField){