From b326d156057feb64bd4816a50f68638dcaca8bc8 Mon Sep 17 00:00:00 2001 From: lym <1994302445@qq.com> Date: Mon, 1 Jul 2024 17:05:56 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E7=94=9F=E4=BA=A7=E5=8D=95=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E7=A9=BA=E5=8D=95=E7=8A=B6=E6=80=81=E4=BB=A5=E5=8F=8A?= =?UTF-8?q?=E7=A9=BA=E5=8D=95=E7=9B=B8=E5=85=B3=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../executor/enums/ErrorCodeConstants.java | 1 + .../admin/order/OrderController.java | 13 ++-- .../dal/mysql/orderBody/OrderBodyMapper.java | 7 ++ .../service/order/OrderServiceImpl.java | 12 +++- .../process/OrderProcessServiceImpl.java | 10 ++- .../admin/files/excel/ExcelReadUtil.java | 62 ++++++++++++++++-- .../type/生产单Excel导入错误导出模板.xlsx | Bin 24631 -> 25024 bytes .../resources/type/生产单新增Excel模板.xlsx | Bin 28637 -> 29011 bytes 8 files changed, 94 insertions(+), 11 deletions(-) diff --git a/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/ErrorCodeConstants.java b/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/ErrorCodeConstants.java index a826bff96..1f6ca6d99 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/ErrorCodeConstants.java +++ b/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/ErrorCodeConstants.java @@ -64,6 +64,7 @@ public interface ErrorCodeConstants { ErrorCode FILE_READ_ERR = new ErrorCode(1_002_029_012, "文件读取错误"); ErrorCode FILE_ADD_ERR = new ErrorCode(1_002_029_012, "文件已经存在是否强制保存"); ErrorCode FILE_UPLOAD_ERR = new ErrorCode(1_002_029_012, "文件内容为空"); + ErrorCode ORDER_STATUS_CONFLICT = new ErrorCode(1_002_029_006, "生产单状态冲突,禁止投入生产"); ErrorCode SOURCE_NOT_EXITS_ERROR = new ErrorCode(1_002_029_013, "源数据查询失败"); ErrorCode ORDER_CAN_NOT_DELETE = new ErrorCode(1_002_029_013, "存在状态不符合强制删除的生产单,禁止删除"); diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java index 4fd7102d5..32dd202fb 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java @@ -262,17 +262,22 @@ public class OrderController { return; } else if (excelReadUtil.isErr() > 0) { // 返回文件 -// System.out.println("(Map) " + (Map) map.get("order")+ " , (List)" +(List) map.get("plate")); ExcelWriterUtil.write(response, (Map) map.get("order"), (List) map.get("plate"), orderService.getSavePath() + File.separator + "生产单Excel导入错误导出模板.xlsx"); return; } else { // 获取数据 list = (List) map.get("plate"); - orderDO = excelReadUtil.changeOrderDO((Map) map.get("order")).setOrderType(0).setStatus(1); - if (!orderService.customOrderNoIsExists(orderDO.getCustomOrderNo())) { - ExcelWriterUtil.writeErr(response, "自定义生产单号存在", orderService.getSavePath() + File.separator + "错误文件.xlsx"); + Map mapOrder = excelReadUtil.changeOrderDO((Map) map.get("order")); + orderDO = ((OrderDO) mapOrder.get("order")).setOrderType(0).setStatus(1); + String err = ((String) mapOrder.get("error")); + if (!orderService.customOrderNoIsExists(orderDO.getCustomOrderNo())) { + err += orderDO.getCustomOrderNo() + "-自定义生产单号已存在;"; } + if (!err.equals("")) { + ExcelWriterUtil.writeErr(response, err, orderService.getSavePath() + File.separator + "错误文件.xlsx"); + } + } } else if (type == 1) { // json diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/orderBody/OrderBodyMapper.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/orderBody/OrderBodyMapper.java index 964afb347..b0a588f88 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/orderBody/OrderBodyMapper.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/orderBody/OrderBodyMapper.java @@ -61,4 +61,11 @@ public interface OrderBodyMapper extends BaseMapperX { .eq(OrderBodyDO::getOrganId, organId)); } + // 生产单柜体记录数量 + default int selectCountByOrderId(Long orderId, Long organId, Integer deleted) { + return Math.toIntExact(selectCount(new LambdaUpdateWrapper() + .eq(OrderBodyDO::getOrderId, orderId) + .eq(OrderBodyDO::getDeleted, deleted) + .eq(OrderBodyDO::getOrganId, organId))); + } } \ No newline at end of file diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java index fdf6cf77b..e0a2f6e6c 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java @@ -211,6 +211,12 @@ public class OrderServiceImpl implements OrderService { orderProcessMapper.updateOrderDeleted(orderId, OrderDeletedEnum.NOT_DELETED.getStatus(), SecurityFrameworkUtils.getLoginUser().getOrganId()); processStepMapper.updateOrderDeleted(orderId, OrderDeletedEnum.NOT_DELETED.getStatus(), SecurityFrameworkUtils.getLoginUser().getOrganId()); + if (orderDO.getStatus() == OrderStatusEnum.EMPTY.getStatus() ) { + if (orderBodyMapper.selectCountByOrderId(orderId, SecurityFrameworkUtils.getLoginUser().getOrganId(), OrderDeletedEnum.NOT_DELETED.getStatus()) == 0) { + orderMapper.updateOrderStatus(orderId, OrderStatusEnum.NEW_ORDER.getStatus(), SecurityFrameworkUtils.getLoginUser().getOrganId()); + } + } + } private void validateOrderExists(Long id, Long organId) { @@ -346,6 +352,10 @@ public class OrderServiceImpl implements OrderService { orderPartsMapper.updateDeletedById(partsList, OrderDeletedEnum.DELETED.getStatus(), SecurityFrameworkUtils.getLoginUser().getOrganId()); }); } + // 生产单柜体数量判断 + if (orderBodyMapper.selectCountByOrderId(orderId, SecurityFrameworkUtils.getLoginUser().getOrganId(),OrderDeletedEnum.NOT_DELETED.getStatus()) == 0) { + orderMapper.updateOrderStatus(orderId, OrderStatusEnum.EMPTY.getStatus(), SecurityFrameworkUtils.getLoginUser().getOrganId()); + } } @Override @@ -560,7 +570,7 @@ public class OrderServiceImpl implements OrderService { goodsDO = (List) map.get("goodsDO"); List plateGoodDOS = (List) map.get("plateGoodDOLists"); - validateCustomOrderNoExists(orderDO.getCustomOrderNo()); +// validateCustomOrderNoExists(orderDO.getCustomOrderNo()); orderInputProcessor.batchInsert(rawGoodsDO, bodyDO, groupDO, partsDO, plateDO, null, itemDO, orderDO, goodsDO, plateGoodDOS); orderInputProcessor.batchSaveModel(orderModelDOS); orderInputProcessor.batchSaveOrderPartsModel(orderPartsRemarks); diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/process/OrderProcessServiceImpl.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/process/OrderProcessServiceImpl.java index a0fdcea1c..413220646 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/process/OrderProcessServiceImpl.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/process/OrderProcessServiceImpl.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator; import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils; import com.cf.imes.module.executor.dal.dataobject.goods.GoodsDO; +import com.cf.imes.module.executor.dal.dataobject.order.OrderDO; import com.cf.imes.module.executor.dal.dataobject.orderBody.OrderBodyDO; import com.cf.imes.module.executor.dal.dataobject.orderGroup.OrderGroupDO; import com.cf.imes.module.executor.dal.dataobject.processStep.ProcessStepDO; @@ -15,6 +16,7 @@ import com.cf.imes.module.executor.dal.mysql.orderGroup.OrderGroupMapper; import com.cf.imes.module.executor.dal.mysql.plate.PlateMapper; import com.cf.imes.module.executor.dal.mysql.processStep.ProcessStepMapper; import com.cf.imes.module.executor.dal.mysql.processStepItem.ProcessStepItemMapper; +import com.cf.imes.module.executor.enums.OrderDeletedEnum; import com.cf.imes.module.executor.enums.OrderStatusEnum; import com.cf.imes.module.executor.enums.ProcessTypeEnum; import com.cf.imes.module.system.api.process.ProcessGroupApi; @@ -84,9 +86,15 @@ public class OrderProcessServiceImpl implements OrderProcessService { @Override @Transactional(rollbackFor = Exception.class) public Long createOrderProcess(OrderProcessSaveReqVO createReqVO) { + OrderDO order = orderMapper.selectOrderOne(createReqVO.getOrderId(), SecurityFrameworkUtils.getLoginUser().getOrganId(), OrderDeletedEnum.NOT_DELETED.getStatus()); // 当生产不为删除时,校验生产单存在 - if (orderMapper.selectOrder(createReqVO.getOrderId(), SecurityFrameworkUtils.getLoginUser().getOrganId()).isEmpty()) { + if (order == null) { throw exception(ORDER_NOT_EXISTS); + }else { +// 校验生产单状态 + if (order.getStatus() != OrderStatusEnum.NEW_ORDER.getStatus()) { + throw exception(ORDER_STATUS_CONFLICT); + } } // 校验工序组存在 if (!processGroupApi.getProcessGroup(createReqVO.getGroupId())) { diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/excel/ExcelReadUtil.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/excel/ExcelReadUtil.java index 1aa09c2b8..42ac82fa6 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/excel/ExcelReadUtil.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/excel/ExcelReadUtil.java @@ -21,9 +21,12 @@ import java.io.*; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; import java.util.*; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; +import java.util.regex.Matcher; +import java.util.regex.Pattern; @Slf4j @Component @@ -73,11 +76,19 @@ public class ExcelReadUtil { // 文件读取 } // order 数据转换 - public OrderDO changeOrderDO(Map orderMap) { + public Map changeOrderDO(Map orderMap) { + Map map = new HashMap<>(); String s = (String) orderMap.get("出货日期"); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); - LocalDate orderDate = LocalDate.parse(s, formatter); - + // string 拼接 + String error = ""; + // 电话校验 + if (validatePhoneNumber((String) orderMap.get("客户电话"))) { + error += (String) orderMap.get("客户电话")+ "-客户电话格式错误;"; + } + if (validatePhoneNumber((String) orderMap.get("经销商电话"))) { + error += (String) orderMap.get("经销商电话")+ "-经销商电话格式错误;"; + } OrderDO orderDO = OrderDO.builder() .organId(OrganContextHolder.getOrganId()) .dataType(0) @@ -88,13 +99,54 @@ public class ExcelReadUtil { // 文件读取 .address((String) orderMap.get("客户地址")) .phoneNumber((String) orderMap.get("客户电话")) .salesman((String) orderMap.get("业务员")) - .deliveryDate(orderDate.atStartOfDay()) .splitter((String) orderMap.get("拆单员")) .remark((String) orderMap.get("备注")) .build(); - return orderDO; + try { + LocalDate orderDate = LocalDate.parse(s, formatter); + orderDO.setDeliveryDate(orderDate.atStartOfDay()); + } catch (DateTimeParseException e) { + error += s + "-出货日期格式错误;"; + } + map.put("order", orderDO); + map.put("error", error); + return map; } + private Boolean validatePhoneNumber(String phoneNumber) { + // 定义手机号正则表达式 + String regex = "^1[3-9]\\d{9}$"; + + // 编译正则表达式 + Pattern pattern = Pattern.compile(regex); + + // 创建 Matcher 对象 + Matcher matcher = pattern.matcher(phoneNumber); + + // 判断手机号是否匹配正则表达式 + if (!matcher.matches()) { + return false; + } + return true; + } + + // 日期合法性校验 + private Boolean validateDate(String dateString) { + // 定义日期正则表达式 + String regex = "^\\d{4}/\\d{2}/\\d{2}$"; + + // 编译正则表达式 + Pattern pattern = Pattern.compile(regex); + + // 创建 Matcher 对象 + Matcher matcher = pattern.matcher(dateString); + + // 判断日期是否匹配正则表达式 + if (!matcher.matches()) { + return false; + } + return true; + } private LocalDateTime changeTime(String dateString) { // 使用 DateTimeFormatter 解析字符串为 LocalDateTime 对象 diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/type/生产单Excel导入错误导出模板.xlsx b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/type/生产单Excel导入错误导出模板.xlsx index e09ec97b87c53e5000b22969bdcb440daadf55bc..dfc6ef8e7482acd51ed48fecdeccd26db77dcdda 100644 GIT binary patch delta 10472 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 delta 10060 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 delta 13742 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 From 548b976dc652ee6b6fceb86c14affeea4980c5a5 Mon Sep 17 00:00:00 2001 From: lym <1994302445@qq.com> Date: Mon, 1 Jul 2024 17:17:00 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E7=94=9F=E4=BA=A7=E5=8D=95=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E7=A9=BA=E5=8D=95=E7=8A=B6=E6=80=81=E4=BB=A5=E5=8F=8A?= =?UTF-8?q?=E7=A9=BA=E5=8D=95=E7=9B=B8=E5=85=B3=E4=BF=AE=E6=94=B91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/order/OrderController.java | 3 +++ .../admin/files/excel/ExcelReadUtil.java | 21 ++----------------- 2 files changed, 5 insertions(+), 19 deletions(-) diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java index 32dd202fb..ecfdbf177 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java @@ -268,6 +268,9 @@ public class OrderController { // 获取数据 list = (List) map.get("plate"); Map mapOrder = excelReadUtil.changeOrderDO((Map) map.get("order")); + if (list.size() == 0) { + orderDO.setStatus(0); + } orderDO = ((OrderDO) mapOrder.get("order")).setOrderType(0).setStatus(1); String err = ((String) mapOrder.get("error")); diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/excel/ExcelReadUtil.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/excel/ExcelReadUtil.java index 42ac82fa6..78bdc1244 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/excel/ExcelReadUtil.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/excel/ExcelReadUtil.java @@ -83,10 +83,10 @@ public class ExcelReadUtil { // 文件读取 // string 拼接 String error = ""; // 电话校验 - if (validatePhoneNumber((String) orderMap.get("客户电话"))) { + if (!validatePhoneNumber((String) orderMap.get("客户电话"))) { error += (String) orderMap.get("客户电话")+ "-客户电话格式错误;"; } - if (validatePhoneNumber((String) orderMap.get("经销商电话"))) { + if (!validatePhoneNumber((String) orderMap.get("经销商电话"))) { error += (String) orderMap.get("经销商电话")+ "-经销商电话格式错误;"; } OrderDO orderDO = OrderDO.builder() @@ -130,23 +130,6 @@ public class ExcelReadUtil { // 文件读取 return true; } - // 日期合法性校验 - private Boolean validateDate(String dateString) { - // 定义日期正则表达式 - String regex = "^\\d{4}/\\d{2}/\\d{2}$"; - - // 编译正则表达式 - Pattern pattern = Pattern.compile(regex); - - // 创建 Matcher 对象 - Matcher matcher = pattern.matcher(dateString); - - // 判断日期是否匹配正则表达式 - if (!matcher.matches()) { - return false; - } - return true; - } private LocalDateTime changeTime(String dateString) { // 使用 DateTimeFormatter 解析字符串为 LocalDateTime 对象 From 5418cfdbdfe6e65cd9b5319896d201fb8247d652 Mon Sep 17 00:00:00 2001 From: lym <1994302445@qq.com> Date: Tue, 2 Jul 2024 11:17:18 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E4=BD=99=E6=96=99=E5=BA=93=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E7=BA=B9=E7=90=86=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../executor/enums/ErrorCodeConstants.java | 1 + .../admin/order/OrderController.java | 4 ++++ .../resources/type/生产单新增Excel模板.xlsx | Bin 29011 -> 29001 bytes .../plate/vo/remain/RemainPlatePageReqVO.java | 3 +++ .../plate/vo/remain/RemainPlateRespVO.java | 6 ++++++ .../plate/vo/remain/RemainPlateSaveReqVO.java | 4 ++++ .../remainplaten/RemainPlateDO.java | 4 ++++ .../mysql/remainplaten/RemainPlateMapper.java | 1 + 8 files changed, 23 insertions(+) diff --git a/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/ErrorCodeConstants.java b/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/ErrorCodeConstants.java index 1f6ca6d99..876f30230 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/ErrorCodeConstants.java +++ b/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/ErrorCodeConstants.java @@ -56,6 +56,7 @@ public interface ErrorCodeConstants { ErrorCode ORDER_STATUS_ERROR = new ErrorCode(1_002_029_006, "生产单不允许删除"); ErrorCode APP_TOKEN_ERROR = new ErrorCode(1_002_029_007, "token获取失败"); ErrorCode PLATE_PLAN_DATA_ERROR = new ErrorCode(1_002_029_008, "板材生产数据获取错误或此单不存在"); + ErrorCode PLATE_PLAN_DATA_NULL = new ErrorCode(1_002_029_008, "板材生产源数据为空"); ErrorCode PARTS_DATA_ERROR = new ErrorCode(1_002_029_009, "配件数据获取错误"); ErrorCode BODY_DATA_ERROR = new ErrorCode(1_002_029_010, "柜体数据获取错误"); ErrorCode GOODS_DATA_ERROR = new ErrorCode(1_002_029_011, "商品信息获取错误"); diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java index ecfdbf177..24d41f17b 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java @@ -38,6 +38,7 @@ import com.cf.imes.framework.operatelog.core.annotations.OperateLog; import static com.cf.imes.framework.operatelog.core.enums.OperateTypeEnum.*; import static com.cf.imes.module.executor.enums.ErrorCodeConstants.PLATE_PLAN_DATA_ERROR; +import static com.cf.imes.module.executor.enums.ErrorCodeConstants.PLATE_PLAN_DATA_NULL; import com.cf.imes.module.executor.dal.dataobject.order.OrderDO; import com.cf.imes.module.executor.service.order.OrderService; @@ -217,6 +218,9 @@ public class OrderController { if (!dataPlates.getString("err_code").equals("0")) { throw exception(PLATE_PLAN_DATA_ERROR); } + if (dataPlates.getJSONObject("value") == null) { + throw exception(PLATE_PLAN_DATA_NULL); + } JSONObject dataParts = apiDataAchieve.getApiPartsMessage(token, orderNo).get(); JSONObject dataBody = apiDataAchieve.getApiBodyMessage(token, orderNo).get(); JSONObject dataGoods = apiDataAchieve.getApiGoodsMessage(token, orderNo).get(); diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/type/生产单新增Excel模板.xlsx b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/type/生产单新增Excel模板.xlsx index a18f221c6a0876fc963faaa9ecd8d49b1d6a53cd..2a663c272cc3ceebe4c778f4fb3758409c47d353 100644 GIT binary patch delta 9944 zcmb_?Wl&t*wk__`jW-T~03ieq&_M9u9w4~8yCv-42^#3&+Gq&w9yAa%jV91Y2p%j1 z_t*K(Iq!U@UcGzokK0vi*W9!Bt~JM)W6im1)tdT&KJ){Eg%QTC`YDk$c|1j3Xo5YH%c1XqNoOQo*=H@{BK8vfnpTXQxJel|@(V)HEc={19 zvP~ej>}{L~IeFe(iA+}9W<_9jdKa$_MP}5qq9Nr^bWnct_d;DJ*Owy~QL&}Mo0>Ri zLS9y>Dve3DLls5BN%kGZ#Lo#HITcuNF#H7KXBxD{K{DJ0uRcCB4)iep#Z|54_wJ+MQ?JX>M)vlv%69vb_IiSE(owy>J! zZ-Px2AD>*;5Qht9W0e#ZI;G-23WSfN&Ce%2iD5!g4KV4{NRIb7Dpj#>2~G)1)Q|zU z9EKOT5ATSHkW%qcGDe;HtV&B96CIc$gB_y0&lL{*Cxw-eA?%G+&unQalO7CZ6kPNZ zSqzCB_eE{Zw^&m?XYd#DQrr2#yh&%d*1&99OvSv0&Is*08%!vbl%bhY(VhS)*mr2> z_q{ZcDsN>B*7wqC@l?IrP0vR>&*ueRQ$9^ru;Fok{UBcB8M!wjk8#gkeuh!q&YD{W zCAYqAYw|N`xjwQPiGv3*-Q0>ks`VO&z=ERlsVkR4)3ju31T2t4;6d8Y;^Gm1BaXrN z6Q*emfgD*vua;Qvv%A3;vMsE%6fX-S(C>IR4YX#&e-jDgu&-Zne)rl5jqc66H&VFmT8_&&e_`UM6BmepAG7(srf`E@4w) z!n(VV+1?HA_C>U1&C9RoJF&lWC*og_XPVI>ac9?F6#C-vcM_FP(CB9^9d~=_g-IS? z_bs`%K8hrnt==4mVK%w_xm5`vaQVBz#`$J-p^h>@Xe1f05yTc8 zc828Pv0|0cXn*zUAh@oUdf*g~vyDq5DR%I2jPa@v(3X-n#wPGrx zo2hs2N#-@qg1Qop)A#*Jvp%_5o0pR2P%n=AE}d!KWvw#En@^DEOkI&P*qc{Vf91F| zV~?GYnJpBqpbmnRGiNs1<{JJtKW`R*+J z@cGzrdn9W#Y&UQY?+vx^bSEjfT6SlI0oFl_s`Y`n&5t-GxO|x;^Ht^M$nWS|#Ne7z zTgBZYwe<63w+zU4e9D)jI_Zpt6ZljBXjZ&et=*={QX%1XoFfqi1b!o3uuL9but8`p z%D97C4~6ij90hXJgSMrF7%7SFyL|9sbQ?#6FJaWhIne;h7x&Q zC34oyM9_7lg;*V@ zFQC~O(PVz$gS}Sk$f}Buq(ODsM!(FXgK=%kL!*p|vvJ1|;Tq;M(uox~8eHFBB zuNY~DF_Y3`s87M3kXm8!-W~7M7m>1~<9FR|Jh}}gzFV)K1hHb1+^(PIcgBWBp^&MB?vh|2~uz|cl%VW*&Y@EVSz=VTwABI&D3q3h`mTy6NDL7gL?7@ zgg=><=vk^i?yvRF!f+GWwg^A`!`~s3cPDgjc@Ijj%$Zm$mNbvMp2+rgPOADca(dDs05NRJYForxnh)cQw4U8#I3=)$*MgwEXg8`7Tv=BNNTb>eRDD8s| z#*v4B9Hkr3!MO4apg`$kbTFPg3+Ros5C#}uo*k4S?Sla(kmmxGNjG4C3FUb}tb(2%qcCYV@W7&IsCg9#>)7XxieH(-KEYPn~EwumGD|K|Tl~Jwu<%Q&B6~&W} zNR*9T?@V7pE4??LihNqPRxNsrUZ<>5Cp6)Q#l~&;s#vmw}VWe!%uspijd*XU+Q4EYi4^ec$t7L6e>h@O398kSG|CPu~oyYs+ z`n-Di?sRoT;egj5uc{j5I7vJ{Xim$U>biA5_<80ITr}SWU*E1G&$`&Jr)=+j?6@!g zjM7^a;OBk9cC9FTcYV3toCt*6?5#GBwz$)TbLTH$k7J%q9(76x6dphZ;zI2u)|0+l z1OwsDnzUXb2D$uJPq(Z`>Zuode`nJkeJyR)^o1)YcR0<`W_Wbe8{v}i++ll3i%)c%OhgT_Yx0p2=5L@|K z_WsVTH*>}#zQOKgSs|@79gBLs6^onJm>uO<<8pniZRhFk3W>yT-5mFTu?Nr(_$r*& zx=$L9B1Gln_Bo99IZ50X&_wnEIFk5XtJ^+KoL*|r3;K5el$v5^dwn0wf2B`xU60vt zRdH+SNB(~Nbom932AF#LX*O%cYUKl&_qUHUmg=`eT1G#@+45YeKkGfe#P#>R(Udt< zl#pm4Q8YJMU0U3;Z3y^!4g5S6pp{tQkXImlhnct0N%7Vz?0@jj(w~J_}W{$XBKd|^()>X~3Kx(5t z?^JOD3}GYo%uWiiPwLNTqP|N|Y+LQU_ws5h$!WpTDJ_Ovy>6W|je_AA2Ob^I`YC=? ze}}h=Jd>xK_ya6?5Nl^c?@9r)7qHf`3rp zppf3nsvjht>4v4Iy1?5Y15Y|ris_+`nGGk^gEa1TgzX)Y;2Pz6U>s>~ zyGqCd=bN$2oX`@_o3*T1x8RG}rsodd)R#BIOC^P12zf%ENd-Y~5@v3(9`m zJSktQ?z7z`9J+9No{bAsHj7vWzc?P8dv1O8WKT|xbl9*j0@fI{x?7pcJbFUkGY-zR zDf?zlNX*gcPsvoHm`T+2cX<`UJT21$7<><9LHCiCz) zvOhqA?T{K%$ec{3136Ngri*M*Q*9#Ez<8S`SItS6Pk}*)FK3?Syr*8iavfoB?R`5p z`4^@)`D8k-E#C;?|Dlon?wa91dB%P4SP%N9g<2fg=^RYnUt zbyq61H(CR|D*IWypIUjX1$(jxU3!8v=oS{t8ES8ioL?;0lBv&PINP!;h^*&@%)LZG zd)a5y`X^s4?s8uHsC@00E3JJD#IiqaL*X+2gDcP5+)DkA@LnPTl=5COgf1Eo=Pei{ zeST>?iByt(R&G)yIGgUVprk*l;x;Zml5IL zZc)lZ7mo>;`<_UM>4#<8ZI3rQQ)7lZ{OTx1!oGX2SJJgR`6+s}z=N|o7V{WEivhcW zJrfJUR3Cxw3wc0rAHwQ{=u_63k&t5~3(@(;on^N#(yH5Xct3bd#=cv`QuFSu^7yMP zzx|cF`wM{;4RYcw_=1PiNy9k4oXE(e!~iYpsQX0fkW79ddk1*biI@vsnyswoB0!?w z{xc{@@S1Pg`N>%noJX!5!?Zc;#@=oZ0_F3u*@}c4L;)XEENpXDFiW57&lEZ!AKlaP zXm>($P9wIkN_l3LQRHf5_GO%%hMc>YOtskQYs^)oNful?Q2m8_N(A4Migt}yAJ2LDB4OFgw`d$9 zzbUdtB=jEe-2Onf83E^#6O7s*;#pgdU>K-V+j6vb;MH0Xo_+C?Sk5@g4_nqc-*Dc$ z4^vJt%8Vw+mJ@=RBXGml`z^ei5qq|Z)t+c!S*w8oU#%k9hG-%0Imh-MD%?D`Sy};cSp3h_mm`IUl2t>_@bq{}6V3@BUH0tg<-H z2GFRAJ+M$k)IA^hJ&xsUGmgc&m*!`~aWzB^RzE%fl499@BPu4Pst7BkRd#(Vcx{F_63Qx%=~HNl&YxfQNNY) z2J@3R(DQa^w%BX;dn(5EBpHJn2!C_M>(SMI_UdFyK^^e!rx@fTC1g7#WQ3(; z+@)lyrA}W--0t;1*T?R2jp&}gBrJWuTHDnSza`Q$-x2?M==Q~NoUYd6Gydiy<(d5~4AhOu>dN=75)sQitZlu_UC5v zQB6d91QFxXQw^I@xKRm2oqWf`T3$F%TVLK9+|b4yf-_Lq8C#9toHR1&`y1Qj?9jo7 zR4QIL8*hqHcHrJ{x1{`vnEhv0Pg3oGUdT_6^=dJ>1i*Glh<`3!?m#5^%X7K?!uFEE zg{qL!Njs!lpLGjmGScy_@Y?tUtOChhD@xI7H4nii#m(76crp z2$C;L`mj;9u6Vou#UR4;%=te!9HRBQXd7m8{v*k~wy>r>0gPSc1_pq@g^jOPEm`>2 zIZBYT-4eCWl7;!)xoY$VCZE7v;N^|oDmO5>{w}kLYRniZOX5AI(?I9*^@6;DN0kx5 zc~-e>^*Gy$xHY{&A)FO%E0O{>M3VeMHV*xWzh#`S!N%beA`|}CVkVLlY_Q+@rvd?p z%KR7vS@l-AJ?>4ILBWp{&Oml2vo{3>1wT_bgC`#)YEnFLObaYHR&F09|5Po10`qIF zd=IQszq+y}Xk^UE)x2FF6!9bTY=(5$Z-v4YqvGHkQBg$kG_-$Pv{9)Ed_FH&EGb;oPo(4NAeRei42b6+_fPI?Q=HG zjW?4VfdZNoQbVx7g6ov(t~4tK(O%;nN3O?*Y#a(M*Nb;>dEx9H92&;1-yqW=N^*s{Kp@&~Oeq40ZhyZ}+Bz`JSXQnjBp zY7`P>C}?ZSIiutXnm7dt&Ed=XrMy02^m<2R_`U_K z-z+!qz`3}j{fFLVSw-;hZlnP>DMR_qsvr?WPLqfjLd!4oH@y<^K#ces#zAT;e|01P z0}d^t|9j!|o#cW+A>7!}BdD0nxWs;|jDfio6f2%F)av;4t1N=KBT+YuwK_rlDtln= zPpBIve(l>Ljcn@bacJ}J>hgN!R#D%_T3Ysa3KGZ0`lT9SafbiDK!EYLx*TIaQw>oS z99p)LOUL-HqNAMSGhC!GpwiO`%`i~epBd`V@u}9>NU00<6{x0IDu)FYADiWja(_De zLlvOI@w)?R?YDb8-t;EpAJc#4`EREm2mbe_&xYdiclhe$xVzjvek>=G!va4<)EfEz zR|~S#1NcWEq2=B5FG&ukhgR@W9>NAU6;$?(l;`qfM;!-DQ};(?jp!1rJ20bCAtvnjkBO&j8{z zoL`RoUzOj&VF(ce7uNiTI5FTp|EbMwls0`J!Jy}5qK^)Aym(Fbt0@*$(*lck&Dut} zBhMyn&A2+#9v!J1cKV=7M_y5^1g|Oe0~M*FS=PN}v)c}jEQttmw*;ktm8f64ayd#B zz+JmFr^$aI(EqzqFyJ2l8O#bQ7!TA!8H~KWx<@QjT$xiT&G6{Do>Fk9Xdh0 zCL1X~f>%&wMGBufFy2Gz_I&5;0JXPwJ9uDzhmQuJ-QA&~p)UO?>h4q0ps2f;b??+~ z?aslj>?wXX=#tN3UiU8wxmm9S^$oyZ;JuL((~5}cN5>a_CCyC2Ork`=sduLaO9pyG z5e4rkMW&|$HfMJCS0P<)t~O4Rg!Kh9wB=sU^j)V;$BJhi=e6dHkQ9E1+OZAuixI!> zb^t2#JwMzRn})zAj9DgnivW*e3rprFL8WXs$&9OlC3g;UcK+%X0X-)IALDCt?|fe^ z?pm&$$ck)yIXPcAS&7~Ytrt165A&NF2##YMf@Sl$Y;J#N0rMZHX^(9)^e&tfAodgW=uMM0}7yrAR54I zhf8);vNwZ{B^pMf-AmtZm3Yq$$wuZ$pNxQp^F7HPdy;y4@u^CN0I1aaSTtWxxI!=Z z+v!8<3(tPI0>50g7hxp0iM+>374MXK`mniLc)I%6;kn1%V9(W2cpH{h8kOWLGF-*c zs9QABPw?0X-tWP`-#8mq{o?YahTE-f)|VcXto9Aq9PF)KNp@d7i!S6vzQP4oSR#OX zxwUaDEgUr8R6fjld-SmyhcmtR?GYqSsXo)pW8h?qq z9EL6G+UYJ*{uI;tEs4O)n0vV9WeJO3ZpzF;2y#REgG#a3^9lkd>t`dKtw$mv#chvw z?F}1`$^VEQ6HQAM6N>^32dzF|GXeL6i}43&O02Z_LDJVi;TZBCByz8yf;?Y!?d)QO-a!ocRx0UU zu3C}4*XBzG`i^6JT=CnG6XaH zmIj8}zggyCkgM)EyyyC*PX`PqMYwj0XYWmWL-_?S}?!Eva*JlUIvlk+< z=R1kDPSwd3?kdSb&bi4IEj$&Bc~0=-CdWk8$Jm11mMslNgcYg6$L-(0QzU&0rDhNQ zn5WsDYxP>87cZcTp;NIxCyTiK`jrrV?H8@Ms#Z#SpqEB;cknY&J*nvF1W~ANW6R1m znZ++wbZ6Wa470B|S9gc>An9>iy*Xm z`J`4{#Y)6R+k#(~5kD5a|0Y*u5Y$X<_R;bo)H?Z)Q!H%NFjCj6sM`$Jhb1?ePx>w8 zTFZw}Bf#*PzBG@+2RaSkRTDg409O79bN0TMP5q-^>zOUt%_7x}ykZ_5SqmFjQh# z&N5(-EH^JKrND_w37hiWXoa*zBV}+zoKP@DAPflD_Fn`g{=oaBg=Chk9aLc_HA~{O zw?nrv5s>OJwQ{NTs)E|vQayX6CBHmsKdY7U!Vd8#=Q-mqt{jEr`&Yy%$xf%nx)&*c>^uh&GNAWIKF1eax5YS*jG>F~&tw=c&WnQ{l?eRAor@Lie))?h$8qbM2mlqY3qn z7_pqtt%T+RvnSyJ=%r6jIA5e;Qx&T;qC+17yrzaaB7C#$Mf%O33tp^G_ohrDSYK;V zWeZ`Xe112^Ksap3hM|c`_IUQ(aja?0@VAdv+q0y7&^>W=Xbszm8H;~QxQ*6l4>_=};KDavQL?_?_*8~S zU>9t{kCYKN^V3rVJ<{u;vVDXKOUbT0>y`M2UEQA-SYV|<#f2fs%)^(6m*lfXRP!g1 zkMQ4^?y-(6M4a2;@5tcyCJ?95l1133et8!f+?$fa1ncg3?enDG3tBIsp#3eS zI`{Hos`M`8PS0pDT9;mjKGqt%kv{?kq^I)M?Io`77(*fNnPeX9Y{mRtKVNo83Nj9*t?&Wn|S4q7f z@UOsJk{a9Hy{97qj#*I~Ld3fDM*As#GfwlF)>-jcslqLd492}~2Z1LO2z6bP0-Nu9 zB%i7xsXD z{IE7XnBvus`1jL~6~C-M=#UBZRm0a8A@K4+i%tEst}r0H9v`YW<-k{kK^Kr*_il%N zFMEo@dc>bOBfdi}&~u7rC>sDWd1m8)8lLYFZ@C}#@b}R7G4M^_12ZIrB`V!G{$ykp zjiP1awD+X{bUwJ#t#oBCSFM&^=Y_lH4;{#DqQldi-X?)lKZahXlAsnvFo@5!!wx1bTh{OWCB-;`E_?RT<#e5 zTcEw2*WkU9QgW0H_{7<)yZsuFG~0IT^;mJJk*nWs_uV^-ZDHT#)7~);@ct zf^(dD8D|U3znv8O;HH6QMrTY{yL>1i)y%5=x8*kugrh{dSEi{3h4Q; zX!rYc|8Bl$XvF`11ZDBUKD$FPL`-33rc^Lmj|b=U4jL7LU6Z7 za=%;u_g>Y#^`>f1^**y}*6QxHyZ4+qeXEEQtB4hIXqZI&07E=70zx@_4UGvniF==H z7=kdTw68g3IiH{qjhuJ%gv&OCxn=6^K!lmz-qAyQcCl2Q$``uE%WE}wm0)i`G4fX7 zdrD~Nh}}fS>tXC^QI)}^EegsM=-V7Ng>EWgZleOeHvQY{fh*{ze9|pdGz2~u)3P`l zhJl!?jW9o{{iJwr_;FF7CJwl}^sRpN5f%T-f+trMdlon}lOLuD}=^^$q z-8`3Ir=qd2aFJ!>a!kT5PDUxsPWEM`y~!;->iimYDs){ZNSxQ86PX<#^o!AS`i8am zt>SJ1LY^~a%M`TkPc$UqrvOJRvOPQ1X!B5wl04 z`?=E~_3IYh3Fb-|MC~+!2u;+8SzB#N_R|6me8S)~`e~g!yxKI>TeY1Td_3Q_H|Gs# zbu&~Eey?Z7N|-kRTk5>J7bzC3%4X=^6C~N>^YoPYid-Hqv%jTTic#&+q}>an>E7A# z`D6dwVW;eDDc=%r&!Y$XLmQqs8GT!+O?@j=6Q1tVLolyWAhxY#pg1*>p@nu@VWleX zu}v@H?!O)(gB~IFLyDKvSsjRFw*Iv@w>_eG3g{R4Psnxxo=VmF#F?8x>#B$DUvn*9 zF~Y3L2oC*K1qIN2liFCV`;rr!%W ztsm3%=Rcjnuu)R0-)r zvY??I+?eY5a!ba&yS${;5CV2&Uo;(r(72Gqu0%*(W>gKd-iSf6XleRWXgd@*b*A-9 zPye+J0B{v4<>s<8&&oUL*{X5l=SNv2x~7&-*%z(e5|Uf?{+5F(%iHdS4VZ};h1w*xfic>OJCln(qAw0tu7!v31bVpWvy@RL~^*sw(6Fok^!IS#^F zDwd{Dr1HaBE}@-HGkqYz^HrNSgtwWqMX#KQ`rV4joVDXIg>}}?1}hDwH|F6Wd}^eh zqi}J2QMx_X=djEdKKKQ%N<-+r^*b0A^31IKv6LiJ`f zoX9Fx&}XKykXgUdfo-#tzZCiasZe!!i{1kql&ea)Q5g_l2? z96ud)Jd|U|ncxp(lyC`h2DmCY@#8>;`;jxkBOdJtat!#_$Lj;+#ApmZX?M;Q;1`d} zF)4`AWb0X)#Kz$K6pZkfk5jRU{UnDGxDkaQ8mF6Y<~%mMf`SQNPC*GjpkRPMP!K;3 zbS;hpyybytTj|DNH_Uya)s4HHhrJgdqeaz=HgV~1&0n?w|KMP6iSCDM48oHDmxnV# zp3S?O`#px>!5hrGAMy%Gs`AnYi~_ zpc}ba3j{=uqU7(71|?{(do&)re$kEGt+fN9S5fj0N53R!?|UX5yl&}69vBc{NFbv3 z5Ckw13=72bej5Rd0wV&czlR`#(O{Gym-pLe_6F&E_jMq0 zY;^s_!J$n2_AKi3!SlzLiHCc~{D+(Rw%hp!v4Dr8{hKAC`<*7=v$J}~eCSl6g{h&x z!evzO{ngooBi+O8^?Z+G(vcdkPhmFHg-#IpckY_6xB1H-yx|mLBVPRs?d^bv&x>@v zb%*P8Zqt|BW`p5+OFg{2;=bQyU+Lw0ZYgRgHeKW-fzM=6H?xp_ask+z!AH-M2+^vE zwlHOMu$A87Qn@Rdh}p@#SP3#jVIuL>)@Z8m63LwN9aCn#kW!Owi3%dJywFtZIMtGl z`pMO%sm0izLB-ra6!r^>Sr!X0cj9PE$Nl8$)*NFJmVNQcCC+`vE{7_wv48wDhifcO z&FaOV8`J4*ghm=^*u=~yjWpCFfI4A?M3E!4|gy`vzvY_T}NJUhGc00e6WfxF+r+PZOHAF+jOU%cj7E>(7 zWMqt3BoyDAoPE?hR-6$OhJ{P1f1$i~bMHDh8IJLT^VO$8hJht6xI(t^O z9%#wm&)|;F=k_-m?JGwsQUZF>Iej6_nW0a%vpy-Q*NpKX9b~UW3codojy@LbK}BM> zn9fNHc`-Oi9Gn8B%}VQEk(Y?effR5k3Ki{UO<=PCy2@I9{R_PvvKkwGes5Zqf(K?u zV@{?j1TXG&4;(trFPEdLE5Dx`%zcE?##TcyS!{88X7$9R68C&je4`E-mAmhCA&`o+ z0Kadv*18KXUyMsfZEUEKI_JvdlTwWckiND=N+H9E&@xsIEJc}yNhaF!)PC`OjbrI+ zqcGRp;(tg}U8-o^J9Ogb;CZcj^6jPSX^gC8ioBEeL{XDzb*^)yvIw7^>FYTi zuK~LhYvHBBt0VDKNz0Ux&6Ps4V;N7RG$$KTkb_+SG%KF)Ey8Ejv!w= z`o%O@r_)^uiJMiTY#HRpcCl0*pikm3n|LCkDbUKE7Rv0Z#q3j}BzxL+5fQyH(iDye*VJ;(yZi-~bnMCJ zK#ZaYwque#?`y}TQU3kQW`#tEY?CXGf6&VA)NZ=7)wKJl!l=H?M27wW(HC~ ze;oRB|1XCO1oY&<)k6$U$$4Ljj|Elh3(oVS4)?kXKF=LTVFz0(Yx7!Lt#DM^=k0Jj zhEzb0o4C1JlaXg0%IH~_g>6!|D|^IJ!o!l#62Ey2$Z75}v$|_56nbk6r&REq+pBIV z9t5=FVTpP{XXcvvc0C-+J2igUZc8kAh`QAI@gN0`G5czrF?pM6xnP?wZf zzc5WWWB-^Y+dnID6`M+T!GeQLgP}_gP>Q8kq4uT)=*_&AyE|3co?Of}hXbw9^#Mmq zw>#NVl=D{^-@KF7FBeUj{vVfCg{ky=j%<0@C{ZPh8xxhwKjA$iGLOPY1IkI>c!y z7Pz*!5Ub_*O*P#wlP`W5c{9zp)k@Lyt2IpacZ&Ssu%WhF_iyDj>a9K3-^wM5z@z#a z9Us-#Sk6#!Q?vrVc}mpiC?g!jC|ldVA#4_b*;8xYU9z6{s^8*<)XefmlhLOAVpb`4NJhiZ{RYPS3|qSYoDV`pAO_%ZU!&$E?ce`3K%P9 zzt^US<6ZV+8-7ob5?1$^8y#T0@4YMV8&~E-nkDNZqjr`e1CGhJ`UiYu@mdZv>bzf% z!gE9OqdGtR@X7^Ezup!9p?+o9ESF}k-99liKmP4v3!cSSu46)co54|D8DeN2&JcNW zv57w(Rfk-X+G+GiyG??~jLY)gGj%$`f6oNF^3b`v6Yv85kW znRokJ%zP8mR?vTS%nug#YAbD|V)^3idhN3?{#@vivHLMPueIZBGrp-+?^41t{x1sY zF#vBKV<1iB=90Rt#RgC;<%JD9_EA98*2XnOhOMB?IIk&^x%m0{P+viM>1$aWUhg z$@0iMz%2b8TOWDij}n}QNQ;#~Ouh}z@1JjozdQBcJtT7jlSVk^W*Ew+neeup20I-7 zK6?tD^>F%M6&#+wBj^|CzUZpk;uJmp!la1vxHLnFI7!m^C&&W>m?9Y=jHnuVb&OZb zatW22V|L_oPcR|^um4|$;enNb-)K>%OTbn*3rlJ>q@Nh~$s0=FF^Tct(N2S|?-I=d`#tNps+u6Ipt!=5LE=NP|M zWT486yYsD`TTfmM~i3`9)@KJ2G-rs*jfi-Voa|?NfGn z5+d2gf8s@Vn16<5g}1r}bHNk%Sau`4YDLR3%rW2#Rk;-e)3w}Y(Zij7sDT#v7eY#F z71jAZ#!n`Gu#qo!_f|85rc)$y@%=+^hK+*}U`v)!7M4)azc`p6)7+OZfmg0pmi(0| zfgozN2hKi)FqfP8c3fr=(aeW$Xh^;!@2X2i*-#u=E26)3RTXwM6?SzLcJ&u_jTa`@ zeo&$RUiFMzIOJRMHFmyWw;5nfHCFne)|-kDes{Gkq9QfB(6cb?$k37fL6JyE?l;gp z(fpFC$m16YUxBkV`aH&e>(7zi%b!-_$f)-d9=`lQd=4$w<$^6#0LLCXcvy0xW)12K z#lxYY@UdVOLQbplA()Xg9%||k3tkq(EYT4d^7ok3#dTZ3%ytX7Pk*?zs`!p0#>-~{=^qWx^v2HQ@1pa^9vFJ%cQG3Cb{#s> zVhQOSt&_aiFDD(GOiG5K$=X@laRok1{pmFWYs4X{a~A2W{^QS2WRKY2+~pWJ zurjk?3~^| z*m8fc*&eYa6bZcz!=9HVKoWA_S@||y;!J0Xs=TP4^WA!%DGv?LWPw6)BFHIuPX|YX zGudQ#p_@1y8bA-of-m=+!y#Nz(=^`eDv@2qXb zv_WDE)!j!Xe(H}=*ntZtv4nk@e2l_@{Xdpel+;X0xUZ-%il!D{g%Tz$fz@=L%| zTSFFi;gzZW3=4k15Bk4^f(J#T;g3dvI>`c+r#=5f<4-VhRD>Zo}e=7_|B$-xZ3O<{rZ0`Wdv8qTUsXndV-?;&vIB`@c+vo~%xJ_gCHS?Uukf zRnquLCMl!|KR9&SOeucm-uoYN0+jNsPbyY7nN0s7V$<-ieO(AwNt*0?$JU_Da-!7N zBAlch_Is+YS>2;tWizhB*PW+4cCi@loqK8c7^@A{UDe|5G=#r#*h<|QNxe=yb`G1%oUcFhgh zzW$-J@`sMn!5=z)k90zhS=_-Rh1F!8dSp}HmN)g46p!$j5mEy-lYRfoh7b(_{;Q^; z?3zzUX8w0qeXEJ&OYrEpM*ebKjEFmyAzRZQv+A$e{Kp*sYqma`p~u>-_l9ZQT<$t) z?(0YgX)S*|rw@IEo|@%*_CH6ylqdK?1q%GFsJl5XzZzE3Gm&NFp@tMnyEz(K_(<%i z7rX0q|9`F*YkZ7%D4XyW_q#cud%T?@A;0vnwlrd--FhNjuie9z>gMXw*R~cxr@IAh z8QEWAx9lbNF@^Mw0IGX z8{Cb83gg!s<40Oe3r1{B3C~ZIW?S5nw6P9y2b$G=I1M)AR(*H=Zc{RE!=~qNV*?b# zLTh|I?@l^OPY6^Rgup8yR2|hH3_EQO8c_g>>U45S9zIjZzm9LbHO7#>(Wf$8A^&uo zj@D1V!?#8LV8CT`I!c$JNh@Ie_durG)$liU?@mM+m zqUXmpD*?AhKMs~2Z|dDeEw$YfBOp9HARr(B4-Z|M0}d0CBzL3(dpMO=-_K{1o(^3i z8i3>?x)%8y%%;wQLuI@%LQ$Ww7KL>oVGN*s?D3Wky(+ab(ISyC(~RsdvY%^hoD_Dada7re67)Gk1~z+3l_~Yn=9Zmr*?R@4ce2jQK&**6lb?IH|WI(cH zm8LQSb8kN@CO}YsTx6Bv=DKU^8?94A?kR56ZATL|GZD>byO*&3axfr6Sa=+N*1(X9{*bd=3T1u`<5(p>Qw7?JL$gwwIF|+(h&j(XZ3G zI)dIL3wmbc^A`%p%h_-yO<3VmPO$h|7JKj7@{{S^my@7iqd;xNatU0coHk$f0xOI! zW4X{PXVzfz0->_h9~o4?|jkx;q0ir#dWR2r1EmrvU@=hJYTQYA&vd!DHl=d zJdB%`=baE|cnq)IVq0>AkpS~o5ui3n>}T5Id`S5TgFB&ufj)V(6H1-ffLs8zGx?iA zg8T((li+>XiW#DyJGtG`&WjsYexcgRE|lmi)n3+L6qCY|9}s`eqxl7fImccMM`pE8t54C) z4&+uqPuktAmt^su`22LF-{yIny(>sFcbuA03$>Q3Xk+mf)!IR^miw2LPVFi2-#^aE zRHM+bHYWpG4p9*hsGq^*wZQ;l2M)>1b6zUzTzgIHJav3u%uwX%O?;QZXLeJ1oSIR0 z1Y)&Ynz=j?PDyWB#&+jP?ICsQQQ%npfkA z-9W*Vp&t=rz4Ow{{-{d6xH2 z;A2i}AZ9F7J%lICOfJ%lK7RLW2_wK=r_YrN>_Z5|{?LT@Bcrhf5Tst+J=Y+YDA7{3vH&9QH>rxMxhL;9Y{^f*wX=bvaXFQ)Zz~dm#N-G*1rr_yp!-CHR&!Bl z9U&@G8%Jf5FS)R*03qBpvr*9$xpYqJnL)nog%GkBqFu1Vcw{&v8AZJVnb<_8tEJsj7)tm7r24p&G-zB;Ns?K zn&g6^&sBWocDQ1H_A*AK6^%-JG?FjPXowe92ZB`m=d~s@8^Gd?E@Ev4o1@@Hge%+R zF0=M0bh}sUU6yHU1N_d7c8-hTJs&$pEgzm??5A#7diHH#pK($ap3fbHm_BDjP^9xU z-O~uYV*62r6qp;%;22iW%74gL+@quE(^OE=9~0+Ztl(_(QaV6U?Zun zonFmzp)A>(?P$qsTc9Ms3o#nkPTk>qS1}GJjoYD8VDP0no_yg8G?Ij}YVu;fHVu+M zpjUi(rLOm3Vb^?)HT-H`M^L(J^D8~k`N^;>54$yZG#S98Gpcz{_@Is=_JpsCHKz|Bu zCV$(8Z+X>dS$m_wfpcjyC#MY|4zTHvc$(TWUxS@0nr z$mAsQ3&y^3I+H4Tt}^KkB6k&WF@y4WSQ5^9me5yZp*kJN1gQRY$TcKJNZOkqrZgeF zs`vfgAj`=)WI5Pf1~;jbhUtSoR4=R`Wo0^`Jrp3{bf}?bHCJ5@+rgXLsVWu@a>~RK z;B@7-Wj86_RId%)X5}bzRHkJu;v74+(b0X8Py}Y*qX?=yP8Xa&=iAcj5!vTyp=3Ir zb@k6xzti*AR^pklim%cypozs$+*4c%q=8b#i0cI1E~7=-@z7{WPsLZ^w zYm2ufJ}&{zBDcX~E7Nj!@eTc9`%r zMwsL$-FTmr?5#7N)|b&I`pSk=lrC-vAD?t@$T8y(*M`XJQB|~}kfFwSyh^0rZ+?Me z#^RCDpd2KF?yRBL?e7K5aR})99dazker7NE=GrIL!@(thOh^;0j-zm5U5p1pg<_FF z4!B;k-XHl?^xw^nvN7a8y=xCni*)X>WAkx#Ixr9-PsvkERwQFs&%bm(JDe<~OlWF} zLwIYh&SesKGxy}?A{HxcmcFChXlbWOar)3N^W>$D2rtDN;Uo)KjgpN zRN3|w^1mJv%WzOZjDjCHaQyRV3cVvKQU?zFCk`e2%!vSQ>PU&02={knrut6Y;ZDL-fAfZjfM9@xfI#@4<&V|?e8ou|Q63I* MW { .eqIfPresent(RemainPlateDO::getPlaceStyle, reqVO.getPlaceStyle()) .likeIfPresent(RemainPlateDO::getStore, reqVO.getStore()) .eqIfPresent(RemainPlateDO::getCount, reqVO.getCount()) + .eqIfPresent(RemainPlateDO::getTexture, reqVO.getTexture()) .likeIfPresent(RemainPlateDO::getRemark, reqVO.getRemark()) .eqIfPresent(RemainPlateDO::getUseType, reqVO.getUseType()) .eqIfPresent(RemainPlateDO::getOrganId, reqVO.getOrganId())