diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/GjxCallEmpVehicleTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/GjxCallEmpVehicleTask.java index 217556a..0ba30cc 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/GjxCallEmpVehicleTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/GjxCallEmpVehicleTask.java @@ -2,8 +2,10 @@ package org.nl.wms.sch.tasks.callEmpty; 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.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; @@ -13,9 +15,11 @@ import org.nl.modules.common.utils.SecurityUtils; import org.nl.modules.system.util.CodeUtil; import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; +import org.nl.wms.sch.SchTaskDto; import org.nl.wms.sch.manage.AbstractAcsTask; import org.nl.wms.sch.manage.TaskStatusEnum; import org.nl.wms.sch.tasks.AcsTaskDto; +import org.nl.wms.sch.tasks.RegionTypeEnum; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -42,6 +46,9 @@ public class GjxCallEmpVehicleTask extends AbstractAcsTask { if (StrUtil.equals(status, "0")) { // 取消删除任务 + if (StrUtil.equals(jsonTask.getString("task_status"), TaskStatusEnum.FINISHED.getCode())) { + throw new BadRequestException("已完成不能取消!"); + } taskTab.delete("task_id = '" + task_id + "'"); } @@ -54,47 +61,65 @@ public class GjxCallEmpVehicleTask extends AbstractAcsTask { } if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) { - // 更改任务状态为完成 + /* + * 更改任务状态为完成 + * 1.终点为叠盘架更新叠盘架数量、起点点位状态、等待位状态,更新任务组状态 + * 2.终点为供给线,更新起点载数量 + */ 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); - String end_point_code = jsonTask.getString("point_code2"); - String start_point_code = jsonTask.getString("point_code1"); - JSONObject endPoint = pointTab.query("point_code = '" + end_point_code + "'").uniqueResult(0); - //从空托盘缓存B区或养生A区搬运到叠盘架 - if (StrUtil.equals("DPJQB01", endPoint.getString("region_code"))) { - //解锁起点 - JSONObject startPoint = new JSONObject(); - startPoint.put("lock_type", "1"); - startPoint.put("point_status", "1"); - startPoint.put("update_time", DateUtil.now()); - pointTab.update(startPoint, "point_code = '" + start_point_code + "'"); - //更新终点点位状态 - endPoint.put("point_status", "2"); - endPoint.put("lock_type", "00"); - endPoint.put("vehicle_qty", jsonTask.getString("vehicle_qty")); - endPoint.put("vehicle_type", jsonTask.getString("vehicle_type")); - endPoint.put("update_time", DateUtil.now()); - pointTab.update(endPoint); - } else { - JSONObject startPoint = pointTab.query("point_code = '" + start_point_code + "'").uniqueResult(0); - Integer vehicle_qty = startPoint.getInteger("vehicle_qty"); - int after_qty = vehicle_qty - 1; - startPoint.put("lock_type", "1"); - startPoint.put("vehicle_qty", after_qty); - if (after_qty > 0) { - startPoint.put("point_status", "2"); - } else { - startPoint.put("point_status", "1"); + // 判断终点在哪里 + String point_code1 = jsonTask.getString("point_code1"); + String point_code2 = jsonTask.getString("point_code2"); + + JSONObject jsonEnd = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0); + // 终点在叠盘架 + if (StrUtil.equals(jsonEnd.getString("region_id"), RegionTypeEnum.DPJQB.getId())) { + // 更新起点点位状态 + JSONObject jsonStart = pointTab.query("point_code = '" + point_code1 + "'").uniqueResult(0); + // 判断此起点是否是等待点 + if (!StrUtil.equals(jsonStart.getString("row_num"), "9")) { + // 如果不是等待点更新等待点状态 + JSONObject jsonEmpWait = pointTab.query("region_id = '" + jsonStart.getString("region_id") + + "' and block_num = '" + jsonStart.getString("block_num") + + "' and col_num = '" + jsonStart.getString("col_num") + + "' and row_num = '9'").uniqueResult(0); + + jsonEmpWait.put("lock_type", "1"); + pointTab.update(jsonEmpWait); } - startPoint.put("update_time", DateUtil.now()); - pointTab.update(startPoint, "point_code = '" + start_point_code + "'"); + + jsonStart.put("point_status", "1"); + jsonStart.put("lock_type", "1"); + jsonStart.put("vehicle_type", ""); + jsonStart.put("vehicle_code", ""); + jsonStart.put("vehicle_qty", 0); + pointTab.update(jsonStart); + + // 更新终点(叠盘架状态) + jsonEnd.put("vehicle_qty", NumberUtil.add(jsonEnd.getString("vehicle_qty"),jsonTask.getString("vehicle_qty"))); + jsonEnd.put("lock_type", "1"); + pointTab.update(jsonEnd); + + // 更新任务组状态 + JSONObject jsonTask2 = taskTab.query("task_group_id = '" + jsonTask.getString("task_group_id") + "' and task_id <> '" + jsonTask.getString("task_id") + "'").uniqueResult(0); + jsonTask2.put("point_code1", jsonEnd.getString("point_code")); + jsonTask2.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); + taskTab.update(jsonTask2); + } else { + // 终点在油漆线: 更新起点(叠盘架)数量 + JSONObject jsonStart = pointTab.query("point_code = '" + point_code1 + "'").uniqueResult(0); + jsonStart.put("vehicle_qty",NumberUtil.sub(jsonStart.getString("vehicle_qty"),"1")); + jsonStart.put("lock_type", "1"); + pointTab.update(jsonStart); } } } + @Override public List addTask() { return null; @@ -102,8 +127,8 @@ public class GjxCallEmpVehicleTask extends AbstractAcsTask { @Override public void findStartPoint() { - WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); - WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); + WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); // 任务表 + WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); // 点位表 JSONArray taskArr = taskTab.query("is_delete = '0' and handle_class = '" + this.THIS_CLASS + "' and task_status = '" + TaskStatusEnum.SURE_END.getCode() + "'").getResultJSONArray(0); for (int i = 0; i < taskArr.size(); i++) { @@ -111,74 +136,119 @@ public class GjxCallEmpVehicleTask extends AbstractAcsTask { JSONObject jsonTask = taskArr.getJSONObject(i); String vehicle_type = jsonTask.getString("vehicle_type"); - //判断叠盘位是否有另外任务 - JSONObject taskObj = taskTab.query("is_delete='0' and handle_class='" + this.THIS_CLASS + "' and task_status <>'" + TaskStatusEnum.FINISHED.getCode() + "' and task_id <> " + jsonTask.getLong("task_id")).uniqueResult(0); - if (ObjectUtil.isNotEmpty(taskObj)) continue; + // 找叠盘架是否与对应的载具类型 + JSONObject jsonDpjStart = pointTab.query("region_id = '" + RegionTypeEnum.DPJQB.getId() + "' and can_vehicle_type = '" + vehicle_type + "' and lock_type = '1' and is_used = '1' and is_delete = '0' and vehicle_qty <> '0'").uniqueResult(0); - //判断叠盘架是否有载具 - JSONObject dpjPoint = pointTab.query("is_used ='1' and lock_type='00' and is_delete='0' and region_code='DPJQB01' and vehicle_qty >0 and can_vehicle_type like '%" + vehicle_type + "%'").uniqueResult(0); - if (ObjectUtil.isNotEmpty(dpjPoint)) { - jsonTask.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); - jsonTask.put("point_code1", dpjPoint.getString("point_code")); - jsonTask.put("update_time", DateUtil.now()); + if (ObjectUtil.isNotEmpty(jsonDpjStart)) { + // 判断叠盘架是否有任务 有就下一个任务 + boolean is_point = this.isTask(jsonDpjStart.getString("point_code")); + if (!is_point) continue; + + // 更新任务起点 + jsonTask.put("point_code1", jsonDpjStart.getString("point_code")); + jsonTask.put("task_status", TaskStatusEnum.START_AND_POINT); taskTab.update(jsonTask); - //锁住点位 - dpjPoint.put("lock_type", "2"); - pointTab.update(dpjPoint); } else { - //查找叠盘架编码 - JSONObject dpjPoint1 = pointTab.query("is_delete='0' and region_code='DPJQB01' and can_vehicle_type like '%" + vehicle_type + "%'").uniqueResult(0); + // 判断叠盘架载具数量是否是0 + JSONObject jsonDpjStart2 = pointTab.query("region_id = '" + RegionTypeEnum.DPJQB.getId() + "' and can_vehicle_type = '" + vehicle_type + "' and lock_type = '1' and is_used = '1' and is_delete = '0' and vehicle_qty = '0'").uniqueResult(0); + if (ObjectUtil.isEmpty(jsonDpjStart2)) continue; - //叠盘架无载具:1-判断是否有在执行中的堆叠任务,有则等堆叠任务完成以后再去,否则去去缓存位和养生A区找 - JSONObject ddTask = taskTab.query("is_delete='0' and point_code2 = '" + dpjPoint1.getString("point_code") + "'" + " and task_status <> '7' ").uniqueResult(0); - if (ObjectUtil.isNotEmpty(ddTask)) continue; + // 判断叠盘架是否有任务 + boolean is_point = this.isTask(jsonDpjStart2.getString("point_code")); + if (!is_point) continue; - //去缓存位和养生A区找,生成到叠盘架的任务 - JSONObject whereParam = new JSONObject(); - whereParam.put("flag", "1"); - whereParam.put("vehicle_type", '%' + jsonTask.getString("vehicle_type") + "%"); - JSONObject outJsonObj = WQL.getWO("QSCH_GjxCallEmpVehicleTask").addParamMap(whereParam).process().uniqueResult(0); + // 找叠盘架暂存位是否有空托盘 + JSONObject map = new JSONObject(); + map.put("flag", "1"); + map.put("vehicle_type", vehicle_type); - // 空托盘缓存货架或者养生A区------>叠盘架B区 - JSONObject param = new JSONObject(); - Long task_id = IdUtil.getSnowflake(1, 1).nextId(); - Long task_group_id = IdUtil.getSnowflake(1, 1).nextId(); - param.put("task_id", task_id); - param.put("task_code", CodeUtil.getNewCode("TASK_CODE")); - param.put("vehicle_type", vehicle_type); - param.put("priority", 100); - param.put("handle_class", THIS_CLASS); - param.put("task_type", "kzj"); - param.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); - param.put("task_group_id", task_group_id); - param.put("sort_seq", 1); - param.put("point_code1", outJsonObj.getString("point_code")); - param.put("point_code2", dpjPoint1.getString("point_code")); - param.put("create_name", SecurityUtils.getCurrentUsername()); - param.put("create_id", SecurityUtils.getCurrentUserId()); - param.put("create_time", DateUtil.now()); - taskTab.insert(param); + JSONObject jsonZcKtp = WQL.getWO("QSCH_GjxCallEmpVehicleTask").addParamMap(map).process().uniqueResult(0); + if (ObjectUtil.isNotEmpty(jsonZcKtp)) { + // 创建任务:空载具暂存位 --> 叠盘架 + SchTaskDto dto = SchTaskDto.builder() + .task_id(org.nl.wms.util.IdUtil.getLongId()) + .task_code(CodeUtil.getNewCode("TASK_CODE")) + .task_type("") + .task_status(TaskStatusEnum.START_AND_POINT.getCode()) + .point_code1(jsonZcKtp.getString("point_code")) + .point_code2(jsonDpjStart2.getString("point_code")) + .vehicle_code(jsonZcKtp.getString("vehicle_code")) + .vehicle_type(jsonZcKtp.getString("vehicle_type")) + .vehicle_qty(jsonZcKtp.getIntValue("vehicle_qty")) + .task_group_id(jsonTask.getLong("task_group_id")) + .handle_class(THIS_CLASS) + .create_time(DateUtil.now()) + .build(); + JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); + taskTab.insert(json); + // 锁定起点 + jsonZcKtp.put("lock_type", "2"); + pointTab.update(jsonZcKtp); + } else { + // 空托盘暂存区没有就到养生A区找: 先找到出库等待点 + JSONObject jsonEmpWait = pointTab.query("region_id = '" + RegionTypeEnum.YSAQKTPQ01.getId() + + "' and row_num = '9' and can_vehicle_type = '" + vehicle_type + + "' and is_used = '1' and is_delete = '0'").uniqueResult(0); + if (ObjectUtil.isEmpty(jsonEmpWait)) continue; - //锁住起点 - outJsonObj.put("lock_type", "2"); - pointTab.update(outJsonObj); - this.notifyAcs(String.valueOf(task_id)); + JSONObject jsonStartPoint = pointTab.query("region_id = '" + jsonEmpWait.getString("region_id") + + "' and block_num = '" + jsonEmpWait.getString("block_num") + + "' and col_num = '" + jsonEmpWait.getString("col_num") + + "' and point_status = '2' and lock_type = '1' order by out_empty_seq DESC").uniqueResult(0); + if (ObjectUtil.isEmpty(jsonStartPoint)) continue; - - jsonTask.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); - jsonTask.put("point_code1", outJsonObj.getString("point_code")); - jsonTask.put("sort_seq", 2); - jsonTask.put("task_group_id", task_group_id); - jsonTask.put("remark", "叠盘架无载具!"); - taskTab.update(jsonTask); - - //锁住点位 - dpjPoint1.put("lock_type", "2"); - pointTab.update(outJsonObj); + // 判断找到的空载具点位是否是等待点 + if (StrUtil.equals(jsonEmpWait.getString("point_code"),jsonStartPoint.getString("point_code"))) { + // 创建 养生A区空载具等待点 --> 叠盘架 + SchTaskDto dto = SchTaskDto.builder() + .task_id(org.nl.wms.util.IdUtil.getLongId()) + .task_code(CodeUtil.getNewCode("TASK_CODE")) + .task_type("") + .task_status(TaskStatusEnum.START_AND_POINT.getCode()) + .point_code1(jsonStartPoint.getString("point_code")) + .point_code2(jsonDpjStart2.getString("point_code")) + .vehicle_code(jsonStartPoint.getString("vehicle_code")) + .vehicle_type(jsonStartPoint.getString("vehicle_type")) + .vehicle_qty(jsonStartPoint.getIntValue("vehicle_qty")) + .task_group_id(jsonTask.getLong("task_group_id")) + .handle_class(THIS_CLASS) + .create_time(DateUtil.now()) + .build(); + JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); + taskTab.insert(json); + // 锁起点 + jsonStartPoint.put("lock_type", "2"); + pointTab.update(jsonStartPoint); + } else { + // 判断等待点是否是 未锁定、为空载具 + if (StrUtil.equals(jsonEmpWait.getString("lock_type"), "1") && StrUtil.equals(jsonEmpWait.getString("point_status"), "2")) { + // 创建 养生A区空载具 --> 叠盘架 + SchTaskDto dto = SchTaskDto.builder() + .task_id(org.nl.wms.util.IdUtil.getLongId()) + .task_code(CodeUtil.getNewCode("TASK_CODE")) + .task_type("") + .task_status(TaskStatusEnum.START_AND_POINT.getCode()) + .point_code1(jsonStartPoint.getString("point_code")) + .point_code2(jsonDpjStart2.getString("point_code")) + .vehicle_code(jsonStartPoint.getString("vehicle_code")) + .vehicle_type(jsonStartPoint.getString("vehicle_type")) + .vehicle_qty(jsonStartPoint.getIntValue("vehicle_qty")) + .task_group_id(jsonTask.getLong("task_group_id")) + .handle_class(THIS_CLASS) + .create_time(DateUtil.now()) + .build(); + JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); + taskTab.insert(json); + // 锁起点 + jsonStartPoint.put("lock_type", "2"); + pointTab.update(jsonStartPoint); + } else { + continue; + } + } + } } - - } } @@ -187,41 +257,40 @@ public class GjxCallEmpVehicleTask extends AbstractAcsTask { @Override @Transactional(rollbackFor = Exception.class) public String createTask(JSONObject form) { - WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); + /* + * 1.先生成确定终点的任务 + * 2.通过findStartPoint()找起点 + * 3.下发给ACS + */ + WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); // 任务表 + WQLObject workOrderTab = WQLObject.getWQLObject("PDM_BD_WorkOrder"); // 生产工单表 + WQLObject pointTab = WQLObject.getWQLObject("SCH_BASE_Point"); //点位基础表 - String end_point_code = form.getString("point_code2"); - String vehicle_type = form.getString("vehicle_type"); + String point_code2 = form.getString("point_code1"); - // 终点不能为空 - if (ObjectUtil.isEmpty(end_point_code)) { - throw new BadRequestException("终点不能为空"); - } else { - // 判断终点是否有正在执行的任务 - JSONObject beforTaskObj = taskTab.query("is_delete='0' and point_code2='" + end_point_code + "' and task_status <>'" + TaskStatusEnum.FINISHED.getCode() + "'").uniqueResult(0); - if (ObjectUtil.isNotEmpty(beforTaskObj)) - throw new BadRequestException("存在任务号为'" + beforTaskObj.getString("task_code") + "' 未完成!"); - } - // 创建任务 - JSONObject jsonTask = new JSONObject(); - Long task_id = IdUtil.getSnowflake(1, 1).nextId(); - jsonTask.put("task_id", task_id); - jsonTask.put("task_code", CodeUtil.getNewCode("TASK_CODE")); - jsonTask.put("handle_class", THIS_CLASS); - jsonTask.put("vehicle_type", vehicle_type); + String device_code = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0).getString("device_code"); - jsonTask.put("point_code2", end_point_code); - jsonTask.put("create_name", SecurityUtils.getCurrentUsername()); - jsonTask.put("create_id", SecurityUtils.getCurrentUserId()); - jsonTask.put("create_time", DateUtil.now()); + JSONObject workOrderObj = workOrderTab.query("device_code = '" + device_code + "' and order_status = '3' and is_delete ='0'").uniqueResult(0); + if (ObjectUtil.isEmpty(workOrderObj)) throw new BadRequestException("该设备当前未生产或者已删除"); - //见基础分类表的任务分类 - jsonTask.put("task_type", "gjxsqkp"); - jsonTask.put("task_status", TaskStatusEnum.SURE_END.getCode()); - jsonTask.put("point_code1", ""); - taskTab.insert(jsonTask); + SchTaskDto dto = SchTaskDto.builder().task_id(org.nl.wms.util.IdUtil.getLongId()) + .task_code(CodeUtil.getNewCode("TASK_CODE")) + .task_type("") + .task_status(TaskStatusEnum.SURE_END.getCode()) + .point_code2(point_code2) + .vehicle_code(form.getString("vehicle_code")) + .vehicle_type(workOrderObj.getString("vehicle_type")) + .vehicle_qty(form.getIntValue("qty")) + .task_group_id(org.nl.wms.util.IdUtil.getLongId()) + .handle_class(THIS_CLASS) + .create_time(DateUtil.now()) + .build(); + JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); + taskTab.insert(json); this.findStartPoint(); - return String.valueOf(task_id); +// this.immediateNotifyAcs(); + return String.valueOf(dto.getTask_id()); } @Override @@ -236,4 +305,28 @@ public class GjxCallEmpVehicleTask extends AbstractAcsTask { } + @Transactional(rollbackFor = Exception.class) + public boolean isTask(String point_code) { + /* + * 判断点位是否有任务存在 + */ + WQLObject tab = WQLObject.getWQLObject("SCH_BASE_Task"); + + boolean result; + + JSONObject jsonPointCode1 = tab.query("point_code1 = '" + point_code + "' and task_status <> '7' and is_delete = '0'").uniqueResult(0); + JSONObject jsonPointCode2 = tab.query("point_code2 = '" + point_code + "' and task_status <> '7' and is_delete = '0'").uniqueResult(0); + JSONObject jsonPointCode3 = tab.query("point_code3 = '" + point_code + "' and task_status <> '7' and is_delete = '0'").uniqueResult(0); + JSONObject jsonPointCode4 = tab.query("point_code4 = '" + point_code + "' and task_status <> '7' and is_delete = '0'").uniqueResult(0); + + if (ObjectUtil.isEmpty(jsonPointCode1) && ObjectUtil.isEmpty(jsonPointCode2) && ObjectUtil.isEmpty(jsonPointCode3) && ObjectUtil.isEmpty(jsonPointCode4)) { + result = true; + } else { + result = false; + } + + return result; + } + + } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/wql/QSCH_GjxCallEmpVehicleTask.wql b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/wql/QSCH_GjxCallEmpVehicleTask.wql index d8774b0..b76c2fb 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/wql/QSCH_GjxCallEmpVehicleTask.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/wql/QSCH_GjxCallEmpVehicleTask.wql @@ -14,9 +14,7 @@ ## 表字段对应输入参数 ################################################# 输入.flag TYPEAS s_string - 输入.vehicle_qty TYPEAS s_string - 输入.vehicle_type TYPEAS s_string - 输入.region_code TYPEAS s_string + 输入.vehicle_type TYPEAS s_string [临时表] --这边列出来的临时表就会在运行期动态创建 @@ -42,72 +40,21 @@ IF 输入.flag = "1" QUERY - SELECT - p.point_id, - p.point_code, - p.point_name - FROM - SCH_BASE_Point p - WHERE - p.is_used = '1' - AND p.is_delete = '0' - AND p.lock_type = '00' - AND p.point_status = '2' - and region_code in ('KTPHCQB01','YSQA01') + SELECT + * + FROM + SCH_BASE_Point + WHERE + is_used = '1' + AND is_delete = '0' + AND lock_type = '1' + AND point_status = '2' + AND region_code = 'KTPHCQB01' OPTION 输入.vehicle_type <> "" - p.vehicle_type like 输入.vehicle_type + can_vehicle_type = 输入.vehicle_type ENDOPTION - order by out_empty_seq,p.vehicle_qty - ENDSELECT ENDQUERY - ENDIF - - IF 输入.flag = "3" - 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 - - OPTION 输入.vehicle_type <> "" - point.vehicle_type = 输入.vehicle_type - ENDOPTION - - order by point.point_code 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 + ENDIF \ No newline at end of file