From 95a52eb5a9b4958350d535dac16ab8aa96e19b47 Mon Sep 17 00:00:00 2001 From: zhangzq Date: Wed, 12 Jun 2024 14:48:05 +0800 Subject: [PATCH] =?UTF-8?q?add:=E6=8B=A3=E9=80=89=E5=87=BA=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/nl/common/enums/StatusEnum.java | 61 ++++++++++--- .../java/org/nl/common/utils/ForkMap.java | 81 +++++++++++++++++ .../handler/impl/base/FIFORuleHandler.java | 28 +++--- .../task/handler/AbstractTask.java} | 6 +- .../handler/impl/GroupDickInStorageTask.java} | 13 +-- .../task/handler/impl/InStorageTask.java | 87 +++++++++++++++++++ .../acs/service/AcsToWmsService.java | 29 +++++-- .../node/impl/SequenceFlowConverter.java | 1 - .../impl/SubProcessActivityBehavior.java | 8 +- .../nodeType/excess/impl/DecisionHandler.java | 62 +++++++------ .../CreateTaskProcessHandler.java | 45 ++-------- .../StorageChangesProcessHandler.java | 2 +- .../service/dao/MdPbVehicleMater.java | 5 ++ .../StIvtIostorinvOutController.java | 4 +- .../impl/StIvtIostorinvServiceImpl.java | 13 +-- .../service/IStIvtStructattrService.java | 4 +- .../dao/mapper/StIvtStructattrMapper.java | 2 + .../dao/mapper/xml/StIvtStructattrMapper.xml | 16 ++++ .../service/dto/StructattrVechielDto.java | 4 + .../impl/StIvtStructattrServiceImpl.java | 14 ++- .../controller/dict/SysDictController.java | 7 +- .../views/wms/stor_manage/out/AddDialog.vue | 12 ++- .../views/wms/stor_manage/out/TaskDialog.vue | 4 +- .../views/wms/stor_manage/out/ViewDialog.vue | 2 +- 24 files changed, 380 insertions(+), 130 deletions(-) create mode 100644 wms_pro/hd/nladmin-system/src/main/java/org/nl/common/utils/ForkMap.java rename wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/{decision_manage/applyTask/AbstractApplyTask.java => dispatch_manage/task/handler/AbstractTask.java} (82%) rename wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/{decision_manage/applyTask/impl/ApplyFlowTask.java => dispatch_manage/task/handler/impl/GroupDickInStorageTask.java} (90%) create mode 100644 wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/InStorageTask.java 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 2133566d..5bdfcb1a 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 @@ -1,9 +1,11 @@ package org.nl.common.enums; +import com.baomidou.mybatisplus.extension.api.R; import lombok.AllArgsConstructor; import lombok.Getter; import org.apache.commons.lang3.StringUtils; import org.nl.common.domain.exception.BadRequestException; +import org.nl.common.utils.ForkMap; import org.nl.common.utils.MapOf; import java.util.Map; @@ -19,45 +21,80 @@ public enum StatusEnum { /** * 流程相关 */ - MODEL_STATUS(MapOf.of("发布", "10", "未发布", "30")), - FLOW_STATUS(MapOf.of("启动", "10", "节点完成", "20","暂停", "30","完成", "90")), + MODEL_STATUS(ForkMap.of("发布", "10",null, "未发布", "30",null)), + FLOW_STATUS(ForkMap.of("启动", "10",null, "节点完成", "20",null,"暂停", "30",null,"完成", "90",null)), /** * 单据状态 */ - FORM_STATUS(MapOf.of("生成", "10","已分配", "13", "执行中", "20","完成", "90","取消", "100")), + FORM_STATUS(ForkMap.of("生成", "10",null,"已分配", "13", null,"执行中", "20",null,"完成", "90",null,"取消", "100",null)), /** * 出入库单据类型 */ - IOBILL_TYPE_IN(MapOf.of("生产入库", "10", "调拨入库", "11", "退货入库", "12")), - IOBILL_TYPE_OUT(MapOf.of("销售出库", "20", "生产出库", "21", "调拨出库", "22")), + IOBILL_TYPE_IN(ForkMap.of("生产入库", "10","inStorageTask", "调拨入库", "11","inStorageTask", "退货入库", "12","inStorageTask")), + IOBILL_TYPE_OUT(ForkMap.of("销售出库", "20","outStorageTask","生产出库", "21","outStorageTask", "调拨出库", "22","outStorageTask")), /** * 任务类型 */ - TASK_TYPE(MapOf.push(IOBILL_TYPE_IN.code,IOBILL_TYPE_OUT.code)), + TASK_TYPE(ForkMap.pushAll(IOBILL_TYPE_IN.code,IOBILL_TYPE_OUT.code)), + + ACS_TYPE(ForkMap.of("立库", "10",null + ,"海柔", "20",null + ,"诺宝", "30",null + )), + /** * 点位锁类型 */ - LOCK(MapOf.of("无","00","入","10","出","20")), - STRATEGY_TYPE(MapOf.of("入库", "1", "出库", "2", "出入库", "3")), + LOCK(ForkMap.of("无","00",null,"入","10",null,"出","20",null)), + STRATEGY_TYPE(ForkMap.of("入库", "1",null, "出库", "2", null,"出入库", "3",null)), ; - private Map code; + + /** + * L:label + * M:编码 + * R:指定服务类 + */ + private ForkMap code; public String code(String desc) { - String code = this.getCode().get(desc); + String code = this.getCode().getM(desc); if (StringUtils.isNotEmpty(code)) { return code; } throw new BadRequestException(this.name() + "对应类型" + desc + "未定义"); } + public String desc(String code) { + for (String key : this.getCode().getKeySet()) { + if (key.equals(code)){ + return this.getCode().getM(key); + } + } + throw new BadRequestException(this.name() + "对应编码" + code + "未定义"); + } + + public String getR(String code) { + for (String key : this.getCode().getKeySet()) { + if (key.equals(code)){ + String r = this.getCode().getR(key); + if (StringUtils.isEmpty(r)) { + throw new BadRequestException(this.name() + "对应编码" + code + "未定义R的数据"); + } + return r; + } + } + throw new BadRequestException(this.name() + "对应编码" + code + "未定义x"); + } public Boolean check(String code) { - for (Map.Entry entry : this.getCode().entrySet()) { - if (entry.getValue().equals(code)) { + ForkMap map = this.getCode(); + for (String key : map.getKeySet()) { + if (code.equals(map.getM(key))){ return true; } } return false; + } } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/utils/ForkMap.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/utils/ForkMap.java new file mode 100644 index 00000000..277dbeb2 --- /dev/null +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/utils/ForkMap.java @@ -0,0 +1,81 @@ +package org.nl.common.utils; + + +import java.io.Serializable; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +/* + * @author ZZQ + * @Date 2022/11/29 2:55 下午 + * 三叉Map + */ +public class ForkMap implements Serializable { + + transient Map items=new HashMap<>(); + transient Set keySet = new HashSet<>(); + + public M getM(L key){ + Node node = items.get(hash(key)); + if (node==null){ + return null; + } + return node.middle; + } + + public R getR(L key){ + Node node = items.get(hash(key)); + if (node==null){ + return null; + } + return node.right; + } + public Set getKeySet(){ + return keySet; + } + + public static ForkMap pushAll(ForkMap... maps){ + ForkMap forkMap = new ForkMap(); + for (ForkMap map : maps) { + for (L key : map.getKeySet()) { + L key1 = key; + M m = map.getM(key1); + R r = map.getR(key1); + forkMap.put(key1, m, r); + } + } + return forkMap; + } + + public static ForkMap of(V...keys){ + ForkMap map = new ForkMap(); + for (int i = 0; i < keys.length/3; i++) { + map.put(keys[i*3],keys[i*3+1],keys[i*3+2]); + } + return map; + } + + public ForkMap put(L key, M middle,R right) { + Node node = new Node(key, middle, right); + items.put(hash(key),node); + keySet.add(key); + return this; + } + + static class Node{ + private L left; + private M middle; + private R right; + Node(L left, M middle, R right) { + this.left = left; + this.middle = middle; + this.right = right; + } + } + static final int hash(Object key) { + int h; + return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16); + } +} diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/decision_manage/handler/impl/base/FIFORuleHandler.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/decision_manage/handler/impl/base/FIFORuleHandler.java index 706f6bca..26dca00a 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/decision_manage/handler/impl/base/FIFORuleHandler.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/decision_manage/handler/impl/base/FIFORuleHandler.java @@ -14,8 +14,11 @@ import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.math.BigDecimal; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; /* @@ -24,15 +27,14 @@ import java.util.stream.Collectors; * 先进先出策略 */ @Service("fifo") -public class FIFORuleHandler extends Decisioner { +public class FIFORuleHandler extends Decisioner { /** * 出入库明细服务 */ @Autowired private IStIvtStructattrService iStIvtStructattrService; - @Autowired - private IMdPbVehicleMaterService iMdPbVehicleMaterService; + /** @@ -46,7 +48,7 @@ public class FIFORuleHandler extends Decisioner { * @return List :仓位集合 */ @Override - public List handler(List list, JSONObject param) { + public List handler(List list, JSONObject param) { // 判断仓位是否为空 if (ObjectUtil.isEmpty(list)) { throw new BadRequestException("仓位集合为空!"); @@ -59,20 +61,20 @@ public class FIFORuleHandler extends Decisioner { , "stor_code", param.getString("stor_code") , "order_by", "update_time asc") ); - List need = list.stream().map(StIvtStructattr::getStruct_code).collect(Collectors.toList()); + List need = list.stream().map(StructattrVechielDto::getVehicle_code).collect(Collectors.toList()); - List disList = new ArrayList<>(); + List disList = new ArrayList<>(); for (StructattrVechielDto structattr : vechielDtos) { - if (need.contains(structattr.getStruct_code())){ - StIvtStructattr stIvtStructattr = new StIvtStructattr(); - BeanUtils.copyProperties(structattr,stIvtStructattr); - disList.add(stIvtStructattr); - + if (need.contains(structattr.getVehicle_code())){ int cause_qty = structattr.getQty().subtract(structattr.getFrozen_qty()).intValue(); - plan_qty = plan_qty - cause_qty; - if (plan_qty<=0){ + int sub = plan_qty - cause_qty; + disList.add(structattr); + if (sub<=0){ + structattr.setFrozen_qty(new BigDecimal(plan_qty)); break; } + structattr.setFrozen_qty(new BigDecimal(cause_qty)); + plan_qty = sub; } } return disList; diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/decision_manage/applyTask/AbstractApplyTask.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/AbstractTask.java similarity index 82% rename from wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/decision_manage/applyTask/AbstractApplyTask.java rename to wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/AbstractTask.java index 6b02b7f6..ea1eb806 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/decision_manage/applyTask/AbstractApplyTask.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/AbstractTask.java @@ -1,4 +1,4 @@ -package org.nl.wms.decision_manage.applyTask; +package org.nl.wms.dispatch_manage.task.handler; import com.alibaba.fastjson.JSONArray; @@ -17,10 +17,10 @@ import org.nl.wms.dispatch_manage.task.service.dao.SchBaseTask; * @created 2020年6月12日 下午5:53:28 */ @Slf4j -public abstract class AbstractApplyTask { +public abstract class AbstractTask { - public abstract String createTask(JSONObject data); + public abstract JSONObject createTask(JSONObject data); public abstract void updateStatus(JSONObject data); diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/decision_manage/applyTask/impl/ApplyFlowTask.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/GroupDickInStorageTask.java similarity index 90% rename from wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/decision_manage/applyTask/impl/ApplyFlowTask.java rename to wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/GroupDickInStorageTask.java index a59e8c50..ee7cefad 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/decision_manage/applyTask/impl/ApplyFlowTask.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/GroupDickInStorageTask.java @@ -1,4 +1,4 @@ -package org.nl.wms.decision_manage.applyTask.impl; +package org.nl.wms.dispatch_manage.task.handler.impl; import com.alibaba.fastjson.JSONObject; @@ -10,7 +10,8 @@ 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.decision_manage.applyTask.AbstractApplyTask; +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.monitor.event.FlowStartEvent; import org.nl.wms.md_manage.group_dick.service.IMdGruopDickService; import org.nl.wms.md_manage.group_dick.service.dao.MdGruopDick; @@ -22,7 +23,6 @@ import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.List; -import java.util.function.Consumer; /** @@ -35,8 +35,8 @@ import java.util.function.Consumer; * @created 2020年6月12日 下午5:53:28 */ @Slf4j -@Service -public class ApplyFlowTask extends AbstractApplyTask { +@Service("ZPInStorage") +public class GroupDickInStorageTask extends AbstractTask { @Autowired private IMdPbVehicleMaterService iMdPbVehicleMaterService; @@ -44,7 +44,7 @@ public class ApplyFlowTask extends AbstractApplyTask { private IMdGruopDickService iMdGruopDickService; @Override - public String createTask(JSONObject data) { + public JSONObject createTask(JSONObject data) { for (String vehicle_code : data.keySet()) { String point_code1 = data.getString(vehicle_code); if (StringUtils.isEmpty(point_code1)){ @@ -68,6 +68,7 @@ public class ApplyFlowTask extends AbstractApplyTask { .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/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 new file mode 100644 index 00000000..b6d08581 --- /dev/null +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/InStorageTask.java @@ -0,0 +1,87 @@ +package org.nl.wms.dispatch_manage.task.handler.impl; + +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.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.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.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.Map; +import java.util.stream.Collectors; + +/* + * @author ZZQ + * @Date 2024/5/6 14:34 + * 堆垛机入库任务 + */ +@Service +public class InStorageTask extends AbstractTask { + + @Autowired + ISchBaseTaskService taskService; + + @Autowired + IMdPbVehicleMaterService iMdPbVehicleMaterService; + + @Override + public JSONObject createTask(JSONObject from) { + String vehicle_code = from.getString("vehicle_code"); + String struct_code = from.getString("struct_code"); + String target_point = from.getString("target_point"); + String task_type = from.getString("task_type"); + if (StringUtils.isEmpty(vehicle_code) ||StringUtils.isEmpty(target_point)||StringUtils.isEmpty(struct_code)){ + throw new BadRequestException("创建任务失败:方法请求参数不能为空"); + } + 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(StatusEnum.ACS_TYPE.code("立库")); + task.setCreate_time(DateUtil.now()); + task.setCreate_name(SecurityUtils.getCurrentNickName()); + task.setTask_type(task_type); + task.setVehicle_code(vehicle_code); + task.setPoint_code1(target_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); + + } + + @Override + public void updateStatus(JSONObject data) { + + } + + @Override + public void cancel(JSONObject data) { + + } +} 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 cfdebef9..2e586379 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 @@ -4,12 +4,15 @@ 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.nl.common.domain.exception.BadRequestException; +import org.nl.common.enums.StatusEnum; import org.nl.common.utils.InterationUtil; import org.nl.common.utils.SpringContextHolder; -import org.nl.wms.decision_manage.applyTask.impl.ApplyFlowTask; +import org.nl.wms.dispatch_manage.task.handler.AbstractTask; +import org.nl.wms.dispatch_manage.task.handler.impl.GroupDickInStorageTask; +import org.nl.wms.dispatch_manage.task.service.ISchBaseTaskService; import org.nl.wms.dispatch_manage.task.service.dao.SchBaseTask; import org.nl.wms.external_system.acs.service.dto.TransferDto; -import org.nl.wms.external_system.dto.InteracteDto; import org.nl.wms.flow_manage.flow.framework.process.nodeType.source.impl.MappingSourceDataTypeHandler; import org.nl.wms.sync_manage.service.form_mapping.ISyncFormMappingService; import org.nl.wms.sync_manage.service.form_mapping.dao.SyncFormMapping; @@ -18,6 +21,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; +import java.util.Map; /* * @author ZZQ @@ -27,11 +31,26 @@ import java.util.List; public class AcsToWmsService implements InitializingBean { @Autowired - private ApplyFlowTask applyFlowTask; + private Map applyTaskMap; + @Autowired + private ISchBaseTaskService iSchBaseTaskService; + private SyncFormMapping mapping; - public void applyTask(String taskType,JSONObject data){ - applyFlowTask.createTask(data); + public void applyTask(String service,JSONObject data){ + if (service.equals("ZPInStorage")){ + applyTaskMap.get("ZPInStorage").createTask(data); + } + if (service.equals("TaskStatus")){ + String task_code = data.getString("task_code"); + SchBaseTask task = iSchBaseTaskService.getOne(new QueryWrapper().eq("task_code", task_code) + .lt("status", StatusEnum.FORM_STATUS.code("完成"))); + if (task == null){ + throw new BadRequestException("更新失败:当前执行中的任务不存在"); + } + applyTaskMap.get(task.getTask_type()).updateStatus(data); + } + } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/converter/node/impl/SequenceFlowConverter.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/converter/node/impl/SequenceFlowConverter.java index c749b24c..e4941700 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/converter/node/impl/SequenceFlowConverter.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/converter/node/impl/SequenceFlowConverter.java @@ -23,7 +23,6 @@ public class SequenceFlowConverter extends BaseNodeConverter { sequenceFlow.setName(properties.getString("name")); sequenceFlow.setDocumentation(properties.getString("documentation")); //设置触发事件 - sequenceFlow.setExecutionListeners(null); sequenceFlow.setSkipExpression(properties.getString("skipExpression")); FlowNode sourceNode = model.getProcesses().get(node.getString("sourceNodeId")); 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 9a47ec91..d7a5d6aa 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 @@ -71,14 +71,16 @@ public class SubProcessActivityBehavior extends FlowNodeActivityBehavior decisionHandlerMap; @@ -63,9 +67,8 @@ public class DecisionHandler extends TypeHandler list = SpringContextHolder.getBean(DecisionHandler.class).dispense(params, item_json); + Map map = SpringContextHolder.getBean(DecisionHandler.class).dispense(params, item_json); //更新仓位,更新数据 - String collect = list.stream().map(StIvtStructattr::getStruct_code).collect(Collectors.joining(",")); System.out.println(flow.getForm_type()+"更新明细id"+item_json.getString("id")); // StringBuffer sql = new StringBuffer(); // sql.append("update ") @@ -75,30 +78,29 @@ public class DecisionHandler extends TypeHandler dispense(List params, JSONObject iostorinvdtl) { + public Map dispense(List params, JSONObject iostorinvdtl) { Decisioner oneDecisioner = decisionHandlerMap.get(params.get(0)); //判断是出库还是入库 - String stor_code = iostorinvdtl.getString("stor_code"); - String strategy_type = oneDecisioner.strategyConfig.getStrategy_type(); boolean in_storage = StatusEnum.STRATEGY_TYPE.code("入库").equals(strategy_type); - AtomicReference> structCode = new AtomicReference<>(); + AtomicReference structCode = new AtomicReference<>(); RedissonUtils.lock(()->{ - QueryWrapper query = new QueryWrapper() - .eq("is_used", true) - .eq("lock_type", StatusEnum.LOCK.code("无")) - .eq("stor_code", iostorinvdtl.getString("stor_code")); + List list; if (in_storage){ - query.eq("vehicle_code",""); + QueryWrapper query = new QueryWrapper() + .eq("is_used", true) + .eq("lock_type", StatusEnum.LOCK.code("无")) + .eq("stor_code", iostorinvdtl.getString("stor_code")); + query.isNull("vehicle_code"); + list = iStIvtStructattrService.list(query); + }else { - query.ne("vehicle_code",""); + list = iStIvtStructattrService.structVehicle(null); } - //如果是入库则过滤空;否则则不过滤 - List list = iStIvtStructattrService.list(query); if (CollectionUtils.isEmpty(list)){ throw new BadRequestException("当前分配策略无可用货位"); } @@ -112,19 +114,25 @@ public class DecisionHandler extends TypeHandler() + StIvtStructattr structattr = (StIvtStructattr)list.get(0); + iStIvtStructattrService.update(new UpdateWrapper() // .set("vehicle_code", iostorinvdtl.getVehicle_code()) - .set("lock_type", StatusEnum.LOCK.code(in_storage?"入":"出")) - .in("struct_code", list.stream().map(StIvtStructattr::getStruct_code).collect(Collectors.toList()))); - System.out.println("货位绑定成功"); - },"入",2); - System.out.println("货位绑定成功------"); + .set("lock_type", StatusEnum.LOCK.code("入")) + .eq("struct_code", structattr.getStruct_code())); + System.out.println("货位绑定成功"+structattr.getStruct_code()); + structCode.set(MapOf.of("struct_code",structattr.getStruct_code())); + }else { + for (StructattrVechielDto vechielDto : ((List) list)) { + iMdPbVehicleMaterService.update(new UpdateWrapper() + .set("frozen_qty",vechielDto.getFrozen_qty()) + .eq("id",vechielDto.getVm_id())); + } + List collect = ((List) list).stream().map(StructattrVechielDto::getVehicle_code).collect(Collectors.toList()); + System.out.println("载具绑定成功"+collect.toString()); + structCode.set(MapOf.of("vehicle_code",collect.stream().collect(Collectors.joining(",")))); + } + },"入",2); return structCode.get(); } } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/service/classprocessimpl/CreateTaskProcessHandler.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/service/classprocessimpl/CreateTaskProcessHandler.java index 4816a0dd..e0f2639c 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/service/classprocessimpl/CreateTaskProcessHandler.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/service/classprocessimpl/CreateTaskProcessHandler.java @@ -11,6 +11,7 @@ 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.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.process.nodeType.excess.impl.process.classprocess.ClassProcess; @@ -22,6 +23,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; /* @@ -33,46 +35,17 @@ import java.util.stream.Collectors; public class CreateTaskProcessHandler implements ClassProcess { @Autowired - ISchBaseTaskService taskService; - - @Autowired - IMdPbVehicleMaterService iMdPbVehicleMaterService; + Map taskMap; @Override @Transactional public JSONObject process(JSONObject from, JSONObject param) { - //区分出库还是入库 - String vehicle_code = from.getString("vehicle_code"); - String struct_code = from.getString("struct_code"); - String target_point = param.getString("target_point"); - String task_type = param.getString("task_type"); - if (StringUtils.isEmpty(vehicle_code) ||StringUtils.isEmpty(target_point)||StringUtils.isEmpty(struct_code)){ - throw new BadRequestException("创建任务失败:方法请求参数不能为空"); - } - 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(target_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); + from.putAll(param); + AbstractTask abstractTask = taskMap.get(StatusEnum.TASK_TYPE.getR(from.getString("task_type"))); + if (abstractTask==null){ + throw new BadRequestException("创建任务失败:当前任务类型未定义处理类"); + } + return abstractTask.createTask(from); } } 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 ace4d0fd..66286252 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 @@ -36,7 +36,7 @@ public class StorageChangesProcessHandler implements ClassProcess { @Override public JSONObject process(JSONObject from, JSONObject param) { - //暂时出入入库的问题 + //暂时出入入库的问题:库存变动中任务变动由任务变动接口处理 from.put("status",param.getString("status")); from.put("update_time",DateUtil.now()); from.put("update_name",SecurityUtils.getCurrentNickName()); 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 a8bee322..89d9720b 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 @@ -62,6 +62,11 @@ public class MdPbVehicleMater implements Serializable { */ private BigDecimal frozen_qty; + /** + * 载具锁定 + */ + private Boolean is_lock; + /** * 数量计量单位标识 */ 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 b2e8aa5c..b7174d42 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 @@ -66,8 +66,8 @@ public class StIvtIostorinvOutController { */ @PostMapping("/outDecision") public ResponseEntity outDecision(@RequestBody JSONObject dtl) { - String struct_code = iStIvtIostorinvService.outDispense(dtl); - return new ResponseEntity<>(struct_code,HttpStatus.OK); + String vechicle_codes = iStIvtIostorinvService.outDispense(dtl); + return new ResponseEntity<>(vechicle_codes,HttpStatus.OK); } /** 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 27856dd7..2112da30 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 @@ -183,12 +183,13 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl desicion = iStIvtStructattrService.desicion(form, Boolean.FALSE); - if (CollectionUtils.isEmpty(desicion)){ + Map map = iStIvtStructattrService.desicion(form, Boolean.FALSE); + if (CollectionUtils.isEmpty(map)){ throw new BadRequestException("分配失败,当前出库分配无可用货位"); } + String vehicle_code = map.get("vehicle_code"); iStIvtIostorinvDtlService.update(new UpdateWrapper() - .set("vehicle_code",desicion.stream().map(StIvtStructattr::getVehicle_code).collect(Collectors.joining(","))) + .set("vehicle_code",vehicle_code) .eq("id",form.getString("id"))); int count = iStIvtIostorinvDtlService.count(new QueryWrapper() .eq("inv_id", form.getString("inv_id")).isNull("vehicle_code")); @@ -197,7 +198,7 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl() - .set("lock_type", StatusEnum.LOCK.code("无")) + iMdPbVehicleMaterService.update(new UpdateWrapper() + .set("frozen_qty", 0) .in("vehicle_code", Arrays.asList(split))); iStIvtIostorinvDtlService.update(new UpdateWrapper() .set("vehicle_code",null) 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 337bfd19..93926195 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 @@ -40,7 +40,9 @@ public interface IStIvtStructattrService extends IService { * @param in * @return */ - List desicion(JSONObject form, Boolean in); + Map desicion(JSONObject form, Boolean in); List collectVechicle(Map query); + + List structVehicle(Map query); } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/dao/mapper/StIvtStructattrMapper.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/dao/mapper/StIvtStructattrMapper.java index 7e072a22..419e817c 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/dao/mapper/StIvtStructattrMapper.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/dao/mapper/StIvtStructattrMapper.java @@ -23,4 +23,6 @@ public interface StIvtStructattrMapper extends BaseMapper { List getPageQuery(@Param("query") StructattrQuery query, PageQuery pageQuery); List collectVehicle(Map query); + + List structVehicle(Map query); } 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 ad11e93a..46c76fb1 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 @@ -42,6 +42,7 @@ md_pb_vehicleMater.frozen_qty, md_pb_vehicleMater.material_id, md_pb_vehicleMater.pcsn, + md_pb_vehicleMater.id as vm_id, st_ivt_structattr.* FROM st_ivt_structattr @@ -60,4 +61,19 @@ order by ${order_by} + diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/dto/StructattrVechielDto.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/dto/StructattrVechielDto.java index ff02f386..fd78fd03 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/dto/StructattrVechielDto.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/dto/StructattrVechielDto.java @@ -17,6 +17,10 @@ public class StructattrVechielDto extends MdPbVehicleMater { * 仓位标识 */ private String id; + /** + * 载具物料id + */ + private String vm_id; /** * 仓位编码 diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/impl/StIvtStructattrServiceImpl.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/impl/StIvtStructattrServiceImpl.java index 4d27ae22..cdc8258e 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/impl/StIvtStructattrServiceImpl.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/impl/StIvtStructattrServiceImpl.java @@ -72,7 +72,7 @@ public class StIvtStructattrServiceImpl extends ServiceImpl records = new ArrayList<>(); for (MdPbVehicleMater vehicleMater : vehicleMaters) { StIvtStructivtflow record = new StIvtStructivtflow(); @@ -125,15 +125,15 @@ public class StIvtStructattrServiceImpl extends ServiceImpl desicion(JSONObject form, Boolean in) { + public Map desicion(JSONObject form, Boolean in) { //查询出入库配置规则 Param byCode = iSysParamService.findByCode("decision_"+ in); if (byCode ==null || StringUtils.isEmpty(byCode.getValue())){ throw new BadRequestException("未配置出入库默认规则,请在系统配置中配置"); } List decisions = Arrays.asList(byCode.getValue().split(",")); - List dispense = decisionHandler.dispense(decisions, form); - return dispense; + Map map = decisionHandler.dispense(decisions, form); + return map; } @Override @@ -142,4 +142,10 @@ public class StIvtStructattrServiceImpl extends ServiceImpl structVehicle(Map query) { + List structVehicle = this.baseMapper.structVehicle(query); + return structVehicle; + + } } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/system_manage/controller/dict/SysDictController.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/system_manage/controller/dict/SysDictController.java index 9b6a5bad..ec298a5f 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/system_manage/controller/dict/SysDictController.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/system_manage/controller/dict/SysDictController.java @@ -13,6 +13,7 @@ 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.ForkMap; import org.nl.common.utils.MapOf; import org.nl.wms.system_manage.service.dict.ISysDictService; import org.nl.wms.system_manage.service.dict.dao.Dict; @@ -128,9 +129,9 @@ public class SysDictController { List items = new ArrayList<>(); for (StatusEnum value : StatusEnum.values()) { if (value.name().equals(type)){ - Map code = value.getCode(); - for (String label : code.keySet()) { - items.add(MapOf.of("label",label,"value",code.get(label))); + ForkMap forkMap = value.getCode(); + for (String label : forkMap.getKeySet()) { + items.add(MapOf.of("label",label,"value",forkMap.getM(label))); } break; } diff --git a/wms_pro/qd/src/views/wms/stor_manage/out/AddDialog.vue b/wms_pro/qd/src/views/wms/stor_manage/out/AddDialog.vue index fed361ee..746cc8ee 100644 --- a/wms_pro/qd/src/views/wms/stor_manage/out/AddDialog.vue +++ b/wms_pro/qd/src/views/wms/stor_manage/out/AddDialog.vue @@ -106,8 +106,8 @@ - - + +