From ef5da84d5383904cd3b076698af688b77124bb73 Mon Sep 17 00:00:00 2001 From: zhangzq Date: Fri, 14 Jun 2024 09:47:10 +0800 Subject: [PATCH] =?UTF-8?q?add:=E6=8B=A3=E9=80=89=E5=87=BA=E5=BA=93?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/nl/common/enums/StatusEnum.java | 14 +-- .../java/org/nl/common/utils/ForkMap.java | 11 +- .../java/org/nl/common/utils/SpelUtil.java | 4 +- .../task/handler/impl/OutStorageTask.java | 99 +++++++++++++++++ .../task/handler/impl/PickStorageTask.java | 93 ++++++++++++++++ .../dao/mapper/xml/SchBaseTaskMapper.xml | 2 +- .../converter/BpmnJSONConverter.java | 2 +- ...ayConverter.java => GateWayConverter.java} | 2 +- .../impl/GateWayActivityBehavior.java | 50 ++++++++- .../impl/StrucFormActivityBehavior.java | 1 + .../operation/impl/SequenceFlowOperation.java | 2 +- .../impl/StIvtIostorinvServiceImpl.java | 9 +- .../iostor_dtl/IStIvtIostorinvdtlService.java | 4 +- .../iostor_dtl/dto/StIvtIostorinvdtlVo.java | 102 ++++++++++++++++++ .../impl/StIvtIostorinvdtlServiceImpl.java | 36 ++++++- .../controller/dict/SysDictController.java | 4 +- .../views/wms/stor_manage/in/ViewDialog.vue | 1 + .../views/wms/stor_manage/out/ViewDialog.vue | 4 +- 18 files changed, 406 insertions(+), 34 deletions(-) create mode 100644 wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/OutStorageTask.java create mode 100644 wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/PickStorageTask.java rename wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/converter/node/impl/{GatewayConverter.java => GateWayConverter.java} (96%) create mode 100644 wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/service/iostor_dtl/dto/StIvtIostorinvdtlVo.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 5bdfcb1a..13b6390b 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 @@ -32,7 +32,7 @@ public enum StatusEnum { * 出入库单据类型 */ IOBILL_TYPE_IN(ForkMap.of("生产入库", "10","inStorageTask", "调拨入库", "11","inStorageTask", "退货入库", "12","inStorageTask")), - IOBILL_TYPE_OUT(ForkMap.of("销售出库", "20","outStorageTask","生产出库", "21","outStorageTask", "调拨出库", "22","outStorageTask")), + IOBILL_TYPE_OUT(ForkMap.of("销售出库", "20","outStorageTask","生产出库", "21","outStorageTask", "调拨出库", "22","outStorageTask", "拣选出库", "23","outStorageTask")), /** * 任务类型 @@ -59,20 +59,12 @@ public enum StatusEnum { private ForkMap code; public String code(String desc) { - String code = this.getCode().getM(desc); + String code = this.getCode().getNode(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()) { @@ -84,7 +76,7 @@ public enum StatusEnum { return r; } } - throw new BadRequestException(this.name() + "对应编码" + code + "未定义x"); + throw new BadRequestException(this.name() + "对应编码" + code + "未定义x的数据"); } public Boolean check(String code) { 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 index 277dbeb2..87e8a141 100644 --- 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 @@ -25,6 +25,15 @@ public class ForkMap implements Serializable { return node.middle; } + public L getNode(M desc){ + for (Node value : items.values()) { + if (value.middle.equals(desc)){ + return value.left; + } + } + return null; + } + public R getR(L key){ Node node = items.get(hash(key)); if (node==null){ @@ -52,7 +61,7 @@ public class ForkMap implements Serializable { 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]); + map.put(keys[i*3+1],keys[i*3],keys[i*3+2]); } return map; } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/utils/SpelUtil.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/utils/SpelUtil.java index f89961ff..0cff1667 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/utils/SpelUtil.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/utils/SpelUtil.java @@ -93,11 +93,13 @@ public class SpelUtil { } public static Z parse(JSONObject sourceData, String skip, Class target){ StandardEvaluationContext context = new StandardEvaluationContext(); - context.setVariable("M",sourceData); + Map innerMap = sourceData.getInnerMap(); + context.setVariable("M",innerMap); Expression expression = SpelUtil.SPEL_PARSER.parseExpression(skip); try { return expression.getValue(context, target); }catch (SpelEvaluationException ex){ + ex.printStackTrace(); throw new BadRequestException("当前业务数据没有映射 对应的数据"+skip); } } 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 new file mode 100644 index 00000000..b10d0b8e --- /dev/null +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/OutStorageTask.java @@ -0,0 +1,99 @@ +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.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 + * 出库任务入库任务 + */ +@Service +public class OutStorageTask extends AbstractTask { + + @Autowired + private ISchBaseTaskService taskService; + @Autowired + private ISysParamService iSysParamService; + + @Autowired + private IStIvtStructattrService iStIvtStructattrService; + @Autowired + private IMdPbVehicleMaterService iMdPbVehicleMaterService; + + @Override + @Transactional + public JSONObject createTask(JSONObject from) { + String vehicle_code = from.getString("vehicle_code"); + String target_point = from.getString("target_point"); + + 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("完成"))); + if (!CollectionUtils.isEmpty(list)){ + throw new BadRequestException("当前载具存在任务:"+list.stream().map(SchBaseTask::getTask_code).collect(Collectors.joining(","))); + } + StIvtStructattr struct = iStIvtStructattrService.getOne(new QueryWrapper().eq("vehicle_code", vehicle_code)); + + 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(StatusEnum.ACS_TYPE.code("立库")); + task.setCreate_time(DateUtil.now()); + task.setCreate_name(SecurityUtils.getCurrentNickName()); + task.setTask_type(from.getString("task_type")); + task.setVehicle_code(vehicle_code); + task.setPoint_code1(struct.getStruct_code()); + task.setPoint_code2(target_point); + taskService.save(task); + iMdPbVehicleMaterService.update(new LambdaUpdateWrapper() + .set(MdPbVehicleMater::getTask_code,task.getTask_code()) + .eq(MdPbVehicleMater::getVehicle_code,task.getVehicle_code())); + //TODO:是否下发 + Boolean isSend = from.getBoolean("is_send"); + if (isSend){ + //参数封装,调acs接口 + } + 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/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 new file mode 100644 index 00000000..963c0287 --- /dev/null +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/PickStorageTask.java @@ -0,0 +1,93 @@ +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.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.system_manage.service.param.ISysParamService; +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 PickStorageTask extends AbstractTask { + + @Autowired + private ISchBaseTaskService taskService; + + @Autowired + private IMdPbVehicleMaterService iMdPbVehicleMaterService; + + @Override + @Transactional + 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"); + if (StringUtils.isEmpty(vehicle_code) ||StringUtils.isEmpty(struct_code)){ + throw new BadRequestException("创建任务失败:方法请求参数不能为空"); + } + + List list = taskService.list(new QueryWrapper() + .eq("task_type", from.getString("task_type")) + .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(StatusEnum.ACS_TYPE.code("立库")); + task.setCreate_time(DateUtil.now()); + task.setCreate_name(SecurityUtils.getCurrentNickName()); + task.setTask_type(from.getString("task_type")); + task.setVehicle_code(vehicle_code); + task.setPoint_code1(struct_code); + task.setPoint_code2(target_point); + taskService.save(task); + iMdPbVehicleMaterService.update(new LambdaUpdateWrapper() + .set(MdPbVehicleMater::getTask_code,task.getTask_code()) + .eq(MdPbVehicleMater::getVehicle_code,task.getVehicle_code())); + //TODO:是否下发 + Boolean isSend = from.getBoolean("is_send"); + if (isSend){ + //参数封装,调acs接口 + } + 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/dispatch_manage/task/service/dao/mapper/xml/SchBaseTaskMapper.xml b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/service/dao/mapper/xml/SchBaseTaskMapper.xml index 244e87e2..f2218f56 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/service/dao/mapper/xml/SchBaseTaskMapper.xml +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/service/dao/mapper/xml/SchBaseTaskMapper.xml @@ -55,7 +55,7 @@ md_pb_vehicleMater LEFT JOIN st_ivt_structattr ON md_pb_vehicleMater.vehicle_code = st_ivt_structattr.vehicle_code LEFT JOIN md_me_materialbase ON md_pb_vehicleMater.material_id = md_me_materialbase.material_id - LEFT JOIN sch_base_task ON (md_pb_vehicleMater.vehicle_code = sch_base_task.vehicle_code and md_pb_vehicleMater.task_code = sch_base_task.task_code ) + LEFT JOIN sch_base_task ON md_pb_vehicleMater.task_code = sch_base_task.task_code where md_pb_vehicleMater.vehicle_code in #{vehicle_code} diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/converter/BpmnJSONConverter.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/converter/BpmnJSONConverter.java index d2ea9f06..9f505645 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/converter/BpmnJSONConverter.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/converter/BpmnJSONConverter.java @@ -27,7 +27,7 @@ public class BpmnJSONConverter { Node_Converter.put("strucForm",new StrucFormConverter()); Node_Converter.put("startEvent",new StartEventConverter()); Node_Converter.put("endEvent",new EndEventConverter()); - Node_Converter.put("gateWay",new GatewayConverter()); + Node_Converter.put("gateWay",new GateWayConverter()); Node_Converter.put("serverTask",new ServerTaskConverter()); Node_Converter.put("sequenceFlow",new SequenceFlowConverter()); Node_Converter.put("sendMsg",new SendMsgConverter()); diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/converter/node/impl/GatewayConverter.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/converter/node/impl/GateWayConverter.java similarity index 96% rename from wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/converter/node/impl/GatewayConverter.java rename to wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/converter/node/impl/GateWayConverter.java index 6c86eb60..ed82f344 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/converter/node/impl/GatewayConverter.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/converter/node/impl/GateWayConverter.java @@ -12,7 +12,7 @@ import java.util.Iterator; * @author ZZQ * @Date 2024/4/26 11:08 */ -public class GatewayConverter extends BaseNodeConverter { +public class GateWayConverter extends BaseNodeConverter { @Override public FlowNode convertToBpmnModel(Iterator iterator, JSONObject node, BpmnModel model) { JSONObject properties = node.getJSONObject("properties"); diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/engine/behavior/impl/GateWayActivityBehavior.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/engine/behavior/impl/GateWayActivityBehavior.java index 045c022d..f6e3133b 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/engine/behavior/impl/GateWayActivityBehavior.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/engine/behavior/impl/GateWayActivityBehavior.java @@ -1,19 +1,61 @@ package org.nl.wms.flow_manage.flow.framework.engine.behavior.impl; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import org.nl.common.domain.exception.BadRequestException; +import org.nl.common.utils.ListOf; +import org.nl.common.utils.MapOf; +import org.nl.common.utils.SpelUtil; import org.nl.wms.flow_manage.flow.framework.engine.behavior.FlowNodeActivityBehavior; import org.nl.wms.flow_manage.flow.framework.entity.ExecutionEntity; +import org.nl.wms.flow_manage.flow.framework.entity.node.base.impl.FlowElement; +import org.nl.wms.flow_manage.flow.framework.entity.node.impl.Sequence.SequenceFlow; +import org.nl.wms.flow_manage.flow.framework.entity.node.impl.gateway.GateWay; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; /* * @author ZZQ * @Date 2024/3/18 13:17 + * 互斥网关:循环target:只有一个满足 + * 逻辑判断表达式如下:"#M['plan_qty']>#M['qty']" */ @Service("gateWay") -public class GateWayActivityBehavior extends FlowNodeActivityBehavior { +public class GateWayActivityBehavior extends FlowNodeActivityBehavior { @Override - public void execute(ExecutionEntity execution) { - System.out.println(execution.getCurrentFlowElement().getType()); - super.execute(execution); + public void execute(ExecutionEntity entity) { + System.out.println("流经网关参数:"+entity.getT().toString()); + + FlowElement element = entity.getCurrentFlowElement(); + GateWay gateWay = (GateWay) element; + List targetSequence = new ArrayList<>(); + for (SequenceFlow sequenceFlow : gateWay.getOutgoingFlows()) { + String skipExpression = sequenceFlow.getSkipExpression(); + Boolean parse = SpelUtil.parse(entity.getT().getJSONObject("t"),skipExpression, Boolean.class); + if (parse){ + targetSequence.add(sequenceFlow); + break; + } + } + if (CollectionUtils.isEmpty(targetSequence)){ + throw new BadRequestException("当前网关没有满足的流程线"); + } + gateWay.setOutgoingFlows(targetSequence); + //处理流程线:将结果值封装 + super.execute(entity); + } + + public static void main(String[] args) { + String data = "{\"stor_code\":\"FStockId\",\"vehicleMaterMap\":{\"D00001\":{\"stor_code\":\"FStockId\",\"create_time\":\"2024-06-11 15:39:47\",\"task_code\":\"28457\",\"form_data\":{\"FMoBillNo\":\"\",\"single_weight\":\"\"},\"group_id\":\"1800432729389666304\",\"qty\":333,\"proc_inst_id\":\"1800433990847565824\",\"is_lock\":true,\"pcsn\":\"11\",\"material_id\":\"FMaterialId\",\"id\":\"1800432729389666305\",\"has_child\":false,\"frozen_qty\":333,\"vehicle_code\":\"D00001\",\"source_form_id\":\"1798554623695523840\",\"source_form_type\":\"PRD_FeedMtrl\",\"create_name\":\"管理员\"},\"D00002\":{\"stor_code\":\"FStockId\",\"create_time\":\"2024-06-11 15:41:39\",\"task_code\":\"28458\",\"form_data\":{\"FMoBillNo\":\"\",\"single_weight\":\"\"},\"group_id\":\"1800433197683707904\",\"qty\":222,\"proc_inst_id\":\"1800435270215143424\",\"is_lock\":true,\"pcsn\":\"11\",\"material_id\":\"FMaterialId\",\"id\":\"1800433197683707905\",\"has_child\":false,\"frozen_qty\":67,\"vehicle_code\":\"D00002\",\"source_form_id\":\"1798554665118470144\",\"source_form_type\":\"PRD_FeedMtrl\",\"create_name\":\"管理员\"}},\"form_data\":{\"order\":\"\"},\"qty\":400,\"pcsn\":\"11\",\"material_id\":\"FMaterialId\",\"id\":\"1800435564550426624\",\"inv_id\":\"1800435564521066496\",\"vehicle_code\":\"D00002\",\"source_form_id\":\"1798554623695523840\",\"unit_id\":\"16\",\"source_form_type\":\"PRD_FeedMtrl\",\"status\":\"10\"}"; + JSONObject jsonObject = JSONObject.parseObject(data); + System.out.println(jsonObject.toJSONString()); + // "#M['vehicleMaterMap'][M['vehicle_code']]['qty']" + Boolean parse = SpelUtil.parse(jsonObject, "#M['vehicleMaterMap'][#M['vehicle_code']]['frozen_qty'] < #M['vehicleMaterMap'][#M['vehicle_code']]['qty']", Boolean.class); + System.out.println(parse); } } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/engine/behavior/impl/StrucFormActivityBehavior.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/engine/behavior/impl/StrucFormActivityBehavior.java index b470babe..63646325 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/engine/behavior/impl/StrucFormActivityBehavior.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/engine/behavior/impl/StrucFormActivityBehavior.java @@ -86,6 +86,7 @@ public class StrucFormActivityBehavior extends FlowNodeActivityBehavior dtls = iStIvtIostorinvDtlService.list(new QueryWrapper().eq("inv_id", iostorinv.getId())); - + //查询明细/api/bmFormStruc/getTypes + List dtlVo = iStIvtIostorinvDtlService.getDtlVo(iostorinv.getId()); + //扔一个物料信息进去 BussEventMulticaster.Publish(new FlowStartEvent("st_ivt_iostorinv_"+(iostorinv.getIn_storage()?"in":"out"), null,null) .build("st_ivt_iostorinv",iostorinv.getId(),iostorinv.getSource_form_type(),iostorinv.getSource_form_id(),form) - .build("st_ivt_iostorinvdtl",dtls) + .build("st_ivt_iostorinvdtl",dtlVo) ); this.update(new UpdateWrapper() diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/service/iostor_dtl/IStIvtIostorinvdtlService.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/service/iostor_dtl/IStIvtIostorinvdtlService.java index dc3e06c5..58f32cf2 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/service/iostor_dtl/IStIvtIostorinvdtlService.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/service/iostor_dtl/IStIvtIostorinvdtlService.java @@ -2,6 +2,7 @@ package org.nl.wms.stor_manage.io.service.iostor_dtl; import com.baomidou.mybatisplus.extension.service.IService; import org.nl.wms.stor_manage.io.service.iostor_dtl.dao.StIvtIostorinvdtl; +import org.nl.wms.stor_manage.io.service.iostor_dtl.dto.StIvtIostorinvdtlVo; import java.util.List; import java.util.Map; @@ -18,7 +19,8 @@ public interface IStIvtIostorinvdtlService extends IService { void batchInsert(List dtls); - List getByInv(String inv_id); + List getDtlVo(String inv_id); + } 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 new file mode 100644 index 00000000..8bcc1a9b --- /dev/null +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/service/iostor_dtl/dto/StIvtIostorinvdtlVo.java @@ -0,0 +1,102 @@ +package org.nl.wms.stor_manage.io.service.iostor_dtl.dto; + +import cn.hutool.json.JSONObject; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.nl.wms.md_manage.vehicleMater.service.dao.MdPbVehicleMater; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Map; + +/** + *

+ * 出入库单明拆分 + *

+ * + * @author generator + * @since 2024-03-29 + */ +@Data +public class StIvtIostorinvdtlVo { + + /** + * 出入单明细标识 + */ + private String id; + + /** + * 出入单标识 + */ + private String inv_id; + + /** + * 源单号 + */ + private String source_form_id; + + /** + * 源单单据类型 + */ + private String source_form_type; + /** + * 单据明细状态 + */ + private String status; + + /** + * 物料标识 + */ + private String material_id; + + /** + * 批次 + */ + private String pcsn; + + + /** + * 数量计量单位标识 + */ + private String unit_id; + + /** + * 计划数量 + */ + private BigDecimal qty; + + /** + * 分配的载具 + */ + private String vehicle_code; + + + /** + * 仓库 + */ + private String stor_code; + + /** + * 备注 + */ + private String remark; + /** + * 操作时间 + */ + private String update_time; + + /** + * 表单数据 + */ + private JSONObject form_data = new JSONObject(); + + /** + * 载具物料信息 + */ + private MdPbVehicleMater vehicleMater; + + +} 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 519e9d43..b53e46d4 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 @@ -1,20 +1,23 @@ package org.nl.wms.stor_manage.io.service.iostor_dtl.impl; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.apache.commons.lang3.StringUtils; import org.nl.common.utils.MapOf; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +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.io.service.iostor_dtl.IStIvtIostorinvdtlService; import org.nl.wms.stor_manage.io.service.iostor_dtl.dao.StIvtIostorinvdtl; import org.nl.wms.stor_manage.io.service.iostor_dtl.dao.mapper.StIvtIostorinvdtlMapper; +import org.nl.wms.stor_manage.io.service.iostor_dtl.dto.StIvtIostorinvdtlVo; import org.nl.wms.stor_manage.struct.service.IStIvtStructattrService; import org.nl.wms.stor_manage.struct.service.dto.StructattrVechielDto; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -31,6 +34,10 @@ public class StIvtIostorinvdtlServiceImpl extends ServiceImpl dtls) { this.baseMapper.batchInsert(dtls); @@ -58,4 +65,25 @@ public class StIvtIostorinvdtlServiceImpl extends ServiceImpl getDtlVo(String inv_id) { + List list = new ArrayList<>(); + if (StringUtils.isEmpty(inv_id)){ + return list; + } + List dtl = this.list(new QueryWrapper().eq("inv_id", inv_id)); + for (StIvtIostorinvdtl iostorinvdtl : dtl) { + for (String vehicle_code : iostorinvdtl.getVehicle_code().split(",")) { + StIvtIostorinvdtlVo vo = new StIvtIostorinvdtlVo(); + BeanUtils.copyProperties(iostorinvdtl,vo); + MdPbVehicleMater one = iMdPbVehicleMaterService.getOne(new QueryWrapper() + .eq("vehicle_code", vehicle_code) + .eq("material_id", iostorinvdtl.getMaterial_id())); + vo.setVehicleMater(one); + vo.setVehicle_code(vehicle_code); + list.add(vo); + } + } + return list; + } } 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 ec298a5f..dbb80f34 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 @@ -130,8 +130,8 @@ public class SysDictController { for (StatusEnum value : StatusEnum.values()) { if (value.name().equals(type)){ ForkMap forkMap = value.getCode(); - for (String label : forkMap.getKeySet()) { - items.add(MapOf.of("label",label,"value",forkMap.getM(label))); + for (String code : forkMap.getKeySet()) { + items.add(MapOf.of("label",forkMap.getM(code),"value",code)); } break; } diff --git a/wms_pro/qd/src/views/wms/stor_manage/in/ViewDialog.vue b/wms_pro/qd/src/views/wms/stor_manage/in/ViewDialog.vue index cdea0f7d..a32b02ab 100644 --- a/wms_pro/qd/src/views/wms/stor_manage/in/ViewDialog.vue +++ b/wms_pro/qd/src/views/wms/stor_manage/in/ViewDialog.vue @@ -146,6 +146,7 @@ + diff --git a/wms_pro/qd/src/views/wms/stor_manage/out/ViewDialog.vue b/wms_pro/qd/src/views/wms/stor_manage/out/ViewDialog.vue index 0e955a55..1bfd1a33 100644 --- a/wms_pro/qd/src/views/wms/stor_manage/out/ViewDialog.vue +++ b/wms_pro/qd/src/views/wms/stor_manage/out/ViewDialog.vue @@ -92,7 +92,6 @@ - @@ -125,7 +124,8 @@ - + +