From 8180dcaac5e681a3b3672930c1e51eaf1ffbfcbc Mon Sep 17 00:00:00 2001 From: baoge <751575283@qq.com> Date: Mon, 3 Apr 2023 09:11:17 +0800 Subject: [PATCH] =?UTF-8?q?rev:=E4=BF=AE=E6=94=B9=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E4=B8=8B=E5=8F=91=E6=8E=A5=E5=8F=A3=E5=AE=9E=E4=BD=93=E7=94=9F?= =?UTF-8?q?=E6=88=90=E3=80=82=20rev:sch=20excel=E4=B8=AD=E7=BC=93=E5=AD=98?= =?UTF-8?q?=E7=BA=BF=E4=BD=8D=E7=BD=AE=E8=A1=A8=E3=80=90SCH=5FCacheLine=5F?= =?UTF-8?q?Position=E3=80=91=E4=B8=AD=E5=A2=9E=E5=8A=A0taskid=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=E4=BD=9C=E4=B8=BA=E4=BB=BB=E5=8A=A1=E5=AE=9E=E6=97=B6?= =?UTF-8?q?id?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wms/pda/rest/CacheLineHandController.java | 16 ++-- .../impl/CacheLineHandServiceImpl.java | 79 +++++++--------- .../java/org/nl/wms/pda/wql/PDA_QUERY.wql | 33 +++++-- .../nl/wms/sch/tasks/SpeMachineryTask.java | 85 +++++++++--------- .../src/main/java/org/nl/wms/sch/wql/sch.xls | Bin 183808 -> 183808 bytes 5 files changed, 114 insertions(+), 99 deletions(-) diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/rest/CacheLineHandController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/rest/CacheLineHandController.java index ee59de4c..bea51d56 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/rest/CacheLineHandController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/rest/CacheLineHandController.java @@ -132,7 +132,7 @@ public class CacheLineHandController{ log.info("海亮缓存线手持服务 [任务操作] 接口被请求, 请求参数-{}", param); //任务类型和任务ID校验,instruct_uuid为前端参数命名,本来应为task_id if(StringUtils.isEmpty(param.getString("instruct_uuid")) || StringUtils.isEmpty(param.getString("opt_type"))) { - throw new BizCoreException(ResultCode.VALIDATE_FAILED); + throw new BizCoreException("ResultCode.VALIDATE_FAILED"); } return new ResponseEntity<>(cacheLineHandService.instOperation(param), HttpStatus.OK); } @@ -143,8 +143,11 @@ public class CacheLineHandController{ public ResponseEntity cacheLineOutBoxExceptionQuery(@RequestBody JSONObject param) { log.info("海亮缓存线手持服务 [缓存线出入箱异常-查询] 接口被请求, 请求参数-{}", param); //参数校验 - if(StringUtils.isEmpty(param.getString("wcsdevice_code")) || StringUtils.isEmpty(param.getString("position_code"))) { - throw new BizCoreException(ResultCode.VALIDATE_FAILED); + if(StringUtils.isEmpty(param.getString("wcsdevice_code"))) { + throw new BizCoreException("请选择缓存线并输入缓存线位置编号再查询"); + } + if(StringUtils.isEmpty(param.getString("position_code"))) { + throw new BizCoreException("请输入缓存线位置编号再查询"); } return new ResponseEntity<>(cacheLineHandService.cacheLineOutBoxExceptionQuery(param), HttpStatus.OK); } @@ -155,8 +158,11 @@ public class CacheLineHandController{ public ResponseEntity cacheLineOutBoxExceptionConfirm(@RequestBody JSONObject param) { log.info("海亮缓存线手持服务 [缓存线出箱异常-确认] 接口被请求, 请求参数-{}", param); //参数校验 - if(StringUtils.isEmpty(param.getString("wcsdevice_code")) || StringUtils.isEmpty(param.getString("position_code")) || StringUtils.isEmpty(param.getString("vehicle_code"))) { - throw new BizCoreException(ResultCode.VALIDATE_FAILED); + if(StringUtils.isEmpty(param.getString("vehicle_code"))) { + throw new BizCoreException("请输入料箱码"); + } + if(StringUtils.isEmpty(param.getString("wcsdevice_code")) || StringUtils.isEmpty(param.getString("position_code"))) { + throw new BizCoreException("请输入缓存线位置编号与缓存线编号"); } return new ResponseEntity<>(cacheLineHandService.cacheLineOutBoxExceptionConfirm(param), HttpStatus.OK); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/service/impl/CacheLineHandServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/service/impl/CacheLineHandServiceImpl.java index 55632567..7f8d2ed0 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/service/impl/CacheLineHandServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/service/impl/CacheLineHandServiceImpl.java @@ -24,6 +24,7 @@ import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.util.WqlUtil; import org.nl.wms.pda.dto.MaterialDto; import org.nl.wms.pda.service.CacheLineHandService; +import org.nl.wms.sch.manage.TaskStatusEnum; import org.nl.wms.sch.tasks.SpeMachineryTask; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; @@ -200,10 +201,14 @@ public class CacheLineHandServiceImpl implements CacheLineHandService{ @Override public CommonResult instOperation(JSONObject param) { String optType = param.getString("opt_type"); + String instruct_uuid = param.getString("instruct_uuid"); SpeMachineryTask SpeMachineryTask = new SpeMachineryTask(); WQLObject taskTab = WQLObject.getWQLObject("sch_base_task"); - JSONObject taskObject = taskTab.query("task_id =" + param.getString("instruct_uuid")).uniqueResult(0); - //1-取消、2-完成、3-任务下发,根据操作类型执行相关操作 + JSONObject taskObject = taskTab.query("task_id =" + instruct_uuid).uniqueResult(0); + if(null == taskObject) { + throw new BadRequestException("未找到该任务信息!"); + } + //8-取消、7-完成、5-任务下发,根据操作类型执行相关操作 if(StatusEnum.TASK_CANNEL.getCode().equals(optType) || StatusEnum.TASK_FINISH.getCode().equals(optType)) { return RestBusinessTemplate.execute(() -> updateTaskStatus(taskObject, optType)); } @@ -258,7 +263,7 @@ public class CacheLineHandServiceImpl implements CacheLineHandService{ } if(!CollectionUtils.isEmpty(cacheLineVehilesSub)) { for(String vehileCode : cacheLineVehilesSub) { - ivtTab.insert(MapOf.of("create_time",DateUtil.now(),"vehmaterial_id", IdUtil.getStringId(), "vehicle_code", vehileCode, "vehicle_status", StatusEnum.CACHE_VEL_ERR.getCode(), "cacheline_code", cachelineCode, "err_type", StatusEnum.STATUS_TRUE.getCode())); + ivtTab.insert(MapOf.of("create_time", DateUtil.now(), "vehmaterial_id", IdUtil.getStringId(), "vehicle_code", vehileCode, "vehicle_status", StatusEnum.CACHE_VEL_ERR.getCode(), "cacheline_code", cachelineCode, "err_type", StatusEnum.STATUS_TRUE.getCode())); } } }, cachelineCode, 3); @@ -506,55 +511,39 @@ public class CacheLineHandServiceImpl implements CacheLineHandService{ String wcsdevice_code = param.getString("wcsdevice_code"); //出入箱类型 String inOut_type = param.getString("inOut_type"); - //任务表信息 - WQLObject instructTab = WQLObject.getWQLObject("sch_base_task"); + //返回结果 JSONArray result = new JSONArray(); + JSONObject params = new JSONObject(); + params.put("flag", "10"); + params.put("vehicle_code1", vehicle_code); + params.put("task_status", TaskStatusEnum.FINISHED.getCode()); // 入箱扫码异常 if(StatusEnum.IN_VEHICLE.getCode().equals(inOut_type)) { - String where = "point_code2 = '" + wcsdevice_code + "' and task_status <> '7'"; - if(StringUtils.isNotBlank(vehicle_code)) { - where = "point_code2 = '" + wcsdevice_code + "' and vehicle_code = '" + vehicle_code + "' and task_status <> '7'"; - } - JSONArray arr = instructTab.query(where).getResultJSONArray(0); - for(int i = 0; i < arr.size(); i++) { - JSONObject row = arr.getJSONObject(i); - JSONObject json = new JSONObject(); - json.put("instruct_uuid", row.getString("task_id")); - json.put("instructorder_no", row.getString("task_code")); - json.put("wcsdevice_code", row.getString("point_code2")); - json.put("vehicle_code", row.getString("vehicle_code")); - json.put("startpoint_code", row.getString("point_code1")); - json.put("nextpoint_code", row.getString("point_code2")); - json.put("nextpoint_code2", row.getString("point_code3")); - result.add(json); - } + params.put("point_code2", wcsdevice_code); } // 出箱扫码异常 if(StatusEnum.OUT_VEHICLE.getCode().equals(inOut_type)) { - String where = "point_code1 = '" + wcsdevice_code + "' and task_status <> '7'"; - if(StringUtils.isNotBlank(vehicle_code)) { - where = "point_code1 = '" + wcsdevice_code + "' and vehicle_code = '" + vehicle_code + "' and task_status <> '7'"; - } - JSONArray arr = instructTab.query(where).getResultJSONArray(0); - for(int i = 0; i < arr.size(); i++) { - JSONObject row = arr.getJSONObject(i); - JSONObject json = new JSONObject(); - json.put("instruct_uuid", row.getString("task_id")); - json.put("instructorder_no", row.getString("task_code")); - json.put("vehicle_code", row.getString("vehicle_code")); - json.put("wcsdevice_code", row.getString("point_code1")); - json.put("startpoint_code", row.getString("point_code1")); - json.put("nextpoint_code", row.getString("point_code2")); - json.put("nextpoint_code2", row.getString("point_code3")); - result.add(json); - } + params.put("point_code1", wcsdevice_code); + } + JSONArray array = WQL.getWO("PDA_QUERY").addParamMap(params).process().getResultJSONArray(0); + for(int i = 0; i < array.size(); i++) { + JSONObject row = array.getJSONObject(i); + JSONObject json = new JSONObject(); + json.put("instruct_uuid", row.getString("instruct_uuid")); + json.put("instructorder_no", row.getString("instructoperate_num")); + json.put("wcsdevice_code", row.getString("startpoint_code")); + json.put("vehicle_code", row.getString("vehicle_code")); + json.put("startpoint_code", row.getString("startpoint_code")); + json.put("nextpoint_code", row.getString("nextpoint_code")); + json.put("nextpoint_code2", row.getString("nextpoint_code2")); + result.add(json); } return result; } /** * 扫码异常确认 - * 出入类型 inOut_type 1 扫码异常-入箱扫码 2 扫码异常-出箱扫码 + * 出入类型 inOut_type 1 入箱扫码扫码异常-空箱在对接位上,对接位对应的类型位1, 2 出箱扫码异常-满箱在准备位上,需要传类型为2 * 缓存线编码 wcsdevice_code * 缓存线位置编码 position_code * 料箱码 vehicle_code @@ -567,21 +556,17 @@ public class CacheLineHandServiceImpl implements CacheLineHandService{ String inOut_type = param.getString("inOut_type"); // 缓存线编码 String wcsdevice_code = param.getString("wcsdevice_code"); - //缓存线点位 - String position_code = param.getString("position_code"); //载具编码 String vehicle_code = param.getString("vehicle_code"); // 封装给acs的数据 JSONArray jsonArray = new JSONArray(); JSONObject jsonObject = new JSONObject(); // 1 扫码异常-入箱扫码 2 出箱扫码 - jsonObject.put("inOut_type", inOut_type); + jsonObject.put("type", inOut_type); //缓存线编号 jsonObject.put("wcsdevice_code", wcsdevice_code); //料箱码 jsonObject.put("vehicle_code", vehicle_code); - //缓存线点位编码 - jsonObject.put("position_code", position_code); jsonArray.add(jsonObject); try { //TOFIX 等确定api后,换成下发的url @@ -639,7 +624,7 @@ public class CacheLineHandServiceImpl implements CacheLineHandService{ String wcsdevice_code = param.getString("wcsdevice_code"); String position_code = param.getString("position_code"); //根据缓存线编码和缓存线点位查找任务ID - JSONObject posiObj = WQLObject.getWQLObject("sch_cacheline_position").query("position_code like '%" + position_code + "%'" + " and cacheLine_code like '%" + wcsdevice_code + "%'").uniqueResult(0); + JSONObject posiObj = WQLObject.getWQLObject("sch_cacheline_position").query("cacheLine_code = '" + wcsdevice_code + "' and position_code = '" + position_code + "'").uniqueResult(0); //查不到点位信息 if(null == posiObj) { throw new BadRequestException("未找到该缓存线的点位信息!"); @@ -667,6 +652,7 @@ public class CacheLineHandServiceImpl implements CacheLineHandService{ @Override public CommonResult cacheLineOutBoxExceptionConfirm(JSONObject param) { String inOut_type = param.getString("inOut_type"); + inOut_type = "1"; String cacheLine_code = param.getString("wcsdevice_code"); String position_code = param.getString("position_code"); String vehicle_code = param.getString("vehicle_code"); @@ -718,6 +704,7 @@ public class CacheLineHandServiceImpl implements CacheLineHandService{ // 出满箱扫码异常 if(StatusEnum.OUT_VEHICLE.getCode().equals(inOut_type)) { //5.重新新建该缓存线位置上的料箱为空箱子,是空料箱没有放物料等其他信息 + //缓存线载具状态 1-空位、2-绿色空箱、3-黄色满箱、4-红色异常、5不显示 json.put("vehicle_status", StatusEnum.STATUS_TRUE.getCode()); json.put("material_id", ""); json.put("weight", "0"); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/wql/PDA_QUERY.wql b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/wql/PDA_QUERY.wql index 34f0cf41..803144ac 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/wql/PDA_QUERY.wql +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/wql/PDA_QUERY.wql @@ -22,9 +22,14 @@ 输入.start_point TYPEAS s_string 输入.end_point TYPEAS s_string 输入.start_date TYPEAS s_string - 输入.vehicle_code TYPEAS s_string + 输入.vehicle_code TYPEAS s_string + 输入.vehicle_code1 TYPEAS s_string 输入.end_date TYPEAS s_string 输入.task_id TYPEAS s_string + 输入.point_code1 TYPEAS s_string + 输入.point_code2 TYPEAS s_string + 输入.point_code3 TYPEAS s_string + 输入.task_status TYPEAS s_string @@ -88,7 +93,7 @@ IF 输入.flag = "3" QUERY SELECT - dict_id `value`, + value `value`, label text FROM sys_dict @@ -250,20 +255,32 @@ OPTION 输入.status <> "" find_in_set(task.task_status,输入.status) ENDOPTION + OPTION 输入.task_status <> "" + (task.task_status <> 输入.task_status) + ENDOPTION OPTION 输入.inst_num <> "" (task.task_code like CONCAT ('%', 输入.inst_num, '%')) ENDOPTION OPTION 输入.vehicle_code <> "" (task.vehicle_code like CONCAT ('%', 输入.vehicle_code, '%')) ENDOPTION - OPTION 输入.start_point <> "" - (task.point_code1 like CONCAT ('%', 输入.start_point, '%')) - ENDOPTION - OPTION 输入.task_id <> "" - (task.task_id = 输入.task_id ) + OPTION 输入.vehicle_code1 <> "" + (task.vehicle_code = 输入.vehicle_code1) ENDOPTION OPTION 输入.end_point <> "" - (task.point_code2 like CONCAT ('%', 输入.end_point, '%')) + (point2.point_name like CONCAT ('%', 输入.end_point, '%')) + ENDOPTION + OPTION 输入.point_code1 <> "" + (task.point_code1 = 输入.point_code1) + ENDOPTION + OPTION 输入.point_code2 <> "" + (task.point_code2 = 输入.point_code2) + ENDOPTION + OPTION 输入.point_code3 <> "" + (task.point_code3 = 输入.point_code3) + ENDOPTION + OPTION 输入.task_id <> "" + (task.task_id = 输入.task_id) ENDOPTION OPTION 输入.start_date <> "" task.create_time >= 输入.start_date diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SpeMachineryTask.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SpeMachineryTask.java index d6baea29..85f65fc5 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SpeMachineryTask.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SpeMachineryTask.java @@ -14,6 +14,7 @@ import org.nl.modules.system.util.CodeUtil; import org.nl.common.utils.SecurityUtils; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.wms.sch.manage.AbstractAcsTask; +import org.nl.wms.sch.manage.TaskStatusEnum; import org.springframework.stereotype.Service; @@ -51,46 +52,50 @@ public class SpeMachineryTask extends AbstractAcsTask { } } - - @Override - public String createTask(JSONObject form) { - String start_point_code = form.getString("start_point_code"); - String next_point_code = form.getString("next_point_code"); - String return_point_code = form.getString("return_point_code"); - String vehicle_code = form.getString("vehicle_code"); - String type = form.getString("type"); - if (StrUtil.isEmpty(start_point_code)) { - throw new BadRequestException("起点不能为空!"); - } - if (StrUtil.isEmpty(next_point_code)) { - throw new BadRequestException("终点不能为空!"); - } - String taskdtl_id = IdUtil.getSnowflake(1, 1).nextId() + ""; - JSONObject task = new JSONObject(); - task.put("task_id", taskdtl_id); - task.put("task_code", CodeUtil.getNewCode("TASK_CODE")); - task.put("task_type", type); - task.put("task_status", StatusEnum.TASK_CREATE.getCode()); - task.put("task_name", AcsTaskEnum.getType(type,"TASK_").getDesc()); - task.put("point_code1", start_point_code); - task.put("point_code2", next_point_code); - task.put("point_code3", return_point_code); - task.put("agv_system_type", AcsTaskEnum.AGV_SYSTEM_NB.getCode()); - task.put("vehicle_code", vehicle_code); - task.put("handle_class", this.getClass().getName()); - task.put("finished_type", "01"); - task.put("is_delete", "0"); - String currentUserId = SecurityUtils.getCurrentUserId(); - task.put("create_id", currentUserId); - task.put("create_name", SecurityUtils.getCurrentNickName()); - task.put("update_optid", currentUserId); - task.put("update_optname", SecurityUtils.getCurrentNickName()); - task.put("create_time", DateUtil.now()); - task.put("update_time", DateUtil.now()); - task.put("priority", "1"); - WQLObject.getWQLObject("SCH_BASE_Task").insert(task); - return taskdtl_id; - } + @Override + public String createTask(JSONObject form) { + String task_name = form.getString("task_name"); + String start_point_code = form.getString("point_code1"); + String next_point_code = form.getString("point_code2"); + String vehicle_code = form.getString("vehicle_code"); + String vehicle_code2 = form.getString("vehicle_code2"); + String material_id = form.getString("material_id"); + String type = form.getString("type"); + if(StrUtil.isEmpty(start_point_code)) { + throw new BadRequestException("起点不能为空!"); + } + if(StrUtil.isEmpty(next_point_code)) { + throw new BadRequestException("终点不能为空!"); + } + if(StrUtil.isEmpty(vehicle_code)) { + throw new BadRequestException("载具不能为空!"); + } + String taskdtl_id = IdUtil.getSnowflake(1, 1).nextId() + ""; + JSONObject task = new JSONObject(); + task.put("task_id", taskdtl_id); + task.put("task_name", task_name); + task.put("task_code", CodeUtil.getNewCode("TASK_CODE")); + task.put("task_type", type); + task.put("task_status", TaskStatusEnum.CREATED.getCode()); + task.put("point_code1", start_point_code); + task.put("point_code2", next_point_code); + task.put("vehicle_code2", vehicle_code2); + task.put("vehicle_code", vehicle_code); + task.put("material_id", material_id); + task.put("handle_class", this.getClass().getName()); + task.put("finished_type", "01"); + task.put("is_delete", "0"); + String currentUserId = SecurityUtils.getCurrentUserId(); + task.put("create_id", currentUserId); + task.put("create_name", SecurityUtils.getCurrentNickName()); + task.put("update_optid", currentUserId); + task.put("update_optname", SecurityUtils.getCurrentNickName()); + task.put("create_time", DateUtil.now()); + task.put("update_time", DateUtil.now()); + task.put("priority", "1"); + WQLObject.getWQLObject("SCH_BASE_Task").insert(task); + return taskdtl_id; + } @Override diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/wql/sch.xls b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/wql/sch.xls index c3cfb8fdbf922c8a56f8b29f5bd79f904142693c..8531d1b3deaeaad7526f856b859a4d9b98ef9cca 100644 GIT binary patch delta 46981 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 MU7oyihq0Icf5-MKdH?_b delta 46611 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 Vq^p6hS#-^&3u(Vv*Opm}{vYcqx(xsT