From 8b89c10e337d6801537254931cfba79a56c6c7fd Mon Sep 17 00:00:00 2001 From: ldj_willow Date: Wed, 19 Oct 2022 13:14:42 +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 --- .../nl/modules/system/domain/DictDetail.java | 9 +- .../system/rest/GenCodeController.java | 4 +- .../system/service/dto/DictDetailDto.java | 13 ++- .../service/impl/CodeDetailServiceImpl.java | 7 +- .../service/impl/GenCodeServiceImpl.java | 2 +- .../java/org/nl/modules/system/wql/sys.xls | Bin 223744 -> 226816 bytes .../acs/service/impl/AcsToWmsServiceImpl.java | 46 ++++----- .../org/nl/wms/ext/auto/AutoQueryTask.java | 8 +- .../org/nl/wms/ext/wql/AUTO_QUERYTASK.wql | 12 +-- .../nl/wms/sch/manage/AbstractAcsTask.java | 8 +- .../org/nl/wms/sch/rest/TaskController.java | 29 ------ .../org/nl/wms/sch/service/TaskService.java | 23 ----- .../org/nl/wms/sch/service/dto/TaskDto.java | 92 +++++++++++------- .../nl/wms/sch/service/dto/TaskQueryDto.java | 4 +- .../wms/sch/service/impl/TaskServiceImpl.java | 66 +------------ .../nl/wms/sch/tasks/CallEmpVehicleTask.java | 69 ++++++------- .../nl/wms/sch/tasks/CallMaterialTask.java | 30 +++--- .../nl/wms/sch/tasks/PointToPointTask.java | 12 +-- .../org/nl/wms/sch/tasks/RegionTypeEnum.java | 1 - .../nl/wms/sch/tasks/SendEmpVehicleTask.java | 36 +++---- .../nl/wms/sch/tasks/SendMaterialTask.java | 52 +++++----- .../java/org/nl/wms/sch/wql/QSCH_TASK_01.wql | 30 ++---- .../src/main/java/org/nl/wms/sch/wql/sch.xls | Bin 204288 -> 241152 bytes .../st/inbill/service/dto/RegionioDto.java | 2 +- .../service/impl/RegionioInServiceImpl.java | 12 +-- .../nl/wms/st/inbill/wql/ST_REGION_IN_01.wql | 10 +- .../service/impl/RegionioOutServiceImpl.java | 8 +- .../wms/st/outbill/wql/ST_REGION_OUT_01.wql | 10 +- .../src/views/system/dict/dictDetail.vue | 69 ++++++++++--- .../src/views/wms/sch/region/index.vue | 16 +-- .../src/views/wms/sch/task/index.vue | 82 +++++----------- 31 files changed, 341 insertions(+), 421 deletions(-) diff --git a/lms/nladmin-system/src/main/java/org/nl/modules/system/domain/DictDetail.java b/lms/nladmin-system/src/main/java/org/nl/modules/system/domain/DictDetail.java index e56d1d8..a0ec089 100644 --- a/lms/nladmin-system/src/main/java/org/nl/modules/system/domain/DictDetail.java +++ b/lms/nladmin-system/src/main/java/org/nl/modules/system/domain/DictDetail.java @@ -55,8 +55,15 @@ public class DictDetail extends BaseEntity implements Serializable { @ApiModelProperty(value = "字典值") private String value; + @ApiModelProperty(value = "参数1") + private String para1; + @ApiModelProperty(value = "参数2") + private String para2; + @ApiModelProperty(value = "参数3") + private String para3; + @ApiModelProperty(value = "排序") private Integer dictSort = 999; -} \ No newline at end of file +} diff --git a/lms/nladmin-system/src/main/java/org/nl/modules/system/rest/GenCodeController.java b/lms/nladmin-system/src/main/java/org/nl/modules/system/rest/GenCodeController.java index 39ea3e8..04c2c71 100644 --- a/lms/nladmin-system/src/main/java/org/nl/modules/system/rest/GenCodeController.java +++ b/lms/nladmin-system/src/main/java/org/nl/modules/system/rest/GenCodeController.java @@ -50,8 +50,8 @@ public class GenCodeController { return new ResponseEntity<>(HttpStatus.OK); } - @Log("修改字典") - @ApiOperation("修改字典") + @Log("修改编码") + @ApiOperation("修改编码") @PutMapping @SaCheckPermission("genCode:edit") public ResponseEntity update(@RequestBody JSONObject json) { diff --git a/lms/nladmin-system/src/main/java/org/nl/modules/system/service/dto/DictDetailDto.java b/lms/nladmin-system/src/main/java/org/nl/modules/system/service/dto/DictDetailDto.java index 44b85a4..85da61d 100644 --- a/lms/nladmin-system/src/main/java/org/nl/modules/system/service/dto/DictDetailDto.java +++ b/lms/nladmin-system/src/main/java/org/nl/modules/system/service/dto/DictDetailDto.java @@ -22,9 +22,9 @@ import org.nl.modules.common.base.BaseDTO; import java.io.Serializable; /** -* @author Zheng Jie -* @date 2019-04-10 -*/ + * @author Zheng Jie + * @date 2019-04-10 + */ @Getter @Setter public class DictDetailDto extends BaseDTO implements Serializable { @@ -36,6 +36,11 @@ public class DictDetailDto extends BaseDTO implements Serializable { private String label; private String value; + private String para1; + private String para2; + private String name; + + private String para3; private Integer dictSort; -} \ No newline at end of file +} diff --git a/lms/nladmin-system/src/main/java/org/nl/modules/system/service/impl/CodeDetailServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/modules/system/service/impl/CodeDetailServiceImpl.java index c933920..4074a79 100644 --- a/lms/nladmin-system/src/main/java/org/nl/modules/system/service/impl/CodeDetailServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/modules/system/service/impl/CodeDetailServiceImpl.java @@ -48,7 +48,9 @@ public class CodeDetailServiceImpl implements CodeDetailService { json.put("code_rule_id",dict.get("id")); json.put("is_active","1"); json.put("is_delete","0"); - json.put("create_by", SecurityUtils.getCurrentUsername()); + + json.put("create_id", SecurityUtils.getCurrentUserId()); + json.put("create_name", SecurityUtils.getCurrentNickName()); json.put("create_time", now); if(form.get("type").equals("02")){ Date date = DateUtil.date(); @@ -69,7 +71,8 @@ public class CodeDetailServiceImpl implements CodeDetailService { public void update(JSONObject json) { String now = DateUtil.now(); json.put("update_time",now); - json.put("update_by", SecurityUtils.getCurrentUsername()); + json.put("update_optid", SecurityUtils.getCurrentUserId()); + json.put("update_optname", SecurityUtils.getCurrentNickName()); WQLObject.getWQLObject("sys_code_rule_detail").update(json); } } diff --git a/lms/nladmin-system/src/main/java/org/nl/modules/system/service/impl/GenCodeServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/modules/system/service/impl/GenCodeServiceImpl.java index 49e47d6..dcc149b 100644 --- a/lms/nladmin-system/src/main/java/org/nl/modules/system/service/impl/GenCodeServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/modules/system/service/impl/GenCodeServiceImpl.java @@ -86,7 +86,7 @@ public class GenCodeServiceImpl implements GenCodeService { WQLObject wql = WQLObject.getWQLObject("sys_code_rule"); String code = json.getString("code"); String id = json.getString("id"); - JSONObject jo = wql.query("id<>'"+id+"code = '" + code + "'").uniqueResult(0); + JSONObject jo = wql.query("id <> '"+id+"' and code = '"+code+"'").uniqueResult(0); if (jo != null){ throw new BadRequestException("该编码code已存在,请校验!"); } diff --git a/lms/nladmin-system/src/main/java/org/nl/modules/system/wql/sys.xls b/lms/nladmin-system/src/main/java/org/nl/modules/system/wql/sys.xls index 448b8ca466c599447c37d8fcc5b0f8a5bec4a0fb..3c7566c75dcac8472cf11ae89b71442cae7cb4a8 100644 GIT binary patch delta 6849 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 Pnz_oiQfDR6S^WP4RH9!X diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java index 4804e28..f6f1827 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java @@ -176,7 +176,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { if (ObjectUtil.isEmpty(vehicle_num)) throw new BadRequestException("数量不能为空"); JSONObject param = new JSONObject(); - param.put("next_point_code", point_code); + param.put("point_code2", point_code); param.put("qty", vehicle_num); // 创建任务 CallEmpVehicleTask taskBean = SpringContextHolder.getBean(CallEmpVehicleTask.class); @@ -198,14 +198,14 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { throw new BadRequestException("物料数量不能为空或者为0"); JSONObject param = new JSONObject(); - param.put("start_point_code", point_code); // 满料位 + param.put("point_code1", point_code); // 满料位 SendMaterialTask taskBean = SpringContextHolder.getBean(SendMaterialTask.class); String task_id = taskBean.createTask(param); // 创建任务 JSONObject jsonTask = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0); // 插入区域出入库表 - param.put("next_point_code", jsonTask.getString("next_point_code")); + param.put("point_code2", jsonTask.getString("point_code2")); param.put("qty", qty); param.put("task_id", task_id); param.put("io_type", "0"); @@ -228,7 +228,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { if (ObjectUtil.isEmpty(vehicle_num)) throw new BadRequestException("数量不能为空"); JSONObject param = new JSONObject(); - param.put("next_point_code", point_code); + param.put("point_code2", point_code); param.put("qty", vehicle_num); // 创建任务 CallEmpVehicleTask taskBean = SpringContextHolder.getBean(CallEmpVehicleTask.class); @@ -244,7 +244,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { } else if (StrUtil.equals(type, "4")) { // 4.油漆线申请物料: 调用物料出库库处理类创建任务 JSONObject param = new JSONObject(); - param.put("next_point_code", point_code); + param.put("point_code2", point_code); param.put("io_type", "1"); // 插入区域出库单 JSONObject json = this.outCreateRegion(param); @@ -260,8 +260,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { JSONObject jsonTask = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0); // 回显出库单:起始点位、起始区域、任务id JSONObject jsonRegion = regionTab.query("iostorinv_id = '" + json.getString("iostorinv_id") + "'").uniqueResult(0); - jsonRegion.put("start_point_code", jsonTask.getString("start_point_code")); - Long start_region_id = SpringContextHolder.getBean(PointService.class).findByCode(jsonTask.getString("start_point_code")).getRegion_id(); + jsonRegion.put("point_code1", jsonTask.getString("point_code1")); + Long start_region_id = SpringContextHolder.getBean(PointService.class).findByCode(jsonTask.getString("point_code1")).getRegion_id(); jsonRegion.put("start_region_id", String.valueOf(start_region_id)); jsonRegion.put("task_id", Long.valueOf(task_id)); regionTab.update(jsonRegion); @@ -279,7 +279,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { if (ObjectUtil.isEmpty(vehicle_num)) throw new BadRequestException("数量不能为空"); JSONObject param = new JSONObject(); - param.put("start_point_code", point_code); + param.put("point_code1", point_code); param.put("qty", vehicle_num); // 创建任务 SendEmpVehicleTask taskBean = SpringContextHolder.getBean(SendEmpVehicleTask.class); @@ -309,7 +309,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { } param.put("qty", jsonVeQty.getString("qty")); - param.put("start_point_code", point_code); + param.put("point_code1", point_code); param.put("vehicle_code", vehicle_code); // 创建任务 SendEmpVehicleTask taskBean = SpringContextHolder.getBean(SendEmpVehicleTask.class); @@ -327,19 +327,19 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { } } else if (StrUtil.equals(type, "7")) { JSONObject param = new JSONObject(); - param.put("start_point_code", point_code); + param.put("point_code1", point_code); // 1.生成起点确定的任务 SpringContextHolder.getBean(PointToPointTask.class).createTask(param); } else if (StrUtil.equals(type, "8")) { // 8.豪凯自动线下料入库 JSONObject param = new JSONObject(); - param.put("start_point_code", point_code); + param.put("point_code1", point_code); SendMaterialTask taskBean = SpringContextHolder.getBean(SendMaterialTask.class); String task_id = taskBean.createTask(param); JSONObject jsonTask = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0); // 插入区域出入库表 - param.put("next_point_code", jsonTask.getString("next_point_code")); + param.put("point_code2", jsonTask.getString("point_code2")); if (ObjectUtil.isEmpty(qty)) { param.put("qty", "1"); // 为空先写死1 } else { @@ -367,8 +367,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { @LokiLog(type = LokiLogType.ACS_TO_LMS) @Transactional(rollbackFor = Exception.class) public JSONObject inCreateRegion(JSONObject json) { - String start_point_code = json.getString("start_point_code"); - String next_point_code = json.getString("next_point_code"); + String point_code1 = json.getString("point_code1"); + String point_code2 = json.getString("point_code2"); String qty = json.getString("qty"); Long task_id = json.getLongValue("task_id"); String io_type = json.getString("io_type"); @@ -384,7 +384,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { jsonRegion.put("io_type", io_type); jsonRegion.put("bill_status", "20"); // 根据起点点位找到起点设备,根据设备找到对应工单, 根据工单找到对应物料及托盘类型 - String device_code = start_point_code.substring(0, start_point_code.indexOf("_")); + String device_code = point_code1.substring(0, point_code1.indexOf("_")); DeviceService deviceBean = SpringContextHolder.getBean(DeviceService.class); DeviceDto deviceDto = deviceBean.findByCode(device_code); @@ -397,11 +397,11 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { JSONObject jsonMater = materTab.query("material_id ='" + jsonOrder.getString("material_id") + "'").uniqueResult(0); jsonRegion.put("qty_unit_id", jsonMater.getString("base_unit_id")); - jsonRegion.put("start_point_code", start_point_code); - Long start_region_id = SpringContextHolder.getBean(PointService.class).findByCode(start_point_code).getRegion_id(); + jsonRegion.put("point_code1", point_code1); + Long start_region_id = SpringContextHolder.getBean(PointService.class).findByCode(point_code1).getRegion_id(); jsonRegion.put("start_region_id", String.valueOf(start_region_id)); - jsonRegion.put("end_point_code", next_point_code); - Long end_region_id = SpringContextHolder.getBean(PointService.class).findByCode(next_point_code).getRegion_id(); + jsonRegion.put("end_point_code", point_code2); + Long end_region_id = SpringContextHolder.getBean(PointService.class).findByCode(point_code2).getRegion_id(); jsonRegion.put("end_region_id", String.valueOf(end_region_id)); jsonRegion.put("create_mode", "02"); @@ -420,7 +420,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { @Transactional(rollbackFor = Exception.class) public JSONObject outCreateRegion(JSONObject json) { - String next_point_code = json.getString("next_point_code"); + String point_code2 = json.getString("point_code2"); String io_type = json.getString("io_type"); WQLObject regionTab = WQLObject.getWQLObject("SCH_IVT_regionIO"); @@ -433,7 +433,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { jsonRegion.put("io_type", io_type); jsonRegion.put("bill_status", "20"); // 根据起点点位找到起点设备,根据设备找到对应工单, 根据工单找到对应物料及托盘类型 - String device_code = next_point_code.substring(0, next_point_code.indexOf("_")); + String device_code = point_code2.substring(0, point_code2.indexOf("_")); DeviceService deviceBean = SpringContextHolder.getBean(DeviceService.class); DeviceDto deviceDto = deviceBean.findByCode(device_code); @@ -446,8 +446,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { JSONObject jsonMater = materTab.query("material_id ='" + jsonOrder.getString("material_id") + "'").uniqueResult(0); jsonRegion.put("qty_unit_id", jsonMater.getString("base_unit_id")); - jsonRegion.put("end_point_code", next_point_code); - Long end_region_id = SpringContextHolder.getBean(PointService.class).findByCode(next_point_code).getRegion_id(); + jsonRegion.put("end_point_code", point_code2); + Long end_region_id = SpringContextHolder.getBean(PointService.class).findByCode(point_code2).getRegion_id(); jsonRegion.put("end_region_id", String.valueOf(end_region_id)); jsonRegion.put("create_mode", "02"); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/auto/AutoQueryTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/auto/AutoQueryTask.java index e47c5f1..63ef726 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/auto/AutoQueryTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/auto/AutoQueryTask.java @@ -89,7 +89,7 @@ public class AutoQueryTask { if (StrUtil.equals(jsonPointAfter.getString("SSX01A1"), "0") && StrUtil.equals(jsonPointAfter.getString("SSX01A2"), "0")) { // 4.2如果都是空位 则判断是否有正在进行的任务 map.put("flag", "2"); - map.put("start_point_code", "('SSX01A1','SSX01A2')"); + map.put("point_code1", "('SSX01A1','SSX01A2')"); // 查找起点是否有任务 JSONArray is_stara = WQL.getWO("AUTO_QUERYTASK").addParamMap(map).process().getResultJSONArray(0); // 查询终点是否有任务 @@ -99,7 +99,7 @@ public class AutoQueryTask { if (ObjectUtil.isEmpty(is_stara) && ObjectUtil.isEmpty(is_end)) { // 4.3.更新任务终点点位 - jsonTask.put("next_point_code", "SSX01A1"); + jsonTask.put("point_code2", "SSX01A1"); taskTab.update(jsonTask); // 4.4.下发ACS JSONObject jsonResultAcs = pointTaskBean.renotifyAcs(jsonTask.getString("task_id")); @@ -113,7 +113,7 @@ public class AutoQueryTask { } else if (StrUtil.equals(jsonPointAfter.getString("SSX02A1"), "0") && StrUtil.equals(jsonPointAfter.getString("SSX02A2"), "0")) { // 5.2如果都是空位 则判断是否有正在进行的任务 map.put("flag", "2"); - map.put("start_point_code", "('SSX02A1','SSX02A2')"); + map.put("point_code1", "('SSX02A1','SSX02A2')"); // 查找起点是否有任务 JSONArray is_stara2 = WQL.getWO("AUTO_QUERYTASK").addParamMap(map).process().getResultJSONArray(0); // 查询终点是否有任务 @@ -123,7 +123,7 @@ public class AutoQueryTask { if (ObjectUtil.isEmpty(is_stara2) && ObjectUtil.isEmpty(is_end2)) { // 5.3.更新任务终点点位 - jsonTask.put("next_point_code", "SSX02A1"); + jsonTask.put("point_code2", "SSX02A1"); taskTab.update(jsonTask); // 5.4.下发ACS JSONObject jsonResultAcs = pointTaskBean.renotifyAcs(jsonTask.getString("task_id")); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/wql/AUTO_QUERYTASK.wql b/lms/nladmin-system/src/main/java/org/nl/wms/ext/wql/AUTO_QUERYTASK.wql index 511960f..b667a46 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/wql/AUTO_QUERYTASK.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/wql/AUTO_QUERYTASK.wql @@ -14,7 +14,7 @@ ## 表字段对应输入参数 ################################################# 输入.flag TYPEAS s_string - 输入.start_point_code TYPEAS f_string + 输入.point_code1 TYPEAS f_string 输入.end_point_code TYPEAS f_string @@ -49,7 +49,7 @@ WHERE task.is_delete = '0' AND task.task_status = '01' - AND task.start_point_code in ('YQX01_WX','YQX02_WX') + AND task.point_code1 in ('YQX01_WX','YQX02_WX') ENDSELECT ENDQUERY @@ -65,8 +65,8 @@ task.is_delete = '0' AND task.task_status <> '99' - OPTION 输入.start_point_code <> "" - task.start_point_code in 输入.start_point_code + OPTION 输入.point_code1 <> "" + task.point_code1 in 输入.point_code1 ENDOPTION ENDSELECT @@ -84,9 +84,9 @@ AND task.task_status <> '99' OPTION 输入.end_point_code <> "" - task.next_point_code in 输入.end_point_code + task.point_code2 in 输入.end_point_code ENDOPTION ENDSELECT ENDQUERY - ENDIF \ No newline at end of file + ENDIF diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AbstractAcsTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AbstractAcsTask.java index feec00d..aa7843a 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AbstractAcsTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AbstractAcsTask.java @@ -52,8 +52,8 @@ public abstract class AbstractAcsTask { taskDto.setTask_code(json.getString("task_code")); taskDto.setTask_type("1"); taskDto.setRoute_plan_code("normal"); - taskDto.setStart_device_code(json.getString("start_point_code")); - taskDto.setNext_device_code(json.getString("next_point_code")); + taskDto.setStart_device_code(json.getString("point_code1")); + taskDto.setNext_device_code(json.getString("point_code2")); taskDto.setVehicle_code(json.getString("vehicle_code")); arr.add(taskDto); } @@ -116,8 +116,8 @@ public abstract class AbstractAcsTask { AcsTaskDto taskDto = new AcsTaskDto(); taskDto.setTask_id(json.getString("task_id")); taskDto.setTask_code(json.getString("task_code")); - taskDto.setStart_device_code(json.getString("start_point_code")); - taskDto.setNext_device_code(json.getString("next_point_code")); + taskDto.setStart_device_code(json.getString("point_code1")); + taskDto.setNext_device_code(json.getString("point_code2")); taskDto.setPriority("1"); taskDto.setVehicle_code(json.getString("vehicle_code")); taskDto.setTask_type("1"); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/rest/TaskController.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/rest/TaskController.java index 18bc0e2..037a66a 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/rest/TaskController.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/rest/TaskController.java @@ -12,12 +12,10 @@ import org.nl.modules.logging.annotation.Log; import org.nl.wms.sch.manage.FinishTypeEnum; import org.nl.wms.sch.manage.TaskStatusEnum; import org.nl.wms.sch.service.TaskService; -import org.nl.wms.sch.service.dto.TaskDto; import org.nl.wms.sch.tasks.TaskTypeEnum; 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; @@ -43,33 +41,6 @@ public class TaskController { return new ResponseEntity<>(taskService.queryAll(whereJson, page), HttpStatus.OK); } - @PostMapping - @Log("新增任务") - @ApiOperation("新增任务") - //@SaCheckPermission("task:add") - public ResponseEntity create(@Validated @RequestBody TaskDto dto) { - taskService.create(dto); - return new ResponseEntity<>(HttpStatus.CREATED); - } - - @PutMapping - @Log("修改任务") - @ApiOperation("修改任务") - //@SaCheckPermission("task:edit") - public ResponseEntity update(@Validated @RequestBody TaskDto dto) { - taskService.update(dto); - return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } - - @Log("删除任务") - @ApiOperation("删除任务") - //@SaCheckPermission("task:del") - @DeleteMapping - public ResponseEntity delete(@RequestBody String[] ids) { - taskService.deleteAll(ids); - return new ResponseEntity<>(HttpStatus.OK); - } - @GetMapping("/taskStatus") @Log("获取任务状态列表") @ApiOperation("获取任务状态列表") diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/TaskService.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/TaskService.java index 9411895..6c96254 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/TaskService.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/TaskService.java @@ -55,29 +55,6 @@ public interface TaskService { */ TaskDto findByCode(String code); - - /** - * 创建 - * - * @param dto / - */ - void create(TaskDto dto); - - /** - * 编辑 - * - * @param dto / - */ - void update(TaskDto dto); - - - /** - * 多选删除 - * - * @param ids / - */ - void deleteAll(String[] ids); - /** * 任务操作 * diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/dto/TaskDto.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/dto/TaskDto.java index de4d68b..50b0e79 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/dto/TaskDto.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/dto/TaskDto.java @@ -5,44 +5,90 @@ import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import java.io.Serializable; +import java.math.BigDecimal; /** * @description / * @author ldjun - * @date 2021-12-23 + * @date 2022-10-19 **/ @Data public class TaskDto implements Serializable { + + /** 任务标识 */ + /** 防止精度丢失 */ + @JsonSerialize(using= ToStringSerializer.class) + private Long task_id; + /** 任务编码 */ private String task_code; /** 任务类型 */ - private String task_type; + private Long task_type; - /** 任务明细类型 */ - private String taskdtl_type; - - /** 指令状态 */ + /** 任务状态 */ private String task_status; - /** 起始点位 */ - private String start_point_code; + /** 点位1 */ + private String point_code1; - /** 下一点位 */ - private String next_point_code; + /** 点位2 */ + private String point_code2; + + /** 点位3 */ + private String point_code3; + + /** 点位4 */ + private String point_code4; + + /** 物料标识 */ + private Long material_id; + + /** 载具类型 */ + private String vehicle_type; + + /** 载具数量 */ + private BigDecimal vehicle_qty; /** 载具编码 */ private String vehicle_code; + /** 优先级 */ + private String priority; + /** 处理类 */ private String handle_class; + /** 任务组标识 */ + private Long task_group_id; + + /** 任务顺序号 */ + private BigDecimal sort_seq; + /** 任务完成类型 */ private String finished_type; + /** acs任务类型 */ + private String acs_task_type; + + /** 业务表表名 */ + private String table_name; + + /** 业务表表名主键字段 */ + private String table_fk; + + /** 业务表表名主键值 */ + private Long table_fk_id; + /** 备注 */ private String remark; + /** 备注1 */ + private String remark2; + + /** 备注2 */ + private String remark3; + /** 是否删除 */ private String is_delete; @@ -51,30 +97,4 @@ public class TaskDto implements Serializable { /** 修改时间 */ private String update_time; - - /** 任务明细标识 */ - /** 防止精度丢失 */ - @JsonSerialize(using= ToStringSerializer.class) - private Long taskdtl_id; - - /** 任务标识 */ - private Long task_id; - - /** 物料编码 */ - private String material_code; - - /** 车号 */ - private String car_no; - - /** 创建人 */ - private Long create_id; - - /** 创建人姓名 */ - private String create_name; - - /** 修改人 */ - private Long update_optid; - - /** 修改人姓名 */ - private String update_optname; } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/dto/TaskQueryDto.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/dto/TaskQueryDto.java index b274de8..d357d4f 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/dto/TaskQueryDto.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/dto/TaskQueryDto.java @@ -36,12 +36,12 @@ public class TaskQueryDto implements Serializable { /** * 起始点位 */ - private String start_point_code; + private String point_code1; /** * 下一点位 */ - private String next_point_code; + private String point_code2; /** * 载具编码 diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/TaskServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/TaskServiceImpl.java index 12659e1..2f2ca62 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/TaskServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/TaskServiceImpl.java @@ -2,9 +2,7 @@ package org.nl.wms.sch.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 cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; @@ -12,19 +10,14 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; - - import org.nl.modules.common.exception.BadRequestException; -import org.nl.modules.common.utils.SecurityUtils; import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.util.WqlUtil; import org.nl.wms.sch.service.TaskService; import org.nl.wms.sch.service.dto.TaskDto; - import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; @@ -63,11 +56,11 @@ public class TaskServiceImpl implements TaskService { if (StrUtil.isNotEmpty(whereJson.getString("task_code"))) { map.put("task_code", "%" + whereJson.getString("task_code") + "%"); } - if (StrUtil.isNotEmpty(whereJson.getString("start_point_code"))) { - map.put("start_point_code", "%" + whereJson.getString("start_point_code") + "%"); + if (StrUtil.isNotEmpty(whereJson.getString("point_code1"))) { + map.put("point_code1", "%" + whereJson.getString("point_code1") + "%"); } - if (StrUtil.isNotEmpty(whereJson.getString("next_point_code"))) { - map.put("next_point_code", "%" + whereJson.getString("next_point_code") + "%"); + if (StrUtil.isNotEmpty(whereJson.getString("point_code2"))) { + map.put("point_code2", "%" + whereJson.getString("point_code2") + "%"); } if (StrUtil.isNotEmpty(whereJson.getString("vehicle_code"))) { map.put("vehicle_code", "%" + whereJson.getString("vehicle_code") + "%"); @@ -123,57 +116,6 @@ public class TaskServiceImpl implements TaskService { return obj; } - @Override - @Transactional(rollbackFor = Exception.class) - public void create(TaskDto dto) { - Long currentUserId = SecurityUtils.getCurrentUserId(); - String nickName = SecurityUtils.getCurrentNickName(); - String now = DateUtil.now(); - - - dto.setTaskdtl_id(IdUtil.getSnowflake(1, 1).nextId()); - dto.setTask_id(dto.getTaskdtl_id()); - dto.setCreate_id(currentUserId); - dto.setCreate_name(nickName); - dto.setUpdate_optid(currentUserId); - dto.setUpdate_optname(nickName); - dto.setUpdate_time(now); - dto.setCreate_time(now); - - WQLObject wo = WQLObject.getWQLObject("sch_base_task"); - JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); - wo.insert(json); - } - - - @Override - @Transactional(rollbackFor = Exception.class) - public void update(TaskDto dto) { - TaskDto entity = this.findById(dto.getTask_id() + ""); - if (entity == null) throw new BadRequestException("被删除或无权限,操作失败!"); - - Long currentUserId = SecurityUtils.getCurrentUserId(); - String nickName = SecurityUtils.getCurrentNickName(); - - String now = DateUtil.now(); - dto.setUpdate_time(now); - dto.setUpdate_optid(currentUserId); - dto.setUpdate_optname(nickName); - - WQLObject wo = WQLObject.getWQLObject("sch_base_task"); - JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); - wo.update(json); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void deleteAll(String[] ids) { - WQLObject wo = WQLObject.getWQLObject("sch_base_task"); - for (String taskdtl_id : ids) { - wo.delete("taskdtl_id = '" + taskdtl_id + "'"); - } - } - @Override public void operation(Map map) { String task_id = MapUtil.getStr(map, "task_id"); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CallEmpVehicleTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CallEmpVehicleTask.java index 02f5ae9..4c08df5 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CallEmpVehicleTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CallEmpVehicleTask.java @@ -69,23 +69,23 @@ public class CallEmpVehicleTask extends AbstractAcsTask { 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 point_code1 = point.findByCode(jsonTask.getString("point_code1")); + if (ObjectUtil.isEmpty(point_code1)) throw new BadRequestException("未找到可用点位:" + point_code1); // 校验终点是否存在 - PointDto next_point_code = point.findByCode(jsonTask.getString("next_point_code")); - if (ObjectUtil.isEmpty(start_point_code)) throw new BadRequestException("未找到可用点位:" + next_point_code); + PointDto point_code2 = point.findByCode(jsonTask.getString("point_code2")); + if (ObjectUtil.isEmpty(point_code1)) throw new BadRequestException("未找到可用点位:" + point_code2); // 1.更新点位数量 2.解锁点位 - int vehicle_qty = JSONObject.parseObject(JSON.toJSONString(start_point_code)).getIntValue("vehicle_qty"); + int vehicle_qty = JSONObject.parseObject(JSON.toJSONString(point_code1)).getIntValue("vehicle_qty"); BigDecimal vehicle_qty_point = NumberUtil.sub(String.valueOf(vehicle_qty), String.valueOf(1)); - start_point_code.setVehicle_qty(Integer.valueOf(vehicle_qty_point.toString())); + point_code1.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.setVehicle_type(""); + point_code1.setPoint_status("00"); + point_code1.setVehicle_type(""); } - start_point_code.setLock_type("00"); - pointTab.update(JSONObject.parseObject(JSON.toJSONString(start_point_code))); + point_code1.setLock_type("00"); + pointTab.update(JSONObject.parseObject(JSON.toJSONString(point_code1))); } } @@ -105,17 +105,17 @@ public class CallEmpVehicleTask extends AbstractAcsTask { WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); 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 point_code1 = form.getString("point_code1"); + String point_code2 = form.getString("point_code2"); String qty = form.getString("qty"); String vehicle_type = form.getString("vehicle_type"); // 出库终点不能为空 - if (ObjectUtil.isEmpty(next_point_code)) { + if (ObjectUtil.isEmpty(point_code2)) { 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); + JSONObject beforTaskObj = taskTab.query("is_delete='0' and point_code2='" + point_code2 + "' and task_status <>'" + TaskStatusEnum.FINISHED.getCode() + "'").uniqueResult(0); if (ObjectUtil.isNotEmpty(beforTaskObj)) throw new BadRequestException("存在任务号为'" + beforTaskObj.getString("task_code") + "' 未完成!"); } // 载具数量不能为空 @@ -126,16 +126,16 @@ public class CallEmpVehicleTask extends AbstractAcsTask { * 2. 终点确定: 需要找到对应起点,在创建任务 具体找起点货位的规则在findBeginPoint()中 */ // 终点确定:找起点 - if (ObjectUtil.isEmpty(start_point_code)) { + if (ObjectUtil.isEmpty(point_code1)) { JSONObject param = new JSONObject(); - param.put("next_point_code",next_point_code); + param.put("point_code2",point_code2); param.put("vehicle_qty",qty); JSONObject json = this.findBeginPoint(param); - start_point_code = json.getString("start_point_code"); + point_code1 = json.getString("point_code1"); vehicle_type = json.getString("vehicle_type"); } 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); + JSONObject jsonPoint = pointTab.query("point_code = '" + point_code1 + "' 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("起点点位不可用或不存在"); } // 创建任务 @@ -148,8 +148,8 @@ public class CallEmpVehicleTask extends AbstractAcsTask { 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("point_code1", point_code1); + jsonTask.put("point_code2", point_code2); jsonTask.put("handle_class", THIS_CLASS); jsonTask.put("vehicle_type", vehicle_type); jsonTask.put("create_name", SecurityUtils.getCurrentUsername()); @@ -159,7 +159,7 @@ public class CallEmpVehicleTask extends AbstractAcsTask { taskTab.insert(jsonTask); // 锁定起点点位 - JSONObject jsonPoint = pointTab.query("point_code = '" + start_point_code + "'").uniqueResult(0); + JSONObject jsonPoint = pointTab.query("point_code = '" + point_code1 + "'").uniqueResult(0); jsonPoint.put("lock_type", "02"); pointTab.update(jsonPoint); @@ -185,21 +185,21 @@ public class CallEmpVehicleTask extends AbstractAcsTask { @Transactional(rollbackFor = Exception.class) public JSONObject findBeginPoint(JSONObject json) { - String next_point_code = json.getString("next_point_code"); + String point_code2 = json.getString("point_code2"); String vehicle_qty = json.getString("vehicle_qty"); - if (ObjectUtil.isEmpty(next_point_code)) throw new BadRequestException("终点不能为空"); + if (ObjectUtil.isEmpty(point_code2)) 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"); WQLObject orderTab = WQLObject.getWQLObject("PDM_BD_WorkOrder"); // 根据终点区域判断优先的起点区域 - JSONObject jsonPointEnd = pointTab.query("point_code = '" + next_point_code + "'").uniqueResult(0); + JSONObject jsonPointEnd = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0); if (ObjectUtil.isEmpty(jsonPointEnd)) throw new BadRequestException("终点点位不存在"); JSONObject jsonRegionEnd = regionTab.query("region_id ='" + jsonPointEnd.getString("region_id") + "'").uniqueResult(0); // 根据起点找到对应设备,根据设备查询工单表中 - 正在运行的工单中的载具类型 - String device_code = next_point_code.substring(0, next_point_code.indexOf("_")); + String device_code = point_code2.substring(0, point_code2.indexOf("_")); DeviceService deviceBean = SpringContextHolder.getBean(DeviceService.class); DeviceDto deviceDto = deviceBean.findByCode(device_code); @@ -211,7 +211,7 @@ public class CallEmpVehicleTask extends AbstractAcsTask { * 1.叠盘架B区、养生A区 --> 共挤线 (优先级:1叠盘架B区 2养生A区) * 2.叠盘架A区、养生A区 --> 油漆线 (优先级:1叠盘架A区 2养生A区) */ - String start_point_code = ""; + String point_code1 = ""; JSONObject map = new JSONObject(); if (StrUtil.equals(jsonRegionEnd.getString("region_code"),RegionTypeEnum.GJQY.getCode())) { // 共挤线呼叫空托盘业务:查找叠盘架B区是否有满足条件的点位 @@ -221,7 +221,7 @@ public class CallEmpVehicleTask extends AbstractAcsTask { 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"); + point_code1 = jsonStartPointDPB.getString("point_code"); } else { // 为空说明叠盘架B区没有,则去养生A区找 : 只能找数量为1的空托盘 map.put("flag", "3"); @@ -229,7 +229,7 @@ public class CallEmpVehicleTask extends AbstractAcsTask { JSONObject jsonStartPointYSA = WQL.getWO("ST_VEHICLE_OUT_02").addParamMap(map).process().uniqueResult(0); if (ObjectUtil.isNotEmpty(jsonStartPointYSA)) { - start_point_code = jsonStartPointYSA.getString("point_code"); + point_code1 = jsonStartPointYSA.getString("point_code"); } else { throw new BadRequestException("没有满足需求数量的点位"); /* // 如果没有则需要从养生区A区里找到 > 1的货位 出库到叠盘架B中 @@ -243,17 +243,18 @@ public class CallEmpVehicleTask extends AbstractAcsTask { if (ObjectUtil.isEmpty(jsonEnd)) throw new BadRequestException("叠盘架B货位不足"); JSONObject parem = new JSONObject(); - parem.put("start_point_code",jsonStart.getString("point_code")); - parem.put("next_point_code",jsonEnd.getString("point_code")); + parem.put("point_code1",jsonStart.getString("point_code")); + parem.put("point_code2",jsonEnd.getString("point_code")); parem.put("qty",jsonStart.getString("vehicle_qty")); parem.put("vehicle_type",jsonStart.getString("vehicle_qty")); String task_id = this.createTask(parem); // 生成 叠盘架 -> 共挤线的任务 返回叠盘架B的点位code - start_point_code = jsonEnd.getString("point_code");*/ + point_code1 = jsonEnd.getString("point_code");*/ } } + } else if (StrUtil.equals(jsonRegionEnd.getString("region_code"),RegionTypeEnum.YQQY.getCode())) { // 油漆线呼叫空托盘业务:查找叠盘架A区是否有满足条件的点位 map.put("flag", "1"); @@ -262,18 +263,18 @@ public class CallEmpVehicleTask extends AbstractAcsTask { 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"); + point_code1 = jsonStartPointDPA.getString("point_code"); } else { // 为空说明叠盘架A区没有,则去养生A区找 map.put("flag", "3"); 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"); + point_code1 = jsonStartPointYSA.getString("point_code"); } } JSONObject resuft = new JSONObject(); - resuft.put("start_point_code",start_point_code); + resuft.put("point_code1",point_code1); resuft.put("vehicle_type",jsonOrder.getString("vehicle_type")); return resuft; } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CallMaterialTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CallMaterialTask.java index 0e21aa6..5b10edd 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CallMaterialTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CallMaterialTask.java @@ -75,7 +75,7 @@ public class CallMaterialTask extends AbstractAcsTask { //解锁仓位,托盘信息,回写到点位上去 WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); - JSONObject startPointObj = pointTab.query("point_code='" + jsonTask.getString("start_point_code") + "'").uniqueResult(0); + JSONObject startPointObj = pointTab.query("point_code='" + jsonTask.getString("point_code1") + "'").uniqueResult(0); startPointObj.put("lock_type", "00"); startPointObj.put("point_status", "00"); startPointObj.put("vehicle_code", ""); @@ -110,7 +110,7 @@ public class CallMaterialTask extends AbstractAcsTask { } //修改单据状态,将终点填入 IosObj.put("bill_status", "20"); - IosObj.put("start_point_code", inStructObj.getString("struct_code")); + IosObj.put("point_code1", inStructObj.getString("struct_code")); ProcedureIOStable.update(IosObj); //终点加锁 HashMap lock_map = new HashMap(); @@ -136,8 +136,8 @@ public class CallMaterialTask extends AbstractAcsTask { public String createTask(JSONObject form) { //请求参数 载具、起点、终点 String vehicle_code = form.getString("vehicle_code"); - String start_point_code = form.getString("start_point_code"); - String next_point_code = form.getString("next_point_code"); + String point_code1 = form.getString("point_code1"); + String point_code2 = form.getString("point_code2"); String vehicle_type = form.getString("vehicle_type"); String task_status = TaskStatusEnum.START_AND_POINT.getCode(); @@ -148,7 +148,7 @@ public class CallMaterialTask extends AbstractAcsTask { WQLObject taskTable = WQLObject.getWQLObject("SCH_BASE_Task"); WQLObject regionTable = WQLObject.getWQLObject("SCH_IVT_regionIO"); - if (StrUtil.isEmpty(next_point_code)) { + if (StrUtil.isEmpty(point_code2)) { throw new BadRequestException("终点不能为空!"); } if (StrUtil.isEmpty(material_id)) { @@ -159,7 +159,7 @@ public class CallMaterialTask extends AbstractAcsTask { } //判断终点有没有未完成的指令 JSONObject beforTaskObj = taskTable. - query("is_delete='0' and next_point_code='" + next_point_code + "' and task_status <>'" + TaskStatusEnum.FINISHED.getCode() + "'") + query("is_delete='0' and point_code2='" + point_code2 + "' and task_status <>'" + TaskStatusEnum.FINISHED.getCode() + "'") .uniqueResult(0); if (ObjectUtil.isNotEmpty(beforTaskObj)) { throw new BadRequestException("存在指令号为'" + beforTaskObj.getString("task_code") + "' 未完成!"); @@ -170,17 +170,17 @@ public class CallMaterialTask extends AbstractAcsTask { String qty = ""; String qty_unit_id = ""; - if (StrUtil.isEmpty(start_point_code)) { + if (StrUtil.isEmpty(point_code1)) { // 起点为空找到对应的起点 JSONObject param = new JSONObject(); - param.put("next_point_code",next_point_code); + param.put("point_code2",point_code2); param.put("vehicle_type",vehicle_type); param.put("material_id",material_id); JSONObject ivtObj = this.findBeginPoint(param); qty = ivtObj.getString("canuse_qty"); qty_unit_id = ivtObj.getString("qty_unit_id"); - start_point_code = ivtObj.getString("struct_code"); + point_code1 = ivtObj.getString("struct_code"); } else { // 不能空则为点对点,查找对应出入库单据 if (ObjectUtil.isEmpty(iostorinv_id)) throw new BadRequestException("出库单id不能为空"); @@ -189,10 +189,10 @@ public class CallMaterialTask extends AbstractAcsTask { qty_unit_id = jsonRegion.getString("qty_unit_id"); } - PointDto startPoint = pointService.findByCode(start_point_code); + PointDto startPoint = pointService.findByCode(point_code1); //起点点加锁 WQLObject pointTable = WQLObject.getWQLObject("sch_base_point"); - JSONObject startPointObj = pointTable.query("point_code='" + start_point_code + "'").uniqueResult(0); + JSONObject startPointObj = pointTable.query("point_code='" + point_code1 + "'").uniqueResult(0); startPointObj.put("lock_type", "01"); pointTable.update(startPointObj); @@ -203,10 +203,10 @@ public class CallMaterialTask extends AbstractAcsTask { taskObj.put("task_type", "02"); taskObj.put("taskdtl_type", "02"); taskObj.put("task_status", task_status); - taskObj.put("start_point_code", start_point_code); + taskObj.put("point_code1", point_code1); taskObj.put("start_area", start_area); taskObj.put("request_param", form.toJSONString()); - taskObj.put("next_point_code", next_point_code); + taskObj.put("point_code2", point_code2); taskObj.put("vehicle_code", vehicle_code); taskObj.put("handle_class", THIS_CLASS); taskObj.put("is_auto_issue", "1"); @@ -236,14 +236,14 @@ public class CallMaterialTask extends AbstractAcsTask { @Transactional(rollbackFor = Exception.class) public JSONObject findBeginPoint(JSONObject json) { - String next_point_code = json.getString("next_point_code"); + String point_code2 = json.getString("point_code2"); String vehicle_type = json.getString("vehicle_type"); String material_id = json.getString("material_id"); WQLObject regionTab = WQLObject.getWQLObject("SCH_BASE_Region"); // 根据起点判断是什么区域 然后要入到什么区 - PointDto endDto = SpringContextHolder.getBean(PointService.class).findByCode(next_point_code); + PointDto endDto = SpringContextHolder.getBean(PointService.class).findByCode(point_code2); if (ObjectUtil.isEmpty(endDto)) throw new BadRequestException("终点点位不存在"); JSONObject jsonEndRegion = regionTab.query("region_id = '" + endDto.getRegion_id() + "'").uniqueResult(0); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/PointToPointTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/PointToPointTask.java index d995176..246f65c 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/PointToPointTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/PointToPointTask.java @@ -69,14 +69,14 @@ public class PointToPointTask extends AbstractAcsTask { @Override @Transactional public String createTask(JSONObject form) { - String start_point_code = form.getString("start_point_code"); - String next_point_code = form.getString("next_point_code"); + String point_code1 = form.getString("point_code1"); + String point_code2 = form.getString("point_code2"); String vehicle_code = form.getString("vehicle_code"); String now = DateUtil.now(); - if (StrUtil.isEmpty(start_point_code)) { + if (StrUtil.isEmpty(point_code1)) { throw new BadRequestException("起点不能为空!"); } - /* if (StrUtil.isEmpty(next_point_code)) { + /* if (StrUtil.isEmpty(point_code2)) { throw new BadRequestException("终点不能为空!"); } if (StrUtil.isEmpty(vehicle_code)) { @@ -90,8 +90,8 @@ public class PointToPointTask extends AbstractAcsTask { task.put("task_type", "05"); task.put("taskdtl_type", "05"); task.put("task_status", "01"); - task.put("start_point_code", start_point_code); - task.put("next_point_code", next_point_code); + task.put("point_code1", point_code1); + task.put("point_code2", point_code2); task.put("vehicle_code", vehicle_code); task.put("handle_class", this.getClass().getName()); task.put("finished_type", "00"); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/RegionTypeEnum.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/RegionTypeEnum.java index 3e17c10..5736163 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/RegionTypeEnum.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/RegionTypeEnum.java @@ -14,7 +14,6 @@ public enum RegionTypeEnum { KTPHCQA(8, "KTPHCQA01", "空托盘缓存A区","1558015810096730112"), KTPHCQB(9, "KTPHCQB01", "空托盘缓存B区","1558015870570205184"), HKQY(10, "HKQY01", "豪凯区域","1564862312702152704"), - CPQYB(11, "CPQYB01", "成品区域B","1564874102089584640"), SSX(12, "SSX01", "输送线区域","1559374522581389312"); private int index; diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SendEmpVehicleTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SendEmpVehicleTask.java index f13a7a3..cbf3104d 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SendEmpVehicleTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SendEmpVehicleTask.java @@ -71,14 +71,14 @@ public class SendEmpVehicleTask extends AbstractAcsTask { jsonTask.put("update_time", DateUtil.now()); taskTab.update(jsonTask); - String start_point_code = jsonTask.getString("start_point_code"); + String point_code1 = jsonTask.getString("point_code1"); PointService point = SpringContextHolder.getBean(PointService.class); // 校验起点是否存在 - PointDto startDto = point.findByCode(start_point_code); + PointDto startDto = point.findByCode(point_code1); if (ObjectUtil.isEmpty(startDto)) throw new BadRequestException("未找到可用点位:" + startDto); // 校验终点是否存在 - PointDto nextDto = point.findByCode(jsonTask.getString("next_point_code")); + PointDto nextDto = point.findByCode(jsonTask.getString("point_code2")); if (ObjectUtil.isEmpty(nextDto)) throw new BadRequestException("未找到可用点位:" + nextDto); // 1.更新点位数量 2.解锁点位 @@ -119,19 +119,19 @@ public class SendEmpVehicleTask extends AbstractAcsTask { 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 point_code1 = form.getString("point_code1"); + String point_code2 = form.getString("point_code2"); String vehicle_code = form.getString("vehicle_code"); String qty = form.getString("qty"); String record_uuid = form.getString("record_uuid"); String vehicle_type = ""; // 入库起点不能为空 - if (ObjectUtil.isEmpty(start_point_code)) { + if (ObjectUtil.isEmpty(point_code1)) { 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); + JSONObject beforTaskObj = taskTab.query("is_delete='0' and point_code1='" + point_code1 + "' and task_status <>'" + TaskStatusEnum.FINISHED.getCode() + "'").uniqueResult(0); if (ObjectUtil.isNotEmpty(beforTaskObj)) throw new BadRequestException("存在指令号为'" + beforTaskObj.getString("task_code") + "' 未完成!"); } // 载具数量不能为空 @@ -142,17 +142,17 @@ public class SendEmpVehicleTask extends AbstractAcsTask { * 2. 起点确定: 需要找到对应终点,在创建任务 具体找终点货位的规则在findEndPoint()中 */ // 起点确定:找终点 - if (ObjectUtil.isEmpty(next_point_code)) { + if (ObjectUtil.isEmpty(point_code2)) { JSONObject param = new JSONObject(); - param.put("start_point_code",start_point_code); + param.put("point_code1",point_code1); param.put("vehicle_qty",qty); param.put("vehicle_code",vehicle_code); JSONObject json = this.findEndPoint(param); - next_point_code = json.getString("EndPoint_code"); + point_code2 = json.getString("EndPoint_code"); vehicle_type = json.getString("vehicle_type"); } 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); + JSONObject jsonPoint = pointTab.query("point_code = '" + point_code2 + "' 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("终点点位不不可用或不存在"); } // 创建任务 @@ -165,8 +165,8 @@ public class SendEmpVehicleTask extends AbstractAcsTask { 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("point_code1", point_code1); + jsonTask.put("point_code2", point_code2); jsonTask.put("vehicle_type", vehicle_type); jsonTask.put("vehicle_code", vehicle_code); jsonTask.put("handle_class", THIS_CLASS); @@ -177,7 +177,7 @@ public class SendEmpVehicleTask extends AbstractAcsTask { taskTab.insert(jsonTask); // 锁定终点点位 - JSONObject jsonPoint = pointTab.query("point_code = '" + next_point_code + "'").uniqueResult(0); + JSONObject jsonPoint = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0); jsonPoint.put("lock_type", "02"); pointTab.update(jsonPoint); @@ -209,11 +209,11 @@ public class SendEmpVehicleTask extends AbstractAcsTask { @Transactional(rollbackFor = Exception.class) public JSONObject findEndPoint(JSONObject json) { - String start_point_code = json.getString("start_point_code"); + String point_code1 = json.getString("point_code1"); String vehicle_qty = json.getString("vehicle_qty"); String vehicle_code = json.getString("vehicle_code"); - if (ObjectUtil.isEmpty(start_point_code)) throw new BadRequestException("起点不能为空"); + if (ObjectUtil.isEmpty(point_code1)) throw new BadRequestException("起点不能为空"); if (ObjectUtil.isEmpty(vehicle_qty)) throw new BadRequestException("载具数量不能为空"); WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); // 点位表 @@ -221,14 +221,14 @@ public class SendEmpVehicleTask extends AbstractAcsTask { WQLObject orderTab = WQLObject.getWQLObject("PDM_BD_WorkOrder"); //空载具记录表 WQLObject velicleTab = WQLObject.getWQLObject("md_pb_storagevehicleinfo"); // 载具表 // 根据起点区域判断优先的终点区域 - JSONObject jsonPointStart = pointTab.query("point_code = '" + start_point_code + "'").uniqueResult(0); + JSONObject jsonPointStart = pointTab.query("point_code = '" + point_code1 + "'").uniqueResult(0); if (ObjectUtil.isEmpty(jsonPointStart)) throw new BadRequestException("起点点位不存在"); JSONObject jsonRegionStart = regionTab.query("region_id ='" + jsonPointStart.getString("region_id") + "'").uniqueResult(0); // 根据起点找到对应设备,根据设备查询工单表中 - 正在运行的工单中的载具类型 String device_code = ""; if (ObjectUtil.isEmpty(vehicle_code)) { - device_code = start_point_code.substring(0, start_point_code.indexOf("_")); + device_code = point_code1.substring(0, point_code1.indexOf("_")); } String vehicle_type = ""; diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SendMaterialTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SendMaterialTask.java index 9b35edd..f5c209a 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SendMaterialTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SendMaterialTask.java @@ -80,23 +80,23 @@ public class SendMaterialTask extends AbstractAcsTask { String iostorinv_id = mstObj.getString("iostorinv_id"); String bill_code = mstObj.getString("bill_code"); String bill_type_scode = mstObj.getString("bill_type"); - String next_point_code = mstObj.getString("end_point_code"); - String start_point_code = mstObj.getString("start_point_code"); + String point_code2 = mstObj.getString("end_point_code"); + String point_code1 = mstObj.getString("point_code1"); PointServiceImpl pointService = SpringContextHolder.getBean(PointServiceImpl.class); - PointDto nextPointDto = pointService.findByCode(next_point_code); + PointDto nextPointDto = pointService.findByCode(point_code2); if (ObjectUtil.isNull(nextPointDto)) { - throw new BadRequestException("未找到可用点位:" + next_point_code); + throw new BadRequestException("未找到可用点位:" + point_code2); } - PointDto startPointDto = pointService.findByCode(start_point_code); + PointDto startPointDto = pointService.findByCode(point_code1); if (ObjectUtil.isNull(startPointDto)) { - throw new BadRequestException("未找到可用点位:" + start_point_code); + throw new BadRequestException("未找到可用点位:" + point_code1); } // 解锁点位 String vehicle_code = jsonTask.getString("vehicle_code"); WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); - JSONObject endpointObj = pointTab.query("point_code='" + jsonTask.getString("next_point_code") + "'").uniqueResult(0); + JSONObject endpointObj = pointTab.query("point_code='" + jsonTask.getString("point_code2") + "'").uniqueResult(0); endpointObj.put("lock_type", "00"); endpointObj.put("point_status", "02"); endpointObj.put("vehicle_code", vehicle_code); @@ -104,7 +104,7 @@ public class SendMaterialTask extends AbstractAcsTask { pointTab.update(endpointObj); taskTab.update(jsonTask); - /* JSONObject startPointObj = pointTab.query("point_code='" + jsonTask.getString("start_point_code") + "'").uniqueResult(0); + /* JSONObject startPointObj = pointTab.query("point_code='" + jsonTask.getString("point_code1") + "'").uniqueResult(0); startPointObj.put("lock_type", "00"); startPointObj.put("point_status", "00"); startPointObj.put("vehicle_code", ""); @@ -167,36 +167,36 @@ public class SendMaterialTask extends AbstractAcsTask { //请求参数 载具、起点、终点 String vehicle_code = form.getString("vehicle_code"); String vehicle_type = form.getString("vehicle_type"); - String start_point_code = form.getString("start_point_code"); - String next_point_code = form.getString("next_point_code"); + String point_code1 = form.getString("point_code1"); + String point_code2 = form.getString("point_code2"); WQLObject taskTable = WQLObject.getWQLObject("SCH_BASE_Task"); WQLObject iosTable = WQLObject.getWQLObject("SCH_IVT_regionIO"); - if (StrUtil.isEmpty(start_point_code)) { + if (StrUtil.isEmpty(point_code1)) { throw new BadRequestException("起点不能为空!"); } //判断起点有没有未完成的指令 JSONObject beforTaskObj = taskTable. - query("is_delete='0' and start_point_code='" + start_point_code + "' and task_status <>'" + TaskStatusEnum.FINISHED.getCode() + "'") + query("is_delete='0' and point_code1='" + point_code1 + "' and task_status <>'" + TaskStatusEnum.FINISHED.getCode() + "'") .uniqueResult(0); if (ObjectUtil.isNotEmpty(beforTaskObj)) { throw new BadRequestException("存在指令号为'" + beforTaskObj.getString("task_code") + "' 未完成!"); } - if (StrUtil.isEmpty(next_point_code)) { + if (StrUtil.isEmpty(point_code2)) { // 终点为空需要找终点 JSONObject param = new JSONObject(); - param.put("start_point_code", start_point_code); + param.put("point_code1", point_code1); JSONObject endPoint = this.findEndPoint(param); - next_point_code = endPoint.getString("next_point_code"); + point_code2 = endPoint.getString("point_code2"); } //终点点加锁 WQLObject pointTable = WQLObject.getWQLObject("sch_base_point"); - JSONObject endPointObj = pointTable.query("point_code='" + next_point_code + "'").uniqueResult(0); + JSONObject endPointObj = pointTable.query("point_code='" + point_code2 + "'").uniqueResult(0); endPointObj.put("lock_type", "01"); pointTable.update(endPointObj); @@ -214,12 +214,12 @@ public class SendMaterialTask extends AbstractAcsTask { taskObj.put("taskdtl_type", "01"); taskObj.put("acs_task_type", "1"); taskObj.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); - taskObj.put("start_point_code", start_point_code); - PointDto startPoint = pointService.findByCode(start_point_code); + taskObj.put("point_code1", point_code1); + PointDto startPoint = pointService.findByCode(point_code1); taskObj.put("start_area", startPoint.getRegion_id()); taskObj.put("request_param", form.toJSONString()); - taskObj.put("next_point_code", next_point_code); - PointDto nextPoint = pointService.findByCode(next_point_code); + taskObj.put("point_code2", point_code2); + PointDto nextPoint = pointService.findByCode(point_code2); taskObj.put("next_area", nextPoint.getRegion_id()); taskObj.put("vehicle_code", vehicle_code); taskObj.put("handle_class", THIS_CLASS); @@ -251,12 +251,12 @@ public class SendMaterialTask extends AbstractAcsTask { @Transactional(rollbackFor = Exception.class) public JSONObject findEndPoint(JSONObject json) { - String start_point_code = json.getString("start_point_code"); + String point_code1 = json.getString("point_code1"); WQLObject regionTab = WQLObject.getWQLObject("SCH_BASE_Region"); // 根据起点判断是什么区域 然后要入到什么区 - PointDto startDto = SpringContextHolder.getBean(PointService.class).findByCode(start_point_code); + PointDto startDto = SpringContextHolder.getBean(PointService.class).findByCode(point_code1); if (ObjectUtil.isEmpty(startDto)) throw new BadRequestException("起点点位不存在"); JSONObject jsonStartRegion = regionTab.query("region_id = '" + startDto.getRegion_id() + "'").uniqueResult(0); @@ -265,7 +265,7 @@ public class SendMaterialTask extends AbstractAcsTask { * 1.共挤线 --> 养生区A * 2.豪凯线 --> 成品区 */ - String next_point_code = ""; + String point_code2 = ""; if (StrUtil.equals(jsonStartRegion.getString("region_code"), RegionTypeEnum.GJQY.getCode())) { JSONObject map = new JSONObject(); map.put("flag", "2"); @@ -273,7 +273,7 @@ public class SendMaterialTask extends AbstractAcsTask { JSONObject jsonEndPoint = WQL.getWO("ST_REGION_IN_01").addParamMap(map).process().uniqueResult(0); if (ObjectUtil.isEmpty(jsonEndPoint)) throw new BadRequestException("仓位不足"); - next_point_code = jsonEndPoint.getString("point_code"); + point_code2 = jsonEndPoint.getString("point_code"); } else if (StrUtil.equals(jsonStartRegion.getString("region_code"), RegionTypeEnum.HKQY.getCode())) { JSONObject map = new JSONObject(); map.put("flag", "2"); @@ -281,11 +281,11 @@ public class SendMaterialTask extends AbstractAcsTask { JSONObject jsonEndPoint = WQL.getWO("ST_REGION_IN_01").addParamMap(map).process().uniqueResult(0); if (ObjectUtil.isEmpty(jsonEndPoint)) throw new BadRequestException("仓位不足"); - next_point_code = jsonEndPoint.getString("point_code"); + point_code2 = jsonEndPoint.getString("point_code"); } JSONObject resuft = new JSONObject(); - resuft.put("next_point_code", next_point_code); + resuft.put("point_code2", point_code2); return resuft; } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/wql/QSCH_TASK_01.wql b/lms/nladmin-system/src/main/java/org/nl/wms/sch/wql/QSCH_TASK_01.wql index 7d266e3..ba49f91 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/wql/QSCH_TASK_01.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/wql/QSCH_TASK_01.wql @@ -17,8 +17,8 @@ 输入.task_status TYPEAS s_string 输入.finished_type TYPEAS s_string 输入.task_type TYPEAS s_string - 输入.start_point_code TYPEAS s_string - 输入.next_point_code TYPEAS s_string + 输入.point_code1 TYPEAS s_string + 输入.point_code2 TYPEAS s_string 输入.task_code TYPEAS s_string 输入.vehicle_code TYPEAS s_string 输入.begin_time TYPEAS s_string @@ -50,29 +50,14 @@ IF 输入.flag = "1" PAGEQUERY - SELECT - task.*, - p1.point_name AS start_point_name, - region1.region_name AS start_area_name, - p2.point_name AS next_point_name, - region2.region_name AS next_area_name, - d3.label AS task_type_name, - d4.label AS taskdtl_type_name + SELECT + task.* FROM sch_base_task task - LEFT JOIN sch_base_point p1 ON task.start_point_code = p1.point_code - LEFT JOIN SCH_BASE_Region region1 ON region1.region_id = p1.region_id - LEFT JOIN sch_base_point p2 ON task.next_point_code = p2.point_code - LEFT JOIN SCH_BASE_Region region2 ON region2.region_id = p2.region_id - LEFT JOIN sys_dict_detail d3 ON d3.`value` = task.task_type AND d3.`name` = 'SCH_TASK_TYPE' - LEFT JOIN sys_dict_detail d4 ON d4.`value` = task.taskdtl_type AND d4.`name` = 'SCH_TASK_TYPE_DTL' WHERE task.is_delete = '0' OPTION 输入.task_type <> "" task.task_type = 输入.task_type - ENDOPTION - OPTION 输入.taskdtl_type <> "" - task.taskdtl_type = 输入.taskdtl_type ENDOPTION OPTION 输入.finished_type <> "" task.finished_type = 输入.finished_type @@ -95,11 +80,8 @@ OPTION 输入.task_code <> "" (task.task_code like 输入.task_code) ENDOPTION - OPTION 输入.start_point_code <> "" - (task.start_point_code like 输入.start_point_code) - ENDOPTION - OPTION 输入.next_point_code <> "" - (task.next_point_code like 输入.next_point_code) + OPTION 输入.point_code <> "" + (task.point_code1 like 输入.point_code1) ENDOPTION OPTION 输入.begin_time <> "" task.create_time >= 输入.begin_time diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/wql/sch.xls b/lms/nladmin-system/src/main/java/org/nl/wms/sch/wql/sch.xls index 93d1bdf36537eb8b27eeca758faa8d7258bb92ac..3ca90f694543cd748959483d019ac8cd78869792 100644 GIT binary patch delta 52359 zcmd442Ygn=@;|(Lo{~Z;1PB4blK>__2q}~VDJhiDgP@BMtc`XaXWW?hk{Sb?{ypwsUEv$ z#r&fO`4r?-4l2LNd8-k=vHTb3(12*cwATEJT1n3O?QtX)W&0g~akfvo@0#3i1J6HE*!!!9UH|D_%QhmP z7?h#Mk&M1kHS3XAAF_PN!Zu#;!`S(G{He=FX^f=1!ixw)zY2rL7*!%l>F` z^HuBanDEZO-kH{9Rrnhl_sx6Z@_8xFM<&(0eQb_vZ^|26_znGT-5Pr1zprs8|0n0o zR&zG4+Pm`e8%oCB`9t4l9^T*0yX+```SWwdLtlJ$$NV!ljO^X5wEv}O7E>HKYV%q=+E~xd3xu@+b-`^ zn6Po?HU0LEiF@Ce?QxHF1ms0jzkKB5W@US}ZyogddkCEol5Vk2L*X z(5mM*^fylP_Us>BPOM9rIo|QzHOo?d9s0w-r`{?G`7-k6wDFfuOFSM>o_+I=tsG1Eq&sV>5>#SGu zXZ*6Mma3KPCVBEV7vK z`{3N!iBBBZc7N}8|M~nEhofp9e*DWW15)-(xpYgHO_{;}dbPS4d%Vp-BdNu8mq))b zwtD`F%lAI`z>N#8^!sY^-gVB5^PwA?o#cJWk1fjZi}u907<+3=!X49El;=I;S6=;) zvwXutx#c4({I(=M{GGGh^Ss}d32Tly%5%5+8^u$~V;*f$KIO41oPAh$R5^dB<(8_) zqFND@`}vX)qmo(qt_>|kGR2on6-gHXbT41{adl~Q<`v%8{aSUC=*bW%4;W++^ z<6Ai11lh9gVC)o*;df$!fFbO47h}g^7(d4G9+=Fziy4azU@YPvjJ=BERvZfg8B4#L zv6DEu?_un@CXBs+V-YGG>is8UKO<3#a5B$l^gZ0)}o8y&^i;}0@6zBQzK2$i%!Wl%?6TgF~_gt6I}1>3G>?Co}p zb*+FD(A4}jkjh}}zO{_Cffat}QO4q-v3J%nHUXM?>@mhtps9818B2zyD*g>zXzI5O zjNKi;#<7qmfCSYn{tsi#p^4j{WGoDtIQ|sW2@O2+G-LfCF?)uwdz&)$`W9${Bz%ss z|3R{iTN%3)5`}Ju_8?K4=OIL^En6$sIhVg)SYBwfah|WOtu0?{42Yye50L7KNL?ij zQ51e|^pQ{<9DRZ)X97yDLM)&0Mt51V&XE&LB@2*yE26jj=Qr+&b|+zunhZH<9xj9) z-b4Bu#P=aHFJHU6ON%mATg%vhiBrx!Fyh{vdyjWq^ZtUhBg%7~5#^70!@>qXQF(jr zGr1Ytw}r31cFBT(a=$mndFp32z`pg(&OFVW{VH#@tR(T7Ju|rXWAH@$9mDZ3Vm0Cs z#Lp0qB7Tl|9PwMk6No1fzd-yF@hily5x+sKL3|X#R3WZI{2u24IQ|COKO+4T;u*xV zh(9C#g7_<%j-5l|H^lRZ5LnFKy412g?)yzZYrN+KD0QiGDqFkpXUff(-S37m)!4L4|v;dTEc4fMJOC1be1R}evu zLm?VY5DB^<5%kE$hzJ_ZL>ajt#7MIX(m=1Z(eP8emb*Wk+iWbC=uKH`Xk#qLU->^j z9Ox%fNFTJNI~=s~x0D>r=RTnSSq0@C4*Ak0hwf>0IVTBrun3j_m+T5|{gp?2)Ft?G z-#NdceE3Jb@Vn@vr1H-{N-KXB$2K2NaEI(i+kS}VtK@!W|2DkGmN}n1?B>Rn(9ak1 zz|@b>4bYz!e6wZEv3P$TS-$6+)@>81E^BAL)SVZFwpW=BWDejSGi(WO?pVb>F^BiyBjP|)@Zv=2Iu?U7Zn(jv zgDp|{PPUUBHY)+#e}@8g0XU7XSHLa+ci|+E3y7ULjUFQ6!e1|y?*_yPb9hhQny)hp zd-CMCor;!Q(0WYKa$B^B3D7btd-9eYX`srk?#CWuA6jSrV1owd4%U>p&61wHxf$Mz zNA#zGOz?h!I1OoH$PdIHQ28X4X4DUimaBX>AWoQ5d-2RrS|||_e-PQoPMgp6;=}ll zE7Ev+JXt#`3J^tP3W$CH=&x4!M8B4q`DuJ?9GMA%4iwO2FbF!(f)0eJPqUxRkJETJ z{)-uu&eKC-N(4?5;FPm-=Gb&p{+n5WvUpt3-^`6Sx!JN0FAODfNxU^h=_9O*xug$o$v-jI_d(zIRFySD**dmIHBmFvBl|`( z)N?=jMpR!uBD7ioM+o3{<_&%MVB->QhR@*<=7OHw-~6aAkFa`UbAVBAJl|K;*PPO;}uS%RUH}M``Hn5Bax(zNXm{xXL?Mb`Lk^Pr1>dm zh0^3gv|0&Tab|P|>N#Te%-|hEUsdhU3LR=Bf5N;rgC~#Mt}>&5Fn~X+Dvz=%k3!`b ztE$#02=b1oAPRyE=bD=+a3ecj6o?Pz&zav7@s}0x)`Iv}MVt()RAlQq#9Ld$Th}4p z+9KXs5Z`9rl*yAPZBfMAfOr~zMiFlV;?fqh5v_DYaoz^Rr7dU!;;;o)zSd(K5KlwT zl!LjA9L(*qc*MAWs+!u0n!2i*+M*^onA@VJonnrsmT8Nc-W57(D;rzY)YfXTwx}tA zFEQ`V;>rEVO`sNw2J!W*wIUu3;{R6pPUMrrK*Xa#e7(w-J?WP$o;mJb#bG-TDQ9gI zk#-h`?F5Ig<$_2%5RvAlT^&WYvp8%gbg^mM@@#(0h%*&+52&Z}m5Pc7)O!o->H+mj zd0TVUAl@=mTS^Z|Wb%KTuMOhKBW_a^Vg!YMDGD(bg&0Y}%6Fk2Qc4W?%MxuR&xqs( zGixyPcDo`OD@Z=5P-88Uv2{qsLS#uYR+2QI8O&4rFH%I>3nC9GBJC|A?duR}ZxLy) zh;+!|sc{<>kq#g-fIp>(bN~_A%R7JwO?S8E*v4-Mt5bJ?q6YJ)&5b!2zq=Hzj-d4} zt2Dm_4zDrYLoj}uS!MogFMGx8Jp^jd6U`++C>OpXb(2d_x$K*lpz`~ziRKckLc}NF0dBJ{Tv6G*yztfr#vbaf(Rip*%B={8=Ir4>=sP!RHU1z9uBm2=jG>oSY*3)GdfupC(E~rOZtu8`9a+az7E)Y-> z=>h>C5?=Za481O9SsFGNZyt_mL{F*Y#BF3}%~iwEP(PbXyf~aN-^Ez~IpjN76iYB` zR`OP+-v}OQ&8l62Mzd<-2tGJ~oOJ^1DgjLZhUqCbQ2?H2=FSnkg@FnE!x6SAwVNpA zX77=F5;wLzI1)}+Tc_$LsVLmVT-F)2ro-GbieDAyR+-%a@(A-&4ci_1kX^Pr^dUU7 zTuiKD(Se5T0pNAa-`tQ3g~JULy6R!sj2=*U6-zd2a?y_iRRui-PPCac8hSZm=8VRS znPScxjcM;S1=0&3Y5WC6uNQcbJ+~Kl*u{>URfKxNJUJSD?7s>pP2jw!aMCQCG=-CU znZPN$3^=bVoOFTnlEO&`j+`gbbv+X2B;mZFaC!@z-3q6-h0|NtGe*`k2Hsk(!nqVU zxjfa}J_fRa?=iebe?5crLD@d0XOKP?-+e&OH-q#+|Jx@zaUU_jPM8zN@*bhu$oCaQ z+L#q%VNdQ>y!Ewk`U0m5)}&Qq;p^UGem&MU$@By2E^CtMhx+9J?=r{~HY%Pg;G6lsRrhB|laL@5ja8Fg1CCYlK z+On+LvP5lq0?e{%%YuOaW@+XV>zS6cZ z$QI)u)Iz1PFaT$?Fvym^MDdka7(^+E0fKldMSOroe1IgbT4I3Jssq62gJATPD|zOK z-ipXT5ZQ;RR}RI2AR>p(KtY5yA4sX00yNLGPlXg@`AuprsrY&x~ay^OV2uQtJ%CRcX5tZxJ zQjS%5PMykgbmc@cLsdRRkjzx_46#TKsY7yzMRG_Tl0!6?6G1XdksK;WW-F3IEs{g) zkQ{1}99oCuP|YPsTJzs9klZVFc&NdKfutM^!$5K`=D*HY+vfjaFtmGFxOvUhFtmCe z8V(9#9=aMvfwqH)&~We|C$iz-0TY?|E{d&*X}Fr0uEE5l7ilAeaGlJ=YsBEX<{JKX zNE?s?LDmL;tkz7M#IFlna3yD5XK;4vM!63#B#-C$@se#%Oy@D2&oZz<@}a=rz>(p-9p#^#0q6^I#0H>E_pt@$#2HvN=>;Jz*Y~ko6y0oACrsf~Nt}~}qn8)q0!J?|!Y!O|T~CRurvy0K7SevmKFgtRYT+~$ zINz96gah}2aJ1`9`y_iU*PHf9q#2=o5;7yXvxVz@!)&*IOkejqIq zZ5WefItL=wMiuR%z?v!GmKKqgAVM2ed2?+`sg~&Il2%J}^o?w>xpb~=1BVZkNsk{xt?Fe|FLb}^|UcMP-&Z1`3Kk_^T8X?>j#@#Z-4@G%;Ptp^AAxVw1z*x zu*E7&IIZEOF`_m6Ha5)ccO!6yZ<}=^4>00JC?r~%AHc4TM53j+M53knA+-Fe`B0el z**)O(V_`{Xk^TuAWxhL~C%4tsl@{rTS*oH;i}Y$X+H7+Z?-)Q7$SsR8ciaTGY|2eM zBJMH;NDJ}9*jAS;&_cXg)IkgJ6IlMPx=D1{tvB%=#a#YppW}3*?#=TG5|i z*D30>qL)30R`h{lM~Rfu#r$+FlrqMP<%QmhpcOrQF}b3zp%uMv>m@-Lm>K4@b-ZJ0 zQU=M~6^_vXap6v$QJgs;(M9j;)7ltc5l6q54UV-l7QB>G|7Ta5;b7UVj*hy z#oVzF-lX1jNCpns%<~I{nToniFfsHtFrh(G1c=`IPXSrkd?}iVM{nc9Et^Su5wMxt z&fmso^S~kSX?|YH*#i$*&g0w8ZAbpW?>G3v~ej9cMM zcI%YD?e1g(Z`_^ij7u(Mz_K>d$a|Cy9C?ok{1NgVlS32KU?bl#fn&ppaE_n{lSv|1 zQ8GfVA~6D2u_c#|Vw~Mk>~&#B(OgP6cE7M&W&+n98+nEaTzhQf8A>L}GxT|x!4@OI zf{`?{dpX=B?ZQb{QM+&#a~1oeYVE|4vzWlO6GzUXteTufU)7;j)uFoT`?15Sy*lz9 z6S!XClJ_WykoV}ja2aM12~&!E7DOyJkK9S0n@8@Xbo0oaBsZ_k1H#SAdH^n)cJs)c zgqvqBeE{06F*gv%UFN$4qRkO`kL1<0S%J}xYo#mTC~2>byhNYLAumySb>t;>=Gd0p zyh1oiyMbh!VP^PN9-9hJP4$fC5J;AkmrUU2%yp)4 z-42?(?_h0z$VE)x+WwG>C^bngB5@?UBwcxvU6QW6`L=Rfn$;$@au=+G;fDbivllsv z37nf1D~0@3E1{`h%#$nmRRL=NvV+C4D6{N(-qD=>FMhm>cIoK)6I?n)gswk5iJ3)` zq-#*yV8w5H5F~TVXCAcqd2}_&=jYMYBso>k)golw z`GDkvk`Ea6FnUeeww@33W4yoi`^fe5`F-SiR*SmH_4N609`JNTsmk;K*5jEGv7rqzrsAe3VPIT9{HUIsT1-$;pUnBR`Zr^ z$sZ%H4mY~myt-KB)y-LL^XkYa^?7yVlag0gxf-IMFpsYW)7p_E2NRB**|`F<@!yh(4cEH zQ;Zx$X>-Uyd>UphA;m&n7_e(l?+WnGF9yx2$ z!TZ@vc?`Yg7jyDs(3rMuXDI-D-UKg%c2;}6QhDq5$c*W+oz_TtEk*h~G(d@Qf zUMw2C-sXdmQwRIDZS8tKle_=@2xq}hk^lA6wkD7BT!Y`gZQ_6IYgGgAv{t?KN#O)O z_#`UKG50)avthKc=d)oBOTi8>Nj5C@Dc}q@FMG;n!)U|Lw^XGKKiMd>;pekq#Zsa`%YqLfBgg&!H`-IYL z(LSNiY|%|b(rme<2|}CD!oe*Uz(+S?HKlDB?IQXXv$TsS7qhgBNDJWTr)~a~ALNj0 zS3k%>YuAxa!@tr-jdmAd)XXJ>qnE1wU`Fc7UovCvcp6PJ!8`<1YgI~nkUslGw*-;> zir*yc*T_x0hqVx;{YBqGl=c^W3sKr*q=o3lO=!Uf%uhFgIc?O)`GZk2qc_`(H93FM z9+C4$_Gsj0s9PH~+8*>7HQFAOMvb-yeMXJ82PF~O9`r3jp88kSq8r zTc+kVas?$tas|n>Mn7XycQDj_UZK&YnM=%(&p@K(iWYf$lkKYM8RChqj<*ZCA++^x0K%1ATUtTtVORHyky~i8LHFWBF^2eAZ@YrEjROzSCBt zG-$NdNQU-_XKjYIDOlOaW|*Ho3;k(BORggftr`6sc%NnVe9pGYm9C>+^VHvDeP<$a8+l{=B+pzXgWwxU!1VjkKG7PQTj z{@^(?YMZcDJ+}b_hI^ZB$toQ@?K090R&pw%8?2<^-exnGv^PlRGHN?N&bQS3Hi55r zfe+_y@!*l?mRRxN5j+0Giuva37x-mvj(ewBlRA$dMYN*(S-GwydNx&o#Te z#Jd2wXDn_KCLfqRXr-dUbe_@2%zcUHwUK;LF6VU1bWnJLF`kf^BhRe(h_~spfyg6V zCl9!RS_XeGP4-%c`{7_xIw(BFAPCMRg$^A^DHIf9ZI}yX_|v$AY0h|=505AWRE@K? zmTpF&dvNiaL0m+b)h}~rXUZT4mlz~sbZ*>EH(JXy9ci}+>WF@sN5!;d9&E`mc3VZf zU`ayO)>Z(<0EP2r%*(u`OMoc_E;jqu8bMKs)M&OqM2Y%JZXSP`4~i~92D#KaEJng# zoJ6{6oXhfCgwkE|F6IHuZ$s|6nw!NtcvKPZz&f*uX#Z*IuQN+wlW_}t5Bw#uDL6~R zu~D!o4Z(18x#W{r%R`045hUv_mW_bP>4~#CerXg+5p(4s^)0rDxmHBs_&9bW^no{6(Z(rgq)B}iVv4OZ3y9DJN zk9X*BN+$rH9BS^mgGV;ofIIJLXw0V(D}teJ{9ojyyBAJb0vT+e)rSoBFI&1u_j?GK zuIvH{OZ8LeAP;Oh7RL;~w2(ZE(J%o<|Deke#>*&|fX-UAp+TbrBDI3-hy)-*1k6=4 zE`A5*s66VP6p9pMG^Ff-XlR&5>3L%%IL2%+6ci!PnxXHpaGQYi5RwcAdY%Ygk35Dj zK7kqjb%lI)1;v~sY@Mz)}X1+wDaTfWQ{d+D6ZGk|3e8R|qIby<{3SbdJHX|w3X z$i@wzOx*u3K#0C054o;1W|n-(fDF9z_S^0M8|C|-k%L*U~872rs8j^Nm1+ozR$EjM@l zYDAVVb;g?+;SPUux6_f}N(bb3=KL4=P&4~2o*Xm;=O?5+Wh?gZ0l1BB%}2a79*&K0 zT}fr;{5^cATMXBTy3>MEWcO4a?jYToz* z)$Hc6d|63vv-j)#&c9jRJE}T*7KTlL_CJT*VQ9F;NUuQr(){#Y-mOImGzSBmA3x)o zj<*ea_)uB%4^Dk`*m@-C{ypsu8$W)Uefy(%j}JdF_pmv57mxGQ&#jMczI%{wGW)&4 zJx0%1G1CXzXZr1;`8u}-H}#vZ{(LH}lAcc^)qL8g&V0H7lKJM-mTfVo=pK=SA{pxS zgbva3ke{Ioainv9abDvTb7(dhAbWplbY7g=U|u{dM;`T%Jemm2_xJIyyrA{R4TSDl zmVp4aFYU)lpt<@%PFkF0cJr0^=BxpDWY1PW%u)D@lUCtL%7u~ z$kQ{e9j%vzX1;dRNNTbOaMw!S%}pVW=4QlOJjq3~s((F-r;+ES+t?876uVm#UDVye z>Y{bH3m9#)1QuI}!)=JSBa&ZshdP!=?ip{EoHQcJ7wt)qPy0Q)XMjwc+Y>Jn@o#l+ zPDuX)(jml;5a~vvPs(S%)!It~?HJ;5#1n`F`Gq>tYK6Am=|-||RUTPbn(PUVc7jN{ zi#%P2l_jk{0Z$P)6m4Ny@#Y|SpbRZeflPVYjAMJ&9YsADubY|7QsMeG z$m~wDZbQgavYq@(L3S{^nPswUxX1%=J7XG-$*fmbkn4%;6kLN%#$PrYgcSMEJy6mW z$0U?yiepdln+}Lf^Ua@(A&!YG#SA}V4E9QHdomuT1n4dVNM%zmR{3A7n=OEDQn2@z zgd@dl^P``PUiG=@&UlF8CP{Dut-%j$3XL? zl`8!S(iJNGDbgEM`Y_U)kPe`V@s#hlb3GDh>9X3%7Wr$(lIe6L!KnNskv2R2z=wzU z2Oi1W-(e&p>g zq4CUHI56&z_h~0Nb02`kpPIl}zpgMWur;A(>_OgTXeFoF`|z0#q}YRysTtpFi|jmaegL38C8wZKOzLgt}VrNFyyBjA2n zieVU!sCj0}VN;6)JgQ0&h#Fqs`hs*+D& z^7f&^B_zSkv)DHhZ+tK#KjwW}Rjb;_MI_j~MY%>~d&Ul$Ge71n+f>yn4hkP@ECn-q z1F21)laQ5yW=0{@ZgOz!vA9@xgjPFrufG#k z>7ZROC%ea2z0hV*_$@{l=2~1Cxd7&F2jMx{eGM?nj6z`Ivd0B5s~q%%v=fgW$>3Ak zBBK(RxD2BDz~VMA*wA%-r5$w8B@x>0s83<8gRb_avqA4@Geum;gS!yfZYWSl#*Ss3VxLnxva~wS8y*P^!Gh7{7FBvtcvF5zF z<1^kO>Y!Q&`0A=OwxhiAym`$@-olBiGxZc$h}}uzAPHr6;cvT5{B4ydsi|-!rXErn zrYu5AL)m5c>kmUm;eM$@IOB>YA~%0Ss@{4KL1m3&P|xGGZ*=`42h z2q_0;WAOKx9Vz!)LTcUs>0on-l#8-!@z(<;g@Rx&sfM59ZDPyN&hX<3ku8`K0Q94F z`vH+*BmrWjf>g2|YYQA-1PGK<@x zzC1)SQ)D)1;D@0HEXFXZ#=4yZ_8^bMBF1%nG%=S!s}$<*&dA(av)#+Qd0Rrbts+s# zq}Qb26+vC4{1V{W2cFJ92>4tHZo$_eZxf=PIEgNT zw>FIq?Rv%*$DIqJ{ zmKv&`H(upY{xoBdai=5zV(0^iS|4W#0Ku-O#lWqW*;a#S_}v%C-&8l>D=OFyLK{>8 z4Kk0d;);6txIK&Qh6z3h%UOsc73UyNfz?(cFAec5Vy-HuvNEJss`E&|FOEjzw}Yan zup*kYk>xExCY@7AG*-cB|AlQZUNdrxJ;G%t>9zx=F>RbgzHStI@2En4g=#Fj_A1+f zp}P4}8}#nVvPN1x68VLVTp_tg7J+YY)5`ZBl$!jzLESYz=t)G ze-im;;qg%j@?!9jCbbc%)&*AnE5;^_;oY`;fD8B}jOj|1uWh2Hv%Nw7a4`vzt0^i5 zeWG(k4flWZyH8NBBAvQrdP-!q3CGvcz8DzIXt$6q&?~o+Jpc z8t0W%K|AT@5L^}Vh=7Kp;(kVkk)>xDz>xE%wX7|;?&xO~zMKKQ641W`BqmA-+SGfH zM-0flO9_{Oyp;sh&Igx-Ji^y-H%l~@pwsyRoe;`mXrl%G=q^Vc$it*E@k_EDfhF61ymNyC_pBuBM{Xxp30!%7mN$00inP+`riyD+nkqi4aH(RU zT2(O(e_dImOba2CWLgO6#R#^f%#&#$Wr<2tWwbN^AtB{T1y7Y#$h44hgG>v_#9~kh zR;A!cqbF6GG%8%Uh5lYqS(rmsK$VeCuPaNFX}oe3@7R!OQCW^mJ1Kv>N(VvJc?yR1 z-b-vS^N^M|4TZ2W$}baJW$1Zk@K3y{SsZ61n6>Y7cPqEJ#_cPwtyMQ0nb9Bc_S|h| zeZa>gN3iNTR79hqM`B6j6x>6=dCXs?9c|ch^YssSx8xRLVPz){L3spTbWkNhc~hiM zs&p6|ZeH>s?-n+kExldAV{?t|rnKq&iFe9})U+dw3ZkF^k4lp^ zGAM27T52gCZ(quhFwR8wIxDfID{Sd1U)o&q6K^@>b(Tb92&0G4@@(m)wsa+>%K}J; z!mtp02)ag%fSwC*7(XVF8#%qwufZ8q~Hl#@(AnGcFBrF`gw?u}ZBw7O}{ zeBvx#`w(Wv{>&$}akK4BBouyy7^)6d*+laE;?IJ=JwNm7c-Xd{zwk+J9`@V{<5C>9 z?ROikUBPa4wimF$Xc$W}e`#Xe=Z#=t=`xG%8jDovMeH<>SLqJemfWP$k*ps(DAUkP z1glZ$D5THY@*{f-ngYh7(j(d1ES}Pk6w4ttkJ9di{;qgdVul18Tbwi4;(lgdm(kV_ z?c-rp{mfH_5y3l{=Yx%wQ-fGdKS7lTp?jW{X`?5ul==6U`DFPrWZFsjIaa=#l~KAZ zfb62J6L{ES1y9nf>~F?=fcxm~3o!zn$JzG&=BaZ$A|91Vpg_6{-9G~qz%?0~LX{2y zLnRsJ!T`e)ww{%#+(^irW+@%j3wBY8RxMY`S|d;@R8;Pf90`Cv&c64BI+ux-&TN&d^bpWo8e*ZD3URh%sYE z4}U1kxN>FKn4EzF#|~j52MioPX>4Xz+3f};9mhG33;F((H ze#_Y@ct)TH9duC9;<&-CsZ-u+vbf3I;_F5R-R@VEywKg(la%eq=0m1cdSa(ePKm8t z^jgP~v4sV*UUg@B*ba|T#JqkbNV@J#b!8sVAe`Fn7klSyMejroG`D znO88c)Km0^qdgz!U^968;yL+KW)#$V+uz#WdDY?eYkMDVU$Oj+_O*94>F@0j)4qW9 z?-1ka)Ztic^~||*XU{ks`)Ta$^J{m;?u_Nv-7{!flhv`V*dy%B>ew~T<+1Zu$CeeZ zj{VH6T^+kRc4=$@ig&dsV5?&f$GGl}JvqZu)bT#gu&WYot<5-m#J`~Q2y<;X_ViKq z-~X^N*H89j7tfr`inEI6rA*2$^my}UO)rSASQH%Sm+x2M*yW1b^5dSD*o#l^eWmiL zo!|Qn-jeUv@z+U1W)+oI7v;|=y6H2=W#gt4RTs^gS}^a+vAg&k!v_sH%qwQiDZVk< zF>C7eGkf#kz}1Dz3j2n6dV1oHPJi~j=h&g1`?u_TV$Vw_@`K9#S%=`j9#?jA#yDLi z6TF!j({CskS3HMZH@Ud@y2LSste~KDZen)v^+B^rjgdW?B`0Q1O`1BSv|v*}J4fl< zy!fI{iL)}6COhIj$s6Oj#dVbJcO|~Iyp2&@?l;@{J%7JlTwe5#K}BahT|GyxO5&NV zcU^f$2fq@(58AE>jGb99cj}#!*TnARvEv2|Ta7nyp9+q>EPEl3>+gu2HhMKr4Uf%P z&d2+w_8;e;J?>5SZeFrvDMa$b?RoyaR~N?ZstViuO>p3U{gM;MbSRy__Q7d0m$LzL zSaHdK;u~iTFLKT;4NvmKefY%-Z12wRKX`7>8=f(l{Ps&ecrM+URo!N4Wp?q5>u1hd zIx1tq>fOP$URN#tes-lKo_Ae+tV!y3P3X__g)24uJ6GJMePcr3Joy28_1!0)JGB4B z?bScM{o`vphlIWnwlwK&Ph3`qGdv~n7k(G-oO&;hGqw~gUF(T&RUY5PlRVl#`=$2| zG(GtKBf)`P`uFvu2G5D|{IHf+y!G>eLt#}_!GZgb+ueK5=X^SgJJqLqRn-rDZaJiOr8+>h8I< z%C&H1Ud)MNSFx+emC|X7E2Epswe#~k`nwJdd^&J_V1L)7SLff{&DG6STJg;OZihm< zxhAa|v34fqbo083Z;W|!@4rINhGxDs*_GTWw7GNSuimKZqk4ok4`|-sb!K=><>sA}&E(h)7GLWr*~&Q#m3o z$FK(wS0I{*D-r3DdU_(Bo^O8`@e#yTh^rARI5xf4Ah8ya_7Jz>_!#1P#D62wdh02~ zClLRG_#`61ZN%|)#7&5s5uZWag7_@rbBJ3JA4hx>@p;4-5MM;3dt_clBpN$$tmI=D z+l9m{h_52PhWKB^?TBw6?ncC2L+o9|w-Db(d(TpY5RCrmeT&%sn7i1gCP2BfHSzWn1*yNV_(EVJu_noeJz?5Yqwzu(qe)bQ`{kG_C z7ni#(wK~o1#Tad@pGyuK%1zuSh$?+$%fwhOareWpi-bLxZbX3n^R7I=Hf67>(Inwf zz{=c__@$`qkB3zVLoxsv{vzA=JYNc{`8^K)9dQ_XwIGNqd7^5?tf(fDfM)q;{Wf%maih zUnt72a}*+fwb0CJgDzgKHnxl3O8g$i%|;WP0a)2D6?l|)nwNQT+u14scADp5uW-3Q zoZ%=#@z*Y=*k~sr_qfvVn+3MQO9H=*`)>~V<&lLtD zfo!!AkK-=KY3{)dVXMU1XJtlUNbE1r@=DHv|4)cXS|JypwX`uI zy}u)6=$|20k5&TIUxS?zcwGkR)7P|8(_t<*^Ga1uH@XAttmp|B0^el#sfKyULG5=T z9D8Fn#Hq)WY=66Ih^vb;WruE9!S4&goIXLke^e4X(#3G>%r(Rzt2`Ip$3dY#oOxNP z<&01vIa#|!;d;?-RY-4j7#U|>g-CJM+K^*@nILhUVcdJ*ociHK1t3p7 z1+xs`+aLBnf^!-0asV6t=fKyIGkW}=?vJ0}TtjQFav*D%c*cr1(`AgskQgH16#}+= zdLBzhDJ$JWUS!z?O*IcxgT?jn3-Ow7qe@S9=_q-nJMoL8e-AD+)f{LrOuiJ?hHdBd z6s8Fs=ov8;l?F=$ejaJ?0{F{p`Se_wiW*-?Rd|sWNY-~%f(d#QO-Cse?%>U%4|d96 zNfql4yITUPn{Bn{+gjjAGx5@g=A8Y4u1*h!%$HZNK}b_sDtMcB5#IJisETo*$KiC8 zywMXI=@$2zD)o+F@vz*5+L2p53cFLFs-vVzPjhs#dSzXzi!Z`!vW+S|qNk&zN>3f6 z$3YAc>QY^L5vut%s`Rj*j*==p!;!AI(GA^@Wud%hxE?Yi5HmIWNGf4u! z0$g1P|A-Br9yL@^A&ql{{au$`{!NgvyI8| zr^Rr|l>q98r%sEWzrSMn{pP?BQX4aRZ`u2IyOr~guV@-;4zJqb(Yr2xtU2s*{JqiP z)eA_+-;?97is7}|qtW5VN$&C5O+ZD+=FJ~IhX{&NLa&1dI0>W4NbnvZ2b3xBw-ZXKb z{W+QhXiHWG%k+!K5x7|GJH)fV4)M5)gT({KA$Ix<@!*QV=qVFJ+|ougw2QA_{*>pd zTU0?cghh&E!+qe3zej3&W2F8PC3=j?9t2YtqvSoLN^em|y)8Tg=koHG6a z8A9B;DF|vxe^o|$w$C0kJ<9uYGFH{2L__l8GUlj?HIyFV74<6q>y+qeMSJ*NO5PXL za%{0$!07Ttq_O))g7x9gsVODbZ|T@KAEJbEgJnY@;D)hLS;Ma-$Maru{o@Sx$`=k^hb&|VLdp~CTzBNnrek$;jGJh5Ss=Z53155Q>~4&E_zZ)ZVJ;gPMRHh z4vN^J2c@tzjNkfKpD0hyg#@M9Au9V_N%)oQ(1S|EP9%;WAq$bWfOvN9tmyCb;TviUT)Ib7;6f^X>*9Mi)FI%Lm&OFO=?abp zf@G@=@yHyW8}~q0l-_F4lVD%E0!8~1Yg9eqP&Lzyk_N&wQkPdKm-r+^=m8{Fi(kp7 zuAE5Ms>&(7)hI&-&F;i9VNEy4laL;QY{nQiic{$d!RRPXHJlgqwS`9UBpW)Umr!e+ zEnvAF~k)qero`kGkvP9!- z7_R?ML;n#lUUVaxN2VJRl=^`tC_!^jJl)tX2oXDyP^^;8KBTBG$mPgNr1XfQ&U@hz zCH#0A8ro#gc-JO_$n1BK%+h3#uEJ5VYye`W{=oVY1C8LdzHlcHwpFx<^@V89MtMaG z{aq<&G4j`h5I0u+o)nsYk7xvY6X`amy!vxsrN}!D9J_dh$dzk&(MaC^Ole~jCnnFk4&t}1>cFy5 zyuu3+v%XvcF9nDmIxCU>znt|)ak7kZ?!N?Vz>0cd$w+BmyYP@31{4iH>KOLv);`6O z97%}OObk()TDt|IVYx!kl-6&nnwZu%(h>cbm*f*Y@&6;$%T|vQcCTSCa(ac)q;B+v z;f6`phSg{3;+3Vlm>m9M_u{XJ;r;Utq`Zo6Z!A3xNilv2A~B>nCmT@LoJWh&J;IVe zNUs_$os^VzQ$hB;p=4#qy|6w1vzE}S?YSHroxuimFRAQ??S;z(sGdeXbwuifuN&VA ziDVbF>w=M^~gRbAUEKb!?sO?PnUrUi`snA zT3614T`lt^*T1s&tQT5F4z)iyk#ZWM?$XeMqe}kHh$l&9Zz1t$WKfgCeMi0C`pUCQ ztfjHbsy!ac(|*xbAq|P4ZJmUo^)wkVxr|+jl%83w!A|r4Ul{=;iG2h}^F{7;W9Hdy z%`znU8^*h6$k&Y=xaeLj!%*EKs@)Q;B?76hVgI))v98Vr)uYr6UR4=LNS(+9NRnDz z!TmWC6wpg035VO5p>tNx5YV|OtdbAjnmNvty zi<4}{l-?~Cj?!bv7cQgRjH$m9Q~~Xr=Cl*^vO{``PRo(ejtf;sa|O|*hO;>?SbtdN z)gu(wup8;^B+N5twQB?hery|`ku1+i8(3t9>g}cBGOZ5Qg@5r16MS6*3i0A)|KP}A zq$)%0>5{R~JG1}g&F^*cqCqc9-oOn0LKH7p2!O4zTov%J2j|5TpnyjYd!hJiw8|a`JtHb!{crW%T z6TEeUhbwAy??#Muql)uSX~qx!-;oxQSE3V6!$${q1T)xI+I>OXP zB<-5czYkx3*peCCl_2$xq?7$#MPy3WB>wq|sMGICx)7ch9l4%Fm@CE z^T~}K^rZ{DX@tJQ=65H+p1}K%Z+;6O#(DLqksS00a!#mA;VV8fO5IOmd+JzA^QO;? zn{uB*;T6i(9#K7q?snx0fzrAiiGgk?)I1 z^o30--(IIY*=AVjE=oLBTcGxt1^Uk z;w9s`?38s^Kbd~QkNi{kz9#{kc=0IVd;S#usjkEg1w07G2tWQ$;rs6O$Mhrcll}yL z20N8ZbyINS7IjA+uB}M?gu4182+~;w3%A(4XDa*ZehVX{1U@tL*g-~Eu){>HvAMc>jo^Zgm@9RJ;K zX&p9>8vHWzm1<*$e|~BHSiGa8?TXKh*Akrcnhko(MsnQ2JPf|fsq_kqnRj{eSb$ZQ z5|6R~=eC;9jZ>UEw|#cph~_K4G?oN8=Z?iYL|EHA=5m@3erfdMLFWIyG!nc4PP{AQ zy19jTNye`8C@sUwg78-R>={KrvJ)FJ(c)ywqEf=k_{>=T9z}k$i6gPGmY|3DWf{>bbBXfnK*Y%uBnyVP5(osz}Ji zS#}}4pXAXu@>rnA@p8Orrl?fBiKO7Yk&ssbP8v`!E&uu%rPsa!P&O%R(hd1@CXFbX z`b|k53llK4wJNtXfAWlik@+(V9&2HP%`TiX@zOlJ;z&Ua&(5D)5cgCb3$=84q#u&gaH5b$vmtNVq=QqJUYl3TPI(ads{O^C((>Jg zZuK}xAZ}Hs4VDoXuXf6nU9?_I`A5E&pD%QXuS`Nnm?U0 zI(I@V)#Iv%sAg<~YKHtKs+sYdap^L=%reQ$J#Vx&|NWbhx2yzjhO0HYFDofEN1Zo3 z=C9|C2(x9a5pVh-<=t}c0JF>fIU_6H{OZB+?wBp4Ik-#gol6h9yS6`+vx)cK@%g9I zr|J9wd*8eB`fm^BJUII6MW4A}T&wfHxq9Td<(H%l*}k;bf{*9sP1pIQJxkXmPDmWS z?!5Q5l(fhgoj+^z5@+`Fsn-nM_WBRccb~J!BGfc=B=!&e&+&RV9 z7ECGKu@lzBe{Sj2;u!_yd6XVCZCcTkg67x5Ec=fbL#A?Wb|_93dqB~}E-RQeaB5NM zoiLy7pa)Jkdc*X_az|#Dps|HTbIJPBi;8YJO2uQy4yV^dS?QE7MA}@!9oN=zV3T~G zYNM5U^SYmEYqbLna219I1^XA?l5Ku(lbtBsB1fC`!MMaG951$&ArdoUWDtEG`RGBu zbmbQMO!86VcJChG&4jM3P-jx;sa#|6Is^i#Q`$?H>Zcy)ZCq-m!$6~8XfIVydGul_ zGTW*=z!3W+fHX&cZZz|1G_|OxTVMA{Vk)~ROpiYRlXgLvfxh`L{enO~nAFB$%*^8$ zN*86bm&DWx)LUpYv6Ek*l%$J8gf5}|IR*J}6zDx*cuiES-`&0?(%z^X;7(PM41e6IPQl8Zhw23;)m--oyGF;F`NP{ z@I+AjP}fAzx|wG*vF*EI9W9kFV3gjP(Efx6ubI3IpQp-XWAW?3FMUL9xJVCyqvl~F z;ZTglaUdIy7Zr{{dJN9$=`TM_)lU^@1*W#$e^1ue?}o1mW>2s@;|B}JQ7X1(Mq8^@ z3#SPUP!et~n~HUhqSVBV+;MnBVVIReC6|GBDnV$1cfT_*dKuWy7VO(m2SB70Jt*om zgJI{w;!t)Zdy%5YEeirBXW(zHVhLNcy66ft&QJR{xIrN)gbsX8j=A+$aqmk;4Awl07LT(J9%$_oj zesgU@+9R_SFaFpy7y8GSK1B#|IBynR+~2Nl-5coWvFi>mMYorYw1gnb;TwS?+2!ck z!*xe)LhbIssGyG*W_m>-4b-?g#Nz4^%f=`ffxm$m*aUqs4TM1h;eCWe;%BK%1CcV@ zY89_+7V$c56g8pd$wf=s1@pB6m3Bhy@sdiD`_(ydH5h$mB>3x#<1G9YL&Pkfpq8B3 zEJyUHF@PP*ynQj^O4&5*Qd&B(fsPWIlUB|LISDqV2vtxQsjry6$cwYO4KWWXB=QmiJR0aDE7z&=bt=PR(N%T760b;>MNhdj_PM>I6F<6yms zNz|8tm$eU=IOW^}Bks+)_jt!O?=M(8LNVg-G=>29!B14)p8HI0#`bODtFMLQo#8DX z*7-R+*@fz`xJ00r2j~=?Q;;tdkSSW*>O7s&#+=|J2l6Y5^hrPcC%%=f*vk+U7{gI2 zQD>;3+~|56IDa@_+2vdHQFX}%_<^eaTXn_1bF`W~R!Lx8xr2_hyGKQ%sr^*wbHn2g z^?vxX>?JFbFMnp!^xHZ1!=N!3Io!RPFM#N)nKJmX+wacDPN)tB^X-uP=6Zwe((W<< zm*IA09jNIR+A4Ph(zisS#Pi=FYc5nkZ?e?Ej^RCJE2ztuo2}`lQGATaUKFnMP35fEE!Q)W=rq0 zrKL_)dvog|0=92$>3myynJvA`mOf=mCtH_A8Oyh&*Vxk3fXP~aG{Efb5$1dO1cQm0 z?Z9$4$~ff|hZr{S+uFzs5P9K2bkG+QHCb&}3^hJ5@#?(<1!Aayz{K)DRgGIi zufgow1dU>(*U2R{3PLG$vURStJg02~3VMH6>!B_;`ul&5@30)AP$_<~DJYLdmOQfT z-V?DyGJQ_Iccy1h(Tsw*6KSzlJWHL7D4H^-cy95uQqP#e{5b_vCqfGpdnG30AUzSy zubu``tZE5dsLH4^-I3`U840o3RyNw9j0^$h(odbBRO@I~&tfZUVx%i*OBgMSkA1n@ zGjUFFap^>vPVPBz;P~u;!xION9|%@NH#VfTW=!lPDe{57>wi8eV4y^$nTj_$*=I|a zD3*K&Ekshi7SWEJ(N4iaig9?acJYmKCytpv7n=a7DHG+!RZ3#%jLBNvy7$Q<&Fexf z0f=dhYejFim2r&@xTRFFke?DFXl933o$dO|RjtEbK8D50fKM+|)foL1Tmy|?y!VV6 zG-ycnKxlr%m{H`!+GLUS%cfDh8I5iYVOxo=awr%_y7|Sx4Qo0Ner9uz_$xMS-J}(< z*(RV*5mMQ{3$}Pym6{kt{hO3nzJpf8k;H+)_fuD_S}~2GHxyB+V#HeTD#B{jW`lx)m^2X39~CVUl8VqoTM$v> zo85W4bLplC4$R%`e7t${-n`j2Z)Rsk-nsn8B3EbSBrgHjvhm~TV!8Cx;P7BEGc=?z zb6)Yj!9Ban#s1QhLq$^rQd?rcE7Lf-rL_NXM0plRA%N$Gu|4U7bP?kvUO)R|7^5oW zAt8+kAvnYQ^%Qtja)0%LBGqc8H~6uxxU zKz3G07m2HvP(T*6lU`N6ppqTjP=@W7o15I8g+rZk9*NA55!n z7GNyewPPn1;B-V2q;-t@RxFi{E8h)Ff2+Rxtmg+Qc-JnB|8n$UZ~5?y`u;(HW{l2g zDABHi4wz}#pu_VtMLZE8))DYlKQ;rV4H7oe!2`Qr+;rrjuD6@M(*NoCII2&FmcQx1 z_#fv#?eBc)QtqRLli`VtO($S8nN{H2(NOBx@8{Ep=U(j?82jW378pJrdm_0|>v`|s z>0i48{?9Oeo*udUz`}>!CvQK|^TOV<2FAx%Suc3JOrpj#~nB0_N`};~2uiI#3bAcnevuV6FQW;R3Mx>=@tr$rh&;Zf_Ei-m12_Na8~q7~3LN8G~ob+2g$C zLs(1~vNv78wOXdD12raq>g9mMYA-o$sXGpG=mvRBiiro_9lt?lmLwi0SaZpn!4VPC z#6$irxa0+d%XYMQX55k;i!V?Q?uPcjZ9cG(f^)-%a)lc#cxUpV@@if=!)Lr~^UnsF zS(YpMl%K4~(jYzbvz%4fq_(wwZB_c7?(>p9DZDCrkzVr>P5OoIQ^-z*O}sbM=V-hF zahxu6a#_yMh>tYr4GrWR(T$r(npB&~nP4)Oj3?St@kGk;)d0Ciy0sph@*9A=gB}Qw z5ov{93lMF*rg`apmGnxH`mFhN@Jjv(vNM-RMVr>=db>KKaQ)Nvu0kqN=t?Cm4=LT* z&S*Z7Z!g5NZCexBZQEkm1oN4K{&zEZQ5uhVy|fY}>FQOfB?uoItoQ)9AN+do?3r%5 zDzz&t6xQK>j@KmJ2$C_`C-<2P$z*&?*+?rPQmKZCQEeg5$c+*mZXwSrtpH&F3}rnu Z{W(bGg^QAp_O_CmZiIn4B9)^2dL_O;sD zDkZuRx=@s8wR~G!t4cRgw6vBy@6TOkMyt>7`+A<|k7wp}bI(2Jvz_g8-k)>sr2M>l z`TMSm6S%Y_v4O*%jInYqDn`pszg3*cmr4eHzS1bo;>Hrr*agc1`I39_q%|K8zH*L_ zAlgXFRKrYZ^bX5khMo@I$njy8oX@>1VFm}c#oOZ)LWRLH&N#r(2m~VR2KTDGY)o%s zDG5unv<*wEd@t;>WcYYUdP?QGNQb1dp+`W*B+iEn7ju{=>sLe12L58+i2OVA+(%Mg z$$!+m;=IBU)27cGKzYZ0Rr9X&=98O`qC9t&(*Slendi?9n9*=3QN7ueatvIazcsu0 zr~wLRS(chNt#7jliA`9?EFw&wtY&%+Kh)ont>*o_%91!SzjZ6ektWimekA6>Sgofc zJvr3YIxxnIWp)8i=PNHxyy9T_U`A8N-i}0+TKV0KKslos9eIDJw9KgRFPn-2_GmKS@l>z0{(Zf= z-dwP7Q}4Lck&m7VoYT^)@BRYIiiZ9A=60)Rc(s30#HN0$%+EEf*qi^X%ceQ)HqL)} zQ2+f-OE+$gG5&fYKhS;u+>n(AZXTF)@x4zI=ACVHVA83$yAKX_y4f*ceACRv(ihvL zufB3#;&HX<_8jT?+uWDljtjUeerdUO#nF%Uw>6nxtT)jYqTfIy~V^&+h2bs*sFTV+O5*1%F~m-e#^hn>@5u@ zFI-Tzz_@nj@(n!ZZMQdzTeLkh>f|f0yiy%G@;_ht^?A>^dqmAU70-2D=g~Pm2x(xPh4rij%)FTT2L<~uI_9@pcpm8E>W<Vq9gX+%m3-) z3on*5yEb&@v+i#WuNgRG@am+BqBZ^9T2vS^oi>*bE5G(aNgv+k%DKjk=55$=zaYQS zYsP_YE5mbsKe_CvL+y!_hkU(AAIA) zkP{7BzWB#a5y40A`^^5JU(wlN^K0|VG9B8E&Y98oryBqHDZ_WQ7~HBEh~9Ya$o)$% ze9&*#gs}MAwK2p-QqND%f+3u{+v6tZ12_J z3Hk1813x+O*PF*04PCf2dD_*gdEd|Q`!M_Us-JUigj8pL+F<)8_qqLEoZ0M`>7BD? ze==YSd-v!1zh3fbUe(YJm-DvQg_ZqU|MTLtn}0ff>9Y$Fac}+TayNd`)-TSKoNTc- zYsS{sDu4bDEb|FCA`DKRWsIBX3lset@o5M*Y^Dtv#ohmv+2&} z<&q!&WcZF_SE7xbPrd)sGnKdYh5nrL>@Tk@lN^uM@kJLdCR-ZJNpSQvH#ahNv~tj# zk=`zF6U9XZg{4CaaxK-X2KzWOR~f!V&n+A_HV;mNS&9$(T59(?RtBuTX=o)eBauv6 z@J=yjt|;!HIsyFEijK~Fr?`@Dcpw`(v)39~9&Vm!xw_HQ62Ho^a^aT7jmqlSF>Yd^ zWen_$9mIV#?%&R0?0|u>rn4ElkNXER1=0p==op$Ndl7 zzi7zVz2%I3Nvn>);^YJQxL5izR(5zLW9zWmEPI8qag7-p^D1LK{Lt#F80+QF*d8>; zq9%;ZS;N@yri{I?ma!4d82f1*V{bxU%m&8p!uuv{gcF8u?Y@aI6Iv{6Gg=Dw8Cw|Z zik2F=m9ZeS)a2I~i$hCY+s4>7C)S63^E#RwO>_7S#%7^ux^IU7w8Y#UFa#~IdnXJ- z3l#5WEF3i)Qps2o)a<*r8QX-KCG3M@)aczR#-{mJ4mq^hu=K>%rJv**9@W*=S;k16 z)x>r^@r#}ak+q^RN1|K{P?u4-6sGNRHz!KWM8+b^pGW33WoFdzC)Ce?dzi!+O6#0a zzgxJNW#iGdV!<(2LCDpL&;8tqh_mR``MBPeQ7|0y*~3pYxL##S|ZM+ zI4UWmXWFHY+0vEX{~5+@L|@w&j@hNXznRylAEz1|U|uW){wj-Gzm|8uY3tU{_RO;^ zx4!8hWpVM=JKW0>f8Nis^n93Q(D_));q!xx`KK8hXlZ`o5I2dYFZ1Y1-;1jqIIrCM z{ao&{;A`|2hRE4pY@OYr((zipBlouy-|*uRmihP_S-I`TFD?$FJUMG$Uo@M;*H*^f zztzHdsuyPu{5kuj31zOX!cf`b?C#itvo||%=GK$5S^cU|5@oEa3gdHS-nuFwiZ|dM ztuP2^L`e9aWPxIMG%pAW(lTXacH^{97?HhW8qLSSvH4ESA5a2{J-ZTTWVy5Y&d#3?c3Q4xmtGj6&tewy?9H zQh7{}wN1Ep;Nc!0Y6=__1+R;T^>nP{3Usg3M4 zh_i9r%Y)npX?B4C3wtE~ii74lk=l{RdFo}ZN*Uu~QAh4gs$c8K`+G>5U2aOLT;<$} zzs05VOnlIp=LcQTn;xMR-fiZ1Rulko5*n8w|^C@o3KvG^O6E(k1cSYryxKbv}xK_L=}6s{kJe zNZ})_`TB71!O+5R(5mi(0hF!`VIPc%WWGy0i09!0Xg#6M@>PU~XhM9g!pU1NV^=gG zz8JUaSo3{MxG#in(d3Zu-C}kEs!od(32&qbZ>tG!WEI{B!aMLQ;(P*c>2UPh(hlM_sKeY3t<;^rC(KDOqe_$I4_UE%pU6o9kKQQ$*2(M-GiWj| zMls(jwt+QhvBug&VGY;JXaY0T$=n2H9AsBkB->fh#M+!qU_}UDD#DUs1+DkgLQNrR zD{Cf-iH86H4eh3|VyjlHx`Fk{a05#;_07OzVP;WFJk2#LnpwNEnbv^jZm|6As@QJ) zs?=+h#%l&|9AB+5nPGZIWgwYhdMB<6GecOMmhZrltUl6=DkSnZ#i;H)yw?kw$mWX3 zHJZrgR*}sg6WQDY}bdr6fX=({g>KJMXO{dr`vAqZ8 zk&l(wgv?LG6O77TPJQCOqo>*e;YL8PIgz6XYjaS zeWh!wFcR1$Wo@BMo#k!Oa?2RjpKmj`H%7<34Blmcz5)`cvaNt2R;CazVFlELg`g!= z%^_%sRaS=^VznqlvFL%A-wSK6z5=#`a9SPD^y1yII{Np9wR%~5r3{c$v9`UnpWEx! z&ggBoT81jrvbfxv59Nlcgg!t|O&qjQ5Q)M=%+dNJv)7nWV8?NAkV(so0?8WYq-l$S zHg)_)L7Rf5GO+zF zptxwy6Kmy()p*>qz@zJlQ+TRHc9xx@EKb)$Ji4Ba8qY<0o{mGgm;DT*OXdzh44d4JW5lnD=a>wuIdX zVBO5>Yo;W_6m_yBKh|H#*8WOX2L$?&s-3K~bpxv`6RTlq;vN(P(PlZ3bW;>G(G+yE zD(I#v5SfEe*Uln;5L&aV#*+e`(=1-&Ndb?#E~F?t--;UWc<3=pieiJ8_+t={3`)=> zq$&~;H3_L!38|Wd%)xdNQZ)$^2lGgeBuzqhMMARJKbVJFb#>Qufig&6gVGdAJ*-Ky z>Pk~|-4vNa>~y8+x`sePH%(U$MM8>ZZ4ax29-4$2dkH;s8%RQ`CZVSyp}Qubr&U5v z-G*oFZ0M=m@GK>vdWCL>R%S#3% z*p`hh9-p=4WLGGLURPYWKFmuxIAdI;4^sbD*CCR-W)hN1j~ zdqW7o6k-kWb#M?Dhw{)MRk1vyWX;o%EkR6{Ox-R75Vp9Q+ zwZ>l*d+)TyUysM$J6Rubav|1>iCRNb?CroOiR@9BYIM#+t!1!I4+Bi1kagiGOi$fk zQcUj6r--$S6x&ZOf-jw_$)j-En@7en5&nmh`peHG}bhts_mgJ-(NLvi$emLt{@ zPrAnA2%dM88RrNa2(_PF3>#)>JQOy2^O+)b49^=-re#vRd>Y4gYAu}5V@nkYPRgj! zk)D&ac1~*TG$-za9#iL~6NbZSRv}I<;i1o*W_k=p5%+2Kye6I^ZdE)*+y|{dlJ+Ll zg^+g3Yylqa7pUSX=s(S7iI>M>wCM{CMdP-G#s$JvVi!fY9?Q5`g}Xc^+(nrJ7THC1JnmL??wY!V#Pfot$3xMxMqIS#@v!Rg(Df99 zM-M4H6`r*syVy>TrDyj02DE5ot%`G*Ef=IOx$) zd3`HSeT4^;gm`p>O&c4hfUqxu2MGI*aSFor9}k56l2&Ef&N#(h#uH6CFLb%;qP)=M zUl9W17Oh|_?@GfR1- zRfVr`9ZI`PrQFxLgG74@*tX=Nu9SN>;#wseSsSg9rlkD@-o@$_X&d1*lf~2tJhZtU z^Eb9moW{!7*7vj;)1Fo%ab*JU$QM*Kok*LKJ+!8!5c~}5DH0}OM5l`(li;Z`#QaHE z$a`rd6mg%yPKMh0&CvSW6=%^5tzQK<`91MuR(Vb4PSVi68WV-uXIMXti9&6ai9+qK zl}&u=N(!~VQG}UM%WoJ#IW^yro!9bB>;iU#RTyU$IjevXmrUheO>`$q5%?vBEm(z~ zBJj)XDRFozhD2v^eJYQRe_AV}!1@v!py{B%`m(}9f%P@3TMB?p-)i{|>`Qd-kZJIz zSYDJ&inOn@XT-`R;=>WpqLL5*QcQ&2WzYpU!P$^H2oA`t8GH@^%?f8 zNSF>ZOPxt*wgo!#E2LGe6jI-0*yFfTC{n)9p3``Otvtah4=O^kg3(fcDJ>O@9)C!!I}=evz9xiXX#+2?J`pB= z%KAjOTwnHDLy(HgTSE}SC@7#vqO~aBh{68*OoS1mG){`P9XP;&VnQ33rY;$6V44H> z6Jce%rOy~EF)cb{@kCACMtD+)UQx!q+B#?y6oX$=4y$M#p%~m5$3ALDQ5=4a6^ZIH zrG?Iw@#tV3X;Bz%Lt1|i!*4NhVKZ+m`jm5L>)wYNaTg2MExe^zP|jVg;FH4cGi)5x zQnR*$5$a%S2LsNq@uIpM;6>j%r#PIp8~iJjSsq(~E-w-J6+GO!u|UE1PURGh z3gSW`Pw|z9DtLx_TBkm^OO|+lBCOtrG~_shSAewZZ=SP76pLb=ey z5dMN@2!Xi}zD6^|&1#67Vu&7T6S`BYMd*%z;nx;B)TN?3pe}o)_C$0S57j#EB77IZ z*J-Lftg1a8Q%!(RRZW18RJ#|$?cH9+gRRGIg!)3b9-n$zC3z~6ba+NEP?bb5kosoO za)jhMJR=wgc&5$tdJv*wuX+$d*z53e1+QISZim+h2HNl%9c-yQbg)G{y;mrBt#pOm zjwr!Ea#4p@z;me1yeVs-Kr%l8NTzRq5*CD?5?uv`f{vEFPzM!~d7%yj$qEJUV)a&Z z%4G{s>6AD&WfTMVtlKz8e)9!Wb@GzbTZgbJsAXutY44XOZ8QB7#6}G ziJmKYB${sKO5O$APih&VM;t_HJxS+W>S(5Ot~Ok^o#3R}{yLoe3qq_ejc{ZLmqqF; zJk&b$>6l8D<*UrW2V&tXd@$cq_0uc%;Eqmt2;8}@Qrv#sX~xTDh?8@Qv> z9CaC?(;NbKyNM@LTn3Maj_p*;*iV>OqYLPL3|a%|*hYnNP0kptK=20+fW<_N^wwR&{I~kIxHh}2v|mEF%*DiX5g^q<|giL1!3wz3_#dsOdLJbB@k%CUjzcx9wz`u_$zm_ z9sW`eU~t^CS(%9EH=_ef2-Ml|7vVV@{vtf5`Y6J4rHh0esBVTR-T|kiN2#=#2S+A$??8+6 z5l4w6Q``edknXo=3(ppl8Whna)_^Z!Qjxh6!(IP`iY2+>E<_@_KcihgTL?-o{9IOQMq7z+P9k%cGF9?- z@#vwtL!(_kn?s|wXH`lg+!Cph+F;CaWfjSWVDmi&#x~M#L)0ciXu<+IO_MJlc08mv?eE zT1{Q@y_u7!oldRx7J>ymVx^vk|I@|u%+rD30vAcB<&lj-j4PS;qB18)R``#b_SWX2c4=HR01M;csnB`lbN%&TiaIN3zY?xr>&|-Oav62!UUa9v4ydSAKgTE3s(N5Tt-HuQ?8PpD{!&7H z*tJu6ft6fmebsetAaVKvL4ek_K+p?Y>ZG9;wrGJkznAxFs|V;Rs-<^XsdH(EbDedB z(=O*Oc)kAn?3}firg5LTrMW|3OH*;k9wqRoxA*ZFEBYmfYD2&DzLr`qdS8psZ)TOU zc$8Pcn?4R*ABpNJb-^MMELi)oVCf_(FxAm5y=bK)QhmYNZ?`niE+;Jw)%*Dme8u}b zgF9N98+_an26a+?@nh~e`{Ti4-21#AMU{A=9GCLDA94A8?(6752R_KDJI+%~&PdUl zu}Zn+veC=vho@^|$_d`ni5rn7YHO)OTRdHoMZ!Y4@seV1@$PYK4-YxOoy8BQ`AD~5 zOc&RBA<{rl)rpE~tp3FZxu-aM0lRCoH0YmYTEewnghX#W|DD*AHVyO-5sS?Sd4`)p zia+#zlPrcgNIqh{Q8G#An8-fFQ^k-5vT21uHbJJyage-3^-1n3E}!HMEey)r)v8GD z&DyXbtRIWTc1swG!c!oNX1StSKRHS4ILuA7xYMV?gdv1?$8i~u#@oZ<XR=KYz|CAg4*`|NDX@*$+1>gK%*>r{n@D-o&Zrn{&+~j`B!0QA9FNrCi@tzWQ zv1YrZQ?@!7MC~fMq42uI!^B4)@G!@psY;GqOiPo~#D^d7aEHMPu{JzgiFZ%)7yjS2 zJL-7$zpA6iKF33=7S!;{e>DE*JlXMyz5L%dbl>xQ`~TSSedGXMh6c&Rti(w6#CT)` zgphWnbdH)5A`Z45XN52=W!hCN-@n^VRZ60sS6ASC*!wNm-7XR+JTMX;QXWOVe$onx;yYvGwYM zqHLR*R+R16@<~~ZnpSFdT}zWP#R;M1sAh0UWRNE*3)9j>8mp$27EMsoimo&z-N9ra zqJe6GL8*a8M1t^3MG~seOh#IBGOS!|@Rk~g+8$D@DEF2e;E(1KX*v0FwTEvX zX-}}d1~%L?X-xnr73Uj8?`D#>c;F*BW1y{6ihNeC$9XQ z=1uwq%?sGA&FV}9@U;Ki6!}ZAW5m9Sm0}u8Vks;Jsbm(1bQlf`Qg9E)w;k4zRNOlt zmBbQp#Ud4lzY)j}16MS1qwqI|C6%!m5Y`Qk5nxDGGKrA{B_fZ6B`c!a;W=3m+z$Ck z;EBZFFqB20Bn%}^_W5aUBXm06;7rbe0GtW+V zjCig+F@AXz2+ACdGU+kOnkP_h(rx) ziluI};fN?ro#KgHl@6|}>!4@i{yxnSdpH>rI>G2yEHPf!M2W&7AHn=W~x;P00G3vs!W|KAhOmdJJdL-LawXs+ao zf`1Te{iGOfvw6N${3PNhS8%aJKIR{i39jiMo8%P|Ii7zI(^SwuHsaON^I|Q>FD#X=g?YU0|?+2-G2=&p#?#h8ZBL?{fdD7I%0)w;z{Q-g_id z`^?b=KE`|JcbrH)k@qs%OXnT?H{L4f9rI+imGId*+tk0YDdvi0e**Xaa+go#HDcEt ze%A42>9WU@>z?m!6ZYbhgjMC<|F^owVoA~s>1WRif1?`m;4U{+b$-Z;pIj4PEM&TX zzW*-3zwX}z+-qPHkoB(u_CApQ#ej1SZTzGDmA~q|B%R~J^BZn(3Pyi>!)PXkHIN!K zCF^tG^YvPk+X-ChL;p>}`^hnpyUL;JyyRs0?LnuIN5?o@XJF+f1kTz=OVe7R=Z7h2 zvGp3yK;P|GOAIiJt?-iYV)b3k@v4C9d?{~DKXs)I=!v*0aE-@Rii`3mX!l9DKQAu)$eS7HAYWAYO6`V0JmwYQ z4FW-CElqYNQ2KH7!-A2OrqUSNBVBBlUT>GKv89DaBgrQSP=;gz#}QkOU3#%yx?0q0 zBsK6rgRxpI8);Dl3Gg7E@EG`6h7={L8%cNvT71(;!U?)?X{_8jskhO%0So$)mjei+ zJ~1P$W5LSC3Kl$z8xY=PmC8W3avK#}tYkQ03<0wt9f0ls|eBX}9K)X|WnzeLqq=PAq?xg`XnbHmw zCSx#cSrjT&8UUudiUUDX6GsE}Mom|7qYYqed6?v#i_YnaJeW?r_tdl$gS07L%_lsc zpr#F!pJta|PU&(d3_x{0l5M17u0~IGu8dbvvuC(OKla`qFS@ppyaVs4B+l6&F(u#+ zEGAX?TAIenfN&`gEn2Q+Q7i3E5NpknclV=eo)cMJtEOF(kOoL3QBEW(O-;K|ex_ai zN;T~O8gUIOXxK%l!!AO38X6(_z|@2!k=X>2fFNv9_Ju9_h?vksT*_`;=>Z1o`J`>5))9 zI8y3P)}$aGAr4hySELfFRI6D=(sVRMTnv!BUCtp-AIct45^d!KMM+sScBgfe&dM}~ zyGqCD-YiMFLU%b;a-psep6Qael&0Mmt9SQv5Kfy?$&*EwUA=QArkv(i#hSpOcqyQK^q+MgvRWu#>FPwXf4uSn@p zSeo}-9vg2CI`;6ug}2zR`?h_4b?--?u-aqqe_nay^>?qX*qXH2r=iDI~+IcZtdo5#>h-9m>aa9yD|5;%UqX|qS3uwKc3}SP~p(U9F{C6 zbJk;|IUsjVVLx)7O6FXooC}WOc=Ke+d&2e##4%|_0-oT zDeD5ti|W<|d?(fgtP5BikcZ+!{$+V6Zf<-z;QAPILCZzvy7a*zGZQX-YsxGAmKnEQ z-6daPAHSJ3VYoTDh>aaylvFf1VrY4CS^luX=kkKr&-Qn79_F}SK4c84{GAUZ+2egj4n6cpy>P5!CB-yuFHqsJw_zHofe zq$N$|!UzL0g55BSb*!#m=Ehg5&%{lrRpHM?{ zLvh)l#DwQ2<_%y)<3|rKDjMCMW##APm6o(m4l9~aSSt07ZV=wSIx#o5M`_+}r)F|_ zX-RNF>-L2SizkH3K{;9G>BcMUb7T91A1(ElERN$0xA>RMf^wRE`@3s_xt;mj!C^en zui2qz=Cmkw{HnfI_8($qcb}3`s z#upWLE1Fd3nNd(uS})8Tbe8@2?x};fzS?^%$I`HRGa=7h+qtVbU|8^ChnRge#&s1d zbD9?!i;M-vh}I*FbqS$HP_QppsZH#imVy`f-zU*>LAYXJlqAv^JwPAUMxx-@rjAZ7Z;lF0)pYr)K z?{&wA#g_0F9H*9F9ytEZw&e-En9JB(#8(rd0)BXzwY<`*IV6> z?Xy>5pS?M!{cMT%6-in0ffYmK@)bSgQU}@=P4E^|d&pB=M#K3(rL0=ax!3~tK74E}dp`HS=EfM%RL%ayin#>)7Ek1+L@Kf>DkS%2BjlO-2v^F8=n z4s&8v_xj7fVK1ucr>EtneCe@R^*_*bJ{F=R#F)!?51s(=CP>l^evj1LY70 z>{4+2TZ+C7uo?gHAbHQyhlN$;&&k<5n)cHk_LzrvccA965B<7_UO=Fw-QlrP{J%S2 z2paYh_cBaAAeDCrbVt=;WjYo=y*>b0Wug3i97E|Z;o!hPPKfAd*nL7>} zIPAsn?yUZ%L%h5bmavg~!wZOT{TBBGpR1Otoi{^(do*TUo`gU;#e;B z^TJW>){-mBV)-l&-%{-4)zw|GpiSrlfWht=#G(Q@z=!r2qw&>Q!$8tqRH#(?3G3!vWsBd|3RJ$@}Pf`$0+1!kCTfX zqvRItRO0&VDOQ5&jK@}F5&n)vMM*=Czp*?TCAVo!{qndu(F$?T$BFTpbKlW8y@(X0 zqvcNG_Gmdr6pfX=mJ~;c24iLOlH&OyQh7Fs?qlU(F?x&~RThROq(N8z;iQ3~+3UJ* z^1r-k`AyR`%ENqRMe)}cyDsmPG4Jf~WiK5M3)l1C?)2QgN&Tny68&Okx($2TPtR}J zbLowe=j$cB{lSNghxtY*`^6-urj>MQ+?gFcw-mJ=IQ+C@YmL4;yR&V_Gv!kg`YgIM z?B!Xthm_qsVtB_h<%>Q)Zb|(hVE>uHUya_SE1-KOj4lTaW7GL0oaLYEED{Ul2Cjyb z$s_W{l()@cvO(k&%BejJPbVd2jxQROH=^{w!5lHg4gK>AN(N}_`1C7O zuB_#8wT-Rmh#!@-SWzU8iW^osj4)jj`sYyeo2Xg1X5*TJ>jhkMam~Z^60VnV(L0~y zbry)evb^i9Vl(GO*lLIu)#GG?30p#}9xm$%GcOYpmdRNn?F0|OKau)4`l-MAR5>bgQcEN@*R%llrH6XX?Z~S&nSAd&yx6Gt2 z0jbHUDJikhQ8BS`NilKig|hC+T>_#aqQatM!Xx6kg-6mA6HyhnUY^B8^#(a%-)4D< zWSTZeIk=axF&-qUw_=gmCYMSFVBa=*rtt(UDL|8@i(?nKyO{YYcc5c+)6$2z|Hv_m NgxBQieQ%%*{uj@#(RTm< diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/dto/RegionioDto.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/dto/RegionioDto.java index 32f1f66..5a25e14 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/dto/RegionioDto.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/dto/RegionioDto.java @@ -68,7 +68,7 @@ public class RegionioDto implements Serializable { /** * 起始点位编码 */ - private String start_point_code; + private String point_code1; /** * 终点点位编码 diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/RegionioInServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/RegionioInServiceImpl.java index 66d105b..2fe7abd 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/RegionioInServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/RegionioInServiceImpl.java @@ -56,7 +56,7 @@ public class RegionioInServiceImpl implements RegionioInService { String vehicle_code = MapUtil.getStr(whereJson, "vehicle_code"); String material_code = MapUtil.getStr(whereJson, "material_code"); String pcsn = MapUtil.getStr(whereJson, "pcsn"); - String start_point_code = MapUtil.getStr(whereJson, "start_point_code"); + String point_code1 = MapUtil.getStr(whereJson, "point_code1"); String end_point_code = MapUtil.getStr(whereJson, "end_point_code"); String start_region_code = MapUtil.getStr(whereJson, "start_region_code"); String end_region_code = MapUtil.getStr(whereJson, "end_region_code"); @@ -68,7 +68,7 @@ public class RegionioInServiceImpl implements RegionioInService { if (ObjectUtil.isNotEmpty(vehicle_code)) map.put("vehicle_code", vehicle_code + "%"); if (ObjectUtil.isNotEmpty(material_code)) map.put("material_code", material_code + "%"); if (ObjectUtil.isNotEmpty(pcsn)) map.put("pcsn", pcsn + "%"); - if (ObjectUtil.isNotEmpty(start_point_code)) map.put("start_point_code", start_point_code + "%"); + if (ObjectUtil.isNotEmpty(point_code1)) map.put("point_code1", point_code1 + "%"); if (ObjectUtil.isNotEmpty(end_point_code)) map.put("end_point_code", end_point_code + "%"); if (ObjectUtil.isNotEmpty(start_region_code)) map.put("start_region_code", start_region_code + "%"); if (ObjectUtil.isNotEmpty(end_region_code)) map.put("end_region_code", end_region_code + "%"); @@ -201,13 +201,13 @@ public class RegionioInServiceImpl implements RegionioInService { WQLObject orderTab = WQLObject.getWQLObject("PDM_BD_WorkOrder"); JSONObject jsonIn = wo.query("iostorinv_id = '" + iostorinv_id + "'").uniqueResult(0); - String start_point_code = jsonIn.getString("start_point_code"); + String point_code1 = jsonIn.getString("point_code1"); // 准备参数 并调用入库处理类中的创建任务方法 JSONObject form = new JSONObject(); form.put("vehicle_code", jsonIn.getString("vehicle_code")); - form.put("start_point_code", start_point_code); - form.put("next_point_code", jsonIn.getString("end_point_code")); + form.put("point_code1", point_code1); + form.put("point_code2", jsonIn.getString("end_point_code")); form.put("material_id", jsonIn.getString("material_id")); form.put("qty", jsonIn.getString("qty")); form.put("cust_id", jsonIn.getString("cust_id")); @@ -216,7 +216,7 @@ public class RegionioInServiceImpl implements RegionioInService { form.put("iostorinv_id", iostorinv_id); // 根据起点点位 找到对应设备,根据设备找到对应工单,根据工单获取载具类型 - String device_code = start_point_code.substring(0, start_point_code.indexOf("_")); + String device_code = point_code1.substring(0, point_code1.indexOf("_")); DeviceService deviceBean = SpringContextHolder.getBean(DeviceService.class); DeviceDto deviceDto = deviceBean.findByCode(device_code); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/wql/ST_REGION_IN_01.wql b/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/wql/ST_REGION_IN_01.wql index 2df5afe..ed20f8b 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/wql/ST_REGION_IN_01.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/wql/ST_REGION_IN_01.wql @@ -19,7 +19,7 @@ 输入.vehicle_code TYPEAS s_string 输入.material_code TYPEAS s_string 输入.pcsn TYPEAS s_string - 输入.start_point_code TYPEAS s_string + 输入.point_code1 TYPEAS s_string 输入.end_point_code TYPEAS s_string 输入.start_region_code TYPEAS s_string 输入.end_region_code TYPEAS s_string @@ -64,7 +64,7 @@ LEFT JOIN md_pb_measureunit unit ON unit.measure_unit_id = ios.qty_unit_id LEFT JOIN SCH_BASE_Region region1 ON region1.region_id = ios.start_region_id LEFT JOIN SCH_BASE_Region region2 ON region2.region_id = ios.end_region_id - LEFT JOIN sch_base_point point1 ON point1.point_code = ios.start_point_code + LEFT JOIN sch_base_point point1 ON point1.point_code = ios.point_code1 LEFT JOIN sch_base_point point2 ON point2.point_code = ios.end_point_code WHERE ios.is_delete = '0' @@ -91,9 +91,9 @@ mater.material_name like 输入.material_code) ENDOPTION - OPTION 输入.start_point_code <> "" - (point1.point_code like 输入.start_point_code or - point1.point_name like 输入.start_point_code) + OPTION 输入.point_code1 <> "" + (point1.point_code like 输入.point_code1 or + point1.point_name like 输入.point_code1) ENDOPTION OPTION 输入.end_point_code <> "" diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/impl/RegionioOutServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/impl/RegionioOutServiceImpl.java index 0599fd1..7bbdfa0 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/impl/RegionioOutServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/impl/RegionioOutServiceImpl.java @@ -47,7 +47,7 @@ public class RegionioOutServiceImpl implements RegionioOutService { String vehicle_code = MapUtil.getStr(whereJson, "vehicle_code"); String material_code = MapUtil.getStr(whereJson, "material_code"); String pcsn = MapUtil.getStr(whereJson, "pcsn"); - String start_point_code = MapUtil.getStr(whereJson, "start_point_code"); + String point_code1 = MapUtil.getStr(whereJson, "point_code1"); String end_point_code = MapUtil.getStr(whereJson, "end_point_code"); String start_region_code = MapUtil.getStr(whereJson, "start_region_code"); String end_region_code = MapUtil.getStr(whereJson, "end_region_code"); @@ -59,7 +59,7 @@ public class RegionioOutServiceImpl implements RegionioOutService { if (ObjectUtil.isNotEmpty(vehicle_code)) map.put("vehicle_code", vehicle_code + "%"); if (ObjectUtil.isNotEmpty(material_code)) map.put("material_code", material_code + "%"); if (ObjectUtil.isNotEmpty(pcsn)) map.put("pcsn", pcsn + "%"); - if (ObjectUtil.isNotEmpty(start_point_code)) map.put("start_point_code", start_point_code + "%"); + if (ObjectUtil.isNotEmpty(point_code1)) map.put("point_code1", point_code1 + "%"); if (ObjectUtil.isNotEmpty(end_point_code)) map.put("end_point_code", end_point_code + "%"); if (ObjectUtil.isNotEmpty(start_region_code)) map.put("start_region_code", start_region_code + "%"); if (ObjectUtil.isNotEmpty(end_region_code)) map.put("end_region_code", end_region_code + "%"); @@ -193,8 +193,8 @@ public class RegionioOutServiceImpl implements RegionioOutService { // 准备参数 并调用入库处理类中的创建任务方法 JSONObject form = new JSONObject(); form.put("vehicle_code", jsonIn.getString("vehicle_code")); - form.put("start_point_code", jsonIn.getString("start_point_code")); - form.put("next_point_code", jsonIn.getString("end_point_code")); + form.put("point_code1", jsonIn.getString("point_code1")); + form.put("point_code2", jsonIn.getString("end_point_code")); form.put("material_id", jsonIn.getString("material_id")); form.put("qty", jsonIn.getString("qty")); form.put("cust_id", jsonIn.getString("cust_id")); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/wql/ST_REGION_OUT_01.wql b/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/wql/ST_REGION_OUT_01.wql index a42ecfe..ce19ed4 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/wql/ST_REGION_OUT_01.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/wql/ST_REGION_OUT_01.wql @@ -20,7 +20,7 @@ 输入.material_code TYPEAS s_string 输入.material_id TYPEAS s_string 输入.pcsn TYPEAS s_string - 输入.start_point_code TYPEAS s_string + 输入.point_code1 TYPEAS s_string 输入.end_point_code TYPEAS s_string 输入.start_region_code TYPEAS s_string 输入.end_region_code TYPEAS s_string @@ -67,7 +67,7 @@ LEFT JOIN md_pb_measureunit unit ON unit.measure_unit_id = ios.qty_unit_id LEFT JOIN SCH_BASE_Region region1 ON region1.region_id = ios.start_region_id LEFT JOIN SCH_BASE_Region region2 ON region2.region_id = ios.end_region_id - LEFT JOIN sch_base_point point1 ON point1.point_code = ios.start_point_code + LEFT JOIN sch_base_point point1 ON point1.point_code = ios.point_code1 LEFT JOIN sch_base_point point2 ON point2.point_code = ios.end_point_code WHERE ios.is_delete = '0' @@ -94,9 +94,9 @@ mater.material_name like 输入.material_code) ENDOPTION - OPTION 输入.start_point_code <> "" - (point1.point_code like 输入.start_point_code or - point1.point_name like 输入.start_point_code) + OPTION 输入.point_code1 <> "" + (point1.point_code like 输入.point_code1 or + point1.point_name like 输入.point_code1) ENDOPTION OPTION 输入.end_point_code <> "" diff --git a/lms/nladmin-ui/src/views/system/dict/dictDetail.vue b/lms/nladmin-ui/src/views/system/dict/dictDetail.vue index 6a74f3a..b62c9f7 100644 --- a/lms/nladmin-ui/src/views/system/dict/dictDetail.vue +++ b/lms/nladmin-ui/src/views/system/dict/dictDetail.vue @@ -8,12 +8,27 @@
- +
- + @@ -22,7 +37,22 @@ - + + + + + + + + + + - + {{ query.dictName }} - + + + +