diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/dp/service/imp/BigScreenServiceImpl.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/dp/service/imp/BigScreenServiceImpl.java index e78b111..0fa9417 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/dp/service/imp/BigScreenServiceImpl.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/dp/service/imp/BigScreenServiceImpl.java @@ -1,6 +1,7 @@ package org.nl.wms.ext.dp.service.imp; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -12,6 +13,8 @@ import org.nl.modules.system.service.dto.UserDto; import org.nl.utils.RsaUtils; import org.nl.wms.ext.dp.service.BigScreenService; import org.nl.wql.WQL; +import org.nl.wql.core.bean.WQLObject; +import org.nl.wql.core.engine.object.WO; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; @@ -162,9 +165,11 @@ public class BigScreenServiceImpl implements BigScreenService { //查询熟化区的入库转储任务 JSONObject jo = new JSONObject(); + //静止中 JSONArray allrows = WQL.getWO("QST_BIG_SCREEN").addParam("flag", "11").process() .getResultJSONArray(0); + //静止完成 JSONArray allrows2 = WQL.getWO("QST_BIG_SCREEN").addParam("flag", "12").process() .getResultJSONArray(0); jo.put("allrows", allrows); @@ -235,6 +240,23 @@ public class BigScreenServiceImpl implements BigScreenService { //查询熟化仓位信息 JSONArray allrows = WQL.getWO("QST_BIG_SCREEN").addParam("flag", "5").process() .getResultJSONArray(0); + //物料标签明细表【md_base_materialLabelDtl】 + WQLObject materialLabelDtlTab = WQLObject.getWQLObject("md_base_materialLabelDtl"); + //拼接库存信息 + for (int i = 0; i < allrows.size(); i++) { + JSONObject json = allrows.getJSONObject(i); + String labeldtl_uuid = json.getString("labeldtl_uuid"); + if (StrUtil.isNotEmpty(labeldtl_uuid)) { + JSONObject jsonObject1 = materialLabelDtlTab.query("labeldtl_uuid = '" + labeldtl_uuid + "'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(jsonObject1)) { + JSONObject labelObj = WQL.getWO("QST_BIG_SCREEN").addParam("flag", "13").addParam("labeldtl_uuid", labeldtl_uuid).process().uniqueResult(0); + //配方-批次-重量(YC-B8-1000) + String material_ivt_info = labelObj.getString("formula") + "-" + labelObj.getString("pcsn") + "-" + labelObj.getString("weight"); + json.put("material_ivt_info", material_ivt_info); + } + } + + } return allrows; } @@ -351,6 +373,24 @@ public class BigScreenServiceImpl implements BigScreenService { //查询熟化仓位信息 JSONArray allrows = WQL.getWO("QST_BIG_SCREEN").addParam("flag", "10").process() .getResultJSONArray(0); + //物料标签明细表【md_base_materialLabelDtl】 + WQLObject materialLabelDtlTab = WQLObject.getWQLObject("md_base_materialLabelDtl"); + //拼接库存信息 + for (int i = 0; i < allrows.size(); i++) { + JSONObject json = allrows.getJSONObject(i); + String labeldtl_uuid = json.getString("labeldtl_uuid"); + if (StrUtil.isNotEmpty(labeldtl_uuid)) { + JSONObject jsonObject1 = materialLabelDtlTab.query("labeldtl_uuid = '" + labeldtl_uuid + "'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(jsonObject1)) { + JSONObject labelObj = WQL.getWO("QST_BIG_SCREEN").addParam("flag", "13").addParam("labeldtl_uuid", labeldtl_uuid).process().uniqueResult(0); + //配方-批次-重量(YC-B8-1000) + String material_ivt_info = labelObj.getString("formula") + "-" + labelObj.getString("pcsn") + "-" + labelObj.getString("weight"); + json.put("material_ivt_info", material_ivt_info); + json.put("color", labelObj.getString("color")); + } + } + + } return allrows; } } diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/dp/wql/QST_BIG_SCREEN.wql b/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/dp/wql/QST_BIG_SCREEN.wql index ba0bd58..58c46e3 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/dp/wql/QST_BIG_SCREEN.wql +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/dp/wql/QST_BIG_SCREEN.wql @@ -13,9 +13,10 @@ ################################################# ## 表字段对应输入参数 ################################################# - 输入.flag TYPEAS s_string - 输入.date_begin TYPEAS s_string - 输入.date_end TYPEAS s_string + 输入.flag TYPEAS s_string + 输入.date_begin TYPEAS s_string + 输入.date_end TYPEAS s_string + 输入.labeldtl_uuid TYPEAS s_string [临时表] --这边列出来的临时表就会在运行期动态创建 @@ -171,6 +172,7 @@ IF 输入.flag = "3" material.formula, point.point_code AS struct_code, ivt.label_code, + ivt.labeldtl_uuid, CASE WHEN point.is_active = '0' THEN @@ -392,23 +394,41 @@ IF 输入.flag = "8" ENDQUERY ENDIF - IF 输入.flag = "12" - QUERY - SELECT - round ( sum( ivt.canuse_qty ), 0 ) AS finished_quantity, - ivt.label_code, - mst.formula, - mst.pcsn - FROM - st_ivt_structivt ivt - LEFT JOIN sch_base_point point ON point.point_uuid = ivt.struct_uuid - LEFT JOIN md_base_materialLabelMst mst ON ivt.label_uuid = ivt.label_uuid - WHERE - TIMESTAMPDIFF( HOUR, ivt.instorage_time, now( ) ) >= ivt.stand_hour - AND point.area_type IN ( '01', '02' ) - GROUP BY - mst.formula,mst.pcsn,ivt.label_code - ENDSELECT - ENDQUERY - ENDIF + IF 输入.flag = "12" + QUERY + SELECT + round ( sum( ivt.canuse_qty ), 0 ) AS finished_quantity, + ivt.label_code, + mst.formula, + mst.pcsn + FROM + st_ivt_structivt ivt + LEFT JOIN sch_base_point point ON point.point_uuid = ivt.struct_uuid + LEFT JOIN md_base_materialLabelMst mst ON ivt.label_uuid = ivt.label_uuid + WHERE + TIMESTAMPDIFF( HOUR, ivt.instorage_time, now( ) ) >= ivt.stand_hour + AND point.area_type IN ( '01', '02' ) + GROUP BY + mst.formula,mst.pcsn,ivt.label_code + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "13" + SELECT + mst.material_uuid, + mst.material_code, + mst.material_name, + mst.formula, + mst.pcsn, + mst.color, + dtl.weight + FROM + md_base_materialLabelDtl dtl + LEFT JOIN md_base_materialLabelMst mst ON dtl.label_uuid = mst.label_uuid + OPTION 输入.labeldtl_uuid <> "" + dtl.labeldtl_uuid = 输入.labeldtl_uuid + ENDOPTION + ENDQUERY + ENDIF diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/pdm/rest/ProduceTaskController.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/pdm/rest/ProduceTaskController.java index 1c8c948..169f2c4 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/pdm/rest/ProduceTaskController.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/pdm/rest/ProduceTaskController.java @@ -166,6 +166,12 @@ public class ProduceTaskController { produceTaskService.materialBack(map); return new ResponseEntity<>(HttpStatus.OK); } + @ApiOperation("空托回库") + @PostMapping("/emptyVehicleBack") + public ResponseEntity emptyVehicleBack(@RequestBody Map map) { + produceTaskService.emptyVehicleBack(map); + return new ResponseEntity<>(HttpStatus.OK); + } @ApiOperation("根据设备id查询任务") @GetMapping("/{id}") diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/pdm/service/ProduceTaskService.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/pdm/service/ProduceTaskService.java index 87b04e8..70bbee3 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/pdm/service/ProduceTaskService.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/pdm/service/ProduceTaskService.java @@ -131,6 +131,12 @@ public interface ProduceTaskService { * @param map */ void materialBack(Map map); + /** + * 空托回库 + * + * @param map + */ + void emptyVehicleBack(Map map); /** diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/pdm/service/impl/ProduceTaskServiceImpl.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/pdm/service/impl/ProduceTaskServiceImpl.java index 2f0d65c..57ec1b4 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/pdm/service/impl/ProduceTaskServiceImpl.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/pdm/service/impl/ProduceTaskServiceImpl.java @@ -507,6 +507,28 @@ public class ProduceTaskServiceImpl implements ProduceTaskService { } + @Override + public void emptyVehicleBack(Map map) { + String id = MapUtil.getStr(map, "id"); + if (StrUtil.isEmpty(id)) throw new BadRequestException("所选屏位置不能为空!"); + + String point_code = "BCPSL0" + id; + //判断点位上有没有托盘,没有托盘不允许回库 +// JSONObject pointObj = WQLObject.getWQLObject("sch_base_point").query("point_code='" + point_code + "'").uniqueResult(0); +// String vehicle_code = pointObj.optString("vehicle_code"); + + //判断是否有到该设备的未完成的AGV任务 + //任务基础表【sch_base_task】 + WQLObject taskTab = WQLObject.getWQLObject("sch_base_task"); + JSONObject taskJson = taskTab.query(" is_delete='0' and task_status<>'06' and start_point_code = '" + point_code + "' and handle_class = '" + InEmptyVehicleTask.class.getName() + "'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(taskJson)) throw new BadRequestException("该设备有未完成的搬运任务,不能重复操作!"); + + JSONObject param = new JSONObject(); + param.put("start_point_code", point_code); + InEmptyVehicleTask inEmptyVehicleTask = new InEmptyVehicleTask(); + inEmptyVehicleTask.createTask(param); + } + @Override @Transactional(rollbackFor = Exception.class) public JSONArray queryIdDevice(String id) { @@ -571,10 +593,10 @@ public class ProduceTaskServiceImpl implements ProduceTaskService { //标签标识 String label_uuid = labelObj.getString("label_uuid"); HashMap param = new HashMap(); - param.put("flag","1"); - param.put("label_uuid",label_uuid); + param.put("flag", "1"); + param.put("label_uuid", label_uuid); JSONObject jsonObject = WQL.getWO("QPDM_PRODUCETASK_005").addParamMap(param).process().uniqueResult(0); - if (ObjectUtil.isNotEmpty(jsonObject))return jsonObject.getString("ivt_qty"); + if (ObjectUtil.isNotEmpty(jsonObject)) return jsonObject.getString("ivt_qty"); return "0"; } } diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InEmptyVehicleTask.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InEmptyVehicleTask.java index 0f05857..a9ff3e0 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InEmptyVehicleTask.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InEmptyVehicleTask.java @@ -121,6 +121,8 @@ public class InEmptyVehicleTask extends AbstractAcsTask { String task_status = TaskStatusEnum.SURE_START.getCode(); String start_point_code = etvObj.optString("start_point_code"); String next_point_code = etvObj.optString("next_point_code"); + + JSONObject jsonTask = new JSONObject(); jsonTask.put("task_uuid", IdUtil.simpleUUID()); jsonTask.put("task_code", CodeUtil.getNewCode("TASK_CODE")); diff --git a/wms/qd/src/api/wms/pdm/produceTask.js b/wms/qd/src/api/wms/pdm/produceTask.js index ada6627..bd31d08 100644 --- a/wms/qd/src/api/wms/pdm/produceTask.js +++ b/wms/qd/src/api/wms/pdm/produceTask.js @@ -90,6 +90,13 @@ export function materialBack(data) { data }) } +export function emptyVehicleBack(data) { + return request({ + url: 'api/produceTask/emptyVehicleBack', + method: 'post', + data + }) +} export function queryIdDevice(id) { return request({ @@ -138,5 +145,5 @@ export function queryIvtByPscn(data) { export default { add, edit, del, getDevice, getMaterial, getProduceStatus, importExcel, queryTask, querAllTask, - callMaterial, finish, queryIdDevice, popSeek, queryOne, saveOrder, forceFinish, materialBack, queryIvtByPscn + callMaterial, finish, queryIdDevice, popSeek, queryOne, saveOrder, forceFinish, materialBack, queryIvtByPscn, emptyVehicleBack } diff --git a/wms/qd/src/views/wms/pdm/produceTask/bigScreen.vue b/wms/qd/src/views/wms/pdm/produceTask/bigScreen.vue index 223d0e7..868d24a 100644 --- a/wms/qd/src/views/wms/pdm/produceTask/bigScreen.vue +++ b/wms/qd/src/views/wms/pdm/produceTask/bigScreen.vue @@ -9,7 +9,8 @@ 界面刷新 生产叫料 生产完成 - 余料回库 + 余料回库 + 空托回库 @@ -74,11 +75,12 @@ export default { choice: '', ProduceStatusList: [], materialList: [], - tableData: [] + tableData: [], + id: null } }, created() { - // const id = this.$route.params.id + this.id = this.$route.params.id crudProduceTask.getDevice().then(res => { this.deviceList = res }) @@ -167,6 +169,18 @@ export default { console.log(err.response.data.message) }) }, + emptyVehicleBack() { + const data = { + id: this.id + } + debugger + crudProduceTask.emptyVehicleBack(data).then(res => { + this.notify('操作成功', 'success') + this.queryId() + }).cache(err => { + console.log(err.response.data.message) + }) + }, formatStatusName(row, column) { for (const item of this.ProduceStatusList) { if (item.code === row.produce_status) {