From ace8399af06157dd40c9fa2ae6bd92827ae5fb04 Mon Sep 17 00:00:00 2001 From: liuxy Date: Mon, 15 Aug 2022 15:21:18 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/nl/wms/basedata/st/wql/stivt.xls | Bin 236544 -> 237568 bytes .../org/nl/wms/sch/service/dto/PointDto.java | 5 + .../java/org/nl/wms/sch/service/wql/sch.xls | Bin 168448 -> 168448 bytes .../nl/wms/sch/tasks/CallEmpVehicleTask.java | 224 +++++++++++++++++ .../org/nl/wms/sch/tasks/RegionTypeEnum.java | 35 +++ .../nl/wms/sch/tasks/SendEmpVehicleTask.java | 225 ++++++++++++++++++ .../rest/InEmptyvehiclerecordController.java | 77 ++++++ .../rest/OutEmptyvehiclerecordController.java | 77 ++++++ .../service/InEmptyvehiclerecordService.java | 79 ++++++ .../service/OutEmptyvehiclerecordService.java | 79 ++++++ .../service/dto/EmptyvehiclerecordDto.java | 110 +++++++++ .../impl/InEmptyvehiclerecordServiceImpl.java | 205 ++++++++++++++++ .../OutEmptyvehiclerecordServiceImpl.java | 204 ++++++++++++++++ .../st/vehiclebill/wql/ST_VEHICLE_IN_01.wql | 61 +++++ .../st/vehiclebill/wql/ST_VEHICLE_IN_02.wql | 82 +++++++ .../st/vehiclebill/wql/ST_VEHICLE_OUT_01.wql | 61 +++++ .../st/vehiclebill/wql/ST_VEHICLE_OUT_02.wql | 83 +++++++ .../api/wms/st/vehiclebill/inemptyvehicl.js | 35 +++ .../api/wms/st/vehiclebill/outemptyvehicl.js | 35 +++ mes/qd/src/views/wms/sch/point/index.vue | 2 +- .../views/wms/st/vehiclebill/PointDialog.vue | 202 ++++++++++++++++ .../src/views/wms/st/vehiclebill/in/index.vue | 217 +++++++++++++++++ .../views/wms/st/vehiclebill/out/index.vue | 217 +++++++++++++++++ 23 files changed, 2314 insertions(+), 1 deletion(-) create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CallEmpVehicleTask.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/RegionTypeEnum.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SendEmpVehicleTask.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/st/vehiclebill/rest/InEmptyvehiclerecordController.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/st/vehiclebill/rest/OutEmptyvehiclerecordController.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/st/vehiclebill/service/InEmptyvehiclerecordService.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/st/vehiclebill/service/OutEmptyvehiclerecordService.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/st/vehiclebill/service/dto/EmptyvehiclerecordDto.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/st/vehiclebill/service/impl/InEmptyvehiclerecordServiceImpl.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/st/vehiclebill/service/impl/OutEmptyvehiclerecordServiceImpl.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/st/vehiclebill/wql/ST_VEHICLE_IN_01.wql create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/st/vehiclebill/wql/ST_VEHICLE_IN_02.wql create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/st/vehiclebill/wql/ST_VEHICLE_OUT_01.wql create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/st/vehiclebill/wql/ST_VEHICLE_OUT_02.wql create mode 100644 mes/qd/src/api/wms/st/vehiclebill/inemptyvehicl.js create mode 100644 mes/qd/src/api/wms/st/vehiclebill/outemptyvehicl.js create mode 100644 mes/qd/src/views/wms/st/vehiclebill/PointDialog.vue create mode 100644 mes/qd/src/views/wms/st/vehiclebill/in/index.vue create mode 100644 mes/qd/src/views/wms/st/vehiclebill/out/index.vue diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/st/wql/stivt.xls b/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/st/wql/stivt.xls index 2d9049c2acb5bfa6a71643e95137aa66f8d5f1fb..a35d13ee98e60e597bebae55dc03317b7a30a27b 100644 GIT binary patch delta 12006 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 Z;*7l)3KLb4&3^?#C2=g|NF delta 11593 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 diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/dto/PointDto.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/dto/PointDto.java index 6bb4192..5fdaa00 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/dto/PointDto.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/dto/PointDto.java @@ -56,6 +56,11 @@ public class PointDto implements Serializable { */ private String vehicle_code; + /** + * 载具数量 + */ + private Integer vehicle_qty; + /** * 来源标识 */ diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/wql/sch.xls b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/wql/sch.xls index 4659a85a4ffb85234f7fa0f35be1498fa465bc7b..47ecd12e57a3ec20d15e8af440a7066a94a696b4 100644 GIT binary patch delta 9185 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 diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CallEmpVehicleTask.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CallEmpVehicleTask.java new file mode 100644 index 0000000..3fe9fc7 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CallEmpVehicleTask.java @@ -0,0 +1,224 @@ +package org.nl.wms.sch.tasks; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.NumberUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.exception.BadRequestException; +import org.nl.modules.system.util.CodeUtil; +import org.nl.utils.SecurityUtils; +import org.nl.utils.SpringContextHolder; +import org.nl.wms.sch.manage.AbstractAcsTask; +import org.nl.wms.sch.manage.TaskStatusEnum; +import org.nl.wms.sch.service.PointService; +import org.nl.wms.sch.service.dto.PointDto; +import org.nl.wql.WQL; +import org.nl.wql.core.bean.WQLObject; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.util.HashMap; + +@Service +@RequiredArgsConstructor +@Slf4j +public class CallEmpVehicleTask extends AbstractAcsTask { + private final String THIS_CLASS = CallEmpVehicleTask.class.getName(); + + @Override + public void updateTaskStatus(JSONObject taskObj, String status) { + WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); + WQLObject empTab = WQLObject.getWQLObject("st_ivt_EmptyVehicleRecord"); + WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); + + // 完成任务 + if(StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) { + // 更改任务状态为完成 + JSONObject jsonTask = taskTab.query("task_id = '" + taskObj.getString("task_id") + "'").uniqueResult(0); + jsonTask.put("task_status",TaskStatusEnum.FINISHED.getCode()); + jsonTask.put("update_optid", SecurityUtils.getCurrentUserId()); + jsonTask.put("update_optname", SecurityUtils.getCurrentUsername()); + jsonTask.put("update_time", DateUtil.now()); + taskTab.update(jsonTask); + + PointService point = SpringContextHolder.getBean(PointService.class); + // 校验起点是否存在 + PointDto start_point_code = point.findByCode(jsonTask.getString("start_point_code")); + if (ObjectUtil.isEmpty(start_point_code)) throw new BadRequestException("未找到可用点位:" + start_point_code); + // 校验终点是否存在 + PointDto next_point_code = point.findByCode(jsonTask.getString("next_point_code")); + if (ObjectUtil.isEmpty(start_point_code)) throw new BadRequestException("未找到可用点位:" + next_point_code); + + // 1.更新点位数量 2.解锁点位 + JSONObject jsonEmp = empTab.query("task_uuid = '" + taskObj.getString("task_id") + "'").uniqueResult(0); + int vehicle_qty = JSONObject.parseObject(JSON.toJSONString(start_point_code)).getIntValue("vehicle_qty"); + BigDecimal vehicle_qty_point = NumberUtil.sub(String.valueOf(vehicle_qty), String.valueOf(jsonEmp.getIntValue("vehicle_qty"))); + + start_point_code.setVehicle_qty(Integer.valueOf(vehicle_qty_point.toString())); + if (StrUtil.equals(vehicle_qty_point.toString(), "0")) start_point_code.setPoint_status("00"); + start_point_code.setLock_type("00"); + pointTab.update(JSONObject.parseObject(JSON.toJSONString(start_point_code))); + + // 完成单据状态 + jsonEmp.put("bill_status", "50"); + jsonEmp.put("update_optid", SecurityUtils.getCurrentUserId()); + jsonEmp.put("update_optname", SecurityUtils.getCurrentUsername()); + jsonEmp.put("update_time", DateUtil.now()); + empTab.update(jsonEmp); + } + } + + @Override + public void findStartPoint() { + + } + + @Override + public void findNextPoint() { + + } + + @Override + public String createTask(JSONObject form) { + WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); + WQLObject empTab = WQLObject.getWQLObject("st_ivt_EmptyVehicleRecord"); + WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); + + String start_point_code = form.getString("start_point_code"); + String next_point_code = form.getString("next_point_code"); + String qty = form.getString("qty"); + String record_uuid = form.getString("record_uuid"); + + // 出库终点不能为空 + if (ObjectUtil.isEmpty(next_point_code)) { + throw new BadRequestException("终点不能为空"); + } else { + // 判断终点是否有正在执行的任务 + JSONObject beforTaskObj = taskTab.query("is_delete='0' and next_point_code='" + next_point_code + "' and task_status <>'" + TaskStatusEnum.FINISHED.getCode() + "'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(beforTaskObj)) throw new BadRequestException("存在指令号为'" + beforTaskObj.getString("task_code") + "' 未完成!"); + } + // 载具数量不能为空 + if (ObjectUtil.isEmpty(qty)) throw new BadRequestException("载具数量不能为空"); + + /* + * 1. 点对点: 起点和终点都确定,直接创建任务 + * 2. 终点确定: 需要找到对应起点,在创建任务 具体找起点货位的规则在findBeginPoint()中 + */ + // 终点确定:找起点 + if (ObjectUtil.isEmpty(start_point_code)) { + JSONObject param = new JSONObject(); + param.put("next_point_code",next_point_code); + param.put("vehicle_qty",qty); + start_point_code = this.findBeginPoint(param); + } else { + // 判断终点是否是空位 + JSONObject jsonPoint = pointTab.query("point_code = '" + start_point_code + "' and lock_type = '00' and point_status <> '02' and is_delete = '0' and is_used = '1'").uniqueResult(0); + if (ObjectUtil.isEmpty(jsonPoint)) throw new BadRequestException("起点点位不可用或不存在"); + } + // 创建任务 + JSONObject jsonTask = new JSONObject(); + String task_id = IdUtil.getSnowflake(1, 1).nextId() + ""; + + jsonTask.put("task_id", task_id); + jsonTask.put("taskdtl_id", task_id); + jsonTask.put("task_code", CodeUtil.getNewCode("TASK_CODE")); + jsonTask.put("task_type", "04"); + jsonTask.put("taskdtl_type", "04"); + jsonTask.put("task_status", "01"); + jsonTask.put("start_point_code", start_point_code); + jsonTask.put("next_point_code", next_point_code); + jsonTask.put("handle_class", THIS_CLASS); + jsonTask.put("create_name", SecurityUtils.getCurrentUsername()); + jsonTask.put("create_id", SecurityUtils.getCurrentUserId()); + jsonTask.put("create_time", DateUtil.now()); + jsonTask.put("acs_task_type", "1"); + taskTab.insert(jsonTask); + + // 锁定起点点位 + JSONObject jsonPoint = pointTab.query("point_code = '" + start_point_code + "'").uniqueResult(0); + jsonPoint.put("lock_type", "02"); + pointTab.update(jsonPoint); + + // 更新空载具单据状态 + if (ObjectUtil.isNotEmpty(record_uuid)) { + JSONObject jsonEmp = empTab.query("record_uuid ='" + record_uuid + "'").uniqueResult(0); + jsonEmp.put("bill_status","20"); + empTab.update(jsonEmp); + } + return task_id; + } + + @Override + public void forceFinish(String task_id) { + JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0); + this.updateTaskStatus(taskObj, TaskStatusEnum.FINISHED.getCode()); + } + + @Override + public void pullBack(String task_id) { + + } + + @Override + public void cancel(String task_id) { + + } + + public String findBeginPoint(JSONObject json) { + String next_point_code = json.getString("next_point_code"); + String vehicle_qty = json.getString("vehicle_qty"); + if (ObjectUtil.isEmpty(next_point_code)) throw new BadRequestException("终点不能为空"); + if (ObjectUtil.isEmpty(vehicle_qty)) throw new BadRequestException("载具数量不能为空"); + + WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); + WQLObject regionTab = WQLObject.getWQLObject("SCH_BASE_Region"); + // 根据终点区域判断优先的起点区域 + JSONObject jsonPointEnd = pointTab.query("point_code = '" + next_point_code + "'").uniqueResult(0); + JSONObject jsonRegionEnd = regionTab.query("region_id ='" + jsonPointEnd.getString("region_id") + "'").uniqueResult(0); + + /* + * 空托盘出库任务: + * 1.叠盘架B区、养生A区 --> 共挤线 (优先级:1叠盘架B区 2养生A区) + * 2.叠盘架A区、养生A区 --> 油漆线 (优先级:1叠盘架A区 2养生A区) + */ + String start_point_code = ""; + HashMap map = new HashMap<>(); + if (StrUtil.equals(jsonRegionEnd.getString("region_code"),RegionTypeEnum.GJQY.getCode())) { + // 共挤线呼叫空托盘业务:查找叠盘架B区是否有满足条件的点位 + map.put("flag", "1"); + map.put("vehicle_qty", vehicle_qty); + map.put("region_code", RegionTypeEnum.DPJQB.getCode()); + JSONObject jsonStartPointDPB = WQL.getWO("ST_VEHICLE_OUT_02").addParamMap(map).process().uniqueResult(0); + if (ObjectUtil.isNotEmpty(jsonStartPointDPB)) { + start_point_code = jsonStartPointDPB.getString("point_code"); + } else { + // 为空说明叠盘架B区没有,则去养生A区找 + map.put("region_code", RegionTypeEnum.YSQA.getCode()); + JSONObject jsonStartPointYSA = WQL.getWO("ST_VEHICLE_OUT_02").addParamMap(map).process().uniqueResult(0); + if (ObjectUtil.isEmpty(jsonStartPointYSA)) throw new BadRequestException("没有满足需求数量的点位"); + start_point_code = jsonStartPointYSA.getString("point_code"); + } + } else if (StrUtil.equals(jsonRegionEnd.getString("region_code"),RegionTypeEnum.YQQY.getCode())) { + // 油漆线呼叫空托盘业务:查找叠盘架A区是否有满足条件的点位 + map.put("flag", "1"); + map.put("vehicle_qty", vehicle_qty); + map.put("region_code", RegionTypeEnum.DPJQA.getCode()); + JSONObject jsonStartPointDPA = WQL.getWO("ST_VEHICLE_OUT_02").addParamMap(map).process().uniqueResult(0); + if (ObjectUtil.isNotEmpty(jsonStartPointDPA)) { + start_point_code = jsonStartPointDPA.getString("point_code"); + } else { + // 为空说明叠盘架A区没有,则去养生A区找 + map.put("region_code", RegionTypeEnum.YSQA.getCode()); + JSONObject jsonStartPointYSA = WQL.getWO("ST_VEHICLE_OUT_02").addParamMap(map).process().uniqueResult(0); + if (ObjectUtil.isEmpty(jsonStartPointYSA)) throw new BadRequestException("没有满足需求数量的点位"); + start_point_code = jsonStartPointYSA.getString("point_code"); + } + } + return start_point_code; + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/RegionTypeEnum.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/RegionTypeEnum.java new file mode 100644 index 0000000..d5849d1 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/RegionTypeEnum.java @@ -0,0 +1,35 @@ +package org.nl.wms.sch.tasks; + +/** + * 任务状态枚举 + */ +public enum RegionTypeEnum { + CPQY(1, "CPQY01", "成品区域"), + YSQA(2, "YSQA01", "养生A区"), + YSQB(3, "YSQB01", "养生B区"), + GJQY(4, "GJQY01", "共挤区"), + YQQY(5, "YQQY01", "油漆区"), + DPJQA(6, "DPJQA01", "叠盘架A区"), + DPJQB(7, "DPJQB01", "叠盘架B区"), + KTPHCQA(8, "KTPHCQA01", "空托盘缓存A区"), + KTPHCQB(8, "KTPHCQB01", "空托盘缓存B区"); + + private int index; + private String code; + private String name; + + public String getCode() { + return code; + } + + public String getName() { + return name; + } + + RegionTypeEnum(int index, String code, String name) { + this.index = index; + this.code = code; + this.name = name; + } + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SendEmpVehicleTask.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SendEmpVehicleTask.java new file mode 100644 index 0000000..acb6f62 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SendEmpVehicleTask.java @@ -0,0 +1,225 @@ +package org.nl.wms.sch.tasks; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.NumberUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.exception.BadRequestException; +import org.nl.modules.system.util.CodeUtil; +import org.nl.utils.SecurityUtils; +import org.nl.utils.SpringContextHolder; +import org.nl.wms.sch.manage.AbstractAcsTask; +import org.nl.wms.sch.manage.TaskStatusEnum; +import org.nl.wms.sch.service.PointService; +import org.nl.wms.sch.service.dto.PointDto; +import org.nl.wql.WQL; +import org.nl.wql.core.bean.WQLObject; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.util.HashMap; + +@Service +@RequiredArgsConstructor +@Slf4j +public class SendEmpVehicleTask extends AbstractAcsTask { + private final String THIS_CLASS = SendEmpVehicleTask.class.getName(); + + @Override + public void updateTaskStatus(JSONObject taskObj, String status) { + WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); + WQLObject empTab = WQLObject.getWQLObject("st_ivt_EmptyVehicleRecord"); + WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); + + // 完成任务 + if(StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) { + // 更改任务状态为完成 + JSONObject jsonTask = taskTab.query("task_id = '" + taskObj.getString("task_id") + "'").uniqueResult(0); + jsonTask.put("task_status",TaskStatusEnum.FINISHED.getCode()); + jsonTask.put("update_optid", SecurityUtils.getCurrentUserId()); + jsonTask.put("update_optname", SecurityUtils.getCurrentUsername()); + jsonTask.put("update_time", DateUtil.now()); + taskTab.update(jsonTask); + + PointService point = SpringContextHolder.getBean(PointService.class); + // 校验起点是否存在 + PointDto start_point_code = point.findByCode(jsonTask.getString("start_point_code")); + if (ObjectUtil.isEmpty(start_point_code)) throw new BadRequestException("未找到可用点位:" + start_point_code); + // 校验终点是否存在 + PointDto next_point_code = point.findByCode(jsonTask.getString("next_point_code")); + if (ObjectUtil.isEmpty(start_point_code)) throw new BadRequestException("未找到可用点位:" + next_point_code); + + // 1.更新点位数量 2.解锁点位 + JSONObject jsonEmp = empTab.query("task_uuid = '" + taskObj.getString("task_id") + "'").uniqueResult(0); + int vehicle_qty = JSONObject.parseObject(JSON.toJSONString(next_point_code)).getIntValue("vehicle_qty"); + BigDecimal vehicle_qty_point = NumberUtil.add(String.valueOf(vehicle_qty), String.valueOf(jsonEmp.getIntValue("vehicle_qty"))); + + next_point_code.setVehicle_qty(Integer.valueOf(vehicle_qty_point.toString())); + next_point_code.setPoint_status("01"); + next_point_code.setLock_type("00"); + pointTab.update(JSONObject.parseObject(JSON.toJSONString(next_point_code))); + + // 完成单据状态 + jsonEmp.put("bill_status", "50"); + jsonEmp.put("update_optid", SecurityUtils.getCurrentUserId()); + jsonEmp.put("update_optname", SecurityUtils.getCurrentUsername()); + jsonEmp.put("update_time", DateUtil.now()); + empTab.update(jsonEmp); + } + } + + @Override + public void findStartPoint() { + + } + + @Override + public void findNextPoint() { + + } + + @Override + public String createTask(JSONObject form) { + WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); + WQLObject empTab = WQLObject.getWQLObject("st_ivt_EmptyVehicleRecord"); + WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); + + String start_point_code = form.getString("start_point_code"); + String next_point_code = form.getString("next_point_code"); + String qty = form.getString("qty"); + String record_uuid = form.getString("record_uuid"); + + // 入库起点不能为空 + if (ObjectUtil.isEmpty(start_point_code)) { + throw new BadRequestException("起点不能为空"); + } else { + // 判断起点是否有正在执行的任务 + JSONObject beforTaskObj = taskTab.query("is_delete='0' and start_point_code='" + start_point_code + "' and task_status <>'" + TaskStatusEnum.FINISHED.getCode() + "'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(beforTaskObj)) throw new BadRequestException("存在指令号为'" + beforTaskObj.getString("task_code") + "' 未完成!"); + } + // 载具数量不能为空 + if (ObjectUtil.isEmpty(qty)) throw new BadRequestException("载具数量不能为空"); + + /* + * 1. 点对点: 起点和终点都确定,直接创建任务 + * 2. 起点确定: 需要找到对应终点,在创建任务 具体找终点货位的规则在findEndPoint()中 + */ + // 起点确定:找终点 + if (ObjectUtil.isEmpty(next_point_code)) { + JSONObject param = new JSONObject(); + param.put("start_point_code",start_point_code); + param.put("vehicle_qty",qty); + next_point_code = this.findEndPoint(param); + } else { + // 判断终点是否是空位 + JSONObject jsonPoint = pointTab.query("point_code = '" + next_point_code + "' and lock_type = '00' and point_status <> '02' and is_delete = '0' and is_used = '1'").uniqueResult(0); + if (ObjectUtil.isEmpty(jsonPoint)) throw new BadRequestException("终点点位不不可用或不存在"); + } + // 创建任务 + JSONObject jsonTask = new JSONObject(); + String task_id = IdUtil.getSnowflake(1, 1).nextId() + ""; + + jsonTask.put("task_id", task_id); + jsonTask.put("taskdtl_id", task_id); + jsonTask.put("task_code", CodeUtil.getNewCode("TASK_CODE")); + jsonTask.put("task_type", "03"); + jsonTask.put("taskdtl_type", "03"); + jsonTask.put("task_status", "01"); + jsonTask.put("start_point_code", start_point_code); + jsonTask.put("next_point_code", next_point_code); + jsonTask.put("handle_class", THIS_CLASS); + jsonTask.put("create_name", SecurityUtils.getCurrentUsername()); + jsonTask.put("create_id", SecurityUtils.getCurrentUserId()); + jsonTask.put("create_time", DateUtil.now()); + jsonTask.put("acs_task_type", "1"); + taskTab.insert(jsonTask); + + // 锁定终点点位 + JSONObject jsonPoint = pointTab.query("point_code = '" + next_point_code + "'").uniqueResult(0); + jsonPoint.put("lock_type", "02"); + pointTab.update(jsonPoint); + + // 更新空载具单据状态 + if (ObjectUtil.isNotEmpty(record_uuid)) { + JSONObject jsonEmp = empTab.query("record_uuid ='" + record_uuid + "'").uniqueResult(0); + jsonEmp.put("bill_status","20"); + empTab.update(jsonEmp); + } + return task_id; + } + + @Override + public void forceFinish(String task_id) { + JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0); + this.updateTaskStatus(taskObj, TaskStatusEnum.FINISHED.getCode()); + } + + @Override + public void pullBack(String task_id) { + + } + + @Override + public void cancel(String task_id) { + + } + + public String findEndPoint(JSONObject json) { + String start_point_code = json.getString("start_point_code"); + String vehicle_qty = json.getString("vehicle_qty"); + if (ObjectUtil.isEmpty(start_point_code)) throw new BadRequestException("起点不能为空"); + if (ObjectUtil.isEmpty(vehicle_qty)) throw new BadRequestException("载具数量不能为空"); + + WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); + WQLObject regionTab = WQLObject.getWQLObject("SCH_BASE_Region"); + // 根据起点区域判断优先的终点区域 + JSONObject jsonPointStart = pointTab.query("point_code = '" + start_point_code + "'").uniqueResult(0); + JSONObject jsonRegionStart = regionTab.query("region_id ='" + jsonPointStart.getString("region_id") + "'").uniqueResult(0); + /* + * 空托盘入库业务: + * 1.油漆线 --> 叠盘架A区、养生区A区 (优先级:1叠盘架A区 2.养生A区) + * 2.货梯 --> 叠盘架B区、养生区A区 (优先级:1叠盘架B区 2.养生A区) + */ + String EndPoint_code = ""; + HashMap map = new HashMap<>(); + if (StrUtil.equals(jsonRegionStart.getString("region_code"), RegionTypeEnum.YQQY.getCode())) { + // 油漆线入库:查找叠盘架A区是否有满足的空位 + map.put("flag", "1"); + map.put("vehicle_qty",vehicle_qty); + map.put("region_code",RegionTypeEnum.DPJQA.getCode()); + JSONObject jsonEndPointDPA = WQL.getWO("ST_VEHICLE_IN_02").addParamMap(map).process().uniqueResult(0); + if (ObjectUtil.isNotEmpty(jsonEndPointDPA)) { + EndPoint_code = jsonEndPointDPA.getString("point_code"); + } else { + // 为空说明叠盘架A区上货位不足,则需要入库到养生A区 + map.put("flag", "2"); + map.put("region_code",RegionTypeEnum.YSQA.getCode() ); + JSONObject jsonEndPointYSA = WQL.getWO("ST_VEHICLE_IN_02").addParamMap(map).process().uniqueResult(0); + if (ObjectUtil.isEmpty(jsonEndPointYSA)) throw new BadRequestException("没有满足需求的空位"); + EndPoint_code = jsonEndPointYSA.getString("point_code"); + } + } else { + // 货梯入库:查找叠盘架B区是否有满足的空位 + map.put("flag", "1"); + map.put("vehicle_qty",vehicle_qty); + map.put("region_code",RegionTypeEnum.DPJQB.getCode()); + JSONObject jsonEndPointDPB = WQL.getWO("ST_VEHICLE_IN_02").addParamMap(map).process().uniqueResult(0); + if (ObjectUtil.isNotEmpty(jsonEndPointDPB)) { + EndPoint_code = jsonEndPointDPB.getString("point_code"); + } else { + // 为空说明叠盘架B区上货位不足,则需要入库到养生A区 + map.put("flag", "2"); + map.put("region_code", RegionTypeEnum.YSQA.getCode()); + JSONObject jsonEndPointYSA = WQL.getWO("ST_VEHICLE_IN_02").addParamMap(map).process().uniqueResult(0); + if (ObjectUtil.isEmpty(jsonEndPointYSA)) throw new BadRequestException("没有满足需求的空位"); + EndPoint_code = jsonEndPointYSA.getString("point_code"); + } + } + return EndPoint_code; + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/vehiclebill/rest/InEmptyvehiclerecordController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/vehiclebill/rest/InEmptyvehiclerecordController.java new file mode 100644 index 0000000..c9bdf20 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/vehiclebill/rest/InEmptyvehiclerecordController.java @@ -0,0 +1,77 @@ + +package org.nl.wms.st.vehiclebill.rest; + + +import com.alibaba.fastjson.JSONObject; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.annotation.Log; +import org.nl.wms.st.vehiclebill.service.InEmptyvehiclerecordService; +import org.nl.wms.st.vehiclebill.service.dto.EmptyvehiclerecordDto; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; + +/** + * @author Liuxy + * @date 2022-08-12 + **/ +@RestController +@RequiredArgsConstructor +@Api(tags = "空载具入库管理") +@RequestMapping("/api/inemptyvehicle") +@Slf4j +public class InEmptyvehiclerecordController { + + private final InEmptyvehiclerecordService inEmptyvehiclerecordService; + + @GetMapping + @Log("查询空载具入库") + @ApiOperation("查询空载具入库") + //@PreAuthorize("@el.check('emptyvehiclerecord:list')") + public ResponseEntity query(@RequestParam Map whereJson, Pageable page) { + return new ResponseEntity<>(inEmptyvehiclerecordService.queryAll(whereJson, page), HttpStatus.OK); + } + + @PostMapping + @Log("新增空载具入库") + @ApiOperation("新增空载具入库") + //@PreAuthorize("@el.check('emptyvehiclerecord:add')") + public ResponseEntity create(@Validated @RequestBody EmptyvehiclerecordDto dto) { + inEmptyvehiclerecordService.create(dto); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @PutMapping + @Log("修改空载具入库") + @ApiOperation("修改空载具入库") + //@PreAuthorize("@el.check('emptyvehiclerecord:edit')") + public ResponseEntity update(@Validated @RequestBody EmptyvehiclerecordDto dto) { + inEmptyvehiclerecordService.update(dto); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @Log("删除空载具入库") + @ApiOperation("删除空载具入库") + //@PreAuthorize("@el.check('emptyvehiclerecord:del')") + @DeleteMapping + public ResponseEntity delete(@RequestBody Long[] ids) { + inEmptyvehiclerecordService.deleteAll(ids); + return new ResponseEntity<>(HttpStatus.OK); + } + + @Log("生成任务") + @ApiOperation("生成任务") + @PostMapping("/createTask") + public ResponseEntity createTask(@RequestBody JSONObject whereJson) { + inEmptyvehiclerecordService.createTask(whereJson); + return new ResponseEntity<>(HttpStatus.OK); + } + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/vehiclebill/rest/OutEmptyvehiclerecordController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/vehiclebill/rest/OutEmptyvehiclerecordController.java new file mode 100644 index 0000000..28d0b0a --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/vehiclebill/rest/OutEmptyvehiclerecordController.java @@ -0,0 +1,77 @@ + +package org.nl.wms.st.vehiclebill.rest; + + +import com.alibaba.fastjson.JSONObject; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.annotation.Log; +import org.nl.wms.st.vehiclebill.service.OutEmptyvehiclerecordService; +import org.nl.wms.st.vehiclebill.service.dto.EmptyvehiclerecordDto; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; + +/** + * @author Liuxy + * @date 2022-08-12 + **/ +@RestController +@RequiredArgsConstructor +@Api(tags = "空载具出库管理") +@RequestMapping("/api/outemptyvehicle") +@Slf4j +public class OutEmptyvehiclerecordController { + + private final OutEmptyvehiclerecordService outEmptyvehiclerecordService; + + @GetMapping + @Log("查询空载具出库") + @ApiOperation("查询空载具出库") + //@PreAuthorize("@el.check('emptyvehiclerecord:list')") + public ResponseEntity query(@RequestParam Map whereJson, Pageable page) { + return new ResponseEntity<>(outEmptyvehiclerecordService.queryAll(whereJson, page), HttpStatus.OK); + } + + @PostMapping + @Log("新增空载具出库") + @ApiOperation("新增空载具出库") + //@PreAuthorize("@el.check('emptyvehiclerecord:add')") + public ResponseEntity create(@Validated @RequestBody EmptyvehiclerecordDto dto) { + outEmptyvehiclerecordService.create(dto); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @PutMapping + @Log("修改空载具出库") + @ApiOperation("修改空载具出库") + //@PreAuthorize("@el.check('emptyvehiclerecord:edit')") + public ResponseEntity update(@Validated @RequestBody EmptyvehiclerecordDto dto) { + outEmptyvehiclerecordService.update(dto); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @Log("删除空载具出库") + @ApiOperation("删除空载具出库") + //@PreAuthorize("@el.check('emptyvehiclerecord:del')") + @DeleteMapping + public ResponseEntity delete(@RequestBody Long[] ids) { + outEmptyvehiclerecordService.deleteAll(ids); + return new ResponseEntity<>(HttpStatus.OK); + } + + @Log("生成任务") + @ApiOperation("生成任务") + @PostMapping("/createTask") + public ResponseEntity createTask(@RequestBody JSONObject whereJson) { + outEmptyvehiclerecordService.createTask(whereJson); + return new ResponseEntity<>(HttpStatus.OK); + } + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/vehiclebill/service/InEmptyvehiclerecordService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/vehiclebill/service/InEmptyvehiclerecordService.java new file mode 100644 index 0000000..fc1bc34 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/vehiclebill/service/InEmptyvehiclerecordService.java @@ -0,0 +1,79 @@ + +package org.nl.wms.st.vehiclebill.service; + +import com.alibaba.fastjson.JSONObject; +import org.nl.wms.st.vehiclebill.service.dto.EmptyvehiclerecordDto; +import org.springframework.data.domain.Pageable; + +import java.util.List; +import java.util.Map; + +/** + * @author Liuxy + * @description 服务接口 + * @date 2022-08-12 + **/ +public interface InEmptyvehiclerecordService { + + /** + * 查询数据分页 + * + * @param whereJson 条件 + * @param page 分页参数 + * @return Map + */ + Map queryAll(Map whereJson, Pageable page); + + /** + * 查询所有数据不分页 + * + * @param whereJson 条件参数 + * @return List + */ + List queryAll(Map whereJson); + + /** + * 根据ID查询 + * + * @param record_uuid ID + * @return Emptyvehiclerecord + */ + EmptyvehiclerecordDto findById(Long record_uuid); + + /** + * 根据编码查询 + * + * @param code code + * @return Emptyvehiclerecord + */ + EmptyvehiclerecordDto findByCode(String code); + + + /** + * 创建 + * + * @param dto / + */ + void create(EmptyvehiclerecordDto dto); + + /** + * 编辑 + * + * @param dto / + */ + void update(EmptyvehiclerecordDto dto); + + /** + * 多选删除 + * + * @param ids / + */ + void deleteAll(Long[] ids); + + /** + * 生成任务 + * + * @param whereJson / + */ + void createTask(JSONObject whereJson); +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/vehiclebill/service/OutEmptyvehiclerecordService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/vehiclebill/service/OutEmptyvehiclerecordService.java new file mode 100644 index 0000000..d1365c8 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/vehiclebill/service/OutEmptyvehiclerecordService.java @@ -0,0 +1,79 @@ + +package org.nl.wms.st.vehiclebill.service; + +import com.alibaba.fastjson.JSONObject; +import org.nl.wms.st.vehiclebill.service.dto.EmptyvehiclerecordDto; +import org.springframework.data.domain.Pageable; + +import java.util.List; +import java.util.Map; + +/** + * @author Liuxy + * @description 服务接口 + * @date 2022-08-12 + **/ +public interface OutEmptyvehiclerecordService { + + /** + * 查询数据分页 + * + * @param whereJson 条件 + * @param page 分页参数 + * @return Map + */ + Map queryAll(Map whereJson, Pageable page); + + /** + * 查询所有数据不分页 + * + * @param whereJson 条件参数 + * @return List + */ + List queryAll(Map whereJson); + + /** + * 根据ID查询 + * + * @param record_uuid ID + * @return Emptyvehiclerecord + */ + EmptyvehiclerecordDto findById(Long record_uuid); + + /** + * 根据编码查询 + * + * @param code code + * @return Emptyvehiclerecord + */ + EmptyvehiclerecordDto findByCode(String code); + + + /** + * 创建 + * + * @param dto / + */ + void create(EmptyvehiclerecordDto dto); + + /** + * 编辑 + * + * @param dto / + */ + void update(EmptyvehiclerecordDto dto); + + /** + * 多选删除 + * + * @param ids / + */ + void deleteAll(Long[] ids); + + /** + * 生成任务 + * + * @param whereJson / + */ + void createTask(JSONObject whereJson); +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/vehiclebill/service/dto/EmptyvehiclerecordDto.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/vehiclebill/service/dto/EmptyvehiclerecordDto.java new file mode 100644 index 0000000..1b68853 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/vehiclebill/service/dto/EmptyvehiclerecordDto.java @@ -0,0 +1,110 @@ +package org.nl.wms.st.vehiclebill.service.dto; + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; + +/** + * @author Liuxy + * @description / + * @date 2022-08-12 + **/ +@Data +public class EmptyvehiclerecordDto implements Serializable { + + /** 记录标识 */ + /** + * 防止精度丢失 + */ + @JsonSerialize(using = ToStringSerializer.class) + private Long record_uuid; + + /** + * 单据编号 + */ + private String bill_code; + + /** + * 单据类型 + */ + private String io_type; + + /** + * 单据状态 + */ + private String bill_status; + + /** + * 载具数量 + */ + private BigDecimal vehicle_qty; + + /** + * 起始点位 + */ + private String start_point_code; + + /** + * 下一点位 + */ + private String next_point_code; + + /** + * 起始区域 + */ + private Long start_region_id; + + /** + * 终点区域 + */ + private Long end_region_id; + + /** + * 任务标识 + */ + private Long task_uuid; + + /** + * 备注 + */ + private String remark; + + /** + * 创建人 + */ + private Long create_id; + + /** + * 创建人姓名 + */ + private String create_name; + + /** + * 创建时间 + */ + private String create_time; + + /** + * 修改人 + */ + private Long update_optid; + + /** + * 修改人姓名 + */ + private String update_optname; + + /** + * 修改时间 + */ + private String update_time; + + /** + * 是否删除 + */ + private String is_delete; +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/vehiclebill/service/impl/InEmptyvehiclerecordServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/vehiclebill/service/impl/InEmptyvehiclerecordServiceImpl.java new file mode 100644 index 0000000..b4de4b2 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/vehiclebill/service/impl/InEmptyvehiclerecordServiceImpl.java @@ -0,0 +1,205 @@ + +package org.nl.wms.st.vehiclebill.service.impl; + + +import cn.hutool.core.map.MapUtil; +import com.alibaba.fastjson.JSON; +import lombok.RequiredArgsConstructor; +import org.nl.exception.BadRequestException; +import org.nl.modules.system.util.CodeUtil; +import org.nl.utils.SpringContextHolder; +import org.nl.wms.sch.service.PointService; +import org.nl.wms.sch.tasks.SendEmpVehicleTask; +import org.nl.wms.st.vehiclebill.service.InEmptyvehiclerecordService; +import org.nl.wms.st.vehiclebill.service.dto.EmptyvehiclerecordDto; +import org.nl.wql.WQL; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import org.springframework.data.domain.Pageable; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import org.nl.utils.SecurityUtils; +import org.nl.wql.core.bean.ResultBean; +import org.nl.wql.core.bean.WQLObject; +import org.nl.wql.util.WqlUtil; +import lombok.extern.slf4j.Slf4j; +import cn.hutool.core.util.ObjectUtil; + +/** + * @author Liuxy + * @description 服务实现 + * @date 2022-08-12 + **/ +@Service +@RequiredArgsConstructor +@Slf4j +public class InEmptyvehiclerecordServiceImpl implements InEmptyvehiclerecordService { + + @Override + public Map queryAll(Map whereJson, Pageable page) { + String bill_code = MapUtil.getStr(whereJson, "bill_code"); + + HashMap map = new HashMap<>(); + map.put("flag", "1"); + + if (ObjectUtil.isNotEmpty(bill_code)) map.put("bill_code",bill_code + "%"); + + JSONObject json = WQL.getWO("ST_VEHICLE_IN_01").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "st.create_time DESC"); + return json; + } + + @Override + public List queryAll(Map whereJson) { + WQLObject wo = WQLObject.getWQLObject("st_ivt_emptyvehiclerecord"); + JSONArray arr = wo.query().getResultJSONArray(0); + if (ObjectUtil.isNotEmpty(arr)) return arr.toJavaList(EmptyvehiclerecordDto.class); + return null; + } + + @Override + public EmptyvehiclerecordDto findById(Long record_uuid) { + WQLObject wo = WQLObject.getWQLObject("st_ivt_emptyvehiclerecord"); + JSONObject json = wo.query("record_uuid = '" + record_uuid + "'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(json)) { + return json.toJavaObject(EmptyvehiclerecordDto.class); + } + return null; + } + + @Override + public EmptyvehiclerecordDto findByCode(String code) { + WQLObject wo = WQLObject.getWQLObject("st_ivt_emptyvehiclerecord"); + JSONObject json = wo.query("code ='" + code + "'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(json)) { + return json.toJavaObject(EmptyvehiclerecordDto.class); + } + return null; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void create(EmptyvehiclerecordDto dto) { + WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); + + Long currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getNickName(); + String now = DateUtil.now(); + + String start_point_code = dto.getStart_point_code(); + String next_point_code = dto.getNext_point_code(); + // 判断起点是否为空! 入库起点不能为空 + if (ObjectUtil.isEmpty(start_point_code)) throw new BadRequestException("起点不能为空"); + // 根据点位编码找到对应的所属区域 + Long start_region_id = pointTab.query("point_code = '" + start_point_code + "'").uniqueResult(0).getLongValue("region_id"); + if (ObjectUtil.isNotEmpty(next_point_code)) { + Long end_region_id = pointTab.query("point_code = '" + next_point_code + "'").uniqueResult(0).getLongValue("region_id"); + dto.setEnd_region_id(end_region_id); + } + + dto.setRecord_uuid(IdUtil.getSnowflake(1, 1).nextId()); + dto.setCreate_id(currentUserId); + dto.setCreate_name(nickName); + dto.setUpdate_optid(currentUserId); + dto.setUpdate_optname(nickName); + dto.setUpdate_time(now); + dto.setCreate_time(now); + dto.setBill_code(CodeUtil.getNewCode("KZJ_BILL_CODE")); + dto.setIo_type("0"); + dto.setBill_status("10"); + dto.setStart_region_id(start_region_id); + + WQLObject wo = WQLObject.getWQLObject("st_ivt_emptyvehiclerecord"); + JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); + wo.insert(json); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void update(EmptyvehiclerecordDto dto) { + EmptyvehiclerecordDto entity = this.findById(dto.getRecord_uuid()); + if (entity == null) throw new BadRequestException("被删除或无权限,操作失败!"); + + WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); + + String start_point_code = dto.getStart_point_code(); + String next_point_code = dto.getNext_point_code(); + // 判断起点是否为空! 入库起点不能为空 + if (ObjectUtil.isEmpty(start_point_code)) throw new BadRequestException("起点不能为空"); + // 根据点位编码找到对应的所属区域 + Long start_region_id = pointTab.query("point_code = '" + start_point_code + "'").uniqueResult(0).getLongValue("region_id"); + if (ObjectUtil.isNotEmpty(next_point_code)) { + Long end_region_id = pointTab.query("point_code = '" + next_point_code + "'").uniqueResult(0).getLongValue("region_id"); + dto.setEnd_region_id(end_region_id); + } + + Long currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getNickName(); + + String now = DateUtil.now(); + dto.setUpdate_time(now); + dto.setStart_region_id(start_region_id); + dto.setUpdate_optid(currentUserId); + dto.setUpdate_optname(nickName); + + WQLObject wo = WQLObject.getWQLObject("st_ivt_emptyvehiclerecord"); + JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); + wo.update(json); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteAll(Long[] ids) { + Long currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getNickName(); + String now = DateUtil.now(); + + WQLObject wo = WQLObject.getWQLObject("st_ivt_emptyvehiclerecord"); + for (Long record_uuid : ids) { + JSONObject param = new JSONObject(); + param.put("record_uuid", String.valueOf(record_uuid)); + param.put("is_delete", "1"); + param.put("update_optid", currentUserId); + param.put("update_optname", nickName); + param.put("update_time", now); + wo.update(param); + } + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void createTask(JSONObject whereJson) { + WQLObject empTab = WQLObject.getWQLObject("st_ivt_EmptyVehicleRecord"); + WQLObject taskTab = WQLObject.getWQLObject("sch_base_task"); + + JSONObject jsonEmp = empTab.query("record_uuid = '" + whereJson.getString("record_uuid") + "'").uniqueResult(0); + // 准备参数 调用空载具处理类中的 创建任务的方法 + JSONObject param = new JSONObject(); + param.put("start_point_code", jsonEmp.getString("start_point_code")); + param.put("next_point_code", jsonEmp.getString("next_point_code")); + param.put("qty", jsonEmp.getString("vehicle_qty")); + param.put("record_uuid", jsonEmp.getString("record_uuid")); + + String task_id = new SendEmpVehicleTask().createTask(param); + // 更新空载具表中的任务id和单据状态 + PointService pointDto = SpringContextHolder.getBean(PointService.class); + JSONObject jsonTask = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0); + + jsonEmp.put("task_uuid", Long.valueOf(task_id)); + jsonEmp.put("bill_status","20"); + jsonEmp.put("next_point_code",jsonTask.getString("next_point_code")); + jsonEmp.put("end_region_id",pointDto.findByCode(jsonTask.getString("next_point_code")).getRegion_id()); + jsonEmp.put("update_optid", SecurityUtils.getCurrentUserId()); + jsonEmp.put("update_optname", SecurityUtils.getNickName()); + jsonEmp.put("update_time", DateUtil.now()); + empTab.update(jsonEmp); + } + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/vehiclebill/service/impl/OutEmptyvehiclerecordServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/vehiclebill/service/impl/OutEmptyvehiclerecordServiceImpl.java new file mode 100644 index 0000000..ae6c94f --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/vehiclebill/service/impl/OutEmptyvehiclerecordServiceImpl.java @@ -0,0 +1,204 @@ + +package org.nl.wms.st.vehiclebill.service.impl; + + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.exception.BadRequestException; +import org.nl.modules.system.util.CodeUtil; +import org.nl.utils.SecurityUtils; +import org.nl.utils.SpringContextHolder; +import org.nl.wms.sch.service.PointService; +import org.nl.wms.sch.tasks.CallEmpVehicleTask; +import org.nl.wms.sch.tasks.SendEmpVehicleTask; +import org.nl.wms.st.vehiclebill.service.InEmptyvehiclerecordService; +import org.nl.wms.st.vehiclebill.service.OutEmptyvehiclerecordService; +import org.nl.wms.st.vehiclebill.service.dto.EmptyvehiclerecordDto; +import org.nl.wql.WQL; +import org.nl.wql.core.bean.WQLObject; +import org.nl.wql.util.WqlUtil; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author Liuxy + * @description 服务实现 + * @date 2022-08-12 + **/ +@Service +@RequiredArgsConstructor +@Slf4j +public class OutEmptyvehiclerecordServiceImpl implements OutEmptyvehiclerecordService { + + @Override + public Map queryAll(Map whereJson, Pageable page) { + String bill_code = MapUtil.getStr(whereJson, "bill_code"); + + HashMap map = new HashMap<>(); + map.put("flag", "1"); + + if (ObjectUtil.isNotEmpty(bill_code)) map.put("bill_code",bill_code + "%"); + + JSONObject json = WQL.getWO("ST_VEHICLE_OUT_01").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "st.create_time DESC"); + return json; + } + + @Override + public List queryAll(Map whereJson) { + WQLObject wo = WQLObject.getWQLObject("st_ivt_emptyvehiclerecord"); + JSONArray arr = wo.query().getResultJSONArray(0); + if (ObjectUtil.isNotEmpty(arr)) return arr.toJavaList(EmptyvehiclerecordDto.class); + return null; + } + + @Override + public EmptyvehiclerecordDto findById(Long record_uuid) { + WQLObject wo = WQLObject.getWQLObject("st_ivt_emptyvehiclerecord"); + JSONObject json = wo.query("record_uuid = '" + record_uuid + "'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(json)) { + return json.toJavaObject(EmptyvehiclerecordDto.class); + } + return null; + } + + @Override + public EmptyvehiclerecordDto findByCode(String code) { + WQLObject wo = WQLObject.getWQLObject("st_ivt_emptyvehiclerecord"); + JSONObject json = wo.query("code ='" + code + "'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(json)) { + return json.toJavaObject(EmptyvehiclerecordDto.class); + } + return null; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void create(EmptyvehiclerecordDto dto) { + WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); + + Long currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getNickName(); + String now = DateUtil.now(); + + String start_point_code = dto.getStart_point_code(); + String next_point_code = dto.getNext_point_code(); + // 判断终点是否为空! 出库终点不能为空 + if (ObjectUtil.isEmpty(next_point_code)) throw new BadRequestException("终点不能为空"); + // 根据点位编码找到对应的所属区域 + Long end_region_id = pointTab.query("point_code = '" + next_point_code + "'").uniqueResult(0).getLongValue("region_id"); + if (ObjectUtil.isNotEmpty(start_point_code)) { + Long start_region_id = pointTab.query("point_code = '" + start_point_code + "'").uniqueResult(0).getLongValue("region_id"); + dto.setStart_region_id(start_region_id); + } + + dto.setRecord_uuid(IdUtil.getSnowflake(1, 1).nextId()); + dto.setCreate_id(currentUserId); + dto.setCreate_name(nickName); + dto.setUpdate_optid(currentUserId); + dto.setUpdate_optname(nickName); + dto.setUpdate_time(now); + dto.setCreate_time(now); + dto.setBill_code(CodeUtil.getNewCode("KZJ_BILL_CODE")); + dto.setIo_type("1"); + dto.setBill_status("10"); + dto.setEnd_region_id(end_region_id); + + WQLObject wo = WQLObject.getWQLObject("st_ivt_emptyvehiclerecord"); + JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); + wo.insert(json); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void update(EmptyvehiclerecordDto dto) { + EmptyvehiclerecordDto entity = this.findById(dto.getRecord_uuid()); + if (entity == null) throw new BadRequestException("被删除或无权限,操作失败!"); + + WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); + + String start_point_code = dto.getStart_point_code(); + String next_point_code = dto.getNext_point_code(); + // 判断起点是否为空! 入库起点不能为空 + if (ObjectUtil.isEmpty(next_point_code)) throw new BadRequestException("终点不能为空"); + // 根据点位编码找到对应的所属区域 + Long end_region_id = pointTab.query("point_code = '" + next_point_code + "'").uniqueResult(0).getLongValue("region_id"); + if (ObjectUtil.isNotEmpty(start_point_code)) { + Long start_region_id = pointTab.query("point_code = '" + start_point_code + "'").uniqueResult(0).getLongValue("region_id"); + dto.setStart_region_id(start_region_id); + } + + Long currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getNickName(); + + String now = DateUtil.now(); + dto.setUpdate_time(now); + dto.setStart_region_id(end_region_id); + dto.setUpdate_optid(currentUserId); + dto.setUpdate_optname(nickName); + + WQLObject wo = WQLObject.getWQLObject("st_ivt_emptyvehiclerecord"); + JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); + wo.update(json); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteAll(Long[] ids) { + Long currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getNickName(); + String now = DateUtil.now(); + + WQLObject wo = WQLObject.getWQLObject("st_ivt_emptyvehiclerecord"); + for (Long record_uuid : ids) { + JSONObject param = new JSONObject(); + param.put("record_uuid", String.valueOf(record_uuid)); + param.put("is_delete", "1"); + param.put("update_optid", currentUserId); + param.put("update_optname", nickName); + param.put("update_time", now); + wo.update(param); + } + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void createTask(JSONObject whereJson) { + WQLObject empTab = WQLObject.getWQLObject("st_ivt_EmptyVehicleRecord"); + WQLObject taskTab = WQLObject.getWQLObject("sch_base_task"); + + JSONObject jsonEmp = empTab.query("record_uuid = '" + whereJson.getString("record_uuid") + "'").uniqueResult(0); + // 准备参数 调用空载具处理类中的 创建任务的方法 + JSONObject param = new JSONObject(); + param.put("start_point_code", jsonEmp.getString("start_point_code")); + param.put("next_point_code", jsonEmp.getString("next_point_code")); + param.put("qty", jsonEmp.getString("vehicle_qty")); + param.put("record_uuid", jsonEmp.getString("record_uuid")); + + String task_id = new CallEmpVehicleTask().createTask(param); + // 更新空载具表中的任务id和单据状态 + PointService pointDto = SpringContextHolder.getBean(PointService.class); + JSONObject jsonTask = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0); + + jsonEmp.put("task_uuid", Long.valueOf(task_id)); + jsonEmp.put("bill_status","20"); + jsonEmp.put("start_point_code",jsonTask.getString("start_point_code")); + jsonEmp.put("start_region_id",pointDto.findByCode(jsonTask.getString("start_point_code")).getRegion_id()); + jsonEmp.put("update_optid", SecurityUtils.getCurrentUserId()); + jsonEmp.put("update_optname", SecurityUtils.getNickName()); + jsonEmp.put("update_time", DateUtil.now()); + empTab.update(jsonEmp); + } + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/vehiclebill/wql/ST_VEHICLE_IN_01.wql b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/vehiclebill/wql/ST_VEHICLE_IN_01.wql new file mode 100644 index 0000000..74724e5 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/vehiclebill/wql/ST_VEHICLE_IN_01.wql @@ -0,0 +1,61 @@ +[交易说明] + 交易名: 空载具入库分页查询 + 所属模块: + 功能简述: + 版权所有: + 表引用: + 版本经历: + +[数据库] + --指定数据库,为空采用默认值,默认为db.properties中列出的第一个库 + +[IO定义] + ################################################# + ## 表字段对应输入参数 + ################################################# + 输入.flag TYPEAS s_string + 输入.bill_code TYPEAS s_string + +[临时表] + --这边列出来的临时表就会在运行期动态创建 + +[临时变量] + --所有中间过程变量均可在此处定义 + +[业务过程] + + ########################################## + # 1、输入输出检查 # + ########################################## + + + ########################################## + # 2、主过程前处理 # + ########################################## + + + ########################################## + # 3、业务主过程 # + ########################################## + + IF 输入.flag = "1" + PAGEQUERY + SELECT + st.*, + region1.region_name AS start_region_name, + region2.region_name AS endt_region_name + FROM + st_ivt_EmptyVehicleRecord st + LEFT JOIN sch_base_region region1 ON st.start_region_id = region1.region_id + LEFT JOIN sch_base_region region2 ON st.end_region_id = region2.region_id + WHERE + st.is_delete = '0' + AND st.io_type = '0' + + OPTION 输入.bill_code <> "" + st.bill_code like 输入.bill_code + ENDOPTION + + ENDSELECT + ENDPAGEQUERY + ENDIF diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/vehiclebill/wql/ST_VEHICLE_IN_02.wql b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/vehiclebill/wql/ST_VEHICLE_IN_02.wql new file mode 100644 index 0000000..7991174 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/vehiclebill/wql/ST_VEHICLE_IN_02.wql @@ -0,0 +1,82 @@ +[交易说明] + 交易名: 空载具入库业务 + 所属模块: + 功能简述: + 版权所有: + 表引用: + 版本经历: + +[数据库] + --指定数据库,为空采用默认值,默认为db.properties中列出的第一个库 + +[IO定义] + ################################################# + ## 表字段对应输入参数 + ################################################# + 输入.flag TYPEAS s_string + 输入.vehicle_qty TYPEAS s_string + 输入.region_code TYPEAS s_string + +[临时表] + --这边列出来的临时表就会在运行期动态创建 + +[临时变量] + --所有中间过程变量均可在此处定义 + +[业务过程] + + ########################################## + # 1、输入输出检查 # + ########################################## + + + ########################################## + # 2、主过程前处理 # + ########################################## + + + ########################################## + # 3、业务主过程 # + ########################################## + + IF 输入.flag = "1" + QUERY + SELECT + point.* + FROM + sch_base_point point + LEFT JOIN SCH_BASE_Region region ON point.region_id = region.region_id + WHERE + point.lock_type = '00' + AND (12 - IFNULL(point.vehicle_qty,0)) >= 输入.vehicle_qty + + OPTION 输入.region_code <> "" + region.region_code = 输入.region_code + ENDOPTION + + order by point.vehicle_qty DESC + + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "2" + QUERY + SELECT + point.* + FROM + sch_base_point point + LEFT JOIN SCH_BASE_Region region ON point.region_id = region.region_id + WHERE + point.lock_type = '00' + AND point.point_status = '00' + + OPTION 输入.region_code <> "" + region.region_code = 输入.region_code + ENDOPTION + + order by point.point_code DESC + + ENDSELECT + ENDQUERY + ENDIF diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/vehiclebill/wql/ST_VEHICLE_OUT_01.wql b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/vehiclebill/wql/ST_VEHICLE_OUT_01.wql new file mode 100644 index 0000000..7c4919c --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/vehiclebill/wql/ST_VEHICLE_OUT_01.wql @@ -0,0 +1,61 @@ +[交易说明] + 交易名: 空载具出库分页查询 + 所属模块: + 功能简述: + 版权所有: + 表引用: + 版本经历: + +[数据库] + --指定数据库,为空采用默认值,默认为db.properties中列出的第一个库 + +[IO定义] + ################################################# + ## 表字段对应输入参数 + ################################################# + 输入.flag TYPEAS s_string + 输入.bill_code TYPEAS s_string + +[临时表] + --这边列出来的临时表就会在运行期动态创建 + +[临时变量] + --所有中间过程变量均可在此处定义 + +[业务过程] + + ########################################## + # 1、输入输出检查 # + ########################################## + + + ########################################## + # 2、主过程前处理 # + ########################################## + + + ########################################## + # 3、业务主过程 # + ########################################## + + IF 输入.flag = "1" + PAGEQUERY + SELECT + st.*, + region1.region_name AS start_region_name, + region2.region_name AS endt_region_name + FROM + st_ivt_EmptyVehicleRecord st + LEFT JOIN sch_base_region region1 ON st.start_region_id = region1.region_id + LEFT JOIN sch_base_region region2 ON st.end_region_id = region2.region_id + WHERE + st.is_delete = '0' + AND st.io_type = '1' + + OPTION 输入.bill_code <> "" + st.bill_code like 输入.bill_code + ENDOPTION + + ENDSELECT + ENDPAGEQUERY + ENDIF diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/vehiclebill/wql/ST_VEHICLE_OUT_02.wql b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/vehiclebill/wql/ST_VEHICLE_OUT_02.wql new file mode 100644 index 0000000..4d27792 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/vehiclebill/wql/ST_VEHICLE_OUT_02.wql @@ -0,0 +1,83 @@ +[交易说明] + 交易名: 空载具出库业务 + 所属模块: + 功能简述: + 版权所有: + 表引用: + 版本经历: + +[数据库] + --指定数据库,为空采用默认值,默认为db.properties中列出的第一个库 + +[IO定义] + ################################################# + ## 表字段对应输入参数 + ################################################# + 输入.flag TYPEAS s_string + 输入.vehicle_qty TYPEAS s_string + 输入.region_code TYPEAS s_string + +[临时表] + --这边列出来的临时表就会在运行期动态创建 + +[临时变量] + --所有中间过程变量均可在此处定义 + +[业务过程] + + ########################################## + # 1、输入输出检查 # + ########################################## + + + ########################################## + # 2、主过程前处理 # + ########################################## + + + ########################################## + # 3、业务主过程 # + ########################################## + + IF 输入.flag = "1" + QUERY + SELECT + point.* + FROM + sch_base_point point + LEFT JOIN SCH_BASE_Region region ON point.region_id = region.region_id + WHERE + point.lock_type = '00' + AND point.point_status = '01' + AND IFNULL(point.vehicle_qty,0) >= 输入.vehicle_qty + + OPTION 输入.region_code <> "" + region.region_code = 输入.region_code + ENDOPTION + + order by point.vehicle_qty ASC + + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "2" + QUERY + SELECT + point.* + FROM + sch_base_point point + LEFT JOIN SCH_BASE_Region region ON point.region_id = region.region_id + WHERE + point.lock_type = '00' + AND point.point_status = '00' + + OPTION 输入.region_code <> "" + region.region_code = 输入.region_code + ENDOPTION + + order by point.point_code DESC + + ENDSELECT + ENDQUERY + ENDIF diff --git a/mes/qd/src/api/wms/st/vehiclebill/inemptyvehicl.js b/mes/qd/src/api/wms/st/vehiclebill/inemptyvehicl.js new file mode 100644 index 0000000..9ab5257 --- /dev/null +++ b/mes/qd/src/api/wms/st/vehiclebill/inemptyvehicl.js @@ -0,0 +1,35 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/inemptyvehicle', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/inemptyvehicle/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/inemptyvehicle', + method: 'put', + data + }) +} + +export function createTask(data) { + return request({ + url: 'api/inemptyvehicle/createTask', + method: 'post', + data + }) +} + +export default { add, edit, del, createTask } diff --git a/mes/qd/src/api/wms/st/vehiclebill/outemptyvehicl.js b/mes/qd/src/api/wms/st/vehiclebill/outemptyvehicl.js new file mode 100644 index 0000000..6143dde --- /dev/null +++ b/mes/qd/src/api/wms/st/vehiclebill/outemptyvehicl.js @@ -0,0 +1,35 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/outemptyvehicle', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/outemptyvehicle/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/outemptyvehicle', + method: 'put', + data + }) +} + +export function createTask(data) { + return request({ + url: 'api/outemptyvehicle/createTask', + method: 'post', + data + }) +} + +export default { add, edit, del, createTask } diff --git a/mes/qd/src/views/wms/sch/point/index.vue b/mes/qd/src/views/wms/sch/point/index.vue index 4e7170f..ab2c0b6 100644 --- a/mes/qd/src/views/wms/sch/point/index.vue +++ b/mes/qd/src/views/wms/sch/point/index.vue @@ -238,7 +238,7 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 取 消 + 确 定 + + + + + + + + diff --git a/mes/qd/src/views/wms/st/vehiclebill/in/index.vue b/mes/qd/src/views/wms/st/vehiclebill/in/index.vue new file mode 100644 index 0000000..dc3c59b --- /dev/null +++ b/mes/qd/src/views/wms/st/vehiclebill/in/index.vue @@ -0,0 +1,217 @@ + + + + + diff --git a/mes/qd/src/views/wms/st/vehiclebill/out/index.vue b/mes/qd/src/views/wms/st/vehiclebill/out/index.vue new file mode 100644 index 0000000..2db0cd5 --- /dev/null +++ b/mes/qd/src/views/wms/st/vehiclebill/out/index.vue @@ -0,0 +1,217 @@ + + + + +