From b2a578ffd5bc01d51a4b111b7d1dc306feac8179 Mon Sep 17 00:00:00 2001 From: liuxy Date: Tue, 6 Feb 2024 18:01:46 +0800 Subject: [PATCH] =?UTF-8?q?add=EF=BC=9A=E6=8D=86=E6=89=8E=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../point/dao/mapper/SchBasePointMapper.java | 9 +- .../point/dao/mapper/SchBasePointMapper.xml | 27 +++ .../org/nl/b_lms/sch/tasks/TwoLashTask.java | 196 ++++++++++++++++++ .../BstIvtBoxlashboundController.java | 19 ++ .../service/IBstIvtBoxlashboundService.java | 16 ++ .../database/service/dao/BstIvtBoxinfo.java | 5 + .../service/dao/BstIvtBoxlashbound.java | 38 ++++ .../dao/mapper/BstIvtBoxlashboundMapper.java | 16 ++ .../dao/mapper/BstIvtBoxlashboundMapper.xml} | 3 +- .../impl/BstIvtBoxinfoServiceImpl.java | 2 + .../impl/BstIvtBoxlashboundServiceImpl.java | 20 ++ .../util/impl/LashManageServiceImpl.java | 196 ++++++++++++++++++ .../util/service/LashManageService.java | 25 +++ .../java/org/nl/wms/basedata/st/wql/stivt.xls | Bin 368640 -> 333312 bytes .../nl/wms/pda/mps/eum/RegionTypeEnum.java | 3 +- .../outbill/rest/CheckOutBillController.java | 17 +- 16 files changed, 584 insertions(+), 8 deletions(-) create mode 100644 lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/mapper/SchBasePointMapper.xml create mode 100644 lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoLashTask.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/controller/BstIvtBoxlashboundController.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/service/IBstIvtBoxlashboundService.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/service/dao/BstIvtBoxlashbound.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/service/dao/mapper/BstIvtBoxlashboundMapper.java rename lms/nladmin-system/src/main/java/org/nl/b_lms/{sch/point/dao/xml/SchBasePointMapper.xml => storage_manage/database/service/dao/mapper/BstIvtBoxlashboundMapper.xml} (60%) create mode 100644 lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/service/impl/BstIvtBoxlashboundServiceImpl.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/LashManageServiceImpl.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/service/LashManageService.java diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/mapper/SchBasePointMapper.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/mapper/SchBasePointMapper.java index 9bf1c28f7..adf1a31ec 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/mapper/SchBasePointMapper.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/mapper/SchBasePointMapper.java @@ -1,8 +1,11 @@ package org.nl.b_lms.sch.point.dao.mapper; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.nl.b_lms.sch.point.dao.SchBasePoint; +import java.util.List; + /** * {@code @Description:} 点位基础表(SchBasePoint)数据持久层 * {@code @Author:} gbx @@ -11,5 +14,9 @@ import org.nl.b_lms.sch.point.dao.SchBasePoint; */ public interface SchBasePointMapper extends BaseMapper { - + /** + * 获取捆扎区域的点位木箱信息 + * @return 点位木箱信息集合 + */ + List queryKZPoint(); } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/mapper/SchBasePointMapper.xml b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/mapper/SchBasePointMapper.xml new file mode 100644 index 000000000..d39f1f697 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/mapper/SchBasePointMapper.xml @@ -0,0 +1,27 @@ + + + + + diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoLashTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoLashTask.java new file mode 100644 index 000000000..5335da5c6 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoLashTask.java @@ -0,0 +1,196 @@ +package org.nl.b_lms.sch.tasks; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.NumberUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import org.nl.b_lms.sch.point.dao.SchBasePoint; +import org.nl.b_lms.sch.point.service.IschBasePointService; +import org.nl.b_lms.storage_manage.database.service.IBstIvtBoxlashboundService; +import org.nl.b_lms.storage_manage.database.service.dao.BstIvtBoxlashbound; +import org.nl.b_lms.storage_manage.ios.enums.IOSEnum; +import org.nl.common.utils.SecurityUtils; +import org.nl.modules.common.exception.BadRequestException; +import org.nl.modules.wql.core.bean.WQLObject; +import org.nl.wms.sch.AcsTaskDto; +import org.nl.wms.sch.manage.AbstractAcsTask; +import org.nl.wms.sch.manage.TaskStatusEnum; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + +/** + * 二期捆扎任务类 + * Created by Lxy on 2024/1/19. + */ +public class TwoLashTask extends AbstractAcsTask { + + /** + * 处理类 + */ + private final String THIS_CLASS = TwoLashTask.class.getName(); + + @Override + public List addTask() { + /* + * 下发给ACS时需要特殊处理 + */ + JSONArray arr = WQLObject.getWQLObject("SCH_BASE_Task").query("handle_class = '" + THIS_CLASS + "' and task_status = '" + TaskStatusEnum.START_AND_POINT.getCode() + "' and is_delete ='0'").getResultJSONArray(0); + + ArrayList resultList = new ArrayList<>(); + for (int i = 0; i < arr.size(); i++) { + JSONObject json = arr.getJSONObject(i); + + char dtl_type = json.getString("task_type").charAt(json.getString("task_type").length() - 1); + AcsTaskDto dto = AcsTaskDto.builder() + .ext_task_id(json.getString("task_id")) + .task_code(json.getString("task_code")) + .task_type(json.getString("acs_task_type")) + .start_device_code(json.getString("point_code1")) + .next_device_code(json.getString("point_code2")) + .vehicle_code(json.getString("vehicle_code")) + .priority(json.getString("priority")) + .class_type(json.getString("task_type")) + .dtl_type(String.valueOf(dtl_type)) + .remark(json.getString("remark")) + .build(); + resultList.add(dto); + } + return resultList; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void updateTaskStatus(JSONObject taskObj, String status) { + // 点位表 + WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); + // 木箱绑定表 + WQLObject boxTab = WQLObject.getWQLObject("bst_ivt_boxlashbound"); + + // 更新任务的参数 + JSONObject map = new JSONObject(); + + /* + * 1-执行中, 2-完成 ,0-acs取消 + */ + // 执行中 + if (status.equals(TaskStatusEnum.EXECUTING.getCode())) { + + map.put("task_status", TaskStatusEnum.EXECUTING.getCode()); + } + + // 完成 + if (status.equals(TaskStatusEnum.FINISHED.getCode())) { + + map.put("task_status", TaskStatusEnum.FINISHED.getCode()); + } + + // 取消 + if (status.equals(IOSEnum.IS_NOTANDYES.code("否"))) { + + if (taskObj.getIntValue("task_status") > Integer.valueOf(TaskStatusEnum.ISSUE.getCode())) { + throw new BadRequestException("任务已执行不能取消"); + } + + // 更新任务表删除字段 + map.put("is_delete", IOSEnum.IS_NOTANDYES.code("是")); + + // 减去终点点位载具数量 + JSONObject pointDao = pointTab.query("point_code = '" + taskObj.getString("point_code2") + "'").uniqueResult(0); + + pointDao.put("vehicle_qty", NumberUtil.sub(pointDao.getIntValue("vehicle_qty"),1)); + + if (pointDao.getIntValue("vehicle_qty") <= 0) { + // 清空载具号 + pointDao.put("vehicle_code", ""); + pointDao.put("vehicle_qty",0); + } + pointTab.update(pointDao); + + // 删除木箱绑定数据 + boxTab.delete("box_no = '"+taskObj.getString("vehicle_code")+"'"); + + } + map.put("update_optid", SecurityUtils.getCurrentUserId()); + map.put("update_optname", SecurityUtils.getCurrentNickName()); + map.put("update_time", DateUtil.now()); + + WQLObject.getWQLObject("SCH_BASE_Task").update(map, "task_id = '" + taskObj.getString("task_id") + "'"); + } + + @Override + public void findStartPoint() { + + } + + @Override + public void findNextPoint() { + + } + + @Override + @Transactional(rollbackFor = Exception.class) + public String createTask(JSONObject form) { + + if (StrUtil.isBlank(form.getString("task_type"))) { + throw new BadRequestException("业务类型不能为空!"); + } + + if (StrUtil.isBlank(form.getString("start_device_code"))) { + throw new BadRequestException("起点不能为空!"); + } + + if (StrUtil.isBlank(form.getString("next_device_code"))) { + throw new BadRequestException("终点不能为空!"); + } + + if (StrUtil.isBlank(form.getString("vehicle_code"))) { + throw new BadRequestException("托盘号不能为空!"); + } + + if (StrUtil.isBlank(form.getString("is_auto_issue"))) { + throw new BadRequestException("是否自动下发不能为空!"); + } + + JSONObject json = new JSONObject(); + json.put("task_id", IdUtil.getSnowflake(1, 1).nextId()); + json.put("task_code", IdUtil.getSnowflake(1, 1).nextId()); + json.put("task_type", form.getString("task_type")); + json.put("vehicle_code", form.getString("vehicle_code")); + json.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); + json.put("point_code1", form.getString("start_device_code")); + json.put("point_code2", form.getString("next_device_code")); + json.put("is_auto_issue", form.getString("is_auto_issue")); + json.put("handle_class", this.getClass().getName()); + json.put("create_id", SecurityUtils.getCurrentUserId()); + json.put("create_name", SecurityUtils.getCurrentUsername()); + json.put("create_time", DateUtil.now()); + json.put("priority", "1"); + json.put("acs_task_type", "7"); + + WQLObject.getWQLObject("SCH_BASE_Task").insert(json); + return json.getString("task_id"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void forceFinish(String task_id) { + JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0); + this.updateTaskStatus(taskObj, TaskStatusEnum.FINISHED.getCode()); + } + + @Override + public void cancel(String task_id) { + JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0); + this.updateTaskStatus(taskObj, IOSEnum.ACS_RESULT.code("取消")); + } +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/controller/BstIvtBoxlashboundController.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/controller/BstIvtBoxlashboundController.java new file mode 100644 index 000000000..c1863126a --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/controller/BstIvtBoxlashboundController.java @@ -0,0 +1,19 @@ +package org.nl.b_lms.storage_manage.database.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 前端控制器 + *

+ * + * @author author + * @since 2024-02-06 + */ +@RestController +@RequestMapping("/bst-ivt-boxlashbound") +public class BstIvtBoxlashboundController { + +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/service/IBstIvtBoxlashboundService.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/service/IBstIvtBoxlashboundService.java new file mode 100644 index 000000000..ecb201146 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/service/IBstIvtBoxlashboundService.java @@ -0,0 +1,16 @@ +package org.nl.b_lms.storage_manage.database.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.b_lms.storage_manage.database.service.dao.BstIvtBoxlashbound; + +/** + *

+ * 服务类 + *

+ * + * @author author + * @since 2024-02-06 + */ +public interface IBstIvtBoxlashboundService extends IService { + +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/service/dao/BstIvtBoxinfo.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/service/dao/BstIvtBoxinfo.java index 22e4712ec..4a0d58f36 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/service/dao/BstIvtBoxinfo.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/service/dao/BstIvtBoxinfo.java @@ -67,6 +67,11 @@ public class BstIvtBoxinfo implements Serializable { */ private String box_high; + /* + * 捆绑数量 + */ + private String lash_num; + /* * 插入时间 */ diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/service/dao/BstIvtBoxlashbound.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/service/dao/BstIvtBoxlashbound.java new file mode 100644 index 000000000..ddf4e4f1d --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/service/dao/BstIvtBoxlashbound.java @@ -0,0 +1,38 @@ +package org.nl.b_lms.storage_manage.database.service.dao; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Builder; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author author + * @since 2024-02-06 + */ +@Data +@Builder +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("bst_ivt_boxlashbound") +public class BstIvtBoxlashbound implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId + private Long lash_id; + + private Long bound_id; + + private String box_no; + + +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/service/dao/mapper/BstIvtBoxlashboundMapper.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/service/dao/mapper/BstIvtBoxlashboundMapper.java new file mode 100644 index 000000000..68e092ce2 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/service/dao/mapper/BstIvtBoxlashboundMapper.java @@ -0,0 +1,16 @@ +package org.nl.b_lms.storage_manage.database.service.dao.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.nl.b_lms.storage_manage.database.service.dao.BstIvtBoxlashbound; + +/** + *

+ * Mapper 接口 + *

+ * + * @author author + * @since 2024-02-06 + */ +public interface BstIvtBoxlashboundMapper extends BaseMapper { + +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/xml/SchBasePointMapper.xml b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/service/dao/mapper/BstIvtBoxlashboundMapper.xml similarity index 60% rename from lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/xml/SchBasePointMapper.xml rename to lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/service/dao/mapper/BstIvtBoxlashboundMapper.xml index 1f63febf6..c9599a51a 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/xml/SchBasePointMapper.xml +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/service/dao/mapper/BstIvtBoxlashboundMapper.xml @@ -1,6 +1,5 @@ - - + diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/service/impl/BstIvtBoxinfoServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/service/impl/BstIvtBoxinfoServiceImpl.java index 71fe13d02..2d0db4a18 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/service/impl/BstIvtBoxinfoServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/service/impl/BstIvtBoxinfoServiceImpl.java @@ -34,6 +34,8 @@ public class BstIvtBoxinfoServiceImpl extends ServiceImpl + * 服务实现类 + *

+ * + * @author author + * @since 2024-02-06 + */ +@Service +public class BstIvtBoxlashboundServiceImpl extends ServiceImpl implements IBstIvtBoxlashboundService { + +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/LashManageServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/LashManageServiceImpl.java new file mode 100644 index 000000000..fa6c19424 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/LashManageServiceImpl.java @@ -0,0 +1,196 @@ +package org.nl.b_lms.storage_manage.ios.service.iostorInv.util.impl; + +import cn.hutool.core.util.NumberUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.b_lms.sch.point.dao.SchBasePoint; +import org.nl.b_lms.sch.point.dao.mapper.SchBasePointMapper; +import org.nl.b_lms.sch.point.service.IschBasePointService; +import org.nl.b_lms.sch.tasks.TwoLashTask; +import org.nl.b_lms.storage_manage.database.service.IBstIvtBoxinfoService; +import org.nl.b_lms.storage_manage.database.service.IBstIvtBoxlashboundService; +import org.nl.b_lms.storage_manage.database.service.dao.BstIvtBoxinfo; +import org.nl.b_lms.storage_manage.database.service.dao.BstIvtBoxlashbound; +import org.nl.b_lms.storage_manage.ios.enums.IOSEnum; +import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.LashManageService; +import org.nl.common.utils.IdUtil; +import org.nl.modules.common.exception.BadRequestException; +import org.nl.modules.wql.core.bean.WQLObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.stream.Collectors; + +/** + *

+ * 捆扎业务处理 服务实现类 + *

+ * + * @author generator + * @since 2023-11-10 + */ +@Service +@RequiredArgsConstructor +public class LashManageServiceImpl implements LashManageService { + + /** + * 木箱信息服务 + */ + @Autowired + private IBstIvtBoxinfoService iBstIvtBoxinfoService; + + /** + * 点位服务 + */ + @Autowired + private IschBasePointService ischBasePointService; + + /** + * 点位mapper服务 + */ + @Autowired + private SchBasePointMapper schBasePointMapper; + + /** + * 木箱捆扎绑定服务 + */ + @Autowired + private IBstIvtBoxlashboundService iBstIvtBoxlashboundService; + + @Override + @Transactional + public void createLashTask(JSONObject whereJson) { + /* + * 1.判断此木箱是否需要堆叠 + * 2.插入木箱捆扎绑定表 + * 3.生成任务 + */ + // 查询木箱信息 + BstIvtBoxinfo boxDao = iBstIvtBoxinfoService.getOne( + new QueryWrapper().lambda() + .eq(BstIvtBoxinfo::getBox_no, whereJson.getString("box_no")) + ); + + if (ObjectUtil.isEmpty(boxDao)) { + throw new BadRequestException("没有此木箱信息:"+whereJson.getString("box_no")); + } + + JSONObject jsonSub = WQLObject.getWQLObject("pdm_bi_subpackagerelation") + .query("package_box_sn = '" + boxDao.getBox_no() + "'") + .uniqueResult(0); + + /* + * 查看点位是否为空: + * 为空记当前载具号,载具数量为1, + * 不为空,加载具数量,当点位载具数量与木箱信息捆扎数量相同时下发捆绑 + */ + // 查询捆扎的两个点位及木箱信息 + List pointDaoList = schBasePointMapper.queryKZPoint(); + + if (ObjectUtil.isEmpty(pointDaoList)) { + throw new BadRequestException("点位不存在,或未启用!"); + } + + // 是否要移动至捆扎位 + String is_move = IOSEnum.IS_NOTANDYES.code("否"); + // 桁架任务终点 + String end_point; + + // 判断是否有相同订单号、木箱规格的木箱 + List likeBoxList = pointDaoList.stream() + .filter(row -> ObjectUtil.isNotEmpty(row.getString("box_length")) && + ObjectUtil.isNotEmpty(row.getString("box_width")) && + ObjectUtil.isNotEmpty(row.getString("box_high")) && + ObjectUtil.isNotEmpty(row.getString("sale_order_name")) + + ) + .filter(row -> row.getString("box_length").equals(boxDao.getBox_length()) && + row.getString("box_width").equals(boxDao.getBox_width()) && + row.getString("box_high").equals(boxDao.getBox_high()) && + row.getString("sale_order_name").equals(jsonSub.getString("sale_order_name")) + ) + .collect(Collectors.toList()); + + if (ObjectUtil.isNotEmpty(likeBoxList)) { + // 加载具数量 + JSONObject jsonPoint = likeBoxList.get(0); + + jsonPoint.put("vehicle_qty", NumberUtil.add(jsonPoint.getBigDecimal("vehicle_qty"),1)); + + if (jsonPoint.getIntValue("vehicle_qty") == Integer.parseInt(boxDao.getLash_num())) { + // 相同清空载具以及数量 + jsonPoint.put("vehicle_qty",0); + jsonPoint.put("vehicle_code",""); + is_move = IOSEnum.IS_NOTANDYES.code("是"); + } + + end_point = jsonPoint.getString("point_code"); + ischBasePointService.updateById(JSON.parseObject(jsonPoint.toString(), SchBasePoint.class)); + + // 查询此点位绑定木箱表 + BstIvtBoxlashbound boundDao = iBstIvtBoxlashboundService.getOne( + new QueryWrapper().lambda() + .eq(BstIvtBoxlashbound::getBox_no, jsonPoint.getString("box_no")) + ); + /* + * 插入绑定木箱表 + */ + BstIvtBoxlashbound insertBound = BstIvtBoxlashbound.builder() + .lash_id(IdUtil.getLongId()) + .bound_id(boundDao.getBound_id()) + .box_no(boxDao.getBox_no()) + .build(); + iBstIvtBoxlashboundService.save(insertBound); + + } else { + // 判断是否有载具 + List empPointList = pointDaoList.stream() + .filter(row -> ObjectUtil.isEmpty(row.getString("vehicle_code"))) + .collect(Collectors.toList()); + + if (ObjectUtil.isNotEmpty(empPointList)) { + // 有空位 + JSONObject jsonPoint = empPointList.get(0); + + // 加载具数量、更新载具号 + jsonPoint.put("vehicle_qty", NumberUtil.add(jsonPoint.getBigDecimal("vehicle_qty"),1)); + jsonPoint.put("vehicle_code",boxDao.getBox_no()); + + end_point = jsonPoint.getString("point_code"); + ischBasePointService.updateById(JSON.parseObject(jsonPoint.toString(), SchBasePoint.class)); + /* + * 插入绑定木箱表 + */ + BstIvtBoxlashbound insertBound = BstIvtBoxlashbound.builder() + .lash_id(IdUtil.getLongId()) + .bound_id(IdUtil.getLongId()) + .box_no(boxDao.getBox_no()) + .build(); + iBstIvtBoxlashboundService.save(insertBound); + } else { + // 没有空位 + throw new BadRequestException("没有空位!"); + } + } + /* + * 生成任务并下发 + */ + JSONObject jsonTaskParam = new JSONObject(); + jsonTaskParam.put("task_type", "010504"); + jsonTaskParam.put("start_device_code", whereJson.getString("device_code")); + jsonTaskParam.put("next_device_code", end_point); + jsonTaskParam.put("vehicle_code", whereJson.getString("box_no")); + jsonTaskParam.put("is_auto_issue", is_move); + + TwoLashTask taskBean = new TwoLashTask(); + taskBean.createTask(jsonTaskParam); + taskBean.immediateNotifyAcs(null); + } +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/service/LashManageService.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/service/LashManageService.java new file mode 100644 index 000000000..a6fbc9723 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/service/LashManageService.java @@ -0,0 +1,25 @@ +package org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service; + +import com.alibaba.fastjson.JSONObject; + +/** + *

+ * 捆扎业务处理 服务类 + *

+ * + * @author generator + * @since 2023-11-16 + */ +public interface LashManageService { + + /** + * 创建桁架任务 + * @param whereJson { + * device_code:起点 + * box_no: 箱号 + * + * } + */ + void createLashTask(JSONObject whereJson); + +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/wql/stivt.xls b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/wql/stivt.xls index 8219246a5d5a1a198c65095d3ba1774737770a58..9f5da05762988d5b227438b901a59b556fde926d 100644 GIT binary patch delta 17802 zcmbt+2YeMp_x8+|o130M8VMzY(2GeZ3DQDBLXa*fAT1CAK}skA(r+3~sb0(kMFk5W z#TMk!2`U0XkRsBHbOkXYC@PTenccl*F%jSYxBHtrXU;iu<~(O+XJ>Xd$t&~A+u*Y# znhHz12FZ6RA$gyUI!Ni+(w0IO!6W*_ikimBELk$A%e|Zfz^{emYpyT(dwAtCrM_yX^saoS2Aeug_A!S^lE=#PC5rHq z8E+yt-wo*RMBGu;MQ>K{G_cG~;&TR9$UN*a#f2MU>0h-h&gQ>^{LFteh%g^$(5$pW z=$Y7BL!eAaAR+1AUeUoMm>60}mxvD;V(vW2AJTADn(YN?bg-9AI$4qOy3T||X;Psq zSgrfEt!@Y*9iNmQp5#x5nD0#HzmFBVZYrl+P4150U6X5>7f;>=s!uBSfVY8YrCU94 z*8Iy=q};z6gxLI3r7xL3g2k7(g&wMfD!f!I{||igh{^tD-;@CJ@RUC0)+x!+U64z%Ao4e%ip|lVnD5-Hnkcx zRJCv=enZU{Ci;ilrS)~v;nny(ocl+In;T7OXz&(KpG;_9+JDNrzTPj893!gO4vTr} zmxJjR<##K76U-C7@}k?!Q}>3^?aJ>C<#(s@yG!}qt^AfLzk8J5FYp^|Hh$t|_)_3K zWInpupMGVo__~dG&evYTUcr2^yrFsJfe`b>uf6Ek5Okyal;8cz?*T=1&1x^9TrijH zuV;Q`y_ay%PJUx24{`Dt;jq5>uZ>M z+G+WFpb*Sq<$>nU_ty|k+AGaj;boq(*QLIQ0OGPIq!PzS(p17lB9d=S}>0oJako^EJGS+{u!+@ zkM~*IZ80}YU8>Qh*L!JswaeyM(ncMa!O=T5!rcc{^T?sZtJkfLEe8{bcP z!TaaX`DK$jl)iB6tTgJ2dpW=CYCYX|)!y{0Z)P3ddZTjJtald8bED76VUwCAPMY^h z$Ek6z`F}LRXX@3aS6i6wohWucUE62Pmm!Z9?O)R}t6ql&ckf%88-q`JuMgUi_V{l5 zlIx+NcOP6Ut(Vr`ZD)heLsrF4e4)py^_;pky!u^&G@(w5uWpQ<96$DE3+LU%?zi1M zJYrTq@_x`@(WZePd}Us6WYU>qTb3L<@~La4->Y#`zCQkOa7C}b-=5iGP@_>l7I!q= zxPJY)w?BHl{`@|}mVee}(ba~@86R!fu&iTj@$mJ(jNdnHjF7wP`99zN_T1Z}4z{M- zy&m_f_j{kx1zm$K%$&1g{gsGDTi+{LvHX);OC}i}Z>zgc%-q*?QTdP_rpKRcYS#Fd zna^)umhtw3-{!4Yb?U>LOFpcBdEbT)nCXqi@Ae*n9 z{yaJNm;0Zb@d$i%!uA0z?ta%}(?Z%dx{jCA*gUtg`(G2lpS_ z>iUPFbAK<73jNJ*S=I*^J~9=yyZuh-^Y8W!T>HMqp;a?J8FamWM#QD&2UhL;sWj=r z*=ZktH=)iq-<}(GdVTqZra#{5_^{dOapQm6wmaiQ?FHYSy1j6Hc}B%Ir8RfX@t!+o z@*7Y;J0mP|soRTpH>~pICik3o0iD?0k6nrRCF#n=Q^yH8eZ$$L_x;cDcNd98O9tOIq5Ae!KM|nX_l$sQdS> zIrY7p`q!n8zPvftKZ#OTf3ZH zS}^y|n5i#xIAMD8mmWL!(&@WG-}>}Umx-+}t~3zJgjp0pw%8{+|T{drR4{y#v6xH-M*chRx`j5NZ-CC=H2Liao4VxlY1g(w>tk` zs%P1_`IS45uM;>4UfKpZ(+O@9(bPd4GvT9QXCP1+ROgAC9>{@67>q&u&f1 zKQy^wP}x5Eyc8vc`AvA?!sq_!yGE`Xcc}dAt_?~4N63=PR_vpf zAZs*~o?)K-snKFgq%~>^uNy73r_*&#%qxOAN%2WXb6Ne4)TekRN)ty-Phs^tQy;bq zMYks7KFx|x>NEOi?i)kd(hM5t(~FEE(@6@6A*o~rnM}qI?=V&|gZdjrr_Pu>W+V%b zrL`nQe`<5;XOg_&Ew?&y{1{5yh!cqfLp>_VI?;t}IZnVQWb$`}e1ZJ6Q-oXx#&gKS zWJ2CLO~|jvO=k!>ZXm>RmJnCW-M!8cvJ!dC^Ms7U@^>%tS}uf)xj@JkXi;T7+cWA>tTQASN;%q1+Cw+sHHiBxD^z8S@v= zB9upvQzt@F|3)a0`#mJ2J3^ZGh>%Ya((#W8c>|&R5qTgYd7=`xM?|s&x2*%nCs9h? zMkIX%O5za7JIL!Hf;&Y@?jXM-;Z|P{p>%boq$5H!$AuCLLbKhKlG}*PDR=C<5P@V* zN{SJIByUQV0r7aO;NAejoj#Nt1;U?wDWO2tDS(px05Z20C2s;q-5^RL;JCRqC2Qb# zLS0IR!QqwlDA@#uLrwK5iGqjYLMX|Chr1e3atxjc4Jq-1V|N-+BA`$EH=!gMeYv?Q zCFO9mPIF4a;o!$DDESgy=G}^thH!NGGn8zEqhrD;Nr$7eA}DzkUGuOtC0@ahw?!FU zaikq3U%+9L5Jky7^hN*nl*Gd0&!2^-2>sm-lw5`9Lpo8?6QN$+nUWHC-aVR<_6Y60 zu9RGd<2_<2=>UgUb;I5S*HVpmtZgwU&vvKe5F8)agOYeS9NCkSrf_&}FG@1t@ZR2t zbS=`Cg!iSS0X$yUpOO{u_}253oQKEl2Et>6*7zbNm*MfEL6oGx(a}TDRd96JOO&*O zqftY#F@>Y6h9QDR%ged+kef@Z$&@@djS|BQOV?LvnqWE&tcWi0!+wF1GlKp!LK1*2 z0QraHj9?^>@B{!2k+T>*stp5doE7w^Y6Fh^LvmIyniL}l8-&~w?uc8pMiADjj3_n` zQpgYo#YW9)ZD6c8*l^N(W!o0f=`~Mj^=ptIgyWQelSMD4aZU<}!UD&_DTjh3bO{|r z?RrZcDxGpHguX^!t#wY|NOob9)>L^MdVU`(LBY-Ot$>!uet|-NEjeX&BpKrco?( z8GXqxbrvO~au|AW0}Fed`cRqe=`6IhWWG+H6HFHbTraSW!GRq=UHHNHuUsTwyP znW`#aCaaRq`>rZ|KFX`&^HHtmk5n7R4D*CQ3FNgOBBk48!sI-iKn|2gC{UBiSvJJ<}g7v(D*z=*ohvQWN6Ps-~UK6b6b<5>d z)W^&4<1)8rjxti_d***3H&+amLm!i^C&3g0f9-GRuAKB|X`-yE;v-4_3cPq?>YSu%| zChewcpy^wt$lCMlmSuPu?MD4teN9QfGnD*wo06hRO2TRgWL@pz&cX`IPosnlL7Okp zS(4?Gy%dAQqd@qIS~^^(pNUQH3twS&*+oJSJxcBi)t(l=pJ=jw)8FwdPt|V<{ojRZ zPs{sMm|7G1{WblbPtot}E3Byx{W%zd+@HBm(f5cHW{c1d$Arf97e7UR$Fst-qRY>9 z1+phxAXmCDG&=2Y{8}$w(38d#NfvkB&AigUE^5aJW>AOcD?T-s&#tnhYdMJ=_ULp}2iNxty zk?iX$l9K~OMmq~{@_sJ~p|dT8MZ!{{85O_N9N`@;h}E5sfvbU}Xjg5T0_XsB0H&=vEuSY07M#9C%pJfrt-xmd0VAt_J$l`HT*y7&w zfiOq|uoVFQ6skM_vi$O^Fw`6RZ)o}_pQ1lq6vx+WO2o&S{(a~_6skKPS!93l=Ni!W z(5{^t^xyS^nu$s7O&<$=H2p?T(O(lOPU8A~HT}*{(eD%|c6V+1w=i1M@BI}0js3)n z?(CD{qC|5oIU~fz0xBnIm6M-R`B0+hYcy2~nVSA|=vNBWpB~DcEDhai5wMxkN|bC7 z4%ymB|Hfrrd+{=%mAis7^)RrxNrvIuw9sfsHi1@ zc!*iHl1O$4e3_!kBxvT_N-|1QZJGvX@&$^j=|pxq$guqo=AqR`CZ$1VvfDxELdqOU zu4Iox$xT;s*Off5N94_ONc=%Le+5ONdGj*?=__HH=Gsh(2h<{eIY0%I0YZ`N6;w5e zd@c0Se4a^Vvd`A^OmxwH8y-B(AqN~}91q{9s#YA~%%qNRW>QBuGpU=&0l`e_h-W5s z#Dl$s(nUrE&n%^jrfYa+0nc|rHcAw$w^@L*LxD33L(UFo7U0;sXBOb_?lGx8&jKEM z|IDHskF_UfQD;)_P;wy$9ZIg`8;6pcuH>#Od5}YjChwkft$Vyo3Z8V}IV_}Uc+!E# zOU$vAc=uSHN!MXY2c{zqG6PE1A(swFM;&BF@~uP3S*vH_J(i9>I_4mB)fsiumE3hD z4{}_o$1!DSUF4%c%22v!h6W-7kUYd(TZwm(0*R0R3>~HnT|Z@L{iJqNhOV13blsGJ zZn9rR8MOxvXyL@04Y-kDN_e2 z(-D#hs*Xc1Q->*2hbdEsDN~0j(*YB2-Vsu!4pNrZO|=zBrYr^1EDc4Lf+^2da>SIS z!<41Nl;wztWa%Jf=^$n4AZ3|!n6h-3vUHfTbeOVqn6kBQ3RW;>E0EGP5ZMZ(d|Sy8 zQZ_~R*{6tX9j0s@rfeOiY#pX-9j0s@q--6eY#pR*>h3uIW$Q5IXqZA2OgX@GLMYTw z)Zw=rHBzFy-hl<>)Zw=(;IK2Psz@ zdZ7xWT;5G4AwxrvtMpR=N_-a2#Vo#EnZiAHzk$NXK_Ah<=U|D$8)*BvR%-h z9^@p6CYgBH&`n4qX=DLX6Ve7#dpb$i%IxtJG1%!CG2$^%9$PhBtV#3LtU%2QmCRHG z*F6cIzVd^567E4BN|nNFc+6M(d4N;>;;9mkzj&Q|)Uhw0@=?dWe9A`z?8~QoM8LLu zGNGd5`Y9jXs;r+hqmIj`e1yWje9A|!+LurH=vDjjDIdLRUq0odSMAHEeDtb)`DDsR zx7ycF`RG=4{lq8!0${Q)p9+BKgl+j$08HNt^RzxLQ0~pvG5ovaY~*u<&8amx1cCsR&r? z%fKQ)IVq^iKm#cP6m=C?1Ss}7u?SH12`20MqX<~+%fKRFQI~OU=igZwlY*0>m;RB9uuwdQJ0tp40QQ%o>IzfjZX&qAu#b`~wua>a7VHFknX-pmn6={)Tb#pObA zgi|vYk-zt_wp-nU2|*M^hDQ?*ETb2QDelc&#amjfx@g@^tnPFdE%%m-?cIyl;+5_; zix|R&trcC^_3h$VH@vPQZr&|~!9dLVtrG*-ln+HO_Qe6wCs0z}v_ODknVLa2Lco5% z&pI*CuF0RjXmVAPz5k)u%bmYy<_BJH5|Q;@Ck7dK@f2ZW*NgG&T!m<4dEv5=-Pjfi zH=^mYI~&CIax1*P8p~R26oceZc-1`4(rcsGhO$#%;MI5D2r31V3RF7=JAAXr?Qs*l zOIlh+Y!)wLY$^xmQX0*AZxNpfYJ~yGpCmU#;(};R1tW*;IUxG8U0cKvS_~8szC+@G zSm1uK9xK`^?qEOfN2s6bz&0_27Jn|rI^hB&2!-w2S-CmN7g@&VVwP(MPO6>2D!&xF z3Dk|{pA>`mH@2=l9fVzuNY?jN(ytjitev;!nHI?uC+9;5!<$1oKrQ}*#9%w zF6{lC;tG6J@E@@5sv_7s0G)^UzXTR-?fGwQu@PU0&sY|26HEWmyZ=jr*MUoZdLOox zLntfdzg3qE^{Cf;Mt`iB^}>Yc-m` zG%8bRFT7zUM>Lun;$Na+C80L_K&!wTRxTbGRjwz_&>9O+X{9m#(Fpi%ys-q0=8Yw) zw9?oVjpmIl(P*BPs5A#@A}iH`(%4#+R*-Gc_`HE5Dy=kjQ=@rf$_xVl92w>tC5pVU zFpcJ_Q7WxOG+L#Vwh|P&tx@7i{DT&bQbC|8aYIuyKG#VHt<5Yf?~ynF-&oA!VuuOF zD!%#;Z>9M4Uk&_YAXG^Na>pt<)(EFr)b@qq?g_E>xd)yg=_!8pW}zd}2r zs!|@9n;MN*ckCXj;WF)q*XvvrVir~@HUO(cW$_PTSYoB<56^@7w1KvpAq&%JE?xq0 z5A>FuMbI=sR6ZnH&%YX)&z2q+ z8=ClZ2^j|28zhWmk**{bvt~Fx-D!suNm`OPd;k;&UQ47X=tO{Ouh3lD7JA{R69L^Y zl;Uu|kP~=8hg3%fdM50=2B<@N(NV~$A zdT=a}lFUHt)G3t6iVsJ{Bc zn^jjog=ad}>MvJc{oGIDB`W(tm9S6$5^L7wbrLbPTkGaI*eUTZ-YWXpw;~>@l4|{; zGhelLXu-E3??@!ih_9ryL!;HLhsqD*qCEE75fPuyvFM{>2Vgvc|oI>IM8KPRL1o{Dl{EV6F!SP z;VAGCFYwvYM`9c1E=qxzeFkfc+N_5td7#?{ixR%hWb@Q)3o@*t0{Fy;wHEK~V9?t7 zuUL}!@-I})5+tQ&x+LMP6|0b>k;wYVl0TX$!^d8{-P&xvtTa<1OB3*IrDTvs8jz21 zlREHxWeq7v#!Bu1za67NT&--szqA;A;?-VdaaRH~x(IX=jpj4rCmPNDJf+eSk4l9` z^A+d=2Y$e_U?9X?Cs?EVfNsKRgpUuxbWR)cjdBzCaxOqB1*#>rqz34`Bc0i956N%9 zrOt{vAEC-M#y#iJuHbyo+{^=&7TSR}c2W6UCt9T?&QGxOS#Y4_5A^diG54^f3;X2} zuGQgz690sKOBc4=DET#dpsKixfQm61Kk$`XPSI#S9;QUIzP?h3N1n#x0s17GnS3R` z?)z1qGxxGWrQKpcV|B=FIdfYHD(%ks{T%ouDs6xcYZIi5hQUGV073~JUjYU7Lw(6d zibh@L?I#7Xt3guGCD>KDsKx=Mcjd72tu($CZAu~1uETj~z;>2Zohkz3yq$9{2@T6vVI zJegbGAIJLEko+2)0#6(MMA9)3Ob=7ZEMnw~30xzM@@tY(!)jHWYE~+U8`n!A>GJJUlG2CAJXp5iQ%qgki%F z)uvr|%P{O2BHOoa-!-Z!r>S^F#S~}Yw%@`(d zk;wk)EN2>~BcNaUvCJ-@v%pW1Sl%c(u)60h|I6bCJnx8-|I@P-Hln@!|NXq9ldL@N z5a>utL5$p)zIGP(w9 zoZ#teF!v$tM>>F1j&u--%MKwwjKn`JQ7T5CjZ&Jt#2HJcnk>d{avj=&#HLOfof?yx z9^Uv=B5@*J$BgNbmON>0a3Z?JDvM|WnKQBUkCT7J#?%tqUEYA1Y5KtA^fXc@k;sJo zogjC1mj<6ya@F@GfWsK=|r@%Be| z@O!5L#v~$QG*d>mig>u@!s-r@Ls(g?9KE@Ze3J$|Xc@e&ZV1g6T8wtPVr~`^A~k=P z)Oy!goG6FU)+{_x?qWJ#>3-S$?zCI(&cV;p!K3Kh@b09>9-7x7c@vqodQ&*@ESDm_ zlj=XyVgjPp^4X1blN)$7iN@_Cxp$+;wlCy(w$1Qti(iu``N4$yL&LYTJbyPtdtUt2 zWNGt*$4UCg5MF7hG&Eh}K4!$92CvWfg>E~{Eu|W4PoX@BK4i6uoQmF zy1AeHo$>z?f@a?BvGI;1Nx0re;~Yc6*^nV}5O0{zJP$BoRaOQt(10z2uOltwnChjSRq_871RPgDGy1KM>Hje+KFZ`J-O4 zzc+v8pqDo6twHejodeZczqx|WTrK9SxZ-&WU-aI~zBQ4-l=oAl=@hz8j@TY3#C9aJ|mi!&}?u&19 zZ?$vLKrW&P?76M?$jPR~@x`HQjr}Hme9+2Y*TX;Z=l9==-*&#;?7*bIgRK1BZ6Bt4 z#!QZ0cxa(Zzsc@DSotyX-PNnE{NAHzNV~yT@()FWZ&DiAy!vhN+}lmM&VTp*tAqvfj!#PVoxvxF-UH%Or%jq3>xn`h+7xB-eDc`1G2_$bNXliO zFj9V&O000C+_jrDFlGGoL8;Rwj809RkbQ;Al_{cqg)&7bbi|K#y4}y9jncp&{o+P; zi-}kknn+w(_+tG33Lm+ZE2SJEKWZrd>_YuN7H8;@FZutoVAGQ10{4YLI|(@Xk;?Lu z7!%(pCfMXoCdnaOO!0(lvWE|MDyUWeHDA{l?P#7c@} zz9`<0O!#8}`%~pMnT;Y^8!}tQM?mcOY`HOQ%l@7%4-@)>J4bE>!)*Q>xhcoOKIe=9 zgk9q~%D!{u=9cJ%ax`toKO>zD9)F=$gfs_Yp}d#|}i654{MRFe9{F*$E_HW;< zeSB2=_;yh-t>dHO9aD(AOSgV8okHRw;=;%3WGC^Q8@$w?|`Tgh5X;E>YC}9Bp|x~|5s97uV1}-_1>$y zy1J+6$(W+@X3NsJUYvf3tA;bSU}NsvoPV^bi`G|*Dv$r$4+Dnp=T9@n%7>K9H}23r zxwGVqajokzV00^bm)^wk?$V8toEEVqg|0zi@xWgS-?k*qXdYF*Yl%oN`D{An+TWNr z5HZ{$XBq$rHwJ&h+4U?NVUo3HH1B4mxmFHPEdSH6<7B_)AXDt~k zjBcFfOY<>zqVEukVKH znd16PRuVLZZc4r|Tl#5;9VMjqF_s@3JBm28xYe&)bdctwNqRoIbm%aSGk})s0)!!Lplq9Td&ENOmom}2pJE)bUFYTxulEGmad?te< zGB_%O&t-6of|i2s@gPno0uf(OM9IjHON=+Y{Ogi$%P%jv`px)~zB|19 z8{B0H=vzPZ9iWlCs$|zIzLL_-UVhRKo$^E9`=Qf*=m$UaqaXUo4^;z7;6E>awG}_J z{I%{S$KLSrUrMrfWR*Pes+a$|{IyJemM-V$QbQEmUh`^9FX69Wsc{)-GSDe#Thgh* zs~LL9upQTs0-7rTx&vT?0O$#TVF9oqftLw`tlHsqh3kxIB~`DtEGc@uu@(`aizKlB zrnlZnjx4$M!|0OePyV}n|Ff>6=vek`dTxIf=iN&df7p7{XP-RVz-%%FXr^&KYOM8V z=4Cg}rh9|mlQ%B^^nFni2)AI7#1-UC8@FKLeK!(rZ?VK38Nv(WCKE1-9e9v%I?rDk zzo_XLqFS_0Qtca3GWyJoX@w%?C7Q^gWc0{e*7aE6o=wQ=J`%Za$olMc0vE$Z4S|Nt z&G!u%Jk)*t;NsW*(&BoejU7{R?dKypL}?Q|h_{`_8ZlN?P1!MbRV6}xl(DODm%3@! z=eu~x)5lvjc%}gnJ+^7r@ddismhq}DkV8CcP<5DWX`F6&YGcBnoogna)-v8$9CmdL zdkJ{K(#|EVcgw2Hz=cw-Mwg&mF#zhB)3$k8>jZ<{1$uU_kUw?9+t-cAjp_T-&ins% zBxjtNzv4tnw;?SS|2T6`{KC`ilIE}S8D08i{^!pR-5hiD$y15j&J}6vnsvEv)D4;c zY4?|M)0Z%JpdNj9SlPkv?wB>9Po6Ko*QtlTTmAjRKh6Da?(LaJyOwru@MwS6leb3~ z&$zMOj34)=MqjfgtxwdVNAfa~_1FJWT2XZAsoakb{POg&g+G7Z(9|lLzIK&sb>CTs zyASHt*xTZz`4g9Ry{B~UzprhV{lHTVC!IRtTW_r1aQB8AUhTKA>z9w_t=ZZ5rzs!3 zwzHzbGk$;B_O>(r{djzb)PdojPU!O2@D8rlFO)uZeBPn^9~+Z?pxfsQ_HP{Z_a%?q zQZ;Ji$o7TL->}5EYDV50dsCJ_`0vl3d;a;GtIUXzbKc$dSnIcoJ5;+Grp|h9)b?)q z^WMm9UcUB=R}V~D5te_~WfLo&yQ=HBgc#HR=)Sx zuD7S`O@43SH#5)N^y^QtsTo5XUGv7E$hf`}n!fbwzFy7#lJ!#Nuz`jMI~`f}&MnzrKREw|sQnwvo!9;)xkKsdtGeIw!S>OAzvlBV zdW{(p_06BmwXMHD&}_jYqrb|zb3o<&(cy~`toef@gu9l)^wQo_$i}$KEY->Y}c z`u4-3VF^t~&N_4It}A}-x#--}yAGUqVd}G2*St{enRTMz-&g;dH1e){?z+7=W$4~L z4<0{P_W4)4zq$33w$q2s$=;P(^4^di+74Y}Cg&VledWN3PyW*AmUqe~zxa~gdclDo ze?8c9aG#xjdF|IFAD{Wp?bF_G_Ep<&yWhThTGh6iNgWoN87b567+2Wm-(Qut&u&yT zsx9l)_sow!?fRkB$kku%>3!x$ZQ;u5gW=y?vDlr%^0zgAVe^bxg=2fa@WGAY&&8y4 zJ2v6T5o?Zj9`V4|7N2i?ICXj1N3L`6)v;*}c?15&*r(n)vZ`UPgIB)4X~O5Xjrm}h z{vQ8#Y}&aiS@yoH;VitW4Pzy@e|NPjGm5dhHf{dyx~W@ocobhbiszT)YpslPH8nLQ zOSQ~c0(zkRCd2oHPocI*&lB%6<1LO5x5fn8UBvat6CvWAwJPYguR@JS1MH_bl zdXvd6#$piWqs#jk@DK2xVh+Wve~#vznia8{8piIQeD{Dc8*WT{wB+#OTW(rEtt8us zv0QnY*L&~$ZOP2LY2ZWAu1{LcpEcZSFoxgg3&n<}x9%9jJMt83#%8@maZ%T@s9fH% ziS|STYhwa$Qr3Gmw;Gr=?4No=_QYPy03mhGKE_@_c=v~l9Wxl)i7)}8K2XWnNrW># z!gvC)AK%YdIC|nfA2U{p(Deyp6T=uQL)ZfS;tiiNwiRLH1B}fMM_Po#k->`x8EX^C z*oZ@nZ9&+`JPf8NkRu5DqodCIjIkXEc9b@cmgzq6t zj$v%TamLmoyy667e`yNg5w>f_*v(%cGlXv3WpTWb;O!f)@j>&fJ8JH5G z=NHDVfk|in%GgGj^p>-X{R5`_7-378a>qFgb};3=s4#CL9D~7X4NU3gob`t#451WmjxIZJ}zf4+pX#~}DstvMS7ftR=8 z>{$rh%*R;@1iUGZvjq@vLp*1DA=v3lIcsJ@vO||~rlCwTuHY;WWx2jRXKz8$Mjbgz zMA@zD#M!GTGrbFEmqF0`x^ngu1ib+bs}O=tO62T56wS9uoOykS?~Z#E#Vb8Hdj$fY zPUh@1iXtP0vkVCQSSkcXB|dr;XXa5zeqArlu7jyp_2z69Bv0+jSt?9>ERC~cko@X? zoLvoxOENes@nWXbpECoM^4$TPy$ityWN|hC0(ZEUvknk=-gO+-L2DQUQ=^hyI)t-J zA@J&K&Q?RFJ|rD65@iKRhup+jG9>MIGiQw( zluaq(??yE2GL^G|1)RBNS&>`$lV#ujl~-`{c__-*Hr9;ks1Pq`!G9ja#4;3Gt(X@y z4?D{mGUUQuM3s>|+~Dz|7W^l9z+AOrUer9MU;>*Vk|ZHPBI;!Vo7Tld@PIuL2O|g` zP3q-=isInWz?Ri|VHuy*q|8p=m|X&Mlxg_0(u;Zj1_H#*U!6A}Ic~}>Th4QNfUd-m z=p*ONWh?l7Ew*Z;$u=xAJ2Q#~*n zW_Q8uoaHQ_axCW_YumHDN7(|4U#pofX=o|nj9LZ@yrc#G+`>v!P%mq!lY#~f6L*0> zw~&d-A%G)D;>ot5c&Y+A{5Fm1cW$O>%x;!ZM|&QU%|kh5VJZ*}^~P4XamjHh(Q=lS|9c zj$YJzzoC`c(u8IZkoawFt4%|!-_g|HyO#S!zJTwv?tGCC=ew*AUgSd&T>cWzKrmSb zPs`vG1-q@}Z3y;Q^SAL!`Ce;{3|^7JF&Q*`8FBlpt`zLCuBTwHHAe>jkij+z_F11% zu*Y(j3zCj97(&55YbFI1)=CQAw4Rs20U2o91@dwkTq}cV+xcUlZ1#$XyNZIh%0|D! zGkLQvuW>fClCz(`;W0kP)!{u9C>3wK zD6#jndjHCrf6eoncX(fW-KOsVqwq^ zEo*!;LZ&vugA5P$<~*(ZZ^>)a;(5S8<)cz#FO(j{84*72bB zo-G8mnnT$6tNZV;X7ygKSC?IVuU2|l$IrCJwq^Pu)e)_}zoS~2YlC()vg7C4PZ)ow zENJ3-OsoH|tjRWQLnFx5$WAc-0&+d}&AVE3$734w6d70-%Aol{?F((oQO%`o`Ao~= zf1;Hf8R32S58yw9M;l@L;Sa-q4F3uIr|>k_KL~#ao~CZIVTL0JKZoB8*n&R}_^kEt z5$y`kDS+R@Tkjmv+If!wItPzQ13QaM%Us8_HzGTHqTOhV{v1UARIBgrK-uZZW?1zQ6F`s_EDLyvpz1e z!+vduO@H|X=$}m0ZzKAlHhrH9(D%DWzb3rHhuT=1e((k8|9icDFtY5C96eS;s&RIz zybGi{Hdb%yF&pahZTeZD|5~g6FG`G5vr&-WXjmxOcUX35JN4TtO}L0sxL*}4m+IG3Sbp^r?GH-f&Wftr!<<0$T$O( zi~V;l+|BS)xv}WN5@?_`^j+^5p)+BbQi^{ z1tqC82h4wlN-T}Cp97W7Xftim=5UQg=(M@cHPekqo&BOoGK2l94YFmP!(HsGKkGRt zqH}(I=3ot9=@LY-4Wow=xT0d?j=oj~!-g*sF`*byL^=R%)A`OM{{k1ENz9E)W= zaED2t<1UJgQyda(C1(nl0yPRY(%?m1~c|pZA55*K{Me~BH-MpY` zH;)HekxAJ*tKGbyYB%35r&yuWe4*1ETZ{QZC)0oD*9j`k4^nA-^O1!j;=3xaf75Tw(BAe|Nj>9o);CZEu0p-`#NR$`%0X|ey#snSA@ z;tO;U3xjl87^Ks}Ae|Nl>9jCNr-eZ(Eeuj=VUS7-d8D)dTNtF%BD+ne14@H4yMqJr{2kM|zk5DsGx1n-7M}%aqpZIc z>I1CN7- zt$|tCKm1Tjufl1)tn8=toL01r$nemkriSwZ6d4Fw zqW555)DT;lGGYa32Nw~YqzQgZa%k5MJGsIUmYmncvB#zR(^5)n>NEPFm>kem88tO{ zcz}3vdKyU)V;y=%_jIMigsg%mA=SNh7p)j%9EI4Fg|pf`qqmG}&3x=K+}&B)UWg?r zYiibmMgxa)R@^gsbC)2q;x_0_ii?(Bo()S7BXV5&af-*cN*j&!|!(B0<;EHr3k2e6Kx;bF3|z!I$%W@0-#)E3 zvkErrEsKlZFcEUAmVS5tfLm{kfr-TQW*Wr9frwbTK%R)`W{||13L#YAv}*wqVrYoQ`-XnmYNJ z@sb>^n(U7Ln;ceM`7GL@U|hhksE@*#J{d+aelycN!FP%eX?EDI%CafTLiSTfio~|` zW=XUw{_2^3N<%8AOS5lOsN(Q=OE`a>E7@)|X|ohK54B3!IpL1j>p8%>QkYe6RF92q zi}*x`TjFMN4MAtyvd}qzusxNTg zM4(RH#{jEnG&frEDquc?#_u5{&57$52z!?u_^CVjM_>SY_gVeQPAP|35p7sg z-%E69c1YEa?h_D7$F1+4)|*+VdLkWxc;y|F{irhNo%g$$pC- z&x?z$vaWhwU*Z>Io1W2}vby*zU(i3ku*xqwRsQ{Xy{z)0XMJoe3gjqE;DuS20bT=t z$~sW4U)ihxc4KVLfUA$>?tA^Zf3{gVwzB0_%>!o>=FeF&W#_;C)qnMK`=j$({QW`e znoar@zEEsvdTZxf`X(#=S-o|%nlaE^fQp7&HCy#ew|Mpy8(eu>OhWv>?N;opgeiea z=%U`CQAoOlz^OjnnJzVuPE_9TyFoY^9?sg}b~UwDxLgS?>a4?pS%#m0uN z$oYGV;Cq{&pMJ8aYt*WD@0wX`n`+ z#S;SgU`FdZ&Qv*BZavut<|U^VMJ0C=R0{{(Q3giZD_Zu0Gj_W>8! zFcm0G{>kkFzQ~5(1H9CRKLEVUhCc+n%7!Zem)h{BfY;mbe!v?5he@`$TKiw)Nu6o> zzSdxOd(<=vN5do>OO!U8AYkjV&-Fn##W3@8{c0X%J^i`f+>B+1C~mRG(-^Ih+5q5) z#xS^tat0iM>7h@;-j=MFG~;5A*Mmj0FcDyE&Po%3Uc)j%m)JsMX7ABxwh`ULeVuWD3rEwuR{UFfr)$eOjcA9`k3F<&`PdhVfB z)`en2Im>f+1@`mnLbB5;X_>4z`{*G$oz z7NA+B0Miq9sR;Xnx*wn(B3*ZZOBNh@ATMg9Jy|NX<^CX{tYv%diKs-{M`IPkSqCaj&ZS8ZvjamYL=(FQxEZs!>hou#FSQBt?} zNAly*SAa^5g4En2K)oKUd*V+uZybED}7 z(dOKpt@$p+!%yqBoqF?DyF;QQqDN@UAPg-rTaBqTaN*8icP6FY}N5}8-M+6JU9r=((WE2)Hz`d-laFMLxY<| zbfvY3qC+*vxqGyTuCSg$w1HhAAx69Ip?gNmy6R22TX%_+CACuCt(7CC+fLc4*D@SbErq2*jaI3RZwQ&(GLDL%V-COByBf1MA#f^*9?yl z0iD9w3$;?t*GkdIB2`NNK4g1zYE-SgMkHH`zt>bsY$uf!?bGk(2A+sXRsD&o!HN>a zBJR)l!;wXjCiFAyi{ZWqjq?d~TvVpm~3{Gr~Q zZ?MkpLyKHR+~ERLyEPy7Yl^Hc?;$#0#yX<6XdXmoTel(_XDGXTfWT+{6?ZMgSQo_W zMXd@sR-Lo9y{9*8SxFP^p!jlaE8@$~S)=#s&5URkYV~|9_$WmJ;_kuUR?+oJ^~=il zQ&Bapl_&)rDkVxm-1YeDiw=(53M^&HmVKhH;6@V`no}%hlawe8al`Oe>`YW}fD*;j zN>q*AEJ~DxxZ(Kw%$X?r5G86_D^X=rnJ61^lkwLBT?siMUczU(p|y%H>Z5ruv&#os z2qg&UV(*88B27yH#VVU(si2^>T7aUTmJf;wn_{=1pk37fMW(h26xB9Gtf*1c>nMt` zMFT|b@*#%gkmC~drZxrb%NuP-REk!Pnq4{8n58gJT7`;U=BR>RMc}&+xMapEJaH?gl$&R*#{hHMzX6cX-qDHVabIq@+G#$YWs}d zv^6ETv$U&F%dUp zqHm^cZE36QF)Kl`8__g{S&Gov+I(O^_)_4DC_NmtLWM6xT4(c9_(P!2mgIi=YT&lQ zt6`J)!kING6toR6&IeOs;3V_`mq2uIYHnpSsA(_JLHKOYdu_Z^;Pt>)JDRwU&M*)i zWr(s9ju?b>wjkD0d=D<^u zLWJvE+hx_xOt8@uH9;GoEs;Eg)F^#XRuorF7dWS>mLcsSiT0O?GGRqM_zl5$Q)Ez1 zGT9N-+I)_TOGEIUc(fDr#g*tn^AS>XHgGms%^~3Eg^z0ZY&)LfiU6;&?|q4)gV0-Es%V^bq!Rd2yU3gd ztY{0Fg7MNI9z+z?QT9II^XtH81D{<7J|Fm$I`FH2_tk+fYHMPaRY$}IB&edpf^bgF zs)4Vp17Cn5EUyE92=rTRyweh1&~G5T3Ga+(kBC)uFggMJvN{;00bf`L{Yc<*>cB4r zKFfhOaW6Y4011u=g^!IxpIrxjD-qOz-wphUU!fJ8({jteXLoJ9S;G)fVMjPEkpO&o z9r!HZ*VkqwGAylwJ_qzm>!2?LzTj6=qzjUCJt9Wdk)Ry-v^wy_p?w|rO3-`jz*hlZ zjoBYL96$?h{)beAAODKB0nNC=frsHmk)@znm)m&NGphb*Yc2dBF&fgeQ)CSO#3!|i z2im`k!g{z49Ibd&yhlTGD$Z@vu>4Yq^jv25Cth=;jZ(A}(&~0SdJIhnS-??x zE2lX`R|y<3P;?aCM@!TCsqqCgGfzf1M*_$l zO-Yvp+$th!8=y-8j?yc-9Qz(?cHu~n0^pWWIyl9DDR5aPE*N00teUIwoPq!PmB1#9RGB^Po@x#BLj^YdH(pJ)?`VdtO3SyuLDW2}thJ`X^4n@ET zQ`)2V3f~EAIW)tci=mp?j%JQTNwZ5U`=}n1MDxN`_FR)<$d$rG1L_X692RUoZ={K)G%pi#%ki^lf0bfVan?v5?B9*hSgX`gOFZDe=swD~DbnVv|y zF$niR-f1TrV4D{!qBi1)r`igpwkx)RO$aV_q3ylkav34^f_K|6?FCoaFzp3b+lgr} zSd@sp7fhXi$}CpGV&6GI!eZY!%Z6#+IR~(b1R}En86h^FX{A7T%50ULfHEtUu-JHB zFJYmXSRUG&+`Dah+T=cA!;~4*B~RMq_S!HM8z-jtDl@#EA@FQ(F z0u?gHrlCFg0tZbYV0pMEiWT8m`U$;_HNAz=*{a#0yIZ)~Qlc$Ft%jo_vJc`|Z7TFj zx!dYjp$|`t!K=f;RFD#t7po!zc)%_3K*=Lvy%k$-y-}fGnb=IMt(?q3%466dwp)^- z>J4HiY}m^NS(m@5U+Ephva$3cQi{%ZS#iJU&8>xRVvD*nTP34V8r{VTjksrly3&F7 zp)Qb69a(3VV8cY8Lonzu0b~U>J{I_84x052c&km1tu0ns(8ewJLXYBJ z>)tQ)D-k>|gD(-FCdSf=5Tzc=rZOL3RTGoGL{0QsH^^ZAmm=vCU+Qy#jQ>g>)5^`Z zh6mfmPRh!|r6@0aC9-|%D}4(0mL-3!k8vYhc}l;U!oAfvP!{QC)jg#EUY1~;IjcWl z#xQTHMA2ETSR1~Zo#yRrxE;0$H`s72&WKh@7#hd0DjRMIxY~h_y-M&DG(H<1!ro!+ z2}S{9EyW56b}#n0+Oq;Hsz%>rOl3>^SiOJJTQ`8+eQb9h>*Q%YhPSiM)#%N~N3g0s zf-BC@w!!Cg1gs^qt<2L`;;92mldwVfEI;1OiU=;k*8t$C50HiHV@qv%(q>g(E3QIs z_TU3XL*p3R+SfYytsc`Jc}bdvquD6#Ndp52O?^|o4M#zqf;4OKFS^hBC@ZqDu~1<{ znziv4J!asetU_YLNcJiTNAzQFF+4sZeqkhgmV_e-pY6xH*(wRUL1Rte2K8C@a^p$_ z&(qxp)&XubhsJ6BtWT@-cMF9nsi4HcUm3B4N=JXAvCSJoK(?3(L;1icjh>Eh1Qvow60XmMyj632cD1Uo)=p z9%Y67MJ9N}f!f^PiaVuu_PSZQ#G=dbv5NlI;%Ys{8^J1pRW3ht76NJv@~9r zJ3JvZB{?%81CIg|lhZT1bjLHmZe3E7Q@Z2fUqWKH#LRwp>enwbebIsec-+@BJ+)i^ zE_lw@qkEU`son5^FTF>?fG#~#SyKNV89h^y5y(B zlkGOHb74Nl!ULSG9K#iBsuM(%jGVzziB33!b!ZuYTVP*AI)hE}1>n?618|4S18|ED z0r=;R0k}n%0Q|GrHE`1+F#!LZ6o6aw2*6(?2jCXerwC`Tdub4b>uiS;#rBBlo+v&Z zP~hIE?MAzvDBe-}$(6{Ci}*}t?$9DQ9o3{UuE4!kI|Qq+P$2jejGm8cD@|kf=yd;@Rw*(eqgetzF1{gzs*?fjh>zOUu3BeZQE}P-kgnG$0G$|mB&GHPYRN&u2_-h5l35cfjPV(!$Lxa@7 zo3-^`h0K1vfZnUX`nTzQNN}p9w^G{#qX+b0cE3e$DPV2AN%%Bm`G)4yyPHGrYN5AM z+YFR9EyPZV$ok8>;y3I4f#6iH-a>6~GaY99EqY4+Rr1<^NmsmIBt+n}qKyvJAu(i?&|i?t^9*i~eAu7K2>Q zxpF|;7$0bmtx3{T{;bFyiz|8Qe5_P-B$>GND5O75Az*ECsBFYgW0kmyk8(;pMc8h= zh#zI&dF@af9Z!ICbT8I%b_8WfL@Ds0**lJjo9(CzfLlS6KR9(3owS|fmVL@P-6t9# z^&Qj;Qn^pm3UMdn7mN5QdOq-Lg=N-iv@5<=+bXW*xE{pg?3;}+%=(szbc8$2i%cA7 zSR=?z^BfFZ%SFPedJ&?(b{S$ThnU>wO2IWth_M_DPI7ueu~tg}w$#q@f|)t;s=)Gb z4N{vpMRIhmg_m2xf zOCjP!ZIEBkbFNj03ugn}lxD3audsnBGHfq0lqR7Jx9J22XA#OQqBgVN!ON7AMgC8i zNnTO)@LE=vlI8`pY;-ZqLU?tC`KvIE#>d1ovS*-ZrKP?2=&mVEJyGipvT9Ki>LcHv zHLwfjMV-p8zBJClteqxAC|Uka(~wl>7s^RpJA(@=!i<0-=5N)+ndp3JoWj*kLp{hW z^dObOez-H)Z2x3LbuSen@=;N4y8&;}wX|wiJ|NC6(PW!17A&Ud)T{{id)j_Y&0d$# zpJvR(ZfeQV=;136HfFDDqtNcLct8fkJOSR>Aa`i@qsN@6y-|ml+HV)r4DAr>=%YwZ zGPzUC9AlzR&*h3WvQ~XF%4adCF?@iPDC<_nR6W=q)PpTXJG&E}UarK)Q`n#3>B;Lo z@Jr$U0)H?3een0g{}ujk8p{6x0JJ|?48I({1Rkei*n{vZ;URhr?HSUGRrneUdkB6t z{KN2T;WxmS!aoZCPxybq{~P`hcuM;W!u9Zv!#@H4ANVKXpMrl{!_d7BKso%Y@c)J1 z1ph4j7I;M<_!r?{g5L)JGW+L z--RdMJFPg)^)^oamy433(vmJMB(!hEa87WvLIlAsap+h@(GENH2GKr+!3sPs07tj8 zVVb`TyUY>MJ^(NFFTlWvIxpJ|^Dn@FzfxftOKcl}_go%;xBC}w7`z>D9G)16`4f>2 z!;NyqPPnVW!psi%qyvsl2+%C{F9I>Ox*~u-86SYR`xk`BKbodVw%bm-Mz)JiQxG0^ z1mw~YuB|aErb(#nwmaaH4*0e> zM|DQ45H8n2;KAv?_AtNmCC_!ZmkuvzI?~g71j=(puYJ;a$9Zvz+OUs}XASnC7!$xH zy|IdupCwXUXE^ZmMuPJAx+X~Iux3r)X|I$Y3nk972K98=6 z4zBc$hV6rN9eEyIa~Ew0?f2|JYy6ik$iyd6)1s&xjS2}5&dIgjhE|}}8^Kjkn z;7YIhC@;CvdF@p7RNZe^Y6%|kBG5@kYMNL`hdSpdHF{~t_I8~~5b5c$ZN2Hk6)$`) z4e4#K(xY6xV(hQ4&c@LfrEEtpCn+!cGCJ2iNzDfQTIE45D=wm|G{}-O_nwTd=v-8h)S3wxsNxblU_u{9!<{w#J zT->z1qAoSe^DILC@bcp~tUk<(Uw%~ArN>39;gYK;sB z^N&_5naY@-W^jrR==${oO=AR)?uo}xBkcU_`PbF{_?1^d0ce0a$lqxn4GT> z+eg@~yl`(-PiN&Uj*Dy^roFu=SNb#DuVS$&cSxv9m)q15yBlp}B0euo%TD?bTIi-Q z4iIqK<{bnI#|jU3j0IL|fyq%e_+f>fB7zg*%J6QYa{jJg91!MWr$iU8=;`7Zy3X1o zjV^XcHF2O^V|4mk6Gu&mi<;q2vPYMkK;9w~%E22ez;1~f*1A~zE>84@gVPD2 z&d15zZ^tgQL$#$o75DPd+FGp|rU~pv(%orZ=xTu7Ft<^PyOm;-J$QSaO1*+@!1Z44 zHr6Bjp0|f|+jL4#n^T7nZb-sK6@8v90+}y|kw7W%fs&Ka;(5T7x~c#%#)q(QMcIjK zmd!D=?8-0JO!XEWy*}b}7c_XioaluVr~Cb!=rtCnyD+CZAJq7pq&PSw7%EQnmdgb` z=R+^oIGy50ID(z-{2vC|9m0tko+{;w<5U_#{`)!6>q1U9hJ z`@bGQv`y_pNZZsI;w^@iLWF9US&0n~j+e#gRfS8mY8SmBAh*rw-2x>Jy?;RB&Q?KvDwe{Ee80a2o8(`XnyuBut15VR(}%|l z1aHyk4U8{c4Mq8rXp}vrp=>5<1+|o^BQH}Jm*k{`umf1E6;~;z%A8o&*qIZ&MJob= z#&8muQccuoz98oTvKZsoP)@Ncg`h(@<#0~q*BTbZ8ziWZCMB&gnxW@jDYBJ4!BCzc zGNCg45>K;LCd7iWpQ!mnX4KEAlC2O_vhRCC8zO2w?Y7D6rAXAyuEW!g2`ErOW1>gS;~st92Fa* z1qx19?;ISYr5B-oa<#*QxAI?1YHsw#)c5!{64g~%w)9TaS9F{NA(7W*Au40aj51Qy zm(m5-^ipi9PSi$W)R#l>Wx>{<{?B2K|FJcSZEFnWB;+|)C9bXQ3M>o76tfU9>dS@h zGLWdIvkLJ4a?~Hnsb`d9|K$(^y{L(vjEwfR3$K-+VNmm+C_Od94&YW$(Ae9+)1jqarq7Cg~??;{PSn%Tm8W^n0~ykztBXld91U&5bTub*zC- zqP^YIolg&s*rWJ8YM2*4ft2SQoQ0)^A*sfh2vS4#{L}{ocjs+H>|3HIfs&@(TsqiV zI=c$$&ueQ|1Z@5N`Nj5xrs~gSRZ-(685T zRm=1@w*ReOzf~=hDh-YBp?b+aALkK7rIgw^uOFxqL|57gE2WO&L?v-?7GXZ_<>{7s zDyIo@s!E}=`16luQ~=H)Sx#DHQ|pL{8x`SDPW?lD1t}+Oo^$B`RY_8!iFkWMO`_Bk zi850&B!cC5%>AGh3av!%Iy_MQ#$T7#?sy7)r8uMn_a|^AeN~jy4ikd|d-C9km z(n3u32tMZ$^WVr{C^r)~hFjW3DiIl?-RhQZ`ILhRYw0P1~))rEaS_Tz4rtiqt3^krpW2KE#S2g1y zoSGMH5!#R%s;`q&w4SC;OfF+r0a7EYzp>N!|9e^hY2s`FviqXxbzR-F+ds;X<~y{V zD9AUoEKJc&rNgzVMC@|w>R%#|`D)jHrxAl~HXwx4m6%l(frYe*T!19lt1HZZ17#7+ z<|x?6shP4*U0X1fMoSj2(==^{SktZ)qrF_~VBvvmRWqi1lo|xfKEqVe365xjE5yQ4 z&RBBAlu>TRgzf~D!aAop?F7A~%bB9#pU9|*3uQ-R1@WbVb4*;Y{y?LVjlw4kSGyXi z?IesdD7Dcd1ul-`+p&1wNgG(y4TbEb;bE+D{s-~m(*bzt2L>_m#c4>SiI?Ryd*_xq z3$=eslQSGM7c^9g8e1i<f&P$AQdoGL&z+yWKd0PS!trL$MXPzq1m7&c9JylT?YIho4`~H zB@T&emMtEd032RER8JG=b3;yd!M($J_mSy?MNUUq$?R$u&-wRQ%l*&7CBNU#iN49? zbibdI`rMM@c0o>fqfvuj4DQhy8oZ28*UPDO{)^ zwwlD1+PGq?Okv=&v4M{z8|<*Z@`W-219G-liml?~!Y5|~$K+rce}xI~G0&%w8;8fD zZEj@FIRAkZWi=CQjNMjt?aEpQEiM zh|<9)iEVo+%S7Ol!h0?Y@HuR^n+qvqDz=IdZT)R;A7G@~VLO$ro-f*=q9<+Fb-XZr zXtSkmaC>KIe}I7oUtdPlm8|P}@flI2-=0ukIujK+L?euqY+X|A1a>J!F)deEKvMYo zA?m@lcfVjVWj6|olkxJbbOHTCvavf9e>T(vx2M>t9A*nimMJOd3*t>O58H)INAI}* zVRrB@OtfX$_#296y3vl#ln$oiSiElkkVQ-SA&bBdY#2DaO7UBR;u9TxARR!&iTI%S zII3d8iH`>6;8c51d^DA`a0Wi=qUYeWbWr?ZDj?wuyqc}&-~e1uJic;aJA=_-Q-*J4 zIOUIXbRcvD53kDw#Yc;dfx#J!j)h{O6cm5B4WfiI@X0(q2a~O!_(Z!XC_Np9V*rBk zcQjKvScq|7#m7=9L_1m^eW(=2@eJ{0b{x4*bd;X6R2f`be2I4e(x3F7vZr2}(#Kv@ z`oPJ2179hk^uCKqf3gcnLk@4XF-qV5qS6Nr-(#c@=@Tv@eHuHNNO_Yp7<~v7k3nSm z&cXI03bI)mi*__y`U(Mb-sU1l|fT7=8cKVA(PSx-@60 z5>JxKKZ_v*+*lcip9Hw@?~uIqzy0l#eTMzpC+GV;lJ^YtdnDH$+8aA`>BCu1r9Qdu z&t}HEf!`xpa_h&7HaxKUx__LjeE4r4EFUbt(H@EoO&|C@5-mAi{6^Uy|2>Z%gTD5; z0oJAOR>@!f`hWL(9=-7G_TV4)I*6wMa5U_y-}Cs;I2P&r$U<`9cTrq4x-|`aLZQUx zifK^}+-}Jx=;I7M9Uo_KSAb|Tv(D@`=DQ!m_>doK&EI3pH{Sw&f;|HK_FtY*1CoD+ z2`&M+f%xPOP(hA9OiLqD`jr86;$VCBM5q~#2sI4}%!?VjxE~RD2h;KYp7Co*DqeqP?}9$&Z2VeSa4 z&tapp8D`u#edd%|gx`J+ltrjT_(FQd)Jfx}+BdA zZG6AmXV0EKt-JYNEnJVH+PI`ewQ=3<0M2b1gL22_O-=l3XWU3Q>2H8TGD==tn?cVz zYvWSxs*Ov%n=%r5ah8#vJ8fd#zjoxXh5}=9HgMXc*^_doPMV*$ZwU0Y3CCpSO~}1{ z>g>s{fRv5tH)c-m%rS!}jsK<~hj|4}O^uD6ojZ1F-jLke@*ZjCpv}miIqK>heDTJn z8kCVcEANV@a#$m0>NYdSjL)5&J9}P1-qT3!r~VUB=kB!f52F*EexL5Kmc5Q*FQ-eR zJgwpXwOhCK*-4{S82xTwGX2zp)!>v7&oiu!r;N4^?DfEQ$iTdUKCCw!pO?l?X}cTtl003HjX^{es9D#uboFC~!#Cke&YjTCa{0 z64t{9>q3>h7sf^jJ@vhDU09B->9XS7i9D+~x34wow9(4yb=vS27sMF!F6&Alii?(6 zgCx$(IacM1zP~18>B?_9Eu6gU6d8&->UYOo_UVq+-7{ZWva!Rhi)Os9@cUi2vIAq= zUUPT&3+pzHzxR2Czv`)xRoilshpal7`(5{`5yKSzrP#Smj-K6g-QzvpxqHI!Vn2OK z|288NTfb>$JlFf+xFfkMr>O+hA3c>{bnmXLCr4Zp@!{1yM=JbF?%f}Dp0Kvx6E9VE z)!j$0QFsbdpcon_TnYahbMvp$2)>gUMP77@_!J!4xGSQ6;kdl1MV)e(9&tmz^q)Qx z-Rtu|8odY7efG@hlk>*S-u5#39M7!Ta2`L zxLN80Zx_2hZ$kg^lV&eLCyTB*?I+_Z9$_u`$w==NF(QA`Eb64kPMg;EulYz-WOY@CQ!~Gc4D(&}Dj&)3NxX(N z-p-4z&d*~rAAL5FHG0cP%D{}QbLuCIb-C)Px7u9lZJ&mfSKi>udp^-)QKKI78qw8k z^a?ZE;V1dlENJwj`{lGoC(W|%hoe5^XWfZ4?tTn!?6C2pe|CHMe*+`4)%my)?f8kY zG}xA0nz#l+6au+Bes4HhrWboO1geFf=nkyccj`^7gbli3rES(d;eqLfF5b$#E`SJg z%tc(H&YsyAg;V zuPcdhbq(kEoUL@Nuu^Z{+PC`t9|jEH&l6sip^(bHOprhCR$gs%H;)5%o4pnc8piFJ zoA}5Sr3)J5)vpTF9h-FCwB77jJ$}vombu}*ozX9MVNbBWY2wR~$Vr@$pe$*sf|*RB zVy9l^nwU2`69eQ343M_DHMP?B&wj?pQC-EWeQ7mu8Do#|w_u1@H1>u{u%_L|h-uGx zX?oO6W5pdXVoZA;CqC3eN(I?5weFNbG~Ip!O>(_7W?*L4QxYj_HX>=@l$C9Zsc6+m zGiK)H&d$4S)~p#*hYuU1VpU=pJ9K6)`aefBX2`;2%rq%==GY`hq$)<4cJMq$lxj3G zD)aix;mYui0w#?p$EkVg_hjWhKVk7?DUUn!Kip-!`mFJ$U-~NfYMPlK~jW z_;!+Sl!nI!F&>ZRxj`Z#NAM9C%_`t&_er^Y0L~S+_2ldLwKV@k&G7%MRBOA@VU8r7 zn((h84%WKYd6SDuR`L6iRi8JRS)Y)$!g^zm?2^mD25x}De-whZmBV*$_V_owuw-j1 zlhIXmUv@#8mlG1D7o}^r(JrZzR^_rkBo~n;kYrdK@sLg>`7k7jUCkTJ=%y$GqU301 zxMNEPpP5qT0IfZQNI3&}ZjTS}=_1 z+Z1ZyjwcoJcSBTmw%x*0fbikFme=FQw9?rKTz$BvvwnEPir|6R67sPj*q|MOus<6K z%y7WNaTj90T(6x!<)IANt@Ymf`hC4KdQBuc?HuiUe;R$Z*vua0-!$~638!XF%FSZq zvHfIo3U>p0BVOIQ&X1v(>mfVEz=h*0^$dbu5AidE_|ByC%XCR9sUG@EwDwFPoWk}Y zifK+6{qoCd=8Q7zhYH-^EkTE=_?xA&^~c$BC8|uIx?Lqj!Fm(yfhN2iD183E&e*)Z9`$-KD$e!nCg86_O}_~h zL6r`L(Fu0`{t3qo{rdOpnmK5Y&DHeDe4{ixsEP4tf*kpa`W(p3Ut2?Du({i{e;#Vh z4Aha}1}-yzk%e=keWxc&99=g!`Wv4_N10L>52n-P@O!GlMd`)@(f&M613T6A1u5Sl z=x&I=$x*i!=pKf!KcU?XQkzlXD0q6#O25lWzphG=)QemZ#O#U?W*KP0gYnlNy$(^I z&jMapAi9@SiLTD~9AgFA3_L@(Eurj8VKz$IsdQ)62E!?~19ERKxUldQ_B}~;4eH7e z$k!X;H2h76hW+Z$GlOL@ld9Bk5RU-)?bzR#fG1hCO+reOJw_1 z-oRZEB=8mNYW$+AaB83#r3OT2t57DOsz_aIlD`P3Do$f+QVnw%S$(q$WIslT#nUH4vnPQ;_Np2`2@XKO0Fu z9Z7%qj{2X{RG(WUk~5YT655UJcdrC(vG1_EbbqMu^zkop{tQA1l>nik&A?RnIZ|-D zyJ9R}-a8hMT-ew~vteX3a+IRcllROT@=3#M|NGbvbFch+4tikvs5?F@&glICa%#hh z4lmzzZ?1!_#sbeh19KUTZB%o1q~7T0Sg2?htIQFn=?&>eRa&6}taG3P*gdtekolwo z8!V8At-F#$mQM9`vUWw=W}~>fikxcTk)2)hDNdzo#)jD)A7K|Om~6IP-2is#%9|6Z zbm;=jfCFbr@aZqv=ZM6`4tS3PCRPdx@4F zCXmq)6sVIQ{?vAFq}fe}1-8I!63uQTOl(xC4FOH98l9V4b*4xS!jkdjj#m&`VUv|O z>NJ+x1F&t!f~DzEClj>?p?`-J9Jz9FWdkr?io)0WNd(KdY83YSCeF;g%{O4u)Vx`v zXw5l&ntd~P(zuz^XHB0l+c!KvcV^!BQLqj9o?R0W$k~SyK($dsE0nUE+&HxFOs&qH zizK<+S4q{PR6GE(7Yhy7*|8+MYGQO2gG{x@5jR800(>?RJDsTp6}?Hw;>ylOOSQ>s z*(P8PsnMvJ)2GiKCE>*6QT<0|^dHo<|H%HKN{IbdrG&Z8E@8?=X@MS7WV*)@m#b`m zm;w>&yx4?#LP!bQD>SXGO$;S&oHT9x^trP}4WBm)TO($-q)~ELH>vCFsbiI_s;p#` z5;j_)!A;4k44v+XD|W!koMH-C$vS9vb(b^dEthy-`W&mV%mdfkt5U6RK-i0^jY9_v z7?{x?mLEKPC{2Ww)akN=5ljP8OUukK9g)S3in5_zu@86cANjzcmfk;i)pG719R92_ zvFh+0CY~is3=0n!oRmN!Df6mK2M;&J#<>!8oz09gcf!iZdmQnB1Dbfw?U0sexxZGg z{O6c&TKwnv{`YTjtyr;S!V-J_Dn8CjiA;z~eafs+gGSyoD!rh9HYZ07nm#Uf>ZlQU zw-t;MwKb({0<0=T?V49OUWvO$^-5q=m$?2FCgPpqR#DEWT zrClxWYxhtWXoc7JAJ9K@;E1}6FP>1ClV+gU_7_;HVv`0%0FTUlb_0tsIR}cNY^S324@1}tdMY}#} zHGkG{MZX;@!Ua>G*%`fd0J?x1uN`VfXm&LX-f;GhV`)jQ4=3$>H~O);>{A}o>qf;c zI#ZTqxv-~yLr+uH)PFKSC3x+DHa8hlm+XrE&qCy1{=hD~4)_NpEB7aCgR2^%y5Kz8 zcD9>hq>uTK-BOXIO$ay#Ubn9*w-h%Ec4D&eb2Vc>$yzf52YV_XxH+wLpIOf zzh*$^xLpdrWA~DpH41&Q$pDPfs83 zZDePx{_lUjDV%z|(#F?q&7LY%+=(tv{xf-3bkT6y6bn0}YW`yNXo%`apyR}i*{KRuw}I5$OE(+W zExumyz{9u9xb_mS^(gjL^2+a1^(3e#@n@p?ZZ(CorP7~#XZ-VVm+jBI^ZTXuFI>_5 zxlm~bnB6kx;Zg0RajIm})tt#u5M*&$W2u6g;h;&VuV4a-V-2Ki2S#>AfH)T8RQ}kT zTdb--ZsHv4u>=uK7k?k;QM`g41|`~daXeqdGRVOx+rdfEZp0Tz{AlO5Rtx-Cl2N!Y z5c^%aJ)I!LGC#I%TIV+&H`JmvS=c&XCQp&862KHLuh3pHnpV%_MlQ#%rX4rp@Z6onhFLG4#Q~Jz%=+Ri&TtI3 zV$b1+r-oZu2najxoWQQ9+m?&1kIotMc%C)9#<+qfS_^87QCjDT)<-o)R}eoK=IWs1 zXw-u}TwQ^FFi!>#x;k0q$Bi`0_p9Ny+-HpWe7gU^tl^@kz^#KH5Az?a+kZBO^EScg z2>P^2u5Fo>hHJLgfLn76*ASNv$dw4ZUg!*!j94edF!1Vwh+%KtLLV9vyQqPpc zWT%ghY?ztduXlV(N=kZaM(TjnOzDBYCZl(J5BwNa_w@AS0mg;ZRVczo5dq?op!ypcu9*$7_TGbi*()LN`*X=s6eh;`LrHk ajl$6Y>(JA(HttpStatus.OK); } + @PostMapping("/testBoxLash") + @Log("木箱捆扎测试") + public ResponseEntity testBoxLash(@RequestBody JSONObject whereJson) { + lashManageService.createLashTask(whereJson); + return new ResponseEntity<>(HttpStatus.OK); + } + }