From d8643761f5b57c8466e4deed4322b73fc512e233 Mon Sep 17 00:00:00 2001 From: yuanh Date: Tue, 13 Oct 2026 16:15:00 +0800 Subject: [PATCH] =?UTF-8?q?SMT-ERP=20=E9=A1=B9=E7=9B=AE=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitattributes | 4 + .gitignore | 26 + LICENSE | 201 + README.md | 193 + smtERP-boot/.gitattributes | 4 + smtERP-boot/.gitignore | 21 + smtERP-boot/docs/asset_management.md | 88 + smtERP-boot/docs/create_customer_tables.sql | 45 + .../docs/customer_category_contact.sql | 60 + .../security-review-remediation-20261012.md | 89 + smtERP-boot/docs/smt-erp-init-data.sql | 6145 +++++++++++++ .../docs/sql_update_permission_management.sql | 13 + smtERP-boot/docs/sql_update_production.sql | 221 + smtERP-boot/pom.xml | 219 + smtERP-boot/scripts/sync_sas_assets.ps1 | 194 + smtERP-boot/src/main/assembly/assembly.xml | 66 + smtERP-boot/src/main/bin/restart.sh | 1 + smtERP-boot/src/main/bin/run-manage.sh | 133 + smtERP-boot/src/main/bin/start.bat | 6 + smtERP-boot/src/main/bin/start.sh | 1 + smtERP-boot/src/main/bin/status.sh | 1 + smtERP-boot/src/main/bin/stop.sh | 1 + .../java/com/reallin/smt/ErpApplication.java | 28 + .../com/reallin/smt/aspect/ApiLogAspect.java | 164 + .../java/com/reallin/smt/base/AjaxResult.java | 228 + .../com/reallin/smt/base/BaseController.java | 158 + .../java/com/reallin/smt/base/PageDomain.java | 87 + .../com/reallin/smt/base/TableDataInfo.java | 44 + .../com/reallin/smt/base/TableSupport.java | 56 + .../reallin/smt/config/PluginBeanConfig.java | 24 + .../smt/config/PluginConfiguration.java | 104 + .../reallin/smt/config/Swagger2Config.java | 44 + .../com/reallin/smt/config/TenantConfig.java | 38 + .../smt/constants/BusinessConstants.java | 288 + .../smt/constants/ExceptionConstants.java | 633 ++ .../smt/controller/AccountController.java | 304 + .../smt/controller/AccountHeadController.java | 197 + .../smt/controller/AccountItemController.java | 93 + .../smt/controller/AssetController.java | 108 + .../smt/controller/AssetDeviceController.java | 62 + .../controller/AssetInventoryController.java | 120 + .../CustomerCategoryController.java | 102 + .../controller/CustomerContactController.java | 111 + .../smt/controller/DashboardController.java | 29 + .../controller/DeliveryPlanController.java | 93 + .../smt/controller/DepotController.java | 305 + .../smt/controller/DepotHeadController.java | 864 ++ .../smt/controller/DepotItemController.java | 1184 +++ ...eviceInventoryCompatibilityController.java | 37 + .../smt/controller/FunctionController.java | 361 + .../HeadquartersInboundController.java | 76 + .../smt/controller/InOutItemController.java | 161 + .../controller/LegacyInventoryController.java | 90 + .../reallin/smt/controller/LogController.java | 101 + .../MaterialAttributeController.java | 151 + .../MaterialCategoryController.java | 192 + .../smt/controller/MaterialController.java | 904 ++ .../controller/MaterialExtendController.java | 181 + .../MaterialPropertyController.java | 145 + .../reallin/smt/controller/MsgController.java | 232 + .../controller/OrganizationController.java | 187 + .../smt/controller/PackBomController.java | 143 + .../smt/controller/PersonController.java | 241 + .../controller/PlatformConfigController.java | 237 + .../smt/controller/PluginController.java | 368 + .../controller/ProductionOrderController.java | 142 + .../ProductionReportController.java | 89 + .../ProductionRequisitionController.java | 109 + .../smt/controller/RoleController.java | 178 + .../controller/SaleShipmentController.java | 130 + .../smt/controller/SequenceController.java | 53 + .../controller/SerialNumberController.java | 133 + .../smt/controller/SmtInboundController.java | 88 + .../smt/controller/SupplierController.java | 545 ++ .../smt/controller/SysDictDataController.java | 124 + .../smt/controller/SysDictTypeController.java | 129 + .../controller/SystemConfigController.java | 370 + .../smt/controller/TenantController.java | 128 + .../smt/controller/TpmDoubleController.java | 40 + .../smt/controller/UnitController.java | 150 + .../controller/UserBusinessController.java | 199 + .../smt/controller/UserController.java | 609 ++ .../smt/datasource/entities/Account.java | 115 + .../datasource/entities/AccountExample.java | 910 ++ .../smt/datasource/entities/AccountHead.java | 176 + .../entities/AccountHeadExample.java | 1291 +++ .../entities/AccountHeadVo4Body.java | 34 + .../entities/AccountHeadVo4ListEx.java | 81 + .../smt/datasource/entities/AccountItem.java | 115 + .../entities/AccountItemExample.java | 880 ++ .../datasource/entities/AccountVo4Sum.java | 47 + .../smt/datasource/entities/Asset.java | 39 + .../datasource/entities/AssetCategory.java | 23 + .../smt/datasource/entities/AssetDevice.java | 38 + .../datasource/entities/AssetInventory.java | 37 + .../entities/AssetInventoryDetail.java | 36 + .../smt/datasource/entities/BaseEntity.java | 152 + .../datasource/entities/CustomerCategory.java | 128 + .../datasource/entities/CustomerContact.java | 168 + .../smt/datasource/entities/DeliveryPlan.java | 144 + .../datasource/entities/DeliveryPlanItem.java | 171 + .../smt/datasource/entities/Depot.java | 135 + .../smt/datasource/entities/DepotEx.java | 26 + .../smt/datasource/entities/DepotExample.java | 1030 +++ .../smt/datasource/entities/DepotHead.java | 356 + .../datasource/entities/DepotHeadExample.java | 2471 ++++++ .../datasource/entities/DepotHeadVo4Body.java | 46 + .../smt/datasource/entities/DepotItem.java | 256 + .../datasource/entities/DepotItemExample.java | 1771 ++++ .../DepotItemVo4DetailByTypeAndMId.java | 117 + .../entities/DepotItemVo4Material.java | 27 + .../entities/DepotItemVo4MaterialAndSum.java | 26 + .../entities/DepotItemVo4WithInfoEx.java | 276 + .../smt/datasource/entities/Function.java | 143 + .../smt/datasource/entities/FunctionEx.java | 14 + .../datasource/entities/FunctionExample.java | 1079 +++ .../smt/datasource/entities/InOutItem.java | 83 + .../datasource/entities/InOutItemExample.java | 729 ++ .../reallin/smt/datasource/entities/Log.java | 115 + .../smt/datasource/entities/LogExample.java | 710 ++ .../smt/datasource/entities/Material.java | 255 + .../entities/MaterialAttribute.java | 53 + .../entities/MaterialAttributeExample.java | 529 ++ .../datasource/entities/MaterialCategory.java | 115 + .../entities/MaterialCategoryExample.java | 910 ++ .../entities/MaterialCurrentStock.java | 75 + .../entities/MaterialCurrentStockExample.java | 630 ++ .../datasource/entities/MaterialExample.java | 1880 ++++ .../datasource/entities/MaterialExtend.java | 166 + .../entities/MaterialExtendExample.java | 1231 +++ .../entities/MaterialInitialStock.java | 85 + .../entities/MaterialInitialStockExample.java | 690 ++ .../MaterialInitialStockWithMaterial.java | 26 + .../datasource/entities/MaterialProperty.java | 73 + .../entities/MaterialPropertyExample.java | 659 ++ .../datasource/entities/MaterialVo4Unit.java | 292 + .../entities/MaterialWithInitStock.java | 29 + .../reallin/smt/datasource/entities/Msg.java | 95 + .../smt/datasource/entities/MsgEx.java | 14 + .../smt/datasource/entities/MsgExample.java | 790 ++ .../smt/datasource/entities/OrgaUserRel.java | 325 + .../datasource/entities/OrgaUserRelEx.java | 10 + .../entities/OrgaUserRelExample.java | 923 ++ .../smt/datasource/entities/Organization.java | 105 + .../entities/OrganizationExample.java | 850 ++ .../smt/datasource/entities/PackBom.java | 179 + .../smt/datasource/entities/PackBomItem.java | 108 + .../smt/datasource/entities/Person.java | 73 + .../datasource/entities/PersonExample.java | 659 ++ .../datasource/entities/PlatformConfig.java | 43 + .../entities/PlatformConfigExample.java | 469 + .../datasource/entities/ProductionOrder.java | 319 + .../entities/ProductionOrderLog.java | 99 + .../datasource/entities/ProductionReport.java | 199 + .../entities/ProductionReportItem.java | 108 + .../entities/ProductionRequisition.java | 138 + .../entities/ProductionRequisitionItem.java | 138 + .../reallin/smt/datasource/entities/Role.java | 103 + .../smt/datasource/entities/RoleEx.java | 14 + .../smt/datasource/entities/RoleExample.java | 869 ++ .../smt/datasource/entities/SaleShipment.java | 270 + .../datasource/entities/SaleShipmentItem.java | 198 + .../smt/datasource/entities/SerialNumber.java | 156 + .../datasource/entities/SerialNumberEx.java | 110 + .../entities/SerialNumberExample.java | 1161 +++ .../smt/datasource/entities/Supplier.java | 265 + .../datasource/entities/SupplierExample.java | 1840 ++++ .../smt/datasource/entities/SysDictData.java | 150 + .../smt/datasource/entities/SysDictType.java | 89 + .../datasource/entities/SysLoginModel.java | 55 + .../smt/datasource/entities/SystemConfig.java | 263 + .../entities/SystemConfigExample.java | 1999 +++++ .../smt/datasource/entities/Tenant.java | 105 + .../smt/datasource/entities/TenantEx.java | 54 + .../datasource/entities/TenantExample.java | 840 ++ .../reallin/smt/datasource/entities/Unit.java | 125 + .../smt/datasource/entities/UnitExample.java | 980 +++ .../reallin/smt/datasource/entities/User.java | 173 + .../smt/datasource/entities/UserBusiness.java | 73 + .../entities/UserBusinessExample.java | 669 ++ .../smt/datasource/entities/UserEx.java | 138 + .../smt/datasource/entities/UserExample.java | 1339 +++ .../datasource/mappers/AccountHeadMapper.java | 30 + .../mappers/AccountHeadMapperEx.java | 49 + .../datasource/mappers/AccountItemMapper.java | 30 + .../mappers/AccountItemMapperEx.java | 42 + .../smt/datasource/mappers/AccountMapper.java | 30 + .../datasource/mappers/AccountMapperEx.java | 81 + .../mappers/AssetManagementMapper.java | 77 + .../mappers/CustomerCategoryMapper.java | 21 + .../mappers/CustomerCategoryMapperEx.java | 18 + .../mappers/CustomerContactMapper.java | 21 + .../mappers/CustomerContactMapperEx.java | 18 + .../mappers/DeliveryPlanMapper.java | 44 + .../datasource/mappers/DepotHeadMapper.java | 30 + .../datasource/mappers/DepotHeadMapperEx.java | 311 + .../datasource/mappers/DepotItemMapper.java | 30 + .../datasource/mappers/DepotItemMapperEx.java | 263 + .../smt/datasource/mappers/DepotMapper.java | 30 + .../smt/datasource/mappers/DepotMapperEx.java | 20 + .../datasource/mappers/FunctionMapper.java | 30 + .../datasource/mappers/FunctionMapperEx.java | 20 + .../datasource/mappers/InOutItemMapper.java | 30 + .../datasource/mappers/InOutItemMapperEx.java | 18 + .../smt/datasource/mappers/LogMapper.java | 30 + .../smt/datasource/mappers/LogMapperEx.java | 29 + .../mappers/MaterialAttributeMapper.java | 30 + .../mappers/MaterialAttributeMapperEx.java | 16 + .../mappers/MaterialCategoryMapper.java | 30 + .../mappers/MaterialCategoryMapperEx.java | 36 + .../mappers/MaterialCurrentStockMapper.java | 30 + .../mappers/MaterialCurrentStockMapperEx.java | 23 + .../mappers/MaterialExtendMapper.java | 30 + .../mappers/MaterialExtendMapperEx.java | 30 + .../mappers/MaterialInitialStockMapper.java | 30 + .../mappers/MaterialInitialStockMapperEx.java | 20 + .../datasource/mappers/MaterialMapper.java | 30 + .../datasource/mappers/MaterialMapperEx.java | 173 + .../mappers/MaterialPropertyMapper.java | 30 + .../mappers/MaterialPropertyMapperEx.java | 22 + .../smt/datasource/mappers/MsgMapper.java | 30 + .../smt/datasource/mappers/MsgMapperEx.java | 20 + .../datasource/mappers/OrgaUserRelMapper.java | 96 + .../mappers/OrgaUserRelMapperEx.java | 14 + .../mappers/OrganizationMapper.java | 30 + .../mappers/OrganizationMapperEx.java | 33 + .../smt/datasource/mappers/PackBomMapper.java | 44 + .../smt/datasource/mappers/PersonMapper.java | 30 + .../datasource/mappers/PersonMapperEx.java | 17 + .../mappers/PlatformConfigMapper.java | 30 + .../mappers/PlatformConfigMapperEx.java | 14 + .../mappers/ProductionOrderMapper.java | 49 + .../mappers/ProductionReportMapper.java | 47 + .../mappers/ProductionRequisitionMapper.java | 50 + .../smt/datasource/mappers/RoleMapper.java | 30 + .../smt/datasource/mappers/RoleMapperEx.java | 21 + .../mappers/SaleShipmentMapper.java | 41 + .../datasource/mappers/SequenceMapperEx.java | 13 + .../mappers/SerialNumberMapper.java | 30 + .../mappers/SerialNumberMapperEx.java | 72 + .../datasource/mappers/SupplierMapper.java | 30 + .../datasource/mappers/SupplierMapperEx.java | 47 + .../datasource/mappers/SysDictDataMapper.java | 103 + .../datasource/mappers/SysDictTypeMapper.java | 91 + .../mappers/SystemConfigMapper.java | 30 + .../mappers/SystemConfigMapperEx.java | 16 + .../smt/datasource/mappers/TenantMapper.java | 30 + .../datasource/mappers/TenantMapperEx.java | 16 + .../smt/datasource/mappers/UnitMapper.java | 30 + .../smt/datasource/mappers/UnitMapperEx.java | 20 + .../mappers/UserBusinessMapper.java | 30 + .../mappers/UserBusinessMapperEx.java | 31 + .../smt/datasource/mappers/UserMapper.java | 30 + .../smt/datasource/mappers/UserMapperEx.java | 45 + .../smt/datasource/vo/AccountItemVo4List.java | 36 + .../datasource/vo/AccountVo4InOutList.java | 126 + .../smt/datasource/vo/AccountVo4List.java | 16 + .../smt/datasource/vo/BillListCacheVo.java | 34 + .../datasource/vo/DeliveryPlanVo4List.java | 53 + .../datasource/vo/DepotHeadVo4InDetail.java | 228 + .../vo/DepotHeadVo4InOutMCount.java | 136 + .../smt/datasource/vo/DepotHeadVo4List.java | 270 + .../vo/DepotHeadVo4StatementAccount.java | 185 + .../vo/DepotItemStockWarningCount.java | 207 + .../smt/datasource/vo/DepotItemVo4Stock.java | 80 + .../vo/DepotItemVoBatchNumberList.java | 108 + .../smt/datasource/vo/FinishDepositVo.java | 26 + .../smt/datasource/vo/InOutPriceVo.java | 27 + .../vo/InventoryOperatorOption.java | 14 + .../reallin/smt/datasource/vo/LogVo4List.java | 36 + .../smt/datasource/vo/MaterialCountVo.java | 26 + .../smt/datasource/vo/MaterialDepotStock.java | 28 + .../datasource/vo/MaterialExtendVo4List.java | 68 + .../smt/datasource/vo/MaterialVoSearch.java | 84 + .../smt/datasource/vo/MaterialsListVo.java | 24 + .../smt/datasource/vo/NodeAttributes.java | 30 + .../smt/datasource/vo/PackBomVo4List.java | 48 + .../datasource/vo/ProductionOrderVo4List.java | 89 + .../vo/ProductionReportVo4List.java | 61 + .../vo/ProductionRequisitionVo4List.java | 89 + .../datasource/vo/SaleShipmentVo4List.java | 89 + .../smt/datasource/vo/SupplierSimple.java | 12 + .../reallin/smt/datasource/vo/TreeNode.java | 114 + .../reallin/smt/datasource/vo/TreeNodeEx.java | 96 + .../BusinessParamCheckingException.java | 32 + .../exception/BusinessRunTimeException.java | 32 + .../smt/exception/GlobalExceptionHandler.java | 44 + .../reallin/smt/exception/JshException.java | 27 + .../LegacyInventoryBusinessException.java | 10 + .../reallin/smt/exception/UtilException.java | 26 + .../com/reallin/smt/filter/LogCostFilter.java | 123 + .../smt/service/AccountHeadService.java | 433 + .../smt/service/AccountItemService.java | 201 + .../reallin/smt/service/AccountService.java | 583 ++ .../smt/service/AssetManagementService.java | 628 ++ .../smt/service/CustomerCategoryService.java | 132 + .../smt/service/CustomerContactService.java | 144 + .../reallin/smt/service/DashboardService.java | 189 + .../smt/service/DeliveryPlanService.java | 316 + .../reallin/smt/service/DepotHeadService.java | 2014 +++++ .../reallin/smt/service/DepotItemService.java | 1567 ++++ .../com/reallin/smt/service/DepotService.java | 367 + .../reallin/smt/service/FunctionService.java | 283 + .../reallin/smt/service/InOutItemService.java | 245 + .../service/LegacyInventoryAuthService.java | 49 + .../smt/service/LegacyInventoryService.java | 407 + .../com/reallin/smt/service/LogService.java | 184 + .../smt/service/LoginAttemptService.java | 106 + .../smt/service/MaterialAttributeService.java | 164 + .../smt/service/MaterialCategoryService.java | 304 + .../smt/service/MaterialExtendService.java | 422 + .../smt/service/MaterialPropertyService.java | 177 + .../reallin/smt/service/MaterialService.java | 1539 ++++ .../com/reallin/smt/service/MsgService.java | 320 + .../smt/service/OrgaUserRelService.java | 216 + .../smt/service/OrganizationService.java | 258 + .../reallin/smt/service/PackBomService.java | 306 + .../reallin/smt/service/PersonService.java | 245 + .../smt/service/PlatformConfigService.java | 258 + .../smt/service/ProductionOrderService.java | 451 + .../smt/service/ProductionReportService.java | 347 + .../service/ProductionRequisitionService.java | 475 + .../com/reallin/smt/service/RedisService.java | 247 + .../com/reallin/smt/service/RoleService.java | 317 + .../smt/service/SaleShipmentService.java | 512 ++ .../reallin/smt/service/SequenceService.java | 138 + .../smt/service/SerialNumberService.java | 294 + .../smt/service/SmtInboundService.java | 440 + .../reallin/smt/service/SupplierService.java | 725 ++ .../smt/service/SysDictDataService.java | 165 + .../smt/service/SysDictTypeService.java | 257 + .../smt/service/SystemConfigService.java | 681 ++ .../reallin/smt/service/TenantService.java | 204 + .../com/reallin/smt/service/UnitService.java | 313 + .../smt/service/UserBusinessService.java | 244 + .../com/reallin/smt/service/UserService.java | 941 ++ .../reallin/smt/utils/AnnotationUtils.java | 28 + .../reallin/smt/utils/BaseResponseInfo.java | 11 + .../reallin/smt/utils/ColumnPropertyUtil.java | 65 + .../com/reallin/smt/utils/ComputerInfo.java | 137 + .../java/com/reallin/smt/utils/Constants.java | 34 + .../java/com/reallin/smt/utils/Convert.java | 536 ++ .../java/com/reallin/smt/utils/DictUtils.java | 249 + .../java/com/reallin/smt/utils/ErpInfo.java | 37 + .../com/reallin/smt/utils/ExcelUtils.java | 246 + .../smt/utils/ExceptionCodeConstants.java | 43 + .../com/reallin/smt/utils/ExtJsonUtils.java | 141 + .../java/com/reallin/smt/utils/FileUtils.java | 320 + .../com/reallin/smt/utils/HttpClient.java | 90 + .../java/com/reallin/smt/utils/JsonUtils.java | 22 + .../smt/utils/LegacyInventoryResponse.java | 36 + .../com/reallin/smt/utils/OrderUtils.java | 69 + .../com/reallin/smt/utils/PageQueryInfo.java | 30 + .../java/com/reallin/smt/utils/PageUtils.java | 34 + .../com/reallin/smt/utils/ParamUtils.java | 57 + .../com/reallin/smt/utils/PinYinUtil.java | 52 + .../com/reallin/smt/utils/QueryUtils.java | 142 + .../com/reallin/smt/utils/RandImageUtil.java | 140 + .../com/reallin/smt/utils/RedisLockUtil.java | 120 + .../com/reallin/smt/utils/RegExpTools.java | 154 + .../com/reallin/smt/utils/ResponseCode.java | 24 + .../reallin/smt/utils/ResponseJsonUtil.java | 64 + .../com/reallin/smt/utils/ServletUtils.java | 123 + .../java/com/reallin/smt/utils/SqlUtil.java | 52 + .../com/reallin/smt/utils/StringUtil.java | 526 ++ .../java/com/reallin/smt/utils/Tools.java | 675 ++ .../src/main/resources/application.yml | 76 + smtERP-boot/src/main/resources/changeLog.md | 16 + .../db/migration/V20260910__smt_inbound.sql | 18 + .../V20260914__disable_tenant_features.sql | 8 + ...501__production_requisition_item_depot.sql | 14 + .../migration/V2026091502__sale_shipment.sql | 66 + .../V20260915__production_plan_model.sql | 43 + ...V20260916_2__headquarters_inbound_menu.sql | 39 + ...0916_3__headquarters_inbound_item_json.sql | 14 + ...20260916_4__headquarters_inbound_depot.sql | 3 + ...20260917_2__delivery_plan_tbl_function.sql | 23 + .../migration/V20260917_3__function_i18n.sql | 80 + ...V20260917__delivery_plan_shipment_flow.sql | 61 + ...20260918_2__asset_management_demo_data.sql | 68 + .../V20260918_3__legacy_inventory_api.sql | 30 + .../migration/V20260918__asset_management.sql | 163 + .../V20260920__fill_function_name_en.sql | 86 + ..._log_api_fields_and_monthly_partitions.sql | 150 + .../V20260921_3__remove_asset_tenant_id.sql | 186 + ...0921__simplify_inventory_detail_status.sql | 5 + ...28__asset_category_and_external_source.sql | 92 + .../V20260929_2__asset_dashboard_menu.sql | 13 + .../V20260929__asset_datetime_precision.sql | 7 + .../resources/i18n/messages_en_US.properties | 4 + .../resources/i18n/messages_zh_CN.properties | 4 + .../src/main/resources/logback-spring.xml | 34 + .../mapper_xml/AccountHeadMapper.xml | 400 + .../mapper_xml/AccountHeadMapperEx.xml | 179 + .../mapper_xml/AccountItemMapper.xml | 306 + .../mapper_xml/AccountItemMapperEx.xml | 136 + .../resources/mapper_xml/AccountMapper.xml | 306 + .../resources/mapper_xml/AccountMapperEx.xml | 510 ++ .../mapper_xml/AssetManagementMapper.xml | 438 + .../mapper_xml/CustomerCategoryMapper.xml | 183 + .../mapper_xml/CustomerCategoryMapperEx.xml | 49 + .../mapper_xml/CustomerContactMapper.xml | 231 + .../mapper_xml/CustomerContactMapperEx.xml | 53 + .../mapper_xml/DeliveryPlanMapper.xml | 244 + .../resources/mapper_xml/DepotHeadMapper.xml | 685 ++ .../mapper_xml/DepotHeadMapperEx.xml | 1545 ++++ .../resources/mapper_xml/DepotItemMapper.xml | 528 ++ .../mapper_xml/DepotItemMapperEx.xml | 1156 +++ .../main/resources/mapper_xml/DepotMapper.xml | 338 + .../resources/mapper_xml/DepotMapperEx.xml | 41 + .../resources/mapper_xml/FunctionMapper.xml | 353 + .../resources/mapper_xml/FunctionMapperEx.xml | 45 + .../resources/mapper_xml/InOutItemMapper.xml | 258 + .../mapper_xml/InOutItemMapperEx.xml | 33 + .../main/resources/mapper_xml/LogMapper.xml | 306 + .../main/resources/mapper_xml/LogMapperEx.xml | 52 + .../mapper_xml/MaterialAttributeMapper.xml | 211 + .../mapper_xml/MaterialAttributeMapperEx.xml | 30 + .../mapper_xml/MaterialCategoryMapper.xml | 306 + .../mapper_xml/MaterialCategoryMapperEx.xml | 144 + .../mapper_xml/MaterialCurrentStockMapper.xml | 243 + .../MaterialCurrentStockMapperEx.xml | 49 + .../mapper_xml/MaterialExtendMapper.xml | 386 + .../mapper_xml/MaterialExtendMapperEx.xml | 85 + .../mapper_xml/MaterialInitialStockMapper.xml | 258 + .../MaterialInitialStockMapperEx.xml | 41 + .../resources/mapper_xml/MaterialMapper.xml | 527 ++ .../resources/mapper_xml/MaterialMapperEx.xml | 856 ++ .../mapper_xml/MaterialPropertyMapper.xml | 243 + .../mapper_xml/MaterialPropertyMapperEx.xml | 40 + .../main/resources/mapper_xml/MsgMapper.xml | 275 + .../main/resources/mapper_xml/MsgMapperEx.xml | 45 + .../mapper_xml/OrgaUserRelMapper.xml | 351 + .../mapper_xml/OrgaUserRelMapperEx.xml | 42 + .../mapper_xml/OrganizationMapper.xml | 291 + .../mapper_xml/OrganizationMapperEx.xml | 105 + .../resources/mapper_xml/PackBomMapper.xml | 208 + .../resources/mapper_xml/PersonMapper.xml | 243 + .../resources/mapper_xml/PersonMapperEx.xml | 29 + .../mapper_xml/PlatformConfigMapper.xml | 196 + .../mapper_xml/PlatformConfigMapperEx.xml | 17 + .../mapper_xml/ProductionOrderMapper.xml | 273 + .../mapper_xml/ProductionReportMapper.xml | 232 + .../ProductionRequisitionMapper.xml | 245 + .../main/resources/mapper_xml/RoleMapper.xml | 290 + .../resources/mapper_xml/RoleMapperEx.xml | 38 + .../mapper_xml/SaleShipmentMapper.xml | 350 + .../resources/mapper_xml/SequenceMapperEx.xml | 13 + .../mapper_xml/SerialNumberMapper.xml | 370 + .../mapper_xml/SerialNumberMapperEx.xml | 246 + .../resources/mapper_xml/SupplierMapper.xml | 537 ++ .../resources/mapper_xml/SupplierMapperEx.xml | 115 + .../mapper_xml/SysDictDataMapper.xml | 151 + .../mapper_xml/SysDictTypeMapper.xml | 133 + .../mapper_xml/SystemConfigMapper.xml | 547 ++ .../mapper_xml/SystemConfigMapperEx.xml | 25 + .../resources/mapper_xml/TenantMapper.xml | 291 + .../resources/mapper_xml/TenantMapperEx.xml | 40 + .../main/resources/mapper_xml/UnitMapper.xml | 323 + .../resources/mapper_xml/UnitMapperEx.xml | 36 + .../mapper_xml/UserBusinessMapper.xml | 243 + .../mapper_xml/UserBusinessMapperEx.xml | 41 + .../main/resources/mapper_xml/UserMapper.xml | 400 + .../resources/mapper_xml/UserMapperEx.xml | 163 + .../reallin/smt/filter/LogCostFilterTest.java | 129 + .../smt/security/MapperSecurityTest.java | 79 + .../LegacyInventoryAuthServiceTest.java | 51 + .../service/LegacyInventorySecurityTest.java | 113 + .../smt/service/LoginAttemptServiceTest.java | 34 + .../com/reallin/smt/utils/SqlUtilTest.java | 25 + .../src/test/resources/generatorConfig.xml | 74 + smtERP-web/.editorconfig | 39 + smtERP-web/.eslintignore | 1 + smtERP-web/.gitattributes | 1 + smtERP-web/.gitignore | 22 + smtERP-web/.prettierrc | 5 + smtERP-web/README.md | 104 + smtERP-web/babel.config.js | 6 + smtERP-web/changeLog.md | 5 + smtERP-web/idea.config.js | 24 + smtERP-web/package.json | 112 + smtERP-web/public/doc/apply_item_template.xls | Bin 0 -> 18432 bytes .../public/doc/buy_sale_item_template.xls | Bin 0 -> 18944 bytes smtERP-web/public/doc/customer_template.xls | Bin 0 -> 18944 bytes smtERP-web/public/doc/goods_template.xls | Bin 0 -> 20992 bytes .../public/doc/in_out_item_template.xls | Bin 0 -> 18944 bytes smtERP-web/public/doc/member_template.xls | Bin 0 -> 18944 bytes smtERP-web/public/doc/order_item_template.xls | Bin 0 -> 18944 bytes smtERP-web/public/doc/vendor_template.xls | Bin 0 -> 18944 bytes smtERP-web/public/index.html | 291 + smtERP-web/public/static/Android.png | Bin 0 -> 3102 bytes smtERP-web/public/static/android-code.png | Bin 0 -> 21661 bytes smtERP-web/public/static/banner-home.jpg | Bin 0 -> 37795 bytes smtERP-web/public/static/banner-small.jpg | Bin 0 -> 39886 bytes smtERP-web/public/static/bgimg.png | Bin 0 -> 1555294 bytes smtERP-web/public/static/blue.png | Bin 0 -> 42984 bytes smtERP-web/public/static/color.less | 7701 +++++++++++++++++ smtERP-web/public/static/favicon.ico | Bin 0 -> 17014 bytes smtERP-web/public/static/iPhone.png | Bin 0 -> 3155 bytes smtERP-web/public/static/iphone-code.png | Bin 0 -> 24255 bytes smtERP-web/public/static/less.min.js | 18 + smtERP-web/public/static/mini-program.png | Bin 0 -> 6849 bytes smtERP-web/public/static/rightImg.png | Bin 0 -> 1555294 bytes smtERP-web/public/static/screenshot/1.jpg | Bin 0 -> 161218 bytes smtERP-web/public/static/screenshot/10.jpg | Bin 0 -> 103769 bytes smtERP-web/public/static/screenshot/2.jpg | Bin 0 -> 171688 bytes smtERP-web/public/static/screenshot/3.jpg | Bin 0 -> 189680 bytes smtERP-web/public/static/screenshot/4.jpg | Bin 0 -> 189262 bytes smtERP-web/public/static/screenshot/5.jpg | Bin 0 -> 145302 bytes smtERP-web/public/static/screenshot/6.jpg | Bin 0 -> 154561 bytes smtERP-web/public/static/screenshot/7.jpg | Bin 0 -> 151200 bytes smtERP-web/public/static/screenshot/8.jpg | Bin 0 -> 152173 bytes smtERP-web/public/static/screenshot/9.jpg | Bin 0 -> 134033 bytes smtERP-web/public/static/weixin-code.png | Bin 0 -> 22572 bytes smtERP-web/public/static/weixin.jpg | Bin 0 -> 59722 bytes smtERP-web/src/App.vue | 143 + smtERP-web/src/api/GroupRequest.js | 30 + smtERP-web/src/api/api.js | 277 + smtERP-web/src/api/index.js | 10 + smtERP-web/src/api/login.js | 28 + smtERP-web/src/api/manage.js | 164 + smtERP-web/src/assets/SMTLoginLogo.png | Bin 0 -> 91056 bytes smtERP-web/src/assets/SMTLogo.png | Bin 0 -> 28423 bytes smtERP-web/src/assets/checkcode.png | Bin 0 -> 2236 bytes smtERP-web/src/assets/dark.svg | 40 + smtERP-web/src/assets/less/JAreaLinkage.less | 259 + smtERP-web/src/assets/less/TableExpand.less | 19 + smtERP-web/src/assets/less/common.less | 141 + smtERP-web/src/assets/less/index.less | 28 + smtERP-web/src/assets/light.svg | 40 + smtERP-web/src/components/AvatarList/Item.vue | 46 + smtERP-web/src/components/AvatarList/List.vue | 91 + smtERP-web/src/components/AvatarList/index.js | 4 + .../src/components/AvatarList/index.less | 60 + smtERP-web/src/components/ChartCard.vue | 105 + .../src/components/CountDown/CountDown.vue | 103 + smtERP-web/src/components/CountDown/index.js | 3 + smtERP-web/src/components/DictData/index.js | 49 + smtERP-web/src/components/DictTag/index.vue | 46 + .../src/components/Ellipsis/Ellipsis.vue | 36 + smtERP-web/src/components/Ellipsis/index.js | 3 + .../src/components/NumberInfo/NumberInfo.vue | 54 + smtERP-web/src/components/NumberInfo/index.js | 3 + .../src/components/NumberInfo/index.less | 55 + smtERP-web/src/components/Trend/Trend.vue | 41 + smtERP-web/src/components/Trend/index.js | 3 + smtERP-web/src/components/Trend/index.less | 42 + .../src/components/chart/AreaChartTy.vue | 88 + smtERP-web/src/components/chart/Bar.vue | 55 + .../src/components/chart/BarAndLine.vue | 60 + smtERP-web/src/components/chart/BarMultid.vue | 88 + .../src/components/chart/DashChartDemo.vue | 187 + smtERP-web/src/components/chart/IndexBar.vue | 61 + .../src/components/chart/LineChartMultid.vue | 94 + smtERP-web/src/components/chart/Liquid.vue | 80 + smtERP-web/src/components/chart/MiniArea.vue | 69 + smtERP-web/src/components/chart/MiniBar.vue | 76 + .../src/components/chart/MiniProgress.vue | 75 + smtERP-web/src/components/chart/Pie.vue | 70 + smtERP-web/src/components/chart/Radar.vue | 90 + smtERP-web/src/components/chart/RankList.vue | 81 + smtERP-web/src/components/chart/StackBar.vue | 54 + .../src/components/chart/TransferBar.vue | 66 + smtERP-web/src/components/chart/Trend.vue | 84 + smtERP-web/src/components/chart/chart.less | 13 + smtERP-web/src/components/chart/chart.scss | 13 + .../components/chart/mixins/ChartMixins.js | 10 + smtERP-web/src/components/index.less | 4 + .../src/components/jeecg/JAreaLinkage.vue | 155 + .../src/components/jeecg/JCategorySelect.vue | 238 + smtERP-web/src/components/jeecg/JCheckbox.vue | 43 + .../src/components/jeecg/JCodeEditor.vue | 429 + smtERP-web/src/components/jeecg/JCron.vue | 65 + smtERP-web/src/components/jeecg/JDate.vue | 86 + .../src/components/jeecg/JEditableTable.vue | 3204 +++++++ smtERP-web/src/components/jeecg/JEllipsis.vue | 29 + .../src/components/jeecg/JFormContainer.vue | 61 + .../src/components/jeecg/JGraphicCode.vue | 202 + .../src/components/jeecg/JImageUpload.vue | 228 + .../src/components/jeecg/JImportModal.vue | 123 + smtERP-web/src/components/jeecg/JInput.vue | 100 + .../src/components/jeecg/JModal/index.vue | 256 + .../src/components/jeecg/JSelectMultiple.vue | 66 + smtERP-web/src/components/jeecg/JSlider.vue | 116 + .../src/components/jeecg/JSuperQuery.vue | 639 ++ smtERP-web/src/components/jeecg/JSwitch.vue | 57 + smtERP-web/src/components/jeecg/JTreeDict.vue | 199 + .../src/components/jeecg/JTreeSelect.vue | 260 + .../src/components/jeecg/JTreeTable.vue | 180 + smtERP-web/src/components/jeecg/JUpload.vue | 456 + smtERP-web/src/components/jeecg/index.js | 9 + .../src/components/jeecg/minipop/JFilePop.vue | 113 + .../components/jeecg/minipop/JInputPop.vue | 101 + .../src/components/jeecg/modal/JCronModal.vue | 900 ++ .../jeecgbiz/JCustomerTreeSelect.vue | 140 + .../JSelectBizComponentModal.vue | 334 + .../jeecgbiz/JSelectBizComponent/index.vue | 165 + .../src/components/jeecgbiz/JSelectDepart.vue | 122 + .../src/components/jeecgbiz/JSelectList.vue | 137 + .../components/jeecgbiz/JSelectMultiUser.vue | 47 + .../components/jeecgbiz/JSelectPosition.vue | 37 + .../src/components/jeecgbiz/JSelectRole.vue | 38 + .../components/jeecgbiz/JSelectUserByDep.vue | 89 + .../jeecgbiz/modal/JSelectBatchModal.vue | 279 + .../jeecgbiz/modal/JSelectDepartModal.vue | 226 + .../jeecgbiz/modal/JSelectMaterialModal.vue | 509 ++ .../jeecgbiz/modal/JSelectSnAddModal.vue | 263 + .../jeecgbiz/modal/JSelectSnModal.vue | 362 + .../jeecgbiz/modal/JSelectUserByDepModal.vue | 286 + .../jeecgbiz/modal/SelectUserListModal.vue | 122 + .../src/components/layouts/BasicLayout.vue | 60 + .../src/components/layouts/BlankLayout.vue | 16 + .../components/layouts/IframeFReportView.vue | 47 + .../src/components/layouts/IframePageView.vue | 50 + .../src/components/layouts/PageView.vue | 87 + .../src/components/layouts/RouteView.vue | 19 + .../src/components/layouts/TabLayout.vue | 580 ++ .../src/components/layouts/UserLayout.vue | 324 + smtERP-web/src/components/layouts/index.js | 8 + .../src/components/menu/Contextmenu.vue | 71 + smtERP-web/src/components/menu/SideMenu.vue | 228 + smtERP-web/src/components/menu/index.js | 208 + .../src/components/page/GlobalFooter.vue | 38 + .../src/components/page/GlobalHeader.vue | 226 + .../src/components/page/GlobalLayout.vue | 1047 +++ smtERP-web/src/components/page/JumpInfo.vue | 49 + smtERP-web/src/components/page/PageHeader.vue | 248 + smtERP-web/src/components/page/PageLayout.vue | 127 + .../src/components/page/SHeaderNotice.vue | 58 + .../src/components/setting/SettingDrawer.vue | 300 + .../src/components/setting/SettingItem.vue | 38 + .../src/components/table/StandardTable.vue | 252 + smtERP-web/src/components/table/index.js | 268 + .../src/components/tools/BillExcelIframe.vue | 83 + .../src/components/tools/Breadcrumb.vue | 59 + .../src/components/tools/DepartSelect.vue | 162 + .../src/components/tools/DetailList.vue | 147 + .../src/components/tools/DynamicNotice.vue | 37 + .../src/components/tools/FooterToolBar.vue | 32 + smtERP-web/src/components/tools/HeadInfo.vue | 66 + .../src/components/tools/HeaderNotice.vue | 296 + .../src/components/tools/ImportFileModal.vue | 96 + .../src/components/tools/LanguageSwitcher.vue | 30 + smtERP-web/src/components/tools/Logo.vue | 114 + .../src/components/tools/ShowAnnouncement.vue | 145 + .../src/components/tools/TwoStepCaptcha.vue | 89 + smtERP-web/src/components/tools/UserMenu.vue | 297 + .../src/components/tools/UserPassword.vue | 154 + .../src/components/tools/WorkflowIframe.vue | 109 + smtERP-web/src/components/tools/setting.js | 95 + smtERP-web/src/config/router.config.js | 60 + smtERP-web/src/defaultSettings.js | 32 + smtERP-web/src/locales/business-ui.js | 238 + smtERP-web/src/locales/en-US.js | 114 + smtERP-web/src/locales/index.js | 19 + smtERP-web/src/locales/modal-ui.js | 87 + smtERP-web/src/locales/zh-CN.js | 113 + smtERP-web/src/main.js | 142 + smtERP-web/src/mixins/JEditableTableMixin.js | 164 + smtERP-web/src/mixins/JeecgListMixin.js | 817 ++ smtERP-web/src/permission.js | 67 + smtERP-web/src/router/README.md | 126 + smtERP-web/src/router/index.js | 22 + smtERP-web/src/store/getters.js | 24 + smtERP-web/src/store/index.js | 31 + smtERP-web/src/store/modules/app.js | 142 + smtERP-web/src/store/modules/dict.js | 50 + smtERP-web/src/store/modules/enhance.js | 37 + smtERP-web/src/store/modules/permission.js | 91 + smtERP-web/src/store/modules/user.js | 163 + smtERP-web/src/store/mutation-types.js | 27 + smtERP-web/src/utils/JEditableTableUtil.js | 176 + smtERP-web/src/utils/LunarFullCalendarUtil.js | 107 + smtERP-web/src/utils/auth.js | 19 + smtERP-web/src/utils/authFilter.js | 243 + smtERP-web/src/utils/axios.js | 37 + smtERP-web/src/utils/commonUploadFile.js | 52 + .../src/utils/desform/CustomExpression.js | 22 + smtERP-web/src/utils/device.js | 23 + smtERP-web/src/utils/dict/Dict.js | 82 + smtERP-web/src/utils/dict/DictConverter.js | 17 + smtERP-web/src/utils/dict/DictData.js | 13 + smtERP-web/src/utils/dict/DictMeta.js | 38 + smtERP-web/src/utils/dict/DictOptions.js | 51 + smtERP-web/src/utils/dict/index.js | 33 + smtERP-web/src/utils/encryption/aesEncrypt.js | 6003 +++++++++++++ smtERP-web/src/utils/filter.js | 30 + smtERP-web/src/utils/hasPermission.js | 120 + smtERP-web/src/utils/language.js | 42 + smtERP-web/src/utils/menuUrl.js | 17 + smtERP-web/src/utils/mixin.js | 48 + smtERP-web/src/utils/permissions.js | 8 + smtERP-web/src/utils/props-util.js | 115 + smtERP-web/src/utils/request.js | 98 + smtERP-web/src/utils/storage.js | 78 + smtERP-web/src/utils/util.js | 770 ++ smtERP-web/src/utils/validate.js | 50 + smtERP-web/src/utils/vueBus.js | 5 + smtERP-web/src/views/404.vue | 15 + smtERP-web/src/views/asset/AssetDashboard.vue | 339 + smtERP-web/src/views/asset/AssetList.vue | 170 + smtERP-web/src/views/asset/DeviceList.vue | 72 + smtERP-web/src/views/asset/InventoryList.vue | 334 + .../asset/modules/AssetCategoryModal.vue | 162 + .../src/views/asset/modules/AssetModal.vue | 61 + .../src/views/asset/modules/DeviceModal.vue | 55 + .../asset/modules/InventoryCreateDrawer.vue | 251 + .../src/views/bill/AllocationOutList.vue | 254 + smtERP-web/src/views/bill/AssembleList.vue | 254 + .../src/views/bill/DeliveryPlanList.vue | 190 + smtERP-web/src/views/bill/DisassembleList.vue | 254 + .../src/views/bill/HeadquartersInList.vue | 428 + smtERP-web/src/views/bill/OtherInList.vue | 367 + smtERP-web/src/views/bill/OtherOutList.vue | 358 + .../src/views/bill/PurchaseApplyList.vue | 260 + .../src/views/bill/PurchaseBackList.vue | 330 + smtERP-web/src/views/bill/PurchaseInList.vue | 372 + .../src/views/bill/PurchaseOrderList.vue | 355 + smtERP-web/src/views/bill/RetailBackList.vue | 310 + smtERP-web/src/views/bill/RetailOutList.vue | 336 + smtERP-web/src/views/bill/SaleBackList.vue | 333 + smtERP-web/src/views/bill/SaleOrderList.vue | 392 + smtERP-web/src/views/bill/SaleOutList.vue | 493 ++ .../src/views/bill/SaleShipmentList.vue | 242 + .../src/views/bill/dialog/BatchSetDepot.vue | 120 + .../views/bill/dialog/BatchWaitBillList.vue | 234 + .../src/views/bill/dialog/BillDetail.vue | 2123 +++++ .../src/views/bill/dialog/BillPrintIframe.vue | 83 + .../views/bill/dialog/BillPrintProIframe.vue | 80 + .../src/views/bill/dialog/HistoryBillList.vue | 299 + .../src/views/bill/dialog/ImportItemModal.vue | 125 + .../src/views/bill/dialog/LinkBillList.vue | 463 + .../views/bill/dialog/ManyAccountModal.vue | 196 + .../src/views/bill/dialog/QuickEditModal.vue | 81 + .../src/views/bill/dialog/WaitBillList.vue | 332 + .../src/views/bill/mixins/BillListMixin.js | 1112 +++ .../src/views/bill/mixins/BillModalMixin.js | 1281 +++ .../views/bill/modules/AllocationOutModal.vue | 274 + .../src/views/bill/modules/AssembleModal.vue | 290 + .../views/bill/modules/DeliveryPlanModal.vue | 238 + .../views/bill/modules/DisassembleModal.vue | 289 + .../bill/modules/HeadquartersInModal.vue | 373 + .../src/views/bill/modules/OtherInModal.vue | 358 + .../src/views/bill/modules/OtherOutModal.vue | 348 + .../views/bill/modules/PurchaseApplyModal.vue | 295 + .../views/bill/modules/PurchaseBackModal.vue | 485 ++ .../views/bill/modules/PurchaseInModal.vue | 531 ++ .../views/bill/modules/PurchaseOrderModal.vue | 476 + .../views/bill/modules/RetailBackModal.vue | 456 + .../src/views/bill/modules/RetailOutModal.vue | 446 + .../src/views/bill/modules/SaleBackModal.vue | 487 ++ .../src/views/bill/modules/SaleOrderModal.vue | 376 + .../src/views/bill/modules/SaleOutModal.vue | 541 ++ .../views/bill/modules/SaleShipmentModal.vue | 326 + smtERP-web/src/views/dashboard/Analysis.vue | 40 + smtERP-web/src/views/dashboard/IndexChart.vue | 528 ++ smtERP-web/src/views/exception/403.vue | 17 + smtERP-web/src/views/exception/404.vue | 17 + smtERP-web/src/views/exception/500.vue | 17 + .../src/views/exception/ExceptionPage.vue | 88 + smtERP-web/src/views/exception/type.js | 19 + .../src/views/financial/AdvanceInList.vue | 229 + smtERP-web/src/views/financial/GiroList.vue | 218 + smtERP-web/src/views/financial/ItemInList.vue | 250 + .../src/views/financial/ItemOutList.vue | 250 + .../src/views/financial/MoneyInList.vue | 266 + .../src/views/financial/MoneyOutList.vue | 274 + .../views/financial/dialog/DebtBillList.vue | 242 + .../financial/dialog/FinancialDetail.vue | 592 ++ .../views/financial/dialog/WaitNeedList.vue | 285 + .../financial/mixins/FinancialListMixin.js | 264 + .../financial/mixins/FinancialModalMixin.js | 472 + .../financial/modules/AdvanceInModal.vue | 251 + .../src/views/financial/modules/GiroModal.vue | 265 + .../views/financial/modules/ItemInModal.vue | 287 + .../views/financial/modules/ItemOutModal.vue | 288 + .../views/financial/modules/MoneyInModal.vue | 317 + .../views/financial/modules/MoneyOutModal.vue | 333 + .../views/material/MaterialAttributeList.vue | 144 + .../views/material/MaterialCategoryList.vue | 513 ++ .../src/views/material/MaterialList.vue | 545 ++ .../views/material/MaterialPropertyList.vue | 110 + .../material/modules/BatchSetInfoModal.vue | 188 + .../material/modules/BatchSetPriceModal.vue | 103 + .../material/modules/BatchSetStockModal.vue | 101 + .../modules/MaterialAttributeModal.vue | 224 + .../modules/MaterialCategoryModal.vue | 178 + .../views/material/modules/MaterialModal.vue | 1357 +++ .../modules/MaterialPropertyModal.vue | 112 + smtERP-web/src/views/production/OrderList.vue | 344 + .../src/views/production/PackBomList.vue | 189 + .../src/views/production/ReportList.vue | 226 + .../src/views/production/RequisitionList.vue | 249 + .../views/production/dialog/OrderDetail.vue | 104 + .../views/production/modules/OrderModal.vue | 380 + .../views/production/modules/PackBomModal.vue | 236 + .../views/production/modules/ReportModal.vue | 323 + .../production/modules/RequisitionModal.vue | 169 + .../modules/SaleOrderSelectModal.vue | 154 + smtERP-web/src/views/report/AccountReport.vue | 210 + .../src/views/report/AllocationDetail.vue | 377 + smtERP-web/src/views/report/BuyInReport.vue | 363 + .../src/views/report/CustomerAccount.vue | 299 + smtERP-web/src/views/report/InDetail.vue | 414 + .../src/views/report/InMaterialCount.vue | 354 + .../src/views/report/InOutStockReport.vue | 372 + smtERP-web/src/views/report/MaterialStock.vue | 399 + smtERP-web/src/views/report/OutDetail.vue | 414 + .../src/views/report/OutMaterialCount.vue | 355 + .../src/views/report/RetailOutReport.vue | 366 + smtERP-web/src/views/report/SaleOutReport.vue | 356 + .../src/views/report/StockWarningReport.vue | 260 + smtERP-web/src/views/report/VendorAccount.vue | 309 + .../views/report/modules/AccountInOutList.vue | 286 + .../views/report/modules/DebtAccountList.vue | 209 + .../report/modules/HistoryFinancialList.vue | 233 + .../report/modules/MaterialDepotStockList.vue | 126 + .../MaterialDepotStockListWithTime.vue | 132 + .../report/modules/MaterialInOutList.vue | 214 + .../report/modules/StockPriceInOutList.vue | 214 + smtERP-web/src/views/system/AccountList.vue | 181 + .../src/views/system/CustomerCategoryList.vue | 264 + smtERP-web/src/views/system/CustomerList.vue | 377 + smtERP-web/src/views/system/DepotList.vue | 213 + smtERP-web/src/views/system/DictList.vue | 191 + smtERP-web/src/views/system/FunctionList.vue | 160 + smtERP-web/src/views/system/InOutItemList.vue | 156 + smtERP-web/src/views/system/LogList.vue | 208 + smtERP-web/src/views/system/MemberList.vue | 231 + smtERP-web/src/views/system/MsgList.vue | 171 + .../src/views/system/OrganizationList.vue | 517 ++ smtERP-web/src/views/system/PersonList.vue | 183 + .../src/views/system/PlatformConfigList.vue | 103 + smtERP-web/src/views/system/PluginList.vue | 262 + smtERP-web/src/views/system/RoleList.vue | 250 + .../src/views/system/SystemConfigList.vue | 542 ++ smtERP-web/src/views/system/TenantList.vue | 167 + smtERP-web/src/views/system/UnitList.vue | 165 + smtERP-web/src/views/system/UserList.vue | 212 + smtERP-web/src/views/system/VendorList.vue | 204 + .../src/views/system/modules/AccountModal.vue | 150 + .../views/system/modules/CustomerModal.vue | 401 + .../system/modules/CustomerUserModal.vue | 172 + .../src/views/system/modules/DepotModal.vue | 170 + .../views/system/modules/DepotUserModal.vue | 172 + .../system/modules/DictDataListModal.vue | 198 + .../views/system/modules/DictDataModal.vue | 184 + .../views/system/modules/DictTypeModal.vue | 129 + .../views/system/modules/FunctionModal.vue | 293 + .../system/modules/FunctionTreeModal.vue | 154 + .../views/system/modules/InOutItemModal.vue | 150 + .../src/views/system/modules/MemberModal.vue | 182 + .../system/modules/OrganizationModal.vue | 179 + .../src/views/system/modules/PersonModal.vue | 172 + .../views/system/modules/PersonTypeModal.vue | 177 + .../system/modules/PlatformConfigModal.vue | 109 + .../views/system/modules/PluginAppModal.vue | 112 + .../src/views/system/modules/PluginModal.vue | 112 + .../system/modules/RoleFunctionModal.vue | 218 + .../src/views/system/modules/RoleModal.vue | 194 + .../views/system/modules/RolePushBtnModal.vue | 315 + .../src/views/system/modules/TenantModal.vue | 169 + .../src/views/system/modules/UnitModal.vue | 219 + .../system/modules/UserCustomerModal.vue | 144 + .../views/system/modules/UserDepotModal.vue | 181 + .../src/views/system/modules/UserModal.vue | 230 + .../views/system/modules/UserResetModal.vue | 110 + .../views/system/modules/UserRoleModal.vue | 137 + .../src/views/system/modules/VendorModal.vue | 218 + .../src/views/system/modules/icon/Icon.less | 35 + .../src/views/system/modules/icon/Icons.vue | 123 + smtERP-web/src/views/user/Login.vue | 512 ++ smtERP-web/src/views/user/Register.vue | 363 + smtERP-web/tests/security.cjs | 70 + smtERP-web/vue.config.js | 61 + smtERP-web/yarn | 0 876 files changed, 198756 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 README.md create mode 100644 smtERP-boot/.gitattributes create mode 100644 smtERP-boot/.gitignore create mode 100644 smtERP-boot/docs/asset_management.md create mode 100644 smtERP-boot/docs/create_customer_tables.sql create mode 100644 smtERP-boot/docs/customer_category_contact.sql create mode 100644 smtERP-boot/docs/security-review-remediation-20261012.md create mode 100644 smtERP-boot/docs/smt-erp-init-data.sql create mode 100644 smtERP-boot/docs/sql_update_permission_management.sql create mode 100644 smtERP-boot/docs/sql_update_production.sql create mode 100644 smtERP-boot/pom.xml create mode 100644 smtERP-boot/scripts/sync_sas_assets.ps1 create mode 100644 smtERP-boot/src/main/assembly/assembly.xml create mode 100644 smtERP-boot/src/main/bin/restart.sh create mode 100644 smtERP-boot/src/main/bin/run-manage.sh create mode 100644 smtERP-boot/src/main/bin/start.bat create mode 100644 smtERP-boot/src/main/bin/start.sh create mode 100644 smtERP-boot/src/main/bin/status.sh create mode 100644 smtERP-boot/src/main/bin/stop.sh create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/ErpApplication.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/aspect/ApiLogAspect.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/base/AjaxResult.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/base/BaseController.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/base/PageDomain.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/base/TableDataInfo.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/base/TableSupport.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/config/PluginBeanConfig.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/config/PluginConfiguration.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/config/Swagger2Config.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/config/TenantConfig.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/constants/BusinessConstants.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/constants/ExceptionConstants.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/controller/AccountController.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/controller/AccountHeadController.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/controller/AccountItemController.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/controller/AssetController.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/controller/AssetDeviceController.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/controller/AssetInventoryController.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/controller/CustomerCategoryController.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/controller/CustomerContactController.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/controller/DashboardController.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/controller/DeliveryPlanController.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/controller/DepotController.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/controller/DepotHeadController.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/controller/DepotItemController.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/controller/DeviceInventoryCompatibilityController.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/controller/FunctionController.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/controller/HeadquartersInboundController.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/controller/InOutItemController.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/controller/LegacyInventoryController.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/controller/LogController.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/controller/MaterialAttributeController.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/controller/MaterialCategoryController.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/controller/MaterialController.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/controller/MaterialExtendController.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/controller/MaterialPropertyController.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/controller/MsgController.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/controller/OrganizationController.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/controller/PackBomController.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/controller/PersonController.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/controller/PlatformConfigController.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/controller/PluginController.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/controller/ProductionOrderController.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/controller/ProductionReportController.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/controller/ProductionRequisitionController.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/controller/RoleController.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/controller/SaleShipmentController.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/controller/SequenceController.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/controller/SerialNumberController.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/controller/SmtInboundController.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/controller/SupplierController.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/controller/SysDictDataController.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/controller/SysDictTypeController.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/controller/SystemConfigController.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/controller/TenantController.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/controller/TpmDoubleController.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/controller/UnitController.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/controller/UserBusinessController.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/controller/UserController.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/Account.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/AccountExample.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/AccountHead.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/AccountHeadExample.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/AccountHeadVo4Body.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/AccountHeadVo4ListEx.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/AccountItem.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/AccountItemExample.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/AccountVo4Sum.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/Asset.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/AssetCategory.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/AssetDevice.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/AssetInventory.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/AssetInventoryDetail.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/BaseEntity.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/CustomerCategory.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/CustomerContact.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/DeliveryPlan.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/DeliveryPlanItem.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/Depot.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/DepotEx.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/DepotExample.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/DepotHead.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/DepotHeadExample.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/DepotHeadVo4Body.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/DepotItem.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/DepotItemExample.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/DepotItemVo4DetailByTypeAndMId.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/DepotItemVo4Material.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/DepotItemVo4MaterialAndSum.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/DepotItemVo4WithInfoEx.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/Function.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/FunctionEx.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/FunctionExample.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/InOutItem.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/InOutItemExample.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/Log.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/LogExample.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/Material.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialAttribute.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialAttributeExample.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialCategory.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialCategoryExample.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialCurrentStock.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialCurrentStockExample.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialExample.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialExtend.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialExtendExample.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialInitialStock.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialInitialStockExample.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialInitialStockWithMaterial.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialProperty.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialPropertyExample.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialVo4Unit.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialWithInitStock.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/Msg.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MsgEx.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MsgExample.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/OrgaUserRel.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/OrgaUserRelEx.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/OrgaUserRelExample.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/Organization.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/OrganizationExample.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/PackBom.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/PackBomItem.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/Person.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/PersonExample.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/PlatformConfig.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/PlatformConfigExample.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/ProductionOrder.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/ProductionOrderLog.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/ProductionReport.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/ProductionReportItem.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/ProductionRequisition.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/ProductionRequisitionItem.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/Role.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/RoleEx.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/RoleExample.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/SaleShipment.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/SaleShipmentItem.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/SerialNumber.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/SerialNumberEx.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/SerialNumberExample.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/Supplier.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/SupplierExample.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/SysDictData.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/SysDictType.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/SysLoginModel.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/SystemConfig.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/SystemConfigExample.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/Tenant.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/TenantEx.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/TenantExample.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/Unit.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/UnitExample.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/User.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/UserBusiness.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/UserBusinessExample.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/UserEx.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/UserExample.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/AccountHeadMapper.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/AccountHeadMapperEx.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/AccountItemMapper.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/AccountItemMapperEx.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/AccountMapper.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/AccountMapperEx.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/AssetManagementMapper.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/CustomerCategoryMapper.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/CustomerCategoryMapperEx.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/CustomerContactMapper.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/CustomerContactMapperEx.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/DeliveryPlanMapper.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/DepotHeadMapper.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/DepotHeadMapperEx.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/DepotItemMapper.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/DepotItemMapperEx.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/DepotMapper.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/DepotMapperEx.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/FunctionMapper.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/FunctionMapperEx.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/InOutItemMapper.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/InOutItemMapperEx.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/LogMapper.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/LogMapperEx.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MaterialAttributeMapper.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MaterialAttributeMapperEx.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MaterialCategoryMapper.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MaterialCategoryMapperEx.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MaterialCurrentStockMapper.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MaterialCurrentStockMapperEx.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MaterialExtendMapper.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MaterialExtendMapperEx.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MaterialInitialStockMapper.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MaterialInitialStockMapperEx.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MaterialMapper.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MaterialMapperEx.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MaterialPropertyMapper.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MaterialPropertyMapperEx.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MsgMapper.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MsgMapperEx.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/OrgaUserRelMapper.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/OrgaUserRelMapperEx.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/OrganizationMapper.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/OrganizationMapperEx.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/PackBomMapper.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/PersonMapper.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/PersonMapperEx.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/PlatformConfigMapper.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/PlatformConfigMapperEx.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/ProductionOrderMapper.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/ProductionReportMapper.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/ProductionRequisitionMapper.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/RoleMapper.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/RoleMapperEx.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/SaleShipmentMapper.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/SequenceMapperEx.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/SerialNumberMapper.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/SerialNumberMapperEx.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/SupplierMapper.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/SupplierMapperEx.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/SysDictDataMapper.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/SysDictTypeMapper.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/SystemConfigMapper.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/SystemConfigMapperEx.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/TenantMapper.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/TenantMapperEx.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/UnitMapper.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/UnitMapperEx.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/UserBusinessMapper.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/UserBusinessMapperEx.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/UserMapper.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/UserMapperEx.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/AccountItemVo4List.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/AccountVo4InOutList.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/AccountVo4List.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/BillListCacheVo.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/DeliveryPlanVo4List.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/DepotHeadVo4InDetail.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/DepotHeadVo4InOutMCount.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/DepotHeadVo4List.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/DepotHeadVo4StatementAccount.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/DepotItemStockWarningCount.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/DepotItemVo4Stock.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/DepotItemVoBatchNumberList.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/FinishDepositVo.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/InOutPriceVo.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/InventoryOperatorOption.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/LogVo4List.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/MaterialCountVo.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/MaterialDepotStock.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/MaterialExtendVo4List.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/MaterialVoSearch.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/MaterialsListVo.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/NodeAttributes.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/PackBomVo4List.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/ProductionOrderVo4List.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/ProductionReportVo4List.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/ProductionRequisitionVo4List.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/SaleShipmentVo4List.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/SupplierSimple.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/TreeNode.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/TreeNodeEx.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/exception/BusinessParamCheckingException.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/exception/BusinessRunTimeException.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/exception/GlobalExceptionHandler.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/exception/JshException.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/exception/LegacyInventoryBusinessException.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/exception/UtilException.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/filter/LogCostFilter.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/service/AccountHeadService.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/service/AccountItemService.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/service/AccountService.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/service/AssetManagementService.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/service/CustomerCategoryService.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/service/CustomerContactService.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/service/DashboardService.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/service/DeliveryPlanService.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/service/DepotHeadService.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/service/DepotItemService.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/service/DepotService.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/service/FunctionService.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/service/InOutItemService.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/service/LegacyInventoryAuthService.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/service/LegacyInventoryService.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/service/LogService.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/service/LoginAttemptService.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/service/MaterialAttributeService.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/service/MaterialCategoryService.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/service/MaterialExtendService.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/service/MaterialPropertyService.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/service/MaterialService.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/service/MsgService.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/service/OrgaUserRelService.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/service/OrganizationService.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/service/PackBomService.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/service/PersonService.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/service/PlatformConfigService.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/service/ProductionOrderService.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/service/ProductionReportService.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/service/ProductionRequisitionService.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/service/RedisService.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/service/RoleService.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/service/SaleShipmentService.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/service/SequenceService.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/service/SerialNumberService.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/service/SmtInboundService.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/service/SupplierService.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/service/SysDictDataService.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/service/SysDictTypeService.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/service/SystemConfigService.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/service/TenantService.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/service/UnitService.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/service/UserBusinessService.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/service/UserService.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/utils/AnnotationUtils.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/utils/BaseResponseInfo.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/utils/ColumnPropertyUtil.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/utils/ComputerInfo.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/utils/Constants.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/utils/Convert.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/utils/DictUtils.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/utils/ErpInfo.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/utils/ExcelUtils.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/utils/ExceptionCodeConstants.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/utils/ExtJsonUtils.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/utils/FileUtils.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/utils/HttpClient.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/utils/JsonUtils.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/utils/LegacyInventoryResponse.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/utils/OrderUtils.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/utils/PageQueryInfo.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/utils/PageUtils.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/utils/ParamUtils.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/utils/PinYinUtil.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/utils/QueryUtils.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/utils/RandImageUtil.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/utils/RedisLockUtil.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/utils/RegExpTools.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/utils/ResponseCode.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/utils/ResponseJsonUtil.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/utils/ServletUtils.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/utils/SqlUtil.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/utils/StringUtil.java create mode 100644 smtERP-boot/src/main/java/com/reallin/smt/utils/Tools.java create mode 100644 smtERP-boot/src/main/resources/application.yml create mode 100644 smtERP-boot/src/main/resources/changeLog.md create mode 100644 smtERP-boot/src/main/resources/db/migration/V20260910__smt_inbound.sql create mode 100644 smtERP-boot/src/main/resources/db/migration/V20260914__disable_tenant_features.sql create mode 100644 smtERP-boot/src/main/resources/db/migration/V2026091501__production_requisition_item_depot.sql create mode 100644 smtERP-boot/src/main/resources/db/migration/V2026091502__sale_shipment.sql create mode 100644 smtERP-boot/src/main/resources/db/migration/V20260915__production_plan_model.sql create mode 100644 smtERP-boot/src/main/resources/db/migration/V20260916_2__headquarters_inbound_menu.sql create mode 100644 smtERP-boot/src/main/resources/db/migration/V20260916_3__headquarters_inbound_item_json.sql create mode 100644 smtERP-boot/src/main/resources/db/migration/V20260916_4__headquarters_inbound_depot.sql create mode 100644 smtERP-boot/src/main/resources/db/migration/V20260917_2__delivery_plan_tbl_function.sql create mode 100644 smtERP-boot/src/main/resources/db/migration/V20260917_3__function_i18n.sql create mode 100644 smtERP-boot/src/main/resources/db/migration/V20260917__delivery_plan_shipment_flow.sql create mode 100644 smtERP-boot/src/main/resources/db/migration/V20260918_2__asset_management_demo_data.sql create mode 100644 smtERP-boot/src/main/resources/db/migration/V20260918_3__legacy_inventory_api.sql create mode 100644 smtERP-boot/src/main/resources/db/migration/V20260918__asset_management.sql create mode 100644 smtERP-boot/src/main/resources/db/migration/V20260920__fill_function_name_en.sql create mode 100644 smtERP-boot/src/main/resources/db/migration/V20260921_2__log_api_fields_and_monthly_partitions.sql create mode 100644 smtERP-boot/src/main/resources/db/migration/V20260921_3__remove_asset_tenant_id.sql create mode 100644 smtERP-boot/src/main/resources/db/migration/V20260921__simplify_inventory_detail_status.sql create mode 100644 smtERP-boot/src/main/resources/db/migration/V20260928__asset_category_and_external_source.sql create mode 100644 smtERP-boot/src/main/resources/db/migration/V20260929_2__asset_dashboard_menu.sql create mode 100644 smtERP-boot/src/main/resources/db/migration/V20260929__asset_datetime_precision.sql create mode 100644 smtERP-boot/src/main/resources/i18n/messages_en_US.properties create mode 100644 smtERP-boot/src/main/resources/i18n/messages_zh_CN.properties create mode 100644 smtERP-boot/src/main/resources/logback-spring.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/AccountHeadMapper.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/AccountHeadMapperEx.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/AccountItemMapper.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/AccountItemMapperEx.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/AccountMapper.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/AccountMapperEx.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/AssetManagementMapper.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/CustomerCategoryMapper.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/CustomerCategoryMapperEx.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/CustomerContactMapper.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/CustomerContactMapperEx.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/DeliveryPlanMapper.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/DepotHeadMapper.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/DepotHeadMapperEx.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/DepotItemMapper.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/DepotItemMapperEx.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/DepotMapper.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/DepotMapperEx.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/FunctionMapper.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/FunctionMapperEx.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/InOutItemMapper.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/InOutItemMapperEx.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/LogMapper.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/LogMapperEx.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/MaterialAttributeMapper.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/MaterialAttributeMapperEx.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/MaterialCategoryMapper.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/MaterialCategoryMapperEx.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/MaterialCurrentStockMapper.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/MaterialCurrentStockMapperEx.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/MaterialExtendMapper.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/MaterialExtendMapperEx.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/MaterialInitialStockMapper.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/MaterialInitialStockMapperEx.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/MaterialMapper.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/MaterialMapperEx.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/MaterialPropertyMapper.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/MaterialPropertyMapperEx.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/MsgMapper.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/MsgMapperEx.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/OrgaUserRelMapper.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/OrgaUserRelMapperEx.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/OrganizationMapper.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/OrganizationMapperEx.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/PackBomMapper.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/PersonMapper.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/PersonMapperEx.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/PlatformConfigMapper.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/PlatformConfigMapperEx.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/ProductionOrderMapper.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/ProductionReportMapper.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/ProductionRequisitionMapper.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/RoleMapper.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/RoleMapperEx.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/SaleShipmentMapper.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/SequenceMapperEx.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/SerialNumberMapper.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/SerialNumberMapperEx.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/SupplierMapper.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/SupplierMapperEx.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/SysDictDataMapper.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/SysDictTypeMapper.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/SystemConfigMapper.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/SystemConfigMapperEx.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/TenantMapper.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/TenantMapperEx.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/UnitMapper.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/UnitMapperEx.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/UserBusinessMapper.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/UserBusinessMapperEx.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/UserMapper.xml create mode 100644 smtERP-boot/src/main/resources/mapper_xml/UserMapperEx.xml create mode 100644 smtERP-boot/src/test/java/com/reallin/smt/filter/LogCostFilterTest.java create mode 100644 smtERP-boot/src/test/java/com/reallin/smt/security/MapperSecurityTest.java create mode 100644 smtERP-boot/src/test/java/com/reallin/smt/service/LegacyInventoryAuthServiceTest.java create mode 100644 smtERP-boot/src/test/java/com/reallin/smt/service/LegacyInventorySecurityTest.java create mode 100644 smtERP-boot/src/test/java/com/reallin/smt/service/LoginAttemptServiceTest.java create mode 100644 smtERP-boot/src/test/java/com/reallin/smt/utils/SqlUtilTest.java create mode 100644 smtERP-boot/src/test/resources/generatorConfig.xml create mode 100644 smtERP-web/.editorconfig create mode 100644 smtERP-web/.eslintignore create mode 100644 smtERP-web/.gitattributes create mode 100644 smtERP-web/.gitignore create mode 100644 smtERP-web/.prettierrc create mode 100644 smtERP-web/README.md create mode 100644 smtERP-web/babel.config.js create mode 100644 smtERP-web/changeLog.md create mode 100644 smtERP-web/idea.config.js create mode 100644 smtERP-web/package.json create mode 100644 smtERP-web/public/doc/apply_item_template.xls create mode 100644 smtERP-web/public/doc/buy_sale_item_template.xls create mode 100644 smtERP-web/public/doc/customer_template.xls create mode 100644 smtERP-web/public/doc/goods_template.xls create mode 100644 smtERP-web/public/doc/in_out_item_template.xls create mode 100644 smtERP-web/public/doc/member_template.xls create mode 100644 smtERP-web/public/doc/order_item_template.xls create mode 100644 smtERP-web/public/doc/vendor_template.xls create mode 100644 smtERP-web/public/index.html create mode 100644 smtERP-web/public/static/Android.png create mode 100644 smtERP-web/public/static/android-code.png create mode 100644 smtERP-web/public/static/banner-home.jpg create mode 100644 smtERP-web/public/static/banner-small.jpg create mode 100644 smtERP-web/public/static/bgimg.png create mode 100644 smtERP-web/public/static/blue.png create mode 100644 smtERP-web/public/static/color.less create mode 100644 smtERP-web/public/static/favicon.ico create mode 100644 smtERP-web/public/static/iPhone.png create mode 100644 smtERP-web/public/static/iphone-code.png create mode 100644 smtERP-web/public/static/less.min.js create mode 100644 smtERP-web/public/static/mini-program.png create mode 100644 smtERP-web/public/static/rightImg.png create mode 100644 smtERP-web/public/static/screenshot/1.jpg create mode 100644 smtERP-web/public/static/screenshot/10.jpg create mode 100644 smtERP-web/public/static/screenshot/2.jpg create mode 100644 smtERP-web/public/static/screenshot/3.jpg create mode 100644 smtERP-web/public/static/screenshot/4.jpg create mode 100644 smtERP-web/public/static/screenshot/5.jpg create mode 100644 smtERP-web/public/static/screenshot/6.jpg create mode 100644 smtERP-web/public/static/screenshot/7.jpg create mode 100644 smtERP-web/public/static/screenshot/8.jpg create mode 100644 smtERP-web/public/static/screenshot/9.jpg create mode 100644 smtERP-web/public/static/weixin-code.png create mode 100644 smtERP-web/public/static/weixin.jpg create mode 100644 smtERP-web/src/App.vue create mode 100644 smtERP-web/src/api/GroupRequest.js create mode 100644 smtERP-web/src/api/api.js create mode 100644 smtERP-web/src/api/index.js create mode 100644 smtERP-web/src/api/login.js create mode 100644 smtERP-web/src/api/manage.js create mode 100644 smtERP-web/src/assets/SMTLoginLogo.png create mode 100644 smtERP-web/src/assets/SMTLogo.png create mode 100644 smtERP-web/src/assets/checkcode.png create mode 100644 smtERP-web/src/assets/dark.svg create mode 100644 smtERP-web/src/assets/less/JAreaLinkage.less create mode 100644 smtERP-web/src/assets/less/TableExpand.less create mode 100644 smtERP-web/src/assets/less/common.less create mode 100644 smtERP-web/src/assets/less/index.less create mode 100644 smtERP-web/src/assets/light.svg create mode 100644 smtERP-web/src/components/AvatarList/Item.vue create mode 100644 smtERP-web/src/components/AvatarList/List.vue create mode 100644 smtERP-web/src/components/AvatarList/index.js create mode 100644 smtERP-web/src/components/AvatarList/index.less create mode 100644 smtERP-web/src/components/ChartCard.vue create mode 100644 smtERP-web/src/components/CountDown/CountDown.vue create mode 100644 smtERP-web/src/components/CountDown/index.js create mode 100644 smtERP-web/src/components/DictData/index.js create mode 100644 smtERP-web/src/components/DictTag/index.vue create mode 100644 smtERP-web/src/components/Ellipsis/Ellipsis.vue create mode 100644 smtERP-web/src/components/Ellipsis/index.js create mode 100644 smtERP-web/src/components/NumberInfo/NumberInfo.vue create mode 100644 smtERP-web/src/components/NumberInfo/index.js create mode 100644 smtERP-web/src/components/NumberInfo/index.less create mode 100644 smtERP-web/src/components/Trend/Trend.vue create mode 100644 smtERP-web/src/components/Trend/index.js create mode 100644 smtERP-web/src/components/Trend/index.less create mode 100644 smtERP-web/src/components/chart/AreaChartTy.vue create mode 100644 smtERP-web/src/components/chart/Bar.vue create mode 100644 smtERP-web/src/components/chart/BarAndLine.vue create mode 100644 smtERP-web/src/components/chart/BarMultid.vue create mode 100644 smtERP-web/src/components/chart/DashChartDemo.vue create mode 100644 smtERP-web/src/components/chart/IndexBar.vue create mode 100644 smtERP-web/src/components/chart/LineChartMultid.vue create mode 100644 smtERP-web/src/components/chart/Liquid.vue create mode 100644 smtERP-web/src/components/chart/MiniArea.vue create mode 100644 smtERP-web/src/components/chart/MiniBar.vue create mode 100644 smtERP-web/src/components/chart/MiniProgress.vue create mode 100644 smtERP-web/src/components/chart/Pie.vue create mode 100644 smtERP-web/src/components/chart/Radar.vue create mode 100644 smtERP-web/src/components/chart/RankList.vue create mode 100644 smtERP-web/src/components/chart/StackBar.vue create mode 100644 smtERP-web/src/components/chart/TransferBar.vue create mode 100644 smtERP-web/src/components/chart/Trend.vue create mode 100644 smtERP-web/src/components/chart/chart.less create mode 100644 smtERP-web/src/components/chart/chart.scss create mode 100644 smtERP-web/src/components/chart/mixins/ChartMixins.js create mode 100644 smtERP-web/src/components/index.less create mode 100644 smtERP-web/src/components/jeecg/JAreaLinkage.vue create mode 100644 smtERP-web/src/components/jeecg/JCategorySelect.vue create mode 100644 smtERP-web/src/components/jeecg/JCheckbox.vue create mode 100644 smtERP-web/src/components/jeecg/JCodeEditor.vue create mode 100644 smtERP-web/src/components/jeecg/JCron.vue create mode 100644 smtERP-web/src/components/jeecg/JDate.vue create mode 100644 smtERP-web/src/components/jeecg/JEditableTable.vue create mode 100644 smtERP-web/src/components/jeecg/JEllipsis.vue create mode 100644 smtERP-web/src/components/jeecg/JFormContainer.vue create mode 100644 smtERP-web/src/components/jeecg/JGraphicCode.vue create mode 100644 smtERP-web/src/components/jeecg/JImageUpload.vue create mode 100644 smtERP-web/src/components/jeecg/JImportModal.vue create mode 100644 smtERP-web/src/components/jeecg/JInput.vue create mode 100644 smtERP-web/src/components/jeecg/JModal/index.vue create mode 100644 smtERP-web/src/components/jeecg/JSelectMultiple.vue create mode 100644 smtERP-web/src/components/jeecg/JSlider.vue create mode 100644 smtERP-web/src/components/jeecg/JSuperQuery.vue create mode 100644 smtERP-web/src/components/jeecg/JSwitch.vue create mode 100644 smtERP-web/src/components/jeecg/JTreeDict.vue create mode 100644 smtERP-web/src/components/jeecg/JTreeSelect.vue create mode 100644 smtERP-web/src/components/jeecg/JTreeTable.vue create mode 100644 smtERP-web/src/components/jeecg/JUpload.vue create mode 100644 smtERP-web/src/components/jeecg/index.js create mode 100644 smtERP-web/src/components/jeecg/minipop/JFilePop.vue create mode 100644 smtERP-web/src/components/jeecg/minipop/JInputPop.vue create mode 100644 smtERP-web/src/components/jeecg/modal/JCronModal.vue create mode 100644 smtERP-web/src/components/jeecgbiz/JCustomerTreeSelect.vue create mode 100644 smtERP-web/src/components/jeecgbiz/JSelectBizComponent/JSelectBizComponentModal.vue create mode 100644 smtERP-web/src/components/jeecgbiz/JSelectBizComponent/index.vue create mode 100644 smtERP-web/src/components/jeecgbiz/JSelectDepart.vue create mode 100644 smtERP-web/src/components/jeecgbiz/JSelectList.vue create mode 100644 smtERP-web/src/components/jeecgbiz/JSelectMultiUser.vue create mode 100644 smtERP-web/src/components/jeecgbiz/JSelectPosition.vue create mode 100644 smtERP-web/src/components/jeecgbiz/JSelectRole.vue create mode 100644 smtERP-web/src/components/jeecgbiz/JSelectUserByDep.vue create mode 100644 smtERP-web/src/components/jeecgbiz/modal/JSelectBatchModal.vue create mode 100644 smtERP-web/src/components/jeecgbiz/modal/JSelectDepartModal.vue create mode 100644 smtERP-web/src/components/jeecgbiz/modal/JSelectMaterialModal.vue create mode 100644 smtERP-web/src/components/jeecgbiz/modal/JSelectSnAddModal.vue create mode 100644 smtERP-web/src/components/jeecgbiz/modal/JSelectSnModal.vue create mode 100644 smtERP-web/src/components/jeecgbiz/modal/JSelectUserByDepModal.vue create mode 100644 smtERP-web/src/components/jeecgbiz/modal/SelectUserListModal.vue create mode 100644 smtERP-web/src/components/layouts/BasicLayout.vue create mode 100644 smtERP-web/src/components/layouts/BlankLayout.vue create mode 100644 smtERP-web/src/components/layouts/IframeFReportView.vue create mode 100644 smtERP-web/src/components/layouts/IframePageView.vue create mode 100644 smtERP-web/src/components/layouts/PageView.vue create mode 100644 smtERP-web/src/components/layouts/RouteView.vue create mode 100644 smtERP-web/src/components/layouts/TabLayout.vue create mode 100644 smtERP-web/src/components/layouts/UserLayout.vue create mode 100644 smtERP-web/src/components/layouts/index.js create mode 100644 smtERP-web/src/components/menu/Contextmenu.vue create mode 100644 smtERP-web/src/components/menu/SideMenu.vue create mode 100644 smtERP-web/src/components/menu/index.js create mode 100644 smtERP-web/src/components/page/GlobalFooter.vue create mode 100644 smtERP-web/src/components/page/GlobalHeader.vue create mode 100644 smtERP-web/src/components/page/GlobalLayout.vue create mode 100644 smtERP-web/src/components/page/JumpInfo.vue create mode 100644 smtERP-web/src/components/page/PageHeader.vue create mode 100644 smtERP-web/src/components/page/PageLayout.vue create mode 100644 smtERP-web/src/components/page/SHeaderNotice.vue create mode 100644 smtERP-web/src/components/setting/SettingDrawer.vue create mode 100644 smtERP-web/src/components/setting/SettingItem.vue create mode 100644 smtERP-web/src/components/table/StandardTable.vue create mode 100644 smtERP-web/src/components/table/index.js create mode 100644 smtERP-web/src/components/tools/BillExcelIframe.vue create mode 100644 smtERP-web/src/components/tools/Breadcrumb.vue create mode 100644 smtERP-web/src/components/tools/DepartSelect.vue create mode 100644 smtERP-web/src/components/tools/DetailList.vue create mode 100644 smtERP-web/src/components/tools/DynamicNotice.vue create mode 100644 smtERP-web/src/components/tools/FooterToolBar.vue create mode 100644 smtERP-web/src/components/tools/HeadInfo.vue create mode 100644 smtERP-web/src/components/tools/HeaderNotice.vue create mode 100644 smtERP-web/src/components/tools/ImportFileModal.vue create mode 100644 smtERP-web/src/components/tools/LanguageSwitcher.vue create mode 100644 smtERP-web/src/components/tools/Logo.vue create mode 100644 smtERP-web/src/components/tools/ShowAnnouncement.vue create mode 100644 smtERP-web/src/components/tools/TwoStepCaptcha.vue create mode 100644 smtERP-web/src/components/tools/UserMenu.vue create mode 100644 smtERP-web/src/components/tools/UserPassword.vue create mode 100644 smtERP-web/src/components/tools/WorkflowIframe.vue create mode 100644 smtERP-web/src/components/tools/setting.js create mode 100644 smtERP-web/src/config/router.config.js create mode 100644 smtERP-web/src/defaultSettings.js create mode 100644 smtERP-web/src/locales/business-ui.js create mode 100644 smtERP-web/src/locales/en-US.js create mode 100644 smtERP-web/src/locales/index.js create mode 100644 smtERP-web/src/locales/modal-ui.js create mode 100644 smtERP-web/src/locales/zh-CN.js create mode 100644 smtERP-web/src/main.js create mode 100644 smtERP-web/src/mixins/JEditableTableMixin.js create mode 100644 smtERP-web/src/mixins/JeecgListMixin.js create mode 100644 smtERP-web/src/permission.js create mode 100644 smtERP-web/src/router/README.md create mode 100644 smtERP-web/src/router/index.js create mode 100644 smtERP-web/src/store/getters.js create mode 100644 smtERP-web/src/store/index.js create mode 100644 smtERP-web/src/store/modules/app.js create mode 100644 smtERP-web/src/store/modules/dict.js create mode 100644 smtERP-web/src/store/modules/enhance.js create mode 100644 smtERP-web/src/store/modules/permission.js create mode 100644 smtERP-web/src/store/modules/user.js create mode 100644 smtERP-web/src/store/mutation-types.js create mode 100644 smtERP-web/src/utils/JEditableTableUtil.js create mode 100644 smtERP-web/src/utils/LunarFullCalendarUtil.js create mode 100644 smtERP-web/src/utils/auth.js create mode 100644 smtERP-web/src/utils/authFilter.js create mode 100644 smtERP-web/src/utils/axios.js create mode 100644 smtERP-web/src/utils/commonUploadFile.js create mode 100644 smtERP-web/src/utils/desform/CustomExpression.js create mode 100644 smtERP-web/src/utils/device.js create mode 100644 smtERP-web/src/utils/dict/Dict.js create mode 100644 smtERP-web/src/utils/dict/DictConverter.js create mode 100644 smtERP-web/src/utils/dict/DictData.js create mode 100644 smtERP-web/src/utils/dict/DictMeta.js create mode 100644 smtERP-web/src/utils/dict/DictOptions.js create mode 100644 smtERP-web/src/utils/dict/index.js create mode 100644 smtERP-web/src/utils/encryption/aesEncrypt.js create mode 100644 smtERP-web/src/utils/filter.js create mode 100644 smtERP-web/src/utils/hasPermission.js create mode 100644 smtERP-web/src/utils/language.js create mode 100644 smtERP-web/src/utils/menuUrl.js create mode 100644 smtERP-web/src/utils/mixin.js create mode 100644 smtERP-web/src/utils/permissions.js create mode 100644 smtERP-web/src/utils/props-util.js create mode 100644 smtERP-web/src/utils/request.js create mode 100644 smtERP-web/src/utils/storage.js create mode 100644 smtERP-web/src/utils/util.js create mode 100644 smtERP-web/src/utils/validate.js create mode 100644 smtERP-web/src/utils/vueBus.js create mode 100644 smtERP-web/src/views/404.vue create mode 100644 smtERP-web/src/views/asset/AssetDashboard.vue create mode 100644 smtERP-web/src/views/asset/AssetList.vue create mode 100644 smtERP-web/src/views/asset/DeviceList.vue create mode 100644 smtERP-web/src/views/asset/InventoryList.vue create mode 100644 smtERP-web/src/views/asset/modules/AssetCategoryModal.vue create mode 100644 smtERP-web/src/views/asset/modules/AssetModal.vue create mode 100644 smtERP-web/src/views/asset/modules/DeviceModal.vue create mode 100644 smtERP-web/src/views/asset/modules/InventoryCreateDrawer.vue create mode 100644 smtERP-web/src/views/bill/AllocationOutList.vue create mode 100644 smtERP-web/src/views/bill/AssembleList.vue create mode 100644 smtERP-web/src/views/bill/DeliveryPlanList.vue create mode 100644 smtERP-web/src/views/bill/DisassembleList.vue create mode 100644 smtERP-web/src/views/bill/HeadquartersInList.vue create mode 100644 smtERP-web/src/views/bill/OtherInList.vue create mode 100644 smtERP-web/src/views/bill/OtherOutList.vue create mode 100644 smtERP-web/src/views/bill/PurchaseApplyList.vue create mode 100644 smtERP-web/src/views/bill/PurchaseBackList.vue create mode 100644 smtERP-web/src/views/bill/PurchaseInList.vue create mode 100644 smtERP-web/src/views/bill/PurchaseOrderList.vue create mode 100644 smtERP-web/src/views/bill/RetailBackList.vue create mode 100644 smtERP-web/src/views/bill/RetailOutList.vue create mode 100644 smtERP-web/src/views/bill/SaleBackList.vue create mode 100644 smtERP-web/src/views/bill/SaleOrderList.vue create mode 100644 smtERP-web/src/views/bill/SaleOutList.vue create mode 100644 smtERP-web/src/views/bill/SaleShipmentList.vue create mode 100644 smtERP-web/src/views/bill/dialog/BatchSetDepot.vue create mode 100644 smtERP-web/src/views/bill/dialog/BatchWaitBillList.vue create mode 100644 smtERP-web/src/views/bill/dialog/BillDetail.vue create mode 100644 smtERP-web/src/views/bill/dialog/BillPrintIframe.vue create mode 100644 smtERP-web/src/views/bill/dialog/BillPrintProIframe.vue create mode 100644 smtERP-web/src/views/bill/dialog/HistoryBillList.vue create mode 100644 smtERP-web/src/views/bill/dialog/ImportItemModal.vue create mode 100644 smtERP-web/src/views/bill/dialog/LinkBillList.vue create mode 100644 smtERP-web/src/views/bill/dialog/ManyAccountModal.vue create mode 100644 smtERP-web/src/views/bill/dialog/QuickEditModal.vue create mode 100644 smtERP-web/src/views/bill/dialog/WaitBillList.vue create mode 100644 smtERP-web/src/views/bill/mixins/BillListMixin.js create mode 100644 smtERP-web/src/views/bill/mixins/BillModalMixin.js create mode 100644 smtERP-web/src/views/bill/modules/AllocationOutModal.vue create mode 100644 smtERP-web/src/views/bill/modules/AssembleModal.vue create mode 100644 smtERP-web/src/views/bill/modules/DeliveryPlanModal.vue create mode 100644 smtERP-web/src/views/bill/modules/DisassembleModal.vue create mode 100644 smtERP-web/src/views/bill/modules/HeadquartersInModal.vue create mode 100644 smtERP-web/src/views/bill/modules/OtherInModal.vue create mode 100644 smtERP-web/src/views/bill/modules/OtherOutModal.vue create mode 100644 smtERP-web/src/views/bill/modules/PurchaseApplyModal.vue create mode 100644 smtERP-web/src/views/bill/modules/PurchaseBackModal.vue create mode 100644 smtERP-web/src/views/bill/modules/PurchaseInModal.vue create mode 100644 smtERP-web/src/views/bill/modules/PurchaseOrderModal.vue create mode 100644 smtERP-web/src/views/bill/modules/RetailBackModal.vue create mode 100644 smtERP-web/src/views/bill/modules/RetailOutModal.vue create mode 100644 smtERP-web/src/views/bill/modules/SaleBackModal.vue create mode 100644 smtERP-web/src/views/bill/modules/SaleOrderModal.vue create mode 100644 smtERP-web/src/views/bill/modules/SaleOutModal.vue create mode 100644 smtERP-web/src/views/bill/modules/SaleShipmentModal.vue create mode 100644 smtERP-web/src/views/dashboard/Analysis.vue create mode 100644 smtERP-web/src/views/dashboard/IndexChart.vue create mode 100644 smtERP-web/src/views/exception/403.vue create mode 100644 smtERP-web/src/views/exception/404.vue create mode 100644 smtERP-web/src/views/exception/500.vue create mode 100644 smtERP-web/src/views/exception/ExceptionPage.vue create mode 100644 smtERP-web/src/views/exception/type.js create mode 100644 smtERP-web/src/views/financial/AdvanceInList.vue create mode 100644 smtERP-web/src/views/financial/GiroList.vue create mode 100644 smtERP-web/src/views/financial/ItemInList.vue create mode 100644 smtERP-web/src/views/financial/ItemOutList.vue create mode 100644 smtERP-web/src/views/financial/MoneyInList.vue create mode 100644 smtERP-web/src/views/financial/MoneyOutList.vue create mode 100644 smtERP-web/src/views/financial/dialog/DebtBillList.vue create mode 100644 smtERP-web/src/views/financial/dialog/FinancialDetail.vue create mode 100644 smtERP-web/src/views/financial/dialog/WaitNeedList.vue create mode 100644 smtERP-web/src/views/financial/mixins/FinancialListMixin.js create mode 100644 smtERP-web/src/views/financial/mixins/FinancialModalMixin.js create mode 100644 smtERP-web/src/views/financial/modules/AdvanceInModal.vue create mode 100644 smtERP-web/src/views/financial/modules/GiroModal.vue create mode 100644 smtERP-web/src/views/financial/modules/ItemInModal.vue create mode 100644 smtERP-web/src/views/financial/modules/ItemOutModal.vue create mode 100644 smtERP-web/src/views/financial/modules/MoneyInModal.vue create mode 100644 smtERP-web/src/views/financial/modules/MoneyOutModal.vue create mode 100644 smtERP-web/src/views/material/MaterialAttributeList.vue create mode 100644 smtERP-web/src/views/material/MaterialCategoryList.vue create mode 100644 smtERP-web/src/views/material/MaterialList.vue create mode 100644 smtERP-web/src/views/material/MaterialPropertyList.vue create mode 100644 smtERP-web/src/views/material/modules/BatchSetInfoModal.vue create mode 100644 smtERP-web/src/views/material/modules/BatchSetPriceModal.vue create mode 100644 smtERP-web/src/views/material/modules/BatchSetStockModal.vue create mode 100644 smtERP-web/src/views/material/modules/MaterialAttributeModal.vue create mode 100644 smtERP-web/src/views/material/modules/MaterialCategoryModal.vue create mode 100644 smtERP-web/src/views/material/modules/MaterialModal.vue create mode 100644 smtERP-web/src/views/material/modules/MaterialPropertyModal.vue create mode 100644 smtERP-web/src/views/production/OrderList.vue create mode 100644 smtERP-web/src/views/production/PackBomList.vue create mode 100644 smtERP-web/src/views/production/ReportList.vue create mode 100644 smtERP-web/src/views/production/RequisitionList.vue create mode 100644 smtERP-web/src/views/production/dialog/OrderDetail.vue create mode 100644 smtERP-web/src/views/production/modules/OrderModal.vue create mode 100644 smtERP-web/src/views/production/modules/PackBomModal.vue create mode 100644 smtERP-web/src/views/production/modules/ReportModal.vue create mode 100644 smtERP-web/src/views/production/modules/RequisitionModal.vue create mode 100644 smtERP-web/src/views/production/modules/SaleOrderSelectModal.vue create mode 100644 smtERP-web/src/views/report/AccountReport.vue create mode 100644 smtERP-web/src/views/report/AllocationDetail.vue create mode 100644 smtERP-web/src/views/report/BuyInReport.vue create mode 100644 smtERP-web/src/views/report/CustomerAccount.vue create mode 100644 smtERP-web/src/views/report/InDetail.vue create mode 100644 smtERP-web/src/views/report/InMaterialCount.vue create mode 100644 smtERP-web/src/views/report/InOutStockReport.vue create mode 100644 smtERP-web/src/views/report/MaterialStock.vue create mode 100644 smtERP-web/src/views/report/OutDetail.vue create mode 100644 smtERP-web/src/views/report/OutMaterialCount.vue create mode 100644 smtERP-web/src/views/report/RetailOutReport.vue create mode 100644 smtERP-web/src/views/report/SaleOutReport.vue create mode 100644 smtERP-web/src/views/report/StockWarningReport.vue create mode 100644 smtERP-web/src/views/report/VendorAccount.vue create mode 100644 smtERP-web/src/views/report/modules/AccountInOutList.vue create mode 100644 smtERP-web/src/views/report/modules/DebtAccountList.vue create mode 100644 smtERP-web/src/views/report/modules/HistoryFinancialList.vue create mode 100644 smtERP-web/src/views/report/modules/MaterialDepotStockList.vue create mode 100644 smtERP-web/src/views/report/modules/MaterialDepotStockListWithTime.vue create mode 100644 smtERP-web/src/views/report/modules/MaterialInOutList.vue create mode 100644 smtERP-web/src/views/report/modules/StockPriceInOutList.vue create mode 100644 smtERP-web/src/views/system/AccountList.vue create mode 100644 smtERP-web/src/views/system/CustomerCategoryList.vue create mode 100644 smtERP-web/src/views/system/CustomerList.vue create mode 100644 smtERP-web/src/views/system/DepotList.vue create mode 100644 smtERP-web/src/views/system/DictList.vue create mode 100644 smtERP-web/src/views/system/FunctionList.vue create mode 100644 smtERP-web/src/views/system/InOutItemList.vue create mode 100644 smtERP-web/src/views/system/LogList.vue create mode 100644 smtERP-web/src/views/system/MemberList.vue create mode 100644 smtERP-web/src/views/system/MsgList.vue create mode 100644 smtERP-web/src/views/system/OrganizationList.vue create mode 100644 smtERP-web/src/views/system/PersonList.vue create mode 100644 smtERP-web/src/views/system/PlatformConfigList.vue create mode 100644 smtERP-web/src/views/system/PluginList.vue create mode 100644 smtERP-web/src/views/system/RoleList.vue create mode 100644 smtERP-web/src/views/system/SystemConfigList.vue create mode 100644 smtERP-web/src/views/system/TenantList.vue create mode 100644 smtERP-web/src/views/system/UnitList.vue create mode 100644 smtERP-web/src/views/system/UserList.vue create mode 100644 smtERP-web/src/views/system/VendorList.vue create mode 100644 smtERP-web/src/views/system/modules/AccountModal.vue create mode 100644 smtERP-web/src/views/system/modules/CustomerModal.vue create mode 100644 smtERP-web/src/views/system/modules/CustomerUserModal.vue create mode 100644 smtERP-web/src/views/system/modules/DepotModal.vue create mode 100644 smtERP-web/src/views/system/modules/DepotUserModal.vue create mode 100644 smtERP-web/src/views/system/modules/DictDataListModal.vue create mode 100644 smtERP-web/src/views/system/modules/DictDataModal.vue create mode 100644 smtERP-web/src/views/system/modules/DictTypeModal.vue create mode 100644 smtERP-web/src/views/system/modules/FunctionModal.vue create mode 100644 smtERP-web/src/views/system/modules/FunctionTreeModal.vue create mode 100644 smtERP-web/src/views/system/modules/InOutItemModal.vue create mode 100644 smtERP-web/src/views/system/modules/MemberModal.vue create mode 100644 smtERP-web/src/views/system/modules/OrganizationModal.vue create mode 100644 smtERP-web/src/views/system/modules/PersonModal.vue create mode 100644 smtERP-web/src/views/system/modules/PersonTypeModal.vue create mode 100644 smtERP-web/src/views/system/modules/PlatformConfigModal.vue create mode 100644 smtERP-web/src/views/system/modules/PluginAppModal.vue create mode 100644 smtERP-web/src/views/system/modules/PluginModal.vue create mode 100644 smtERP-web/src/views/system/modules/RoleFunctionModal.vue create mode 100644 smtERP-web/src/views/system/modules/RoleModal.vue create mode 100644 smtERP-web/src/views/system/modules/RolePushBtnModal.vue create mode 100644 smtERP-web/src/views/system/modules/TenantModal.vue create mode 100644 smtERP-web/src/views/system/modules/UnitModal.vue create mode 100644 smtERP-web/src/views/system/modules/UserCustomerModal.vue create mode 100644 smtERP-web/src/views/system/modules/UserDepotModal.vue create mode 100644 smtERP-web/src/views/system/modules/UserModal.vue create mode 100644 smtERP-web/src/views/system/modules/UserResetModal.vue create mode 100644 smtERP-web/src/views/system/modules/UserRoleModal.vue create mode 100644 smtERP-web/src/views/system/modules/VendorModal.vue create mode 100644 smtERP-web/src/views/system/modules/icon/Icon.less create mode 100644 smtERP-web/src/views/system/modules/icon/Icons.vue create mode 100644 smtERP-web/src/views/user/Login.vue create mode 100644 smtERP-web/src/views/user/Register.vue create mode 100644 smtERP-web/tests/security.cjs create mode 100644 smtERP-web/vue.config.js create mode 100644 smtERP-web/yarn diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..6f2b866 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,4 @@ +*.js linguist-language=Java +*.css linguist-language=Java +*.html linguist-language=Java +*.vue linguist-language=Java \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..083a83e --- /dev/null +++ b/.gitignore @@ -0,0 +1,26 @@ +## ide +**/.idea +*.iml + +## backend +**/target +**/logs +**/dist +*.zip + +## front +**/*.lock +**/node_modules +*.log + +##log +**/logs.home_IS_UNDEFINED + +## local run artifacts +.run/ + +## local backups and script caches +backups/ +.restore-backup-*/ +**/__pycache__/ +*.pyc diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/README.md b/README.md new file mode 100644 index 0000000..4937d51 --- /dev/null +++ b/README.md @@ -0,0 +1,193 @@ +# SMT-ERP + +SMT-ERP 是面向瑞银电子马来西亚(SMT)分公司的私有化 ERP 系统,服务于吉隆坡分公司的进销存、生产、财务和内部管理场景。 + +项目以 SMT 为首个落地试点,面向人员规模不超过 100 人的海外分公司建设,后续可复制到其他海外分公司。系统部署在 SMT 本地机房,核心业务数据由企业自主掌控。 + +## 项目目标 + +围绕“总部生产完成 → 调拨至 SMT → SMT 包装/组装 → 交付客户 → 收款”的业务链路,建立从订单、调拨、库存、生产到财务的闭环管理,解决库存依赖 Excel、审批依赖线下纸质流程以及业务账与财务账不一致等问题。 + +系统重点支持: + +- TNB(马来西亚国家电力公司)订单及二级市场订单管理 +- 总部调拨、SMT 本地包材采购和到货管理 +- 包装 BOM、生产工单、领料、报工和完工入库 +- 批次(LOT NO)与电表序列号(S/N From - S/N To)全流程追溯 +- 销售出库、客户签收、应收应付、成本核算和财务报表 +- 钉钉国际版审批集成,以及 SMT 与 Reallin 的数据互通 + +## 当前项目结构 + +```text +SMT_ERP/ +├── smtERP-boot/ # Java 后端服务 +│ ├── src/main/java/ # 控制器、业务逻辑、数据访问和系统配置 +│ ├── src/main/resources/ +│ │ ├── application.yml +│ │ └── mapper_xml/ # MyBatis XML 映射 +│ └── docs/ # 初始化及数据库升级脚本 +├── smtERP-web/ # Web 前端 +│ ├── src/api/ # 后端接口封装 +│ ├── src/views/ # 业务页面 +│ └── src/components/ # 通用组件 +├── LICENSE +└── README.md +``` + +## 技术架构 + +| 层级 | 当前实现 | +|---|---| +| 前端 | Vue 2.7.16、Vue Router 3、Vuex 3、Ant Design Vue 1.5.2、Axios | +| 后端 | Java 11、Spring Boot 2.0.0.RELEASE、Maven | +| 持久层 | MyBatis-Plus 3.0.7.1、MyBatis XML Mapper | +| 数据库 | MySQL 8.0.33 驱动,默认数据库名 `jsh_erp` | +| 缓存 | Redis | +| 接口文档 | Springfox Swagger 2.7.0、Swagger Bootstrap UI | +| 部署 | SMT 本地机房私有化部署,可运行于 Windows 或 Linux | + +> 需求文档规划的 Vue 3 属于后续技术演进方向;当前仓库前端仍以 Vue 2.7.16 为准。后端编译版本以 `smtERP-boot/pom.xml` 中的 `11` 为准。 + +## 业务规划 + +### 第一阶段:核心业务闭环 + +1. 销售管理:客户、报价、TNB/二级市场订单、交货计划、发货、签收、销售对账。 +2. 采购管理:总部调拨申请与接收、本地包材采购、供应商、采购入库和对账。 +3. 生产管理:包装 BOM、包装工单、领料、生产报工、质检、完工入库和生产进度。 +4. 仓储管理:多仓库、入库、出库、批次、序列号、库存账、库存预警、盘点和库存规划。 +5. 审批与数据互通:接入钉钉国际版审批,并规划 SMT 与 Reallin 的业务数据同步。 + +### 第二阶段:内部信息化管理 + +将当前线下 Excel 管理内容逐步搬到线上,覆盖考勤、请假、培训、资产、费用及其他内部管理事项。 + +### 财务与合规重点 + +- 以人民币作为主要结算币种,同时支持本地采购使用 MYR(马来西亚林吉特)记录。 +- 财务年度为每年 3 月 1 日至次年 3 月 31 日。 +- 支持应收、应付、总账、费用、成本、发票和资产负债表/利润表等报表。 +- 财务核算遵循马来西亚当地业务要求,预留 MFRS、SST 及电子发票相关能力。 +- 发票录入需满足清关及货运文件齐全等前置条件,并支持跨期入账和电子发票提交时间窗口控制。 + +## 开发环境 + +- JDK 11 +- Maven 3.6+(以本机 Maven 版本为准) +- Node.js 及 npm/yarn +- MySQL 8.0+ +- Redis 6.x+ +- IntelliJ IDEA 或其他 Java IDE + +## 本地运行 + +### 1. 初始化数据库 + +创建 MySQL 数据库后,执行: + +```text +smtERP-boot/docs/jsh_erp.sql +``` + +后续升级脚本按版本和实际需求执行,数据库升级记录见 `smtERP-boot/docs/`。 + +### 2. 配置后端 + +编辑 `smtERP-boot/src/main/resources/application.yml`,至少确认以下配置: + +- MySQL 地址、数据库名、用户名和密码 +- Redis 地址、端口和密码 +- 文件上传目录及目录权限 +- 服务端口和上下文路径 + +请勿在生产环境直接使用仓库中的示例密码,并避免将真实密码提交到 Git。 + +### 3. 启动后端 + +```bash +cd smtERP-boot +mvn spring-boot:run +``` + +后端默认地址:`http://localhost:27210/jshERP-boot` + +### 4. 启动前端 + +```bash +cd smtERP-web +npm install +npm run serve +``` + +前端开发地址:`http://localhost:27200`。开发服务器会将 `/jshERP-boot` 请求代理到 `http://localhost:27210`。 + +### SMT 其他入库同步 + +外部平台可调用 `POST /jshERP-boot/smtInbound/sync`,请求头为 +`Content-Type: application/json`,请求体示例: + +```json +[ + { + "docNo": "SM2503070001", + "businessDate": "2025-03-07 00:00:00.000", + "materialCode": "C.4.T.0.00562", + "materialName": "MD-4GVIII(VB)", + "specification": "MD-4GVIII(VB)", + "qtyPriceAmount": 50, + "finallyPrice": "324", + "totalNetMoney": "14336.280000000", + "totalMoney": "16200.000000000", + "sourceDocNo": "SH2503070002" + } +] +``` + +接口按 `docNo` 去重:未审核单据会被整单覆盖,已审核单据会跳过,并在 +`auditedDocNos` 中返回冲突单号。Excel 导入使用同一规则。其他入库审核通过时, +系统以 `materialCode` 作为 ERP 条码创建或更新商品,并将库存写入“成品仓库”。 + +### 5. 构建 + +```bash +cd smtERP-web +npm run build + +cd ../smtERP-boot +mvn clean package +``` + +构建生成的 `target/`、`dist/`、压缩包、`node_modules/` 和运行日志不会纳入版本库。 + +## 部署说明 + +系统采用 SMT 本地机房部署模式,建议由 SMT 开发与 IT 人员共同负责部署和日常维护,总部系统信息部提供架构、集成和技术支持。 + +生产部署至少应完成: + +1. 准备 Java 11 运行环境、MySQL、Redis 和 Web 服务器/反向代理。 +2. 初始化数据库并按发布版本执行升级脚本。 +3. 使用生产数据库、Redis、文件目录和外部接口配置替换示例配置。 +4. 配置前端静态文件、后端服务、反向代理、备份和日志轮转。 +5. 上线前验证登录、权限、库存、单据、审批回调和数据同步链路。 + +## 组织与协作 + +SMT 当前组织包括财务部、市场部、技术部、生产部和行政部门,系统权限设计需结合部门、岗位、仓库和数据范围进行隔离。 + +- SMT 项目管理:Hafiz +- SMT 开发、需求收集和日常运维:Aziman +- SMT 机房、网络和部署支持:Haslim +- 总部架构、核心模块、钉钉国际版集成和技术支持:总部系统信息部 +- 需求提交渠道:Reallin 售后服务平台 + +## 版本与状态 + +当前仓库是 SMT-ERP 的开发基线,已包含现有进销存、财务、生产、报表、系统管理等基础代码。需求文档中的钉钉国际版审批、SMT 与 Reallin 数据互通、完整序列号追溯及第二阶段内部信息化能力,按项目迭代计划逐步建设。 + +需求依据:SMT(马来西亚)ERP 系统需求文档 v1.7(2026-08-21)。 + +## 许可证 + +本项目遵循 Apache License 2.0,详见 [LICENSE](LICENSE)。 diff --git a/smtERP-boot/.gitattributes b/smtERP-boot/.gitattributes new file mode 100644 index 0000000..91ef001 --- /dev/null +++ b/smtERP-boot/.gitattributes @@ -0,0 +1,4 @@ +*.js linguist-language=Java +*.css linguist-language=Java +*.html linguist-language=Java +*.sh text eol=lf \ No newline at end of file diff --git a/smtERP-boot/.gitignore b/smtERP-boot/.gitignore new file mode 100644 index 0000000..6fb8862 --- /dev/null +++ b/smtERP-boot/.gitignore @@ -0,0 +1,21 @@ +*.class + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +*.iml +# Package Files # +*.jar +*.war +*.ear +*.zip +*.log + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + +.idea +/target + +**/*.iml + diff --git a/smtERP-boot/docs/asset_management.md b/smtERP-boot/docs/asset_management.md new file mode 100644 index 0000000..3709856 --- /dev/null +++ b/smtERP-boot/docs/asset_management.md @@ -0,0 +1,88 @@ +# 资产管理模块 + +## 原 n2tpm 盘点接口兼容 + +当前服务保留自身 `/apis` 上下文,并提供原盘点协议的以下 POST 接口: + +- `/apis/n2tpm/webmvc/Inventory/Login` +- `/apis/n2tpm/webmvc/Inventory/GetInventory` +- `/apis/n2tpm/webmvc/Inventory/GetInventoryDetail` +- `/apis/n2tpm/webmvc/Inventory/SaveDeviceInventoryInfo` +- `/apis/n2tpm/webmvc/Inventory/AccepteOrHandoverDocForInventory` +- `/apis/n2tpm/webmvc/Inventory/UploadPicture` +- `/apis/n2tpm/webmvc/Inventory/GetDevice` + +接口请求字段、响应中的业务字段及 `code/msg/data` 包装与原项目一致。若外部设备必须继续访问 +`/n2tpm/webmvc/Inventory/**`,请在网关将该路径转发到本服务的 +`/apis/n2tpm/webmvc/Inventory/**`,无需修改前端和现有 `/apis` 接口。 + +## 部署 + +1. 执行 `src/main/resources/db/migration/V20260918__asset_management.sql`。 +2. 重启后端并重新登录前端,使动态菜单和角色权限重新加载。 +3. 管理员菜单中会出现“资产管理”,包含“资产台账”“设备台账”“资产盘点”。 + +## 盘点流程 + +盘点状态依次为:草稿(DRAFT)→ 盘点中(IN_PROGRESS)→ 待审核(PENDING_AUDIT)→ 已完成(COMPLETED)→ 已关结(CLOSED)。 + +创建盘点单时会把当前资产/设备台账固化为盘点快照。盘点支持按明细操作,也支持输入或扫描资产、设备编号定位明细。实盘数量和账面数量不一致时会自动判断盘盈或盘亏;部门、地点变化时会判断为异常,也可人工指定结果。 + +## 协同服务接口 + +推荐接口: + +```http +POST /apis/assetInventory/collaboration/create +Content-Type: application/json +``` + +```json +{ + "externalRequestId": "外部系统唯一请求号", + "planName": "月度设备盘点", + "scopeType": "DEVICE", + "deadline": "2026-09-30 18:00:00", + "remark": "由协同服务创建" +} +``` + +`externalRequestId` 是租户内幂等键,外部服务重试时会返回原盘点单,不会重复建单。接口沿用系统登录会话和租户隔离机制。 + +为兼容参考工程中的调用路径,同时保留: + +```http +POST /apis/tpmDouble/cteatePdTasks +``` + +该兼容接口固定以全部设备台账创建盘点任务,可选传入 `externalRequestId`、`planName`、`deadline` 和 `remark`。 + +### 外部服务回传单项盘点结果 + +推荐使用: + +```http +POST /apis/assetInventory/collaboration/record +Content-Type: application/json +``` + +为兼容原设备项目的调用路径,同时支持: + +```http +POST /apis/deviceInventory/doDevicePlan +Content-Type: application/json +``` + +按盘点单号和设备编码回传示例: + +```json +{ + "inventoryNo": "PD20260918131230171", + "deviceSn": "QC-SPI-01", + "remark": "外部采集服务确认设备在位" +} +``` + +也可以传 `inventoryId` 与 `detailId`,或者使用 `targetCode`、`deviceCode`、`assetCode` 作为对象编码。回传成功后,明细由“未盘点”更新为“已盘点”,主单自动进入“盘点中”并刷新已盘数量。重复回传同一明细按幂等成功处理,不会重复计数。若外部系统能够判断差异,可将 `inventoryStatus` 传为 `NORMAL`、`SURPLUS`、`SHORTAGE` 或 `ABNORMAL`。 + +接口沿用本系统认证与租户隔离,外部服务调用时需携带有效登录令牌或会话。 diff --git a/smtERP-boot/docs/create_customer_tables.sql b/smtERP-boot/docs/create_customer_tables.sql new file mode 100644 index 0000000..b4433ab --- /dev/null +++ b/smtERP-boot/docs/create_customer_tables.sql @@ -0,0 +1,45 @@ +-- 客户分类表 +CREATE TABLE IF NOT EXISTS `tbl_customer_category` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键', + `category_name` varchar(100) DEFAULT NULL COMMENT '分类名称', + `parent_id` bigint(20) DEFAULT 0 COMMENT '父分类ID,0表示顶级', + `level` int(11) DEFAULT 1 COMMENT '层级', + `sort` varchar(20) DEFAULT NULL COMMENT '排序', + `description` varchar(500) DEFAULT NULL COMMENT '描述', + `enabled` tinyint(1) DEFAULT 1 COMMENT '是否启用', + `creator` bigint(20) DEFAULT NULL COMMENT '创建人', + `tenant_id` bigint(20) DEFAULT NULL COMMENT '租户ID', + `delete_flag` varchar(1) DEFAULT '0' COMMENT '删除标记', + `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`), + KEY `idx_parent_id` (`parent_id`), + KEY `idx_tenant_id` (`tenant_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='客户分类表'; + +-- 客户联系人表 +CREATE TABLE IF NOT EXISTS `tbl_customer_contact` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键', + `customer_id` bigint(20) NOT NULL COMMENT '客户ID', + `contact_name` varchar(50) DEFAULT NULL COMMENT '联系人姓名', + `position` varchar(50) DEFAULT NULL COMMENT '岗位(采购、财务等)', + `phone` varchar(30) DEFAULT NULL COMMENT '手机号', + `telephone` varchar(30) DEFAULT NULL COMMENT '座机', + `email` varchar(100) DEFAULT NULL COMMENT '邮箱', + `wechat` varchar(50) DEFAULT NULL COMMENT '微信', + `qq` varchar(30) DEFAULT NULL COMMENT 'QQ', + `is_primary` tinyint(1) DEFAULT 0 COMMENT '是否主要联系人', + `remark` varchar(500) DEFAULT NULL COMMENT '备注', + `creator` bigint(20) DEFAULT NULL COMMENT '创建人', + `tenant_id` bigint(20) DEFAULT NULL COMMENT '租户ID', + `delete_flag` varchar(1) DEFAULT '0' COMMENT '删除标记', + `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`), + KEY `idx_customer_id` (`customer_id`), + KEY `idx_tenant_id` (`tenant_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='客户联系人表'; + +-- 给 tbl_supplier 添加分类字段 +ALTER TABLE `tbl_supplier` ADD COLUMN `category_id` bigint(20) DEFAULT NULL COMMENT '客户分类ID' AFTER `type`; +ALTER TABLE `tbl_supplier` ADD INDEX `idx_category_id` (`category_id`); diff --git a/smtERP-boot/docs/customer_category_contact.sql b/smtERP-boot/docs/customer_category_contact.sql new file mode 100644 index 0000000..8066bb2 --- /dev/null +++ b/smtERP-boot/docs/customer_category_contact.sql @@ -0,0 +1,60 @@ +-- 客户分类表 - 支持多级分类 +DROP TABLE IF EXISTS `jsh_customer_category`; +CREATE TABLE `jsh_customer_category` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键', + `category_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '分类名称', + `parent_id` bigint(20) DEFAULT 0 COMMENT '父级ID,0表示顶级分类', + `level` int(11) DEFAULT 1 COMMENT '层级,从1开始', + `sort` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '排序', + `description` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '描述', + `enabled` bit(1) DEFAULT b'1' COMMENT '启用状态', + `creator` bigint(20) DEFAULT NULL COMMENT '创建人', + `tenant_id` bigint(20) DEFAULT NULL COMMENT '租户ID', + `delete_flag` varchar(1) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT '0' COMMENT '删除标记,0未删除,1删除', + `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE, + INDEX `idx_parent_id`(`parent_id`) USING BTREE, + INDEX `idx_tenant_id`(`tenant_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 DEFAULT CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '客户分类表' ROW_FORMAT = Dynamic; + +-- 客户联系人表 - 支持多个联系人 +DROP TABLE IF EXISTS `jsh_customer_contact`; +CREATE TABLE `jsh_customer_contact` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键', + `customer_id` bigint(20) NOT NULL COMMENT '客户ID', + `contact_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '联系人姓名', + `position` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '岗位/职位', + `phone` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '手机号码', + `telephone` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '联系电话', + `email` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '电子邮箱', + `wechat` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '微信号', + `qq` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT 'QQ号', + `is_primary` bit(1) DEFAULT b'0' COMMENT '是否主要联系人,0否,1是', + `remark` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '备注', + `creator` bigint(20) DEFAULT NULL COMMENT '创建人', + `tenant_id` bigint(20) DEFAULT NULL COMMENT '租户ID', + `delete_flag` varchar(1) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT '0' COMMENT '删除标记,0未删除,1删除', + `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE, + INDEX `idx_customer_id`(`customer_id`) USING BTREE, + INDEX `idx_tenant_id`(`tenant_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 DEFAULT CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '客户联系人表' ROW_FORMAT = Dynamic; + +-- 为供应商表(jsh_supplier)添加分类ID字段 +ALTER TABLE `jsh_supplier` ADD COLUMN `category_id` bigint(20) DEFAULT NULL COMMENT '客户分类ID' AFTER `type`; +ALTER TABLE `jsh_supplier` ADD INDEX `idx_category_id`(`category_id`) USING BTREE; + +-- 插入示例数据:客户分类 +INSERT INTO `jsh_customer_category` VALUES +(1, '企业客户', 0, 1, '1', '大型企业、中小企业等', b'1', 63, 63, '0', NOW(), NOW()), +(2, '个人客户', 0, 1, '2', '个人消费者', b'1', 63, 63, '0', NOW(), NOW()), +(3, '政府机构', 0, 1, '3', '政府部门、事业单位', b'1', 63, 63, '0', NOW(), NOW()), +(4, '大型企业', 1, 2, '1', '大型企业客户', b'1', 63, 63, '0', NOW(), NOW()), +(5, '中小企业', 1, 2, '2', '中小型企业客户', b'1', 63, 63, '0', NOW(), NOW()); + +-- 插入示例数据:客户联系人(假设客户ID为58的客户1) +INSERT INTO `jsh_customer_contact` VALUES +(1, 58, '张三', '采购经理', '13800138001', '', 'zhangsan@example.com', '', '', b'1', '主要负责采购事务', 63, 63, '0', NOW(), NOW()), +(2, 58, '李四', '财务主管', '13800138002', '', 'lisi@example.com', '', '', b'0', '负责财务结算', 63, 63, '0', NOW(), NOW()); diff --git a/smtERP-boot/docs/security-review-remediation-20261012.md b/smtERP-boot/docs/security-review-remediation-20261012.md new file mode 100644 index 0000000..32eb6ee --- /dev/null +++ b/smtERP-boot/docs/security-review-remediation-20261012.md @@ -0,0 +1,89 @@ +# 2026-10-12 代码审查修复及上线说明 + +本次以不改变正常业务计算、单据状态流转和原有数据为原则。认证变化已获调用方同步调整的确认。没有连接生产数据库、轮换真实凭据或发布服务。 + +## 审查项处理结果 + +| 审查项 | 本次处理 | 兼容性与剩余事项 | +| --- | --- | --- | +| C1 明文凭据 | application.yml 的数据库用户名、数据库密码、Redis 密码改为外部注入;生成器配置移除默认用户名及密码 | 部署前配置环境变量;已泄露的真实口令仍须由部署人员轮换,Git 历史中的旧值没有清除 | +| C2 LIKE 注入 | 4 个 Mapper、14 处表达式改为 `concat('%', #{参数}, '%')` | 保留模糊搜索、中文、单引号和 `%` / `_` 通配符语义,不对合法搜索词做截断或删字符 | +| C3 匿名同步 | 两个 sync 接口仅接受独立 API Key 或已有 ERP 登录会话 | 外部调用方必须增加请求头,未配置密钥不允许匿名通过 | +| C3 旧盘点 | Login 返回独立短期 token;盘点业务接口要求认证;校验 USER_ID 和当前身份、盘点单所属盘点人;沿用登录失败限流 | 保留原大写字段和响应包装,增加 TOKEN 字段;禁止伪造他人身份与跨盘点人操作 | +| C3 白名单 | 移除匿名 tenantClean;白名单前缀加路径边界;同步路径精确匹配 | 静态 Excel 模板仅精确 GET 公开,保留原 `` / `window.open` 下载;模板不含业务数据 | +| C4 eval | WebSocket 使用 JSON.parse;菜单占位符使用显式映射 | 非 JSON 消息会被忽略;未知菜单表达式原样保留且不执行,见下文支持列表 | +| H1 MD5/弱默认密码 | 完成入口核对及迁移设计,尚未改动存储与登录协议 | 现有库 password 为 varchar(50),不能直接存 BCrypt;详见迁移步骤。此风险尚未关闭 | +| H2 排序/Example | 保留已存在的 4 处字段及方向白名单,新增真实 MyBatis BoundSql 回归;分页排序加强为字段/方向语法校验 | Example 条件由内部方法构造,未发现 Controller 接收外部 Example;不机械替换生成器 `${criterion.condition}` | +| H3 公告 XSS | 使用 DOMPurify 3.4.16 在展示时净化 HTML | 保留普通 HTML 排版;历史记录不改写;后端存储端的富文本策略需覆盖其他消费者后再实施 | +| H4 老依赖 | JDBC 关闭 allowMultiQueries;新增 DOMPurify;修复 Java 11 测试工具兼容 | Mapper 静态检查未发现分号批量语句;Spring Boot、axios、jQuery、fastjson 大版本升级仍需专项回归,未宣称已消除所有依赖漏洞 | +| H5 会话/插件 | Redis 会话有效期支持配置,默认沿用原 259200 秒 | 报告中的 servlet 36000 秒不是实际 ERP token 有效期;插件安装原本就校验管理员,不是普通登录用户可安装 | +| M1 异常 | HTTP 关闭失败记录日志、保留 POST 异常原因;日期格式试探仅捕获 ParseException;盘点内部错误记录日志而不向客户端暴露堆栈 | 日期格式依次尝试是合理流程,全部失败仍按原逻辑抛出业务错误;不改日期解析宽松程度 | +| M2 API 权限 | 补齐本次同步与盘点入口及盘点身份/数据归属校验 | 全系统按钮权限到 API 权限的映射尚未实施,需要单独梳理角色、租户、共享数据和插件接口 | +| M3 测试 | 新增认证、盘点权限、SQL、前端 XSS/eval 回归;移除 Maven 跳过测试编译配置;升级测试插件和测试 mock 工具以支持 Java 11 | 不使用真实数据库和 Redis,不等同于完整业务验收 | +| L1/L2 | printStackTrace 改结构化日志;保持局部 SimpleDateFormat | 局部实例无共享线程安全问题;替换日期 API 可能改变宽松解析、时区等行为,本次不做无必要重构 | + +## 部署前配置 + +使用服务管理器、容器配置或配置中心注入: + +| 变量 | 用途 | 默认 | +| --- | --- | --- | +| DB_USERNAME | 数据库账号 | 无,必填 | +| DB_PASSWORD | 数据库密码 | 无,必填 | +| REDIS_PASSWORD | Redis 密码 | 无,必填;无密码的 Redis 显式配置为空 | +| SYNC_API_KEY | 外部入库同步专用密钥 | 空;空值时仅 ERP 会话可以调用 sync | +| INVENTORY_TOKEN_TTL_SECONDS | 旧盘点 token 绝对有效期 | 3600 秒;最低 60 秒 | +| ERP_SESSION_TIMEOUT_SECONDS | ERP Redis 会话滑动有效期 | 259200 秒,与原值一致;最低 60 秒 | + +也可继续通过外部 Spring 配置覆盖 `spring.datasource.*` / `spring.redis.*`。不要把真实凭据重新写入仓库。MyBatis Generator 的 `${DB_USERNAME}` / `${DB_PASSWORD}` 是 Java 系统属性替换,运行生成器时需由本地构建配置提供这两个系统属性,不能假定它会自动读取同名环境变量。 + +生产数据库/Redis 凭据轮换应与服务配置更新一起安排,确认连接成功后撤销旧凭据;本次没有自行操作线上账号。同步请求和登录请求须经 HTTPS 或受保护的内部连接,不能在访问日志中记录认证头。 + +## 同步调用方改造 + +两个地址保持不变: + +- `POST /apis/smtInbound/sync` +- `POST /apis/headquartersInbound/sync` + +请求体和成功返回结构不变,增加 `X-Sync-Api-Key: `。密钥仅允许上述两个 POST 接口,不赋予其他接口权限。已有 `X-Access-Token` ERP 会话仍可调用。未提供认证、密钥错误或密钥未配置时返回 HTTP 401。 + +静态下载 `/apis/smtInbound/template`、`/apis/headquartersInbound/template` 保持匿名 GET;其他方法以及名称相似的路径不放行。`tenantClean` 现在必须登录,相关插件调用方需要携带原 ERP 会话头。 + +## 旧盘点客户端改造 + +1. 原样 POST `/apis/n2tpm/webmvc/Inventory/Login` 或 `/apis/webmvc/Inventory/Login`,继续传 USER_NAME、PASSWORD。没有 context path 的部署同样支持这两个路径。 +2. 成功响应仍是 `{code, msg, data}`;`data.RESULT`、`data.USER_ID`、`data.DATA_AUTH` 保留,新增 `data.TOKEN`。 +3. 后续所有查询、保存、接单、上传请求增加 `X-Inventory-Token: `。HTTP 401 时重新登录,不能只凭 USER_ID 重试。 +4. USER_ID 必须是当前登录用户;盘点单必须分配给该用户;批量 DATA 中每条操作都校验。管理员如需代盘,应先通过原 ERP 分配流程调整盘点人,不能伪造 USER_ID。 +5. token 使用独立 Redis 命名空间并绝对过期,读取不会续期,不能当作 ERP 的 X-Access-Token 使用。也支持使用已有 ERP 会话调用盘点接口;同时提供两个头时优先验证盘点 token,避免身份混淆。 +6. 用户被停用/删除后,即使 token 未到期,业务服务也会拒绝操作。错误密码沿用现有 ERP 的账号限流策略。 + +## 菜单 URL 兼容范围 + +支持 `{{ window._CONFIG.domianURL }}`、其单/双引号方括号形式,以及 `window.location.origin`、`window.location.host`、`window.location.protocol`。普通菜单 URL 不变。其他自定义表达式不执行,需在核实数据库菜单配置后将确实需要的非敏感值增加到 `menuUrl.js` 的显式映射。 + +公告展示依赖 [DOMPurify 官方发行版](https://github.com/cure53/DOMPurify/releases/tag/3.4.16)。当前使用 HTML profile,SVG/MathML/脚本等内容不保留。现有项目忽略 package-lock.json,本次遵循仓库规则,新增依赖在 package.json 中固定版本。 + +## H1:口令迁移实施顺序(尚未执行) + +1. 先在预发布验证并扩展 password 至至少 varchar(100),增加算法标识或采用带算法前缀的存储格式;增加 must_change_password 标记。备份用户表,禁止批量覆盖旧口令。 +2. 当前网页在登录、注册、改密时发送 MD5,旧盘点发送明文后由服务端转 MD5,微信绑定也用 SQL 等值比较密码。必须把验证集中到同一密码服务,覆盖所有入口和密码写入路径,不能只改 insertUser。 +3. 过渡期可在服务端对旧协议的 MD5 凭据做 BCrypt,并在成功验证旧记录时有条件升级存储;明确这只改善数据库泄露风险,网络中的 MD5 仍是可重放凭据,必须配合 HTTPS。不得把 BCrypt 值写回仍按 MD5 等值比较的旧程序。 +4. 新协议传原始密码并由服务端 BCrypt/Argon2 校验;使用明确协议版本区分,不根据密码是否“看起来像 MD5”猜测。提供兼容期,统计旧客户端后再停用旧协议。 +5. 新建/重置用户使用单次临时随机密码或管理员指定强密码,返回一次并强制首次改密。先补管理界面的交付流程,避免用户创建成功却无法得知初始密码。旧弱口令账号的会话限制和强制改密需要前后端一起实现。 +6. 回归:旧账号、新账号、改密、重置、停用、限流、默认密码提醒、注册、微信绑定/登录、旧盘点,以及并发登录时的条件升级。升级后回滚代码必须继续能验证新哈希,不能直接回滚到只支持 MD5 的旧包。 + +## H4/M2 后续专项范围(尚未执行) + +- 框架升级先验证插件框架 2.2.1、MyBatis 扩展、Redis、Swagger 与目标 Spring/JDK 的兼容矩阵,再选择受支持目标版本,不在这次安全补丁中跨代替换依赖。 +- axios/jQuery 升级需要覆盖拦截器、错误对象、上传下载、请求取消,以及打印、图片预览等依赖插件;fastjson 迁移需要验证实体绑定、日期/数值和插件序列化。 +- API 权限按现有菜单/按钮建立“HTTP 方法 + 路由 + 操作权限”映射,再覆盖管理员、普通用户、租户和插件接口的正反用例;不要直接把前端菜单可见性当成完整数据授权。 + +## 验证方式及边界 + +本地验证:后端 23 个测试通过;前端 3 组安全回归通过;生产构建成功退出。前端构建仍提示资源体积超限及 sass-loader 缺失,这些警告未在本次安全修复中处理。修改文件通过 UTF-8、BOM/替换字符和 `git diff --check` 检查。 + +后端运行 `mvn -B test`;前端运行 `npm run test:security` 和 `npm run build`。后端测试使用真实 MyBatis XML 生成 SQL,验证 14 个 LIKE 参数不进入 SQL 文本、正常排序继续生效、注入排序不生效;认证与盘点用例使用 mock,不连接外部服务。 + +上线前仍需在预发布环境完成:正常 ERP 登录、入库同步、新/旧盘点登录、本人盘点单接收和保存、图片上传、查询排序、模板下载、公告展示、插件管理员操作。自测通过不能保证所有业务完全无影响,尤其是外部客户端与数据库中的自定义菜单配置。 diff --git a/smtERP-boot/docs/smt-erp-init-data.sql b/smtERP-boot/docs/smt-erp-init-data.sql new file mode 100644 index 0000000..cf1d541 --- /dev/null +++ b/smtERP-boot/docs/smt-erp-init-data.sql @@ -0,0 +1,6145 @@ +/* + Navicat Premium Data Transfer + + Source Server : 47.250.186.240 + Source Server Type : MySQL + Source Server Version : 80039 + Source Host : 47.250.186.240:3306 + Source Schema : app072 + + Target Server Type : MySQL + Target Server Version : 80039 + File Encoding : 65001 + + Date: 13/10/2026 15:44:53 +*/ + +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; + +-- ---------------------------- +-- Table structure for tbl_account +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_account`; +CREATE TABLE `tbl_account` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `name` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '名称', + `serial_no` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '编号', + `initial_amount` decimal(24, 6) NULL DEFAULT NULL COMMENT '期初金额', + `current_amount` decimal(24, 6) NULL DEFAULT NULL COMMENT '当前余额', + `remark` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '备注', + `enabled` bit(1) NULL DEFAULT NULL COMMENT '启用', + `sort` varchar(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '排序', + `is_default` bit(1) NULL DEFAULT NULL COMMENT '是否默认', + `tenant_id` bigint NULL DEFAULT NULL COMMENT '租户id', + `delete_flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '删除标记,0未删除,1删除', + PRIMARY KEY (`id`) USING BTREE, + INDEX `tenant_id`(`tenant_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 20 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '账户信息' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_account +-- ---------------------------- +INSERT INTO `tbl_account` VALUES (17, '瑞银账户1', 'zzz111', 100.000000, 2187859.266400, 'aabb', b'1', NULL, b'1', 63, '0'); +INSERT INTO `tbl_account` VALUES (18, 'SMT账户', '1234131324', 200.000000, 200.000000, 'bbbb', b'1', NULL, b'0', 63, '0'); +INSERT INTO `tbl_account` VALUES (19, '测试账户_UPD', NULL, 0.000000, 0.000000, NULL, b'1', NULL, b'0', NULL, '1'); + +-- ---------------------------- +-- Table structure for tbl_account_head +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_account_head`; +CREATE TABLE `tbl_account_head` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `type` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '类型(支出/收入/收款/付款/转账)', + `organ_id` bigint NULL DEFAULT NULL COMMENT '单位Id(收款/付款单位)', + `hands_person_id` bigint NULL DEFAULT NULL COMMENT '经手人id', + `creator` bigint NULL DEFAULT NULL COMMENT '操作员', + `change_amount` decimal(24, 6) NULL DEFAULT NULL COMMENT '变动金额(优惠/收款/付款/实付)', + `discount_money` decimal(24, 6) NULL DEFAULT NULL COMMENT '优惠金额', + `total_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '合计金额', + `account_id` bigint NULL DEFAULT NULL COMMENT '账户(收款/付款)', + `bill_no` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '单据编号', + `bill_time` datetime(0) NULL DEFAULT NULL COMMENT '单据日期', + `remark` varchar(1000) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '备注', + `file_name` varchar(500) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '附件名称', + `status` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '状态,0未审核、1已审核、9审核中', + `source` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '单据来源,0-pc,1-手机', + `tenant_id` bigint NULL DEFAULT NULL COMMENT '租户id', + `delete_flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '删除标记,0未删除,1删除', + PRIMARY KEY (`id`) USING BTREE, + INDEX `FK9F4C0D8DB610FC06`(`organ_id`) USING BTREE, + INDEX `FK9F4C0D8DAAE50527`(`account_id`) USING BTREE, + INDEX `FK9F4C0D8DC4170B37`(`hands_person_id`) USING BTREE, + INDEX `bill_no`(`bill_no`) USING BTREE, + INDEX `tenant_id`(`tenant_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 106 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '财务主表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_account_head +-- ---------------------------- +INSERT INTO `tbl_account_head` VALUES (56, '付款', 89, 43, 63, -490440.555000, 0.000000, -490440.555000, 17, 'FK-PV-7297-1PH-WS79-11', '2025-07-11 00:00:00', 'Stock Status供应商付款;PV:PV 7297', '', '1', '0', 63, '0'); +INSERT INTO `tbl_account_head` VALUES (57, '收款', 90, 43, 63, 80850.000000, 0.000000, 80850.000000, 17, 'SK-INV_1707-11', '2025-07-09 00:00:00', 'Stock Status客户收款;发票:INV_1707', '', '1', '0', 63, '0'); +INSERT INTO `tbl_account_head` VALUES (58, '付款', 89, 43, 63, -143957.088000, 0.000000, -143957.088000, 17, 'FK-PV-007319-1PH-WS79-15', '2025-07-23 00:00:00', 'Stock Status供应商付款;PV:PV 007319', '', '1', '0', 63, '0'); +INSERT INTO `tbl_account_head` VALUES (59, '收款', 90, 43, 63, 242550.000000, 0.000000, 242550.000000, 17, 'SK-INV_1713-15', '2025-07-15 00:00:00', 'Stock Status客户收款;发票:INV_1713', '', '1', '0', 63, '0'); +INSERT INTO `tbl_account_head` VALUES (60, '付款', 89, 43, 63, -143259.435000, 0.000000, -143259.435000, 17, 'FK-PV-007377-1PH-WS79-16', '2025-08-15 00:00:00', 'Stock Status供应商付款;PV:PV 007377', '', '1', '0', 63, '0'); +INSERT INTO `tbl_account_head` VALUES (61, '收款', 90, 43, 63, 242550.000000, 0.000000, 242550.000000, 17, 'SK-INV_1744-16', '2025-08-06 00:00:00', 'Stock Status客户收款;发票:INV_1744', '', '1', '0', 63, '0'); +INSERT INTO `tbl_account_head` VALUES (62, '付款', 89, 43, 63, -95971.392000, 0.000000, -95971.392000, 17, 'FK-PV-007319-1PH-WS79-17', '2025-07-23 00:00:00', 'Stock Status供应商付款;PV:PV 007319', '', '1', '0', 63, '0'); +INSERT INTO `tbl_account_head` VALUES (63, '收款', 90, 43, 63, 242550.000000, 0.000000, 242550.000000, 17, 'SK-INV_1715-17', '2025-07-15 00:00:00', 'Stock Status客户收款;发票:INV_1715', '', '1', '0', 63, '0'); +INSERT INTO `tbl_account_head` VALUES (64, '付款', 89, 43, 63, -48250.323000, 0.000000, -48250.323000, 17, 'FK-PV-007340-1PH-WS79-18', '2025-08-01 00:00:00', 'Stock Status供应商付款;PV:PV 007340', '', '1', '0', 63, '0'); +INSERT INTO `tbl_account_head` VALUES (65, '收款', 90, 43, 63, 242550.000000, 0.000000, 242550.000000, 17, 'SK-INV_1716-19', '2025-01-20 00:00:00', 'Stock Status客户收款;发票:INV_1716', '', '1', '0', 63, '0'); +INSERT INTO `tbl_account_head` VALUES (66, '付款', 89, 43, 63, -239928.480000, 0.000000, -239928.480000, 17, 'FK-PV-007319-1PH-WS79-20', '2025-07-23 00:00:00', 'Stock Status供应商付款;PV:PV 007319', '', '1', '0', 63, '0'); +INSERT INTO `tbl_account_head` VALUES (67, '收款', 90, 43, 63, 242550.000000, 0.000000, 242550.000000, 17, 'SK-INV_1717-22', '2025-06-15 00:00:00', 'Stock Status客户收款;发票:INV_1717', '', '1', '0', 63, '0'); +INSERT INTO `tbl_account_head` VALUES (68, '付款', 89, 43, 63, -144750.969000, 0.000000, -144750.969000, 17, 'FK-PV-007340-1PH-WS79-23', '2025-08-01 00:00:00', 'Stock Status供应商付款;PV:PV 007340', '', '1', '0', 63, '0'); +INSERT INTO `tbl_account_head` VALUES (69, '收款', 90, 43, 63, 242550.000000, 0.000000, 242550.000000, 17, 'SK-INV_1727-23', '2025-07-31 00:00:00', 'Stock Status客户收款;发票:INV_1727', '', '1', '0', 63, '0'); +INSERT INTO `tbl_account_head` VALUES (70, '付款', 89, 43, 63, -95506.290000, 0.000000, -95506.290000, 17, 'FK-PV-007377-1PH-WS79-24', '2025-08-15 00:00:00', 'Stock Status供应商付款;PV:PV 007377', '', '1', '0', 63, '0'); +INSERT INTO `tbl_account_head` VALUES (71, '收款', 90, 43, 63, 161700.000000, 0.000000, 161700.000000, 17, 'SK-INV_1729-24', '2025-08-06 00:00:00', 'Stock Status客户收款;发票:INV_1729', '', '1', '0', 63, '0'); +INSERT INTO `tbl_account_head` VALUES (72, '付款', 89, 43, 63, -979098.274000, 0.000000, -979098.274000, 17, 'FK-PV-007341-1PH-WS79-25', '2025-08-01 00:00:00', 'Stock Status供应商付款;PV:PV 007341', '', '1', '0', 63, '0'); +INSERT INTO `tbl_account_head` VALUES (73, '收款', 90, 43, 63, 80850.000000, 0.000000, 80850.000000, 17, 'SK-INV_1728-25', '2025-07-31 00:00:00', 'Stock Status客户收款;发票:INV_1728', '', '1', '0', 63, '0'); +INSERT INTO `tbl_account_head` VALUES (74, '付款', 89, 43, 63, -729142.389000, 0.000000, -729142.389000, 17, 'FK-PV-007429-1PH-WS79-34', '2025-09-03 00:00:00', 'Stock Status供应商付款;PV:PV 007429', '', '1', '0', 63, '0'); +INSERT INTO `tbl_account_head` VALUES (75, '收款', 90, 43, 63, 242550.000000, 0.000000, 242550.000000, 17, 'SK-INV_1753-34', '2025-08-22 00:00:00', 'Stock Status客户收款;发票:INV_1753', '', '1', '0', 63, '0'); +INSERT INTO `tbl_account_head` VALUES (76, '付款', 89, 43, 63, -1809291.901600, 0.000000, -1809291.901600, 17, 'FK-PV-007450-1PH-WS79-40', '2025-09-19 00:00:00', 'Stock Status供应商付款;PV:PV 007450', '', '1', '0', 63, '0'); +INSERT INTO `tbl_account_head` VALUES (77, '收款', 90, 43, 63, 242550.000000, 0.000000, 242550.000000, 17, 'SK-INV_1772-40', '2025-09-08 00:00:00', 'Stock Status客户收款;发票:INV_1772', '', '1', '0', 63, '0'); +INSERT INTO `tbl_account_head` VALUES (78, '收款', 90, 43, 63, 242550.000000, 0.000000, 242550.000000, 17, 'SK-INV_1786-50', '2025-09-12 00:00:00', 'Stock Status客户收款;发票:INV_1786', '', '1', '0', 63, '0'); +INSERT INTO `tbl_account_head` VALUES (79, '付款', 89, 43, 63, -514105.959600, 0.000000, -514105.959600, 17, 'FK-PV-007510-1PH-WS79-55', '2025-10-15 00:00:00', 'Stock Status供应商付款;PV:PV 007510', '', '1', '0', 63, '0'); +INSERT INTO `tbl_account_head` VALUES (80, '收款', 90, 43, 63, 242550.000000, 0.000000, 242550.000000, 17, 'SK-INV_1819-55', '2025-10-09 00:00:00', 'Stock Status客户收款;发票:INV_1819', '', '1', '0', 63, '0'); +INSERT INTO `tbl_account_head` VALUES (81, '付款', 89, 43, 63, -1159571.700000, 0.000000, -1159571.700000, 17, 'FK-PV-007339-3PH-APEC3-WC-11', '2025-08-01 00:00:00', 'Stock Status供应商付款;PV:PV 007339', '', '1', '0', 63, '0'); +INSERT INTO `tbl_account_head` VALUES (82, '收款', 90, 43, 63, 374000.000000, 0.000000, 374000.000000, 17, 'SK-INV_1720-11', '2025-07-24 00:00:00', 'Stock Status客户收款;发票:INV_1720', '', '1', '0', 63, '0'); +INSERT INTO `tbl_account_head` VALUES (83, '收款', 90, 43, 63, 748000.000000, 0.000000, 748000.000000, 17, 'SK-INV_1723-13', '2025-01-14 00:00:00', 'Stock Status客户收款;发票:INV_1723', '', '1', '0', 63, '0'); +INSERT INTO `tbl_account_head` VALUES (84, '付款', 89, 43, 63, -1722296.520000, 0.000000, -1722296.520000, 17, 'FK-PV-007376-3PH-APEC3-WC-17', '2025-08-15 00:00:00', 'Stock Status供应商付款;PV:PV 007376', '', '1', '0', 63, '0'); +INSERT INTO `tbl_account_head` VALUES (85, '收款', 90, 43, 63, 1122000.000000, 0.000000, 1122000.000000, 17, 'SK-INV_1745-17', '2025-08-08 00:00:00', 'Stock Status客户收款;发票:INV_1745', '', '1', '0', 63, '0'); +INSERT INTO `tbl_account_head` VALUES (86, '收款', 90, 43, 63, 1122000.000000, 0.000000, 1122000.000000, 17, 'SK-INV_1748-20', '2025-08-08 00:00:00', 'Stock Status客户收款;发票:INV_1748', '', '1', '0', 63, '0'); +INSERT INTO `tbl_account_head` VALUES (87, '付款', 89, 43, 63, -867076.245000, 0.000000, -867076.245000, 17, 'FK-PV-007449-3PH-APEC3-WC-24', '2025-09-19 00:00:00', 'Stock Status供应商付款;PV:PV 007449', '', '1', '0', 63, '0'); +INSERT INTO `tbl_account_head` VALUES (88, '收款', 90, 43, 63, 374000.000000, 0.000000, 374000.000000, 17, 'SK-INV_1784-24', '2025-09-12 00:00:00', 'Stock Status客户收款;发票:INV_1784', '', '1', '0', 63, '0'); +INSERT INTO `tbl_account_head` VALUES (89, '付款', 89, 43, 63, -1503934.614000, 0.000000, -1503934.614000, 17, 'FK-PV-007473-3PH-APEC3-WC-27', '2025-09-26 00:00:00', 'Stock Status供应商付款;PV:PV 007473', '', '1', '0', 63, '0'); +INSERT INTO `tbl_account_head` VALUES (90, '收款', 90, 43, 63, 1122000.000000, 0.000000, 1122000.000000, 17, 'SK-INV_1796-27', '2025-09-17 00:00:00', 'Stock Status客户收款;发票:INV_1796', '', '1', '0', 63, '0'); +INSERT INTO `tbl_account_head` VALUES (91, '收款', 90, 43, 63, 822800.000000, 0.000000, 822800.000000, 17, 'SK-INV_1805-31', '2025-09-22 00:00:00', 'Stock Status客户收款;发票:INV_1805', '', '1', '0', 63, '0'); +INSERT INTO `tbl_account_head` VALUES (92, '付款', 89, 43, 63, -236946.640000, 0.000000, -236946.640000, 17, 'FK-PV-008186-87-1PH-WS79-ADD1-11', '2026-08-14 00:00:00', 'Stock Status供应商付款;PV:PV 008186/87', '', '1', '0', 63, '0'); +INSERT INTO `tbl_account_head` VALUES (93, '收款', 90, 43, 63, 242550.000000, 0.000000, 242550.000000, 17, 'SK-INV_2111-11', '2026-07-27 00:00:00', 'Stock Status客户收款;发票:INV_2111', '', '1', '0', 63, '0'); +INSERT INTO `tbl_account_head` VALUES (94, '收款', 90, 43, 63, 161700.000000, 0.000000, 161700.000000, 17, 'SK-INV_2113-15', '2026-07-28 00:00:00', 'Stock Status客户收款;发票:INV_2113', '', '1', '0', 63, '0'); +INSERT INTO `tbl_account_head` VALUES (95, '收款', 90, 43, 63, 161700.000000, 0.000000, 161700.000000, 17, 'SK-INV_2122-26', '2026-07-31 00:00:00', 'Stock Status客户收款;发票:INV_2122', '', '1', '0', 63, '0'); +INSERT INTO `tbl_account_head` VALUES (96, '收款', 90, 43, 63, 242550.000000, 0.000000, 242550.000000, 17, 'SK-INV_2130-44', '2026-08-07 00:00:00', 'Stock Status客户收款;发票:INV_2130', '', '1', '0', 63, '0'); +INSERT INTO `tbl_account_head` VALUES (97, '收款', 90, 43, 63, 80850.000000, 0.000000, 80850.000000, 17, 'SK-INV_2131-47', '2026-07-13 00:00:00', 'Stock Status客户收款;发票:INV_2131', '', '1', '0', 63, '0'); +INSERT INTO `tbl_account_head` VALUES (98, '收款', 90, 43, 63, 80850.000000, 0.000000, 80850.000000, 17, 'SK-INV_2133-65', '2026-08-14 00:00:00', 'Stock Status客户收款;发票:INV_2133', '', '1', '0', 63, '0'); +INSERT INTO `tbl_account_head` VALUES (99, '收款', 90, 43, 63, 1122000.000000, 0.000000, 1122000.000000, 17, 'SK-INV_2129-11', '2026-08-13 00:00:00', 'Stock Status客户收款;发票:INV_2129', '', '1', '0', 63, '0'); +INSERT INTO `tbl_account_head` VALUES (100, '付款', 89, 43, 63, -954860.058400, 0.000000, -954860.058400, 17, 'FK-PV-008145-45---ZHEJIANG-METRONIX-3PH-APEC3-WC-O', '2026-08-03 00:00:00', 'Stock Status供应商付款;PV:PV 008145/45 - ZHEJIANG & METRONIX', '', '1', '0', 63, '0'); +INSERT INTO `tbl_account_head` VALUES (101, '收款', 90, 43, 63, 1122000.000000, 0.000000, 1122000.000000, 17, 'SK-INV_2102-11', '2026-06-30 00:00:00', 'Stock Status客户收款;发票:INV_2102', '', '1', '0', 63, '0'); +INSERT INTO `tbl_account_head` VALUES (102, '收款', 90, 43, 63, 1122000.000000, 0.000000, 1122000.000000, 17, 'SK-INV_2107-14', '2026-07-06 00:00:00', 'Stock Status客户收款;发票:INV_2107', '', '1', '0', 63, '0'); +INSERT INTO `tbl_account_head` VALUES (103, '收款', 90, 43, 63, 1122000.000000, 0.000000, 1122000.000000, 17, 'SK-INV_2108-18', '2026-07-16 00:00:00', 'Stock Status客户收款;发票:INV_2108', '', '1', '0', 63, '0'); +INSERT INTO `tbl_account_head` VALUES (104, '付款', 89, 43, 63, -947751.900000, 0.000000, -947751.900000, 17, 'FK-PV-008186-87-3PH-APEC3-WC-OV-25', '2026-08-14 00:00:00', 'Stock Status供应商付款;PV:PV 008186/87', '', '1', '0', 63, '0'); +INSERT INTO `tbl_account_head` VALUES (105, '收款', 90, 43, 63, 1122000.000000, 0.000000, 1122000.000000, 17, 'SK-INV_2110-25', '2026-07-24 00:00:00', 'Stock Status客户收款;发票:INV_2110', '', '1', '0', 63, '0'); + +-- ---------------------------- +-- Table structure for tbl_account_item +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_account_item`; +CREATE TABLE `tbl_account_item` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `header_id` bigint NOT NULL COMMENT '表头Id', + `account_id` bigint NULL DEFAULT NULL COMMENT '账户Id', + `in_out_item_id` bigint NULL DEFAULT NULL COMMENT '收支项目Id', + `bill_id` bigint NULL DEFAULT NULL COMMENT '单据id', + `need_debt` decimal(24, 6) NULL DEFAULT NULL COMMENT '应收欠款', + `finish_debt` decimal(24, 6) NULL DEFAULT NULL COMMENT '已收欠款', + `each_amount` decimal(24, 6) NULL DEFAULT NULL COMMENT '单项金额', + `remark` varchar(500) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '单据备注', + `tenant_id` bigint NULL DEFAULT NULL COMMENT '租户id', + `delete_flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '删除标记,0未删除,1删除', + PRIMARY KEY (`id`) USING BTREE, + INDEX `FK9F4CBAC0AAE50527`(`account_id`) USING BTREE, + INDEX `FK9F4CBAC0C5FE6007`(`header_id`) USING BTREE, + INDEX `FK9F4CBAC0D203EDC5`(`in_out_item_id`) USING BTREE, + INDEX `bill_id`(`bill_id`) USING BTREE, + INDEX `tenant_id`(`tenant_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 106 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '财务子表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_account_item +-- ---------------------------- +INSERT INTO `tbl_account_item` VALUES (56, 56, 17, NULL, 1452, 490440.555000, 0.000000, -490440.555000, 'Stock Status供应商付款;PV:PV 7297', 63, '0'); +INSERT INTO `tbl_account_item` VALUES (57, 57, 17, NULL, 1453, 80850.000000, 0.000000, 80850.000000, 'Stock Status客户收款;发票:INV_1707', 63, '0'); +INSERT INTO `tbl_account_item` VALUES (58, 58, 17, NULL, 1457, 143957.088000, 0.000000, -143957.088000, 'Stock Status供应商付款;PV:PV 007319', 63, '0'); +INSERT INTO `tbl_account_item` VALUES (59, 59, 17, NULL, 1458, 242550.000000, 0.000000, 242550.000000, 'Stock Status客户收款;发票:INV_1713', 63, '0'); +INSERT INTO `tbl_account_item` VALUES (60, 60, 17, NULL, NULL, 143259.435000, 0.000000, -143259.435000, 'Stock Status供应商付款;PV:PV 007377', 63, '0'); +INSERT INTO `tbl_account_item` VALUES (61, 61, 17, NULL, 1459, 242550.000000, 0.000000, 242550.000000, 'Stock Status客户收款;发票:INV_1744', 63, '0'); +INSERT INTO `tbl_account_item` VALUES (62, 62, 17, NULL, NULL, 95971.392000, 0.000000, -95971.392000, 'Stock Status供应商付款;PV:PV 007319', 63, '0'); +INSERT INTO `tbl_account_item` VALUES (63, 63, 17, NULL, 1460, 242550.000000, 0.000000, 242550.000000, 'Stock Status客户收款;发票:INV_1715', 63, '0'); +INSERT INTO `tbl_account_item` VALUES (64, 64, 17, NULL, NULL, 48250.323000, 0.000000, -48250.323000, 'Stock Status供应商付款;PV:PV 007340', 63, '0'); +INSERT INTO `tbl_account_item` VALUES (65, 65, 17, NULL, 1461, 242550.000000, 0.000000, 242550.000000, 'Stock Status客户收款;发票:INV_1716', 63, '0'); +INSERT INTO `tbl_account_item` VALUES (66, 66, 17, NULL, 1462, 239928.480000, 0.000000, -239928.480000, 'Stock Status供应商付款;PV:PV 007319', 63, '0'); +INSERT INTO `tbl_account_item` VALUES (67, 67, 17, NULL, 1465, 242550.000000, 0.000000, 242550.000000, 'Stock Status客户收款;发票:INV_1717', 63, '0'); +INSERT INTO `tbl_account_item` VALUES (68, 68, 17, NULL, NULL, 144750.969000, 0.000000, -144750.969000, 'Stock Status供应商付款;PV:PV 007340', 63, '0'); +INSERT INTO `tbl_account_item` VALUES (69, 69, 17, NULL, 1466, 242550.000000, 0.000000, 242550.000000, 'Stock Status客户收款;发票:INV_1727', 63, '0'); +INSERT INTO `tbl_account_item` VALUES (70, 70, 17, NULL, NULL, 95506.290000, 0.000000, -95506.290000, 'Stock Status供应商付款;PV:PV 007377', 63, '0'); +INSERT INTO `tbl_account_item` VALUES (71, 71, 17, NULL, 1467, 161700.000000, 0.000000, 161700.000000, 'Stock Status客户收款;发票:INV_1729', 63, '0'); +INSERT INTO `tbl_account_item` VALUES (72, 72, 17, NULL, 1468, 979098.274000, 0.000000, -979098.274000, 'Stock Status供应商付款;PV:PV 007341', 63, '0'); +INSERT INTO `tbl_account_item` VALUES (73, 73, 17, NULL, 1469, 80850.000000, 0.000000, 80850.000000, 'Stock Status客户收款;发票:INV_1728', 63, '0'); +INSERT INTO `tbl_account_item` VALUES (74, 74, 17, NULL, 1479, 729142.389000, 0.000000, -729142.389000, 'Stock Status供应商付款;PV:PV 007429', 63, '0'); +INSERT INTO `tbl_account_item` VALUES (75, 75, 17, NULL, 1480, 242550.000000, 0.000000, 242550.000000, 'Stock Status客户收款;发票:INV_1753', 63, '0'); +INSERT INTO `tbl_account_item` VALUES (76, 76, 17, NULL, NULL, 1809291.901600, 0.000000, -1809291.901600, 'Stock Status供应商付款;PV:PV 007450', 63, '0'); +INSERT INTO `tbl_account_item` VALUES (77, 77, 17, NULL, 1487, 242550.000000, 0.000000, 242550.000000, 'Stock Status客户收款;发票:INV_1772', 63, '0'); +INSERT INTO `tbl_account_item` VALUES (78, 78, 17, NULL, 1500, 242550.000000, 0.000000, 242550.000000, 'Stock Status客户收款;发票:INV_1786', 63, '0'); +INSERT INTO `tbl_account_item` VALUES (79, 79, 17, NULL, NULL, 514105.959600, 0.000000, -514105.959600, 'Stock Status供应商付款;PV:PV 007510', 63, '0'); +INSERT INTO `tbl_account_item` VALUES (80, 80, 17, NULL, 1506, 242550.000000, 0.000000, 242550.000000, 'Stock Status客户收款;发票:INV_1819', 63, '0'); +INSERT INTO `tbl_account_item` VALUES (81, 81, 17, NULL, 1527, 1159571.700000, 0.000000, -1159571.700000, 'Stock Status供应商付款;PV:PV 007339', 63, '0'); +INSERT INTO `tbl_account_item` VALUES (82, 82, 17, NULL, 1528, 374000.000000, 0.000000, 374000.000000, 'Stock Status客户收款;发票:INV_1720', 63, '0'); +INSERT INTO `tbl_account_item` VALUES (83, 83, 17, NULL, 1530, 748000.000000, 0.000000, 748000.000000, 'Stock Status客户收款;发票:INV_1723', 63, '0'); +INSERT INTO `tbl_account_item` VALUES (84, 84, 17, NULL, NULL, 1722296.520000, 0.000000, -1722296.520000, 'Stock Status供应商付款;PV:PV 007376', 63, '0'); +INSERT INTO `tbl_account_item` VALUES (85, 85, 17, NULL, 1536, 1122000.000000, 0.000000, 1122000.000000, 'Stock Status客户收款;发票:INV_1745', 63, '0'); +INSERT INTO `tbl_account_item` VALUES (86, 86, 17, NULL, 1540, 1122000.000000, 0.000000, 1122000.000000, 'Stock Status客户收款;发票:INV_1748', 63, '0'); +INSERT INTO `tbl_account_item` VALUES (87, 87, 17, NULL, 1547, 867076.245000, 0.000000, -867076.245000, 'Stock Status供应商付款;PV:PV 007449', 63, '0'); +INSERT INTO `tbl_account_item` VALUES (88, 88, 17, NULL, 1548, 374000.000000, 0.000000, 374000.000000, 'Stock Status客户收款;发票:INV_1784', 63, '0'); +INSERT INTO `tbl_account_item` VALUES (89, 89, 17, NULL, NULL, 1503934.614000, 0.000000, -1503934.614000, 'Stock Status供应商付款;PV:PV 007473', 63, '0'); +INSERT INTO `tbl_account_item` VALUES (90, 90, 17, NULL, 1551, 1122000.000000, 0.000000, 1122000.000000, 'Stock Status客户收款;发票:INV_1796', 63, '0'); +INSERT INTO `tbl_account_item` VALUES (91, 91, 17, NULL, 1557, 822800.000000, 0.000000, 822800.000000, 'Stock Status客户收款;发票:INV_1805', 63, '0'); +INSERT INTO `tbl_account_item` VALUES (92, 92, 17, NULL, 1601, 236946.640000, 0.000000, -236946.640000, 'Stock Status供应商付款;PV:PV 008186/87', 63, '0'); +INSERT INTO `tbl_account_item` VALUES (93, 93, 17, NULL, 1602, 242550.000000, 0.000000, 242550.000000, 'Stock Status客户收款;发票:INV_2111', 63, '0'); +INSERT INTO `tbl_account_item` VALUES (94, 94, 17, NULL, 1606, 161700.000000, 0.000000, 161700.000000, 'Stock Status客户收款;发票:INV_2113', 63, '0'); +INSERT INTO `tbl_account_item` VALUES (95, 95, 17, NULL, 1618, 161700.000000, 0.000000, 161700.000000, 'Stock Status客户收款;发票:INV_2122', 63, '0'); +INSERT INTO `tbl_account_item` VALUES (96, 96, 17, NULL, 1638, 242550.000000, 0.000000, 242550.000000, 'Stock Status客户收款;发票:INV_2130', 63, '0'); +INSERT INTO `tbl_account_item` VALUES (97, 97, 17, NULL, 1641, 80850.000000, 0.000000, 80850.000000, 'Stock Status客户收款;发票:INV_2131', 63, '0'); +INSERT INTO `tbl_account_item` VALUES (98, 98, 17, NULL, 1660, 80850.000000, 0.000000, 80850.000000, 'Stock Status客户收款;发票:INV_2133', 63, '0'); +INSERT INTO `tbl_account_item` VALUES (99, 99, 17, NULL, 1679, 1122000.000000, 0.000000, 1122000.000000, 'Stock Status客户收款;发票:INV_2129', 63, '0'); +INSERT INTO `tbl_account_item` VALUES (100, 100, 17, NULL, 1691, 954860.058400, 0.000000, -954860.058400, 'Stock Status供应商付款;PV:PV 008145/45 - ZHEJIANG & METRONIX', 63, '0'); +INSERT INTO `tbl_account_item` VALUES (101, 101, 17, NULL, 1692, 1122000.000000, 0.000000, 1122000.000000, 'Stock Status客户收款;发票:INV_2102', 63, '0'); +INSERT INTO `tbl_account_item` VALUES (102, 102, 17, NULL, 1695, 1122000.000000, 0.000000, 1122000.000000, 'Stock Status客户收款;发票:INV_2107', 63, '0'); +INSERT INTO `tbl_account_item` VALUES (103, 103, 17, NULL, 1700, 1122000.000000, 0.000000, 1122000.000000, 'Stock Status客户收款;发票:INV_2108', 63, '0'); +INSERT INTO `tbl_account_item` VALUES (104, 104, 17, NULL, NULL, 947751.900000, 0.000000, -947751.900000, 'Stock Status供应商付款;PV:PV 008186/87', 63, '0'); +INSERT INTO `tbl_account_item` VALUES (105, 105, 17, NULL, 1710, 1122000.000000, 0.000000, 1122000.000000, 'Stock Status客户收款;发票:INV_2110', 63, '0'); + +-- ---------------------------- +-- Table structure for tbl_asset +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_asset`; +CREATE TABLE `tbl_asset` ( + `id` bigint NOT NULL AUTO_INCREMENT, + `asset_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '资产编号', + `asset_name` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '资产名称', + `category_id` bigint NULL DEFAULT NULL COMMENT '????ID', + `asset_category` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '资产分类', + `specification` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '规格型号', + `unit` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '项' COMMENT '计量单位', + `quantity` decimal(24, 6) NOT NULL DEFAULT 1.000000 COMMENT '账面数量', + `original_value` decimal(24, 6) NOT NULL DEFAULT 0.000000 COMMENT '资产原值', + `purchase_date` datetime(0) NULL DEFAULT NULL COMMENT '购置日期', + `use_department` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '使用部门', + `keeper` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '保管人', + `location` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '存放地点', + `status` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'IN_USE' COMMENT '状态:IDLE/IN_USE/REPAIR/SCRAPPED', + `source` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT 'MANUAL' COMMENT '数据来源', + `external_source` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '??????', + `external_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '????ID', + `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注', + `creator` bigint NULL DEFAULT NULL, + `updater` bigint NULL DEFAULT NULL, + `delete_flag` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '0', + `create_time` datetime(0) NULL DEFAULT NULL, + `update_time` datetime(0) NULL DEFAULT NULL, + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `uk_asset_external_source`(`external_source`, `external_id`) USING BTREE, + INDEX `idx_asset_status`(`status`) USING BTREE, + INDEX `idx_asset_code`(`asset_code`) USING BTREE, + INDEX `idx_asset_category`(`category_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 271 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '资产台账' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of tbl_asset +-- ---------------------------- +INSERT INTO `tbl_asset` VALUES (1, 'FA-SMT-2024-001', 'SMT 高速贴片生产线', 11, '生产设备', 'Panasonic NPM-D3A 双轨配置', '台', 1.000000, 2850000.000000, '2024-03-18 00:00:00', 'SMT生产部', '王磊', '一车间 SMT-01 线', 'IN_USE', 'DEMO', NULL, NULL, '关键设备,按月盘点并执行点检保养', 63, NULL, '1', '2026-09-18 11:55:23', '2026-09-18 11:55:23'); +INSERT INTO `tbl_asset` VALUES (2, 'FA-SMT-2024-002', '十温区氮气回流焊系统', 11, '生产设备', 'HELLER 1936MK7', '台', 1.000000, 980000.000000, '2024-03-18 00:00:00', 'SMT生产部', '王磊', '一车间 SMT-01 线', 'IN_USE', 'DEMO', NULL, NULL, '炉温曲线纳入工艺受控文件', 63, NULL, '1', '2026-09-18 11:55:23', '2026-09-18 11:55:23'); +INSERT INTO `tbl_asset` VALUES (3, 'FA-QC-2024-003', '在线 3D AOI 检测系统', 12, '检测设备', 'Koh Young Zenith 2', '台', 1.000000, 1350000.000000, '2024-04-06 00:00:00', '品质部', '陈晨', '一车间 AOI 检测区', 'IN_USE', 'DEMO', NULL, NULL, '用于焊后外观与三维缺陷检测', 63, NULL, '1', '2026-09-18 11:55:23', '2026-09-18 11:55:23'); +INSERT INTO `tbl_asset` VALUES (4, 'FA-QC-2024-004', '在线 3D SPI 检测系统', 12, '检测设备', 'Koh Young KY8030-3', '台', 1.000000, 1120000.000000, '2024-04-06 00:00:00', '品质部', '陈晨', '一车间 印刷检测区', 'IN_USE', 'DEMO', NULL, NULL, '用于锡膏体积、高度及偏移检测', 63, NULL, '1', '2026-09-18 11:55:23', '2026-09-18 11:55:23'); +INSERT INTO `tbl_asset` VALUES (5, 'FA-UTIL-2023-005', '螺杆式空气压缩机', 13, '动力设备', 'Atlas Copco GA22 VSD+', '台', 1.000000, 186000.000000, '2023-11-20 00:00:00', '设备动力部', '陈晨', '动力站 1 号机位', 'IN_USE', 'DEMO', NULL, NULL, '为 SMT 车间提供稳定压缩空气', 63, NULL, '1', '2026-09-18 11:55:23', '2026-09-18 11:55:23'); +INSERT INTO `tbl_asset` VALUES (6, 'FA-IT-2025-006', 'MES 数据库服务器', 14, 'IT设备', 'Dell PowerEdge R760', '台', 1.000000, 168000.000000, '2025-01-15 00:00:00', '信息技术部', '赵敏', '数据中心 A03 机柜', 'IN_USE', 'DEMO', NULL, NULL, '双机热备主节点,纳入信息安全资产清单', 63, NULL, '1', '2026-09-18 11:55:23', '2026-09-18 11:55:23'); +INSERT INTO `tbl_asset` VALUES (7, 'FA-WH-2024-007', '电动平衡重式叉车', 15, '物流设备', 'Toyota 8FBE20', '台', 1.000000, 145000.000000, '2024-07-22 00:00:00', '仓储物流部', '张伟', '原材料仓充电区', 'IN_USE', 'DEMO', NULL, NULL, '额定载荷 2.0 吨,持证人员操作', 63, NULL, '1', '2026-09-18 11:55:23', '2026-09-18 11:55:23'); +INSERT INTO `tbl_asset` VALUES (8, 'FA-TOOL-2025-008', '全自动钢网清洗机', 16, '工装设备', 'SAWA SC-A1000', '台', 1.000000, 78000.000000, '2025-02-10 00:00:00', 'SMT生产部', '王磊', '一车间 钢网房', 'IN_USE', 'DEMO', NULL, NULL, '用于钢网水基闭环清洗与烘干', 63, NULL, '1', '2026-09-18 11:55:23', '2026-09-18 11:55:23'); +INSERT INTO `tbl_asset` VALUES (16, 'SAS-HW-389', 'Lenovo ThinkPad T14s 2-in-1', 5, '硬件资产', 'Laptop / Lenovo / ThinkPad T14s 2-in-1 / Win 11 Home / Core Ultra 5 / 16G / 500G SSD', '台', 1.000000, 0.000000, '2026-08-20 00:00:00', 'GM', 'Syed Bakri', 'Admin', 'IN_USE', 'SAS', 'HARDWARE', '389', '序列号: PF6EN008', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (17, 'SAS-HW-387', 'HP HP LaserJet MFP M236sdw', 5, '硬件资产', 'Printer / HP / HP LaserJet MFP M236sdw', '台', 1.000000, 0.000000, NULL, 'Prod', NULL, 'R&D Room', 'IN_USE', 'SAS', 'HARDWARE', '387', '序列号: VNP5F19044', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (18, 'SAS-HW-385', 'TP-Link Omada SG3452', 5, '硬件资产', 'Switch / TP-Link / Omada SG3452', '台', 1.000000, 0.000000, NULL, 'Technical & Technologies', 'Haslim', 'Server Room', 'IN_USE', 'SAS', 'HARDWARE', '385', '序列号: 225B0AN000371;MAC: 6C-4C-BC-C9-F0-8A', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (19, 'SAS-HW-384', 'H3C H3C UniServer R3950 G6', 5, '硬件资产', 'Server / H3C / H3C UniServer R3950 G6', '台', 1.000000, 0.000000, NULL, 'Technical & Technologies', 'Haslim', 'Server Room', 'IN_USE', 'SAS', 'HARDWARE', '384', '序列号: 210235A4V0H259000004', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (20, 'SAS-HW-383', 'Epson Epson LQ-310', 5, '硬件资产', 'Printer / Epson / Epson LQ-310', '台', 1.000000, 0.000000, NULL, 'Ad', 'Hab', 'Admin Office', 'IN_USE', 'SAS', 'HARDWARE', '383', '序列号: R9DY417590', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (21, 'SAS-HW-382', 'HP HP LaserJet 1020', 5, '硬件资产', 'Printer / HP / HP LaserJet 1020', '台', 1.000000, 0.000000, NULL, 'Finance', 'Juwairiah', 'Finance Mgr Room', 'IN_USE', 'SAS', 'HARDWARE', '382', '序列号: CNCKC63735', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (22, 'SAS-HW-381', 'HP HP LaserJet 1020', 5, '硬件资产', 'Printer / HP / HP LaserJet 1020', '台', 1.000000, 0.000000, NULL, 'Store', 'Wan Rosli', 'Store Office', 'IN_USE', 'SAS', 'HARDWARE', '381', '序列号: CNCK596090', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (23, 'SAS-HW-380', 'Canon Canon Imageclass mf633cdw', 5, '硬件资产', 'Printer / Canon / Canon Imageclass mf633cdw', '台', 1.000000, 0.000000, NULL, 'CEO', NULL, 'CEO Office', 'IN_USE', 'SAS', 'HARDWARE', '380', '序列号: WUE14822', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (24, 'SAS-HW-379', 'TP-Link Omada Controller OC220', 5, '硬件资产', 'Other / TP-Link / Omada Controller OC220', '台', 1.000000, 0.000000, NULL, 'Technical & Technologies', 'Haslim', 'Server Room', 'IN_USE', 'SAS', 'HARDWARE', '379', '序列号: 225906R001139;MAC: 3C-78-95-33-F9-5A;用途: Network controller', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (25, 'SAS-HW-378', 'Prolink Prolink 3KVA/2700W', 5, '硬件资产', 'Other / Prolink / Prolink 3KVA/2700W', '台', 1.000000, 0.000000, NULL, 'Technical & Technologies', 'Haslim', 'Server Room', 'IN_USE', 'SAS', 'HARDWARE', '378', '序列号: 535101254800056;用途: UPS for servers and switches.', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (26, 'SAS-HW-377', 'ScreenBeam ScreenBeam 1100 Plus', 5, '硬件资产', 'Other / ScreenBeam / ScreenBeam 1100 Plus', '台', 1.000000, 0.000000, NULL, 'Admin', NULL, 'Meeting Room', 'IN_USE', 'SAS', 'HARDWARE', '377', '序列号: CBKB52500329;用途: Smartboard add-on for presentation', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (27, 'SMT/N02/PC007', 'HP All-in-One 24-dp0209d', 5, '硬件资产', 'All-In-One / HP / All-in-One 24-dp0209d / Win 11 Pro / AMD Ryzen 5 4500U / 24G / 500G', '台', 1.000000, 0.000000, NULL, 'Admin', 'Habsah', 'Admin', 'IN_USE', 'SAS', 'HARDWARE', '188', '序列号: 8CC10109H6;用途: test', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (28, 'SMT/LAP16/112004', 'HP HP 14s-cf3022tx', 5, '硬件资产', 'Laptop / HP / HP 14s-cf3022tx / Win 11 Pro / Core i5-1035G1 / 8G / 500G', '台', 1.000000, 0.000000, NULL, 'Admin', 'Habsah', 'Admin', 'IN_USE', 'SAS', 'HARDWARE', '189', '序列号: 5CG03082JY;原备注: MTPH4-NH3DW-BRKQY-YMVFB-88F72', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (29, 'SAS-HW-190', 'Microsoft Surface Pro 7 @1866', 5, '硬件资产', 'Laptop / Microsoft / Surface Pro 7 @1866 / Core i5-1035G4 / 8G / 128G', '台', 1.000000, 0.000000, NULL, 'CEO', 'CEO', 'CEO', 'IN_USE', 'SAS', 'HARDWARE', '190', '序列号: 065060402353', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (30, 'PTC8320M', 'Dell OptiPlex 7070', 5, '硬件资产', 'CPU / Dell / OptiPlex 7070 / Win 10 Pro / Core i5-8500 / 16G / 500G', '台', 1.000000, 0.000000, NULL, 'Engineering', 'Fitri', NULL, 'IN_USE', 'SAS', 'HARDWARE', '191', '序列号: DCH5F13', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (31, 'SMT/TECH/043PC', 'Lenovo', 5, '硬件资产', 'Monitor / Lenovo', '台', 1.000000, 0.000000, NULL, 'Engineering', 'Azam', 'Tech Room', 'IN_USE', 'SAS', 'HARDWARE', '192', '用途: Not Specified', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (32, 'SMT/TECH/043CPU', 'HP', 5, '硬件资产', 'CPU / HP', '台', 1.000000, 0.000000, NULL, 'Engineering', 'Azam', 'Tech Room', 'IN_USE', 'SAS', 'HARDWARE', '193', '用途: Not Specified', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (33, 'SMT/TECH/044PC', 'HP', 5, '硬件资产', 'Monitor / HP', '台', 1.000000, 0.000000, NULL, 'Engineering', 'Azam', 'Tech Room', 'IN_USE', 'SAS', 'HARDWARE', '194', '用途: Not Specified', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (34, 'SMT/TECH/044CPU', 'HP ProDesk 400 G7', 5, '硬件资产', 'CPU / HP / ProDesk 400 G7 / Win 11 Pro / Core i5-10500 / 8G / 240G', '台', 1.000000, 0.000000, NULL, 'Engineering', 'Azam', 'Tech Room', 'IN_USE', 'SAS', 'HARDWARE', '195', '序列号: 4CE216BFHW;用途: Not Specified', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (35, 'SMT/TECH/045PC', 'Dell', 5, '硬件资产', 'Monitor / Dell', '台', 1.000000, 0.000000, NULL, 'Engineering', 'Azam', 'Tech Room', 'IN_USE', 'SAS', 'HARDWARE', '196', '用途: Not Specified', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (36, 'SMT/TECH/045CPU', 'Cooto', 5, '硬件资产', 'CPU / Cooto', '台', 1.000000, 0.000000, NULL, 'Engineering', 'Azam', 'Tech Room', 'IN_USE', 'SAS', 'HARDWARE', '197', '用途: Not Specified', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (37, 'SMT/TECH/046PC', 'Dell', 5, '硬件资产', 'Monitor / Dell', '台', 1.000000, 0.000000, NULL, 'Engineering', 'Azam', 'Tech Room', 'IN_USE', 'SAS', 'HARDWARE', '198', '用途: Not Specified', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (38, 'SMT/TECH/046CPU', 'Dell OptiPlex 3080', 5, '硬件资产', 'CPU / Dell / OptiPlex 3080 / Core i3-10100', '台', 1.000000, 0.000000, NULL, 'Engineering', 'Ariffin', 'Tech Room', 'IN_USE', 'SAS', 'HARDWARE', '199', '序列号: LH5TTC3;用途: Not Specified', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (39, 'SMT/TECH/047PC', 'HP', 5, '硬件资产', 'Monitor / HP', '台', 1.000000, 0.000000, NULL, 'Engineering', 'Azam', 'Tech Room', 'IN_USE', 'SAS', 'HARDWARE', '200', '用途: Not Specified', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (40, 'SMT/TECH/047CPU', 'HP', 5, '硬件资产', 'CPU / HP', '台', 1.000000, 0.000000, NULL, 'Engineering', 'Azam', 'Tech Room', 'IN_USE', 'SAS', 'HARDWARE', '201', '用途: Not Specified', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (41, 'SMT/LAP13/112004', 'HP HP 14s-cf2036tx', 5, '硬件资产', 'Laptop / HP / HP 14s-cf2036tx / Win 10 Home / Core i7-1051U / 8G / 500GB', '台', 1.000000, 0.000000, NULL, 'Engineering', 'Fitri/Hanif', 'Personal Carry', 'IN_USE', 'SAS', 'HARDWARE', '202', '序列号: 5CG011D1XR;用途: Personal Work', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (42, 'SMT/CPU/053,SMT/N02/CPU046', 'Dell Vostro 230', 5, '硬件资产', 'CPU / Dell / Vostro 230 / Win 7 Pro / Pentium Dual Core E6700 / 4G / 320G', '台', 1.000000, 0.000000, NULL, 'Production 2', 'Halimaton', NULL, 'IN_USE', 'SAS', 'HARDWARE', '203', '序列号: 2VBK92S', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (43, 'SMT/LAP5/112004', 'Lenovo ThinkPad X1', 5, '硬件资产', 'Laptop / Lenovo / ThinkPad X1 / Win 10 Pro / Core i7-10510U / 16G / 256G', '台', 1.000000, 0.000000, NULL, 'Engineering', 'Amir', NULL, 'IN_USE', 'SAS', 'HARDWARE', '204', '序列号: PF1V7QXT', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (44, 'SMT/LAP20/112004', 'HP HP 14s-cf3022tx', 5, '硬件资产', 'Laptop / HP / HP 14s-cf3022tx / Win 10 Home / Core i5-1035G1 / 8G / 512G', '台', 1.000000, 0.000000, NULL, 'Engineering', 'Adha', NULL, 'IN_USE', 'SAS', 'HARDWARE', '205', '序列号: 5CG03082JK', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (45, 'SMT/TECH/047', 'HP ProDesk 400 G7', 5, '硬件资产', 'CPU / HP / ProDesk 400 G7 / Win 10 Pro / Core i5-10500 / 8G / 250G', '台', 1.000000, 0.000000, NULL, 'Engineering', 'Ilham', NULL, 'IN_USE', 'SAS', 'HARDWARE', '206', '序列号: 4CE216BNS9', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (46, 'SAS-HW-207', 'HP ProDesk 400 G7', 5, '硬件资产', 'CPU / HP / ProDesk 400 G7 / Win 11 Pro / Core i5-10500 / 8G / 250G', '台', 1.000000, 0.000000, NULL, 'Engineering', 'Adha', NULL, 'IN_USE', 'SAS', 'HARDWARE', '207', '序列号: 4CE216BFJM', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (47, 'SMT/LAP2/11112024', 'Lenovo ThinkPad X1 Carbon Gen 8', 5, '硬件资产', 'Laptop / Lenovo / ThinkPad X1 Carbon Gen 8 / Win 10 Pro / Core i7-10510U / 16G / 256G', '台', 1.000000, 0.000000, NULL, 'Finance', 'Juwairiah', 'Personal Carry', 'IN_USE', 'SAS', 'HARDWARE', '208', '序列号: PF1VB7AE;用途: Personal Work', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (48, 'SAS-HW-209', 'HP All-in-One 24-dp0209d', 5, '硬件资产', 'All-In-One / HP / All-in-One 24-dp0209d / Win 11 Home / AMD Ryzen 5 4500U / 24G / 500G', '台', 1.000000, 0.000000, NULL, 'Finance', 'Juwairiah', 'Finance Room', 'IN_USE', 'SAS', 'HARDWARE', '209', '序列号: 8CC10114RG', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (49, 'SMT/N02/CPU003', 'HP ProDesk 400 G7', 5, '硬件资产', 'CPU / HP / ProDesk 400 G7 / Win 11 Pro / Core i5-10500 / 8G / 1T', '台', 1.000000, 0.000000, NULL, 'Finance', 'Sharida', 'HR Room', 'IN_USE', 'SAS', 'HARDWARE', '210', '序列号: 4CE219BMV5', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (50, 'SMT/LAP3/11112024', 'Lenovo ThinkPad X1 Carbon Gen 8', 5, '硬件资产', 'Laptop / Lenovo / ThinkPad X1 Carbon Gen 8 / Win 11 Pro / Core i7-8650U / 16G / 500G', '台', 1.000000, 0.000000, NULL, 'Human Resources', 'Hasmah', 'Personal Carry', 'IN_USE', 'SAS', 'HARDWARE', '211', '序列号: PF1Q9H0C;用途: Personal Work', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (51, 'SAS-HW-212', 'HP All-in-One 24-dp0209d', 5, '硬件资产', 'All-In-One / HP / All-in-One 24-dp0209d / Win 10 Home / AMD Ryzen 5 4500U / 24G / 500G', '台', 1.000000, 0.000000, NULL, 'Human Resources', 'Hasmah', 'HR Room', 'IN_USE', 'SAS', 'HARDWARE', '212', '序列号: 8CC10109F6', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (52, 'SMT/LAP16/11112024', 'HP Radeon Intel Core i5', 5, '硬件资产', 'Laptop / HP / Radeon Intel Core i5', '台', 1.000000, 0.000000, NULL, 'Human Resources', 'Hasmah', 'Stored with HR', 'IN_USE', 'SAS', 'HARDWARE', '213', '用途: Stored', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (53, 'SMT/LAP17/11112024', 'HP Pro Book 440', 5, '硬件资产', 'Laptop / HP / Pro Book 440', '台', 1.000000, 0.000000, NULL, 'Human Resources', 'Hasmah', 'Stored with HR', 'IN_USE', 'SAS', 'HARDWARE', '214', '用途: Stored', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (54, 'SMT/LAP18/11112024', 'Lenovo ThinkPad X1 Carbon Gen 8', 5, '硬件资产', 'Laptop / Lenovo / ThinkPad X1 Carbon Gen 8', '台', 1.000000, 0.000000, NULL, 'Human Resources', 'Hasmah', 'Stored with HR', 'IN_USE', 'SAS', 'HARDWARE', '215', '用途: Stored', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (55, 'SMT/LAP19/11112024', 'Lenovo ThinkPad X1 Carbon Gen 8', 5, '硬件资产', 'Laptop / Lenovo / ThinkPad X1 Carbon Gen 8', '台', 1.000000, 0.000000, NULL, 'Human Resources', 'Hasmah', 'Not Specified', 'REPAIR', 'SAS', 'HARDWARE', '216', '用途: Not Specified;原备注: RETURN TO SUPPLIER DUE THE PROBLEM', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (56, 'SMT/LAB/029PC', 'HP', 5, '硬件资产', 'Monitor / HP', '台', 1.000000, 0.000000, NULL, 'Laboratory', 'Aqila', 'Laboratory', 'IN_USE', 'SAS', 'HARDWARE', '217', '用途: Testing / Lab', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (57, 'SMT/LAB/029CPU', 'HP ProDesk 400 G7', 5, '硬件资产', 'CPU / HP / ProDesk 400 G7 / Win 11 Pro / Core i5-10500 / 16G / 1TB', '台', 1.000000, 0.000000, NULL, 'Laboratory', 'Aqila', 'Laboratory', 'IN_USE', 'SAS', 'HARDWARE', '218', '序列号: 4CE219BMSP;用途: Testing / Lab', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (58, 'SMT/LAB/030PC', 'HP ProDesk 400 G7', 5, '硬件资产', 'CPU / HP / ProDesk 400 G7 / Win 11 Pro / Core i5-10500 / 16G / 250G', '台', 1.000000, 0.000000, NULL, 'Laboratory', 'Aqila', 'Laboratory', 'IN_USE', 'SAS', 'HARDWARE', '219', '序列号: 4CE216BDPN;用途: Testing / Lab;原备注: Windows License Key : QRWJ7-2N8MF-TM9WY-HKB42-VFR9C\n', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (59, 'SMT/N02/CPU020', 'HP HP Pro 3330 MT', 5, '硬件资产', 'CPU / HP / HP Pro 3330 MT / Win 10 Pro / Core i7-2600 / 8G / 220G', '台', 1.000000, 0.000000, NULL, 'Laboratory', 'Aqila', 'Laboratory', 'IN_USE', 'SAS', 'HARDWARE', '220', '序列号: SGH221S6SH;用途: Testing / Lab', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (60, 'SMT/LAB/031PC', 'HP', 5, '硬件资产', 'Monitor / HP', '台', 1.000000, 0.000000, NULL, 'Laboratory', 'Aqila', 'Laboratory', 'IN_USE', 'SAS', 'HARDWARE', '221', '用途: Testing / Lab', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (61, 'SMT/LAB/031CPU', 'HP ProDesk 400 G7', 5, '硬件资产', 'CPU / HP / ProDesk 400 G7 / Win 11 Pro / Core i5-10500 / 16G / 250G', '台', 1.000000, 0.000000, NULL, 'Laboratory', 'Aqila', 'Laboratory', 'IN_USE', 'SAS', 'HARDWARE', '222', '序列号: 4CE216BDQP;用途: Testing / Lab', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (62, 'SMT/LAB/032CPU', 'HP ProDesk 400 G7', 5, '硬件资产', 'CPU / HP / ProDesk 400 G7 / Win 11 Pro / Core i5-10500 / 16G / 250G', '台', 1.000000, 0.000000, NULL, 'Laboratory', 'Aqila', 'Laboratory', 'IN_USE', 'SAS', 'HARDWARE', '223', '序列号: 4CE216BFJJ;用途: Testing / Lab', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (63, 'SMT/LAB/032PC', 'Dell', 5, '硬件资产', 'Monitor / Dell', '台', 1.000000, 0.000000, NULL, 'Laboratory', 'Aqila', 'Laboratory', 'IN_USE', 'SAS', 'HARDWARE', '224', '用途: Testing / Lab', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (64, 'SMT/LAB/033PC', 'HP', 5, '硬件资产', 'Monitor / HP', '台', 1.000000, 0.000000, NULL, 'Laboratory', 'Aqila', 'Laboratory', 'IN_USE', 'SAS', 'HARDWARE', '225', '用途: Testing / Lab', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (65, 'SMT/LAB/033CPU', 'HP ProDesk 400 G7', 5, '硬件资产', 'CPU / HP / ProDesk 400 G7 / Win 11 Pro / Core i5-10500 / 16G / 250G', '台', 1.000000, 0.000000, NULL, 'Laboratory', 'Aqila', 'Laboratory', 'IN_USE', 'SAS', 'HARDWARE', '226', '序列号: 4CE216BFJC;用途: Testing / Lab', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (66, 'SMT/LAB/034PC', 'Dell', 5, '硬件资产', 'Monitor / Dell', '台', 1.000000, 0.000000, NULL, 'Laboratory', 'Aqila', 'Laboratory', 'IN_USE', 'SAS', 'HARDWARE', '227', '用途: Testing / Lab', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (67, 'SMT/LAB/034CPU', 'HP OptiPlex 7050', 5, '硬件资产', 'CPU / HP / OptiPlex 7050 / Win 10 Pro / Core i7-6700 / 8G / 500G', '台', 1.000000, 0.000000, NULL, 'Laboratory', 'Aqila', 'Laboratory', 'IN_USE', 'SAS', 'HARDWARE', '228', '序列号: 5P8RRK2;用途: Testing / Lab', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (68, 'SMT/LAB/035PC', 'LG', 5, '硬件资产', 'Monitor / LG', '台', 1.000000, 0.000000, NULL, 'Laboratory', 'Aqila', 'Laboratory', 'IN_USE', 'SAS', 'HARDWARE', '229', '用途: Testing / Lab', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (69, 'SMT/LAB/035CPU', 'HP', 5, '硬件资产', 'CPU / HP', '台', 1.000000, 0.000000, NULL, 'Laboratory', 'Aqila', 'Laboratory', 'IN_USE', 'SAS', 'HARDWARE', '230', '用途: Testing / Lab', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (70, 'SMT/LAB/036PC', 'HP', 5, '硬件资产', 'Monitor / HP', '台', 1.000000, 0.000000, NULL, 'Laboratory', 'Aqila', 'Laboratory', 'IN_USE', 'SAS', 'HARDWARE', '231', '用途: Testing / Lab', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (71, 'SMT/LAB/037PC', 'HP', 5, '硬件资产', 'Monitor / HP', '台', 1.000000, 0.000000, NULL, 'Laboratory', 'Aqila', 'Laboratory', 'IN_USE', 'SAS', 'HARDWARE', '232', '用途: Testing / Lab', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (72, 'SMT/LAB/037CPU', 'HP', 5, '硬件资产', 'CPU / HP', '台', 1.000000, 0.000000, NULL, 'Laboratory', 'Aqila', 'Laboratory', 'IN_USE', 'SAS', 'HARDWARE', '233', '用途: Testing / Lab', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (73, 'SMT/LAB/038PC', 'HP', 5, '硬件资产', 'Monitor / HP', '台', 1.000000, 0.000000, NULL, 'Laboratory', 'Aqila', 'Laboratory', 'IN_USE', 'SAS', 'HARDWARE', '234', '用途: Testing / Lab', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (74, 'SMT/LAB/038CPU', 'HP', 5, '硬件资产', 'CPU / HP', '台', 1.000000, 0.000000, NULL, 'Laboratory', 'Aqila', 'Laboratory', 'IN_USE', 'SAS', 'HARDWARE', '235', '用途: Testing / Lab', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (75, 'SMT/LAB/039PC', 'HP', 5, '硬件资产', 'Monitor / HP', '台', 1.000000, 0.000000, NULL, 'Laboratory', 'Aqila', 'Laboratory', 'IN_USE', 'SAS', 'HARDWARE', '236', '用途: Testing / Lab', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (76, 'SMT/LAB/039CPU', 'HP', 5, '硬件资产', 'CPU / HP', '台', 1.000000, 0.000000, NULL, 'Laboratory', 'Aqila', 'Laboratory', 'IN_USE', 'SAS', 'HARDWARE', '237', '用途: Testing / Lab', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (77, 'SMT/LAB/040PC', 'HP', 5, '硬件资产', 'Monitor / HP', '台', 1.000000, 0.000000, NULL, 'Laboratory', 'Aqila', 'Laboratory', 'IN_USE', 'SAS', 'HARDWARE', '238', '用途: Testing / Lab', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (78, 'SMT/LAB/040CPU', 'HP', 5, '硬件资产', 'CPU / HP', '台', 1.000000, 0.000000, NULL, 'Laboratory', 'Aqila', 'Laboratory', 'IN_USE', 'SAS', 'HARDWARE', '239', '用途: Testing / Lab', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (79, 'SMT/LAB/041PC', 'Lenovo', 5, '硬件资产', 'Monitor / Lenovo', '台', 1.000000, 0.000000, NULL, 'Laboratory', 'Aqila', 'Laboratory', 'IN_USE', 'SAS', 'HARDWARE', '240', '用途: Testing / Lab', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (80, 'SMT/LAB/041CPU', 'Dell ProDesk 400 G7', 5, '硬件资产', 'CPU / Dell / ProDesk 400 G7 / Win 11 Pro / Core i5-10500 / 8G / 250G', '台', 1.000000, 0.000000, NULL, 'Laboratory', 'X-Hadi', 'Laboratory', 'IN_USE', 'SAS', 'HARDWARE', '241', '序列号: 4CE219BMV4;用途: Testing / Lab', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (81, 'SMT/LAB/042PC', 'LG', 5, '硬件资产', 'Monitor / LG', '台', 1.000000, 0.000000, NULL, 'Laboratory', 'Aqila', 'Laboratory', 'IN_USE', 'SAS', 'HARDWARE', '242', '用途: Testing / Lab', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (82, 'SAS-HW-243', 'HP ProDesk 400 G7', 5, '硬件资产', 'CPU / HP / ProDesk 400 G7 / Win 11 Pro / Core i5-10500 / 8G / 250G', '台', 1.000000, 0.000000, NULL, 'Laboratory', NULL, NULL, 'IN_USE', 'SAS', 'HARDWARE', '243', '序列号: 4CE216BFJJ', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (83, 'SAS-HW-244', 'HP ProDesk 400 G7', 5, '硬件资产', 'CPU / HP / ProDesk 400 G7 / Win 11 Pro / Core i5-10500 / 8G / 250G', '台', 1.000000, 0.000000, NULL, 'Laboratory', NULL, NULL, 'IN_USE', 'SAS', 'HARDWARE', '244', '序列号: 4CE216BDQP', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (84, 'SMT/LAB/029CPU', 'HP ProDesk 400 G7', 5, '硬件资产', 'CPU / HP / ProDesk 400 G7 / Win 11 Pro / Core i5-10500 / 16G / 1TB', '台', 1.000000, 0.000000, NULL, 'Laboratory', NULL, NULL, 'IN_USE', 'SAS', 'HARDWARE', '245', '序列号: 4CE219BMSP', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (85, 'SMT/LAB/036CPU', 'HP ProDesk 400 G7', 5, '硬件资产', 'CPU / HP / ProDesk 400 G7 / Win 10 Pro / Core i5-10500 / 8G / 250G', '台', 1.000000, 0.000000, NULL, 'Laboratory', NULL, NULL, 'IN_USE', 'SAS', 'HARDWARE', '246', '序列号: 4CE219BMSZ', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (86, 'PTC8320E-02', 'HP ProDesk 400 G7', 5, '硬件资产', 'CPU / HP / ProDesk 400 G7 / Win 11 Pro / Core i5-10500 / 16G / 250G', '台', 1.000000, 0.000000, NULL, 'Laboratory', NULL, NULL, 'IN_USE', 'SAS', 'HARDWARE', '247', '序列号: 4CE216BFJN', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (87, 'SAS-HW-248', 'HP ProDesk 400 G7', 5, '硬件资产', 'CPU / HP / ProDesk 400 G7 / Win 11 Pro / Core i5-10500 / 8G / 250G', '台', 1.000000, 0.000000, NULL, 'Laboratory', NULL, NULL, 'IN_USE', 'SAS', 'HARDWARE', '248', '序列号: 4CE219BMTF', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (88, 'PTC8320E-01', 'HP ProDesk 400 G7', 5, '硬件资产', 'CPU / HP / ProDesk 400 G7 / Win 11 Pro / Core i5-10500 / 16G / 1TB', '台', 1.000000, 0.000000, NULL, 'Laboratory', NULL, NULL, 'IN_USE', 'SAS', 'HARDWARE', '249', '序列号: 4CE219BMV6', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (89, 'SAS-HW-250', 'HP ProDesk 400 G7', 5, '硬件资产', 'CPU / HP / ProDesk 400 G7 / Win 11 Pro / Core i5-10500 / 8G / 250G', '台', 1.000000, 0.000000, NULL, 'Laboratory', NULL, NULL, 'IN_USE', 'SAS', 'HARDWARE', '250', '序列号: 4CE219BM77', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (90, 'PTC8320D-02', 'Dell OptiPlex 7010', 5, '硬件资产', 'CPU / Dell / OptiPlex 7010 / Win 7 Ultimate / Core i3-3240 / 4G / 500G', '台', 1.000000, 0.000000, NULL, 'Laboratory', NULL, NULL, 'IN_USE', 'SAS', 'HARDWARE', '251', '序列号: 4KS46Z1', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (91, 'PTC8320E-04', 'HP ProDesk 400 G7', 5, '硬件资产', 'CPU / HP / ProDesk 400 G7 / Win 11 Pro / Core i5-10500 / 16G / 1T', '台', 1.000000, 0.000000, NULL, 'Laboratory', NULL, NULL, 'IN_USE', 'SAS', 'HARDWARE', '252', '序列号: 4CE219BMTV', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (92, 'SMT/LAB/014CPU', 'HP ProDesk 400 G7', 5, '硬件资产', 'CPU / HP / ProDesk 400 G7 / Win 11 Pro / Core i5-10500 / 8G / 1T', '台', 1.000000, 0.000000, NULL, 'Laboratory', 'Aliff', NULL, 'IN_USE', 'SAS', 'HARDWARE', '253', '序列号: 4CE219BMV4', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (93, 'SAS-HW-254', 'Smartboard NM-G750XS01', 5, '硬件资产', 'Smartboard / Smartboard NM-G750XS01 / Win 10 / Core i5-2450M / 8G / 128G', '台', 1.000000, 0.000000, NULL, 'Meeting Room', NULL, NULL, 'IN_USE', 'SAS', 'HARDWARE', '254', '序列号: HH230216698', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (94, 'SMT/OFFICE2/048PC', 'Lenovo', 5, '硬件资产', 'Monitor / Lenovo', '台', 1.000000, 0.000000, NULL, 'Not Specified', 'Not Specified', 'Office 2', 'IN_USE', 'SAS', 'HARDWARE', '255', '用途: Not Specified', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (95, 'SMT/OFFICE2/048CPU', 'HP', 5, '硬件资产', 'CPU / HP', '台', 1.000000, 0.000000, NULL, 'Not Specified', 'Not Specified', 'Office 2', 'IN_USE', 'SAS', 'HARDWARE', '256', '用途: Not Specified', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (96, 'SMT/OFFICE2/049PC', 'Lenovo', 5, '硬件资产', 'Monitor / Lenovo', '台', 1.000000, 0.000000, NULL, 'Not Specified', 'Not Specified', 'Office 2', 'IN_USE', 'SAS', 'HARDWARE', '257', '用途: Not Specified', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (97, 'SMT/OFFICE2/049CPU', 'HP HP Pro 3330 MT', 5, '硬件资产', 'CPU / HP / HP Pro 3330 MT / Win 7 Pro / Core i7-2600 / 6G / 500G', '台', 1.000000, 0.000000, NULL, 'Quality', 'Herman', 'Office 2', 'IN_USE', 'SAS', 'HARDWARE', '258', '序列号: SGH221S6SS;用途: Not Specified', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (98, 'SMT/OFFICE2/050PC', 'Dell', 5, '硬件资产', 'Monitor / Dell', '台', 1.000000, 0.000000, NULL, 'Not Specified', 'Not Specified', 'Office 2', 'IN_USE', 'SAS', 'HARDWARE', '259', '用途: Not Specified', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (99, 'SMT/OFFICE2/050CPU', 'Dell', 5, '硬件资产', 'CPU / Dell', '台', 1.000000, 0.000000, NULL, 'Not Specified', 'Not Specified', 'Office 2', 'IN_USE', 'SAS', 'HARDWARE', '260', '用途: Not Specified', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (100, 'SMT/OFFICE2/051PC', 'Lenovo', 5, '硬件资产', 'Monitor / Lenovo', '台', 1.000000, 0.000000, NULL, 'Not Specified', 'Not Specified', 'Office 2', 'IN_USE', 'SAS', 'HARDWARE', '261', '用途: Not Specified', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (101, 'SMT/OFFICE2/051CPU', 'HP', 5, '硬件资产', 'CPU / HP', '台', 1.000000, 0.000000, NULL, 'Not Specified', 'Not Specified', 'Office 2', 'IN_USE', 'SAS', 'HARDWARE', '262', '用途: Not Specified', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (102, 'SMT/OFFICE2/052PC', 'LG', 5, '硬件资产', 'Monitor / LG', '台', 1.000000, 0.000000, NULL, 'Not Specified', 'Not Specified', 'Office 2', 'IN_USE', 'SAS', 'HARDWARE', '263', '用途: Not Specified', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (103, 'SMT/OFFICE2/052CPU', 'CPU 硬件资产 264', 5, '硬件资产', 'CPU', '台', 1.000000, 0.000000, NULL, 'Not Specified', 'Not Specified', 'Office 2', 'IN_USE', 'SAS', 'HARDWARE', '264', '用途: Not Specified', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (104, 'SMT/STORE/053PC', 'Lenovo', 5, '硬件资产', 'Monitor / Lenovo', '台', 1.000000, 0.000000, NULL, 'Not Specified', 'Not Specified', 'Store Office', 'IN_USE', 'SAS', 'HARDWARE', '265', '用途: Not Specified', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (105, 'SMT/STORE/054PC', 'HP', 5, '硬件资产', 'Monitor / HP', '台', 1.000000, 0.000000, NULL, 'Not Specified', 'Not Specified', 'Store Office', 'IN_USE', 'SAS', 'HARDWARE', '266', '用途: Not Specified', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (106, 'SMT/LAP1/11112024', 'Acer Acer Spin 3', 5, '硬件资产', 'Laptop / Acer / Acer Spin 3 / Win 11 Home / Core i7-1165G7 / 16G / 500G', '台', 1.000000, 0.000000, NULL, 'Operation', 'Arif', 'Personal Carry', 'IN_USE', 'SAS', 'HARDWARE', '267', '序列号: NXA9VSM00414307CD96600;用途: Personal Work', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (107, 'SMT/LAP12/11112024', 'HP Pro Book 440 G8', 5, '硬件资产', 'Laptop / HP / Pro Book 440 G8 / Win 11 Pro / Core i5-1135G7 / 8G / 240G', '台', 1.000000, 0.000000, NULL, 'Production', 'Syafiq', 'Personal Carry', 'IN_USE', 'SAS', 'HARDWARE', '268', '序列号: 5CD14257QY;用途: Personal Work', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (108, 'SMT/LAP7/11112024', 'Lenovo ThinkPad X1 Carbon Gen 8', 5, '硬件资产', 'Laptop / Lenovo / ThinkPad X1 Carbon Gen 8 / Win 11 Pro / Core i7-8565U / 16G / 500G', '台', 1.000000, 0.000000, NULL, 'Production', 'Mazidah', 'Personal Carry', 'IN_USE', 'SAS', 'HARDWARE', '269', '序列号: PF2685GY;用途: Personal Work', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (109, 'SMT/LAP10/11112024', 'Lenovo ThinkPad X1 Carbon Gen 8', 5, '硬件资产', 'Laptop / Lenovo / ThinkPad X1 Carbon Gen 8 / Win 11 Pro / Core i7-10510U / 16G / 500G', '台', 1.000000, 0.000000, NULL, 'Production', 'Halimaton', 'Personal Carry', 'IN_USE', 'SAS', 'HARDWARE', '270', '序列号: PF1VB811;用途: Personal Work', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (110, 'SMT/LAP14/11112024,SMT/LAP14/112004', 'Lenovo ThinkPad X1 Carbon Gen 8', 5, '硬件资产', 'Laptop / Lenovo / ThinkPad X1 Carbon Gen 8 / Win 11 Pro / Core i5-8265U / 16G / 500G', '台', 1.000000, 0.000000, NULL, 'Production', 'Hana', 'Personal Carry', 'IN_USE', 'SAS', 'HARDWARE', '271', '序列号: PF267MWG;用途: Sticker/Print', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (111, 'SMT/PRO2/001PC', 'Dell', 5, '硬件资产', 'Monitor / Dell', '台', 1.000000, 0.000000, NULL, 'Production', 'Halimaton/Syafiq', 'Prod 2 / Line 1', 'IN_USE', 'SAS', 'HARDWARE', '272', '用途: RF', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (112, 'SMT/PRO2/001CPU', 'Dell OptiPlex 7050', 5, '硬件资产', 'CPU / Dell / OptiPlex 7050 / Core i7-6700 / 8G / 500G', '台', 1.000000, 0.000000, NULL, 'Production 2', 'Halimaton', 'Prod 2', 'IN_USE', 'SAS', 'HARDWARE', '273', '序列号: FBHMLN2', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (113, 'SAS-HW-274', 'Dell OptiPlex 3080', 5, '硬件资产', 'CPU / Dell / OptiPlex 3080 / Win 10 Pro / Core i3-10100 / 8G / 480G, 1T', '台', 1.000000, 0.000000, NULL, 'Production', 'Halimaton/Syafiq', 'Production 1', 'IN_USE', 'SAS', 'HARDWARE', '274', '序列号: 3H5TTC3;用途: RF', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (114, 'SMT/PRO2/002PC', 'Dell', 5, '硬件资产', 'Monitor / Dell', '台', 1.000000, 0.000000, NULL, 'Production', 'Halimaton/Syafiq', 'Prod 2 / Line 1', 'IN_USE', 'SAS', 'HARDWARE', '275', '用途: RF', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (115, 'SMT/PRO2/002CPU', 'Dell OptiPlex 3080', 5, '硬件资产', 'CPU / Dell / OptiPlex 3080 / Core i3-10100 / 1T', '台', 1.000000, 0.000000, NULL, 'Production', 'Halimaton/Syafiq', 'Prod 2 / Line 1', 'IN_USE', 'SAS', 'HARDWARE', '276', '序列号: CDVSTC3;用途: RF', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (116, 'SMT/PRO2/003PC', 'Dell', 5, '硬件资产', 'Monitor / Dell', '台', 1.000000, 0.000000, NULL, 'Production', 'Halimaton/Syafiq', 'Prod 2 / Line 1', 'IN_USE', 'SAS', 'HARDWARE', '277', '用途: RF', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (117, 'SMT/PRO2/003CPU', 'Dell OptiPlex 7050', 5, '硬件资产', 'CPU / Dell / OptiPlex 7050 / Win 10 Pro / Core i7-6700 / 8G / 500G', '台', 1.000000, 0.000000, NULL, 'Production', 'Halimaton/Syafiq', 'Prod 2 / Line 1', 'IN_USE', 'SAS', 'HARDWARE', '278', '序列号: 18TR7N2 / 1R22GL2;用途: RF', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (118, 'SMT/PRO2/004PC', 'Dell', 5, '硬件资产', 'Monitor / Dell', '台', 1.000000, 0.000000, NULL, 'Production', 'Halimaton/Syafiq', 'Prod 2 / Line 2', 'IN_USE', 'SAS', 'HARDWARE', '279', '用途: RF', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (119, 'SMT/PRO2/004CPU', 'Dell OptiPlex 7050', 5, '硬件资产', 'CPU / Dell / OptiPlex 7050 / Win 10 Pro / Core i7-6700 / 4G / 500G', '台', 1.000000, 0.000000, NULL, 'Production', 'Halimaton/Syafiq', 'Prod 2 / Line 2', 'IN_USE', 'SAS', 'HARDWARE', '280', '序列号: B8MS9P2;用途: RF', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (120, 'SMT/PRO2/005PC', 'HP', 5, '硬件资产', 'Monitor / HP', '台', 1.000000, 0.000000, NULL, 'Production', 'Halimaton/Syafiq', 'Prod 2 / Line 2', 'IN_USE', 'SAS', 'HARDWARE', '281', '用途: RF', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (121, 'SMT/PRO2/005CPU', 'Dell OPtiPlex 3020', 5, '硬件资产', 'CPU / Dell / OPtiPlex 3020 / Win 10 Pro / Core i3-4160 / 8G / 256G', '台', 1.000000, 0.000000, NULL, 'Production', 'Halimaton/Syafiq', 'Prod 2 / Line 2', 'IN_USE', 'SAS', 'HARDWARE', '282', '序列号: FNL9YC2;用途: RF', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (122, 'SMT/PRO2/006PC', 'Dell', 5, '硬件资产', 'Monitor / Dell', '台', 1.000000, 0.000000, NULL, 'Production', 'Halimaton/Syafiq', 'Prod 2 / Line 2', 'IN_USE', 'SAS', 'HARDWARE', '283', '用途: RF', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (123, 'SMT/PRO2/006CPU', 'Dell OptiPlex 7050', 5, '硬件资产', 'CPU / Dell / OptiPlex 7050 / Win 10 Pro / Core i7-6700 / 8G / 500G', '台', 1.000000, 0.000000, NULL, 'Production', 'Halimaton/Syafiq', 'Prod 2 / Line 2', 'IN_USE', 'SAS', 'HARDWARE', '284', '序列号: 18TR7N2;用途: RF', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (124, 'SMT/PRO2/007PC', 'Dell', 5, '硬件资产', 'Monitor / Dell', '台', 1.000000, 0.000000, NULL, 'Production', 'Halimaton/Syafiq', 'Prod 2 / Line 2', 'IN_USE', 'SAS', 'HARDWARE', '285', '用途: RF', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (125, 'SMT/PRO2/007CPU,SMT/PRO2/013CPU', 'HP HP Pro 3330 MT', 5, '硬件资产', 'CPU / HP / HP Pro 3330 MT / Core i7-2600', '台', 1.000000, 0.000000, NULL, 'Production', 'Halimaton/Syafiq', 'Prod 2 / Line 2', 'IN_USE', 'SAS', 'HARDWARE', '286', '序列号: SGH221S6RS;用途: RF', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (126, 'SMT/PRO2/008PC', 'Dell', 5, '硬件资产', 'Monitor / Dell', '台', 1.000000, 0.000000, NULL, 'Production', 'Halimaton/Syafiq', 'Prod 2 / Line 3', 'IN_USE', 'SAS', 'HARDWARE', '287', '用途: RF', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (127, 'SMT/PRO2/008CPU', 'Dell OptiPlex 7050', 5, '硬件资产', 'CPU / Dell / OptiPlex 7050 / Win 10 Pro / Core i7-6700 / 16G / 500G', '台', 1.000000, 0.000000, NULL, 'Production', 'Mazidah', 'Prod 2 / Line 3', 'IN_USE', 'SAS', 'HARDWARE', '288', '序列号: 1P12LQ2;用途: RF;原备注: 3-Aug : Ram upgraded from 8Gb to 16Gb', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (128, 'SMT/PRO2/009PC', 'Lenovo', 5, '硬件资产', 'Monitor / Lenovo', '台', 1.000000, 0.000000, NULL, 'Production', 'Halimaton/Syafiq', 'Prod 2 / Line 3', 'IN_USE', 'SAS', 'HARDWARE', '289', '用途: RF', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (129, 'SMT/PRO2/009CPU', 'Dell OptiPlex 7050', 5, '硬件资产', 'CPU / Dell / OptiPlex 7050 / Win 10 Pro / Core i7-6700 / 16G / 500G', '台', 1.000000, 0.000000, NULL, 'Production', 'Mazidah', 'Prod 2 / Line 3', 'IN_USE', 'SAS', 'HARDWARE', '290', '序列号: BB4W9P2;用途: RF;原备注: 3-Aug: Ram upgraded from 8Gb to 16Gb', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (130, 'SMT/PRO2/010PC', 'Dell', 5, '硬件资产', 'Monitor / Dell', '台', 1.000000, 0.000000, NULL, 'Production', 'Halimaton/Syafiq', 'Prod 2 / Line 3', 'IN_USE', 'SAS', 'HARDWARE', '291', '用途: RF', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (131, 'SMT/PRO2/010CPU', 'Dell OptiPlex 7050', 5, '硬件资产', 'CPU / Dell / OptiPlex 7050 / Win 10 Pro / Core i7-6700 / 8G / 500G', '台', 1.000000, 0.000000, NULL, 'Production', 'Halimaton/Syafiq', 'Prod 2 / Line 3', 'IN_USE', 'SAS', 'HARDWARE', '292', '序列号: GT8YPM2;用途: RF', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (132, 'SMT/PRO2/011PC', 'HP', 5, '硬件资产', 'Monitor / HP', '台', 1.000000, 0.000000, NULL, 'Production', 'Halimaton/Syafiq', 'Prod 2 / Line 3', 'IN_USE', 'SAS', 'HARDWARE', '293', '用途: RF', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (133, 'SMT/PRO2/011CPU', 'Dell OptiPlex 3080', 5, '硬件资产', 'CPU / Dell / OptiPlex 3080 / Win 11 Pro / Core i3-10100 / 12G / 1TB', '台', 1.000000, 0.000000, NULL, 'Production', 'Ma', 'Prod 2 / Line 3', 'IN_USE', 'SAS', 'HARDWARE', '294', '序列号: JG5TTC3;用途: RF', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (134, 'SMT/PRO2/012PC', 'Lenovo', 5, '硬件资产', 'Monitor / Lenovo', '台', 1.000000, 0.000000, NULL, 'Production', 'Halimaton/Syafiq', 'Prod 2 / Line 3', 'IN_USE', 'SAS', 'HARDWARE', '295', '用途: RF', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (135, 'SMT/PRO2/012CPU', 'Dell OptiPlex 7050', 5, '硬件资产', 'CPU / Dell / OptiPlex 7050 / Win 10 Pro / Core i7-6700 / 8G / 500G', '台', 1.000000, 0.000000, NULL, 'Production', 'Halimaton/Syafiq', 'Prod 2 / Line 3', 'IN_USE', 'SAS', 'HARDWARE', '296', '序列号: 3WRV9P2;用途: RF', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (136, 'SMT/PRO2/013PC', 'Dell', 5, '硬件资产', 'Monitor / Dell', '台', 1.000000, 0.000000, NULL, 'Production', 'Halimaton/Syafiq', 'Prod 2 / Line 4', 'IN_USE', 'SAS', 'HARDWARE', '297', '用途: RF', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (137, 'SMT/PRO2/014PC', 'Dell', 5, '硬件资产', 'Monitor / Dell', '台', 1.000000, 0.000000, NULL, 'Production', 'Halimaton/Syafiq', 'Prod 2 / Line 4', 'IN_USE', 'SAS', 'HARDWARE', '298', '用途: RF', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (138, 'SMT/PRO2/014CPU', 'Dell Vostro 230', 5, '硬件资产', 'CPU / Dell / Vostro 230 / Win 7 Pro / Core 2 Duo E7500 / 4G / 500G', '台', 1.000000, 0.000000, NULL, 'Production 2', 'Halimaton/Syafiq', 'Prod 2 / Line 4', 'IN_USE', 'SAS', 'HARDWARE', '299', '序列号: 1VBK92S;用途: RF', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (139, 'SMT/PRO2/015PC', 'Dell', 5, '硬件资产', 'Monitor / Dell', '台', 1.000000, 0.000000, NULL, 'Production', 'Halimaton/Syafiq', 'Prod 2 / Line 4', 'IN_USE', 'SAS', 'HARDWARE', '300', '用途: RF', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (140, 'SMT/PRO2/015CPU', 'Dell OptiPlex 7050', 5, '硬件资产', 'CPU / Dell / OptiPlex 7050 / Win 10 Pro / Core i7-6700 / 8G / 500G', '台', 1.000000, 0.000000, NULL, 'Production', 'Halimaton/Syafiq', 'Prod 2 / Line 4', 'IN_USE', 'SAS', 'HARDWARE', '301', '序列号: 8L2YTK2;用途: RF', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (141, 'SMT/PRO2/016PC', 'Lenovo', 5, '硬件资产', 'Monitor / Lenovo', '台', 1.000000, 0.000000, NULL, 'Production', 'Halimaton/Syafiq', 'Prod 2 / Line 4', 'IN_USE', 'SAS', 'HARDWARE', '302', '用途: RF', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (142, 'SMT/PRO2/016CPU', 'Dell OptiPlex 7050', 5, '硬件资产', 'CPU / Dell / OptiPlex 7050 / Win 10 Pro / Core i7-6700 / 8G / 500G', '台', 1.000000, 0.000000, NULL, 'Production', 'Halimaton/Syafiq', 'Prod 2 / Line 4', 'IN_USE', 'SAS', 'HARDWARE', '303', '序列号: CF7V7N2;用途: RF', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (143, 'SMT/PRO1/017PC', 'Dell', 5, '硬件资产', 'Monitor / Dell', '台', 1.000000, 0.000000, NULL, 'Production', 'Halimaton/Syafiq', 'Prod 1', 'IN_USE', 'SAS', 'HARDWARE', '304', '用途: Packing', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (144, 'SMT/PRO1/017CPU', 'Dell OptiPlex 7050', 5, '硬件资产', 'CPU / Dell / OptiPlex 7050 / Win 10 Pro / Core i7-6700 / 8G / 500GB', '台', 1.000000, 0.000000, NULL, 'Production', 'Halimaton/Syafiq', 'Prod 1', 'IN_USE', 'SAS', 'HARDWARE', '305', '序列号: FBNPLN2;用途: Packing', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (145, 'SMT/PRO1/018PC', 'Dell', 5, '硬件资产', 'Monitor / Dell', '台', 1.000000, 0.000000, NULL, 'Production', 'Halimaton/Syafiq', 'Prod 1', 'IN_USE', 'SAS', 'HARDWARE', '306', '用途: Packing', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (146, 'SMT/PRO1/018CPU', 'Dell OptiPlex 7050', 5, '硬件资产', 'CPU / Dell / OptiPlex 7050 / Win 10 Pro / Core i7-6700 / 8G / 500G', '台', 1.000000, 0.000000, NULL, 'Production', 'Halimaton/Syafiq', 'Prod 1', 'IN_USE', 'SAS', 'HARDWARE', '307', '序列号: J26QLN2;用途: Packing', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (147, 'SMT/PRO1/019PC', 'Dell', 5, '硬件资产', 'Monitor / Dell', '台', 1.000000, 0.000000, NULL, 'Production', 'Halimaton/Syafiq', 'Prod 1', 'IN_USE', 'SAS', 'HARDWARE', '308', '用途: Packing', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (148, 'SMT/PRO1/019CPU', 'Dell OptiPlex 3080', 5, '硬件资产', 'CPU / Dell / OptiPlex 3080 / Win 11 Pro / Core i3-10100 / 8G / 500G', '台', 1.000000, 0.000000, NULL, 'Production', 'Mazidah', 'Prod 2', 'IN_USE', 'SAS', 'HARDWARE', '309', '序列号: 2H5TTC3;用途: Packing', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (149, 'SMT/PRO1/020PC', 'Dell', 5, '硬件资产', 'Monitor / Dell', '台', 1.000000, 0.000000, NULL, 'Production', 'Halimaton/Syafiq', 'Prod 1', 'IN_USE', 'SAS', 'HARDWARE', '310', '用途: Packing', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (150, 'SMT/PRO1/020CPU', 'Dell OptiPlex 3080', 5, '硬件资产', 'CPU / Dell / OptiPlex 3080 / Win 10 Pro / Core i3-10100 / 8G / 1T', '台', 1.000000, 0.000000, NULL, 'Production', 'Halimaton/Syafiq', 'Prod 1', 'IN_USE', 'SAS', 'HARDWARE', '311', '序列号: 8DVSTC3;用途: Packing', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (151, 'SMT/PRO1/021PC', 'Dell', 5, '硬件资产', 'Monitor / Dell', '台', 1.000000, 0.000000, NULL, 'Production', 'Halimaton/Syafiq', 'Prod 1', 'IN_USE', 'SAS', 'HARDWARE', '312', '用途: Packing', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (152, 'SMT/PRO1/021CPU', 'Dell OptiPlex 5040', 5, '硬件资产', 'CPU / Dell / OptiPlex 5040 / Win 10 Pro / Core i5-6500 / 8G / 500G', '台', 1.000000, 0.000000, NULL, 'Production', 'Halimaton/Syafiq', 'Prod 1', 'IN_USE', 'SAS', 'HARDWARE', '313', '序列号: 7RCBHJ2;用途: Packing', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (153, 'SMT/PRO1/022PC', 'Dell', 5, '硬件资产', 'Monitor / Dell', '台', 1.000000, 0.000000, NULL, 'Production', 'Halimaton/Syafiq', 'Prod 1', 'IN_USE', 'SAS', 'HARDWARE', '314', '用途: Packing', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (154, 'SMT/PRO1/022CPU', 'Dell OptiPlex 7050', 5, '硬件资产', 'CPU / Dell / OptiPlex 7050 / Win 10 Pro / Core i7-6700 / 8G / 500G', '台', 1.000000, 0.000000, NULL, 'Production', 'Hana', 'Prod 1', 'IN_USE', 'SAS', 'HARDWARE', '315', '序列号: C7YQ7N2;用途: Packing', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (155, 'SMT/PRO1/023PC', 'HP', 5, '硬件资产', 'Monitor / HP', '台', 1.000000, 0.000000, NULL, 'Production', 'Halimaton/Syafiq', 'Prod 1', 'IN_USE', 'SAS', 'HARDWARE', '316', '用途: Packing', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (156, 'SMT/PRO1/023CPU', 'Dell OptiPlex 3020', 5, '硬件资产', 'CPU / Dell / OptiPlex 3020 / Win 10 Pro / Core i3-4160 / 8G / 240G', '台', 1.000000, 0.000000, NULL, 'Production', 'Halimaton/Syafiq', 'Prod 1', 'IN_USE', 'SAS', 'HARDWARE', '317', '序列号: GJZ9YC2;用途: Packing', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (157, 'SMT/PRO1/024PC', 'HP', 5, '硬件资产', 'Monitor / HP', '台', 1.000000, 0.000000, NULL, 'Production', 'Halimaton/Syafiq', 'Prod 1', 'IN_USE', 'SAS', 'HARDWARE', '318', '用途: Packing', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (158, 'SMT/PRO1/024CPU', 'HP ProDesk 400 G7', 5, '硬件资产', 'CPU / HP / ProDesk 400 G7 / Win 11 Pro / Core i5-10500 / 8G / 1T', '台', 1.000000, 0.000000, NULL, 'Production', 'Herman', 'Prod 1', 'IN_USE', 'SAS', 'HARDWARE', '319', '序列号: 4CE219BMTT;用途: Packing', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (159, 'SMT/PRO1/025PC', 'Dell', 5, '硬件资产', 'Monitor / Dell', '台', 1.000000, 0.000000, NULL, 'Production', 'Halimaton/Syafiq', 'Prod 1', 'IN_USE', 'SAS', 'HARDWARE', '320', '用途: Packing', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (160, 'SMT/PRO1/026PC', 'Dell', 5, '硬件资产', 'Monitor / Dell', '台', 1.000000, 0.000000, NULL, 'Production', 'Halimaton/Syafiq', 'Prod 1', 'IN_USE', 'SAS', 'HARDWARE', '321', '用途: Packing', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (161, 'SMT/PRO1/027PC', 'Dell', 5, '硬件资产', 'Monitor / Dell', '台', 1.000000, 0.000000, NULL, 'Production', 'Halimaton/Syafiq', 'Prod 1', 'IN_USE', 'SAS', 'HARDWARE', '322', '用途: Packing', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (162, 'SMT/PRO1/028PC', 'LG', 5, '硬件资产', 'Monitor / LG', '台', 1.000000, 0.000000, NULL, 'Production', 'Halimaton/Syafiq', 'Prod 1', 'IN_USE', 'SAS', 'HARDWARE', '323', '用途: Packing', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (163, 'SMT/TECH/046CPU', 'Dell OptiPlex 3080', 5, '硬件资产', 'CPU / Dell / OptiPlex 3080 / Win 11 Pro / Core i3-10100 / 12G / 1T', '台', 1.000000, 0.000000, NULL, 'Engineering', NULL, NULL, 'IN_USE', 'SAS', 'HARDWARE', '324', '序列号: 1H5TTC3', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (164, 'SAS-HW-325', 'Dell OptiPlex 7070', 5, '硬件资产', 'CPU / Dell / OptiPlex 7070 / Win 11 Pro / Core i7-9700 / 16G / 500G', '台', 1.000000, 0.000000, NULL, 'Production', NULL, NULL, 'IN_USE', 'SAS', 'HARDWARE', '325', '序列号: 7PGVY23', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (165, 'SAS-HW-326', 'Dell OptiPlex 7070', 5, '硬件资产', 'CPU / Dell / OptiPlex 7070 / Win 11 Pro / Core i7-9700 / 16G / 500G', '台', 1.000000, 0.000000, NULL, 'Production', NULL, NULL, 'IN_USE', 'SAS', 'HARDWARE', '326', '序列号: 8D9VY23', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (166, 'SMT/LAP8/11112024', 'Lenovo ThinkPad X1 Carbon Gen 8', 5, '硬件资产', 'Laptop / Lenovo / ThinkPad X1 Carbon Gen 8 / Win 11 Pro / Core i7-10510U / 16G / 500G', '台', 1.000000, 0.000000, NULL, 'Quality', 'Izyanti', 'Personal Carry', 'IN_USE', 'SAS', 'HARDWARE', '327', '序列号: PF1V7QYM;用途: Personal Work', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (167, 'SAS-HW-328', 'Dell OptiPlex 7050', 5, '硬件资产', 'CPU / Dell / OptiPlex 7050 / Win 10 Pro / Core i7-6700 / 8G / 500G', '台', 1.000000, 0.000000, NULL, 'Quality', 'Izyanti', NULL, 'IN_USE', 'SAS', 'HARDWARE', '328', '序列号: 51NNLN2', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (168, 'SAS-HW-329', 'HP ProDesk 400 G7', 5, '硬件资产', 'CPU / HP / ProDesk 400 G7 / Win 10 Pro / Core i5-10500 / 8G / 250G', '台', 1.000000, 0.000000, NULL, 'Quality', 'Izyanti', NULL, 'IN_USE', 'SAS', 'HARDWARE', '329', '序列号: 4CE216BDPM', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (169, 'SMT/NO2/PC058', 'Lenovo L24i-40 23.8\" FHD', 5, '硬件资产', 'Monitor / Lenovo / L24i-40 23.8\" FHD', '台', 1.000000, 0.000000, NULL, 'Technical & Technologies', 'Daniel', 'R&D Room', 'IN_USE', 'SAS', 'HARDWARE', '330', '用途: Personal Work', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (170, 'SMT/SERVER/054PC', 'Dell 1707FP', 5, '硬件资产', 'Monitor / Dell / 1707FP', '台', 1.000000, 0.000000, NULL, 'Technical & Technologies', 'Daniel', 'Server Room', 'IN_USE', 'SAS', 'HARDWARE', '331', '用途: Server', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (171, 'SMT/SERVER/065SN', 'TP-Link TP-Link T2600G-52TS', 5, '硬件资产', 'Switch / TP-Link / TP-Link T2600G-52TS', '台', 1.000000, 0.000000, NULL, 'Technical & Technologies', 'Daniel', 'Server Room', 'IN_USE', 'SAS', 'HARDWARE', '332', '序列号: 2194962000254;MAC: 98-DA-C4-3C-70-1F;用途: Network Switch', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (172, 'SMT/SERVER/064CPU', 'Dell OptiPlex 7010', 5, '硬件资产', 'Server / Dell / OptiPlex 7010 / Core i5-12500 / 16G / 256G M2,2x 1TB', '台', 1.000000, 0.000000, NULL, 'Technical & Technologies', NULL, 'Server Room', 'IN_USE', 'SAS', 'HARDWARE', '333', '序列号: JNKWG24;用途: Firewall', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (173, 'SMT/SERVER/066SN', 'TP-Link Omada SG3452', 5, '硬件资产', 'Switch / TP-Link / Omada SG3452', '台', 1.000000, 0.000000, NULL, 'Technical & Technologies', NULL, 'Server Room', 'IN_USE', 'SAS', 'HARDWARE', '334', '序列号: 22487K4000718;MAC: 7C-F1-7E-FD-1C-07;用途: Network Switch', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (174, 'SAS-HW-335', 'TP-Link TP-Link TL-SG3428', 5, '硬件资产', 'Switch / TP-Link / TP-Link TL-SG3428', '台', 1.000000, 0.000000, NULL, 'Technical & Technologies', NULL, 'Production 2', 'IN_USE', 'SAS', 'HARDWARE', '335', '序列号: 2236057000952 v2.20;MAC: 40-ED-00-B6-41-03;用途: Network Switch', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (175, 'SAS-HW-336', 'TP-Link TP-Link TL-SG3428', 5, '硬件资产', 'Switch / TP-Link / TP-Link TL-SG3428', '台', 1.000000, 0.000000, NULL, 'Technical & Technologies', NULL, 'Production 1', 'IN_USE', 'SAS', 'HARDWARE', '336', '序列号: 2212005R00360 v2.0;MAC: 00-5F-67-77-B1-09;用途: Network Switch', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (176, 'SMT/OFFICE2/069MOD', 'TP-Link TP-Link AC1300', 5, '硬件资产', 'Router / TP-Link / TP-Link AC1300', '台', 1.000000, 0.000000, '2021-02-06 00:00:00', 'Technical & Technologies', NULL, 'Disccussion Area Level 1', 'IN_USE', 'SAS', 'HARDWARE', '337', '序列号: 22085K6C00203;MAC: 84-D8-1B-42-01-30;用途: Wifi Router', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (177, 'SAS-HW-338', 'TP-Link TP-Link AC1300', 5, '硬件资产', 'Router / TP-Link / TP-Link AC1300', '台', 1.000000, 0.000000, '2021-02-06 00:00:00', 'Technical & Technologies', NULL, 'Engineering', 'IN_USE', 'SAS', 'HARDWARE', '338', '序列号: 22085K6B00203;MAC: 84-D8-1B-42-04-80;用途: Wifi Router', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (178, 'SAS-HW-339', 'TP-Link TP-Link AC1300', 5, '硬件资产', 'Router / TP-Link / TP-Link AC1300', '台', 1.000000, 0.000000, '2021-02-06 00:00:00', 'Technical & Technologies', NULL, 'CEO Room', 'IN_USE', 'SAS', 'HARDWARE', '339', '序列号: 22085K6A00203;MAC: 84-D8-1B-42-07-74;用途: Wifi Router', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (179, 'No Code', 'D-link DGS-1210-24', 5, '硬件资产', 'Switch / D-link / DGS-1210-24', '台', 1.000000, 0.000000, NULL, 'Technical & Technologies', 'Daniel', 'Server Room', 'REPAIR', 'SAS', 'HARDWARE', '340', '序列号: QB1A1A8000282;MAC: F0-7D-68-C2-91-07;用途: Network Switch', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (180, 'No Code', 'D-Link DGS-1210-24', 5, '硬件资产', 'Switch / D-Link / DGS-1210-24', '台', 1.000000, 0.000000, NULL, 'Technical & Technologies', 'Daniel', 'R&D Room', 'REPAIR', 'SAS', 'HARDWARE', '341', '序列号: QB1A1A7002042;MAC: F0-7D-68-BB-F5-D0;用途: Network Switch', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (181, 'SAS-HW-342', 'D-link DGS-1210-16', 5, '硬件资产', 'Switch / D-link / DGS-1210-16', '台', 1.000000, 0.000000, NULL, 'Technical & Technologies', NULL, 'Disccussion Area Level 1', 'IN_USE', 'SAS', 'HARDWARE', '342', '序列号: QB111A8000724;MAC: F0-7D-68-C3-6B-D1;用途: Network Switch', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (182, 'SMT/SERVER/058MOD', 'TM Modem Fiber Home', 5, '硬件资产', 'Modem / TM Modem Fiber Home', '台', 1.000000, 0.000000, NULL, 'Technical & Technologies', 'Daniel', 'Server Room', 'IN_USE', 'SAS', 'HARDWARE', '343', '序列号: TBA;用途: Network Conn', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (183, 'SMT/SERVER/054CPU', 'Dell Optiplex 960', 5, '硬件资产', 'Server / Dell / Optiplex 960 / Core i5-12500 / 8G / 256G M2', '台', 1.000000, 0.000000, NULL, 'Technical & Technologies', 'Daniel', 'Server Room', 'IN_USE', 'SAS', 'HARDWARE', '344', '序列号: FKD822S;用途: Server', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (184, 'SMT/LAP6/11112024', 'Lenovo ThinkPad X1 Carbon Gen 8', 5, '硬件资产', 'Laptop / Lenovo / ThinkPad X1 Carbon Gen 8 / Win 11 Pro / Core i7-10610U / 16G / 500G', '台', 1.000000, 0.000000, NULL, 'Technical & Technologies', 'Alya', 'Personal Carry', 'IN_USE', 'SAS', 'HARDWARE', '345', '序列号: PF2M81GS;用途: Personal Work', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (185, 'SMT/LAP9/11112024', 'Dell Latitude 3440', 5, '硬件资产', 'Laptop / Dell / Latitude 3440 / Win 11 Pro / Core i7-1355U / 16G / 500G', '台', 1.000000, 0.000000, NULL, 'Technical & Technologies', 'Haslim', 'Personal Carry', 'IN_USE', 'SAS', 'HARDWARE', '346', '序列号: 80NHPX3;用途: Personal Work', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (186, 'SMT/LAP11/11112024', 'Dell Latitude 3440', 5, '硬件资产', 'Laptop / Dell / Latitude 3440 / Win 11 Pro / Core i7-1355U / 16G / 500G', '台', 1.000000, 0.000000, NULL, 'Technical & Technologies', 'Hafiz', 'Personal Carry', 'IN_USE', 'SAS', 'HARDWARE', '347', '序列号: C0NHPX3;用途: Personal Work', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (187, 'SMT/LAP16/11112024', 'Lenovo ThinkPad X1 Carbon Gen 8', 5, '硬件资产', 'Laptop / Lenovo / ThinkPad X1 Carbon Gen 8 / Win 11 Pro / Core i7-10510U / 16G / 500G', '台', 1.000000, 0.000000, NULL, 'Technical & Technologies', 'Aqila', NULL, 'IN_USE', 'SAS', 'HARDWARE', '348', '序列号: PF1VB6T6;用途: Testing', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (188, 'SAS-HW-349', 'Dell OptiPlex 3080', 5, '硬件资产', 'CPU / Dell / OptiPlex 3080 / Ubuntu / Core i3-10100 / 8G / 1TB', '台', 1.000000, 0.000000, NULL, 'Technical & Technologies', NULL, NULL, 'IN_USE', 'SAS', 'HARDWARE', '349', '序列号: HG5TTC3', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (189, 'SMT/N02/CPU035', 'Dell OptiPlex 3080', 5, '硬件资产', 'CPU / Dell / OptiPlex 3080 / Ubuntu / Core i3-10100 / 8G / 1TB', '台', 1.000000, 0.000000, NULL, 'Technical & Technologies', NULL, NULL, 'IN_USE', 'SAS', 'HARDWARE', '350', '序列号: BDVSTC3;MAC: B0:7B:25:08:F0:E2;原备注: Win LIcense Key : MP6Y3-B8NVP-2RRCP-R7X6T-H8RC2\n', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (190, 'SMT/LAP21/112004', 'HP HP 14s-cf3022tx', 5, '硬件资产', 'Laptop / HP / HP 14s-cf3022tx / Win 10 Home / Core i5-1035G1 / 8G / 500G', '台', 1.000000, 0.000000, NULL, 'Quality', 'Herman', NULL, 'IN_USE', 'SAS', 'HARDWARE', '351', '序列号: 5CG030828J', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (191, 'SMT/N02/CPU002', 'Dell OptiPlex 3020', 5, '硬件资产', 'CPU / Dell / OptiPlex 3020 / Core i3-4160 / 6G / 500G', '台', 1.000000, 0.000000, NULL, 'Quality', 'Herman', NULL, 'IN_USE', 'SAS', 'HARDWARE', '352', '序列号: 7CTDR42', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (192, 'Production14', 'Dell OptiPlex 3080', 5, '硬件资产', 'CPU / Dell / OptiPlex 3080 / Win 10 Pro / Core i3-10100 / 8G / 1TB', '台', 1.000000, 0.000000, NULL, 'Production 2', NULL, 'R&D Room', 'IN_USE', 'SAS', 'HARDWARE', '353', '序列号: 9DVSTC3', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (193, 'SAS-HW-354', 'Lenovo Lenovo Thinkcentre M7', 5, '硬件资产', 'CPU / Lenovo / Lenovo Thinkcentre M7 / Win 11 Pro / Core i5-10500 / 16G / 512G', '台', 1.000000, 0.000000, NULL, 'Laboratory', NULL, 'Laboratory', 'IN_USE', 'SAS', 'HARDWARE', '354', '序列号: PC1PPJ3J', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (194, 'SAS-HW-355', 'Lenovo Lenovo Thinkcentre M7', 5, '硬件资产', 'CPU / Lenovo / Lenovo Thinkcentre M7 / Win 11 Pro / Core i5-10500 / 16G / 512G', '台', 1.000000, 0.000000, NULL, 'Laboratory', NULL, 'Laboratory', 'IN_USE', 'SAS', 'HARDWARE', '355', '序列号: PC25J5K8', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (195, 'SAS-HW-356', 'Lenovo Lenovo Thinkcentre M7', 5, '硬件资产', 'CPU / Lenovo / Lenovo Thinkcentre M7 / Win 11 Pro / Core i5-10500 / 16G / 512G', '台', 1.000000, 0.000000, NULL, 'Laboratory', NULL, 'Laboratory', 'IN_USE', 'SAS', 'HARDWARE', '356', '序列号: PC2DX5Q3', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (196, 'SAS-HW-357', 'Lenovo Lenovo Thinkcentre M7', 5, '硬件资产', 'CPU / Lenovo / Lenovo Thinkcentre M7 / Win 11 Pro / Core i5-10500 / 16G / 512G', '台', 1.000000, 0.000000, NULL, 'Laboratory', NULL, 'Laboratory', 'IN_USE', 'SAS', 'HARDWARE', '357', '序列号: PC25J5KB', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (197, 'SAS-HW-358', 'Lenovo Lenovo Thinkcentre M7', 5, '硬件资产', 'CPU / Lenovo / Lenovo Thinkcentre M7 / Win 11 Pro / Core i5-10500 / 16G / 512G', '台', 1.000000, 0.000000, NULL, 'Laboratory', NULL, 'Laboratory', 'IN_USE', 'SAS', 'HARDWARE', '358', '序列号: PC1WY69D', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (198, 'SAS-HW-359', 'Lenovo Lenovo Thinkcentre M7', 5, '硬件资产', 'CPU / Lenovo / Lenovo Thinkcentre M7 / Win 11 Pro / Core i5-10500 / 16G / 512G', '台', 1.000000, 0.000000, NULL, 'Laboratory', NULL, 'Laboratory', 'IN_USE', 'SAS', 'HARDWARE', '359', '序列号: PC25J5KE', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (199, 'SAS-HW-360', 'Lenovo Lenovo Thinkcentre M7', 5, '硬件资产', 'CPU / Lenovo / Lenovo Thinkcentre M7 / Win 11 Pro / Core i5-10500 / 16G / 512G', '台', 1.000000, 0.000000, NULL, 'Laboratory', NULL, 'Laboratory', 'IN_USE', 'SAS', 'HARDWARE', '360', '序列号: PC1PQXP5', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (200, 'SAS-HW-361', 'Lenovo Lenovo Thinkcentre M7', 5, '硬件资产', 'CPU / Lenovo / Lenovo Thinkcentre M7 / Win 11 Pro / Core i5-10500 / 16G / 512G', '台', 1.000000, 0.000000, NULL, 'Laboratory', NULL, 'Laboratory', 'IN_USE', 'SAS', 'HARDWARE', '361', '序列号: PC2DX5Q0', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (201, 'SAS-HW-362', 'Lenovo Lenovo Thinkcentre M7', 5, '硬件资产', 'CPU / Lenovo / Lenovo Thinkcentre M7 / Win 11 Pro / Core i5-10500 / 16G / 512G', '台', 1.000000, 0.000000, NULL, 'Laboratory', NULL, 'Laboratory', 'IN_USE', 'SAS', 'HARDWARE', '362', '序列号: PC1PQXP6', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (202, 'SAS-HW-363', 'Lenovo Lenovo Thinkcentre M7', 5, '硬件资产', 'CPU / Lenovo / Lenovo Thinkcentre M7 / Win 11 Pro / Core i5-10500 / 16G / 512G', '台', 1.000000, 0.000000, NULL, 'Laboratory', NULL, 'Laboratory', 'IN_USE', 'SAS', 'HARDWARE', '363', '序列号: PC2DX5PF', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (203, 'SAS-HW-364', 'Lenovo Lenovo Thinkpad E14', 5, '硬件资产', 'Laptop / Lenovo / Lenovo Thinkpad E14 / Win 11 Pro / Core Ultra 5 225U / 16G / 512G', '台', 1.000000, 0.000000, NULL, 'Technical & Technologies', 'Aziman', NULL, 'IN_USE', 'SAS', 'HARDWARE', '364', '序列号: PF-62CZQH', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (204, 'SMT/LAP4/11112024', 'Lenovo ThinkPad X1 Carbon Gen 8', 5, '硬件资产', 'Laptop / Lenovo / ThinkPad X1 Carbon Gen 8 / Win 11 Pro / Core i7-10510U / 16G / 512G', '台', 1.000000, 0.000000, NULL, 'Engineering', 'x-Azam', NULL, 'IN_USE', 'SAS', 'HARDWARE', '365', '序列号: PF1VB7YC', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (205, 'SMT/STORE/053CPU', 'Dell OptiPlex 3080', 5, '硬件资产', 'CPU / Dell / OptiPlex 3080 / Win 11 Pro / Core i3-10100 / 8G / 250G', '台', 1.000000, 0.000000, NULL, 'Store', 'Vacant', 'Store Office', 'IN_USE', 'SAS', 'HARDWARE', '366', '序列号: 7DVSTC3', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (206, 'SMT/STORE/054CPU', 'HP ProDesk 400 G7', 5, '硬件资产', 'CPU / HP / ProDesk 400 G7 / Win 11 Pro / Core i5-10500 / 8G / 250G', '台', 1.000000, 0.000000, NULL, 'Store', 'Wan Rosli', 'Store Office', 'IN_USE', 'SAS', 'HARDWARE', '367', '序列号: 4CE216BDQ2', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (207, 'SMT/LAP21/112004', 'HP HP 14s-cf3022tx', 5, '硬件资产', 'Laptop / HP / HP 14s-cf3022tx / Win 11 Home / Core i5-1035G1 / 8G / 500G', '台', 1.000000, 0.000000, NULL, 'Store', 'Hazif', 'Store Office', 'IN_USE', 'SAS', 'HARDWARE', '368', '序列号: 5CG03082BJ;原备注: Bundled with Office Home & Student', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (208, 'SAS-HW-369', 'TP-Link TP-Link TL-MR6400', 5, '硬件资产', 'Router / TP-Link / TP-Link TL-MR6400', '台', 1.000000, 0.000000, NULL, 'Technical & Technologies', NULL, 'R&D Room', 'IN_USE', 'SAS', 'HARDWARE', '369', '序列号: 22082D8000244;MAC: 60-32-B1-BD-FB-FA;用途: Testing', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (209, 'SMT/OFFICE2/062CPU,SMT/N04/CPU004', 'Dell Vostro 230', 5, '硬件资产', 'CPU / Dell / Vostro 230 / Win 7 Pro / Core 2 Duo E7500 / 4G / 500G', '台', 1.000000, 0.000000, NULL, 'Production 2', NULL, NULL, 'IN_USE', 'SAS', 'HARDWARE', '370', '序列号: 846R72S', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (210, 'SAS-HW-371', 'Dell OptiPlex 790', 5, '硬件资产', 'CPU / Dell / OptiPlex 790 / Win 7 Pro / Core i5-2400 / 4G / 480G', '台', 1.000000, 0.000000, NULL, NULL, NULL, 'R&D Room', 'IN_USE', 'SAS', 'HARDWARE', '371', '序列号: CJN5F2S', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (211, 'SAS-HW-372', 'Hisense Hisense S02BDS7AA21E', 5, '硬件资产', 'Smartboard / Hisense / Hisense S02BDS7AA21E / Win 11 Pro / Core i7-10700 / 16G / 512G', '台', 1.000000, 0.000000, NULL, 'Admin', NULL, 'Meeting Room', 'IN_USE', 'SAS', 'HARDWARE', '372', '序列号: 3TB86B2303620 194VK21652', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (212, 'SAS-HW-373', 'N/A Server', 5, '硬件资产', 'Server / N/A / Server / Linux CentOS / 8TB', '台', 1.000000, 0.000000, NULL, 'Technical & Technologies', NULL, 'Server Room', 'IN_USE', 'SAS', 'HARDWARE', '373', '序列号: N/A;用途: Seafile', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (213, 'SAS-HW-374', 'N/A Server', 5, '硬件资产', 'Server / N/A / Server / Ubuntu 24.04.1 LTS / 8TB,1TB M2,512MB M2', '台', 1.000000, 0.000000, NULL, 'Technical & Technologies', NULL, 'Server Room', 'IN_USE', 'SAS', 'HARDWARE', '374', '序列号: N/A', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (214, 'SAS-SW-26', 'MS Office Home & Student', 6, '软件资产', 'Sticker', '套', 1.000000, 0.000000, NULL, NULL, NULL, NULL, 'IN_USE', 'SAS', 'SOFTWARE', '26', '原备注: Check Laptop with Herman', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (215, 'SAS-SW-18', 'MS Office Home & Business 2010', 6, '软件资产', 'Cert', '套', 1.000000, 0.000000, NULL, NULL, NULL, NULL, 'IN_USE', 'SAS', 'SOFTWARE', '18', '许可证: 23MQ8-Q739G-DT3MW-43B9K-PRGDV;原备注: Written: PTC8125D-01', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (216, 'SAS-SW-19', 'MS Office Home & Business 2010', 6, '软件资产', 'Cert', '套', 1.000000, 0.000000, NULL, NULL, NULL, NULL, 'IN_USE', 'SAS', 'SOFTWARE', '19', '许可证: Q69G3-62HB3-H9VYY-VBGM8-6YCYP;原备注: Written: PC-2 Habsah-Admin & PC31', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (217, 'SAS-SW-20', 'MS Office Home & Business 2010', 6, '软件资产', 'Cert', '套', 1.000000, 0.000000, NULL, NULL, NULL, NULL, 'IN_USE', 'SAS', 'SOFTWARE', '20', '许可证: VK32X-YGC4D-423VR-2XC4K-D4C4R;原备注: Written: PTC8125D-02', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (218, 'SAS-SW-21', 'MS Office Home & Business 2010', 6, '软件资产', 'Cert', '套', 1.000000, 0.000000, NULL, NULL, NULL, NULL, 'IN_USE', 'SAS', 'SOFTWARE', '21', '许可证: VTVDJ-8GCYX-4HC26-GPGQP-DRMY4;原备注: Written: Sharifah PC20', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (219, 'SAS-SW-22', 'MS Office Home & Business 2010', 6, '软件资产', 'Cert', '套', 1.000000, 0.000000, NULL, NULL, NULL, NULL, 'IN_USE', 'SAS', 'SOFTWARE', '22', '许可证: KBFDQ-4JGT4-VDWCT-C83WF-2RKWD;原备注: Written: Rosfi PC18', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (220, 'SAS-SW-23', 'MS Office Home & Student', 6, '软件资产', 'Sticker', '套', 1.000000, 0.000000, NULL, NULL, NULL, NULL, 'IN_USE', 'SAS', 'SOFTWARE', '23', '原备注: Bundled with HP Laptop 14s-cf3022TX (SN 5CG03082JY)', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (221, 'SAS-SW-24', 'MS Office Home & Student', 6, '软件资产', 'Sticker', '套', 1.000000, 0.000000, NULL, 'Account', NULL, NULL, 'IN_USE', 'SAS', 'SOFTWARE', '24', '原备注: Bundled with HP Laptop 14s-cf2036TX (SN 5CG011D1W7); written off - spoilt', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (222, 'SAS-SW-25', 'MS Office Home & Student', 6, '软件资产', 'Sticker', '套', 1.000000, 0.000000, NULL, NULL, NULL, NULL, 'IN_USE', 'SAS', 'SOFTWARE', '25', '原备注: Bundled with HP Laptop - 14s-cf3022tx (5CG03082JK) {Adha}', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (223, 'SAS-SW-17', 'MS Office Home & Business 2010', 6, '软件资产', 'Cert', '套', 1.000000, 0.000000, NULL, NULL, NULL, NULL, 'IN_USE', 'SAS', 'SOFTWARE', '17', '许可证: H7F93-PMMX8-8MHMT-4CY7W-W9QHM;原备注: Written: Khairul Bariyyah PC14', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (224, 'SAS-SW-27', 'MS Office Home & Student', 6, '软件资产', 'Sticker', '套', 1.000000, 0.000000, NULL, NULL, NULL, NULL, 'IN_USE', 'SAS', 'SOFTWARE', '27', '原备注: Bundled with HP Laptop 14s-cf3022TX (SN 5CG03082BJ)', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (225, 'SAS-SW-28', 'MS Office Home & Student 2010', 6, '软件资产', 'CD', '套', 1.000000, 0.000000, NULL, NULL, NULL, NULL, 'IN_USE', 'SAS', 'SOFTWARE', '28', '许可证: TQ8C3-67C72-7B33C-BM4GF-33VB2', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (226, 'SAS-SW-29', 'MS Office Home & Student 2010', 6, '软件资产', 'CD', '套', 1.000000, 0.000000, NULL, NULL, NULL, NULL, 'IN_USE', 'SAS', 'SOFTWARE', '29', '许可证: GRQJ3-2TM6Q-BRFY4-DFJYQ-2BQKM', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (227, 'SAS-SW-30', 'MS SQL Server 2017 Standard', 6, '软件资产', 'Amimo / CD', '套', 1.000000, 3750.000000, '2021-10-22 00:00:00', NULL, NULL, NULL, 'IN_USE', 'SAS', 'SOFTWARE', '30', '供应商: Amimo;许可证: PHDV4-3VJWD-N7JVP-FGPKY-XBV89;发票号: INV211001;原备注: 4 Core License Key: 4TQHY-D7R86-VGBFG-PW7GV-8G2FY', 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (228, 'SAS-SW-31', 'MS Windows 2000 Server', 6, '软件资产', 'Cert', '套', 1.000000, 0.000000, NULL, NULL, NULL, NULL, 'IN_USE', 'SAS', 'SOFTWARE', '31', NULL, 63, NULL, '0', '2026-09-28 20:42:29', '2026-09-28 20:42:29'); +INSERT INTO `tbl_asset` VALUES (229, 'SAS-SW-32', 'MS Windows 2000 Server Client Access License', 6, '软件资产', 'Cert', '套', 5.000000, 0.000000, NULL, NULL, NULL, NULL, 'IN_USE', 'SAS', 'SOFTWARE', '32', '许可证: 13925763;原备注: Authorization Number: 13880917ZZS0307', 63, NULL, '0', '2026-09-28 20:42:30', '2026-09-28 20:42:30'); +INSERT INTO `tbl_asset` VALUES (230, 'SAS-SW-33', 'Ubuntu 24.04.1 LTS', 6, '软件资产', 'Amimo', '套', 2.000000, 0.000000, '2024-10-14 00:00:00', NULL, NULL, NULL, 'IN_USE', 'SAS', 'SOFTWARE', '33', '供应商: Amimo;发票号: INV240902;原备注: For server', 63, NULL, '0', '2026-09-28 20:42:30', '2026-09-28 20:42:30'); +INSERT INTO `tbl_asset` VALUES (231, 'SAS-SW-1', 'Linux 6.8.0-45', 6, '软件资产', 'Amimo', '套', 2.000000, 0.000000, '2024-10-14 00:00:00', NULL, NULL, NULL, 'IN_USE', 'SAS', 'SOFTWARE', '1', '供应商: Amimo;发票号: INV240902;原备注: For server', 63, NULL, '0', '2026-09-28 20:42:30', '2026-09-28 20:42:30'); +INSERT INTO `tbl_asset` VALUES (232, 'SAS-SW-16', 'MS Office Home & Business 2010', 6, '软件资产', 'CD', '套', 1.000000, 0.000000, NULL, NULL, NULL, NULL, 'IN_USE', 'SAS', 'SOFTWARE', '16', '许可证: XG2WV-YRDV4-VQWQ2-XQQ26-XJ3FF;原备注: Written: SGH109RCWK', 63, NULL, '0', '2026-09-28 20:42:30', '2026-09-28 20:42:30'); +INSERT INTO `tbl_asset` VALUES (233, 'SAS-SW-15', 'MS Office Home & Business 2010', 6, '软件资产', 'CD', '套', 1.000000, 0.000000, NULL, NULL, NULL, NULL, 'IN_USE', 'SAS', 'SOFTWARE', '15', '许可证: YBDDT-C4QPP-J6T63-DQMB8-9XB29;原备注: Written: Burnny / Asus', 63, NULL, '0', '2026-09-28 20:42:30', '2026-09-28 20:42:30'); +INSERT INTO `tbl_asset` VALUES (234, 'SAS-SW-14', 'MS Office Home & Business 2010', 6, '软件资产', 'CD', '套', 1.000000, 0.000000, NULL, NULL, NULL, NULL, 'IN_USE', 'SAS', 'SOFTWARE', '14', '许可证: WY8KV-GQ39X-2WQF2-V8R93-RY6CT', 63, NULL, '0', '2026-09-28 20:42:30', '2026-09-28 20:42:30'); +INSERT INTO `tbl_asset` VALUES (235, 'SAS-SW-13', 'MS Office Home & Business 2010', 6, '软件资产', 'CD', '套', 1.000000, 0.000000, NULL, NULL, NULL, NULL, 'IN_USE', 'SAS', 'SOFTWARE', '13', '许可证: GTTC2-XH8PW-3WJFH-76VFQ-PHYX9', 63, NULL, '0', '2026-09-28 20:42:30', '2026-09-28 20:42:30'); +INSERT INTO `tbl_asset` VALUES (236, 'SAS-SW-12', 'MS Office Home & Business 2010', 6, '软件资产', 'CD', '套', 1.000000, 0.000000, NULL, NULL, NULL, NULL, 'IN_USE', 'SAS', 'SOFTWARE', '12', '许可证: BX27V-J9QMG-3VVWY-7JTYT-94CXB', 63, NULL, '0', '2026-09-28 20:42:30', '2026-09-28 20:42:30'); +INSERT INTO `tbl_asset` VALUES (237, 'SAS-SW-11', 'MS Office Home & Business', 6, '软件资产', 'Amimo', '套', 1.000000, 0.000000, NULL, 'Tech & Technology', NULL, NULL, 'IN_USE', 'SAS', 'SOFTWARE', '11', '供应商: Amimo;原备注: Bundled with 1 unit of Laptop', 63, NULL, '0', '2026-09-28 20:42:30', '2026-09-28 20:42:30'); +INSERT INTO `tbl_asset` VALUES (238, 'SAS-SW-10', 'MS Office Home & Business', 6, '软件资产', 'Amimo', '套', 10.000000, 0.000000, '2026-01-21 00:00:00', 'Laboratory', NULL, NULL, 'IN_USE', 'SAS', 'SOFTWARE', '10', '供应商: Amimo;许可证: Smt@123;发票号: INV260101;原备注: Bundled with 10 unit of PC purchase for Lab.', 63, NULL, '0', '2026-09-28 20:42:30', '2026-09-28 20:42:30'); +INSERT INTO `tbl_asset` VALUES (239, 'SAS-SW-9', 'MS Office 2021 Pro', 6, '软件资产', 'Amimo', '套', 1.000000, 0.000000, '2024-06-21 00:00:00', 'HR', NULL, NULL, 'IN_USE', 'SAS', 'SOFTWARE', '9', '供应商: Amimo;发票号: INV240601;原备注: Price bundled with PC purchase.', 63, NULL, '0', '2026-09-28 20:42:30', '2026-09-28 20:42:30'); +INSERT INTO `tbl_asset` VALUES (240, 'SAS-SW-8', 'MS Office 2021 Pro', 6, '软件资产', 'Amimo', '套', 2.000000, 0.000000, '2024-04-03 00:00:00', NULL, NULL, NULL, 'IN_USE', 'SAS', 'SOFTWARE', '8', '供应商: Amimo;发票号: INV240401;原备注: Price bundled with PC purchase.', 63, NULL, '0', '2026-09-28 20:42:30', '2026-09-28 20:42:30'); +INSERT INTO `tbl_asset` VALUES (241, 'SAS-SW-7', 'MS Office 2021 Home & Business', 6, '软件资产', 'Amimo', '套', 1.000000, 750.000000, '2024-02-13 00:00:00', NULL, NULL, NULL, 'IN_USE', 'SAS', 'SOFTWARE', '7', '供应商: Amimo;发票号: INV240201', 63, NULL, '0', '2026-09-28 20:42:30', '2026-09-28 20:42:30'); +INSERT INTO `tbl_asset` VALUES (242, 'SAS-SW-6', 'MS Office 2019 Pro Plus', 6, '软件资产', 'Amimo', '套', 4.000000, 2320.000000, '2025-01-14 00:00:00', NULL, NULL, NULL, 'IN_USE', 'SAS', 'SOFTWARE', '6', '供应商: Amimo;发票号: QUO250101', 63, NULL, '0', '2026-09-28 20:42:30', '2026-09-28 20:42:30'); +INSERT INTO `tbl_asset` VALUES (243, 'SAS-SW-5', 'MS Office 2019 Pro Plus', 6, '软件资产', 'Amimo', '套', 1.000000, 580.000000, '2024-04-03 00:00:00', NULL, NULL, NULL, 'IN_USE', 'SAS', 'SOFTWARE', '5', '供应商: Amimo;发票号: INV240402', 63, NULL, '0', '2026-09-28 20:42:30', '2026-09-28 20:42:30'); +INSERT INTO `tbl_asset` VALUES (244, 'SAS-SW-4', 'MS Office 2019 Pro', 6, '软件资产', 'Amimo', '套', 1.000000, 0.000000, '2024-09-27 00:00:00', NULL, NULL, NULL, 'IN_USE', 'SAS', 'SOFTWARE', '4', '供应商: Amimo;发票号: INV240901;原备注: Price bundled with PC purchase.', 63, NULL, '0', '2026-09-28 20:42:30', '2026-09-28 20:42:30'); +INSERT INTO `tbl_asset` VALUES (245, 'SAS-SW-3', 'MS Office 2019 Home & Business', 6, '软件资产', 'Amimo', '套', 2.000000, 1160.000000, '2024-01-11 00:00:00', NULL, NULL, NULL, 'IN_USE', 'SAS', 'SOFTWARE', '3', '供应商: Amimo;发票号: INV240101', 63, NULL, '0', '2026-09-28 20:42:30', '2026-09-28 20:42:30'); +INSERT INTO `tbl_asset` VALUES (246, 'SAS-SW-2', 'MS Office 2019 Home & Business', 6, '软件资产', 'Amimo', '套', 15.000000, 8700.000000, '2023-09-18 00:00:00', NULL, NULL, NULL, 'IN_USE', 'SAS', 'SOFTWARE', '2', '供应商: Amimo;发票号: INV230902', 63, NULL, '0', '2026-09-28 20:42:30', '2026-09-28 20:42:30'); +INSERT INTO `tbl_asset` VALUES (247, 'SIM-896019210381702563', 'SIM卡 896019210381702563', 7, 'SIM卡', '183.171.11.141 / 4G Modem', '张', 1.000000, 0.000000, '2026-06-03 00:00:00', NULL, 'SMT', 'First Solar Malaysia', 'IN_USE', 'SAS', 'SIM', '29', '使用期限: 12 months;启用日期: 2026-06-03', 63, NULL, '0', '2026-09-28 20:42:30', '2026-09-28 20:42:30'); +INSERT INTO `tbl_asset` VALUES (248, 'SIM-896019210381702564', 'SIM卡 896019210381702564', 7, 'SIM卡', '183.171.10.11 / 4G Modem', '张', 1.000000, 0.000000, '2026-06-03 00:00:00', NULL, 'SMT', 'First Solar Malaysia', 'IN_USE', 'SAS', 'SIM', '28', '使用期限: 12 months;启用日期: 2026-06-03', 63, NULL, '0', '2026-09-28 20:42:30', '2026-09-28 20:42:30'); +INSERT INTO `tbl_asset` VALUES (249, 'SIM-896019210381702565', 'SIM卡 896019210381702565', 7, 'SIM卡', '183.171.12.136 / Lora Gateway', '张', 1.000000, 0.000000, '2026-06-03 00:00:00', NULL, 'SMT', 'Menicon Malaysia', 'IN_USE', 'SAS', 'SIM', '27', '使用期限: 12 months;启用日期: 2026-06-03', 63, NULL, '0', '2026-09-28 20:42:30', '2026-09-28 20:42:30'); +INSERT INTO `tbl_asset` VALUES (250, 'SIM-896019210381702566', 'SIM卡 896019210381702566', 7, 'SIM卡', '183.171.11.123 / Lora Gateway', '张', 1.000000, 0.000000, '2026-06-03 00:00:00', NULL, 'SMT', 'GT3.1 (Nur)', 'IN_USE', 'SAS', 'SIM', '26', '使用期限: 12 months;启用日期: 2026-06-03', 63, NULL, '0', '2026-09-28 20:42:30', '2026-09-28 20:42:30'); +INSERT INTO `tbl_asset` VALUES (251, 'SIM-896019210381702567', 'SIM卡 896019210381702567', 7, 'SIM卡', '183.171.12.143 / 4G Modem', '张', 1.000000, 0.000000, '2026-06-03 00:00:00', NULL, 'SMT', 'Molnlycke Health Care', 'IN_USE', 'SAS', 'SIM', '25', '使用期限: 12 months;启用日期: 2026-06-03', 63, NULL, '0', '2026-09-28 20:42:30', '2026-09-28 20:42:30'); +INSERT INTO `tbl_asset` VALUES (252, 'SIM-896019210381702568', 'SIM卡 896019210381702568', 7, 'SIM卡', '183.171.214.217 / 4G Modem', '张', 1.000000, 0.000000, '2026-06-03 00:00:00', NULL, 'SMT', 'Molnlycke Health Care', 'IN_USE', 'SAS', 'SIM', '24', '使用期限: 12 months;启用日期: 2026-06-03', 63, NULL, '0', '2026-09-28 20:42:30', '2026-09-28 20:42:30'); +INSERT INTO `tbl_asset` VALUES (253, 'SIM-896019210381702571', 'SIM卡 896019210381702571', 7, 'SIM卡', '183.171.9.45', '张', 1.000000, 0.000000, '2026-06-03 00:00:00', NULL, 'SMT', 'R&D room, SMT', 'IN_USE', 'SAS', 'SIM', '23', '使用期限: 12 months;启用日期: 2026-06-03', 63, NULL, '0', '2026-09-28 20:42:30', '2026-09-28 20:42:30'); +INSERT INTO `tbl_asset` VALUES (254, 'SIM-896019210381702570', 'SIM卡 896019210381702570', 7, 'SIM卡', '183.171.214.141', '张', 1.000000, 0.000000, '2026-06-03 00:00:00', NULL, 'SMT', 'With Amir', 'IN_USE', 'SAS', 'SIM', '19', '使用期限: 12 months;启用日期: 2026-06-03', 63, NULL, '0', '2026-09-28 20:42:30', '2026-09-28 20:42:30'); +INSERT INTO `tbl_asset` VALUES (255, 'SIM-896019210381702569', 'SIM卡 896019210381702569', 7, 'SIM卡', '183.171.11.200', '张', 1.000000, 0.000000, '2026-06-03 00:00:00', NULL, 'SMT', 'With Amir', 'IN_USE', 'SAS', 'SIM', '18', '使用期限: 12 months;启用日期: 2026-06-03', 63, NULL, '0', '2026-09-28 20:42:30', '2026-09-28 20:42:30'); +INSERT INTO `tbl_asset` VALUES (256, 'SIM-896019210381607779', 'SIM卡 896019210381607779', 7, 'SIM卡', '183.171.151.171', '张', 1.000000, 0.000000, '2025-12-23 00:00:00', NULL, 'SMT', 'POC AEON', 'SCRAPPED', 'SAS', 'SIM', '13', '使用期限: 2 Months;启用日期: 2025-12-23', 63, NULL, '0', '2026-09-28 20:42:30', '2026-09-28 20:42:30'); +INSERT INTO `tbl_asset` VALUES (257, 'SIM-896019190221500577', 'SIM卡 896019190221500577', 7, 'SIM卡', '183.171.144.61', '张', 1.000000, 0.000000, '2025-12-23 00:00:00', NULL, 'SMT', 'Kompleks Pertama', 'SCRAPPED', 'SAS', 'SIM', '15', '启用日期: 2025-12-23', 63, NULL, '0', '2026-09-28 20:42:30', '2026-09-28 20:42:30'); +INSERT INTO `tbl_asset` VALUES (258, 'SIM-896019210381607780', 'SIM卡 896019210381607780', 7, 'SIM卡', '183.171.208.37', '张', 1.000000, 0.000000, '2025-12-23 00:00:00', NULL, 'SMT', 'POC AEON', 'SCRAPPED', 'SAS', 'SIM', '14', '使用期限: 2 Months;启用日期: 2025-12-23', 63, NULL, '0', '2026-09-28 20:42:30', '2026-09-28 20:42:30'); +INSERT INTO `tbl_asset` VALUES (259, 'SIM-896019210381702562', 'SIM卡 896019210381702562', 7, 'SIM卡', '183.171.144.61', '张', 1.000000, 0.000000, '2025-12-23 00:00:00', NULL, 'SMT', 'Loan to Hanif/Adha (22-May-2026); ', 'IN_USE', 'SAS', 'SIM', '12', '启用日期: 2025-12-23', 63, NULL, '0', '2026-09-28 20:42:30', '2026-09-28 20:42:30'); +INSERT INTO `tbl_asset` VALUES (260, 'SIM-896019210381607786', 'SIM卡 896019210381607786', 7, 'SIM卡', '183.171.208.37 / KM08-LTE Modem / 21070013', '张', 1.000000, 0.000000, '2025-12-23 00:00:00', NULL, 'SMT', 'SMT (RnD) Alyaa', 'IN_USE', 'SAS', 'SIM', '11', '设备序列号: 21070013;启用日期: 2025-12-23', 63, NULL, '0', '2026-09-28 20:42:30', '2026-09-28 20:42:30'); +INSERT INTO `tbl_asset` VALUES (261, 'SIM-896019210381607785', 'SIM卡 896019210381607785', 7, 'SIM卡', '183.171.151.171 / KM08-LTE Modem / 21070011', '张', 1.000000, 0.000000, '2025-12-23 00:00:00', NULL, 'SMT', 'SMT (RnD) Alyaa', 'IN_USE', 'SAS', 'SIM', '10', '设备序列号: 21070011;电表序列号: 320910014;启用日期: 2025-12-23', 63, NULL, '0', '2026-09-28 20:42:30', '2026-09-28 20:42:30'); +INSERT INTO `tbl_asset` VALUES (262, 'SIM-896019210381607783', 'SIM卡 896019210381607783', 7, 'SIM卡', '183.171.50.6 / KM08-LTE Modem / 2403005', '张', 1.000000, 0.000000, '2024-09-29 00:00:00', NULL, 'SMT', 'SMT (RnD) Modem Store', 'IN_USE', 'SAS', 'SIM', '8', '设备序列号: 2403005;启用日期: 2024-09-29', 63, NULL, '0', '2026-09-28 20:42:30', '2026-09-28 20:42:30'); +INSERT INTO `tbl_asset` VALUES (263, 'SIM-896019210381607784', 'SIM卡 896019210381607784', 7, 'SIM卡', '183.171.50.5 / KM08-LTE Modem / 20041004', '张', 1.000000, 0.000000, '2024-09-29 00:00:00', NULL, 'SMT', 'SMT (Modem-Production)', 'IN_USE', 'SAS', 'SIM', '7', '设备序列号: 20041004;启用日期: 2024-09-29', 63, NULL, '0', '2026-09-28 20:42:30', '2026-09-28 20:42:30'); +INSERT INTO `tbl_asset` VALUES (264, 'SIM-896019210381607782', 'SIM卡 896019210381607782', 7, 'SIM卡', '183.171.40.117', '张', 1.000000, 0.000000, '2024-07-15 00:00:00', NULL, 'SMT', 'Genting', 'IN_USE', 'SAS', 'SIM', '4', '使用期限: 2 Years;启用日期: 2024-07-15', 63, NULL, '0', '2026-09-28 20:42:30', '2026-09-28 20:42:30'); +INSERT INTO `tbl_asset` VALUES (265, 'SIM-896019210381607777', 'SIM卡 896019210381607777', 7, 'SIM卡', '183.171.40.182', '张', 1.000000, 0.000000, '2024-07-15 00:00:00', NULL, 'SMT', 'Genting', 'IN_USE', 'SAS', 'SIM', '3', '使用期限: 2 Years;启用日期: 2024-07-15', 63, NULL, '0', '2026-09-28 20:42:30', '2026-09-28 20:42:30'); +INSERT INTO `tbl_asset` VALUES (266, 'SIM-896019210381607781', 'SIM卡 896019210381607781', 7, 'SIM卡', '183.171.5.142 / KM08-LTE Modem / 21070014', '张', 1.000000, 0.000000, '2024-03-22 00:00:00', NULL, 'SMT', 'SMT (RnD) Modem RnD', 'IN_USE', 'SAS', 'SIM', '9', '设备序列号: 21070014;电表序列号: 320910015;启用日期: 2024-03-22', 63, NULL, '0', '2026-09-28 20:42:30', '2026-09-28 20:42:30'); +INSERT INTO `tbl_asset` VALUES (267, 'SIM-896019210381607778', 'SIM卡 896019210381607778', 7, 'SIM卡', '183.171.15.60', '张', 1.000000, 0.000000, '2024-03-22 00:00:00', NULL, 'SMT', 'Genting', 'IN_USE', 'SAS', 'SIM', '2', '使用期限: 2 Years;启用日期: 2024-03-22', 63, NULL, '0', '2026-09-28 20:42:30', '2026-09-28 20:42:30'); +INSERT INTO `tbl_asset` VALUES (268, 'SIM-896019190221500576', 'SIM卡 896019190221500576', 7, 'SIM卡', '183.171.144.65', '张', 1.000000, 0.000000, '2020-12-16 00:00:00', NULL, 'SMT', 'Genting', 'IN_USE', 'SAS', 'SIM', '1', '使用期限: 2 Years;启用日期: 2020-12-16', 63, NULL, '0', '2026-09-28 20:42:30', '2026-09-28 20:42:30'); +INSERT INTO `tbl_asset` VALUES (269, 'SIM-896019190221500578', 'SIM卡 896019190221500578', 7, 'SIM卡', '183.171.14.125', '张', 1.000000, 0.000000, '2020-12-16 00:00:00', NULL, 'SMT', 'UITM Dungun', 'IN_USE', 'SAS', 'SIM', '5', '启用日期: 2020-12-16', 63, NULL, '0', '2026-09-28 20:42:30', '2026-09-28 20:42:30'); +INSERT INTO `tbl_asset` VALUES (270, 'SIM-896019200694297052', 'SIM卡 896019200694297052', 7, 'SIM卡', '183.171.146.98', '张', 1.000000, 0.000000, NULL, NULL, 'UITM Dungun', 'SMT (???)', 'IN_USE', 'SAS', 'SIM', '6', NULL, 63, NULL, '0', '2026-09-28 20:42:30', '2026-09-28 20:42:30'); + +-- ---------------------------- +-- Table structure for tbl_asset_category +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_asset_category`; +CREATE TABLE `tbl_asset_category` ( + `id` bigint NOT NULL AUTO_INCREMENT, + `category_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '????', + `category_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '????', + `description` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '????', + `sort` int NOT NULL DEFAULT 100, + `enabled` bit(1) NOT NULL DEFAULT b'1', + `creator` bigint NULL DEFAULT NULL, + `updater` bigint NULL DEFAULT NULL, + `delete_flag` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '0', + `create_time` datetime(0) NULL DEFAULT NULL, + `update_time` datetime(0) NULL DEFAULT NULL, + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `uk_asset_category_code`(`category_code`) USING BTREE, + UNIQUE INDEX `uk_asset_category_name`(`category_name`) USING BTREE, + INDEX `idx_asset_category_enabled`(`enabled`, `sort`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 18 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '????' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of tbl_asset_category +-- ---------------------------- +INSERT INTO `tbl_asset_category` VALUES (4, 'UNCATEGORIZED', '未分类', '尚未归入具体种类的资产', 10, b'1', NULL, NULL, '0', '2026-09-28 20:33:13', '2026-09-28 20:33:13'); +INSERT INTO `tbl_asset_category` VALUES (5, 'HARDWARE', '硬件资产', '从 Smart Asset System 硬件台账同步', 20, b'1', NULL, NULL, '0', '2026-09-28 20:33:13', '2026-09-28 20:33:13'); +INSERT INTO `tbl_asset_category` VALUES (6, 'SOFTWARE', '软件资产', '从 Smart Asset System 软件台账同步', 30, b'1', NULL, NULL, '0', '2026-09-28 20:33:13', '2026-09-28 20:33:13'); +INSERT INTO `tbl_asset_category` VALUES (7, 'SIM_CARD', 'SIM卡', '从 Smart Asset System SIM 卡台账同步', 40, b'1', NULL, NULL, '0', '2026-09-28 20:33:13', '2026-09-28 20:33:13'); +INSERT INTO `tbl_asset_category` VALUES (11, 'LEGACY_01BF8DA563A0', '生产设备', '由原资产分类字段自动迁移', 100, b'1', NULL, NULL, '0', '2026-09-28 20:33:13', '2026-09-28 20:33:13'); +INSERT INTO `tbl_asset_category` VALUES (12, 'LEGACY_7129859760C3', '检测设备', '由原资产分类字段自动迁移', 100, b'1', NULL, NULL, '0', '2026-09-28 20:33:13', '2026-09-28 20:33:13'); +INSERT INTO `tbl_asset_category` VALUES (13, 'LEGACY_9F38069B30A1', '动力设备', '由原资产分类字段自动迁移', 100, b'1', NULL, NULL, '0', '2026-09-28 20:33:13', '2026-09-28 20:33:13'); +INSERT INTO `tbl_asset_category` VALUES (14, 'LEGACY_75F489029B11', 'IT设备', '由原资产分类字段自动迁移', 100, b'1', NULL, NULL, '0', '2026-09-28 20:33:13', '2026-09-28 20:33:13'); +INSERT INTO `tbl_asset_category` VALUES (15, 'LEGACY_3DDFE01CA0B8', '物流设备', '由原资产分类字段自动迁移', 100, b'1', NULL, NULL, '0', '2026-09-28 20:33:13', '2026-09-28 20:33:13'); +INSERT INTO `tbl_asset_category` VALUES (16, 'LEGACY_B5D44F2B039A', '工装设备', '由原资产分类字段自动迁移', 100, b'1', NULL, NULL, '0', '2026-09-28 20:33:13', '2026-09-28 20:33:13'); + +-- ---------------------------- +-- Table structure for tbl_asset_device +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_asset_device`; +CREATE TABLE `tbl_asset_device` ( + `id` bigint NOT NULL AUTO_INCREMENT, + `asset_id` bigint NULL DEFAULT NULL COMMENT '关联资产id', + `device_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '设备编号', + `device_name` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '设备名称', + `device_category` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '设备分类', + `model` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '设备型号', + `serial_number` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '出厂序列号', + `manufacturer` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '制造商', + `purchase_date` datetime(0) NULL DEFAULT NULL COMMENT '购置日期', + `enabled_date` date NULL DEFAULT NULL COMMENT '启用日期', + `use_department` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + `keeper` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + `location` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + `status` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'IN_USE' COMMENT '状态:IDLE/IN_USE/REPAIR/STOPPED/SCRAPPED', + `last_inventory_time` datetime(0) NULL DEFAULT NULL COMMENT '最近盘点时间', + `next_maintenance_date` datetime(0) NULL DEFAULT NULL COMMENT '下次保养时间', + `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + `creator` bigint NULL DEFAULT NULL, + `updater` bigint NULL DEFAULT NULL, + `delete_flag` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '0', + `create_time` datetime(0) NULL DEFAULT NULL, + `update_time` datetime(0) NULL DEFAULT NULL, + PRIMARY KEY (`id`) USING BTREE, + INDEX `idx_asset_device_asset`(`asset_id`) USING BTREE, + INDEX `idx_asset_device_status`(`status`) USING BTREE, + INDEX `idx_asset_device_code`(`device_code`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 16 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '设备台账' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of tbl_asset_device +-- ---------------------------- +INSERT INTO `tbl_asset_device` VALUES (1, 1, 'SMT-L01-PRINTER-01', '全自动锡膏印刷机', '印刷设备', 'DEK NeoHorizon 03iX', 'DEK24NH03187', 'ASMPT', '2024-03-18 00:00:00', '2024-04-08', 'SMT生产部', '王磊', '一车间 SMT-01 线前段', 'IN_USE', '2026-09-18 14:08:03', '2026-10-08 00:00:00', '配置 2D 检测与自动擦网单元', 63, NULL, '0', '2026-09-18 11:55:23', '2026-09-18 14:08:02'); +INSERT INTO `tbl_asset_device` VALUES (2, 1, 'SMT-L01-MOUNTER-A', '高速模块贴片机 A', '贴装设备', 'Panasonic NPM-D3A', 'NPMD3A24031801', 'Panasonic', '2024-03-18 00:00:00', '2024-04-08', 'SMT生产部', '王磊', '一车间 SMT-01 线 A 工位', 'IN_USE', NULL, '2026-10-15 00:00:00', '前段高速贴装,配置 16 头轻量贴装头', 63, NULL, '0', '2026-09-18 11:55:23', '2026-09-18 11:55:23'); +INSERT INTO `tbl_asset_device` VALUES (3, 1, 'SMT-L01-MOUNTER-B', '多功能贴片机 B', '贴装设备', 'Panasonic NPM-W2S', 'NPMW2S24031802', 'Panasonic', '2024-03-18 00:00:00', '2024-04-08', 'SMT生产部', '王磊', '一车间 SMT-01 线 B 工位', 'IN_USE', NULL, '2026-10-16 00:00:00', '负责异形件及高精度元件贴装', 63, NULL, '0', '2026-09-18 11:55:23', '2026-09-18 11:55:23'); +INSERT INTO `tbl_asset_device` VALUES (4, 2, 'SMT-L01-REFLOW-01', '十温区氮气回流焊炉', '焊接设备', 'HELLER 1936MK7', 'HLR1936-2403268', 'Heller Industries', '2024-03-18 00:00:00', '2024-04-10', 'SMT生产部', '王磊', '一车间 SMT-01 线后段', 'IN_USE', NULL, '2026-10-20 00:00:00', '氮气闭环控制,支持双轨独立调宽', 63, NULL, '0', '2026-09-18 11:55:23', '2026-09-18 11:55:23'); +INSERT INTO `tbl_asset_device` VALUES (5, 3, 'QC-AOI-01', '在线 3D AOI', '检测设备', 'Zenith 2', 'KY-Z2-24040615', 'Koh Young', '2024-04-06 00:00:00', '2024-04-18', '品质部', '陈晨', '一车间 AOI 检测区', 'IN_USE', '2026-09-21 19:17:10', '2026-11-05 00:00:00', '具备 AI 缺陷复判和 SPC 数据接口', 63, NULL, '0', '2026-09-18 11:55:23', '2026-09-21 19:17:10'); +INSERT INTO `tbl_asset_device` VALUES (6, 4, 'QC-SPI-01', '在线 3D SPI', '检测设备', 'KY8030-3', 'KY-8030-24040608', 'Koh Young', '2024-04-06 00:00:00', '2024-04-18', '品质部', '陈晨', '一车间 印刷检测区', 'IN_USE', '2026-09-21 14:35:51', '2026-11-06 00:00:00', '与印刷机闭环反馈锡膏偏移数据', 63, NULL, '0', '2026-09-18 11:55:23', '2026-09-21 14:35:59'); +INSERT INTO `tbl_asset_device` VALUES (7, 5, 'UTIL-AIR-01', '变频螺杆空压机', '动力设备', 'GA22 VSD+', 'AC-GA22-2311209', 'Atlas Copco', '2023-11-20 00:00:00', '2023-12-01', '设备动力部', '陈晨', '动力站 1 号机位', 'IN_USE', NULL, '2026-10-01 00:00:00', '运行压力 0.72MPa,接入能源管理系统', 63, NULL, '0', '2026-09-18 11:55:23', '2026-09-18 11:55:23'); +INSERT INTO `tbl_asset_device` VALUES (8, 6, 'IT-MES-DB-01', 'MES 数据库主服务器', '服务器', 'PowerEdge R760', 'CN-R760-25011501', 'Dell', '2025-01-15 00:00:00', '2025-01-22', '信息技术部', '赵敏', '数据中心 A03-U18', 'IN_USE', NULL, '2026-12-15 00:00:00', '双路 CPU、512GB 内存、全闪存 RAID10', 63, NULL, '0', '2026-09-18 11:55:23', '2026-09-18 11:55:23'); +INSERT INTO `tbl_asset_device` VALUES (9, 7, 'WH-FORKLIFT-01', '2 吨电动叉车', '物流设备', '8FBE20', 'TY-8FBE20-240722', 'Toyota', '2024-07-22 00:00:00', '2024-08-01', '仓储物流部', '张伟', '原材料仓充电区', 'IN_USE', NULL, '2026-10-25 00:00:00', '锂电池版本,配置蓝光安全警示灯', 63, NULL, '0', '2026-09-18 11:55:23', '2026-09-18 11:55:23'); +INSERT INTO `tbl_asset_device` VALUES (10, 8, 'TOOL-STENCIL-CLEAN-01', '全自动钢网清洗机', '工装设备', 'SC-A1000', 'SAWA-A1000-250210', 'SAWA', '2025-02-10 00:00:00', '2025-02-18', 'SMT生产部', '王磊', '一车间 钢网房', 'IN_USE', NULL, '2026-11-10 00:00:00', '水基清洗、漂洗、热风干燥一体化', 63, NULL, '0', '2026-09-18 11:55:23', '2026-09-18 11:55:23'); + +-- ---------------------------- +-- Table structure for tbl_asset_inventory +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_asset_inventory`; +CREATE TABLE `tbl_asset_inventory` ( + `id` bigint NOT NULL AUTO_INCREMENT, + `inventory_no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '盘点单号', + `plan_name` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '盘点计划名称', + `scope_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'DEVICE' COMMENT '范围:ASSET/DEVICE/ALL', + `planned_at` datetime(0) NULL DEFAULT NULL COMMENT '计划盘点时间', + `deadline` datetime(0) NULL DEFAULT NULL COMMENT '截止时间', + `status` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'DRAFT' COMMENT 'DRAFT/IN_PROGRESS/PENDING_AUDIT/COMPLETED/CLOSED', + `total_count` int NOT NULL DEFAULT 0, + `inventoried_count` int NOT NULL DEFAULT 0, + `normal_count` int NOT NULL DEFAULT 0, + `abnormal_count` int NOT NULL DEFAULT 0, + `inventory_user_id` bigint NULL DEFAULT NULL, + `inventory_user_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + `started_at` datetime(0) NULL DEFAULT NULL, + `completed_at` datetime(0) NULL DEFAULT NULL, + `audit_user_id` bigint NULL DEFAULT NULL, + `audit_time` datetime(0) NULL DEFAULT NULL, + `source` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT 'MANUAL' COMMENT 'MANUAL/COLLABORATION/TPM_DOUBLE', + `external_request_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '协同服务请求号(幂等键)', + `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + `creator` bigint NULL DEFAULT NULL, + `updater` bigint NULL DEFAULT NULL, + `delete_flag` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '0', + `create_time` datetime(0) NULL DEFAULT NULL, + `update_time` datetime(0) NULL DEFAULT NULL, + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `uk_asset_inventory_no`(`inventory_no`) USING BTREE, + UNIQUE INDEX `uk_asset_inventory_external`(`external_request_id`) USING BTREE, + INDEX `idx_asset_inventory_status`(`status`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '资产盘点单' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of tbl_asset_inventory +-- ---------------------------- +INSERT INTO `tbl_asset_inventory` VALUES (1, 'PD20260918131230171', '2026年09月资产设备专项盘点', 'DEVICE', '2026-09-19 09:00:00', '2026-09-21 18:00:00', 'IN_PROGRESS', 3, 1, 0, 0, 36, '张伟', '2026-09-18 13:19:02', NULL, NULL, NULL, 'MANUAL', NULL, '进行盘点', 63, 63, '0', '2026-09-18 13:12:30', '2026-09-21 14:35:59'); +INSERT INTO `tbl_asset_inventory` VALUES (4, 'PD20260921170623856', '2026年09月资产设备专项盘点', 'ASSET', '2026-09-22 09:00:00', '2026-09-24 18:00:00', 'CLOSED', 8, 8, 0, 0, 149, '张三', '2026-09-21 18:55:59', '2026-09-21 19:01:15', NULL, NULL, 'MANUAL', NULL, '进行盘点', 63, 149, '0', '2026-09-21 17:06:23', '2026-09-21 19:16:33'); +INSERT INTO `tbl_asset_inventory` VALUES (5, 'PD20260921190800418', '2026年09月资产设备专项盘点', 'ALL', '2026-09-22 09:00:00', '2026-09-24 18:00:00', 'ACCEPTED', 2, 0, 0, 0, 149, '张三', NULL, NULL, NULL, NULL, 'MANUAL', NULL, '进行盘点', 149, 149, '0', '2026-09-21 19:08:00', '2026-09-21 19:08:13'); +INSERT INTO `tbl_asset_inventory` VALUES (6, 'PD20260921190840893', '2026年09月资产设备专项盘点', 'DEVICE', '2026-09-22 09:00:00', '2026-09-24 18:00:00', 'CLOSED', 1, 1, 1, 0, 63, 'admin', '2026-09-21 19:16:59', '2026-09-21 19:17:16', 149, '2026-09-21 19:17:25', 'MANUAL', NULL, NULL, 149, 149, '0', '2026-09-21 19:08:40', '2026-09-21 19:17:28'); + +-- ---------------------------- +-- Table structure for tbl_asset_inventory_detail +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_asset_inventory_detail`; +CREATE TABLE `tbl_asset_inventory_detail` ( + `id` bigint NOT NULL AUTO_INCREMENT, + `inventory_id` bigint NOT NULL, + `target_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'ASSET/DEVICE', + `target_id` bigint NOT NULL, + `target_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `target_name` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `model` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + `book_quantity` decimal(24, 6) NOT NULL DEFAULT 1.000000, + `actual_quantity` decimal(24, 6) NOT NULL DEFAULT 0.000000, + `inventory_status` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'PENDING' COMMENT 'PENDING/NORMAL/SURPLUS/SHORTAGE/ABNORMAL', + `book_department` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + `actual_department` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + `book_location` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + `actual_location` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + `inventory_time` datetime(0) NULL DEFAULT NULL, + `inventory_user_id` bigint NULL DEFAULT NULL, + `inventory_user_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + `image_group_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '原盘点接口图片组ID', + `create_time` datetime(0) NULL DEFAULT NULL, + `update_time` datetime(0) NULL DEFAULT NULL, + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `uk_asset_inventory_target`(`inventory_id`, `target_type`, `target_id`) USING BTREE, + INDEX `idx_asset_inventory_detail_status`(`inventory_id`, `inventory_status`) USING BTREE, + INDEX `idx_asset_inventory_detail_code`(`target_code`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 17 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '资产盘点快照明细' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of tbl_asset_inventory_detail +-- ---------------------------- +INSERT INTO `tbl_asset_inventory_detail` VALUES (1, 1, 'DEVICE', 6, 'QC-SPI-01', '在线 3D SPI', 'KY8030-3', 1.000000, 1.000000, 'INVENTORIED', '品质部', NULL, '一车间 印刷检测区', '一车间 印刷检测区-A区', '2026-09-21 14:35:51', 63, 'admin', '111', NULL, '2026-09-18 13:12:30', '2026-09-21 14:35:59'); +INSERT INTO `tbl_asset_inventory_detail` VALUES (2, 1, 'DEVICE', 2, 'SMT-L01-MOUNTER-A', '高速模块贴片机 A', 'Panasonic NPM-D3A', 1.000000, 0.000000, 'PENDING', 'SMT生产部', NULL, '一车间 SMT-01 线 A 工位', NULL, NULL, NULL, NULL, NULL, '01f08d9e8b2c43cfa2fb59a67ac6a954', '2026-09-18 13:12:30', '2026-09-21 14:44:24'); +INSERT INTO `tbl_asset_inventory_detail` VALUES (3, 1, 'DEVICE', 3, 'SMT-L01-MOUNTER-B', '多功能贴片机 B', 'Panasonic NPM-W2S', 1.000000, 0.000000, 'PENDING', 'SMT生产部', NULL, '一车间 SMT-01 线 B 工位', NULL, NULL, NULL, NULL, NULL, NULL, '2026-09-18 13:12:30', '2026-09-18 13:12:30'); +INSERT INTO `tbl_asset_inventory_detail` VALUES (6, 4, 'ASSET', 8, 'FA-TOOL-2025-008', '全自动钢网清洗机', 'SAWA SC-A1000', 1.000000, 1.000000, 'INVENTORIED', 'SMT生产部', NULL, '一车间 钢网房', '一车间 钢网房', '2026-09-21 18:56:38', 149, '张三', '来看看你们这些', 'bafb696ee03b4daab4c00a5183d9f8ca', '2026-09-21 17:06:23', '2026-09-21 19:01:13'); +INSERT INTO `tbl_asset_inventory_detail` VALUES (7, 4, 'ASSET', 7, 'FA-WH-2024-007', '电动平衡重式叉车', 'Toyota 8FBE20', 1.000000, 1.000000, 'INVENTORIED', '仓储物流部', NULL, '原材料仓充电区', '原材料仓充电区', '2026-09-21 18:55:59', 149, '张三', '有空聚聚看看', 'fe02f5769bdf4dc0b5726aac93bb730b', '2026-09-21 17:06:23', '2026-09-21 19:01:13'); +INSERT INTO `tbl_asset_inventory_detail` VALUES (8, 4, 'ASSET', 6, 'FA-IT-2025-006', 'MES 数据库服务器', 'Dell PowerEdge R760', 1.000000, 1.000000, 'INVENTORIED', '信息技术部', NULL, '数据中心 A03 机柜', '数据中心 A03 机柜', '2026-09-21 18:57:25', 149, '张三', '简直一模一样的', '5db8ca7a79a445b88645dd39d97e2e67', '2026-09-21 17:06:23', '2026-09-21 19:01:13'); +INSERT INTO `tbl_asset_inventory_detail` VALUES (9, 4, 'ASSET', 5, 'FA-UTIL-2023-005', '螺杆式空气压缩机', 'Atlas Copco GA22 VSD+', 1.000000, 1.000000, 'INVENTORIED', '设备动力部', NULL, '动力站 1 号机位', '动力站 1 号机位', '2026-09-21 19:01:06', 149, '张三', '连卡佛哦哦哦', 'b0212c0127ec4c7583a507552720ea27', '2026-09-21 17:06:23', '2026-09-21 19:01:25'); +INSERT INTO `tbl_asset_inventory_detail` VALUES (10, 4, 'ASSET', 4, 'FA-QC-2024-004', '在线 3D SPI 检测系统', 'Koh Young KY8030-3', 1.000000, 1.000000, 'INVENTORIED', '品质部', NULL, '一车间 印刷检测区', '一车间 印刷检测区', '2026-09-21 18:58:07', 149, '张三', '踏步踏步谢谢你', '6ff9119f63b64993845a9c067467e5da', '2026-09-21 17:06:23', '2026-09-21 19:01:13'); +INSERT INTO `tbl_asset_inventory_detail` VALUES (11, 4, 'ASSET', 3, 'FA-QC-2024-003', '在线 3D AOI 检测系统', 'Koh Young Zenith 2', 1.000000, 1.000000, 'INVENTORIED', '品质部', NULL, '一车间 AOI 检测区', '一车间 AOI 检测区', '2026-09-21 18:57:52', 149, '张三', '补补团出来了?那就算了', '97e05ba483eb41a9a3f33796682f6d46', '2026-09-21 17:06:23', '2026-09-21 19:01:13'); +INSERT INTO `tbl_asset_inventory_detail` VALUES (12, 4, 'ASSET', 2, 'FA-SMT-2024-002', '十温区氮气回流焊系统', 'HELLER 1936MK7', 1.000000, 1.000000, 'INVENTORIED', 'SMT生产部', NULL, '一车间 SMT-01 线', '一车间 SMT-01 线', '2026-09-21 18:57:35', 149, '张三', '不啊图天冷加衣', '93b35db7703f4e3e86d44b27f35f2a58', '2026-09-21 17:06:23', '2026-09-21 19:01:13'); +INSERT INTO `tbl_asset_inventory_detail` VALUES (13, 4, 'ASSET', 1, 'FA-SMT-2024-001', 'SMT 高速贴片生产线', 'Panasonic NPM-D3A 双轨配置', 1.000000, 1.000000, 'INVENTORIED', 'SMT生产部', NULL, '一车间 SMT-01 线', '一车间 SMT-01 线', '2026-09-21 19:01:15', 149, '张三', '吧监控OK了', 'edd28c5442e84cf59a6e1e3d73be44c1', '2026-09-21 17:06:23', '2026-09-21 19:01:25'); +INSERT INTO `tbl_asset_inventory_detail` VALUES (14, 5, 'ASSET', 8, 'FA-TOOL-2025-008', '全自动钢网清洗机', 'SAWA SC-A1000', 1.000000, 0.000000, 'PENDING', 'SMT生产部', NULL, '一车间 钢网房', NULL, NULL, NULL, NULL, NULL, NULL, '2026-09-21 19:08:00', '2026-09-21 19:08:00'); +INSERT INTO `tbl_asset_inventory_detail` VALUES (15, 5, 'DEVICE', 8, 'IT-MES-DB-01', 'MES 数据库主服务器', 'PowerEdge R760', 1.000000, 0.000000, 'PENDING', '信息技术部', NULL, '数据中心 A03-U18', NULL, NULL, NULL, NULL, NULL, NULL, '2026-09-21 19:08:00', '2026-09-21 19:08:00'); +INSERT INTO `tbl_asset_inventory_detail` VALUES (16, 6, 'DEVICE', 5, 'QC-AOI-01', '在线 3D AOI', 'Zenith 2', 1.000000, 1.000000, 'NORMAL', '品质部', '品质部', '一车间 AOI 检测区', '一车间 AOI 检测区', '2026-09-21 19:17:10', 149, '张三', '111', NULL, '2026-09-21 19:08:40', '2026-09-21 19:17:10'); + +-- ---------------------------- +-- Table structure for tbl_asset_inventory_file +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_asset_inventory_file`; +CREATE TABLE `tbl_asset_inventory_file` ( + `id` bigint NOT NULL AUTO_INCREMENT, + `group_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `inventory_detail_id` bigint NOT NULL, + `original_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + `file_path` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `content_type` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + `file_size` bigint NULL DEFAULT NULL, + `creator` bigint NULL DEFAULT NULL, + `create_time` datetime(0) NULL DEFAULT NULL, + PRIMARY KEY (`id`) USING BTREE, + INDEX `idx_asset_inventory_file_group`(`group_id`) USING BTREE, + INDEX `idx_asset_inventory_file_detail`(`inventory_detail_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 84 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '盘点现场图片' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of tbl_asset_inventory_file +-- ---------------------------- +INSERT INTO `tbl_asset_inventory_file` VALUES (2, '01f08d9e8b2c43cfa2fb59a67ac6a954', 2, '图片1.png', 'asset-inventory/图片1_1789973064775.png', 'image/png', 12293, 63, '2026-09-21 14:44:24'); +INSERT INTO `tbl_asset_inventory_file` VALUES (3, 'fe02f5769bdf4dc0b5726aac93bb730b', 7, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185558_5107047d.jpg', 'asset-inventory/20260921_185558_5107047d_1789988297310.jpg', 'application/octet-stream', 560521, 149, '2026-09-21 18:58:17'); +INSERT INTO `tbl_asset_inventory_file` VALUES (4, 'bafb696ee03b4daab4c00a5183d9f8ca', 6, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185638_3ded6754.jpg', 'asset-inventory/20260921_185638_3ded6754_1789988297758.jpg', 'application/octet-stream', 246786, 149, '2026-09-21 18:58:17'); +INSERT INTO `tbl_asset_inventory_file` VALUES (5, '5db8ca7a79a445b88645dd39d97e2e67', 8, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185724_3db4823f.jpg', 'asset-inventory/20260921_185724_3db4823f_1789988298359.jpg', 'application/octet-stream', 164015, 149, '2026-09-21 18:58:18'); +INSERT INTO `tbl_asset_inventory_file` VALUES (6, '5db8ca7a79a445b88645dd39d97e2e67', 8, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185724_170b6de4.jpg', 'asset-inventory/20260921_185724_170b6de4_1789988298363.jpg', 'application/octet-stream', 276766, 149, '2026-09-21 18:58:18'); +INSERT INTO `tbl_asset_inventory_file` VALUES (7, '93b35db7703f4e3e86d44b27f35f2a58', 12, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185735_77ed497d.jpg', 'asset-inventory/20260921_185735_77ed497d_1789988308337.jpg', 'application/octet-stream', 4268455, 149, '2026-09-21 18:58:28'); +INSERT INTO `tbl_asset_inventory_file` VALUES (8, '93b35db7703f4e3e86d44b27f35f2a58', 12, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185735_16e3ae77.jpg', 'asset-inventory/20260921_185735_16e3ae77_1789988308359.jpg', 'application/octet-stream', 4164781, 149, '2026-09-21 18:58:28'); +INSERT INTO `tbl_asset_inventory_file` VALUES (9, '97e05ba483eb41a9a3f33796682f6d46', 11, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185751_e989e463.jpg', 'asset-inventory/20260921_185751_e989e463_1789988309407.jpg', 'application/octet-stream', 246862, 149, '2026-09-21 18:58:29'); +INSERT INTO `tbl_asset_inventory_file` VALUES (10, '97e05ba483eb41a9a3f33796682f6d46', 11, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185751_8247956e.jpg', 'asset-inventory/20260921_185751_8247956e_1789988309411.jpg', 'application/octet-stream', 227761, 149, '2026-09-21 18:58:29'); +INSERT INTO `tbl_asset_inventory_file` VALUES (11, '6ff9119f63b64993845a9c067467e5da', 10, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185807_e5ff915e.jpg', 'asset-inventory/20260921_185807_e5ff915e_1789988310159.jpg', 'application/octet-stream', 223256, 149, '2026-09-21 18:58:30'); +INSERT INTO `tbl_asset_inventory_file` VALUES (12, '6ff9119f63b64993845a9c067467e5da', 10, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185807_85b6a9b5.jpg', 'asset-inventory/20260921_185807_85b6a9b5_1789988310162.jpg', 'application/octet-stream', 297668, 149, '2026-09-21 18:58:30'); +INSERT INTO `tbl_asset_inventory_file` VALUES (13, 'fe02f5769bdf4dc0b5726aac93bb730b', 7, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185558_5107047d.jpg', 'asset-inventory/20260921_185558_5107047d_1789988340622.jpg', 'application/octet-stream', 560521, 149, '2026-09-21 18:59:00'); +INSERT INTO `tbl_asset_inventory_file` VALUES (14, 'bafb696ee03b4daab4c00a5183d9f8ca', 6, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185638_3ded6754.jpg', 'asset-inventory/20260921_185638_3ded6754_1789988341036.jpg', 'application/octet-stream', 246786, 149, '2026-09-21 18:59:01'); +INSERT INTO `tbl_asset_inventory_file` VALUES (15, '5db8ca7a79a445b88645dd39d97e2e67', 8, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185724_3db4823f.jpg', 'asset-inventory/20260921_185724_3db4823f_1789988341617.jpg', 'application/octet-stream', 164015, 149, '2026-09-21 18:59:01'); +INSERT INTO `tbl_asset_inventory_file` VALUES (16, '5db8ca7a79a445b88645dd39d97e2e67', 8, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185724_170b6de4.jpg', 'asset-inventory/20260921_185724_170b6de4_1789988341621.jpg', 'application/octet-stream', 276766, 149, '2026-09-21 18:59:01'); +INSERT INTO `tbl_asset_inventory_file` VALUES (17, '93b35db7703f4e3e86d44b27f35f2a58', 12, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185735_77ed497d.jpg', 'asset-inventory/20260921_185735_77ed497d_1789988350408.jpg', 'application/octet-stream', 4268455, 149, '2026-09-21 18:59:10'); +INSERT INTO `tbl_asset_inventory_file` VALUES (18, '93b35db7703f4e3e86d44b27f35f2a58', 12, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185735_16e3ae77.jpg', 'asset-inventory/20260921_185735_16e3ae77_1789988350421.jpg', 'application/octet-stream', 4164781, 149, '2026-09-21 18:59:10'); +INSERT INTO `tbl_asset_inventory_file` VALUES (19, '97e05ba483eb41a9a3f33796682f6d46', 11, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185751_e989e463.jpg', 'asset-inventory/20260921_185751_e989e463_1789988351115.jpg', 'application/octet-stream', 246862, 149, '2026-09-21 18:59:11'); +INSERT INTO `tbl_asset_inventory_file` VALUES (20, '97e05ba483eb41a9a3f33796682f6d46', 11, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185751_8247956e.jpg', 'asset-inventory/20260921_185751_8247956e_1789988351118.jpg', 'application/octet-stream', 227761, 149, '2026-09-21 18:59:11'); +INSERT INTO `tbl_asset_inventory_file` VALUES (21, '6ff9119f63b64993845a9c067467e5da', 10, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185807_e5ff915e.jpg', 'asset-inventory/20260921_185807_e5ff915e_1789988352623.jpg', 'application/octet-stream', 223256, 149, '2026-09-21 18:59:12'); +INSERT INTO `tbl_asset_inventory_file` VALUES (22, '6ff9119f63b64993845a9c067467e5da', 10, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185807_85b6a9b5.jpg', 'asset-inventory/20260921_185807_85b6a9b5_1789988352626.jpg', 'application/octet-stream', 297668, 149, '2026-09-21 18:59:12'); +INSERT INTO `tbl_asset_inventory_file` VALUES (23, 'fe02f5769bdf4dc0b5726aac93bb730b', 7, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185558_5107047d.jpg', 'asset-inventory/20260921_185558_5107047d_1789988392678.jpg', 'application/octet-stream', 560521, 149, '2026-09-21 18:59:52'); +INSERT INTO `tbl_asset_inventory_file` VALUES (24, 'bafb696ee03b4daab4c00a5183d9f8ca', 6, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185638_3ded6754.jpg', 'asset-inventory/20260921_185638_3ded6754_1789988393529.jpg', 'application/octet-stream', 246786, 149, '2026-09-21 18:59:53'); +INSERT INTO `tbl_asset_inventory_file` VALUES (25, '5db8ca7a79a445b88645dd39d97e2e67', 8, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185724_3db4823f.jpg', 'asset-inventory/20260921_185724_3db4823f_1789988394098.jpg', 'application/octet-stream', 164015, 149, '2026-09-21 18:59:54'); +INSERT INTO `tbl_asset_inventory_file` VALUES (26, '5db8ca7a79a445b88645dd39d97e2e67', 8, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185724_170b6de4.jpg', 'asset-inventory/20260921_185724_170b6de4_1789988394100.jpg', 'application/octet-stream', 276766, 149, '2026-09-21 18:59:54'); +INSERT INTO `tbl_asset_inventory_file` VALUES (27, '93b35db7703f4e3e86d44b27f35f2a58', 12, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185735_77ed497d.jpg', 'asset-inventory/20260921_185735_77ed497d_1789988403600.jpg', 'application/octet-stream', 4268455, 149, '2026-09-21 19:00:03'); +INSERT INTO `tbl_asset_inventory_file` VALUES (28, '93b35db7703f4e3e86d44b27f35f2a58', 12, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185735_16e3ae77.jpg', 'asset-inventory/20260921_185735_16e3ae77_1789988403613.jpg', 'application/octet-stream', 4164781, 149, '2026-09-21 19:00:03'); +INSERT INTO `tbl_asset_inventory_file` VALUES (29, '97e05ba483eb41a9a3f33796682f6d46', 11, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185751_e989e463.jpg', 'asset-inventory/20260921_185751_e989e463_1789988404437.jpg', 'application/octet-stream', 246862, 149, '2026-09-21 19:00:04'); +INSERT INTO `tbl_asset_inventory_file` VALUES (30, '97e05ba483eb41a9a3f33796682f6d46', 11, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185751_8247956e.jpg', 'asset-inventory/20260921_185751_8247956e_1789988404438.jpg', 'application/octet-stream', 227761, 149, '2026-09-21 19:00:04'); +INSERT INTO `tbl_asset_inventory_file` VALUES (31, '6ff9119f63b64993845a9c067467e5da', 10, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185807_e5ff915e.jpg', 'asset-inventory/20260921_185807_e5ff915e_1789988406177.jpg', 'application/octet-stream', 223256, 149, '2026-09-21 19:00:06'); +INSERT INTO `tbl_asset_inventory_file` VALUES (32, '6ff9119f63b64993845a9c067467e5da', 10, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185807_85b6a9b5.jpg', 'asset-inventory/20260921_185807_85b6a9b5_1789988406180.jpg', 'application/octet-stream', 297668, 149, '2026-09-21 19:00:06'); +INSERT INTO `tbl_asset_inventory_file` VALUES (33, 'fe02f5769bdf4dc0b5726aac93bb730b', 7, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185558_5107047d.jpg', 'asset-inventory/20260921_185558_5107047d_1789988417028.jpg', 'application/octet-stream', 560521, 149, '2026-09-21 19:00:17'); +INSERT INTO `tbl_asset_inventory_file` VALUES (34, 'bafb696ee03b4daab4c00a5183d9f8ca', 6, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185638_3ded6754.jpg', 'asset-inventory/20260921_185638_3ded6754_1789988417419.jpg', 'application/octet-stream', 246786, 149, '2026-09-21 19:00:17'); +INSERT INTO `tbl_asset_inventory_file` VALUES (35, '5db8ca7a79a445b88645dd39d97e2e67', 8, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185724_3db4823f.jpg', 'asset-inventory/20260921_185724_3db4823f_1789988417997.jpg', 'application/octet-stream', 164015, 149, '2026-09-21 19:00:18'); +INSERT INTO `tbl_asset_inventory_file` VALUES (36, '5db8ca7a79a445b88645dd39d97e2e67', 8, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185724_170b6de4.jpg', 'asset-inventory/20260921_185724_170b6de4_1789988418007.jpg', 'application/octet-stream', 276766, 149, '2026-09-21 19:00:18'); +INSERT INTO `tbl_asset_inventory_file` VALUES (37, 'fe02f5769bdf4dc0b5726aac93bb730b', 7, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185558_5107047d.jpg', 'asset-inventory/20260921_185558_5107047d_1789988421508.jpg', 'application/octet-stream', 560521, 149, '2026-09-21 19:00:21'); +INSERT INTO `tbl_asset_inventory_file` VALUES (38, 'bafb696ee03b4daab4c00a5183d9f8ca', 6, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185638_3ded6754.jpg', 'asset-inventory/20260921_185638_3ded6754_1789988422324.jpg', 'application/octet-stream', 246786, 149, '2026-09-21 19:00:22'); +INSERT INTO `tbl_asset_inventory_file` VALUES (39, '5db8ca7a79a445b88645dd39d97e2e67', 8, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185724_3db4823f.jpg', 'asset-inventory/20260921_185724_3db4823f_1789988423446.jpg', 'application/octet-stream', 164015, 149, '2026-09-21 19:00:23'); +INSERT INTO `tbl_asset_inventory_file` VALUES (40, '5db8ca7a79a445b88645dd39d97e2e67', 8, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185724_170b6de4.jpg', 'asset-inventory/20260921_185724_170b6de4_1789988423447.jpg', 'application/octet-stream', 276766, 149, '2026-09-21 19:00:23'); +INSERT INTO `tbl_asset_inventory_file` VALUES (41, '93b35db7703f4e3e86d44b27f35f2a58', 12, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185735_77ed497d.jpg', 'asset-inventory/20260921_185735_77ed497d_1789988429712.jpg', 'application/octet-stream', 4268455, 149, '2026-09-21 19:00:29'); +INSERT INTO `tbl_asset_inventory_file` VALUES (42, '93b35db7703f4e3e86d44b27f35f2a58', 12, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185735_16e3ae77.jpg', 'asset-inventory/20260921_185735_16e3ae77_1789988429724.jpg', 'application/octet-stream', 4164781, 149, '2026-09-21 19:00:29'); +INSERT INTO `tbl_asset_inventory_file` VALUES (43, '97e05ba483eb41a9a3f33796682f6d46', 11, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185751_e989e463.jpg', 'asset-inventory/20260921_185751_e989e463_1789988430620.jpg', 'application/octet-stream', 246862, 149, '2026-09-21 19:00:30'); +INSERT INTO `tbl_asset_inventory_file` VALUES (44, '97e05ba483eb41a9a3f33796682f6d46', 11, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185751_8247956e.jpg', 'asset-inventory/20260921_185751_8247956e_1789988430622.jpg', 'application/octet-stream', 227761, 149, '2026-09-21 19:00:30'); +INSERT INTO `tbl_asset_inventory_file` VALUES (45, '6ff9119f63b64993845a9c067467e5da', 10, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185807_e5ff915e.jpg', 'asset-inventory/20260921_185807_e5ff915e_1789988431663.jpg', 'application/octet-stream', 223256, 149, '2026-09-21 19:00:31'); +INSERT INTO `tbl_asset_inventory_file` VALUES (46, '6ff9119f63b64993845a9c067467e5da', 10, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185807_85b6a9b5.jpg', 'asset-inventory/20260921_185807_85b6a9b5_1789988431666.jpg', 'application/octet-stream', 297668, 149, '2026-09-21 19:00:31'); +INSERT INTO `tbl_asset_inventory_file` VALUES (47, '93b35db7703f4e3e86d44b27f35f2a58', 12, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185735_77ed497d.jpg', 'asset-inventory/20260921_185735_77ed497d_1789988435876.jpg', 'application/octet-stream', 4268455, 149, '2026-09-21 19:00:35'); +INSERT INTO `tbl_asset_inventory_file` VALUES (48, '93b35db7703f4e3e86d44b27f35f2a58', 12, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185735_16e3ae77.jpg', 'asset-inventory/20260921_185735_16e3ae77_1789988435886.jpg', 'application/octet-stream', 4164781, 149, '2026-09-21 19:00:35'); +INSERT INTO `tbl_asset_inventory_file` VALUES (49, 'fe02f5769bdf4dc0b5726aac93bb730b', 7, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185558_5107047d.jpg', 'asset-inventory/20260921_185558_5107047d_1789988438145.jpg', 'application/octet-stream', 560521, 149, '2026-09-21 19:00:38'); +INSERT INTO `tbl_asset_inventory_file` VALUES (50, 'fe02f5769bdf4dc0b5726aac93bb730b', 7, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185558_5107047d.jpg', 'asset-inventory/20260921_185558_5107047d_1789988438901.jpg', 'application/octet-stream', 560521, 149, '2026-09-21 19:00:38'); +INSERT INTO `tbl_asset_inventory_file` VALUES (51, 'fe02f5769bdf4dc0b5726aac93bb730b', 7, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185558_5107047d.jpg', 'asset-inventory/20260921_185558_5107047d_1789988439198.jpg', 'application/octet-stream', 560521, 149, '2026-09-21 19:00:39'); +INSERT INTO `tbl_asset_inventory_file` VALUES (52, 'bafb696ee03b4daab4c00a5183d9f8ca', 6, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185638_3ded6754.jpg', 'asset-inventory/20260921_185638_3ded6754_1789988439407.jpg', 'application/octet-stream', 246786, 149, '2026-09-21 19:00:39'); +INSERT INTO `tbl_asset_inventory_file` VALUES (53, '5db8ca7a79a445b88645dd39d97e2e67', 8, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185724_3db4823f.jpg', 'asset-inventory/20260921_185724_3db4823f_1789988439784.jpg', 'application/octet-stream', 164015, 149, '2026-09-21 19:00:39'); +INSERT INTO `tbl_asset_inventory_file` VALUES (54, '5db8ca7a79a445b88645dd39d97e2e67', 8, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185724_170b6de4.jpg', 'asset-inventory/20260921_185724_170b6de4_1789988439785.jpg', 'application/octet-stream', 276766, 149, '2026-09-21 19:00:39'); +INSERT INTO `tbl_asset_inventory_file` VALUES (55, '97e05ba483eb41a9a3f33796682f6d46', 11, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185751_e989e463.jpg', 'asset-inventory/20260921_185751_e989e463_1789988440631.jpg', 'application/octet-stream', 246862, 149, '2026-09-21 19:00:40'); +INSERT INTO `tbl_asset_inventory_file` VALUES (56, '97e05ba483eb41a9a3f33796682f6d46', 11, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185751_8247956e.jpg', 'asset-inventory/20260921_185751_8247956e_1789988440633.jpg', 'application/octet-stream', 227761, 149, '2026-09-21 19:00:40'); +INSERT INTO `tbl_asset_inventory_file` VALUES (57, '6ff9119f63b64993845a9c067467e5da', 10, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185807_e5ff915e.jpg', 'asset-inventory/20260921_185807_e5ff915e_1789988442110.jpg', 'application/octet-stream', 223256, 149, '2026-09-21 19:00:42'); +INSERT INTO `tbl_asset_inventory_file` VALUES (58, '6ff9119f63b64993845a9c067467e5da', 10, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185807_85b6a9b5.jpg', 'asset-inventory/20260921_185807_85b6a9b5_1789988442112.jpg', 'application/octet-stream', 297668, 149, '2026-09-21 19:00:42'); +INSERT INTO `tbl_asset_inventory_file` VALUES (59, 'fe02f5769bdf4dc0b5726aac93bb730b', 7, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185558_5107047d.jpg', 'asset-inventory/20260921_185558_5107047d_1789988448400.jpg', 'application/octet-stream', 560521, 149, '2026-09-21 19:00:48'); +INSERT INTO `tbl_asset_inventory_file` VALUES (60, '93b35db7703f4e3e86d44b27f35f2a58', 12, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185735_77ed497d.jpg', 'asset-inventory/20260921_185735_77ed497d_1789988448505.jpg', 'application/octet-stream', 4268455, 149, '2026-09-21 19:00:48'); +INSERT INTO `tbl_asset_inventory_file` VALUES (61, '93b35db7703f4e3e86d44b27f35f2a58', 12, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185735_16e3ae77.jpg', 'asset-inventory/20260921_185735_16e3ae77_1789988448516.jpg', 'application/octet-stream', 4164781, 149, '2026-09-21 19:00:48'); +INSERT INTO `tbl_asset_inventory_file` VALUES (62, 'bafb696ee03b4daab4c00a5183d9f8ca', 6, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185638_3ded6754.jpg', 'asset-inventory/20260921_185638_3ded6754_1789988448947.jpg', 'application/octet-stream', 246786, 149, '2026-09-21 19:00:48'); +INSERT INTO `tbl_asset_inventory_file` VALUES (63, '5db8ca7a79a445b88645dd39d97e2e67', 8, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185724_3db4823f.jpg', 'asset-inventory/20260921_185724_3db4823f_1789988449196.jpg', 'application/octet-stream', 164015, 149, '2026-09-21 19:00:49'); +INSERT INTO `tbl_asset_inventory_file` VALUES (64, '5db8ca7a79a445b88645dd39d97e2e67', 8, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185724_170b6de4.jpg', 'asset-inventory/20260921_185724_170b6de4_1789988449198.jpg', 'application/octet-stream', 276766, 149, '2026-09-21 19:00:49'); +INSERT INTO `tbl_asset_inventory_file` VALUES (65, '97e05ba483eb41a9a3f33796682f6d46', 11, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185751_e989e463.jpg', 'asset-inventory/20260921_185751_e989e463_1789988449840.jpg', 'application/octet-stream', 246862, 149, '2026-09-21 19:00:49'); +INSERT INTO `tbl_asset_inventory_file` VALUES (66, '97e05ba483eb41a9a3f33796682f6d46', 11, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185751_8247956e.jpg', 'asset-inventory/20260921_185751_8247956e_1789988449841.jpg', 'application/octet-stream', 227761, 149, '2026-09-21 19:00:49'); +INSERT INTO `tbl_asset_inventory_file` VALUES (67, '6ff9119f63b64993845a9c067467e5da', 10, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185807_e5ff915e.jpg', 'asset-inventory/20260921_185807_e5ff915e_1789988451305.jpg', 'application/octet-stream', 223256, 149, '2026-09-21 19:00:51'); +INSERT INTO `tbl_asset_inventory_file` VALUES (68, '6ff9119f63b64993845a9c067467e5da', 10, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185807_85b6a9b5.jpg', 'asset-inventory/20260921_185807_85b6a9b5_1789988451307.jpg', 'application/octet-stream', 297668, 149, '2026-09-21 19:00:51'); +INSERT INTO `tbl_asset_inventory_file` VALUES (69, '93b35db7703f4e3e86d44b27f35f2a58', 12, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185735_77ed497d.jpg', 'asset-inventory/20260921_185735_77ed497d_1789988457433.jpg', 'application/octet-stream', 4268455, 149, '2026-09-21 19:00:57'); +INSERT INTO `tbl_asset_inventory_file` VALUES (70, '93b35db7703f4e3e86d44b27f35f2a58', 12, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185735_16e3ae77.jpg', 'asset-inventory/20260921_185735_16e3ae77_1789988457445.jpg', 'application/octet-stream', 4164781, 149, '2026-09-21 19:00:57'); +INSERT INTO `tbl_asset_inventory_file` VALUES (71, 'fe02f5769bdf4dc0b5726aac93bb730b', 7, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185558_5107047d.jpg', 'asset-inventory/20260921_185558_5107047d_1789988474375.jpg', 'application/octet-stream', 560521, 149, '2026-09-21 19:01:14'); +INSERT INTO `tbl_asset_inventory_file` VALUES (72, 'bafb696ee03b4daab4c00a5183d9f8ca', 6, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185638_3ded6754.jpg', 'asset-inventory/20260921_185638_3ded6754_1789988474767.jpg', 'application/octet-stream', 246786, 149, '2026-09-21 19:01:14'); +INSERT INTO `tbl_asset_inventory_file` VALUES (73, '5db8ca7a79a445b88645dd39d97e2e67', 8, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185724_3db4823f.jpg', 'asset-inventory/20260921_185724_3db4823f_1789988475342.jpg', 'application/octet-stream', 164015, 149, '2026-09-21 19:01:15'); +INSERT INTO `tbl_asset_inventory_file` VALUES (74, '5db8ca7a79a445b88645dd39d97e2e67', 8, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185724_170b6de4.jpg', 'asset-inventory/20260921_185724_170b6de4_1789988475344.jpg', 'application/octet-stream', 276766, 149, '2026-09-21 19:01:15'); +INSERT INTO `tbl_asset_inventory_file` VALUES (75, '93b35db7703f4e3e86d44b27f35f2a58', 12, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185735_77ed497d.jpg', 'asset-inventory/20260921_185735_77ed497d_1789988483284.jpg', 'application/octet-stream', 4268455, 149, '2026-09-21 19:01:23'); +INSERT INTO `tbl_asset_inventory_file` VALUES (76, '93b35db7703f4e3e86d44b27f35f2a58', 12, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185735_16e3ae77.jpg', 'asset-inventory/20260921_185735_16e3ae77_1789988483294.jpg', 'application/octet-stream', 4164781, 149, '2026-09-21 19:01:23'); +INSERT INTO `tbl_asset_inventory_file` VALUES (77, '97e05ba483eb41a9a3f33796682f6d46', 11, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185751_e989e463.jpg', 'asset-inventory/20260921_185751_e989e463_1789988483971.jpg', 'application/octet-stream', 246862, 149, '2026-09-21 19:01:23'); +INSERT INTO `tbl_asset_inventory_file` VALUES (78, '97e05ba483eb41a9a3f33796682f6d46', 11, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185751_8247956e.jpg', 'asset-inventory/20260921_185751_8247956e_1789988483974.jpg', 'application/octet-stream', 227761, 149, '2026-09-21 19:01:23'); +INSERT INTO `tbl_asset_inventory_file` VALUES (79, '6ff9119f63b64993845a9c067467e5da', 10, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185807_e5ff915e.jpg', 'asset-inventory/20260921_185807_e5ff915e_1789988484616.jpg', 'application/octet-stream', 223256, 149, '2026-09-21 19:01:24'); +INSERT INTO `tbl_asset_inventory_file` VALUES (80, '6ff9119f63b64993845a9c067467e5da', 10, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_185807_85b6a9b5.jpg', 'asset-inventory/20260921_185807_85b6a9b5_1789988484618.jpg', 'application/octet-stream', 297668, 149, '2026-09-21 19:01:24'); +INSERT INTO `tbl_asset_inventory_file` VALUES (81, 'b0212c0127ec4c7583a507552720ea27', 9, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_190106_a0384808.jpg', 'asset-inventory/20260921_190106_a0384808_1789988485420.jpg', 'application/octet-stream', 246786, 149, '2026-09-21 19:01:25'); +INSERT INTO `tbl_asset_inventory_file` VALUES (82, 'b0212c0127ec4c7583a507552720ea27', 9, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_190106_b0fa45d8.jpg', 'asset-inventory/20260921_190106_b0fa45d8_1789988485421.jpg', 'application/octet-stream', 440739, 149, '2026-09-21 19:01:25'); +INSERT INTO `tbl_asset_inventory_file` VALUES (83, 'edd28c5442e84cf59a6e1e3d73be44c1', 13, '/data/user/0/com.reallin.asset_management/files/difference_files/20260921_190114_943b06d2.jpg', 'asset-inventory/20260921_190114_943b06d2_1789988485988.jpg', 'application/octet-stream', 440739, 149, '2026-09-21 19:01:25'); + +-- ---------------------------- +-- Table structure for tbl_asset_inventory_operation +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_asset_inventory_operation`; +CREATE TABLE `tbl_asset_inventory_operation` ( + `id` bigint NOT NULL AUTO_INCREMENT, + `inventory_id` bigint NOT NULL, + `operate_type` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '2接单、3转单、4盘点', + `operator_user_id` bigint NULL DEFAULT NULL, + `operate_time` datetime(0) NOT NULL, + `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + PRIMARY KEY (`id`) USING BTREE, + INDEX `idx_asset_inventory_operation`(`inventory_id`, `operate_time`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 14 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '盘点执行记录' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of tbl_asset_inventory_operation +-- ---------------------------- +INSERT INTO `tbl_asset_inventory_operation` VALUES (3, 1, '4', 63, '2026-09-21 14:35:51', '盘点设备:QC-SPI-01'); +INSERT INTO `tbl_asset_inventory_operation` VALUES (4, 4, '2', 149, '2026-09-21 18:52:17', '接收盘点单'); +INSERT INTO `tbl_asset_inventory_operation` VALUES (5, 4, '4', 149, '2026-09-21 18:55:59', '盘点设备:FA-WH-2024-007'); +INSERT INTO `tbl_asset_inventory_operation` VALUES (6, 4, '4', 149, '2026-09-21 18:56:38', '盘点设备:FA-TOOL-2025-008'); +INSERT INTO `tbl_asset_inventory_operation` VALUES (7, 4, '4', 149, '2026-09-21 18:57:25', '盘点设备:FA-IT-2025-006'); +INSERT INTO `tbl_asset_inventory_operation` VALUES (8, 4, '4', 149, '2026-09-21 18:57:35', '盘点设备:FA-SMT-2024-002'); +INSERT INTO `tbl_asset_inventory_operation` VALUES (9, 4, '4', 149, '2026-09-21 18:57:52', '盘点设备:FA-QC-2024-003'); +INSERT INTO `tbl_asset_inventory_operation` VALUES (10, 4, '4', 149, '2026-09-21 18:58:07', '盘点设备:FA-QC-2024-004'); +INSERT INTO `tbl_asset_inventory_operation` VALUES (11, 4, '4', 149, '2026-09-21 19:01:06', '盘点设备:FA-UTIL-2023-005'); +INSERT INTO `tbl_asset_inventory_operation` VALUES (12, 4, '4', 149, '2026-09-21 19:01:15', '盘点设备:FA-SMT-2024-001'); +INSERT INTO `tbl_asset_inventory_operation` VALUES (13, 5, '2', 149, '2026-09-21 19:08:14', '接收盘点单'); + +-- ---------------------------- +-- Table structure for tbl_customer_category +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_customer_category`; +CREATE TABLE `tbl_customer_category` ( + `id` bigint NOT NULL AUTO_INCREMENT, + `category_name` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL, + `parent_id` bigint NULL DEFAULT 0, + `level` int NULL DEFAULT 1, + `sort` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL, + `description` varchar(500) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL, + `enabled` tinyint(1) NULL DEFAULT 1, + `creator` bigint NULL DEFAULT NULL, + `tenant_id` bigint NULL DEFAULT NULL, + `delete_flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0', + `create_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP(0), + `update_time` datetime(0) NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP(0), + PRIMARY KEY (`id`) USING BTREE, + INDEX `idx_parent_id`(`parent_id`) USING BTREE, + INDEX `idx_tenant_id`(`tenant_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_customer_category +-- ---------------------------- + +-- ---------------------------- +-- Table structure for tbl_customer_contact +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_customer_contact`; +CREATE TABLE `tbl_customer_contact` ( + `id` bigint NOT NULL AUTO_INCREMENT, + `customer_id` bigint NOT NULL, + `contact_name` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL, + `position` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL, + `phone` varchar(30) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL, + `telephone` varchar(30) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL, + `email` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL, + `wechat` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL, + `qq` varchar(30) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL, + `is_primary` tinyint(1) NULL DEFAULT 0, + `remark` varchar(500) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL, + `creator` bigint NULL DEFAULT NULL, + `tenant_id` bigint NULL DEFAULT NULL, + `delete_flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0', + `create_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP(0), + `update_time` datetime(0) NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP(0), + PRIMARY KEY (`id`) USING BTREE, + INDEX `idx_customer_id`(`customer_id`) USING BTREE, + INDEX `idx_tenant_id`(`tenant_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_customer_contact +-- ---------------------------- + +-- ---------------------------- +-- Table structure for tbl_delivery_plan +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_delivery_plan`; +CREATE TABLE `tbl_delivery_plan` ( + `id` bigint NOT NULL AUTO_INCREMENT, + `plan_number` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '交货计划单号', + `source_type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '来源类型:sale销售出库、retail零售出库', + `source_bill_id` bigint NOT NULL COMMENT '来源出库单id', + `source_bill_number` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '来源出库单号', + `sale_order_number` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '关联销售订单号', + `customer_id` bigint NULL DEFAULT NULL COMMENT '客户/会员id', + `status` varchar(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '0' COMMENT '状态:0待发货、1部分发货、2已完成', + `planned_delivery_time` datetime(0) NULL DEFAULT NULL COMMENT '计划交货时间', + `adjust_reason` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '调整原因', + `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `creator` bigint NULL DEFAULT NULL COMMENT '创建人', + `tenant_id` bigint NULL DEFAULT NULL COMMENT '租户id', + `delete_flag` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '0' COMMENT '删除标记', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `uk_delivery_plan_number`(`plan_number`) USING BTREE, + INDEX `idx_delivery_plan_source_bill_id`(`source_bill_id`) USING BTREE, + INDEX `idx_delivery_plan_source_bill_number`(`source_bill_number`) USING BTREE, + INDEX `idx_delivery_plan_status`(`status`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '交货计划主表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_delivery_plan +-- ---------------------------- +INSERT INTO `tbl_delivery_plan` VALUES (6, 'JH00000001717', 'sale', 1714, 'XSCK-3PH-APEC3-WC-OV-28', 'XSDD-42260529-3PH-APEC3-WC-OV', 90, '2', NULL, NULL, NULL, '2026-09-18 11:41:38', 63, 63, '0'); +INSERT INTO `tbl_delivery_plan` VALUES (7, 'JH00000001741', 'sale', 1720, 'XSCK00000001728', 'XSDD00000001726', 90, '2', NULL, NULL, NULL, '2026-09-18 12:33:05', 63, NULL, '0'); + +-- ---------------------------- +-- Table structure for tbl_delivery_plan_item +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_delivery_plan_item`; +CREATE TABLE `tbl_delivery_plan_item` ( + `id` bigint NOT NULL AUTO_INCREMENT, + `plan_id` bigint NOT NULL COMMENT '交货计划id', + `source_item_id` bigint NOT NULL COMMENT '来源出库明细id', + `material_id` bigint NULL DEFAULT NULL COMMENT '商品id', + `material_extend_id` bigint NULL DEFAULT NULL COMMENT '商品扩展id', + `bar_code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '条码', + `material_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '商品名称', + `standard` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '规格', + `model` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '型号', + `unit` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '单位', + `batch_number` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '批号', + `sn_list` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '序列号', + `plan_quantity` decimal(24, 6) NULL DEFAULT 0.000000 COMMENT '计划数量', + `shipped_quantity` decimal(24, 6) NULL DEFAULT 0.000000 COMMENT '已发货数量', + `depot_id` bigint NULL DEFAULT NULL COMMENT '出库仓库id', + `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注', + `tenant_id` bigint NULL DEFAULT NULL COMMENT '租户id', + `delete_flag` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '0' COMMENT '删除标记', + PRIMARY KEY (`id`) USING BTREE, + INDEX `idx_delivery_plan_item_plan_id`(`plan_id`) USING BTREE, + INDEX `idx_delivery_plan_item_source_item_id`(`source_item_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '交货计划明细' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_delivery_plan_item +-- ---------------------------- +INSERT INTO `tbl_delivery_plan_item` VALUES (5, 6, 1519, 704, 124, '3PH-APEC3-WC', '3PH APEC3-WC', '3PH APEC3-WC', '3PH APEC3-WC', '件', NULL, NULL, 149.000000, 0.000000, 26, '', 63, '0'); +INSERT INTO `tbl_delivery_plan_item` VALUES (6, 7, 1525, 703, 123, '1PH-WS79', '1PH WS79', '1PH WS79', '1PH WS79', '件', NULL, NULL, 10000.000000, 0.000000, 25, NULL, NULL, '0'); + +-- ---------------------------- +-- Table structure for tbl_depot +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_depot`; +CREATE TABLE `tbl_depot` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `name` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '仓库名称', + `address` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '仓库地址', + `warehousing` decimal(24, 6) NULL DEFAULT NULL COMMENT '仓储费', + `truckage` decimal(24, 6) NULL DEFAULT NULL COMMENT '搬运费', + `type` int NULL DEFAULT NULL COMMENT '类型', + `sort` varchar(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '排序', + `remark` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '描述', + `principal` bigint NULL DEFAULT NULL COMMENT '负责人', + `enabled` bit(1) NULL DEFAULT NULL COMMENT '启用', + `tenant_id` bigint NULL DEFAULT NULL COMMENT '租户id', + `delete_Flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '删除标记,0未删除,1删除', + `is_default` bit(1) NULL DEFAULT NULL COMMENT '是否默认', + PRIMARY KEY (`id`) USING BTREE, + INDEX `tenant_id`(`tenant_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 27 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '仓库表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_depot +-- ---------------------------- +INSERT INTO `tbl_depot` VALUES (25, '半成品仓库', '', 0.000000, 0.000000, 0, '1', '总部入库物料', NULL, b'1', 63, '0', b'1'); +INSERT INTO `tbl_depot` VALUES (26, '成品仓库', '', 0.000000, 0.000000, 0, '2', 'Stock Status成品', NULL, b'1', 63, '0', b'0'); + +-- ---------------------------- +-- Table structure for tbl_depot_head +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_depot_head`; +CREATE TABLE `tbl_depot_head` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `type` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '类型(出库/入库)', + `sub_type` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '出入库分类', + `default_number` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '初始票据号', + `number` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '票据号', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `oper_time` datetime(0) NULL DEFAULT NULL COMMENT '出入库时间', + `organ_id` bigint NULL DEFAULT NULL COMMENT '供应商id', + `creator` bigint NULL DEFAULT NULL COMMENT '操作员', + `account_id` bigint NULL DEFAULT NULL COMMENT '账户id', + `change_amount` decimal(24, 6) NULL DEFAULT NULL COMMENT '变动金额(收款/付款)', + `back_amount` decimal(24, 6) NULL DEFAULT NULL COMMENT '找零金额', + `total_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '合计金额', + `pay_type` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '付款类型(现金、记账等)', + `bill_type` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '单据类型', + `remark` varchar(1000) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '备注', + `file_name` varchar(1000) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '附件名称', + `sales_man` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '销售员(可以多个)', + `account_id_list` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '多账户ID列表', + `account_money_list` varchar(200) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '多账户金额列表', + `discount` decimal(24, 6) NULL DEFAULT NULL COMMENT '优惠率', + `discount_money` decimal(24, 6) NULL DEFAULT NULL COMMENT '优惠金额', + `discount_last_money` decimal(24, 6) NULL DEFAULT NULL COMMENT '优惠后金额', + `other_money` decimal(24, 6) NULL DEFAULT NULL COMMENT '销售或采购费用合计', + `deposit` decimal(24, 6) NULL DEFAULT NULL COMMENT '订金', + `last_deposit` decimal(24, 6) NULL DEFAULT NULL COMMENT '剩余订金', + `debt` decimal(24, 6) NULL DEFAULT NULL COMMENT '本次欠款', + `last_debt` decimal(24, 6) NULL DEFAULT NULL COMMENT '最终欠款', + `status` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '状态,0未审核、1已审核、2完成采购|销售、3部分采购|销售、9审核中', + `purchase_status` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '采购状态,0未采购、2完成采购、3部分采购', + `source` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '单据来源,0-pc,1-手机', + `link_number` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '关联订单号', + `link_apply` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '关联请购单', + `tenant_id` bigint NULL DEFAULT NULL COMMENT '租户id', + `delete_flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '删除标记,0未删除,1删除', + PRIMARY KEY (`id`) USING BTREE, + INDEX `FK2A80F214B610FC06`(`organ_id`) USING BTREE, + INDEX `FK2A80F214AAE50527`(`account_id`) USING BTREE, + INDEX `number`(`number`) USING BTREE, + INDEX `link_number`(`link_number`) USING BTREE, + INDEX `creator`(`creator`) USING BTREE, + INDEX `tenant_id`(`tenant_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1726 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '单据主表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_depot_head +-- ---------------------------- +INSERT INTO `tbl_depot_head` VALUES (1272, '入库', '总部入库', 'SM2503070001', 'SM2503070001', '2025-03-07 00:00:00', '2025-03-07 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 16200.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 16200.000000, 0.000000, 0.000000, 0.000000, 16200.000000, 16200.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1273, '入库', '总部入库', 'SM2503260005', 'SM2503260005', '2025-03-26 00:00:00', '2025-03-26 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 1586109.600000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 1586109.600000, 0.000000, 0.000000, 0.000000, 1586109.600000, 1586109.600000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1274, '入库', '总部入库', 'SM2503260006', 'SM2503260006', '2025-03-26 00:00:00', '2025-03-26 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 199.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 199.000000, 0.000000, 0.000000, 0.000000, 199.000000, 199.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1275, '入库', '总部入库', 'SM2503280023', 'SM2503280023', '2025-03-28 00:00:00', '2025-03-28 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 275400.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 275400.000000, 0.000000, 0.000000, 0.000000, 275400.000000, 275400.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1276, '入库', '总部入库', 'SM2503280024', 'SM2503280024', '2025-03-28 00:00:00', '2025-03-28 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 245592.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 245592.000000, 0.000000, 0.000000, 0.000000, 245592.000000, 245592.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1277, '入库', '总部入库', 'SM2504010007', 'SM2504010007', '2025-04-01 00:00:00', '2025-04-01 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 829.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 829.000000, 0.000000, 0.000000, 0.000000, 829.000000, 829.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1278, '入库', '总部入库', 'SM2504010008', 'SM2504010008', '2025-04-01 00:00:00', '2025-04-01 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 3344020.200000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 3344020.200000, 0.000000, 0.000000, 0.000000, 3344020.200000, 3344020.200000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1279, '入库', '总部入库', 'SM2504010009', 'SM2504010009', '2025-04-01 00:00:00', '2025-04-01 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 64800.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 64800.000000, 0.000000, 0.000000, 0.000000, 64800.000000, 64800.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1280, '入库', '总部入库', 'SM2505120010', 'SM2505120010', '2025-05-12 00:00:00', '2025-05-12 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 1457416.800000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 1457416.800000, 0.000000, 0.000000, 0.000000, 1457416.800000, 1457416.800000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1281, '入库', '总部入库', 'SM2505140011', 'SM2505140011', '2025-05-14 00:00:00', '2025-05-14 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 161935.200000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 161935.200000, 0.000000, 0.000000, 0.000000, 161935.200000, 161935.200000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1282, '入库', '总部入库', 'SM2505140012', 'SM2505140012', '2025-05-14 00:00:00', '2025-05-14 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 790398.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 790398.000000, 0.000000, 0.000000, 0.000000, 790398.000000, 790398.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1283, '入库', '总部入库', 'SM2505220018', 'SM2505220018', '2025-05-22 00:00:00', '2025-05-22 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 242902.800000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 242902.800000, 0.000000, 0.000000, 0.000000, 242902.800000, 242902.800000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1284, '入库', '总部入库', 'SM2505220019', 'SM2505220019', '2025-05-22 00:00:00', '2025-05-22 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 1781287.200000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 1781287.200000, 0.000000, 0.000000, 0.000000, 1781287.200000, 1781287.200000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1285, '入库', '总部入库', 'SM2505230002', 'SM2505230002', '2025-05-23 00:00:00', '2025-05-23 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 56897.640000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 56897.640000, 0.000000, 0.000000, 0.000000, 56897.640000, 56897.640000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1286, '入库', '总部入库', 'SM2505230003', 'SM2505230003', '2025-05-23 00:00:00', '2025-05-23 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 100375.200000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 100375.200000, 0.000000, 0.000000, 0.000000, 100375.200000, 100375.200000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1287, '入库', '总部入库', 'SM2505270016', 'SM2505270016', '2025-05-27 00:00:00', '2025-05-27 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 161935.200000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 161935.200000, 0.000000, 0.000000, 0.000000, 161935.200000, 161935.200000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1288, '入库', '总部入库', 'SM2505290002', 'SM2505290002', '2025-05-29 00:00:00', '2025-05-29 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 223624.800000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 223624.800000, 0.000000, 0.000000, 0.000000, 223624.800000, 223624.800000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1289, '入库', '总部入库', 'SM2506120018', 'SM2506120018', '2025-06-12 00:00:00', '2025-06-12 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 1669474.800000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 1669474.800000, 0.000000, 0.000000, 0.000000, 1669474.800000, 1669474.800000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1290, '入库', '总部入库', 'SM2506200003', 'SM2506200003', '2025-06-20 00:00:00', '2025-06-20 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 24300.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 24300.000000, 0.000000, 0.000000, 0.000000, 24300.000000, 24300.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1291, '入库', '总部入库', 'SM2506200018', 'SM2506200018', '2025-06-20 00:00:00', '2025-06-20 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 242902.800000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 242902.800000, 0.000000, 0.000000, 0.000000, 242902.800000, 242902.800000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1292, '入库', '总部入库', 'SM2506230003', 'SM2506230003', '2025-06-23 00:00:00', '2025-06-23 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 10040.760000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 10040.760000, 0.000000, 0.000000, 0.000000, 10040.760000, 10040.760000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1293, '入库', '总部入库', 'SM2506240004', 'SM2506240004', '2025-06-24 00:00:00', '2025-06-24 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 242902.800000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 242902.800000, 0.000000, 0.000000, 0.000000, 242902.800000, 242902.800000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1294, '入库', '总部入库', 'SM2506240005', 'SM2506240005', '2025-06-24 00:00:00', '2025-06-24 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 1619352.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 1619352.000000, 0.000000, 0.000000, 0.000000, 1619352.000000, 1619352.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1295, '入库', '总部入库', 'SM2507010002', 'SM2507010002', '2025-07-01 00:00:00', '2025-07-01 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 2409.750000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 2409.750000, 0.000000, 0.000000, 0.000000, 2409.750000, 2409.750000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1296, '入库', '总部入库', 'SM2507010011', 'SM2507010011', '2025-07-01 00:00:00', '2025-07-01 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 174947.850000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 174947.850000, 0.000000, 0.000000, 0.000000, 174947.850000, 174947.850000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1297, '入库', '总部入库', 'SM2507160007', 'SM2507160007', '2025-07-16 00:00:00', '2025-07-16 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 6642.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 6642.000000, 0.000000, 0.000000, 0.000000, 6642.000000, 6642.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1298, '入库', '总部入库', 'SM2508130001', 'SM2508130001', '2025-08-13 00:00:00', '2025-08-13 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 3682324.800000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 3682324.800000, 0.000000, 0.000000, 0.000000, 3682324.800000, 3682324.800000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1299, '入库', '总部入库', 'SM2508130002', 'SM2508130002', '2025-08-13 00:00:00', '2025-08-13 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 462.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 462.000000, 0.000000, 0.000000, 0.000000, 462.000000, 462.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1300, '入库', '总部入库', 'SM2508150005', 'SM2508150005', '2025-08-15 00:00:00', '2025-08-15 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 527.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 527.000000, 0.000000, 0.000000, 0.000000, 527.000000, 527.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1301, '入库', '总部入库', 'SM2508150006', 'SM2508150006', '2025-08-15 00:00:00', '2025-08-15 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 4200400.800000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 4200400.800000, 0.000000, 0.000000, 0.000000, 4200400.800000, 4200400.800000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1302, '入库', '总部入库', 'SM2508200017', 'SM2508200017', '2025-08-20 00:00:00', '2025-08-20 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 87674.400000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 87674.400000, 0.000000, 0.000000, 0.000000, 87674.400000, 87674.400000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1303, '入库', '总部入库', 'SM2508200018', 'SM2508200018', '2025-08-20 00:00:00', '2025-08-20 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 1088640.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 1088640.000000, 0.000000, 0.000000, 0.000000, 1088640.000000, 1088640.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1304, '入库', '总部入库', 'SM2508200021', 'SM2508200021', '2025-08-20 00:00:00', '2025-08-20 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 11.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 11.000000, 0.000000, 0.000000, 0.000000, 11.000000, 11.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1305, '入库', '总部入库', 'SM2509050003', 'SM2509050003', '2025-09-05 00:00:00', '2025-09-05 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 1503360.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 1503360.000000, 0.000000, 0.000000, 0.000000, 1503360.000000, 1503360.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1306, '入库', '总部入库', 'SM2509250039', 'SM2509250039', '2025-09-25 00:00:00', '2025-09-25 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 1000.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 1000.000000, 0.000000, 0.000000, 0.000000, 1000.000000, 1000.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1307, '入库', '总部入库', 'SM2509250040', 'SM2509250040', '2025-09-25 00:00:00', '2025-09-25 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 4033800.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 4033800.000000, 0.000000, 0.000000, 0.000000, 4033800.000000, 4033800.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1308, '入库', '总部入库', 'SM2510170016', 'SM2510170016', '2025-10-17 00:00:00', '2025-10-17 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 14256.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 14256.000000, 0.000000, 0.000000, 0.000000, 14256.000000, 14256.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1309, '入库', '总部入库', 'SM2510200008', 'SM2510200008', '2025-10-20 00:00:00', '2025-10-20 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 82814.400000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 82814.400000, 0.000000, 0.000000, 0.000000, 82814.400000, 82814.400000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1310, '入库', '总部入库', 'SM2510290014', 'SM2510290014', '2025-10-29 00:00:00', '2025-10-29 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 208144.080000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 208144.080000, 0.000000, 0.000000, 0.000000, 208144.080000, 208144.080000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1311, '入库', '总部入库', 'SM2510300013', 'SM2510300013', '2025-10-30 00:00:00', '2025-10-30 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 3825655.920000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 3825655.920000, 0.000000, 0.000000, 0.000000, 3825655.920000, 3825655.920000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1312, '入库', '总部入库', 'SM2510300015', 'SM2510300015', '2025-10-30 00:00:00', '2025-10-30 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 999.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 999.000000, 0.000000, 0.000000, 0.000000, 999.000000, 999.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1313, '入库', '总部入库', 'SM2510300018', 'SM2510300018', '2025-10-30 00:00:00', '2025-10-30 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 1.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 1.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1314, '入库', '总部入库', 'SM2511190031', 'SM2511190031', '2025-11-19 00:00:00', '2025-11-19 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 1539648.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 1539648.000000, 0.000000, 0.000000, 0.000000, 1539648.000000, 1539648.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1315, '入库', '总部入库', 'SM2511220001', 'SM2511220001', '2025-11-22 00:00:00', '2025-11-22 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 1694196.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 1694196.000000, 0.000000, 0.000000, 0.000000, 1694196.000000, 1694196.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1316, '入库', '总部入库', 'SM2511260001', 'SM2511260001', '2025-11-26 00:00:00', '2025-11-26 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 420.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 420.000000, 0.000000, 0.000000, 0.000000, 420.000000, 420.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1317, '入库', '总部入库', 'SM2511260002', 'SM2511260002', '2025-11-26 00:00:00', '2025-11-26 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 4017081.600000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 4017081.600000, 0.000000, 0.000000, 0.000000, 4017081.600000, 4017081.600000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1318, '入库', '总部入库', 'SM2511260006', 'SM2511260006', '2025-11-26 00:00:00', '2025-11-26 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 504.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 504.000000, 0.000000, 0.000000, 0.000000, 504.000000, 504.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1319, '入库', '总部入库', 'SM2511280010', 'SM2511280010', '2025-11-28 00:00:00', '2025-11-28 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 15552.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 15552.000000, 0.000000, 0.000000, 0.000000, 15552.000000, 15552.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1320, '入库', '总部入库', 'SM2511290001', 'SM2511290001', '2025-11-29 00:00:00', '2025-11-29 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 3953318.400000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 3953318.400000, 0.000000, 0.000000, 0.000000, 3953318.400000, 3953318.400000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1321, '入库', '总部入库', 'SM2512030024', 'SM2512030024', '2025-12-03 00:00:00', '2025-12-03 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 1000.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 1000.000000, 0.000000, 0.000000, 0.000000, 1000.000000, 1000.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1322, '入库', '总部入库', 'SM2512030027', 'SM2512030027', '2025-12-03 00:00:00', '2025-12-03 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 4033800.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 4033800.000000, 0.000000, 0.000000, 0.000000, 4033800.000000, 4033800.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1323, '入库', '总部入库', 'SM2512100009', 'SM2512100009', '2025-12-10 00:00:00', '2025-12-10 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 4017081.600000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 4017081.600000, 0.000000, 0.000000, 0.000000, 4017081.600000, 4017081.600000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1324, '入库', '总部入库', 'SM2512100033', 'SM2512100033', '2025-12-10 00:00:00', '2025-12-10 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 504.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 504.000000, 0.000000, 0.000000, 0.000000, 504.000000, 504.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1325, '入库', '总部入库', 'SM2512150009', 'SM2512150009', '2025-12-15 00:00:00', '2025-12-15 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 2175919.200000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 2175919.200000, 0.000000, 0.000000, 0.000000, 2175919.200000, 2175919.200000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1326, '入库', '总部入库', 'SM2601010017', 'SM2601010017', '2025-12-25 00:00:00', '2025-12-25 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 819072.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 819072.000000, 0.000000, 0.000000, 0.000000, 819072.000000, 819072.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1327, '入库', '总部入库', 'SM2512260011', 'SM2512260011', '2025-12-26 00:00:00', '2025-12-26 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 273.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 273.000000, 0.000000, 0.000000, 0.000000, 273.000000, 273.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1328, '入库', '总部入库', 'SM2512260022', 'SM2512260022', '2025-12-26 00:00:00', '2025-12-26 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 496.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 496.000000, 0.000000, 0.000000, 0.000000, 496.000000, 496.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1329, '入库', '总部入库', 'SM2512300003', 'SM2512300003', '2025-12-30 00:00:00', '2025-12-30 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 471.300000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 471.300000, 0.000000, 0.000000, 0.000000, 471.300000, 471.300000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1330, '入库', '总部入库', 'SM2512300014', 'SM2512300014', '2025-12-30 00:00:00', '2025-12-30 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 3756449.520000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 3756449.520000, 0.000000, 0.000000, 0.000000, 3756449.520000, 3756449.520000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1331, '入库', '总部入库', 'SM2512300022', 'SM2512300022', '2025-12-30 00:00:00', '2025-12-30 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 165888.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 165888.000000, 0.000000, 0.000000, 0.000000, 165888.000000, 165888.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1332, '入库', '总部入库', 'SM2601050003', 'SM2601050003', '2026-01-05 00:00:00', '2026-01-05 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 693360.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 693360.000000, 0.000000, 0.000000, 0.000000, 693360.000000, 693360.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1333, '入库', '总部入库', 'SM2601050016', 'SM2601050016', '2026-01-05 00:00:00', '2026-01-05 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 51840.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 51840.000000, 0.000000, 0.000000, 0.000000, 51840.000000, 51840.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1334, '入库', '总部入库', 'SM2601200013', 'SM2601200013', '2026-01-20 00:00:00', '2026-01-20 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 1036800.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 1036800.000000, 0.000000, 0.000000, 0.000000, 1036800.000000, 1036800.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1335, '入库', '总部入库', 'SM2601210004', 'SM2601210004', '2026-01-21 00:00:00', '2026-01-21 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 36288.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 36288.000000, 0.000000, 0.000000, 0.000000, 36288.000000, 36288.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1336, '入库', '总部入库', 'SM2604110001', 'SM2604110001', '2026-04-11 00:00:00', '2026-04-11 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 259815.600000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 259815.600000, 0.000000, 0.000000, 0.000000, 259815.600000, 259815.600000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1337, '入库', '总部入库', 'SM2604130008', 'SM2604130008', '2026-04-13 00:00:00', '2026-04-13 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 254202.300000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 254202.300000, 0.000000, 0.000000, 0.000000, 254202.300000, 254202.300000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1338, '入库', '总部入库', 'SM2604140020', 'SM2604140020', '2026-04-14 00:00:00', '2026-04-14 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 308731.500000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 308731.500000, 0.000000, 0.000000, 0.000000, 308731.500000, 308731.500000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1339, '入库', '总部入库', 'SM2604150001', 'SM2604150001', '2026-04-15 00:00:00', '2026-04-15 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 43302.600000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 43302.600000, 0.000000, 0.000000, 0.000000, 43302.600000, 43302.600000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1340, '入库', '总部入库', 'SM2604150007', 'SM2604150007', '2026-04-15 00:00:00', '2026-04-15 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 43302.600000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 43302.600000, 0.000000, 0.000000, 0.000000, 43302.600000, 43302.600000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1341, '入库', '总部入库', 'SM2604150008', 'SM2604150008', '2026-04-15 00:00:00', '2026-04-15 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 86605.200000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 86605.200000, 0.000000, 0.000000, 0.000000, 86605.200000, 86605.200000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1342, '入库', '总部入库', 'SM2604150011', 'SM2604150011', '2026-04-15 00:00:00', '2026-04-15 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 303118.200000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 303118.200000, 0.000000, 0.000000, 0.000000, 303118.200000, 303118.200000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1343, '入库', '总部入库', 'SM2604150015', 'SM2604150015', '2026-04-15 00:00:00', '2026-04-15 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 809676.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 809676.000000, 0.000000, 0.000000, 0.000000, 809676.000000, 809676.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1344, '入库', '总部入库', 'SM2604150017', 'SM2604150017', '2026-04-15 00:00:00', '2026-04-15 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 1781287.200000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 1781287.200000, 0.000000, 0.000000, 0.000000, 1781287.200000, 1781287.200000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1345, '入库', '总部入库', 'SM2604160033', 'SM2604160033', '2026-04-16 00:00:00', '2026-04-16 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 216513.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 216513.000000, 0.000000, 0.000000, 0.000000, 216513.000000, 216513.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1346, '入库', '总部入库', 'SM2604170001', 'SM2604170001', '2026-04-17 00:00:00', '2026-04-17 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 346420.800000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 346420.800000, 0.000000, 0.000000, 0.000000, 346420.800000, 346420.800000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1347, '入库', '总部入库', 'SM2604170004', 'SM2604170004', '2026-04-17 00:00:00', '2026-04-17 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 389723.400000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 389723.400000, 0.000000, 0.000000, 0.000000, 389723.400000, 389723.400000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1348, '入库', '总部入库', 'SM2604210008', 'SM2604210008', '2026-04-21 00:00:00', '2026-04-21 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 995959.800000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 995959.800000, 0.000000, 0.000000, 0.000000, 995959.800000, 995959.800000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1349, '入库', '总部入库', 'SM2604220017', 'SM2604220017', '2026-04-22 00:00:00', '2026-04-22 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 1619352.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 1619352.000000, 0.000000, 0.000000, 0.000000, 1619352.000000, 1619352.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1350, '入库', '总部入库', 'SM2604220018', 'SM2604220018', '2026-04-22 00:00:00', '2026-04-22 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 1700319.600000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 1700319.600000, 0.000000, 0.000000, 0.000000, 1700319.600000, 1700319.600000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1351, '入库', '总部入库', 'SM2604220019', 'SM2604220019', '2026-04-22 00:00:00', '2026-04-22 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 43302.600000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 43302.600000, 0.000000, 0.000000, 0.000000, 43302.600000, 43302.600000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1352, '入库', '总部入库', 'SM2604230004', 'SM2604230004', '2026-04-23 00:00:00', '2026-04-23 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 80967.600000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 80967.600000, 0.000000, 0.000000, 0.000000, 80967.600000, 80967.600000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1353, '入库', '总部入库', 'SM2604230012', 'SM2604230012', '2026-04-23 00:00:00', '2026-04-23 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 80967.600000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 80967.600000, 0.000000, 0.000000, 0.000000, 80967.600000, 80967.600000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1354, '入库', '总部入库', 'SM2604240007', 'SM2604240007', '2026-04-24 00:00:00', '2026-04-24 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 718502.400000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 718502.400000, 0.000000, 0.000000, 0.000000, 718502.400000, 718502.400000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1355, '入库', '总部入库', 'SM2604270003', 'SM2604270003', '2026-04-27 00:00:00', '2026-04-27 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 607038.300000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 607038.300000, 0.000000, 0.000000, 0.000000, 607038.300000, 607038.300000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1356, '入库', '总部入库', 'SM2604270008', 'SM2604270008', '2026-04-27 00:00:00', '2026-04-27 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 345618.900000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 345618.900000, 0.000000, 0.000000, 0.000000, 345618.900000, 345618.900000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1357, '入库', '总部入库', 'SM2604270020', 'SM2604270020', '2026-04-27 00:00:00', '2026-04-27 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 71810.550000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 71810.550000, 0.000000, 0.000000, 0.000000, 71810.550000, 71810.550000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1358, '入库', '总部入库', 'SM2604300004', 'SM2604300004', '2026-04-30 00:00:00', '2026-04-30 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 389723.400000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 389723.400000, 0.000000, 0.000000, 0.000000, 389723.400000, 389723.400000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1359, '入库', '总部入库', 'SM2604300007', 'SM2604300007', '2026-04-30 00:00:00', '2026-04-30 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 562933.800000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 562933.800000, 0.000000, 0.000000, 0.000000, 562933.800000, 562933.800000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1360, '入库', '总部入库', 'SM2605080022', 'SM2605080022', '2026-05-08 00:00:00', '2026-05-08 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 562933.800000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 562933.800000, 0.000000, 0.000000, 0.000000, 562933.800000, 562933.800000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1361, '入库', '总部入库', 'SM2605090005', 'SM2605090005', '2026-05-09 00:00:00', '2026-05-09 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 389723.400000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 389723.400000, 0.000000, 0.000000, 0.000000, 389723.400000, 389723.400000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1362, '入库', '总部入库', 'SM2605140005', 'SM2605140005', '2026-05-14 00:00:00', '2026-05-14 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 433026.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 433026.000000, 0.000000, 0.000000, 0.000000, 433026.000000, 433026.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1363, '入库', '总部入库', 'SM2605180003', 'SM2605180003', '2026-05-18 00:00:00', '2026-05-18 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 404838.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 404838.000000, 0.000000, 0.000000, 0.000000, 404838.000000, 404838.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1364, '入库', '总部入库', 'SM2605180004', 'SM2605180004', '2026-05-18 00:00:00', '2026-05-18 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 80967.600000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 80967.600000, 0.000000, 0.000000, 0.000000, 80967.600000, 80967.600000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1365, '入库', '总部入库', 'SM2605180015', 'SM2605180015', '2026-05-18 00:00:00', '2026-05-18 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 43302.600000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 43302.600000, 0.000000, 0.000000, 0.000000, 43302.600000, 43302.600000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1366, '入库', '总部入库', 'SM2605180016', 'SM2605180016', '2026-05-18 00:00:00', '2026-05-18 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 994356.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 994356.000000, 0.000000, 0.000000, 0.000000, 994356.000000, 994356.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1367, '入库', '总部入库', 'SM2605180020', 'SM2605180020', '2026-05-18 00:00:00', '2026-05-18 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 675199.800000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 675199.800000, 0.000000, 0.000000, 0.000000, 675199.800000, 675199.800000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1368, '入库', '总部入库', 'SM2605200001', 'SM2605200001', '2026-05-20 00:00:00', '2026-05-20 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 890643.600000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 890643.600000, 0.000000, 0.000000, 0.000000, 890643.600000, 890643.600000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1369, '入库', '总部入库', 'SM2605200002', 'SM2605200002', '2026-05-20 00:00:00', '2026-05-20 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 485805.600000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 485805.600000, 0.000000, 0.000000, 0.000000, 485805.600000, 485805.600000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1370, '入库', '总部入库', 'SM2605200003', 'SM2605200003', '2026-05-20 00:00:00', '2026-05-20 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 242902.800000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 242902.800000, 0.000000, 0.000000, 0.000000, 242902.800000, 242902.800000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1371, '入库', '总部入库', 'SM2605290001', 'SM2605290001', '2026-05-29 00:00:00', '2026-05-29 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 1619352.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 1619352.000000, 0.000000, 0.000000, 0.000000, 1619352.000000, 1619352.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1372, '入库', '总部入库', 'SM2606050014', 'SM2606050014', '2026-06-05 00:00:00', '2026-06-05 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 80967.600000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 80967.600000, 0.000000, 0.000000, 0.000000, 80967.600000, 80967.600000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1373, '入库', '总部入库', 'SM2606060001', 'SM2606060001', '2026-06-06 00:00:00', '2026-06-06 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 1172102.400000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 1172102.400000, 0.000000, 0.000000, 0.000000, 1172102.400000, 1172102.400000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1374, '入库', '总部入库', 'SM2606080001', 'SM2606080001', '2026-06-08 00:00:00', '2026-06-08 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 21205.800000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 21205.800000, 0.000000, 0.000000, 0.000000, 21205.800000, 21205.800000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1375, '入库', '总部入库', 'SM2606170032', 'SM2606170032', '2026-06-17 00:00:00', '2026-06-17 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 370915.200000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 370915.200000, 0.000000, 0.000000, 0.000000, 370915.200000, 370915.200000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1376, '入库', '总部入库', 'SM2606180036', 'SM2606180036', '2026-06-18 00:00:00', '2026-06-18 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 510008.400000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 510008.400000, 0.000000, 0.000000, 0.000000, 510008.400000, 510008.400000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1377, '入库', '总部入库', 'SM2606230003', 'SM2606230003', '2026-06-23 00:00:00', '2026-06-23 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 324550.800000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 324550.800000, 0.000000, 0.000000, 0.000000, 324550.800000, 324550.800000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1378, '入库', '总部入库', 'SM2606240011', 'SM2606240011', '2026-06-24 00:00:00', '2026-06-24 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 92728.800000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 92728.800000, 0.000000, 0.000000, 0.000000, 92728.800000, 92728.800000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1379, '入库', '总部入库', 'SM2606250001', 'SM2606250001', '2026-06-25 00:00:00', '2026-06-25 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 190179.900000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 190179.900000, 0.000000, 0.000000, 0.000000, 190179.900000, 190179.900000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1380, '入库', '总部入库', 'SM2606250005', 'SM2606250005', '2026-06-25 00:00:00', '2026-06-25 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 185457.600000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 185457.600000, 0.000000, 0.000000, 0.000000, 185457.600000, 185457.600000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1381, '入库', '总部入库', 'SM2606250007', 'SM2606250007', '2026-06-25 00:00:00', '2026-06-25 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 43359.300000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 43359.300000, 0.000000, 0.000000, 0.000000, 43359.300000, 43359.300000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1382, '入库', '总部入库', 'SM2606290012', 'SM2606290012', '2026-06-29 00:00:00', '2026-06-29 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 122.400000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 122.400000, 0.000000, 0.000000, 0.000000, 122.400000, 122.400000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1383, '入库', '总部入库', 'SM2606290014', 'SM2606290014', '2026-06-29 00:00:00', '2026-06-29 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 275562.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 275562.000000, 0.000000, 0.000000, 0.000000, 275562.000000, 275562.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1384, '入库', '总部入库', 'SM2606300001', 'SM2606300001', '2026-06-30 00:00:00', '2026-06-30 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 816.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 816.000000, 0.000000, 0.000000, 0.000000, 816.000000, 816.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1385, '入库', '总部入库', 'SM2606300002', 'SM2606300002', '2026-06-30 00:00:00', '2026-06-30 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 1469664.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 1469664.000000, 0.000000, 0.000000, 0.000000, 1469664.000000, 1469664.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1386, '入库', '总部入库', 'SM2607010032', 'SM2607010032', '2026-07-01 00:00:00', '2026-07-01 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 510300.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 510300.000000, 0.000000, 0.000000, 0.000000, 510300.000000, 510300.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1387, '入库', '总部入库', 'SM2607020015', 'SM2607020015', '2026-07-02 00:00:00', '2026-07-02 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 265.200000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 265.200000, 0.000000, 0.000000, 0.000000, 265.200000, 265.200000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1388, '入库', '总部入库', 'SM2607020017', 'SM2607020017', '2026-07-02 00:00:00', '2026-07-02 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 510.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 510.000000, 0.000000, 0.000000, 0.000000, 510.000000, 510.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1389, '入库', '总部入库', 'SM2607020018', 'SM2607020018', '2026-07-02 00:00:00', '2026-07-02 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 459270.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 459270.000000, 0.000000, 0.000000, 0.000000, 459270.000000, 459270.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1390, '入库', '总部入库', 'SM2607030001', 'SM2607030001', '2026-07-03 00:00:00', '2026-07-03 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 642978.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 642978.000000, 0.000000, 0.000000, 0.000000, 642978.000000, 642978.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1391, '入库', '总部入库', 'SM2607030016', 'SM2607030016', '2026-07-03 00:00:00', '2026-07-03 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 1224720.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 1224720.000000, 0.000000, 0.000000, 0.000000, 1224720.000000, 1224720.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1392, '入库', '总部入库', 'SM2607130001', 'SM2607130001', '2026-07-13 00:00:00', '2026-07-13 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 408240.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 408240.000000, 0.000000, 0.000000, 0.000000, 408240.000000, 408240.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1393, '入库', '总部入库', 'SM2607130002', 'SM2607130002', '2026-07-13 00:00:00', '2026-07-13 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 826686.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 826686.000000, 0.000000, 0.000000, 0.000000, 826686.000000, 826686.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1394, '入库', '总部入库', 'SM2607130003', 'SM2607130003', '2026-07-13 00:00:00', '2026-07-13 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 642978.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 642978.000000, 0.000000, 0.000000, 0.000000, 642978.000000, 642978.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1395, '入库', '总部入库', 'SM2607130004', 'SM2607130004', '2026-07-13 00:00:00', '2026-07-13 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 408.800000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 408.800000, 0.000000, 0.000000, 0.000000, 408.800000, 408.800000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1396, '入库', '总部入库', 'SM2607130005', 'SM2607130005', '2026-07-13 00:00:00', '2026-07-13 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 265.200000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 265.200000, 0.000000, 0.000000, 0.000000, 265.200000, 265.200000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1397, '入库', '总部入库', 'SM2607130009', 'SM2607130009', '2026-07-13 00:00:00', '2026-07-13 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 81.600000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 81.600000, 0.000000, 0.000000, 0.000000, 81.600000, 81.600000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1398, '入库', '总部入库', 'SM2607130011', 'SM2607130011', '2026-07-13 00:00:00', '2026-07-13 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 81.600000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 81.600000, 0.000000, 0.000000, 0.000000, 81.600000, 81.600000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1399, '入库', '总部入库', 'SM2607130030', 'SM2607130030', '2026-07-13 00:00:00', '2026-07-13 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 56862.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 56862.000000, 0.000000, 0.000000, 0.000000, 56862.000000, 56862.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1400, '入库', '总部入库', 'SM2607130031', 'SM2607130031', '2026-07-13 00:00:00', '2026-07-13 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 306180.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 306180.000000, 0.000000, 0.000000, 0.000000, 306180.000000, 306180.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1401, '入库', '总部入库', 'SM2607140007', 'SM2607140007', '2026-07-14 00:00:00', '2026-07-14 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 1619352.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 1619352.000000, 0.000000, 0.000000, 0.000000, 1619352.000000, 1619352.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1402, '入库', '总部入库', 'SM2607140010', 'SM2607140010', '2026-07-14 00:00:00', '2026-07-14 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 816480.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 816480.000000, 0.000000, 0.000000, 0.000000, 816480.000000, 816480.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1403, '入库', '总部入库', 'SM2607140011', 'SM2607140011', '2026-07-14 00:00:00', '2026-07-14 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 1224720.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 1224720.000000, 0.000000, 0.000000, 0.000000, 1224720.000000, 1224720.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1404, '入库', '总部入库', 'SM2607140013', 'SM2607140013', '2026-07-14 00:00:00', '2026-07-14 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 510.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 510.000000, 0.000000, 0.000000, 0.000000, 510.000000, 510.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1405, '入库', '总部入库', 'SM2607150003', 'SM2607150003', '2026-07-15 00:00:00', '2026-07-15 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 408240.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 408240.000000, 0.000000, 0.000000, 0.000000, 408240.000000, 408240.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1406, '入库', '总部入库', 'SM2607160005', 'SM2607160005', '2026-07-16 00:00:00', '2026-07-16 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 1457416.800000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 1457416.800000, 0.000000, 0.000000, 0.000000, 1457416.800000, 1457416.800000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1407, '入库', '总部入库', 'SM2607160006', 'SM2607160006', '2026-07-16 00:00:00', '2026-07-16 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 385.200000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 385.200000, 0.000000, 0.000000, 0.000000, 385.200000, 385.200000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1408, '入库', '总部入库', 'SM2607170005', 'SM2607170005', '2026-07-17 00:00:00', '2026-07-17 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 161935.200000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 161935.200000, 0.000000, 0.000000, 0.000000, 161935.200000, 161935.200000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1409, '入库', '总部入库', 'SM2607180007', 'SM2607180007', '2026-07-18 00:00:00', '2026-07-18 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 510300.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 510300.000000, 0.000000, 0.000000, 0.000000, 510300.000000, 510300.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1410, '入库', '总部入库', 'SM2607180009', 'SM2607180009', '2026-07-18 00:00:00', '2026-07-18 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 102060.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 102060.000000, 0.000000, 0.000000, 0.000000, 102060.000000, 102060.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1411, '入库', '总部入库', 'SM2607180010', 'SM2607180010', '2026-07-18 00:00:00', '2026-07-18 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 102060.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 102060.000000, 0.000000, 0.000000, 0.000000, 102060.000000, 102060.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1412, '入库', '总部入库', 'SM2607180013', 'SM2607180013', '2026-07-18 00:00:00', '2026-07-18 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 1020600.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 1020600.000000, 0.000000, 0.000000, 0.000000, 1020600.000000, 1020600.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1413, '入库', '总部入库', 'SM2607180014', 'SM2607180014', '2026-07-18 00:00:00', '2026-07-18 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 102060.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 102060.000000, 0.000000, 0.000000, 0.000000, 102060.000000, 102060.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1414, '入库', '总部入库', 'SM2607200002', 'SM2607200002', '2026-07-20 00:00:00', '2026-07-20 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 291600.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 291600.000000, 0.000000, 0.000000, 0.000000, 291600.000000, 291600.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1415, '入库', '总部入库', 'SM2607220004', 'SM2607220004', '2026-07-22 00:00:00', '2026-07-22 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 275562.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 275562.000000, 0.000000, 0.000000, 0.000000, 275562.000000, 275562.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1416, '入库', '总部入库', 'SM2607220006', 'SM2607220006', '2026-07-22 00:00:00', '2026-07-22 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 1020.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 1020.000000, 0.000000, 0.000000, 0.000000, 1020.000000, 1020.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1417, '入库', '总部入库', 'SM2607230002', 'SM2607230002', '2026-07-23 00:00:00', '2026-07-23 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 1285956.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 1285956.000000, 0.000000, 0.000000, 0.000000, 1285956.000000, 1285956.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1418, '入库', '总部入库', 'SM2607230004', 'SM2607230004', '2026-07-23 00:00:00', '2026-07-23 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 551124.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 551124.000000, 0.000000, 0.000000, 0.000000, 551124.000000, 551124.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1419, '入库', '总部入库', 'SM2607240005', 'SM2607240005', '2026-07-24 00:00:00', '2026-07-24 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 91854.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 91854.000000, 0.000000, 0.000000, 0.000000, 91854.000000, 91854.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1420, '入库', '总部入库', 'SM2608060004', 'SM2608060004', '2026-08-06 00:00:00', '2026-08-06 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 816.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 816.000000, 0.000000, 0.000000, 0.000000, 816.000000, 816.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1421, '入库', '总部入库', 'SM2608060005', 'SM2608060005', '2026-08-06 00:00:00', '2026-08-06 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 91854.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 91854.000000, 0.000000, 0.000000, 0.000000, 91854.000000, 91854.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1422, '入库', '总部入库', 'SM2608070002', 'SM2608070002', '2026-08-07 00:00:00', '2026-08-07 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 2077650.000000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 2077650.000000, 0.000000, 0.000000, 0.000000, 2077650.000000, 2077650.000000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1423, '入库', '总部入库', 'SM2608070007', 'SM2608070007', '2026-08-07 00:00:00', '2026-08-07 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 183.600000, '记账', '总部入库', 'SMT出库单详情初始化;已审核;价税合计计入应付', '', '', '', '', 100.000000, 0.000000, 183.600000, 0.000000, 0.000000, 0.000000, 183.600000, 183.600000, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1424, '其它', '采购订单', 'CGDD-PO_0486-1PH-WS79', 'CGDD-PO_0486-1PH-WS79', '2025-03-26 00:00:00', '2025-03-26 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 6687800.000000, '记账', '采购订单', 'Stock Status:1PH WS79-112,400;原采购单:PO_0486', '', '', '', '', 100.000000, 0.000000, 6687800.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', '2', '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1425, '其它', '销售订单', 'XSDD-42076320-1PH-WS79', 'XSDD-42076320-1PH-WS79', '2025-05-29 00:00:00', '2025-05-29 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售订单', 'Stock Status客户PO:42076320', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1426, '其它', '销售订单', 'XSDD-42076321-1PH-WS79', 'XSDD-42076321-1PH-WS79', '2025-03-28 00:00:00', '2025-03-28 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售订单', 'Stock Status客户PO:42076321', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1427, '其它', '销售订单', 'XSDD-42076322-1PH-WS79', 'XSDD-42076322-1PH-WS79', '2025-03-28 00:00:00', '2025-03-28 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售订单', 'Stock Status客户PO:42076322', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1428, '其它', '销售订单', 'XSDD-42076323-1PH-WS79', 'XSDD-42076323-1PH-WS79', '2025-03-28 00:00:00', '2025-03-28 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售订单', 'Stock Status客户PO:42076323', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1429, '其它', '销售订单', 'XSDD-42076324-1PH-WS79', 'XSDD-42076324-1PH-WS79', '2025-06-26 00:00:00', '2025-06-26 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售订单', 'Stock Status客户PO:42076324', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1430, '其它', '销售订单', 'XSDD-42076325-1PH-WS79', 'XSDD-42076325-1PH-WS79', '2025-03-28 00:00:00', '2025-03-28 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售订单', 'Stock Status客户PO:42076325', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1431, '其它', '销售订单', 'XSDD-42076326-1PH-WS79', 'XSDD-42076326-1PH-WS79', '2025-03-28 00:00:00', '2025-03-28 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售订单', 'Stock Status客户PO:42076326', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1432, '其它', '销售订单', 'XSDD-42076327-1PH-WS79', 'XSDD-42076327-1PH-WS79', '2025-03-28 00:00:00', '2025-03-28 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售订单', 'Stock Status客户PO:42076327', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1433, '其它', '销售订单', 'XSDD-42076328-1PH-WS79', 'XSDD-42076328-1PH-WS79', '2025-03-28 00:00:00', '2025-03-28 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售订单', 'Stock Status客户PO:42076328', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1434, '其它', '销售订单', 'XSDD-42076329-1PH-WS79', 'XSDD-42076329-1PH-WS79', '2025-03-28 00:00:00', '2025-03-28 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售订单', 'Stock Status客户PO:42076329', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1435, '其它', '销售订单', 'XSDD-42076330-1PH-WS79', 'XSDD-42076330-1PH-WS79', '2025-03-28 00:00:00', '2025-03-28 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售订单', 'Stock Status客户PO:42076330', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1436, '其它', '销售订单', 'XSDD-42076331-1PH-WS79', 'XSDD-42076331-1PH-WS79', '2025-03-28 00:00:00', '2025-03-28 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售订单', 'Stock Status客户PO:42076331', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1437, '其它', '销售订单', 'XSDD-42076332-1PH-WS79', 'XSDD-42076332-1PH-WS79', '2025-03-28 00:00:00', '2025-03-28 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售订单', 'Stock Status客户PO:42076332', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1438, '其它', '销售订单', 'XSDD-42076333-1PH-WS79', 'XSDD-42076333-1PH-WS79', '2025-03-28 00:00:00', '2025-03-28 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售订单', 'Stock Status客户PO:42076333', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1439, '其它', '销售订单', 'XSDD-42076334-1PH-WS79', 'XSDD-42076334-1PH-WS79', '2025-03-28 00:00:00', '2025-03-28 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售订单', 'Stock Status客户PO:42076334', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1440, '其它', '销售订单', 'XSDD-42076335-1PH-WS79', 'XSDD-42076335-1PH-WS79', '2025-03-28 00:00:00', '2025-03-28 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售订单', 'Stock Status客户PO:42076335', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1441, '其它', '销售订单', 'XSDD-42076336-1PH-WS79', 'XSDD-42076336-1PH-WS79', '2025-03-28 00:00:00', '2025-03-28 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售订单', 'Stock Status客户PO:42076336', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1442, '其它', '销售订单', 'XSDD-42076339-1PH-WS79', 'XSDD-42076339-1PH-WS79', '2025-03-28 00:00:00', '2025-03-28 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售订单', 'Stock Status客户PO:42076339', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1443, '其它', '销售订单', 'XSDD-42092713-1PH-WS79', 'XSDD-42092713-1PH-WS79', '2025-07-28 00:00:00', '2025-07-28 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 1212750.000000, '记账', '销售订单', 'Stock Status客户PO:42092713', '', '', '', '', 100.000000, 0.000000, 1212750.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1444, '其它', '销售订单', 'XSDD-42092714-1PH-WS79', 'XSDD-42092714-1PH-WS79', '2025-07-28 00:00:00', '2025-07-28 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 1212750.000000, '记账', '销售订单', 'Stock Status客户PO:42092714', '', '', '', '', 100.000000, 0.000000, 1212750.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1445, '其它', '销售订单', 'XSDD-42092715-1PH-WS79', 'XSDD-42092715-1PH-WS79', '2025-07-28 00:00:00', '2025-07-28 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 727650.000000, '记账', '销售订单', 'Stock Status客户PO:42092715', '', '', '', '', 100.000000, 0.000000, 727650.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1446, '其它', '销售订单', 'XSDD-42092716-1PH-WS79', 'XSDD-42092716-1PH-WS79', '2025-03-28 00:00:00', '2025-03-28 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售订单', 'Stock Status客户PO:42092716', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1447, '其它', '销售订单', 'XSDD-42092717-1PH-WS79', 'XSDD-42092717-1PH-WS79', '2025-08-28 00:00:00', '2025-08-28 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 485100.000000, '记账', '销售订单', 'Stock Status客户PO:42092717', '', '', '', '', 100.000000, 0.000000, 485100.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1448, '其它', '销售订单', 'XSDD-42092718-1PH-WS79', 'XSDD-42092718-1PH-WS79', '2025-03-28 00:00:00', '2025-03-28 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 485100.000000, '记账', '销售订单', 'Stock Status客户PO:42092718', '', '', '', '', 100.000000, 0.000000, 485100.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1449, '其它', '销售订单', 'XSDD-42092722-1PH-WS79', 'XSDD-42092722-1PH-WS79', '2025-08-28 00:00:00', '2025-08-28 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 485100.000000, '记账', '销售订单', 'Stock Status客户PO:42092722', '', '', '', '', 100.000000, 0.000000, 485100.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1450, '其它', '销售订单', 'XSDD-42092726-1PH-WS79', 'XSDD-42092726-1PH-WS79', '2025-03-28 00:00:00', '2025-03-28 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售订单', 'Stock Status客户PO:42092726', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1451, '其它', '销售订单', 'XSDD-42092729-1PH-WS79', 'XSDD-42092729-1PH-WS79', '2025-03-28 00:00:00', '2025-03-28 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 113190.000000, '记账', '销售订单', 'Stock Status客户PO:42092729', '', '', '', '', 100.000000, 0.000000, 113190.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1452, '入库', '采购', 'CGRK-RM-SMT-250423-01-11', 'CGRK-RM-SMT-250423-01-11', '2025-05-13 00:00:00', '2025-05-13 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 595000.000000, '记账', '采购', 'Stock Status:1PH WS79-112,400;供应商发票:RM-SMT-250423-01', '', '', '', '', 100.000000, 0.000000, 595000.000000, 0.000000, 0.000000, 0.000000, 595000.000000, 104559.445000, '1', NULL, '0', 'CGDD-PO_0486-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1453, '出库', '销售', 'XSCK-INV_1707-11', 'XSCK-INV_1707-11', '2025-06-06 00:00:00', '2025-06-06 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400;客户发票:INV_1707', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 0.000000, '1', NULL, '0', 'XSDD-42076320-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1454, '出库', '销售', 'XSCK-INV_1708-12', 'XSCK-INV_1708-12', '2025-06-10 00:00:00', '2025-06-10 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400;客户发票:INV_1708', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, 242550.000000, 242550.000000, '1', NULL, '0', 'XSDD-42076321-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1455, '出库', '销售', 'XSCK-INV_1709-13', 'XSCK-INV_1709-13', '2025-06-10 00:00:00', '2025-06-10 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400;客户发票:INV_1709', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, 242550.000000, 242550.000000, '1', NULL, '0', 'XSDD-42076322-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1456, '出库', '销售', 'XSCK-INV_1710-14', 'XSCK-INV_1710-14', '2025-06-10 00:00:00', '2025-06-10 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400;客户发票:INV_1710', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, 242550.000000, 242550.000000, '1', NULL, '0', 'XSDD-42076323-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1457, '入库', '采购', 'CGRK-RM-SMT-250429-01-15', 'CGRK-RM-SMT-250429-01-15', '2025-05-13 00:00:00', '2025-05-13 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 595000.000000, '记账', '采购', 'Stock Status:1PH WS79-112,400;供应商发票:RM-SMT-250429-01', '', '', '', '', 100.000000, 0.000000, 595000.000000, 0.000000, 0.000000, 0.000000, 595000.000000, 451042.912000, '1', NULL, '0', 'CGDD-PO_0486-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1458, '出库', '销售', 'XSCK-INV_1713-15', 'XSCK-INV_1713-15', '2025-06-12 00:00:00', '2025-06-12 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400;客户发票:INV_1713', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, 242550.000000, 0.000000, '1', NULL, '0', 'XSDD-42076324-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1459, '出库', '销售', 'XSCK-INV_1744-16', 'XSCK-INV_1744-16', '2025-07-08 00:00:00', '2025-07-08 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400;客户发票:INV_1744', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, 242550.000000, 0.000000, '1', NULL, '0', 'XSDD-42076325-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1460, '出库', '销售', 'XSCK-INV_1715-17', 'XSCK-INV_1715-17', '2025-06-13 00:00:00', '2025-06-13 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400;客户发票:INV_1715', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, 242550.000000, 0.000000, '1', NULL, '0', 'XSDD-42076326-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1461, '出库', '销售', 'XSCK-INV_1716-19', 'XSCK-INV_1716-19', '2025-06-13 00:00:00', '2025-06-13 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400;客户发票:INV_1716', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 0.000000, '1', NULL, '0', 'XSDD-42076327-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1462, '入库', '采购', 'CGRK-RM-SMT-250513-01-20', 'CGRK-RM-SMT-250513-01-20', '2025-05-27 00:00:00', '2025-05-27 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 595000.000000, '记账', '采购', 'Stock Status:1PH WS79-112,400;供应商发票:RM-SMT-250513-01', '', '', '', '', 100.000000, 0.000000, 595000.000000, 0.000000, 0.000000, 0.000000, 595000.000000, 355071.520000, '1', NULL, '0', 'CGDD-PO_0486-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1463, '出库', '销售', 'XSCK-1PH-WS79-20', 'XSCK-1PH-WS79-20', '2025-06-13 00:00:00', '2025-06-13 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400;客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42076327-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1464, '出库', '销售', 'XSCK-1PH-WS79-21', 'XSCK-1PH-WS79-21', '2025-06-13 00:00:00', '2025-06-13 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400;客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42076327-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1465, '出库', '销售', 'XSCK-INV_1717-22', 'XSCK-INV_1717-22', '2025-06-15 00:00:00', '2025-06-15 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400;客户发票:INV_1717', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, 242550.000000, 0.000000, '1', NULL, '0', 'XSDD-42076328-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1466, '出库', '销售', 'XSCK-INV_1727-23', 'XSCK-INV_1727-23', '2025-06-23 00:00:00', '2025-06-23 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400;客户发票:INV_1727', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, 242550.000000, 0.000000, '1', NULL, '0', 'XSDD-42076329-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1467, '出库', '销售', 'XSCK-INV_1729-24', 'XSCK-INV_1729-24', '2025-06-25 00:00:00', '2025-06-25 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 161700.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400;客户发票:INV_1729', '', '', '', '', 100.000000, 0.000000, 161700.000000, 0.000000, 0.000000, 0.000000, 161700.000000, 0.000000, '1', NULL, '0', 'XSDD-42076330-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1468, '入库', '采购', 'CGRK-RM-SMT-250519-01-25', 'CGRK-RM-SMT-250519-01-25', '2025-05-30 00:00:00', '2025-05-30 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 595000.000000, '记账', '采购', 'Stock Status:1PH WS79-112,400;供应商发票:RM-SMT-250519-01', '', '', '', '', 100.000000, 0.000000, 595000.000000, 0.000000, 0.000000, 0.000000, 595000.000000, 0.000000, '1', NULL, '0', 'CGDD-PO_0486-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1469, '出库', '销售', 'XSCK-INV_1728-25', 'XSCK-INV_1728-25', '2025-06-23 00:00:00', '2025-06-23 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400;客户发票:INV_1728', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 0.000000, '1', NULL, '0', 'XSDD-42076330-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1470, '出库', '销售', 'XSCK-INV_1730-26', 'XSCK-INV_1730-26', '2025-06-30 00:00:00', '2025-06-30 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400;客户发票:INV_1730', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, 242550.000000, 242550.000000, '1', NULL, '0', 'XSDD-42076331-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1471, '出库', '销售', 'XSCK-INV_1731-27', 'XSCK-INV_1731-27', '2025-07-01 00:00:00', '2025-07-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400;客户发票:INV_1731', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, 242550.000000, 242550.000000, '1', NULL, '0', 'XSDD-42076332-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1472, '出库', '销售', 'XSCK-INV_1732-28', 'XSCK-INV_1732-28', '2025-07-01 00:00:00', '2025-07-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400;客户发票:INV_1732', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42076333-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1473, '出库', '销售', 'XSCK-INV_1733-29', 'XSCK-INV_1733-29', '2025-07-01 00:00:00', '2025-07-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 161700.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400;客户发票:INV_1733', '', '', '', '', 100.000000, 0.000000, 161700.000000, 0.000000, 0.000000, 0.000000, 161700.000000, 161700.000000, '1', NULL, '0', 'XSDD-42076334-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1474, '入库', '采购', 'CGRK-RM-SMT-250522-01-30', 'CGRK-RM-SMT-250522-01-30', '2025-06-10 00:00:00', '2025-06-10 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 595000.000000, '记账', '采购', 'Stock Status:1PH WS79-112,400;供应商发票:RM-SMT-250522-01', '', '', '', '', 100.000000, 0.000000, 595000.000000, 0.000000, 0.000000, 0.000000, 595000.000000, 595000.000000, '1', NULL, '0', 'CGDD-PO_0486-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1475, '出库', '销售', 'XSCK-1PH-WS79-30', 'XSCK-1PH-WS79-30', '2025-07-01 00:00:00', '2025-07-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400;客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42076334-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1476, '出库', '销售', 'XSCK-INV_1734-31', 'XSCK-INV_1734-31', '2025-07-01 00:00:00', '2025-07-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400;客户发票:INV_1734', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, 242550.000000, 242550.000000, '1', NULL, '0', 'XSDD-42076335-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1477, '出库', '销售', 'XSCK-INV_1735-32', 'XSCK-INV_1735-32', '2025-07-01 00:00:00', '2025-07-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400;客户发票:INV_1735', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, 242550.000000, 242550.000000, '1', NULL, '0', 'XSDD-42076336-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1478, '出库', '销售', 'XSCK-INV_1736-33', 'XSCK-INV_1736-33', '2025-07-01 00:00:00', '2025-07-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400;客户发票:INV_1736', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, 242550.000000, 242550.000000, '1', NULL, '0', 'XSDD-42076339-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1479, '入库', '采购', 'CGRK-RM-SMT-250526-01-34', 'CGRK-RM-SMT-250526-01-34', '2025-06-13 00:00:00', '2025-06-13 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 595000.000000, '记账', '采购', 'Stock Status:1PH WS79-112,400;供应商发票:RM-SMT-250526-01', '', '', '', '', 100.000000, 0.000000, 595000.000000, 0.000000, 0.000000, 0.000000, 595000.000000, 0.000000, '1', NULL, '0', 'CGDD-PO_0486-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1480, '出库', '销售', 'XSCK-INV_1753-34', 'XSCK-INV_1753-34', '2025-07-18 00:00:00', '2025-07-18 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400;客户发票:INV_1753', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, 242550.000000, 0.000000, '1', NULL, '0', 'XSDD-42092713-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1481, '出库', '销售', 'XSCK-INV_1763-35', 'XSCK-INV_1763-35', '2025-07-23 00:00:00', '2025-07-23 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400;客户发票:INV_1763', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, 242550.000000, 242550.000000, '1', NULL, '0', 'XSDD-42092713-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1482, '出库', '销售', 'XSCK-INV_1764-36', 'XSCK-INV_1764-36', '2025-07-23 00:00:00', '2025-07-23 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400;客户发票:INV_1764', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, 242550.000000, 242550.000000, '1', NULL, '0', 'XSDD-42092713-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1483, '出库', '销售', 'XSCK-INV_1765-37', 'XSCK-INV_1765-37', '2025-07-23 00:00:00', '2025-07-23 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400;客户发票:INV_1765', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42092713-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1484, '入库', '采购', 'CGRK-RM-SMT-250528-01-38', 'CGRK-RM-SMT-250528-01-38', '2025-06-18 00:00:00', '2025-06-18 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 595000.000000, '记账', '采购', 'Stock Status:1PH WS79-112,400;供应商发票:RM-SMT-250528-01', '', '', '', '', 100.000000, 0.000000, 595000.000000, 0.000000, 0.000000, 0.000000, 595000.000000, 595000.000000, '1', NULL, '0', 'CGDD-PO_0486-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1485, '出库', '销售', 'XSCK-1PH-WS79-38', 'XSCK-1PH-WS79-38', '2025-07-23 00:00:00', '2025-07-23 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 161700.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400;客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 161700.000000, 0.000000, 0.000000, 0.000000, 161700.000000, 161700.000000, '1', NULL, '0', 'XSDD-42092713-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1486, '出库', '销售', 'XSCK-INV_1766-39', 'XSCK-INV_1766-39', '2025-07-23 00:00:00', '2025-07-23 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400;客户发票:INV_1766', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, 242550.000000, 242550.000000, '1', NULL, '0', 'XSDD-42092713-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1487, '出库', '销售', 'XSCK-INV_1772-40', 'XSCK-INV_1772-40', '2025-08-06 00:00:00', '2025-08-06 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400;客户发票:INV_1772', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, 242550.000000, 0.000000, '1', NULL, '0', 'XSDD-42092714-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1488, '出库', '销售', 'XSCK-INV_1773-41', 'XSCK-INV_1773-41', '2025-08-06 00:00:00', '2025-08-06 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 161700.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400;客户发票:INV_1773', '', '', '', '', 100.000000, 0.000000, 161700.000000, 0.000000, 0.000000, 0.000000, 161700.000000, 161700.000000, '1', NULL, '0', 'XSDD-42092714-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1489, '入库', '采购', 'CGRK-RM-SMT-250612-01-42', 'CGRK-RM-SMT-250612-01-42', '2025-07-01 00:00:00', '2025-07-01 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 595000.000000, '记账', '采购', 'Stock Status:1PH WS79-112,400;供应商发票:RM-SMT-250612-01', '', '', '', '', 100.000000, 0.000000, 595000.000000, 0.000000, 0.000000, 0.000000, 595000.000000, 595000.000000, '1', NULL, '0', 'CGDD-PO_0486-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1490, '出库', '销售', 'XSCK-1PH-WS79-42', 'XSCK-1PH-WS79-42', '2025-08-06 00:00:00', '2025-08-06 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400;客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42092714-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1491, '出库', '销售', 'XSCK-INV_1774-43', 'XSCK-INV_1774-43', '2025-08-06 00:00:00', '2025-08-06 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400;客户发票:INV_1774', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, 242550.000000, 242550.000000, '1', NULL, '0', 'XSDD-42092714-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1492, '出库', '销售', 'XSCK-INV_1775-44', 'XSCK-INV_1775-44', '2025-08-06 00:00:00', '2025-08-06 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400;客户发票:INV_1775', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, 242550.000000, 242550.000000, '1', NULL, '0', 'XSDD-42092714-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1493, '出库', '销售', 'XSCK-INV_1776-45', 'XSCK-INV_1776-45', '2025-08-06 00:00:00', '2025-08-06 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400;客户发票:INV_1776', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, 242550.000000, 242550.000000, '1', NULL, '0', 'XSDD-42092714-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1494, '入库', '采购', 'CGRK-RM-SMT-250617-01-46', 'CGRK-RM-SMT-250617-01-46', '2025-07-05 00:00:00', '2025-07-05 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 595000.000000, '记账', '采购', 'Stock Status:1PH WS79-112,400;供应商发票:RM-SMT-250617-01', '', '', '', '', 100.000000, 0.000000, 595000.000000, 0.000000, 0.000000, 0.000000, 595000.000000, 595000.000000, '1', NULL, '0', 'CGDD-PO_0486-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1495, '出库', '销售', 'XSCK-INV_1779-46', 'XSCK-INV_1779-46', '2025-08-06 00:00:00', '2025-08-06 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400;客户发票:INV_1779', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, 242550.000000, 242550.000000, '1', NULL, '0', 'XSDD-42092715-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1496, '出库', '销售', 'XSCK-INV_1780-47', 'XSCK-INV_1780-47', '2025-08-04 00:00:00', '2025-08-04 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400;客户发票:INV_1780', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, 242550.000000, 242550.000000, '1', NULL, '0', 'XSDD-42092715-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1497, '出库', '销售', 'XSCK-INV_1781-48', 'XSCK-INV_1781-48', '2025-08-04 00:00:00', '2025-08-04 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400;客户发票:INV_1781', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, 242550.000000, 242550.000000, '1', NULL, '0', 'XSDD-42092715-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1498, '出库', '销售', 'XSCK-INV_1782-49', 'XSCK-INV_1782-49', '2025-08-04 00:00:00', '2025-08-04 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400;客户发票:INV_1782', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42092716-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1499, '入库', '采购', 'CGRK-RM-SMT-250620-01-50', 'CGRK-RM-SMT-250620-01-50', '2025-07-08 00:00:00', '2025-07-08 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 595000.000000, '记账', '采购', 'Stock Status:1PH WS79-112,400;供应商发票:RM-SMT-250620-01', '', '', '', '', 100.000000, 0.000000, 595000.000000, 0.000000, 0.000000, 0.000000, 595000.000000, 595000.000000, '1', NULL, '0', 'CGDD-PO_0486-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1500, '出库', '销售', 'XSCK-INV_1786-50', 'XSCK-INV_1786-50', '2025-08-13 00:00:00', '2025-08-13 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400;客户发票:INV_1786', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, 242550.000000, 0.000000, '1', NULL, '0', 'XSDD-42092717-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1501, '出库', '销售', 'XSCK-INV_1787-51', 'XSCK-INV_1787-51', '2025-08-13 00:00:00', '2025-08-13 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400;客户发票:INV_1787', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, 242550.000000, 242550.000000, '1', NULL, '0', 'XSDD-42092717-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1502, '出库', '销售', 'XSCK-INV_1788-52', 'XSCK-INV_1788-52', '2025-08-13 00:00:00', '2025-08-13 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400;客户发票:INV_1788', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, 242550.000000, 242550.000000, '1', NULL, '0', 'XSDD-42092718-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1503, '出库', '销售', 'XSCK-INV_1789-53', 'XSCK-INV_1789-53', '2025-08-13 00:00:00', '2025-08-13 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400;客户发票:INV_1789', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42092718-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1504, '入库', '采购', 'CGRK-RM-SMT-250623-01-54', 'CGRK-RM-SMT-250623-01-54', '2025-07-14 00:00:00', '2025-07-14 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 610470.000000, '记账', '采购', 'Stock Status:1PH WS79-112,400;供应商发票:RM-SMT-250623-01', '', '', '', '', 100.000000, 0.000000, 610470.000000, 0.000000, 0.000000, 0.000000, 610470.000000, 610470.000000, '1', NULL, '0', 'CGDD-PO_0486-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1505, '出库', '销售', 'XSCK-1PH-WS79-54', 'XSCK-1PH-WS79-54', '2025-08-13 00:00:00', '2025-08-13 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 161700.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400;客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 161700.000000, 0.000000, 0.000000, 0.000000, 161700.000000, 161700.000000, '1', NULL, '0', 'XSDD-42092718-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1506, '出库', '销售', 'XSCK-INV_1819-55', 'XSCK-INV_1819-55', '2025-09-09 00:00:00', '2025-09-09 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400;客户发票:INV_1819', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 0.000000, '1', NULL, '0', 'XSDD-42092722-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1507, '出库', '销售', 'XSCK-1PH-WS79-56', 'XSCK-1PH-WS79-56', '2025-09-09 00:00:00', '2025-09-09 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400;客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42092722-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1508, '出库', '销售', 'XSCK-1PH-WS79-57', 'XSCK-1PH-WS79-57', '2025-09-09 00:00:00', '2025-09-09 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400;客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42092722-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1509, '出库', '销售', 'XSCK-INV_1820-58', 'XSCK-INV_1820-58', '2025-09-09 00:00:00', '2025-09-09 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400;客户发票:INV_1820', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42092722-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1510, '出库', '销售', 'XSCK-1PH-WS79-59', 'XSCK-1PH-WS79-59', '2025-09-09 00:00:00', '2025-09-09 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400;客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42092722-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1511, '出库', '销售', 'XSCK-1PH-WS79-60', 'XSCK-1PH-WS79-60', '2025-09-09 00:00:00', '2025-09-09 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400;客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42092722-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1512, '出库', '销售', 'XSCK-INV_1821-61', 'XSCK-INV_1821-61', '2025-09-09 00:00:00', '2025-09-09 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400;客户发票:INV_1821', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42092726-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1513, '出库', '销售', 'XSCK-1PH-WS79-62', 'XSCK-1PH-WS79-62', '2025-09-09 00:00:00', '2025-09-09 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400;客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42092726-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1514, '出库', '销售', 'XSCK-1PH-WS79-63', 'XSCK-1PH-WS79-63', '2025-09-09 00:00:00', '2025-09-09 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 21021.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400;客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 21021.000000, 0.000000, 0.000000, 0.000000, 21021.000000, 21021.000000, '1', NULL, '0', 'XSDD-42092726-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1515, '入库', '采购', 'CGRK-RM-SMT-250701-01-64', 'CGRK-RM-SMT-250701-01-64', '2025-07-17 00:00:00', '2025-07-17 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 127330.000000, '记账', '采购', 'Stock Status:1PH WS79-112,400;供应商发票:RM-SMT-250701-01', '', '', '', '', 100.000000, 0.000000, 127330.000000, 0.000000, 0.000000, 0.000000, 127330.000000, 127330.000000, '1', NULL, '0', 'CGDD-PO_0486-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1516, '出库', '销售', 'XSCK-1PH-WS79-64', 'XSCK-1PH-WS79-64', '2025-09-09 00:00:00', '2025-09-09 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 59829.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400;客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 59829.000000, 0.000000, 0.000000, 0.000000, 59829.000000, 59829.000000, '1', NULL, '0', 'XSDD-42092726-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1517, '出库', '销售', 'XSCK-INV_1822-65', 'XSCK-INV_1822-65', '2025-09-09 00:00:00', '2025-09-09 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400;客户发票:INV_1822', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42092729-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1518, '出库', '销售', 'XSCK-1PH-WS79-66', 'XSCK-1PH-WS79-66', '2025-09-09 00:00:00', '2025-09-09 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 32340.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400;客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 32340.000000, 0.000000, 0.000000, 0.000000, 32340.000000, 32340.000000, '1', NULL, '0', 'XSDD-42092729-1PH-WS79', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1519, '其它', '采购订单', 'CGDD-PO_0486-3PH-APEC3-WC', 'CGDD-PO_0486-3PH-APEC3-WC', '2025-03-26 00:00:00', '2025-03-26 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 5778500.000000, '记账', '采购订单', 'Stock Status:3PH APEC3 WC-18200;原采购单:PO_0486', '', '', '', '', 100.000000, 0.000000, 5778500.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', '2', '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1520, '其它', '销售订单', 'XSDD-42076552-3PH-APEC3-WC', 'XSDD-42076552-3PH-APEC3-WC', '2025-06-26 00:00:00', '2025-06-26 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 374000.000000, '记账', '销售订单', 'Stock Status客户PO:42076552', '', '', '', '', 100.000000, 0.000000, 374000.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1521, '其它', '销售订单', 'XSDD-42076553-3PH-APEC3-WC', 'XSDD-42076553-3PH-APEC3-WC', '2025-03-28 00:00:00', '2025-03-28 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 1122000.000000, '记账', '销售订单', 'Stock Status客户PO:42076553', '', '', '', '', 100.000000, 0.000000, 1122000.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1522, '其它', '销售订单', 'XSDD-42076554-3PH-APEC3-WC', 'XSDD-42076554-3PH-APEC3-WC', '2025-07-29 00:00:00', '2025-07-29 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 1122000.000000, '记账', '销售订单', 'Stock Status客户PO:42076554', '', '', '', '', 100.000000, 0.000000, 1122000.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1523, '其它', '销售订单', 'XSDD-42076557-3PH-APEC3-WC', 'XSDD-42076557-3PH-APEC3-WC', '2025-03-28 00:00:00', '2025-03-28 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 1122000.000000, '记账', '销售订单', 'Stock Status客户PO:42076557', '', '', '', '', 100.000000, 0.000000, 1122000.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1524, '其它', '销售订单', 'XSDD-42076560-3PH-APEC3-WC', 'XSDD-42076560-3PH-APEC3-WC', '2025-08-26 00:00:00', '2025-08-26 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 1122000.000000, '记账', '销售订单', 'Stock Status客户PO:42076560', '', '', '', '', 100.000000, 0.000000, 1122000.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1525, '其它', '销售订单', 'XSDD-42076561-3PH-APEC3-WC', 'XSDD-42076561-3PH-APEC3-WC', '2025-03-28 00:00:00', '2025-03-28 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 1122000.000000, '记账', '销售订单', 'Stock Status客户PO:42076561', '', '', '', '', 100.000000, 0.000000, 1122000.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1526, '其它', '销售订单', 'XSDD-42076558-3PH-APEC3-WC', 'XSDD-42076558-3PH-APEC3-WC', '2025-03-28 00:00:00', '2025-03-28 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 822800.000000, '记账', '销售订单', 'Stock Status客户PO:42076558', '', '', '', '', 100.000000, 0.000000, 822800.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1527, '入库', '采购', 'CGRK-RM-SMT-250509-01-11', 'CGRK-RM-SMT-250509-01-11', '2025-05-22 00:00:00', '2025-05-22 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 960120.000000, '记账', '采购', 'Stock Status:3PH APEC3 WC-18200;供应商发票:RM-SMT-250509-01', '', '', '', '', 100.000000, 0.000000, 960120.000000, 0.000000, 0.000000, 0.000000, 960120.000000, 0.000000, '1', NULL, '0', 'CGDD-PO_0486-3PH-APEC3-WC', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1528, '出库', '销售', 'XSCK-INV_1720-11', 'XSCK-INV_1720-11', '2025-06-17 00:00:00', '2025-06-17 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 374000.000000, '记账', '销售', 'Stock Status:3PH APEC3 WC-18200;客户发票:INV_1720', '', '', '', '', 100.000000, 0.000000, 374000.000000, 0.000000, 0.000000, 0.000000, 374000.000000, 0.000000, '1', NULL, '0', 'XSDD-42076552-3PH-APEC3-WC', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1529, '出库', '销售', 'XSCK-INV_1722-12', 'XSCK-INV_1722-12', '2025-06-24 00:00:00', '2025-06-24 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 374000.000000, '记账', '销售', 'Stock Status:3PH APEC3 WC-18200;客户发票:INV_1722', '', '', '', '', 100.000000, 0.000000, 374000.000000, 0.000000, 0.000000, 0.000000, 374000.000000, 374000.000000, '1', NULL, '0', 'XSDD-42076553-3PH-APEC3-WC', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1530, '出库', '销售', 'XSCK-INV_1723-13', 'XSCK-INV_1723-13', '2025-06-24 00:00:00', '2025-06-24 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 374000.000000, '记账', '销售', 'Stock Status:3PH APEC3 WC-18200;客户发票:INV_1723', '', '', '', '', 100.000000, 0.000000, 374000.000000, 0.000000, 0.000000, 0.000000, 374000.000000, 0.000000, '1', NULL, '0', 'XSDD-42076553-3PH-APEC3-WC', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1531, '出库', '销售', 'XSCK-3PH-APEC3-WC-14', 'XSCK-3PH-APEC3-WC-14', '2025-06-24 00:00:00', '2025-06-24 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 8976.000000, '记账', '销售', 'Stock Status:3PH APEC3 WC-18200;客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 8976.000000, 0.000000, 0.000000, 0.000000, 8976.000000, 8976.000000, '1', NULL, '0', 'XSDD-42076553-3PH-APEC3-WC', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1532, '入库', '采购', 'CGRK-RM-SMT-250513-01-15', 'CGRK-RM-SMT-250513-01-15', '2025-05-27 00:00:00', '2025-05-27 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 106680.000000, '记账', '采购', 'Stock Status:3PH APEC3 WC-18200;供应商发票:RM-SMT-250513-01', '', '', '', '', 100.000000, 0.000000, 106680.000000, 0.000000, 0.000000, 0.000000, 106680.000000, 106680.000000, '1', NULL, '0', 'CGDD-PO_0486-3PH-APEC3-WC', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1533, '出库', '销售', 'XSCK-3PH-APEC3-WC-15', 'XSCK-3PH-APEC3-WC-15', '2025-06-24 00:00:00', '2025-06-24 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 125664.000000, '记账', '销售', 'Stock Status:3PH APEC3 WC-18200;客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 125664.000000, 0.000000, 0.000000, 0.000000, 125664.000000, 125664.000000, '1', NULL, '0', 'XSDD-42076553-3PH-APEC3-WC', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1534, '入库', '采购', 'CGRK-RM-SMT-250514-01-16', 'CGRK-RM-SMT-250514-01-16', '2025-05-29 00:00:00', '2025-05-29 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 520700.000000, '记账', '采购', 'Stock Status:3PH APEC3 WC-18200;供应商发票:RM-SMT-250514-01', '', '', '', '', 100.000000, 0.000000, 520700.000000, 0.000000, 0.000000, 0.000000, 520700.000000, 520700.000000, '1', NULL, '0', 'CGDD-PO_0486-3PH-APEC3-WC', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1535, '出库', '销售', 'XSCK-3PH-APEC3-WC-16', 'XSCK-3PH-APEC3-WC-16', '2025-06-24 00:00:00', '2025-06-24 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 239360.000000, '记账', '销售', 'Stock Status:3PH APEC3 WC-18200;客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 239360.000000, 0.000000, 0.000000, 0.000000, 239360.000000, 239360.000000, '1', NULL, '0', 'XSDD-42076553-3PH-APEC3-WC', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1536, '出库', '销售', 'XSCK-INV_1745-17', 'XSCK-INV_1745-17', '2025-07-08 00:00:00', '2025-07-08 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 374000.000000, '记账', '销售', 'Stock Status:3PH APEC3 WC-18200;客户发票:INV_1745', '', '', '', '', 100.000000, 0.000000, 374000.000000, 0.000000, 0.000000, 0.000000, 374000.000000, 0.000000, '1', NULL, '0', 'XSDD-42076554-3PH-APEC3-WC', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1537, '入库', '采购', 'CGRK-RM-SMT-250521-01-18', 'CGRK-RM-SMT-250521-01-18', '2025-06-05 00:00:00', '2025-06-05 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 1173480.000000, '记账', '采购', 'Stock Status:3PH APEC3 WC-18200;供应商发票:RM-SMT-250521-01', '', '', '', '', 100.000000, 0.000000, 1173480.000000, 0.000000, 0.000000, 0.000000, 1173480.000000, 1173480.000000, '1', NULL, '0', 'CGDD-PO_0486-3PH-APEC3-WC', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1538, '出库', '销售', 'XSCK-3PH-APEC3-WC-18', 'XSCK-3PH-APEC3-WC-18', '2025-07-08 00:00:00', '2025-07-08 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 374000.000000, '记账', '销售', 'Stock Status:3PH APEC3 WC-18200;客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 374000.000000, 0.000000, 0.000000, 0.000000, 374000.000000, 374000.000000, '1', NULL, '0', 'XSDD-42076554-3PH-APEC3-WC', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1539, '出库', '销售', 'XSCK-3PH-APEC3-WC-19', 'XSCK-3PH-APEC3-WC-19', '2025-07-08 00:00:00', '2025-07-08 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 374000.000000, '记账', '销售', 'Stock Status:3PH APEC3 WC-18200;客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 374000.000000, 0.000000, 0.000000, 0.000000, 374000.000000, 374000.000000, '1', NULL, '0', 'XSDD-42076554-3PH-APEC3-WC', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1540, '出库', '销售', 'XSCK-INV_1748-20', 'XSCK-INV_1748-20', '2025-07-10 00:00:00', '2025-07-10 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 634304.000000, '记账', '销售', 'Stock Status:3PH APEC3 WC-18200;客户发票:INV_1748', '', '', '', '', 100.000000, 0.000000, 634304.000000, 0.000000, 0.000000, 0.000000, 634304.000000, 0.000000, '1', NULL, '0', 'XSDD-42076557-3PH-APEC3-WC', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1541, '入库', '采购', 'CGRK-RM-SMT-250522-01-21', 'CGRK-RM-SMT-250522-01-21', '2025-06-10 00:00:00', '2025-06-10 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 160020.000000, '记账', '采购', 'Stock Status:3PH APEC3 WC-18200;供应商发票:RM-SMT-250522-01', '', '', '', '', 100.000000, 0.000000, 160020.000000, 0.000000, 0.000000, 0.000000, 160020.000000, 160020.000000, '1', NULL, '0', 'CGDD-PO_0486-3PH-APEC3-WC', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1542, '出库', '销售', 'XSCK-3PH-APEC3-WC-21', 'XSCK-3PH-APEC3-WC-21', '2025-07-10 00:00:00', '2025-07-10 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 188496.000000, '记账', '销售', 'Stock Status:3PH APEC3 WC-18200;客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 188496.000000, 0.000000, 0.000000, 0.000000, 188496.000000, 188496.000000, '1', NULL, '0', 'XSDD-42076557-3PH-APEC3-WC', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1543, '入库', '采购', 'CGRK-RM-SMT-250526-01-22', 'CGRK-RM-SMT-250526-01-22', '2025-06-13 00:00:00', '2025-06-13 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 106680.000000, '记账', '采购', 'Stock Status:3PH APEC3 WC-18200;供应商发票:RM-SMT-250526-01', '', '', '', '', 100.000000, 0.000000, 106680.000000, 0.000000, 0.000000, 0.000000, 106680.000000, 106680.000000, '1', NULL, '0', 'CGDD-PO_0486-3PH-APEC3-WC', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1544, '出库', '销售', 'XSCK-3PH-APEC3-WC-22', 'XSCK-3PH-APEC3-WC-22', '2025-07-10 00:00:00', '2025-07-10 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 125664.000000, '记账', '销售', 'Stock Status:3PH APEC3 WC-18200;客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 125664.000000, 0.000000, 0.000000, 0.000000, 125664.000000, 125664.000000, '1', NULL, '0', 'XSDD-42076557-3PH-APEC3-WC', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1545, '入库', '采购', 'CGRK-RM-SMT-250528-01-23', 'CGRK-RM-SMT-250528-01-23', '2025-06-18 00:00:00', '2025-06-18 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 147320.000000, '记账', '采购', 'Stock Status:3PH APEC3 WC-18200;供应商发票:RM-SMT-250528-01', '', '', '', '', 100.000000, 0.000000, 147320.000000, 0.000000, 0.000000, 0.000000, 147320.000000, 147320.000000, '1', NULL, '0', 'CGDD-PO_0486-3PH-APEC3-WC', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1546, '出库', '销售', 'XSCK-3PH-APEC3-WC-23', 'XSCK-3PH-APEC3-WC-23', '2025-07-10 00:00:00', '2025-07-10 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 173536.000000, '记账', '销售', 'Stock Status:3PH APEC3 WC-18200;客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 173536.000000, 0.000000, 0.000000, 0.000000, 173536.000000, 173536.000000, '1', NULL, '0', 'XSDD-42076557-3PH-APEC3-WC', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1547, '入库', '采购', 'CGRK-RM-SMT-250612-01-24', 'CGRK-RM-SMT-250612-01-24', '2025-06-26 00:00:00', '2025-06-26 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 1099820.000000, '记账', '采购', 'Stock Status:3PH APEC3 WC-18200;供应商发票:RM-SMT-250612-01', '', '', '', '', 100.000000, 0.000000, 1099820.000000, 0.000000, 0.000000, 0.000000, 1099820.000000, 232743.755000, '1', NULL, '0', 'CGDD-PO_0486-3PH-APEC3-WC', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1548, '出库', '销售', 'XSCK-INV_1784-24', 'XSCK-INV_1784-24', '2025-08-12 00:00:00', '2025-08-12 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 374000.000000, '记账', '销售', 'Stock Status:3PH APEC3 WC-18200;客户发票:INV_1784', '', '', '', '', 100.000000, 0.000000, 374000.000000, 0.000000, 0.000000, 0.000000, 374000.000000, 0.000000, '1', NULL, '0', 'XSDD-42076560-3PH-APEC3-WC', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1549, '出库', '销售', 'XSCK-INV_1785-25', 'XSCK-INV_1785-25', '2025-08-13 00:00:00', '2025-08-13 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 374000.000000, '记账', '销售', 'Stock Status:3PH APEC3 WC-18200;客户发票:INV_1785', '', '', '', '', 100.000000, 0.000000, 374000.000000, 0.000000, 0.000000, 0.000000, 374000.000000, 374000.000000, '1', NULL, '0', 'XSDD-42076560-3PH-APEC3-WC', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1550, '出库', '销售', 'XSCK-3PH-APEC3-WC-26', 'XSCK-3PH-APEC3-WC-26', '2025-08-13 00:00:00', '2025-08-13 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 374000.000000, '记账', '销售', 'Stock Status:3PH APEC3 WC-18200;客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 374000.000000, 0.000000, 0.000000, 0.000000, 374000.000000, 374000.000000, '1', NULL, '0', 'XSDD-42076560-3PH-APEC3-WC', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1551, '出库', '销售', 'XSCK-INV_1796-27', 'XSCK-INV_1796-27', '2025-08-19 00:00:00', '2025-08-19 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 173536.000000, '记账', '销售', 'Stock Status:3PH APEC3 WC-18200;客户发票:INV_1796', '', '', '', '', 100.000000, 0.000000, 173536.000000, 0.000000, 0.000000, 0.000000, 173536.000000, 0.000000, '1', NULL, '0', 'XSDD-42076561-3PH-APEC3-WC', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1552, '入库', '采购', 'CGRK-RM-SMT-250620-01-28', 'CGRK-RM-SMT-250620-01-28', '2025-07-08 00:00:00', '2025-07-08 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 160020.000000, '记账', '采购', 'Stock Status:3PH APEC3 WC-18200;供应商发票:RM-SMT-250620-01', '', '', '', '', 100.000000, 0.000000, 160020.000000, 0.000000, 0.000000, 0.000000, 160020.000000, 160020.000000, '1', NULL, '0', 'CGDD-PO_0486-3PH-APEC3-WC', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1553, '出库', '销售', 'XSCK-3PH-APEC3-WC-28', 'XSCK-3PH-APEC3-WC-28', '2025-08-19 00:00:00', '2025-08-19 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 188496.000000, '记账', '销售', 'Stock Status:3PH APEC3 WC-18200;客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 188496.000000, 0.000000, 0.000000, 0.000000, 188496.000000, 188496.000000, '1', NULL, '0', 'XSDD-42076561-3PH-APEC3-WC', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1554, '入库', '采购', 'CGRK-RY-SMT-250623-01-29', 'CGRK-RY-SMT-250623-01-29', '2025-07-11 00:00:00', '2025-07-11 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 1066800.000000, '记账', '采购', 'Stock Status:3PH APEC3 WC-18200;供应商发票:RY-SMT-250623-01', '', '', '', '', 100.000000, 0.000000, 1066800.000000, 0.000000, 0.000000, 0.000000, 1066800.000000, 1066800.000000, '1', NULL, '0', 'CGDD-PO_0486-3PH-APEC3-WC', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1555, '出库', '销售', 'XSCK-3PH-APEC3-WC-29', 'XSCK-3PH-APEC3-WC-29', '2025-08-19 00:00:00', '2025-08-19 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 11968.000000, '记账', '销售', 'Stock Status:3PH APEC3 WC-18200;客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 11968.000000, 0.000000, 0.000000, 0.000000, 11968.000000, 11968.000000, '1', NULL, '0', 'XSDD-42076561-3PH-APEC3-WC', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1556, '出库', '销售', 'XSCK-3PH-APEC3-WC-30', 'XSCK-3PH-APEC3-WC-30', '2025-08-19 00:00:00', '2025-08-19 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 748000.000000, '记账', '销售', 'Stock Status:3PH APEC3 WC-18200;客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 748000.000000, 0.000000, 0.000000, 0.000000, 748000.000000, 748000.000000, '1', NULL, '0', 'XSDD-42076561-3PH-APEC3-WC', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1557, '出库', '销售', 'XSCK-INV_1805-31', 'XSCK-INV_1805-31', '2025-08-21 00:00:00', '2025-08-21 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 374000.000000, '记账', '销售', 'Stock Status:3PH APEC3 WC-18200;客户发票:INV_1805', '', '', '', '', 100.000000, 0.000000, 374000.000000, 0.000000, 0.000000, 0.000000, 374000.000000, 0.000000, '1', NULL, '0', 'XSDD-42076558-3PH-APEC3-WC', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1558, '出库', '销售', 'XSCK-3PH-APEC3-WC-32', 'XSCK-3PH-APEC3-WC-32', '2025-08-21 00:00:00', '2025-08-21 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 122672.000000, '记账', '销售', 'Stock Status:3PH APEC3 WC-18200;客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 122672.000000, 0.000000, 0.000000, 0.000000, 122672.000000, 122672.000000, '1', NULL, '0', 'XSDD-42076558-3PH-APEC3-WC', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1559, '入库', '采购', 'CGRK-RY-SMT-250623-02-33', 'CGRK-RY-SMT-250623-02-33', '2025-07-14 00:00:00', '2025-07-14 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 160020.000000, '记账', '采购', 'Stock Status:3PH APEC3 WC-18200;供应商发票:RY-SMT-250623-02', '', '', '', '', 100.000000, 0.000000, 160020.000000, 0.000000, 0.000000, 0.000000, 160020.000000, 160020.000000, '1', NULL, '0', 'CGDD-PO_0486-3PH-APEC3-WC', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1560, '出库', '销售', 'XSCK-3PH-APEC3-WC-33', 'XSCK-3PH-APEC3-WC-33', '2025-08-21 00:00:00', '2025-08-21 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 188496.000000, '记账', '销售', 'Stock Status:3PH APEC3 WC-18200;客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 188496.000000, 0.000000, 0.000000, 0.000000, 188496.000000, 188496.000000, '1', NULL, '0', 'XSDD-42076558-3PH-APEC3-WC', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1561, '入库', '采购', 'CGRK-RY-SMT-250701-01-34', 'CGRK-RY-SMT-250701-01-34', '2025-07-17 00:00:00', '2025-07-17 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 116840.000000, '记账', '采购', 'Stock Status:3PH APEC3 WC-18200;供应商发票:RY-SMT-250701-01', '', '', '', '', 100.000000, 0.000000, 116840.000000, 0.000000, 0.000000, 0.000000, 116840.000000, 116840.000000, '1', NULL, '0', 'CGDD-PO_0486-3PH-APEC3-WC', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1562, '出库', '销售', 'XSCK-3PH-APEC3-WC-34', 'XSCK-3PH-APEC3-WC-34', '2025-08-21 00:00:00', '2025-08-21 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 62832.000000, '记账', '销售', 'Stock Status:3PH APEC3 WC-18200;客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 62832.000000, 0.000000, 0.000000, 0.000000, 62832.000000, 62832.000000, '1', NULL, '0', 'XSDD-42076558-3PH-APEC3-WC', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1563, '出库', '销售', 'XSCK-3PH-APEC3-WC-35', 'XSCK-3PH-APEC3-WC-35', '2025-08-21 00:00:00', '2025-08-21 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 74800.000000, '记账', '销售', 'Stock Status:3PH APEC3 WC-18200;客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 74800.000000, 0.000000, 0.000000, 0.000000, 74800.000000, 74800.000000, '1', NULL, '0', 'XSDD-42076558-3PH-APEC3-WC', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1564, '其它', '采购订单', 'CGDD-PO_0486-1PH-WS79-ADD1', 'CGDD-PO_0486-1PH-WS79-ADD1', '2026-01-01 00:00:00', '2026-01-01 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 6687800.000000, '记账', '采购订单', 'Stock Status:1PH WS79-112,400 (+1);原采购单:PO_0486', '', '', '', '', 100.000000, 0.000000, 6687800.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', '2', '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1565, '其它', '销售订单', 'XSDD-42303412-1PH-WS79-ADD1', 'XSDD-42303412-1PH-WS79-ADD1', '2026-06-29 00:00:00', '2026-06-29 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 323400.000000, '记账', '销售订单', 'Stock Status客户PO:42303412', '', '', '', '', 100.000000, 0.000000, 323400.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1566, '其它', '销售订单', 'XSDD-42303416-1PH-WS79-ADD1', 'XSDD-42303416-1PH-WS79-ADD1', '2026-01-01 00:00:00', '2026-01-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售订单', 'Stock Status客户PO:42303416', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1567, '其它', '销售订单', 'XSDD-42303420-1PH-WS79-ADD1', 'XSDD-42303420-1PH-WS79-ADD1', '2026-01-01 00:00:00', '2026-01-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售订单', 'Stock Status客户PO:42303420', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1568, '其它', '销售订单', 'XSDD-42303425-1PH-WS79-ADD1', 'XSDD-42303425-1PH-WS79-ADD1', '2026-01-01 00:00:00', '2026-01-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 323400.000000, '记账', '销售订单', 'Stock Status客户PO:42303425', '', '', '', '', 100.000000, 0.000000, 323400.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1569, '其它', '销售订单', 'XSDD-42303429-1PH-WS79-ADD1', 'XSDD-42303429-1PH-WS79-ADD1', '2026-07-02 00:00:00', '2026-07-02 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 323400.000000, '记账', '销售订单', 'Stock Status客户PO:42303429', '', '', '', '', 100.000000, 0.000000, 323400.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1570, '其它', '销售订单', 'XSDD-42303433-1PH-WS79-ADD1', 'XSDD-42303433-1PH-WS79-ADD1', '2026-01-01 00:00:00', '2026-01-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售订单', 'Stock Status客户PO:42303433', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1571, '其它', '销售订单', 'XSDD-42303437-1PH-WS79-ADD1', 'XSDD-42303437-1PH-WS79-ADD1', '2026-01-01 00:00:00', '2026-01-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售订单', 'Stock Status客户PO:42303437', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1572, '其它', '销售订单', 'XSDD-42303440-1PH-WS79-ADD1', 'XSDD-42303440-1PH-WS79-ADD1', '2026-01-01 00:00:00', '2026-01-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售订单', 'Stock Status客户PO:42303440', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1573, '其它', '销售订单', 'XSDD-42303443-1PH-WS79-ADD1', 'XSDD-42303443-1PH-WS79-ADD1', '2026-01-01 00:00:00', '2026-01-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售订单', 'Stock Status客户PO:42303443', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1574, '其它', '销售订单', 'XSDD-42303447-1PH-WS79-ADD1', 'XSDD-42303447-1PH-WS79-ADD1', '2026-07-30 00:00:00', '2026-07-30 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 323400.000000, '记账', '销售订单', 'Stock Status客户PO:42303447', '', '', '', '', 100.000000, 0.000000, 323400.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1575, '其它', '销售订单', 'XSDD-42303452-1PH-WS79-ADD1', 'XSDD-42303452-1PH-WS79-ADD1', '2026-01-01 00:00:00', '2026-01-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 323400.000000, '记账', '销售订单', 'Stock Status客户PO:42303452', '', '', '', '', 100.000000, 0.000000, 323400.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1576, '其它', '销售订单', 'XSDD-42303456-1PH-WS79-ADD1', 'XSDD-42303456-1PH-WS79-ADD1', '2026-01-01 00:00:00', '2026-01-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售订单', 'Stock Status客户PO:42303456', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1577, '其它', '销售订单', 'XSDD-42303461-1PH-WS79-ADD1', 'XSDD-42303461-1PH-WS79-ADD1', '2026-01-01 00:00:00', '2026-01-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售订单', 'Stock Status客户PO:42303461', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1578, '其它', '销售订单', 'XSDD-42303465-1PH-WS79-ADD1', 'XSDD-42303465-1PH-WS79-ADD1', '2026-01-01 00:00:00', '2026-01-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售订单', 'Stock Status客户PO:42303465', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1579, '其它', '销售订单', 'XSDD-42303470-1PH-WS79-ADD1', 'XSDD-42303470-1PH-WS79-ADD1', '2026-01-01 00:00:00', '2026-01-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售订单', 'Stock Status客户PO:42303470', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1580, '其它', '销售订单', 'XSDD-42303475-1PH-WS79-ADD1', 'XSDD-42303475-1PH-WS79-ADD1', '2026-07-30 00:00:00', '2026-07-30 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售订单', 'Stock Status客户PO:42303475', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1581, '其它', '销售订单', 'XSDD-42303480-1PH-WS79-ADD1', 'XSDD-42303480-1PH-WS79-ADD1', '2026-01-01 00:00:00', '2026-01-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 323400.000000, '记账', '销售订单', 'Stock Status客户PO:42303480', '', '', '', '', 100.000000, 0.000000, 323400.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '3', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1582, '其它', '销售订单', 'XSDD-blom-tukar-po-date-1PH-WS79-ADD1', 'XSDD-blom-tukar-po-date-1PH-WS79-ADD1', '2026-01-01 00:00:00', '2026-01-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售订单', 'Stock Status客户PO:blom tukar po date', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1583, '其它', '销售订单', 'XSDD-42303506-1PH-WS79-ADD1', 'XSDD-42303506-1PH-WS79-ADD1', '2026-01-01 00:00:00', '2026-01-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 161700.000000, '记账', '销售订单', 'Stock Status客户PO:42303506', '', '', '', '', 100.000000, 0.000000, 161700.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1584, '其它', '销售订单', 'XSDD-42303486-1PH-WS79-ADD1', 'XSDD-42303486-1PH-WS79-ADD1', '2026-01-01 00:00:00', '2026-01-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 323400.000000, '记账', '销售订单', 'Stock Status客户PO:42303486', '', '', '', '', 100.000000, 0.000000, 323400.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1585, '其它', '销售订单', 'XSDD-42303491-1PH-WS79-ADD1', 'XSDD-42303491-1PH-WS79-ADD1', '2026-01-01 00:00:00', '2026-01-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售订单', 'Stock Status客户PO:42303491', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1586, '其它', '销售订单', 'XSDD-42303496-1PH-WS79-ADD1', 'XSDD-42303496-1PH-WS79-ADD1', '2026-01-01 00:00:00', '2026-01-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售订单', 'Stock Status客户PO:42303496', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1587, '其它', '销售订单', 'XSDD-42303500-1PH-WS79-ADD1', 'XSDD-42303500-1PH-WS79-ADD1', '2026-01-01 00:00:00', '2026-01-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售订单', 'Stock Status客户PO:42303500', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1588, '其它', '销售订单', 'XSDD-42303511-1PH-WS79-ADD1', 'XSDD-42303511-1PH-WS79-ADD1', '2026-01-01 00:00:00', '2026-01-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售订单', 'Stock Status客户PO:42303511', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1589, '其它', '销售订单', 'XSDD-42303516-1PH-WS79-ADD1', 'XSDD-42303516-1PH-WS79-ADD1', '2026-01-01 00:00:00', '2026-01-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售订单', 'Stock Status客户PO:42303516', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1590, '其它', '销售订单', 'XSDD-42303521-1PH-WS79-ADD1', 'XSDD-42303521-1PH-WS79-ADD1', '2026-01-01 00:00:00', '2026-01-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售订单', 'Stock Status客户PO:42303521', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1591, '其它', '销售订单', 'XSDD-42303525-1PH-WS79-ADD1', 'XSDD-42303525-1PH-WS79-ADD1', '2026-01-01 00:00:00', '2026-01-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售订单', 'Stock Status客户PO:42303525', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1592, '其它', '销售订单', 'XSDD-42303530-1PH-WS79-ADD1', 'XSDD-42303530-1PH-WS79-ADD1', '2026-01-01 00:00:00', '2026-01-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售订单', 'Stock Status客户PO:42303530', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1593, '其它', '销售订单', 'XSDD-42303535-1PH-WS79-ADD1', 'XSDD-42303535-1PH-WS79-ADD1', '2026-01-01 00:00:00', '2026-01-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售订单', 'Stock Status客户PO:42303535', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1594, '其它', '销售订单', 'XSDD-42303539-1PH-WS79-ADD1', 'XSDD-42303539-1PH-WS79-ADD1', '2026-06-18 00:00:00', '2026-06-18 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 323400.000000, '记账', '销售订单', 'Stock Status客户PO:42303539', '', '', '', '', 100.000000, 0.000000, 323400.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1595, '其它', '销售订单', 'XSDD-42303544-1PH-WS79-ADD1', 'XSDD-42303544-1PH-WS79-ADD1', '2026-01-01 00:00:00', '2026-01-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 323400.000000, '记账', '销售订单', 'Stock Status客户PO:42303544', '', '', '', '', 100.000000, 0.000000, 323400.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1596, '其它', '销售订单', 'XSDD-42303549-1PH-WS79-ADD1', 'XSDD-42303549-1PH-WS79-ADD1', '2026-01-01 00:00:00', '2026-01-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售订单', 'Stock Status客户PO:42303549', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1597, '其它', '销售订单', 'XSDD-42303554-1PH-WS79-ADD1', 'XSDD-42303554-1PH-WS79-ADD1', '2026-01-01 00:00:00', '2026-01-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售订单', 'Stock Status客户PO:42303554', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1598, '其它', '销售订单', 'XSDD-42303557-1PH-WS79-ADD1', 'XSDD-42303557-1PH-WS79-ADD1', '2026-01-01 00:00:00', '2026-01-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售订单', 'Stock Status客户PO:42303557', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1599, '其它', '销售订单', 'XSDD-42303561-1PH-WS79-ADD1', 'XSDD-42303561-1PH-WS79-ADD1', '2026-01-01 00:00:00', '2026-01-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 242550.000000, '记账', '销售订单', 'Stock Status客户PO:42303561', '', '', '', '', 100.000000, 0.000000, 242550.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1600, '其它', '销售订单', 'XSDD-42303565-1PH-WS79-ADD1', 'XSDD-42303565-1PH-WS79-ADD1', '2026-06-25 00:00:00', '2026-06-25 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 194040.000000, '记账', '销售订单', 'Stock Status客户PO:42303565', '', '', '', '', 100.000000, 0.000000, 194040.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '1', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1601, '入库', '采购', 'CGRK-260414-01-11', 'CGRK-260414-01-11', '2026-04-29 00:00:00', '2026-04-29 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 642600.000000, '记账', '采购', 'Stock Status:1PH WS79-112,400 (+1);供应商发票:260414-01', '', '', '', '', 100.000000, 0.000000, 642600.000000, 0.000000, 0.000000, 0.000000, 642600.000000, 405653.360000, '1', NULL, '0', 'CGDD-PO_0486-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1602, '出库', '销售', 'XSCK-INV_2111-11', 'XSCK-INV_2111-11', '2026-06-26 00:00:00', '2026-06-26 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2111', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 0.000000, '1', NULL, '0', 'XSDD-42303412-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1603, '出库', '销售', 'XSCK-1PH-WS79-ADD1-12', 'XSCK-1PH-WS79-ADD1-12', '2026-06-26 00:00:00', '2026-06-26 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42303412-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1604, '出库', '销售', 'XSCK-1PH-WS79-ADD1-13', 'XSCK-1PH-WS79-ADD1-13', '2026-06-26 00:00:00', '2026-06-26 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42303412-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1605, '出库', '销售', 'XSCK-INV_2112-14', 'XSCK-INV_2112-14', '2026-06-26 00:00:00', '2026-06-26 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2112', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42303412-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1606, '出库', '销售', 'XSCK-INV_2113-15', 'XSCK-INV_2113-15', '2026-06-28 00:00:00', '2026-06-28 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2113', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 0.000000, '1', NULL, '0', 'XSDD-42303416-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1607, '出库', '销售', 'XSCK-1PH-WS79-ADD1-16', 'XSCK-1PH-WS79-ADD1-16', '2026-06-28 00:00:00', '2026-06-28 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42303416-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1608, '出库', '销售', 'XSCK-INV_2114-17', 'XSCK-INV_2114-17', '2026-06-28 00:00:00', '2026-06-28 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2114', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42303416-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1609, '出库', '销售', 'XSCK-INV_2115-18', 'XSCK-INV_2115-18', '2026-06-28 00:00:00', '2026-06-28 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2115', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42303420-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1610, '出库', '销售', 'XSCK-1PH-WS79-ADD1-19', 'XSCK-1PH-WS79-ADD1-19', '2026-06-28 00:00:00', '2026-06-28 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42303420-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1611, '出库', '销售', 'XSCK-INV_2116-20', 'XSCK-INV_2116-20', '2026-06-28 00:00:00', '2026-06-28 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2116', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42303420-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1612, '出库', '销售', 'XSCK-INV_2117-21', 'XSCK-INV_2117-21', '2026-06-28 00:00:00', '2026-06-28 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 64680.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2117', '', '', '', '', 100.000000, 0.000000, 64680.000000, 0.000000, 0.000000, 0.000000, 64680.000000, 64680.000000, '1', NULL, '0', 'XSDD-42303425-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1613, '入库', '采购', 'CGRK-260415-03-22', 'CGRK-260415-03-22', '2026-05-11 00:00:00', '2026-05-11 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 321300.000000, '记账', '采购', 'Stock Status:1PH WS79-112,400 (+1);供应商发票:260415-03', '', '', '', '', 100.000000, 0.000000, 321300.000000, 0.000000, 0.000000, 0.000000, 321300.000000, 321300.000000, '1', NULL, '0', 'CGDD-PO_0486-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1614, '出库', '销售', 'XSCK-1PH-WS79-ADD1-22', 'XSCK-1PH-WS79-ADD1-22', '2026-06-28 00:00:00', '2026-06-28 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 16170.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 16170.000000, 0.000000, 0.000000, 0.000000, 16170.000000, 16170.000000, '1', NULL, '0', 'XSDD-42303425-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1615, '出库', '销售', 'XSCK-1PH-WS79-ADD1-23', 'XSCK-1PH-WS79-ADD1-23', '2026-06-28 00:00:00', '2026-06-28 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42303425-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1616, '出库', '销售', 'XSCK-1PH-WS79-ADD1-24', 'XSCK-1PH-WS79-ADD1-24', '2026-06-28 00:00:00', '2026-06-28 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42303425-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1617, '出库', '销售', 'XSCK-INV_2118-25', 'XSCK-INV_2118-25', '2026-06-28 00:00:00', '2026-06-28 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2118', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42303425-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1618, '出库', '销售', 'XSCK-INV_2122-26', 'XSCK-INV_2122-26', '2026-07-01 00:00:00', '2026-07-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2122', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 0.000000, '1', NULL, '0', 'XSDD-42303429-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1619, '出库', '销售', 'XSCK-1PH-WS79-ADD1-27', 'XSCK-1PH-WS79-ADD1-27', '2026-07-01 00:00:00', '2026-07-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42303429-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1620, '出库', '销售', 'XSCK-INV_2123-28', 'XSCK-INV_2123-28', '2026-07-01 00:00:00', '2026-07-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 16170.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2123', '', '', '', '', 100.000000, 0.000000, 16170.000000, 0.000000, 0.000000, 0.000000, 16170.000000, 16170.000000, '1', NULL, '0', 'XSDD-42303429-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1621, '入库', '采购', 'CGRK-260417-01-29', 'CGRK-260417-01-29', '2026-05-09 00:00:00', '2026-05-09 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 706860.000000, '记账', '采购', 'Stock Status:1PH WS79-112,400 (+1);供应商发票:260417-01', '', '', '', '', 100.000000, 0.000000, 706860.000000, 0.000000, 0.000000, 0.000000, 706860.000000, 706860.000000, '1', NULL, '0', 'CGDD-PO_0486-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1622, '出库', '销售', 'XSCK-1PH-WS79-ADD1-29', 'XSCK-1PH-WS79-ADD1-29', '2026-07-01 00:00:00', '2026-07-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 64680.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 64680.000000, 0.000000, 0.000000, 0.000000, 64680.000000, 64680.000000, '1', NULL, '0', 'XSDD-42303429-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1623, '出库', '销售', 'XSCK-1PH-WS79-ADD1-30', 'XSCK-1PH-WS79-ADD1-30', '2026-07-01 00:00:00', '2026-07-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42303429-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1624, '出库', '销售', 'XSCK-INV_2124-31', 'XSCK-INV_2124-31', '2026-07-01 00:00:00', '2026-07-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2124', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42303433-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1625, '出库', '销售', 'XSCK-1PH-WS79-ADD1-32', 'XSCK-1PH-WS79-ADD1-32', '2026-07-01 00:00:00', '2026-07-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42303433-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1626, '出库', '销售', 'XSCK-1PH-WS79-ADD1-33', 'XSCK-1PH-WS79-ADD1-33', '2026-07-01 00:00:00', '2026-07-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42303433-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1627, '出库', '销售', 'XSCK-INV_2125-34', 'XSCK-INV_2125-34', '2026-07-01 00:00:00', '2026-07-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2125', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42303437-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1628, '出库', '销售', 'XSCK-1PH-WS79-ADD1-35', 'XSCK-1PH-WS79-ADD1-35', '2026-07-01 00:00:00', '2026-07-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42303437-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1629, '出库', '销售', 'XSCK-1PH-WS79-ADD1-36', 'XSCK-1PH-WS79-ADD1-36', '2026-07-01 00:00:00', '2026-07-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42303437-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1630, '出库', '销售', 'XSCK-INV_2126-37', 'XSCK-INV_2126-37', '2026-07-01 00:00:00', '2026-07-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2126', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42303440-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1631, '出库', '销售', 'XSCK-1PH-WS79-ADD1-38', 'XSCK-1PH-WS79-ADD1-38', '2026-07-01 00:00:00', '2026-07-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42303440-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1632, '出库', '销售', 'XSCK-1PH-WS79-ADD1-39', 'XSCK-1PH-WS79-ADD1-39', '2026-07-01 00:00:00', '2026-07-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42303440-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1633, '出库', '销售', 'XSCK-INV_2127-40', 'XSCK-INV_2127-40', '2026-07-01 00:00:00', '2026-07-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2127', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42303443-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1634, '出库', '销售', 'XSCK-1PH-WS79-ADD1-41', 'XSCK-1PH-WS79-ADD1-41', '2026-07-01 00:00:00', '2026-07-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 6468.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 6468.000000, 0.000000, 0.000000, 0.000000, 6468.000000, 6468.000000, '1', NULL, '0', 'XSDD-42303443-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1635, '入库', '采购', 'CGRK-260422-01-42', 'CGRK-260422-01-42', '2026-05-08 00:00:00', '2026-05-08 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 771120.000000, '记账', '采购', 'Stock Status:1PH WS79-112,400 (+1);供应商发票:260422-01', '', '', '', '', 100.000000, 0.000000, 771120.000000, 0.000000, 0.000000, 0.000000, 771120.000000, 771120.000000, '1', NULL, '0', 'CGDD-PO_0486-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1636, '出库', '销售', 'XSCK-1PH-WS79-ADD1-42', 'XSCK-1PH-WS79-ADD1-42', '2026-07-01 00:00:00', '2026-07-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 74382.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 74382.000000, 0.000000, 0.000000, 0.000000, 74382.000000, 74382.000000, '1', NULL, '0', 'XSDD-42303443-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1637, '出库', '销售', 'XSCK-1PH-WS79-ADD1-43', 'XSCK-1PH-WS79-ADD1-43', '2026-07-01 00:00:00', '2026-07-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42303443-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1638, '出库', '销售', 'XSCK-INV_2130-44', 'XSCK-INV_2130-44', '2026-07-09 00:00:00', '2026-07-09 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2130', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 0.000000, '1', NULL, '0', 'XSDD-42303447-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1639, '出库', '销售', 'XSCK-1PH-WS79-ADD1-45', 'XSCK-1PH-WS79-ADD1-45', '2026-07-09 00:00:00', '2026-07-09 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42303447-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1640, '出库', '销售', 'XSCK-1PH-WS79-ADD1-46', 'XSCK-1PH-WS79-ADD1-46', '2026-07-09 00:00:00', '2026-07-09 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42303447-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1641, '出库', '销售', 'XSCK-INV_2131-47', 'XSCK-INV_2131-47', '2026-07-13 00:00:00', '2026-07-13 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2131', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 0.000000, '1', NULL, '0', 'XSDD-42303447-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1642, '出库', '销售', 'XSCK-INV_2132-48', 'XSCK-INV_2132-48', '2026-07-14 00:00:00', '2026-07-14 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2132', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42303452-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1643, '出库', '销售', 'XSCK-INV_2138-49', 'XSCK-INV_2138-49', '2026-07-23 00:00:00', '2026-07-23 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2138', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42303452-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1644, '出库', '销售', 'XSCK-INV_2139-50', 'XSCK-INV_2139-50', '2026-07-22 00:00:00', '2026-07-22 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2139', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42303452-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1645, '出库', '销售', 'XSCK-1PH-WS79-ADD1-51', 'XSCK-1PH-WS79-ADD1-51', '2026-07-22 00:00:00', '2026-07-22 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42303452-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1646, '出库', '销售', 'XSCK-do_2143-52', 'XSCK-do_2143-52', '2026-07-27 00:00:00', '2026-07-27 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:do_2143', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42303456-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1647, '出库', '销售', 'XSCK-do_2144-53', 'XSCK-do_2144-53', '2026-07-27 00:00:00', '2026-07-27 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:do_2144', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42303456-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1648, '出库', '销售', 'XSCK-1PH-WS79-ADD1-54', 'XSCK-1PH-WS79-ADD1-54', '2026-07-27 00:00:00', '2026-07-27 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42303456-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1649, '出库', '销售', 'XSCK-do_2145-55', 'XSCK-do_2145-55', '2026-07-27 00:00:00', '2026-07-27 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 3234.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:do_2145', '', '', '', '', 100.000000, 0.000000, 3234.000000, 0.000000, 0.000000, 0.000000, 3234.000000, 3234.000000, '1', NULL, '0', 'XSDD-42303461-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1650, '入库', '采购', 'CGRK-260423-02-56', 'CGRK-260423-02-56', '2026-05-13 00:00:00', '2026-05-13 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 533120.000000, '记账', '采购', 'Stock Status:1PH WS79-112,400 (+1);供应商发票:260423-02', '', '', '', '', 100.000000, 0.000000, 533120.000000, 0.000000, 0.000000, 0.000000, 533120.000000, 533120.000000, '1', NULL, '0', 'CGDD-PO_0486-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1651, '出库', '销售', 'XSCK-1PH-WS79-ADD1-56', 'XSCK-1PH-WS79-ADD1-56', '2026-07-27 00:00:00', '2026-07-27 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 77616.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 77616.000000, 0.000000, 0.000000, 0.000000, 77616.000000, 77616.000000, '1', NULL, '0', 'XSDD-42303461-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1652, '出库', '销售', 'XSCK-do_2146-57', 'XSCK-do_2146-57', '2026-07-27 00:00:00', '2026-07-27 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:do_2146', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42303461-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1653, '出库', '销售', 'XSCK-1PH-WS79-ADD1-58', 'XSCK-1PH-WS79-ADD1-58', '2026-07-27 00:00:00', '2026-07-27 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42303461-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1654, '出库', '销售', 'XSCK-do_2147-59', 'XSCK-do_2147-59', '2026-07-27 00:00:00', '2026-07-27 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:do_2147', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42303465-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1655, '出库', '销售', 'XSCK-do_2148-60', 'XSCK-do_2148-60', '2026-07-27 00:00:00', '2026-07-27 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:do_2148', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42303465-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1656, '出库', '销售', 'XSCK-1PH-WS79-ADD1-61', 'XSCK-1PH-WS79-ADD1-61', '2026-07-27 00:00:00', '2026-07-27 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42303465-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1657, '出库', '销售', 'XSCK-INV_2140-62', 'XSCK-INV_2140-62', '2026-07-23 00:00:00', '2026-07-23 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2140', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42303470-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1658, '出库', '销售', 'XSCK-INV_2141-63', 'XSCK-INV_2141-63', '2026-07-23 00:00:00', '2026-07-23 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2141', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42303470-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1659, '出库', '销售', 'XSCK-1PH-WS79-ADD1-64', 'XSCK-1PH-WS79-ADD1-64', '2026-07-23 00:00:00', '2026-07-23 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42303470-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1660, '出库', '销售', 'XSCK-INV_2133-65', 'XSCK-INV_2133-65', '2026-07-16 00:00:00', '2026-07-16 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2133', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 0.000000, '1', NULL, '0', 'XSDD-42303475-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1661, '入库', '采购', 'CGRK-260427-01-66', 'CGRK-260427-01-66', '2026-05-14 00:00:00', '2026-05-14 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 706860.000000, '记账', '采购', 'Stock Status:1PH WS79-112,400 (+1);供应商发票:260427-01', '', '', '', '', 100.000000, 0.000000, 706860.000000, 0.000000, 0.000000, 0.000000, 706860.000000, 706860.000000, '1', NULL, '0', 'CGDD-PO_0486-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1662, '出库', '销售', 'XSCK-INV_2134-66', 'XSCK-INV_2134-66', '2026-07-16 00:00:00', '2026-07-16 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2134', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42303475-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1663, '出库', '销售', 'XSCK-1PH-WS79-ADD1-67', 'XSCK-1PH-WS79-ADD1-67', '2026-07-16 00:00:00', '2026-07-16 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42303475-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1664, '出库', '销售', 'XSCK-INV_2142-68', 'XSCK-INV_2142-68', '2026-07-23 00:00:00', '2026-07-23 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2142', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42303480-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1665, '出库', '销售', 'XSCK-INV_2150-69', 'XSCK-INV_2150-69', '2026-07-29 00:00:00', '2026-07-29 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2150', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42303480-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1666, '入库', '采购', 'CGRK-260429-01-78', 'CGRK-260429-01-78', '2026-05-12 00:00:00', '2026-05-12 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 706860.000000, '记账', '采购', 'Stock Status:1PH WS79-112,400 (+1);供应商发票:260429-01', '', '', '', '', 100.000000, 0.000000, 706860.000000, 0.000000, 0.000000, 0.000000, 706860.000000, 706860.000000, '1', NULL, '0', 'CGDD-PO_0486-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1667, '出库', '销售', 'XSCK-DO_2157-83', 'XSCK-DO_2157-83', '2026-08-05 00:00:00', '2026-08-05 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:DO_2157', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-blom-tukar-po-date-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1668, '出库', '销售', 'XSCK-1PH-WS79-ADD1-84', 'XSCK-1PH-WS79-ADD1-84', '2026-08-05 00:00:00', '2026-08-05 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-blom-tukar-po-date-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1669, '出库', '销售', 'XSCK-DO_2158-85', 'XSCK-DO_2158-85', '2026-08-05 00:00:00', '2026-08-05 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:DO_2158', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-blom-tukar-po-date-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1670, '出库', '销售', 'XSCK-INV_2159-86', 'XSCK-INV_2159-86', '2026-08-10 00:00:00', '2026-08-10 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2159', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42303506-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1671, '出库', '销售', 'XSCK-1PH-WS79-ADD1-87', 'XSCK-1PH-WS79-ADD1-87', '2026-08-10 00:00:00', '2026-08-10 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 80850.000000, '记账', '销售', 'Stock Status:1PH WS79-112,400 (+1);客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 80850.000000, 0.000000, 0.000000, 0.000000, 80850.000000, 80850.000000, '1', NULL, '0', 'XSDD-42303506-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1672, '入库', '采购', 'CGRK-260509-01-90', 'CGRK-260509-01-90', '2026-05-26 00:00:00', '2026-05-26 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 706860.000000, '记账', '采购', 'Stock Status:1PH WS79-112,400 (+1);供应商发票:260509-01', '', '', '', '', 100.000000, 0.000000, 706860.000000, 0.000000, 0.000000, 0.000000, 706860.000000, 706860.000000, '1', NULL, '0', 'CGDD-PO_0486-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1673, '入库', '采购', 'CGRK-260515-01-102', 'CGRK-260515-01-102', '2026-06-10 00:00:00', '2026-06-10 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 321300.000000, '记账', '采购', 'Stock Status:1PH WS79-112,400 (+1);供应商发票:260515-01', '', '', '', '', 100.000000, 0.000000, 321300.000000, 0.000000, 0.000000, 0.000000, 321300.000000, 321300.000000, '1', NULL, '0', 'CGDD-PO_0486-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1674, '入库', '采购', 'CGRK-260518-02-107', 'CGRK-260518-02-107', '2026-06-06 00:00:00', '2026-06-06 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 500990.000000, '记账', '采购', 'Stock Status:1PH WS79-112,400 (+1);供应商发票:260518-02', '', '', '', '', 100.000000, 0.000000, 500990.000000, 0.000000, 0.000000, 0.000000, 500990.000000, 500990.000000, '1', NULL, '0', 'CGDD-PO_0486-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1675, '入库', '采购', 'CGRK-260518-01-116', 'CGRK-260518-01-116', '2026-06-08 00:00:00', '2026-06-08 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 769930.000000, '记账', '采购', 'Stock Status:1PH WS79-112,400 (+1);供应商发票:260518-01', '', '', '', '', 100.000000, 0.000000, 769930.000000, 0.000000, 0.000000, 0.000000, 769930.000000, 769930.000000, '1', NULL, '0', 'CGDD-PO_0486-1PH-WS79-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1676, '其它', '采购订单', 'CGDD-TNB296-2025-1-3PH-APEC3-WC-ADD1', 'CGDD-TNB296-2025-1-3PH-APEC3-WC-ADD1', '2026-01-01 00:00:00', '2026-01-01 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 5778500.000000, '记账', '采购订单', 'Stock Status:3PH APEC3 WC-18200 (+1);原采购单:TNB296/2025 (+1)', '', '', '', '', 100.000000, 0.000000, 5778500.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '3', '3', '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1677, '其它', '销售订单', 'XSDD-42303676-3PH-APEC3-WC-ADD1', 'XSDD-42303676-3PH-APEC3-WC-ADD1', '2026-01-01 00:00:00', '2026-01-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 1122000.000000, '记账', '销售订单', 'Stock Status客户PO:42303676', '', '', '', '', 100.000000, 0.000000, 1122000.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1678, '入库', '采购', 'CGRK-260518-03-11', 'CGRK-260518-03-11', '2026-06-06 00:00:00', '2026-06-06 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 320040.000000, '记账', '采购', 'Stock Status:3PH APEC3 WC-18200 (+1);供应商发票:260518-03', '', '', '', '', 100.000000, 0.000000, 320040.000000, 0.000000, 0.000000, 0.000000, 320040.000000, 320040.000000, '1', NULL, '0', 'CGDD-TNB296-2025-1-3PH-APEC3-WC-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1679, '出库', '销售', 'XSCK-INV_2129-11', 'XSCK-INV_2129-11', '2026-01-01 00:00:00', '2026-01-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 374000.000000, '记账', '销售', 'Stock Status:3PH APEC3 WC-18200 (+1);客户发票:INV_2129', '', '', '', '', 100.000000, 0.000000, 374000.000000, 0.000000, 0.000000, 0.000000, 374000.000000, 0.000000, '1', NULL, '0', 'XSDD-42303676-3PH-APEC3-WC-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1680, '出库', '销售', 'XSCK-3PH-APEC3-WC-ADD1-12', 'XSCK-3PH-APEC3-WC-ADD1-12', '2026-01-01 00:00:00', '2026-01-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 2992.000000, '记账', '销售', 'Stock Status:3PH APEC3 WC-18200 (+1);客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 2992.000000, 0.000000, 0.000000, 0.000000, 2992.000000, 2992.000000, '1', NULL, '0', 'XSDD-42303676-3PH-APEC3-WC-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1681, '入库', '采购', 'CGRK-260520-01-13', 'CGRK-260520-01-13', '2026-06-12 00:00:00', '2026-06-12 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 1066800.000000, '记账', '采购', 'Stock Status:3PH APEC3 WC-18200 (+1);供应商发票:260520-01', '', '', '', '', 100.000000, 0.000000, 1066800.000000, 0.000000, 0.000000, 0.000000, 1066800.000000, 1066800.000000, '1', NULL, '0', 'CGDD-TNB296-2025-1-3PH-APEC3-WC-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1682, '出库', '销售', 'XSCK-3PH-APEC3-WC-ADD1-13', 'XSCK-3PH-APEC3-WC-ADD1-13', '2026-01-01 00:00:00', '2026-01-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 371008.000000, '记账', '销售', 'Stock Status:3PH APEC3 WC-18200 (+1);客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 371008.000000, 0.000000, 0.000000, 0.000000, 371008.000000, 371008.000000, '1', NULL, '0', 'XSDD-42303676-3PH-APEC3-WC-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1683, '出库', '销售', 'XSCK-3PH-APEC3-WC-ADD1-14', 'XSCK-3PH-APEC3-WC-ADD1-14', '2026-01-01 00:00:00', '2026-01-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 374000.000000, '记账', '销售', 'Stock Status:3PH APEC3 WC-18200 (+1);客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 374000.000000, 0.000000, 0.000000, 0.000000, 374000.000000, 374000.000000, '1', NULL, '0', 'XSDD-42303676-3PH-APEC3-WC-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1684, '入库', '采购', 'CGRK-260529-01-17', 'CGRK-260529-01-17', '2026-06-18 00:00:00', '2026-06-18 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 1066800.000000, '记账', '采购', 'Stock Status:3PH APEC3 WC-18200 (+1);供应商发票:260529-01', '', '', '', '', 100.000000, 0.000000, 1066800.000000, 0.000000, 0.000000, 0.000000, 1066800.000000, 1066800.000000, '1', NULL, '0', 'CGDD-TNB296-2025-1-3PH-APEC3-WC-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1685, '入库', '采购', 'CGRK-260606-01-21', 'CGRK-260606-01-21', '2026-06-27 00:00:00', '2026-06-27 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 839470.000000, '记账', '采购', 'Stock Status:3PH APEC3 WC-18200 (+1);供应商发票:260606-01', '', '', '', '', 100.000000, 0.000000, 839470.000000, 0.000000, 0.000000, 0.000000, 839470.000000, 839470.000000, '1', NULL, '0', 'CGDD-TNB296-2025-1-3PH-APEC3-WC-ADD1', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1686, '其它', '采购订单', 'CGDD-TNB-296-2025_OV-3PH-APEC3-WC-OV', 'CGDD-TNB-296-2025_OV-3PH-APEC3-WC-OV', '2026-01-01 00:00:00', '2026-01-01 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 4047807.500000, '记账', '采购订单', 'Stock Status:3PH APEC3 WC(OV)-12,749;原采购单:TNB 296/2025_OV', '', '', '', '', 100.000000, 0.000000, 4047807.500000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', '2', '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1687, '其它', '销售订单', 'XSDD-42260524-3PH-APEC3-WC-OV', 'XSDD-42260524-3PH-APEC3-WC-OV', '2026-05-28 00:00:00', '2026-05-28 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 1122000.000000, '记账', '销售订单', 'Stock Status客户PO:42260524', '', '', '', '', 100.000000, 0.000000, 1122000.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1688, '其它', '销售订单', 'XSDD-42260525-3PH-APEC3-WC-OV', 'XSDD-42260525-3PH-APEC3-WC-OV', '2026-01-01 00:00:00', '2026-01-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 1122000.000000, '记账', '销售订单', 'Stock Status客户PO:42260525', '', '', '', '', 100.000000, 0.000000, 1122000.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1689, '其它', '销售订单', 'XSDD-42260527-3PH-APEC3-WC-OV', 'XSDD-42260527-3PH-APEC3-WC-OV', '2026-06-25 00:00:00', '2026-06-25 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 1402126.000000, '记账', '销售订单', 'Stock Status客户PO:42260527', '', '', '', '', 100.000000, 0.000000, 1402126.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1690, '其它', '销售订单', 'XSDD-42260529-3PH-APEC3-WC-OV', 'XSDD-42260529-3PH-APEC3-WC-OV', '2026-01-01 00:00:00', '2026-01-01 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 1122000.000000, '记账', '销售订单', 'Stock Status客户PO:42260529', '', '', '', '', 100.000000, 0.000000, 1122000.000000, 0.000000, 0.000000, 0.000000, NULL, NULL, '2', NULL, '0', NULL, '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1691, '入库', '采购', 'CGRK-260415-01-11', 'CGRK-260415-01-11', '2026-04-29 00:00:00', '2026-04-29 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 1066800.000000, '记账', '采购', 'Stock Status:3PH APEC3 WC(OV)-12,749;供应商发票:260415-01', '', '', '', '', 100.000000, 0.000000, 1066800.000000, 0.000000, 0.000000, 0.000000, 1066800.000000, 111939.941600, '1', NULL, '0', 'CGDD-TNB-296-2025_OV-3PH-APEC3-WC-OV', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1692, '出库', '销售', 'XSCK-INV_2102-11', 'XSCK-INV_2102-11', '2026-05-26 00:00:00', '2026-05-26 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 374000.000000, '记账', '销售', 'Stock Status:3PH APEC3 WC(OV)-12,749;客户发票:INV_2102', '', '', '', '', 100.000000, 0.000000, 374000.000000, 0.000000, 0.000000, 0.000000, 374000.000000, 0.000000, '1', NULL, '0', 'XSDD-42260524-3PH-APEC3-WC-OV', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1693, '出库', '销售', 'XSCK-3PH-APEC3-WC-OV-12', 'XSCK-3PH-APEC3-WC-OV-12', '2026-05-26 00:00:00', '2026-05-26 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 374000.000000, '记账', '销售', 'Stock Status:3PH APEC3 WC(OV)-12,749;客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 374000.000000, 0.000000, 0.000000, 0.000000, 374000.000000, 374000.000000, '1', NULL, '0', 'XSDD-42260524-3PH-APEC3-WC-OV', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1694, '出库', '销售', 'XSCK-3PH-APEC3-WC-OV-13', 'XSCK-3PH-APEC3-WC-OV-13', '2026-05-26 00:00:00', '2026-05-26 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 374000.000000, '记账', '销售', 'Stock Status:3PH APEC3 WC(OV)-12,749;客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 374000.000000, 0.000000, 0.000000, 0.000000, 374000.000000, 374000.000000, '1', NULL, '0', 'XSDD-42260524-3PH-APEC3-WC-OV', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1695, '出库', '销售', 'XSCK-INV_2107-14', 'XSCK-INV_2107-14', '2026-06-06 00:00:00', '2026-06-06 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 134640.000000, '记账', '销售', 'Stock Status:3PH APEC3 WC(OV)-12,749;客户发票:INV_2107', '', '', '', '', 100.000000, 0.000000, 134640.000000, 0.000000, 0.000000, 0.000000, 134640.000000, 0.000000, '1', NULL, '0', 'XSDD-42260525-3PH-APEC3-WC-OV', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1696, '入库', '采购', 'CGRK-260423-01-15', 'CGRK-260423-01-15', '2026-05-08 00:00:00', '2026-05-08 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 1066800.000000, '记账', '采购', 'Stock Status:3PH APEC3 WC(OV)-12,749;供应商发票:260423-01', '', '', '', '', 100.000000, 0.000000, 1066800.000000, 0.000000, 0.000000, 0.000000, 1066800.000000, 1066800.000000, '1', NULL, '0', 'CGDD-TNB-296-2025_OV-3PH-APEC3-WC-OV', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1697, '出库', '销售', 'XSCK-3PH-APEC3-WC-OV-15', 'XSCK-3PH-APEC3-WC-OV-15', '2026-06-06 00:00:00', '2026-06-06 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 239360.000000, '记账', '销售', 'Stock Status:3PH APEC3 WC(OV)-12,749;客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 239360.000000, 0.000000, 0.000000, 0.000000, 239360.000000, 239360.000000, '1', NULL, '0', 'XSDD-42260525-3PH-APEC3-WC-OV', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1698, '出库', '销售', 'XSCK-3PH-APEC3-WC-OV-16', 'XSCK-3PH-APEC3-WC-OV-16', '2026-06-06 00:00:00', '2026-06-06 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 374000.000000, '记账', '销售', 'Stock Status:3PH APEC3 WC(OV)-12,749;客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 374000.000000, 0.000000, 0.000000, 0.000000, 374000.000000, 374000.000000, '1', NULL, '0', 'XSDD-42260525-3PH-APEC3-WC-OV', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1699, '出库', '销售', 'XSCK-3PH-APEC3-WC-OV-17', 'XSCK-3PH-APEC3-WC-OV-17', '2026-06-06 00:00:00', '2026-06-06 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 374000.000000, '记账', '销售', 'Stock Status:3PH APEC3 WC(OV)-12,749;客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 374000.000000, 0.000000, 0.000000, 0.000000, 374000.000000, 374000.000000, '1', NULL, '0', 'XSDD-42260525-3PH-APEC3-WC-OV', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1700, '出库', '销售', 'XSCK-INV_2108-18', 'XSCK-INV_2108-18', '2026-06-16 00:00:00', '2026-06-16 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 269280.000000, '记账', '销售', 'Stock Status:3PH APEC3 WC(OV)-12,749;客户发票:INV_2108', '', '', '', '', 100.000000, 0.000000, 269280.000000, 0.000000, 0.000000, 0.000000, 269280.000000, 0.000000, '1', NULL, '0', 'XSDD-42260527-3PH-APEC3-WC-OV', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1701, '入库', '采购', 'CGRK-260415-02-19', 'CGRK-260415-02-19', '2026-05-11 00:00:00', '2026-05-11 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 640080.000000, '记账', '采购', 'Stock Status:3PH APEC3 WC(OV)-12,749;供应商发票:260415-02', '', '', '', '', 100.000000, 0.000000, 640080.000000, 0.000000, 0.000000, 0.000000, 640080.000000, 640080.000000, '1', NULL, '0', 'CGDD-TNB-296-2025_OV-3PH-APEC3-WC-OV', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1702, '出库', '销售', 'XSCK-3PH-APEC3-WC-OV-19', 'XSCK-3PH-APEC3-WC-OV-19', '2026-06-16 00:00:00', '2026-06-16 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 104720.000000, '记账', '销售', 'Stock Status:3PH APEC3 WC(OV)-12,749;客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 104720.000000, 0.000000, 0.000000, 0.000000, 104720.000000, 104720.000000, '1', NULL, '0', 'XSDD-42260527-3PH-APEC3-WC-OV', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1703, '出库', '销售', 'XSCK-3PH-APEC3-WC-OV-20', 'XSCK-3PH-APEC3-WC-OV-20', '2026-06-16 00:00:00', '2026-06-16 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 374000.000000, '记账', '销售', 'Stock Status:3PH APEC3 WC(OV)-12,749;客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 374000.000000, 0.000000, 0.000000, 0.000000, 374000.000000, 374000.000000, '1', NULL, '0', 'XSDD-42260527-3PH-APEC3-WC-OV', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1704, '出库', '销售', 'XSCK-3PH-APEC3-WC-OV-21', 'XSCK-3PH-APEC3-WC-OV-21', '2026-06-16 00:00:00', '2026-06-16 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 275264.000000, '记账', '销售', 'Stock Status:3PH APEC3 WC(OV)-12,749;客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 275264.000000, 0.000000, 0.000000, 0.000000, 275264.000000, 275264.000000, '1', NULL, '0', 'XSDD-42260527-3PH-APEC3-WC-OV', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1705, '入库', '采购', 'CGRK-260423-02-22', 'CGRK-260423-02-22', '2026-05-13 00:00:00', '2026-05-13 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 160020.000000, '记账', '采购', 'Stock Status:3PH APEC3 WC(OV)-12,749;供应商发票:260423-02', '', '', '', '', 100.000000, 0.000000, 160020.000000, 0.000000, 0.000000, 0.000000, 160020.000000, 160020.000000, '1', NULL, '0', 'CGDD-TNB-296-2025_OV-3PH-APEC3-WC-OV', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1706, '出库', '销售', 'XSCK-3PH-APEC3-WC-OV-22', 'XSCK-3PH-APEC3-WC-OV-22', '2026-06-16 00:00:00', '2026-06-16 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 98736.000000, '记账', '销售', 'Stock Status:3PH APEC3 WC(OV)-12,749;客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 98736.000000, 0.000000, 0.000000, 0.000000, 98736.000000, 98736.000000, '1', NULL, '0', 'XSDD-42260527-3PH-APEC3-WC-OV', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1707, '出库', '销售', 'XSCK-INV_2109-23', 'XSCK-INV_2109-23', '2026-06-16 00:00:00', '2026-06-16 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 89760.000000, '记账', '销售', 'Stock Status:3PH APEC3 WC(OV)-12,749;客户发票:INV_2109', '', '', '', '', 100.000000, 0.000000, 89760.000000, 0.000000, 0.000000, 0.000000, 89760.000000, 89760.000000, '1', NULL, '0', 'XSDD-42260527-3PH-APEC3-WC-OV', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1708, '入库', '采购', 'CGRK-3PH-APEC3-WC-OV-24', 'CGRK-3PH-APEC3-WC-OV-24', '2026-01-25 00:00:00', '2026-01-25 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 1066800.000000, '记账', '采购', 'Stock Status:3PH APEC3 WC(OV)-12,749;供应商发票:未填写', '', '', '', '', 100.000000, 0.000000, 1066800.000000, 0.000000, 0.000000, 0.000000, 1066800.000000, 1066800.000000, '1', NULL, '0', 'CGDD-TNB-296-2025_OV-3PH-APEC3-WC-OV', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1709, '出库', '销售', 'XSCK-3PH-APEC3-WC-OV-24', 'XSCK-3PH-APEC3-WC-OV-24', '2026-06-16 00:00:00', '2026-06-16 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 190366.000000, '记账', '销售', 'Stock Status:3PH APEC3 WC(OV)-12,749;客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 190366.000000, 0.000000, 0.000000, 0.000000, 190366.000000, 190366.000000, '1', NULL, '0', 'XSDD-42260527-3PH-APEC3-WC-OV', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1710, '出库', '销售', 'XSCK-INV_2110-25', 'XSCK-INV_2110-25', '2026-06-23 00:00:00', '2026-06-23 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 374000.000000, '记账', '销售', 'Stock Status:3PH APEC3 WC(OV)-12,749;客户发票:INV_2110', '', '', '', '', 100.000000, 0.000000, 374000.000000, 0.000000, 0.000000, 0.000000, 374000.000000, 0.000000, '1', NULL, '0', 'XSDD-42260529-3PH-APEC3-WC-OV', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1711, '出库', '销售', 'XSCK-3PH-APEC3-WC-OV-26', 'XSCK-3PH-APEC3-WC-OV-26', '2026-06-23 00:00:00', '2026-06-23 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 374000.000000, '记账', '销售', 'Stock Status:3PH APEC3 WC(OV)-12,749;客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 374000.000000, 0.000000, 0.000000, 0.000000, 374000.000000, 374000.000000, '1', NULL, '0', 'XSDD-42260529-3PH-APEC3-WC-OV', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1712, '出库', '销售', 'XSCK-3PH-APEC3-WC-OV-27', 'XSCK-3PH-APEC3-WC-OV-27', '2026-06-23 00:00:00', '2026-06-23 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 318274.000000, '记账', '销售', 'Stock Status:3PH APEC3 WC(OV)-12,749;客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 318274.000000, 0.000000, 0.000000, 0.000000, 318274.000000, 318274.000000, '1', NULL, '0', 'XSDD-42260529-3PH-APEC3-WC-OV', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1713, '入库', '采购', 'CGRK-260427-02-28', 'CGRK-260427-02-28', '2026-05-14 00:00:00', '2026-05-14 00:00:00', 89, 63, NULL, 0.000000, 0.000000, 47307.500000, '记账', '采购', 'Stock Status:3PH APEC3 WC(OV)-12,749;供应商发票:260427-02', '', '', '', '', 100.000000, 0.000000, 47307.500000, 0.000000, 0.000000, 0.000000, 47307.500000, 47307.500000, '1', NULL, '0', 'CGDD-TNB-296-2025_OV-3PH-APEC3-WC-OV', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1714, '出库', '销售', 'XSCK-3PH-APEC3-WC-OV-28', 'XSCK-3PH-APEC3-WC-OV-28', '2026-06-23 00:00:00', '2026-06-23 00:00:00', 90, 63, NULL, 0.000000, 0.000000, 55726.000000, '记账', '销售', 'Stock Status:3PH APEC3 WC(OV)-12,749;客户发票:未填写', '', '', '', '', 100.000000, 0.000000, 55726.000000, 0.000000, 0.000000, 0.000000, 55726.000000, 55726.000000, '1', NULL, '0', 'XSDD-42260529-3PH-APEC3-WC-OV', '', 63, '0'); +INSERT INTO `tbl_depot_head` VALUES (1715, '其它', '请购单', 'QGD00000001719', 'QGD00000001719', '2026-09-18 11:44:02', '2026-09-18 11:43:47', NULL, 63, NULL, NULL, NULL, NULL, '现付', NULL, NULL, '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0.000000, NULL, NULL, '2', '0', '0', NULL, NULL, NULL, '0'); +INSERT INTO `tbl_depot_head` VALUES (1716, '其它', '采购订单', 'CGDD00000001720', 'CGDD00000001720', '2026-09-18 11:44:19', '2026-09-18 11:44:12', 89, 63, 17, 0.000000, NULL, -0.700000, '现付', NULL, NULL, '', NULL, '', '', 0.000000, 0.000000, 0.700000, NULL, NULL, 0.000000, NULL, NULL, '2', '0', '0', NULL, 'QGD00000001719', NULL, '0'); +INSERT INTO `tbl_depot_head` VALUES (1717, '入库', '采购', 'CGRK00000001721', 'CGRK00000001721', '2026-09-18 11:44:36', '2026-09-18 11:44:34', 89, 63, 17, 0.000000, NULL, -0.700000, '现付', NULL, NULL, '', NULL, '', '', 0.000000, 0.000000, 0.700000, 0.000000, NULL, 0.000000, 0.700000, 0.700000, '1', '0', '0', 'CGDD00000001720', NULL, NULL, '0'); +INSERT INTO `tbl_depot_head` VALUES (1718, '其它', '销售订单', 'XSDD00000001724', 'XSDD00000001724', '2026-09-18 14:10:36', '2026-09-18 14:01:46', 90, 63, 17, 0.000000, NULL, 340000000.000000, '现付', NULL, NULL, '', '', '', '', 0.000000, 0.000000, 340000000.000000, NULL, NULL, 0.000000, NULL, NULL, '0', '0', '0', NULL, NULL, NULL, '0'); +INSERT INTO `tbl_depot_head` VALUES (1719, '其它', '销售订单', 'XSDD00000001726', 'XSDD00000001726', '2026-09-18 12:01:23', '2026-09-18 15:58:02', 90, 63, 17, 0.000000, NULL, 735000.000000, '现付', NULL, NULL, '', '', '', '', 0.000000, 0.000000, 808500.000000, NULL, NULL, 0.000000, NULL, NULL, '2', '0', '0', NULL, NULL, NULL, '0'); +INSERT INTO `tbl_depot_head` VALUES (1720, '出库', '销售', 'XSCK00000001728', 'XSCK00000001728', '2026-09-18 12:03:04', '2026-09-18 16:03:01', 90, 63, 17, 0.000000, NULL, 735000.000000, '现付', NULL, NULL, '', '', '', '', 0.000000, 0.000000, 808500.000000, 0.000000, NULL, 0.000000, 808500.000000, 808500.000000, '1', '0', '0', 'XSDD00000001726', NULL, NULL, '0'); +INSERT INTO `tbl_depot_head` VALUES (1721, '入库', '总部入库', 'SM2609180001', 'SM2609180001', '2026-09-18 12:06:42', '2026-09-18 16:06:03', 89, 63, NULL, 0.000000, NULL, -595000.000000, '现付', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 595000.000000, 0.000000, 0.000000, NULL, 595000.000000, 595000.000000, '1', '0', '0', NULL, NULL, NULL, '0'); +INSERT INTO `tbl_depot_head` VALUES (1722, '其它', '请购单', 'QGD00000001738', 'QGD00000001738', '2026-09-18 12:28:04', '2026-09-18 16:27:47', NULL, 63, NULL, NULL, NULL, NULL, '现付', NULL, NULL, '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0.000000, NULL, NULL, '2', '0', '0', NULL, NULL, NULL, '0'); +INSERT INTO `tbl_depot_head` VALUES (1723, '其它', '采购订单', 'CGDD00000001739', 'CGDD00000001739', '2026-09-18 12:28:33', '2026-09-18 16:28:25', 89, 63, 17, 0.000000, NULL, -100000.000000, '现付', NULL, NULL, '', NULL, '', '', 0.000000, 0.000000, 100000.000000, NULL, NULL, 0.000000, NULL, NULL, '2', '0', '0', NULL, 'QGD00000001738', NULL, '0'); +INSERT INTO `tbl_depot_head` VALUES (1724, '入库', '采购', 'CGRK00000001740', 'CGRK00000001740', '2026-09-18 12:29:02', '2026-09-18 16:29:02', 89, 63, 17, 0.000000, NULL, -100000.000000, '现付', NULL, NULL, '', NULL, '', '', 0.000000, 0.000000, 100000.000000, 0.000000, NULL, 0.000000, 100000.000000, 100000.000000, '1', '0', '0', 'CGDD00000001739', NULL, NULL, '0'); +INSERT INTO `tbl_depot_head` VALUES (1725, '出库', '生产领料', NULL, 'LL20260924134027104', '2026-09-24 13:40:27', '2026-09-24 13:40:27', NULL, 63, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '1', NULL, '0', NULL, NULL, NULL, '0'); + +-- ---------------------------- +-- Table structure for tbl_depot_item +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_depot_item`; +CREATE TABLE `tbl_depot_item` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `header_id` bigint NOT NULL COMMENT '表头Id', + `material_id` bigint NOT NULL COMMENT '商品Id', + `material_extend_id` bigint NULL DEFAULT NULL COMMENT '商品扩展id', + `material_unit` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '商品单位', + `sku` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '多属性', + `oper_number` decimal(24, 6) NULL DEFAULT NULL COMMENT '数量', + `basic_number` decimal(24, 6) NULL DEFAULT NULL COMMENT '基础数量,如kg、瓶', + `unit_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '单价', + `purchase_unit_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '采购单价', + `tax_unit_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '含税单价', + `all_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '金额', + `remark` varchar(500) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '备注', + `depot_id` bigint NULL DEFAULT NULL COMMENT '仓库ID', + `another_depot_id` bigint NULL DEFAULT NULL COMMENT '调拨时,对方仓库Id', + `tax_rate` decimal(24, 6) NULL DEFAULT NULL COMMENT '税率', + `tax_money` decimal(24, 6) NULL DEFAULT NULL COMMENT '税额', + `tax_last_money` decimal(24, 6) NULL DEFAULT NULL COMMENT '价税合计', + `material_type` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '商品类型', + `sn_list` varchar(2000) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '序列号列表', + `batch_number` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '批号', + `expiration_date` datetime(0) NULL DEFAULT NULL COMMENT '有效日期', + `link_id` bigint NULL DEFAULT NULL COMMENT '关联明细id', + `tenant_id` bigint NULL DEFAULT NULL COMMENT '租户id', + `delete_flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '删除标记,0未删除,1删除', + PRIMARY KEY (`id`) USING BTREE, + INDEX `FK2A819F475D61CCF7`(`material_id`) USING BTREE, + INDEX `FK2A819F474BB6190E`(`header_id`) USING BTREE, + INDEX `FK2A819F479485B3F5`(`depot_id`) USING BTREE, + INDEX `FK2A819F47729F5392`(`another_depot_id`) USING BTREE, + INDEX `material_extend_id`(`material_extend_id`) USING BTREE, + INDEX `tenant_id`(`tenant_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1531 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '单据子表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_depot_item +-- ---------------------------- +INSERT INTO `tbl_depot_item` VALUES (1076, 1272, 698, 118, '件', NULL, 50.000000, 50.000000, 324.000000, 324.000000, 324.000000, 16200.000000, '来源单据:SH2503070002', 25, NULL, 13.000025, 0.000000, 16200.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1077, 1273, 693, 113, '件', NULL, 1990.000000, 1990.000000, 797.040000, 797.040000, 797.040000, 1586109.600000, '来源单据:SH2503210018', 25, NULL, 13.000000, 0.000000, 1586109.600000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1078, 1274, 699, 119, '件', NULL, 1990.000000, 1990.000000, 0.100000, 0.100000, 0.100000, 199.000000, '来源单据:SH2503260007', 25, NULL, 12.997558, 0.000000, 199.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1079, 1275, 692, 112, '件', NULL, 500.000000, 500.000000, 550.800000, 550.800000, 550.800000, 275400.000000, '来源单据:SH2503280020', 25, NULL, 0.000000, 0.000000, 275400.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1080, 1276, 688, 108, '件', NULL, 400.000000, 400.000000, 613.980000, 613.980000, 613.980000, 245592.000000, '来源单据:SH2503280021', 25, NULL, 0.000000, 0.000000, 245592.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1081, 1277, 699, 119, '件', NULL, 8290.000000, 8290.000000, 0.100000, 0.100000, 0.100000, 829.000000, '来源单据:SH2504010002', 25, NULL, 0.000000, 0.000000, 829.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1082, 1278, 686, 106, '件', NULL, 8290.000000, 8290.000000, 403.380000, 403.380000, 403.380000, 3344020.200000, '来源单据:SH2503310004', 25, NULL, 0.000000, 0.000000, 3344020.200000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1083, 1279, 697, 117, '件', NULL, 500.000000, 500.000000, 129.600000, 129.600000, 129.600000, 64800.000000, '来源单据:SH2504010004', 25, NULL, 0.000000, 0.000000, 64800.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1084, 1280, 687, 107, '件', NULL, 3024.000000, 3024.000000, 481.950000, 481.950000, 481.950000, 1457416.800000, '来源单据:SH2505090009', 25, NULL, 0.000000, 0.000000, 1457416.800000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1085, 1281, 687, 107, '件', NULL, 336.000000, 336.000000, 481.950000, 481.950000, 481.950000, 161935.200000, '来源单据:SH2505140012', 25, NULL, 0.000000, 0.000000, 161935.200000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1086, 1282, 687, 107, '件', NULL, 1640.000000, 1640.000000, 481.950000, 481.950000, 481.950000, 790398.000000, '来源单据:SH2505140013', 25, NULL, 0.000000, 0.000000, 790398.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1087, 1283, 687, 107, '件', NULL, 504.000000, 504.000000, 481.950000, 481.950000, 481.950000, 242902.800000, '来源单据:SH2505220012', 25, NULL, 0.000000, 0.000000, 242902.800000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1088, 1284, 687, 107, '件', NULL, 3696.000000, 3696.000000, 481.950000, 481.950000, 481.950000, 1781287.200000, '来源单据:SH2505210003', 25, NULL, 0.000000, 0.000000, 1781287.200000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1089, 1285, 694, 114, '件', NULL, 170.000000, 170.000000, 334.692000, 334.692000, 334.692000, 56897.640000, '来源单据:SH2505230003', 25, NULL, 0.000000, 0.000000, 56897.640000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1090, 1286, 695, 115, '件', NULL, 100.000000, 100.000000, 1003.752000, 1003.752000, 1003.752000, 100375.200000, '来源单据:SH2505230002', 25, NULL, 0.000000, 0.000000, 100375.200000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1091, 1287, 687, 107, '件', NULL, 336.000000, 336.000000, 481.950000, 481.950000, 481.950000, 161935.200000, '来源单据:SH2505270016', 25, NULL, 0.000000, 0.000000, 161935.200000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1092, 1288, 687, 107, '件', NULL, 464.000000, 464.000000, 481.950000, 481.950000, 481.950000, 223624.800000, '来源单据:SH2505280004', 25, NULL, 0.000000, 0.000000, 223624.800000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1093, 1289, 687, 107, '件', NULL, 3464.000000, 3464.000000, 481.950000, 481.950000, 481.950000, 1669474.800000, '来源单据:SH2506120013', 25, NULL, 0.000000, 0.000000, 1669474.800000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1094, 1290, 702, 122, '件', NULL, 1000.000000, 1000.000000, 24.300000, 24.300000, 24.300000, 24300.000000, '来源单据:SH2506190019', 25, NULL, 0.000000, 0.000000, 24300.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1095, 1291, 687, 107, '件', NULL, 504.000000, 504.000000, 481.950000, 481.950000, 481.950000, 242902.800000, '来源单据:SH2506200018', 25, NULL, 0.000000, 0.000000, 242902.800000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1096, 1292, 694, 114, '件', NULL, 30.000000, 30.000000, 334.692000, 334.692000, 334.692000, 10040.760000, '来源单据:SH2506230010', 25, NULL, 0.000000, 0.000000, 10040.760000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1097, 1293, 687, 107, '件', NULL, 504.000000, 504.000000, 481.950000, 481.950000, 481.950000, 242902.800000, '来源单据:SH2506240005', 25, NULL, 0.000000, 0.000000, 242902.800000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1098, 1294, 687, 107, '件', NULL, 3360.000000, 3360.000000, 481.950000, 481.950000, 481.950000, 1619352.000000, '来源单据:SH2506240004', 25, NULL, 0.000000, 0.000000, 1619352.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1099, 1295, 687, 107, '件', NULL, 5.000000, 5.000000, 481.950000, 481.950000, 481.950000, 2409.750000, '来源单据:SH2507010002', 25, NULL, 0.000000, 0.000000, 2409.750000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1100, 1296, 687, 107, '件', NULL, 363.000000, 363.000000, 481.950000, 481.950000, 481.950000, 174947.850000, '来源单据:SH2507010002', 25, NULL, 0.000000, 0.000000, 174947.850000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1101, 1297, 700, 120, '件', NULL, 50.000000, 50.000000, 132.840000, 132.840000, 132.840000, 6642.000000, '来源单据:SH2507160005', 25, NULL, 0.000000, 0.000000, 6642.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1102, 1298, 693, 113, '件', NULL, 4620.000000, 4620.000000, 797.040000, 797.040000, 797.040000, 3682324.800000, '来源单据:SH2508130002', 25, NULL, 0.000000, 0.000000, 3682324.800000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1103, 1299, 699, 119, '件', NULL, 4620.000000, 4620.000000, 0.100000, 0.100000, 0.100000, 462.000000, '来源单据:SH2508130003', 25, NULL, 0.000000, 0.000000, 462.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1104, 1300, 699, 119, '件', NULL, 5270.000000, 5270.000000, 0.100000, 0.100000, 0.100000, 527.000000, '来源单据:SH2508140009', 25, NULL, 0.000000, 0.000000, 527.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1105, 1301, 693, 113, '件', NULL, 5270.000000, 5270.000000, 797.040000, 797.040000, 797.040000, 4200400.800000, '来源单据:SH2508140008', 25, NULL, 0.000000, 0.000000, 4200400.800000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1106, 1302, 693, 113, '件', NULL, 110.000000, 110.000000, 797.040000, 797.040000, 797.040000, 87674.400000, '来源单据:SH2508200016', 25, NULL, 0.000000, 0.000000, 87674.400000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1107, 1303, 690, 110, '件', NULL, 2100.000000, 2100.000000, 518.400000, 518.400000, 518.400000, 1088640.000000, '来源单据:SH2508200015', 25, NULL, 0.000000, 0.000000, 1088640.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1108, 1304, 699, 119, '件', NULL, 110.000000, 110.000000, 0.100000, 0.100000, 0.100000, 11.000000, '来源单据:SH2508200018', 25, NULL, 0.000000, 0.000000, 11.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1109, 1305, 690, 110, '件', NULL, 2900.000000, 2900.000000, 518.400000, 518.400000, 518.400000, 1503360.000000, '来源单据:SH2509050002', 25, NULL, 0.000000, 0.000000, 1503360.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1110, 1306, 699, 119, '件', NULL, 10000.000000, 10000.000000, 0.100000, 0.100000, 0.100000, 1000.000000, '来源单据:SH2509250002', 25, NULL, 0.000000, 0.000000, 1000.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1111, 1307, 686, 106, '件', NULL, 10000.000000, 10000.000000, 403.380000, 403.380000, 403.380000, 4033800.000000, '来源单据:SH2509250001', 25, NULL, 0.000000, 0.000000, 4033800.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1112, 1308, 701, 121, '件', NULL, 100.000000, 100.000000, 142.560000, 142.560000, 142.560000, 14256.000000, '来源单据:SH2510170019', 25, NULL, 0.000000, 0.000000, 14256.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1113, 1309, 689, 109, '件', NULL, 120.000000, 120.000000, 690.120000, 690.120000, 690.120000, 82814.400000, '来源单据:SH2510170020', 25, NULL, 0.000000, 0.000000, 82814.400000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1114, 1310, 686, 106, '件', NULL, 516.000000, 516.000000, 403.380000, 403.380000, 403.380000, 208144.080000, '来源单据:SH2510290008', 25, NULL, 0.000000, 0.000000, 208144.080000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1115, 1311, 686, 106, '件', NULL, 9484.000000, 9484.000000, 403.380000, 403.380000, 403.380000, 3825655.920000, '来源单据:SH2510290008', 25, NULL, 0.000000, 0.000000, 3825655.920000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1116, 1312, 699, 119, '件', NULL, 9990.000000, 9990.000000, 0.100000, 0.100000, 0.100000, 999.000000, '来源单据:SH2510290009', 25, NULL, 0.000000, 0.000000, 999.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1117, 1313, 699, 119, '件', NULL, 10.000000, 10.000000, 0.100000, 0.100000, 0.100000, 1.000000, '来源单据:SH2510290009', 25, NULL, 0.000000, 0.000000, 1.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1118, 1314, 690, 110, '件', NULL, 2970.000000, 2970.000000, 518.400000, 518.400000, 518.400000, 1539648.000000, '来源单据:SH2511140012', 25, NULL, 0.000000, 0.000000, 1539648.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1119, 1315, 686, 106, '件', NULL, 4200.000000, 4200.000000, 403.380000, 403.380000, 403.380000, 1694196.000000, '来源单据:SH2511210018', 25, NULL, 0.000000, 0.000000, 1694196.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1120, 1316, 699, 119, '件', NULL, 4200.000000, 4200.000000, 0.100000, 0.100000, 0.100000, 420.000000, '来源单据:SH2511210019', 25, NULL, 0.000000, 0.000000, 420.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1121, 1317, 693, 113, '件', NULL, 5040.000000, 5040.000000, 797.040000, 797.040000, 797.040000, 4017081.600000, '来源单据:SH2511240013', 25, NULL, 0.000000, 0.000000, 4017081.600000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1122, 1318, 699, 119, '件', NULL, 5040.000000, 5040.000000, 0.100000, 0.100000, 0.100000, 504.000000, '来源单据:SH2511240014', 25, NULL, 0.000000, 0.000000, 504.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1123, 1319, 690, 110, '件', NULL, 30.000000, 30.000000, 518.400000, 518.400000, 518.400000, 15552.000000, '来源单据:SH2511250009', 25, NULL, 0.000000, 0.000000, 15552.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1124, 1320, 693, 113, '件', NULL, 4960.000000, 4960.000000, 797.040000, 797.040000, 797.040000, 3953318.400000, '来源单据:SH2511280023', 25, NULL, 0.000000, 0.000000, 3953318.400000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1125, 1321, 699, 119, '件', NULL, 5040.000000, 5040.000000, 0.100000, 0.100000, 0.100000, 504.000000, '来源单据:SH2512030005', 25, NULL, 0.000000, 0.000000, 504.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1126, 1321, 699, 119, '件', NULL, 4960.000000, 4960.000000, 0.100000, 0.100000, 0.100000, 496.000000, '来源单据:SH2512030005', 25, NULL, 0.000000, 0.000000, 496.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1127, 1322, 686, 106, '件', NULL, 10000.000000, 10000.000000, 403.380000, 403.380000, 403.380000, 4033800.000000, '来源单据:SH2512030004', 25, NULL, 0.000000, 0.000000, 4033800.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1128, 1323, 693, 113, '件', NULL, 5040.000000, 5040.000000, 797.040000, 797.040000, 797.040000, 4017081.600000, '来源单据:SH2512090010', 25, NULL, 0.000000, 0.000000, 4017081.600000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1129, 1324, 699, 119, '件', NULL, 5040.000000, 5040.000000, 0.100000, 0.100000, 0.100000, 504.000000, '来源单据:SH2512090009', 25, NULL, 0.000000, 0.000000, 504.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1130, 1325, 693, 113, '件', NULL, 2730.000000, 2730.000000, 797.040000, 797.040000, 797.040000, 2175919.200000, '来源单据:SH2512120024', 25, NULL, 0.000000, 0.000000, 2175919.200000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1131, 1326, 690, 110, '件', NULL, 1580.000000, 1580.000000, 518.400000, 518.400000, 518.400000, 819072.000000, '来源单据:SH2512120023', 25, NULL, 0.000000, 0.000000, 819072.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1132, 1327, 699, 119, '件', NULL, 2730.000000, 2730.000000, 0.100000, 0.100000, 0.100000, 273.000000, '来源单据:SH2512160015', 25, NULL, 0.000000, 0.000000, 273.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1133, 1328, 699, 119, '件', NULL, 4960.000000, 4960.000000, 0.100000, 0.100000, 0.100000, 496.000000, '来源单据:SH2512160014', 25, NULL, 0.000000, 0.000000, 496.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1134, 1329, 699, 119, '件', NULL, 4713.000000, 4713.000000, 0.100000, 0.100000, 0.100000, 471.300000, '来源单据:SH2512290007', 25, NULL, 0.000000, 0.000000, 471.300000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1135, 1330, 693, 113, '件', NULL, 4713.000000, 4713.000000, 797.040000, 797.040000, 797.040000, 3756449.520000, '来源单据:SH2512290006', 25, NULL, 0.000000, 0.000000, 3756449.520000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1136, 1331, 690, 110, '件', NULL, 320.000000, 320.000000, 518.400000, 518.400000, 518.400000, 165888.000000, '来源单据:SH2512290008', 25, NULL, 0.000000, 0.000000, 165888.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1137, 1332, 690, 110, '件', NULL, 1000.000000, 1000.000000, 693.360000, 693.360000, 693.360000, 693360.000000, '来源单据:SH2601040003', 25, NULL, 0.000000, 0.000000, 693360.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1138, 1333, 690, 110, '件', NULL, 100.000000, 100.000000, 518.400000, 518.400000, 518.400000, 51840.000000, '来源单据:SH2512290008', 25, NULL, 0.000000, 0.000000, 51840.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1139, 1334, 690, 110, '件', NULL, 2000.000000, 2000.000000, 518.400000, 518.400000, 518.400000, 1036800.000000, '来源单据:SH2601200021', 25, NULL, 0.000000, 0.000000, 1036800.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1140, 1335, 690, 110, '件', NULL, 70.000000, 70.000000, 518.400000, 518.400000, 518.400000, 36288.000000, '来源单据:SH2601200021', 25, NULL, 0.000000, 0.000000, 36288.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1141, 1336, 684, 104, '件', NULL, 3240.000000, 3240.000000, 80.190000, 80.190000, 80.190000, 259815.600000, '来源单据:SH2604100007', 25, NULL, 0.000000, 0.000000, 259815.600000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1142, 1337, 684, 104, '件', NULL, 3170.000000, 3170.000000, 80.190000, 80.190000, 80.190000, 254202.300000, '来源单据:SH2604100007', 25, NULL, 0.000000, 0.000000, 254202.300000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1143, 1338, 684, 104, '件', NULL, 3850.000000, 3850.000000, 80.190000, 80.190000, 80.190000, 308731.500000, '来源单据:SH2604100007', 25, NULL, 0.000000, 0.000000, 308731.500000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1144, 1339, 684, 104, '件', NULL, 540.000000, 540.000000, 80.190000, 80.190000, 80.190000, 43302.600000, '来源单据:SH2604100007', 25, NULL, 0.000000, 0.000000, 43302.600000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1145, 1340, 684, 104, '件', NULL, 540.000000, 540.000000, 80.190000, 80.190000, 80.190000, 43302.600000, '来源单据:SH2604150004', 25, NULL, 0.000000, 0.000000, 43302.600000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1146, 1341, 684, 104, '件', NULL, 1080.000000, 1080.000000, 80.190000, 80.190000, 80.190000, 86605.200000, '来源单据:SH2604150004', 25, NULL, 0.000000, 0.000000, 86605.200000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1147, 1342, 684, 104, '件', NULL, 3780.000000, 3780.000000, 80.190000, 80.190000, 80.190000, 303118.200000, '来源单据:SH2604150004', 25, NULL, 0.000000, 0.000000, 303118.200000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1148, 1343, 687, 107, '件', NULL, 1680.000000, 1680.000000, 481.950000, 481.950000, 481.950000, 809676.000000, '来源单据:SH2604150003', 25, NULL, 0.000000, 0.000000, 809676.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1149, 1344, 687, 107, '件', NULL, 3696.000000, 3696.000000, 481.950000, 481.950000, 481.950000, 1781287.200000, '来源单据:SH2604150002', 25, NULL, 0.000000, 0.000000, 1781287.200000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1150, 1345, 684, 104, '件', NULL, 2700.000000, 2700.000000, 80.190000, 80.190000, 80.190000, 216513.000000, '来源单据:SH2604160008', 25, NULL, 0.000000, 0.000000, 216513.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1151, 1346, 684, 104, '件', NULL, 4320.000000, 4320.000000, 80.190000, 80.190000, 80.190000, 346420.800000, '来源单据:SH2604160008', 25, NULL, 0.000000, 0.000000, 346420.800000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1152, 1347, 684, 104, '件', NULL, 4860.000000, 4860.000000, 80.190000, 80.190000, 80.190000, 389723.400000, '来源单据:SH2604160008', 25, NULL, 0.000000, 0.000000, 389723.400000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1153, 1348, 684, 104, '件', NULL, 12420.000000, 12420.000000, 80.190000, 80.190000, 80.190000, 995959.800000, '来源单据:SH2604210010', 25, NULL, 0.000000, 0.000000, 995959.800000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1154, 1349, 687, 107, '件', NULL, 3360.000000, 3360.000000, 481.950000, 481.950000, 481.950000, 1619352.000000, '来源单据:SH2604220010', 25, NULL, 0.000000, 0.000000, 1619352.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1155, 1350, 687, 107, '件', NULL, 3528.000000, 3528.000000, 481.950000, 481.950000, 481.950000, 1700319.600000, '来源单据:SH2604220011', 25, NULL, 0.000000, 0.000000, 1700319.600000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1156, 1351, 684, 104, '件', NULL, 540.000000, 540.000000, 80.190000, 80.190000, 80.190000, 43302.600000, '来源单据:SH2604210010', 25, NULL, 0.000000, 0.000000, 43302.600000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1157, 1352, 687, 107, '件', NULL, 168.000000, 168.000000, 481.950000, 481.950000, 481.950000, 80967.600000, '来源单据:SH2604220011', 25, NULL, 0.000000, 0.000000, 80967.600000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1158, 1353, 687, 107, '件', NULL, 168.000000, 168.000000, 481.950000, 481.950000, 481.950000, 80967.600000, '来源单据:SH2604220011', 25, NULL, 0.000000, 0.000000, 80967.600000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1159, 1354, 684, 104, '件', NULL, 8960.000000, 8960.000000, 80.190000, 80.190000, 80.190000, 718502.400000, '来源单据:SH2604220009', 25, NULL, 0.000000, 0.000000, 718502.400000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1160, 1355, 684, 104, '件', NULL, 7570.000000, 7570.000000, 80.190000, 80.190000, 80.190000, 607038.300000, '来源单据:SH2604240012', 25, NULL, 0.000000, 0.000000, 607038.300000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1161, 1356, 684, 104, '件', NULL, 4310.000000, 4310.000000, 80.190000, 80.190000, 80.190000, 345618.900000, '来源单据:SH2604240012', 25, NULL, 0.000000, 0.000000, 345618.900000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1162, 1357, 687, 107, '件', NULL, 149.000000, 149.000000, 481.950000, 481.950000, 481.950000, 71810.550000, '来源单据:SH2604240013', 25, NULL, 0.000000, 0.000000, 71810.550000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1163, 1358, 684, 104, '件', NULL, 4860.000000, 4860.000000, 80.190000, 80.190000, 80.190000, 389723.400000, '来源单据:SH2604300001', 25, NULL, 0.000000, 0.000000, 389723.400000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1164, 1359, 684, 104, '件', NULL, 7020.000000, 7020.000000, 80.190000, 80.190000, 80.190000, 562933.800000, '来源单据:SH2604300001', 25, NULL, 0.000000, 0.000000, 562933.800000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1165, 1360, 684, 104, '件', NULL, 7020.000000, 7020.000000, 80.190000, 80.190000, 80.190000, 562933.800000, '来源单据:SH2605080017', 25, NULL, 0.000000, 0.000000, 562933.800000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1166, 1361, 684, 104, '件', NULL, 4860.000000, 4860.000000, 80.190000, 80.190000, 80.190000, 389723.400000, '来源单据:SH2605080017', 25, NULL, 0.000000, 0.000000, 389723.400000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1167, 1362, 684, 104, '件', NULL, 5400.000000, 5400.000000, 80.190000, 80.190000, 80.190000, 433026.000000, '来源单据:SH2605140004', 25, NULL, 0.000000, 0.000000, 433026.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1168, 1363, 687, 107, '件', NULL, 840.000000, 840.000000, 481.950000, 481.950000, 481.950000, 404838.000000, '来源单据:SH2605180007', 25, NULL, 0.000000, 0.000000, 404838.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1169, 1364, 687, 107, '件', NULL, 168.000000, 168.000000, 481.950000, 481.950000, 481.950000, 80967.600000, '来源单据:SH2605180007', 25, NULL, 0.000000, 0.000000, 80967.600000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1170, 1365, 684, 104, '件', NULL, 540.000000, 540.000000, 80.190000, 80.190000, 80.190000, 43302.600000, '来源单据:SH2605180005', 25, NULL, 0.000000, 0.000000, 43302.600000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1171, 1366, 684, 104, '件', NULL, 12400.000000, 12400.000000, 80.190000, 80.190000, 80.190000, 994356.000000, '来源单据:SH2605180006', 25, NULL, 0.000000, 0.000000, 994356.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1172, 1367, 684, 104, '件', NULL, 8420.000000, 8420.000000, 80.190000, 80.190000, 80.190000, 675199.800000, '来源单据:SH2605180005', 25, NULL, 0.000000, 0.000000, 675199.800000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1173, 1368, 687, 107, '件', NULL, 1848.000000, 1848.000000, 481.950000, 481.950000, 481.950000, 890643.600000, '来源单据:SH2605190018', 25, NULL, 0.000000, 0.000000, 890643.600000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1174, 1369, 687, 107, '件', NULL, 1008.000000, 1008.000000, 481.950000, 481.950000, 481.950000, 485805.600000, '来源单据:SH2605190018', 25, NULL, 0.000000, 0.000000, 485805.600000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1175, 1370, 687, 107, '件', NULL, 504.000000, 504.000000, 481.950000, 481.950000, 481.950000, 242902.800000, '来源单据:SH2605190018', 25, NULL, 0.000000, 0.000000, 242902.800000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1176, 1371, 687, 107, '件', NULL, 3360.000000, 3360.000000, 481.950000, 481.950000, 481.950000, 1619352.000000, '来源单据:SH2605280028', 25, NULL, 0.000000, 0.000000, 1619352.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1177, 1372, 687, 107, '件', NULL, 168.000000, 168.000000, 481.950000, 481.950000, 481.950000, 80967.600000, '来源单据:SH2606040013', 25, NULL, 0.000000, 0.000000, 80967.600000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1178, 1373, 687, 107, '件', NULL, 2432.000000, 2432.000000, 481.950000, 481.950000, 481.950000, 1172102.400000, '来源单据:SH2606040013', 25, NULL, 0.000000, 0.000000, 1172102.400000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1179, 1374, 687, 107, '件', NULL, 44.000000, 44.000000, 481.950000, 481.950000, 481.950000, 21205.800000, '来源单据:SH2606080003', 25, NULL, 0.000000, 0.000000, 21205.800000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1180, 1375, 683, 103, '件', NULL, 4320.000000, 4320.000000, 85.860000, 85.860000, 85.860000, 370915.200000, '来源单据:SH2606170024', 25, NULL, 0.000000, 0.000000, 370915.200000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1181, 1376, 683, 103, '件', NULL, 5940.000000, 5940.000000, 85.860000, 85.860000, 85.860000, 510008.400000, '来源单据:SH2606170024', 25, NULL, 0.000000, 0.000000, 510008.400000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1182, 1377, 683, 103, '件', NULL, 3780.000000, 3780.000000, 85.860000, 85.860000, 85.860000, 324550.800000, '来源单据:SH2606230001', 25, NULL, 0.000000, 0.000000, 324550.800000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1183, 1378, 683, 103, '件', NULL, 1080.000000, 1080.000000, 85.860000, 85.860000, 85.860000, 92728.800000, '来源单据:SH2606230001', 25, NULL, 0.000000, 0.000000, 92728.800000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1184, 1379, 683, 103, '件', NULL, 2215.000000, 2215.000000, 85.860000, 85.860000, 85.860000, 190179.900000, '来源单据:SH2606230001', 25, NULL, 0.000000, 0.000000, 190179.900000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1185, 1380, 683, 103, '件', NULL, 2160.000000, 2160.000000, 85.860000, 85.860000, 85.860000, 185457.600000, '来源单据:SH2606230001', 25, NULL, 0.000000, 0.000000, 185457.600000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1186, 1381, 683, 103, '件', NULL, 505.000000, 505.000000, 85.860000, 85.860000, 85.860000, 43359.300000, '来源单据:SH2606230001', 25, NULL, 0.000000, 0.000000, 43359.300000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1187, 1382, 696, 116, '件', NULL, 1224.000000, 1224.000000, 0.100000, 0.100000, 0.100000, 122.400000, '来源单据:SH2606290012', 25, NULL, 0.000000, 0.000000, 122.400000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1188, 1383, 685, 105, '件', NULL, 1260.000000, 1260.000000, 218.700000, 218.700000, 218.700000, 275562.000000, '来源单据:SH2606290005', 25, NULL, 0.000000, 0.000000, 275562.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1189, 1384, 696, 116, '件', NULL, 8160.000000, 8160.000000, 0.100000, 0.100000, 0.100000, 816.000000, '来源单据:SH2606290006', 25, NULL, 0.000000, 0.000000, 816.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1190, 1385, 685, 105, '件', NULL, 6720.000000, 6720.000000, 218.700000, 218.700000, 218.700000, 1469664.000000, '来源单据:SH2606290005', 25, NULL, 0.000000, 0.000000, 1469664.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1191, 1386, 691, 111, '件', NULL, 1050.000000, 1050.000000, 486.000000, 486.000000, 486.000000, 510300.000000, '来源单据:SH2606290011', 25, NULL, 0.000000, 0.000000, 510300.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1192, 1387, 696, 116, '件', NULL, 2652.000000, 2652.000000, 0.100000, 0.100000, 0.100000, 265.200000, '来源单据:SH2607020014', 25, NULL, 0.000000, 0.000000, 265.200000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1193, 1388, 696, 116, '件', NULL, 5100.000000, 5100.000000, 0.100000, 0.100000, 0.100000, 510.000000, '来源单据:SH2607020012', 25, NULL, 0.000000, 0.000000, 510.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1194, 1389, 685, 105, '件', NULL, 2100.000000, 2100.000000, 218.700000, 218.700000, 218.700000, 459270.000000, '来源单据:SH2607020011', 25, NULL, 0.000000, 0.000000, 459270.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1195, 1390, 685, 105, '件', NULL, 2940.000000, 2940.000000, 218.700000, 218.700000, 218.700000, 642978.000000, '来源单据:SH2607020011', 25, NULL, 0.000000, 0.000000, 642978.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1196, 1391, 691, 111, '件', NULL, 2520.000000, 2520.000000, 486.000000, 486.000000, 486.000000, 1224720.000000, '来源单据:SH2607020013', 25, NULL, 0.000000, 0.000000, 1224720.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1197, 1392, 691, 111, '件', NULL, 840.000000, 840.000000, 486.000000, 486.000000, 486.000000, 408240.000000, '来源单据:SH2607130003', 25, NULL, 0.000000, 0.000000, 408240.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1198, 1393, 685, 105, '件', NULL, 3780.000000, 3780.000000, 218.700000, 218.700000, 218.700000, 826686.000000, '来源单据:SH2607130001', 25, NULL, 0.000000, 0.000000, 826686.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1199, 1394, 685, 105, '件', NULL, 2940.000000, 2940.000000, 218.700000, 218.700000, 218.700000, 642978.000000, '来源单据:SH2607130001', 25, NULL, 0.000000, 0.000000, 642978.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1200, 1395, 696, 116, '件', NULL, 4088.000000, 4088.000000, 0.100000, 0.100000, 0.100000, 408.800000, '来源单据:SH2607130002', 25, NULL, 0.000000, 0.000000, 408.800000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1201, 1396, 696, 116, '件', NULL, 2652.000000, 2652.000000, 0.100000, 0.100000, 0.100000, 265.200000, '来源单据:SH2607130002', 25, NULL, 0.000000, 0.000000, 265.200000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1202, 1397, 696, 116, '件', NULL, 816.000000, 816.000000, 0.100000, 0.100000, 0.100000, 81.600000, '来源单据:SH2607130004', 25, NULL, 0.000000, 0.000000, 81.600000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1203, 1398, 696, 116, '件', NULL, 816.000000, 816.000000, 0.100000, 0.100000, 0.100000, 81.600000, '来源单据:SH2607130004', 25, NULL, 0.000000, 0.000000, 81.600000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1204, 1399, 685, 105, '件', NULL, 260.000000, 260.000000, 218.700000, 218.700000, 218.700000, 56862.000000, '来源单据:SH2607130001', 25, NULL, 0.000000, 0.000000, 56862.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1205, 1400, 691, 111, '件', NULL, 630.000000, 630.000000, 486.000000, 486.000000, 486.000000, 306180.000000, '来源单据:SH2607130003', 25, NULL, 0.000000, 0.000000, 306180.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1206, 1401, 687, 107, '件', NULL, 3360.000000, 3360.000000, 481.950000, 481.950000, 481.950000, 1619352.000000, '来源单据:SH2607140004', 25, NULL, 0.000000, 0.000000, 1619352.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1207, 1402, 691, 111, '件', NULL, 1680.000000, 1680.000000, 486.000000, 486.000000, 486.000000, 816480.000000, '来源单据:SH2607140008', 25, NULL, 0.000000, 0.000000, 816480.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1208, 1403, 691, 111, '件', NULL, 2520.000000, 2520.000000, 486.000000, 486.000000, 486.000000, 1224720.000000, '来源单据:SH2607140008', 25, NULL, 0.000000, 0.000000, 1224720.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1209, 1404, 696, 116, '件', NULL, 5100.000000, 5100.000000, 0.100000, 0.100000, 0.100000, 510.000000, '来源单据:SH2607140009', 25, NULL, 0.000000, 0.000000, 510.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1210, 1405, 691, 111, '件', NULL, 840.000000, 840.000000, 486.000000, 486.000000, 486.000000, 408240.000000, '来源单据:SH2607140008', 25, NULL, 0.000000, 0.000000, 408240.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1211, 1406, 687, 107, '件', NULL, 3024.000000, 3024.000000, 481.950000, 481.950000, 481.950000, 1457416.800000, '来源单据:SH2607160019', 25, NULL, 0.000000, 0.000000, 1457416.800000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1212, 1407, 696, 116, '件', NULL, 3852.000000, 3852.000000, 0.100000, 0.100000, 0.100000, 385.200000, '来源单据:SH2607160021', 25, NULL, 0.000000, 0.000000, 385.200000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1213, 1408, 687, 107, '件', NULL, 336.000000, 336.000000, 481.950000, 481.950000, 481.950000, 161935.200000, '来源单据:SH2607160019', 25, NULL, 0.000000, 0.000000, 161935.200000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1214, 1409, 691, 111, '件', NULL, 1050.000000, 1050.000000, 486.000000, 486.000000, 486.000000, 510300.000000, '来源单据:SH2607160020', 25, NULL, 0.000000, 0.000000, 510300.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1215, 1410, 691, 111, '件', NULL, 210.000000, 210.000000, 486.000000, 486.000000, 486.000000, 102060.000000, '来源单据:SH2607160020', 25, NULL, 0.000000, 0.000000, 102060.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1216, 1411, 691, 111, '件', NULL, 210.000000, 210.000000, 486.000000, 486.000000, 486.000000, 102060.000000, '来源单据:SH2607160020', 25, NULL, 0.000000, 0.000000, 102060.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1217, 1412, 691, 111, '件', NULL, 2100.000000, 2100.000000, 486.000000, 486.000000, 486.000000, 1020600.000000, '来源单据:SH2607160020', 25, NULL, 0.000000, 0.000000, 1020600.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1218, 1413, 691, 111, '件', NULL, 210.000000, 210.000000, 486.000000, 486.000000, 486.000000, 102060.000000, '来源单据:SH2607160020', 25, NULL, 0.000000, 0.000000, 102060.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1219, 1414, 691, 111, '件', NULL, 600.000000, 600.000000, 486.000000, 486.000000, 486.000000, 291600.000000, '来源单据:SH2607160020', 25, NULL, 0.000000, 0.000000, 291600.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1220, 1415, 685, 105, '件', NULL, 1260.000000, 1260.000000, 218.700000, 218.700000, 218.700000, 275562.000000, '来源单据:SH2607220001', 25, NULL, 0.000000, 0.000000, 275562.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1221, 1416, 696, 116, '件', NULL, 10200.000000, 10200.000000, 0.100000, 0.100000, 0.100000, 1020.000000, '来源单据:SH2607220002', 25, NULL, 0.000000, 0.000000, 1020.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1222, 1417, 685, 105, '件', NULL, 5880.000000, 5880.000000, 218.700000, 218.700000, 218.700000, 1285956.000000, '来源单据:SH2607220001', 25, NULL, 0.000000, 0.000000, 1285956.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1223, 1418, 685, 105, '件', NULL, 2520.000000, 2520.000000, 218.700000, 218.700000, 218.700000, 551124.000000, '来源单据:SH2607220001', 25, NULL, 0.000000, 0.000000, 551124.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1224, 1419, 685, 105, '件', NULL, 420.000000, 420.000000, 218.700000, 218.700000, 218.700000, 91854.000000, '来源单据:SH2607220001', 25, NULL, 0.000000, 0.000000, 91854.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1225, 1420, 696, 116, '件', NULL, 8160.000000, 8160.000000, 0.100000, 0.100000, 0.100000, 816.000000, '来源单据:SH2608060003', 25, NULL, 0.000000, 0.000000, 816.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1226, 1421, 685, 105, '件', NULL, 420.000000, 420.000000, 218.700000, 218.700000, 218.700000, 91854.000000, '来源单据:SH2608060001', 25, NULL, 0.000000, 0.000000, 91854.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1227, 1422, 685, 105, '件', NULL, 9500.000000, 9500.000000, 218.700000, 218.700000, 218.700000, 2077650.000000, '来源单据:SH2608060001', 25, NULL, 0.000000, 0.000000, 2077650.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1228, 1423, 696, 116, '件', NULL, 1836.000000, 1836.000000, 0.100000, 0.100000, 0.100000, 183.600000, '来源单据:SH2608060003', 25, NULL, 0.000000, 0.000000, 183.600000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1229, 1424, 703, 123, '件', NULL, 112400.000000, 112400.000000, 59.500000, 59.500000, 59.500000, 6687800.000000, '', 26, NULL, 0.000000, 0.000000, 6687800.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1230, 1425, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1231, 1426, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1232, 1427, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1233, 1428, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1234, 1429, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1235, 1430, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1236, 1431, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1237, 1432, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1238, 1433, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1239, 1434, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1240, 1435, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1241, 1436, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1242, 1437, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1243, 1438, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1244, 1439, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1245, 1440, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1246, 1441, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1247, 1442, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1248, 1443, 703, 123, '件', NULL, 15000.000000, 15000.000000, 73.500000, 73.500000, 80.850000, 1102500.000000, '', 26, NULL, 10.000000, 110250.000000, 1212750.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1249, 1444, 703, 123, '件', NULL, 15000.000000, 15000.000000, 73.500000, 73.500000, 80.850000, 1102500.000000, '', 26, NULL, 10.000000, 110250.000000, 1212750.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1250, 1445, 703, 123, '件', NULL, 9000.000000, 9000.000000, 73.500000, 73.500000, 80.850000, 661500.000000, '', 26, NULL, 10.000000, 66150.000000, 727650.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1251, 1446, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1252, 1447, 703, 123, '件', NULL, 6000.000000, 6000.000000, 73.500000, 73.500000, 80.850000, 441000.000000, '', 26, NULL, 10.000000, 44100.000000, 485100.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1253, 1448, 703, 123, '件', NULL, 6000.000000, 6000.000000, 73.500000, 73.500000, 80.850000, 441000.000000, '', 26, NULL, 10.000000, 44100.000000, 485100.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1254, 1449, 703, 123, '件', NULL, 6000.000000, 6000.000000, 73.500000, 73.500000, 80.850000, 441000.000000, '', 26, NULL, 10.000000, 44100.000000, 485100.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1255, 1450, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1256, 1451, 703, 123, '件', NULL, 1400.000000, 1400.000000, 73.500000, 73.500000, 80.850000, 102900.000000, '', 26, NULL, 10.000000, 10290.000000, 113190.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1257, 1452, 703, 123, '件', NULL, 10000.000000, 10000.000000, 59.500000, 59.500000, 59.500000, 595000.000000, '', 26, NULL, 0.000000, 0.000000, 595000.000000, NULL, NULL, NULL, NULL, 1229, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1258, 1453, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1259, 1454, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1260, 1455, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1261, 1456, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1262, 1457, 703, 123, '件', NULL, 10000.000000, 10000.000000, 59.500000, 59.500000, 59.500000, 595000.000000, '', 26, NULL, 0.000000, 0.000000, 595000.000000, NULL, NULL, NULL, NULL, 1229, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1263, 1458, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1264, 1459, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1265, 1460, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1266, 1461, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1267, 1462, 703, 123, '件', NULL, 10000.000000, 10000.000000, 59.500000, 59.500000, 59.500000, 595000.000000, '', 26, NULL, 0.000000, 0.000000, 595000.000000, NULL, NULL, NULL, NULL, 1229, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1268, 1463, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1269, 1464, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1270, 1465, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1271, 1466, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1272, 1467, 703, 123, '件', NULL, 2000.000000, 2000.000000, 73.500000, 73.500000, 80.850000, 147000.000000, '', 26, NULL, 10.000000, 14700.000000, 161700.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1273, 1468, 703, 123, '件', NULL, 10000.000000, 10000.000000, 59.500000, 59.500000, 59.500000, 595000.000000, '', 26, NULL, 0.000000, 0.000000, 595000.000000, NULL, NULL, NULL, NULL, 1229, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1274, 1469, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1275, 1470, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1276, 1471, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1277, 1472, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1278, 1473, 703, 123, '件', NULL, 2000.000000, 2000.000000, 73.500000, 73.500000, 80.850000, 147000.000000, '', 26, NULL, 10.000000, 14700.000000, 161700.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1279, 1474, 703, 123, '件', NULL, 10000.000000, 10000.000000, 59.500000, 59.500000, 59.500000, 595000.000000, '', 26, NULL, 0.000000, 0.000000, 595000.000000, NULL, NULL, NULL, NULL, 1229, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1280, 1475, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1281, 1476, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1282, 1477, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1283, 1478, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1284, 1479, 703, 123, '件', NULL, 10000.000000, 10000.000000, 59.500000, 59.500000, 59.500000, 595000.000000, '', 26, NULL, 0.000000, 0.000000, 595000.000000, NULL, NULL, NULL, NULL, 1229, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1285, 1480, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1286, 1481, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1287, 1482, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1288, 1483, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1289, 1484, 703, 123, '件', NULL, 10000.000000, 10000.000000, 59.500000, 59.500000, 59.500000, 595000.000000, '', 26, NULL, 0.000000, 0.000000, 595000.000000, NULL, NULL, NULL, NULL, 1229, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1290, 1485, 703, 123, '件', NULL, 2000.000000, 2000.000000, 73.500000, 73.500000, 80.850000, 147000.000000, '', 26, NULL, 10.000000, 14700.000000, 161700.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1291, 1486, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1292, 1487, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1293, 1488, 703, 123, '件', NULL, 2000.000000, 2000.000000, 73.500000, 73.500000, 80.850000, 147000.000000, '', 26, NULL, 10.000000, 14700.000000, 161700.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1294, 1489, 703, 123, '件', NULL, 10000.000000, 10000.000000, 59.500000, 59.500000, 59.500000, 595000.000000, '', 26, NULL, 0.000000, 0.000000, 595000.000000, NULL, NULL, NULL, NULL, 1229, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1295, 1490, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1296, 1491, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1297, 1492, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1298, 1493, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1299, 1494, 703, 123, '件', NULL, 10000.000000, 10000.000000, 59.500000, 59.500000, 59.500000, 595000.000000, '', 26, NULL, 0.000000, 0.000000, 595000.000000, NULL, NULL, NULL, NULL, 1229, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1300, 1495, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1301, 1496, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1302, 1497, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1303, 1498, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1304, 1499, 703, 123, '件', NULL, 10000.000000, 10000.000000, 59.500000, 59.500000, 59.500000, 595000.000000, '', 26, NULL, 0.000000, 0.000000, 595000.000000, NULL, NULL, NULL, NULL, 1229, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1305, 1500, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1306, 1501, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1307, 1502, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1308, 1503, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1309, 1504, 703, 123, '件', NULL, 10260.000000, 10260.000000, 59.500000, 59.500000, 59.500000, 610470.000000, '', 26, NULL, 0.000000, 0.000000, 610470.000000, NULL, NULL, NULL, NULL, 1229, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1310, 1505, 703, 123, '件', NULL, 2000.000000, 2000.000000, 73.500000, 73.500000, 80.850000, 147000.000000, '', 26, NULL, 10.000000, 14700.000000, 161700.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1311, 1506, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1312, 1507, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1313, 1508, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1314, 1509, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1315, 1510, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1316, 1511, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1317, 1512, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1318, 1513, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1319, 1514, 703, 123, '件', NULL, 260.000000, 260.000000, 73.500000, 73.500000, 80.850000, 19110.000000, '', 26, NULL, 10.000000, 1911.000000, 21021.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1320, 1515, 703, 123, '件', NULL, 2140.000000, 2140.000000, 59.500000, 59.500000, 59.500000, 127330.000000, '', 26, NULL, 0.000000, 0.000000, 127330.000000, NULL, NULL, NULL, NULL, 1229, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1321, 1516, 703, 123, '件', NULL, 740.000000, 740.000000, 73.500000, 73.500000, 80.850000, 54390.000000, '', 26, NULL, 10.000000, 5439.000000, 59829.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1322, 1517, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1323, 1518, 703, 123, '件', NULL, 400.000000, 400.000000, 73.500000, 73.500000, 80.850000, 29400.000000, '', 26, NULL, 10.000000, 2940.000000, 32340.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1324, 1519, 704, 124, '件', NULL, 18200.000000, 18200.000000, 317.500000, 317.500000, 317.500000, 5778500.000000, '', 26, NULL, 0.000000, 0.000000, 5778500.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1325, 1520, 704, 124, '件', NULL, 1000.000000, 1000.000000, 340.000000, 340.000000, 374.000000, 340000.000000, '', 26, NULL, 10.000000, 34000.000000, 374000.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1326, 1521, 704, 124, '件', NULL, 3000.000000, 3000.000000, 340.000000, 340.000000, 374.000000, 1020000.000000, '', 26, NULL, 10.000000, 102000.000000, 1122000.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1327, 1522, 704, 124, '件', NULL, 3000.000000, 3000.000000, 340.000000, 340.000000, 374.000000, 1020000.000000, '', 26, NULL, 10.000000, 102000.000000, 1122000.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1328, 1523, 704, 124, '件', NULL, 3000.000000, 3000.000000, 340.000000, 340.000000, 374.000000, 1020000.000000, '', 26, NULL, 10.000000, 102000.000000, 1122000.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1329, 1524, 704, 124, '件', NULL, 3000.000000, 3000.000000, 340.000000, 340.000000, 374.000000, 1020000.000000, '', 26, NULL, 10.000000, 102000.000000, 1122000.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1330, 1525, 704, 124, '件', NULL, 3000.000000, 3000.000000, 340.000000, 340.000000, 374.000000, 1020000.000000, '', 26, NULL, 10.000000, 102000.000000, 1122000.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1331, 1526, 704, 124, '件', NULL, 2200.000000, 2200.000000, 340.000000, 340.000000, 374.000000, 748000.000000, '', 26, NULL, 10.000000, 74800.000000, 822800.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1332, 1527, 704, 124, '件', NULL, 3024.000000, 3024.000000, 317.500000, 317.500000, 317.500000, 960120.000000, '', 26, NULL, 0.000000, 0.000000, 960120.000000, NULL, NULL, NULL, NULL, 1324, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1333, 1528, 704, 124, '件', NULL, 1000.000000, 1000.000000, 340.000000, 340.000000, 374.000000, 340000.000000, '', 26, NULL, 10.000000, 34000.000000, 374000.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1334, 1529, 704, 124, '件', NULL, 1000.000000, 1000.000000, 340.000000, 340.000000, 374.000000, 340000.000000, '', 26, NULL, 10.000000, 34000.000000, 374000.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1335, 1530, 704, 124, '件', NULL, 1000.000000, 1000.000000, 340.000000, 340.000000, 374.000000, 340000.000000, '', 26, NULL, 10.000000, 34000.000000, 374000.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1336, 1531, 704, 124, '件', NULL, 24.000000, 24.000000, 340.000000, 340.000000, 374.000000, 8160.000000, '', 26, NULL, 10.000000, 816.000000, 8976.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1337, 1532, 704, 124, '件', NULL, 336.000000, 336.000000, 317.500000, 317.500000, 317.500000, 106680.000000, '', 26, NULL, 0.000000, 0.000000, 106680.000000, NULL, NULL, NULL, NULL, 1324, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1338, 1533, 704, 124, '件', NULL, 336.000000, 336.000000, 340.000000, 340.000000, 374.000000, 114240.000000, '', 26, NULL, 10.000000, 11424.000000, 125664.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1339, 1534, 704, 124, '件', NULL, 1640.000000, 1640.000000, 317.500000, 317.500000, 317.500000, 520700.000000, '', 26, NULL, 0.000000, 0.000000, 520700.000000, NULL, NULL, NULL, NULL, 1324, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1340, 1535, 704, 124, '件', NULL, 640.000000, 640.000000, 340.000000, 340.000000, 374.000000, 217600.000000, '', 26, NULL, 10.000000, 21760.000000, 239360.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1341, 1536, 704, 124, '件', NULL, 1000.000000, 1000.000000, 340.000000, 340.000000, 374.000000, 340000.000000, '', 26, NULL, 10.000000, 34000.000000, 374000.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1342, 1537, 704, 124, '件', NULL, 3696.000000, 3696.000000, 317.500000, 317.500000, 317.500000, 1173480.000000, '', 26, NULL, 0.000000, 0.000000, 1173480.000000, NULL, NULL, NULL, NULL, 1324, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1343, 1538, 704, 124, '件', NULL, 1000.000000, 1000.000000, 340.000000, 340.000000, 374.000000, 340000.000000, '', 26, NULL, 10.000000, 34000.000000, 374000.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1344, 1539, 704, 124, '件', NULL, 1000.000000, 1000.000000, 340.000000, 340.000000, 374.000000, 340000.000000, '', 26, NULL, 10.000000, 34000.000000, 374000.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1345, 1540, 704, 124, '件', NULL, 1696.000000, 1696.000000, 340.000000, 340.000000, 374.000000, 576640.000000, '', 26, NULL, 10.000000, 57664.000000, 634304.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1346, 1541, 704, 124, '件', NULL, 504.000000, 504.000000, 317.500000, 317.500000, 317.500000, 160020.000000, '', 26, NULL, 0.000000, 0.000000, 160020.000000, NULL, NULL, NULL, NULL, 1324, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1347, 1542, 704, 124, '件', NULL, 504.000000, 504.000000, 340.000000, 340.000000, 374.000000, 171360.000000, '', 26, NULL, 10.000000, 17136.000000, 188496.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1348, 1543, 704, 124, '件', NULL, 336.000000, 336.000000, 317.500000, 317.500000, 317.500000, 106680.000000, '', 26, NULL, 0.000000, 0.000000, 106680.000000, NULL, NULL, NULL, NULL, 1324, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1349, 1544, 704, 124, '件', NULL, 336.000000, 336.000000, 340.000000, 340.000000, 374.000000, 114240.000000, '', 26, NULL, 10.000000, 11424.000000, 125664.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1350, 1545, 704, 124, '件', NULL, 464.000000, 464.000000, 317.500000, 317.500000, 317.500000, 147320.000000, '', 26, NULL, 0.000000, 0.000000, 147320.000000, NULL, NULL, NULL, NULL, 1324, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1351, 1546, 704, 124, '件', NULL, 464.000000, 464.000000, 340.000000, 340.000000, 374.000000, 157760.000000, '', 26, NULL, 10.000000, 15776.000000, 173536.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1352, 1547, 704, 124, '件', NULL, 3464.000000, 3464.000000, 317.500000, 317.500000, 317.500000, 1099820.000000, '', 26, NULL, 0.000000, 0.000000, 1099820.000000, NULL, NULL, NULL, NULL, 1324, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1353, 1548, 704, 124, '件', NULL, 1000.000000, 1000.000000, 340.000000, 340.000000, 374.000000, 340000.000000, '', 26, NULL, 10.000000, 34000.000000, 374000.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1354, 1549, 704, 124, '件', NULL, 1000.000000, 1000.000000, 340.000000, 340.000000, 374.000000, 340000.000000, '', 26, NULL, 10.000000, 34000.000000, 374000.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1355, 1550, 704, 124, '件', NULL, 1000.000000, 1000.000000, 340.000000, 340.000000, 374.000000, 340000.000000, '', 26, NULL, 10.000000, 34000.000000, 374000.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1356, 1551, 704, 124, '件', NULL, 464.000000, 464.000000, 340.000000, 340.000000, 374.000000, 157760.000000, '', 26, NULL, 10.000000, 15776.000000, 173536.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1357, 1552, 704, 124, '件', NULL, 504.000000, 504.000000, 317.500000, 317.500000, 317.500000, 160020.000000, '', 26, NULL, 0.000000, 0.000000, 160020.000000, NULL, NULL, NULL, NULL, 1324, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1358, 1553, 704, 124, '件', NULL, 504.000000, 504.000000, 340.000000, 340.000000, 374.000000, 171360.000000, '', 26, NULL, 10.000000, 17136.000000, 188496.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1359, 1554, 704, 124, '件', NULL, 3360.000000, 3360.000000, 317.500000, 317.500000, 317.500000, 1066800.000000, '', 26, NULL, 0.000000, 0.000000, 1066800.000000, NULL, NULL, NULL, NULL, 1324, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1360, 1555, 704, 124, '件', NULL, 32.000000, 32.000000, 340.000000, 340.000000, 374.000000, 10880.000000, '', 26, NULL, 10.000000, 1088.000000, 11968.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1361, 1556, 704, 124, '件', NULL, 2000.000000, 2000.000000, 340.000000, 340.000000, 374.000000, 680000.000000, '', 26, NULL, 10.000000, 68000.000000, 748000.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1362, 1557, 704, 124, '件', NULL, 1000.000000, 1000.000000, 340.000000, 340.000000, 374.000000, 340000.000000, '', 26, NULL, 10.000000, 34000.000000, 374000.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1363, 1558, 704, 124, '件', NULL, 328.000000, 328.000000, 340.000000, 340.000000, 374.000000, 111520.000000, '', 26, NULL, 10.000000, 11152.000000, 122672.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1364, 1559, 704, 124, '件', NULL, 504.000000, 504.000000, 317.500000, 317.500000, 317.500000, 160020.000000, '', 26, NULL, 0.000000, 0.000000, 160020.000000, NULL, NULL, NULL, NULL, 1324, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1365, 1560, 704, 124, '件', NULL, 504.000000, 504.000000, 340.000000, 340.000000, 374.000000, 171360.000000, '', 26, NULL, 10.000000, 17136.000000, 188496.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1366, 1561, 704, 124, '件', NULL, 368.000000, 368.000000, 317.500000, 317.500000, 317.500000, 116840.000000, '', 26, NULL, 0.000000, 0.000000, 116840.000000, NULL, NULL, NULL, NULL, 1324, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1367, 1562, 704, 124, '件', NULL, 168.000000, 168.000000, 340.000000, 340.000000, 374.000000, 57120.000000, '', 26, NULL, 10.000000, 5712.000000, 62832.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1368, 1563, 704, 124, '件', NULL, 200.000000, 200.000000, 340.000000, 340.000000, 374.000000, 68000.000000, '', 26, NULL, 10.000000, 6800.000000, 74800.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1369, 1564, 703, 123, '件', NULL, 112400.000000, 112400.000000, 59.500000, 59.500000, 59.500000, 6687800.000000, '', 26, NULL, 0.000000, 0.000000, 6687800.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1370, 1565, 703, 123, '件', NULL, 4000.000000, 4000.000000, 73.500000, 73.500000, 80.850000, 294000.000000, '', 26, NULL, 10.000000, 29400.000000, 323400.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1371, 1566, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1372, 1567, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1373, 1568, 703, 123, '件', NULL, 4000.000000, 4000.000000, 73.500000, 73.500000, 80.850000, 294000.000000, '', 26, NULL, 10.000000, 29400.000000, 323400.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1374, 1569, 703, 123, '件', NULL, 4000.000000, 4000.000000, 73.500000, 73.500000, 80.850000, 294000.000000, '', 26, NULL, 10.000000, 29400.000000, 323400.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1375, 1570, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1376, 1571, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1377, 1572, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1378, 1573, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1379, 1574, 703, 123, '件', NULL, 4000.000000, 4000.000000, 73.500000, 73.500000, 80.850000, 294000.000000, '', 26, NULL, 10.000000, 29400.000000, 323400.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1380, 1575, 703, 123, '件', NULL, 4000.000000, 4000.000000, 73.500000, 73.500000, 80.850000, 294000.000000, '', 26, NULL, 10.000000, 29400.000000, 323400.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1381, 1576, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1382, 1577, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1383, 1578, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1384, 1579, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1385, 1580, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1386, 1581, 703, 123, '件', NULL, 4000.000000, 4000.000000, 73.500000, 73.500000, 80.850000, 294000.000000, '', 26, NULL, 10.000000, 29400.000000, 323400.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1387, 1582, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1388, 1583, 703, 123, '件', NULL, 2000.000000, 2000.000000, 73.500000, 73.500000, 80.850000, 147000.000000, '', 26, NULL, 10.000000, 14700.000000, 161700.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1389, 1584, 703, 123, '件', NULL, 4000.000000, 4000.000000, 73.500000, 73.500000, 80.850000, 294000.000000, '', 26, NULL, 10.000000, 29400.000000, 323400.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1390, 1585, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1391, 1586, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1392, 1587, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1393, 1588, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1394, 1589, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1395, 1590, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1396, 1591, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1397, 1592, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1398, 1593, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1399, 1594, 703, 123, '件', NULL, 4000.000000, 4000.000000, 73.500000, 73.500000, 80.850000, 294000.000000, '', 26, NULL, 10.000000, 29400.000000, 323400.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1400, 1595, 703, 123, '件', NULL, 4000.000000, 4000.000000, 73.500000, 73.500000, 80.850000, 294000.000000, '', 26, NULL, 10.000000, 29400.000000, 323400.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1401, 1596, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1402, 1597, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1403, 1598, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1404, 1599, 703, 123, '件', NULL, 3000.000000, 3000.000000, 73.500000, 73.500000, 80.850000, 220500.000000, '', 26, NULL, 10.000000, 22050.000000, 242550.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1405, 1600, 703, 123, '件', NULL, 2400.000000, 2400.000000, 73.500000, 73.500000, 80.850000, 176400.000000, '', 26, NULL, 10.000000, 17640.000000, 194040.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1406, 1601, 703, 123, '件', NULL, 10800.000000, 10800.000000, 59.500000, 59.500000, 59.500000, 642600.000000, '', 26, NULL, 0.000000, 0.000000, 642600.000000, NULL, NULL, NULL, NULL, 1369, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1407, 1602, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1408, 1603, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1409, 1604, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1410, 1605, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1411, 1606, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1412, 1607, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1413, 1608, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1414, 1609, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1415, 1610, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1416, 1611, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1417, 1612, 703, 123, '件', NULL, 800.000000, 800.000000, 73.500000, 73.500000, 80.850000, 58800.000000, '', 26, NULL, 10.000000, 5880.000000, 64680.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1418, 1613, 703, 123, '件', NULL, 5400.000000, 5400.000000, 59.500000, 59.500000, 59.500000, 321300.000000, '', 26, NULL, 0.000000, 0.000000, 321300.000000, NULL, NULL, NULL, NULL, 1369, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1419, 1614, 703, 123, '件', NULL, 200.000000, 200.000000, 73.500000, 73.500000, 80.850000, 14700.000000, '', 26, NULL, 10.000000, 1470.000000, 16170.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1420, 1615, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1421, 1616, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1422, 1617, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1423, 1618, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1424, 1619, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1425, 1620, 703, 123, '件', NULL, 200.000000, 200.000000, 73.500000, 73.500000, 80.850000, 14700.000000, '', 26, NULL, 10.000000, 1470.000000, 16170.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1426, 1621, 703, 123, '件', NULL, 11880.000000, 11880.000000, 59.500000, 59.500000, 59.500000, 706860.000000, '', 26, NULL, 0.000000, 0.000000, 706860.000000, NULL, NULL, NULL, NULL, 1369, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1427, 1622, 703, 123, '件', NULL, 800.000000, 800.000000, 73.500000, 73.500000, 80.850000, 58800.000000, '', 26, NULL, 10.000000, 5880.000000, 64680.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1428, 1623, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1429, 1624, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1430, 1625, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1431, 1626, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1432, 1627, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1433, 1628, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1434, 1629, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1435, 1630, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1436, 1631, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1437, 1632, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1438, 1633, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1439, 1634, 703, 123, '件', NULL, 80.000000, 80.000000, 73.500000, 73.500000, 80.850000, 5880.000000, '', 26, NULL, 10.000000, 588.000000, 6468.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1440, 1635, 703, 123, '件', NULL, 12960.000000, 12960.000000, 59.500000, 59.500000, 59.500000, 771120.000000, '', 26, NULL, 0.000000, 0.000000, 771120.000000, NULL, NULL, NULL, NULL, 1369, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1441, 1636, 703, 123, '件', NULL, 920.000000, 920.000000, 73.500000, 73.500000, 80.850000, 67620.000000, '', 26, NULL, 10.000000, 6762.000000, 74382.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1442, 1637, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1443, 1638, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1444, 1639, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1445, 1640, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1446, 1641, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1447, 1642, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1448, 1643, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1449, 1644, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1450, 1645, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1451, 1646, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1452, 1647, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1453, 1648, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1454, 1649, 703, 123, '件', NULL, 40.000000, 40.000000, 73.500000, 73.500000, 80.850000, 2940.000000, '', 26, NULL, 10.000000, 294.000000, 3234.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1455, 1650, 703, 123, '件', NULL, 8960.000000, 8960.000000, 59.500000, 59.500000, 59.500000, 533120.000000, '', 26, NULL, 0.000000, 0.000000, 533120.000000, NULL, NULL, NULL, NULL, 1369, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1456, 1651, 703, 123, '件', NULL, 960.000000, 960.000000, 73.500000, 73.500000, 80.850000, 70560.000000, '', 26, NULL, 10.000000, 7056.000000, 77616.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1457, 1652, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1458, 1653, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1459, 1654, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1460, 1655, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1461, 1656, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1462, 1657, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1463, 1658, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1464, 1659, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1465, 1660, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1466, 1661, 703, 123, '件', NULL, 11880.000000, 11880.000000, 59.500000, 59.500000, 59.500000, 706860.000000, '', 26, NULL, 0.000000, 0.000000, 706860.000000, NULL, NULL, NULL, NULL, 1369, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1467, 1662, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1468, 1663, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1469, 1664, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1470, 1665, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1471, 1666, 703, 123, '件', NULL, 11880.000000, 11880.000000, 59.500000, 59.500000, 59.500000, 706860.000000, '', 26, NULL, 0.000000, 0.000000, 706860.000000, NULL, NULL, NULL, NULL, 1369, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1472, 1667, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1473, 1668, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1474, 1669, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1475, 1670, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1476, 1671, 703, 123, '件', NULL, 1000.000000, 1000.000000, 73.500000, 73.500000, 80.850000, 73500.000000, '', 26, NULL, 10.000000, 7350.000000, 80850.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1477, 1672, 703, 123, '件', NULL, 11880.000000, 11880.000000, 59.500000, 59.500000, 59.500000, 706860.000000, '', 26, NULL, 0.000000, 0.000000, 706860.000000, NULL, NULL, NULL, NULL, 1369, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1478, 1673, 703, 123, '件', NULL, 5400.000000, 5400.000000, 59.500000, 59.500000, 59.500000, 321300.000000, '', 26, NULL, 0.000000, 0.000000, 321300.000000, NULL, NULL, NULL, NULL, 1369, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1479, 1674, 703, 123, '件', NULL, 8420.000000, 8420.000000, 59.500000, 59.500000, 59.500000, 500990.000000, '', 26, NULL, 0.000000, 0.000000, 500990.000000, NULL, NULL, NULL, NULL, 1369, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1480, 1675, 703, 123, '件', NULL, 12940.000000, 12940.000000, 59.500000, 59.500000, 59.500000, 769930.000000, '', 26, NULL, 0.000000, 0.000000, 769930.000000, NULL, NULL, NULL, NULL, 1369, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1481, 1676, 704, 124, '件', NULL, 18200.000000, 18200.000000, 317.500000, 317.500000, 317.500000, 5778500.000000, '', 26, NULL, 0.000000, 0.000000, 5778500.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1482, 1677, 704, 124, '件', NULL, 3000.000000, 3000.000000, 340.000000, 340.000000, 374.000000, 1020000.000000, '', 26, NULL, 10.000000, 102000.000000, 1122000.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1483, 1678, 704, 124, '件', NULL, 1008.000000, 1008.000000, 317.500000, 317.500000, 317.500000, 320040.000000, '', 26, NULL, 0.000000, 0.000000, 320040.000000, NULL, NULL, NULL, NULL, 1481, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1484, 1679, 704, 124, '件', NULL, 1000.000000, 1000.000000, 340.000000, 340.000000, 374.000000, 340000.000000, '', 26, NULL, 10.000000, 34000.000000, 374000.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1485, 1680, 704, 124, '件', NULL, 8.000000, 8.000000, 340.000000, 340.000000, 374.000000, 2720.000000, '', 26, NULL, 10.000000, 272.000000, 2992.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1486, 1681, 704, 124, '件', NULL, 3360.000000, 3360.000000, 317.500000, 317.500000, 317.500000, 1066800.000000, '', 26, NULL, 0.000000, 0.000000, 1066800.000000, NULL, NULL, NULL, NULL, 1481, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1487, 1682, 704, 124, '件', NULL, 992.000000, 992.000000, 340.000000, 340.000000, 374.000000, 337280.000000, '', 26, NULL, 10.000000, 33728.000000, 371008.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1488, 1683, 704, 124, '件', NULL, 1000.000000, 1000.000000, 340.000000, 340.000000, 374.000000, 340000.000000, '', 26, NULL, 10.000000, 34000.000000, 374000.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1489, 1684, 704, 124, '件', NULL, 3360.000000, 3360.000000, 317.500000, 317.500000, 317.500000, 1066800.000000, '', 26, NULL, 0.000000, 0.000000, 1066800.000000, NULL, NULL, NULL, NULL, 1481, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1490, 1685, 704, 124, '件', NULL, 2644.000000, 2644.000000, 317.500000, 317.500000, 317.500000, 839470.000000, '', 26, NULL, 0.000000, 0.000000, 839470.000000, NULL, NULL, NULL, NULL, 1481, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1491, 1686, 704, 124, '件', NULL, 12749.000000, 12749.000000, 317.500000, 317.500000, 317.500000, 4047807.500000, '', 26, NULL, 0.000000, 0.000000, 4047807.500000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1492, 1687, 704, 124, '件', NULL, 3000.000000, 3000.000000, 340.000000, 340.000000, 374.000000, 1020000.000000, '', 26, NULL, 10.000000, 102000.000000, 1122000.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1493, 1688, 704, 124, '件', NULL, 3000.000000, 3000.000000, 340.000000, 340.000000, 374.000000, 1020000.000000, '', 26, NULL, 10.000000, 102000.000000, 1122000.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1494, 1689, 704, 124, '件', NULL, 3749.000000, 3749.000000, 340.000000, 340.000000, 374.000000, 1274660.000000, '', 26, NULL, 10.000000, 127466.000000, 1402126.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1495, 1690, 704, 124, '件', NULL, 3000.000000, 3000.000000, 340.000000, 340.000000, 374.000000, 1020000.000000, '', 26, NULL, 10.000000, 102000.000000, 1122000.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1496, 1691, 704, 124, '件', NULL, 3360.000000, 3360.000000, 317.500000, 317.500000, 317.500000, 1066800.000000, '', 26, NULL, 0.000000, 0.000000, 1066800.000000, NULL, NULL, NULL, NULL, 1491, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1497, 1692, 704, 124, '件', NULL, 1000.000000, 1000.000000, 340.000000, 340.000000, 374.000000, 340000.000000, '', 26, NULL, 10.000000, 34000.000000, 374000.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1498, 1693, 704, 124, '件', NULL, 1000.000000, 1000.000000, 340.000000, 340.000000, 374.000000, 340000.000000, '', 26, NULL, 10.000000, 34000.000000, 374000.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1499, 1694, 704, 124, '件', NULL, 1000.000000, 1000.000000, 340.000000, 340.000000, 374.000000, 340000.000000, '', 26, NULL, 10.000000, 34000.000000, 374000.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1500, 1695, 704, 124, '件', NULL, 360.000000, 360.000000, 340.000000, 340.000000, 374.000000, 122400.000000, '', 26, NULL, 10.000000, 12240.000000, 134640.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1501, 1696, 704, 124, '件', NULL, 3360.000000, 3360.000000, 317.500000, 317.500000, 317.500000, 1066800.000000, '', 26, NULL, 0.000000, 0.000000, 1066800.000000, NULL, NULL, NULL, NULL, 1491, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1502, 1697, 704, 124, '件', NULL, 640.000000, 640.000000, 340.000000, 340.000000, 374.000000, 217600.000000, '', 26, NULL, 10.000000, 21760.000000, 239360.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1503, 1698, 704, 124, '件', NULL, 1000.000000, 1000.000000, 340.000000, 340.000000, 374.000000, 340000.000000, '', 26, NULL, 10.000000, 34000.000000, 374000.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1504, 1699, 704, 124, '件', NULL, 1000.000000, 1000.000000, 340.000000, 340.000000, 374.000000, 340000.000000, '', 26, NULL, 10.000000, 34000.000000, 374000.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1505, 1700, 704, 124, '件', NULL, 720.000000, 720.000000, 340.000000, 340.000000, 374.000000, 244800.000000, '', 26, NULL, 10.000000, 24480.000000, 269280.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1506, 1701, 704, 124, '件', NULL, 2016.000000, 2016.000000, 317.500000, 317.500000, 317.500000, 640080.000000, '', 26, NULL, 0.000000, 0.000000, 640080.000000, NULL, NULL, NULL, NULL, 1491, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1507, 1702, 704, 124, '件', NULL, 280.000000, 280.000000, 340.000000, 340.000000, 374.000000, 95200.000000, '', 26, NULL, 10.000000, 9520.000000, 104720.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1508, 1703, 704, 124, '件', NULL, 1000.000000, 1000.000000, 340.000000, 340.000000, 374.000000, 340000.000000, '', 26, NULL, 10.000000, 34000.000000, 374000.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1509, 1704, 704, 124, '件', NULL, 736.000000, 736.000000, 340.000000, 340.000000, 374.000000, 250240.000000, '', 26, NULL, 10.000000, 25024.000000, 275264.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1510, 1705, 704, 124, '件', NULL, 504.000000, 504.000000, 317.500000, 317.500000, 317.500000, 160020.000000, '', 26, NULL, 0.000000, 0.000000, 160020.000000, NULL, NULL, NULL, NULL, 1491, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1511, 1706, 704, 124, '件', NULL, 264.000000, 264.000000, 340.000000, 340.000000, 374.000000, 89760.000000, '', 26, NULL, 10.000000, 8976.000000, 98736.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1512, 1707, 704, 124, '件', NULL, 240.000000, 240.000000, 340.000000, 340.000000, 374.000000, 81600.000000, '', 26, NULL, 10.000000, 8160.000000, 89760.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1513, 1708, 704, 124, '件', NULL, 3360.000000, 3360.000000, 317.500000, 317.500000, 317.500000, 1066800.000000, '', 26, NULL, 0.000000, 0.000000, 1066800.000000, NULL, NULL, NULL, NULL, 1491, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1514, 1709, 704, 124, '件', NULL, 509.000000, 509.000000, 340.000000, 340.000000, 374.000000, 173060.000000, '', 26, NULL, 10.000000, 17306.000000, 190366.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1515, 1710, 704, 124, '件', NULL, 1000.000000, 1000.000000, 340.000000, 340.000000, 374.000000, 340000.000000, '', 26, NULL, 10.000000, 34000.000000, 374000.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1516, 1711, 704, 124, '件', NULL, 1000.000000, 1000.000000, 340.000000, 340.000000, 374.000000, 340000.000000, '', 26, NULL, 10.000000, 34000.000000, 374000.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1517, 1712, 704, 124, '件', NULL, 851.000000, 851.000000, 340.000000, 340.000000, 374.000000, 289340.000000, '', 26, NULL, 10.000000, 28934.000000, 318274.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1518, 1713, 704, 124, '件', NULL, 149.000000, 149.000000, 317.500000, 317.500000, 317.500000, 47307.500000, '', 26, NULL, 0.000000, 0.000000, 47307.500000, NULL, NULL, NULL, NULL, 1491, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1519, 1714, 704, 124, '件', NULL, 149.000000, 149.000000, 340.000000, 340.000000, 374.000000, 50660.000000, '', 26, NULL, 10.000000, 5066.000000, 55726.000000, NULL, NULL, NULL, NULL, NULL, 63, '0'); +INSERT INTO `tbl_depot_item` VALUES (1520, 1715, 699, 119, '件', NULL, 7.000000, 7.000000, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '0'); +INSERT INTO `tbl_depot_item` VALUES (1521, 1716, 699, 119, '件', NULL, 7.000000, 7.000000, 0.100000, NULL, NULL, 0.700000, NULL, NULL, NULL, 0.000000, 0.000000, 0.700000, NULL, NULL, NULL, NULL, 1520, NULL, '0'); +INSERT INTO `tbl_depot_item` VALUES (1522, 1717, 699, 119, '件', NULL, 7.000000, 7.000000, 0.100000, NULL, NULL, 0.700000, NULL, 25, NULL, 0.000000, 0.000000, 0.700000, NULL, NULL, NULL, NULL, 1521, NULL, '0'); +INSERT INTO `tbl_depot_item` VALUES (1523, 1718, 704, 124, '件', NULL, 1000000.000000, 1000000.000000, 340.000000, NULL, NULL, 340000000.000000, NULL, NULL, NULL, 0.000000, 0.000000, 340000000.000000, NULL, NULL, NULL, NULL, NULL, NULL, '0'); +INSERT INTO `tbl_depot_item` VALUES (1524, 1719, 703, 123, '件', NULL, 10000.000000, 10000.000000, 73.500000, NULL, NULL, 735000.000000, NULL, NULL, NULL, 10.000000, 73500.000000, 808500.000000, NULL, NULL, NULL, NULL, NULL, NULL, '0'); +INSERT INTO `tbl_depot_item` VALUES (1525, 1720, 703, 123, '件', NULL, 10000.000000, 10000.000000, 73.500000, 59.500000, NULL, 735000.000000, NULL, 25, NULL, 10.000000, 73500.000000, 808500.000000, NULL, NULL, NULL, NULL, 1524, NULL, '0'); +INSERT INTO `tbl_depot_item` VALUES (1526, 1721, 703, 123, '件', NULL, 10000.000000, 10000.000000, 59.500000, 59.500000, 59.500000, 595000.000000, NULL, 25, NULL, NULL, 0.000000, 595000.000000, NULL, NULL, NULL, NULL, NULL, NULL, '0'); +INSERT INTO `tbl_depot_item` VALUES (1527, 1722, 705, 125, '件', NULL, 10000.000000, 10000.000000, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '0'); +INSERT INTO `tbl_depot_item` VALUES (1528, 1723, 705, 125, '件', NULL, 10000.000000, 10000.000000, 10.000000, NULL, NULL, 100000.000000, NULL, NULL, NULL, 0.000000, 0.000000, 100000.000000, NULL, NULL, NULL, NULL, 1527, NULL, '0'); +INSERT INTO `tbl_depot_item` VALUES (1529, 1724, 705, 125, '件', NULL, 10000.000000, 10000.000000, 10.000000, NULL, NULL, 100000.000000, NULL, 25, NULL, 0.000000, 0.000000, 100000.000000, NULL, NULL, NULL, NULL, 1528, NULL, '0'); +INSERT INTO `tbl_depot_item` VALUES (1530, 1725, 705, 125, '件', '', 10000.000000, 10000.000000, 0.000000, NULL, NULL, 0.000000, NULL, 25, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '0'); + +-- ---------------------------- +-- Table structure for tbl_function +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_function`; +CREATE TABLE `tbl_function` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `number` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '编号', + `name` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '名称', + `parent_number` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '上级编号', + `url` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '链接', + `component` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '组件', + `state` bit(1) NULL DEFAULT NULL COMMENT '收缩', + `sort` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '排序', + `enabled` bit(1) NULL DEFAULT NULL COMMENT '启用', + `type` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '类型', + `push_btn` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '功能按钮', + `icon` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '图标', + `delete_flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '删除标记,0未删除,1删除', + `name_en` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT 'English menu/resource name', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `url`(`url`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 277 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '功能模块表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_function +-- ---------------------------- +INSERT INTO `tbl_function` VALUES (1, '0001', '系统管理', '0', '/system', '/layouts/TabLayout', b'1', '0010', b'1', '电脑版', '', 'setting', '0', 'System Management'); +INSERT INTO `tbl_function` VALUES (13, '000102', '角色管理', '0001', '/system/role', '/system/RoleList', b'0', '0130', b'1', '电脑版', '1,8', 'profile', '0', 'Role Management'); +INSERT INTO `tbl_function` VALUES (14, '000103', '用户管理', '0001', '/system/user', '/system/UserList', b'0', '0140', b'1', '电脑版', '1', 'profile', '0', 'User Management'); +INSERT INTO `tbl_function` VALUES (15, '000104', '日志管理', '0001', '/system/log', '/system/LogList', b'0', '0160', b'1', '电脑版', '', 'profile', '0', 'Log Management'); +INSERT INTO `tbl_function` VALUES (16, '000105', '菜单管理', '0001', '/system/function', '/system/FunctionList', b'0', '0166', b'1', '电脑版', '1', 'profile', '0', 'Resource Menus'); +INSERT INTO `tbl_function` VALUES (18, '000109', '租户管理', '0001', '/system/tenant', '/system/TenantList', b'0', '0167', b'0', '电脑版', '1', 'profile', '0', 'Tenant Management'); +INSERT INTO `tbl_function` VALUES (21, '0101', '商品管理', '0', '/material', '/layouts/TabLayout', b'0', '0007', b'1', '电脑版', NULL, 'shopping', '0', 'Product Management'); +INSERT INTO `tbl_function` VALUES (22, '010101', '商品类别', '0101', '/material/material_category', '/material/MaterialCategoryList', b'0', '0230', b'1', '电脑版', '1', 'profile', '0', 'Product Categories'); +INSERT INTO `tbl_function` VALUES (23, '010102', '商品信息', '0101', '/material/material', '/material/MaterialList', b'0', '0240', b'1', '电脑版', '1,3', 'profile', '0', 'Product Information'); +INSERT INTO `tbl_function` VALUES (24, '0102', '基础资料', '0', '/systemA', '/layouts/TabLayout', b'0', '0009', b'1', '电脑版', NULL, 'appstore', '0', 'Master Data'); +INSERT INTO `tbl_function` VALUES (25, '01020101', '供应商信息', '0102', '/system/vendor', '/system/VendorList', b'0', '0260', b'1', '电脑版', '1,3', 'profile', '0', 'Suppliers'); +INSERT INTO `tbl_function` VALUES (26, '010202', '仓库信息', '0102', '/system/depot', '/system/DepotList', b'0', '0270', b'1', '电脑版', '1', 'profile', '0', 'Warehouses'); +INSERT INTO `tbl_function` VALUES (31, '010206', '操作人员管理', '0102', '/system/person', '/system/PersonList', b'0', '0284', b'1', '电脑版', '1', 'profile', '0', 'Operators'); +INSERT INTO `tbl_function` VALUES (32, '0502', '采购管理', '0', '/bill', '/layouts/TabLayout', b'0', '0002', b'1', '电脑版', '', 'retweet', '0', 'Purchase Management'); +INSERT INTO `tbl_function` VALUES (33, '050201', '采购入库', '0502', '/bill/purchase_in', '/bill/PurchaseInList', b'0', '0340', b'1', '电脑版', '1,2,3,7', 'profile', '0', 'Purchase Receipts'); +INSERT INTO `tbl_function` VALUES (38, '0603', '销售管理', '0', '/billB', '/layouts/TabLayout', b'0', '0001', b'1', '电脑版', '', 'shopping-cart', '0', 'Sales Management'); +INSERT INTO `tbl_function` VALUES (40, '080107', '调拨出库', '0801', '/bill/allocation_out', '/bill/AllocationOutList', b'0', '0807', b'1', '电脑版', '1,2,3,7', 'profile', '0', 'Stock Transfers'); +INSERT INTO `tbl_function` VALUES (41, '060303', '销售出库', '0603', '/bill/sale_out', '/bill/SaleOutList', b'0', '0394', b'1', '电脑版', '1,2,3,7', 'profile', '0', 'Sales Shipments'); +INSERT INTO `tbl_function` VALUES (44, '0704', '财务管理', '0', '/financial', '/layouts/TabLayout', b'0', '0005', b'1', '电脑版', '', 'money-collect', '0', 'Finance Management'); +INSERT INTO `tbl_function` VALUES (59, '030101', '进销存统计', '0301', '/report/in_out_stock_report', '/report/InOutStockReport', b'0', '0658', b'1', '电脑版', '', 'profile', '0', 'Inventory Transaction Summary'); +INSERT INTO `tbl_function` VALUES (194, '010204', '收支项目', '0102', '/system/in_out_item', '/system/InOutItemList', b'0', '0282', b'1', '电脑版', '1', 'profile', '0', 'Income and Expense Items'); +INSERT INTO `tbl_function` VALUES (195, '010205', '结算账户', '0102', '/system/account', '/system/AccountList', b'0', '0283', b'1', '电脑版', '1', 'profile', '0', 'Settlement Accounts'); +INSERT INTO `tbl_function` VALUES (197, '070402', '收入单', '0704', '/financial/item_in', '/financial/ItemInList', b'0', '0465', b'1', '电脑版', '1,2,3,7', 'profile', '0', 'Income Vouchers'); +INSERT INTO `tbl_function` VALUES (198, '0301', '报表查询', '0', '/report', '/layouts/TabLayout', b'0', '0008', b'1', '电脑版', NULL, 'pie-chart', '0', 'Reports'); +INSERT INTO `tbl_function` VALUES (199, '050204', '采购退货', '0502', '/bill/purchase_back', '/bill/PurchaseBackList', b'0', '0345', b'1', '电脑版', '1,2,3,7', 'profile', '0', 'Purchase Returns'); +INSERT INTO `tbl_function` VALUES (200, '060305', '销售退货', '0603', '/bill/sale_back', '/bill/SaleBackList', b'0', '0396', b'1', '电脑版', '1,2,3,7', 'profile', '0', 'Sales Returns'); +INSERT INTO `tbl_function` VALUES (201, '080103', '其它入库', '0801', '/bill/other_in', '/bill/OtherInList', b'0', '0803', b'1', '电脑版', '1,2,3,7', 'profile', '0', 'Other Receipts'); +INSERT INTO `tbl_function` VALUES (202, '080105', '其它出库', '0801', '/bill/other_out', '/bill/OtherOutList', b'0', '0805', b'1', '电脑版', '1,2,3,7', 'profile', '0', 'Other Shipments'); +INSERT INTO `tbl_function` VALUES (203, '070403', '支出单', '0704', '/financial/item_out', '/financial/ItemOutList', b'0', '0470', b'1', '电脑版', '1,2,3,7', 'profile', '0', 'Expense Vouchers'); +INSERT INTO `tbl_function` VALUES (204, '070404', '收款单', '0704', '/financial/money_in', '/financial/MoneyInList', b'0', '0475', b'1', '电脑版', '1,2,3,7', 'profile', '0', 'Receipt Vouchers'); +INSERT INTO `tbl_function` VALUES (205, '070405', '付款单', '0704', '/financial/money_out', '/financial/MoneyOutList', b'0', '0480', b'1', '电脑版', '1,2,3,7', 'profile', '0', 'Payment Vouchers'); +INSERT INTO `tbl_function` VALUES (206, '070406', '转账单', '0704', '/financial/giro', '/financial/GiroList', b'0', '0490', b'1', '电脑版', '1,2,3,7', 'profile', '0', 'Transfer Vouchers'); +INSERT INTO `tbl_function` VALUES (207, '030102', '账户统计', '0301', '/report/account_report', '/report/AccountReport', b'0', '0610', b'1', '电脑版', '', 'profile', '0', 'Account Summary'); +INSERT INTO `tbl_function` VALUES (208, '030103', '采购统计', '0301', '/report/buy_in_report', '/report/BuyInReport', b'0', '0620', b'1', '电脑版', '', 'profile', '0', 'Purchase Summary'); +INSERT INTO `tbl_function` VALUES (209, '030104', '销售统计', '0301', '/report/sale_out_report', '/report/SaleOutReport', b'0', '0630', b'1', '电脑版', '', 'profile', '0', 'Sales Summary'); +INSERT INTO `tbl_function` VALUES (210, '040102', '零售出库', '0603', '/bill/retail_out', '/bill/RetailOutList', b'0', '0405', b'1', '电脑版', '1,2,3,7', 'profile', '0', 'Retail Shipments'); +INSERT INTO `tbl_function` VALUES (211, '040104', '零售退货', '0603', '/bill/retail_back', '/bill/RetailBackList', b'0', '0407', b'1', '电脑版', '1,2,3,7', 'profile', '0', 'Retail Returns'); +INSERT INTO `tbl_function` VALUES (212, '070407', '收预付款', '0704', '/financial/advance_in', '/financial/AdvanceInList', b'0', '0495', b'1', '电脑版', '1,2,3,7', 'profile', '0', 'Advance Receipts'); +INSERT INTO `tbl_function` VALUES (217, '01020102', '客户信息', '0102', '/system/customer', '/system/CustomerList', b'0', '0262', b'1', '电脑版', '1,3', 'profile', '0', 'Customers'); +INSERT INTO `tbl_function` VALUES (218, '01020103', '会员信息', '0102', '/system/member', '/system/MemberList', b'0', '0263', b'1', '电脑版', '1,3', 'profile', '0', 'Members'); +INSERT INTO `tbl_function` VALUES (220, '010103', '多单位', '0101', '/system/unit', '/system/UnitList', b'0', '0245', b'1', '电脑版', '1', 'profile', '0', 'Multiple Units'); +INSERT INTO `tbl_function` VALUES (225, '0401', '零售管理', '0', '/billC', '/layouts/TabLayout', b'0', '0101', b'1', '电脑版', '', 'gift', '0', 'Retail Management'); +INSERT INTO `tbl_function` VALUES (226, '030106', '入库明细', '0301', '/report/in_detail', '/report/InDetail', b'0', '0640', b'1', '电脑版', '', 'profile', '0', 'Inbound Details'); +INSERT INTO `tbl_function` VALUES (227, '030107', '出库明细', '0301', '/report/out_detail', '/report/OutDetail', b'0', '0645', b'1', '电脑版', '', 'profile', '0', 'Outbound Details'); +INSERT INTO `tbl_function` VALUES (228, '030108', '入库汇总', '0301', '/report/in_material_count', '/report/InMaterialCount', b'0', '0650', b'1', '电脑版', '', 'profile', '0', 'Inbound Summary'); +INSERT INTO `tbl_function` VALUES (229, '030109', '出库汇总', '0301', '/report/out_material_count', '/report/OutMaterialCount', b'0', '0655', b'1', '电脑版', '', 'profile', '0', 'Outbound Summary'); +INSERT INTO `tbl_function` VALUES (232, '080109', '组装单', '0801', '/bill/assemble', '/bill/AssembleList', b'0', '0809', b'1', '电脑版', '1,2,3,7', 'profile', '0', 'Assembly Orders'); +INSERT INTO `tbl_function` VALUES (233, '080111', '拆卸单', '0801', '/bill/disassemble', '/bill/DisassembleList', b'0', '0811', b'1', '电脑版', '1,2,3,7', 'profile', '0', 'Disassembly Orders'); +INSERT INTO `tbl_function` VALUES (234, '000105', '系统配置', '0001', '/system/system_config', '/system/SystemConfigList', b'0', '0164', b'1', '电脑版', '1', 'profile', '0', 'System Configuration'); +INSERT INTO `tbl_function` VALUES (235, '030110', '客户对账', '0301', '/report/customer_account', '/report/CustomerAccount', b'0', '0660', b'1', '电脑版', '', 'profile', '0', 'Customer Reconciliation'); +INSERT INTO `tbl_function` VALUES (236, '000106', '商品属性', '0001', '/material/material_property', '/material/MaterialPropertyList', b'0', '0163', b'1', '电脑版', '1', 'profile', '0', 'Product Properties'); +INSERT INTO `tbl_function` VALUES (237, '030111', '供应商对账', '0301', '/report/vendor_account', '/report/VendorAccount', b'0', '0665', b'1', '电脑版', '', 'profile', '0', 'Supplier Reconciliation'); +INSERT INTO `tbl_function` VALUES (239, '0801', '仓库管理', '0', '/billD', '/layouts/TabLayout', b'0', '0004', b'1', '电脑版', '', 'hdd', '0', 'Warehouse Management'); +INSERT INTO `tbl_function` VALUES (241, '050202', '采购订单', '0502', '/bill/purchase_order', '/bill/PurchaseOrderList', b'0', '0335', b'1', '电脑版', '1,2,3,7', 'profile', '0', 'Purchase Orders'); +INSERT INTO `tbl_function` VALUES (242, '060301', '销售订单', '0603', '/bill/sale_order', '/bill/SaleOrderList', b'0', '0392', b'1', '电脑版', '1,2,3,7', 'profile', '0', 'Sales Orders'); +INSERT INTO `tbl_function` VALUES (243, '000108', '部门管理', '0001', '/system/organization', '/system/OrganizationList', b'1', '0150', b'1', '电脑版', '1', 'profile', '0', 'Department Management'); +INSERT INTO `tbl_function` VALUES (244, '030112', '库存预警', '0301', '/report/stock_warning_report', '/report/StockWarningReport', b'0', '0670', b'1', '电脑版', '', 'profile', '0', 'Stock Alerts'); +INSERT INTO `tbl_function` VALUES (245, '000107', '插件管理', '0001', '/system/plugin', '/system/PluginList', b'0', '0170', b'1', '电脑版', '1', 'profile', '0', 'Plugin Management'); +INSERT INTO `tbl_function` VALUES (246, '030113', '商品库存', '0801', '/report/material_stock', '/report/MaterialStock', b'0', '0605', b'1', '电脑版', '', 'profile', '0', 'Product Inventory'); +INSERT INTO `tbl_function` VALUES (247, '010105', '多属性', '0101', '/material/material_attribute', '/material/MaterialAttributeList', b'0', '0250', b'1', '电脑版', '1', 'profile', '0', 'Product Attributes'); +INSERT INTO `tbl_function` VALUES (248, '030150', '调拨明细', '0301', '/report/allocation_detail', '/report/AllocationDetail', b'0', '0646', b'1', '电脑版', '', 'profile', '0', 'Transfer Details'); +INSERT INTO `tbl_function` VALUES (258, '000112', '平台配置', '0001', '/system/platform_config', '/system/PlatformConfigList', b'0', '0175', b'1', '电脑版', '', 'profile', '0', 'Platform Configuration'); +INSERT INTO `tbl_function` VALUES (259, '030105', '零售统计', '0301', '/report/retail_out_report', '/report/RetailOutReport', b'0', '0615', b'1', '电脑版', '', 'profile', '0', 'Retail Summary'); +INSERT INTO `tbl_function` VALUES (260, '000113', '字典管理', '0001', '/system/dict', '/system/DictList', b'0', '0172', b'1', '电脑版', '', 'profile', '0', 'Dictionary Management'); +INSERT INTO `tbl_function` VALUES (261, '050203', '请购单', '0502', '/bill/purchase_apply', '/bill/PurchaseApplyList', b'0', '0330', b'1', '电脑版', '1,2,3,7', 'profile', '0', 'Purchase Requisitions'); +INSERT INTO `tbl_function` VALUES (262, '0901', '生产管理', '0', '/production', '/layouts/TabLayout', b'0', '0003', b'1', '电脑版', '', 'cluster', '0', 'Production Management'); +INSERT INTO `tbl_function` VALUES (263, '090101', '生产方案', '0901', '/production/pack_bom', '/production/PackBomList', b'0', '0481', b'1', '电脑版', NULL, 'profile', '0', 'Production BOMs'); +INSERT INTO `tbl_function` VALUES (264, '090102', '生产工单', '0901', '/production/order', '/production/OrderList', b'0', '0482', b'1', '电脑版', '1,2,3', 'profile', '0', 'Production Orders'); +INSERT INTO `tbl_function` VALUES (265, '090103', '领料管理', '0901', '/production/requisition', '/production/RequisitionList', b'0', '0483', b'1', '电脑版', '1,2,3', 'profile', '0', 'Material Requisitions'); +INSERT INTO `tbl_function` VALUES (266, '090104', '完工报工', '0901', '/production/report', '/production/ReportList', b'0', '0484', b'1', '电脑版', '1,2,3', 'profile', '0', 'Production Reports'); +INSERT INTO `tbl_function` VALUES (267, '01020110', '客户分类', '0102', '/system/customerCategory', '/system/CustomerCategoryList', b'1', '0263', b'1', '电脑版', NULL, 'bars', '0', 'Customer Categories'); +INSERT INTO `tbl_function` VALUES (268, '060304', '发货管理', '0603', '/bill/sale_shipment', '/bill/SaleShipmentList', b'0', '0395', b'1', '电脑版', '1,2,7', 'car', '0', 'Shipment Management'); +INSERT INTO `tbl_function` VALUES (270, '080110', '总部入库', '0801', '/bill/headquarters_in', '/bill/HeadquartersInList', b'0', '0810', b'1', '电脑版', '1,2,3,7', 'profile', '0', 'Headquarters Receipts'); +INSERT INTO `tbl_function` VALUES (271, '060303', '交货计划管理', '0603', '/bill/delivery_plan', '/bill/DeliveryPlanList', b'0', '0394', b'1', '电脑版', '1,2,7', 'profile', '0', 'Delivery Plans'); +INSERT INTO `tbl_function` VALUES (272, '0902', '资产管理', '0', '/assetManagement', '/layouts/TabLayout', b'0', '0006', b'1', '电脑版', '', 'bank', '0', 'Asset Management'); +INSERT INTO `tbl_function` VALUES (273, '090201', '资产台账', '0902', '/asset/ledger', '/asset/AssetList', b'0', '0491', b'1', '电脑版', '1,2,3', 'profile', '0', 'Asset Ledger'); +INSERT INTO `tbl_function` VALUES (274, '090202', '设备台账', '0902', '/asset/device', '/asset/DeviceList', b'0', '0492', b'1', '电脑版', '1,2,3', 'tool', '0', 'Device Ledger'); +INSERT INTO `tbl_function` VALUES (275, '090203', '资产盘点', '0902', '/asset/inventory', '/asset/InventoryList', b'0', '0493', b'1', '电脑版', '1,2,3,4,5,6', 'scan', '0', 'Asset Inventory'); +INSERT INTO `tbl_function` VALUES (276, '090200', '资产汇总', '0902', '/asset', '/asset/AssetDashboard', b'0', '0490', b'1', '电脑版', '', 'dashboard', '0', 'Asset Overview'); + +-- ---------------------------- +-- Table structure for tbl_headquarters_inbound_item +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_headquarters_inbound_item`; +CREATE TABLE `tbl_headquarters_inbound_item` ( + `id` bigint NOT NULL AUTO_INCREMENT, + `header_id` bigint NOT NULL, + `material_code` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL, + `material_name` varchar(200) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL, + `specification` varchar(200) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL, + `qty` decimal(24, 6) NOT NULL, + `unit_price` decimal(24, 6) NULL DEFAULT NULL, + `total_net_money` decimal(24, 6) NULL DEFAULT NULL, + `total_money` decimal(24, 6) NULL DEFAULT NULL, + `depot_id` bigint NULL DEFAULT NULL COMMENT '入库仓库id', + `item_json` json NULL COMMENT '入库商品原始信息', + `source_doc_no` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL, + `delete_flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0', + PRIMARY KEY (`id`) USING BTREE, + INDEX `idx_headquarters_inbound_header`(`header_id`) USING BTREE, + INDEX `idx_headquarters_inbound_code`(`material_code`) USING BTREE, + INDEX `idx_headquarters_inbound_depot`(`depot_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 752 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '总部入库明细' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_headquarters_inbound_item +-- ---------------------------- +INSERT INTO `tbl_headquarters_inbound_item` VALUES (598, 1272, 'C.4.T.0.00562', 'MD-4GVIII(VB)', 'MD-4GVIII(VB)', 50.000000, 324.000000, 14336.280000, 16200.000000, 25, '{\"出货量\": 50.0, \"价税合计\": 16200.0, \"商品单价\": 324.0, \"成品名称\": \"MD-4GVIII(VB)\", \"未税金额\": 14336.28, \"规格型号\": \"MD-4GVIII(VB)\", \"成品物料代码\": \"C.4.T.0.00562\"}', 'SH2503070002', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (599, 1273, 'C.3.T.0.00038', '三相四线多功能电能表T46(VJ)', 'DTSD1226-T46(VJ)', 1990.000000, 797.040000, 1403636.810000, 1586109.600000, 25, '{\"出货量\": 1990.0, \"价税合计\": 1586109.6, \"商品单价\": 797.04, \"成品名称\": \"三相四线多功能电能表T46(VJ)\", \"未税金额\": 1403636.81, \"规格型号\": \"DTSD1226-T46(VJ)\", \"成品物料代码\": \"C.3.T.0.00038\"}', 'SH2503210018', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (600, 1274, 'C.4.T.0.00654', 'MD-4G111(VF) 4G模块', 'MD-4G111(VF)', 1990.000000, 0.100000, 176.110000, 199.000000, 25, '{\"出货量\": 1990.0, \"价税合计\": 199.0, \"商品单价\": 0.1, \"成品名称\": \"MD-4G111(VF) 4G模块\", \"未税金额\": 176.11, \"规格型号\": \"MD-4G111(VF)\", \"成品物料代码\": \"C.4.T.0.00654\"}', 'SH2503260007', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (601, 1275, 'C.3.T.0.00036', '三相四线多功能电能表T46(VH)', 'DTSD1226-T46(VH)', 500.000000, 550.800000, 275400.000000, 275400.000000, 25, '{\"出货量\": 500.0, \"价税合计\": 275400.0, \"商品单价\": 550.8, \"成品名称\": \"三相四线多功能电能表T46(VH)\", \"未税金额\": 275400.0, \"规格型号\": \"DTSD1226-T46(VH)\", \"成品物料代码\": \"C.3.T.0.00036\"}', 'SH2503280020', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (602, 1276, 'C.3.S.0.00020', '三相四线多功能电能表SXVI(VG)-新', 'DTSD1226-SXVI(VG)', 400.000000, 613.980000, 245592.000000, 245592.000000, 25, '{\"出货量\": 400.0, \"价税合计\": 245592.0, \"商品单价\": 613.98, \"成品名称\": \"三相四线多功能电能表SXVI(VG)-新\", \"未税金额\": 245592.0, \"规格型号\": \"DTSD1226-SXVI(VG)\", \"成品物料代码\": \"C.3.S.0.00020\"}', 'SH2503280021', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (603, 1277, 'C.4.T.0.00654', 'MD-4G111(VF) 4G模块', 'MD-4G111(VF)', 8290.000000, 0.100000, 829.000000, 829.000000, 25, '{\"出货量\": 8290.0, \"价税合计\": 829.0, \"商品单价\": 0.1, \"成品名称\": \"MD-4G111(VF) 4G模块\", \"未税金额\": 829.0, \"规格型号\": \"MD-4G111(VF)\", \"成品物料代码\": \"C.4.T.0.00654\"}', 'SH2504010002', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (604, 1278, 'C.1.T.0.0004500005', '单相多功能电能表T49(VH)_(马来市场)', 'DDSD1226-T49(VH)', 8290.000000, 403.380000, 3344020.200000, 3344020.200000, 25, '{\"出货量\": 8290.0, \"价税合计\": 3344020.2, \"商品单价\": 403.38, \"成品名称\": \"单相多功能电能表T49(VH)_(马来市场)\", \"未税金额\": 3344020.2, \"规格型号\": \"DDSD1226-T49(VH)\", \"成品物料代码\": \"C.1.T.0.0004500005\"}', 'SH2503310004', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (605, 1279, 'C.4.T.0.00553', 'MT-P109(VA)', 'MT-P109(VA)', 500.000000, 129.600000, 64800.000000, 64800.000000, 25, '{\"出货量\": 500.0, \"价税合计\": 64800.0, \"商品单价\": 129.6, \"成品名称\": \"MT-P109(VA)\", \"未税金额\": 64800.0, \"规格型号\": \"MT-P109(VA)\", \"成品物料代码\": \"C.4.T.0.00553\"}', 'SH2504010004', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (606, 1280, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 3024.000000, 481.950000, 1457416.800000, 1457416.800000, 25, '{\"出货量\": 3024.0, \"价税合计\": 1457416.8, \"商品单价\": 481.95, \"成品名称\": \"三相四线多功能电能表CXVI(VA)-新\", \"未税金额\": 1457416.8, \"规格型号\": \"DTSD1226-CXVI(VA)\", \"成品物料代码\": \"C.3.C.2.00025\"}', 'SH2505090009', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (607, 1281, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 336.000000, 481.950000, 161935.200000, 161935.200000, 25, '{\"出货量\": 336.0, \"价税合计\": 161935.2, \"商品单价\": 481.95, \"成品名称\": \"三相四线多功能电能表CXVI(VA)-新\", \"未税金额\": 161935.2, \"规格型号\": \"DTSD1226-CXVI(VA)\", \"成品物料代码\": \"C.3.C.2.00025\"}', 'SH2505140012', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (608, 1282, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 1640.000000, 481.950000, 790398.000000, 790398.000000, 25, '{\"出货量\": 1640.0, \"价税合计\": 790398.0, \"商品单价\": 481.95, \"成品名称\": \"三相四线多功能电能表CXVI(VA)-新\", \"未税金额\": 790398.0, \"规格型号\": \"DTSD1226-CXVI(VA)\", \"成品物料代码\": \"C.3.C.2.00025\"}', 'SH2505140013', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (609, 1283, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 504.000000, 481.950000, 242902.800000, 242902.800000, 25, '{\"出货量\": 504.0, \"价税合计\": 242902.8, \"商品单价\": 481.95, \"成品名称\": \"三相四线多功能电能表CXVI(VA)-新\", \"未税金额\": 242902.8, \"规格型号\": \"DTSD1226-CXVI(VA)\", \"成品物料代码\": \"C.3.C.2.00025\"}', 'SH2505220012', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (610, 1284, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 3696.000000, 481.950000, 1781287.200000, 1781287.200000, 25, '{\"出货量\": 3696.0, \"价税合计\": 1781287.2, \"商品单价\": 481.95, \"成品名称\": \"三相四线多功能电能表CXVI(VA)-新\", \"未税金额\": 1781287.2, \"规格型号\": \"DTSD1226-CXVI(VA)\", \"成品物料代码\": \"C.3.C.2.00025\"}', 'SH2505210003', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (611, 1285, 'C.4.T.0.00421', 'MD-LR62(VB)', 'MD-LR62(VB)', 170.000000, 334.692000, 56897.640000, 56897.640000, 25, '{\"出货量\": 170.0, \"价税合计\": 56897.64, \"商品单价\": 334.692, \"成品名称\": \"MD-LR62(VB)\", \"未税金额\": 56897.64, \"规格型号\": \"MD-LR62(VB)\", \"成品物料代码\": \"C.4.T.0.00421\"}', 'SH2505230003', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (612, 1286, 'C.4.T.0.00422', 'MD-LR63(VB)', 'MD-LR63(VB)', 100.000000, 1003.752000, 100375.200000, 100375.200000, 25, '{\"出货量\": 100.0, \"价税合计\": 100375.2, \"商品单价\": 1003.752, \"成品名称\": \"MD-LR63(VB)\", \"未税金额\": 100375.2, \"规格型号\": \"MD-LR63(VB)\", \"成品物料代码\": \"C.4.T.0.00422\"}', 'SH2505230002', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (613, 1287, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 336.000000, 481.950000, 161935.200000, 161935.200000, 25, '{\"出货量\": 336.0, \"价税合计\": 161935.2, \"商品单价\": 481.95, \"成品名称\": \"三相四线多功能电能表CXVI(VA)-新\", \"未税金额\": 161935.2, \"规格型号\": \"DTSD1226-CXVI(VA)\", \"成品物料代码\": \"C.3.C.2.00025\"}', 'SH2505270016', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (614, 1288, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 464.000000, 481.950000, 223624.800000, 223624.800000, 25, '{\"出货量\": 464.0, \"价税合计\": 223624.8, \"商品单价\": 481.95, \"成品名称\": \"三相四线多功能电能表CXVI(VA)-新\", \"未税金额\": 223624.8, \"规格型号\": \"DTSD1226-CXVI(VA)\", \"成品物料代码\": \"C.3.C.2.00025\"}', 'SH2505280004', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (615, 1289, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 3464.000000, 481.950000, 1669474.800000, 1669474.800000, 25, '{\"出货量\": 3464.0, \"价税合计\": 1669474.8, \"商品单价\": 481.95, \"成品名称\": \"三相四线多功能电能表CXVI(VA)-新\", \"未税金额\": 1669474.8, \"规格型号\": \"DTSD1226-CXVI(VA)\", \"成品物料代码\": \"C.3.C.2.00025\"}', 'SH2506120013', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (616, 1290, 'C.4.T.0.00722', 'MD-RS178(VA) RS485分线器', 'MD-RS178(VA)', 1000.000000, 24.300000, 24300.000000, 24300.000000, 25, '{\"出货量\": 1000.0, \"价税合计\": 24300.0, \"商品单价\": 24.3, \"成品名称\": \"MD-RS178(VA) RS485分线器\", \"未税金额\": 24300.0, \"规格型号\": \"MD-RS178(VA)\", \"成品物料代码\": \"C.4.T.0.00722\"}', 'SH2506190019', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (617, 1291, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 504.000000, 481.950000, 242902.800000, 242902.800000, 25, '{\"出货量\": 504.0, \"价税合计\": 242902.8, \"商品单价\": 481.95, \"成品名称\": \"三相四线多功能电能表CXVI(VA)-新\", \"未税金额\": 242902.8, \"规格型号\": \"DTSD1226-CXVI(VA)\", \"成品物料代码\": \"C.3.C.2.00025\"}', 'SH2506200018', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (618, 1292, 'C.4.T.0.00421', 'MD-LR62(VB)', 'MD-LR62(VB)', 30.000000, 334.692000, 10040.760000, 10040.760000, 25, '{\"出货量\": 30.0, \"价税合计\": 10040.76, \"商品单价\": 334.692, \"成品名称\": \"MD-LR62(VB)\", \"未税金额\": 10040.76, \"规格型号\": \"MD-LR62(VB)\", \"成品物料代码\": \"C.4.T.0.00421\"}', 'SH2506230010', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (619, 1293, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 504.000000, 481.950000, 242902.800000, 242902.800000, 25, '{\"出货量\": 504.0, \"价税合计\": 242902.8, \"商品单价\": 481.95, \"成品名称\": \"三相四线多功能电能表CXVI(VA)-新\", \"未税金额\": 242902.8, \"规格型号\": \"DTSD1226-CXVI(VA)\", \"成品物料代码\": \"C.3.C.2.00025\"}', 'SH2506240005', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (620, 1294, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 3360.000000, 481.950000, 1619352.000000, 1619352.000000, 25, '{\"出货量\": 3360.0, \"价税合计\": 1619352.0, \"商品单价\": 481.95, \"成品名称\": \"三相四线多功能电能表CXVI(VA)-新\", \"未税金额\": 1619352.0, \"规格型号\": \"DTSD1226-CXVI(VA)\", \"成品物料代码\": \"C.3.C.2.00025\"}', 'SH2506240004', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (621, 1295, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 5.000000, 481.950000, 2409.750000, 2409.750000, 25, '{\"出货量\": 5.0, \"价税合计\": 2409.75, \"商品单价\": 481.95, \"成品名称\": \"三相四线多功能电能表CXVI(VA)-新\", \"未税金额\": 2409.75, \"规格型号\": \"DTSD1226-CXVI(VA)\", \"成品物料代码\": \"C.3.C.2.00025\"}', 'SH2507010002', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (622, 1296, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 363.000000, 481.950000, 174947.850000, 174947.850000, 25, '{\"出货量\": 363.0, \"价税合计\": 174947.85, \"商品单价\": 481.95, \"成品名称\": \"三相四线多功能电能表CXVI(VA)-新\", \"未税金额\": 174947.85, \"规格型号\": \"DTSD1226-CXVI(VA)\", \"成品物料代码\": \"C.3.C.2.00025\"}', 'SH2507010002', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (623, 1297, 'C.4.T.0.00686', 'TC160(VA) 通讯模块供电盒', 'TC160(VA)', 50.000000, 132.840000, 6642.000000, 6642.000000, 25, '{\"出货量\": 50.0, \"价税合计\": 6642.0, \"商品单价\": 132.84, \"成品名称\": \"TC160(VA) 通讯模块供电盒\", \"未税金额\": 6642.0, \"规格型号\": \"TC160(VA)\", \"成品物料代码\": \"C.4.T.0.00686\"}', 'SH2507160005', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (624, 1298, 'C.3.T.0.00038', '三相四线多功能电能表T46(VJ)', 'DTSD1226-T46(VJ)', 4620.000000, 797.040000, 3682324.800000, 3682324.800000, 25, '{\"出货量\": 4620.0, \"价税合计\": 3682324.8, \"商品单价\": 797.04, \"成品名称\": \"三相四线多功能电能表T46(VJ)\", \"未税金额\": 3682324.8, \"规格型号\": \"DTSD1226-T46(VJ)\", \"成品物料代码\": \"C.3.T.0.00038\"}', 'SH2508130002', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (625, 1299, 'C.4.T.0.00654', 'MD-4G111(VF) 4G模块', 'MD-4G111(VF)', 4620.000000, 0.100000, 462.000000, 462.000000, 25, '{\"出货量\": 4620.0, \"价税合计\": 462.0, \"商品单价\": 0.1, \"成品名称\": \"MD-4G111(VF) 4G模块\", \"未税金额\": 462.0, \"规格型号\": \"MD-4G111(VF)\", \"成品物料代码\": \"C.4.T.0.00654\"}', 'SH2508130003', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (626, 1300, 'C.4.T.0.00654', 'MD-4G111(VF) 4G模块', 'MD-4G111(VF)', 5270.000000, 0.100000, 527.000000, 527.000000, 25, '{\"出货量\": 5270.0, \"价税合计\": 527.0, \"商品单价\": 0.1, \"成品名称\": \"MD-4G111(VF) 4G模块\", \"未税金额\": 527.0, \"规格型号\": \"MD-4G111(VF)\", \"成品物料代码\": \"C.4.T.0.00654\"}', 'SH2508140009', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (627, 1301, 'C.3.T.0.00038', '三相四线多功能电能表T46(VJ)', 'DTSD1226-T46(VJ)', 5270.000000, 797.040000, 4200400.800000, 4200400.800000, 25, '{\"出货量\": 5270.0, \"价税合计\": 4200400.8, \"商品单价\": 797.04, \"成品名称\": \"三相四线多功能电能表T46(VJ)\", \"未税金额\": 4200400.8, \"规格型号\": \"DTSD1226-T46(VJ)\", \"成品物料代码\": \"C.3.T.0.00038\"}', 'SH2508140008', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (628, 1302, 'C.3.T.0.00038', '三相四线多功能电能表T46(VJ)', 'DTSD1226-T46(VJ)', 110.000000, 797.040000, 87674.400000, 87674.400000, 25, '{\"出货量\": 110.0, \"价税合计\": 87674.4, \"商品单价\": 797.04, \"成品名称\": \"三相四线多功能电能表T46(VJ)\", \"未税金额\": 87674.4, \"规格型号\": \"DTSD1226-T46(VJ)\", \"成品物料代码\": \"C.3.T.0.00038\"}', 'SH2508200016', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (629, 1303, 'C.3.S.0.00030', '三相四线多功能电能表SXVI(VK)-新', 'DTSD1226-SXVI(VK)', 2100.000000, 518.400000, 1088640.000000, 1088640.000000, 25, '{\"出货量\": 2100.0, \"价税合计\": 1088640.0, \"商品单价\": 518.4, \"成品名称\": \"三相四线多功能电能表SXVI(VK)-新\", \"未税金额\": 1088640.0, \"规格型号\": \"DTSD1226-SXVI(VK)\", \"成品物料代码\": \"C.3.S.0.00030\"}', 'SH2508200015', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (630, 1304, 'C.4.T.0.00654', 'MD-4G111(VF) 4G模块', 'MD-4G111(VF)', 110.000000, 0.100000, 11.000000, 11.000000, 25, '{\"出货量\": 110.0, \"价税合计\": 11.0, \"商品单价\": 0.1, \"成品名称\": \"MD-4G111(VF) 4G模块\", \"未税金额\": 11.0, \"规格型号\": \"MD-4G111(VF)\", \"成品物料代码\": \"C.4.T.0.00654\"}', 'SH2508200018', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (631, 1305, 'C.3.S.0.00030', '三相四线多功能电能表SXVI(VK)-新', 'DTSD1226-SXVI(VK)', 2900.000000, 518.400000, 1503360.000000, 1503360.000000, 25, '{\"出货量\": 2900.0, \"价税合计\": 1503360.0, \"商品单价\": 518.4, \"成品名称\": \"三相四线多功能电能表SXVI(VK)-新\", \"未税金额\": 1503360.0, \"规格型号\": \"DTSD1226-SXVI(VK)\", \"成品物料代码\": \"C.3.S.0.00030\"}', 'SH2509050002', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (632, 1306, 'C.4.T.0.00654', 'MD-4G111(VF) 4G模块', 'MD-4G111(VF)', 10000.000000, 0.100000, 1000.000000, 1000.000000, 25, '{\"出货量\": 10000.0, \"价税合计\": 1000.0, \"商品单价\": 0.1, \"成品名称\": \"MD-4G111(VF) 4G模块\", \"未税金额\": 1000.0, \"规格型号\": \"MD-4G111(VF)\", \"成品物料代码\": \"C.4.T.0.00654\"}', 'SH2509250002', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (633, 1307, 'C.1.T.0.0004500005', '单相多功能电能表T49(VH)_(马来市场)', 'DDSD1226-T49(VH)', 10000.000000, 403.380000, 4033800.000000, 4033800.000000, 25, '{\"出货量\": 10000.0, \"价税合计\": 4033800.0, \"商品单价\": 403.38, \"成品名称\": \"单相多功能电能表T49(VH)_(马来市场)\", \"未税金额\": 4033800.0, \"规格型号\": \"DDSD1226-T49(VH)\", \"成品物料代码\": \"C.1.T.0.0004500005\"}', 'SH2509250001', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (634, 1308, 'C.4.T.0.0068900002', 'MD-RS114(VB) 基于RS485的MODBS TCPMODBS RTUASVII转换模块_(DZG)', 'MD-RS114(VB)', 100.000000, 142.560000, 14256.000000, 14256.000000, 25, '{\"出货量\": 100.0, \"价税合计\": 14256.0, \"商品单价\": 142.56, \"成品名称\": \"MD-RS114(VB) 基于RS485的MODBS TCPMODBS RTUASVII转换模块_(DZG)\", \"未税金额\": 14256.0, \"规格型号\": \"MD-RS114(VB)\", \"成品物料代码\": \"C.4.T.0.0068900002\"}', 'SH2510170019', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (635, 1309, 'C.3.S.0.00026', '三相四线多功能电能表SXVI(VH)-新', 'DTSD1226-SXVI(VH)', 120.000000, 690.120000, 82814.400000, 82814.400000, 25, '{\"出货量\": 120.0, \"价税合计\": 82814.4, \"商品单价\": 690.12, \"成品名称\": \"三相四线多功能电能表SXVI(VH)-新\", \"未税金额\": 82814.4, \"规格型号\": \"DTSD1226-SXVI(VH)\", \"成品物料代码\": \"C.3.S.0.00026\"}', 'SH2510170020', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (636, 1310, 'C.1.T.0.0004500005', '单相多功能电能表T49(VH)_(马来市场)', 'DDSD1226-T49(VH)', 516.000000, 403.380000, 208144.080000, 208144.080000, 25, '{\"出货量\": 516.0, \"价税合计\": 208144.08, \"商品单价\": 403.38, \"成品名称\": \"单相多功能电能表T49(VH)_(马来市场)\", \"未税金额\": 208144.08, \"规格型号\": \"DDSD1226-T49(VH)\", \"成品物料代码\": \"C.1.T.0.0004500005\"}', 'SH2510290008', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (637, 1311, 'C.1.T.0.0004500005', '单相多功能电能表T49(VH)_(马来市场)', 'DDSD1226-T49(VH)', 9484.000000, 403.380000, 3825655.920000, 3825655.920000, 25, '{\"出货量\": 9484.0, \"价税合计\": 3825655.92, \"商品单价\": 403.38, \"成品名称\": \"单相多功能电能表T49(VH)_(马来市场)\", \"未税金额\": 3825655.92, \"规格型号\": \"DDSD1226-T49(VH)\", \"成品物料代码\": \"C.1.T.0.0004500005\"}', 'SH2510290008', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (638, 1312, 'C.4.T.0.00654', 'MD-4G111(VF) 4G模块', 'MD-4G111(VF)', 9990.000000, 0.100000, 999.000000, 999.000000, 25, '{\"出货量\": 9990.0, \"价税合计\": 999.0, \"商品单价\": 0.1, \"成品名称\": \"MD-4G111(VF) 4G模块\", \"未税金额\": 999.0, \"规格型号\": \"MD-4G111(VF)\", \"成品物料代码\": \"C.4.T.0.00654\"}', 'SH2510290009', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (639, 1313, 'C.4.T.0.00654', 'MD-4G111(VF) 4G模块', 'MD-4G111(VF)', 10.000000, 0.100000, 1.000000, 1.000000, 25, '{\"出货量\": 10.0, \"价税合计\": 1.0, \"商品单价\": 0.1, \"成品名称\": \"MD-4G111(VF) 4G模块\", \"未税金额\": 1.0, \"规格型号\": \"MD-4G111(VF)\", \"成品物料代码\": \"C.4.T.0.00654\"}', 'SH2510290009', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (640, 1314, 'C.3.S.0.00030', '三相四线多功能电能表SXVI(VK)-新', 'DTSD1226-SXVI(VK)', 2970.000000, 518.400000, 1539648.000000, 1539648.000000, 25, '{\"出货量\": 2970.0, \"价税合计\": 1539648.0, \"商品单价\": 518.4, \"成品名称\": \"三相四线多功能电能表SXVI(VK)-新\", \"未税金额\": 1539648.0, \"规格型号\": \"DTSD1226-SXVI(VK)\", \"成品物料代码\": \"C.3.S.0.00030\"}', 'SH2511140012', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (641, 1315, 'C.1.T.0.0004500005', '单相多功能电能表T49(VH)_(马来市场)', 'DDSD1226-T49(VH)', 4200.000000, 403.380000, 1694196.000000, 1694196.000000, 25, '{\"出货量\": 4200.0, \"价税合计\": 1694196.0, \"商品单价\": 403.38, \"成品名称\": \"单相多功能电能表T49(VH)_(马来市场)\", \"未税金额\": 1694196.0, \"规格型号\": \"DDSD1226-T49(VH)\", \"成品物料代码\": \"C.1.T.0.0004500005\"}', 'SH2511210018', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (642, 1316, 'C.4.T.0.00654', 'MD-4G111(VF) 4G模块', 'MD-4G111(VF)', 4200.000000, 0.100000, 420.000000, 420.000000, 25, '{\"出货量\": 4200.0, \"价税合计\": 420.0, \"商品单价\": 0.1, \"成品名称\": \"MD-4G111(VF) 4G模块\", \"未税金额\": 420.0, \"规格型号\": \"MD-4G111(VF)\", \"成品物料代码\": \"C.4.T.0.00654\"}', 'SH2511210019', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (643, 1317, 'C.3.T.0.00038', '三相四线多功能电能表T46(VJ)', 'DTSD1226-T46(VJ)', 5040.000000, 797.040000, 4017081.600000, 4017081.600000, 25, '{\"出货量\": 5040.0, \"价税合计\": 4017081.6, \"商品单价\": 797.04, \"成品名称\": \"三相四线多功能电能表T46(VJ)\", \"未税金额\": 4017081.6, \"规格型号\": \"DTSD1226-T46(VJ)\", \"成品物料代码\": \"C.3.T.0.00038\"}', 'SH2511240013', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (644, 1318, 'C.4.T.0.00654', 'MD-4G111(VF) 4G模块', 'MD-4G111(VF)', 5040.000000, 0.100000, 504.000000, 504.000000, 25, '{\"出货量\": 5040.0, \"价税合计\": 504.0, \"商品单价\": 0.1, \"成品名称\": \"MD-4G111(VF) 4G模块\", \"未税金额\": 504.0, \"规格型号\": \"MD-4G111(VF)\", \"成品物料代码\": \"C.4.T.0.00654\"}', 'SH2511240014', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (645, 1319, 'C.3.S.0.00030', '三相四线多功能电能表SXVI(VK)-新', 'DTSD1226-SXVI(VK)', 30.000000, 518.400000, 15552.000000, 15552.000000, 25, '{\"出货量\": 30.0, \"价税合计\": 15552.0, \"商品单价\": 518.4, \"成品名称\": \"三相四线多功能电能表SXVI(VK)-新\", \"未税金额\": 15552.0, \"规格型号\": \"DTSD1226-SXVI(VK)\", \"成品物料代码\": \"C.3.S.0.00030\"}', 'SH2511250009', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (646, 1320, 'C.3.T.0.00038', '三相四线多功能电能表T46(VJ)', 'DTSD1226-T46(VJ)', 4960.000000, 797.040000, 3953318.400000, 3953318.400000, 25, '{\"出货量\": 4960.0, \"价税合计\": 3953318.4, \"商品单价\": 797.04, \"成品名称\": \"三相四线多功能电能表T46(VJ)\", \"未税金额\": 3953318.4, \"规格型号\": \"DTSD1226-T46(VJ)\", \"成品物料代码\": \"C.3.T.0.00038\"}', 'SH2511280023', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (647, 1321, 'C.4.T.0.00654', 'MD-4G111(VF) 4G模块', 'MD-4G111(VF)', 5040.000000, 0.100000, 504.000000, 504.000000, 25, '{\"出货量\": 5040.0, \"价税合计\": 504.0, \"商品单价\": 0.1, \"成品名称\": \"MD-4G111(VF) 4G模块\", \"未税金额\": 504.0, \"规格型号\": \"MD-4G111(VF)\", \"成品物料代码\": \"C.4.T.0.00654\"}', 'SH2512030005', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (648, 1321, 'C.4.T.0.00654', 'MD-4G111(VF) 4G模块', 'MD-4G111(VF)', 4960.000000, 0.100000, 496.000000, 496.000000, 25, '{\"出货量\": 4960.0, \"价税合计\": 496.0, \"商品单价\": 0.1, \"成品名称\": \"MD-4G111(VF) 4G模块\", \"未税金额\": 496.0, \"规格型号\": \"MD-4G111(VF)\", \"成品物料代码\": \"C.4.T.0.00654\"}', 'SH2512030005', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (649, 1322, 'C.1.T.0.0004500005', '单相多功能电能表T49(VH)_(马来市场)', 'DDSD1226-T49(VH)', 10000.000000, 403.380000, 4033800.000000, 4033800.000000, 25, '{\"出货量\": 10000.0, \"价税合计\": 4033800.0, \"商品单价\": 403.38, \"成品名称\": \"单相多功能电能表T49(VH)_(马来市场)\", \"未税金额\": 4033800.0, \"规格型号\": \"DDSD1226-T49(VH)\", \"成品物料代码\": \"C.1.T.0.0004500005\"}', 'SH2512030004', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (650, 1323, 'C.3.T.0.00038', '三相四线多功能电能表T46(VJ)', 'DTSD1226-T46(VJ)', 5040.000000, 797.040000, 4017081.600000, 4017081.600000, 25, '{\"出货量\": 5040.0, \"价税合计\": 4017081.6, \"商品单价\": 797.04, \"成品名称\": \"三相四线多功能电能表T46(VJ)\", \"未税金额\": 4017081.6, \"规格型号\": \"DTSD1226-T46(VJ)\", \"成品物料代码\": \"C.3.T.0.00038\"}', 'SH2512090010', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (651, 1324, 'C.4.T.0.00654', 'MD-4G111(VF) 4G模块', 'MD-4G111(VF)', 5040.000000, 0.100000, 504.000000, 504.000000, 25, '{\"出货量\": 5040.0, \"价税合计\": 504.0, \"商品单价\": 0.1, \"成品名称\": \"MD-4G111(VF) 4G模块\", \"未税金额\": 504.0, \"规格型号\": \"MD-4G111(VF)\", \"成品物料代码\": \"C.4.T.0.00654\"}', 'SH2512090009', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (652, 1325, 'C.3.T.0.00038', '三相四线多功能电能表T46(VJ)', 'DTSD1226-T46(VJ)', 2730.000000, 797.040000, 2175919.200000, 2175919.200000, 25, '{\"出货量\": 2730.0, \"价税合计\": 2175919.2, \"商品单价\": 797.04, \"成品名称\": \"三相四线多功能电能表T46(VJ)\", \"未税金额\": 2175919.2, \"规格型号\": \"DTSD1226-T46(VJ)\", \"成品物料代码\": \"C.3.T.0.00038\"}', 'SH2512120024', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (653, 1326, 'C.3.S.0.00030', '三相四线多功能电能表SXVI(VK)-新', 'DTSD1226-SXVI(VK)', 1580.000000, 518.400000, 819072.000000, 819072.000000, 25, '{\"出货量\": 1580.0, \"价税合计\": 819072.0, \"商品单价\": 518.4, \"成品名称\": \"三相四线多功能电能表SXVI(VK)-新\", \"未税金额\": 819072.0, \"规格型号\": \"DTSD1226-SXVI(VK)\", \"成品物料代码\": \"C.3.S.0.00030\"}', 'SH2512120023', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (654, 1327, 'C.4.T.0.00654', 'MD-4G111(VF) 4G模块', 'MD-4G111(VF)', 2730.000000, 0.100000, 273.000000, 273.000000, 25, '{\"出货量\": 2730.0, \"价税合计\": 273.0, \"商品单价\": 0.1, \"成品名称\": \"MD-4G111(VF) 4G模块\", \"未税金额\": 273.0, \"规格型号\": \"MD-4G111(VF)\", \"成品物料代码\": \"C.4.T.0.00654\"}', 'SH2512160015', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (655, 1328, 'C.4.T.0.00654', 'MD-4G111(VF) 4G模块', 'MD-4G111(VF)', 4960.000000, 0.100000, 496.000000, 496.000000, 25, '{\"出货量\": 4960.0, \"价税合计\": 496.0, \"商品单价\": 0.1, \"成品名称\": \"MD-4G111(VF) 4G模块\", \"未税金额\": 496.0, \"规格型号\": \"MD-4G111(VF)\", \"成品物料代码\": \"C.4.T.0.00654\"}', 'SH2512160014', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (656, 1329, 'C.4.T.0.00654', 'MD-4G111(VF) 4G模块', 'MD-4G111(VF)', 4713.000000, 0.100000, 471.300000, 471.300000, 25, '{\"出货量\": 4713.0, \"价税合计\": 471.3, \"商品单价\": 0.1, \"成品名称\": \"MD-4G111(VF) 4G模块\", \"未税金额\": 471.3, \"规格型号\": \"MD-4G111(VF)\", \"成品物料代码\": \"C.4.T.0.00654\"}', 'SH2512290007', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (657, 1330, 'C.3.T.0.00038', '三相四线多功能电能表T46(VJ)', 'DTSD1226-T46(VJ)', 4713.000000, 797.040000, 3756449.520000, 3756449.520000, 25, '{\"出货量\": 4713.0, \"价税合计\": 3756449.52, \"商品单价\": 797.04, \"成品名称\": \"三相四线多功能电能表T46(VJ)\", \"未税金额\": 3756449.52, \"规格型号\": \"DTSD1226-T46(VJ)\", \"成品物料代码\": \"C.3.T.0.00038\"}', 'SH2512290006', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (658, 1331, 'C.3.S.0.00030', '三相四线多功能电能表SXVI(VK)-新', 'DTSD1226-SXVI(VK)', 320.000000, 518.400000, 165888.000000, 165888.000000, 25, '{\"出货量\": 320.0, \"价税合计\": 165888.0, \"商品单价\": 518.4, \"成品名称\": \"三相四线多功能电能表SXVI(VK)-新\", \"未税金额\": 165888.0, \"规格型号\": \"DTSD1226-SXVI(VK)\", \"成品物料代码\": \"C.3.S.0.00030\"}', 'SH2512290008', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (659, 1332, 'C.3.S.0.00030', '三相四线多功能电能表SXVI(VK)-新', 'DTSD1226-SXVI(VK)', 1000.000000, 693.360000, 693360.000000, 693360.000000, 25, '{\"出货量\": 1000.0, \"价税合计\": 693360.0, \"商品单价\": 693.36, \"成品名称\": \"三相四线多功能电能表SXVI(VK)-新\", \"未税金额\": 693360.0, \"规格型号\": \"DTSD1226-SXVI(VK)\", \"成品物料代码\": \"C.3.S.0.00030\"}', 'SH2601040003', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (660, 1333, 'C.3.S.0.00030', '三相四线多功能电能表SXVI(VK)-新', 'DTSD1226-SXVI(VK)', 100.000000, 518.400000, 51840.000000, 51840.000000, 25, '{\"出货量\": 100.0, \"价税合计\": 51840.0, \"商品单价\": 518.4, \"成品名称\": \"三相四线多功能电能表SXVI(VK)-新\", \"未税金额\": 51840.0, \"规格型号\": \"DTSD1226-SXVI(VK)\", \"成品物料代码\": \"C.3.S.0.00030\"}', 'SH2512290008', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (661, 1334, 'C.3.S.0.00030', '三相四线多功能电能表SXVI(VK)-新', 'DTSD1226-SXVI(VK)', 2000.000000, 518.400000, 1036800.000000, 1036800.000000, 25, '{\"出货量\": 2000.0, \"价税合计\": 1036800.0, \"商品单价\": 518.4, \"成品名称\": \"三相四线多功能电能表SXVI(VK)-新\", \"未税金额\": 1036800.0, \"规格型号\": \"DTSD1226-SXVI(VK)\", \"成品物料代码\": \"C.3.S.0.00030\"}', 'SH2601200021', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (662, 1335, 'C.3.S.0.00030', '三相四线多功能电能表SXVI(VK)-新', 'DTSD1226-SXVI(VK)', 70.000000, 518.400000, 36288.000000, 36288.000000, 25, '{\"出货量\": 70.0, \"价税合计\": 36288.0, \"商品单价\": 518.4, \"成品名称\": \"三相四线多功能电能表SXVI(VK)-新\", \"未税金额\": 36288.0, \"规格型号\": \"DTSD1226-SXVI(VK)\", \"成品物料代码\": \"C.3.S.0.00030\"}', 'SH2601200021', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (663, 1336, 'C.1.C.2.00023', '单相有功电能表C8(VG)', 'DDS1226-C8(VG)', 3240.000000, 80.190000, 259815.600000, 259815.600000, 25, '{\"出货量\": 3240.0, \"价税合计\": 259815.6, \"商品单价\": 80.19, \"成品名称\": \"单相有功电能表C8(VG)\", \"未税金额\": 259815.6, \"规格型号\": \"DDS1226-C8(VG)\", \"成品物料代码\": \"C.1.C.2.00023\"}', 'SH2604100007', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (664, 1337, 'C.1.C.2.00023', '单相有功电能表C8(VG)', 'DDS1226-C8(VG)', 3170.000000, 80.190000, 254202.300000, 254202.300000, 25, '{\"出货量\": 3170.0, \"价税合计\": 254202.3, \"商品单价\": 80.19, \"成品名称\": \"单相有功电能表C8(VG)\", \"未税金额\": 254202.3, \"规格型号\": \"DDS1226-C8(VG)\", \"成品物料代码\": \"C.1.C.2.00023\"}', 'SH2604100007', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (665, 1338, 'C.1.C.2.00023', '单相有功电能表C8(VG)', 'DDS1226-C8(VG)', 3850.000000, 80.190000, 308731.500000, 308731.500000, 25, '{\"出货量\": 3850.0, \"价税合计\": 308731.5, \"商品单价\": 80.19, \"成品名称\": \"单相有功电能表C8(VG)\", \"未税金额\": 308731.5, \"规格型号\": \"DDS1226-C8(VG)\", \"成品物料代码\": \"C.1.C.2.00023\"}', 'SH2604100007', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (666, 1339, 'C.1.C.2.00023', '单相有功电能表C8(VG)', 'DDS1226-C8(VG)', 540.000000, 80.190000, 43302.600000, 43302.600000, 25, '{\"出货量\": 540.0, \"价税合计\": 43302.6, \"商品单价\": 80.19, \"成品名称\": \"单相有功电能表C8(VG)\", \"未税金额\": 43302.6, \"规格型号\": \"DDS1226-C8(VG)\", \"成品物料代码\": \"C.1.C.2.00023\"}', 'SH2604100007', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (667, 1340, 'C.1.C.2.00023', '单相有功电能表C8(VG)', 'DDS1226-C8(VG)', 540.000000, 80.190000, 43302.600000, 43302.600000, 25, '{\"出货量\": 540.0, \"价税合计\": 43302.6, \"商品单价\": 80.19, \"成品名称\": \"单相有功电能表C8(VG)\", \"未税金额\": 43302.6, \"规格型号\": \"DDS1226-C8(VG)\", \"成品物料代码\": \"C.1.C.2.00023\"}', 'SH2604150004', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (668, 1341, 'C.1.C.2.00023', '单相有功电能表C8(VG)', 'DDS1226-C8(VG)', 1080.000000, 80.190000, 86605.200000, 86605.200000, 25, '{\"出货量\": 1080.0, \"价税合计\": 86605.2, \"商品单价\": 80.19, \"成品名称\": \"单相有功电能表C8(VG)\", \"未税金额\": 86605.2, \"规格型号\": \"DDS1226-C8(VG)\", \"成品物料代码\": \"C.1.C.2.00023\"}', 'SH2604150004', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (669, 1342, 'C.1.C.2.00023', '单相有功电能表C8(VG)', 'DDS1226-C8(VG)', 3780.000000, 80.190000, 303118.200000, 303118.200000, 25, '{\"出货量\": 3780.0, \"价税合计\": 303118.2, \"商品单价\": 80.19, \"成品名称\": \"单相有功电能表C8(VG)\", \"未税金额\": 303118.2, \"规格型号\": \"DDS1226-C8(VG)\", \"成品物料代码\": \"C.1.C.2.00023\"}', 'SH2604150004', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (670, 1343, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 1680.000000, 481.950000, 809676.000000, 809676.000000, 25, '{\"出货量\": 1680.0, \"价税合计\": 809676.0, \"商品单价\": 481.95, \"成品名称\": \"三相四线多功能电能表CXVI(VA)-新\", \"未税金额\": 809676.0, \"规格型号\": \"DTSD1226-CXVI(VA)\", \"成品物料代码\": \"C.3.C.2.00025\"}', 'SH2604150003', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (671, 1344, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 3696.000000, 481.950000, 1781287.200000, 1781287.200000, 25, '{\"出货量\": 3696.0, \"价税合计\": 1781287.2, \"商品单价\": 481.95, \"成品名称\": \"三相四线多功能电能表CXVI(VA)-新\", \"未税金额\": 1781287.2, \"规格型号\": \"DTSD1226-CXVI(VA)\", \"成品物料代码\": \"C.3.C.2.00025\"}', 'SH2604150002', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (672, 1345, 'C.1.C.2.00023', '单相有功电能表C8(VG)', 'DDS1226-C8(VG)', 2700.000000, 80.190000, 216513.000000, 216513.000000, 25, '{\"出货量\": 2700.0, \"价税合计\": 216513.0, \"商品单价\": 80.19, \"成品名称\": \"单相有功电能表C8(VG)\", \"未税金额\": 216513.0, \"规格型号\": \"DDS1226-C8(VG)\", \"成品物料代码\": \"C.1.C.2.00023\"}', 'SH2604160008', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (673, 1346, 'C.1.C.2.00023', '单相有功电能表C8(VG)', 'DDS1226-C8(VG)', 4320.000000, 80.190000, 346420.800000, 346420.800000, 25, '{\"出货量\": 4320.0, \"价税合计\": 346420.8, \"商品单价\": 80.19, \"成品名称\": \"单相有功电能表C8(VG)\", \"未税金额\": 346420.8, \"规格型号\": \"DDS1226-C8(VG)\", \"成品物料代码\": \"C.1.C.2.00023\"}', 'SH2604160008', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (674, 1347, 'C.1.C.2.00023', '单相有功电能表C8(VG)', 'DDS1226-C8(VG)', 4860.000000, 80.190000, 389723.400000, 389723.400000, 25, '{\"出货量\": 4860.0, \"价税合计\": 389723.4, \"商品单价\": 80.19, \"成品名称\": \"单相有功电能表C8(VG)\", \"未税金额\": 389723.4, \"规格型号\": \"DDS1226-C8(VG)\", \"成品物料代码\": \"C.1.C.2.00023\"}', 'SH2604160008', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (675, 1348, 'C.1.C.2.00023', '单相有功电能表C8(VG)', 'DDS1226-C8(VG)', 12420.000000, 80.190000, 995959.800000, 995959.800000, 25, '{\"出货量\": 12420.0, \"价税合计\": 995959.8, \"商品单价\": 80.19, \"成品名称\": \"单相有功电能表C8(VG)\", \"未税金额\": 995959.8, \"规格型号\": \"DDS1226-C8(VG)\", \"成品物料代码\": \"C.1.C.2.00023\"}', 'SH2604210010', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (676, 1349, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 3360.000000, 481.950000, 1619352.000000, 1619352.000000, 25, '{\"出货量\": 3360.0, \"价税合计\": 1619352.0, \"商品单价\": 481.95, \"成品名称\": \"三相四线多功能电能表CXVI(VA)-新\", \"未税金额\": 1619352.0, \"规格型号\": \"DTSD1226-CXVI(VA)\", \"成品物料代码\": \"C.3.C.2.00025\"}', 'SH2604220010', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (677, 1350, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 3528.000000, 481.950000, 1700319.600000, 1700319.600000, 25, '{\"出货量\": 3528.0, \"价税合计\": 1700319.6, \"商品单价\": 481.95, \"成品名称\": \"三相四线多功能电能表CXVI(VA)-新\", \"未税金额\": 1700319.6, \"规格型号\": \"DTSD1226-CXVI(VA)\", \"成品物料代码\": \"C.3.C.2.00025\"}', 'SH2604220011', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (678, 1351, 'C.1.C.2.00023', '单相有功电能表C8(VG)', 'DDS1226-C8(VG)', 540.000000, 80.190000, 43302.600000, 43302.600000, 25, '{\"出货量\": 540.0, \"价税合计\": 43302.6, \"商品单价\": 80.19, \"成品名称\": \"单相有功电能表C8(VG)\", \"未税金额\": 43302.6, \"规格型号\": \"DDS1226-C8(VG)\", \"成品物料代码\": \"C.1.C.2.00023\"}', 'SH2604210010', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (679, 1352, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 168.000000, 481.950000, 80967.600000, 80967.600000, 25, '{\"出货量\": 168.0, \"价税合计\": 80967.6, \"商品单价\": 481.95, \"成品名称\": \"三相四线多功能电能表CXVI(VA)-新\", \"未税金额\": 80967.6, \"规格型号\": \"DTSD1226-CXVI(VA)\", \"成品物料代码\": \"C.3.C.2.00025\"}', 'SH2604220011', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (680, 1353, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 168.000000, 481.950000, 80967.600000, 80967.600000, 25, '{\"出货量\": 168.0, \"价税合计\": 80967.6, \"商品单价\": 481.95, \"成品名称\": \"三相四线多功能电能表CXVI(VA)-新\", \"未税金额\": 80967.6, \"规格型号\": \"DTSD1226-CXVI(VA)\", \"成品物料代码\": \"C.3.C.2.00025\"}', 'SH2604220011', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (681, 1354, 'C.1.C.2.00023', '单相有功电能表C8(VG)', 'DDS1226-C8(VG)', 8960.000000, 80.190000, 718502.400000, 718502.400000, 25, '{\"出货量\": 8960.0, \"价税合计\": 718502.4, \"商品单价\": 80.19, \"成品名称\": \"单相有功电能表C8(VG)\", \"未税金额\": 718502.4, \"规格型号\": \"DDS1226-C8(VG)\", \"成品物料代码\": \"C.1.C.2.00023\"}', 'SH2604220009', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (682, 1355, 'C.1.C.2.00023', '单相有功电能表C8(VG)', 'DDS1226-C8(VG)', 7570.000000, 80.190000, 607038.300000, 607038.300000, 25, '{\"出货量\": 7570.0, \"价税合计\": 607038.3, \"商品单价\": 80.19, \"成品名称\": \"单相有功电能表C8(VG)\", \"未税金额\": 607038.3, \"规格型号\": \"DDS1226-C8(VG)\", \"成品物料代码\": \"C.1.C.2.00023\"}', 'SH2604240012', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (683, 1356, 'C.1.C.2.00023', '单相有功电能表C8(VG)', 'DDS1226-C8(VG)', 4310.000000, 80.190000, 345618.900000, 345618.900000, 25, '{\"出货量\": 4310.0, \"价税合计\": 345618.9, \"商品单价\": 80.19, \"成品名称\": \"单相有功电能表C8(VG)\", \"未税金额\": 345618.9, \"规格型号\": \"DDS1226-C8(VG)\", \"成品物料代码\": \"C.1.C.2.00023\"}', 'SH2604240012', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (684, 1357, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 149.000000, 481.950000, 71810.550000, 71810.550000, 25, '{\"出货量\": 149.0, \"价税合计\": 71810.55, \"商品单价\": 481.95, \"成品名称\": \"三相四线多功能电能表CXVI(VA)-新\", \"未税金额\": 71810.55, \"规格型号\": \"DTSD1226-CXVI(VA)\", \"成品物料代码\": \"C.3.C.2.00025\"}', 'SH2604240013', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (685, 1358, 'C.1.C.2.00023', '单相有功电能表C8(VG)', 'DDS1226-C8(VG)', 4860.000000, 80.190000, 389723.400000, 389723.400000, 25, '{\"出货量\": 4860.0, \"价税合计\": 389723.4, \"商品单价\": 80.19, \"成品名称\": \"单相有功电能表C8(VG)\", \"未税金额\": 389723.4, \"规格型号\": \"DDS1226-C8(VG)\", \"成品物料代码\": \"C.1.C.2.00023\"}', 'SH2604300001', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (686, 1359, 'C.1.C.2.00023', '单相有功电能表C8(VG)', 'DDS1226-C8(VG)', 7020.000000, 80.190000, 562933.800000, 562933.800000, 25, '{\"出货量\": 7020.0, \"价税合计\": 562933.8, \"商品单价\": 80.19, \"成品名称\": \"单相有功电能表C8(VG)\", \"未税金额\": 562933.8, \"规格型号\": \"DDS1226-C8(VG)\", \"成品物料代码\": \"C.1.C.2.00023\"}', 'SH2604300001', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (687, 1360, 'C.1.C.2.00023', '单相有功电能表C8(VG)', 'DDS1226-C8(VG)', 7020.000000, 80.190000, 562933.800000, 562933.800000, 25, '{\"出货量\": 7020.0, \"价税合计\": 562933.8, \"商品单价\": 80.19, \"成品名称\": \"单相有功电能表C8(VG)\", \"未税金额\": 562933.8, \"规格型号\": \"DDS1226-C8(VG)\", \"成品物料代码\": \"C.1.C.2.00023\"}', 'SH2605080017', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (688, 1361, 'C.1.C.2.00023', '单相有功电能表C8(VG)', 'DDS1226-C8(VG)', 4860.000000, 80.190000, 389723.400000, 389723.400000, 25, '{\"出货量\": 4860.0, \"价税合计\": 389723.4, \"商品单价\": 80.19, \"成品名称\": \"单相有功电能表C8(VG)\", \"未税金额\": 389723.4, \"规格型号\": \"DDS1226-C8(VG)\", \"成品物料代码\": \"C.1.C.2.00023\"}', 'SH2605080017', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (689, 1362, 'C.1.C.2.00023', '单相有功电能表C8(VG)', 'DDS1226-C8(VG)', 5400.000000, 80.190000, 433026.000000, 433026.000000, 25, '{\"出货量\": 5400.0, \"价税合计\": 433026.0, \"商品单价\": 80.19, \"成品名称\": \"单相有功电能表C8(VG)\", \"未税金额\": 433026.0, \"规格型号\": \"DDS1226-C8(VG)\", \"成品物料代码\": \"C.1.C.2.00023\"}', 'SH2605140004', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (690, 1363, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 840.000000, 481.950000, 404838.000000, 404838.000000, 25, '{\"出货量\": 840.0, \"价税合计\": 404838.0, \"商品单价\": 481.95, \"成品名称\": \"三相四线多功能电能表CXVI(VA)-新\", \"未税金额\": 404838.0, \"规格型号\": \"DTSD1226-CXVI(VA)\", \"成品物料代码\": \"C.3.C.2.00025\"}', 'SH2605180007', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (691, 1364, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 168.000000, 481.950000, 80967.600000, 80967.600000, 25, '{\"出货量\": 168.0, \"价税合计\": 80967.6, \"商品单价\": 481.95, \"成品名称\": \"三相四线多功能电能表CXVI(VA)-新\", \"未税金额\": 80967.6, \"规格型号\": \"DTSD1226-CXVI(VA)\", \"成品物料代码\": \"C.3.C.2.00025\"}', 'SH2605180007', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (692, 1365, 'C.1.C.2.00023', '单相有功电能表C8(VG)', 'DDS1226-C8(VG)', 540.000000, 80.190000, 43302.600000, 43302.600000, 25, '{\"出货量\": 540.0, \"价税合计\": 43302.6, \"商品单价\": 80.19, \"成品名称\": \"单相有功电能表C8(VG)\", \"未税金额\": 43302.6, \"规格型号\": \"DDS1226-C8(VG)\", \"成品物料代码\": \"C.1.C.2.00023\"}', 'SH2605180005', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (693, 1366, 'C.1.C.2.00023', '单相有功电能表C8(VG)', 'DDS1226-C8(VG)', 12400.000000, 80.190000, 994356.000000, 994356.000000, 25, '{\"出货量\": 12400.0, \"价税合计\": 994356.0, \"商品单价\": 80.19, \"成品名称\": \"单相有功电能表C8(VG)\", \"未税金额\": 994356.0, \"规格型号\": \"DDS1226-C8(VG)\", \"成品物料代码\": \"C.1.C.2.00023\"}', 'SH2605180006', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (694, 1367, 'C.1.C.2.00023', '单相有功电能表C8(VG)', 'DDS1226-C8(VG)', 8420.000000, 80.190000, 675199.800000, 675199.800000, 25, '{\"出货量\": 8420.0, \"价税合计\": 675199.8, \"商品单价\": 80.19, \"成品名称\": \"单相有功电能表C8(VG)\", \"未税金额\": 675199.8, \"规格型号\": \"DDS1226-C8(VG)\", \"成品物料代码\": \"C.1.C.2.00023\"}', 'SH2605180005', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (695, 1368, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 1848.000000, 481.950000, 890643.600000, 890643.600000, 25, '{\"出货量\": 1848.0, \"价税合计\": 890643.6, \"商品单价\": 481.95, \"成品名称\": \"三相四线多功能电能表CXVI(VA)-新\", \"未税金额\": 890643.6, \"规格型号\": \"DTSD1226-CXVI(VA)\", \"成品物料代码\": \"C.3.C.2.00025\"}', 'SH2605190018', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (696, 1369, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 1008.000000, 481.950000, 485805.600000, 485805.600000, 25, '{\"出货量\": 1008.0, \"价税合计\": 485805.6, \"商品单价\": 481.95, \"成品名称\": \"三相四线多功能电能表CXVI(VA)-新\", \"未税金额\": 485805.6, \"规格型号\": \"DTSD1226-CXVI(VA)\", \"成品物料代码\": \"C.3.C.2.00025\"}', 'SH2605190018', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (697, 1370, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 504.000000, 481.950000, 242902.800000, 242902.800000, 25, '{\"出货量\": 504.0, \"价税合计\": 242902.8, \"商品单价\": 481.95, \"成品名称\": \"三相四线多功能电能表CXVI(VA)-新\", \"未税金额\": 242902.8, \"规格型号\": \"DTSD1226-CXVI(VA)\", \"成品物料代码\": \"C.3.C.2.00025\"}', 'SH2605190018', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (698, 1371, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 3360.000000, 481.950000, 1619352.000000, 1619352.000000, 25, '{\"出货量\": 3360.0, \"价税合计\": 1619352.0, \"商品单价\": 481.95, \"成品名称\": \"三相四线多功能电能表CXVI(VA)-新\", \"未税金额\": 1619352.0, \"规格型号\": \"DTSD1226-CXVI(VA)\", \"成品物料代码\": \"C.3.C.2.00025\"}', 'SH2605280028', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (699, 1372, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 168.000000, 481.950000, 80967.600000, 80967.600000, 25, '{\"出货量\": 168.0, \"价税合计\": 80967.6, \"商品单价\": 481.95, \"成品名称\": \"三相四线多功能电能表CXVI(VA)-新\", \"未税金额\": 80967.6, \"规格型号\": \"DTSD1226-CXVI(VA)\", \"成品物料代码\": \"C.3.C.2.00025\"}', 'SH2606040013', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (700, 1373, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 2432.000000, 481.950000, 1172102.400000, 1172102.400000, 25, '{\"出货量\": 2432.0, \"价税合计\": 1172102.4, \"商品单价\": 481.95, \"成品名称\": \"三相四线多功能电能表CXVI(VA)-新\", \"未税金额\": 1172102.4, \"规格型号\": \"DTSD1226-CXVI(VA)\", \"成品物料代码\": \"C.3.C.2.00025\"}', 'SH2606040013', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (701, 1374, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 44.000000, 481.950000, 21205.800000, 21205.800000, 25, '{\"出货量\": 44.0, \"价税合计\": 21205.8, \"商品单价\": 481.95, \"成品名称\": \"三相四线多功能电能表CXVI(VA)-新\", \"未税金额\": 21205.8, \"规格型号\": \"DTSD1226-CXVI(VA)\", \"成品物料代码\": \"C.3.C.2.00025\"}', 'SH2606080003', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (702, 1375, 'C.1.C.2.00021', '单相有功电能表C8(VD)', 'DDS1226-C8(VD)', 4320.000000, 85.860000, 370915.200000, 370915.200000, 25, '{\"出货量\": 4320.0, \"价税合计\": 370915.2, \"商品单价\": 85.86, \"成品名称\": \"单相有功电能表C8(VD)\", \"未税金额\": 370915.2, \"规格型号\": \"DDS1226-C8(VD)\", \"成品物料代码\": \"C.1.C.2.00021\"}', 'SH2606170024', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (703, 1376, 'C.1.C.2.00021', '单相有功电能表C8(VD)', 'DDS1226-C8(VD)', 5940.000000, 85.860000, 510008.400000, 510008.400000, 25, '{\"出货量\": 5940.0, \"价税合计\": 510008.4, \"商品单价\": 85.86, \"成品名称\": \"单相有功电能表C8(VD)\", \"未税金额\": 510008.4, \"规格型号\": \"DDS1226-C8(VD)\", \"成品物料代码\": \"C.1.C.2.00021\"}', 'SH2606170024', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (704, 1377, 'C.1.C.2.00021', '单相有功电能表C8(VD)', 'DDS1226-C8(VD)', 3780.000000, 85.860000, 324550.800000, 324550.800000, 25, '{\"出货量\": 3780.0, \"价税合计\": 324550.8, \"商品单价\": 85.86, \"成品名称\": \"单相有功电能表C8(VD)\", \"未税金额\": 324550.8, \"规格型号\": \"DDS1226-C8(VD)\", \"成品物料代码\": \"C.1.C.2.00021\"}', 'SH2606230001', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (705, 1378, 'C.1.C.2.00021', '单相有功电能表C8(VD)', 'DDS1226-C8(VD)', 1080.000000, 85.860000, 92728.800000, 92728.800000, 25, '{\"出货量\": 1080.0, \"价税合计\": 92728.8, \"商品单价\": 85.86, \"成品名称\": \"单相有功电能表C8(VD)\", \"未税金额\": 92728.8, \"规格型号\": \"DDS1226-C8(VD)\", \"成品物料代码\": \"C.1.C.2.00021\"}', 'SH2606230001', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (706, 1379, 'C.1.C.2.00021', '单相有功电能表C8(VD)', 'DDS1226-C8(VD)', 2215.000000, 85.860000, 190179.900000, 190179.900000, 25, '{\"出货量\": 2215.0, \"价税合计\": 190179.9, \"商品单价\": 85.86, \"成品名称\": \"单相有功电能表C8(VD)\", \"未税金额\": 190179.9, \"规格型号\": \"DDS1226-C8(VD)\", \"成品物料代码\": \"C.1.C.2.00021\"}', 'SH2606230001', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (707, 1380, 'C.1.C.2.00021', '单相有功电能表C8(VD)', 'DDS1226-C8(VD)', 2160.000000, 85.860000, 185457.600000, 185457.600000, 25, '{\"出货量\": 2160.0, \"价税合计\": 185457.6, \"商品单价\": 85.86, \"成品名称\": \"单相有功电能表C8(VD)\", \"未税金额\": 185457.6, \"规格型号\": \"DDS1226-C8(VD)\", \"成品物料代码\": \"C.1.C.2.00021\"}', 'SH2606230001', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (708, 1381, 'C.1.C.2.00021', '单相有功电能表C8(VD)', 'DDS1226-C8(VD)', 505.000000, 85.860000, 43359.300000, 43359.300000, 25, '{\"出货量\": 505.0, \"价税合计\": 43359.3, \"商品单价\": 85.86, \"成品名称\": \"单相有功电能表C8(VD)\", \"未税金额\": 43359.3, \"规格型号\": \"DDS1226-C8(VD)\", \"成品物料代码\": \"C.1.C.2.00021\"}', 'SH2606230001', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (709, 1382, 'C.4.T.0.00547', 'MT-3NSXL(VC)RF通讯模块', 'MT-3NSXL(VC)', 1224.000000, 0.100000, 122.400000, 122.400000, 25, '{\"出货量\": 1224.0, \"价税合计\": 122.4, \"商品单价\": 0.1, \"成品名称\": \"MT-3NSXL(VC)RF通讯模块\", \"未税金额\": 122.4, \"规格型号\": \"MT-3NSXL(VC)\", \"成品物料代码\": \"C.4.T.0.00547\"}', 'SH2606290012', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (710, 1383, 'C.1.T.0.00032', '单相多功能电能表T49(VB)', 'DDSD1226-T49(VB)', 1260.000000, 218.700000, 275562.000000, 275562.000000, 25, '{\"出货量\": 1260.0, \"价税合计\": 275562.0, \"商品单价\": 218.7, \"成品名称\": \"单相多功能电能表T49(VB)\", \"未税金额\": 275562.0, \"规格型号\": \"DDSD1226-T49(VB)\", \"成品物料代码\": \"C.1.T.0.00032\"}', 'SH2606290005', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (711, 1384, 'C.4.T.0.00547', 'MT-3NSXL(VC)RF通讯模块', 'MT-3NSXL(VC)', 8160.000000, 0.100000, 816.000000, 816.000000, 25, '{\"出货量\": 8160.0, \"价税合计\": 816.0, \"商品单价\": 0.1, \"成品名称\": \"MT-3NSXL(VC)RF通讯模块\", \"未税金额\": 816.0, \"规格型号\": \"MT-3NSXL(VC)\", \"成品物料代码\": \"C.4.T.0.00547\"}', 'SH2606290006', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (712, 1385, 'C.1.T.0.00032', '单相多功能电能表T49(VB)', 'DDSD1226-T49(VB)', 6720.000000, 218.700000, 1469664.000000, 1469664.000000, 25, '{\"出货量\": 6720.0, \"价税合计\": 1469664.0, \"商品单价\": 218.7, \"成品名称\": \"单相多功能电能表T49(VB)\", \"未税金额\": 1469664.0, \"规格型号\": \"DDSD1226-T49(VB)\", \"成品物料代码\": \"C.1.T.0.00032\"}', 'SH2606290005', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (713, 1386, 'C.3.T.0.00030', '三相四线多功能电能表T46(VC)', 'DTSD1226-T46(VC)', 1050.000000, 486.000000, 510300.000000, 510300.000000, 25, '{\"出货量\": 1050.0, \"价税合计\": 510300.0, \"商品单价\": 486.0, \"成品名称\": \"三相四线多功能电能表T46(VC)\", \"未税金额\": 510300.0, \"规格型号\": \"DTSD1226-T46(VC)\", \"成品物料代码\": \"C.3.T.0.00030\"}', 'SH2606290011', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (714, 1387, 'C.4.T.0.00547', 'MT-3NSXL(VC)RF通讯模块', 'MT-3NSXL(VC)', 2652.000000, 0.100000, 265.200000, 265.200000, 25, '{\"出货量\": 2652.0, \"价税合计\": 265.2, \"商品单价\": 0.1, \"成品名称\": \"MT-3NSXL(VC)RF通讯模块\", \"未税金额\": 265.2, \"规格型号\": \"MT-3NSXL(VC)\", \"成品物料代码\": \"C.4.T.0.00547\"}', 'SH2607020014', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (715, 1388, 'C.4.T.0.00547', 'MT-3NSXL(VC)RF通讯模块', 'MT-3NSXL(VC)', 5100.000000, 0.100000, 510.000000, 510.000000, 25, '{\"出货量\": 5100.0, \"价税合计\": 510.0, \"商品单价\": 0.1, \"成品名称\": \"MT-3NSXL(VC)RF通讯模块\", \"未税金额\": 510.0, \"规格型号\": \"MT-3NSXL(VC)\", \"成品物料代码\": \"C.4.T.0.00547\"}', 'SH2607020012', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (716, 1389, 'C.1.T.0.00032', '单相多功能电能表T49(VB)', 'DDSD1226-T49(VB)', 2100.000000, 218.700000, 459270.000000, 459270.000000, 25, '{\"出货量\": 2100.0, \"价税合计\": 459270.0, \"商品单价\": 218.7, \"成品名称\": \"单相多功能电能表T49(VB)\", \"未税金额\": 459270.0, \"规格型号\": \"DDSD1226-T49(VB)\", \"成品物料代码\": \"C.1.T.0.00032\"}', 'SH2607020011', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (717, 1390, 'C.1.T.0.00032', '单相多功能电能表T49(VB)', 'DDSD1226-T49(VB)', 2940.000000, 218.700000, 642978.000000, 642978.000000, 25, '{\"出货量\": 2940.0, \"价税合计\": 642978.0, \"商品单价\": 218.7, \"成品名称\": \"单相多功能电能表T49(VB)\", \"未税金额\": 642978.0, \"规格型号\": \"DDSD1226-T49(VB)\", \"成品物料代码\": \"C.1.T.0.00032\"}', 'SH2607020011', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (718, 1391, 'C.3.T.0.00030', '三相四线多功能电能表T46(VC)', 'DTSD1226-T46(VC)', 2520.000000, 486.000000, 1224720.000000, 1224720.000000, 25, '{\"出货量\": 2520.0, \"价税合计\": 1224720.0, \"商品单价\": 486.0, \"成品名称\": \"三相四线多功能电能表T46(VC)\", \"未税金额\": 1224720.0, \"规格型号\": \"DTSD1226-T46(VC)\", \"成品物料代码\": \"C.3.T.0.00030\"}', 'SH2607020013', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (719, 1392, 'C.3.T.0.00030', '三相四线多功能电能表T46(VC)', 'DTSD1226-T46(VC)', 840.000000, 486.000000, 408240.000000, 408240.000000, 25, '{\"出货量\": 840.0, \"价税合计\": 408240.0, \"商品单价\": 486.0, \"成品名称\": \"三相四线多功能电能表T46(VC)\", \"未税金额\": 408240.0, \"规格型号\": \"DTSD1226-T46(VC)\", \"成品物料代码\": \"C.3.T.0.00030\"}', 'SH2607130003', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (720, 1393, 'C.1.T.0.00032', '单相多功能电能表T49(VB)', 'DDSD1226-T49(VB)', 3780.000000, 218.700000, 826686.000000, 826686.000000, 25, '{\"出货量\": 3780.0, \"价税合计\": 826686.0, \"商品单价\": 218.7, \"成品名称\": \"单相多功能电能表T49(VB)\", \"未税金额\": 826686.0, \"规格型号\": \"DDSD1226-T49(VB)\", \"成品物料代码\": \"C.1.T.0.00032\"}', 'SH2607130001', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (721, 1394, 'C.1.T.0.00032', '单相多功能电能表T49(VB)', 'DDSD1226-T49(VB)', 2940.000000, 218.700000, 642978.000000, 642978.000000, 25, '{\"出货量\": 2940.0, \"价税合计\": 642978.0, \"商品单价\": 218.7, \"成品名称\": \"单相多功能电能表T49(VB)\", \"未税金额\": 642978.0, \"规格型号\": \"DDSD1226-T49(VB)\", \"成品物料代码\": \"C.1.T.0.00032\"}', 'SH2607130001', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (722, 1395, 'C.4.T.0.00547', 'MT-3NSXL(VC)RF通讯模块', 'MT-3NSXL(VC)', 4088.000000, 0.100000, 408.800000, 408.800000, 25, '{\"出货量\": 4088.0, \"价税合计\": 408.8, \"商品单价\": 0.1, \"成品名称\": \"MT-3NSXL(VC)RF通讯模块\", \"未税金额\": 408.8, \"规格型号\": \"MT-3NSXL(VC)\", \"成品物料代码\": \"C.4.T.0.00547\"}', 'SH2607130002', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (723, 1396, 'C.4.T.0.00547', 'MT-3NSXL(VC)RF通讯模块', 'MT-3NSXL(VC)', 2652.000000, 0.100000, 265.200000, 265.200000, 25, '{\"出货量\": 2652.0, \"价税合计\": 265.2, \"商品单价\": 0.1, \"成品名称\": \"MT-3NSXL(VC)RF通讯模块\", \"未税金额\": 265.2, \"规格型号\": \"MT-3NSXL(VC)\", \"成品物料代码\": \"C.4.T.0.00547\"}', 'SH2607130002', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (724, 1397, 'C.4.T.0.00547', 'MT-3NSXL(VC)RF通讯模块', 'MT-3NSXL(VC)', 816.000000, 0.100000, 81.600000, 81.600000, 25, '{\"出货量\": 816.0, \"价税合计\": 81.6, \"商品单价\": 0.1, \"成品名称\": \"MT-3NSXL(VC)RF通讯模块\", \"未税金额\": 81.6, \"规格型号\": \"MT-3NSXL(VC)\", \"成品物料代码\": \"C.4.T.0.00547\"}', 'SH2607130004', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (725, 1398, 'C.4.T.0.00547', 'MT-3NSXL(VC)RF通讯模块', 'MT-3NSXL(VC)', 816.000000, 0.100000, 81.600000, 81.600000, 25, '{\"出货量\": 816.0, \"价税合计\": 81.6, \"商品单价\": 0.1, \"成品名称\": \"MT-3NSXL(VC)RF通讯模块\", \"未税金额\": 81.6, \"规格型号\": \"MT-3NSXL(VC)\", \"成品物料代码\": \"C.4.T.0.00547\"}', 'SH2607130004', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (726, 1399, 'C.1.T.0.00032', '单相多功能电能表T49(VB)', 'DDSD1226-T49(VB)', 260.000000, 218.700000, 56862.000000, 56862.000000, 25, '{\"出货量\": 260.0, \"价税合计\": 56862.0, \"商品单价\": 218.7, \"成品名称\": \"单相多功能电能表T49(VB)\", \"未税金额\": 56862.0, \"规格型号\": \"DDSD1226-T49(VB)\", \"成品物料代码\": \"C.1.T.0.00032\"}', 'SH2607130001', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (727, 1400, 'C.3.T.0.00030', '三相四线多功能电能表T46(VC)', 'DTSD1226-T46(VC)', 630.000000, 486.000000, 306180.000000, 306180.000000, 25, '{\"出货量\": 630.0, \"价税合计\": 306180.0, \"商品单价\": 486.0, \"成品名称\": \"三相四线多功能电能表T46(VC)\", \"未税金额\": 306180.0, \"规格型号\": \"DTSD1226-T46(VC)\", \"成品物料代码\": \"C.3.T.0.00030\"}', 'SH2607130003', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (728, 1401, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 3360.000000, 481.950000, 1619352.000000, 1619352.000000, 25, '{\"出货量\": 3360.0, \"价税合计\": 1619352.0, \"商品单价\": 481.95, \"成品名称\": \"三相四线多功能电能表CXVI(VA)-新\", \"未税金额\": 1619352.0, \"规格型号\": \"DTSD1226-CXVI(VA)\", \"成品物料代码\": \"C.3.C.2.00025\"}', 'SH2607140004', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (729, 1402, 'C.3.T.0.00030', '三相四线多功能电能表T46(VC)', 'DTSD1226-T46(VC)', 1680.000000, 486.000000, 816480.000000, 816480.000000, 25, '{\"出货量\": 1680.0, \"价税合计\": 816480.0, \"商品单价\": 486.0, \"成品名称\": \"三相四线多功能电能表T46(VC)\", \"未税金额\": 816480.0, \"规格型号\": \"DTSD1226-T46(VC)\", \"成品物料代码\": \"C.3.T.0.00030\"}', 'SH2607140008', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (730, 1403, 'C.3.T.0.00030', '三相四线多功能电能表T46(VC)', 'DTSD1226-T46(VC)', 2520.000000, 486.000000, 1224720.000000, 1224720.000000, 25, '{\"出货量\": 2520.0, \"价税合计\": 1224720.0, \"商品单价\": 486.0, \"成品名称\": \"三相四线多功能电能表T46(VC)\", \"未税金额\": 1224720.0, \"规格型号\": \"DTSD1226-T46(VC)\", \"成品物料代码\": \"C.3.T.0.00030\"}', 'SH2607140008', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (731, 1404, 'C.4.T.0.00547', 'MT-3NSXL(VC)RF通讯模块', 'MT-3NSXL(VC)', 5100.000000, 0.100000, 510.000000, 510.000000, 25, '{\"出货量\": 5100.0, \"价税合计\": 510.0, \"商品单价\": 0.1, \"成品名称\": \"MT-3NSXL(VC)RF通讯模块\", \"未税金额\": 510.0, \"规格型号\": \"MT-3NSXL(VC)\", \"成品物料代码\": \"C.4.T.0.00547\"}', 'SH2607140009', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (732, 1405, 'C.3.T.0.00030', '三相四线多功能电能表T46(VC)', 'DTSD1226-T46(VC)', 840.000000, 486.000000, 408240.000000, 408240.000000, 25, '{\"出货量\": 840.0, \"价税合计\": 408240.0, \"商品单价\": 486.0, \"成品名称\": \"三相四线多功能电能表T46(VC)\", \"未税金额\": 408240.0, \"规格型号\": \"DTSD1226-T46(VC)\", \"成品物料代码\": \"C.3.T.0.00030\"}', 'SH2607140008', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (733, 1406, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 3024.000000, 481.950000, 1457416.800000, 1457416.800000, 25, '{\"出货量\": 3024.0, \"价税合计\": 1457416.8, \"商品单价\": 481.95, \"成品名称\": \"三相四线多功能电能表CXVI(VA)-新\", \"未税金额\": 1457416.8, \"规格型号\": \"DTSD1226-CXVI(VA)\", \"成品物料代码\": \"C.3.C.2.00025\"}', 'SH2607160019', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (734, 1407, 'C.4.T.0.00547', 'MT-3NSXL(VC)RF通讯模块', 'MT-3NSXL(VC)', 3852.000000, 0.100000, 385.200000, 385.200000, 25, '{\"出货量\": 3852.0, \"价税合计\": 385.2, \"商品单价\": 0.1, \"成品名称\": \"MT-3NSXL(VC)RF通讯模块\", \"未税金额\": 385.2, \"规格型号\": \"MT-3NSXL(VC)\", \"成品物料代码\": \"C.4.T.0.00547\"}', 'SH2607160021', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (735, 1408, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 336.000000, 481.950000, 161935.200000, 161935.200000, 25, '{\"出货量\": 336.0, \"价税合计\": 161935.2, \"商品单价\": 481.95, \"成品名称\": \"三相四线多功能电能表CXVI(VA)-新\", \"未税金额\": 161935.2, \"规格型号\": \"DTSD1226-CXVI(VA)\", \"成品物料代码\": \"C.3.C.2.00025\"}', 'SH2607160019', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (736, 1409, 'C.3.T.0.00030', '三相四线多功能电能表T46(VC)', 'DTSD1226-T46(VC)', 1050.000000, 486.000000, 510300.000000, 510300.000000, 25, '{\"出货量\": 1050.0, \"价税合计\": 510300.0, \"商品单价\": 486.0, \"成品名称\": \"三相四线多功能电能表T46(VC)\", \"未税金额\": 510300.0, \"规格型号\": \"DTSD1226-T46(VC)\", \"成品物料代码\": \"C.3.T.0.00030\"}', 'SH2607160020', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (737, 1410, 'C.3.T.0.00030', '三相四线多功能电能表T46(VC)', 'DTSD1226-T46(VC)', 210.000000, 486.000000, 102060.000000, 102060.000000, 25, '{\"出货量\": 210.0, \"价税合计\": 102060.0, \"商品单价\": 486.0, \"成品名称\": \"三相四线多功能电能表T46(VC)\", \"未税金额\": 102060.0, \"规格型号\": \"DTSD1226-T46(VC)\", \"成品物料代码\": \"C.3.T.0.00030\"}', 'SH2607160020', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (738, 1411, 'C.3.T.0.00030', '三相四线多功能电能表T46(VC)', 'DTSD1226-T46(VC)', 210.000000, 486.000000, 102060.000000, 102060.000000, 25, '{\"出货量\": 210.0, \"价税合计\": 102060.0, \"商品单价\": 486.0, \"成品名称\": \"三相四线多功能电能表T46(VC)\", \"未税金额\": 102060.0, \"规格型号\": \"DTSD1226-T46(VC)\", \"成品物料代码\": \"C.3.T.0.00030\"}', 'SH2607160020', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (739, 1412, 'C.3.T.0.00030', '三相四线多功能电能表T46(VC)', 'DTSD1226-T46(VC)', 2100.000000, 486.000000, 1020600.000000, 1020600.000000, 25, '{\"出货量\": 2100.0, \"价税合计\": 1020600.0, \"商品单价\": 486.0, \"成品名称\": \"三相四线多功能电能表T46(VC)\", \"未税金额\": 1020600.0, \"规格型号\": \"DTSD1226-T46(VC)\", \"成品物料代码\": \"C.3.T.0.00030\"}', 'SH2607160020', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (740, 1413, 'C.3.T.0.00030', '三相四线多功能电能表T46(VC)', 'DTSD1226-T46(VC)', 210.000000, 486.000000, 102060.000000, 102060.000000, 25, '{\"出货量\": 210.0, \"价税合计\": 102060.0, \"商品单价\": 486.0, \"成品名称\": \"三相四线多功能电能表T46(VC)\", \"未税金额\": 102060.0, \"规格型号\": \"DTSD1226-T46(VC)\", \"成品物料代码\": \"C.3.T.0.00030\"}', 'SH2607160020', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (741, 1414, 'C.3.T.0.00030', '三相四线多功能电能表T46(VC)', 'DTSD1226-T46(VC)', 600.000000, 486.000000, 291600.000000, 291600.000000, 25, '{\"出货量\": 600.0, \"价税合计\": 291600.0, \"商品单价\": 486.0, \"成品名称\": \"三相四线多功能电能表T46(VC)\", \"未税金额\": 291600.0, \"规格型号\": \"DTSD1226-T46(VC)\", \"成品物料代码\": \"C.3.T.0.00030\"}', 'SH2607160020', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (742, 1415, 'C.1.T.0.00032', '单相多功能电能表T49(VB)', 'DDSD1226-T49(VB)', 1260.000000, 218.700000, 275562.000000, 275562.000000, 25, '{\"出货量\": 1260.0, \"价税合计\": 275562.0, \"商品单价\": 218.7, \"成品名称\": \"单相多功能电能表T49(VB)\", \"未税金额\": 275562.0, \"规格型号\": \"DDSD1226-T49(VB)\", \"成品物料代码\": \"C.1.T.0.00032\"}', 'SH2607220001', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (743, 1416, 'C.4.T.0.00547', 'MT-3NSXL(VC)RF通讯模块', 'MT-3NSXL(VC)', 10200.000000, 0.100000, 1020.000000, 1020.000000, 25, '{\"出货量\": 10200.0, \"价税合计\": 1020.0, \"商品单价\": 0.1, \"成品名称\": \"MT-3NSXL(VC)RF通讯模块\", \"未税金额\": 1020.0, \"规格型号\": \"MT-3NSXL(VC)\", \"成品物料代码\": \"C.4.T.0.00547\"}', 'SH2607220002', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (744, 1417, 'C.1.T.0.00032', '单相多功能电能表T49(VB)', 'DDSD1226-T49(VB)', 5880.000000, 218.700000, 1285956.000000, 1285956.000000, 25, '{\"出货量\": 5880.0, \"价税合计\": 1285956.0, \"商品单价\": 218.7, \"成品名称\": \"单相多功能电能表T49(VB)\", \"未税金额\": 1285956.0, \"规格型号\": \"DDSD1226-T49(VB)\", \"成品物料代码\": \"C.1.T.0.00032\"}', 'SH2607220001', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (745, 1418, 'C.1.T.0.00032', '单相多功能电能表T49(VB)', 'DDSD1226-T49(VB)', 2520.000000, 218.700000, 551124.000000, 551124.000000, 25, '{\"出货量\": 2520.0, \"价税合计\": 551124.0, \"商品单价\": 218.7, \"成品名称\": \"单相多功能电能表T49(VB)\", \"未税金额\": 551124.0, \"规格型号\": \"DDSD1226-T49(VB)\", \"成品物料代码\": \"C.1.T.0.00032\"}', 'SH2607220001', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (746, 1419, 'C.1.T.0.00032', '单相多功能电能表T49(VB)', 'DDSD1226-T49(VB)', 420.000000, 218.700000, 91854.000000, 91854.000000, 25, '{\"出货量\": 420.0, \"价税合计\": 91854.0, \"商品单价\": 218.7, \"成品名称\": \"单相多功能电能表T49(VB)\", \"未税金额\": 91854.0, \"规格型号\": \"DDSD1226-T49(VB)\", \"成品物料代码\": \"C.1.T.0.00032\"}', 'SH2607220001', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (747, 1420, 'C.4.T.0.00547', 'MT-3NSXL(VC)RF通讯模块', 'MT-3NSXL(VC)', 8160.000000, 0.100000, 816.000000, 816.000000, 25, '{\"出货量\": 8160.0, \"价税合计\": 816.0, \"商品单价\": 0.1, \"成品名称\": \"MT-3NSXL(VC)RF通讯模块\", \"未税金额\": 816.0, \"规格型号\": \"MT-3NSXL(VC)\", \"成品物料代码\": \"C.4.T.0.00547\"}', 'SH2608060003', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (748, 1421, 'C.1.T.0.00032', '单相多功能电能表T49(VB)', 'DDSD1226-T49(VB)', 420.000000, 218.700000, 91854.000000, 91854.000000, 25, '{\"出货量\": 420.0, \"价税合计\": 91854.0, \"商品单价\": 218.7, \"成品名称\": \"单相多功能电能表T49(VB)\", \"未税金额\": 91854.0, \"规格型号\": \"DDSD1226-T49(VB)\", \"成品物料代码\": \"C.1.T.0.00032\"}', 'SH2608060001', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (749, 1422, 'C.1.T.0.00032', '单相多功能电能表T49(VB)', 'DDSD1226-T49(VB)', 9500.000000, 218.700000, 2077650.000000, 2077650.000000, 25, '{\"出货量\": 9500.0, \"价税合计\": 2077650.0, \"商品单价\": 218.7, \"成品名称\": \"单相多功能电能表T49(VB)\", \"未税金额\": 2077650.0, \"规格型号\": \"DDSD1226-T49(VB)\", \"成品物料代码\": \"C.1.T.0.00032\"}', 'SH2608060001', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (750, 1423, 'C.4.T.0.00547', 'MT-3NSXL(VC)RF通讯模块', 'MT-3NSXL(VC)', 1836.000000, 0.100000, 183.600000, 183.600000, 25, '{\"出货量\": 1836.0, \"价税合计\": 183.6, \"商品单价\": 0.1, \"成品名称\": \"MT-3NSXL(VC)RF通讯模块\", \"未税金额\": 183.6, \"规格型号\": \"MT-3NSXL(VC)\", \"成品物料代码\": \"C.4.T.0.00547\"}', 'SH2608060003', '0'); +INSERT INTO `tbl_headquarters_inbound_item` VALUES (751, 1721, '1PH-WS79', '1PH WS79', '1PH WS79', 10000.000000, 59.500000, NULL, 595000.000000, 25, '{\"出货量\": 10000, \"价税合计\": 595000.0, \"商品单价\": 59.5, \"成品名称\": \"1PH WS79\", \"规格型号\": \"1PH WS79\", \"成品物料代码\": \"1PH-WS79\"}', NULL, '0'); + +-- ---------------------------- +-- Table structure for tbl_in_out_item +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_in_out_item`; +CREATE TABLE `tbl_in_out_item` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `name` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '名称', + `type` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '类型', + `remark` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '备注', + `enabled` bit(1) NULL DEFAULT NULL COMMENT '启用', + `sort` varchar(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '排序', + `tenant_id` bigint NULL DEFAULT NULL COMMENT '租户id', + `delete_flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '删除标记,0未删除,1删除', + PRIMARY KEY (`id`) USING BTREE, + INDEX `tenant_id`(`tenant_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 25 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '收支项目' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_in_out_item +-- ---------------------------- +INSERT INTO `tbl_in_out_item` VALUES (21, '快递费', '支出', '', b'1', NULL, 63, '0'); +INSERT INTO `tbl_in_out_item` VALUES (22, '房租收入', '收入', '', b'1', NULL, 63, '0'); +INSERT INTO `tbl_in_out_item` VALUES (23, '利息收入', '收入', '收入', b'1', NULL, 63, '0'); +INSERT INTO `tbl_in_out_item` VALUES (24, '测试收支项目_UPD', '收入', NULL, b'1', NULL, NULL, '1'); + +-- ---------------------------- +-- Table structure for tbl_log +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_log`; +CREATE TABLE `tbl_log` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `user_id` bigint NULL DEFAULT NULL COMMENT '用户id', + `operation` varchar(500) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '操作模块名称', + `client_ip` varchar(200) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '客户端IP', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `status` tinyint NULL DEFAULT NULL COMMENT '操作状态 0==成功,1==失败', + `content` varchar(5000) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '详情', + `tenant_id` bigint NULL DEFAULT NULL COMMENT '租户id', + `request_url` varchar(1000) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '请求URL', + `request_params` longtext CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL COMMENT '请求入参', + `response_params` longtext CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL COMMENT '请求出参', + PRIMARY KEY (`id`) USING BTREE, + INDEX `FKF2696AA13E226853`(`user_id`) USING BTREE, + INDEX `create_time`(`create_time`) USING BTREE, + INDEX `tenant_id`(`tenant_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 10403 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '操作日志' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_log +-- ---------------------------- +INSERT INTO `tbl_log` VALUES (7915, 63, '功能', '10.20.120.47/10.20.120.47', '2026-09-18 11:12:04', 0, '修改零售出库', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7916, 63, '功能', '10.20.120.47/10.20.120.47', '2026-09-18 11:12:13', 0, '修改零售退货', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7917, 63, '关联关系', '10.20.120.47/10.20.120.47', '2026-09-18 11:12:26', 0, '修改', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7918, 63, '用户', '10.20.120.52/10.20.120.52', '2026-09-18 11:18:25', 0, '登录admin', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7919, 63, '功能', '10.20.120.47/10.20.120.47', '2026-09-18 11:18:35', 0, '修改操作人员管理', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7920, 63, '用户', '10.20.120.47/10.20.120.47', '2026-09-18 11:23:21', 0, '登录admin', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7921, 63, '用户', '10.20.120.47/10.20.120.47', '2026-09-18 11:30:59', 0, '删除[admin_backup]', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7922, 63, '用户', '10.20.120.47/10.20.120.47', '2026-09-18 11:31:02', 0, '删除[test123]', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7923, 63, '系统配置', '10.20.120.47/10.20.120.47', '2026-09-18 11:31:14', 0, '修改公司test', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7924, 63, '交货计划管理', '10.20.120.47/10.20.120.47', '2026-09-18 11:41:38', 0, '新增交货计划[JH00000001717]', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7925, 63, '发货管理', '10.20.120.47/10.20.120.47', '2026-09-18 11:42:23', 0, '由交货计划生成发货通知[FHTZ00000001718]', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7926, 63, '发货管理', '10.20.120.47/10.20.120.47', '2026-09-18 11:42:30', 0, '审批发货通知[FHTZ00000001718]', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7927, 63, '发货管理', '10.20.120.47/10.20.120.47', '2026-09-18 11:42:37', 0, '确认发货[FHTZ00000001718]', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7928, 63, '单据', '10.20.120.47/10.20.120.47', '2026-09-18 11:44:02', 0, '新增QGD00000001719', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7929, 63, '单据', '10.20.120.47/10.20.120.47', '2026-09-18 11:44:08', 0, '[审核]QGD00000001719', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7930, 63, '单据', '10.20.120.47/10.20.120.47', '2026-09-18 11:44:20', 0, '新增CGDD00000001720', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7931, 63, '单据', '10.20.120.47/10.20.120.47', '2026-09-18 11:44:31', 0, '[审核]CGDD00000001720', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7932, 63, '单据', '10.20.120.47/10.20.120.47', '2026-09-18 11:44:37', 0, '新增CGRK00000001721', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7933, 63, '单据', '10.20.120.47/10.20.120.47', '2026-09-18 11:44:46', 0, '[审核]CGRK00000001721', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7934, 63, '商品类型', '10.20.120.47/10.20.120.47', '2026-09-18 11:46:03', 0, '新增包装', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7935, 63, '商品', '10.20.120.47/10.20.120.47', '2026-09-18 11:46:34', 0, '新增MD-4G111(VF) 包装', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7936, 63, '商品', '10.20.120.47/10.20.120.47', '2026-09-18 11:46:46', 0, '修改MD-4G111(VF) 包装', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7937, 63, '商品', '10.20.120.47/10.20.120.47', '2026-09-18 11:47:34', 0, '新增MD-4G111(VF) 4G', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7938, 63, '资产盘点', '10.20.120.47/10.20.120.47', '2026-09-18 13:12:31', 0, '创建盘点单[PD20260918131230171]', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7939, 63, '经手人', '10.20.120.47/10.20.120.47', '2026-09-18 13:35:25', 0, '新增Juwairiah', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7940, 63, '经手人', '10.20.120.47/10.20.120.47', '2026-09-18 13:38:15', 0, '新增Neezam', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7941, 63, '功能', '10.20.120.47/10.20.120.47', '2026-09-18 14:06:14', 0, '修改商品库存', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7942, 63, '单据', '10.20.120.52/10.20.120.52', '2026-09-18 14:10:36', 0, '新增XSDD00000001724', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7943, 63, '关联关系', '10.20.120.47/10.20.120.47', '2026-09-18 14:14:25', 0, '修改', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7944, 63, '角色', '10.20.120.47/10.20.120.47', '2026-09-18 14:16:00', 0, '新增system admin', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7945, 63, '用户', '156.248.10.92', '2026-09-18 11:01:25', 0, '登录admin', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7946, 63, '用户', '183.156.212.255', '2026-09-18 11:03:57', 0, '登录admin', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7947, 63, '用户', '58.217.176.253/115.227.205.165', '2026-09-18 11:20:07', 0, '登录admin', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7948, 63, '用户', '58.217.176.253/115.227.205.165', '2026-09-18 11:29:51', 0, '登录admin', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7949, 63, '用户', '58.217.176.109/183.128.95.60', '2026-09-18 11:52:23', 0, '登录admin', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7950, 63, '单据', '60.28.220.144/115.227.205.165', '2026-09-18 12:01:23', 0, '新增XSDD00000001726', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7951, 63, '单据', '43.174.54.14/115.227.205.165', '2026-09-18 12:02:34', 0, '[审核]XSDD00000001726', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7952, 63, '单据', '43.152.142.118/115.227.205.165', '2026-09-18 12:03:04', 0, '新增XSCK00000001728', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7953, 63, '单据', '43.152.142.140/115.227.205.165', '2026-09-18 12:08:14', 0, '[审核]SM2609180001', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7954, 63, '生产方案', '36.150.72.130/115.227.205.165', '2026-09-18 12:14:19', 0, '新增BOM00000001735', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7955, 63, '生产工单', '43.152.142.57/115.227.205.165', '2026-09-18 12:20:19', 0, '新增GD20260918122018493', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7956, 63, '生产领料', '43.174.32.34/115.227.205.165', '2026-09-18 12:23:29', 0, '新增LL20260918122329111', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7957, 63, '单据', '43.152.142.64/115.227.205.165', '2026-09-18 12:28:04', 0, '新增QGD00000001738', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7958, 63, '单据', '43.174.54.14/115.227.205.165', '2026-09-18 12:28:09', 0, '[审核]QGD00000001738', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7959, 63, '单据', '43.174.32.34/115.227.205.165', '2026-09-18 12:28:33', 0, '新增CGDD00000001739', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7960, 63, '单据', '43.152.142.139/115.227.205.165', '2026-09-18 12:28:40', 0, '[审核]CGDD00000001739', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7961, 63, '单据', '43.174.53.17/115.227.205.165', '2026-09-18 12:29:02', 0, '新增CGRK00000001740', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7962, 63, '单据', '43.168.12.87/115.227.205.165', '2026-09-18 12:30:10', 0, '[审核]CGRK00000001740', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7963, 63, '生产领料', '43.152.142.133/183.128.95.60', '2026-09-18 12:31:57', 0, '新增LL20260918123156921', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7964, 63, '单据', '36.150.72.101/115.227.205.165', '2026-09-18 12:33:02', 0, '[审核]XSCK00000001728', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7965, 63, '交货计划管理', '36.150.72.101/115.227.205.165', '2026-09-18 12:33:05', 0, '新增交货计划[JH00000001741]', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7966, 63, '发货管理', '36.150.72.82/115.227.205.165', '2026-09-18 12:36:28', 0, '由交货计划生成发货通知[FHTZ00000001742]', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7967, 63, '发货管理', '36.249.95.13/115.227.205.165', '2026-09-18 12:37:27', 0, '审批发货通知[FHTZ00000001742]', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7968, 63, '发货管理', '36.249.95.13/115.227.205.165', '2026-09-18 12:38:02', 0, '确认发货[FHTZ00000001742]', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7969, 63, '用户', '58.220.53.57/115.206.4.170', '2026-09-18 13:13:36', 0, '登录admin', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7970, 63, '用户', '58.220.53.157/115.206.4.170', '2026-09-18 13:13:51', 0, '删除[reallin]', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7971, 63, '用户', '43.174.53.48/125.122.178.8', '2026-09-18 13:16:17', 0, '登录admin', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7972, 63, '用户', '117.85.66.39/183.156.212.255', '2026-09-18 13:17:01', 0, '修改63', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7973, 63, '用户', '183.131.72.203/125.122.178.8', '2026-09-18 13:22:41', 0, '登录admin', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7974, 63, '用户', '183.131.72.177/125.122.178.8', '2026-09-18 13:23:51', 0, '登录admin', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7975, 63, '用户', '43.152.142.40/1.9.116.218', '2026-09-23 13:17:51', 0, '登录admin', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7976, NULL, '接口日志', '117.85.65.182/183.158.161.24', '2026-09-24 13:38:07', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (7977, NULL, '接口日志', '117.85.66.39/183.158.161.24', '2026-09-24 13:38:08', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (7978, NULL, '接口日志', '117.40.82.179/183.158.161.24', '2026-09-24 13:38:25', 0, 'PlatformConfigController.getPlatformCheckcodeFlag(..)', NULL, 'GET /apis/platformConfig/getPlatform/checkcodeFlag', '{}', '\"1\"'); +INSERT INTO `tbl_log` VALUES (7979, NULL, '接口日志', '117.85.65.182/183.158.161.24', '2026-09-24 13:38:25', 0, 'UserController.randomImage(..)', NULL, 'GET /apis/user/randomImage', '{}', '{\"code\":200,\"data\":{\"base64\":\"data:image/jpg;base64,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\",\"uuid\":\"739ca04295db406a9b2dd23e4793893f\"}}'); +INSERT INTO `tbl_log` VALUES (7980, NULL, '接口日志', '117.40.82.179/183.158.161.24', '2026-09-24 13:38:49', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (7981, NULL, '接口日志', '117.85.66.39/183.158.161.24', '2026-09-24 13:38:50', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (7982, NULL, '接口日志', '111.4.224.45/183.158.161.24', '2026-09-24 13:39:08', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (7983, NULL, '接口日志', '111.4.225.159/183.158.161.24', '2026-09-24 13:39:08', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (7984, NULL, '接口日志', '111.4.225.53/183.158.161.24', '2026-09-24 13:39:10', 0, 'UserController.randomImage(..)', NULL, 'GET /apis/user/randomImage', '{}', '{\"code\":200,\"data\":{\"base64\":\"data:image/jpg;base64,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\",\"uuid\":\"f058e48420734be8a155574d65fd7501\"}}'); +INSERT INTO `tbl_log` VALUES (7985, NULL, '接口日志', '111.4.225.174/183.158.161.24', '2026-09-24 13:39:10', 0, 'PlatformConfigController.getPlatformCheckcodeFlag(..)', NULL, 'GET /apis/platformConfig/getPlatform/checkcodeFlag', '{}', '\"1\"'); +INSERT INTO `tbl_log` VALUES (7986, NULL, '接口日志', '117.40.82.179/183.158.161.24', '2026-09-24 13:39:15', 0, 'UserController.login(..)', NULL, 'POST /apis/user/login', '{\"userParam\":{\"code\":\"td1w\",\"loginName\":\"admin\",\"password\":\"******\",\"uuid\":\"f058e48420734be8a155574d65fd7501\"}}', '{\"code\":200,\"data\":{\"msgTip\":\"user password error\"}}'); +INSERT INTO `tbl_log` VALUES (7987, NULL, '接口日志', '111.4.224.162/183.158.161.24', '2026-09-24 13:39:15', 0, 'UserController.randomImage(..)', NULL, 'GET /apis/user/randomImage', '{}', '{\"code\":200,\"data\":{\"base64\":\"data:image/jpg;base64,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\",\"uuid\":\"ea0117b8eb104071a9d326c7afa88d51\"}}'); +INSERT INTO `tbl_log` VALUES (7988, NULL, '接口日志', '117.85.64.159/183.158.161.24', '2026-09-24 13:39:34', 0, 'UserController.login(..)', NULL, 'POST /apis/user/login', '{\"userParam\":{\"code\":\"pd49\",\"loginName\":\"admin\",\"password\":\"******\",\"uuid\":\"ea0117b8eb104071a9d326c7afa88d51\"}}', '{\"code\":200,\"data\":{\"msgTip\":\"user password error\"}}'); +INSERT INTO `tbl_log` VALUES (7989, NULL, '接口日志', '111.4.225.185/183.158.161.24', '2026-09-24 13:39:34', 0, 'UserController.randomImage(..)', NULL, 'GET /apis/user/randomImage', '{}', '{\"code\":200,\"data\":{\"base64\":\"data:image/jpg;base64,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\",\"uuid\":\"e0f595523ddb4d7a8c3020f59312ccaa\"}}'); +INSERT INTO `tbl_log` VALUES (7990, 63, '用户', '117.85.66.39/183.158.161.24', '2026-09-24 13:39:54', 0, '登录admin', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (7991, NULL, '接口日志', '117.85.66.39/183.158.161.24', '2026-09-24 13:39:54', 0, 'UserController.login(..)', NULL, 'POST /apis/user/login', '{\"userParam\":{\"code\":\"7pia\",\"loginName\":\"admin\",\"password\":\"******\",\"uuid\":\"e0f595523ddb4d7a8c3020f59312ccaa\"}}', '{\"code\":200,\"data\":{\"pwdSimple\":\"******\",\"user\":{\"deleteFlag\":\"0\",\"description\":\"\",\"email\":\"666666@qq.com\",\"id\":63,\"ismanager\":1,\"isystem\":1,\"leaderFlag\":\"0\",\"loginName\":\"admin\",\"password\":\"******\",\"phonenum\":\"1123123123132\",\"position\":\"主管\",\"status\":0,\"tenantId\":63,\"username\":\"admin\"},\"msgTip\":\"user can login\",\"token\":\"******\"}}'); +INSERT INTO `tbl_log` VALUES (7992, 63, '接口日志', '111.4.224.45/183.158.161.24', '2026-09-24 13:39:55', 0, 'MaterialPropertyController.getAllList(..)', NULL, 'GET /apis/materialProperty/getAllList', '{}', '{\"code\":200,\"data\":[{\"anotherName\":\"扩展1\",\"id\":1,\"nativeName\":\"扩展1\"},{\"anotherName\":\"扩展2\",\"id\":2,\"nativeName\":\"扩展2\"},{\"anotherName\":\"扩展3\",\"id\":3,\"nativeName\":\"扩展3\"}]}'); +INSERT INTO `tbl_log` VALUES (7993, 63, '接口日志', '117.85.65.182/183.158.161.24', '2026-09-24 13:39:56', 0, 'FunctionController.findMenuByPNumber(..)', NULL, 'POST /apis/function/findMenuByPNumber', '{\"jsonObject\":{\"userId\":63,\"pNumber\":0}}', '[{\"component\":\"/layouts/TabLayout\",\"icon\":\"home\",\"id\":0,\"text\":\"首页\",\"url\":\"/dashboard/analysis\",\"textEn\":\"Home\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/SaleOrderList\",\"icon\":\"profile\",\"id\":242,\"text\":\"销售订单\",\"url\":\"/bill/sale_order\",\"textEn\":\"Sales Orders\"},{\"component\":\"/bill/SaleOutList\",\"icon\":\"profile\",\"id\":41,\"text\":\"销售出库\",\"url\":\"/bill/sale_out\",\"textEn\":\"Sales Shipments\"},{\"component\":\"/bill/DeliveryPlanList\",\"icon\":\"profile\",\"id\":271,\"text\":\"交货计划管理\",\"url\":\"/bill/delivery_plan\",\"textEn\":\"Delivery Plans\"},{\"component\":\"/bill/SaleShipmentList\",\"icon\":\"car\",\"id\":268,\"text\":\"发货管理\",\"url\":\"/bill/sale_shipment\",\"textEn\":\"Shipment Management\"},{\"component\":\"/bill/SaleBackList\",\"icon\":\"profile\",\"id\":200,\"text\":\"销售退货\",\"url\":\"/bill/sale_back\",\"textEn\":\"Sales Returns\"},{\"component\":\"/bill/RetailOutList\",\"icon\":\"profile\",\"id\":210,\"text\":\"零售出库\",\"url\":\"/bill/retail_out\",\"textEn\":\"Retail Shipments\"},{\"component\":\"/bill/RetailBackList\",\"icon\":\"profile\",\"id\":211,\"text\":\"零售退货\",\"url\":\"/bill/retail_back\",\"textEn\":\"Retail Returns\"}],\"icon\":\"shopping-cart\",\"id\":38,\"text\":\"销售管理\",\"url\":\"/billB\",\"textEn\":\"Sales Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/PurchaseApplyList\",\"icon\":\"profile\",\"id\":261,\"text\":\"请购单\",\"url\":\"/bill/purchase_apply\",\"textEn\":\"Purchase Requisitions\"},{\"component\":\"/bill/PurchaseOrderList\",\"icon\":\"profile\",\"id\":241,\"text\":\"采购订单\",\"url\":\"/bill/purchase_order\",\"textEn\":\"Purchase Orders\"},{\"component\":\"/bill/PurchaseInList\",\"icon\":\"profile\",\"id\":33,\"text\":\"采购入库\",\"url\":\"/bill/purchase_in\",\"textEn\":\"Purchase Receipts\"},{\"component\":\"/bill/PurchaseBackList\",\"icon\":\"profile\",\"id\":199,\"text\":\"采购退货\",\"url\":\"/bill/purchase_back\",\"textEn\":\"Purchase Returns\"}],\"icon\":\"retweet\",\"id\":32,\"text\":\"采购管理\",\"url\":\"/bill\",\"textEn\":\"Purchase Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/production/PackBomList\",\"icon\":\"profile\",\"id\":263,\"text\":\"生产方案\",\"url\":\"/production/pack_bom\",\"textEn\":\"Production BOMs\"},{\"component\":\"/production/OrderList\",\"icon\":\"profile\",\"id\":264,\"text\":\"生产工单\",\"url\":\"/production/order\",\"textEn\":\"Production Orders\"},{\"component\":\"/production/RequisitionList\",\"icon\":\"profile\",\"id\":265,\"text\":\"领料管理\",\"url\":\"/production/requisition\",\"textEn\":\"Material Requisitions\"},{\"component\":\"/production/ReportList\",\"icon\":\"profile\",\"id\":266,\"text\":\"完工报工\",\"url\":\"/production/report\",\"textEn\":\"Production Reports\"}],\"icon\":\"cluster\",\"id\":262,\"text\":\"生产管理\",\"url\":\"/production\",\"textEn\":\"Production Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/MaterialStock\",\"icon\":\"profile\",\"id\":246,\"text\":\"商品库存\",\"url\":\"/report/material_stock\",\"textEn\":\"Product Inventory\"},{\"component\":\"/bill/OtherInList\",\"icon\":\"profile\",\"id\":201,\"text\":\"其它入库\",\"url\":\"/bill/other_in\",\"textEn\":\"Other Receipts\"},{\"component\":\"/bill/OtherOutList\",\"icon\":\"profile\",\"id\":202,\"text\":\"其它出库\",\"url\":\"/bill/other_out\",\"textEn\":\"Other Shipments\"},{\"component\":\"/bill/HeadquartersInList\",\"icon\":\"profile\",\"id\":270,\"text\":\"总部入库\",\"url\":\"/bill/headquarters_in\",\"textEn\":\"Headquarters Receipts\"}],\"icon\":\"hdd\",\"id\":239,\"text\":\"仓库管理\",\"url\":\"/billD\",\"textEn\":\"Warehouse Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/financial/MoneyInList\",\"icon\":\"profile\",\"id\":204,\"text\":\"收款单\",\"url\":\"/financial/money_in\",\"textEn\":\"Receipt Vouchers\"},{\"component\":\"/financial/MoneyOutList\",\"icon\":\"profile\",\"id\":205,\"text\":\"付款单\",\"url\":\"/financial/money_out\",\"textEn\":\"Payment Vouchers\"}],\"icon\":\"money-collect\",\"id\":44,\"text\":\"财务管理\",\"url\":\"/financial\",\"textEn\":\"Finance Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/asset/AssetList\",\"icon\":\"profile\",\"id\":273,\"text\":\"资产台账\",\"url\":\"/asset/ledger\",\"textEn\":\"Asset Ledger\"},{\"component\":\"/asset/DeviceList\",\"icon\":\"tool\",\"id\":274,\"text\":\"设备台账\",\"url\":\"/asset/device\",\"textEn\":\"Device Ledger\"},{\"component\":\"/asset/InventoryList\",\"icon\":\"scan\",\"id\":275,\"text\":\"资产盘点\",\"url\":\"/asset/inventory\",\"textEn\":\"Asset Inventory\"}],\"icon\":\"bank\",\"id\":272,\"text\":\"资产管理\",\"url\":\"/assetManagement\",\"textEn\":\"Asset Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/material/MaterialCategoryList\",\"icon\":\"profile\",\"id\":22,\"text\":\"商品类别\",\"url\":\"/material/material_category\",\"textEn\":\"Product Categories\"},{\"component\":\"/material/MaterialList\",\"icon\":\"profile\",\"id\":23,\"text\":\"商品信息\",\"url\":\"/material/material\",\"textEn\":\"Product Information\"},{\"component\":\"/system/UnitList\",\"icon\":\"profile\",\"id\":220,\"text\":\"多单位\",\"url\":\"/system/unit\",\"textEn\":\"Multiple Units\"},{\"component\":\"/material/MaterialAttributeList\",\"icon\":\"profile\",\"id\":247,\"text\":\"多属性\",\"url\":\"/material/material_attribute\",\"textEn\":\"Product Attributes\"}],\"icon\":\"shopping\",\"id\":21,\"text\":\"商品管理\",\"url\":\"/material\",\"textEn\":\"Product Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/AccountReport\",\"icon\":\"profile\",\"id\":207,\"text\":\"账户统计\",\"url\":\"/report/account_report\",\"textEn\":\"Account Summary\"},{\"component\":\"/report/RetailOutReport\",\"icon\":\"profile\",\"id\":259,\"text\":\"零售统计\",\"url\":\"/report/retail_out_report\",\"textEn\":\"Retail Summary\"},{\"component\":\"/report/BuyInReport\",\"icon\":\"profile\",\"id\":208,\"text\":\"采购统计\",\"url\":\"/report/buy_in_report\",\"textEn\":\"Purchase Summary\"},{\"component\":\"/report/SaleOutReport\",\"icon\":\"profile\",\"id\":209,\"text\":\"销售统计\",\"url\":\"/report/sale_out_report\",\"textEn\":\"Sales Summary\"},{\"component\":\"/report/InDetail\",\"icon\":\"profile\",\"id\":226,\"text\":\"入库明细\",\"url\":\"/report/in_detail\",\"textEn\":\"Inbound Details\"},{\"component\":\"/report/OutDetail\",\"icon\":\"profile\",\"id\":227,\"text\":\"出库明细\",\"url\":\"/report/out_detail\",\"textEn\":\"Outbound Details\"},{\"component\":\"/report/InMaterialCount\",\"icon\":\"profile\",\"id\":228,\"text\":\"入库汇总\",\"url\":\"/report/in_material_count\",\"textEn\":\"Inbound Summary\"},{\"component\":\"/report/OutMaterialCount\",\"icon\":\"profile\",\"id\":229,\"text\":\"出库汇总\",\"url\":\"/report/out_material_count\",\"textEn\":\"Outbound Summary\"},{\"component\":\"/report/InOutStockReport\",\"icon\":\"profile\",\"id\":59,\"text\":\"进销存统计\",\"url\":\"/report/in_out_stock_report\",\"textEn\":\"Inventory Transaction Summary\"},{\"component\":\"/report/CustomerAccount\",\"icon\":\"profile\",\"id\":235,\"text\":\"客户对账\",\"url\":\"/report/customer_account\",\"textEn\":\"Customer Reconciliation\"},{\"component\":\"/report/VendorAccount\",\"icon\":\"profile\",\"id\":237,\"text\":\"供应商对账\",\"url\":\"/report/vendor_account\",\"textEn\":\"Supplier Reconciliation\"},{\"component\":\"/report/StockWarningReport\",\"icon\":\"profile\",\"id\":244,\"text\":\"库存预警\",\"url\":\"/report/stock_warning_report\",\"textEn\":\"Stock Alerts\"}],\"icon\":\"pie-chart\",\"id\":198,\"text\":\"报表查询\",\"url\":\"/report\",\"textEn\":\"Reports\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/VendorList\",\"icon\":\"profile\",\"id\":25,\"text\":\"供应商信息\",\"url\":\"/system/vendor\",\"textEn\":\"Suppliers\"},{\"component\":\"/system/CustomerList\",\"icon\":\"profile\",\"id\":217,\"text\":\"客户信息\",\"url\":\"/system/customer\",\"textEn\":\"Customers\"},{\"component\":\"/system/MemberList\",\"icon\":\"profile\",\"id\":218,\"text\":\"会员信息\",\"url\":\"/system/member\",\"textEn\":\"Members\"},{\"component\":\"/system/CustomerCategoryList\",\"icon\":\"bars\",\"id\":267,\"text\":\"客户分类\",\"url\":\"/system/customerCategory\",\"textEn\":\"Customer Categories\"},{\"component\":\"/system/DepotList\",\"icon\":\"profile\",\"id\":26,\"text\":\"仓库信息\",\"url\":\"/system/depot\",\"textEn\":\"Warehouses\"},{\"component\":\"/system/InOutItemList\",\"icon\":\"profile\",\"id\":194,\"text\":\"收支项目\",\"url\":\"/system/in_out_item\",\"textEn\":\"Income and Expense Items\"},{\"component\":\"/system/AccountList\",\"icon\":\"profile\",\"id\":195,\"text\":\"结算账户\",\"url\":\"/system/account\",\"textEn\":\"Settlement Accounts\"},{\"component\":\"/system/PersonList\",\"icon\":\"profile\",\"id\":31,\"text\":\"操作人员管理\",\"url\":\"/system/person\",\"textEn\":\"Operators\"}],\"icon\":\"appstore\",\"id\":24,\"text\":\"基础资料\",\"url\":\"/systemA\",\"textEn\":\"Master Data\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/RoleList\",\"icon\":\"profile\",\"id\":13,\"text\":\"角色管理\",\"url\":\"/system/role\",\"textEn\":\"Role Management\"},{\"component\":\"/system/UserList\",\"icon\":\"profile\",\"id\":14,\"text\":\"用户管理\",\"url\":\"/system/user\",\"textEn\":\"User Management\"},{\"component\":\"/system/OrganizationList\",\"icon\":\"profile\",\"id\":243,\"text\":\"部门管理\",\"url\":\"/system/organization\",\"textEn\":\"Department Management\"},{\"component\":\"/system/LogList\",\"icon\":\"profile\",\"id\":15,\"text\":\"日志管理\",\"url\":\"/system/log\",\"textEn\":\"Log Management\"},{\"component\":\"/material/MaterialPropertyList\",\"icon\":\"profile\",\"id\":236,\"text\":\"商品属性\",\"url\":\"/material/material_property\",\"textEn\":\"Product Properties\"},{\"component\":\"/system/SystemConfigList\",\"icon\":\"profile\",\"id\":234,\"text\":\"系统配置\",\"url\":\"/system/system_config\",\"textEn\":\"System Configuration\"},{\"component\":\"/system/FunctionList\",\"icon\":\"profile\",\"id\":16,\"text\":\"菜单管理\",\"url\":\"/system/function\",\"textEn\":\"Resource Menus\"},{\"component\":\"/system/PluginList\",\"icon\":\"profile\",\"id\":245,\"text\":\"插件管理\",\"url\":\"/system/plugin\",\"textEn\":\"Plugin Management\"},{\"component\":\"/system/DictList\",\"icon\":\"profile\",\"id\":260,\"text\":\"字典管理\",\"url\":\"/system/dict\",\"textEn\":\"Dictionary Management\"},{\"component\":\"/system/PlatformConfigList\",\"icon\":\"profile\",\"id\":258,\"text\":\"平台配置\",\"url\":\"/system/platform_config\",\"textEn\":\"Platform Configuration\"}],\"icon\":\"setting\",\"id\":1,\"text\":\"系统管理\",\"url\":\"/system\",\"textEn\":\"System Management\"}]'); +INSERT INTO `tbl_log` VALUES (7994, 63, '接口日志', '111.4.225.174/183.158.161.24', '2026-09-24 13:39:56', 0, 'MsgController.getMsgByStatus(..)', NULL, 'GET /apis/msg/getMsgByStatus', '{\"status\":\"1\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (7995, 63, '接口日志', '111.4.225.159/183.158.161.24', '2026-09-24 13:39:56', 0, 'UserController.getUserBtnByCurrentUser(..)', NULL, 'GET /apis/user/getUserBtnByCurrentUser', '{}', '{\"code\":200,\"data\":{\"userBtn\":[{\"btnStr\":\"8,1\",\"url\":\"/system/role\"},{\"btnStr\":\"1\",\"url\":\"/system/user\"},{\"btnStr\":\"1\",\"url\":\"/system/organization\"},{\"btnStr\":\"1\",\"url\":\"/material/material_property\"},{\"btnStr\":\"1\",\"url\":\"/system/system_config\"},{\"btnStr\":\"1\",\"url\":\"/system/function\"},{\"btnStr\":\"1\",\"url\":\"/system/plugin\"},{\"btnStr\":\"1\",\"url\":\"/material/material_category\"},{\"btnStr\":\"1,3\",\"url\":\"/material/material\"},{\"btnStr\":\"1\",\"url\":\"/system/unit\"},{\"btnStr\":\"1\",\"url\":\"/material/material_attribute\"},{\"btnStr\":\"1,3\",\"url\":\"/system/vendor\"},{\"btnStr\":\"1,3\",\"url\":\"/system/customer\"},{\"btnStr\":\"1,3\",\"url\":\"/system/member\"},{\"btnStr\":\"1\",\"url\":\"/system/depot\"},{\"btnStr\":\"1\",\"url\":\"/system/in_out_item\"},{\"btnStr\":\"1\",\"url\":\"/system/account\"},{\"btnStr\":\"1\",\"url\":\"/system/person\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_apply\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_out\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/delivery_plan\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/sale_shipment\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_out\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/order\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/requisition\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/report\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/giro\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/advance_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/allocation_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/assemble\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/headquarters_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/disassemble\"}]}}'); +INSERT INTO `tbl_log` VALUES (7996, 63, '接口日志', '111.4.225.16/183.158.161.24', '2026-09-24 13:39:57', 0, 'MsgController.getList(..)', NULL, 'GET /apis/msg/list', '{\"search\":\"{\\\"name\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (7997, 63, '接口日志', '111.4.224.148/183.158.161.24', '2026-09-24 13:39:57', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-04\",\"inbound\":100669.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (7998, 63, '接口日志', '111.4.224.18/183.158.161.24', '2026-09-24 13:40:05', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":8,\"rows\":[{\"assetCategory\":\"工装设备\",\"assetCode\":\"FA-TOOL-2025-008\",\"assetName\":\"全自动钢网清洗机\",\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"id\":8,\"keeper\":\"王磊\",\"location\":\"一车间 钢网房\",\"originalValue\":78000.000000,\"purchaseDate\":1739131200000,\"quantity\":1.000000,\"remark\":\"用于钢网水基闭环清洗与烘干\",\"source\":\"DEMO\",\"specification\":\"SAWA SC-A1000\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetCategory\":\"物流设备\",\"assetCode\":\"FA-WH-2024-007\",\"assetName\":\"电动平衡重式叉车\",\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"id\":7,\"keeper\":\"张伟\",\"location\":\"原材料仓充电区\",\"originalValue\":145000.000000,\"purchaseDate\":1721592000000,\"quantity\":1.000000,\"remark\":\"额定载荷 2.0 吨,持证人员操作\",\"source\":\"DEMO\",\"specification\":\"Toyota 8FBE20\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1789718123000,\"useDepartment\":\"仓储物流部\"},{\"assetCategory\":\"IT设备\",\"assetCode\":\"FA-IT-2025-006\",\"assetName\":\"MES 数据库服务器\",\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"id\":6,\"keeper\":\"赵敏\",\"location\":\"数据中心 A03 机柜\",\"originalValue\":168000.000000,\"purchaseDate\":1736884800000,\"quantity\":1.000000,\"remark\":\"双机热备主节点,纳入信息安全资产清单\",\"source\":\"DEMO\",\"specification\":\"Dell PowerEdge R760\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1789718123000,\"useDepartment\":\"信息技术部\"},{\"assetCategory\":\"动力设备\",\"assetCode\":\"FA-UTIL-2023-005\",\"assetName\":\"螺杆式空气压缩机\",\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"id\":5,\"keeper\":\"陈晨\",\"location\":\"动力站 1 号机位\",\"originalValue\":186000.000000,\"purchaseDate\":1700424000000,\"quantity\":1.000000,\"remark\":\"为 SMT 车间提供稳定压缩空气\",\"source\":\"DEMO\",\"specification\":\"Atlas Copco GA22 VSD+\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1789718123000,\"useDepartment\":\"设备动力部\"},{\"assetCategory\":\"检测设备\",\"assetCode\":\"FA-QC-2024-004\",\"assetName\":\"在线 3D SPI 检测系统\",\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"id\":4,\"keeper\":\"陈晨\",\"location\":\"一车间 印刷检测区\",\"originalValue\":1120000.000000,\"purchaseDate\":1712347200000,\"quantity\":1.000000,\"remark\":\"用于锡膏体积、高度及偏移检测\",\"source\":\"DEMO\",\"specification\":\"Koh Young KY8030-3\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1789718123000,\"useDepartment\":\"品质部\"},{\"assetCategory\":\"检测设备\",\"assetCode\":\"FA-QC-2024-003\",\"assetName\":\"在线 3D AOI 检测系统\",\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"id\":3,\"keeper\":\"陈晨\",\"location\":\"一车间 AOI 检测区\",\"originalValue\":1350000.000000,\"purchaseDate\":1712347200000,\"quantity\":1.000000,\"remark\":\"用于焊后外观与三维缺陷检测\",\"source\":\"DEMO\",\"specification\":\"Koh Young Zenith 2\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1789718123000,\"useDepartment\":\"品质部\"},{\"assetCategory\":\"生产设备\",\"assetCode\":\"FA-SMT-2024-002\",\"assetName\":\"十温区氮气回流焊系统\",\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"id\":2,\"keeper\":\"王磊\",\"location\":\"一车间 SMT-01 线\",\"originalValue\":980000.000000,\"purchaseDate\":1710705600000,\"quantity\":1.000000,\"remark\":\"炉温曲线纳入工艺受控文件\",\"source\":\"DEMO\",\"specification\":\"HELLER 1936MK7\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetCategory\":\"生产设备\",\"assetCode\":\"FA-SMT-2024-001\",\"assetName\":\"SMT 高速贴片生产线\",\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"id\":1,\"keeper\":\"王磊\",\"location\":\"一车间 SMT-01 线\",\"originalValue\":2850000.000000,\"purchaseDate\":1710705600000,\"quantity\":1.000000,\"remark\":\"关键设备,按月盘点并执行点检保养\",\"source\":\"DEMO\",\"specification\":\"Panasonic NPM-D3A 双轨配置\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"}]}}'); +INSERT INTO `tbl_log` VALUES (7999, 63, '接口日志', '111.4.225.53/183.158.161.24', '2026-09-24 13:40:07', 0, 'AssetDeviceController.list(..)', NULL, 'GET /apis/assetDevice/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":10,\"rows\":[{\"assetCode\":\"FA-TOOL-2025-008\",\"assetId\":8,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"工装设备\",\"deviceCode\":\"TOOL-STENCIL-CLEAN-01\",\"deviceName\":\"全自动钢网清洗机\",\"enabledDate\":1739822400000,\"id\":10,\"keeper\":\"王磊\",\"location\":\"一车间 钢网房\",\"manufacturer\":\"SAWA\",\"model\":\"SC-A1000\",\"nextMaintenanceDate\":1794254400000,\"purchaseDate\":1739131200000,\"remark\":\"水基清洗、漂洗、热风干燥一体化\",\"serialNumber\":\"SAWA-A1000-250210\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetCode\":\"FA-WH-2024-007\",\"assetId\":7,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"物流设备\",\"deviceCode\":\"WH-FORKLIFT-01\",\"deviceName\":\"2 吨电动叉车\",\"enabledDate\":1722456000000,\"id\":9,\"keeper\":\"张伟\",\"location\":\"原材料仓充电区\",\"manufacturer\":\"Toyota\",\"model\":\"8FBE20\",\"nextMaintenanceDate\":1792872000000,\"purchaseDate\":1721592000000,\"remark\":\"锂电池版本,配置蓝光安全警示灯\",\"serialNumber\":\"TY-8FBE20-240722\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"仓储物流部\"},{\"assetCode\":\"FA-IT-2025-006\",\"assetId\":6,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"服务器\",\"deviceCode\":\"IT-MES-DB-01\",\"deviceName\":\"MES 数据库主服务器\",\"enabledDate\":1737489600000,\"id\":8,\"keeper\":\"赵敏\",\"location\":\"数据中心 A03-U18\",\"manufacturer\":\"Dell\",\"model\":\"PowerEdge R760\",\"nextMaintenanceDate\":1797278400000,\"purchaseDate\":1736884800000,\"remark\":\"双路 CPU、512GB 内存、全闪存 RAID10\",\"serialNumber\":\"CN-R760-25011501\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"信息技术部\"},{\"assetCode\":\"FA-UTIL-2023-005\",\"assetId\":5,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"动力设备\",\"deviceCode\":\"UTIL-AIR-01\",\"deviceName\":\"变频螺杆空压机\",\"enabledDate\":1701374400000,\"id\":7,\"keeper\":\"陈晨\",\"location\":\"动力站 1 号机位\",\"manufacturer\":\"Atlas Copco\",\"model\":\"GA22 VSD+\",\"nextMaintenanceDate\":1790798400000,\"purchaseDate\":1700424000000,\"remark\":\"运行压力 0.72MPa,接入能源管理系统\",\"serialNumber\":\"AC-GA22-2311209\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"设备动力部\"},{\"assetCode\":\"FA-QC-2024-004\",\"assetId\":4,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"检测设备\",\"deviceCode\":\"QC-SPI-01\",\"deviceName\":\"在线 3D SPI\",\"enabledDate\":1713384000000,\"id\":6,\"keeper\":\"陈晨\",\"location\":\"一车间 印刷检测区\",\"manufacturer\":\"Koh Young\",\"model\":\"KY8030-3\",\"nextMaintenanceDate\":1793908800000,\"purchaseDate\":1712347200000,\"remark\":\"与印刷机闭环反馈锡膏偏移数据\",\"serialNumber\":\"KY-8030-24040608\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"品质部\"},{\"assetCode\":\"FA-QC-2024-003\",\"assetId\":3,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"检测设备\",\"deviceCode\":\"QC-AOI-01\",\"deviceName\":\"在线 3D AOI\",\"enabledDate\":1713384000000,\"id\":5,\"keeper\":\"陈晨\",\"location\":\"一车间 AOI 检测区\",\"manufacturer\":\"Koh Young\",\"model\":\"Zenith 2\",\"nextMaintenanceDate\":1793822400000,\"purchaseDate\":1712347200000,\"remark\":\"具备 AI 缺陷复判和 SPC 数据接口\",\"serialNumber\":\"KY-Z2-24040615\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"品质部\"},{\"assetCode\":\"FA-SMT-2024-002\",\"assetId\":2,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"焊接设备\",\"deviceCode\":\"SMT-L01-REFLOW-01\",\"deviceName\":\"十温区氮气回流焊炉\",\"enabledDate\":1712692800000,\"id\":4,\"keeper\":\"王磊\",\"location\":\"一车间 SMT-01 线后段\",\"manufacturer\":\"Heller Industries\",\"model\":\"HELLER 1936MK7\",\"nextMaintenanceDate\":1792440000000,\"purchaseDate\":1710705600000,\"remark\":\"氮气闭环控制,支持双轨独立调宽\",\"serialNumber\":\"HLR1936-2403268\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetCode\":\"FA-SMT-2024-001\",\"assetId\":1,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"贴装设备\",\"deviceCode\":\"SMT-L01-MOUNTER-B\",\"deviceName\":\"多功能贴片机 B\",\"enabledDate\":1712520000000,\"id\":3,\"keeper\":\"王磊\",\"location\":\"一车间 SMT-01 线 B 工位\",\"manufacturer\":\"Panasonic\",\"model\":\"Panasonic NPM-W2S\",\"nextMaintenanceDate\":1792094400000,\"purchaseDate\":1710705600000,\"remark\":\"负责异形件及高精度元件贴装\",\"serialNumber\":\"NPMW2S24031802\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetCode\":\"FA-SMT-2024-001\",\"assetId\":1,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"贴装设备\",\"deviceCode\":\"SMT-L01-MOUNTER-A\",\"deviceName\":\"高速模块贴片机 A\",\"enabledDate\":1712520000000,\"id\":2,\"keeper\":\"王磊\",\"location\":\"一车间 SMT-01 线 A 工位\",\"manufacturer\":\"Panasonic\",\"model\":\"Panasonic NPM-D3A\",\"nextMaintenanceDate\":1792008000000,\"purchaseDate\":1710705600000,\"remark\":\"前段高速贴装,配置 16 头轻量贴装头\",\"serialNumber\":\"NPMD3A24031801\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetCode\":\"FA-SMT-2024-001\",\"assetId\":1,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"印刷设备\",\"deviceCode\":\"SMT-L01-PRINTER-01\",\"deviceName\":\"全自动锡膏印刷机\",\"enabledDate\":1712520000000,\"id\":1,\"keeper\":\"王磊\",\"lastInventoryTime\":1789726083000,\"location\":\"一车间 SMT-01 线前段\",\"manufacturer\":\"ASMPT\",\"model\":\"DEK NeoHorizon 03iX\",\"nextMaintenanceDate\":1791403200000,\"purchaseDate\":1710705600000,\"remark\":\"配置 2D 检测与自动擦网单元\",\"serialNumber\":\"DEK24NH03187\",\"status\":\"IN_USE\",\"updateTime\":1789726082000,\"useDepartment\":\"SMT生产部\"}]}}'); +INSERT INTO `tbl_log` VALUES (8000, 63, '接口日志', '111.4.224.18/183.158.161.24', '2026-09-24 13:40:09', 0, 'AssetInventoryController.list(..)', NULL, 'GET /apis/assetInventory/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"abnormalCount\":0,\"createTime\":1789722750000,\"creator\":63,\"deadline\":1789999200000,\"deleteFlag\":\"0\",\"id\":1,\"inventoriedCount\":0,\"inventoryNo\":\"PD20260918131230171\",\"inventoryUserId\":36,\"inventoryUserName\":\"张伟\",\"normalCount\":0,\"planName\":\"2026年09月资产设备专项盘点\",\"plannedAt\":1789794000000,\"remark\":\"进行盘点\",\"scopeType\":\"DEVICE\",\"source\":\"MANUAL\",\"startedAt\":1789723142000,\"status\":\"IN_PROGRESS\",\"totalCount\":3,\"updateTime\":1789723142000,\"updater\":63}]}}'); +INSERT INTO `tbl_log` VALUES (8001, 63, '接口日志', '111.4.224.162/183.158.161.24', '2026-09-24 13:40:10', 0, 'AssetInventoryController.operatorOptions()', NULL, 'GET /apis/assetInventory/operatorOptions', '{}', '{\"code\":200,\"data\":{\"rows\":[{\"loginName\":\"admin\",\"name\":\"admin\",\"id\":63}],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (8002, 63, '接口日志', '111.4.224.45/183.158.161.24', '2026-09-24 13:40:15', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"}]'); +INSERT INTO `tbl_log` VALUES (8003, 63, '接口日志', '111.4.224.162/183.158.161.24', '2026-09-24 13:40:15', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8004, 63, '接口日志', '111.4.225.159/183.158.161.24', '2026-09-24 13:40:15', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8005, 63, '接口日志', '111.4.224.148/183.158.161.24', '2026-09-24 13:40:15', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8006, 63, '接口日志', '111.4.225.159/183.158.161.24', '2026-09-24 13:40:15', 0, 'PersonController.getPersonByNumType(..)', NULL, 'GET /apis/person/getPersonByNumType', '{\"typeNum\":\"1\"}', '[]'); +INSERT INTO `tbl_log` VALUES (8007, 63, '接口日志', '111.4.224.162/183.158.161.24', '2026-09-24 13:40:15', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (8008, 63, '接口日志', '111.4.225.185/183.158.161.24', '2026-09-24 13:40:15', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (8009, 63, '接口日志', '111.4.225.159/183.158.161.24', '2026-09-24 13:40:15', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"其它\\\",\\\"subType\\\":\\\"销售订单\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-24\\\",\\\"endTime\\\":\\\"2026-09-24\\\",\\\"createTimeRange\\\":[\\\"2026-06-23T16:00:00.000Z\\\",\\\"2026-09-23T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":8,\"rows\":[{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789718483000,\"creator\":63,\"debt\":808500.000000,\"defaultNumber\":\"XSDD00000001726\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":808500.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1719,\"lastDebt\":808500.000000,\"lastDeposit\":0.000000,\"materialCount\":10000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD00000001726\",\"operTime\":1789732682000,\"operTimeStr\":\"2026-09-18 15:58:02\",\"organId\":90,\"organName\":\"TNB\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"totalPrice\":735000.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789726236000,\"creator\":63,\"debt\":340000000.000000,\"defaultNumber\":\"XSDD00000001724\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":340000000.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1718,\"lastDebt\":340000000.000000,\"lastDeposit\":0.000000,\"materialCount\":1000000.000000,\"materialsList\":\"3PH APEC3-WC 3PH APEC3-WC 3PH APEC3-WC \",\"number\":\"XSDD00000001724\",\"operTime\":1789725706000,\"operTimeStr\":\"2026-09-18 14:01:46\",\"organId\":90,\"organName\":\"TNB\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"0\",\"subType\":\"销售订单\",\"totalPrice\":340000000.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1782331200000,\"creator\":63,\"debt\":1402126.000000,\"defaultNumber\":\"XSDD-42260527-3PH-APEC3-WC-OV\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":1402126.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1689,\"lastDebt\":1402126.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":3749.000000,\"materialsList\":\"3PH APEC3-WC 3PH APEC3-WC 3PH APEC3-WC \",\"number\":\"XSDD-42260527-3PH-APEC3-WC-OV\",\"operTime\":1782331200000,\"operTimeStr\":\"2026-06-25 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42260527\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":1402126.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1782331200000,\"creator\":63,\"debt\":194040.000000,\"defaultNumber\":\"XSDD-42303565-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":194040.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1600,\"lastDebt\":194040.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":2400.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303565-1PH-WS79-ADD1\",\"operTime\":1782331200000,\"operTimeStr\":\"2026-06-25 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303565\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":194040.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1785355200000,\"creator\":63,\"debt\":242550.000000,\"defaultNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":242550.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1580,\"lastDebt\":242550.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":3000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303475-1PH-WS79-ADD1\",\"operTime\":1785355200000,\"operTimeStr\":\"2026-07-30 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303475\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":242550.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1785355200000,\"creator\":63,\"debt\":323400.000000,\"defaultNumber\":\"XSDD-42303447-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":323400.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1574,\"lastDebt\":323400.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":4000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303447-1PH-WS79-ADD1\",\"operTime\":1785355200000,\"operTimeStr\":\"2026-07-30 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303447\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":323400.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1782936000000,\"creator\":63,\"debt\":323400.000000,\"defaultNumber\":\"XSDD-42303429-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":323400.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1569,\"lastDebt\":323400.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":4000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303429-1PH-WS79-ADD1\",\"operTime\":1782936000000,\"operTimeStr\":\"2026-07-02 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303429\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":323400.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1782676800000,\"creator\":63,\"debt\":323400.000000,\"defaultNumber\":\"XSDD-42303412-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":323400.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1565,\"lastDebt\":323400.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":4000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303412-1PH-WS79-ADD1\",\"operTime\":1782676800000,\"operTimeStr\":\"2026-06-29 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303412\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":323400.000000,\"type\":\"其它\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (8010, 63, '接口日志', '117.40.82.179/183.158.161.24', '2026-09-24 13:40:16', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (8011, 63, '接口日志', '111.4.224.45/183.158.161.24', '2026-09-24 13:40:16', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (8012, 63, '接口日志', '111.4.225.185/183.158.161.24', '2026-09-24 13:40:16', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8013, 63, '接口日志', '111.4.224.18/183.158.161.24', '2026-09-24 13:40:16', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (8014, 63, '接口日志', '111.4.225.185/183.158.161.24', '2026-09-24 13:40:17', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (8015, 63, '接口日志', '111.4.225.151/183.158.161.24', '2026-09-24 13:40:17', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8016, 63, '接口日志', '111.4.225.16/183.158.161.24', '2026-09-24 13:40:17', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"出库\\\",\\\"subType\\\":\\\"销售\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-24\\\",\\\"endTime\\\":\\\"2026-09-24\\\",\\\"createTimeRange\\\":[\\\"2026-06-23T16:00:00.000Z\\\",\\\"2026-09-23T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":65,\"rows\":[{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789718584000,\"creator\":63,\"debt\":808500.000000,\"defaultNumber\":\"XSCK00000001728\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":808500.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1720,\"lastDebt\":808500.000000,\"lastDeposit\":0.000000,\"linkNumber\":\"XSDD00000001726\",\"materialCount\":10000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK00000001728\",\"operTime\":1789732981000,\"operTimeStr\":\"2026-09-18 16:03:01\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"totalPrice\":735000.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1786305600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-87\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1671,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303506-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-87\",\"operTime\":1786305600000,\"operTimeStr\":\"2026-08-10 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1786305600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2159-86\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1670,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303506-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2159-86\",\"operTime\":1786305600000,\"operTimeStr\":\"2026-08-10 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2159\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785873600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-DO_2158-85\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1669,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-DO_2158-85\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:DO_2158\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785873600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-84\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1668,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-84\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785873600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-DO_2157-83\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1667,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-DO_2157-83\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:DO_2157\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785268800000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2150-69\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1665,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303480-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2150-69\",\"operTime\":1785268800000,\"operTimeStr\":\"2026-07-29 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2150\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784750400000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2142-68\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1664,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303480-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2142-68\",\"operTime\":1784750400000,\"operTimeStr\":\"2026-07-23 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2142\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784145600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-67\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1663,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-67\",\"operTime\":1784145600000,\"operTimeStr\":\"2026-07-16 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784145600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2134-66\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1662,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2134-66\",\"operTime\":1784145600000,\"operTimeStr\":\"2026-07-16 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2134\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (8017, 63, '接口日志', '111.4.224.148/183.158.161.24', '2026-09-24 13:40:17', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8018, 63, '接口日志', '111.4.225.53/183.158.161.24', '2026-09-24 13:40:17', 0, 'PersonController.getPersonByNumType(..)', NULL, 'GET /apis/person/getPersonByNumType', '{\"typeNum\":\"1\"}', '[]'); +INSERT INTO `tbl_log` VALUES (8019, 63, '接口日志', '111.4.224.162/183.158.161.24', '2026-09-24 13:40:18', 0, 'SaleShipmentController.getList(..)', NULL, 'GET /apis/saleShipment/list', '{\"search\":\"{\\\"shipmentNumber\\\":\\\"\\\",\\\"saleOutNumber\\\":\\\"\\\",\\\"saleOrderNumber\\\":\\\"\\\",\\\"logisticsNo\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"actualQuantity\":10000.000000,\"approveBy\":63,\"approveByName\":\"admin\",\"approveRemark\":\"审批通过\",\"approveTime\":1789720647000,\"confirmBy\":63,\"confirmByName\":\"admin\",\"confirmTime\":1789720682000,\"createTime\":1789720588000,\"creator\":63,\"creatorName\":\"admin\",\"customerId\":90,\"customerName\":\"TNB\",\"deleteFlag\":\"0\",\"deliveryPlanId\":7,\"deliveryPlanNumber\":\"JH00000001741\",\"differenceQuantity\":0.000000,\"id\":17,\"materialsList\":\"1PH WS79\",\"planQuantity\":10000.000000,\"plannedShipTime\":1789734921000,\"saleOrderNumber\":\"XSDD00000001726\",\"saleOutId\":1720,\"saleOutNumber\":\"XSCK00000001728\",\"shipBy\":63,\"shipByName\":\"admin\",\"shipTime\":1789720682000,\"shipmentNumber\":\"FHTZ00000001742\",\"sourceType\":\"sale\",\"status\":\"2\"},{\"actualQuantity\":149.000000,\"approveBy\":63,\"approveByName\":\"admin\",\"approveRemark\":\"审批通过\",\"approveTime\":1789717350000,\"confirmBy\":63,\"confirmByName\":\"admin\",\"confirmTime\":1789717357000,\"createTime\":1789717342000,\"creator\":63,\"creatorName\":\"admin\",\"customerId\":90,\"customerName\":\"TNB\",\"deleteFlag\":\"0\",\"deliveryPlanId\":6,\"deliveryPlanNumber\":\"JH00000001717\",\"differenceQuantity\":0.000000,\"id\":16,\"logisticsCompany\":\"FEXD\",\"logisticsNo\":\"FD10000001\",\"materialsList\":\"3PH APEC3-WC\",\"planQuantity\":149.000000,\"plannedShipTime\":1789717304000,\"receiver\":\"Hank\",\"receiverAddress\":\"5433 Grand Ave\",\"receiverPhone\":\"60001-1111\",\"saleOrderNumber\":\"XSDD-42260529-3PH-APEC3-WC-OV\",\"saleOutId\":1714,\"saleOutNumber\":\"XSCK-3PH-APEC3-WC-OV-28\",\"shipBy\":63,\"shipByName\":\"admin\",\"shipTime\":1789717357000,\"shipmentNumber\":\"FHTZ00000001718\",\"sourceType\":\"sale\",\"status\":\"2\"}]}}'); +INSERT INTO `tbl_log` VALUES (8020, 63, '接口日志', '111.4.225.151/183.158.161.24', '2026-09-24 13:40:18', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"}]'); +INSERT INTO `tbl_log` VALUES (8021, 63, '接口日志', '111.4.225.16/183.158.161.24', '2026-09-24 13:40:21', 0, 'PackBomController.getList(..)', NULL, 'GET /apis/packBom/list', '{\"search\":\"{\\\"bomNumber\\\":\\\"\\\",\\\"bomName\\\":\\\"\\\",\\\"productMaterialParam\\\":\\\"\\\",\\\"outputMaterialParam\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"bomName\":\"v1.0\",\"bomNumber\":\"BOM00000001735\",\"createTime\":1789719259000,\"creator\":63,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"itemCount\":1,\"outputMaterialExtendId\":123,\"outputMaterialId\":703,\"outputMaterialName\":\"1PH WS79\",\"outputNumber\":1.000000,\"productMaterialExtendId\":123,\"productMaterialId\":703,\"version\":\"v1.0\"}]}}'); +INSERT INTO `tbl_log` VALUES (8022, 63, '接口日志', '111.4.224.45/183.158.161.24', '2026-09-24 13:40:22', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8023, 63, '接口日志', '111.4.225.53/183.158.161.24', '2026-09-24 13:40:22', 0, 'ProductionOrderController.getList(..)', NULL, 'GET /apis/productionOrder/list', '{\"search\":\"{\\\"orderNumber\\\":\\\"\\\",\\\"sourceNumber\\\":\\\"\\\",\\\"productMaterialParam\\\":\\\"\\\",\\\"beginTime\\\":\\\"\\\",\\\"endTime\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"auditBy\":63,\"auditByName\":\"admin\",\"auditTime\":1789719775000,\"bomId\":18,\"bomName\":\"v1.0\",\"createTime\":1789719619000,\"creator\":63,\"creatorName\":\"admin\",\"deleteFlag\":\"0\",\"finishedQuantity\":0.000000,\"id\":11,\"orderNumber\":\"GD20260918122018493\",\"orderQuantity\":10000.000000,\"outputMaterialExtendId\":123,\"outputMaterialId\":703,\"outputMaterialName\":\"1PH WS79\",\"outputQuantity\":10000.000000,\"planEndDate\":1790280000000,\"planStartDate\":1789675200000,\"priority\":\"0\",\"productMaterialExtendId\":123,\"productMaterialId\":703,\"releaseBy\":63,\"releaseTime\":1789719775000,\"remark\":\"\",\"sourceId\":1719,\"sourceNumber\":\"XSDD00000001726\",\"sourceType\":\"销售订单\",\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (8024, 63, '接口日志', '111.4.224.45/183.158.161.24', '2026-09-24 13:40:23', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8025, 63, '接口日志', '111.4.224.18/183.158.161.24', '2026-09-24 13:40:23', 0, 'ProductionRequisitionController.getList(..)', NULL, 'GET /apis/productionRequisition/list', '{\"search\":\"{\\\"requisitionNumber\\\":\\\"\\\",\\\"orderNumber\\\":\\\"\\\",\\\"beginTime\\\":\\\"\\\",\\\"endTime\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"createTime\":1789720317000,\"creator\":63,\"creatorName\":\"admin\",\"deleteFlag\":\"0\",\"depotId\":25,\"depotName\":\"半成品仓库\",\"id\":9,\"itemCount\":1,\"materialsList\":\"MD-4G111(VF) 包装\",\"orderId\":11,\"orderNumber\":\"GD20260918122018493\",\"requisitionNumber\":\"LL20260918123156921\",\"status\":\"0\"},{\"createTime\":1789719809000,\"creator\":63,\"creatorName\":\"admin\",\"deleteFlag\":\"0\",\"depotId\":25,\"depotName\":\"半成品仓库\",\"id\":8,\"itemCount\":1,\"materialsList\":\"MD-4G111(VF) 包装\",\"orderId\":11,\"orderNumber\":\"GD20260918122018493\",\"remark\":\"11\",\"requisitionNumber\":\"LL20260918122329111\",\"status\":\"2\"}]}}'); +INSERT INTO `tbl_log` VALUES (8026, 63, '接口日志', '111.4.225.53/183.158.161.24', '2026-09-24 13:40:24', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8027, 63, '接口日志', '111.4.224.18/183.158.161.24', '2026-09-24 13:40:27', 0, 'ProductionRequisitionController.confirmIssue(..)', NULL, 'POST /apis/productionRequisition/confirmIssue', '{\"obj\":{\"id\":9}}', '{\"code\":200,\"data\":{\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (8028, 63, '接口日志', '111.4.224.18/183.158.161.24', '2026-09-24 13:40:30', 0, 'ProductionRequisitionController.getList(..)', NULL, 'GET /apis/productionRequisition/list', '{\"search\":\"{\\\"requisitionNumber\\\":\\\"\\\",\\\"orderNumber\\\":\\\"\\\",\\\"beginTime\\\":\\\"\\\",\\\"endTime\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"confirmBy\":63,\"confirmByName\":\"admin\",\"confirmTime\":1790242827000,\"createTime\":1789720317000,\"creator\":63,\"creatorName\":\"admin\",\"deleteFlag\":\"0\",\"depotId\":25,\"depotName\":\"半成品仓库\",\"id\":9,\"itemCount\":1,\"materialsList\":\"MD-4G111(VF) 包装\",\"orderId\":11,\"orderNumber\":\"GD20260918122018493\",\"requisitionNumber\":\"LL20260918123156921\",\"status\":\"1\"},{\"createTime\":1789719809000,\"creator\":63,\"creatorName\":\"admin\",\"deleteFlag\":\"0\",\"depotId\":25,\"depotName\":\"半成品仓库\",\"id\":8,\"itemCount\":1,\"materialsList\":\"MD-4G111(VF) 包装\",\"orderId\":11,\"orderNumber\":\"GD20260918122018493\",\"remark\":\"11\",\"requisitionNumber\":\"LL20260918122329111\",\"status\":\"2\"}]}}'); +INSERT INTO `tbl_log` VALUES (8029, NULL, '接口日志', '43.152.142.132/1.9.116.218', '2026-09-25 11:08:54', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (8030, NULL, '接口日志', '43.174.53.48/1.9.116.218', '2026-09-25 11:08:54', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (8031, NULL, '接口日志', '43.174.53.14/1.9.116.218', '2026-09-25 11:08:57', 0, 'PlatformConfigController.getPlatformCheckcodeFlag(..)', NULL, 'GET /apis/platformConfig/getPlatform/checkcodeFlag', '{}', '\"1\"'); +INSERT INTO `tbl_log` VALUES (8032, NULL, '接口日志', '43.174.54.27/1.9.116.218', '2026-09-25 11:08:57', 0, 'UserController.randomImage(..)', NULL, 'GET /apis/user/randomImage', '{}', '{\"code\":200,\"data\":{\"base64\":\"data:image/jpg;base64,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\",\"uuid\":\"c3f014bc9e8a4d6fa1cdcd2e86958c06\"}}'); +INSERT INTO `tbl_log` VALUES (8033, NULL, '接口日志', '43.168.152.22/23.27.145.58', '2026-09-25 11:49:26', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (8034, NULL, '接口日志', '43.168.153.70/23.27.145.58', '2026-09-25 11:49:27', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (8035, NULL, '接口日志', '43.168.154.49/23.27.145.58', '2026-09-25 11:49:35', 0, 'UserController.randomImage(..)', NULL, 'GET /apis/user/randomImage', '{}', '{\"code\":200,\"data\":{\"base64\":\"data:image/jpg;base64,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\",\"uuid\":\"e69a2e4f6439459eb756179af7166e73\"}}'); +INSERT INTO `tbl_log` VALUES (8036, NULL, '接口日志', '43.168.153.72/23.27.145.58', '2026-09-25 11:49:35', 0, 'PlatformConfigController.getPlatformCheckcodeFlag(..)', NULL, 'GET /apis/platformConfig/getPlatform/checkcodeFlag', '{}', '\"1\"'); +INSERT INTO `tbl_log` VALUES (8037, NULL, '接口日志', '111.4.225.53/36.27.38.169', '2026-09-28 06:39:04', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (8038, NULL, '接口日志', '111.4.224.162/36.27.38.169', '2026-09-28 06:39:04', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (8039, NULL, '接口日志', '111.4.224.18/36.27.38.169', '2026-09-28 06:39:08', 0, 'PlatformConfigController.getPlatformCheckcodeFlag(..)', NULL, 'GET /apis/platformConfig/getPlatform/checkcodeFlag', '{}', '\"1\"'); +INSERT INTO `tbl_log` VALUES (8040, NULL, '接口日志', '111.4.225.185/36.27.38.169', '2026-09-28 06:39:08', 0, 'UserController.randomImage(..)', NULL, 'GET /apis/user/randomImage', '{}', '{\"code\":200,\"data\":{\"base64\":\"data:image/jpg;base64,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\",\"uuid\":\"5294cf7822f04a20b869e211ca7bafc4\"}}'); +INSERT INTO `tbl_log` VALUES (8041, NULL, '接口日志', '60.163.165.229/36.27.38.169', '2026-09-28 07:31:57', 1, 'UserController.login(..)', NULL, 'POST /apis/user/login', '{\"userParam\":{\"code\":\"p3r6\",\"loginName\":\"admin\",\"password\":\"******\",\"uuid\":\"5294cf7822f04a20b869e211ca7bafc4\"}}', 'com.reallin.smt.exception.BusinessRunTimeException: 验证码已失效'); +INSERT INTO `tbl_log` VALUES (8042, NULL, '接口日志', '60.163.165.229/36.27.38.169', '2026-09-28 07:31:57', 0, 'UserController.randomImage(..)', NULL, 'GET /apis/user/randomImage', '{}', '{\"code\":200,\"data\":{\"base64\":\"data:image/jpg;base64,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\",\"uuid\":\"5f3c6aea8a854ad8b98b9a184cfed4e3\"}}'); +INSERT INTO `tbl_log` VALUES (8043, NULL, '接口日志', '112.13.210.158/36.27.38.169', '2026-09-28 07:32:02', 0, 'UserController.login(..)', NULL, 'POST /apis/user/login', '{\"userParam\":{\"code\":\"n2q0\",\"loginName\":\"admin\",\"password\":\"******\",\"uuid\":\"5f3c6aea8a854ad8b98b9a184cfed4e3\"}}', '{\"code\":200,\"data\":{\"msgTip\":\"user password error\"}}'); +INSERT INTO `tbl_log` VALUES (8044, NULL, '接口日志', '112.13.210.152/36.27.38.169', '2026-09-28 07:32:03', 0, 'UserController.randomImage(..)', NULL, 'GET /apis/user/randomImage', '{}', '{\"code\":200,\"data\":{\"base64\":\"data:image/jpg;base64,/9j/4AAQSkZJRgABAgAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAAjAGkDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3m7uBa2zTEAhSM5cLwSAeTxTY3mJAVkkRVCtJnG5s4bp0xg8epxxio7pR9pgXA8t2YyoEz5nG0Z56cjPB7ZxXiax6bD+08ji4uhqQk2fZFs1ECp9j2giQSFvuYONgGeOBzQB7fBexT3EsCq6vESCHXGee3r2P0YetSWpdrSEyFi5RSxddpJxzkdj7U24SOSSLJYSqQy7Gw2MjP1Xpkf1xSR3OQyur70kETEJkE4BzxnA579O9Ait9mnt0mYOZcLiAB5Cc7iQGyxzzjnjjIOBVxJgIN8rqpRQZckDYcZOeTj868ovvgdD4m17UtW8UeIdSuXnuJDaQ28gxbQmR2VN0gbI2svAChTuHPWuW8GSap4H+N0/gOy1F73SiriFLwbvK/cNOhXB+UguVYrgNuY4BIwDPfrUOsZDs7DJIMn385OQe3B6Y4x+Zl3/vdg2nC5b5uR6ceh5/KqNnPuQJHFLAjAiKOWFv3ZGcg44C9Mc+oHoPKpfjz4Ms74B4tS1B4QPLube2XbyvIUuyOV5xhlznPJ4NAHsb7/l2bevzBu49vf8Az70kztFBJIkZkZVLBB1YgdKwfCvivR/Gmm/2po9xcSQkiORHjZPKkUKxU9t3zrnBIOOCQDUfjWS2h8AeI4T5ojTTZ1cRJuZFaNhkKSMgZPcDgjjFAG1FLLNKjeYsaHDrGVBZ1288hjkZYcjHTuDmnYnjhnMalnDlkV2yCOuAeoz79Ce4Ary/4BwWCeDL3+zrqa6tF1OQq11aLDIH8qIHAWRxjBx1zya9UO1rgB1AdQShDckd/wCnt0/AASMMu+NS+Q27dIMggnOAfzA9MD2zNVe3geFRExLRxnMb7+WznIIAAAGcAcjp0xVigCKSN3cFCqFduHxk43AsuOwIAGff2r5/urqGy/a0e4uH2RJjc2CcZscdvrX0BNOsMkStwJG27iDgenOMZJwBkjOfwrCj8GeGpfFg8XR2KvrJ6Xa3EhB/d+X93ds+7x0/WgDdNxGYpXjbzfKyGWMhjuHVfr7VIFCliM/McnJJ7Y49OlQQLIlxchhKULB1d2BByMEKB0AwOvcmo5lK/azezx/YpEVVDfJsyCGBPvxz70AeN/Fb4xN4dvbjQ/Ck8R1LeDeXgQOIHHBRQ2VZsAA8YXBHLE7D4TeGdC0vVLfVbrxLpWq+LrxmklhW+jnaJXViwQgsXl4JZgemRnBLN2Fz8JPAF/q9y1x4eka5lYzyyfapwrFjnPEmBkluOOh4xjNzR/hh4J8PajBrOl6THbzwKxWZrqWRQrIVPDOVxtY9Qf60AdBrWrNoug6tqTxxztYWst0IVfaXVVLAHg7c7SM89M+w+ddP8aeLvEei395H4t8I+H9MRDbNo9xHGoMSRgYSFo5GZSDjHJOCoGABX055agIANoT7oU4HTHQdvauK/wCFV/D+wv21V/Dtmr7yxErO8IL8f6okoB83A24HGMYoA82/Zl/5mn/t0/8Aa1er+M1KeBfFitcvKw0m4yrjBX9y/TGAQfXHUHk4wE8O+B/D3hV7iTw3pgtftUQbz1unfcQDtB3lsD5s8Ag9SOFq/f6Rbaha3UE2nTSJcwyQvHLN8mJV+fo+V7glcHk4zQB5x+zin/FA6hJub/kKSArng/uoucevX/OMevPHIzhkmK4IypUEEc59+c+vYe4OR4Z8M6T4SsX03RdONnbSObiQCZpF8wgKeXYt0Ue3Fa80yQIGcjJO1VLAF27KMkcmgBuVmID27HZJ/Go+UgZDD/EevbnE1ROWE8R85VQ5UoRy5xkYOeowf1qWgApGVWGGAIyDgjuORRRQAIixoqIoVVGAoGAB6UiRxx7vLRV3MWbaMZJ7n3oooADGpkWQj51BUH2OM/yFNEEIjaMRII2GGXaMEYxyPoMUUUAL5Ufned5aebt279o3beuM+lOZVcYZQRkHBHcciiigBskMU2zzY0fYwddyg7WHQj0NPoooAKa8aOyMwyY23Lz0OCP5E0UUAOooooA//9k=\",\"uuid\":\"71f3b0335882498889cf37b11c5025d4\"}}'); +INSERT INTO `tbl_log` VALUES (8045, NULL, '接口日志', '120.226.169.39/115.220.229.151', '2026-09-28 11:16:52', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (8046, NULL, '接口日志', '120.226.169.13/115.220.229.151', '2026-09-28 11:16:53', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (8047, NULL, '接口日志', '120.226.169.41/115.220.229.151', '2026-09-28 11:17:44', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (8048, NULL, '接口日志', '120.226.169.41/115.220.229.151', '2026-09-28 11:17:45', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (8049, NULL, '接口日志', '120.226.169.41/115.220.229.151', '2026-09-28 11:17:45', 0, 'UserController.randomImage(..)', NULL, 'GET /apis/user/randomImage', '{}', '{\"code\":200,\"data\":{\"base64\":\"data:image/jpg;base64,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\",\"uuid\":\"72464c039a80430aa2acc33d083cc317\"}}'); +INSERT INTO `tbl_log` VALUES (8050, NULL, '接口日志', '120.226.169.39/115.220.229.151', '2026-09-28 11:17:45', 0, 'PlatformConfigController.getPlatformCheckcodeFlag(..)', NULL, 'GET /apis/platformConfig/getPlatform/checkcodeFlag', '{}', '\"1\"'); +INSERT INTO `tbl_log` VALUES (8051, 63, '用户', '117.85.66.39/115.220.229.151', '2026-09-28 11:17:51', 0, '登录admin', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (8052, NULL, '接口日志', '117.85.66.39/115.220.229.151', '2026-09-28 11:17:51', 0, 'UserController.login(..)', NULL, 'POST /apis/user/login', '{\"userParam\":{\"code\":\"nzk2\",\"loginName\":\"admin\",\"password\":\"******\",\"uuid\":\"72464c039a80430aa2acc33d083cc317\"}}', '{\"code\":200,\"data\":{\"pwdSimple\":\"******\",\"user\":{\"deleteFlag\":\"0\",\"description\":\"\",\"email\":\"666666@qq.com\",\"id\":63,\"ismanager\":1,\"isystem\":1,\"leaderFlag\":\"0\",\"loginName\":\"admin\",\"password\":\"******\",\"phonenum\":\"1123123123132\",\"position\":\"主管\",\"status\":0,\"tenantId\":63,\"username\":\"admin\"},\"msgTip\":\"user can login\",\"token\":\"******\"}}'); +INSERT INTO `tbl_log` VALUES (8053, 63, '接口日志', '120.226.169.41/115.220.229.151', '2026-09-28 11:17:51', 0, 'MaterialPropertyController.getAllList(..)', NULL, 'GET /apis/materialProperty/getAllList', '{}', '{\"code\":200,\"data\":[{\"anotherName\":\"扩展1\",\"id\":1,\"nativeName\":\"扩展1\"},{\"anotherName\":\"扩展2\",\"id\":2,\"nativeName\":\"扩展2\"},{\"anotherName\":\"扩展3\",\"id\":3,\"nativeName\":\"扩展3\"}]}'); +INSERT INTO `tbl_log` VALUES (8054, 63, '接口日志', '117.40.82.179/115.220.229.151', '2026-09-28 11:17:54', 0, 'FunctionController.findMenuByPNumber(..)', NULL, 'POST /apis/function/findMenuByPNumber', '{\"jsonObject\":{\"userId\":63,\"pNumber\":0}}', '[{\"component\":\"/layouts/TabLayout\",\"icon\":\"home\",\"id\":0,\"text\":\"首页\",\"url\":\"/dashboard/analysis\",\"textEn\":\"Home\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/SaleOrderList\",\"icon\":\"profile\",\"id\":242,\"text\":\"销售订单\",\"url\":\"/bill/sale_order\",\"textEn\":\"Sales Orders\"},{\"component\":\"/bill/SaleOutList\",\"icon\":\"profile\",\"id\":41,\"text\":\"销售出库\",\"url\":\"/bill/sale_out\",\"textEn\":\"Sales Shipments\"},{\"component\":\"/bill/DeliveryPlanList\",\"icon\":\"profile\",\"id\":271,\"text\":\"交货计划管理\",\"url\":\"/bill/delivery_plan\",\"textEn\":\"Delivery Plans\"},{\"component\":\"/bill/SaleShipmentList\",\"icon\":\"car\",\"id\":268,\"text\":\"发货管理\",\"url\":\"/bill/sale_shipment\",\"textEn\":\"Shipment Management\"},{\"component\":\"/bill/SaleBackList\",\"icon\":\"profile\",\"id\":200,\"text\":\"销售退货\",\"url\":\"/bill/sale_back\",\"textEn\":\"Sales Returns\"},{\"component\":\"/bill/RetailOutList\",\"icon\":\"profile\",\"id\":210,\"text\":\"零售出库\",\"url\":\"/bill/retail_out\",\"textEn\":\"Retail Shipments\"},{\"component\":\"/bill/RetailBackList\",\"icon\":\"profile\",\"id\":211,\"text\":\"零售退货\",\"url\":\"/bill/retail_back\",\"textEn\":\"Retail Returns\"}],\"icon\":\"shopping-cart\",\"id\":38,\"text\":\"销售管理\",\"url\":\"/billB\",\"textEn\":\"Sales Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/PurchaseApplyList\",\"icon\":\"profile\",\"id\":261,\"text\":\"请购单\",\"url\":\"/bill/purchase_apply\",\"textEn\":\"Purchase Requisitions\"},{\"component\":\"/bill/PurchaseOrderList\",\"icon\":\"profile\",\"id\":241,\"text\":\"采购订单\",\"url\":\"/bill/purchase_order\",\"textEn\":\"Purchase Orders\"},{\"component\":\"/bill/PurchaseInList\",\"icon\":\"profile\",\"id\":33,\"text\":\"采购入库\",\"url\":\"/bill/purchase_in\",\"textEn\":\"Purchase Receipts\"},{\"component\":\"/bill/PurchaseBackList\",\"icon\":\"profile\",\"id\":199,\"text\":\"采购退货\",\"url\":\"/bill/purchase_back\",\"textEn\":\"Purchase Returns\"}],\"icon\":\"retweet\",\"id\":32,\"text\":\"采购管理\",\"url\":\"/bill\",\"textEn\":\"Purchase Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/production/PackBomList\",\"icon\":\"profile\",\"id\":263,\"text\":\"生产方案\",\"url\":\"/production/pack_bom\",\"textEn\":\"Production BOMs\"},{\"component\":\"/production/OrderList\",\"icon\":\"profile\",\"id\":264,\"text\":\"生产工单\",\"url\":\"/production/order\",\"textEn\":\"Production Orders\"},{\"component\":\"/production/RequisitionList\",\"icon\":\"profile\",\"id\":265,\"text\":\"领料管理\",\"url\":\"/production/requisition\",\"textEn\":\"Material Requisitions\"},{\"component\":\"/production/ReportList\",\"icon\":\"profile\",\"id\":266,\"text\":\"完工报工\",\"url\":\"/production/report\",\"textEn\":\"Production Reports\"}],\"icon\":\"cluster\",\"id\":262,\"text\":\"生产管理\",\"url\":\"/production\",\"textEn\":\"Production Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/MaterialStock\",\"icon\":\"profile\",\"id\":246,\"text\":\"商品库存\",\"url\":\"/report/material_stock\",\"textEn\":\"Product Inventory\"},{\"component\":\"/bill/OtherInList\",\"icon\":\"profile\",\"id\":201,\"text\":\"其它入库\",\"url\":\"/bill/other_in\",\"textEn\":\"Other Receipts\"},{\"component\":\"/bill/OtherOutList\",\"icon\":\"profile\",\"id\":202,\"text\":\"其它出库\",\"url\":\"/bill/other_out\",\"textEn\":\"Other Shipments\"},{\"component\":\"/bill/HeadquartersInList\",\"icon\":\"profile\",\"id\":270,\"text\":\"总部入库\",\"url\":\"/bill/headquarters_in\",\"textEn\":\"Headquarters Receipts\"}],\"icon\":\"hdd\",\"id\":239,\"text\":\"仓库管理\",\"url\":\"/billD\",\"textEn\":\"Warehouse Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/financial/MoneyInList\",\"icon\":\"profile\",\"id\":204,\"text\":\"收款单\",\"url\":\"/financial/money_in\",\"textEn\":\"Receipt Vouchers\"},{\"component\":\"/financial/MoneyOutList\",\"icon\":\"profile\",\"id\":205,\"text\":\"付款单\",\"url\":\"/financial/money_out\",\"textEn\":\"Payment Vouchers\"}],\"icon\":\"money-collect\",\"id\":44,\"text\":\"财务管理\",\"url\":\"/financial\",\"textEn\":\"Finance Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/asset/AssetList\",\"icon\":\"profile\",\"id\":273,\"text\":\"资产台账\",\"url\":\"/asset/ledger\",\"textEn\":\"Asset Ledger\"},{\"component\":\"/asset/DeviceList\",\"icon\":\"tool\",\"id\":274,\"text\":\"设备台账\",\"url\":\"/asset/device\",\"textEn\":\"Device Ledger\"},{\"component\":\"/asset/InventoryList\",\"icon\":\"scan\",\"id\":275,\"text\":\"资产盘点\",\"url\":\"/asset/inventory\",\"textEn\":\"Asset Inventory\"}],\"icon\":\"bank\",\"id\":272,\"text\":\"资产管理\",\"url\":\"/assetManagement\",\"textEn\":\"Asset Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/material/MaterialCategoryList\",\"icon\":\"profile\",\"id\":22,\"text\":\"商品类别\",\"url\":\"/material/material_category\",\"textEn\":\"Product Categories\"},{\"component\":\"/material/MaterialList\",\"icon\":\"profile\",\"id\":23,\"text\":\"商品信息\",\"url\":\"/material/material\",\"textEn\":\"Product Information\"},{\"component\":\"/system/UnitList\",\"icon\":\"profile\",\"id\":220,\"text\":\"多单位\",\"url\":\"/system/unit\",\"textEn\":\"Multiple Units\"},{\"component\":\"/material/MaterialAttributeList\",\"icon\":\"profile\",\"id\":247,\"text\":\"多属性\",\"url\":\"/material/material_attribute\",\"textEn\":\"Product Attributes\"}],\"icon\":\"shopping\",\"id\":21,\"text\":\"商品管理\",\"url\":\"/material\",\"textEn\":\"Product Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/AccountReport\",\"icon\":\"profile\",\"id\":207,\"text\":\"账户统计\",\"url\":\"/report/account_report\",\"textEn\":\"Account Summary\"},{\"component\":\"/report/RetailOutReport\",\"icon\":\"profile\",\"id\":259,\"text\":\"零售统计\",\"url\":\"/report/retail_out_report\",\"textEn\":\"Retail Summary\"},{\"component\":\"/report/BuyInReport\",\"icon\":\"profile\",\"id\":208,\"text\":\"采购统计\",\"url\":\"/report/buy_in_report\",\"textEn\":\"Purchase Summary\"},{\"component\":\"/report/SaleOutReport\",\"icon\":\"profile\",\"id\":209,\"text\":\"销售统计\",\"url\":\"/report/sale_out_report\",\"textEn\":\"Sales Summary\"},{\"component\":\"/report/InDetail\",\"icon\":\"profile\",\"id\":226,\"text\":\"入库明细\",\"url\":\"/report/in_detail\",\"textEn\":\"Inbound Details\"},{\"component\":\"/report/OutDetail\",\"icon\":\"profile\",\"id\":227,\"text\":\"出库明细\",\"url\":\"/report/out_detail\",\"textEn\":\"Outbound Details\"},{\"component\":\"/report/InMaterialCount\",\"icon\":\"profile\",\"id\":228,\"text\":\"入库汇总\",\"url\":\"/report/in_material_count\",\"textEn\":\"Inbound Summary\"},{\"component\":\"/report/OutMaterialCount\",\"icon\":\"profile\",\"id\":229,\"text\":\"出库汇总\",\"url\":\"/report/out_material_count\",\"textEn\":\"Outbound Summary\"},{\"component\":\"/report/InOutStockReport\",\"icon\":\"profile\",\"id\":59,\"text\":\"进销存统计\",\"url\":\"/report/in_out_stock_report\",\"textEn\":\"Inventory Transaction Summary\"},{\"component\":\"/report/CustomerAccount\",\"icon\":\"profile\",\"id\":235,\"text\":\"客户对账\",\"url\":\"/report/customer_account\",\"textEn\":\"Customer Reconciliation\"},{\"component\":\"/report/VendorAccount\",\"icon\":\"profile\",\"id\":237,\"text\":\"供应商对账\",\"url\":\"/report/vendor_account\",\"textEn\":\"Supplier Reconciliation\"},{\"component\":\"/report/StockWarningReport\",\"icon\":\"profile\",\"id\":244,\"text\":\"库存预警\",\"url\":\"/report/stock_warning_report\",\"textEn\":\"Stock Alerts\"}],\"icon\":\"pie-chart\",\"id\":198,\"text\":\"报表查询\",\"url\":\"/report\",\"textEn\":\"Reports\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/VendorList\",\"icon\":\"profile\",\"id\":25,\"text\":\"供应商信息\",\"url\":\"/system/vendor\",\"textEn\":\"Suppliers\"},{\"component\":\"/system/CustomerList\",\"icon\":\"profile\",\"id\":217,\"text\":\"客户信息\",\"url\":\"/system/customer\",\"textEn\":\"Customers\"},{\"component\":\"/system/MemberList\",\"icon\":\"profile\",\"id\":218,\"text\":\"会员信息\",\"url\":\"/system/member\",\"textEn\":\"Members\"},{\"component\":\"/system/CustomerCategoryList\",\"icon\":\"bars\",\"id\":267,\"text\":\"客户分类\",\"url\":\"/system/customerCategory\",\"textEn\":\"Customer Categories\"},{\"component\":\"/system/DepotList\",\"icon\":\"profile\",\"id\":26,\"text\":\"仓库信息\",\"url\":\"/system/depot\",\"textEn\":\"Warehouses\"},{\"component\":\"/system/InOutItemList\",\"icon\":\"profile\",\"id\":194,\"text\":\"收支项目\",\"url\":\"/system/in_out_item\",\"textEn\":\"Income and Expense Items\"},{\"component\":\"/system/AccountList\",\"icon\":\"profile\",\"id\":195,\"text\":\"结算账户\",\"url\":\"/system/account\",\"textEn\":\"Settlement Accounts\"},{\"component\":\"/system/PersonList\",\"icon\":\"profile\",\"id\":31,\"text\":\"操作人员管理\",\"url\":\"/system/person\",\"textEn\":\"Operators\"}],\"icon\":\"appstore\",\"id\":24,\"text\":\"基础资料\",\"url\":\"/systemA\",\"textEn\":\"Master Data\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/RoleList\",\"icon\":\"profile\",\"id\":13,\"text\":\"角色管理\",\"url\":\"/system/role\",\"textEn\":\"Role Management\"},{\"component\":\"/system/UserList\",\"icon\":\"profile\",\"id\":14,\"text\":\"用户管理\",\"url\":\"/system/user\",\"textEn\":\"User Management\"},{\"component\":\"/system/OrganizationList\",\"icon\":\"profile\",\"id\":243,\"text\":\"部门管理\",\"url\":\"/system/organization\",\"textEn\":\"Department Management\"},{\"component\":\"/system/LogList\",\"icon\":\"profile\",\"id\":15,\"text\":\"日志管理\",\"url\":\"/system/log\",\"textEn\":\"Log Management\"},{\"component\":\"/material/MaterialPropertyList\",\"icon\":\"profile\",\"id\":236,\"text\":\"商品属性\",\"url\":\"/material/material_property\",\"textEn\":\"Product Properties\"},{\"component\":\"/system/SystemConfigList\",\"icon\":\"profile\",\"id\":234,\"text\":\"系统配置\",\"url\":\"/system/system_config\",\"textEn\":\"System Configuration\"},{\"component\":\"/system/FunctionList\",\"icon\":\"profile\",\"id\":16,\"text\":\"菜单管理\",\"url\":\"/system/function\",\"textEn\":\"Resource Menus\"},{\"component\":\"/system/PluginList\",\"icon\":\"profile\",\"id\":245,\"text\":\"插件管理\",\"url\":\"/system/plugin\",\"textEn\":\"Plugin Management\"},{\"component\":\"/system/DictList\",\"icon\":\"profile\",\"id\":260,\"text\":\"字典管理\",\"url\":\"/system/dict\",\"textEn\":\"Dictionary Management\"},{\"component\":\"/system/PlatformConfigList\",\"icon\":\"profile\",\"id\":258,\"text\":\"平台配置\",\"url\":\"/system/platform_config\",\"textEn\":\"Platform Configuration\"}],\"icon\":\"setting\",\"id\":1,\"text\":\"系统管理\",\"url\":\"/system\",\"textEn\":\"System Management\"}]'); +INSERT INTO `tbl_log` VALUES (8055, 63, '接口日志', '120.226.169.13/115.220.229.151', '2026-09-28 11:17:55', 0, 'UserController.getUserBtnByCurrentUser(..)', NULL, 'GET /apis/user/getUserBtnByCurrentUser', '{}', '{\"code\":200,\"data\":{\"userBtn\":[{\"btnStr\":\"8,1\",\"url\":\"/system/role\"},{\"btnStr\":\"1\",\"url\":\"/system/user\"},{\"btnStr\":\"1\",\"url\":\"/system/organization\"},{\"btnStr\":\"1\",\"url\":\"/material/material_property\"},{\"btnStr\":\"1\",\"url\":\"/system/system_config\"},{\"btnStr\":\"1\",\"url\":\"/system/function\"},{\"btnStr\":\"1\",\"url\":\"/system/plugin\"},{\"btnStr\":\"1\",\"url\":\"/material/material_category\"},{\"btnStr\":\"1,3\",\"url\":\"/material/material\"},{\"btnStr\":\"1\",\"url\":\"/system/unit\"},{\"btnStr\":\"1\",\"url\":\"/material/material_attribute\"},{\"btnStr\":\"1,3\",\"url\":\"/system/vendor\"},{\"btnStr\":\"1,3\",\"url\":\"/system/customer\"},{\"btnStr\":\"1,3\",\"url\":\"/system/member\"},{\"btnStr\":\"1\",\"url\":\"/system/depot\"},{\"btnStr\":\"1\",\"url\":\"/system/in_out_item\"},{\"btnStr\":\"1\",\"url\":\"/system/account\"},{\"btnStr\":\"1\",\"url\":\"/system/person\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_apply\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_out\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/delivery_plan\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/sale_shipment\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_out\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/order\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/requisition\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/report\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/giro\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/advance_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/allocation_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/assemble\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/headquarters_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/disassemble\"}]}}'); +INSERT INTO `tbl_log` VALUES (8056, 63, '接口日志', '120.226.169.41/115.220.229.151', '2026-09-28 11:17:55', 0, 'MsgController.getList(..)', NULL, 'GET /apis/msg/list', '{\"search\":\"{\\\"name\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (8057, 63, '接口日志', '120.226.169.13/115.220.229.151', '2026-09-28 11:17:55', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-04\",\"inbound\":100669.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (8058, 63, '接口日志', '120.226.169.39/115.220.229.151', '2026-09-28 11:17:56', 0, 'MsgController.getMsgByStatus(..)', NULL, 'GET /apis/msg/getMsgByStatus', '{\"status\":\"1\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (8059, 63, '接口日志', '120.226.169.39/115.220.229.151', '2026-09-28 11:18:38', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (8060, 63, '接口日志', '120.226.169.41/115.220.229.151', '2026-09-28 11:18:38', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (8061, 63, '接口日志', '120.226.169.13/115.220.229.151', '2026-09-28 11:18:38', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8062, 63, '接口日志', '120.226.169.41/115.220.229.151', '2026-09-28 11:18:38', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8063, 63, '接口日志', '120.226.169.39/115.220.229.151', '2026-09-28 11:18:38', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"}]'); +INSERT INTO `tbl_log` VALUES (8064, 63, '接口日志', '120.226.169.41/115.220.229.151', '2026-09-28 11:18:39', 0, 'PersonController.getPersonByNumType(..)', NULL, 'GET /apis/person/getPersonByNumType', '{\"typeNum\":\"1\"}', '[]'); +INSERT INTO `tbl_log` VALUES (8065, 63, '接口日志', '120.226.169.13/115.220.229.151', '2026-09-28 11:18:39', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8066, 63, '接口日志', '120.226.169.13/115.220.229.151', '2026-09-28 11:18:39', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"其它\\\",\\\"subType\\\":\\\"销售订单\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-28\\\",\\\"endTime\\\":\\\"2026-09-28\\\",\\\"createTimeRange\\\":[\\\"2026-06-27T16:00:00.000Z\\\",\\\"2026-09-27T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":6,\"rows\":[{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789718483000,\"creator\":63,\"debt\":808500.000000,\"defaultNumber\":\"XSDD00000001726\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":808500.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1719,\"lastDebt\":808500.000000,\"lastDeposit\":0.000000,\"materialCount\":10000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD00000001726\",\"operTime\":1789732682000,\"operTimeStr\":\"2026-09-18 15:58:02\",\"organId\":90,\"organName\":\"TNB\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"totalPrice\":735000.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789726236000,\"creator\":63,\"debt\":340000000.000000,\"defaultNumber\":\"XSDD00000001724\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":340000000.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1718,\"lastDebt\":340000000.000000,\"lastDeposit\":0.000000,\"materialCount\":1000000.000000,\"materialsList\":\"3PH APEC3-WC 3PH APEC3-WC 3PH APEC3-WC \",\"number\":\"XSDD00000001724\",\"operTime\":1789725706000,\"operTimeStr\":\"2026-09-18 14:01:46\",\"organId\":90,\"organName\":\"TNB\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"0\",\"subType\":\"销售订单\",\"totalPrice\":340000000.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1785355200000,\"creator\":63,\"debt\":242550.000000,\"defaultNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":242550.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1580,\"lastDebt\":242550.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":3000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303475-1PH-WS79-ADD1\",\"operTime\":1785355200000,\"operTimeStr\":\"2026-07-30 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303475\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":242550.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1785355200000,\"creator\":63,\"debt\":323400.000000,\"defaultNumber\":\"XSDD-42303447-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":323400.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1574,\"lastDebt\":323400.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":4000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303447-1PH-WS79-ADD1\",\"operTime\":1785355200000,\"operTimeStr\":\"2026-07-30 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303447\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":323400.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1782936000000,\"creator\":63,\"debt\":323400.000000,\"defaultNumber\":\"XSDD-42303429-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":323400.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1569,\"lastDebt\":323400.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":4000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303429-1PH-WS79-ADD1\",\"operTime\":1782936000000,\"operTimeStr\":\"2026-07-02 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303429\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":323400.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1782676800000,\"creator\":63,\"debt\":323400.000000,\"defaultNumber\":\"XSDD-42303412-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":323400.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1565,\"lastDebt\":323400.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":4000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303412-1PH-WS79-ADD1\",\"operTime\":1782676800000,\"operTimeStr\":\"2026-06-29 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303412\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":323400.000000,\"type\":\"其它\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (8067, 63, '接口日志', '117.85.64.159/115.220.229.151', '2026-09-28 11:18:40', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (8068, 63, '接口日志', '117.85.64.159/115.220.229.151', '2026-09-28 11:19:32', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-04\",\"inbound\":100669.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (8069, 63, '接口日志', '60.163.165.157/115.220.229.151', '2026-09-28 12:48:10', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":8,\"rows\":[{\"assetCategory\":\"工装设备\",\"assetCode\":\"FA-TOOL-2025-008\",\"assetName\":\"全自动钢网清洗机\",\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"id\":8,\"keeper\":\"王磊\",\"location\":\"一车间 钢网房\",\"originalValue\":78000.000000,\"purchaseDate\":1739131200000,\"quantity\":1.000000,\"remark\":\"用于钢网水基闭环清洗与烘干\",\"source\":\"DEMO\",\"specification\":\"SAWA SC-A1000\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetCategory\":\"物流设备\",\"assetCode\":\"FA-WH-2024-007\",\"assetName\":\"电动平衡重式叉车\",\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"id\":7,\"keeper\":\"张伟\",\"location\":\"原材料仓充电区\",\"originalValue\":145000.000000,\"purchaseDate\":1721592000000,\"quantity\":1.000000,\"remark\":\"额定载荷 2.0 吨,持证人员操作\",\"source\":\"DEMO\",\"specification\":\"Toyota 8FBE20\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1789718123000,\"useDepartment\":\"仓储物流部\"},{\"assetCategory\":\"IT设备\",\"assetCode\":\"FA-IT-2025-006\",\"assetName\":\"MES 数据库服务器\",\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"id\":6,\"keeper\":\"赵敏\",\"location\":\"数据中心 A03 机柜\",\"originalValue\":168000.000000,\"purchaseDate\":1736884800000,\"quantity\":1.000000,\"remark\":\"双机热备主节点,纳入信息安全资产清单\",\"source\":\"DEMO\",\"specification\":\"Dell PowerEdge R760\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1789718123000,\"useDepartment\":\"信息技术部\"},{\"assetCategory\":\"动力设备\",\"assetCode\":\"FA-UTIL-2023-005\",\"assetName\":\"螺杆式空气压缩机\",\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"id\":5,\"keeper\":\"陈晨\",\"location\":\"动力站 1 号机位\",\"originalValue\":186000.000000,\"purchaseDate\":1700424000000,\"quantity\":1.000000,\"remark\":\"为 SMT 车间提供稳定压缩空气\",\"source\":\"DEMO\",\"specification\":\"Atlas Copco GA22 VSD+\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1789718123000,\"useDepartment\":\"设备动力部\"},{\"assetCategory\":\"检测设备\",\"assetCode\":\"FA-QC-2024-004\",\"assetName\":\"在线 3D SPI 检测系统\",\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"id\":4,\"keeper\":\"陈晨\",\"location\":\"一车间 印刷检测区\",\"originalValue\":1120000.000000,\"purchaseDate\":1712347200000,\"quantity\":1.000000,\"remark\":\"用于锡膏体积、高度及偏移检测\",\"source\":\"DEMO\",\"specification\":\"Koh Young KY8030-3\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1789718123000,\"useDepartment\":\"品质部\"},{\"assetCategory\":\"检测设备\",\"assetCode\":\"FA-QC-2024-003\",\"assetName\":\"在线 3D AOI 检测系统\",\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"id\":3,\"keeper\":\"陈晨\",\"location\":\"一车间 AOI 检测区\",\"originalValue\":1350000.000000,\"purchaseDate\":1712347200000,\"quantity\":1.000000,\"remark\":\"用于焊后外观与三维缺陷检测\",\"source\":\"DEMO\",\"specification\":\"Koh Young Zenith 2\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1789718123000,\"useDepartment\":\"品质部\"},{\"assetCategory\":\"生产设备\",\"assetCode\":\"FA-SMT-2024-002\",\"assetName\":\"十温区氮气回流焊系统\",\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"id\":2,\"keeper\":\"王磊\",\"location\":\"一车间 SMT-01 线\",\"originalValue\":980000.000000,\"purchaseDate\":1710705600000,\"quantity\":1.000000,\"remark\":\"炉温曲线纳入工艺受控文件\",\"source\":\"DEMO\",\"specification\":\"HELLER 1936MK7\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetCategory\":\"生产设备\",\"assetCode\":\"FA-SMT-2024-001\",\"assetName\":\"SMT 高速贴片生产线\",\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"id\":1,\"keeper\":\"王磊\",\"location\":\"一车间 SMT-01 线\",\"originalValue\":2850000.000000,\"purchaseDate\":1710705600000,\"quantity\":1.000000,\"remark\":\"关键设备,按月盘点并执行点检保养\",\"source\":\"DEMO\",\"specification\":\"Panasonic NPM-D3A 双轨配置\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"}]}}'); +INSERT INTO `tbl_log` VALUES (8070, NULL, '接口日志', '43.174.53.11/1.9.116.218', '2026-09-28 12:50:53', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (8071, NULL, '接口日志', '43.174.55.40/1.9.116.218', '2026-09-28 12:50:53', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (8072, NULL, '接口日志', '43.152.142.83/1.9.116.218', '2026-09-28 12:50:57', 0, 'PlatformConfigController.getPlatformCheckcodeFlag(..)', NULL, 'GET /apis/platformConfig/getPlatform/checkcodeFlag', '{}', '\"1\"'); +INSERT INTO `tbl_log` VALUES (8073, NULL, '接口日志', '43.174.53.16/1.9.116.218', '2026-09-28 12:50:57', 0, 'UserController.randomImage(..)', NULL, 'GET /apis/user/randomImage', '{}', '{\"code\":200,\"data\":{\"base64\":\"data:image/jpg;base64,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\",\"uuid\":\"f1cf8396ba4a4e3286e5d36b159e6431\"}}'); +INSERT INTO `tbl_log` VALUES (8074, NULL, '接口日志', '43.152.142.140/1.9.116.218', '2026-09-28 12:51:41', 0, 'UserController.login(..)', NULL, 'POST /apis/user/login', '{\"userParam\":{\"code\":\"kwi7\",\"loginName\":\"admin\",\"password\":\"******\",\"uuid\":\"f1cf8396ba4a4e3286e5d36b159e6431\"}}', '{\"code\":200,\"data\":{\"msgTip\":\"user password error\"}}'); +INSERT INTO `tbl_log` VALUES (8075, NULL, '接口日志', '43.152.142.140/1.9.116.218', '2026-09-28 12:51:41', 0, 'UserController.randomImage(..)', NULL, 'GET /apis/user/randomImage', '{}', '{\"code\":200,\"data\":{\"base64\":\"data:image/jpg;base64,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\",\"uuid\":\"77b7b4c9258a432399398d955dbb9a95\"}}'); +INSERT INTO `tbl_log` VALUES (8076, 63, '用户', '43.152.142.64/1.9.116.218', '2026-09-28 12:53:21', 0, '登录admin', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (8077, NULL, '接口日志', '43.152.142.64/1.9.116.218', '2026-09-28 12:53:21', 0, 'UserController.login(..)', NULL, 'POST /apis/user/login', '{\"userParam\":{\"code\":\"14cn\",\"loginName\":\"admin\",\"password\":\"******\",\"uuid\":\"77b7b4c9258a432399398d955dbb9a95\"}}', '{\"code\":200,\"data\":{\"pwdSimple\":\"******\",\"user\":{\"deleteFlag\":\"0\",\"description\":\"\",\"email\":\"666666@qq.com\",\"id\":63,\"ismanager\":1,\"isystem\":1,\"leaderFlag\":\"0\",\"loginName\":\"admin\",\"password\":\"******\",\"phonenum\":\"1123123123132\",\"position\":\"主管\",\"status\":0,\"tenantId\":63,\"username\":\"admin\"},\"msgTip\":\"user can login\",\"token\":\"******\"}}'); +INSERT INTO `tbl_log` VALUES (8078, 63, '接口日志', '43.152.142.140/1.9.116.218', '2026-09-28 12:53:21', 0, 'MaterialPropertyController.getAllList(..)', NULL, 'GET /apis/materialProperty/getAllList', '{}', '{\"code\":200,\"data\":[{\"anotherName\":\"扩展1\",\"id\":1,\"nativeName\":\"扩展1\"},{\"anotherName\":\"扩展2\",\"id\":2,\"nativeName\":\"扩展2\"},{\"anotherName\":\"扩展3\",\"id\":3,\"nativeName\":\"扩展3\"}]}'); +INSERT INTO `tbl_log` VALUES (8079, 63, '接口日志', '43.152.142.64/1.9.116.218', '2026-09-28 12:53:21', 0, 'FunctionController.findMenuByPNumber(..)', NULL, 'POST /apis/function/findMenuByPNumber', '{\"jsonObject\":{\"userId\":63,\"pNumber\":0}}', '[{\"component\":\"/layouts/TabLayout\",\"icon\":\"home\",\"id\":0,\"text\":\"首页\",\"url\":\"/dashboard/analysis\",\"textEn\":\"Home\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/SaleOrderList\",\"icon\":\"profile\",\"id\":242,\"text\":\"销售订单\",\"url\":\"/bill/sale_order\",\"textEn\":\"Sales Orders\"},{\"component\":\"/bill/SaleOutList\",\"icon\":\"profile\",\"id\":41,\"text\":\"销售出库\",\"url\":\"/bill/sale_out\",\"textEn\":\"Sales Shipments\"},{\"component\":\"/bill/DeliveryPlanList\",\"icon\":\"profile\",\"id\":271,\"text\":\"交货计划管理\",\"url\":\"/bill/delivery_plan\",\"textEn\":\"Delivery Plans\"},{\"component\":\"/bill/SaleShipmentList\",\"icon\":\"car\",\"id\":268,\"text\":\"发货管理\",\"url\":\"/bill/sale_shipment\",\"textEn\":\"Shipment Management\"},{\"component\":\"/bill/SaleBackList\",\"icon\":\"profile\",\"id\":200,\"text\":\"销售退货\",\"url\":\"/bill/sale_back\",\"textEn\":\"Sales Returns\"},{\"component\":\"/bill/RetailOutList\",\"icon\":\"profile\",\"id\":210,\"text\":\"零售出库\",\"url\":\"/bill/retail_out\",\"textEn\":\"Retail Shipments\"},{\"component\":\"/bill/RetailBackList\",\"icon\":\"profile\",\"id\":211,\"text\":\"零售退货\",\"url\":\"/bill/retail_back\",\"textEn\":\"Retail Returns\"}],\"icon\":\"shopping-cart\",\"id\":38,\"text\":\"销售管理\",\"url\":\"/billB\",\"textEn\":\"Sales Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/PurchaseApplyList\",\"icon\":\"profile\",\"id\":261,\"text\":\"请购单\",\"url\":\"/bill/purchase_apply\",\"textEn\":\"Purchase Requisitions\"},{\"component\":\"/bill/PurchaseOrderList\",\"icon\":\"profile\",\"id\":241,\"text\":\"采购订单\",\"url\":\"/bill/purchase_order\",\"textEn\":\"Purchase Orders\"},{\"component\":\"/bill/PurchaseInList\",\"icon\":\"profile\",\"id\":33,\"text\":\"采购入库\",\"url\":\"/bill/purchase_in\",\"textEn\":\"Purchase Receipts\"},{\"component\":\"/bill/PurchaseBackList\",\"icon\":\"profile\",\"id\":199,\"text\":\"采购退货\",\"url\":\"/bill/purchase_back\",\"textEn\":\"Purchase Returns\"}],\"icon\":\"retweet\",\"id\":32,\"text\":\"采购管理\",\"url\":\"/bill\",\"textEn\":\"Purchase Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/production/PackBomList\",\"icon\":\"profile\",\"id\":263,\"text\":\"生产方案\",\"url\":\"/production/pack_bom\",\"textEn\":\"Production BOMs\"},{\"component\":\"/production/OrderList\",\"icon\":\"profile\",\"id\":264,\"text\":\"生产工单\",\"url\":\"/production/order\",\"textEn\":\"Production Orders\"},{\"component\":\"/production/RequisitionList\",\"icon\":\"profile\",\"id\":265,\"text\":\"领料管理\",\"url\":\"/production/requisition\",\"textEn\":\"Material Requisitions\"},{\"component\":\"/production/ReportList\",\"icon\":\"profile\",\"id\":266,\"text\":\"完工报工\",\"url\":\"/production/report\",\"textEn\":\"Production Reports\"}],\"icon\":\"cluster\",\"id\":262,\"text\":\"生产管理\",\"url\":\"/production\",\"textEn\":\"Production Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/MaterialStock\",\"icon\":\"profile\",\"id\":246,\"text\":\"商品库存\",\"url\":\"/report/material_stock\",\"textEn\":\"Product Inventory\"},{\"component\":\"/bill/OtherInList\",\"icon\":\"profile\",\"id\":201,\"text\":\"其它入库\",\"url\":\"/bill/other_in\",\"textEn\":\"Other Receipts\"},{\"component\":\"/bill/OtherOutList\",\"icon\":\"profile\",\"id\":202,\"text\":\"其它出库\",\"url\":\"/bill/other_out\",\"textEn\":\"Other Shipments\"},{\"component\":\"/bill/HeadquartersInList\",\"icon\":\"profile\",\"id\":270,\"text\":\"总部入库\",\"url\":\"/bill/headquarters_in\",\"textEn\":\"Headquarters Receipts\"}],\"icon\":\"hdd\",\"id\":239,\"text\":\"仓库管理\",\"url\":\"/billD\",\"textEn\":\"Warehouse Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/financial/MoneyInList\",\"icon\":\"profile\",\"id\":204,\"text\":\"收款单\",\"url\":\"/financial/money_in\",\"textEn\":\"Receipt Vouchers\"},{\"component\":\"/financial/MoneyOutList\",\"icon\":\"profile\",\"id\":205,\"text\":\"付款单\",\"url\":\"/financial/money_out\",\"textEn\":\"Payment Vouchers\"}],\"icon\":\"money-collect\",\"id\":44,\"text\":\"财务管理\",\"url\":\"/financial\",\"textEn\":\"Finance Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/asset/AssetList\",\"icon\":\"profile\",\"id\":273,\"text\":\"资产台账\",\"url\":\"/asset/ledger\",\"textEn\":\"Asset Ledger\"},{\"component\":\"/asset/DeviceList\",\"icon\":\"tool\",\"id\":274,\"text\":\"设备台账\",\"url\":\"/asset/device\",\"textEn\":\"Device Ledger\"},{\"component\":\"/asset/InventoryList\",\"icon\":\"scan\",\"id\":275,\"text\":\"资产盘点\",\"url\":\"/asset/inventory\",\"textEn\":\"Asset Inventory\"}],\"icon\":\"bank\",\"id\":272,\"text\":\"资产管理\",\"url\":\"/assetManagement\",\"textEn\":\"Asset Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/material/MaterialCategoryList\",\"icon\":\"profile\",\"id\":22,\"text\":\"商品类别\",\"url\":\"/material/material_category\",\"textEn\":\"Product Categories\"},{\"component\":\"/material/MaterialList\",\"icon\":\"profile\",\"id\":23,\"text\":\"商品信息\",\"url\":\"/material/material\",\"textEn\":\"Product Information\"},{\"component\":\"/system/UnitList\",\"icon\":\"profile\",\"id\":220,\"text\":\"多单位\",\"url\":\"/system/unit\",\"textEn\":\"Multiple Units\"},{\"component\":\"/material/MaterialAttributeList\",\"icon\":\"profile\",\"id\":247,\"text\":\"多属性\",\"url\":\"/material/material_attribute\",\"textEn\":\"Product Attributes\"}],\"icon\":\"shopping\",\"id\":21,\"text\":\"商品管理\",\"url\":\"/material\",\"textEn\":\"Product Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/AccountReport\",\"icon\":\"profile\",\"id\":207,\"text\":\"账户统计\",\"url\":\"/report/account_report\",\"textEn\":\"Account Summary\"},{\"component\":\"/report/RetailOutReport\",\"icon\":\"profile\",\"id\":259,\"text\":\"零售统计\",\"url\":\"/report/retail_out_report\",\"textEn\":\"Retail Summary\"},{\"component\":\"/report/BuyInReport\",\"icon\":\"profile\",\"id\":208,\"text\":\"采购统计\",\"url\":\"/report/buy_in_report\",\"textEn\":\"Purchase Summary\"},{\"component\":\"/report/SaleOutReport\",\"icon\":\"profile\",\"id\":209,\"text\":\"销售统计\",\"url\":\"/report/sale_out_report\",\"textEn\":\"Sales Summary\"},{\"component\":\"/report/InDetail\",\"icon\":\"profile\",\"id\":226,\"text\":\"入库明细\",\"url\":\"/report/in_detail\",\"textEn\":\"Inbound Details\"},{\"component\":\"/report/OutDetail\",\"icon\":\"profile\",\"id\":227,\"text\":\"出库明细\",\"url\":\"/report/out_detail\",\"textEn\":\"Outbound Details\"},{\"component\":\"/report/InMaterialCount\",\"icon\":\"profile\",\"id\":228,\"text\":\"入库汇总\",\"url\":\"/report/in_material_count\",\"textEn\":\"Inbound Summary\"},{\"component\":\"/report/OutMaterialCount\",\"icon\":\"profile\",\"id\":229,\"text\":\"出库汇总\",\"url\":\"/report/out_material_count\",\"textEn\":\"Outbound Summary\"},{\"component\":\"/report/InOutStockReport\",\"icon\":\"profile\",\"id\":59,\"text\":\"进销存统计\",\"url\":\"/report/in_out_stock_report\",\"textEn\":\"Inventory Transaction Summary\"},{\"component\":\"/report/CustomerAccount\",\"icon\":\"profile\",\"id\":235,\"text\":\"客户对账\",\"url\":\"/report/customer_account\",\"textEn\":\"Customer Reconciliation\"},{\"component\":\"/report/VendorAccount\",\"icon\":\"profile\",\"id\":237,\"text\":\"供应商对账\",\"url\":\"/report/vendor_account\",\"textEn\":\"Supplier Reconciliation\"},{\"component\":\"/report/StockWarningReport\",\"icon\":\"profile\",\"id\":244,\"text\":\"库存预警\",\"url\":\"/report/stock_warning_report\",\"textEn\":\"Stock Alerts\"}],\"icon\":\"pie-chart\",\"id\":198,\"text\":\"报表查询\",\"url\":\"/report\",\"textEn\":\"Reports\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/VendorList\",\"icon\":\"profile\",\"id\":25,\"text\":\"供应商信息\",\"url\":\"/system/vendor\",\"textEn\":\"Suppliers\"},{\"component\":\"/system/CustomerList\",\"icon\":\"profile\",\"id\":217,\"text\":\"客户信息\",\"url\":\"/system/customer\",\"textEn\":\"Customers\"},{\"component\":\"/system/MemberList\",\"icon\":\"profile\",\"id\":218,\"text\":\"会员信息\",\"url\":\"/system/member\",\"textEn\":\"Members\"},{\"component\":\"/system/CustomerCategoryList\",\"icon\":\"bars\",\"id\":267,\"text\":\"客户分类\",\"url\":\"/system/customerCategory\",\"textEn\":\"Customer Categories\"},{\"component\":\"/system/DepotList\",\"icon\":\"profile\",\"id\":26,\"text\":\"仓库信息\",\"url\":\"/system/depot\",\"textEn\":\"Warehouses\"},{\"component\":\"/system/InOutItemList\",\"icon\":\"profile\",\"id\":194,\"text\":\"收支项目\",\"url\":\"/system/in_out_item\",\"textEn\":\"Income and Expense Items\"},{\"component\":\"/system/AccountList\",\"icon\":\"profile\",\"id\":195,\"text\":\"结算账户\",\"url\":\"/system/account\",\"textEn\":\"Settlement Accounts\"},{\"component\":\"/system/PersonList\",\"icon\":\"profile\",\"id\":31,\"text\":\"操作人员管理\",\"url\":\"/system/person\",\"textEn\":\"Operators\"}],\"icon\":\"appstore\",\"id\":24,\"text\":\"基础资料\",\"url\":\"/systemA\",\"textEn\":\"Master Data\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/RoleList\",\"icon\":\"profile\",\"id\":13,\"text\":\"角色管理\",\"url\":\"/system/role\",\"textEn\":\"Role Management\"},{\"component\":\"/system/UserList\",\"icon\":\"profile\",\"id\":14,\"text\":\"用户管理\",\"url\":\"/system/user\",\"textEn\":\"User Management\"},{\"component\":\"/system/OrganizationList\",\"icon\":\"profile\",\"id\":243,\"text\":\"部门管理\",\"url\":\"/system/organization\",\"textEn\":\"Department Management\"},{\"component\":\"/system/LogList\",\"icon\":\"profile\",\"id\":15,\"text\":\"日志管理\",\"url\":\"/system/log\",\"textEn\":\"Log Management\"},{\"component\":\"/material/MaterialPropertyList\",\"icon\":\"profile\",\"id\":236,\"text\":\"商品属性\",\"url\":\"/material/material_property\",\"textEn\":\"Product Properties\"},{\"component\":\"/system/SystemConfigList\",\"icon\":\"profile\",\"id\":234,\"text\":\"系统配置\",\"url\":\"/system/system_config\",\"textEn\":\"System Configuration\"},{\"component\":\"/system/FunctionList\",\"icon\":\"profile\",\"id\":16,\"text\":\"菜单管理\",\"url\":\"/system/function\",\"textEn\":\"Resource Menus\"},{\"component\":\"/system/PluginList\",\"icon\":\"profile\",\"id\":245,\"text\":\"插件管理\",\"url\":\"/system/plugin\",\"textEn\":\"Plugin Management\"},{\"component\":\"/system/DictList\",\"icon\":\"profile\",\"id\":260,\"text\":\"字典管理\",\"url\":\"/system/dict\",\"textEn\":\"Dictionary Management\"},{\"component\":\"/system/PlatformConfigList\",\"icon\":\"profile\",\"id\":258,\"text\":\"平台配置\",\"url\":\"/system/platform_config\",\"textEn\":\"Platform Configuration\"}],\"icon\":\"setting\",\"id\":1,\"text\":\"系统管理\",\"url\":\"/system\",\"textEn\":\"System Management\"}]'); +INSERT INTO `tbl_log` VALUES (8080, 63, '接口日志', '43.152.142.31/1.9.116.218', '2026-09-28 12:53:21', 0, 'UserController.getUserBtnByCurrentUser(..)', NULL, 'GET /apis/user/getUserBtnByCurrentUser', '{}', '{\"code\":200,\"data\":{\"userBtn\":[{\"btnStr\":\"8,1\",\"url\":\"/system/role\"},{\"btnStr\":\"1\",\"url\":\"/system/user\"},{\"btnStr\":\"1\",\"url\":\"/system/organization\"},{\"btnStr\":\"1\",\"url\":\"/material/material_property\"},{\"btnStr\":\"1\",\"url\":\"/system/system_config\"},{\"btnStr\":\"1\",\"url\":\"/system/function\"},{\"btnStr\":\"1\",\"url\":\"/system/plugin\"},{\"btnStr\":\"1\",\"url\":\"/material/material_category\"},{\"btnStr\":\"1,3\",\"url\":\"/material/material\"},{\"btnStr\":\"1\",\"url\":\"/system/unit\"},{\"btnStr\":\"1\",\"url\":\"/material/material_attribute\"},{\"btnStr\":\"1,3\",\"url\":\"/system/vendor\"},{\"btnStr\":\"1,3\",\"url\":\"/system/customer\"},{\"btnStr\":\"1,3\",\"url\":\"/system/member\"},{\"btnStr\":\"1\",\"url\":\"/system/depot\"},{\"btnStr\":\"1\",\"url\":\"/system/in_out_item\"},{\"btnStr\":\"1\",\"url\":\"/system/account\"},{\"btnStr\":\"1\",\"url\":\"/system/person\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_apply\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_out\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/delivery_plan\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/sale_shipment\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_out\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/order\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/requisition\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/report\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/giro\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/advance_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/allocation_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/assemble\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/headquarters_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/disassemble\"}]}}'); +INSERT INTO `tbl_log` VALUES (8081, 63, '接口日志', '43.152.142.43/1.9.116.218', '2026-09-28 12:53:21', 0, 'MsgController.getList(..)', NULL, 'GET /apis/msg/list', '{\"search\":\"{\\\"name\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (8082, 63, '接口日志', '43.152.142.57/1.9.116.218', '2026-09-28 12:53:21', 0, 'MsgController.getMsgByStatus(..)', NULL, 'GET /apis/msg/getMsgByStatus', '{\"status\":\"1\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (8083, 63, '接口日志', '43.152.142.105/1.9.116.218', '2026-09-28 12:53:21', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-04\",\"inbound\":100669.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (8084, 63, '接口日志', '43.152.142.83/1.9.116.218', '2026-09-28 12:53:33', 0, 'PackBomController.getList(..)', NULL, 'GET /apis/packBom/list', '{\"search\":\"{\\\"bomNumber\\\":\\\"\\\",\\\"bomName\\\":\\\"\\\",\\\"productMaterialParam\\\":\\\"\\\",\\\"outputMaterialParam\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"bomName\":\"v1.0\",\"bomNumber\":\"BOM00000001735\",\"createTime\":1789719259000,\"creator\":63,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"itemCount\":1,\"outputMaterialExtendId\":123,\"outputMaterialId\":703,\"outputMaterialName\":\"1PH WS79\",\"outputNumber\":1.000000,\"productMaterialExtendId\":123,\"productMaterialId\":703,\"version\":\"v1.0\"}]}}'); +INSERT INTO `tbl_log` VALUES (8085, 63, '接口日志', '43.152.157.63/1.9.116.218', '2026-09-28 12:53:37', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (8086, 63, '接口日志', '43.174.32.33/1.9.116.218', '2026-09-28 12:53:37', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8087, 63, '接口日志', '43.174.52.68/1.9.116.218', '2026-09-28 12:53:37', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (8088, 63, '接口日志', '43.174.32.13/1.9.116.218', '2026-09-28 12:53:37', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"}]'); +INSERT INTO `tbl_log` VALUES (8089, 63, '接口日志', '43.174.53.17/1.9.116.218', '2026-09-28 12:53:37', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8090, 63, '接口日志', '43.174.32.18/1.9.116.218', '2026-09-28 12:53:37', 0, 'PersonController.getPersonByNumType(..)', NULL, 'GET /apis/person/getPersonByNumType', '{\"typeNum\":\"1\"}', '[]'); +INSERT INTO `tbl_log` VALUES (8091, 63, '接口日志', '43.152.142.40/1.9.116.218', '2026-09-28 12:53:37', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (8092, 63, '接口日志', '43.152.142.141/1.9.116.218', '2026-09-28 12:53:37', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"其它\\\",\\\"subType\\\":\\\"销售订单\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-28\\\",\\\"endTime\\\":\\\"2026-09-28\\\",\\\"createTimeRange\\\":[\\\"2026-06-27T16:00:00.000Z\\\",\\\"2026-09-27T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":6,\"rows\":[{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789718483000,\"creator\":63,\"debt\":808500.000000,\"defaultNumber\":\"XSDD00000001726\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":808500.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1719,\"lastDebt\":808500.000000,\"lastDeposit\":0.000000,\"materialCount\":10000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD00000001726\",\"operTime\":1789732682000,\"operTimeStr\":\"2026-09-18 15:58:02\",\"organId\":90,\"organName\":\"TNB\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"totalPrice\":735000.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789726236000,\"creator\":63,\"debt\":340000000.000000,\"defaultNumber\":\"XSDD00000001724\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":340000000.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1718,\"lastDebt\":340000000.000000,\"lastDeposit\":0.000000,\"materialCount\":1000000.000000,\"materialsList\":\"3PH APEC3-WC 3PH APEC3-WC 3PH APEC3-WC \",\"number\":\"XSDD00000001724\",\"operTime\":1789725706000,\"operTimeStr\":\"2026-09-18 14:01:46\",\"organId\":90,\"organName\":\"TNB\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"0\",\"subType\":\"销售订单\",\"totalPrice\":340000000.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1785355200000,\"creator\":63,\"debt\":242550.000000,\"defaultNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":242550.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1580,\"lastDebt\":242550.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":3000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303475-1PH-WS79-ADD1\",\"operTime\":1785355200000,\"operTimeStr\":\"2026-07-30 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303475\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":242550.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1785355200000,\"creator\":63,\"debt\":323400.000000,\"defaultNumber\":\"XSDD-42303447-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":323400.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1574,\"lastDebt\":323400.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":4000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303447-1PH-WS79-ADD1\",\"operTime\":1785355200000,\"operTimeStr\":\"2026-07-30 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303447\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":323400.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1782936000000,\"creator\":63,\"debt\":323400.000000,\"defaultNumber\":\"XSDD-42303429-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":323400.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1569,\"lastDebt\":323400.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":4000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303429-1PH-WS79-ADD1\",\"operTime\":1782936000000,\"operTimeStr\":\"2026-07-02 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303429\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":323400.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1782676800000,\"creator\":63,\"debt\":323400.000000,\"defaultNumber\":\"XSDD-42303412-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":323400.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1565,\"lastDebt\":323400.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":4000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303412-1PH-WS79-ADD1\",\"operTime\":1782676800000,\"operTimeStr\":\"2026-06-29 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303412\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":323400.000000,\"type\":\"其它\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (8093, 63, '接口日志', '43.152.142.33/1.9.116.218', '2026-09-28 12:53:37', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8094, 63, '接口日志', '43.152.157.63/1.9.116.218', '2026-09-28 12:53:38', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (8095, 63, '接口日志', '43.174.53.48/1.9.116.218', '2026-09-28 12:53:39', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8096, 63, '接口日志', '43.152.142.68/1.9.116.218', '2026-09-28 12:53:39', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"}]'); +INSERT INTO `tbl_log` VALUES (8097, 63, '接口日志', '43.152.142.118/1.9.116.218', '2026-09-28 12:53:39', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (8098, 63, '接口日志', '43.174.54.50/1.9.116.218', '2026-09-28 12:53:39', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8099, 63, '接口日志', '43.152.142.110/1.9.116.218', '2026-09-28 12:53:39', 0, 'PersonController.getPersonByNumType(..)', NULL, 'GET /apis/person/getPersonByNumType', '{\"typeNum\":\"1\"}', '[]'); +INSERT INTO `tbl_log` VALUES (8100, 63, '接口日志', '43.174.53.14/1.9.116.218', '2026-09-28 12:53:39', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (8101, 63, '接口日志', '43.152.142.86/1.9.116.218', '2026-09-28 12:53:39', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"出库\\\",\\\"subType\\\":\\\"销售\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-28\\\",\\\"endTime\\\":\\\"2026-09-28\\\",\\\"createTimeRange\\\":[\\\"2026-06-27T16:00:00.000Z\\\",\\\"2026-09-27T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":61,\"rows\":[{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789718584000,\"creator\":63,\"debt\":808500.000000,\"defaultNumber\":\"XSCK00000001728\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":808500.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1720,\"lastDebt\":808500.000000,\"lastDeposit\":0.000000,\"linkNumber\":\"XSDD00000001726\",\"materialCount\":10000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK00000001728\",\"operTime\":1789732981000,\"operTimeStr\":\"2026-09-18 16:03:01\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"totalPrice\":735000.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1786305600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-87\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1671,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303506-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-87\",\"operTime\":1786305600000,\"operTimeStr\":\"2026-08-10 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1786305600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2159-86\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1670,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303506-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2159-86\",\"operTime\":1786305600000,\"operTimeStr\":\"2026-08-10 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2159\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785873600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-DO_2158-85\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1669,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-DO_2158-85\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:DO_2158\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785873600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-84\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1668,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-84\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785873600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-DO_2157-83\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1667,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-DO_2157-83\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:DO_2157\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785268800000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2150-69\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1665,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303480-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2150-69\",\"operTime\":1785268800000,\"operTimeStr\":\"2026-07-29 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2150\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784750400000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2142-68\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1664,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303480-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2142-68\",\"operTime\":1784750400000,\"operTimeStr\":\"2026-07-23 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2142\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784145600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-67\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1663,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-67\",\"operTime\":1784145600000,\"operTimeStr\":\"2026-07-16 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784145600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2134-66\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1662,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2134-66\",\"operTime\":1784145600000,\"operTimeStr\":\"2026-07-16 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2134\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (8102, 63, '接口日志', '43.152.142.139/1.9.116.218', '2026-09-28 12:53:39', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8103, 63, '接口日志', '43.152.142.132/1.9.116.218', '2026-09-28 12:53:40', 0, 'DeliveryPlanController.getList(..)', NULL, 'GET /apis/deliveryPlan/list', '{\"search\":\"{\\\"planNumber\\\":\\\"\\\",\\\"sourceBillNumber\\\":\\\"\\\",\\\"saleOrderNumber\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"createTime\":1789720385000,\"creator\":63,\"creatorName\":\"admin\",\"customerId\":90,\"customerName\":\"TNB\",\"deleteFlag\":\"0\",\"id\":7,\"materialsList\":\"1PH WS79\",\"planNumber\":\"JH00000001741\",\"planQuantity\":10000.000000,\"saleOrderNumber\":\"XSDD00000001726\",\"shippedQuantity\":0.000000,\"sourceBillId\":1720,\"sourceBillNumber\":\"XSCK00000001728\",\"sourceType\":\"sale\",\"status\":\"2\"},{\"createTime\":1789717298000,\"creator\":63,\"creatorName\":\"admin\",\"customerId\":90,\"customerName\":\"TNB\",\"deleteFlag\":\"0\",\"id\":6,\"materialsList\":\"3PH APEC3-WC\",\"planNumber\":\"JH00000001717\",\"planQuantity\":149.000000,\"saleOrderNumber\":\"XSDD-42260529-3PH-APEC3-WC-OV\",\"shippedQuantity\":0.000000,\"sourceBillId\":1714,\"sourceBillNumber\":\"XSCK-3PH-APEC3-WC-OV-28\",\"sourceType\":\"sale\",\"status\":\"2\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (8104, 63, '接口日志', '43.152.142.31/1.9.116.218', '2026-09-28 12:53:41', 0, 'SaleShipmentController.getList(..)', NULL, 'GET /apis/saleShipment/list', '{\"search\":\"{\\\"shipmentNumber\\\":\\\"\\\",\\\"saleOutNumber\\\":\\\"\\\",\\\"saleOrderNumber\\\":\\\"\\\",\\\"logisticsNo\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"actualQuantity\":10000.000000,\"approveBy\":63,\"approveByName\":\"admin\",\"approveRemark\":\"审批通过\",\"approveTime\":1789720647000,\"confirmBy\":63,\"confirmByName\":\"admin\",\"confirmTime\":1789720682000,\"createTime\":1789720588000,\"creator\":63,\"creatorName\":\"admin\",\"customerId\":90,\"customerName\":\"TNB\",\"deleteFlag\":\"0\",\"deliveryPlanId\":7,\"deliveryPlanNumber\":\"JH00000001741\",\"differenceQuantity\":0.000000,\"id\":17,\"materialsList\":\"1PH WS79\",\"planQuantity\":10000.000000,\"plannedShipTime\":1789734921000,\"saleOrderNumber\":\"XSDD00000001726\",\"saleOutId\":1720,\"saleOutNumber\":\"XSCK00000001728\",\"shipBy\":63,\"shipByName\":\"admin\",\"shipTime\":1789720682000,\"shipmentNumber\":\"FHTZ00000001742\",\"sourceType\":\"sale\",\"status\":\"2\"},{\"actualQuantity\":149.000000,\"approveBy\":63,\"approveByName\":\"admin\",\"approveRemark\":\"审批通过\",\"approveTime\":1789717350000,\"confirmBy\":63,\"confirmByName\":\"admin\",\"confirmTime\":1789717357000,\"createTime\":1789717342000,\"creator\":63,\"creatorName\":\"admin\",\"customerId\":90,\"customerName\":\"TNB\",\"deleteFlag\":\"0\",\"deliveryPlanId\":6,\"deliveryPlanNumber\":\"JH00000001717\",\"differenceQuantity\":0.000000,\"id\":16,\"logisticsCompany\":\"FEXD\",\"logisticsNo\":\"FD10000001\",\"materialsList\":\"3PH APEC3-WC\",\"planQuantity\":149.000000,\"plannedShipTime\":1789717304000,\"receiver\":\"Hank\",\"receiverAddress\":\"5433 Grand Ave\",\"receiverPhone\":\"60001-1111\",\"saleOrderNumber\":\"XSDD-42260529-3PH-APEC3-WC-OV\",\"saleOutId\":1714,\"saleOutNumber\":\"XSCK-3PH-APEC3-WC-OV-28\",\"shipBy\":63,\"shipByName\":\"admin\",\"shipTime\":1789717357000,\"shipmentNumber\":\"FHTZ00000001718\",\"sourceType\":\"sale\",\"status\":\"2\"}]}}'); +INSERT INTO `tbl_log` VALUES (8105, 63, '接口日志', '43.152.142.105/1.9.116.218', '2026-09-28 12:53:42', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-04\",\"inbound\":100669.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (8106, 63, '接口日志', '43.152.142.43/1.9.116.218', '2026-09-28 12:53:44', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":8,\"rows\":[{\"assetCategory\":\"工装设备\",\"assetCode\":\"FA-TOOL-2025-008\",\"assetName\":\"全自动钢网清洗机\",\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"id\":8,\"keeper\":\"王磊\",\"location\":\"一车间 钢网房\",\"originalValue\":78000.000000,\"purchaseDate\":1739131200000,\"quantity\":1.000000,\"remark\":\"用于钢网水基闭环清洗与烘干\",\"source\":\"DEMO\",\"specification\":\"SAWA SC-A1000\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetCategory\":\"物流设备\",\"assetCode\":\"FA-WH-2024-007\",\"assetName\":\"电动平衡重式叉车\",\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"id\":7,\"keeper\":\"张伟\",\"location\":\"原材料仓充电区\",\"originalValue\":145000.000000,\"purchaseDate\":1721592000000,\"quantity\":1.000000,\"remark\":\"额定载荷 2.0 吨,持证人员操作\",\"source\":\"DEMO\",\"specification\":\"Toyota 8FBE20\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1789718123000,\"useDepartment\":\"仓储物流部\"},{\"assetCategory\":\"IT设备\",\"assetCode\":\"FA-IT-2025-006\",\"assetName\":\"MES 数据库服务器\",\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"id\":6,\"keeper\":\"赵敏\",\"location\":\"数据中心 A03 机柜\",\"originalValue\":168000.000000,\"purchaseDate\":1736884800000,\"quantity\":1.000000,\"remark\":\"双机热备主节点,纳入信息安全资产清单\",\"source\":\"DEMO\",\"specification\":\"Dell PowerEdge R760\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1789718123000,\"useDepartment\":\"信息技术部\"},{\"assetCategory\":\"动力设备\",\"assetCode\":\"FA-UTIL-2023-005\",\"assetName\":\"螺杆式空气压缩机\",\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"id\":5,\"keeper\":\"陈晨\",\"location\":\"动力站 1 号机位\",\"originalValue\":186000.000000,\"purchaseDate\":1700424000000,\"quantity\":1.000000,\"remark\":\"为 SMT 车间提供稳定压缩空气\",\"source\":\"DEMO\",\"specification\":\"Atlas Copco GA22 VSD+\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1789718123000,\"useDepartment\":\"设备动力部\"},{\"assetCategory\":\"检测设备\",\"assetCode\":\"FA-QC-2024-004\",\"assetName\":\"在线 3D SPI 检测系统\",\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"id\":4,\"keeper\":\"陈晨\",\"location\":\"一车间 印刷检测区\",\"originalValue\":1120000.000000,\"purchaseDate\":1712347200000,\"quantity\":1.000000,\"remark\":\"用于锡膏体积、高度及偏移检测\",\"source\":\"DEMO\",\"specification\":\"Koh Young KY8030-3\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1789718123000,\"useDepartment\":\"品质部\"},{\"assetCategory\":\"检测设备\",\"assetCode\":\"FA-QC-2024-003\",\"assetName\":\"在线 3D AOI 检测系统\",\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"id\":3,\"keeper\":\"陈晨\",\"location\":\"一车间 AOI 检测区\",\"originalValue\":1350000.000000,\"purchaseDate\":1712347200000,\"quantity\":1.000000,\"remark\":\"用于焊后外观与三维缺陷检测\",\"source\":\"DEMO\",\"specification\":\"Koh Young Zenith 2\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1789718123000,\"useDepartment\":\"品质部\"},{\"assetCategory\":\"生产设备\",\"assetCode\":\"FA-SMT-2024-002\",\"assetName\":\"十温区氮气回流焊系统\",\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"id\":2,\"keeper\":\"王磊\",\"location\":\"一车间 SMT-01 线\",\"originalValue\":980000.000000,\"purchaseDate\":1710705600000,\"quantity\":1.000000,\"remark\":\"炉温曲线纳入工艺受控文件\",\"source\":\"DEMO\",\"specification\":\"HELLER 1936MK7\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetCategory\":\"生产设备\",\"assetCode\":\"FA-SMT-2024-001\",\"assetName\":\"SMT 高速贴片生产线\",\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"id\":1,\"keeper\":\"王磊\",\"location\":\"一车间 SMT-01 线\",\"originalValue\":2850000.000000,\"purchaseDate\":1710705600000,\"quantity\":1.000000,\"remark\":\"关键设备,按月盘点并执行点检保养\",\"source\":\"DEMO\",\"specification\":\"Panasonic NPM-D3A 双轨配置\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"}]}}'); +INSERT INTO `tbl_log` VALUES (8107, 63, '接口日志', '43.152.142.57/1.9.116.218', '2026-09-28 12:53:54', 0, 'AssetDeviceController.list(..)', NULL, 'GET /apis/assetDevice/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":10,\"rows\":[{\"assetCode\":\"FA-TOOL-2025-008\",\"assetId\":8,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"工装设备\",\"deviceCode\":\"TOOL-STENCIL-CLEAN-01\",\"deviceName\":\"全自动钢网清洗机\",\"enabledDate\":1739822400000,\"id\":10,\"keeper\":\"王磊\",\"location\":\"一车间 钢网房\",\"manufacturer\":\"SAWA\",\"model\":\"SC-A1000\",\"nextMaintenanceDate\":1794254400000,\"purchaseDate\":1739131200000,\"remark\":\"水基清洗、漂洗、热风干燥一体化\",\"serialNumber\":\"SAWA-A1000-250210\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetCode\":\"FA-WH-2024-007\",\"assetId\":7,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"物流设备\",\"deviceCode\":\"WH-FORKLIFT-01\",\"deviceName\":\"2 吨电动叉车\",\"enabledDate\":1722456000000,\"id\":9,\"keeper\":\"张伟\",\"location\":\"原材料仓充电区\",\"manufacturer\":\"Toyota\",\"model\":\"8FBE20\",\"nextMaintenanceDate\":1792872000000,\"purchaseDate\":1721592000000,\"remark\":\"锂电池版本,配置蓝光安全警示灯\",\"serialNumber\":\"TY-8FBE20-240722\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"仓储物流部\"},{\"assetCode\":\"FA-IT-2025-006\",\"assetId\":6,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"服务器\",\"deviceCode\":\"IT-MES-DB-01\",\"deviceName\":\"MES 数据库主服务器\",\"enabledDate\":1737489600000,\"id\":8,\"keeper\":\"赵敏\",\"location\":\"数据中心 A03-U18\",\"manufacturer\":\"Dell\",\"model\":\"PowerEdge R760\",\"nextMaintenanceDate\":1797278400000,\"purchaseDate\":1736884800000,\"remark\":\"双路 CPU、512GB 内存、全闪存 RAID10\",\"serialNumber\":\"CN-R760-25011501\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"信息技术部\"},{\"assetCode\":\"FA-UTIL-2023-005\",\"assetId\":5,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"动力设备\",\"deviceCode\":\"UTIL-AIR-01\",\"deviceName\":\"变频螺杆空压机\",\"enabledDate\":1701374400000,\"id\":7,\"keeper\":\"陈晨\",\"location\":\"动力站 1 号机位\",\"manufacturer\":\"Atlas Copco\",\"model\":\"GA22 VSD+\",\"nextMaintenanceDate\":1790798400000,\"purchaseDate\":1700424000000,\"remark\":\"运行压力 0.72MPa,接入能源管理系统\",\"serialNumber\":\"AC-GA22-2311209\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"设备动力部\"},{\"assetCode\":\"FA-QC-2024-004\",\"assetId\":4,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"检测设备\",\"deviceCode\":\"QC-SPI-01\",\"deviceName\":\"在线 3D SPI\",\"enabledDate\":1713384000000,\"id\":6,\"keeper\":\"陈晨\",\"location\":\"一车间 印刷检测区\",\"manufacturer\":\"Koh Young\",\"model\":\"KY8030-3\",\"nextMaintenanceDate\":1793908800000,\"purchaseDate\":1712347200000,\"remark\":\"与印刷机闭环反馈锡膏偏移数据\",\"serialNumber\":\"KY-8030-24040608\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"品质部\"},{\"assetCode\":\"FA-QC-2024-003\",\"assetId\":3,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"检测设备\",\"deviceCode\":\"QC-AOI-01\",\"deviceName\":\"在线 3D AOI\",\"enabledDate\":1713384000000,\"id\":5,\"keeper\":\"陈晨\",\"location\":\"一车间 AOI 检测区\",\"manufacturer\":\"Koh Young\",\"model\":\"Zenith 2\",\"nextMaintenanceDate\":1793822400000,\"purchaseDate\":1712347200000,\"remark\":\"具备 AI 缺陷复判和 SPC 数据接口\",\"serialNumber\":\"KY-Z2-24040615\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"品质部\"},{\"assetCode\":\"FA-SMT-2024-002\",\"assetId\":2,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"焊接设备\",\"deviceCode\":\"SMT-L01-REFLOW-01\",\"deviceName\":\"十温区氮气回流焊炉\",\"enabledDate\":1712692800000,\"id\":4,\"keeper\":\"王磊\",\"location\":\"一车间 SMT-01 线后段\",\"manufacturer\":\"Heller Industries\",\"model\":\"HELLER 1936MK7\",\"nextMaintenanceDate\":1792440000000,\"purchaseDate\":1710705600000,\"remark\":\"氮气闭环控制,支持双轨独立调宽\",\"serialNumber\":\"HLR1936-2403268\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetCode\":\"FA-SMT-2024-001\",\"assetId\":1,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"贴装设备\",\"deviceCode\":\"SMT-L01-MOUNTER-B\",\"deviceName\":\"多功能贴片机 B\",\"enabledDate\":1712520000000,\"id\":3,\"keeper\":\"王磊\",\"location\":\"一车间 SMT-01 线 B 工位\",\"manufacturer\":\"Panasonic\",\"model\":\"Panasonic NPM-W2S\",\"nextMaintenanceDate\":1792094400000,\"purchaseDate\":1710705600000,\"remark\":\"负责异形件及高精度元件贴装\",\"serialNumber\":\"NPMW2S24031802\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetCode\":\"FA-SMT-2024-001\",\"assetId\":1,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"贴装设备\",\"deviceCode\":\"SMT-L01-MOUNTER-A\",\"deviceName\":\"高速模块贴片机 A\",\"enabledDate\":1712520000000,\"id\":2,\"keeper\":\"王磊\",\"location\":\"一车间 SMT-01 线 A 工位\",\"manufacturer\":\"Panasonic\",\"model\":\"Panasonic NPM-D3A\",\"nextMaintenanceDate\":1792008000000,\"purchaseDate\":1710705600000,\"remark\":\"前段高速贴装,配置 16 头轻量贴装头\",\"serialNumber\":\"NPMD3A24031801\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetCode\":\"FA-SMT-2024-001\",\"assetId\":1,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"印刷设备\",\"deviceCode\":\"SMT-L01-PRINTER-01\",\"deviceName\":\"全自动锡膏印刷机\",\"enabledDate\":1712520000000,\"id\":1,\"keeper\":\"王磊\",\"lastInventoryTime\":1789726083000,\"location\":\"一车间 SMT-01 线前段\",\"manufacturer\":\"ASMPT\",\"model\":\"DEK NeoHorizon 03iX\",\"nextMaintenanceDate\":1791403200000,\"purchaseDate\":1710705600000,\"remark\":\"配置 2D 检测与自动擦网单元\",\"serialNumber\":\"DEK24NH03187\",\"status\":\"IN_USE\",\"updateTime\":1789726082000,\"useDepartment\":\"SMT生产部\"}]}}'); +INSERT INTO `tbl_log` VALUES (8108, 63, '接口日志', '43.174.54.27/1.9.116.218', '2026-09-28 12:54:01', 0, 'AssetInventoryController.operatorOptions()', NULL, 'GET /apis/assetInventory/operatorOptions', '{}', '{\"code\":200,\"data\":{\"rows\":[{\"loginName\":\"admin\",\"name\":\"admin\",\"id\":63}],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (8109, 63, '接口日志', '43.174.51.49/1.9.116.218', '2026-09-28 12:54:01', 0, 'AssetInventoryController.list(..)', NULL, 'GET /apis/assetInventory/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"abnormalCount\":0,\"createTime\":1789722750000,\"creator\":63,\"deadline\":1789999200000,\"deleteFlag\":\"0\",\"id\":1,\"inventoriedCount\":0,\"inventoryNo\":\"PD20260918131230171\",\"inventoryUserId\":36,\"inventoryUserName\":\"张伟\",\"normalCount\":0,\"planName\":\"2026年09月资产设备专项盘点\",\"plannedAt\":1789794000000,\"remark\":\"进行盘点\",\"scopeType\":\"DEVICE\",\"source\":\"MANUAL\",\"startedAt\":1789723142000,\"status\":\"IN_PROGRESS\",\"totalCount\":3,\"updateTime\":1789723142000,\"updater\":63}]}}'); +INSERT INTO `tbl_log` VALUES (8110, 63, '接口日志', '43.152.142.83/1.9.116.218', '2026-09-28 12:54:56', 0, 'AssetController.options()', NULL, 'GET /apis/asset/options', '{}', '{\"code\":200,\"data\":{\"rows\":[{\"creator\":63,\"purchaseDate\":\"2025-02-10\",\"assetCode\":\"FA-TOOL-2025-008\",\"quantity\":1.000000,\"assetCategory\":\"工装设备\",\"keeper\":\"王磊\",\"originalValue\":78000.000000,\"specification\":\"SAWA SC-A1000\",\"remark\":\"用于钢网水基闭环清洗与烘干\",\"updateTime\":1789718123000,\"source\":\"DEMO\",\"deleteFlag\":\"0\",\"useDepartment\":\"SMT生产部\",\"unit\":\"台\",\"createTime\":1789718123000,\"assetName\":\"全自动钢网清洗机\",\"location\":\"一车间 钢网房\",\"id\":8,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2024-07-22\",\"assetCode\":\"FA-WH-2024-007\",\"quantity\":1.000000,\"assetCategory\":\"物流设备\",\"keeper\":\"张伟\",\"originalValue\":145000.000000,\"specification\":\"Toyota 8FBE20\",\"remark\":\"额定载荷 2.0 吨,持证人员操作\",\"updateTime\":1789718123000,\"source\":\"DEMO\",\"deleteFlag\":\"0\",\"useDepartment\":\"仓储物流部\",\"unit\":\"台\",\"createTime\":1789718123000,\"assetName\":\"电动平衡重式叉车\",\"location\":\"原材料仓充电区\",\"id\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2025-01-15\",\"assetCode\":\"FA-IT-2025-006\",\"quantity\":1.000000,\"assetCategory\":\"IT设备\",\"keeper\":\"赵敏\",\"originalValue\":168000.000000,\"specification\":\"Dell PowerEdge R760\",\"remark\":\"双机热备主节点,纳入信息安全资产清单\",\"updateTime\":1789718123000,\"source\":\"DEMO\",\"deleteFlag\":\"0\",\"useDepartment\":\"信息技术部\",\"unit\":\"台\",\"createTime\":1789718123000,\"assetName\":\"MES 数据库服务器\",\"location\":\"数据中心 A03 机柜\",\"id\":6,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2023-11-20\",\"assetCode\":\"FA-UTIL-2023-005\",\"quantity\":1.000000,\"assetCategory\":\"动力设备\",\"keeper\":\"陈晨\",\"originalValue\":186000.000000,\"specification\":\"Atlas Copco GA22 VSD+\",\"remark\":\"为 SMT 车间提供稳定压缩空气\",\"updateTime\":1789718123000,\"source\":\"DEMO\",\"deleteFlag\":\"0\",\"useDepartment\":\"设备动力部\",\"unit\":\"台\",\"createTime\":1789718123000,\"assetName\":\"螺杆式空气压缩机\",\"location\":\"动力站 1 号机位\",\"id\":5,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2024-04-06\",\"assetCode\":\"FA-QC-2024-004\",\"quantity\":1.000000,\"assetCategory\":\"检测设备\",\"keeper\":\"陈晨\",\"originalValue\":1120000.000000,\"specification\":\"Koh Young KY8030-3\",\"remark\":\"用于锡膏体积、高度及偏移检测\",\"updateTime\":1789718123000,\"source\":\"DEMO\",\"deleteFlag\":\"0\",\"useDepartment\":\"品质部\",\"unit\":\"台\",\"createTime\":1789718123000,\"assetName\":\"在线 3D SPI 检测系统\",\"location\":\"一车间 印刷检测区\",\"id\":4,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2024-04-06\",\"assetCode\":\"FA-QC-2024-003\",\"quantity\":1.000000,\"assetCategory\":\"检测设备\",\"keeper\":\"陈晨\",\"originalValue\":1350000.000000,\"specification\":\"Koh Young Zenith 2\",\"remark\":\"用于焊后外观与三维缺陷检测\",\"updateTime\":1789718123000,\"source\":\"DEMO\",\"deleteFlag\":\"0\",\"useDepartment\":\"品质部\",\"unit\":\"台\",\"createTime\":1789718123000,\"assetName\":\"在线 3D AOI 检测系统\",\"location\":\"一车间 AOI 检测区\",\"id\":3,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2024-03-18\",\"assetCode\":\"FA-SMT-2024-002\",\"quantity\":1.000000,\"assetCategory\":\"生产设备\",\"keeper\":\"王磊\",\"originalValue\":980000.000000,\"specification\":\"HELLER 1936MK7\",\"remark\":\"炉温曲线纳入工艺受控文件\",\"updateTime\":1789718123000,\"source\":\"DEMO\",\"deleteFlag\":\"0\",\"useDepartment\":\"SMT生产部\",\"unit\":\"台\",\"createTime\":1789718123000,\"assetName\":\"十温区氮气回流焊系统\",\"location\":\"一车间 SMT-01 线\",\"id\":2,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2024-03-18\",\"assetCode\":\"FA-SMT-2024-001\",\"quantity\":1.000000,\"assetCategory\":\"生产设备\",\"keeper\":\"王磊\",\"originalValue\":2850000.000000,\"specification\":\"Panasonic NPM-D3A 双轨配置\",\"remark\":\"关键设备,按月盘点并执行点检保养\",\"updateTime\":1789718123000,\"source\":\"DEMO\",\"deleteFlag\":\"0\",\"useDepartment\":\"SMT生产部\",\"unit\":\"台\",\"createTime\":1789718123000,\"assetName\":\"SMT 高速贴片生产线\",\"location\":\"一车间 SMT-01 线\",\"id\":1,\"status\":\"IN_USE\"}],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (8111, 63, '接口日志', '43.152.142.57/1.9.116.218', '2026-09-28 12:55:06', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (8112, 63, '接口日志', '43.152.142.83/1.9.116.218', '2026-09-28 12:55:09', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (8113, 63, '接口日志', '43.152.142.33/1.9.116.218', '2026-09-28 12:55:09', 0, 'MaterialController.getList(..)', NULL, 'GET /apis/material/list', '{\"search\":\"{\\\"materialParam\\\":\\\"\\\",\\\"standard\\\":\\\"\\\",\\\"model\\\":\\\"\\\",\\\"color\\\":\\\"\\\",\\\"brand\\\":\\\"\\\",\\\"mfrs\\\":\\\"\\\",\\\"otherField1\\\":\\\"\\\",\\\"otherField2\\\":\\\"\\\",\\\"otherField3\\\":\\\"\\\",\\\"weight\\\":\\\"\\\",\\\"expiryNum\\\":\\\"\\\",\\\"position\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"mpList\\\":\\\"扩展1,扩展2,扩展3\\\"}\"}', '{\"code\":200,\"data\":{\"total\":24,\"rows\":[{\"attribute\":\"{}\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"categoryId\":33,\"categoryName\":\"成品\",\"commodityDecimal\":200.000000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":706,\"imgName\":\"\",\"initialStock\":0,\"lowDecimal\":200.000000,\"mBarCode\":\"1002\",\"materialOther\":\"\",\"mfrs\":\"SMT\",\"mnemonic\":\"MD-4G111(VF) 4G\",\"model\":\"MD-4G111(VF) 4G\",\"name\":\"MD-4G111(VF) 4G\",\"purchaseDecimal\":100.000000,\"sku\":\"\",\"standard\":\"MD-4G111(VF) 4G\",\"stock\":0,\"unit\":\"只\",\"wholesaleDecimal\":200.000000},{\"attribute\":\"{}\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"categoryId\":34,\"categoryName\":\"包装\",\"commodityDecimal\":10.000000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":705,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":10.000000,\"mBarCode\":\"1001\",\"materialOther\":\"\",\"mnemonic\":\"MD-4G111(VF) bz\",\"model\":\"MD-4G111(VF)\",\"name\":\"MD-4G111(VF) 包装\",\"purchaseDecimal\":10.000000,\"sku\":\"\",\"standard\":\"MD-4G111(VF) packing\",\"stock\":0.000000,\"unit\":\"件\",\"wholesaleDecimal\":10.000000},{\"attribute\":\"\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryId\":33,\"categoryName\":\"成品\",\"color\":\"\",\"commodityDecimal\":340.000000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":704,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":340.000000,\"mBarCode\":\"3PH-APEC3-WC\",\"materialOther\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mnemonic\":\"\",\"model\":\"3PH APEC3-WC\",\"name\":\"3PH APEC3-WC\",\"otherField1\":\"\",\"otherField2\":\"\",\"otherField3\":\"\",\"position\":\"\",\"purchaseDecimal\":317.500000,\"remark\":\"Excel初始化;条码:3PH-APEC3-WC\",\"standard\":\"3PH APEC3-WC\",\"stock\":7223.000000,\"tenantId\":63,\"unit\":\"件\",\"wholesaleDecimal\":340.000000},{\"attribute\":\"\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryId\":33,\"categoryName\":\"成品\",\"color\":\"\",\"commodityDecimal\":73.500000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":703,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":73.500000,\"mBarCode\":\"1PH-WS79\",\"materialOther\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mnemonic\":\"\",\"model\":\"1PH WS79\",\"name\":\"1PH WS79\",\"otherField1\":\"\",\"otherField2\":\"\",\"otherField3\":\"\",\"position\":\"\",\"purchaseDecimal\":59.500000,\"remark\":\"Excel初始化;条码:1PH-WS79\",\"standard\":\"1PH WS79\",\"stock\":52400.000000,\"tenantId\":63,\"unit\":\"件\",\"wholesaleDecimal\":73.500000},{\"attribute\":\"\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryId\":32,\"categoryName\":\"半成品\",\"color\":\"\",\"commodityDecimal\":24.300000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":702,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":24.300000,\"mBarCode\":\"C.4.T.0.00722\",\"materialOther\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mnemonic\":\"\",\"model\":\"MD-RS178(VA)\",\"name\":\"MD-RS178(VA) RS485分线器\",\"otherField1\":\"\",\"otherField2\":\"\",\"otherField3\":\"\",\"position\":\"\",\"purchaseDecimal\":24.300000,\"remark\":\"Excel初始化;条码:C.4.T.0.00722\",\"standard\":\"MD-RS178(VA)\",\"stock\":1000.000000,\"tenantId\":63,\"unit\":\"件\",\"wholesaleDecimal\":24.300000},{\"attribute\":\"\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryId\":32,\"categoryName\":\"半成品\",\"color\":\"\",\"commodityDecimal\":142.560000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":701,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":142.560000,\"mBarCode\":\"C.4.T.0.0068900002\",\"materialOther\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mnemonic\":\"\",\"model\":\"MD-RS114(VB)\",\"name\":\"MD-RS114(VB) 基于RS485的MODBS TCPMODBS RTUASVII转换模块_(DZG)\",\"otherField1\":\"\",\"otherField2\":\"\",\"otherField3\":\"\",\"position\":\"\",\"purchaseDecimal\":142.560000,\"remark\":\"Excel初始化;条码:C.4.T.0.0068900002\",\"standard\":\"MD-RS114(VB)\",\"stock\":100.000000,\"tenantId\":63,\"unit\":\"件\",\"wholesaleDecimal\":142.560000},{\"attribute\":\"\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryId\":32,\"categoryName\":\"半成品\",\"color\":\"\",\"commodityDecimal\":132.840000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":700,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":132.840000,\"mBarCode\":\"C.4.T.0.00686\",\"materialOther\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mnemonic\":\"\",\"model\":\"TC160(VA)\",\"name\":\"TC160(VA) 通讯模块供电盒\",\"otherField1\":\"\",\"otherField2\":\"\",\"otherField3\":\"\",\"position\":\"\",\"purchaseDecimal\":132.840000,\"remark\":\"Excel初始化;条码:C.4.T.0.00686\",\"standard\":\"TC160(VA)\",\"stock\":50.000000,\"tenantId\":63,\"unit\":\"件\",\"wholesaleDecimal\":132.840000},{\"attribute\":\"\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryId\":32,\"categoryName\":\"半成品\",\"color\":\"\",\"commodityDecimal\":0.100000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":699,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":0.100000,\"mBarCode\":\"C.4.T.0.00654\",\"materialOther\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mnemonic\":\"\",\"model\":\"MD-4G111(VF)\",\"name\":\"MD-4G111(VF) 4G模块\",\"otherField1\":\"\",\"otherField2\":\"\",\"otherField3\":\"\",\"position\":\"\",\"purchaseDecimal\":0.100000,\"remark\":\"Excel初始化;条码:C.4.T.0.00654\",\"standard\":\"MD-4G111(VF)\",\"stock\":76970.000000,\"tenantId\":63,\"unit\":\"件\",\"wholesaleDecimal\":0.100000},{\"attribute\":\"\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryId\":32,\"categoryName\":\"半成品\",\"color\":\"\",\"commodityDecimal\":324.000000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":698,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":324.000000,\"mBarCode\":\"C.4.T.0.00562\",\"materialOther\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mnemonic\":\"\",\"model\":\"MD-4GVIII(VB)\",\"name\":\"MD-4GVIII(VB)\",\"otherField1\":\"\",\"otherField2\":\"\",\"otherField3\":\"\",\"position\":\"\",\"purchaseDecimal\":324.000000,\"remark\":\"Excel初始化;条码:C.4.T.0.00562\",\"standard\":\"MD-4GVIII(VB)\",\"stock\":50.000000,\"tenantId\":63,\"unit\":\"件\",\"wholesaleDecimal\":324.000000},{\"attribute\":\"\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryId\":32,\"categoryName\":\"半成品\",\"color\":\"\",\"commodityDecimal\":129.600000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":697,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":129.600000,\"mBarCode\":\"C.4.T.0.00553\",\"materialOther\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mnemonic\":\"\",\"model\":\"MT-P109(VA)\",\"name\":\"MT-P109(VA)\",\"otherField1\":\"\",\"otherField2\":\"\",\"otherField3\":\"\",\"position\":\"\",\"purchaseDecimal\":129.600000,\"remark\":\"Excel初始化;条码:C.4.T.0.00553\",\"standard\":\"MT-P109(VA)\",\"stock\":500.000000,\"tenantId\":63,\"unit\":\"件\",\"wholesaleDecimal\":129.600000}]}}'); +INSERT INTO `tbl_log` VALUES (8114, 63, '接口日志', '43.152.142.105/1.9.116.218', '2026-09-28 12:55:14', 0, 'SystemConfigController.fileSizeLimit(..)', NULL, 'GET /apis/systemConfig/fileSizeLimit', '{}', '{\"code\":200,\"data\":10485760}'); +INSERT INTO `tbl_log` VALUES (8115, 63, '接口日志', '43.152.142.132/1.9.116.218', '2026-09-28 12:55:14', 0, 'DepotController.getAllList(..)', NULL, 'GET /apis/depot/getAllListWithStock', '{\"mId\":705}', '{\"code\":200,\"data\":[{\"currentStock\":0.000000,\"id\":25,\"initStock\":0.000000,\"name\":\"半成品仓库\"},{\"currentStock\":0.000000,\"id\":26,\"initStock\":0.000000,\"name\":\"成品仓库\"}]}'); +INSERT INTO `tbl_log` VALUES (8116, 63, '接口日志', '43.152.142.31/1.9.116.218', '2026-09-28 12:55:14', 0, 'MaterialAttributeController.getNameList(..)', NULL, 'GET /apis/materialAttribute/getNameList', '{}', '[{\"name\":\"自定义3\",\"value\":\"5\"},{\"name\":\"自定义2\",\"value\":\"4\"},{\"name\":\"自定义1\",\"value\":\"3\"},{\"name\":\"多尺寸\",\"value\":\"2\"},{\"name\":\"多颜色\",\"value\":\"1\"}]'); +INSERT INTO `tbl_log` VALUES (8117, 63, '接口日志', '43.152.142.40/1.9.116.218', '2026-09-28 12:55:14', 0, 'UnitController.getAllList(..)', NULL, 'GET /apis/unit/getAllList', '{}', '{\"code\":200,\"data\":[{\"basicUnit\":\"个\",\"deleteFlag\":\"0\",\"enabled\":true,\"id\":15,\"name\":\"个/(箱=12个)\",\"otherUnit\":\"箱\",\"ratio\":12.000,\"tenantId\":63},{\"basicUnit\":\"个\",\"deleteFlag\":\"0\",\"enabled\":true,\"id\":19,\"name\":\"个/(盒=15个)\",\"otherUnit\":\"盒\",\"ratio\":15.000,\"tenantId\":63},{\"basicUnit\":\"盒\",\"deleteFlag\":\"0\",\"enabled\":true,\"id\":20,\"name\":\"盒/(箱=8盒)\",\"otherUnit\":\"箱\",\"ratio\":8.000,\"tenantId\":63},{\"basicUnit\":\"瓶\",\"deleteFlag\":\"0\",\"enabled\":true,\"id\":21,\"name\":\"瓶/(箱=12瓶)\",\"otherUnit\":\"箱\",\"ratio\":12.000,\"tenantId\":63}]}'); +INSERT INTO `tbl_log` VALUES (8118, 63, '接口日志', '43.152.142.68/1.9.116.218', '2026-09-28 12:55:14', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (8119, 63, '接口日志', '43.152.142.141/1.9.116.218', '2026-09-28 12:55:14', 0, 'MaterialExtendController.getDetailList(..)', NULL, 'GET /apis/materialsExtend/getDetailList', '{\"materialId\":705}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"commodityDecimal\":10.000000,\"lowDecimal\":10.000000,\"wholesaleDecimal\":10.000000,\"commodityUnit\":\"件\",\"id\":125,\"purchaseDecimal\":10.000000,\"barCode\":\"1001\"}]}}'); +INSERT INTO `tbl_log` VALUES (8120, 63, '接口日志', '43.174.32.18/1.9.116.218', '2026-09-28 12:55:46', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8121, 63, '接口日志', '43.174.32.33/1.9.116.218', '2026-09-28 12:55:46', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (8122, 63, '接口日志', '43.174.53.14/1.9.116.218', '2026-09-28 12:55:46', 0, 'DepotItemController.findStockWarningCount(..)', NULL, 'GET /apis/depotItem/findStockWarningCount', '{\"currentPage\":1,\"pageSize\":10,\"materialParam\":\"\",\"mpList\":\"扩展1,扩展2,扩展3\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (8123, 63, '接口日志', '43.174.53.48/1.9.116.218', '2026-09-28 12:56:59', 0, 'PersonController.getList(..)', NULL, 'GET /apis/person/list', '{\"search\":\"{\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":11,\"rows\":[{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":44,\"name\":\"Neezam\",\"type\":\"CEO\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":43,\"name\":\"Juwairiah\",\"type\":\"财务员\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":31,\"name\":\"Arif\",\"sort\":\"1\",\"tenantId\":63,\"type\":\"商务主管\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":36,\"name\":\"张伟\",\"sort\":\"10\",\"tenantId\":63,\"type\":\"资产管理员\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":32,\"name\":\"Hafiz\",\"sort\":\"2\",\"tenantId\":63,\"type\":\"技术主管\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":37,\"name\":\"陈晨\",\"sort\":\"20\",\"tenantId\":63,\"type\":\"设备工程师\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":33,\"name\":\"Aziman\",\"sort\":\"3\",\"tenantId\":63,\"type\":\"软件工程师\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":38,\"name\":\"王磊\",\"sort\":\"30\",\"tenantId\":63,\"type\":\"生产主管\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":34,\"name\":\"Lim\",\"sort\":\"4\",\"tenantId\":63,\"type\":\"IT\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":39,\"name\":\"赵敏\",\"sort\":\"40\",\"tenantId\":63,\"type\":\"IT运维工程师\"}]}}'); +INSERT INTO `tbl_log` VALUES (8124, 63, '接口日志', '43.152.142.105/1.9.116.218', '2026-09-28 12:56:59', 0, 'SysDictDataController.dictType(..)', NULL, 'GET /apis/dict/data/type/person_type', '{\"dictType\":\"person_type\"}', '{\"msg\":\"操作成功\",\"code\":0,\"data\":[{\"createBy\":\"admin\",\"createTime\":1789644159000,\"dictCode\":13,\"dictLabel\":\"采购员\",\"dictSort\":3,\"dictType\":\"person_type\",\"dictValue\":\"采购员\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"},{\"createBy\":\"admin\",\"createTime\":1789724265000,\"dictCode\":14,\"dictLabel\":\"CEO\",\"dictSort\":4,\"dictType\":\"person_type\",\"dictValue\":\"CEO\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"},{\"createBy\":\"admin\",\"createTime\":1789724275000,\"dictCode\":15,\"dictLabel\":\"IT\",\"dictSort\":5,\"dictType\":\"person_type\",\"dictValue\":\"IT\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}]}'); +INSERT INTO `tbl_log` VALUES (8125, 63, '接口日志', '43.152.142.139/1.9.116.218', '2026-09-28 12:56:59', 0, 'SysDictDataController.dictType(..)', NULL, 'GET /apis/dict/data/type/person_type', '{\"dictType\":\"person_type\"}', '{\"msg\":\"操作成功\",\"code\":0,\"data\":[{\"createBy\":\"admin\",\"createTime\":1789644159000,\"dictCode\":13,\"dictLabel\":\"采购员\",\"dictSort\":3,\"dictType\":\"person_type\",\"dictValue\":\"采购员\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"},{\"createBy\":\"admin\",\"createTime\":1789724265000,\"dictCode\":14,\"dictLabel\":\"CEO\",\"dictSort\":4,\"dictType\":\"person_type\",\"dictValue\":\"CEO\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"},{\"createBy\":\"admin\",\"createTime\":1789724275000,\"dictCode\":15,\"dictLabel\":\"IT\",\"dictSort\":5,\"dictType\":\"person_type\",\"dictValue\":\"IT\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}]}'); +INSERT INTO `tbl_log` VALUES (8126, 63, '接口日志', '43.174.53.14/1.9.116.218', '2026-09-28 12:57:07', 0, 'AccountController.getList(..)', NULL, 'GET /apis/account/list', '{\"search\":\"{\\\"name\\\":\\\"\\\",\\\"serialNo\\\":\\\"\\\",\\\"remark\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63,\"thisMonthAmount\":\"0\"},{\"currentAmount\":4375618.532800,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63,\"thisMonthAmount\":\"0\"}]}}'); +INSERT INTO `tbl_log` VALUES (8127, 63, '接口日志', '43.174.32.33/1.9.116.218', '2026-09-28 12:57:23', 0, 'SupplierController.getList(..)', NULL, 'GET /apis/supplier/list', '{\"search\":\"{\\\"supplier\\\":\\\"\\\",\\\"type\\\":\\\"供应商\\\",\\\"contacts\\\":\\\"\\\",\\\"telephone\\\":\\\"\\\",\\\"phonenum\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"accountNumber\":\"\",\"address\":\"\",\"advanceIn\":0.000000,\"allNeedGet\":0.000000,\"allNeedPay\":116500257.436400,\"bankName\":\"\",\"beginNeedGet\":0.000000,\"beginNeedPay\":0.000000,\"contacts\":\"\",\"creator\":63,\"deleteFlag\":\"0\",\"description\":\"Excel初始化默认供应商\",\"email\":\"\",\"enabled\":true,\"fax\":\"\",\"id\":89,\"isystem\":1,\"phoneNum\":\"\",\"sort\":\"1\",\"supplier\":\"浙江瑞银电子有限公司\",\"taxNum\":\"\",\"taxRate\":0.000000,\"telephone\":\"\",\"tenantId\":63,\"type\":\"供应商\"}]}}'); +INSERT INTO `tbl_log` VALUES (8128, 63, '接口日志', '43.152.142.33/1.9.116.218', '2026-09-28 12:57:45', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-04\",\"inbound\":100669.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (8129, 63, '接口日志', '43.174.51.49/1.9.116.218', '2026-09-28 12:58:37', 0, 'RoleController.getList(..)', NULL, 'GET /apis/role/list', '{\"search\":\"{\\\"name\\\":\\\"\\\",\\\"description\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":7,\"rows\":[{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":24,\"name\":\"system admin\",\"type\":\"全部数据\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":23,\"name\":\"system admin\",\"type\":\"全部数据\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":21,\"name\":\"admin\",\"tenantId\":63,\"type\":\"全部数据\"},{\"deleteFlag\":\"0\",\"description\":\"rrr\",\"enabled\":true,\"id\":17,\"name\":\"销售代表\",\"tenantId\":63,\"type\":\"个人数据\"},{\"deleteFlag\":\"0\",\"description\":\"ddd\",\"enabled\":true,\"id\":16,\"name\":\"销售经理\",\"tenantId\":63,\"type\":\"全部数据\"},{\"deleteFlag\":\"0\",\"description\":\"\",\"enabled\":true,\"id\":10,\"name\":\"租户\",\"type\":\"全部数据\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":4,\"name\":\"管理员\",\"type\":\"全部数据\"}]}}'); +INSERT INTO `tbl_log` VALUES (8130, 63, '接口日志', '43.152.142.132/1.9.116.218', '2026-09-28 12:58:42', 0, 'AccountController.getStatistics(..)', NULL, 'GET /apis/account/getStatistics', '{\"name\":\"\",\"serialNo\":\"\"}', '{\"code\":200,\"data\":{\"allCurrentAmount\":\"4375818.53\",\"allMonthAmount\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8131, 63, '接口日志', '43.152.142.31/1.9.116.218', '2026-09-28 12:58:42', 0, 'AccountController.listWithBalance(..)', NULL, 'GET /apis/account/listWithBalance', '{\"name\":\"\",\"serialNo\":\"\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63,\"thisMonthAmount\":\"0\"},{\"currentAmount\":4375618.532800,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63,\"thisMonthAmount\":\"0\"}]}}'); +INSERT INTO `tbl_log` VALUES (8132, 63, '接口日志', '43.152.142.139/1.9.116.218', '2026-09-28 12:58:44', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8133, 63, '接口日志', '43.152.142.110/1.9.116.218', '2026-09-28 12:58:44', 0, 'OrganizationController.getAllOrganizationTreeByUser(..)', NULL, 'GET /apis/organization/getAllOrganizationTreeByUser', '{}', '[{\"children\":[{\"children\":[{\"children\":[],\"checked\":false,\"attributes\":\"12\",\"id\":14,\"state\":\"open\",\"title\":\"部门2\",\"value\":14,\"key\":14}],\"checked\":false,\"attributes\":\"jg1\",\"id\":13,\"state\":\"open\",\"title\":\"部门1\",\"value\":13,\"key\":13}],\"checked\":false,\"attributes\":\"001\",\"id\":12,\"state\":\"open\",\"title\":\"测试部门\",\"value\":12,\"key\":12}]'); +INSERT INTO `tbl_log` VALUES (8134, 63, '接口日志', '43.174.32.13/1.9.116.218', '2026-09-28 12:58:44', 0, 'DepotItemController.retailOut(..)', NULL, 'GET /apis/depotItem/retailOut', '{\"currentPage\":1,\"pageSize\":10,\"beginTime\":\"2026-06-28\",\"endTime\":\"2026-09-28\",\"materialParam\":\"\",\"mpList\":\"扩展1,扩展2,扩展3\"}', '{\"code\":200,\"data\":{\"total\":0,\"realityPriceTotal\":0.000000,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (8135, 63, '接口日志', '43.174.53.17/1.9.116.218', '2026-09-28 12:58:44', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (8136, 63, '接口日志', '43.152.157.63/1.9.116.218', '2026-09-28 12:58:44', 0, 'SupplierController.findBySelectRetail(..)', NULL, 'POST /apis/supplier/findBySelect_retail', '{\"jsonObject\":{\"limit\":1}}', '[]'); +INSERT INTO `tbl_log` VALUES (8137, 63, '接口日志', '43.174.53.48/1.9.116.218', '2026-09-28 12:58:52', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-04\",\"inbound\":100669.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (8138, NULL, '接口日志', '43.152.142.57/1.9.116.218', '2026-09-28 13:00:18', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (8139, NULL, '接口日志', '43.174.32.33/1.9.116.218', '2026-09-28 13:00:18', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (8140, 63, '接口日志', '43.152.157.63/1.9.116.218', '2026-09-28 13:00:18', 0, 'FunctionController.findMenuByPNumber(..)', NULL, 'POST /apis/function/findMenuByPNumber', '{\"jsonObject\":{\"userId\":63,\"pNumber\":0}}', '[{\"component\":\"/layouts/TabLayout\",\"icon\":\"home\",\"id\":0,\"text\":\"首页\",\"url\":\"/dashboard/analysis\",\"textEn\":\"Home\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/SaleOrderList\",\"icon\":\"profile\",\"id\":242,\"text\":\"销售订单\",\"url\":\"/bill/sale_order\",\"textEn\":\"Sales Orders\"},{\"component\":\"/bill/SaleOutList\",\"icon\":\"profile\",\"id\":41,\"text\":\"销售出库\",\"url\":\"/bill/sale_out\",\"textEn\":\"Sales Shipments\"},{\"component\":\"/bill/DeliveryPlanList\",\"icon\":\"profile\",\"id\":271,\"text\":\"交货计划管理\",\"url\":\"/bill/delivery_plan\",\"textEn\":\"Delivery Plans\"},{\"component\":\"/bill/SaleShipmentList\",\"icon\":\"car\",\"id\":268,\"text\":\"发货管理\",\"url\":\"/bill/sale_shipment\",\"textEn\":\"Shipment Management\"},{\"component\":\"/bill/SaleBackList\",\"icon\":\"profile\",\"id\":200,\"text\":\"销售退货\",\"url\":\"/bill/sale_back\",\"textEn\":\"Sales Returns\"},{\"component\":\"/bill/RetailOutList\",\"icon\":\"profile\",\"id\":210,\"text\":\"零售出库\",\"url\":\"/bill/retail_out\",\"textEn\":\"Retail Shipments\"},{\"component\":\"/bill/RetailBackList\",\"icon\":\"profile\",\"id\":211,\"text\":\"零售退货\",\"url\":\"/bill/retail_back\",\"textEn\":\"Retail Returns\"}],\"icon\":\"shopping-cart\",\"id\":38,\"text\":\"销售管理\",\"url\":\"/billB\",\"textEn\":\"Sales Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/PurchaseApplyList\",\"icon\":\"profile\",\"id\":261,\"text\":\"请购单\",\"url\":\"/bill/purchase_apply\",\"textEn\":\"Purchase Requisitions\"},{\"component\":\"/bill/PurchaseOrderList\",\"icon\":\"profile\",\"id\":241,\"text\":\"采购订单\",\"url\":\"/bill/purchase_order\",\"textEn\":\"Purchase Orders\"},{\"component\":\"/bill/PurchaseInList\",\"icon\":\"profile\",\"id\":33,\"text\":\"采购入库\",\"url\":\"/bill/purchase_in\",\"textEn\":\"Purchase Receipts\"},{\"component\":\"/bill/PurchaseBackList\",\"icon\":\"profile\",\"id\":199,\"text\":\"采购退货\",\"url\":\"/bill/purchase_back\",\"textEn\":\"Purchase Returns\"}],\"icon\":\"retweet\",\"id\":32,\"text\":\"采购管理\",\"url\":\"/bill\",\"textEn\":\"Purchase Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/production/PackBomList\",\"icon\":\"profile\",\"id\":263,\"text\":\"生产方案\",\"url\":\"/production/pack_bom\",\"textEn\":\"Production BOMs\"},{\"component\":\"/production/OrderList\",\"icon\":\"profile\",\"id\":264,\"text\":\"生产工单\",\"url\":\"/production/order\",\"textEn\":\"Production Orders\"},{\"component\":\"/production/RequisitionList\",\"icon\":\"profile\",\"id\":265,\"text\":\"领料管理\",\"url\":\"/production/requisition\",\"textEn\":\"Material Requisitions\"},{\"component\":\"/production/ReportList\",\"icon\":\"profile\",\"id\":266,\"text\":\"完工报工\",\"url\":\"/production/report\",\"textEn\":\"Production Reports\"}],\"icon\":\"cluster\",\"id\":262,\"text\":\"生产管理\",\"url\":\"/production\",\"textEn\":\"Production Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/MaterialStock\",\"icon\":\"profile\",\"id\":246,\"text\":\"商品库存\",\"url\":\"/report/material_stock\",\"textEn\":\"Product Inventory\"},{\"component\":\"/bill/OtherInList\",\"icon\":\"profile\",\"id\":201,\"text\":\"其它入库\",\"url\":\"/bill/other_in\",\"textEn\":\"Other Receipts\"},{\"component\":\"/bill/OtherOutList\",\"icon\":\"profile\",\"id\":202,\"text\":\"其它出库\",\"url\":\"/bill/other_out\",\"textEn\":\"Other Shipments\"},{\"component\":\"/bill/HeadquartersInList\",\"icon\":\"profile\",\"id\":270,\"text\":\"总部入库\",\"url\":\"/bill/headquarters_in\",\"textEn\":\"Headquarters Receipts\"}],\"icon\":\"hdd\",\"id\":239,\"text\":\"仓库管理\",\"url\":\"/billD\",\"textEn\":\"Warehouse Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/financial/MoneyInList\",\"icon\":\"profile\",\"id\":204,\"text\":\"收款单\",\"url\":\"/financial/money_in\",\"textEn\":\"Receipt Vouchers\"},{\"component\":\"/financial/MoneyOutList\",\"icon\":\"profile\",\"id\":205,\"text\":\"付款单\",\"url\":\"/financial/money_out\",\"textEn\":\"Payment Vouchers\"}],\"icon\":\"money-collect\",\"id\":44,\"text\":\"财务管理\",\"url\":\"/financial\",\"textEn\":\"Finance Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/asset/AssetList\",\"icon\":\"profile\",\"id\":273,\"text\":\"资产台账\",\"url\":\"/asset/ledger\",\"textEn\":\"Asset Ledger\"},{\"component\":\"/asset/DeviceList\",\"icon\":\"tool\",\"id\":274,\"text\":\"设备台账\",\"url\":\"/asset/device\",\"textEn\":\"Device Ledger\"},{\"component\":\"/asset/InventoryList\",\"icon\":\"scan\",\"id\":275,\"text\":\"资产盘点\",\"url\":\"/asset/inventory\",\"textEn\":\"Asset Inventory\"}],\"icon\":\"bank\",\"id\":272,\"text\":\"资产管理\",\"url\":\"/assetManagement\",\"textEn\":\"Asset Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/material/MaterialCategoryList\",\"icon\":\"profile\",\"id\":22,\"text\":\"商品类别\",\"url\":\"/material/material_category\",\"textEn\":\"Product Categories\"},{\"component\":\"/material/MaterialList\",\"icon\":\"profile\",\"id\":23,\"text\":\"商品信息\",\"url\":\"/material/material\",\"textEn\":\"Product Information\"},{\"component\":\"/system/UnitList\",\"icon\":\"profile\",\"id\":220,\"text\":\"多单位\",\"url\":\"/system/unit\",\"textEn\":\"Multiple Units\"},{\"component\":\"/material/MaterialAttributeList\",\"icon\":\"profile\",\"id\":247,\"text\":\"多属性\",\"url\":\"/material/material_attribute\",\"textEn\":\"Product Attributes\"}],\"icon\":\"shopping\",\"id\":21,\"text\":\"商品管理\",\"url\":\"/material\",\"textEn\":\"Product Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/AccountReport\",\"icon\":\"profile\",\"id\":207,\"text\":\"账户统计\",\"url\":\"/report/account_report\",\"textEn\":\"Account Summary\"},{\"component\":\"/report/RetailOutReport\",\"icon\":\"profile\",\"id\":259,\"text\":\"零售统计\",\"url\":\"/report/retail_out_report\",\"textEn\":\"Retail Summary\"},{\"component\":\"/report/BuyInReport\",\"icon\":\"profile\",\"id\":208,\"text\":\"采购统计\",\"url\":\"/report/buy_in_report\",\"textEn\":\"Purchase Summary\"},{\"component\":\"/report/SaleOutReport\",\"icon\":\"profile\",\"id\":209,\"text\":\"销售统计\",\"url\":\"/report/sale_out_report\",\"textEn\":\"Sales Summary\"},{\"component\":\"/report/InDetail\",\"icon\":\"profile\",\"id\":226,\"text\":\"入库明细\",\"url\":\"/report/in_detail\",\"textEn\":\"Inbound Details\"},{\"component\":\"/report/OutDetail\",\"icon\":\"profile\",\"id\":227,\"text\":\"出库明细\",\"url\":\"/report/out_detail\",\"textEn\":\"Outbound Details\"},{\"component\":\"/report/InMaterialCount\",\"icon\":\"profile\",\"id\":228,\"text\":\"入库汇总\",\"url\":\"/report/in_material_count\",\"textEn\":\"Inbound Summary\"},{\"component\":\"/report/OutMaterialCount\",\"icon\":\"profile\",\"id\":229,\"text\":\"出库汇总\",\"url\":\"/report/out_material_count\",\"textEn\":\"Outbound Summary\"},{\"component\":\"/report/InOutStockReport\",\"icon\":\"profile\",\"id\":59,\"text\":\"进销存统计\",\"url\":\"/report/in_out_stock_report\",\"textEn\":\"Inventory Transaction Summary\"},{\"component\":\"/report/CustomerAccount\",\"icon\":\"profile\",\"id\":235,\"text\":\"客户对账\",\"url\":\"/report/customer_account\",\"textEn\":\"Customer Reconciliation\"},{\"component\":\"/report/VendorAccount\",\"icon\":\"profile\",\"id\":237,\"text\":\"供应商对账\",\"url\":\"/report/vendor_account\",\"textEn\":\"Supplier Reconciliation\"},{\"component\":\"/report/StockWarningReport\",\"icon\":\"profile\",\"id\":244,\"text\":\"库存预警\",\"url\":\"/report/stock_warning_report\",\"textEn\":\"Stock Alerts\"}],\"icon\":\"pie-chart\",\"id\":198,\"text\":\"报表查询\",\"url\":\"/report\",\"textEn\":\"Reports\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/VendorList\",\"icon\":\"profile\",\"id\":25,\"text\":\"供应商信息\",\"url\":\"/system/vendor\",\"textEn\":\"Suppliers\"},{\"component\":\"/system/CustomerList\",\"icon\":\"profile\",\"id\":217,\"text\":\"客户信息\",\"url\":\"/system/customer\",\"textEn\":\"Customers\"},{\"component\":\"/system/MemberList\",\"icon\":\"profile\",\"id\":218,\"text\":\"会员信息\",\"url\":\"/system/member\",\"textEn\":\"Members\"},{\"component\":\"/system/CustomerCategoryList\",\"icon\":\"bars\",\"id\":267,\"text\":\"客户分类\",\"url\":\"/system/customerCategory\",\"textEn\":\"Customer Categories\"},{\"component\":\"/system/DepotList\",\"icon\":\"profile\",\"id\":26,\"text\":\"仓库信息\",\"url\":\"/system/depot\",\"textEn\":\"Warehouses\"},{\"component\":\"/system/InOutItemList\",\"icon\":\"profile\",\"id\":194,\"text\":\"收支项目\",\"url\":\"/system/in_out_item\",\"textEn\":\"Income and Expense Items\"},{\"component\":\"/system/AccountList\",\"icon\":\"profile\",\"id\":195,\"text\":\"结算账户\",\"url\":\"/system/account\",\"textEn\":\"Settlement Accounts\"},{\"component\":\"/system/PersonList\",\"icon\":\"profile\",\"id\":31,\"text\":\"操作人员管理\",\"url\":\"/system/person\",\"textEn\":\"Operators\"}],\"icon\":\"appstore\",\"id\":24,\"text\":\"基础资料\",\"url\":\"/systemA\",\"textEn\":\"Master Data\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/RoleList\",\"icon\":\"profile\",\"id\":13,\"text\":\"角色管理\",\"url\":\"/system/role\",\"textEn\":\"Role Management\"},{\"component\":\"/system/UserList\",\"icon\":\"profile\",\"id\":14,\"text\":\"用户管理\",\"url\":\"/system/user\",\"textEn\":\"User Management\"},{\"component\":\"/system/OrganizationList\",\"icon\":\"profile\",\"id\":243,\"text\":\"部门管理\",\"url\":\"/system/organization\",\"textEn\":\"Department Management\"},{\"component\":\"/system/LogList\",\"icon\":\"profile\",\"id\":15,\"text\":\"日志管理\",\"url\":\"/system/log\",\"textEn\":\"Log Management\"},{\"component\":\"/material/MaterialPropertyList\",\"icon\":\"profile\",\"id\":236,\"text\":\"商品属性\",\"url\":\"/material/material_property\",\"textEn\":\"Product Properties\"},{\"component\":\"/system/SystemConfigList\",\"icon\":\"profile\",\"id\":234,\"text\":\"系统配置\",\"url\":\"/system/system_config\",\"textEn\":\"System Configuration\"},{\"component\":\"/system/FunctionList\",\"icon\":\"profile\",\"id\":16,\"text\":\"菜单管理\",\"url\":\"/system/function\",\"textEn\":\"Resource Menus\"},{\"component\":\"/system/PluginList\",\"icon\":\"profile\",\"id\":245,\"text\":\"插件管理\",\"url\":\"/system/plugin\",\"textEn\":\"Plugin Management\"},{\"component\":\"/system/DictList\",\"icon\":\"profile\",\"id\":260,\"text\":\"字典管理\",\"url\":\"/system/dict\",\"textEn\":\"Dictionary Management\"},{\"component\":\"/system/PlatformConfigList\",\"icon\":\"profile\",\"id\":258,\"text\":\"平台配置\",\"url\":\"/system/platform_config\",\"textEn\":\"Platform Configuration\"}],\"icon\":\"setting\",\"id\":1,\"text\":\"系统管理\",\"url\":\"/system\",\"textEn\":\"System Management\"}]'); +INSERT INTO `tbl_log` VALUES (8141, 63, '接口日志', '43.152.142.40/1.9.116.218', '2026-09-28 13:00:18', 0, 'UserController.getUserBtnByCurrentUser(..)', NULL, 'GET /apis/user/getUserBtnByCurrentUser', '{}', '{\"code\":200,\"data\":{\"userBtn\":[{\"btnStr\":\"8,1\",\"url\":\"/system/role\"},{\"btnStr\":\"1\",\"url\":\"/system/user\"},{\"btnStr\":\"1\",\"url\":\"/system/organization\"},{\"btnStr\":\"1\",\"url\":\"/material/material_property\"},{\"btnStr\":\"1\",\"url\":\"/system/system_config\"},{\"btnStr\":\"1\",\"url\":\"/system/function\"},{\"btnStr\":\"1\",\"url\":\"/system/plugin\"},{\"btnStr\":\"1\",\"url\":\"/material/material_category\"},{\"btnStr\":\"1,3\",\"url\":\"/material/material\"},{\"btnStr\":\"1\",\"url\":\"/system/unit\"},{\"btnStr\":\"1\",\"url\":\"/material/material_attribute\"},{\"btnStr\":\"1,3\",\"url\":\"/system/vendor\"},{\"btnStr\":\"1,3\",\"url\":\"/system/customer\"},{\"btnStr\":\"1,3\",\"url\":\"/system/member\"},{\"btnStr\":\"1\",\"url\":\"/system/depot\"},{\"btnStr\":\"1\",\"url\":\"/system/in_out_item\"},{\"btnStr\":\"1\",\"url\":\"/system/account\"},{\"btnStr\":\"1\",\"url\":\"/system/person\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_apply\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_out\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/delivery_plan\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/sale_shipment\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_out\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/order\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/requisition\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/report\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/giro\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/advance_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/allocation_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/assemble\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/headquarters_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/disassemble\"}]}}'); +INSERT INTO `tbl_log` VALUES (8142, 63, '接口日志', '43.152.142.33/1.9.116.218', '2026-09-28 13:00:19', 0, 'MsgController.getMsgByStatus(..)', NULL, 'GET /apis/msg/getMsgByStatus', '{\"status\":\"1\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (8143, 63, '接口日志', '43.152.142.105/1.9.116.218', '2026-09-28 13:00:19', 0, 'MsgController.getList(..)', NULL, 'GET /apis/msg/list', '{\"search\":\"{\\\"name\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (8144, 63, '接口日志', '43.174.32.18/1.9.116.218', '2026-09-28 13:00:19', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-04\",\"inbound\":100669.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (8145, NULL, '接口日志', '43.152.142.141/1.9.116.218', '2026-09-28 13:00:59', 0, 'UserController.logout(..)', NULL, 'GET /apis/user/logout', '{}', '{\"code\":400}'); +INSERT INTO `tbl_log` VALUES (8146, NULL, '接口日志', '43.152.142.139/1.9.116.218', '2026-09-28 13:01:00', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (8147, NULL, '接口日志', '43.152.142.132/1.9.116.218', '2026-09-28 13:01:00', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (8148, NULL, '接口日志', '43.152.142.83/1.9.116.218', '2026-09-28 13:01:00', 0, 'UserController.randomImage(..)', NULL, 'GET /apis/user/randomImage', '{}', '{\"code\":200,\"data\":{\"base64\":\"data:image/jpg;base64,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\",\"uuid\":\"78db244b79d946678338b206d3434bc5\"}}'); +INSERT INTO `tbl_log` VALUES (8149, NULL, '接口日志', '43.174.54.27/1.9.116.218', '2026-09-28 13:01:00', 0, 'PlatformConfigController.getPlatformCheckcodeFlag(..)', NULL, 'GET /apis/platformConfig/getPlatform/checkcodeFlag', '{}', '\"1\"'); +INSERT INTO `tbl_log` VALUES (8150, NULL, '接口日志', '43.174.32.13/1.9.116.218', '2026-09-29 05:07:55', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (8151, NULL, '接口日志', '43.174.32.13/1.9.116.218', '2026-09-29 05:07:55', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (8152, NULL, '接口日志', '43.152.142.68/1.9.116.218', '2026-09-29 05:07:58', 0, 'UserController.randomImage(..)', NULL, 'GET /apis/user/randomImage', '{}', '{\"code\":200,\"data\":{\"base64\":\"data:image/jpg;base64,/9j/4AAQSkZJRgABAgAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAAjAGkDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3nzC+ZYmLoodTGAMswOOpx6EenNLHNvlKH5WCK5jI5XOepBwenb096SKJY0aOOQ8SFm5BIJbcR+v5Gvlr4q+OE8SeMLTSL031vo2mXHlX9rAEUmYSMJnTkhjt4UsfU4G40AfUV88sdqTBE0kpI2gEgA9s45xnH584GSHWsjmNY5z/AKQEVnX0znHI4J4PT06CvOfguNDbwXdHwq2opZ/bpPNGqqjyed5Uf3TGQNoG3ryeelehQQzLcAvOXRFIIII3OxDE89hwB1xkjPFADxPO0uxbR1UNgvI6gEeowSfwIH4VDNPdBfLjEZl3MCyZITnKBhg9QVz0IySOORyHhD4haD4w1W90Sws9Ss72zUtNZ6jHsBTcEdcAsBtJUbTt64HG7Efhb4heHfHHiS7tdCkulu7PNwftMbLHcoP3e9MMdo5X7yhvmHHDCgDv4ldYkWR97hQGfGNx7nHao7dpG8xZAfkfapYYJGByexycnj9DkVwGlfGTQ9bh1mbTtL1i5g0i2a5uJ44UEbIpwdpZ15I3MAwUlUbjIxWz4S8bWnjnR5dW0SO4ijSdrTyr4KmXCh9w27ieGHGR0P1oA6pH37vlZSpx8w/UeoqjcedG6O9yFaSRRFFu2qGx93djkH5uo7jGCM1yHg/4jaH44u7650nSNWD2KI00kiRgEtlVG1ZCWON/OOAp5HAPazvZpbyX1xOi2ywEySSS4iEeMljk7cY7+nfFCAsReZ5Sebt8zaN+3pnvj2qHyFaIRRyzxmNuH3EnP1bO4c98j8Rx5WPjp4Bu9Ta0mGpxRBnVdQkt8xjGSHGGLjn7vyZG7oBmub/Zl/5mn/t0/wDa1AHvyowkdjIzBsYU4wv04z+eadUMhh+1QCSIGTDeXIVHynjIB7Ej9AfSpqAIbiTydsjqfKQMzuG+7gdSO46/jjjuPAPiZE0X7Qvg/c+/fJZMPvcA3b8ck/pgewr377TsDtNG0Sh9qH724Y4PGcZPAHXp3OK53V/CPhrW/E+n6/qFoZNTsBCYZGeVdo3lo/lBAyHz1B7gjpguBvPDHd2lxtEpFxGUKyMy9iOA33fwHvzR5t80xVbeNYztYO7dBkblIH8WN2COOlTInlzsFOEZchAmADkljn1O4fkfeopGjuSsTLOEbDJJG7BW4/vKeB9cZ7ZoA+Z/Ec+ofC/4x61dpeyxDUbO4uIrjYjGVpUZ0+XnaBcqBg9l5ypOaGmJf/DU+HPEAUacdW0C8PnkLN5k5ErQkL823hrTsBzg/wAde/698NPDniaWC51vTzqF5GnkC4a6mjKR7mYAAMckFzjP4mpNY+H3hPVtO0rTdW0x7iz0q3ZLVnuZVEKAICCysM8KvX+6elAHCfs7aDdaf4XvdakjAi1SYKhMg5ji3KGCgd3Zwckfdzj18p1a71L4Yax4w8K2MrNZalF9mSRgCTFu4YlkG4+WZYztwNzMQflFfU+g6Tp+gadDpGkILS0hTMVm5LtHl2ZzlmLHJY85IHbIrwDxBpPiP4sfEHTb3U/CuoeHtNhgjgu5bslFWJZWLMruijeRJgLg889M4APT/gj4YTw/8OrS6kg8u+1X/S5mO0kof9UAR/DswwBJwXbpnAufFizf/hV+tw6aAl39n3qFkCP5KMGlAJI+URmQbR2JUDnFdwVjhMszOVBGXLOdoAHXBOB+FZ8VopuJZJ3juZoJGkSMHcybjkD5jgcBcY24x9aAPKfhT4q8Hab8I4bPUdT0iCRDcf2ja3JUPMCzE5Q8y5jKAYDZxt6jjE/ZsWJ28RLJB5v7y0KkoGCMBOQ3t0xn1Ir0y2+FPgG21RL4+HrUXcrvIIZ3LJlskqIixjwAeAFwMDHQGtTw34K0PwXLdf8ACPaWbZbwRib/AEh3B2k/3ySMByeOuO3GQDoUCQsIkRgG3PnqAScnn3J/nUlQwpCskxjyX3YcsSTnGcc9ueg4GamoAKKKKAEZVdSrAFSMEEcEUKqooVVCqBgADAAoooAWkVFQYVQoyTgDHJOSfzoooAasUaBAkarsXauBjaOOB6DgflT6KKAI3hjlbMiBvlKYPIKnGRj8BT2VXRkdQysMEEZBFFFADDBEyRq6BxGQV3/MQR0OT396koooAKKKKAP/2Q==\",\"uuid\":\"cde5cd8ab2f844929961e3ccf19dcbb2\"}}'); +INSERT INTO `tbl_log` VALUES (8153, NULL, '接口日志', '43.152.142.84/1.9.116.218', '2026-09-29 05:07:58', 0, 'PlatformConfigController.getPlatformCheckcodeFlag(..)', NULL, 'GET /apis/platformConfig/getPlatform/checkcodeFlag', '{}', '\"1\"'); +INSERT INTO `tbl_log` VALUES (8154, NULL, '接口日志', '43.152.142.84/1.9.116.218', '2026-09-29 05:08:17', 0, 'UserController.login(..)', NULL, 'POST /apis/user/login', '{\"userParam\":{\"code\":\"fwyd\",\"loginName\":\"admin\",\"password\":\"******\",\"uuid\":\"cde5cd8ab2f844929961e3ccf19dcbb2\"}}', '{\"code\":200,\"data\":{\"msgTip\":\"user password error\"}}'); +INSERT INTO `tbl_log` VALUES (8155, NULL, '接口日志', '43.152.142.84/1.9.116.218', '2026-09-29 05:08:17', 0, 'UserController.randomImage(..)', NULL, 'GET /apis/user/randomImage', '{}', '{\"code\":200,\"data\":{\"base64\":\"data:image/jpg;base64,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\",\"uuid\":\"853ce654e1f740ec9d44304556d59d7b\"}}'); +INSERT INTO `tbl_log` VALUES (8156, 63, '用户', '43.152.142.43/1.9.116.218', '2026-09-29 05:08:26', 0, '登录admin', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (8157, NULL, '接口日志', '43.152.142.43/1.9.116.218', '2026-09-29 05:08:26', 0, 'UserController.login(..)', NULL, 'POST /apis/user/login', '{\"userParam\":{\"code\":\"fini\",\"loginName\":\"admin\",\"password\":\"******\",\"uuid\":\"853ce654e1f740ec9d44304556d59d7b\"}}', '{\"code\":200,\"data\":{\"pwdSimple\":\"******\",\"user\":{\"deleteFlag\":\"0\",\"description\":\"\",\"email\":\"666666@qq.com\",\"id\":63,\"ismanager\":1,\"isystem\":1,\"leaderFlag\":\"0\",\"loginName\":\"admin\",\"password\":\"******\",\"phonenum\":\"1123123123132\",\"position\":\"主管\",\"status\":0,\"tenantId\":63,\"username\":\"admin\"},\"msgTip\":\"user can login\",\"token\":\"******\"}}'); +INSERT INTO `tbl_log` VALUES (8158, 63, '接口日志', '43.152.142.31/1.9.116.218', '2026-09-29 05:08:26', 0, 'MaterialPropertyController.getAllList(..)', NULL, 'GET /apis/materialProperty/getAllList', '{}', '{\"code\":200,\"data\":[{\"anotherName\":\"扩展1\",\"id\":1,\"nativeName\":\"扩展1\"},{\"anotherName\":\"扩展2\",\"id\":2,\"nativeName\":\"扩展2\"},{\"anotherName\":\"扩展3\",\"id\":3,\"nativeName\":\"扩展3\"}]}'); +INSERT INTO `tbl_log` VALUES (8159, 63, '接口日志', '43.152.142.43/1.9.116.218', '2026-09-29 05:08:26', 0, 'FunctionController.findMenuByPNumber(..)', NULL, 'POST /apis/function/findMenuByPNumber', '{\"jsonObject\":{\"userId\":63,\"pNumber\":0}}', '[{\"component\":\"/layouts/TabLayout\",\"icon\":\"home\",\"id\":0,\"text\":\"首页\",\"url\":\"/dashboard/analysis\",\"textEn\":\"Home\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/SaleOrderList\",\"icon\":\"profile\",\"id\":242,\"text\":\"销售订单\",\"url\":\"/bill/sale_order\",\"textEn\":\"Sales Orders\"},{\"component\":\"/bill/SaleOutList\",\"icon\":\"profile\",\"id\":41,\"text\":\"销售出库\",\"url\":\"/bill/sale_out\",\"textEn\":\"Sales Shipments\"},{\"component\":\"/bill/DeliveryPlanList\",\"icon\":\"profile\",\"id\":271,\"text\":\"交货计划管理\",\"url\":\"/bill/delivery_plan\",\"textEn\":\"Delivery Plans\"},{\"component\":\"/bill/SaleShipmentList\",\"icon\":\"car\",\"id\":268,\"text\":\"发货管理\",\"url\":\"/bill/sale_shipment\",\"textEn\":\"Shipment Management\"},{\"component\":\"/bill/SaleBackList\",\"icon\":\"profile\",\"id\":200,\"text\":\"销售退货\",\"url\":\"/bill/sale_back\",\"textEn\":\"Sales Returns\"},{\"component\":\"/bill/RetailOutList\",\"icon\":\"profile\",\"id\":210,\"text\":\"零售出库\",\"url\":\"/bill/retail_out\",\"textEn\":\"Retail Shipments\"},{\"component\":\"/bill/RetailBackList\",\"icon\":\"profile\",\"id\":211,\"text\":\"零售退货\",\"url\":\"/bill/retail_back\",\"textEn\":\"Retail Returns\"}],\"icon\":\"shopping-cart\",\"id\":38,\"text\":\"销售管理\",\"url\":\"/billB\",\"textEn\":\"Sales Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/PurchaseApplyList\",\"icon\":\"profile\",\"id\":261,\"text\":\"请购单\",\"url\":\"/bill/purchase_apply\",\"textEn\":\"Purchase Requisitions\"},{\"component\":\"/bill/PurchaseOrderList\",\"icon\":\"profile\",\"id\":241,\"text\":\"采购订单\",\"url\":\"/bill/purchase_order\",\"textEn\":\"Purchase Orders\"},{\"component\":\"/bill/PurchaseInList\",\"icon\":\"profile\",\"id\":33,\"text\":\"采购入库\",\"url\":\"/bill/purchase_in\",\"textEn\":\"Purchase Receipts\"},{\"component\":\"/bill/PurchaseBackList\",\"icon\":\"profile\",\"id\":199,\"text\":\"采购退货\",\"url\":\"/bill/purchase_back\",\"textEn\":\"Purchase Returns\"}],\"icon\":\"retweet\",\"id\":32,\"text\":\"采购管理\",\"url\":\"/bill\",\"textEn\":\"Purchase Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/production/PackBomList\",\"icon\":\"profile\",\"id\":263,\"text\":\"生产方案\",\"url\":\"/production/pack_bom\",\"textEn\":\"Production BOMs\"},{\"component\":\"/production/OrderList\",\"icon\":\"profile\",\"id\":264,\"text\":\"生产工单\",\"url\":\"/production/order\",\"textEn\":\"Production Orders\"},{\"component\":\"/production/RequisitionList\",\"icon\":\"profile\",\"id\":265,\"text\":\"领料管理\",\"url\":\"/production/requisition\",\"textEn\":\"Material Requisitions\"},{\"component\":\"/production/ReportList\",\"icon\":\"profile\",\"id\":266,\"text\":\"完工报工\",\"url\":\"/production/report\",\"textEn\":\"Production Reports\"}],\"icon\":\"cluster\",\"id\":262,\"text\":\"生产管理\",\"url\":\"/production\",\"textEn\":\"Production Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/MaterialStock\",\"icon\":\"profile\",\"id\":246,\"text\":\"商品库存\",\"url\":\"/report/material_stock\",\"textEn\":\"Product Inventory\"},{\"component\":\"/bill/OtherInList\",\"icon\":\"profile\",\"id\":201,\"text\":\"其它入库\",\"url\":\"/bill/other_in\",\"textEn\":\"Other Receipts\"},{\"component\":\"/bill/OtherOutList\",\"icon\":\"profile\",\"id\":202,\"text\":\"其它出库\",\"url\":\"/bill/other_out\",\"textEn\":\"Other Shipments\"},{\"component\":\"/bill/HeadquartersInList\",\"icon\":\"profile\",\"id\":270,\"text\":\"总部入库\",\"url\":\"/bill/headquarters_in\",\"textEn\":\"Headquarters Receipts\"}],\"icon\":\"hdd\",\"id\":239,\"text\":\"仓库管理\",\"url\":\"/billD\",\"textEn\":\"Warehouse Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/financial/MoneyInList\",\"icon\":\"profile\",\"id\":204,\"text\":\"收款单\",\"url\":\"/financial/money_in\",\"textEn\":\"Receipt Vouchers\"},{\"component\":\"/financial/MoneyOutList\",\"icon\":\"profile\",\"id\":205,\"text\":\"付款单\",\"url\":\"/financial/money_out\",\"textEn\":\"Payment Vouchers\"}],\"icon\":\"money-collect\",\"id\":44,\"text\":\"财务管理\",\"url\":\"/financial\",\"textEn\":\"Finance Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/asset/AssetList\",\"icon\":\"profile\",\"id\":273,\"text\":\"资产台账\",\"url\":\"/asset/ledger\",\"textEn\":\"Asset Ledger\"},{\"component\":\"/asset/DeviceList\",\"icon\":\"tool\",\"id\":274,\"text\":\"设备台账\",\"url\":\"/asset/device\",\"textEn\":\"Device Ledger\"},{\"component\":\"/asset/InventoryList\",\"icon\":\"scan\",\"id\":275,\"text\":\"资产盘点\",\"url\":\"/asset/inventory\",\"textEn\":\"Asset Inventory\"}],\"icon\":\"bank\",\"id\":272,\"text\":\"资产管理\",\"url\":\"/assetManagement\",\"textEn\":\"Asset Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/material/MaterialCategoryList\",\"icon\":\"profile\",\"id\":22,\"text\":\"商品类别\",\"url\":\"/material/material_category\",\"textEn\":\"Product Categories\"},{\"component\":\"/material/MaterialList\",\"icon\":\"profile\",\"id\":23,\"text\":\"商品信息\",\"url\":\"/material/material\",\"textEn\":\"Product Information\"},{\"component\":\"/system/UnitList\",\"icon\":\"profile\",\"id\":220,\"text\":\"多单位\",\"url\":\"/system/unit\",\"textEn\":\"Multiple Units\"},{\"component\":\"/material/MaterialAttributeList\",\"icon\":\"profile\",\"id\":247,\"text\":\"多属性\",\"url\":\"/material/material_attribute\",\"textEn\":\"Product Attributes\"}],\"icon\":\"shopping\",\"id\":21,\"text\":\"商品管理\",\"url\":\"/material\",\"textEn\":\"Product Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/AccountReport\",\"icon\":\"profile\",\"id\":207,\"text\":\"账户统计\",\"url\":\"/report/account_report\",\"textEn\":\"Account Summary\"},{\"component\":\"/report/RetailOutReport\",\"icon\":\"profile\",\"id\":259,\"text\":\"零售统计\",\"url\":\"/report/retail_out_report\",\"textEn\":\"Retail Summary\"},{\"component\":\"/report/BuyInReport\",\"icon\":\"profile\",\"id\":208,\"text\":\"采购统计\",\"url\":\"/report/buy_in_report\",\"textEn\":\"Purchase Summary\"},{\"component\":\"/report/SaleOutReport\",\"icon\":\"profile\",\"id\":209,\"text\":\"销售统计\",\"url\":\"/report/sale_out_report\",\"textEn\":\"Sales Summary\"},{\"component\":\"/report/InDetail\",\"icon\":\"profile\",\"id\":226,\"text\":\"入库明细\",\"url\":\"/report/in_detail\",\"textEn\":\"Inbound Details\"},{\"component\":\"/report/OutDetail\",\"icon\":\"profile\",\"id\":227,\"text\":\"出库明细\",\"url\":\"/report/out_detail\",\"textEn\":\"Outbound Details\"},{\"component\":\"/report/InMaterialCount\",\"icon\":\"profile\",\"id\":228,\"text\":\"入库汇总\",\"url\":\"/report/in_material_count\",\"textEn\":\"Inbound Summary\"},{\"component\":\"/report/OutMaterialCount\",\"icon\":\"profile\",\"id\":229,\"text\":\"出库汇总\",\"url\":\"/report/out_material_count\",\"textEn\":\"Outbound Summary\"},{\"component\":\"/report/InOutStockReport\",\"icon\":\"profile\",\"id\":59,\"text\":\"进销存统计\",\"url\":\"/report/in_out_stock_report\",\"textEn\":\"Inventory Transaction Summary\"},{\"component\":\"/report/CustomerAccount\",\"icon\":\"profile\",\"id\":235,\"text\":\"客户对账\",\"url\":\"/report/customer_account\",\"textEn\":\"Customer Reconciliation\"},{\"component\":\"/report/VendorAccount\",\"icon\":\"profile\",\"id\":237,\"text\":\"供应商对账\",\"url\":\"/report/vendor_account\",\"textEn\":\"Supplier Reconciliation\"},{\"component\":\"/report/StockWarningReport\",\"icon\":\"profile\",\"id\":244,\"text\":\"库存预警\",\"url\":\"/report/stock_warning_report\",\"textEn\":\"Stock Alerts\"}],\"icon\":\"pie-chart\",\"id\":198,\"text\":\"报表查询\",\"url\":\"/report\",\"textEn\":\"Reports\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/VendorList\",\"icon\":\"profile\",\"id\":25,\"text\":\"供应商信息\",\"url\":\"/system/vendor\",\"textEn\":\"Suppliers\"},{\"component\":\"/system/CustomerList\",\"icon\":\"profile\",\"id\":217,\"text\":\"客户信息\",\"url\":\"/system/customer\",\"textEn\":\"Customers\"},{\"component\":\"/system/MemberList\",\"icon\":\"profile\",\"id\":218,\"text\":\"会员信息\",\"url\":\"/system/member\",\"textEn\":\"Members\"},{\"component\":\"/system/CustomerCategoryList\",\"icon\":\"bars\",\"id\":267,\"text\":\"客户分类\",\"url\":\"/system/customerCategory\",\"textEn\":\"Customer Categories\"},{\"component\":\"/system/DepotList\",\"icon\":\"profile\",\"id\":26,\"text\":\"仓库信息\",\"url\":\"/system/depot\",\"textEn\":\"Warehouses\"},{\"component\":\"/system/InOutItemList\",\"icon\":\"profile\",\"id\":194,\"text\":\"收支项目\",\"url\":\"/system/in_out_item\",\"textEn\":\"Income and Expense Items\"},{\"component\":\"/system/AccountList\",\"icon\":\"profile\",\"id\":195,\"text\":\"结算账户\",\"url\":\"/system/account\",\"textEn\":\"Settlement Accounts\"},{\"component\":\"/system/PersonList\",\"icon\":\"profile\",\"id\":31,\"text\":\"操作人员管理\",\"url\":\"/system/person\",\"textEn\":\"Operators\"}],\"icon\":\"appstore\",\"id\":24,\"text\":\"基础资料\",\"url\":\"/systemA\",\"textEn\":\"Master Data\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/RoleList\",\"icon\":\"profile\",\"id\":13,\"text\":\"角色管理\",\"url\":\"/system/role\",\"textEn\":\"Role Management\"},{\"component\":\"/system/UserList\",\"icon\":\"profile\",\"id\":14,\"text\":\"用户管理\",\"url\":\"/system/user\",\"textEn\":\"User Management\"},{\"component\":\"/system/OrganizationList\",\"icon\":\"profile\",\"id\":243,\"text\":\"部门管理\",\"url\":\"/system/organization\",\"textEn\":\"Department Management\"},{\"component\":\"/system/LogList\",\"icon\":\"profile\",\"id\":15,\"text\":\"日志管理\",\"url\":\"/system/log\",\"textEn\":\"Log Management\"},{\"component\":\"/material/MaterialPropertyList\",\"icon\":\"profile\",\"id\":236,\"text\":\"商品属性\",\"url\":\"/material/material_property\",\"textEn\":\"Product Properties\"},{\"component\":\"/system/SystemConfigList\",\"icon\":\"profile\",\"id\":234,\"text\":\"系统配置\",\"url\":\"/system/system_config\",\"textEn\":\"System Configuration\"},{\"component\":\"/system/FunctionList\",\"icon\":\"profile\",\"id\":16,\"text\":\"菜单管理\",\"url\":\"/system/function\",\"textEn\":\"Resource Menus\"},{\"component\":\"/system/PluginList\",\"icon\":\"profile\",\"id\":245,\"text\":\"插件管理\",\"url\":\"/system/plugin\",\"textEn\":\"Plugin Management\"},{\"component\":\"/system/DictList\",\"icon\":\"profile\",\"id\":260,\"text\":\"字典管理\",\"url\":\"/system/dict\",\"textEn\":\"Dictionary Management\"},{\"component\":\"/system/PlatformConfigList\",\"icon\":\"profile\",\"id\":258,\"text\":\"平台配置\",\"url\":\"/system/platform_config\",\"textEn\":\"Platform Configuration\"}],\"icon\":\"setting\",\"id\":1,\"text\":\"系统管理\",\"url\":\"/system\",\"textEn\":\"System Management\"}]'); +INSERT INTO `tbl_log` VALUES (8160, 63, '接口日志', '43.152.142.31/1.9.116.218', '2026-09-29 05:08:26', 0, 'UserController.getUserBtnByCurrentUser(..)', NULL, 'GET /apis/user/getUserBtnByCurrentUser', '{}', '{\"code\":200,\"data\":{\"userBtn\":[{\"btnStr\":\"8,1\",\"url\":\"/system/role\"},{\"btnStr\":\"1\",\"url\":\"/system/user\"},{\"btnStr\":\"1\",\"url\":\"/system/organization\"},{\"btnStr\":\"1\",\"url\":\"/material/material_property\"},{\"btnStr\":\"1\",\"url\":\"/system/system_config\"},{\"btnStr\":\"1\",\"url\":\"/system/function\"},{\"btnStr\":\"1\",\"url\":\"/system/plugin\"},{\"btnStr\":\"1\",\"url\":\"/material/material_category\"},{\"btnStr\":\"1,3\",\"url\":\"/material/material\"},{\"btnStr\":\"1\",\"url\":\"/system/unit\"},{\"btnStr\":\"1\",\"url\":\"/material/material_attribute\"},{\"btnStr\":\"1,3\",\"url\":\"/system/vendor\"},{\"btnStr\":\"1,3\",\"url\":\"/system/customer\"},{\"btnStr\":\"1,3\",\"url\":\"/system/member\"},{\"btnStr\":\"1\",\"url\":\"/system/depot\"},{\"btnStr\":\"1\",\"url\":\"/system/in_out_item\"},{\"btnStr\":\"1\",\"url\":\"/system/account\"},{\"btnStr\":\"1\",\"url\":\"/system/person\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_apply\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_out\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/delivery_plan\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/sale_shipment\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_out\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/order\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/requisition\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/report\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/giro\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/advance_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/allocation_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/assemble\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/headquarters_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/disassemble\"}]}}'); +INSERT INTO `tbl_log` VALUES (8161, 63, '接口日志', '43.152.142.109/1.9.116.218', '2026-09-29 05:08:27', 0, 'MsgController.getMsgByStatus(..)', NULL, 'GET /apis/msg/getMsgByStatus', '{\"status\":\"1\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (8162, 63, '接口日志', '43.152.142.32/1.9.116.218', '2026-09-29 05:08:27', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-04\",\"inbound\":100669.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (8163, 63, '接口日志', '43.152.142.140/1.9.116.218', '2026-09-29 05:08:27', 0, 'MsgController.getList(..)', NULL, 'GET /apis/msg/list', '{\"search\":\"{\\\"name\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (8164, 63, '接口日志', '43.152.142.132/1.9.116.218', '2026-09-29 05:08:49', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8165, 63, '接口日志', '43.152.142.118/1.9.116.218', '2026-09-29 05:08:49', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8166, 63, '接口日志', '43.152.142.108/1.9.116.218', '2026-09-29 05:08:49', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (8167, 63, '接口日志', '43.174.32.13/1.9.116.218', '2026-09-29 05:08:49', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"}]'); +INSERT INTO `tbl_log` VALUES (8168, 63, '接口日志', '43.174.52.31/1.9.116.218', '2026-09-29 05:08:49', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (8169, 63, '接口日志', '43.152.142.57/1.9.116.218', '2026-09-29 05:08:49', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (8170, 63, '接口日志', '43.152.142.78/1.9.116.218', '2026-09-29 05:08:49', 0, 'PersonController.getPersonByNumType(..)', NULL, 'GET /apis/person/getPersonByNumType', '{\"typeNum\":\"1\"}', '[]'); +INSERT INTO `tbl_log` VALUES (8171, 63, '接口日志', '43.152.142.142/1.9.116.218', '2026-09-29 05:08:49', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"其它\\\",\\\"subType\\\":\\\"销售订单\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-29\\\",\\\"endTime\\\":\\\"2026-09-29\\\",\\\"createTimeRange\\\":[\\\"2026-06-28T16:00:00.000Z\\\",\\\"2026-09-28T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":6,\"rows\":[{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789718483000,\"creator\":63,\"debt\":808500.000000,\"defaultNumber\":\"XSDD00000001726\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":808500.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1719,\"lastDebt\":808500.000000,\"lastDeposit\":0.000000,\"materialCount\":10000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD00000001726\",\"operTime\":1789732682000,\"operTimeStr\":\"2026-09-18 15:58:02\",\"organId\":90,\"organName\":\"TNB\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"totalPrice\":735000.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789726236000,\"creator\":63,\"debt\":340000000.000000,\"defaultNumber\":\"XSDD00000001724\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":340000000.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1718,\"lastDebt\":340000000.000000,\"lastDeposit\":0.000000,\"materialCount\":1000000.000000,\"materialsList\":\"3PH APEC3-WC 3PH APEC3-WC 3PH APEC3-WC \",\"number\":\"XSDD00000001724\",\"operTime\":1789725706000,\"operTimeStr\":\"2026-09-18 14:01:46\",\"organId\":90,\"organName\":\"TNB\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"0\",\"subType\":\"销售订单\",\"totalPrice\":340000000.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1785355200000,\"creator\":63,\"debt\":242550.000000,\"defaultNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":242550.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1580,\"lastDebt\":242550.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":3000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303475-1PH-WS79-ADD1\",\"operTime\":1785355200000,\"operTimeStr\":\"2026-07-30 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303475\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":242550.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1785355200000,\"creator\":63,\"debt\":323400.000000,\"defaultNumber\":\"XSDD-42303447-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":323400.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1574,\"lastDebt\":323400.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":4000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303447-1PH-WS79-ADD1\",\"operTime\":1785355200000,\"operTimeStr\":\"2026-07-30 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303447\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":323400.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1782936000000,\"creator\":63,\"debt\":323400.000000,\"defaultNumber\":\"XSDD-42303429-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":323400.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1569,\"lastDebt\":323400.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":4000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303429-1PH-WS79-ADD1\",\"operTime\":1782936000000,\"operTimeStr\":\"2026-07-02 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303429\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":323400.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1782676800000,\"creator\":63,\"debt\":323400.000000,\"defaultNumber\":\"XSDD-42303412-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":323400.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1565,\"lastDebt\":323400.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":4000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303412-1PH-WS79-ADD1\",\"operTime\":1782676800000,\"operTimeStr\":\"2026-06-29 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303412\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":323400.000000,\"type\":\"其它\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (8172, 63, '接口日志', '43.152.142.132/1.9.116.218', '2026-09-29 05:08:49', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8173, 63, '接口日志', '43.152.142.110/1.9.116.218', '2026-09-29 05:08:51', 0, 'DepotHeadController.getDetailByNumber(..)', NULL, 'GET /apis/depotHead/getDetailByNumber', '{\"number\":\"XSDD00000001726\"}', '{\"code\":200,\"data\":{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"accountNumber\":\"\",\"address\":\"\",\"backAmount\":0,\"bankName\":\"\",\"changeAmount\":0.000000,\"contacts\":\"\",\"createTime\":1789718483000,\"creator\":63,\"creatorName\":\"admin\",\"debt\":808500.000000,\"defaultNumber\":\"XSDD00000001726\",\"deleteFlag\":\"0\",\"deposit\":0,\"depotHeadType\":\"销售订单其它\",\"discount\":0.000000,\"discountLastMoney\":808500.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"hasBackFlag\":false,\"id\":1719,\"lastDeposit\":0.000000,\"materialCount\":10000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD00000001726\",\"operTime\":1789732682000,\"operTimeStr\":\"2026-09-18 15:58:02\",\"organId\":90,\"organName\":\"TNB\",\"payType\":\"现付\",\"phoneNum\":\"\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"taxNum\":\"\",\"telephone\":\"\",\"totalPrice\":735000.000000,\"type\":\"其它\"}}'); +INSERT INTO `tbl_log` VALUES (8174, 63, '接口日志', '43.152.142.132/1.9.116.218', '2026-09-29 05:08:52', 0, 'DepotHeadController.getBillListByLinkNumber(..)', NULL, 'GET /apis/depotHead/getBillListByLinkNumber', '{\"number\":\"XSDD00000001726\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (8175, 63, '接口日志', '43.174.53.48/1.9.116.218', '2026-09-29 05:08:52', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8176, 63, '接口日志', '43.152.142.62/1.9.116.218', '2026-09-29 05:08:52', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_print_flag\"}', '{\"code\":200,\"data\":{\"id\":4,\"platformKey\":\"bill_print_flag\",\"platformKeyInfo\":\"三联打印启用标记\",\"platformValue\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8177, 63, '接口日志', '43.174.32.33/1.9.116.218', '2026-09-29 05:08:52', 0, 'DepotItemController.getDetailList(..)', NULL, 'GET /apis/depotItem/getDetailList', '{\"headerId\":1719,\"mpList\":\"扩展1,扩展2,扩展3\",\"linkType\":\"basic\",\"isReadOnly\":\"1\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"standard\":\"1PH WS79\",\"materialExtendId\":123,\"finishPurchaseNumber\":0,\"anotherDepotName\":\"\",\"color\":\"\",\"preNumber\":10000.000000,\"depotId\":\"\",\"purchaseDecimal\":59.500000,\"imgName\":\"\",\"operNumber\":10000.000000,\"anotherDepotId\":\"\",\"basicNumber\":10000.000000,\"taxLastMoney\":808500.000000,\"model\":\"1PH WS79\",\"id\":1524,\"enableSerialNumber\":\"0\",\"stock\":52400.000000,\"brand\":\"\",\"finishNumber\":0,\"expirationDate\":\"\",\"enableBatchNumber\":\"0\",\"unitPrice\":73.500000,\"op\":1,\"otherField1\":\"\",\"depotName\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"weight\":0,\"otherField3\":\"\",\"otherField2\":\"\",\"taxMoney\":73500.000000,\"imgSmall\":\"\",\"barCode\":\"1PH-WS79\",\"taxRate\":10.000000,\"unit\":\"件\",\"allPrice\":735000.000000,\"name\":\"1PH WS79\",\"imgLarge\":\"\",\"position\":\"\"},{\"allPrice\":735000.000000,\"finishPurchaseNumber\":0,\"operNumber\":10000.000000,\"taxLastMoney\":808500.000000,\"weight\":0,\"taxMoney\":73500.000000,\"finishNumber\":0}]}}'); +INSERT INTO `tbl_log` VALUES (8178, 63, '接口日志', '43.152.142.108/1.9.116.218', '2026-09-29 05:08:52', 0, 'AccountHeadController.getFinancialBillNoByBillId(..)', NULL, 'GET /apis/accountHead/getFinancialBillNoByBillId', '{\"billId\":1719}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (8179, 63, '接口日志', '43.174.53.16/1.9.116.218', '2026-09-29 05:09:00', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"其它\\\",\\\"subType\\\":\\\"销售订单\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-29\\\",\\\"endTime\\\":\\\"2026-09-29\\\",\\\"createTimeRange\\\":[\\\"2026-06-28T16:00:00.000Z\\\",\\\"2026-09-28T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":6,\"rows\":[{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789718483000,\"creator\":63,\"debt\":808500.000000,\"defaultNumber\":\"XSDD00000001726\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":808500.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1719,\"lastDebt\":808500.000000,\"lastDeposit\":0.000000,\"materialCount\":10000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD00000001726\",\"operTime\":1789732682000,\"operTimeStr\":\"2026-09-18 15:58:02\",\"organId\":90,\"organName\":\"TNB\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"totalPrice\":735000.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789726236000,\"creator\":63,\"debt\":340000000.000000,\"defaultNumber\":\"XSDD00000001724\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":340000000.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1718,\"lastDebt\":340000000.000000,\"lastDeposit\":0.000000,\"materialCount\":1000000.000000,\"materialsList\":\"3PH APEC3-WC 3PH APEC3-WC 3PH APEC3-WC \",\"number\":\"XSDD00000001724\",\"operTime\":1789725706000,\"operTimeStr\":\"2026-09-18 14:01:46\",\"organId\":90,\"organName\":\"TNB\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"0\",\"subType\":\"销售订单\",\"totalPrice\":340000000.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1785355200000,\"creator\":63,\"debt\":242550.000000,\"defaultNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":242550.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1580,\"lastDebt\":242550.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":3000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303475-1PH-WS79-ADD1\",\"operTime\":1785355200000,\"operTimeStr\":\"2026-07-30 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303475\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":242550.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1785355200000,\"creator\":63,\"debt\":323400.000000,\"defaultNumber\":\"XSDD-42303447-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":323400.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1574,\"lastDebt\":323400.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":4000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303447-1PH-WS79-ADD1\",\"operTime\":1785355200000,\"operTimeStr\":\"2026-07-30 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303447\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":323400.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1782936000000,\"creator\":63,\"debt\":323400.000000,\"defaultNumber\":\"XSDD-42303429-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":323400.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1569,\"lastDebt\":323400.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":4000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303429-1PH-WS79-ADD1\",\"operTime\":1782936000000,\"operTimeStr\":\"2026-07-02 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303429\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":323400.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1782676800000,\"creator\":63,\"debt\":323400.000000,\"defaultNumber\":\"XSDD-42303412-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":323400.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1565,\"lastDebt\":323400.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":4000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303412-1PH-WS79-ADD1\",\"operTime\":1782676800000,\"operTimeStr\":\"2026-06-29 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303412\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":323400.000000,\"type\":\"其它\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (8180, 63, '接口日志', '43.174.54.50/1.9.116.218', '2026-09-29 05:09:13', 0, 'RoleController.getList(..)', NULL, 'GET /apis/role/list', '{\"search\":\"{\\\"name\\\":\\\"\\\",\\\"description\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":7,\"rows\":[{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":24,\"name\":\"system admin\",\"type\":\"全部数据\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":23,\"name\":\"system admin\",\"type\":\"全部数据\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":21,\"name\":\"admin\",\"tenantId\":63,\"type\":\"全部数据\"},{\"deleteFlag\":\"0\",\"description\":\"rrr\",\"enabled\":true,\"id\":17,\"name\":\"销售代表\",\"tenantId\":63,\"type\":\"个人数据\"},{\"deleteFlag\":\"0\",\"description\":\"ddd\",\"enabled\":true,\"id\":16,\"name\":\"销售经理\",\"tenantId\":63,\"type\":\"全部数据\"},{\"deleteFlag\":\"0\",\"description\":\"\",\"enabled\":true,\"id\":10,\"name\":\"租户\",\"type\":\"全部数据\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":4,\"name\":\"管理员\",\"type\":\"全部数据\"}]}}'); +INSERT INTO `tbl_log` VALUES (8181, 63, '接口日志', '43.152.142.62/1.9.116.218', '2026-09-29 05:09:22', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8182, 63, '接口日志', '43.152.142.45/1.9.116.218', '2026-09-29 05:09:22', 0, 'UserController.getList(..)', NULL, 'GET /apis/user/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"description\":\"\",\"email\":\"666666@qq.com\",\"id\":63,\"isystem\":1,\"leaderFlag\":\"0\",\"leaderFlagStr\":\"否\",\"loginName\":\"admin\",\"orgAbr\":\"测试部门\",\"orgaId\":12,\"orgaUserRelId\":11,\"password\":\"******\",\"phonenum\":\"1123123123132\",\"position\":\"主管\",\"roleId\":21,\"roleName\":\"admin\",\"status\":0,\"tenantId\":63,\"userBlngOrgaDsplSeq\":\"15\",\"userType\":\"系统管理员\",\"username\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (8183, 63, '接口日志', '43.152.142.40/1.9.116.218', '2026-09-29 05:09:24', 0, 'OrganizationController.getOrganizationTree(..)', NULL, 'GET /apis/organization/getOrganizationTree', '{}', '[{\"children\":[{\"children\":[{\"children\":[],\"checked\":false,\"attributes\":\"12\",\"id\":14,\"state\":\"open\",\"title\":\"部门2\",\"value\":14,\"key\":14}],\"checked\":false,\"attributes\":\"jg1\",\"id\":13,\"state\":\"open\",\"title\":\"部门1\",\"value\":13,\"key\":13}],\"checked\":false,\"attributes\":\"001\",\"id\":12,\"state\":\"open\",\"title\":\"测试部门\",\"value\":12,\"key\":12}]'); +INSERT INTO `tbl_log` VALUES (8184, 63, '接口日志', '43.152.142.108/1.9.116.218', '2026-09-29 05:09:27', 0, 'MaterialPropertyController.getList(..)', NULL, 'GET /apis/materialProperty/list', '{\"search\":\"{\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":3,\"rows\":[{\"anotherName\":\"扩展1\",\"id\":1,\"nativeName\":\"扩展1\"},{\"anotherName\":\"扩展2\",\"id\":2,\"nativeName\":\"扩展2\"},{\"anotherName\":\"扩展3\",\"id\":3,\"nativeName\":\"扩展3\"}]}}'); +INSERT INTO `tbl_log` VALUES (8185, 63, '接口日志', '43.152.142.142/1.9.116.218', '2026-09-29 05:09:28', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-04\",\"inbound\":100669.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (8186, 63, '接口日志', '43.152.142.140/1.9.116.218', '2026-09-29 05:09:33', 0, 'MsgController.getList(..)', NULL, 'GET /apis/msg/list', '{\"search\":\"{\\\"name\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (8187, 63, '接口日志', '43.174.53.19/1.9.116.218', '2026-09-29 05:09:35', 0, 'MsgController.getMsgByStatus(..)', NULL, 'GET /apis/msg/getMsgByStatus', '{\"status\":\"1\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (8188, NULL, '接口日志', '43.152.142.83/1.9.116.218', '2026-09-29 05:09:45', 0, 'UserController.logout(..)', NULL, 'GET /apis/user/logout', '{}', '{\"code\":400}'); +INSERT INTO `tbl_log` VALUES (8189, NULL, '接口日志', '43.174.32.19/1.9.116.218', '2026-09-29 05:09:45', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (8190, NULL, '接口日志', '43.152.142.33/1.9.116.218', '2026-09-29 05:09:45', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (8191, NULL, '接口日志', '43.152.142.68/1.9.116.218', '2026-09-29 05:09:47', 0, 'PlatformConfigController.getPlatformCheckcodeFlag(..)', NULL, 'GET /apis/platformConfig/getPlatform/checkcodeFlag', '{}', '\"1\"'); +INSERT INTO `tbl_log` VALUES (8192, NULL, '接口日志', '43.152.142.132/1.9.116.218', '2026-09-29 05:09:47', 0, 'UserController.randomImage(..)', NULL, 'GET /apis/user/randomImage', '{}', '{\"code\":200,\"data\":{\"base64\":\"data:image/jpg;base64,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\",\"uuid\":\"27516665f6c34b9e9d5cb95cedcf19ca\"}}'); +INSERT INTO `tbl_log` VALUES (8193, NULL, '接口日志', '43.152.142.118/1.9.116.218', '2026-09-29 05:26:48', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (8194, NULL, '接口日志', '43.152.142.110/1.9.116.218', '2026-09-29 05:26:48', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (8195, NULL, '接口日志', '43.152.142.45/1.9.116.218', '2026-09-29 05:26:49', 0, 'PlatformConfigController.getPlatformCheckcodeFlag(..)', NULL, 'GET /apis/platformConfig/getPlatform/checkcodeFlag', '{}', '\"1\"'); +INSERT INTO `tbl_log` VALUES (8196, NULL, '接口日志', '43.152.142.83/1.9.116.218', '2026-09-29 05:26:49', 0, 'UserController.randomImage(..)', NULL, 'GET /apis/user/randomImage', '{}', '{\"code\":200,\"data\":{\"base64\":\"data:image/jpg;base64,/9j/4AAQSkZJRgABAgAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAAjAGkDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3e4f7HaTz72KpmUgjdhRyQOR74yeM+nFTbwUZk+fGRhSOSO31zxSSRJLt3jJRgynOCD/nj6Eivn8uW/a4LQ7HIJHLYGRY4PIB96APfXLy+WqKfLcEuxypAx0HQg5I/I9DioBC9sPND7URmLCWdnBQ4yct0IxnuOo75FxgWUgMVJGAw6j35qk0f7q2Q2zhXctLGGBUFgdwb1GWJ9OPoCAXWYKVBz8xwMAntnn06VAiyxTQxmQGER7Mu2Xd+MdvQE9e/SvOPFPxo8LeFvE7ac32y7lg3Ld/YokZA5wNpJdcuu0A8HGSM5BAt6H8X/DXiXxYnhrT2vbqW6LiG6jt/Ki2iMuRlnD5ABGdo56cc0Ad3ePLHGjRZHz/ADEIXwMHqo5POOmPXoDUzpvaNtzDY27APDcEYPtzn6gVHCpktx5qzKzJtYO4DcZ5+U4BPXI/pXif7Plto6f8JG2j397cSYtg7XdikGz/AFuANsr7gcc9Og/AA9n8i8S63JcgwF92xhyo7juTznHIxnuMClkuDbySoEMsu0zFVbkrnGAuSc4HoAT6ZpWliW/Je4kQpCx8thiPGQS2cckcDrxn60Mz2zCKC1Z1O5yQ2OScnr35PpyR2yVLiHB3lKKyNFMvzkYLLjODyMA5GcZ56EjjFK86sfKjbc7cfu2Xcgzgtg+h+v0r5i+Juv33j7+05NGlb/hFvC6RI5klXFxK8nlLKFUck5OM8BVJ+UvtPr3wVYr8ItD8iNHYtcCT5tuD5shBP/jo+hoGd8qThkaQlyW5CthVAB5A6nPHBJwT7VYoooApzCH7QVkh82UgSRF0BAIOAAQCRgtnJ6biR3x4JHaov7WTWz/PG24HtkNYng9889ep6173NBcSPJIPs/mRnNsWVjt+XB3c98kcdODzWNH4J8O/8JiPFcWmR/2oy7heLcSckps+5nZgoev49eaANWSOa2tbiVrjHltJMrsWPHUAjsoGRgA9iMGrqqFkfCEbsMWzwTjH8gKjuVSRBDNF5kMnysME89uAOB154xgU9oUe3aBgTGybDljkjGOvX8aAPnD4N6hp2i+J/FVn4s1OHT9YZ1V7q7mjDFkkfzl818jJco3BySuc8ZpvhzULHVP2oYr3T/sxt5ZJSWtf9W0gtGEjA4AOXDEkZBJJBOcnc+I1pBJ43vUvPhXe+ICqQ+RqFlcXEZki2LxJ5asGYMHXccHaFHYGovh74J124+Ip8cXmgR+GtMhSQ2tgkBLZKGFV8sYcYHzMxA3HkDDZAB7pJCfnit3hTdlpEkQuDn23DAOD9Tn3rwn9mX/maf8At0/9rV6b458Ra74d0O2vdI0K51XVC5ha3ghaRFDI37w7VJKhlU7QVJBGSK474BeDtZ8OaXqOpapBNZ/2g6oLS4i2SAR52uQeRku4wQPug8hhQB7BKkLfNKqHI2ZcDoxAx+PHHfiuS+JN3rcPgbXE8P8A2htVEUPkCzjZpgryBW2gA87Q53DkdeMAnrPOw8qBdzoocIp5IOcdcDOQR17Uxlaa2zJI4Qqrfu1ZHyOT7jPAx160AfLl5quq6H8H77wq3gDWdPt53jmu9UuzJtMvmRksVMQCg7FUDPHHJOSfRPgR4g1G90Cy8P3Hhy4i0y0t5Z4NVdWMU0nnklVyu3PzkcMT8h/D1bWdC03xDos2karbm5sZgokiMjKW2sGHzAhuqg9ap6d4csPDNhBb6HaJBb20TxrGWklYKXMhAy3JLE9T368YIBtxM7RI0ibHKgsmc7T6Z706oCpjURLLJvdmZXZS4HOcHsB27cdKnoAa0aNIjkfMmcH69R9Pb2HpTqKKAGRRJBCkUY2oihVGc4A4FPoooAKKKKACiiigBskUc0ZjlRXQ9VYZB/CnUUUAFNaNGdXZFLpnaxHIz1xRRQAu1Q5cKNxABOOSB0/mfzpaKKAP/9k=\",\"uuid\":\"53a1d1f996b84a1aa37232cbe35147f1\"}}'); +INSERT INTO `tbl_log` VALUES (8197, NULL, '接口日志', '43.152.157.98/1.9.116.218', '2026-09-29 05:27:08', 1, 'UserController.login(..)', NULL, 'POST /apis/user/login', '{\"userParam\":{\"code\":\"Igj4\",\"loginName\":\"admin\",\"password\":\"******\",\"uuid\":\"53a1d1f996b84a1aa37232cbe35147f1\"}}', 'com.reallin.smt.exception.BusinessRunTimeException: 验证码错误'); +INSERT INTO `tbl_log` VALUES (8198, NULL, '接口日志', '43.152.142.140/1.9.116.218', '2026-09-29 05:27:08', 0, 'UserController.randomImage(..)', NULL, 'GET /apis/user/randomImage', '{}', '{\"code\":200,\"data\":{\"base64\":\"data:image/jpg;base64,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\",\"uuid\":\"8cb33cc92bda47bdac708b5c3252d8b4\"}}'); +INSERT INTO `tbl_log` VALUES (8199, 63, '用户', '43.152.157.98/1.9.116.218', '2026-09-29 05:27:15', 0, '登录admin', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (8200, NULL, '接口日志', '43.152.157.98/1.9.116.218', '2026-09-29 05:27:15', 0, 'UserController.login(..)', NULL, 'POST /apis/user/login', '{\"userParam\":{\"code\":\"4f5s\",\"loginName\":\"admin\",\"password\":\"******\",\"uuid\":\"8cb33cc92bda47bdac708b5c3252d8b4\"}}', '{\"code\":200,\"data\":{\"pwdSimple\":\"******\",\"user\":{\"deleteFlag\":\"0\",\"description\":\"\",\"email\":\"666666@qq.com\",\"id\":63,\"ismanager\":1,\"isystem\":1,\"leaderFlag\":\"0\",\"loginName\":\"admin\",\"password\":\"******\",\"phonenum\":\"1123123123132\",\"position\":\"主管\",\"status\":0,\"tenantId\":63,\"username\":\"admin\"},\"msgTip\":\"user can login\",\"token\":\"******\"}}'); +INSERT INTO `tbl_log` VALUES (8201, 63, '接口日志', '43.152.157.98/1.9.116.218', '2026-09-29 05:27:15', 0, 'FunctionController.findMenuByPNumber(..)', NULL, 'POST /apis/function/findMenuByPNumber', '{\"jsonObject\":{\"userId\":63,\"pNumber\":0}}', '[{\"component\":\"/layouts/TabLayout\",\"icon\":\"home\",\"id\":0,\"text\":\"首页\",\"url\":\"/dashboard/analysis\",\"textEn\":\"Home\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/SaleOrderList\",\"icon\":\"profile\",\"id\":242,\"text\":\"销售订单\",\"url\":\"/bill/sale_order\",\"textEn\":\"Sales Orders\"},{\"component\":\"/bill/SaleOutList\",\"icon\":\"profile\",\"id\":41,\"text\":\"销售出库\",\"url\":\"/bill/sale_out\",\"textEn\":\"Sales Shipments\"},{\"component\":\"/bill/DeliveryPlanList\",\"icon\":\"profile\",\"id\":271,\"text\":\"交货计划管理\",\"url\":\"/bill/delivery_plan\",\"textEn\":\"Delivery Plans\"},{\"component\":\"/bill/SaleShipmentList\",\"icon\":\"car\",\"id\":268,\"text\":\"发货管理\",\"url\":\"/bill/sale_shipment\",\"textEn\":\"Shipment Management\"},{\"component\":\"/bill/SaleBackList\",\"icon\":\"profile\",\"id\":200,\"text\":\"销售退货\",\"url\":\"/bill/sale_back\",\"textEn\":\"Sales Returns\"},{\"component\":\"/bill/RetailOutList\",\"icon\":\"profile\",\"id\":210,\"text\":\"零售出库\",\"url\":\"/bill/retail_out\",\"textEn\":\"Retail Shipments\"},{\"component\":\"/bill/RetailBackList\",\"icon\":\"profile\",\"id\":211,\"text\":\"零售退货\",\"url\":\"/bill/retail_back\",\"textEn\":\"Retail Returns\"}],\"icon\":\"shopping-cart\",\"id\":38,\"text\":\"销售管理\",\"url\":\"/billB\",\"textEn\":\"Sales Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/PurchaseApplyList\",\"icon\":\"profile\",\"id\":261,\"text\":\"请购单\",\"url\":\"/bill/purchase_apply\",\"textEn\":\"Purchase Requisitions\"},{\"component\":\"/bill/PurchaseOrderList\",\"icon\":\"profile\",\"id\":241,\"text\":\"采购订单\",\"url\":\"/bill/purchase_order\",\"textEn\":\"Purchase Orders\"},{\"component\":\"/bill/PurchaseInList\",\"icon\":\"profile\",\"id\":33,\"text\":\"采购入库\",\"url\":\"/bill/purchase_in\",\"textEn\":\"Purchase Receipts\"},{\"component\":\"/bill/PurchaseBackList\",\"icon\":\"profile\",\"id\":199,\"text\":\"采购退货\",\"url\":\"/bill/purchase_back\",\"textEn\":\"Purchase Returns\"}],\"icon\":\"retweet\",\"id\":32,\"text\":\"采购管理\",\"url\":\"/bill\",\"textEn\":\"Purchase Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/production/PackBomList\",\"icon\":\"profile\",\"id\":263,\"text\":\"生产方案\",\"url\":\"/production/pack_bom\",\"textEn\":\"Production BOMs\"},{\"component\":\"/production/OrderList\",\"icon\":\"profile\",\"id\":264,\"text\":\"生产工单\",\"url\":\"/production/order\",\"textEn\":\"Production Orders\"},{\"component\":\"/production/RequisitionList\",\"icon\":\"profile\",\"id\":265,\"text\":\"领料管理\",\"url\":\"/production/requisition\",\"textEn\":\"Material Requisitions\"},{\"component\":\"/production/ReportList\",\"icon\":\"profile\",\"id\":266,\"text\":\"完工报工\",\"url\":\"/production/report\",\"textEn\":\"Production Reports\"}],\"icon\":\"cluster\",\"id\":262,\"text\":\"生产管理\",\"url\":\"/production\",\"textEn\":\"Production Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/MaterialStock\",\"icon\":\"profile\",\"id\":246,\"text\":\"商品库存\",\"url\":\"/report/material_stock\",\"textEn\":\"Product Inventory\"},{\"component\":\"/bill/OtherInList\",\"icon\":\"profile\",\"id\":201,\"text\":\"其它入库\",\"url\":\"/bill/other_in\",\"textEn\":\"Other Receipts\"},{\"component\":\"/bill/OtherOutList\",\"icon\":\"profile\",\"id\":202,\"text\":\"其它出库\",\"url\":\"/bill/other_out\",\"textEn\":\"Other Shipments\"},{\"component\":\"/bill/HeadquartersInList\",\"icon\":\"profile\",\"id\":270,\"text\":\"总部入库\",\"url\":\"/bill/headquarters_in\",\"textEn\":\"Headquarters Receipts\"}],\"icon\":\"hdd\",\"id\":239,\"text\":\"仓库管理\",\"url\":\"/billD\",\"textEn\":\"Warehouse Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/financial/MoneyInList\",\"icon\":\"profile\",\"id\":204,\"text\":\"收款单\",\"url\":\"/financial/money_in\",\"textEn\":\"Receipt Vouchers\"},{\"component\":\"/financial/MoneyOutList\",\"icon\":\"profile\",\"id\":205,\"text\":\"付款单\",\"url\":\"/financial/money_out\",\"textEn\":\"Payment Vouchers\"}],\"icon\":\"money-collect\",\"id\":44,\"text\":\"财务管理\",\"url\":\"/financial\",\"textEn\":\"Finance Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/asset/AssetList\",\"icon\":\"profile\",\"id\":273,\"text\":\"资产台账\",\"url\":\"/asset/ledger\",\"textEn\":\"Asset Ledger\"},{\"component\":\"/asset/DeviceList\",\"icon\":\"tool\",\"id\":274,\"text\":\"设备台账\",\"url\":\"/asset/device\",\"textEn\":\"Device Ledger\"},{\"component\":\"/asset/InventoryList\",\"icon\":\"scan\",\"id\":275,\"text\":\"资产盘点\",\"url\":\"/asset/inventory\",\"textEn\":\"Asset Inventory\"}],\"icon\":\"bank\",\"id\":272,\"text\":\"资产管理\",\"url\":\"/assetManagement\",\"textEn\":\"Asset Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/material/MaterialCategoryList\",\"icon\":\"profile\",\"id\":22,\"text\":\"商品类别\",\"url\":\"/material/material_category\",\"textEn\":\"Product Categories\"},{\"component\":\"/material/MaterialList\",\"icon\":\"profile\",\"id\":23,\"text\":\"商品信息\",\"url\":\"/material/material\",\"textEn\":\"Product Information\"},{\"component\":\"/system/UnitList\",\"icon\":\"profile\",\"id\":220,\"text\":\"多单位\",\"url\":\"/system/unit\",\"textEn\":\"Multiple Units\"},{\"component\":\"/material/MaterialAttributeList\",\"icon\":\"profile\",\"id\":247,\"text\":\"多属性\",\"url\":\"/material/material_attribute\",\"textEn\":\"Product Attributes\"}],\"icon\":\"shopping\",\"id\":21,\"text\":\"商品管理\",\"url\":\"/material\",\"textEn\":\"Product Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/AccountReport\",\"icon\":\"profile\",\"id\":207,\"text\":\"账户统计\",\"url\":\"/report/account_report\",\"textEn\":\"Account Summary\"},{\"component\":\"/report/RetailOutReport\",\"icon\":\"profile\",\"id\":259,\"text\":\"零售统计\",\"url\":\"/report/retail_out_report\",\"textEn\":\"Retail Summary\"},{\"component\":\"/report/BuyInReport\",\"icon\":\"profile\",\"id\":208,\"text\":\"采购统计\",\"url\":\"/report/buy_in_report\",\"textEn\":\"Purchase Summary\"},{\"component\":\"/report/SaleOutReport\",\"icon\":\"profile\",\"id\":209,\"text\":\"销售统计\",\"url\":\"/report/sale_out_report\",\"textEn\":\"Sales Summary\"},{\"component\":\"/report/InDetail\",\"icon\":\"profile\",\"id\":226,\"text\":\"入库明细\",\"url\":\"/report/in_detail\",\"textEn\":\"Inbound Details\"},{\"component\":\"/report/OutDetail\",\"icon\":\"profile\",\"id\":227,\"text\":\"出库明细\",\"url\":\"/report/out_detail\",\"textEn\":\"Outbound Details\"},{\"component\":\"/report/InMaterialCount\",\"icon\":\"profile\",\"id\":228,\"text\":\"入库汇总\",\"url\":\"/report/in_material_count\",\"textEn\":\"Inbound Summary\"},{\"component\":\"/report/OutMaterialCount\",\"icon\":\"profile\",\"id\":229,\"text\":\"出库汇总\",\"url\":\"/report/out_material_count\",\"textEn\":\"Outbound Summary\"},{\"component\":\"/report/InOutStockReport\",\"icon\":\"profile\",\"id\":59,\"text\":\"进销存统计\",\"url\":\"/report/in_out_stock_report\",\"textEn\":\"Inventory Transaction Summary\"},{\"component\":\"/report/CustomerAccount\",\"icon\":\"profile\",\"id\":235,\"text\":\"客户对账\",\"url\":\"/report/customer_account\",\"textEn\":\"Customer Reconciliation\"},{\"component\":\"/report/VendorAccount\",\"icon\":\"profile\",\"id\":237,\"text\":\"供应商对账\",\"url\":\"/report/vendor_account\",\"textEn\":\"Supplier Reconciliation\"},{\"component\":\"/report/StockWarningReport\",\"icon\":\"profile\",\"id\":244,\"text\":\"库存预警\",\"url\":\"/report/stock_warning_report\",\"textEn\":\"Stock Alerts\"}],\"icon\":\"pie-chart\",\"id\":198,\"text\":\"报表查询\",\"url\":\"/report\",\"textEn\":\"Reports\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/VendorList\",\"icon\":\"profile\",\"id\":25,\"text\":\"供应商信息\",\"url\":\"/system/vendor\",\"textEn\":\"Suppliers\"},{\"component\":\"/system/CustomerList\",\"icon\":\"profile\",\"id\":217,\"text\":\"客户信息\",\"url\":\"/system/customer\",\"textEn\":\"Customers\"},{\"component\":\"/system/MemberList\",\"icon\":\"profile\",\"id\":218,\"text\":\"会员信息\",\"url\":\"/system/member\",\"textEn\":\"Members\"},{\"component\":\"/system/CustomerCategoryList\",\"icon\":\"bars\",\"id\":267,\"text\":\"客户分类\",\"url\":\"/system/customerCategory\",\"textEn\":\"Customer Categories\"},{\"component\":\"/system/DepotList\",\"icon\":\"profile\",\"id\":26,\"text\":\"仓库信息\",\"url\":\"/system/depot\",\"textEn\":\"Warehouses\"},{\"component\":\"/system/InOutItemList\",\"icon\":\"profile\",\"id\":194,\"text\":\"收支项目\",\"url\":\"/system/in_out_item\",\"textEn\":\"Income and Expense Items\"},{\"component\":\"/system/AccountList\",\"icon\":\"profile\",\"id\":195,\"text\":\"结算账户\",\"url\":\"/system/account\",\"textEn\":\"Settlement Accounts\"},{\"component\":\"/system/PersonList\",\"icon\":\"profile\",\"id\":31,\"text\":\"操作人员管理\",\"url\":\"/system/person\",\"textEn\":\"Operators\"}],\"icon\":\"appstore\",\"id\":24,\"text\":\"基础资料\",\"url\":\"/systemA\",\"textEn\":\"Master Data\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/RoleList\",\"icon\":\"profile\",\"id\":13,\"text\":\"角色管理\",\"url\":\"/system/role\",\"textEn\":\"Role Management\"},{\"component\":\"/system/UserList\",\"icon\":\"profile\",\"id\":14,\"text\":\"用户管理\",\"url\":\"/system/user\",\"textEn\":\"User Management\"},{\"component\":\"/system/OrganizationList\",\"icon\":\"profile\",\"id\":243,\"text\":\"部门管理\",\"url\":\"/system/organization\",\"textEn\":\"Department Management\"},{\"component\":\"/system/LogList\",\"icon\":\"profile\",\"id\":15,\"text\":\"日志管理\",\"url\":\"/system/log\",\"textEn\":\"Log Management\"},{\"component\":\"/material/MaterialPropertyList\",\"icon\":\"profile\",\"id\":236,\"text\":\"商品属性\",\"url\":\"/material/material_property\",\"textEn\":\"Product Properties\"},{\"component\":\"/system/SystemConfigList\",\"icon\":\"profile\",\"id\":234,\"text\":\"系统配置\",\"url\":\"/system/system_config\",\"textEn\":\"System Configuration\"},{\"component\":\"/system/FunctionList\",\"icon\":\"profile\",\"id\":16,\"text\":\"菜单管理\",\"url\":\"/system/function\",\"textEn\":\"Resource Menus\"},{\"component\":\"/system/PluginList\",\"icon\":\"profile\",\"id\":245,\"text\":\"插件管理\",\"url\":\"/system/plugin\",\"textEn\":\"Plugin Management\"},{\"component\":\"/system/DictList\",\"icon\":\"profile\",\"id\":260,\"text\":\"字典管理\",\"url\":\"/system/dict\",\"textEn\":\"Dictionary Management\"},{\"component\":\"/system/PlatformConfigList\",\"icon\":\"profile\",\"id\":258,\"text\":\"平台配置\",\"url\":\"/system/platform_config\",\"textEn\":\"Platform Configuration\"}],\"icon\":\"setting\",\"id\":1,\"text\":\"系统管理\",\"url\":\"/system\",\"textEn\":\"System Management\"}]'); +INSERT INTO `tbl_log` VALUES (8202, 63, '接口日志', '43.152.142.86/1.9.116.218', '2026-09-29 05:27:15', 0, 'MaterialPropertyController.getAllList(..)', NULL, 'GET /apis/materialProperty/getAllList', '{}', '{\"code\":200,\"data\":[{\"anotherName\":\"扩展1\",\"id\":1,\"nativeName\":\"扩展1\"},{\"anotherName\":\"扩展2\",\"id\":2,\"nativeName\":\"扩展2\"},{\"anotherName\":\"扩展3\",\"id\":3,\"nativeName\":\"扩展3\"}]}'); +INSERT INTO `tbl_log` VALUES (8203, 63, '接口日志', '43.152.142.62/1.9.116.218', '2026-09-29 05:27:16', 0, 'UserController.getUserBtnByCurrentUser(..)', NULL, 'GET /apis/user/getUserBtnByCurrentUser', '{}', '{\"code\":200,\"data\":{\"userBtn\":[{\"btnStr\":\"8,1\",\"url\":\"/system/role\"},{\"btnStr\":\"1\",\"url\":\"/system/user\"},{\"btnStr\":\"1\",\"url\":\"/system/organization\"},{\"btnStr\":\"1\",\"url\":\"/material/material_property\"},{\"btnStr\":\"1\",\"url\":\"/system/system_config\"},{\"btnStr\":\"1\",\"url\":\"/system/function\"},{\"btnStr\":\"1\",\"url\":\"/system/plugin\"},{\"btnStr\":\"1\",\"url\":\"/material/material_category\"},{\"btnStr\":\"1,3\",\"url\":\"/material/material\"},{\"btnStr\":\"1\",\"url\":\"/system/unit\"},{\"btnStr\":\"1\",\"url\":\"/material/material_attribute\"},{\"btnStr\":\"1,3\",\"url\":\"/system/vendor\"},{\"btnStr\":\"1,3\",\"url\":\"/system/customer\"},{\"btnStr\":\"1,3\",\"url\":\"/system/member\"},{\"btnStr\":\"1\",\"url\":\"/system/depot\"},{\"btnStr\":\"1\",\"url\":\"/system/in_out_item\"},{\"btnStr\":\"1\",\"url\":\"/system/account\"},{\"btnStr\":\"1\",\"url\":\"/system/person\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_apply\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_out\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/delivery_plan\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/sale_shipment\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_out\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/order\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/requisition\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/report\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/giro\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/advance_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/allocation_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/assemble\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/headquarters_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/disassemble\"}]}}'); +INSERT INTO `tbl_log` VALUES (8204, 63, '接口日志', '43.174.51.49/1.9.116.218', '2026-09-29 05:27:16', 0, 'MsgController.getMsgByStatus(..)', NULL, 'GET /apis/msg/getMsgByStatus', '{\"status\":\"1\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (8205, 63, '接口日志', '43.174.32.33/1.9.116.218', '2026-09-29 05:27:16', 0, 'MsgController.getList(..)', NULL, 'GET /apis/msg/list', '{\"search\":\"{\\\"name\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (8206, 63, '接口日志', '43.152.142.68/1.9.116.218', '2026-09-29 05:27:16', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-04\",\"inbound\":100669.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (8207, 63, '接口日志', '43.152.157.98/1.9.116.218', '2026-09-29 05:27:51', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (8208, 63, '接口日志', '43.174.54.50/1.9.116.218', '2026-09-29 05:27:51', 0, 'PersonController.getPersonByNumType(..)', NULL, 'GET /apis/person/getPersonByNumType', '{\"typeNum\":\"1\"}', '[]'); +INSERT INTO `tbl_log` VALUES (8209, 63, '接口日志', '43.174.53.16/1.9.116.218', '2026-09-29 05:27:51', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (8210, 63, '接口日志', '43.174.53.48/1.9.116.218', '2026-09-29 05:27:51', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8211, 63, '接口日志', '43.174.32.14/1.9.116.218', '2026-09-29 05:27:51', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"}]'); +INSERT INTO `tbl_log` VALUES (8212, 63, '接口日志', '43.152.142.108/1.9.116.218', '2026-09-29 05:27:51', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8213, 63, '接口日志', '43.152.142.142/1.9.116.218', '2026-09-29 05:27:51', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"其它\\\",\\\"subType\\\":\\\"销售订单\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-29\\\",\\\"endTime\\\":\\\"2026-09-29\\\",\\\"createTimeRange\\\":[\\\"2026-06-28T16:00:00.000Z\\\",\\\"2026-09-28T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":6,\"rows\":[{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789718483000,\"creator\":63,\"debt\":808500.000000,\"defaultNumber\":\"XSDD00000001726\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":808500.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1719,\"lastDebt\":808500.000000,\"lastDeposit\":0.000000,\"materialCount\":10000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD00000001726\",\"operTime\":1789732682000,\"operTimeStr\":\"2026-09-18 15:58:02\",\"organId\":90,\"organName\":\"TNB\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"totalPrice\":735000.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789726236000,\"creator\":63,\"debt\":340000000.000000,\"defaultNumber\":\"XSDD00000001724\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":340000000.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1718,\"lastDebt\":340000000.000000,\"lastDeposit\":0.000000,\"materialCount\":1000000.000000,\"materialsList\":\"3PH APEC3-WC 3PH APEC3-WC 3PH APEC3-WC \",\"number\":\"XSDD00000001724\",\"operTime\":1789725706000,\"operTimeStr\":\"2026-09-18 14:01:46\",\"organId\":90,\"organName\":\"TNB\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"0\",\"subType\":\"销售订单\",\"totalPrice\":340000000.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1785355200000,\"creator\":63,\"debt\":242550.000000,\"defaultNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":242550.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1580,\"lastDebt\":242550.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":3000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303475-1PH-WS79-ADD1\",\"operTime\":1785355200000,\"operTimeStr\":\"2026-07-30 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303475\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":242550.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1785355200000,\"creator\":63,\"debt\":323400.000000,\"defaultNumber\":\"XSDD-42303447-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":323400.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1574,\"lastDebt\":323400.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":4000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303447-1PH-WS79-ADD1\",\"operTime\":1785355200000,\"operTimeStr\":\"2026-07-30 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303447\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":323400.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1782936000000,\"creator\":63,\"debt\":323400.000000,\"defaultNumber\":\"XSDD-42303429-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":323400.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1569,\"lastDebt\":323400.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":4000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303429-1PH-WS79-ADD1\",\"operTime\":1782936000000,\"operTimeStr\":\"2026-07-02 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303429\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":323400.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1782676800000,\"creator\":63,\"debt\":323400.000000,\"defaultNumber\":\"XSDD-42303412-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":323400.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1565,\"lastDebt\":323400.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":4000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303412-1PH-WS79-ADD1\",\"operTime\":1782676800000,\"operTimeStr\":\"2026-06-29 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303412\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":323400.000000,\"type\":\"其它\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (8214, 63, '接口日志', '43.152.142.132/1.9.116.218', '2026-09-29 05:27:51', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8215, 63, '接口日志', '43.152.142.33/1.9.116.218', '2026-09-29 05:27:51', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (8216, 63, '接口日志', '43.152.142.33/1.9.116.218', '2026-09-29 05:27:54', 0, 'DepotHeadController.getDetailByNumber(..)', NULL, 'GET /apis/depotHead/getDetailByNumber', '{\"number\":\"XSDD00000001726\"}', '{\"code\":200,\"data\":{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"accountNumber\":\"\",\"address\":\"\",\"backAmount\":0,\"bankName\":\"\",\"changeAmount\":0.000000,\"contacts\":\"\",\"createTime\":1789718483000,\"creator\":63,\"creatorName\":\"admin\",\"debt\":808500.000000,\"defaultNumber\":\"XSDD00000001726\",\"deleteFlag\":\"0\",\"deposit\":0,\"depotHeadType\":\"销售订单其它\",\"discount\":0.000000,\"discountLastMoney\":808500.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"hasBackFlag\":false,\"id\":1719,\"lastDeposit\":0.000000,\"materialCount\":10000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD00000001726\",\"operTime\":1789732682000,\"operTimeStr\":\"2026-09-18 15:58:02\",\"organId\":90,\"organName\":\"TNB\",\"payType\":\"现付\",\"phoneNum\":\"\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"taxNum\":\"\",\"telephone\":\"\",\"totalPrice\":735000.000000,\"type\":\"其它\"}}'); +INSERT INTO `tbl_log` VALUES (8217, 63, '接口日志', '43.174.54.50/1.9.116.218', '2026-09-29 05:27:54', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8218, 63, '接口日志', '43.152.142.68/1.9.116.218', '2026-09-29 05:27:54', 0, 'DepotHeadController.getBillListByLinkNumber(..)', NULL, 'GET /apis/depotHead/getBillListByLinkNumber', '{\"number\":\"XSDD00000001726\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (8219, 63, '接口日志', '43.152.142.83/1.9.116.218', '2026-09-29 05:27:54', 0, 'AccountHeadController.getFinancialBillNoByBillId(..)', NULL, 'GET /apis/accountHead/getFinancialBillNoByBillId', '{\"billId\":1719}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (8220, 63, '接口日志', '43.152.142.45/1.9.116.218', '2026-09-29 05:27:54', 0, 'DepotItemController.getDetailList(..)', NULL, 'GET /apis/depotItem/getDetailList', '{\"headerId\":1719,\"mpList\":\"扩展1,扩展2,扩展3\",\"linkType\":\"basic\",\"isReadOnly\":\"1\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"standard\":\"1PH WS79\",\"materialExtendId\":123,\"finishPurchaseNumber\":0,\"anotherDepotName\":\"\",\"color\":\"\",\"preNumber\":10000.000000,\"depotId\":\"\",\"purchaseDecimal\":59.500000,\"imgName\":\"\",\"operNumber\":10000.000000,\"anotherDepotId\":\"\",\"basicNumber\":10000.000000,\"taxLastMoney\":808500.000000,\"model\":\"1PH WS79\",\"id\":1524,\"enableSerialNumber\":\"0\",\"stock\":52400.000000,\"brand\":\"\",\"finishNumber\":0,\"expirationDate\":\"\",\"enableBatchNumber\":\"0\",\"unitPrice\":73.500000,\"op\":1,\"otherField1\":\"\",\"depotName\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"weight\":0,\"otherField3\":\"\",\"otherField2\":\"\",\"taxMoney\":73500.000000,\"imgSmall\":\"\",\"barCode\":\"1PH-WS79\",\"taxRate\":10.000000,\"unit\":\"件\",\"allPrice\":735000.000000,\"name\":\"1PH WS79\",\"imgLarge\":\"\",\"position\":\"\"},{\"allPrice\":735000.000000,\"finishPurchaseNumber\":0,\"operNumber\":10000.000000,\"taxLastMoney\":808500.000000,\"weight\":0,\"taxMoney\":73500.000000,\"finishNumber\":0}]}}'); +INSERT INTO `tbl_log` VALUES (8221, 63, '接口日志', '43.152.142.31/1.9.116.218', '2026-09-29 05:27:54', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_print_flag\"}', '{\"code\":200,\"data\":{\"id\":4,\"platformKey\":\"bill_print_flag\",\"platformKeyInfo\":\"三联打印启用标记\",\"platformValue\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8222, 63, '接口日志', '43.152.142.86/1.9.116.218', '2026-09-29 05:28:12', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"其它\\\",\\\"subType\\\":\\\"销售订单\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-29\\\",\\\"endTime\\\":\\\"2026-09-29\\\",\\\"createTimeRange\\\":[\\\"2026-06-28T16:00:00.000Z\\\",\\\"2026-09-28T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":6,\"rows\":[{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789718483000,\"creator\":63,\"debt\":808500.000000,\"defaultNumber\":\"XSDD00000001726\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":808500.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1719,\"lastDebt\":808500.000000,\"lastDeposit\":0.000000,\"materialCount\":10000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD00000001726\",\"operTime\":1789732682000,\"operTimeStr\":\"2026-09-18 15:58:02\",\"organId\":90,\"organName\":\"TNB\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"totalPrice\":735000.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789726236000,\"creator\":63,\"debt\":340000000.000000,\"defaultNumber\":\"XSDD00000001724\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":340000000.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1718,\"lastDebt\":340000000.000000,\"lastDeposit\":0.000000,\"materialCount\":1000000.000000,\"materialsList\":\"3PH APEC3-WC 3PH APEC3-WC 3PH APEC3-WC \",\"number\":\"XSDD00000001724\",\"operTime\":1789725706000,\"operTimeStr\":\"2026-09-18 14:01:46\",\"organId\":90,\"organName\":\"TNB\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"0\",\"subType\":\"销售订单\",\"totalPrice\":340000000.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1785355200000,\"creator\":63,\"debt\":242550.000000,\"defaultNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":242550.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1580,\"lastDebt\":242550.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":3000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303475-1PH-WS79-ADD1\",\"operTime\":1785355200000,\"operTimeStr\":\"2026-07-30 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303475\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":242550.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1785355200000,\"creator\":63,\"debt\":323400.000000,\"defaultNumber\":\"XSDD-42303447-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":323400.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1574,\"lastDebt\":323400.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":4000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303447-1PH-WS79-ADD1\",\"operTime\":1785355200000,\"operTimeStr\":\"2026-07-30 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303447\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":323400.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1782936000000,\"creator\":63,\"debt\":323400.000000,\"defaultNumber\":\"XSDD-42303429-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":323400.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1569,\"lastDebt\":323400.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":4000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303429-1PH-WS79-ADD1\",\"operTime\":1782936000000,\"operTimeStr\":\"2026-07-02 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303429\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":323400.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1782676800000,\"creator\":63,\"debt\":323400.000000,\"defaultNumber\":\"XSDD-42303412-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":323400.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1565,\"lastDebt\":323400.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":4000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303412-1PH-WS79-ADD1\",\"operTime\":1782676800000,\"operTimeStr\":\"2026-06-29 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303412\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":323400.000000,\"type\":\"其它\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (8223, 63, '接口日志', '43.152.142.108/1.9.116.218', '2026-09-29 05:28:41', 0, 'DepotHeadController.getDetailByNumber(..)', NULL, 'GET /apis/depotHead/getDetailByNumber', '{\"number\":\"XSDD00000001726\"}', '{\"code\":200,\"data\":{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"accountNumber\":\"\",\"address\":\"\",\"backAmount\":0,\"bankName\":\"\",\"changeAmount\":0.000000,\"contacts\":\"\",\"createTime\":1789718483000,\"creator\":63,\"creatorName\":\"admin\",\"debt\":808500.000000,\"defaultNumber\":\"XSDD00000001726\",\"deleteFlag\":\"0\",\"deposit\":0,\"depotHeadType\":\"销售订单其它\",\"discount\":0.000000,\"discountLastMoney\":808500.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"hasBackFlag\":false,\"id\":1719,\"lastDeposit\":0.000000,\"materialCount\":10000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD00000001726\",\"operTime\":1789732682000,\"operTimeStr\":\"2026-09-18 15:58:02\",\"organId\":90,\"organName\":\"TNB\",\"payType\":\"现付\",\"phoneNum\":\"\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"taxNum\":\"\",\"telephone\":\"\",\"totalPrice\":735000.000000,\"type\":\"其它\"}}'); +INSERT INTO `tbl_log` VALUES (8224, 63, '接口日志', '43.174.53.16/1.9.116.218', '2026-09-29 05:28:41', 0, 'AccountHeadController.getFinancialBillNoByBillId(..)', NULL, 'GET /apis/accountHead/getFinancialBillNoByBillId', '{\"billId\":1719}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (8225, 63, '接口日志', '43.152.142.132/1.9.116.218', '2026-09-29 05:28:41', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8226, 63, '接口日志', '43.152.142.62/1.9.116.218', '2026-09-29 05:28:41', 0, 'DepotItemController.getDetailList(..)', NULL, 'GET /apis/depotItem/getDetailList', '{\"headerId\":1719,\"mpList\":\"扩展1,扩展2,扩展3\",\"linkType\":\"basic\",\"isReadOnly\":\"1\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"standard\":\"1PH WS79\",\"materialExtendId\":123,\"finishPurchaseNumber\":0,\"anotherDepotName\":\"\",\"color\":\"\",\"preNumber\":10000.000000,\"depotId\":\"\",\"purchaseDecimal\":59.500000,\"imgName\":\"\",\"operNumber\":10000.000000,\"anotherDepotId\":\"\",\"basicNumber\":10000.000000,\"taxLastMoney\":808500.000000,\"model\":\"1PH WS79\",\"id\":1524,\"enableSerialNumber\":\"0\",\"stock\":52400.000000,\"brand\":\"\",\"finishNumber\":0,\"expirationDate\":\"\",\"enableBatchNumber\":\"0\",\"unitPrice\":73.500000,\"op\":1,\"otherField1\":\"\",\"depotName\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"weight\":0,\"otherField3\":\"\",\"otherField2\":\"\",\"taxMoney\":73500.000000,\"imgSmall\":\"\",\"barCode\":\"1PH-WS79\",\"taxRate\":10.000000,\"unit\":\"件\",\"allPrice\":735000.000000,\"name\":\"1PH WS79\",\"imgLarge\":\"\",\"position\":\"\"},{\"allPrice\":735000.000000,\"finishPurchaseNumber\":0,\"operNumber\":10000.000000,\"taxLastMoney\":808500.000000,\"weight\":0,\"taxMoney\":73500.000000,\"finishNumber\":0}]}}'); +INSERT INTO `tbl_log` VALUES (8227, 63, '接口日志', '43.152.142.110/1.9.116.218', '2026-09-29 05:28:41', 0, 'DepotHeadController.getBillListByLinkNumber(..)', NULL, 'GET /apis/depotHead/getBillListByLinkNumber', '{\"number\":\"XSDD00000001726\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (8228, 63, '接口日志', '43.152.142.40/1.9.116.218', '2026-09-29 05:28:41', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_print_flag\"}', '{\"code\":200,\"data\":{\"id\":4,\"platformKey\":\"bill_print_flag\",\"platformKeyInfo\":\"三联打印启用标记\",\"platformValue\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8229, 63, '接口日志', '43.174.53.48/1.9.116.218', '2026-09-29 05:28:45', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"其它\\\",\\\"subType\\\":\\\"销售订单\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-29\\\",\\\"endTime\\\":\\\"2026-09-29\\\",\\\"createTimeRange\\\":[\\\"2026-06-28T16:00:00.000Z\\\",\\\"2026-09-28T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":6,\"rows\":[{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789718483000,\"creator\":63,\"debt\":808500.000000,\"defaultNumber\":\"XSDD00000001726\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":808500.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1719,\"lastDebt\":808500.000000,\"lastDeposit\":0.000000,\"materialCount\":10000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD00000001726\",\"operTime\":1789732682000,\"operTimeStr\":\"2026-09-18 15:58:02\",\"organId\":90,\"organName\":\"TNB\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"totalPrice\":735000.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789726236000,\"creator\":63,\"debt\":340000000.000000,\"defaultNumber\":\"XSDD00000001724\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":340000000.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1718,\"lastDebt\":340000000.000000,\"lastDeposit\":0.000000,\"materialCount\":1000000.000000,\"materialsList\":\"3PH APEC3-WC 3PH APEC3-WC 3PH APEC3-WC \",\"number\":\"XSDD00000001724\",\"operTime\":1789725706000,\"operTimeStr\":\"2026-09-18 14:01:46\",\"organId\":90,\"organName\":\"TNB\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"0\",\"subType\":\"销售订单\",\"totalPrice\":340000000.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1785355200000,\"creator\":63,\"debt\":242550.000000,\"defaultNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":242550.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1580,\"lastDebt\":242550.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":3000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303475-1PH-WS79-ADD1\",\"operTime\":1785355200000,\"operTimeStr\":\"2026-07-30 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303475\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":242550.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1785355200000,\"creator\":63,\"debt\":323400.000000,\"defaultNumber\":\"XSDD-42303447-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":323400.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1574,\"lastDebt\":323400.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":4000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303447-1PH-WS79-ADD1\",\"operTime\":1785355200000,\"operTimeStr\":\"2026-07-30 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303447\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":323400.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1782936000000,\"creator\":63,\"debt\":323400.000000,\"defaultNumber\":\"XSDD-42303429-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":323400.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1569,\"lastDebt\":323400.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":4000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303429-1PH-WS79-ADD1\",\"operTime\":1782936000000,\"operTimeStr\":\"2026-07-02 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303429\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":323400.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1782676800000,\"creator\":63,\"debt\":323400.000000,\"defaultNumber\":\"XSDD-42303412-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":323400.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1565,\"lastDebt\":323400.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":4000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303412-1PH-WS79-ADD1\",\"operTime\":1782676800000,\"operTimeStr\":\"2026-06-29 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303412\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":323400.000000,\"type\":\"其它\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (8230, 63, '接口日志', '43.152.157.98/1.9.116.218', '2026-09-29 05:28:53', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (8231, 63, '接口日志', '43.152.142.118/1.9.116.218', '2026-09-29 05:28:53', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8232, 63, '接口日志', '43.174.54.27/1.9.116.218', '2026-09-29 05:28:53', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8233, 63, '接口日志', '43.174.32.33/1.9.116.218', '2026-09-29 05:28:53', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (8234, 63, '接口日志', '43.174.52.68/1.9.116.218', '2026-09-29 05:28:53', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (8235, 63, '接口日志', '43.174.32.19/1.9.116.218', '2026-09-29 05:28:53', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"}]'); +INSERT INTO `tbl_log` VALUES (8236, 63, '接口日志', '43.174.51.49/1.9.116.218', '2026-09-29 05:28:53', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"出库\\\",\\\"subType\\\":\\\"销售\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-29\\\",\\\"endTime\\\":\\\"2026-09-29\\\",\\\"createTimeRange\\\":[\\\"2026-06-28T16:00:00.000Z\\\",\\\"2026-09-28T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":50,\"rows\":[{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789718584000,\"creator\":63,\"debt\":808500.000000,\"defaultNumber\":\"XSCK00000001728\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":808500.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1720,\"lastDebt\":808500.000000,\"lastDeposit\":0.000000,\"linkNumber\":\"XSDD00000001726\",\"materialCount\":10000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK00000001728\",\"operTime\":1789732981000,\"operTimeStr\":\"2026-09-18 16:03:01\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"totalPrice\":735000.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1786305600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-87\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1671,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303506-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-87\",\"operTime\":1786305600000,\"operTimeStr\":\"2026-08-10 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1786305600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2159-86\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1670,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303506-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2159-86\",\"operTime\":1786305600000,\"operTimeStr\":\"2026-08-10 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2159\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785873600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-DO_2158-85\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1669,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-DO_2158-85\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:DO_2158\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785873600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-84\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1668,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-84\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785873600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-DO_2157-83\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1667,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-DO_2157-83\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:DO_2157\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785268800000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2150-69\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1665,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303480-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2150-69\",\"operTime\":1785268800000,\"operTimeStr\":\"2026-07-29 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2150\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784750400000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2142-68\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1664,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303480-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2142-68\",\"operTime\":1784750400000,\"operTimeStr\":\"2026-07-23 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2142\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784145600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-67\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1663,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-67\",\"operTime\":1784145600000,\"operTimeStr\":\"2026-07-16 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784145600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2134-66\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1662,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2134-66\",\"operTime\":1784145600000,\"operTimeStr\":\"2026-07-16 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2134\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (8237, 63, '接口日志', '43.174.53.19/1.9.116.218', '2026-09-29 05:28:53', 0, 'PersonController.getPersonByNumType(..)', NULL, 'GET /apis/person/getPersonByNumType', '{\"typeNum\":\"1\"}', '[]'); +INSERT INTO `tbl_log` VALUES (8238, 63, '接口日志', '43.174.32.14/1.9.116.218', '2026-09-29 05:28:53', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8239, 63, '接口日志', '43.152.142.33/1.9.116.218', '2026-09-29 05:28:56', 0, 'DepotHeadController.getDetailByNumber(..)', NULL, 'GET /apis/depotHead/getDetailByNumber', '{\"number\":\"XSCK-INV_2159-86\"}', '{\"code\":200,\"data\":{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountNumber\":\"\",\"address\":\"\",\"backAmount\":0.000000,\"bankName\":\"\",\"billType\":\"销售\",\"changeAmount\":0.000000,\"contacts\":\"\",\"createTime\":1786305600000,\"creator\":63,\"creatorName\":\"admin\",\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2159-86\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"depotHeadType\":\"销售出库\",\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"hasBackFlag\":false,\"id\":1670,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303506-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2159-86\",\"operTime\":1786305600000,\"operTimeStr\":\"2026-08-10 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"phoneNum\":\"\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2159\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"taxNum\":\"\",\"telephone\":\"\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\"}}'); +INSERT INTO `tbl_log` VALUES (8240, 63, '接口日志', '43.174.54.27/1.9.116.218', '2026-09-29 05:28:56', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8241, 63, '接口日志', '43.174.51.49/1.9.116.218', '2026-09-29 05:28:56', 0, 'DepotItemController.getDetailList(..)', NULL, 'GET /apis/depotItem/getDetailList', '{\"headerId\":1670,\"mpList\":\"扩展1,扩展2,扩展3\",\"linkType\":\"basic\",\"isReadOnly\":\"1\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"standard\":\"1PH WS79\",\"materialExtendId\":123,\"finishPurchaseNumber\":0,\"anotherDepotName\":\"\",\"color\":\"\",\"preNumber\":1000.000000,\"depotId\":26,\"remark\":\"\",\"purchaseDecimal\":59.500000,\"imgName\":\"\",\"operNumber\":1000.000000,\"anotherDepotId\":\"\",\"basicNumber\":1000.000000,\"taxLastMoney\":80850.000000,\"model\":\"1PH WS79\",\"id\":1475,\"enableSerialNumber\":\"0\",\"stock\":52400.000000,\"brand\":\"\",\"finishNumber\":0,\"expirationDate\":\"\",\"enableBatchNumber\":\"0\",\"unitPrice\":73.500000,\"op\":1,\"otherField1\":\"\",\"depotName\":\"成品仓库\",\"mfrs\":\"浙江瑞银电子有限公司\",\"weight\":0,\"otherField3\":\"\",\"otherField2\":\"\",\"taxMoney\":7350.000000,\"imgSmall\":\"\",\"barCode\":\"1PH-WS79\",\"taxUnitPrice\":80.850000,\"taxRate\":10.000000,\"unit\":\"件\",\"allPrice\":73500.000000,\"name\":\"1PH WS79\",\"imgLarge\":\"\",\"position\":\"\"},{\"allPrice\":73500.000000,\"finishPurchaseNumber\":0,\"operNumber\":1000.000000,\"taxLastMoney\":80850.000000,\"weight\":0,\"taxMoney\":7350.000000,\"finishNumber\":0}]}}'); +INSERT INTO `tbl_log` VALUES (8242, 63, '接口日志', '43.174.32.33/1.9.116.218', '2026-09-29 05:28:56', 0, 'DepotHeadController.getBillListByLinkNumber(..)', NULL, 'GET /apis/depotHead/getBillListByLinkNumber', '{\"number\":\"XSCK-INV_2159-86\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (8243, 63, '接口日志', '43.152.142.68/1.9.116.218', '2026-09-29 05:28:56', 0, 'AccountHeadController.getFinancialBillNoByBillId(..)', NULL, 'GET /apis/accountHead/getFinancialBillNoByBillId', '{\"billId\":1670}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (8244, 63, '接口日志', '43.174.54.50/1.9.116.218', '2026-09-29 05:28:56', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_print_flag\"}', '{\"code\":200,\"data\":{\"id\":4,\"platformKey\":\"bill_print_flag\",\"platformKeyInfo\":\"三联打印启用标记\",\"platformValue\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8245, 63, '接口日志', '43.174.53.16/1.9.116.218', '2026-09-29 05:28:58', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"出库\\\",\\\"subType\\\":\\\"销售\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-29\\\",\\\"endTime\\\":\\\"2026-09-29\\\",\\\"createTimeRange\\\":[\\\"2026-06-28T16:00:00.000Z\\\",\\\"2026-09-28T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":50,\"rows\":[{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789718584000,\"creator\":63,\"debt\":808500.000000,\"defaultNumber\":\"XSCK00000001728\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":808500.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1720,\"lastDebt\":808500.000000,\"lastDeposit\":0.000000,\"linkNumber\":\"XSDD00000001726\",\"materialCount\":10000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK00000001728\",\"operTime\":1789732981000,\"operTimeStr\":\"2026-09-18 16:03:01\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"totalPrice\":735000.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1786305600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-87\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1671,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303506-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-87\",\"operTime\":1786305600000,\"operTimeStr\":\"2026-08-10 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1786305600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2159-86\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1670,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303506-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2159-86\",\"operTime\":1786305600000,\"operTimeStr\":\"2026-08-10 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2159\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785873600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-DO_2158-85\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1669,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-DO_2158-85\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:DO_2158\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785873600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-84\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1668,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-84\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785873600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-DO_2157-83\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1667,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-DO_2157-83\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:DO_2157\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785268800000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2150-69\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1665,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303480-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2150-69\",\"operTime\":1785268800000,\"operTimeStr\":\"2026-07-29 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2150\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784750400000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2142-68\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1664,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303480-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2142-68\",\"operTime\":1784750400000,\"operTimeStr\":\"2026-07-23 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2142\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784145600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-67\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1663,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-67\",\"operTime\":1784145600000,\"operTimeStr\":\"2026-07-16 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784145600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2134-66\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1662,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2134-66\",\"operTime\":1784145600000,\"operTimeStr\":\"2026-07-16 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2134\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (8246, 63, '接口日志', '43.174.32.14/1.9.116.218', '2026-09-29 05:29:06', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"出库\\\",\\\"subType\\\":\\\"销售\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-29\\\",\\\"endTime\\\":\\\"2026-09-29\\\",\\\"createTimeRange\\\":[\\\"2026-06-28T16:00:00.000Z\\\",\\\"2026-09-28T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":50,\"rows\":[{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785096000000,\"creator\":63,\"debt\":3234.000000,\"defaultNumber\":\"XSCK-do_2145-55\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":3234.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1649,\"lastDebt\":3234.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303461-1PH-WS79-ADD1\",\"materialCount\":40.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-do_2145-55\",\"operTime\":1785096000000,\"operTimeStr\":\"2026-07-27 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:do_2145\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":3234.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785096000000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-54\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1648,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303456-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-54\",\"operTime\":1785096000000,\"operTimeStr\":\"2026-07-27 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785096000000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-do_2144-53\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1647,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303456-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-do_2144-53\",\"operTime\":1785096000000,\"operTimeStr\":\"2026-07-27 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:do_2144\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785096000000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-do_2143-52\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1646,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303456-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-do_2143-52\",\"operTime\":1785096000000,\"operTimeStr\":\"2026-07-27 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:do_2143\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784664000000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-51\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1645,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303452-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-51\",\"operTime\":1784664000000,\"operTimeStr\":\"2026-07-22 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784664000000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2139-50\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1644,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303452-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2139-50\",\"operTime\":1784664000000,\"operTimeStr\":\"2026-07-22 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2139\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784750400000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2138-49\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1643,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303452-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2138-49\",\"operTime\":1784750400000,\"operTimeStr\":\"2026-07-23 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2138\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1783972800000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2132-48\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1642,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303452-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2132-48\",\"operTime\":1783972800000,\"operTimeStr\":\"2026-07-14 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2132\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1783886400000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2131-47\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1641,\"lastDebt\":0.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303447-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2131-47\",\"operTime\":1783886400000,\"operTimeStr\":\"2026-07-13 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2131\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1783540800000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-46\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1640,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303447-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-46\",\"operTime\":1783540800000,\"operTimeStr\":\"2026-07-09 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (8247, 63, '接口日志', '43.152.142.118/1.9.116.218', '2026-09-29 05:29:07', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"出库\\\",\\\"subType\\\":\\\"销售\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-29\\\",\\\"endTime\\\":\\\"2026-09-29\\\",\\\"createTimeRange\\\":[\\\"2026-06-28T16:00:00.000Z\\\",\\\"2026-09-28T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":50,\"rows\":[{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1783540800000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-45\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1639,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303447-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-45\",\"operTime\":1783540800000,\"operTimeStr\":\"2026-07-09 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1783540800000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2130-44\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1638,\"lastDebt\":-161700.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303447-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2130-44\",\"operTime\":1783540800000,\"operTimeStr\":\"2026-07-09 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2130\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1782849600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-43\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1637,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303443-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-43\",\"operTime\":1782849600000,\"operTimeStr\":\"2026-07-01 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1782849600000,\"creator\":63,\"debt\":74382.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-42\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":74382.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1636,\"lastDebt\":74382.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303443-1PH-WS79-ADD1\",\"materialCount\":920.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-42\",\"operTime\":1782849600000,\"operTimeStr\":\"2026-07-01 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":74382.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1782849600000,\"creator\":63,\"debt\":6468.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-41\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":6468.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1634,\"lastDebt\":6468.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303443-1PH-WS79-ADD1\",\"materialCount\":80.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-41\",\"operTime\":1782849600000,\"operTimeStr\":\"2026-07-01 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":6468.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1782849600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2127-40\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1633,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303443-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2127-40\",\"operTime\":1782849600000,\"operTimeStr\":\"2026-07-01 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2127\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1782849600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-39\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1632,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303440-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-39\",\"operTime\":1782849600000,\"operTimeStr\":\"2026-07-01 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1782849600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-38\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1631,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303440-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-38\",\"operTime\":1782849600000,\"operTimeStr\":\"2026-07-01 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1782849600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2126-37\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1630,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303440-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2126-37\",\"operTime\":1782849600000,\"operTimeStr\":\"2026-07-01 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2126\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1782849600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-36\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1629,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303437-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-36\",\"operTime\":1782849600000,\"operTimeStr\":\"2026-07-01 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (8248, 63, '接口日志', '43.152.142.83/1.9.116.218', '2026-09-29 05:29:10', 0, 'DepotHeadController.getDetailByNumber(..)', NULL, 'GET /apis/depotHead/getDetailByNumber', '{\"number\":\"XSCK-1PH-WS79-ADD1-45\"}', '{\"code\":200,\"data\":{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountNumber\":\"\",\"address\":\"\",\"backAmount\":0.000000,\"bankName\":\"\",\"billType\":\"销售\",\"changeAmount\":0.000000,\"contacts\":\"\",\"createTime\":1783540800000,\"creator\":63,\"creatorName\":\"admin\",\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-45\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"depotHeadType\":\"销售出库\",\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"hasBackFlag\":false,\"id\":1639,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303447-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-45\",\"operTime\":1783540800000,\"operTimeStr\":\"2026-07-09 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"phoneNum\":\"\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"taxNum\":\"\",\"telephone\":\"\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\"}}'); +INSERT INTO `tbl_log` VALUES (8249, 63, '接口日志', '43.152.142.62/1.9.116.218', '2026-09-29 05:29:11', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_print_flag\"}', '{\"code\":200,\"data\":{\"id\":4,\"platformKey\":\"bill_print_flag\",\"platformKeyInfo\":\"三联打印启用标记\",\"platformValue\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8250, 63, '接口日志', '43.174.32.19/1.9.116.218', '2026-09-29 05:29:11', 0, 'DepotHeadController.getBillListByLinkNumber(..)', NULL, 'GET /apis/depotHead/getBillListByLinkNumber', '{\"number\":\"XSCK-1PH-WS79-ADD1-45\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (8251, 63, '接口日志', '43.174.53.19/1.9.116.218', '2026-09-29 05:29:11', 0, 'DepotItemController.getDetailList(..)', NULL, 'GET /apis/depotItem/getDetailList', '{\"headerId\":1639,\"mpList\":\"扩展1,扩展2,扩展3\",\"linkType\":\"basic\",\"isReadOnly\":\"1\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"standard\":\"1PH WS79\",\"materialExtendId\":123,\"finishPurchaseNumber\":0,\"anotherDepotName\":\"\",\"color\":\"\",\"preNumber\":1000.000000,\"depotId\":26,\"remark\":\"\",\"purchaseDecimal\":59.500000,\"imgName\":\"\",\"operNumber\":1000.000000,\"anotherDepotId\":\"\",\"basicNumber\":1000.000000,\"taxLastMoney\":80850.000000,\"model\":\"1PH WS79\",\"id\":1444,\"enableSerialNumber\":\"0\",\"stock\":52400.000000,\"brand\":\"\",\"finishNumber\":0,\"expirationDate\":\"\",\"enableBatchNumber\":\"0\",\"unitPrice\":73.500000,\"op\":1,\"otherField1\":\"\",\"depotName\":\"成品仓库\",\"mfrs\":\"浙江瑞银电子有限公司\",\"weight\":0,\"otherField3\":\"\",\"otherField2\":\"\",\"taxMoney\":7350.000000,\"imgSmall\":\"\",\"barCode\":\"1PH-WS79\",\"taxUnitPrice\":80.850000,\"taxRate\":10.000000,\"unit\":\"件\",\"allPrice\":73500.000000,\"name\":\"1PH WS79\",\"imgLarge\":\"\",\"position\":\"\"},{\"allPrice\":73500.000000,\"finishPurchaseNumber\":0,\"operNumber\":1000.000000,\"taxLastMoney\":80850.000000,\"weight\":0,\"taxMoney\":7350.000000,\"finishNumber\":0}]}}'); +INSERT INTO `tbl_log` VALUES (8252, 63, '接口日志', '43.152.142.108/1.9.116.218', '2026-09-29 05:29:11', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8253, 63, '接口日志', '43.152.142.45/1.9.116.218', '2026-09-29 05:29:11', 0, 'AccountHeadController.getFinancialBillNoByBillId(..)', NULL, 'GET /apis/accountHead/getFinancialBillNoByBillId', '{\"billId\":1639}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (8254, 63, '接口日志', '43.152.142.40/1.9.116.218', '2026-09-29 05:29:13', 0, 'DepotHeadController.getDetailByNumber(..)', NULL, 'GET /apis/depotHead/getDetailByNumber', '{\"number\":\"XSDD-42303447-1PH-WS79-ADD1\"}', '{\"code\":200,\"data\":{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountNumber\":\"\",\"address\":\"\",\"backAmount\":0.000000,\"bankName\":\"\",\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"contacts\":\"\",\"createTime\":1785355200000,\"creator\":63,\"creatorName\":\"admin\",\"debt\":323400.000000,\"defaultNumber\":\"XSDD-42303447-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"depotHeadType\":\"销售订单其它\",\"discount\":100.000000,\"discountLastMoney\":323400.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"hasBackFlag\":false,\"id\":1574,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":4000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303447-1PH-WS79-ADD1\",\"operTime\":1785355200000,\"operTimeStr\":\"2026-07-30 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"phoneNum\":\"\",\"remark\":\"Stock Status客户PO:42303447\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"taxNum\":\"\",\"telephone\":\"\",\"tenantId\":63,\"totalPrice\":323400.000000,\"type\":\"其它\"}}'); +INSERT INTO `tbl_log` VALUES (8255, 63, '接口日志', '43.152.142.142/1.9.116.218', '2026-09-29 05:29:13', 0, 'DepotHeadController.getDetailByNumber(..)', NULL, 'GET /apis/depotHead/getDetailByNumber', '{\"number\":\"XSDD-42303447-1PH-WS79-ADD1\"}', '{\"code\":200,\"data\":{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountNumber\":\"\",\"address\":\"\",\"backAmount\":0.000000,\"bankName\":\"\",\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"contacts\":\"\",\"createTime\":1785355200000,\"creator\":63,\"creatorName\":\"admin\",\"debt\":323400.000000,\"defaultNumber\":\"XSDD-42303447-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"depotHeadType\":\"销售订单其它\",\"discount\":100.000000,\"discountLastMoney\":323400.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"hasBackFlag\":false,\"id\":1574,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":4000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303447-1PH-WS79-ADD1\",\"operTime\":1785355200000,\"operTimeStr\":\"2026-07-30 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"phoneNum\":\"\",\"remark\":\"Stock Status客户PO:42303447\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"taxNum\":\"\",\"telephone\":\"\",\"tenantId\":63,\"totalPrice\":323400.000000,\"type\":\"其它\"}}'); +INSERT INTO `tbl_log` VALUES (8256, 63, '接口日志', '43.152.142.110/1.9.116.218', '2026-09-29 05:29:13', 0, 'DepotHeadController.getBillListByLinkNumber(..)', NULL, 'GET /apis/depotHead/getBillListByLinkNumber', '{\"number\":\"XSDD-42303447-1PH-WS79-ADD1\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (8257, 63, '接口日志', '43.152.142.31/1.9.116.218', '2026-09-29 05:29:13', 0, 'DepotItemController.getDetailList(..)', NULL, 'GET /apis/depotItem/getDetailList', '{\"headerId\":1574,\"mpList\":\"扩展1,扩展2,扩展3\",\"linkType\":\"basic\",\"isReadOnly\":\"1\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"standard\":\"1PH WS79\",\"materialExtendId\":123,\"finishPurchaseNumber\":0,\"anotherDepotName\":\"\",\"color\":\"\",\"preNumber\":4000.000000,\"depotId\":26,\"remark\":\"\",\"purchaseDecimal\":59.500000,\"imgName\":\"\",\"operNumber\":4000.000000,\"anotherDepotId\":\"\",\"basicNumber\":4000.000000,\"taxLastMoney\":323400.000000,\"model\":\"1PH WS79\",\"id\":1379,\"enableSerialNumber\":\"0\",\"stock\":52400.000000,\"brand\":\"\",\"finishNumber\":0,\"expirationDate\":\"\",\"enableBatchNumber\":\"0\",\"unitPrice\":73.500000,\"op\":1,\"otherField1\":\"\",\"depotName\":\"成品仓库\",\"mfrs\":\"浙江瑞银电子有限公司\",\"weight\":0,\"otherField3\":\"\",\"otherField2\":\"\",\"taxMoney\":29400.000000,\"imgSmall\":\"\",\"barCode\":\"1PH-WS79\",\"taxUnitPrice\":80.850000,\"taxRate\":10.000000,\"unit\":\"件\",\"allPrice\":294000.000000,\"name\":\"1PH WS79\",\"imgLarge\":\"\",\"position\":\"\"},{\"allPrice\":294000.000000,\"finishPurchaseNumber\":0,\"operNumber\":4000.000000,\"taxLastMoney\":323400.000000,\"weight\":0,\"taxMoney\":29400.000000,\"finishNumber\":0}]}}'); +INSERT INTO `tbl_log` VALUES (8258, 63, '接口日志', '43.152.142.132/1.9.116.218', '2026-09-29 05:29:13', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_print_flag\"}', '{\"code\":200,\"data\":{\"id\":4,\"platformKey\":\"bill_print_flag\",\"platformKeyInfo\":\"三联打印启用标记\",\"platformValue\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8259, 63, '接口日志', '43.174.52.68/1.9.116.218', '2026-09-29 05:29:13', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8260, 63, '接口日志', '43.152.142.140/1.9.116.218', '2026-09-29 05:29:13', 0, 'AccountHeadController.getFinancialBillNoByBillId(..)', NULL, 'GET /apis/accountHead/getFinancialBillNoByBillId', '{\"billId\":1574}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (8261, 63, '接口日志', '43.152.142.86/1.9.116.218', '2026-09-29 05:29:16', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"出库\\\",\\\"subType\\\":\\\"销售\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-29\\\",\\\"endTime\\\":\\\"2026-09-29\\\",\\\"createTimeRange\\\":[\\\"2026-06-28T16:00:00.000Z\\\",\\\"2026-09-28T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":50,\"rows\":[{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1783540800000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-45\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1639,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303447-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-45\",\"operTime\":1783540800000,\"operTimeStr\":\"2026-07-09 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1783540800000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2130-44\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1638,\"lastDebt\":-161700.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303447-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2130-44\",\"operTime\":1783540800000,\"operTimeStr\":\"2026-07-09 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2130\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1782849600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-43\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1637,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303443-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-43\",\"operTime\":1782849600000,\"operTimeStr\":\"2026-07-01 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1782849600000,\"creator\":63,\"debt\":74382.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-42\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":74382.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1636,\"lastDebt\":74382.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303443-1PH-WS79-ADD1\",\"materialCount\":920.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-42\",\"operTime\":1782849600000,\"operTimeStr\":\"2026-07-01 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":74382.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1782849600000,\"creator\":63,\"debt\":6468.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-41\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":6468.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1634,\"lastDebt\":6468.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303443-1PH-WS79-ADD1\",\"materialCount\":80.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-41\",\"operTime\":1782849600000,\"operTimeStr\":\"2026-07-01 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":6468.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1782849600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2127-40\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1633,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303443-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2127-40\",\"operTime\":1782849600000,\"operTimeStr\":\"2026-07-01 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2127\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1782849600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-39\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1632,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303440-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-39\",\"operTime\":1782849600000,\"operTimeStr\":\"2026-07-01 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1782849600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-38\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1631,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303440-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-38\",\"operTime\":1782849600000,\"operTimeStr\":\"2026-07-01 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1782849600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2126-37\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1630,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303440-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2126-37\",\"operTime\":1782849600000,\"operTimeStr\":\"2026-07-01 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2126\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1782849600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-36\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1629,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303437-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-36\",\"operTime\":1782849600000,\"operTimeStr\":\"2026-07-01 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (8262, 63, '接口日志', '43.174.53.48/1.9.116.218', '2026-09-29 05:29:21', 0, 'DepotHeadController.getDetailByNumber(..)', NULL, 'GET /apis/depotHead/getDetailByNumber', '{\"number\":\"XSCK-1PH-WS79-ADD1-43\"}', '{\"code\":200,\"data\":{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountNumber\":\"\",\"address\":\"\",\"backAmount\":0.000000,\"bankName\":\"\",\"billType\":\"销售\",\"changeAmount\":0.000000,\"contacts\":\"\",\"createTime\":1782849600000,\"creator\":63,\"creatorName\":\"admin\",\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-43\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"depotHeadType\":\"销售出库\",\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"hasBackFlag\":false,\"id\":1637,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303443-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-43\",\"operTime\":1782849600000,\"operTimeStr\":\"2026-07-01 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"phoneNum\":\"\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"taxNum\":\"\",\"telephone\":\"\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\"}}'); +INSERT INTO `tbl_log` VALUES (8263, 63, '接口日志', '43.152.142.33/1.9.116.218', '2026-09-29 05:29:21', 0, 'AccountHeadController.getFinancialBillNoByBillId(..)', NULL, 'GET /apis/accountHead/getFinancialBillNoByBillId', '{\"billId\":1637}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (8264, 63, '接口日志', '43.174.51.49/1.9.116.218', '2026-09-29 05:29:21', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_print_flag\"}', '{\"code\":200,\"data\":{\"id\":4,\"platformKey\":\"bill_print_flag\",\"platformKeyInfo\":\"三联打印启用标记\",\"platformValue\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8265, 63, '接口日志', '43.174.32.33/1.9.116.218', '2026-09-29 05:29:21', 0, 'DepotHeadController.getBillListByLinkNumber(..)', NULL, 'GET /apis/depotHead/getBillListByLinkNumber', '{\"number\":\"XSCK-1PH-WS79-ADD1-43\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (8266, 63, '接口日志', '43.152.142.68/1.9.116.218', '2026-09-29 05:29:21', 0, 'DepotItemController.getDetailList(..)', NULL, 'GET /apis/depotItem/getDetailList', '{\"headerId\":1637,\"mpList\":\"扩展1,扩展2,扩展3\",\"linkType\":\"basic\",\"isReadOnly\":\"1\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"standard\":\"1PH WS79\",\"materialExtendId\":123,\"finishPurchaseNumber\":0,\"anotherDepotName\":\"\",\"color\":\"\",\"preNumber\":1000.000000,\"depotId\":26,\"remark\":\"\",\"purchaseDecimal\":59.500000,\"imgName\":\"\",\"operNumber\":1000.000000,\"anotherDepotId\":\"\",\"basicNumber\":1000.000000,\"taxLastMoney\":80850.000000,\"model\":\"1PH WS79\",\"id\":1442,\"enableSerialNumber\":\"0\",\"stock\":52400.000000,\"brand\":\"\",\"finishNumber\":0,\"expirationDate\":\"\",\"enableBatchNumber\":\"0\",\"unitPrice\":73.500000,\"op\":1,\"otherField1\":\"\",\"depotName\":\"成品仓库\",\"mfrs\":\"浙江瑞银电子有限公司\",\"weight\":0,\"otherField3\":\"\",\"otherField2\":\"\",\"taxMoney\":7350.000000,\"imgSmall\":\"\",\"barCode\":\"1PH-WS79\",\"taxUnitPrice\":80.850000,\"taxRate\":10.000000,\"unit\":\"件\",\"allPrice\":73500.000000,\"name\":\"1PH WS79\",\"imgLarge\":\"\",\"position\":\"\"},{\"allPrice\":73500.000000,\"finishPurchaseNumber\":0,\"operNumber\":1000.000000,\"taxLastMoney\":80850.000000,\"weight\":0,\"taxMoney\":7350.000000,\"finishNumber\":0}]}}'); +INSERT INTO `tbl_log` VALUES (8267, 63, '接口日志', '43.174.54.27/1.9.116.218', '2026-09-29 05:29:21', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8268, 63, '接口日志', '43.174.54.50/1.9.116.218', '2026-09-29 05:29:23', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"出库\\\",\\\"subType\\\":\\\"销售\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-29\\\",\\\"endTime\\\":\\\"2026-09-29\\\",\\\"createTimeRange\\\":[\\\"2026-06-28T16:00:00.000Z\\\",\\\"2026-09-28T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":50,\"rows\":[{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1783540800000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-45\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1639,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303447-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-45\",\"operTime\":1783540800000,\"operTimeStr\":\"2026-07-09 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1783540800000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2130-44\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1638,\"lastDebt\":-161700.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303447-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2130-44\",\"operTime\":1783540800000,\"operTimeStr\":\"2026-07-09 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2130\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1782849600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-43\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1637,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303443-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-43\",\"operTime\":1782849600000,\"operTimeStr\":\"2026-07-01 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1782849600000,\"creator\":63,\"debt\":74382.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-42\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":74382.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1636,\"lastDebt\":74382.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303443-1PH-WS79-ADD1\",\"materialCount\":920.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-42\",\"operTime\":1782849600000,\"operTimeStr\":\"2026-07-01 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":74382.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1782849600000,\"creator\":63,\"debt\":6468.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-41\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":6468.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1634,\"lastDebt\":6468.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303443-1PH-WS79-ADD1\",\"materialCount\":80.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-41\",\"operTime\":1782849600000,\"operTimeStr\":\"2026-07-01 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":6468.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1782849600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2127-40\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1633,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303443-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2127-40\",\"operTime\":1782849600000,\"operTimeStr\":\"2026-07-01 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2127\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1782849600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-39\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1632,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303440-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-39\",\"operTime\":1782849600000,\"operTimeStr\":\"2026-07-01 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1782849600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-38\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1631,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303440-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-38\",\"operTime\":1782849600000,\"operTimeStr\":\"2026-07-01 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1782849600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2126-37\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1630,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303440-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2126-37\",\"operTime\":1782849600000,\"operTimeStr\":\"2026-07-01 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2126\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1782849600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-36\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1629,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303437-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-36\",\"operTime\":1782849600000,\"operTimeStr\":\"2026-07-01 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (8269, 63, '接口日志', '43.174.53.16/1.9.116.218', '2026-09-29 05:29:25', 0, 'DeliveryPlanController.getList(..)', NULL, 'GET /apis/deliveryPlan/list', '{\"search\":\"{\\\"planNumber\\\":\\\"\\\",\\\"sourceBillNumber\\\":\\\"\\\",\\\"saleOrderNumber\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"createTime\":1789720385000,\"creator\":63,\"creatorName\":\"admin\",\"customerId\":90,\"customerName\":\"TNB\",\"deleteFlag\":\"0\",\"id\":7,\"materialsList\":\"1PH WS79\",\"planNumber\":\"JH00000001741\",\"planQuantity\":10000.000000,\"saleOrderNumber\":\"XSDD00000001726\",\"shippedQuantity\":0.000000,\"sourceBillId\":1720,\"sourceBillNumber\":\"XSCK00000001728\",\"sourceType\":\"sale\",\"status\":\"2\"},{\"createTime\":1789717298000,\"creator\":63,\"creatorName\":\"admin\",\"customerId\":90,\"customerName\":\"TNB\",\"deleteFlag\":\"0\",\"id\":6,\"materialsList\":\"3PH APEC3-WC\",\"planNumber\":\"JH00000001717\",\"planQuantity\":149.000000,\"saleOrderNumber\":\"XSDD-42260529-3PH-APEC3-WC-OV\",\"shippedQuantity\":0.000000,\"sourceBillId\":1714,\"sourceBillNumber\":\"XSCK-3PH-APEC3-WC-OV-28\",\"sourceType\":\"sale\",\"status\":\"2\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (8270, 63, '接口日志', '43.174.32.14/1.9.116.218', '2026-09-29 05:29:43', 0, 'SaleShipmentController.getList(..)', NULL, 'GET /apis/saleShipment/list', '{\"search\":\"{\\\"shipmentNumber\\\":\\\"\\\",\\\"saleOutNumber\\\":\\\"\\\",\\\"saleOrderNumber\\\":\\\"\\\",\\\"logisticsNo\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"actualQuantity\":10000.000000,\"approveBy\":63,\"approveByName\":\"admin\",\"approveRemark\":\"审批通过\",\"approveTime\":1789720647000,\"confirmBy\":63,\"confirmByName\":\"admin\",\"confirmTime\":1789720682000,\"createTime\":1789720588000,\"creator\":63,\"creatorName\":\"admin\",\"customerId\":90,\"customerName\":\"TNB\",\"deleteFlag\":\"0\",\"deliveryPlanId\":7,\"deliveryPlanNumber\":\"JH00000001741\",\"differenceQuantity\":0.000000,\"id\":17,\"materialsList\":\"1PH WS79\",\"planQuantity\":10000.000000,\"plannedShipTime\":1789734921000,\"saleOrderNumber\":\"XSDD00000001726\",\"saleOutId\":1720,\"saleOutNumber\":\"XSCK00000001728\",\"shipBy\":63,\"shipByName\":\"admin\",\"shipTime\":1789720682000,\"shipmentNumber\":\"FHTZ00000001742\",\"sourceType\":\"sale\",\"status\":\"2\"},{\"actualQuantity\":149.000000,\"approveBy\":63,\"approveByName\":\"admin\",\"approveRemark\":\"审批通过\",\"approveTime\":1789717350000,\"confirmBy\":63,\"confirmByName\":\"admin\",\"confirmTime\":1789717357000,\"createTime\":1789717342000,\"creator\":63,\"creatorName\":\"admin\",\"customerId\":90,\"customerName\":\"TNB\",\"deleteFlag\":\"0\",\"deliveryPlanId\":6,\"deliveryPlanNumber\":\"JH00000001717\",\"differenceQuantity\":0.000000,\"id\":16,\"logisticsCompany\":\"FEXD\",\"logisticsNo\":\"FD10000001\",\"materialsList\":\"3PH APEC3-WC\",\"planQuantity\":149.000000,\"plannedShipTime\":1789717304000,\"receiver\":\"Hank\",\"receiverAddress\":\"5433 Grand Ave\",\"receiverPhone\":\"60001-1111\",\"saleOrderNumber\":\"XSDD-42260529-3PH-APEC3-WC-OV\",\"saleOutId\":1714,\"saleOutNumber\":\"XSCK-3PH-APEC3-WC-OV-28\",\"shipBy\":63,\"shipByName\":\"admin\",\"shipTime\":1789717357000,\"shipmentNumber\":\"FHTZ00000001718\",\"sourceType\":\"sale\",\"status\":\"2\"}]}}'); +INSERT INTO `tbl_log` VALUES (8271, 63, '接口日志', '43.152.142.118/1.9.116.218', '2026-09-29 05:29:45', 0, 'SaleShipmentController.getDetail(..)', NULL, 'GET /apis/saleShipment/detail', '{\"id\":17}', '{\"code\":200,\"data\":{\"rows\":[{\"actualQuantity\":10000.000000,\"barCode\":\"1PH-WS79\",\"deleteFlag\":\"0\",\"deliveryPlanItemId\":6,\"depotId\":25,\"differenceQuantity\":0.000000,\"id\":15,\"materialExtendId\":123,\"materialId\":703,\"materialName\":\"1PH WS79\",\"model\":\"1PH WS79\",\"planQuantity\":10000.000000,\"saleOutItemId\":1525,\"shipmentId\":17,\"shippedQuantity\":0.000000,\"standard\":\"1PH WS79\",\"unit\":\"件\"}],\"info\":{\"approveBy\":63,\"approveRemark\":\"审批通过\",\"approveTime\":1789720647000,\"confirmBy\":63,\"confirmTime\":1789720682000,\"createTime\":1789720588000,\"creator\":63,\"customerId\":90,\"deleteFlag\":\"0\",\"deliveryPlanId\":7,\"deliveryPlanNumber\":\"JH00000001741\",\"id\":17,\"plannedShipTime\":1789734921000,\"saleOrderNumber\":\"XSDD00000001726\",\"saleOutId\":1720,\"saleOutNumber\":\"XSCK00000001728\",\"shipBy\":63,\"shipTime\":1789720682000,\"shipmentNumber\":\"FHTZ00000001742\",\"sourceType\":\"sale\",\"status\":\"2\"}}}'); +INSERT INTO `tbl_log` VALUES (8272, 63, '接口日志', '43.152.157.98/1.9.116.218', '2026-09-29 05:29:55', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (8273, 63, '接口日志', '43.152.142.83/1.9.116.218', '2026-09-29 05:29:55', 0, 'PersonController.getPersonByNumType(..)', NULL, 'GET /apis/person/getPersonByNumType', '{\"typeNum\":\"1\"}', '[]'); +INSERT INTO `tbl_log` VALUES (8274, 63, '接口日志', '43.152.142.45/1.9.116.218', '2026-09-29 05:29:55', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8275, 63, '接口日志', '43.152.142.108/1.9.116.218', '2026-09-29 05:29:55', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8276, 63, '接口日志', '43.152.142.62/1.9.116.218', '2026-09-29 05:29:55', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"入库\\\",\\\"subType\\\":\\\"销售退货\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-29\\\",\\\"endTime\\\":\\\"2026-09-29\\\",\\\"createTimeRange\\\":[\\\"2026-06-28T16:00:00.000Z\\\",\\\"2026-09-28T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (8277, 63, '接口日志', '43.174.53.19/1.9.116.218', '2026-09-29 05:29:55', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (8278, 63, '接口日志', '43.174.32.19/1.9.116.218', '2026-09-29 05:29:55', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"}]'); +INSERT INTO `tbl_log` VALUES (8279, 63, '接口日志', '43.152.142.40/1.9.116.218', '2026-09-29 05:29:55', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (8280, 63, '接口日志', '43.152.157.98/1.9.116.218', '2026-09-29 05:29:58', 0, 'SupplierController.findBySelectRetail(..)', NULL, 'POST /apis/supplier/findBySelect_retail', '{\"jsonObject\":{\"limit\":1}}', '[]'); +INSERT INTO `tbl_log` VALUES (8281, 63, '接口日志', '43.174.32.14/1.9.116.218', '2026-09-29 05:29:58', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8282, 63, '接口日志', '43.174.53.19/1.9.116.218', '2026-09-29 05:29:58', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (8283, 63, '接口日志', '43.174.53.16/1.9.116.218', '2026-09-29 05:29:58', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8284, 63, '接口日志', '43.174.53.48/1.9.116.218', '2026-09-29 05:29:58', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"}]'); +INSERT INTO `tbl_log` VALUES (8285, 63, '接口日志', '43.152.142.140/1.9.116.218', '2026-09-29 05:29:58', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"出库\\\",\\\"subType\\\":\\\"零售\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-29\\\",\\\"endTime\\\":\\\"2026-09-29\\\",\\\"createTimeRange\\\":[\\\"2026-06-28T16:00:00.000Z\\\",\\\"2026-09-28T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (8286, 63, '接口日志', '43.152.142.31/1.9.116.218', '2026-09-29 05:29:58', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (8287, 63, '接口日志', '43.152.142.86/1.9.116.218', '2026-09-29 05:29:58', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8288, 63, '接口日志', '43.152.157.98/1.9.116.218', '2026-09-29 05:30:27', 0, 'SupplierController.findBySelectRetail(..)', NULL, 'POST /apis/supplier/findBySelect_retail', '{\"jsonObject\":{\"limit\":1}}', '[]'); +INSERT INTO `tbl_log` VALUES (8289, 63, '接口日志', '43.174.54.50/1.9.116.218', '2026-09-29 05:30:27', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8290, 63, '接口日志', '43.152.142.68/1.9.116.218', '2026-09-29 05:30:27', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"}]'); +INSERT INTO `tbl_log` VALUES (8291, 63, '接口日志', '43.174.52.68/1.9.116.218', '2026-09-29 05:30:27', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (8292, 63, '接口日志', '43.152.142.40/1.9.116.218', '2026-09-29 05:30:27', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (8293, 63, '接口日志', '43.174.51.49/1.9.116.218', '2026-09-29 05:30:27', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8294, 63, '接口日志', '43.174.54.27/1.9.116.218', '2026-09-29 05:30:27', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"入库\\\",\\\"subType\\\":\\\"零售退货\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-29\\\",\\\"endTime\\\":\\\"2026-09-29\\\",\\\"createTimeRange\\\":[\\\"2026-06-28T16:00:00.000Z\\\",\\\"2026-09-28T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (8295, 63, '接口日志', '43.152.142.118/1.9.116.218', '2026-09-29 05:30:32', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (8296, 63, '接口日志', '43.174.32.19/1.9.116.218', '2026-09-29 05:30:32', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"}]'); +INSERT INTO `tbl_log` VALUES (8297, 63, '接口日志', '43.152.142.132/1.9.116.218', '2026-09-29 05:30:32', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8298, 63, '接口日志', '43.152.142.45/1.9.116.218', '2026-09-29 05:30:32', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"其它\\\",\\\"subType\\\":\\\"请购单\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-29\\\",\\\"endTime\\\":\\\"2026-09-29\\\",\\\"createTimeRange\\\":[\\\"2026-06-28T16:00:00.000Z\\\",\\\"2026-09-28T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"backAmount\":0,\"changeAmount\":0,\"createTime\":1789720084000,\"creator\":63,\"debt\":0,\"defaultNumber\":\"QGD00000001738\",\"deleteFlag\":\"0\",\"deposit\":0,\"discountLastMoney\":0,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1722,\"lastDebt\":0,\"lastDeposit\":0.000000,\"materialCount\":10000.000000,\"materialsList\":\"MD-4G111(VF) 包装 MD-4G111(VF) packing MD-4G111(VF) \",\"number\":\"QGD00000001738\",\"operTime\":1789734467000,\"operTimeStr\":\"2026-09-18 16:27:47\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"请购单\",\"type\":\"其它\",\"userName\":\"admin\"},{\"backAmount\":0,\"changeAmount\":0,\"createTime\":1789717442000,\"creator\":63,\"debt\":0,\"defaultNumber\":\"QGD00000001719\",\"deleteFlag\":\"0\",\"deposit\":0,\"discountLastMoney\":0,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1715,\"lastDebt\":0,\"lastDeposit\":0.000000,\"materialCount\":7.000000,\"materialsList\":\"MD-4G111(VF) 4G模块 MD-4G111(VF) MD-4G111(VF) \",\"number\":\"QGD00000001719\",\"operTime\":1789717427000,\"operTimeStr\":\"2026-09-18 11:43:47\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"请购单\",\"type\":\"其它\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (8299, 63, '接口日志', '43.152.142.142/1.9.116.218', '2026-09-29 05:30:32', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8300, 63, '接口日志', '43.152.142.62/1.9.116.218', '2026-09-29 05:30:35', 0, 'DepotHeadController.getDetailByNumber(..)', NULL, 'GET /apis/depotHead/getDetailByNumber', '{\"number\":\"QGD00000001738\"}', '{\"code\":200,\"data\":{\"backAmount\":0,\"changeAmount\":0,\"createTime\":1789720084000,\"creator\":63,\"creatorName\":\"admin\",\"debt\":0,\"defaultNumber\":\"QGD00000001738\",\"deleteFlag\":\"0\",\"deposit\":0,\"depotHeadType\":\"请购单其它\",\"discountLastMoney\":0,\"fileName\":\"\",\"hasBackFlag\":false,\"id\":1722,\"lastDeposit\":0.000000,\"materialCount\":10000.000000,\"materialsList\":\"MD-4G111(VF) 包装 MD-4G111(VF) packing MD-4G111(VF) \",\"number\":\"QGD00000001738\",\"operTime\":1789734467000,\"operTimeStr\":\"2026-09-18 16:27:47\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"请购单\",\"type\":\"其它\"}}'); +INSERT INTO `tbl_log` VALUES (8301, 63, '接口日志', '43.152.142.108/1.9.116.218', '2026-09-29 05:30:36', 0, 'DepotHeadController.getBillListByLinkNumber(..)', NULL, 'GET /apis/depotHead/getBillListByLinkNumber', '{\"number\":\"QGD00000001738\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (8302, 63, '接口日志', '43.152.142.83/1.9.116.218', '2026-09-29 05:30:36', 0, 'DepotItemController.getDetailList(..)', NULL, 'GET /apis/depotItem/getDetailList', '{\"headerId\":1722,\"mpList\":\"扩展1,扩展2,扩展3\",\"linkType\":\"basic\",\"isReadOnly\":\"1\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"standard\":\"MD-4G111(VF) packing\",\"materialExtendId\":125,\"finishPurchaseNumber\":0,\"anotherDepotName\":\"\",\"preNumber\":10000.000000,\"depotId\":\"\",\"purchaseDecimal\":10.000000,\"imgName\":\"\",\"operNumber\":10000.000000,\"anotherDepotId\":\"\",\"basicNumber\":10000.000000,\"model\":\"MD-4G111(VF)\",\"id\":1527,\"enableSerialNumber\":\"0\",\"stock\":0.000000,\"finishNumber\":0,\"expirationDate\":\"\",\"enableBatchNumber\":\"0\",\"op\":1,\"depotName\":\"\",\"weight\":0,\"imgSmall\":\"\",\"barCode\":\"1001\",\"unit\":\"件\",\"name\":\"MD-4G111(VF) 包装\",\"imgLarge\":\"\"},{\"allPrice\":0,\"finishPurchaseNumber\":0,\"operNumber\":10000.000000,\"taxLastMoney\":0,\"weight\":0,\"taxMoney\":0,\"finishNumber\":0}]}}'); +INSERT INTO `tbl_log` VALUES (8303, 63, '接口日志', '43.152.142.110/1.9.116.218', '2026-09-29 05:30:36', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8304, 63, '接口日志', '43.174.32.33/1.9.116.218', '2026-09-29 05:30:36', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_print_flag\"}', '{\"code\":200,\"data\":{\"id\":4,\"platformKey\":\"bill_print_flag\",\"platformKeyInfo\":\"三联打印启用标记\",\"platformValue\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8305, 63, '接口日志', '43.152.142.33/1.9.116.218', '2026-09-29 05:30:36', 0, 'AccountHeadController.getFinancialBillNoByBillId(..)', NULL, 'GET /apis/accountHead/getFinancialBillNoByBillId', '{\"billId\":1722}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (8306, 63, '接口日志', '43.152.142.140/1.9.116.218', '2026-09-29 05:30:38', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"其它\\\",\\\"subType\\\":\\\"请购单\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-29\\\",\\\"endTime\\\":\\\"2026-09-29\\\",\\\"createTimeRange\\\":[\\\"2026-06-28T16:00:00.000Z\\\",\\\"2026-09-28T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"backAmount\":0,\"changeAmount\":0,\"createTime\":1789720084000,\"creator\":63,\"debt\":0,\"defaultNumber\":\"QGD00000001738\",\"deleteFlag\":\"0\",\"deposit\":0,\"discountLastMoney\":0,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1722,\"lastDebt\":0,\"lastDeposit\":0.000000,\"materialCount\":10000.000000,\"materialsList\":\"MD-4G111(VF) 包装 MD-4G111(VF) packing MD-4G111(VF) \",\"number\":\"QGD00000001738\",\"operTime\":1789734467000,\"operTimeStr\":\"2026-09-18 16:27:47\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"请购单\",\"type\":\"其它\",\"userName\":\"admin\"},{\"backAmount\":0,\"changeAmount\":0,\"createTime\":1789717442000,\"creator\":63,\"debt\":0,\"defaultNumber\":\"QGD00000001719\",\"deleteFlag\":\"0\",\"deposit\":0,\"discountLastMoney\":0,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1715,\"lastDebt\":0,\"lastDeposit\":0.000000,\"materialCount\":7.000000,\"materialsList\":\"MD-4G111(VF) 4G模块 MD-4G111(VF) MD-4G111(VF) \",\"number\":\"QGD00000001719\",\"operTime\":1789717427000,\"operTimeStr\":\"2026-09-18 11:43:47\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"请购单\",\"type\":\"其它\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (8307, 63, '接口日志', '43.174.32.14/1.9.116.218', '2026-09-29 05:30:44', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-04\",\"inbound\":100669.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (8308, 63, '接口日志', '43.152.157.98/1.9.116.218', '2026-09-29 05:30:47', 0, 'SupplierController.findBySelectSup(..)', NULL, 'POST /apis/supplier/findBySelect_sup', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司\",\"id\":89}]'); +INSERT INTO `tbl_log` VALUES (8309, 63, '接口日志', '43.174.54.50/1.9.116.218', '2026-09-29 05:30:47', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8310, 63, '接口日志', '43.174.53.19/1.9.116.218', '2026-09-29 05:30:47', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (8311, 63, '接口日志', '43.174.53.48/1.9.116.218', '2026-09-29 05:30:47', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8312, 63, '接口日志', '43.152.142.86/1.9.116.218', '2026-09-29 05:30:47', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (8313, 63, '接口日志', '43.174.53.16/1.9.116.218', '2026-09-29 05:30:47', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"}]'); +INSERT INTO `tbl_log` VALUES (8314, 63, '接口日志', '43.152.142.31/1.9.116.218', '2026-09-29 05:30:47', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"其它\\\",\\\"subType\\\":\\\"采购订单\\\",\\\"linkApply\\\":\\\"\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-29\\\",\\\"endTime\\\":\\\"2026-09-29\\\",\\\"createTimeRange\\\":[\\\"2026-06-28T16:00:00.000Z\\\",\\\"2026-09-28T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789720113000,\"creator\":63,\"debt\":100000.000000,\"defaultNumber\":\"CGDD00000001739\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":100000.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1723,\"lastDebt\":100000.000000,\"lastDeposit\":0.000000,\"linkApply\":\"QGD00000001738\",\"materialCount\":10000.000000,\"materialsList\":\"MD-4G111(VF) 包装 MD-4G111(VF) packing MD-4G111(VF) \",\"number\":\"CGDD00000001739\",\"operTime\":1789734505000,\"operTimeStr\":\"2026-09-18 16:28:25\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"采购订单\",\"totalPrice\":100000.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789717459000,\"creator\":63,\"debt\":0.700000,\"defaultNumber\":\"CGDD00000001720\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":0.700000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1716,\"lastDebt\":0.700000,\"lastDeposit\":0.000000,\"linkApply\":\"QGD00000001719\",\"materialCount\":7.000000,\"materialsList\":\"MD-4G111(VF) 4G模块 MD-4G111(VF) MD-4G111(VF) \",\"number\":\"CGDD00000001720\",\"operTime\":1789717452000,\"operTimeStr\":\"2026-09-18 11:44:12\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"采购订单\",\"totalPrice\":0.700000,\"type\":\"其它\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (8315, 63, '接口日志', '43.174.51.49/1.9.116.218', '2026-09-29 05:30:55', 0, 'PackBomController.getList(..)', NULL, 'GET /apis/packBom/list', '{\"search\":\"{\\\"bomNumber\\\":\\\"\\\",\\\"bomName\\\":\\\"\\\",\\\"productMaterialParam\\\":\\\"\\\",\\\"outputMaterialParam\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"bomName\":\"v1.0\",\"bomNumber\":\"BOM00000001735\",\"createTime\":1789719259000,\"creator\":63,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"itemCount\":1,\"outputMaterialExtendId\":123,\"outputMaterialId\":703,\"outputMaterialName\":\"1PH WS79\",\"outputNumber\":1.000000,\"productMaterialExtendId\":123,\"productMaterialId\":703,\"version\":\"v1.0\"}]}}'); +INSERT INTO `tbl_log` VALUES (8316, 63, '接口日志', '43.174.54.27/1.9.116.218', '2026-09-29 05:30:57', 0, 'PackBomController.getPackBomDetail(..)', NULL, 'GET /apis/packBom/getPackBomDetail', '{\"id\":18}', '{\"code\":200,\"data\":{\"bom\":{\"creator\":63,\"productMaterialExtendId\":123,\"outputBarCode\":\"1PH-WS79\",\"outputMaterialId\":703,\"version\":\"v1.0\",\"enabled\":true,\"bomNumber\":\"BOM00000001735\",\"deleteFlag\":\"0\",\"productMaterialId\":703,\"outputNumber\":1.000000,\"createTime\":1789719259000,\"outputMaterialExtendId\":123,\"bomName\":\"v1.0\",\"id\":18},\"rows\":[{\"deleteFlag\":\"0\",\"materialExtendId\":125,\"bomId\":18,\"unit\":\"件\",\"quantity\":1.000000,\"name\":\"MD-4G111(VF) 包装\",\"remark\":\"\",\"id\":26,\"materialId\":705,\"materialSku\":\"\",\"barCode\":\"1001\"}]}}'); +INSERT INTO `tbl_log` VALUES (8317, NULL, '接口日志', '43.174.32.13/1.9.116.218', '2026-09-29 07:32:42', 0, 'UserController.logout(..)', NULL, 'GET /apis/user/logout', '{}', '{\"code\":400}'); +INSERT INTO `tbl_log` VALUES (8318, NULL, '接口日志', '43.174.32.19/1.9.116.218', '2026-09-29 07:32:42', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (8319, NULL, '接口日志', '43.152.142.43/1.9.116.218', '2026-09-29 07:32:42', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (8320, NULL, '接口日志', '43.174.51.49/1.9.116.218', '2026-09-29 07:32:43', 0, 'PlatformConfigController.getPlatformCheckcodeFlag(..)', NULL, 'GET /apis/platformConfig/getPlatform/checkcodeFlag', '{}', '\"1\"'); +INSERT INTO `tbl_log` VALUES (8321, NULL, '接口日志', '43.152.142.108/1.9.116.218', '2026-09-29 07:32:43', 0, 'UserController.randomImage(..)', NULL, 'GET /apis/user/randomImage', '{}', '{\"code\":200,\"data\":{\"base64\":\"data:image/jpg;base64,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\",\"uuid\":\"ec12c77c64ba44deaf4a0a9ce172ad53\"}}'); +INSERT INTO `tbl_log` VALUES (8322, NULL, '接口日志', '43.174.32.33/1.9.116.218', '2026-09-29 10:29:26', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (8323, NULL, '接口日志', '43.152.142.31/1.9.116.218', '2026-09-29 10:29:26', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (8324, NULL, '接口日志', '43.174.32.33/1.9.116.218', '2026-09-29 10:29:28', 0, 'PlatformConfigController.getPlatformCheckcodeFlag(..)', NULL, 'GET /apis/platformConfig/getPlatform/checkcodeFlag', '{}', '\"1\"'); +INSERT INTO `tbl_log` VALUES (8325, NULL, '接口日志', '43.174.32.19/1.9.116.218', '2026-09-29 10:29:28', 0, 'UserController.randomImage(..)', NULL, 'GET /apis/user/randomImage', '{}', '{\"code\":200,\"data\":{\"base64\":\"data:image/jpg;base64,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\",\"uuid\":\"f0e659749a9441bd9b6a35f16e027bcf\"}}'); +INSERT INTO `tbl_log` VALUES (8326, 63, '用户', '43.152.157.98/1.9.116.218', '2026-09-29 10:29:48', 0, '登录admin', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (8327, NULL, '接口日志', '43.152.157.98/1.9.116.218', '2026-09-29 10:29:48', 0, 'UserController.login(..)', NULL, 'POST /apis/user/login', '{\"userParam\":{\"code\":\"u2vd\",\"loginName\":\"admin\",\"password\":\"******\",\"uuid\":\"f0e659749a9441bd9b6a35f16e027bcf\"}}', '{\"code\":200,\"data\":{\"pwdSimple\":\"******\",\"user\":{\"deleteFlag\":\"0\",\"description\":\"\",\"email\":\"666666@qq.com\",\"id\":63,\"ismanager\":1,\"isystem\":1,\"leaderFlag\":\"0\",\"loginName\":\"admin\",\"password\":\"******\",\"phonenum\":\"1123123123132\",\"position\":\"主管\",\"status\":0,\"tenantId\":63,\"username\":\"admin\"},\"msgTip\":\"user can login\",\"token\":\"******\"}}'); +INSERT INTO `tbl_log` VALUES (8328, 63, '接口日志', '43.152.157.98/1.9.116.218', '2026-09-29 10:29:48', 0, 'FunctionController.findMenuByPNumber(..)', NULL, 'POST /apis/function/findMenuByPNumber', '{\"jsonObject\":{\"userId\":63,\"pNumber\":0}}', '[{\"component\":\"/layouts/TabLayout\",\"icon\":\"home\",\"id\":0,\"text\":\"首页\",\"url\":\"/dashboard/analysis\",\"textEn\":\"Home\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/SaleOrderList\",\"icon\":\"profile\",\"id\":242,\"text\":\"销售订单\",\"url\":\"/bill/sale_order\",\"textEn\":\"Sales Orders\"},{\"component\":\"/bill/SaleOutList\",\"icon\":\"profile\",\"id\":41,\"text\":\"销售出库\",\"url\":\"/bill/sale_out\",\"textEn\":\"Sales Shipments\"},{\"component\":\"/bill/DeliveryPlanList\",\"icon\":\"profile\",\"id\":271,\"text\":\"交货计划管理\",\"url\":\"/bill/delivery_plan\",\"textEn\":\"Delivery Plans\"},{\"component\":\"/bill/SaleShipmentList\",\"icon\":\"car\",\"id\":268,\"text\":\"发货管理\",\"url\":\"/bill/sale_shipment\",\"textEn\":\"Shipment Management\"},{\"component\":\"/bill/SaleBackList\",\"icon\":\"profile\",\"id\":200,\"text\":\"销售退货\",\"url\":\"/bill/sale_back\",\"textEn\":\"Sales Returns\"},{\"component\":\"/bill/RetailOutList\",\"icon\":\"profile\",\"id\":210,\"text\":\"零售出库\",\"url\":\"/bill/retail_out\",\"textEn\":\"Retail Shipments\"},{\"component\":\"/bill/RetailBackList\",\"icon\":\"profile\",\"id\":211,\"text\":\"零售退货\",\"url\":\"/bill/retail_back\",\"textEn\":\"Retail Returns\"}],\"icon\":\"shopping-cart\",\"id\":38,\"text\":\"销售管理\",\"url\":\"/billB\",\"textEn\":\"Sales Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/PurchaseApplyList\",\"icon\":\"profile\",\"id\":261,\"text\":\"请购单\",\"url\":\"/bill/purchase_apply\",\"textEn\":\"Purchase Requisitions\"},{\"component\":\"/bill/PurchaseOrderList\",\"icon\":\"profile\",\"id\":241,\"text\":\"采购订单\",\"url\":\"/bill/purchase_order\",\"textEn\":\"Purchase Orders\"},{\"component\":\"/bill/PurchaseInList\",\"icon\":\"profile\",\"id\":33,\"text\":\"采购入库\",\"url\":\"/bill/purchase_in\",\"textEn\":\"Purchase Receipts\"},{\"component\":\"/bill/PurchaseBackList\",\"icon\":\"profile\",\"id\":199,\"text\":\"采购退货\",\"url\":\"/bill/purchase_back\",\"textEn\":\"Purchase Returns\"}],\"icon\":\"retweet\",\"id\":32,\"text\":\"采购管理\",\"url\":\"/bill\",\"textEn\":\"Purchase Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/production/PackBomList\",\"icon\":\"profile\",\"id\":263,\"text\":\"生产方案\",\"url\":\"/production/pack_bom\",\"textEn\":\"Production BOMs\"},{\"component\":\"/production/OrderList\",\"icon\":\"profile\",\"id\":264,\"text\":\"生产工单\",\"url\":\"/production/order\",\"textEn\":\"Production Orders\"},{\"component\":\"/production/RequisitionList\",\"icon\":\"profile\",\"id\":265,\"text\":\"领料管理\",\"url\":\"/production/requisition\",\"textEn\":\"Material Requisitions\"},{\"component\":\"/production/ReportList\",\"icon\":\"profile\",\"id\":266,\"text\":\"完工报工\",\"url\":\"/production/report\",\"textEn\":\"Production Reports\"}],\"icon\":\"cluster\",\"id\":262,\"text\":\"生产管理\",\"url\":\"/production\",\"textEn\":\"Production Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/MaterialStock\",\"icon\":\"profile\",\"id\":246,\"text\":\"商品库存\",\"url\":\"/report/material_stock\",\"textEn\":\"Product Inventory\"},{\"component\":\"/bill/OtherInList\",\"icon\":\"profile\",\"id\":201,\"text\":\"其它入库\",\"url\":\"/bill/other_in\",\"textEn\":\"Other Receipts\"},{\"component\":\"/bill/OtherOutList\",\"icon\":\"profile\",\"id\":202,\"text\":\"其它出库\",\"url\":\"/bill/other_out\",\"textEn\":\"Other Shipments\"},{\"component\":\"/bill/HeadquartersInList\",\"icon\":\"profile\",\"id\":270,\"text\":\"总部入库\",\"url\":\"/bill/headquarters_in\",\"textEn\":\"Headquarters Receipts\"}],\"icon\":\"hdd\",\"id\":239,\"text\":\"仓库管理\",\"url\":\"/billD\",\"textEn\":\"Warehouse Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/financial/MoneyInList\",\"icon\":\"profile\",\"id\":204,\"text\":\"收款单\",\"url\":\"/financial/money_in\",\"textEn\":\"Receipt Vouchers\"},{\"component\":\"/financial/MoneyOutList\",\"icon\":\"profile\",\"id\":205,\"text\":\"付款单\",\"url\":\"/financial/money_out\",\"textEn\":\"Payment Vouchers\"}],\"icon\":\"money-collect\",\"id\":44,\"text\":\"财务管理\",\"url\":\"/financial\",\"textEn\":\"Finance Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/asset/AssetList\",\"icon\":\"profile\",\"id\":273,\"text\":\"资产台账\",\"url\":\"/asset/ledger\",\"textEn\":\"Asset Ledger\"},{\"component\":\"/asset/DeviceList\",\"icon\":\"tool\",\"id\":274,\"text\":\"设备台账\",\"url\":\"/asset/device\",\"textEn\":\"Device Ledger\"},{\"component\":\"/asset/InventoryList\",\"icon\":\"scan\",\"id\":275,\"text\":\"资产盘点\",\"url\":\"/asset/inventory\",\"textEn\":\"Asset Inventory\"}],\"icon\":\"bank\",\"id\":272,\"text\":\"资产管理\",\"url\":\"/assetManagement\",\"textEn\":\"Asset Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/material/MaterialCategoryList\",\"icon\":\"profile\",\"id\":22,\"text\":\"商品类别\",\"url\":\"/material/material_category\",\"textEn\":\"Product Categories\"},{\"component\":\"/material/MaterialList\",\"icon\":\"profile\",\"id\":23,\"text\":\"商品信息\",\"url\":\"/material/material\",\"textEn\":\"Product Information\"},{\"component\":\"/system/UnitList\",\"icon\":\"profile\",\"id\":220,\"text\":\"多单位\",\"url\":\"/system/unit\",\"textEn\":\"Multiple Units\"},{\"component\":\"/material/MaterialAttributeList\",\"icon\":\"profile\",\"id\":247,\"text\":\"多属性\",\"url\":\"/material/material_attribute\",\"textEn\":\"Product Attributes\"}],\"icon\":\"shopping\",\"id\":21,\"text\":\"商品管理\",\"url\":\"/material\",\"textEn\":\"Product Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/AccountReport\",\"icon\":\"profile\",\"id\":207,\"text\":\"账户统计\",\"url\":\"/report/account_report\",\"textEn\":\"Account Summary\"},{\"component\":\"/report/RetailOutReport\",\"icon\":\"profile\",\"id\":259,\"text\":\"零售统计\",\"url\":\"/report/retail_out_report\",\"textEn\":\"Retail Summary\"},{\"component\":\"/report/BuyInReport\",\"icon\":\"profile\",\"id\":208,\"text\":\"采购统计\",\"url\":\"/report/buy_in_report\",\"textEn\":\"Purchase Summary\"},{\"component\":\"/report/SaleOutReport\",\"icon\":\"profile\",\"id\":209,\"text\":\"销售统计\",\"url\":\"/report/sale_out_report\",\"textEn\":\"Sales Summary\"},{\"component\":\"/report/InDetail\",\"icon\":\"profile\",\"id\":226,\"text\":\"入库明细\",\"url\":\"/report/in_detail\",\"textEn\":\"Inbound Details\"},{\"component\":\"/report/OutDetail\",\"icon\":\"profile\",\"id\":227,\"text\":\"出库明细\",\"url\":\"/report/out_detail\",\"textEn\":\"Outbound Details\"},{\"component\":\"/report/InMaterialCount\",\"icon\":\"profile\",\"id\":228,\"text\":\"入库汇总\",\"url\":\"/report/in_material_count\",\"textEn\":\"Inbound Summary\"},{\"component\":\"/report/OutMaterialCount\",\"icon\":\"profile\",\"id\":229,\"text\":\"出库汇总\",\"url\":\"/report/out_material_count\",\"textEn\":\"Outbound Summary\"},{\"component\":\"/report/InOutStockReport\",\"icon\":\"profile\",\"id\":59,\"text\":\"进销存统计\",\"url\":\"/report/in_out_stock_report\",\"textEn\":\"Inventory Transaction Summary\"},{\"component\":\"/report/CustomerAccount\",\"icon\":\"profile\",\"id\":235,\"text\":\"客户对账\",\"url\":\"/report/customer_account\",\"textEn\":\"Customer Reconciliation\"},{\"component\":\"/report/VendorAccount\",\"icon\":\"profile\",\"id\":237,\"text\":\"供应商对账\",\"url\":\"/report/vendor_account\",\"textEn\":\"Supplier Reconciliation\"},{\"component\":\"/report/StockWarningReport\",\"icon\":\"profile\",\"id\":244,\"text\":\"库存预警\",\"url\":\"/report/stock_warning_report\",\"textEn\":\"Stock Alerts\"}],\"icon\":\"pie-chart\",\"id\":198,\"text\":\"报表查询\",\"url\":\"/report\",\"textEn\":\"Reports\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/VendorList\",\"icon\":\"profile\",\"id\":25,\"text\":\"供应商信息\",\"url\":\"/system/vendor\",\"textEn\":\"Suppliers\"},{\"component\":\"/system/CustomerList\",\"icon\":\"profile\",\"id\":217,\"text\":\"客户信息\",\"url\":\"/system/customer\",\"textEn\":\"Customers\"},{\"component\":\"/system/MemberList\",\"icon\":\"profile\",\"id\":218,\"text\":\"会员信息\",\"url\":\"/system/member\",\"textEn\":\"Members\"},{\"component\":\"/system/CustomerCategoryList\",\"icon\":\"bars\",\"id\":267,\"text\":\"客户分类\",\"url\":\"/system/customerCategory\",\"textEn\":\"Customer Categories\"},{\"component\":\"/system/DepotList\",\"icon\":\"profile\",\"id\":26,\"text\":\"仓库信息\",\"url\":\"/system/depot\",\"textEn\":\"Warehouses\"},{\"component\":\"/system/InOutItemList\",\"icon\":\"profile\",\"id\":194,\"text\":\"收支项目\",\"url\":\"/system/in_out_item\",\"textEn\":\"Income and Expense Items\"},{\"component\":\"/system/AccountList\",\"icon\":\"profile\",\"id\":195,\"text\":\"结算账户\",\"url\":\"/system/account\",\"textEn\":\"Settlement Accounts\"},{\"component\":\"/system/PersonList\",\"icon\":\"profile\",\"id\":31,\"text\":\"操作人员管理\",\"url\":\"/system/person\",\"textEn\":\"Operators\"}],\"icon\":\"appstore\",\"id\":24,\"text\":\"基础资料\",\"url\":\"/systemA\",\"textEn\":\"Master Data\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/RoleList\",\"icon\":\"profile\",\"id\":13,\"text\":\"角色管理\",\"url\":\"/system/role\",\"textEn\":\"Role Management\"},{\"component\":\"/system/UserList\",\"icon\":\"profile\",\"id\":14,\"text\":\"用户管理\",\"url\":\"/system/user\",\"textEn\":\"User Management\"},{\"component\":\"/system/OrganizationList\",\"icon\":\"profile\",\"id\":243,\"text\":\"部门管理\",\"url\":\"/system/organization\",\"textEn\":\"Department Management\"},{\"component\":\"/system/LogList\",\"icon\":\"profile\",\"id\":15,\"text\":\"日志管理\",\"url\":\"/system/log\",\"textEn\":\"Log Management\"},{\"component\":\"/material/MaterialPropertyList\",\"icon\":\"profile\",\"id\":236,\"text\":\"商品属性\",\"url\":\"/material/material_property\",\"textEn\":\"Product Properties\"},{\"component\":\"/system/SystemConfigList\",\"icon\":\"profile\",\"id\":234,\"text\":\"系统配置\",\"url\":\"/system/system_config\",\"textEn\":\"System Configuration\"},{\"component\":\"/system/FunctionList\",\"icon\":\"profile\",\"id\":16,\"text\":\"菜单管理\",\"url\":\"/system/function\",\"textEn\":\"Resource Menus\"},{\"component\":\"/system/PluginList\",\"icon\":\"profile\",\"id\":245,\"text\":\"插件管理\",\"url\":\"/system/plugin\",\"textEn\":\"Plugin Management\"},{\"component\":\"/system/DictList\",\"icon\":\"profile\",\"id\":260,\"text\":\"字典管理\",\"url\":\"/system/dict\",\"textEn\":\"Dictionary Management\"},{\"component\":\"/system/PlatformConfigList\",\"icon\":\"profile\",\"id\":258,\"text\":\"平台配置\",\"url\":\"/system/platform_config\",\"textEn\":\"Platform Configuration\"}],\"icon\":\"setting\",\"id\":1,\"text\":\"系统管理\",\"url\":\"/system\",\"textEn\":\"System Management\"}]'); +INSERT INTO `tbl_log` VALUES (8329, 63, '接口日志', '43.152.142.83/1.9.116.218', '2026-09-29 10:29:48', 0, 'MaterialPropertyController.getAllList(..)', NULL, 'GET /apis/materialProperty/getAllList', '{}', '{\"code\":200,\"data\":[{\"anotherName\":\"扩展1\",\"id\":1,\"nativeName\":\"扩展1\"},{\"anotherName\":\"扩展2\",\"id\":2,\"nativeName\":\"扩展2\"},{\"anotherName\":\"扩展3\",\"id\":3,\"nativeName\":\"扩展3\"}]}'); +INSERT INTO `tbl_log` VALUES (8330, 63, '接口日志', '43.152.142.86/1.9.116.218', '2026-09-29 10:29:48', 0, 'UserController.getUserBtnByCurrentUser(..)', NULL, 'GET /apis/user/getUserBtnByCurrentUser', '{}', '{\"code\":200,\"data\":{\"userBtn\":[{\"btnStr\":\"8,1\",\"url\":\"/system/role\"},{\"btnStr\":\"1\",\"url\":\"/system/user\"},{\"btnStr\":\"1\",\"url\":\"/system/organization\"},{\"btnStr\":\"1\",\"url\":\"/material/material_property\"},{\"btnStr\":\"1\",\"url\":\"/system/system_config\"},{\"btnStr\":\"1\",\"url\":\"/system/function\"},{\"btnStr\":\"1\",\"url\":\"/system/plugin\"},{\"btnStr\":\"1\",\"url\":\"/material/material_category\"},{\"btnStr\":\"1,3\",\"url\":\"/material/material\"},{\"btnStr\":\"1\",\"url\":\"/system/unit\"},{\"btnStr\":\"1\",\"url\":\"/material/material_attribute\"},{\"btnStr\":\"1,3\",\"url\":\"/system/vendor\"},{\"btnStr\":\"1,3\",\"url\":\"/system/customer\"},{\"btnStr\":\"1,3\",\"url\":\"/system/member\"},{\"btnStr\":\"1\",\"url\":\"/system/depot\"},{\"btnStr\":\"1\",\"url\":\"/system/in_out_item\"},{\"btnStr\":\"1\",\"url\":\"/system/account\"},{\"btnStr\":\"1\",\"url\":\"/system/person\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_apply\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_out\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/delivery_plan\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/sale_shipment\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_out\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/order\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/requisition\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/report\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/giro\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/advance_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/allocation_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/assemble\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/headquarters_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/disassemble\"}]}}'); +INSERT INTO `tbl_log` VALUES (8331, 63, '接口日志', '43.152.142.132/1.9.116.218', '2026-09-29 10:29:48', 0, 'MsgController.getList(..)', NULL, 'GET /apis/msg/list', '{\"search\":\"{\\\"name\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (8332, 63, '接口日志', '43.152.142.118/1.9.116.218', '2026-09-29 10:29:48', 0, 'MsgController.getMsgByStatus(..)', NULL, 'GET /apis/msg/getMsgByStatus', '{\"status\":\"1\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (8333, 63, '接口日志', '43.174.53.19/1.9.116.218', '2026-09-29 10:29:48', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-04\",\"inbound\":100669.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (8334, 63, '接口日志', '43.152.142.40/1.9.116.218', '2026-09-29 10:29:56', 0, 'AssetInventoryController.list(..)', NULL, 'GET /apis/assetInventory/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"abnormalCount\":0,\"createTime\":1789722750000,\"creator\":63,\"deadline\":1789999200000,\"deleteFlag\":\"0\",\"id\":1,\"inventoriedCount\":0,\"inventoryNo\":\"PD20260918131230171\",\"inventoryUserId\":36,\"inventoryUserName\":\"张伟\",\"normalCount\":0,\"planName\":\"2026年09月资产设备专项盘点\",\"plannedAt\":1789794000000,\"remark\":\"进行盘点\",\"scopeType\":\"DEVICE\",\"source\":\"MANUAL\",\"startedAt\":1789723142000,\"status\":\"IN_PROGRESS\",\"totalCount\":3,\"updateTime\":1789723142000,\"updater\":63}]}}'); +INSERT INTO `tbl_log` VALUES (8335, 63, '接口日志', '43.174.53.48/1.9.116.218', '2026-09-29 10:29:56', 0, 'AssetInventoryController.operatorOptions()', NULL, 'GET /apis/assetInventory/operatorOptions', '{}', '{\"code\":200,\"data\":{\"rows\":[{\"loginName\":\"admin\",\"name\":\"admin\",\"id\":63}],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (8336, 63, '接口日志', '43.152.142.31/1.9.116.218', '2026-09-29 10:30:00', 0, 'AssetInventoryController.details(..)', NULL, 'GET /apis/assetInventory/details', '{\"inventoryId\":1,\"keyword\":\"\"}', '{\"code\":200,\"data\":{\"total\":3,\"rows\":[{\"actualQuantity\":0.000000,\"bookDepartment\":\"品质部\",\"bookLocation\":\"一车间 印刷检测区\",\"bookQuantity\":1.000000,\"createTime\":1789722750000,\"id\":1,\"imageUrls\":[],\"inventoryId\":1,\"inventoryStatus\":\"PENDING\",\"model\":\"KY8030-3\",\"targetCode\":\"QC-SPI-01\",\"targetId\":6,\"targetName\":\"在线 3D SPI\",\"targetType\":\"DEVICE\",\"updateTime\":1789722750000},{\"actualQuantity\":0.000000,\"bookDepartment\":\"SMT生产部\",\"bookLocation\":\"一车间 SMT-01 线 A 工位\",\"bookQuantity\":1.000000,\"createTime\":1789722750000,\"id\":2,\"imageUrls\":[],\"inventoryId\":1,\"inventoryStatus\":\"PENDING\",\"model\":\"Panasonic NPM-D3A\",\"targetCode\":\"SMT-L01-MOUNTER-A\",\"targetId\":2,\"targetName\":\"高速模块贴片机 A\",\"targetType\":\"DEVICE\",\"updateTime\":1789722750000},{\"actualQuantity\":0.000000,\"bookDepartment\":\"SMT生产部\",\"bookLocation\":\"一车间 SMT-01 线 B 工位\",\"bookQuantity\":1.000000,\"createTime\":1789722750000,\"id\":3,\"imageUrls\":[],\"inventoryId\":1,\"inventoryStatus\":\"PENDING\",\"model\":\"Panasonic NPM-W2S\",\"targetCode\":\"SMT-L01-MOUNTER-B\",\"targetId\":3,\"targetName\":\"多功能贴片机 B\",\"targetType\":\"DEVICE\",\"updateTime\":1789722750000}]}}'); +INSERT INTO `tbl_log` VALUES (8337, 63, '接口日志', '43.174.32.14/1.9.116.218', '2026-09-29 10:30:15', 0, 'AssetDeviceController.list(..)', NULL, 'GET /apis/assetDevice/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":10,\"rows\":[{\"assetCode\":\"FA-TOOL-2025-008\",\"assetId\":8,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"工装设备\",\"deviceCode\":\"TOOL-STENCIL-CLEAN-01\",\"deviceName\":\"全自动钢网清洗机\",\"enabledDate\":1739822400000,\"id\":10,\"keeper\":\"王磊\",\"location\":\"一车间 钢网房\",\"manufacturer\":\"SAWA\",\"model\":\"SC-A1000\",\"nextMaintenanceDate\":1794254400000,\"purchaseDate\":1739131200000,\"remark\":\"水基清洗、漂洗、热风干燥一体化\",\"serialNumber\":\"SAWA-A1000-250210\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetCode\":\"FA-WH-2024-007\",\"assetId\":7,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"物流设备\",\"deviceCode\":\"WH-FORKLIFT-01\",\"deviceName\":\"2 吨电动叉车\",\"enabledDate\":1722456000000,\"id\":9,\"keeper\":\"张伟\",\"location\":\"原材料仓充电区\",\"manufacturer\":\"Toyota\",\"model\":\"8FBE20\",\"nextMaintenanceDate\":1792872000000,\"purchaseDate\":1721592000000,\"remark\":\"锂电池版本,配置蓝光安全警示灯\",\"serialNumber\":\"TY-8FBE20-240722\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"仓储物流部\"},{\"assetCode\":\"FA-IT-2025-006\",\"assetId\":6,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"服务器\",\"deviceCode\":\"IT-MES-DB-01\",\"deviceName\":\"MES 数据库主服务器\",\"enabledDate\":1737489600000,\"id\":8,\"keeper\":\"赵敏\",\"location\":\"数据中心 A03-U18\",\"manufacturer\":\"Dell\",\"model\":\"PowerEdge R760\",\"nextMaintenanceDate\":1797278400000,\"purchaseDate\":1736884800000,\"remark\":\"双路 CPU、512GB 内存、全闪存 RAID10\",\"serialNumber\":\"CN-R760-25011501\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"信息技术部\"},{\"assetCode\":\"FA-UTIL-2023-005\",\"assetId\":5,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"动力设备\",\"deviceCode\":\"UTIL-AIR-01\",\"deviceName\":\"变频螺杆空压机\",\"enabledDate\":1701374400000,\"id\":7,\"keeper\":\"陈晨\",\"location\":\"动力站 1 号机位\",\"manufacturer\":\"Atlas Copco\",\"model\":\"GA22 VSD+\",\"nextMaintenanceDate\":1790798400000,\"purchaseDate\":1700424000000,\"remark\":\"运行压力 0.72MPa,接入能源管理系统\",\"serialNumber\":\"AC-GA22-2311209\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"设备动力部\"},{\"assetCode\":\"FA-QC-2024-004\",\"assetId\":4,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"检测设备\",\"deviceCode\":\"QC-SPI-01\",\"deviceName\":\"在线 3D SPI\",\"enabledDate\":1713384000000,\"id\":6,\"keeper\":\"陈晨\",\"location\":\"一车间 印刷检测区\",\"manufacturer\":\"Koh Young\",\"model\":\"KY8030-3\",\"nextMaintenanceDate\":1793908800000,\"purchaseDate\":1712347200000,\"remark\":\"与印刷机闭环反馈锡膏偏移数据\",\"serialNumber\":\"KY-8030-24040608\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"品质部\"},{\"assetCode\":\"FA-QC-2024-003\",\"assetId\":3,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"检测设备\",\"deviceCode\":\"QC-AOI-01\",\"deviceName\":\"在线 3D AOI\",\"enabledDate\":1713384000000,\"id\":5,\"keeper\":\"陈晨\",\"location\":\"一车间 AOI 检测区\",\"manufacturer\":\"Koh Young\",\"model\":\"Zenith 2\",\"nextMaintenanceDate\":1793822400000,\"purchaseDate\":1712347200000,\"remark\":\"具备 AI 缺陷复判和 SPC 数据接口\",\"serialNumber\":\"KY-Z2-24040615\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"品质部\"},{\"assetCode\":\"FA-SMT-2024-002\",\"assetId\":2,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"焊接设备\",\"deviceCode\":\"SMT-L01-REFLOW-01\",\"deviceName\":\"十温区氮气回流焊炉\",\"enabledDate\":1712692800000,\"id\":4,\"keeper\":\"王磊\",\"location\":\"一车间 SMT-01 线后段\",\"manufacturer\":\"Heller Industries\",\"model\":\"HELLER 1936MK7\",\"nextMaintenanceDate\":1792440000000,\"purchaseDate\":1710705600000,\"remark\":\"氮气闭环控制,支持双轨独立调宽\",\"serialNumber\":\"HLR1936-2403268\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetCode\":\"FA-SMT-2024-001\",\"assetId\":1,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"贴装设备\",\"deviceCode\":\"SMT-L01-MOUNTER-B\",\"deviceName\":\"多功能贴片机 B\",\"enabledDate\":1712520000000,\"id\":3,\"keeper\":\"王磊\",\"location\":\"一车间 SMT-01 线 B 工位\",\"manufacturer\":\"Panasonic\",\"model\":\"Panasonic NPM-W2S\",\"nextMaintenanceDate\":1792094400000,\"purchaseDate\":1710705600000,\"remark\":\"负责异形件及高精度元件贴装\",\"serialNumber\":\"NPMW2S24031802\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetCode\":\"FA-SMT-2024-001\",\"assetId\":1,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"贴装设备\",\"deviceCode\":\"SMT-L01-MOUNTER-A\",\"deviceName\":\"高速模块贴片机 A\",\"enabledDate\":1712520000000,\"id\":2,\"keeper\":\"王磊\",\"location\":\"一车间 SMT-01 线 A 工位\",\"manufacturer\":\"Panasonic\",\"model\":\"Panasonic NPM-D3A\",\"nextMaintenanceDate\":1792008000000,\"purchaseDate\":1710705600000,\"remark\":\"前段高速贴装,配置 16 头轻量贴装头\",\"serialNumber\":\"NPMD3A24031801\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetCode\":\"FA-SMT-2024-001\",\"assetId\":1,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"印刷设备\",\"deviceCode\":\"SMT-L01-PRINTER-01\",\"deviceName\":\"全自动锡膏印刷机\",\"enabledDate\":1712520000000,\"id\":1,\"keeper\":\"王磊\",\"lastInventoryTime\":1789726083000,\"location\":\"一车间 SMT-01 线前段\",\"manufacturer\":\"ASMPT\",\"model\":\"DEK NeoHorizon 03iX\",\"nextMaintenanceDate\":1791403200000,\"purchaseDate\":1710705600000,\"remark\":\"配置 2D 检测与自动擦网单元\",\"serialNumber\":\"DEK24NH03187\",\"status\":\"IN_USE\",\"updateTime\":1789726082000,\"useDepartment\":\"SMT生产部\"}]}}'); +INSERT INTO `tbl_log` VALUES (8338, 63, '接口日志', '43.174.53.16/1.9.116.218', '2026-09-29 10:30:18', 0, 'AssetController.options()', NULL, 'GET /apis/asset/options', '{}', '{\"code\":200,\"data\":{\"rows\":[{\"creator\":63,\"purchaseDate\":\"2025-02-10\",\"assetCode\":\"FA-TOOL-2025-008\",\"quantity\":1.000000,\"assetCategory\":\"工装设备\",\"keeper\":\"王磊\",\"originalValue\":78000.000000,\"specification\":\"SAWA SC-A1000\",\"remark\":\"用于钢网水基闭环清洗与烘干\",\"updateTime\":1789718123000,\"source\":\"DEMO\",\"deleteFlag\":\"0\",\"useDepartment\":\"SMT生产部\",\"unit\":\"台\",\"createTime\":1789718123000,\"assetName\":\"全自动钢网清洗机\",\"location\":\"一车间 钢网房\",\"id\":8,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2024-07-22\",\"assetCode\":\"FA-WH-2024-007\",\"quantity\":1.000000,\"assetCategory\":\"物流设备\",\"keeper\":\"张伟\",\"originalValue\":145000.000000,\"specification\":\"Toyota 8FBE20\",\"remark\":\"额定载荷 2.0 吨,持证人员操作\",\"updateTime\":1789718123000,\"source\":\"DEMO\",\"deleteFlag\":\"0\",\"useDepartment\":\"仓储物流部\",\"unit\":\"台\",\"createTime\":1789718123000,\"assetName\":\"电动平衡重式叉车\",\"location\":\"原材料仓充电区\",\"id\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2025-01-15\",\"assetCode\":\"FA-IT-2025-006\",\"quantity\":1.000000,\"assetCategory\":\"IT设备\",\"keeper\":\"赵敏\",\"originalValue\":168000.000000,\"specification\":\"Dell PowerEdge R760\",\"remark\":\"双机热备主节点,纳入信息安全资产清单\",\"updateTime\":1789718123000,\"source\":\"DEMO\",\"deleteFlag\":\"0\",\"useDepartment\":\"信息技术部\",\"unit\":\"台\",\"createTime\":1789718123000,\"assetName\":\"MES 数据库服务器\",\"location\":\"数据中心 A03 机柜\",\"id\":6,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2023-11-20\",\"assetCode\":\"FA-UTIL-2023-005\",\"quantity\":1.000000,\"assetCategory\":\"动力设备\",\"keeper\":\"陈晨\",\"originalValue\":186000.000000,\"specification\":\"Atlas Copco GA22 VSD+\",\"remark\":\"为 SMT 车间提供稳定压缩空气\",\"updateTime\":1789718123000,\"source\":\"DEMO\",\"deleteFlag\":\"0\",\"useDepartment\":\"设备动力部\",\"unit\":\"台\",\"createTime\":1789718123000,\"assetName\":\"螺杆式空气压缩机\",\"location\":\"动力站 1 号机位\",\"id\":5,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2024-04-06\",\"assetCode\":\"FA-QC-2024-004\",\"quantity\":1.000000,\"assetCategory\":\"检测设备\",\"keeper\":\"陈晨\",\"originalValue\":1120000.000000,\"specification\":\"Koh Young KY8030-3\",\"remark\":\"用于锡膏体积、高度及偏移检测\",\"updateTime\":1789718123000,\"source\":\"DEMO\",\"deleteFlag\":\"0\",\"useDepartment\":\"品质部\",\"unit\":\"台\",\"createTime\":1789718123000,\"assetName\":\"在线 3D SPI 检测系统\",\"location\":\"一车间 印刷检测区\",\"id\":4,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2024-04-06\",\"assetCode\":\"FA-QC-2024-003\",\"quantity\":1.000000,\"assetCategory\":\"检测设备\",\"keeper\":\"陈晨\",\"originalValue\":1350000.000000,\"specification\":\"Koh Young Zenith 2\",\"remark\":\"用于焊后外观与三维缺陷检测\",\"updateTime\":1789718123000,\"source\":\"DEMO\",\"deleteFlag\":\"0\",\"useDepartment\":\"品质部\",\"unit\":\"台\",\"createTime\":1789718123000,\"assetName\":\"在线 3D AOI 检测系统\",\"location\":\"一车间 AOI 检测区\",\"id\":3,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2024-03-18\",\"assetCode\":\"FA-SMT-2024-002\",\"quantity\":1.000000,\"assetCategory\":\"生产设备\",\"keeper\":\"王磊\",\"originalValue\":980000.000000,\"specification\":\"HELLER 1936MK7\",\"remark\":\"炉温曲线纳入工艺受控文件\",\"updateTime\":1789718123000,\"source\":\"DEMO\",\"deleteFlag\":\"0\",\"useDepartment\":\"SMT生产部\",\"unit\":\"台\",\"createTime\":1789718123000,\"assetName\":\"十温区氮气回流焊系统\",\"location\":\"一车间 SMT-01 线\",\"id\":2,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2024-03-18\",\"assetCode\":\"FA-SMT-2024-001\",\"quantity\":1.000000,\"assetCategory\":\"生产设备\",\"keeper\":\"王磊\",\"originalValue\":2850000.000000,\"specification\":\"Panasonic NPM-D3A 双轨配置\",\"remark\":\"关键设备,按月盘点并执行点检保养\",\"updateTime\":1789718123000,\"source\":\"DEMO\",\"deleteFlag\":\"0\",\"useDepartment\":\"SMT生产部\",\"unit\":\"台\",\"createTime\":1789718123000,\"assetName\":\"SMT 高速贴片生产线\",\"location\":\"一车间 SMT-01 线\",\"id\":1,\"status\":\"IN_USE\"}],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (8339, 63, '接口日志', '43.174.51.49/1.9.116.218', '2026-09-29 10:30:45', 0, 'AssetDeviceController.list(..)', NULL, 'GET /apis/assetDevice/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":10,\"rows\":[{\"assetCode\":\"FA-TOOL-2025-008\",\"assetId\":8,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"工装设备\",\"deviceCode\":\"TOOL-STENCIL-CLEAN-01\",\"deviceName\":\"全自动钢网清洗机\",\"enabledDate\":1739822400000,\"id\":10,\"keeper\":\"王磊\",\"location\":\"一车间 钢网房\",\"manufacturer\":\"SAWA\",\"model\":\"SC-A1000\",\"nextMaintenanceDate\":1794254400000,\"purchaseDate\":1739131200000,\"remark\":\"水基清洗、漂洗、热风干燥一体化\",\"serialNumber\":\"SAWA-A1000-250210\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetCode\":\"FA-WH-2024-007\",\"assetId\":7,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"物流设备\",\"deviceCode\":\"WH-FORKLIFT-01\",\"deviceName\":\"2 吨电动叉车\",\"enabledDate\":1722456000000,\"id\":9,\"keeper\":\"张伟\",\"location\":\"原材料仓充电区\",\"manufacturer\":\"Toyota\",\"model\":\"8FBE20\",\"nextMaintenanceDate\":1792872000000,\"purchaseDate\":1721592000000,\"remark\":\"锂电池版本,配置蓝光安全警示灯\",\"serialNumber\":\"TY-8FBE20-240722\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"仓储物流部\"},{\"assetCode\":\"FA-IT-2025-006\",\"assetId\":6,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"服务器\",\"deviceCode\":\"IT-MES-DB-01\",\"deviceName\":\"MES 数据库主服务器\",\"enabledDate\":1737489600000,\"id\":8,\"keeper\":\"赵敏\",\"location\":\"数据中心 A03-U18\",\"manufacturer\":\"Dell\",\"model\":\"PowerEdge R760\",\"nextMaintenanceDate\":1797278400000,\"purchaseDate\":1736884800000,\"remark\":\"双路 CPU、512GB 内存、全闪存 RAID10\",\"serialNumber\":\"CN-R760-25011501\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"信息技术部\"},{\"assetCode\":\"FA-UTIL-2023-005\",\"assetId\":5,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"动力设备\",\"deviceCode\":\"UTIL-AIR-01\",\"deviceName\":\"变频螺杆空压机\",\"enabledDate\":1701374400000,\"id\":7,\"keeper\":\"陈晨\",\"location\":\"动力站 1 号机位\",\"manufacturer\":\"Atlas Copco\",\"model\":\"GA22 VSD+\",\"nextMaintenanceDate\":1790798400000,\"purchaseDate\":1700424000000,\"remark\":\"运行压力 0.72MPa,接入能源管理系统\",\"serialNumber\":\"AC-GA22-2311209\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"设备动力部\"},{\"assetCode\":\"FA-QC-2024-004\",\"assetId\":4,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"检测设备\",\"deviceCode\":\"QC-SPI-01\",\"deviceName\":\"在线 3D SPI\",\"enabledDate\":1713384000000,\"id\":6,\"keeper\":\"陈晨\",\"location\":\"一车间 印刷检测区\",\"manufacturer\":\"Koh Young\",\"model\":\"KY8030-3\",\"nextMaintenanceDate\":1793908800000,\"purchaseDate\":1712347200000,\"remark\":\"与印刷机闭环反馈锡膏偏移数据\",\"serialNumber\":\"KY-8030-24040608\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"品质部\"},{\"assetCode\":\"FA-QC-2024-003\",\"assetId\":3,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"检测设备\",\"deviceCode\":\"QC-AOI-01\",\"deviceName\":\"在线 3D AOI\",\"enabledDate\":1713384000000,\"id\":5,\"keeper\":\"陈晨\",\"location\":\"一车间 AOI 检测区\",\"manufacturer\":\"Koh Young\",\"model\":\"Zenith 2\",\"nextMaintenanceDate\":1793822400000,\"purchaseDate\":1712347200000,\"remark\":\"具备 AI 缺陷复判和 SPC 数据接口\",\"serialNumber\":\"KY-Z2-24040615\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"品质部\"},{\"assetCode\":\"FA-SMT-2024-002\",\"assetId\":2,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"焊接设备\",\"deviceCode\":\"SMT-L01-REFLOW-01\",\"deviceName\":\"十温区氮气回流焊炉\",\"enabledDate\":1712692800000,\"id\":4,\"keeper\":\"王磊\",\"location\":\"一车间 SMT-01 线后段\",\"manufacturer\":\"Heller Industries\",\"model\":\"HELLER 1936MK7\",\"nextMaintenanceDate\":1792440000000,\"purchaseDate\":1710705600000,\"remark\":\"氮气闭环控制,支持双轨独立调宽\",\"serialNumber\":\"HLR1936-2403268\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetCode\":\"FA-SMT-2024-001\",\"assetId\":1,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"贴装设备\",\"deviceCode\":\"SMT-L01-MOUNTER-B\",\"deviceName\":\"多功能贴片机 B\",\"enabledDate\":1712520000000,\"id\":3,\"keeper\":\"王磊\",\"location\":\"一车间 SMT-01 线 B 工位\",\"manufacturer\":\"Panasonic\",\"model\":\"Panasonic NPM-W2S\",\"nextMaintenanceDate\":1792094400000,\"purchaseDate\":1710705600000,\"remark\":\"负责异形件及高精度元件贴装\",\"serialNumber\":\"NPMW2S24031802\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetCode\":\"FA-SMT-2024-001\",\"assetId\":1,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"贴装设备\",\"deviceCode\":\"SMT-L01-MOUNTER-A\",\"deviceName\":\"高速模块贴片机 A\",\"enabledDate\":1712520000000,\"id\":2,\"keeper\":\"王磊\",\"location\":\"一车间 SMT-01 线 A 工位\",\"manufacturer\":\"Panasonic\",\"model\":\"Panasonic NPM-D3A\",\"nextMaintenanceDate\":1792008000000,\"purchaseDate\":1710705600000,\"remark\":\"前段高速贴装,配置 16 头轻量贴装头\",\"serialNumber\":\"NPMD3A24031801\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetCode\":\"FA-SMT-2024-001\",\"assetId\":1,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"印刷设备\",\"deviceCode\":\"SMT-L01-PRINTER-01\",\"deviceName\":\"全自动锡膏印刷机\",\"enabledDate\":1712520000000,\"id\":1,\"keeper\":\"王磊\",\"lastInventoryTime\":1789726083000,\"location\":\"一车间 SMT-01 线前段\",\"manufacturer\":\"ASMPT\",\"model\":\"DEK NeoHorizon 03iX\",\"nextMaintenanceDate\":1791403200000,\"purchaseDate\":1710705600000,\"remark\":\"配置 2D 检测与自动擦网单元\",\"serialNumber\":\"DEK24NH03187\",\"status\":\"IN_USE\",\"updateTime\":1789726082000,\"useDepartment\":\"SMT生产部\"}]}}'); +INSERT INTO `tbl_log` VALUES (8340, 63, '接口日志', '43.174.52.68/1.9.116.218', '2026-09-29 10:30:52', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":8,\"rows\":[{\"assetCategory\":\"工装设备\",\"assetCode\":\"FA-TOOL-2025-008\",\"assetName\":\"全自动钢网清洗机\",\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"id\":8,\"keeper\":\"王磊\",\"location\":\"一车间 钢网房\",\"originalValue\":78000.000000,\"purchaseDate\":1739131200000,\"quantity\":1.000000,\"remark\":\"用于钢网水基闭环清洗与烘干\",\"source\":\"DEMO\",\"specification\":\"SAWA SC-A1000\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetCategory\":\"物流设备\",\"assetCode\":\"FA-WH-2024-007\",\"assetName\":\"电动平衡重式叉车\",\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"id\":7,\"keeper\":\"张伟\",\"location\":\"原材料仓充电区\",\"originalValue\":145000.000000,\"purchaseDate\":1721592000000,\"quantity\":1.000000,\"remark\":\"额定载荷 2.0 吨,持证人员操作\",\"source\":\"DEMO\",\"specification\":\"Toyota 8FBE20\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1789718123000,\"useDepartment\":\"仓储物流部\"},{\"assetCategory\":\"IT设备\",\"assetCode\":\"FA-IT-2025-006\",\"assetName\":\"MES 数据库服务器\",\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"id\":6,\"keeper\":\"赵敏\",\"location\":\"数据中心 A03 机柜\",\"originalValue\":168000.000000,\"purchaseDate\":1736884800000,\"quantity\":1.000000,\"remark\":\"双机热备主节点,纳入信息安全资产清单\",\"source\":\"DEMO\",\"specification\":\"Dell PowerEdge R760\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1789718123000,\"useDepartment\":\"信息技术部\"},{\"assetCategory\":\"动力设备\",\"assetCode\":\"FA-UTIL-2023-005\",\"assetName\":\"螺杆式空气压缩机\",\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"id\":5,\"keeper\":\"陈晨\",\"location\":\"动力站 1 号机位\",\"originalValue\":186000.000000,\"purchaseDate\":1700424000000,\"quantity\":1.000000,\"remark\":\"为 SMT 车间提供稳定压缩空气\",\"source\":\"DEMO\",\"specification\":\"Atlas Copco GA22 VSD+\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1789718123000,\"useDepartment\":\"设备动力部\"},{\"assetCategory\":\"检测设备\",\"assetCode\":\"FA-QC-2024-004\",\"assetName\":\"在线 3D SPI 检测系统\",\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"id\":4,\"keeper\":\"陈晨\",\"location\":\"一车间 印刷检测区\",\"originalValue\":1120000.000000,\"purchaseDate\":1712347200000,\"quantity\":1.000000,\"remark\":\"用于锡膏体积、高度及偏移检测\",\"source\":\"DEMO\",\"specification\":\"Koh Young KY8030-3\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1789718123000,\"useDepartment\":\"品质部\"},{\"assetCategory\":\"检测设备\",\"assetCode\":\"FA-QC-2024-003\",\"assetName\":\"在线 3D AOI 检测系统\",\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"id\":3,\"keeper\":\"陈晨\",\"location\":\"一车间 AOI 检测区\",\"originalValue\":1350000.000000,\"purchaseDate\":1712347200000,\"quantity\":1.000000,\"remark\":\"用于焊后外观与三维缺陷检测\",\"source\":\"DEMO\",\"specification\":\"Koh Young Zenith 2\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1789718123000,\"useDepartment\":\"品质部\"},{\"assetCategory\":\"生产设备\",\"assetCode\":\"FA-SMT-2024-002\",\"assetName\":\"十温区氮气回流焊系统\",\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"id\":2,\"keeper\":\"王磊\",\"location\":\"一车间 SMT-01 线\",\"originalValue\":980000.000000,\"purchaseDate\":1710705600000,\"quantity\":1.000000,\"remark\":\"炉温曲线纳入工艺受控文件\",\"source\":\"DEMO\",\"specification\":\"HELLER 1936MK7\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetCategory\":\"生产设备\",\"assetCode\":\"FA-SMT-2024-001\",\"assetName\":\"SMT 高速贴片生产线\",\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"id\":1,\"keeper\":\"王磊\",\"location\":\"一车间 SMT-01 线\",\"originalValue\":2850000.000000,\"purchaseDate\":1710705600000,\"quantity\":1.000000,\"remark\":\"关键设备,按月盘点并执行点检保养\",\"source\":\"DEMO\",\"specification\":\"Panasonic NPM-D3A 双轨配置\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"}]}}'); +INSERT INTO `tbl_log` VALUES (8341, 63, '接口日志', '43.174.32.14/1.9.116.218', '2026-09-29 10:31:43', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (8342, 63, '接口日志', '43.174.51.49/1.9.116.218', '2026-09-29 10:31:52', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-04\",\"inbound\":100669.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (8343, 63, '接口日志', '43.174.32.19/1.9.116.218', '2026-09-29 10:31:59', 0, 'AccountController.getStatistics(..)', NULL, 'GET /apis/account/getStatistics', '{\"name\":\"\",\"serialNo\":\"\"}', '{\"code\":200,\"data\":{\"allCurrentAmount\":\"4375818.53\",\"allMonthAmount\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8344, 63, '接口日志', '43.152.142.110/1.9.116.218', '2026-09-29 10:31:59', 0, 'AccountController.listWithBalance(..)', NULL, 'GET /apis/account/listWithBalance', '{\"name\":\"\",\"serialNo\":\"\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63,\"thisMonthAmount\":\"0\"},{\"currentAmount\":4375618.532800,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63,\"thisMonthAmount\":\"0\"}]}}'); +INSERT INTO `tbl_log` VALUES (8345, 63, '接口日志', '43.152.142.142/1.9.116.218', '2026-09-29 10:32:12', 0, 'AccountController.findAccountInOutList(..)', NULL, 'GET /apis/account/findAccountInOutList', '{\"currentPage\":1,\"pageSize\":10,\"accountId\":17,\"initialAmount\":100,\"number\":\"\",\"beginTime\":\"\",\"endTime\":\"\"}', '{\"code\":200,\"data\":{\"total\":100,\"rows\":[{\"aList\":\"\",\"accountId\":17,\"amList\":\"\",\"balance\":4375618.532800,\"changeAmount\":-236946.640000,\"fromType\":\"financial\",\"number\":\"FK-PV-008186-87-1PH-WS79-ADD1-11\",\"operTime\":\"2026-08-14 00:00:00\",\"remark\":\"Stock Status供应商付款;PV:PV 008186/87\",\"supplierName\":\"浙江瑞银电子有限公司\",\"type\":\"付款\"},{\"aList\":\"\",\"accountId\":17,\"amList\":\"\",\"balance\":4375618.532800,\"changeAmount\":-947751.900000,\"fromType\":\"financial\",\"number\":\"FK-PV-008186-87-3PH-APEC3-WC-OV-25\",\"operTime\":\"2026-08-14 00:00:00\",\"remark\":\"Stock Status供应商付款;PV:PV 008186/87\",\"supplierName\":\"浙江瑞银电子有限公司\",\"type\":\"付款\"},{\"aList\":\"\",\"accountId\":17,\"amList\":\"\",\"balance\":4375618.532800,\"changeAmount\":-947751.900000,\"fromType\":\"financial\",\"number\":\"FK-PV-008186-87-3PH-APEC3-WC-OV-25\",\"operTime\":\"2026-08-14 00:00:00\",\"remark\":\"Stock Status供应商付款;PV:PV 008186/87\",\"supplierName\":\"浙江瑞银电子有限公司\",\"type\":\"付款\"},{\"aList\":\"\",\"accountId\":17,\"amList\":\"\",\"balance\":4375618.532800,\"changeAmount\":80850.000000,\"fromType\":\"financial\",\"number\":\"SK-INV_2133-65\",\"operTime\":\"2026-08-14 00:00:00\",\"remark\":\"Stock Status客户收款;发票:INV_2133\",\"supplierName\":\"TNB\",\"type\":\"收款\"},{\"aList\":\"\",\"accountId\":17,\"amList\":\"\",\"balance\":4375618.532800,\"changeAmount\":-236946.640000,\"fromType\":\"financial\",\"number\":\"FK-PV-008186-87-1PH-WS79-ADD1-11\",\"operTime\":\"2026-08-14 00:00:00\",\"remark\":\"Stock Status供应商付款;PV:PV 008186/87\",\"supplierName\":\"浙江瑞银电子有限公司\",\"type\":\"付款\"},{\"aList\":\"\",\"accountId\":17,\"amList\":\"\",\"balance\":4375618.532800,\"changeAmount\":80850.000000,\"fromType\":\"financial\",\"number\":\"SK-INV_2133-65\",\"operTime\":\"2026-08-14 00:00:00\",\"remark\":\"Stock Status客户收款;发票:INV_2133\",\"supplierName\":\"TNB\",\"type\":\"收款\"},{\"aList\":\"\",\"accountId\":17,\"amList\":\"\",\"balance\":6583315.612800,\"changeAmount\":1122000.000000,\"fromType\":\"financial\",\"number\":\"SK-INV_2129-11\",\"operTime\":\"2026-08-13 00:00:00\",\"remark\":\"Stock Status客户收款;发票:INV_2129\",\"supplierName\":\"TNB\",\"type\":\"收款\"},{\"aList\":\"\",\"accountId\":17,\"amList\":\"\",\"balance\":6583315.612800,\"changeAmount\":1122000.000000,\"fromType\":\"financial\",\"number\":\"SK-INV_2129-11\",\"operTime\":\"2026-08-13 00:00:00\",\"remark\":\"Stock Status客户收款;发票:INV_2129\",\"supplierName\":\"TNB\",\"type\":\"收款\"},{\"aList\":\"\",\"accountId\":17,\"amList\":\"\",\"balance\":4339315.612800,\"changeAmount\":242550.000000,\"fromType\":\"financial\",\"number\":\"SK-INV_2130-44\",\"operTime\":\"2026-08-07 00:00:00\",\"remark\":\"Stock Status客户收款;发票:INV_2130\",\"supplierName\":\"TNB\",\"type\":\"收款\"},{\"aList\":\"\",\"accountId\":17,\"amList\":\"\",\"balance\":4339315.612800,\"changeAmount\":242550.000000,\"fromType\":\"financial\",\"number\":\"SK-INV_2130-44\",\"operTime\":\"2026-08-07 00:00:00\",\"remark\":\"Stock Status客户收款;发票:INV_2130\",\"supplierName\":\"TNB\",\"type\":\"收款\"}]}}'); +INSERT INTO `tbl_log` VALUES (8346, 63, '接口日志', '43.174.54.50/1.9.116.218', '2026-09-29 10:32:16', 0, 'AccountController.findAccountInOutList(..)', NULL, 'GET /apis/account/findAccountInOutList', '{\"currentPage\":2,\"pageSize\":10,\"accountId\":17,\"initialAmount\":100,\"number\":\"\",\"beginTime\":\"\",\"endTime\":\"\"}', '{\"code\":200,\"data\":{\"total\":100,\"rows\":[{\"aList\":\"\",\"accountId\":17,\"amList\":\"\",\"balance\":3854215.612800,\"changeAmount\":-954860.058400,\"fromType\":\"financial\",\"number\":\"FK-PV-008145-45---ZHEJIANG-METRONIX-3PH-APEC3-WC-O\",\"operTime\":\"2026-08-03 00:00:00\",\"remark\":\"Stock Status供应商付款;PV:PV 008145/45 - ZHEJIANG & METRONIX\",\"supplierName\":\"浙江瑞银电子有限公司\",\"type\":\"付款\"},{\"aList\":\"\",\"accountId\":17,\"amList\":\"\",\"balance\":3854215.612800,\"changeAmount\":-954860.058400,\"fromType\":\"financial\",\"number\":\"FK-PV-008145-45---ZHEJIANG-METRONIX-3PH-APEC3-WC-O\",\"operTime\":\"2026-08-03 00:00:00\",\"remark\":\"Stock Status供应商付款;PV:PV 008145/45 - ZHEJIANG & METRONIX\",\"supplierName\":\"浙江瑞银电子有限公司\",\"type\":\"付款\"},{\"aList\":\"\",\"accountId\":17,\"amList\":\"\",\"balance\":5763935.729600,\"changeAmount\":161700.000000,\"fromType\":\"financial\",\"number\":\"SK-INV_2122-26\",\"operTime\":\"2026-07-31 00:00:00\",\"remark\":\"Stock Status客户收款;发票:INV_2122\",\"supplierName\":\"TNB\",\"type\":\"收款\"},{\"aList\":\"\",\"accountId\":17,\"amList\":\"\",\"balance\":5763935.729600,\"changeAmount\":161700.000000,\"fromType\":\"financial\",\"number\":\"SK-INV_2122-26\",\"operTime\":\"2026-07-31 00:00:00\",\"remark\":\"Stock Status客户收款;发票:INV_2122\",\"supplierName\":\"TNB\",\"type\":\"收款\"},{\"aList\":\"\",\"accountId\":17,\"amList\":\"\",\"balance\":5440535.729600,\"changeAmount\":161700.000000,\"fromType\":\"financial\",\"number\":\"SK-INV_2113-15\",\"operTime\":\"2026-07-28 00:00:00\",\"remark\":\"Stock Status客户收款;发票:INV_2113\",\"supplierName\":\"TNB\",\"type\":\"收款\"},{\"aList\":\"\",\"accountId\":17,\"amList\":\"\",\"balance\":5440535.729600,\"changeAmount\":161700.000000,\"fromType\":\"financial\",\"number\":\"SK-INV_2113-15\",\"operTime\":\"2026-07-28 00:00:00\",\"remark\":\"Stock Status客户收款;发票:INV_2113\",\"supplierName\":\"TNB\",\"type\":\"收款\"},{\"aList\":\"\",\"accountId\":17,\"amList\":\"\",\"balance\":5117135.729600,\"changeAmount\":242550.000000,\"fromType\":\"financial\",\"number\":\"SK-INV_2111-11\",\"operTime\":\"2026-07-27 00:00:00\",\"remark\":\"Stock Status客户收款;发票:INV_2111\",\"supplierName\":\"TNB\",\"type\":\"收款\"},{\"aList\":\"\",\"accountId\":17,\"amList\":\"\",\"balance\":5117135.729600,\"changeAmount\":242550.000000,\"fromType\":\"financial\",\"number\":\"SK-INV_2111-11\",\"operTime\":\"2026-07-27 00:00:00\",\"remark\":\"Stock Status客户收款;发票:INV_2111\",\"supplierName\":\"TNB\",\"type\":\"收款\"},{\"aList\":\"\",\"accountId\":17,\"amList\":\"\",\"balance\":4632035.729600,\"changeAmount\":1122000.000000,\"fromType\":\"financial\",\"number\":\"SK-INV_2110-25\",\"operTime\":\"2026-07-24 00:00:00\",\"remark\":\"Stock Status客户收款;发票:INV_2110\",\"supplierName\":\"TNB\",\"type\":\"收款\"},{\"aList\":\"\",\"accountId\":17,\"amList\":\"\",\"balance\":4632035.729600,\"changeAmount\":1122000.000000,\"fromType\":\"financial\",\"number\":\"SK-INV_2110-25\",\"operTime\":\"2026-07-24 00:00:00\",\"remark\":\"Stock Status客户收款;发票:INV_2110\",\"supplierName\":\"TNB\",\"type\":\"收款\"}]}}'); +INSERT INTO `tbl_log` VALUES (8347, 63, '接口日志', '43.152.142.86/1.9.116.218', '2026-09-29 10:32:16', 0, 'AccountController.findAccountInOutList(..)', NULL, 'GET /apis/account/findAccountInOutList', '{\"currentPage\":3,\"pageSize\":10,\"accountId\":17,\"initialAmount\":100,\"number\":\"\",\"beginTime\":\"\",\"endTime\":\"\"}', '{\"code\":200,\"data\":{\"total\":100,\"rows\":[{\"aList\":\"\",\"accountId\":17,\"amList\":\"\",\"balance\":2388035.729600,\"changeAmount\":1122000.000000,\"fromType\":\"financial\",\"number\":\"SK-INV_2108-18\",\"operTime\":\"2026-07-16 00:00:00\",\"remark\":\"Stock Status客户收款;发票:INV_2108\",\"supplierName\":\"TNB\",\"type\":\"收款\"},{\"aList\":\"\",\"accountId\":17,\"amList\":\"\",\"balance\":2388035.729600,\"changeAmount\":1122000.000000,\"fromType\":\"financial\",\"number\":\"SK-INV_2108-18\",\"operTime\":\"2026-07-16 00:00:00\",\"remark\":\"Stock Status客户收款;发票:INV_2108\",\"supplierName\":\"TNB\",\"type\":\"收款\"},{\"aList\":\"\",\"accountId\":17,\"amList\":\"\",\"balance\":144035.729600,\"changeAmount\":80850.000000,\"fromType\":\"financial\",\"number\":\"SK-INV_2131-47\",\"operTime\":\"2026-07-13 00:00:00\",\"remark\":\"Stock Status客户收款;发票:INV_2131\",\"supplierName\":\"TNB\",\"type\":\"收款\"},{\"aList\":\"\",\"accountId\":17,\"amList\":\"\",\"balance\":144035.729600,\"changeAmount\":80850.000000,\"fromType\":\"financial\",\"number\":\"SK-INV_2131-47\",\"operTime\":\"2026-07-13 00:00:00\",\"remark\":\"Stock Status客户收款;发票:INV_2131\",\"supplierName\":\"TNB\",\"type\":\"收款\"},{\"aList\":\"\",\"accountId\":17,\"amList\":\"\",\"balance\":-17664.270400,\"changeAmount\":1122000.000000,\"fromType\":\"financial\",\"number\":\"SK-INV_2107-14\",\"operTime\":\"2026-07-06 00:00:00\",\"remark\":\"Stock Status客户收款;发票:INV_2107\",\"supplierName\":\"TNB\",\"type\":\"收款\"},{\"aList\":\"\",\"accountId\":17,\"amList\":\"\",\"balance\":-17664.270400,\"changeAmount\":1122000.000000,\"fromType\":\"financial\",\"number\":\"SK-INV_2107-14\",\"operTime\":\"2026-07-06 00:00:00\",\"remark\":\"Stock Status客户收款;发票:INV_2107\",\"supplierName\":\"TNB\",\"type\":\"收款\"},{\"aList\":\"\",\"accountId\":17,\"amList\":\"\",\"balance\":-2261664.270400,\"changeAmount\":1122000.000000,\"fromType\":\"financial\",\"number\":\"SK-INV_2102-11\",\"operTime\":\"2026-06-30 00:00:00\",\"remark\":\"Stock Status客户收款;发票:INV_2102\",\"supplierName\":\"TNB\",\"type\":\"收款\"},{\"aList\":\"\",\"accountId\":17,\"amList\":\"\",\"balance\":-2261664.270400,\"changeAmount\":1122000.000000,\"fromType\":\"financial\",\"number\":\"SK-INV_2102-11\",\"operTime\":\"2026-06-30 00:00:00\",\"remark\":\"Stock Status客户收款;发票:INV_2102\",\"supplierName\":\"TNB\",\"type\":\"收款\"},{\"aList\":\"\",\"accountId\":17,\"amList\":\"\",\"balance\":-4505664.270400,\"changeAmount\":-514105.959600,\"fromType\":\"financial\",\"number\":\"FK-PV-007510-1PH-WS79-55\",\"operTime\":\"2025-10-15 00:00:00\",\"remark\":\"Stock Status供应商付款;PV:PV 007510\",\"supplierName\":\"浙江瑞银电子有限公司\",\"type\":\"付款\"},{\"aList\":\"\",\"accountId\":17,\"amList\":\"\",\"balance\":-4505664.270400,\"changeAmount\":-514105.959600,\"fromType\":\"financial\",\"number\":\"FK-PV-007510-1PH-WS79-55\",\"operTime\":\"2025-10-15 00:00:00\",\"remark\":\"Stock Status供应商付款;PV:PV 007510\",\"supplierName\":\"浙江瑞银电子有限公司\",\"type\":\"付款\"}]}}'); +INSERT INTO `tbl_log` VALUES (8348, 63, '接口日志', '43.174.52.68/1.9.116.218', '2026-09-29 10:32:26', 0, 'AccountController.findAccountInOutList(..)', NULL, 'GET /apis/account/findAccountInOutList', '{\"currentPage\":10,\"pageSize\":10,\"accountId\":17,\"initialAmount\":100,\"number\":\"\",\"beginTime\":\"\",\"endTime\":\"\"}', '{\"code\":200,\"data\":{\"total\":100,\"rows\":[{\"aList\":\"\",\"accountId\":17,\"amList\":\"\",\"balance\":1647118.890000,\"changeAmount\":-490440.555000,\"fromType\":\"financial\",\"number\":\"FK-PV-7297-1PH-WS79-11\",\"operTime\":\"2025-07-11 00:00:00\",\"remark\":\"Stock Status供应商付款;PV:PV 7297\",\"supplierName\":\"浙江瑞银电子有限公司\",\"type\":\"付款\"},{\"aList\":\"\",\"accountId\":17,\"amList\":\"\",\"balance\":1647118.890000,\"changeAmount\":-490440.555000,\"fromType\":\"financial\",\"number\":\"FK-PV-7297-1PH-WS79-11\",\"operTime\":\"2025-07-11 00:00:00\",\"remark\":\"Stock Status供应商付款;PV:PV 7297\",\"supplierName\":\"浙江瑞银电子有限公司\",\"type\":\"付款\"},{\"aList\":\"\",\"accountId\":17,\"amList\":\"\",\"balance\":2628000.000000,\"changeAmount\":80850.000000,\"fromType\":\"financial\",\"number\":\"SK-INV_1707-11\",\"operTime\":\"2025-07-09 00:00:00\",\"remark\":\"Stock Status客户收款;发票:INV_1707\",\"supplierName\":\"TNB\",\"type\":\"收款\"},{\"aList\":\"\",\"accountId\":17,\"amList\":\"\",\"balance\":2628000.000000,\"changeAmount\":80850.000000,\"fromType\":\"financial\",\"number\":\"SK-INV_1707-11\",\"operTime\":\"2025-07-09 00:00:00\",\"remark\":\"Stock Status客户收款;发票:INV_1707\",\"supplierName\":\"TNB\",\"type\":\"收款\"},{\"aList\":\"\",\"accountId\":17,\"amList\":\"\",\"balance\":2466300.000000,\"changeAmount\":242550.000000,\"fromType\":\"financial\",\"number\":\"SK-INV_1717-22\",\"operTime\":\"2025-06-15 00:00:00\",\"remark\":\"Stock Status客户收款;发票:INV_1717\",\"supplierName\":\"TNB\",\"type\":\"收款\"},{\"aList\":\"\",\"accountId\":17,\"amList\":\"\",\"balance\":2466300.000000,\"changeAmount\":242550.000000,\"fromType\":\"financial\",\"number\":\"SK-INV_1717-22\",\"operTime\":\"2025-06-15 00:00:00\",\"remark\":\"Stock Status客户收款;发票:INV_1717\",\"supplierName\":\"TNB\",\"type\":\"收款\"},{\"aList\":\"\",\"accountId\":17,\"amList\":\"\",\"balance\":1981200.000000,\"changeAmount\":242550.000000,\"fromType\":\"financial\",\"number\":\"SK-INV_1716-19\",\"operTime\":\"2025-01-20 00:00:00\",\"remark\":\"Stock Status客户收款;发票:INV_1716\",\"supplierName\":\"TNB\",\"type\":\"收款\"},{\"aList\":\"\",\"accountId\":17,\"amList\":\"\",\"balance\":1981200.000000,\"changeAmount\":242550.000000,\"fromType\":\"financial\",\"number\":\"SK-INV_1716-19\",\"operTime\":\"2025-01-20 00:00:00\",\"remark\":\"Stock Status客户收款;发票:INV_1716\",\"supplierName\":\"TNB\",\"type\":\"收款\"},{\"aList\":\"\",\"accountId\":17,\"amList\":\"\",\"balance\":1496100.000000,\"changeAmount\":748000.000000,\"fromType\":\"financial\",\"number\":\"SK-INV_1723-13\",\"operTime\":\"2025-01-14 00:00:00\",\"remark\":\"Stock Status客户收款;发票:INV_1723\",\"supplierName\":\"TNB\",\"type\":\"收款\"},{\"aList\":\"\",\"accountId\":17,\"amList\":\"\",\"balance\":1496100.000000,\"changeAmount\":748000.000000,\"fromType\":\"financial\",\"number\":\"SK-INV_1723-13\",\"operTime\":\"2025-01-14 00:00:00\",\"remark\":\"Stock Status客户收款;发票:INV_1723\",\"supplierName\":\"TNB\",\"type\":\"收款\"}]}}'); +INSERT INTO `tbl_log` VALUES (8349, NULL, '接口日志', '117.40.82.179/115.220.229.151', '2026-09-29 12:48:48', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (8350, NULL, '接口日志', '60.163.165.168/115.220.229.151', '2026-09-29 12:48:48', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (8351, NULL, '接口日志', '60.163.165.75/115.220.229.151', '2026-09-29 12:49:46', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (8352, NULL, '接口日志', '117.44.77.227/115.220.229.151', '2026-09-29 12:49:47', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (8353, NULL, '接口日志', '112.13.210.19/115.220.229.151', '2026-09-29 12:50:29', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (8354, NULL, '接口日志', '112.13.210.17/115.220.229.151', '2026-09-29 12:50:30', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (8355, NULL, '接口日志', '112.13.210.17/115.220.229.151', '2026-09-29 12:51:11', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (8356, NULL, '接口日志', '112.13.210.152/115.220.229.151', '2026-09-29 12:51:12', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (8357, NULL, '接口日志', '112.13.210.33/115.220.229.151', '2026-09-29 12:51:13', 0, 'PlatformConfigController.getPlatformCheckcodeFlag(..)', NULL, 'GET /apis/platformConfig/getPlatform/checkcodeFlag', '{}', '\"1\"'); +INSERT INTO `tbl_log` VALUES (8358, NULL, '接口日志', '112.13.210.47/115.220.229.151', '2026-09-29 12:51:14', 0, 'UserController.randomImage(..)', NULL, 'GET /apis/user/randomImage', '{}', '{\"code\":200,\"data\":{\"base64\":\"data:image/jpg;base64,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\",\"uuid\":\"b2553bf0a24f46a7a5858279bb4a4107\"}}'); +INSERT INTO `tbl_log` VALUES (8359, NULL, '接口日志', '117.44.77.212/115.220.229.151', '2026-09-29 12:51:23', 0, 'UserController.login(..)', NULL, 'POST /apis/user/login', '{\"userParam\":{\"code\":\"9hos\",\"loginName\":\"admin\",\"password\":\"******\",\"uuid\":\"b2553bf0a24f46a7a5858279bb4a4107\"}}', '{\"code\":200,\"data\":{\"msgTip\":\"user password error\"}}'); +INSERT INTO `tbl_log` VALUES (8360, NULL, '接口日志', '112.13.210.44/115.220.229.151', '2026-09-29 12:51:24', 0, 'UserController.randomImage(..)', NULL, 'GET /apis/user/randomImage', '{}', '{\"code\":200,\"data\":{\"base64\":\"data:image/jpg;base64,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\",\"uuid\":\"804946d9eed94b3b80a44c3166ed74b8\"}}'); +INSERT INTO `tbl_log` VALUES (8361, NULL, '接口日志', '112.13.210.158/60.176.66.231', '2026-09-29 12:51:35', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (8362, NULL, '接口日志', '112.13.210.47/60.176.66.231', '2026-09-29 12:51:35', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (8363, NULL, '接口日志', '112.13.210.19/60.176.66.231', '2026-09-29 12:51:38', 0, 'PlatformConfigController.getPlatformCheckcodeFlag(..)', NULL, 'GET /apis/platformConfig/getPlatform/checkcodeFlag', '{}', '\"1\"'); +INSERT INTO `tbl_log` VALUES (8364, NULL, '接口日志', '112.13.210.19/60.176.66.231', '2026-09-29 12:51:38', 0, 'UserController.randomImage(..)', NULL, 'GET /apis/user/randomImage', '{}', '{\"code\":200,\"data\":{\"base64\":\"data:image/jpg;base64,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\",\"uuid\":\"c455851336f54ac3809aa5485d011d99\"}}'); +INSERT INTO `tbl_log` VALUES (8365, NULL, '接口日志', '112.13.210.158/60.176.66.231', '2026-09-29 12:51:40', 0, 'UserController.randomImage(..)', NULL, 'GET /apis/user/randomImage', '{}', '{\"code\":200,\"data\":{\"base64\":\"data:image/jpg;base64,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\",\"uuid\":\"29d13318982041b390966a42a893f110\"}}'); +INSERT INTO `tbl_log` VALUES (8366, 63, '用户', '117.40.82.32/115.220.229.151', '2026-09-29 12:51:45', 0, '登录admin', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (8367, NULL, '接口日志', '117.40.82.32/115.220.229.151', '2026-09-29 12:51:45', 0, 'UserController.login(..)', NULL, 'POST /apis/user/login', '{\"userParam\":{\"code\":\"jo3r\",\"loginName\":\"admin\",\"password\":\"******\",\"uuid\":\"804946d9eed94b3b80a44c3166ed74b8\"}}', '{\"code\":200,\"data\":{\"pwdSimple\":\"******\",\"user\":{\"deleteFlag\":\"0\",\"description\":\"\",\"email\":\"666666@qq.com\",\"id\":63,\"ismanager\":1,\"isystem\":1,\"leaderFlag\":\"0\",\"loginName\":\"admin\",\"password\":\"******\",\"phonenum\":\"1123123123132\",\"position\":\"主管\",\"status\":0,\"tenantId\":63,\"username\":\"admin\"},\"msgTip\":\"user can login\",\"token\":\"******\"}}'); +INSERT INTO `tbl_log` VALUES (8368, 63, '接口日志', '112.13.210.19/115.220.229.151', '2026-09-29 12:51:45', 0, 'MaterialPropertyController.getAllList(..)', NULL, 'GET /apis/materialProperty/getAllList', '{}', '{\"code\":200,\"data\":[{\"anotherName\":\"扩展1\",\"id\":1,\"nativeName\":\"扩展1\"},{\"anotherName\":\"扩展2\",\"id\":2,\"nativeName\":\"扩展2\"},{\"anotherName\":\"扩展3\",\"id\":3,\"nativeName\":\"扩展3\"}]}'); +INSERT INTO `tbl_log` VALUES (8369, 63, '接口日志', '183.131.72.165/115.220.229.151', '2026-09-29 12:51:45', 0, 'FunctionController.findMenuByPNumber(..)', NULL, 'POST /apis/function/findMenuByPNumber', '{\"jsonObject\":{\"userId\":63,\"pNumber\":0}}', '[{\"component\":\"/layouts/TabLayout\",\"icon\":\"home\",\"id\":0,\"text\":\"首页\",\"url\":\"/dashboard/analysis\",\"textEn\":\"Home\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/SaleOrderList\",\"icon\":\"profile\",\"id\":242,\"text\":\"销售订单\",\"url\":\"/bill/sale_order\",\"textEn\":\"Sales Orders\"},{\"component\":\"/bill/SaleOutList\",\"icon\":\"profile\",\"id\":41,\"text\":\"销售出库\",\"url\":\"/bill/sale_out\",\"textEn\":\"Sales Shipments\"},{\"component\":\"/bill/DeliveryPlanList\",\"icon\":\"profile\",\"id\":271,\"text\":\"交货计划管理\",\"url\":\"/bill/delivery_plan\",\"textEn\":\"Delivery Plans\"},{\"component\":\"/bill/SaleShipmentList\",\"icon\":\"car\",\"id\":268,\"text\":\"发货管理\",\"url\":\"/bill/sale_shipment\",\"textEn\":\"Shipment Management\"},{\"component\":\"/bill/SaleBackList\",\"icon\":\"profile\",\"id\":200,\"text\":\"销售退货\",\"url\":\"/bill/sale_back\",\"textEn\":\"Sales Returns\"},{\"component\":\"/bill/RetailOutList\",\"icon\":\"profile\",\"id\":210,\"text\":\"零售出库\",\"url\":\"/bill/retail_out\",\"textEn\":\"Retail Shipments\"},{\"component\":\"/bill/RetailBackList\",\"icon\":\"profile\",\"id\":211,\"text\":\"零售退货\",\"url\":\"/bill/retail_back\",\"textEn\":\"Retail Returns\"}],\"icon\":\"shopping-cart\",\"id\":38,\"text\":\"销售管理\",\"url\":\"/billB\",\"textEn\":\"Sales Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/PurchaseApplyList\",\"icon\":\"profile\",\"id\":261,\"text\":\"请购单\",\"url\":\"/bill/purchase_apply\",\"textEn\":\"Purchase Requisitions\"},{\"component\":\"/bill/PurchaseOrderList\",\"icon\":\"profile\",\"id\":241,\"text\":\"采购订单\",\"url\":\"/bill/purchase_order\",\"textEn\":\"Purchase Orders\"},{\"component\":\"/bill/PurchaseInList\",\"icon\":\"profile\",\"id\":33,\"text\":\"采购入库\",\"url\":\"/bill/purchase_in\",\"textEn\":\"Purchase Receipts\"},{\"component\":\"/bill/PurchaseBackList\",\"icon\":\"profile\",\"id\":199,\"text\":\"采购退货\",\"url\":\"/bill/purchase_back\",\"textEn\":\"Purchase Returns\"}],\"icon\":\"retweet\",\"id\":32,\"text\":\"采购管理\",\"url\":\"/bill\",\"textEn\":\"Purchase Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/production/PackBomList\",\"icon\":\"profile\",\"id\":263,\"text\":\"生产方案\",\"url\":\"/production/pack_bom\",\"textEn\":\"Production BOMs\"},{\"component\":\"/production/OrderList\",\"icon\":\"profile\",\"id\":264,\"text\":\"生产工单\",\"url\":\"/production/order\",\"textEn\":\"Production Orders\"},{\"component\":\"/production/RequisitionList\",\"icon\":\"profile\",\"id\":265,\"text\":\"领料管理\",\"url\":\"/production/requisition\",\"textEn\":\"Material Requisitions\"},{\"component\":\"/production/ReportList\",\"icon\":\"profile\",\"id\":266,\"text\":\"完工报工\",\"url\":\"/production/report\",\"textEn\":\"Production Reports\"}],\"icon\":\"cluster\",\"id\":262,\"text\":\"生产管理\",\"url\":\"/production\",\"textEn\":\"Production Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/MaterialStock\",\"icon\":\"profile\",\"id\":246,\"text\":\"商品库存\",\"url\":\"/report/material_stock\",\"textEn\":\"Product Inventory\"},{\"component\":\"/bill/OtherInList\",\"icon\":\"profile\",\"id\":201,\"text\":\"其它入库\",\"url\":\"/bill/other_in\",\"textEn\":\"Other Receipts\"},{\"component\":\"/bill/OtherOutList\",\"icon\":\"profile\",\"id\":202,\"text\":\"其它出库\",\"url\":\"/bill/other_out\",\"textEn\":\"Other Shipments\"},{\"component\":\"/bill/HeadquartersInList\",\"icon\":\"profile\",\"id\":270,\"text\":\"总部入库\",\"url\":\"/bill/headquarters_in\",\"textEn\":\"Headquarters Receipts\"}],\"icon\":\"hdd\",\"id\":239,\"text\":\"仓库管理\",\"url\":\"/billD\",\"textEn\":\"Warehouse Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/financial/MoneyInList\",\"icon\":\"profile\",\"id\":204,\"text\":\"收款单\",\"url\":\"/financial/money_in\",\"textEn\":\"Receipt Vouchers\"},{\"component\":\"/financial/MoneyOutList\",\"icon\":\"profile\",\"id\":205,\"text\":\"付款单\",\"url\":\"/financial/money_out\",\"textEn\":\"Payment Vouchers\"}],\"icon\":\"money-collect\",\"id\":44,\"text\":\"财务管理\",\"url\":\"/financial\",\"textEn\":\"Finance Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/asset/AssetDashboard\",\"icon\":\"dashboard\",\"id\":276,\"text\":\"资产汇总\",\"url\":\"/asset\",\"textEn\":\"Asset Overview\"},{\"component\":\"/asset/AssetList\",\"icon\":\"profile\",\"id\":273,\"text\":\"资产台账\",\"url\":\"/asset/ledger\",\"textEn\":\"Asset Ledger\"},{\"component\":\"/asset/DeviceList\",\"icon\":\"tool\",\"id\":274,\"text\":\"设备台账\",\"url\":\"/asset/device\",\"textEn\":\"Device Ledger\"},{\"component\":\"/asset/InventoryList\",\"icon\":\"scan\",\"id\":275,\"text\":\"资产盘点\",\"url\":\"/asset/inventory\",\"textEn\":\"Asset Inventory\"}],\"icon\":\"bank\",\"id\":272,\"text\":\"资产管理\",\"url\":\"/assetManagement\",\"textEn\":\"Asset Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/material/MaterialCategoryList\",\"icon\":\"profile\",\"id\":22,\"text\":\"商品类别\",\"url\":\"/material/material_category\",\"textEn\":\"Product Categories\"},{\"component\":\"/material/MaterialList\",\"icon\":\"profile\",\"id\":23,\"text\":\"商品信息\",\"url\":\"/material/material\",\"textEn\":\"Product Information\"},{\"component\":\"/system/UnitList\",\"icon\":\"profile\",\"id\":220,\"text\":\"多单位\",\"url\":\"/system/unit\",\"textEn\":\"Multiple Units\"},{\"component\":\"/material/MaterialAttributeList\",\"icon\":\"profile\",\"id\":247,\"text\":\"多属性\",\"url\":\"/material/material_attribute\",\"textEn\":\"Product Attributes\"}],\"icon\":\"shopping\",\"id\":21,\"text\":\"商品管理\",\"url\":\"/material\",\"textEn\":\"Product Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/AccountReport\",\"icon\":\"profile\",\"id\":207,\"text\":\"账户统计\",\"url\":\"/report/account_report\",\"textEn\":\"Account Summary\"},{\"component\":\"/report/RetailOutReport\",\"icon\":\"profile\",\"id\":259,\"text\":\"零售统计\",\"url\":\"/report/retail_out_report\",\"textEn\":\"Retail Summary\"},{\"component\":\"/report/BuyInReport\",\"icon\":\"profile\",\"id\":208,\"text\":\"采购统计\",\"url\":\"/report/buy_in_report\",\"textEn\":\"Purchase Summary\"},{\"component\":\"/report/SaleOutReport\",\"icon\":\"profile\",\"id\":209,\"text\":\"销售统计\",\"url\":\"/report/sale_out_report\",\"textEn\":\"Sales Summary\"},{\"component\":\"/report/InDetail\",\"icon\":\"profile\",\"id\":226,\"text\":\"入库明细\",\"url\":\"/report/in_detail\",\"textEn\":\"Inbound Details\"},{\"component\":\"/report/OutDetail\",\"icon\":\"profile\",\"id\":227,\"text\":\"出库明细\",\"url\":\"/report/out_detail\",\"textEn\":\"Outbound Details\"},{\"component\":\"/report/InMaterialCount\",\"icon\":\"profile\",\"id\":228,\"text\":\"入库汇总\",\"url\":\"/report/in_material_count\",\"textEn\":\"Inbound Summary\"},{\"component\":\"/report/OutMaterialCount\",\"icon\":\"profile\",\"id\":229,\"text\":\"出库汇总\",\"url\":\"/report/out_material_count\",\"textEn\":\"Outbound Summary\"},{\"component\":\"/report/InOutStockReport\",\"icon\":\"profile\",\"id\":59,\"text\":\"进销存统计\",\"url\":\"/report/in_out_stock_report\",\"textEn\":\"Inventory Transaction Summary\"},{\"component\":\"/report/CustomerAccount\",\"icon\":\"profile\",\"id\":235,\"text\":\"客户对账\",\"url\":\"/report/customer_account\",\"textEn\":\"Customer Reconciliation\"},{\"component\":\"/report/VendorAccount\",\"icon\":\"profile\",\"id\":237,\"text\":\"供应商对账\",\"url\":\"/report/vendor_account\",\"textEn\":\"Supplier Reconciliation\"},{\"component\":\"/report/StockWarningReport\",\"icon\":\"profile\",\"id\":244,\"text\":\"库存预警\",\"url\":\"/report/stock_warning_report\",\"textEn\":\"Stock Alerts\"}],\"icon\":\"pie-chart\",\"id\":198,\"text\":\"报表查询\",\"url\":\"/report\",\"textEn\":\"Reports\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/VendorList\",\"icon\":\"profile\",\"id\":25,\"text\":\"供应商信息\",\"url\":\"/system/vendor\",\"textEn\":\"Suppliers\"},{\"component\":\"/system/CustomerList\",\"icon\":\"profile\",\"id\":217,\"text\":\"客户信息\",\"url\":\"/system/customer\",\"textEn\":\"Customers\"},{\"component\":\"/system/MemberList\",\"icon\":\"profile\",\"id\":218,\"text\":\"会员信息\",\"url\":\"/system/member\",\"textEn\":\"Members\"},{\"component\":\"/system/CustomerCategoryList\",\"icon\":\"bars\",\"id\":267,\"text\":\"客户分类\",\"url\":\"/system/customerCategory\",\"textEn\":\"Customer Categories\"},{\"component\":\"/system/DepotList\",\"icon\":\"profile\",\"id\":26,\"text\":\"仓库信息\",\"url\":\"/system/depot\",\"textEn\":\"Warehouses\"},{\"component\":\"/system/InOutItemList\",\"icon\":\"profile\",\"id\":194,\"text\":\"收支项目\",\"url\":\"/system/in_out_item\",\"textEn\":\"Income and Expense Items\"},{\"component\":\"/system/AccountList\",\"icon\":\"profile\",\"id\":195,\"text\":\"结算账户\",\"url\":\"/system/account\",\"textEn\":\"Settlement Accounts\"},{\"component\":\"/system/PersonList\",\"icon\":\"profile\",\"id\":31,\"text\":\"操作人员管理\",\"url\":\"/system/person\",\"textEn\":\"Operators\"}],\"icon\":\"appstore\",\"id\":24,\"text\":\"基础资料\",\"url\":\"/systemA\",\"textEn\":\"Master Data\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/RoleList\",\"icon\":\"profile\",\"id\":13,\"text\":\"角色管理\",\"url\":\"/system/role\",\"textEn\":\"Role Management\"},{\"component\":\"/system/UserList\",\"icon\":\"profile\",\"id\":14,\"text\":\"用户管理\",\"url\":\"/system/user\",\"textEn\":\"User Management\"},{\"component\":\"/system/OrganizationList\",\"icon\":\"profile\",\"id\":243,\"text\":\"部门管理\",\"url\":\"/system/organization\",\"textEn\":\"Department Management\"},{\"component\":\"/system/LogList\",\"icon\":\"profile\",\"id\":15,\"text\":\"日志管理\",\"url\":\"/system/log\",\"textEn\":\"Log Management\"},{\"component\":\"/material/MaterialPropertyList\",\"icon\":\"profile\",\"id\":236,\"text\":\"商品属性\",\"url\":\"/material/material_property\",\"textEn\":\"Product Properties\"},{\"component\":\"/system/SystemConfigList\",\"icon\":\"profile\",\"id\":234,\"text\":\"系统配置\",\"url\":\"/system/system_config\",\"textEn\":\"System Configuration\"},{\"component\":\"/system/FunctionList\",\"icon\":\"profile\",\"id\":16,\"text\":\"菜单管理\",\"url\":\"/system/function\",\"textEn\":\"Resource Menus\"},{\"component\":\"/system/PluginList\",\"icon\":\"profile\",\"id\":245,\"text\":\"插件管理\",\"url\":\"/system/plugin\",\"textEn\":\"Plugin Management\"},{\"component\":\"/system/DictList\",\"icon\":\"profile\",\"id\":260,\"text\":\"字典管理\",\"url\":\"/system/dict\",\"textEn\":\"Dictionary Management\"},{\"component\":\"/system/PlatformConfigList\",\"icon\":\"profile\",\"id\":258,\"text\":\"平台配置\",\"url\":\"/system/platform_config\",\"textEn\":\"Platform Configuration\"}],\"icon\":\"setting\",\"id\":1,\"text\":\"系统管理\",\"url\":\"/system\",\"textEn\":\"System Management\"}]'); +INSERT INTO `tbl_log` VALUES (8370, 63, '接口日志', '112.13.210.19/115.220.229.151', '2026-09-29 12:51:46', 0, 'UserController.getUserBtnByCurrentUser(..)', NULL, 'GET /apis/user/getUserBtnByCurrentUser', '{}', '{\"code\":200,\"data\":{\"userBtn\":[{\"btnStr\":\"8,1\",\"url\":\"/system/role\"},{\"btnStr\":\"1\",\"url\":\"/system/user\"},{\"btnStr\":\"1\",\"url\":\"/system/organization\"},{\"btnStr\":\"1\",\"url\":\"/material/material_property\"},{\"btnStr\":\"1\",\"url\":\"/system/system_config\"},{\"btnStr\":\"1\",\"url\":\"/system/function\"},{\"btnStr\":\"1\",\"url\":\"/system/plugin\"},{\"btnStr\":\"1\",\"url\":\"/material/material_category\"},{\"btnStr\":\"1,3\",\"url\":\"/material/material\"},{\"btnStr\":\"1\",\"url\":\"/system/unit\"},{\"btnStr\":\"1\",\"url\":\"/material/material_attribute\"},{\"btnStr\":\"1,3\",\"url\":\"/system/vendor\"},{\"btnStr\":\"1,3\",\"url\":\"/system/customer\"},{\"btnStr\":\"1,3\",\"url\":\"/system/member\"},{\"btnStr\":\"1\",\"url\":\"/system/depot\"},{\"btnStr\":\"1\",\"url\":\"/system/in_out_item\"},{\"btnStr\":\"1\",\"url\":\"/system/account\"},{\"btnStr\":\"1\",\"url\":\"/system/person\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_apply\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_out\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/delivery_plan\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/sale_shipment\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_out\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/order\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/requisition\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/report\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/giro\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/advance_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/allocation_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/assemble\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/headquarters_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/disassemble\"}]}}'); +INSERT INTO `tbl_log` VALUES (8371, 63, '接口日志', '112.13.210.44/115.220.229.151', '2026-09-29 12:51:46', 0, 'MsgController.getList(..)', NULL, 'GET /apis/msg/list', '{\"search\":\"{\\\"name\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (8372, 63, '接口日志', '112.13.210.152/115.220.229.151', '2026-09-29 12:51:46', 0, 'MsgController.getMsgByStatus(..)', NULL, 'GET /apis/msg/getMsgByStatus', '{\"status\":\"1\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (8373, 63, '接口日志', '112.13.210.152/115.220.229.151', '2026-09-29 12:51:46', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-04\",\"inbound\":100669.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (8374, NULL, '接口日志', '112.13.210.19/60.176.66.231', '2026-09-29 12:51:53', 0, 'UserController.randomImage(..)', NULL, 'GET /apis/user/randomImage', '{}', '{\"code\":200,\"data\":{\"base64\":\"data:image/jpg;base64,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\",\"uuid\":\"fd2a92f5c293406a97737ea3088a0c7a\"}}'); +INSERT INTO `tbl_log` VALUES (8375, 63, '接口日志', '112.13.210.17/115.220.229.151', '2026-09-29 12:51:54', 0, 'AssetController.dashboard()', NULL, 'GET /apis/asset/dashboard', '{}', '{\"code\":200,\"data\":{\"summary\":{\"activeCount\":259,\"deviceCount\":10,\"assetQuantity\":289.000000,\"assetCount\":255,\"assetValue\":17260.000000,\"openInventoryCount\":2,\"managedCount\":265},\"statusDistribution\":[{\"code\":\"IN_USE\",\"value\":259},{\"code\":\"REPAIR\",\"value\":3},{\"code\":\"SCRAPPED\",\"value\":3}],\"departmentDistribution\":[{\"name\":\"Production\",\"value\":56},{\"name\":\"未指定\",\"value\":54},{\"name\":\"Laboratory\",\"value\":48},{\"name\":\"Technical & Technologies\",\"value\":29},{\"name\":\"Engineering\",\"value\":18},{\"name\":\"Not Specified\",\"value\":11},{\"name\":\"Human Resources\",\"value\":6},{\"name\":\"Quality\",\"value\":6}],\"deviceCategoryDistribution\":[{\"name\":\"检测设备\",\"value\":2},{\"name\":\"贴装设备\",\"value\":2},{\"name\":\"动力设备\",\"value\":1},{\"name\":\"印刷设备\",\"value\":1},{\"name\":\"工装设备\",\"value\":1},{\"name\":\"服务器\",\"value\":1},{\"name\":\"焊接设备\",\"value\":1},{\"name\":\"物流设备\",\"value\":1}],\"message\":\"成功\",\"categoryDistribution\":[{\"code\":\"HARDWARE\",\"name\":\"硬件资产\",\"value\":198.00},{\"code\":\"SOFTWARE\",\"name\":\"软件资产\",\"value\":67.00},{\"code\":\"SIM_CARD\",\"name\":\"SIM卡\",\"value\":24.00}],\"recentInventories\":[{\"inventoryNo\":\"PD20260921190840893\",\"inventoryUserName\":\"admin\",\"planName\":\"2026年09月资产设备专项盘点\",\"id\":6,\"totalCount\":1,\"inventoriedCount\":1,\"status\":\"CLOSED\",\"updatedAt\":\"2026-09-21 19:17:28\"},{\"inventoryNo\":\"PD20260921170623856\",\"inventoryUserName\":\"张三\",\"planName\":\"2026年09月资产设备专项盘点\",\"id\":4,\"totalCount\":8,\"inventoriedCount\":8,\"status\":\"CLOSED\",\"updatedAt\":\"2026-09-21 19:16:33\"},{\"inventoryNo\":\"PD20260921190800418\",\"inventoryUserName\":\"张三\",\"planName\":\"2026年09月资产设备专项盘点\",\"id\":5,\"totalCount\":2,\"inventoriedCount\":0,\"status\":\"ACCEPTED\",\"updatedAt\":\"2026-09-21 19:08:13\"},{\"inventoryNo\":\"PD20260918131230171\",\"inventoryUserName\":\"张伟\",\"planName\":\"2026年09月资产设备专项盘点\",\"id\":1,\"totalCount\":3,\"inventoriedCount\":1,\"status\":\"IN_PROGRESS\",\"updatedAt\":\"2026-09-21 14:35:59\"}],\"updatedAt\":\"2026-09-29\"}}'); +INSERT INTO `tbl_log` VALUES (8376, 63, '接口日志', '112.13.210.152/115.220.229.151', '2026-09-29 12:51:58', 0, 'AssetController.categoryOptions()', NULL, 'GET /apis/asset/category/options', '{}', '{\"code\":200,\"data\":{\"rows\":[{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"尚未归入具体种类的资产\",\"updateTime\":1790613193000,\"categoryCode\":\"UNCATEGORIZED\",\"id\":4,\"sort\":10,\"categoryName\":\"未分类\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System 硬件台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"HARDWARE\",\"id\":5,\"sort\":20,\"categoryName\":\"硬件资产\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System 软件台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"SOFTWARE\",\"id\":6,\"sort\":30,\"categoryName\":\"软件资产\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System SIM 卡台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"SIM_CARD\",\"id\":7,\"sort\":40,\"categoryName\":\"SIM卡\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_01BF8DA563A0\",\"id\":11,\"sort\":100,\"categoryName\":\"生产设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_7129859760C3\",\"id\":12,\"sort\":100,\"categoryName\":\"检测设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_9F38069B30A1\",\"id\":13,\"sort\":100,\"categoryName\":\"动力设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_75F489029B11\",\"id\":14,\"sort\":100,\"categoryName\":\"IT设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_3DDFE01CA0B8\",\"id\":15,\"sort\":100,\"categoryName\":\"物流设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_B5D44F2B039A\",\"id\":16,\"sort\":100,\"categoryName\":\"工装设备\",\"enabled\":true}],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (8377, 63, '接口日志', '112.13.210.152/115.220.229.151', '2026-09-29 12:51:59', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":255,\"rows\":[{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019200694297052\",\"assetName\":\"SIM卡 896019200694297052\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"6\",\"externalSource\":\"SIM\",\"id\":270,\"keeper\":\"UITM Dungun\",\"location\":\"SMT (???)\",\"originalValue\":0.000000,\"quantity\":1.000000,\"source\":\"SAS\",\"specification\":\"183.171.146.98\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019190221500578\",\"assetName\":\"SIM卡 896019190221500578\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"5\",\"externalSource\":\"SIM\",\"id\":269,\"keeper\":\"SMT\",\"location\":\"UITM Dungun\",\"originalValue\":0.000000,\"purchaseDate\":1608062400000,\"quantity\":1.000000,\"remark\":\"启用日期: 2020-12-16\",\"source\":\"SAS\",\"specification\":\"183.171.14.125\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019190221500576\",\"assetName\":\"SIM卡 896019190221500576\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"1\",\"externalSource\":\"SIM\",\"id\":268,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1608062400000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2020-12-16\",\"source\":\"SAS\",\"specification\":\"183.171.144.65\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607778\",\"assetName\":\"SIM卡 896019210381607778\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"2\",\"externalSource\":\"SIM\",\"id\":267,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1711051200000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2024-03-22\",\"source\":\"SAS\",\"specification\":\"183.171.15.60\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607781\",\"assetName\":\"SIM卡 896019210381607781\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"9\",\"externalSource\":\"SIM\",\"id\":266,\"keeper\":\"SMT\",\"location\":\"SMT (RnD) Modem RnD\",\"originalValue\":0.000000,\"purchaseDate\":1711051200000,\"quantity\":1.000000,\"remark\":\"设备序列号: 21070014;电表序列号: 320910015;启用日期: 2024-03-22\",\"source\":\"SAS\",\"specification\":\"183.171.5.142 / KM08-LTE Modem / 21070014\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607777\",\"assetName\":\"SIM卡 896019210381607777\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"3\",\"externalSource\":\"SIM\",\"id\":265,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1720987200000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2024-07-15\",\"source\":\"SAS\",\"specification\":\"183.171.40.182\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607782\",\"assetName\":\"SIM卡 896019210381607782\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"4\",\"externalSource\":\"SIM\",\"id\":264,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1720987200000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2024-07-15\",\"source\":\"SAS\",\"specification\":\"183.171.40.117\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607784\",\"assetName\":\"SIM卡 896019210381607784\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"7\",\"externalSource\":\"SIM\",\"id\":263,\"keeper\":\"SMT\",\"location\":\"SMT (Modem-Production)\",\"originalValue\":0.000000,\"purchaseDate\":1727553600000,\"quantity\":1.000000,\"remark\":\"设备序列号: 20041004;启用日期: 2024-09-29\",\"source\":\"SAS\",\"specification\":\"183.171.50.5 / KM08-LTE Modem / 20041004\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607783\",\"assetName\":\"SIM卡 896019210381607783\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"8\",\"externalSource\":\"SIM\",\"id\":262,\"keeper\":\"SMT\",\"location\":\"SMT (RnD) Modem Store\",\"originalValue\":0.000000,\"purchaseDate\":1727553600000,\"quantity\":1.000000,\"remark\":\"设备序列号: 2403005;启用日期: 2024-09-29\",\"source\":\"SAS\",\"specification\":\"183.171.50.6 / KM08-LTE Modem / 2403005\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607785\",\"assetName\":\"SIM卡 896019210381607785\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"10\",\"externalSource\":\"SIM\",\"id\":261,\"keeper\":\"SMT\",\"location\":\"SMT (RnD) Alyaa\",\"originalValue\":0.000000,\"purchaseDate\":1766433600000,\"quantity\":1.000000,\"remark\":\"设备序列号: 21070011;电表序列号: 320910014;启用日期: 2025-12-23\",\"source\":\"SAS\",\"specification\":\"183.171.151.171 / KM08-LTE Modem / 21070011\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000}]}}'); +INSERT INTO `tbl_log` VALUES (8378, 63, '接口日志', '112.13.210.152/115.220.229.151', '2026-09-29 12:52:00', 0, 'AssetDeviceController.list(..)', NULL, 'GET /apis/assetDevice/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":10,\"rows\":[{\"assetId\":8,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"工装设备\",\"deviceCode\":\"TOOL-STENCIL-CLEAN-01\",\"deviceName\":\"全自动钢网清洗机\",\"enabledDate\":1739822400000,\"id\":10,\"keeper\":\"王磊\",\"location\":\"一车间 钢网房\",\"manufacturer\":\"SAWA\",\"model\":\"SC-A1000\",\"nextMaintenanceDate\":1794254400000,\"purchaseDate\":1739131200000,\"remark\":\"水基清洗、漂洗、热风干燥一体化\",\"serialNumber\":\"SAWA-A1000-250210\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetId\":7,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"物流设备\",\"deviceCode\":\"WH-FORKLIFT-01\",\"deviceName\":\"2 吨电动叉车\",\"enabledDate\":1722456000000,\"id\":9,\"keeper\":\"张伟\",\"location\":\"原材料仓充电区\",\"manufacturer\":\"Toyota\",\"model\":\"8FBE20\",\"nextMaintenanceDate\":1792872000000,\"purchaseDate\":1721592000000,\"remark\":\"锂电池版本,配置蓝光安全警示灯\",\"serialNumber\":\"TY-8FBE20-240722\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"仓储物流部\"},{\"assetId\":6,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"服务器\",\"deviceCode\":\"IT-MES-DB-01\",\"deviceName\":\"MES 数据库主服务器\",\"enabledDate\":1737489600000,\"id\":8,\"keeper\":\"赵敏\",\"location\":\"数据中心 A03-U18\",\"manufacturer\":\"Dell\",\"model\":\"PowerEdge R760\",\"nextMaintenanceDate\":1797278400000,\"purchaseDate\":1736884800000,\"remark\":\"双路 CPU、512GB 内存、全闪存 RAID10\",\"serialNumber\":\"CN-R760-25011501\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"信息技术部\"},{\"assetId\":5,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"动力设备\",\"deviceCode\":\"UTIL-AIR-01\",\"deviceName\":\"变频螺杆空压机\",\"enabledDate\":1701374400000,\"id\":7,\"keeper\":\"陈晨\",\"location\":\"动力站 1 号机位\",\"manufacturer\":\"Atlas Copco\",\"model\":\"GA22 VSD+\",\"nextMaintenanceDate\":1790798400000,\"purchaseDate\":1700424000000,\"remark\":\"运行压力 0.72MPa,接入能源管理系统\",\"serialNumber\":\"AC-GA22-2311209\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"设备动力部\"},{\"assetId\":4,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"检测设备\",\"deviceCode\":\"QC-SPI-01\",\"deviceName\":\"在线 3D SPI\",\"enabledDate\":1713384000000,\"id\":6,\"keeper\":\"陈晨\",\"lastInventoryTime\":1789986951000,\"location\":\"一车间 印刷检测区\",\"manufacturer\":\"Koh Young\",\"model\":\"KY8030-3\",\"nextMaintenanceDate\":1793908800000,\"purchaseDate\":1712347200000,\"remark\":\"与印刷机闭环反馈锡膏偏移数据\",\"serialNumber\":\"KY-8030-24040608\",\"status\":\"IN_USE\",\"updateTime\":1789986959000,\"useDepartment\":\"品质部\"},{\"assetId\":3,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"检测设备\",\"deviceCode\":\"QC-AOI-01\",\"deviceName\":\"在线 3D AOI\",\"enabledDate\":1713384000000,\"id\":5,\"keeper\":\"陈晨\",\"lastInventoryTime\":1790003830000,\"location\":\"一车间 AOI 检测区\",\"manufacturer\":\"Koh Young\",\"model\":\"Zenith 2\",\"nextMaintenanceDate\":1793822400000,\"purchaseDate\":1712347200000,\"remark\":\"具备 AI 缺陷复判和 SPC 数据接口\",\"serialNumber\":\"KY-Z2-24040615\",\"status\":\"IN_USE\",\"updateTime\":1790003830000,\"useDepartment\":\"品质部\"},{\"assetId\":2,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"焊接设备\",\"deviceCode\":\"SMT-L01-REFLOW-01\",\"deviceName\":\"十温区氮气回流焊炉\",\"enabledDate\":1712692800000,\"id\":4,\"keeper\":\"王磊\",\"location\":\"一车间 SMT-01 线后段\",\"manufacturer\":\"Heller Industries\",\"model\":\"HELLER 1936MK7\",\"nextMaintenanceDate\":1792440000000,\"purchaseDate\":1710705600000,\"remark\":\"氮气闭环控制,支持双轨独立调宽\",\"serialNumber\":\"HLR1936-2403268\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetId\":1,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"贴装设备\",\"deviceCode\":\"SMT-L01-MOUNTER-B\",\"deviceName\":\"多功能贴片机 B\",\"enabledDate\":1712520000000,\"id\":3,\"keeper\":\"王磊\",\"location\":\"一车间 SMT-01 线 B 工位\",\"manufacturer\":\"Panasonic\",\"model\":\"Panasonic NPM-W2S\",\"nextMaintenanceDate\":1792094400000,\"purchaseDate\":1710705600000,\"remark\":\"负责异形件及高精度元件贴装\",\"serialNumber\":\"NPMW2S24031802\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetId\":1,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"贴装设备\",\"deviceCode\":\"SMT-L01-MOUNTER-A\",\"deviceName\":\"高速模块贴片机 A\",\"enabledDate\":1712520000000,\"id\":2,\"keeper\":\"王磊\",\"location\":\"一车间 SMT-01 线 A 工位\",\"manufacturer\":\"Panasonic\",\"model\":\"Panasonic NPM-D3A\",\"nextMaintenanceDate\":1792008000000,\"purchaseDate\":1710705600000,\"remark\":\"前段高速贴装,配置 16 头轻量贴装头\",\"serialNumber\":\"NPMD3A24031801\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetId\":1,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"印刷设备\",\"deviceCode\":\"SMT-L01-PRINTER-01\",\"deviceName\":\"全自动锡膏印刷机\",\"enabledDate\":1712520000000,\"id\":1,\"keeper\":\"王磊\",\"lastInventoryTime\":1789726083000,\"location\":\"一车间 SMT-01 线前段\",\"manufacturer\":\"ASMPT\",\"model\":\"DEK NeoHorizon 03iX\",\"nextMaintenanceDate\":1791403200000,\"purchaseDate\":1710705600000,\"remark\":\"配置 2D 检测与自动擦网单元\",\"serialNumber\":\"DEK24NH03187\",\"status\":\"IN_USE\",\"updateTime\":1789726082000,\"useDepartment\":\"SMT生产部\"}]}}'); +INSERT INTO `tbl_log` VALUES (8379, 63, '接口日志', '112.13.210.17/115.220.229.151', '2026-09-29 12:52:01', 0, 'AssetInventoryController.operatorOptions()', NULL, 'GET /apis/assetInventory/operatorOptions', '{}', '{\"code\":200,\"data\":{\"rows\":[{\"loginName\":\"admin\",\"name\":\"admin\",\"id\":63}],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (8380, 63, '接口日志', '112.13.210.47/115.220.229.151', '2026-09-29 12:52:01', 0, 'AssetInventoryController.list(..)', NULL, 'GET /apis/assetInventory/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":4,\"rows\":[{\"abnormalCount\":0,\"auditTime\":1790003845000,\"auditUserId\":149,\"completedAt\":1790003836000,\"createTime\":1790003320000,\"creator\":149,\"deadline\":1790258400000,\"deleteFlag\":\"0\",\"id\":6,\"inventoriedCount\":1,\"inventoryNo\":\"PD20260921190840893\",\"inventoryUserId\":63,\"inventoryUserName\":\"admin\",\"normalCount\":1,\"planName\":\"2026年09月资产设备专项盘点\",\"plannedAt\":1790053200000,\"scopeType\":\"DEVICE\",\"source\":\"MANUAL\",\"startedAt\":1790003819000,\"status\":\"CLOSED\",\"totalCount\":1,\"updateTime\":1790003848000,\"updater\":149},{\"abnormalCount\":0,\"createTime\":1790003280000,\"creator\":149,\"deadline\":1790258400000,\"deleteFlag\":\"0\",\"id\":5,\"inventoriedCount\":0,\"inventoryNo\":\"PD20260921190800418\",\"inventoryUserId\":149,\"inventoryUserName\":\"张三\",\"normalCount\":0,\"planName\":\"2026年09月资产设备专项盘点\",\"plannedAt\":1790053200000,\"remark\":\"进行盘点\",\"scopeType\":\"ALL\",\"source\":\"MANUAL\",\"status\":\"ACCEPTED\",\"totalCount\":2,\"updateTime\":1790003293000,\"updater\":149},{\"abnormalCount\":0,\"completedAt\":1790002875000,\"createTime\":1789995983000,\"creator\":63,\"deadline\":1790258400000,\"deleteFlag\":\"0\",\"id\":4,\"inventoriedCount\":8,\"inventoryNo\":\"PD20260921170623856\",\"inventoryUserId\":149,\"inventoryUserName\":\"张三\",\"normalCount\":0,\"planName\":\"2026年09月资产设备专项盘点\",\"plannedAt\":1790053200000,\"remark\":\"进行盘点\",\"scopeType\":\"ASSET\",\"source\":\"MANUAL\",\"startedAt\":1790002559000,\"status\":\"CLOSED\",\"totalCount\":8,\"updateTime\":1790003793000,\"updater\":149},{\"abnormalCount\":0,\"createTime\":1789722750000,\"creator\":63,\"deadline\":1789999200000,\"deleteFlag\":\"0\",\"id\":1,\"inventoriedCount\":1,\"inventoryNo\":\"PD20260918131230171\",\"inventoryUserId\":36,\"inventoryUserName\":\"张伟\",\"normalCount\":0,\"planName\":\"2026年09月资产设备专项盘点\",\"plannedAt\":1789794000000,\"remark\":\"进行盘点\",\"scopeType\":\"DEVICE\",\"source\":\"MANUAL\",\"startedAt\":1789723142000,\"status\":\"IN_PROGRESS\",\"totalCount\":3,\"updateTime\":1789986959000,\"updater\":63}]}}'); +INSERT INTO `tbl_log` VALUES (8381, 63, '接口日志', '117.40.82.179/115.220.229.151', '2026-09-29 12:53:55', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":255,\"rows\":[{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019200694297052\",\"assetName\":\"SIM卡 896019200694297052\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"6\",\"externalSource\":\"SIM\",\"id\":270,\"keeper\":\"UITM Dungun\",\"location\":\"SMT (???)\",\"originalValue\":0.000000,\"quantity\":1.000000,\"source\":\"SAS\",\"specification\":\"183.171.146.98\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019190221500578\",\"assetName\":\"SIM卡 896019190221500578\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"5\",\"externalSource\":\"SIM\",\"id\":269,\"keeper\":\"SMT\",\"location\":\"UITM Dungun\",\"originalValue\":0.000000,\"purchaseDate\":1608062400000,\"quantity\":1.000000,\"remark\":\"启用日期: 2020-12-16\",\"source\":\"SAS\",\"specification\":\"183.171.14.125\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019190221500576\",\"assetName\":\"SIM卡 896019190221500576\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"1\",\"externalSource\":\"SIM\",\"id\":268,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1608062400000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2020-12-16\",\"source\":\"SAS\",\"specification\":\"183.171.144.65\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607778\",\"assetName\":\"SIM卡 896019210381607778\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"2\",\"externalSource\":\"SIM\",\"id\":267,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1711051200000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2024-03-22\",\"source\":\"SAS\",\"specification\":\"183.171.15.60\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607781\",\"assetName\":\"SIM卡 896019210381607781\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"9\",\"externalSource\":\"SIM\",\"id\":266,\"keeper\":\"SMT\",\"location\":\"SMT (RnD) Modem RnD\",\"originalValue\":0.000000,\"purchaseDate\":1711051200000,\"quantity\":1.000000,\"remark\":\"设备序列号: 21070014;电表序列号: 320910015;启用日期: 2024-03-22\",\"source\":\"SAS\",\"specification\":\"183.171.5.142 / KM08-LTE Modem / 21070014\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607777\",\"assetName\":\"SIM卡 896019210381607777\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"3\",\"externalSource\":\"SIM\",\"id\":265,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1720987200000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2024-07-15\",\"source\":\"SAS\",\"specification\":\"183.171.40.182\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607782\",\"assetName\":\"SIM卡 896019210381607782\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"4\",\"externalSource\":\"SIM\",\"id\":264,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1720987200000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2024-07-15\",\"source\":\"SAS\",\"specification\":\"183.171.40.117\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607784\",\"assetName\":\"SIM卡 896019210381607784\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"7\",\"externalSource\":\"SIM\",\"id\":263,\"keeper\":\"SMT\",\"location\":\"SMT (Modem-Production)\",\"originalValue\":0.000000,\"purchaseDate\":1727553600000,\"quantity\":1.000000,\"remark\":\"设备序列号: 20041004;启用日期: 2024-09-29\",\"source\":\"SAS\",\"specification\":\"183.171.50.5 / KM08-LTE Modem / 20041004\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607783\",\"assetName\":\"SIM卡 896019210381607783\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"8\",\"externalSource\":\"SIM\",\"id\":262,\"keeper\":\"SMT\",\"location\":\"SMT (RnD) Modem Store\",\"originalValue\":0.000000,\"purchaseDate\":1727553600000,\"quantity\":1.000000,\"remark\":\"设备序列号: 2403005;启用日期: 2024-09-29\",\"source\":\"SAS\",\"specification\":\"183.171.50.6 / KM08-LTE Modem / 2403005\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607785\",\"assetName\":\"SIM卡 896019210381607785\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"10\",\"externalSource\":\"SIM\",\"id\":261,\"keeper\":\"SMT\",\"location\":\"SMT (RnD) Alyaa\",\"originalValue\":0.000000,\"purchaseDate\":1766433600000,\"quantity\":1.000000,\"remark\":\"设备序列号: 21070011;电表序列号: 320910014;启用日期: 2025-12-23\",\"source\":\"SAS\",\"specification\":\"183.171.151.171 / KM08-LTE Modem / 21070011\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607786\",\"assetName\":\"SIM卡 896019210381607786\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"11\",\"externalSource\":\"SIM\",\"id\":260,\"keeper\":\"SMT\",\"location\":\"SMT (RnD) Alyaa\",\"originalValue\":0.000000,\"purchaseDate\":1766433600000,\"quantity\":1.000000,\"remark\":\"设备序列号: 21070013;启用日期: 2025-12-23\",\"source\":\"SAS\",\"specification\":\"183.171.208.37 / KM08-LTE Modem / 21070013\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381702562\",\"assetName\":\"SIM卡 896019210381702562\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"12\",\"externalSource\":\"SIM\",\"id\":259,\"keeper\":\"SMT\",\"location\":\"Loan to Hanif/Adha (22-May-2026); \",\"originalValue\":0.000000,\"purchaseDate\":1766433600000,\"quantity\":1.000000,\"remark\":\"启用日期: 2025-12-23\",\"source\":\"SAS\",\"specification\":\"183.171.144.61\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607780\",\"assetName\":\"SIM卡 896019210381607780\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"14\",\"externalSource\":\"SIM\",\"id\":258,\"keeper\":\"SMT\",\"location\":\"POC AEON\",\"originalValue\":0.000000,\"purchaseDate\":1766433600000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Months;启用日期: 2025-12-23\",\"source\":\"SAS\",\"specification\":\"183.171.208.37\",\"status\":\"SCRAPPED\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019190221500577\",\"assetName\":\"SIM卡 896019190221500577\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"15\",\"externalSource\":\"SIM\",\"id\":257,\"keeper\":\"SMT\",\"location\":\"Kompleks Pertama\",\"originalValue\":0.000000,\"purchaseDate\":1766433600000,\"quantity\":1.000000,\"remark\":\"启用日期: 2025-12-23\",\"source\":\"SAS\",\"specification\":\"183.171.144.61\",\"status\":\"SCRAPPED\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607779\",\"assetName\":\"SIM卡 896019210381607779\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"13\",\"externalSource\":\"SIM\",\"id\":256,\"keeper\":\"SMT\",\"location\":\"POC AEON\",\"originalValue\":0.000000,\"purchaseDate\":1766433600000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Months;启用日期: 2025-12-23\",\"source\":\"SAS\",\"specification\":\"183.171.151.171\",\"status\":\"SCRAPPED\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381702569\",\"assetName\":\"SIM卡 896019210381702569\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"18\",\"externalSource\":\"SIM\",\"id\":255,\"keeper\":\"SMT\",\"location\":\"With Amir\",\"originalValue\":0.000000,\"purchaseDate\":1780430400000,\"quantity\":1.000000,\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"source\":\"SAS\",\"specification\":\"183.171.11.200\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381702570\",\"assetName\":\"SIM卡 896019210381702570\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"19\",\"externalSource\":\"SIM\",\"id\":254,\"keeper\":\"SMT\",\"location\":\"With Amir\",\"originalValue\":0.000000,\"purchaseDate\":1780430400000,\"quantity\":1.000000,\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"source\":\"SAS\",\"specification\":\"183.171.214.141\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381702571\",\"assetName\":\"SIM卡 896019210381702571\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"23\",\"externalSource\":\"SIM\",\"id\":253,\"keeper\":\"SMT\",\"location\":\"R&D room, SMT\",\"originalValue\":0.000000,\"purchaseDate\":1780430400000,\"quantity\":1.000000,\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"source\":\"SAS\",\"specification\":\"183.171.9.45\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381702568\",\"assetName\":\"SIM卡 896019210381702568\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"24\",\"externalSource\":\"SIM\",\"id\":252,\"keeper\":\"SMT\",\"location\":\"Molnlycke Health Care\",\"originalValue\":0.000000,\"purchaseDate\":1780430400000,\"quantity\":1.000000,\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"source\":\"SAS\",\"specification\":\"183.171.214.217 / 4G Modem\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381702567\",\"assetName\":\"SIM卡 896019210381702567\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"25\",\"externalSource\":\"SIM\",\"id\":251,\"keeper\":\"SMT\",\"location\":\"Molnlycke Health Care\",\"originalValue\":0.000000,\"purchaseDate\":1780430400000,\"quantity\":1.000000,\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"source\":\"SAS\",\"specification\":\"183.171.12.143 / 4G Modem\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381702566\",\"assetName\":\"SIM卡 896019210381702566\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"26\",\"externalSource\":\"SIM\",\"id\":250,\"keeper\":\"SMT\",\"location\":\"GT3.1 (Nur)\",\"originalValue\":0.000000,\"purchaseDate\":1780430400000,\"quantity\":1.000000,\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"source\":\"SAS\",\"specification\":\"183.171.11.123 / Lora Gateway\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381702565\",\"assetName\":\"SIM卡 896019210381702565\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"27\",\"externalSource\":\"SIM\",\"id\":249,\"keeper\":\"SMT\",\"location\":\"Menicon Malaysia\",\"originalValue\":0.000000,\"purchaseDate\":1780430400000,\"quantity\":1.000000,\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"source\":\"SAS\",\"specification\":\"183.171.12.136 / Lora Gateway\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381702564\",\"assetName\":\"SIM卡 896019210381702564\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"28\",\"externalSource\":\"SIM\",\"id\":248,\"keeper\":\"SMT\",\"location\":\"First Solar Malaysia\",\"originalValue\":0.000000,\"purchaseDate\":1780430400000,\"quantity\":1.000000,\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"source\":\"SAS\",\"specification\":\"183.171.10.11 / 4G Modem\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381702563\",\"assetName\":\"SIM卡 896019210381702563\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"29\",\"externalSource\":\"SIM\",\"id\":247,\"keeper\":\"SMT\",\"location\":\"First Solar Malaysia\",\"originalValue\":0.000000,\"purchaseDate\":1780430400000,\"quantity\":1.000000,\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"source\":\"SAS\",\"specification\":\"183.171.11.141 / 4G Modem\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-2\",\"assetName\":\"MS Office 2019 Home & Business\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"2\",\"externalSource\":\"SOFTWARE\",\"id\":246,\"originalValue\":8700.000000,\"purchaseDate\":1694980800000,\"quantity\":15.000000,\"remark\":\"供应商: Amimo;发票号: INV230902\",\"source\":\"SAS\",\"specification\":\"Amimo\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-3\",\"assetName\":\"MS Office 2019 Home & Business\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"3\",\"externalSource\":\"SOFTWARE\",\"id\":245,\"originalValue\":1160.000000,\"purchaseDate\":1704916800000,\"quantity\":2.000000,\"remark\":\"供应商: Amimo;发票号: INV240101\",\"source\":\"SAS\",\"specification\":\"Amimo\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-4\",\"assetName\":\"MS Office 2019 Pro\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"4\",\"externalSource\":\"SOFTWARE\",\"id\":244,\"originalValue\":0.000000,\"purchaseDate\":1727380800000,\"quantity\":1.000000,\"remark\":\"供应商: Amimo;发票号: INV240901;原备注: Price bundled with PC purchase.\",\"source\":\"SAS\",\"specification\":\"Amimo\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-5\",\"assetName\":\"MS Office 2019 Pro Plus\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"5\",\"externalSource\":\"SOFTWARE\",\"id\":243,\"originalValue\":580.000000,\"purchaseDate\":1712088000000,\"quantity\":1.000000,\"remark\":\"供应商: Amimo;发票号: INV240402\",\"source\":\"SAS\",\"specification\":\"Amimo\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-6\",\"assetName\":\"MS Office 2019 Pro Plus\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"6\",\"externalSource\":\"SOFTWARE\",\"id\":242,\"originalValue\":2320.000000,\"purchaseDate\":1736798400000,\"quantity\":4.000000,\"remark\":\"供应商: Amimo;发票号: QUO250101\",\"source\":\"SAS\",\"specification\":\"Amimo\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-7\",\"assetName\":\"MS Office 2021 Home & Business\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"7\",\"externalSource\":\"SOFTWARE\",\"id\":241,\"originalValue\":750.000000,\"purchaseDate\":1707768000000,\"quantity\":1.000000,\"remark\":\"供应商: Amimo;发票号: INV240201\",\"source\":\"SAS\",\"specification\":\"Amimo\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-8\",\"assetName\":\"MS Office 2021 Pro\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"8\",\"externalSource\":\"SOFTWARE\",\"id\":240,\"originalValue\":0.000000,\"purchaseDate\":1712088000000,\"quantity\":2.000000,\"remark\":\"供应商: Amimo;发票号: INV240401;原备注: Price bundled with PC purchase.\",\"source\":\"SAS\",\"specification\":\"Amimo\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-9\",\"assetName\":\"MS Office 2021 Pro\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"9\",\"externalSource\":\"SOFTWARE\",\"id\":239,\"originalValue\":0.000000,\"purchaseDate\":1718913600000,\"quantity\":1.000000,\"remark\":\"供应商: Amimo;发票号: INV240601;原备注: Price bundled with PC purchase.\",\"source\":\"SAS\",\"specification\":\"Amimo\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000,\"useDepartment\":\"HR\"},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-10\",\"assetName\":\"MS Office Home & Business\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"10\",\"externalSource\":\"SOFTWARE\",\"id\":238,\"originalValue\":0.000000,\"purchaseDate\":1768939200000,\"quantity\":10.000000,\"remark\":\"供应商: Amimo;许可证: Smt@123;发票号: INV260101;原备注: Bundled with 10 unit of PC purchase for Lab.\",\"source\":\"SAS\",\"specification\":\"Amimo\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-11\",\"assetName\":\"MS Office Home & Business\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"11\",\"externalSource\":\"SOFTWARE\",\"id\":237,\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"供应商: Amimo;原备注: Bundled with 1 unit of Laptop\",\"source\":\"SAS\",\"specification\":\"Amimo\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000,\"useDepartment\":\"Tech & Technology\"},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-12\",\"assetName\":\"MS Office Home & Business 2010\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"12\",\"externalSource\":\"SOFTWARE\",\"id\":236,\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"许可证: BX27V-J9QMG-3VVWY-7JTYT-94CXB\",\"source\":\"SAS\",\"specification\":\"CD\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-13\",\"assetName\":\"MS Office Home & Business 2010\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"13\",\"externalSource\":\"SOFTWARE\",\"id\":235,\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"许可证: GTTC2-XH8PW-3WJFH-76VFQ-PHYX9\",\"source\":\"SAS\",\"specification\":\"CD\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-14\",\"assetName\":\"MS Office Home & Business 2010\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"14\",\"externalSource\":\"SOFTWARE\",\"id\":234,\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"许可证: WY8KV-GQ39X-2WQF2-V8R93-RY6CT\",\"source\":\"SAS\",\"specification\":\"CD\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-15\",\"assetName\":\"MS Office Home & Business 2010\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"15\",\"externalSource\":\"SOFTWARE\",\"id\":233,\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"许可证: YBDDT-C4QPP-J6T63-DQMB8-9XB29;原备注: Written: Burnny / Asus\",\"source\":\"SAS\",\"specification\":\"CD\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-16\",\"assetName\":\"MS Office Home & Business 2010\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"16\",\"externalSource\":\"SOFTWARE\",\"id\":232,\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"许可证: XG2WV-YRDV4-VQWQ2-XQQ26-XJ3FF;原备注: Written: SGH109RCWK\",\"source\":\"SAS\",\"specification\":\"CD\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-1\",\"assetName\":\"Linux 6.8.0-45\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"1\",\"externalSource\":\"SOFTWARE\",\"id\":231,\"originalValue\":0.000000,\"purchaseDate\":1728849600000,\"quantity\":2.000000,\"remark\":\"供应商: Amimo;发票号: INV240902;原备注: For server\",\"source\":\"SAS\",\"specification\":\"Amimo\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-33\",\"assetName\":\"Ubuntu 24.04.1 LTS\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,...[已截断]'); +INSERT INTO `tbl_log` VALUES (8382, 63, '接口日志', '112.13.210.152/115.220.229.151', '2026-09-29 13:06:39', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":255,\"rows\":[{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAB/036PC\",\"assetName\":\"HP\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"231\",\"externalSource\":\"HARDWARE\",\"id\":70,\"keeper\":\"Aqila\",\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Testing / Lab\",\"source\":\"SAS\",\"specification\":\"Monitor / HP\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAB/035CPU\",\"assetName\":\"HP\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"230\",\"externalSource\":\"HARDWARE\",\"id\":69,\"keeper\":\"Aqila\",\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Testing / Lab\",\"source\":\"SAS\",\"specification\":\"CPU / HP\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAB/035PC\",\"assetName\":\"LG\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"229\",\"externalSource\":\"HARDWARE\",\"id\":68,\"keeper\":\"Aqila\",\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Testing / Lab\",\"source\":\"SAS\",\"specification\":\"Monitor / LG\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAB/034CPU\",\"assetName\":\"HP OptiPlex 7050\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"228\",\"externalSource\":\"HARDWARE\",\"id\":67,\"keeper\":\"Aqila\",\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 5P8RRK2;用途: Testing / Lab\",\"source\":\"SAS\",\"specification\":\"CPU / HP / OptiPlex 7050 / Win 10 Pro / Core i7-6700 / 8G / 500G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAB/034PC\",\"assetName\":\"Dell\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"227\",\"externalSource\":\"HARDWARE\",\"id\":66,\"keeper\":\"Aqila\",\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Testing / Lab\",\"source\":\"SAS\",\"specification\":\"Monitor / Dell\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAB/033CPU\",\"assetName\":\"HP ProDesk 400 G7\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"226\",\"externalSource\":\"HARDWARE\",\"id\":65,\"keeper\":\"Aqila\",\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 4CE216BFJC;用途: Testing / Lab\",\"source\":\"SAS\",\"specification\":\"CPU / HP / ProDesk 400 G7 / Win 11 Pro / Core i5-10500 / 16G / 250G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAB/033PC\",\"assetName\":\"HP\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"225\",\"externalSource\":\"HARDWARE\",\"id\":64,\"keeper\":\"Aqila\",\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Testing / Lab\",\"source\":\"SAS\",\"specification\":\"Monitor / HP\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAB/032PC\",\"assetName\":\"Dell\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"224\",\"externalSource\":\"HARDWARE\",\"id\":63,\"keeper\":\"Aqila\",\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Testing / Lab\",\"source\":\"SAS\",\"specification\":\"Monitor / Dell\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAB/032CPU\",\"assetName\":\"HP ProDesk 400 G7\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"223\",\"externalSource\":\"HARDWARE\",\"id\":62,\"keeper\":\"Aqila\",\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 4CE216BFJJ;用途: Testing / Lab\",\"source\":\"SAS\",\"specification\":\"CPU / HP / ProDesk 400 G7 / Win 11 Pro / Core i5-10500 / 16G / 250G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAB/031CPU\",\"assetName\":\"HP ProDesk 400 G7\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"222\",\"externalSource\":\"HARDWARE\",\"id\":61,\"keeper\":\"Aqila\",\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 4CE216BDQP;用途: Testing / Lab\",\"source\":\"SAS\",\"specification\":\"CPU / HP / ProDesk 400 G7 / Win 11 Pro / Core i5-10500 / 16G / 250G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAB/031PC\",\"assetName\":\"HP\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"221\",\"externalSource\":\"HARDWARE\",\"id\":60,\"keeper\":\"Aqila\",\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Testing / Lab\",\"source\":\"SAS\",\"specification\":\"Monitor / HP\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/N02/CPU020\",\"assetName\":\"HP HP Pro 3330 MT\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"220\",\"externalSource\":\"HARDWARE\",\"id\":59,\"keeper\":\"Aqila\",\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: SGH221S6SH;用途: Testing / Lab\",\"source\":\"SAS\",\"specification\":\"CPU / HP / HP Pro 3330 MT / Win 10 Pro / Core i7-2600 / 8G / 220G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAB/030PC\",\"assetName\":\"HP ProDesk 400 G7\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"219\",\"externalSource\":\"HARDWARE\",\"id\":58,\"keeper\":\"Aqila\",\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 4CE216BDPN;用途: Testing / Lab;原备注: Windows License Key : QRWJ7-2N8MF-TM9WY-HKB42-VFR9C\\n\",\"source\":\"SAS\",\"specification\":\"CPU / HP / ProDesk 400 G7 / Win 11 Pro / Core i5-10500 / 16G / 250G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAB/029CPU\",\"assetName\":\"HP ProDesk 400 G7\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"218\",\"externalSource\":\"HARDWARE\",\"id\":57,\"keeper\":\"Aqila\",\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 4CE219BMSP;用途: Testing / Lab\",\"source\":\"SAS\",\"specification\":\"CPU / HP / ProDesk 400 G7 / Win 11 Pro / Core i5-10500 / 16G / 1TB\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAB/029PC\",\"assetName\":\"HP\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"217\",\"externalSource\":\"HARDWARE\",\"id\":56,\"keeper\":\"Aqila\",\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Testing / Lab\",\"source\":\"SAS\",\"specification\":\"Monitor / HP\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAP19/11112024\",\"assetName\":\"Lenovo ThinkPad X1 Carbon Gen 8\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"216\",\"externalSource\":\"HARDWARE\",\"id\":55,\"keeper\":\"Hasmah\",\"location\":\"Not Specified\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Not Specified;原备注: RETURN TO SUPPLIER DUE THE PROBLEM\",\"source\":\"SAS\",\"specification\":\"Laptop / Lenovo / ThinkPad X1 Carbon Gen 8\",\"status\":\"REPAIR\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Human Resources\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAP18/11112024\",\"assetName\":\"Lenovo ThinkPad X1 Carbon Gen 8\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"215\",\"externalSource\":\"HARDWARE\",\"id\":54,\"keeper\":\"Hasmah\",\"location\":\"Stored with HR\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Stored\",\"source\":\"SAS\",\"specification\":\"Laptop / Lenovo / ThinkPad X1 Carbon Gen 8\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Human Resources\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAP17/11112024\",\"assetName\":\"HP Pro Book 440\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"214\",\"externalSource\":\"HARDWARE\",\"id\":53,\"keeper\":\"Hasmah\",\"location\":\"Stored with HR\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Stored\",\"source\":\"SAS\",\"specification\":\"Laptop / HP / Pro Book 440\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Human Resources\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAP16/11112024\",\"assetName\":\"HP Radeon Intel Core i5\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"213\",\"externalSource\":\"HARDWARE\",\"id\":52,\"keeper\":\"Hasmah\",\"location\":\"Stored with HR\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Stored\",\"source\":\"SAS\",\"specification\":\"Laptop / HP / Radeon Intel Core i5\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Human Resources\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-212\",\"assetName\":\"HP All-in-One 24-dp0209d\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"212\",\"externalSource\":\"HARDWARE\",\"id\":51,\"keeper\":\"Hasmah\",\"location\":\"HR Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 8CC10109F6\",\"source\":\"SAS\",\"specification\":\"All-In-One / HP / All-in-One 24-dp0209d / Win 10 Home / AMD Ryzen 5 4500U / 24G / 500G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Human Resources\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAP3/11112024\",\"assetName\":\"Lenovo ThinkPad X1 Carbon Gen 8\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"211\",\"externalSource\":\"HARDWARE\",\"id\":50,\"keeper\":\"Hasmah\",\"location\":\"Personal Carry\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: PF1Q9H0C;用途: Personal Work\",\"source\":\"SAS\",\"specification\":\"Laptop / Lenovo / ThinkPad X1 Carbon Gen 8 / Win 11 Pro / Core i7-8650U / 16G / 500G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Human Resources\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/N02/CPU003\",\"assetName\":\"HP ProDesk 400 G7\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"210\",\"externalSource\":\"HARDWARE\",\"id\":49,\"keeper\":\"Sharida\",\"location\":\"HR Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 4CE219BMV5\",\"source\":\"SAS\",\"specification\":\"CPU / HP / ProDesk 400 G7 / Win 11 Pro / Core i5-10500 / 8G / 1T\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Finance\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-209\",\"assetName\":\"HP All-in-One 24-dp0209d\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"209\",\"externalSource\":\"HARDWARE\",\"id\":48,\"keeper\":\"Juwairiah\",\"location\":\"Finance Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 8CC10114RG\",\"source\":\"SAS\",\"specification\":\"All-In-One / HP / All-in-One 24-dp0209d / Win 11 Home / AMD Ryzen 5 4500U / 24G / 500G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Finance\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAP2/11112024\",\"assetName\":\"Lenovo ThinkPad X1 Carbon Gen 8\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"208\",\"externalSource\":\"HARDWARE\",\"id\":47,\"keeper\":\"Juwairiah\",\"location\":\"Personal Carry\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: PF1VB7AE;用途: Personal Work\",\"source\":\"SAS\",\"specification\":\"Laptop / Lenovo / ThinkPad X1 Carbon Gen 8 / Win 10 Pro / Core i7-10510U / 16G / 256G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Finance\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-207\",\"assetName\":\"HP ProDesk 400 G7\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"207\",\"externalSource\":\"HARDWARE\",\"id\":46,\"keeper\":\"Adha\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 4CE216BFJM\",\"source\":\"SAS\",\"specification\":\"CPU / HP / ProDesk 400 G7 / Win 11 Pro / Core i5-10500 / 8G / 250G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Engineering\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/TECH/047\",\"assetName\":\"HP ProDesk 400 G7\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"206\",\"externalSource\":\"HARDWARE\",\"id\":45,\"keeper\":\"Ilham\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 4CE216BNS9\",\"source\":\"SAS\",\"specification\":\"CPU / HP / ProDesk 400 G7 / Win 10 Pro / Core i5-10500 / 8G / 250G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Engineering\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAP20/112004\",\"assetName\":\"HP HP 14s-cf3022tx\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"205\",\"externalSource\":\"HARDWARE\",\"id\":44,\"keeper\":\"Adha\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 5CG03082JK\",\"source\":\"SAS\",\"specification\":\"Laptop / HP / HP 14s-cf3022tx / Win 10 Home / Core i5-1035G1 / 8G / 512G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Engineering\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAP5/112004\",\"assetName\":\"Lenovo ThinkPad X1\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"204\",\"externalSource\":\"HARDWARE\",\"id\":43,\"keeper\":\"Amir\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: PF1V7QXT\",\"source\":\"SAS\",\"specification\":\"Laptop / Lenovo / ThinkPad X1 / Win 10 Pro / Core i7-10510U / 16G / 256G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Engineering\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/CPU/053,SMT/N02/CPU046\",\"assetName\":\"Dell Vostro 230\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"203\",\"externalSource\":\"HARDWARE\",\"id\":42,\"keeper\":\"Halimaton\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 2VBK92S\",\"source\":\"SAS\",\"specification\":\"CPU / Dell / Vostro 230 / Win 7 Pro / Pentium Dual Core E6700 / 4G / 320G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production 2\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAP13/112004\",\"assetName\":\"HP HP 14s-cf2036tx\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"202\",\"externalSource\":\"HARDWARE\",\"id\":41,\"keeper\":\"Fitri/Hanif\",\"location\":\"Personal Carry\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 5CG011D1XR;用途: Personal Work\",\"source\":\"SAS\",\"specification\":\"Laptop / HP / HP 14s-cf2036tx / Win 10 Home / Core i7-1051U / 8G / 500GB\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Engineering\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/TECH/047CPU\",\"assetName\":\"HP\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"201\",\"externalSource\":\"HARDWARE\",\"id\":40,\"keeper\":\"Azam\",\"location\":\"Tech Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Not Specified\",\"source\":\"SAS\",\"specification\":\"CPU / HP\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Engineering\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/TECH/047PC\",\"assetName\":\"HP\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"200\",\"externalSource\":\"HARDWARE\",\"id\":39,\"keeper\":\"Azam\",\"location\":\"Tech Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Not Specified\",\"source\":\"SAS\",\"specification\":\"Monitor / HP\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Engineering\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/TECH/046CPU\",\"assetName\":\"Dell OptiPlex 3080\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"199\",\"externalSource\":\"HARDWARE\",\"id\":38,\"keeper\":\"Ariffin\",\"location\":\"Tech Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: LH5TTC3;用途: Not Specified\",\"source\":\"SAS\",\"specification\":\"CPU / Dell / OptiPlex 3080 / Core i3-10100\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Engineering\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/TECH/046PC\",\"assetName\":\"Dell\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"198\",\"externalSource\":\"HARDWARE\",\"id\":37,\"keeper\":\"Azam\",\"location\":\"Tech Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Not Specified\",\"source\":\"SAS\",\"specification\":\"Monitor / Dell\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Engineering\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/TECH/045CPU\",\"assetName\":\"Cooto\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"197\",\"externalSource\":\"HARDWARE\",\"id\":36,\"keeper\":\"Azam\",\"location\":\"Tech Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Not Specified\",\"source\":\"SAS\",\"specification\":\"CPU / Cooto\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Engineering\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/TECH/045PC\",\"assetName\":\"Dell\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"196\",\"externalSource\":\"HARDWARE\",\"id\":35,\"keeper\":\"Azam\",\"location\":\"Tech Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Not Specified\",\"source\":\"SAS\",\"specification\":\"Monitor / Dell\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Engineering\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/TECH/044CPU\",\"assetName\":\"HP ProDesk 400 G7\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"195\",\"externalSource\":\"HARDWARE\",\"id\":34,\"keeper\":\"Azam\",\"location\":\"Tech Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 4CE216BFHW;用途: Not Specified\",\"source\":\"SAS\",\"specification\":\"CPU / HP / ProDesk 400 G7 / Win 11 Pro / Core i5-10500 / 8G / 240G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Engineering\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/TECH/044PC\",\"assetName\":\"HP\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"194\",\"externalSource\":\"HARDWARE\",\"id\":33,\"keeper\":\"Azam\",\"location\":\"Tech Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Not Specified\",\"source\":\"SAS\",\"specification\":\"Monitor / HP\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Engineering\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/TECH/043CPU\",\"assetName\":\"HP\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"193\",\"exte...[已截断]'); +INSERT INTO `tbl_log` VALUES (8383, 63, '接口日志', '120.226.176.204/115.220.229.151', '2026-09-29 13:06:43', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":255,\"rows\":[{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-33\",\"assetName\":\"Ubuntu 24.04.1 LTS\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"33\",\"externalSource\":\"SOFTWARE\",\"id\":230,\"originalValue\":0.000000,\"purchaseDate\":1728849600000,\"quantity\":2.000000,\"remark\":\"供应商: Amimo;发票号: INV240902;原备注: For server\",\"source\":\"SAS\",\"specification\":\"Amimo\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-32\",\"assetName\":\"MS Windows 2000 Server Client Access License\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"32\",\"externalSource\":\"SOFTWARE\",\"id\":229,\"originalValue\":0.000000,\"quantity\":5.000000,\"remark\":\"许可证: 13925763;原备注: Authorization Number: 13880917ZZS0307\",\"source\":\"SAS\",\"specification\":\"Cert\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-31\",\"assetName\":\"MS Windows 2000 Server\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"31\",\"externalSource\":\"SOFTWARE\",\"id\":228,\"originalValue\":0.000000,\"quantity\":1.000000,\"source\":\"SAS\",\"specification\":\"Cert\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613749000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-30\",\"assetName\":\"MS SQL Server 2017 Standard\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"30\",\"externalSource\":\"SOFTWARE\",\"id\":227,\"originalValue\":3750.000000,\"purchaseDate\":1634846400000,\"quantity\":1.000000,\"remark\":\"供应商: Amimo;许可证: PHDV4-3VJWD-N7JVP-FGPKY-XBV89;发票号: INV211001;原备注: 4 Core License Key: 4TQHY-D7R86-VGBFG-PW7GV-8G2FY\",\"source\":\"SAS\",\"specification\":\"Amimo / CD\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613749000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-29\",\"assetName\":\"MS Office Home & Student 2010\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"29\",\"externalSource\":\"SOFTWARE\",\"id\":226,\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"许可证: GRQJ3-2TM6Q-BRFY4-DFJYQ-2BQKM\",\"source\":\"SAS\",\"specification\":\"CD\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613749000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-28\",\"assetName\":\"MS Office Home & Student 2010\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"28\",\"externalSource\":\"SOFTWARE\",\"id\":225,\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"许可证: TQ8C3-67C72-7B33C-BM4GF-33VB2\",\"source\":\"SAS\",\"specification\":\"CD\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613749000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-27\",\"assetName\":\"MS Office Home & Student\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"27\",\"externalSource\":\"SOFTWARE\",\"id\":224,\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"原备注: Bundled with HP Laptop 14s-cf3022TX (SN 5CG03082BJ)\",\"source\":\"SAS\",\"specification\":\"Sticker\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613749000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-17\",\"assetName\":\"MS Office Home & Business 2010\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"17\",\"externalSource\":\"SOFTWARE\",\"id\":223,\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"许可证: H7F93-PMMX8-8MHMT-4CY7W-W9QHM;原备注: Written: Khairul Bariyyah PC14\",\"source\":\"SAS\",\"specification\":\"Cert\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613749000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-25\",\"assetName\":\"MS Office Home & Student\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"25\",\"externalSource\":\"SOFTWARE\",\"id\":222,\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"原备注: Bundled with HP Laptop - 14s-cf3022tx (5CG03082JK) {Adha}\",\"source\":\"SAS\",\"specification\":\"Sticker\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613749000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-24\",\"assetName\":\"MS Office Home & Student\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"24\",\"externalSource\":\"SOFTWARE\",\"id\":221,\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"原备注: Bundled with HP Laptop 14s-cf2036TX (SN 5CG011D1W7); written off - spoilt\",\"source\":\"SAS\",\"specification\":\"Sticker\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613749000,\"useDepartment\":\"Account\"},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-23\",\"assetName\":\"MS Office Home & Student\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"23\",\"externalSource\":\"SOFTWARE\",\"id\":220,\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"原备注: Bundled with HP Laptop 14s-cf3022TX (SN 5CG03082JY)\",\"source\":\"SAS\",\"specification\":\"Sticker\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613749000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-22\",\"assetName\":\"MS Office Home & Business 2010\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"22\",\"externalSource\":\"SOFTWARE\",\"id\":219,\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"许可证: KBFDQ-4JGT4-VDWCT-C83WF-2RKWD;原备注: Written: Rosfi PC18\",\"source\":\"SAS\",\"specification\":\"Cert\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613749000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-21\",\"assetName\":\"MS Office Home & Business 2010\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"21\",\"externalSource\":\"SOFTWARE\",\"id\":218,\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"许可证: VTVDJ-8GCYX-4HC26-GPGQP-DRMY4;原备注: Written: Sharifah PC20\",\"source\":\"SAS\",\"specification\":\"Cert\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613749000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-20\",\"assetName\":\"MS Office Home & Business 2010\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"20\",\"externalSource\":\"SOFTWARE\",\"id\":217,\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"许可证: VK32X-YGC4D-423VR-2XC4K-D4C4R;原备注: Written: PTC8125D-02\",\"source\":\"SAS\",\"specification\":\"Cert\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613749000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-19\",\"assetName\":\"MS Office Home & Business 2010\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"19\",\"externalSource\":\"SOFTWARE\",\"id\":216,\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"许可证: Q69G3-62HB3-H9VYY-VBGM8-6YCYP;原备注: Written: PC-2 Habsah-Admin & PC31\",\"source\":\"SAS\",\"specification\":\"Cert\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613749000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-18\",\"assetName\":\"MS Office Home & Business 2010\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"18\",\"externalSource\":\"SOFTWARE\",\"id\":215,\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"许可证: 23MQ8-Q739G-DT3MW-43B9K-PRGDV;原备注: Written: PTC8125D-01\",\"source\":\"SAS\",\"specification\":\"Cert\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613749000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-26\",\"assetName\":\"MS Office Home & Student\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"26\",\"externalSource\":\"SOFTWARE\",\"id\":214,\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"原备注: Check Laptop with Herman\",\"source\":\"SAS\",\"specification\":\"Sticker\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613749000},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-374\",\"assetName\":\"N/A Server\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"374\",\"externalSource\":\"HARDWARE\",\"id\":213,\"location\":\"Server Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: N/A\",\"source\":\"SAS\",\"specification\":\"Server / N/A / Server / Ubuntu 24.04.1 LTS / 8TB,1TB M2,512MB M2\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Technical & Technologies\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-373\",\"assetName\":\"N/A Server\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"373\",\"externalSource\":\"HARDWARE\",\"id\":212,\"location\":\"Server Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: N/A;用途: Seafile\",\"source\":\"SAS\",\"specification\":\"Server / N/A / Server / Linux CentOS / 8TB\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Technical & Technologies\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-372\",\"assetName\":\"Hisense Hisense S02BDS7AA21E\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"372\",\"externalSource\":\"HARDWARE\",\"id\":211,\"location\":\"Meeting Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 3TB86B2303620 194VK21652\",\"source\":\"SAS\",\"specification\":\"Smartboard / Hisense / Hisense S02BDS7AA21E / Win 11 Pro / Core i7-10700 / 16G / 512G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (8384, 63, '接口日志', '111.2.129.148/115.220.229.151', '2026-09-29 13:08:03', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (8385, 63, '接口日志', '111.2.129.163/115.220.229.151', '2026-09-29 13:08:10', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"}]'); +INSERT INTO `tbl_log` VALUES (8386, 63, '接口日志', '111.2.129.148/115.220.229.151', '2026-09-29 13:08:10', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8387, 63, '接口日志', '111.2.129.142/115.220.229.151', '2026-09-29 13:08:10', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (8388, 63, '接口日志', '111.2.129.167/115.220.229.151', '2026-09-29 13:08:11', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (8389, 63, '接口日志', '111.2.129.137/115.220.229.151', '2026-09-29 13:08:11', 0, 'PersonController.getPersonByNumType(..)', NULL, 'GET /apis/person/getPersonByNumType', '{\"typeNum\":\"1\"}', '[]'); +INSERT INTO `tbl_log` VALUES (8390, 63, '接口日志', '111.2.129.173/115.220.229.151', '2026-09-29 13:08:11', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8391, 63, '接口日志', '111.2.129.155/115.220.229.151', '2026-09-29 13:08:11', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"出库\\\",\\\"subType\\\":\\\"销售\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-29\\\",\\\"endTime\\\":\\\"2026-09-29\\\",\\\"createTimeRange\\\":[\\\"2026-06-28T16:00:00.000Z\\\",\\\"2026-09-28T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":50,\"rows\":[{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789718584000,\"creator\":63,\"debt\":808500.000000,\"defaultNumber\":\"XSCK00000001728\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":808500.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1720,\"lastDebt\":808500.000000,\"lastDeposit\":0.000000,\"linkNumber\":\"XSDD00000001726\",\"materialCount\":10000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK00000001728\",\"operTime\":1789732981000,\"operTimeStr\":\"2026-09-18 16:03:01\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"totalPrice\":735000.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1786305600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-87\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1671,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303506-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-87\",\"operTime\":1786305600000,\"operTimeStr\":\"2026-08-10 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1786305600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2159-86\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1670,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303506-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2159-86\",\"operTime\":1786305600000,\"operTimeStr\":\"2026-08-10 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2159\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785873600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-DO_2158-85\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1669,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-DO_2158-85\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:DO_2158\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785873600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-84\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1668,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-84\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785873600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-DO_2157-83\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1667,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-DO_2157-83\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:DO_2157\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785268800000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2150-69\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1665,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303480-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2150-69\",\"operTime\":1785268800000,\"operTimeStr\":\"2026-07-29 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2150\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784750400000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2142-68\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1664,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303480-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2142-68\",\"operTime\":1784750400000,\"operTimeStr\":\"2026-07-23 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2142\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784145600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-67\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1663,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-67\",\"operTime\":1784145600000,\"operTimeStr\":\"2026-07-16 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784145600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2134-66\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1662,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2134-66\",\"operTime\":1784145600000,\"operTimeStr\":\"2026-07-16 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2134\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (8392, 63, '接口日志', '111.2.129.172/115.220.229.151', '2026-09-29 13:08:11', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8393, 63, '接口日志', '117.44.77.25/115.220.229.151', '2026-09-29 13:08:11', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (8394, 63, '接口日志', '111.2.129.141/115.220.229.151', '2026-09-29 13:08:31', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8395, 63, '接口日志', '111.2.129.157/115.220.229.151', '2026-09-29 13:08:31', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (8396, 63, '接口日志', '111.2.129.171/115.220.229.151', '2026-09-29 13:08:31', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"}]'); +INSERT INTO `tbl_log` VALUES (8397, 63, '接口日志', '111.2.129.154/115.220.229.151', '2026-09-29 13:08:31', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (8398, 63, '接口日志', '111.2.129.136/115.220.229.151', '2026-09-29 13:08:31', 0, 'CustomerCategoryController.getTreeList(..)', NULL, 'GET /apis/customerCategory/treeList', '{}', '{\"code\":200,\"data\":{\"data\":[],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (8399, 63, '接口日志', '111.2.129.165/115.220.229.151', '2026-09-29 13:08:31', 0, 'PersonController.getPersonByType(..)', NULL, 'GET /apis/person/getPersonByType', '{\"type\":\"财务员\"}', '{\"code\":200,\"data\":{\"personList\":[{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":43,\"name\":\"Juwairiah\",\"type\":\"财务员\"}]}}'); +INSERT INTO `tbl_log` VALUES (8400, 63, '接口日志', '111.2.129.168/115.220.229.151', '2026-09-29 13:08:31', 0, 'AccountHeadController.getList(..)', NULL, 'GET /apis/accountHead/list', '{\"search\":\"{\\\"billNo\\\":\\\"\\\",\\\"searchMaterial\\\":\\\"\\\",\\\"type\\\":\\\"收款\\\",\\\"remark\\\":\\\"\\\",\\\"number\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-29\\\",\\\"endTime\\\":\\\"2026-09-29\\\",\\\"createTimeRange\\\":[\\\"2026-06-28T16:00:00.000Z\\\",\\\"2026-09-28T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":11,\"rows\":[{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2110-25\",\"billTime\":1784836800000,\"billTimeStr\":\"2026-07-24 00:00:00\",\"changeAmount\":1122000.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":105,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2110\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2110-25\",\"sourceTime\":\"2026-06-23 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":1122000.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2108-18\",\"billTime\":1784145600000,\"billTimeStr\":\"2026-07-16 00:00:00\",\"changeAmount\":1122000.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":103,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2108\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2108-18\",\"sourceTime\":\"2026-06-16 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":1122000.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2107-14\",\"billTime\":1783281600000,\"billTimeStr\":\"2026-07-06 00:00:00\",\"changeAmount\":1122000.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":102,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2107\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2107-14\",\"sourceTime\":\"2026-06-06 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":1122000.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2102-11\",\"billTime\":1782763200000,\"billTimeStr\":\"2026-06-30 00:00:00\",\"changeAmount\":1122000.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":101,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2102\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2102-11\",\"sourceTime\":\"2026-05-26 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":1122000.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2129-11\",\"billTime\":1786564800000,\"billTimeStr\":\"2026-08-13 00:00:00\",\"changeAmount\":1122000.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":99,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2129\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2129-11\",\"sourceTime\":\"2026-01-01 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":1122000.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2133-65\",\"billTime\":1786651200000,\"billTimeStr\":\"2026-08-14 00:00:00\",\"changeAmount\":80850.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":98,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2133\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2133-65\",\"sourceTime\":\"2026-07-16 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2131-47\",\"billTime\":1783886400000,\"billTimeStr\":\"2026-07-13 00:00:00\",\"changeAmount\":80850.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":97,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2131\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2131-47\",\"sourceTime\":\"2026-07-13 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2130-44\",\"billTime\":1786046400000,\"billTimeStr\":\"2026-08-07 00:00:00\",\"changeAmount\":242550.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":96,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2130\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2130-44\",\"sourceTime\":\"2026-07-09 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":242550.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2122-26\",\"billTime\":1785441600000,\"billTimeStr\":\"2026-07-31 00:00:00\",\"changeAmount\":161700.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":95,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2122\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2122-26\",\"sourceTime\":\"2026-07-01 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":161700.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2113-15\",\"billTime\":1785182400000,\"billTimeStr\":\"2026-07-28 00:00:00\",\"changeAmount\":161700.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":94,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2113\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2113-15\",\"sourceTime\":\"2026-06-28 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":161700.000000,\"type\":\"收款\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (8401, 63, '接口日志', '112.13.210.158/115.220.229.151', '2026-09-29 13:08:31', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (8402, 63, '接口日志', '112.13.210.47/115.220.229.151', '2026-09-29 13:08:31', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (8403, 63, '接口日志', '111.2.129.162/115.220.229.151', '2026-09-29 13:08:31', 0, 'DepotHeadController.getNeedCount(..)', NULL, 'GET /apis/depotHead/getNeedCount', '{\"type\":\"customer\"}', '{\"code\":200,\"data\":{\"needCount\":1}}'); +INSERT INTO `tbl_log` VALUES (8404, NULL, '接口日志', '43.174.53.14/1.9.116.218', '2026-09-29 13:11:46', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (8405, NULL, '接口日志', '43.152.142.110/1.9.116.218', '2026-09-29 13:11:46', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (8406, 63, '接口日志', '43.174.53.14/1.9.116.218', '2026-09-29 13:11:47', 0, 'FunctionController.findMenuByPNumber(..)', NULL, 'POST /apis/function/findMenuByPNumber', '{\"jsonObject\":{\"userId\":63,\"pNumber\":0}}', '[{\"component\":\"/layouts/TabLayout\",\"icon\":\"home\",\"id\":0,\"text\":\"首页\",\"url\":\"/dashboard/analysis\",\"textEn\":\"Home\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/SaleOrderList\",\"icon\":\"profile\",\"id\":242,\"text\":\"销售订单\",\"url\":\"/bill/sale_order\",\"textEn\":\"Sales Orders\"},{\"component\":\"/bill/SaleOutList\",\"icon\":\"profile\",\"id\":41,\"text\":\"销售出库\",\"url\":\"/bill/sale_out\",\"textEn\":\"Sales Shipments\"},{\"component\":\"/bill/DeliveryPlanList\",\"icon\":\"profile\",\"id\":271,\"text\":\"交货计划管理\",\"url\":\"/bill/delivery_plan\",\"textEn\":\"Delivery Plans\"},{\"component\":\"/bill/SaleShipmentList\",\"icon\":\"car\",\"id\":268,\"text\":\"发货管理\",\"url\":\"/bill/sale_shipment\",\"textEn\":\"Shipment Management\"},{\"component\":\"/bill/SaleBackList\",\"icon\":\"profile\",\"id\":200,\"text\":\"销售退货\",\"url\":\"/bill/sale_back\",\"textEn\":\"Sales Returns\"},{\"component\":\"/bill/RetailOutList\",\"icon\":\"profile\",\"id\":210,\"text\":\"零售出库\",\"url\":\"/bill/retail_out\",\"textEn\":\"Retail Shipments\"},{\"component\":\"/bill/RetailBackList\",\"icon\":\"profile\",\"id\":211,\"text\":\"零售退货\",\"url\":\"/bill/retail_back\",\"textEn\":\"Retail Returns\"}],\"icon\":\"shopping-cart\",\"id\":38,\"text\":\"销售管理\",\"url\":\"/billB\",\"textEn\":\"Sales Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/PurchaseApplyList\",\"icon\":\"profile\",\"id\":261,\"text\":\"请购单\",\"url\":\"/bill/purchase_apply\",\"textEn\":\"Purchase Requisitions\"},{\"component\":\"/bill/PurchaseOrderList\",\"icon\":\"profile\",\"id\":241,\"text\":\"采购订单\",\"url\":\"/bill/purchase_order\",\"textEn\":\"Purchase Orders\"},{\"component\":\"/bill/PurchaseInList\",\"icon\":\"profile\",\"id\":33,\"text\":\"采购入库\",\"url\":\"/bill/purchase_in\",\"textEn\":\"Purchase Receipts\"},{\"component\":\"/bill/PurchaseBackList\",\"icon\":\"profile\",\"id\":199,\"text\":\"采购退货\",\"url\":\"/bill/purchase_back\",\"textEn\":\"Purchase Returns\"}],\"icon\":\"retweet\",\"id\":32,\"text\":\"采购管理\",\"url\":\"/bill\",\"textEn\":\"Purchase Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/production/PackBomList\",\"icon\":\"profile\",\"id\":263,\"text\":\"生产方案\",\"url\":\"/production/pack_bom\",\"textEn\":\"Production BOMs\"},{\"component\":\"/production/OrderList\",\"icon\":\"profile\",\"id\":264,\"text\":\"生产工单\",\"url\":\"/production/order\",\"textEn\":\"Production Orders\"},{\"component\":\"/production/RequisitionList\",\"icon\":\"profile\",\"id\":265,\"text\":\"领料管理\",\"url\":\"/production/requisition\",\"textEn\":\"Material Requisitions\"},{\"component\":\"/production/ReportList\",\"icon\":\"profile\",\"id\":266,\"text\":\"完工报工\",\"url\":\"/production/report\",\"textEn\":\"Production Reports\"}],\"icon\":\"cluster\",\"id\":262,\"text\":\"生产管理\",\"url\":\"/production\",\"textEn\":\"Production Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/MaterialStock\",\"icon\":\"profile\",\"id\":246,\"text\":\"商品库存\",\"url\":\"/report/material_stock\",\"textEn\":\"Product Inventory\"},{\"component\":\"/bill/OtherInList\",\"icon\":\"profile\",\"id\":201,\"text\":\"其它入库\",\"url\":\"/bill/other_in\",\"textEn\":\"Other Receipts\"},{\"component\":\"/bill/OtherOutList\",\"icon\":\"profile\",\"id\":202,\"text\":\"其它出库\",\"url\":\"/bill/other_out\",\"textEn\":\"Other Shipments\"},{\"component\":\"/bill/HeadquartersInList\",\"icon\":\"profile\",\"id\":270,\"text\":\"总部入库\",\"url\":\"/bill/headquarters_in\",\"textEn\":\"Headquarters Receipts\"}],\"icon\":\"hdd\",\"id\":239,\"text\":\"仓库管理\",\"url\":\"/billD\",\"textEn\":\"Warehouse Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/financial/MoneyInList\",\"icon\":\"profile\",\"id\":204,\"text\":\"收款单\",\"url\":\"/financial/money_in\",\"textEn\":\"Receipt Vouchers\"},{\"component\":\"/financial/MoneyOutList\",\"icon\":\"profile\",\"id\":205,\"text\":\"付款单\",\"url\":\"/financial/money_out\",\"textEn\":\"Payment Vouchers\"}],\"icon\":\"money-collect\",\"id\":44,\"text\":\"财务管理\",\"url\":\"/financial\",\"textEn\":\"Finance Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/asset/AssetDashboard\",\"icon\":\"dashboard\",\"id\":276,\"text\":\"资产汇总\",\"url\":\"/asset\",\"textEn\":\"Asset Overview\"},{\"component\":\"/asset/AssetList\",\"icon\":\"profile\",\"id\":273,\"text\":\"资产台账\",\"url\":\"/asset/ledger\",\"textEn\":\"Asset Ledger\"},{\"component\":\"/asset/DeviceList\",\"icon\":\"tool\",\"id\":274,\"text\":\"设备台账\",\"url\":\"/asset/device\",\"textEn\":\"Device Ledger\"},{\"component\":\"/asset/InventoryList\",\"icon\":\"scan\",\"id\":275,\"text\":\"资产盘点\",\"url\":\"/asset/inventory\",\"textEn\":\"Asset Inventory\"}],\"icon\":\"bank\",\"id\":272,\"text\":\"资产管理\",\"url\":\"/assetManagement\",\"textEn\":\"Asset Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/material/MaterialCategoryList\",\"icon\":\"profile\",\"id\":22,\"text\":\"商品类别\",\"url\":\"/material/material_category\",\"textEn\":\"Product Categories\"},{\"component\":\"/material/MaterialList\",\"icon\":\"profile\",\"id\":23,\"text\":\"商品信息\",\"url\":\"/material/material\",\"textEn\":\"Product Information\"},{\"component\":\"/system/UnitList\",\"icon\":\"profile\",\"id\":220,\"text\":\"多单位\",\"url\":\"/system/unit\",\"textEn\":\"Multiple Units\"},{\"component\":\"/material/MaterialAttributeList\",\"icon\":\"profile\",\"id\":247,\"text\":\"多属性\",\"url\":\"/material/material_attribute\",\"textEn\":\"Product Attributes\"}],\"icon\":\"shopping\",\"id\":21,\"text\":\"商品管理\",\"url\":\"/material\",\"textEn\":\"Product Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/AccountReport\",\"icon\":\"profile\",\"id\":207,\"text\":\"账户统计\",\"url\":\"/report/account_report\",\"textEn\":\"Account Summary\"},{\"component\":\"/report/RetailOutReport\",\"icon\":\"profile\",\"id\":259,\"text\":\"零售统计\",\"url\":\"/report/retail_out_report\",\"textEn\":\"Retail Summary\"},{\"component\":\"/report/BuyInReport\",\"icon\":\"profile\",\"id\":208,\"text\":\"采购统计\",\"url\":\"/report/buy_in_report\",\"textEn\":\"Purchase Summary\"},{\"component\":\"/report/SaleOutReport\",\"icon\":\"profile\",\"id\":209,\"text\":\"销售统计\",\"url\":\"/report/sale_out_report\",\"textEn\":\"Sales Summary\"},{\"component\":\"/report/InDetail\",\"icon\":\"profile\",\"id\":226,\"text\":\"入库明细\",\"url\":\"/report/in_detail\",\"textEn\":\"Inbound Details\"},{\"component\":\"/report/OutDetail\",\"icon\":\"profile\",\"id\":227,\"text\":\"出库明细\",\"url\":\"/report/out_detail\",\"textEn\":\"Outbound Details\"},{\"component\":\"/report/InMaterialCount\",\"icon\":\"profile\",\"id\":228,\"text\":\"入库汇总\",\"url\":\"/report/in_material_count\",\"textEn\":\"Inbound Summary\"},{\"component\":\"/report/OutMaterialCount\",\"icon\":\"profile\",\"id\":229,\"text\":\"出库汇总\",\"url\":\"/report/out_material_count\",\"textEn\":\"Outbound Summary\"},{\"component\":\"/report/InOutStockReport\",\"icon\":\"profile\",\"id\":59,\"text\":\"进销存统计\",\"url\":\"/report/in_out_stock_report\",\"textEn\":\"Inventory Transaction Summary\"},{\"component\":\"/report/CustomerAccount\",\"icon\":\"profile\",\"id\":235,\"text\":\"客户对账\",\"url\":\"/report/customer_account\",\"textEn\":\"Customer Reconciliation\"},{\"component\":\"/report/VendorAccount\",\"icon\":\"profile\",\"id\":237,\"text\":\"供应商对账\",\"url\":\"/report/vendor_account\",\"textEn\":\"Supplier Reconciliation\"},{\"component\":\"/report/StockWarningReport\",\"icon\":\"profile\",\"id\":244,\"text\":\"库存预警\",\"url\":\"/report/stock_warning_report\",\"textEn\":\"Stock Alerts\"}],\"icon\":\"pie-chart\",\"id\":198,\"text\":\"报表查询\",\"url\":\"/report\",\"textEn\":\"Reports\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/VendorList\",\"icon\":\"profile\",\"id\":25,\"text\":\"供应商信息\",\"url\":\"/system/vendor\",\"textEn\":\"Suppliers\"},{\"component\":\"/system/CustomerList\",\"icon\":\"profile\",\"id\":217,\"text\":\"客户信息\",\"url\":\"/system/customer\",\"textEn\":\"Customers\"},{\"component\":\"/system/MemberList\",\"icon\":\"profile\",\"id\":218,\"text\":\"会员信息\",\"url\":\"/system/member\",\"textEn\":\"Members\"},{\"component\":\"/system/CustomerCategoryList\",\"icon\":\"bars\",\"id\":267,\"text\":\"客户分类\",\"url\":\"/system/customerCategory\",\"textEn\":\"Customer Categories\"},{\"component\":\"/system/DepotList\",\"icon\":\"profile\",\"id\":26,\"text\":\"仓库信息\",\"url\":\"/system/depot\",\"textEn\":\"Warehouses\"},{\"component\":\"/system/InOutItemList\",\"icon\":\"profile\",\"id\":194,\"text\":\"收支项目\",\"url\":\"/system/in_out_item\",\"textEn\":\"Income and Expense Items\"},{\"component\":\"/system/AccountList\",\"icon\":\"profile\",\"id\":195,\"text\":\"结算账户\",\"url\":\"/system/account\",\"textEn\":\"Settlement Accounts\"},{\"component\":\"/system/PersonList\",\"icon\":\"profile\",\"id\":31,\"text\":\"操作人员管理\",\"url\":\"/system/person\",\"textEn\":\"Operators\"}],\"icon\":\"appstore\",\"id\":24,\"text\":\"基础资料\",\"url\":\"/systemA\",\"textEn\":\"Master Data\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/RoleList\",\"icon\":\"profile\",\"id\":13,\"text\":\"角色管理\",\"url\":\"/system/role\",\"textEn\":\"Role Management\"},{\"component\":\"/system/UserList\",\"icon\":\"profile\",\"id\":14,\"text\":\"用户管理\",\"url\":\"/system/user\",\"textEn\":\"User Management\"},{\"component\":\"/system/OrganizationList\",\"icon\":\"profile\",\"id\":243,\"text\":\"部门管理\",\"url\":\"/system/organization\",\"textEn\":\"Department Management\"},{\"component\":\"/system/LogList\",\"icon\":\"profile\",\"id\":15,\"text\":\"日志管理\",\"url\":\"/system/log\",\"textEn\":\"Log Management\"},{\"component\":\"/material/MaterialPropertyList\",\"icon\":\"profile\",\"id\":236,\"text\":\"商品属性\",\"url\":\"/material/material_property\",\"textEn\":\"Product Properties\"},{\"component\":\"/system/SystemConfigList\",\"icon\":\"profile\",\"id\":234,\"text\":\"系统配置\",\"url\":\"/system/system_config\",\"textEn\":\"System Configuration\"},{\"component\":\"/system/FunctionList\",\"icon\":\"profile\",\"id\":16,\"text\":\"菜单管理\",\"url\":\"/system/function\",\"textEn\":\"Resource Menus\"},{\"component\":\"/system/PluginList\",\"icon\":\"profile\",\"id\":245,\"text\":\"插件管理\",\"url\":\"/system/plugin\",\"textEn\":\"Plugin Management\"},{\"component\":\"/system/DictList\",\"icon\":\"profile\",\"id\":260,\"text\":\"字典管理\",\"url\":\"/system/dict\",\"textEn\":\"Dictionary Management\"},{\"component\":\"/system/PlatformConfigList\",\"icon\":\"profile\",\"id\":258,\"text\":\"平台配置\",\"url\":\"/system/platform_config\",\"textEn\":\"Platform Configuration\"}],\"icon\":\"setting\",\"id\":1,\"text\":\"系统管理\",\"url\":\"/system\",\"textEn\":\"System Management\"}]'); +INSERT INTO `tbl_log` VALUES (8407, 63, '接口日志', '43.174.52.68/1.9.116.218', '2026-09-29 13:11:47', 0, 'UserController.getUserBtnByCurrentUser(..)', NULL, 'GET /apis/user/getUserBtnByCurrentUser', '{}', '{\"code\":200,\"data\":{\"userBtn\":[{\"btnStr\":\"8,1\",\"url\":\"/system/role\"},{\"btnStr\":\"1\",\"url\":\"/system/user\"},{\"btnStr\":\"1\",\"url\":\"/system/organization\"},{\"btnStr\":\"1\",\"url\":\"/material/material_property\"},{\"btnStr\":\"1\",\"url\":\"/system/system_config\"},{\"btnStr\":\"1\",\"url\":\"/system/function\"},{\"btnStr\":\"1\",\"url\":\"/system/plugin\"},{\"btnStr\":\"1\",\"url\":\"/material/material_category\"},{\"btnStr\":\"1,3\",\"url\":\"/material/material\"},{\"btnStr\":\"1\",\"url\":\"/system/unit\"},{\"btnStr\":\"1\",\"url\":\"/material/material_attribute\"},{\"btnStr\":\"1,3\",\"url\":\"/system/vendor\"},{\"btnStr\":\"1,3\",\"url\":\"/system/customer\"},{\"btnStr\":\"1,3\",\"url\":\"/system/member\"},{\"btnStr\":\"1\",\"url\":\"/system/depot\"},{\"btnStr\":\"1\",\"url\":\"/system/in_out_item\"},{\"btnStr\":\"1\",\"url\":\"/system/account\"},{\"btnStr\":\"1\",\"url\":\"/system/person\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_apply\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_out\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/delivery_plan\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/sale_shipment\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_out\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/order\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/requisition\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/report\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/giro\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/advance_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/allocation_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/assemble\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/headquarters_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/disassemble\"}]}}'); +INSERT INTO `tbl_log` VALUES (8408, 63, '接口日志', '43.152.142.141/1.9.116.218', '2026-09-29 13:11:48', 0, 'MsgController.getList(..)', NULL, 'GET /apis/msg/list', '{\"search\":\"{\\\"name\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (8409, 63, '接口日志', '43.174.54.50/1.9.116.218', '2026-09-29 13:11:48', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-04\",\"inbound\":100669.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (8410, 63, '接口日志', '43.152.142.33/1.9.116.218', '2026-09-29 13:11:48', 0, 'MsgController.getMsgByStatus(..)', NULL, 'GET /apis/msg/getMsgByStatus', '{\"status\":\"1\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (8411, 63, '接口日志', '43.152.142.83/1.9.116.218', '2026-09-29 13:11:56', 0, 'PlatformConfigController.getList(..)', NULL, 'GET /apis/platformConfig/list', '{\"search\":\"{\\\"platformKey\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":21,\"rows\":[{\"id\":1,\"platformKey\":\"platform_name\",\"platformKeyInfo\":\"平台名称\",\"platformValue\":\"SMT\"},{\"id\":3,\"platformKey\":\"platform_url\",\"platformKeyInfo\":\"官方网站\",\"platformValue\":\"http://www.gyjerp.com/\"},{\"id\":4,\"platformKey\":\"bill_print_flag\",\"platformKeyInfo\":\"三联打印启用标记\",\"platformValue\":\"0\"},{\"id\":5,\"platformKey\":\"bill_print_url\",\"platformKeyInfo\":\"三联打印地址\",\"platformValue\":\"\"},{\"id\":6,\"platformKey\":\"pay_fee_url\",\"platformKeyInfo\":\"租户续费地址\",\"platformValue\":\"\"},{\"id\":7,\"platformKey\":\"register_flag\",\"platformKeyInfo\":\"注册启用标记\",\"platformValue\":\"0\"},{\"id\":9,\"platformKey\":\"send_workflow_url\",\"platformKeyInfo\":\"发起流程地址\",\"platformValue\":\"\"},{\"id\":10,\"platformKey\":\"weixinUrl\",\"platformKeyInfo\":\"微信url\",\"platformValue\":\"\"},{\"id\":11,\"platformKey\":\"weixinAppid\",\"platformKeyInfo\":\"微信appid\",\"platformValue\":\"\"},{\"id\":12,\"platformKey\":\"weixinSecret\",\"platformKeyInfo\":\"微信secret\",\"platformValue\":\"\"}]}}'); +INSERT INTO `tbl_log` VALUES (8412, 63, '接口日志', '43.174.32.33/1.9.116.218', '2026-09-29 13:11:58', 0, 'SysDictTypeController.list(..)', NULL, 'GET /apis/dict/type/list', '{\"search\":\"{\\\"dictName\\\":\\\"\\\",\\\"dictType\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"createBy\":\"admin\",\"createTime\":1639589778000,\"dictId\":1,\"dictName\":\"用户性别\",\"dictType\":\"sys_user_sex\",\"params\":{},\"remark\":\"用户性别列表\",\"status\":\"0\",\"updateBy\":\"admin\",\"updateTime\":1775132441000},{\"createBy\":\"admin\",\"createTime\":1775241057000,\"dictId\":12,\"dictName\":\"系统开关\",\"dictType\":\"sys_normal_disable\",\"params\":{},\"remark\":\"系统开关列表\",\"status\":\"0\",\"updateBy\":\"admin\",\"updateTime\":1775324469000}]}}'); +INSERT INTO `tbl_log` VALUES (8413, 63, '接口日志', '43.152.142.132/1.9.116.218', '2026-09-29 13:11:58', 0, 'SysDictDataController.dictType(..)', NULL, 'GET /apis/dict/data/type/sys_normal_disable', '{\"dictType\":\"sys_normal_disable\"}', '{\"msg\":\"操作成功\",\"code\":0,\"data\":[{\"createBy\":\"admin\",\"createTime\":1775241094000,\"dictCode\":11,\"dictLabel\":\"正常\",\"dictSort\":1,\"dictType\":\"sys_normal_disable\",\"dictValue\":\"0\",\"isDefault\":\"N\",\"listClass\":\"green\",\"params\":{},\"remark\":\"正常状态\",\"status\":\"0\"},{\"createBy\":\"admin\",\"createTime\":1775241123000,\"dictCode\":12,\"dictLabel\":\"停用\",\"dictSort\":2,\"dictType\":\"sys_normal_disable\",\"dictValue\":\"1\",\"isDefault\":\"N\",\"listClass\":\"red\",\"params\":{},\"remark\":\"停用状态\",\"status\":\"0\"}]}'); +INSERT INTO `tbl_log` VALUES (8414, 63, '接口日志', '43.152.142.43/1.9.116.218', '2026-09-29 13:11:58', 0, 'SysDictDataController.dictType(..)', NULL, 'GET /apis/dict/data/type/sys_normal_disable', '{\"dictType\":\"sys_normal_disable\"}', '{\"msg\":\"操作成功\",\"code\":0,\"data\":[{\"createBy\":\"admin\",\"createTime\":1775241094000,\"dictCode\":11,\"dictLabel\":\"正常\",\"dictSort\":1,\"dictType\":\"sys_normal_disable\",\"dictValue\":\"0\",\"isDefault\":\"N\",\"listClass\":\"green\",\"params\":{},\"remark\":\"正常状态\",\"status\":\"0\"},{\"createBy\":\"admin\",\"createTime\":1775241123000,\"dictCode\":12,\"dictLabel\":\"停用\",\"dictSort\":2,\"dictType\":\"sys_normal_disable\",\"dictValue\":\"1\",\"isDefault\":\"N\",\"listClass\":\"red\",\"params\":{},\"remark\":\"停用状态\",\"status\":\"0\"}]}'); +INSERT INTO `tbl_log` VALUES (8415, 63, '接口日志', '43.152.142.118/1.9.116.218', '2026-09-29 13:11:58', 0, 'SysDictDataController.dictType(..)', NULL, 'GET /apis/dict/data/type/sys_normal_disable', '{\"dictType\":\"sys_normal_disable\"}', '{\"msg\":\"操作成功\",\"code\":0,\"data\":[{\"createBy\":\"admin\",\"createTime\":1775241094000,\"dictCode\":11,\"dictLabel\":\"正常\",\"dictSort\":1,\"dictType\":\"sys_normal_disable\",\"dictValue\":\"0\",\"isDefault\":\"N\",\"listClass\":\"green\",\"params\":{},\"remark\":\"正常状态\",\"status\":\"0\"},{\"createBy\":\"admin\",\"createTime\":1775241123000,\"dictCode\":12,\"dictLabel\":\"停用\",\"dictSort\":2,\"dictType\":\"sys_normal_disable\",\"dictValue\":\"1\",\"isDefault\":\"N\",\"listClass\":\"red\",\"params\":{},\"remark\":\"停用状态\",\"status\":\"0\"}]}'); +INSERT INTO `tbl_log` VALUES (8416, 63, '接口日志', '43.174.53.14/1.9.116.218', '2026-09-29 13:12:00', 0, 'PluginController.getPluginInfo(..)', NULL, 'GET /apis/plugin/list', '{\"currentPage\":1,\"pageSize\":10}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (8417, 63, '接口日志', '43.174.53.17/1.9.116.218', '2026-09-29 13:12:04', 0, 'FunctionController.getList(..)', NULL, 'GET /apis/function/list', '{\"search\":\"{\\\"name\\\":\\\"\\\",\\\"nameEn\\\":\\\"\\\",\\\"type\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":79,\"rows\":[{\"component\":\"/layouts/TabLayout\",\"deleteFlag\":\"0\",\"enabled\":true,\"icon\":\"shopping-cart\",\"id\":38,\"name\":\"销售管理\",\"nameEn\":\"Sales Management\",\"number\":\"0603\",\"parentNumber\":\"0\",\"pushBtn\":\"\",\"sort\":\"0001\",\"state\":false,\"type\":\"电脑版\",\"url\":\"/billB\"},{\"component\":\"/layouts/TabLayout\",\"deleteFlag\":\"0\",\"enabled\":true,\"icon\":\"retweet\",\"id\":32,\"name\":\"采购管理\",\"nameEn\":\"Purchase Management\",\"number\":\"0502\",\"parentNumber\":\"0\",\"pushBtn\":\"\",\"sort\":\"0002\",\"state\":false,\"type\":\"电脑版\",\"url\":\"/bill\"},{\"component\":\"/layouts/TabLayout\",\"deleteFlag\":\"0\",\"enabled\":true,\"icon\":\"cluster\",\"id\":262,\"name\":\"生产管理\",\"nameEn\":\"Production Management\",\"number\":\"0901\",\"parentNumber\":\"0\",\"pushBtn\":\"\",\"sort\":\"0003\",\"state\":false,\"type\":\"电脑版\",\"url\":\"/production\"},{\"component\":\"/layouts/TabLayout\",\"deleteFlag\":\"0\",\"enabled\":true,\"icon\":\"hdd\",\"id\":239,\"name\":\"仓库管理\",\"nameEn\":\"Warehouse Management\",\"number\":\"0801\",\"parentNumber\":\"0\",\"pushBtn\":\"\",\"sort\":\"0004\",\"state\":false,\"type\":\"电脑版\",\"url\":\"/billD\"},{\"component\":\"/layouts/TabLayout\",\"deleteFlag\":\"0\",\"enabled\":true,\"icon\":\"money-collect\",\"id\":44,\"name\":\"财务管理\",\"nameEn\":\"Finance Management\",\"number\":\"0704\",\"parentNumber\":\"0\",\"pushBtn\":\"\",\"sort\":\"0005\",\"state\":false,\"type\":\"电脑版\",\"url\":\"/financial\"},{\"component\":\"/layouts/TabLayout\",\"deleteFlag\":\"0\",\"enabled\":true,\"icon\":\"bank\",\"id\":272,\"name\":\"资产管理\",\"nameEn\":\"Asset Management\",\"number\":\"0902\",\"parentNumber\":\"0\",\"pushBtn\":\"\",\"sort\":\"0006\",\"state\":false,\"type\":\"电脑版\",\"url\":\"/assetManagement\"},{\"component\":\"/layouts/TabLayout\",\"deleteFlag\":\"0\",\"enabled\":true,\"icon\":\"shopping\",\"id\":21,\"name\":\"商品管理\",\"nameEn\":\"Product Management\",\"number\":\"0101\",\"parentNumber\":\"0\",\"sort\":\"0007\",\"state\":false,\"type\":\"电脑版\",\"url\":\"/material\"},{\"component\":\"/layouts/TabLayout\",\"deleteFlag\":\"0\",\"enabled\":true,\"icon\":\"pie-chart\",\"id\":198,\"name\":\"报表查询\",\"nameEn\":\"Reports\",\"number\":\"0301\",\"parentNumber\":\"0\",\"sort\":\"0008\",\"state\":false,\"type\":\"电脑版\",\"url\":\"/report\"},{\"component\":\"/layouts/TabLayout\",\"deleteFlag\":\"0\",\"enabled\":true,\"icon\":\"appstore\",\"id\":24,\"name\":\"基础资料\",\"nameEn\":\"Master Data\",\"number\":\"0102\",\"parentNumber\":\"0\",\"sort\":\"0009\",\"state\":false,\"type\":\"电脑版\",\"url\":\"/systemA\"},{\"component\":\"/layouts/TabLayout\",\"deleteFlag\":\"0\",\"enabled\":true,\"icon\":\"setting\",\"id\":1,\"name\":\"系统管理\",\"nameEn\":\"System Management\",\"number\":\"0001\",\"parentNumber\":\"0\",\"pushBtn\":\"\",\"sort\":\"0010\",\"state\":true,\"type\":\"电脑版\",\"url\":\"/system\"}]}}'); +INSERT INTO `tbl_log` VALUES (8418, 63, '接口日志', '43.174.32.13/1.9.116.218', '2026-09-29 13:12:06', 0, 'PluginController.checkByTag(..)', NULL, 'GET /apis/plugin/checkByPluginId', '{\"pluginIds\":\"workflow\"}', '{\"code\":200,\"data\":false}'); +INSERT INTO `tbl_log` VALUES (8419, 63, '接口日志', '43.152.142.40/1.9.116.218', '2026-09-29 13:12:06', 0, 'PluginController.checkByTag(..)', NULL, 'GET /apis/plugin/checkByPluginId', '{\"pluginIds\":\"stock-check\"}', '{\"code\":200,\"data\":false}'); +INSERT INTO `tbl_log` VALUES (8420, 63, '接口日志', '43.152.142.86/1.9.116.218', '2026-09-29 13:12:06', 0, 'SystemConfigController.getList(..)', NULL, 'GET /apis/systemConfig/list', '{\"search\":\"{\\\"companyName\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}]}}'); +INSERT INTO `tbl_log` VALUES (8421, 63, '系统配置', '43.152.157.63/1.9.116.218', '2026-09-29 13:12:10', 0, '修改公司test', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (8422, 63, '接口日志', '43.152.157.63/1.9.116.218', '2026-09-29 13:12:10', 0, 'SystemConfigController.updateResource(..)', NULL, 'PUT /apis/systemConfig/update', '{\"obj\":{\"materialPriceTaxFlag\":\"0\",\"companyName\":\"公司test\",\"updateUnitPriceFlag\":\"1\",\"customerStaticPriceFlag\":\"0\",\"customerFlag\":\"0\",\"deleteFlag\":\"0\",\"zeroChangeAmountFlag\":\"0\",\"minusStockFlag\":\"0\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"id\":11,\"moveAvgPriceFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"purchaseBySaleFlag\":\"0\",\"companyTel\":\"12345678\",\"overLinkBillFlag\":\"1\",\"auditPrintFlag\":\"1\",\"companyContacts\":\"小李\",\"multiAccountFlag\":\"1\",\"companyAddress\":\"地址1\",\"inOutManageFlag\":\"0\",\"tenantId\":63,\"depotFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\"}}', '{\"code\":200,\"data\":{\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (8423, 63, '接口日志', '43.152.142.31/1.9.116.218', '2026-09-29 13:12:10', 0, 'SystemConfigController.getList(..)', NULL, 'GET /apis/systemConfig/list', '{\"search\":\"{\\\"companyName\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"1\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}]}}'); +INSERT INTO `tbl_log` VALUES (8424, 63, '系统配置', '43.152.157.63/1.9.116.218', '2026-09-29 13:12:11', 0, '修改公司test', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (8425, 63, '接口日志', '43.152.157.63/1.9.116.218', '2026-09-29 13:12:11', 0, 'SystemConfigController.updateResource(..)', NULL, 'PUT /apis/systemConfig/update', '{\"obj\":{\"materialPriceTaxFlag\":\"0\",\"companyName\":\"公司test\",\"updateUnitPriceFlag\":\"1\",\"customerStaticPriceFlag\":\"0\",\"customerFlag\":\"0\",\"deleteFlag\":\"0\",\"zeroChangeAmountFlag\":\"0\",\"minusStockFlag\":\"0\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"id\":11,\"moveAvgPriceFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"purchaseBySaleFlag\":\"0\",\"companyTel\":\"12345678\",\"overLinkBillFlag\":\"0\",\"auditPrintFlag\":\"1\",\"companyContacts\":\"小李\",\"multiAccountFlag\":\"1\",\"companyAddress\":\"地址1\",\"inOutManageFlag\":\"0\",\"tenantId\":63,\"depotFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\"}}', '{\"code\":200,\"data\":{\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (8426, 63, '接口日志', '43.152.142.139/1.9.116.218', '2026-09-29 13:12:11', 0, 'SystemConfigController.getList(..)', NULL, 'GET /apis/systemConfig/list', '{\"search\":\"{\\\"companyName\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}]}}'); +INSERT INTO `tbl_log` VALUES (8427, 63, '接口日志', '43.174.32.18/1.9.116.218', '2026-09-29 13:12:19', 0, 'MaterialPropertyController.getList(..)', NULL, 'GET /apis/materialProperty/list', '{\"search\":\"{\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":3,\"rows\":[{\"anotherName\":\"扩展1\",\"id\":1,\"nativeName\":\"扩展1\"},{\"anotherName\":\"扩展2\",\"id\":2,\"nativeName\":\"扩展2\"},{\"anotherName\":\"扩展3\",\"id\":3,\"nativeName\":\"扩展3\"}]}}'); +INSERT INTO `tbl_log` VALUES (8428, 63, '接口日志', '43.174.53.48/1.9.116.218', '2026-09-29 13:12:24', 0, 'OrganizationController.getOrganizationTree(..)', NULL, 'GET /apis/organization/getOrganizationTree', '{}', '[{\"children\":[{\"children\":[{\"children\":[],\"checked\":false,\"attributes\":\"12\",\"id\":14,\"state\":\"open\",\"title\":\"部门2\",\"value\":14,\"key\":14}],\"checked\":false,\"attributes\":\"jg1\",\"id\":13,\"state\":\"open\",\"title\":\"部门1\",\"value\":13,\"key\":13}],\"checked\":false,\"attributes\":\"001\",\"id\":12,\"state\":\"open\",\"title\":\"测试部门\",\"value\":12,\"key\":12}]'); +INSERT INTO `tbl_log` VALUES (8429, 63, '接口日志', '43.152.142.68/1.9.116.218', '2026-09-29 13:12:32', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8430, 63, '接口日志', '43.152.142.57/1.9.116.218', '2026-09-29 13:12:32', 0, 'UserController.getList(..)', NULL, 'GET /apis/user/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"description\":\"\",\"email\":\"666666@qq.com\",\"id\":63,\"isystem\":1,\"leaderFlag\":\"0\",\"leaderFlagStr\":\"否\",\"loginName\":\"admin\",\"orgAbr\":\"测试部门\",\"orgaId\":12,\"orgaUserRelId\":11,\"password\":\"******\",\"phonenum\":\"1123123123132\",\"position\":\"主管\",\"roleId\":21,\"roleName\":\"admin\",\"status\":0,\"tenantId\":63,\"userBlngOrgaDsplSeq\":\"15\",\"userType\":\"系统管理员\",\"username\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (8431, 63, '接口日志', '43.152.142.105/1.9.116.218', '2026-09-29 13:12:35', 0, 'RoleController.allList(..)', NULL, 'GET /apis/role/allList', '{}', '[{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":24,\"name\":\"system admin\",\"type\":\"全部数据\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":23,\"name\":\"system admin\",\"type\":\"全部数据\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":21,\"name\":\"admin\",\"tenantId\":63,\"type\":\"全部数据\"},{\"deleteFlag\":\"0\",\"description\":\"rrr\",\"enabled\":true,\"id\":17,\"name\":\"销售代表\",\"tenantId\":63,\"type\":\"个人数据\"},{\"deleteFlag\":\"0\",\"description\":\"ddd\",\"enabled\":true,\"id\":16,\"name\":\"销售经理\",\"tenantId\":63,\"type\":\"全部数据\"},{\"deleteFlag\":\"0\",\"description\":\"\",\"enabled\":true,\"id\":10,\"name\":\"租户\",\"type\":\"全部数据\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":4,\"name\":\"管理员\",\"type\":\"全部数据\"}]'); +INSERT INTO `tbl_log` VALUES (8432, 63, '接口日志', '43.152.142.110/1.9.116.218', '2026-09-29 13:12:43', 0, 'RoleController.getList(..)', NULL, 'GET /apis/role/list', '{\"search\":\"{\\\"name\\\":\\\"\\\",\\\"description\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":7,\"rows\":[{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":24,\"name\":\"system admin\",\"type\":\"全部数据\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":23,\"name\":\"system admin\",\"type\":\"全部数据\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":21,\"name\":\"admin\",\"tenantId\":63,\"type\":\"全部数据\"},{\"deleteFlag\":\"0\",\"description\":\"rrr\",\"enabled\":true,\"id\":17,\"name\":\"销售代表\",\"tenantId\":63,\"type\":\"个人数据\"},{\"deleteFlag\":\"0\",\"description\":\"ddd\",\"enabled\":true,\"id\":16,\"name\":\"销售经理\",\"tenantId\":63,\"type\":\"全部数据\"},{\"deleteFlag\":\"0\",\"description\":\"\",\"enabled\":true,\"id\":10,\"name\":\"租户\",\"type\":\"全部数据\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":4,\"name\":\"管理员\",\"type\":\"全部数据\"}]}}'); +INSERT INTO `tbl_log` VALUES (8433, 63, '接口日志', '43.174.52.68/1.9.116.218', '2026-09-29 13:12:50', 0, 'FunctionController.findRoleFunction(..)', NULL, 'GET /apis/function/findRoleFunction', '{\"type\":\"RoleFunctions\",\"keyId\":\"10\"}', '[{\"children\":[{\"titleEn\":\"Sales Management\",\"children\":[{\"titleEn\":\"Sales Orders\",\"checked\":true,\"attributes\":\"销售订单\",\"id\":242,\"title\":\"销售订单\",\"value\":242,\"key\":242},{\"titleEn\":\"Sales Shipments\",\"checked\":true,\"attributes\":\"销售出库\",\"id\":41,\"title\":\"销售出库\",\"value\":41,\"key\":41},{\"titleEn\":\"Delivery Plans\",\"checked\":false,\"attributes\":\"交货计划管理\",\"id\":271,\"title\":\"交货计划管理\",\"value\":271,\"key\":271},{\"titleEn\":\"Shipment Management\",\"checked\":false,\"attributes\":\"发货管理\",\"id\":268,\"title\":\"发货管理\",\"value\":268,\"key\":268},{\"titleEn\":\"Sales Returns\",\"checked\":true,\"attributes\":\"销售退货\",\"id\":200,\"title\":\"销售退货\",\"value\":200,\"key\":200},{\"titleEn\":\"Retail Shipments\",\"checked\":true,\"attributes\":\"零售出库\",\"id\":210,\"title\":\"零售出库\",\"value\":210,\"key\":210},{\"titleEn\":\"Retail Returns\",\"checked\":true,\"attributes\":\"零售退货\",\"id\":211,\"title\":\"零售退货\",\"value\":211,\"key\":211}],\"attributes\":\"销售管理\",\"id\":38,\"title\":\"销售管理\",\"value\":38,\"key\":38},{\"titleEn\":\"Purchase Management\",\"children\":[{\"titleEn\":\"Purchase Requisitions\",\"checked\":true,\"attributes\":\"请购单\",\"id\":261,\"title\":\"请购单\",\"value\":261,\"key\":261},{\"titleEn\":\"Purchase Orders\",\"checked\":true,\"attributes\":\"采购订单\",\"id\":241,\"title\":\"采购订单\",\"value\":241,\"key\":241},{\"titleEn\":\"Purchase Receipts\",\"checked\":true,\"attributes\":\"采购入库\",\"id\":33,\"title\":\"采购入库\",\"value\":33,\"key\":33},{\"titleEn\":\"Purchase Returns\",\"checked\":true,\"attributes\":\"采购退货\",\"id\":199,\"title\":\"采购退货\",\"value\":199,\"key\":199}],\"attributes\":\"采购管理\",\"id\":32,\"title\":\"采购管理\",\"value\":32,\"key\":32},{\"titleEn\":\"Production Management\",\"children\":[{\"titleEn\":\"Production BOMs\",\"checked\":true,\"attributes\":\"生产方案\",\"id\":263,\"title\":\"生产方案\",\"value\":263,\"key\":263},{\"titleEn\":\"Production Orders\",\"checked\":true,\"attributes\":\"生产工单\",\"id\":264,\"title\":\"生产工单\",\"value\":264,\"key\":264},{\"titleEn\":\"Material Requisitions\",\"checked\":true,\"attributes\":\"领料管理\",\"id\":265,\"title\":\"领料管理\",\"value\":265,\"key\":265},{\"titleEn\":\"Production Reports\",\"checked\":true,\"attributes\":\"完工报工\",\"id\":266,\"title\":\"完工报工\",\"value\":266,\"key\":266}],\"attributes\":\"生产管理\",\"id\":262,\"title\":\"生产管理\",\"value\":262,\"key\":262},{\"titleEn\":\"Warehouse Management\",\"children\":[{\"titleEn\":\"Product Inventory\",\"checked\":true,\"attributes\":\"商品库存\",\"id\":246,\"title\":\"商品库存\",\"value\":246,\"key\":246},{\"titleEn\":\"Other Receipts\",\"checked\":true,\"attributes\":\"其它入库\",\"id\":201,\"title\":\"其它入库\",\"value\":201,\"key\":201},{\"titleEn\":\"Other Shipments\",\"checked\":true,\"attributes\":\"其它出库\",\"id\":202,\"title\":\"其它出库\",\"value\":202,\"key\":202},{\"titleEn\":\"Stock Transfers\",\"checked\":true,\"attributes\":\"调拨出库\",\"id\":40,\"title\":\"调拨出库\",\"value\":40,\"key\":40},{\"titleEn\":\"Assembly Orders\",\"checked\":true,\"attributes\":\"组装单\",\"id\":232,\"title\":\"组装单\",\"value\":232,\"key\":232},{\"titleEn\":\"Headquarters Receipts\",\"checked\":false,\"attributes\":\"总部入库\",\"id\":270,\"title\":\"总部入库\",\"value\":270,\"key\":270},{\"titleEn\":\"Disassembly Orders\",\"checked\":true,\"attributes\":\"拆卸单\",\"id\":233,\"title\":\"拆卸单\",\"value\":233,\"key\":233}],\"attributes\":\"仓库管理\",\"id\":239,\"title\":\"仓库管理\",\"value\":239,\"key\":239},{\"titleEn\":\"Finance Management\",\"children\":[{\"titleEn\":\"Income Vouchers\",\"checked\":true,\"attributes\":\"收入单\",\"id\":197,\"title\":\"收入单\",\"value\":197,\"key\":197},{\"titleEn\":\"Expense Vouchers\",\"checked\":true,\"attributes\":\"支出单\",\"id\":203,\"title\":\"支出单\",\"value\":203,\"key\":203},{\"titleEn\":\"Receipt Vouchers\",\"checked\":true,\"attributes\":\"收款单\",\"id\":204,\"title\":\"收款单\",\"value\":204,\"key\":204},{\"titleEn\":\"Payment Vouchers\",\"checked\":true,\"attributes\":\"付款单\",\"id\":205,\"title\":\"付款单\",\"value\":205,\"key\":205},{\"titleEn\":\"Transfer Vouchers\",\"checked\":true,\"attributes\":\"转账单\",\"id\":206,\"title\":\"转账单\",\"value\":206,\"key\":206},{\"titleEn\":\"Advance Receipts\",\"checked\":true,\"attributes\":\"收预付款\",\"id\":212,\"title\":\"收预付款\",\"value\":212,\"key\":212}],\"attributes\":\"财务管理\",\"id\":44,\"title\":\"财务管理\",\"value\":44,\"key\":44},{\"titleEn\":\"Asset Management\",\"children\":[{\"titleEn\":\"Asset Overview\",\"checked\":false,\"attributes\":\"资产汇总\",\"id\":276,\"title\":\"资产汇总\",\"value\":276,\"key\":276},{\"titleEn\":\"Asset Ledger\",\"checked\":false,\"attributes\":\"资产台账\",\"id\":273,\"title\":\"资产台账\",\"value\":273,\"key\":273},{\"titleEn\":\"Device Ledger\",\"checked\":false,\"attributes\":\"设备台账\",\"id\":274,\"title\":\"设备台账\",\"value\":274,\"key\":274},{\"titleEn\":\"Asset Inventory\",\"checked\":false,\"attributes\":\"资产盘点\",\"id\":275,\"title\":\"资产盘点\",\"value\":275,\"key\":275}],\"attributes\":\"资产管理\",\"id\":272,\"title\":\"资产管理\",\"value\":272,\"key\":272},{\"titleEn\":\"Product Management\",\"children\":[{\"titleEn\":\"Product Categories\",\"checked\":true,\"attributes\":\"商品类别\",\"id\":22,\"title\":\"商品类别\",\"value\":22,\"key\":22},{\"titleEn\":\"Product Information\",\"checked\":true,\"attributes\":\"商品信息\",\"id\":23,\"title\":\"商品信息\",\"value\":23,\"key\":23},{\"titleEn\":\"Multiple Units\",\"checked\":true,\"attributes\":\"多单位\",\"id\":220,\"title\":\"多单位\",\"value\":220,\"key\":220},{\"titleEn\":\"Product Attributes\",\"checked\":true,\"attributes\":\"多属性\",\"id\":247,\"title\":\"多属性\",\"value\":247,\"key\":247}],\"attributes\":\"商品管理\",\"id\":21,\"title\":\"商品管理\",\"value\":21,\"key\":21},{\"titleEn\":\"Reports\",\"children\":[{\"titleEn\":\"Account Summary\",\"checked\":true,\"attributes\":\"账户统计\",\"id\":207,\"title\":\"账户统计\",\"value\":207,\"key\":207},{\"titleEn\":\"Retail Summary\",\"checked\":true,\"attributes\":\"零售统计\",\"id\":259,\"title\":\"零售统计\",\"value\":259,\"key\":259},{\"titleEn\":\"Purchase Summary\",\"checked\":true,\"attributes\":\"采购统计\",\"id\":208,\"title\":\"采购统计\",\"value\":208,\"key\":208},{\"titleEn\":\"Sales Summary\",\"checked\":true,\"attributes\":\"销售统计\",\"id\":209,\"title\":\"销售统计\",\"value\":209,\"key\":209},{\"titleEn\":\"Inbound Details\",\"checked\":true,\"attributes\":\"入库明细\",\"id\":226,\"title\":\"入库明细\",\"value\":226,\"key\":226},{\"titleEn\":\"Outbound Details\",\"checked\":true,\"attributes\":\"出库明细\",\"id\":227,\"title\":\"出库明细\",\"value\":227,\"key\":227},{\"titleEn\":\"Transfer Details\",\"checked\":true,\"attributes\":\"调拨明细\",\"id\":248,\"title\":\"调拨明细\",\"value\":248,\"key\":248},{\"titleEn\":\"Inbound Summary\",\"checked\":true,\"attributes\":\"入库汇总\",\"id\":228,\"title\":\"入库汇总\",\"value\":228,\"key\":228},{\"titleEn\":\"Outbound Summary\",\"checked\":true,\"attributes\":\"出库汇总\",\"id\":229,\"title\":\"出库汇总\",\"value\":229,\"key\":229},{\"titleEn\":\"Inventory Transaction Summary\",\"checked\":true,\"attributes\":\"进销存统计\",\"id\":59,\"title\":\"进销存统计\",\"value\":59,\"key\":59},{\"titleEn\":\"Customer Reconciliation\",\"checked\":true,\"attributes\":\"客户对账\",\"id\":235,\"title\":\"客户对账\",\"value\":235,\"key\":235},{\"titleEn\":\"Supplier Reconciliation\",\"checked\":true,\"attributes\":\"供应商对账\",\"id\":237,\"title\":\"供应商对账\",\"value\":237,\"key\":237},{\"titleEn\":\"Stock Alerts\",\"checked\":true,\"attributes\":\"库存预警\",\"id\":244,\"title\":\"库存预警\",\"value\":244,\"key\":244}],\"attributes\":\"报表查询\",\"id\":198,\"title\":\"报表查询\",\"value\":198,\"key\":198},{\"titleEn\":\"Master Data\",\"children\":[{\"titleEn\":\"Suppliers\",\"checked\":true,\"attributes\":\"供应商信息\",\"id\":25,\"title\":\"供应商信息\",\"value\":25,\"key\":25},{\"titleEn\":\"Customers\",\"checked\":true,\"attributes\":\"客户信息\",\"id\":217,\"title\":\"客户信息\",\"value\":217,\"key\":217},{\"titleEn\":\"Members\",\"checked\":true,\"attributes\":\"会员信息\",\"id\":218,\"title\":\"会员信息\",\"value\":218,\"key\":218},{\"titleEn\":\"Customer Categories\",\"checked\":true,\"attributes\":\"客户分类\",\"id\":267,\"title\":\"客户分类\",\"value\":267,\"key\":267},{\"titleEn\":\"Warehouses\",\"checked\":true,\"attributes\":\"仓库信息\",\"id\":26,\"title\":\"仓库信息\",\"value\":26,\"key\":26},{\"titleEn\":\"Income and Expense Items\",\"checked\":true,\"attributes\":\"收支项目\",\"id\":194,\"title\":\"收支项目\",\"value\":194,\"key\":194},{\"titleEn\":\"Settlement Accounts\",\"checked\":true,\"attributes\":\"结算账户\",\"id\":195,\"title\":\"结算账户\",\"value\":195,\"key\":195},{\"titleEn\":\"Operators\",\"checked\":true,\"attributes\":\"操作人员管理\",\"id\":31,\"title\":\"操作人员管理\",\"value\":31,\"key\":31}],\"attributes\":\"基础资料\",\"id\":24,\"title\":\"基础资料\",\"value\":24,\"key\":24},{\"titleEn\":\"System Management\",\"children\":[{\"titleEn\":\"Role Management\",\"checked\":true,\"attributes\":\"角色管理\",\"id\":13,\"title\":\"角色管理\",\"value\":13,\"key\":13},{\"titleEn\":\"User Management\",\"checked\":true,\"attributes\":\"用户管理\",\"id\":14,\"title\":\"用户管理\",\"value\":14,\"key\":14},{\"titleEn\":\"Department Management\",\"checked\":true,\"attributes\":\"部门管理\",\"id\":243,\"title\":\"部门管理\",\"value\":243,\"key\":243},{\"titleEn\":\"Log Management\",\"checked\":true,\"attributes\":\"日志管理\",\"id\":15,\"title\":\"日志管理\",\"value\":15,\"key\":15},{\"titleEn\":\"Product Properties\",\"checked\":true,\"attributes\":\"商品属性\",\"id\":236,\"title\":\"商品属性\",\"value\":236,\"key\":236},{\"titleEn\":\"System Configuration\",\"checked\":true,\"attributes\":\"系统配置\",\"id\":234,\"title\":\"系统配置\",\"value\":234,\"key\":234},{\"titleEn\":\"Resource Menus\",\"checked\":false,\"attributes\":\"菜单管理\",\"id\":16,\"title\":\"菜单管理\",\"value\":16,\"key\":16},{\"titleEn\":\"Plugin Management\",\"checked\":false,\"attributes\":\"插件管理\",\"id\":245,\"title\":\"插件管理\",\"value\":245,\"key\":245},{\"titleEn\":\"Dictionary Management\",\"checked\":false,\"attributes\":\"字典管理\",\"id\":260,\"title\":\"字典管理\",\"value\":260,\"key\":260},{\"titleEn\":\"Platform Configuration\",\"checked\":false,\"attributes\":\"平台配置\",\"id\":258,\"title\":\"平台配置\",\"value\":258,\"key\":258}],\"attributes\":\"系统管理\",\"id\":1,\"title\":\"系统管理\",\"value\":1,\"key\":1},{\"titleEn\":\"Retail Management\",\"checked\":true,\"attributes\":\"零售管理\",\"id\":225,\"title\":\"零售管理\",\"value\":225,\"key\":225}],\"attributes\":\"功能列表\",\"id\":0,\"title\":\"功能列表\",\"value\":0,\"key\":0}]'); +INSERT INTO `tbl_log` VALUES (8434, 63, '接口日志', '43.152.142.139/1.9.116.218', '2026-09-29 13:13:21', 0, 'SupplierController.getList(..)', NULL, 'GET /apis/supplier/list', '{\"search\":\"{\\\"supplier\\\":\\\"\\\",\\\"type\\\":\\\"供应商\\\",\\\"contacts\\\":\\\"\\\",\\\"telephone\\\":\\\"\\\",\\\"phonenum\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"accountNumber\":\"\",\"address\":\"\",\"advanceIn\":0.000000,\"allNeedGet\":0.000000,\"allNeedPay\":116500257.436400,\"bankName\":\"\",\"beginNeedGet\":0.000000,\"beginNeedPay\":0.000000,\"contacts\":\"\",\"creator\":63,\"deleteFlag\":\"0\",\"description\":\"Excel初始化默认供应商\",\"email\":\"\",\"enabled\":true,\"fax\":\"\",\"id\":89,\"isystem\":1,\"phoneNum\":\"\",\"sort\":\"1\",\"supplier\":\"浙江瑞银电子有限公司\",\"taxNum\":\"\",\"taxRate\":0.000000,\"telephone\":\"\",\"tenantId\":63,\"type\":\"供应商\"}]}}'); +INSERT INTO `tbl_log` VALUES (8435, 63, '接口日志', '43.174.51.49/1.9.116.218', '2026-09-29 13:13:23', 0, 'CustomerCategoryController.getTreeList(..)', NULL, 'GET /apis/customerCategory/treeList', '{}', '{\"code\":200,\"data\":{\"data\":[],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (8436, 63, '接口日志', '43.152.142.68/1.9.116.218', '2026-09-29 13:13:23', 0, 'SupplierController.getList(..)', NULL, 'GET /apis/supplier/list', '{\"search\":\"{\\\"supplier\\\":\\\"\\\",\\\"type\\\":\\\"客户\\\",\\\"contacts\\\":\\\"\\\",\\\"telephone\\\":\\\"\\\",\\\"phonenum\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"accountNumber\":\"\",\"address\":\"\",\"advanceIn\":0.000000,\"allNeedGet\":12430066.000000,\"allNeedPay\":0.000000,\"bankName\":\"\",\"beginNeedGet\":0.000000,\"beginNeedPay\":0.000000,\"contacts\":\"\",\"creator\":63,\"deleteFlag\":\"0\",\"description\":\"Stock Status客户\",\"email\":\"\",\"enabled\":true,\"fax\":\"\",\"id\":90,\"isystem\":1,\"phoneNum\":\"\",\"sort\":\"2\",\"supplier\":\"TNB\",\"taxNum\":\"\",\"taxRate\":10.000000,\"telephone\":\"\",\"tenantId\":63,\"type\":\"客户\"}]}}'); +INSERT INTO `tbl_log` VALUES (8437, 63, '接口日志', '43.152.142.33/1.9.116.218', '2026-09-29 13:13:23', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8438, 63, '接口日志', '43.174.52.68/1.9.116.218', '2026-09-29 13:13:25', 0, 'SupplierController.getList(..)', NULL, 'GET /apis/supplier/list', '{\"search\":\"{\\\"supplier\\\":\\\"\\\",\\\"type\\\":\\\"会员\\\",\\\"telephone\\\":\\\"\\\",\\\"phonenum\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (8439, 63, '接口日志', '43.152.142.141/1.9.116.218', '2026-09-29 13:13:27', 0, 'CustomerCategoryController.getTreeList(..)', NULL, 'GET /apis/customerCategory/treeList', '{}', '{\"code\":200,\"data\":{\"data\":[],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (8440, 63, '接口日志', '43.152.142.132/1.9.116.218', '2026-09-29 13:13:28', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8441, 63, '接口日志', '43.174.53.48/1.9.116.218', '2026-09-29 13:13:28', 0, 'DepotController.getList(..)', NULL, 'GET /apis/depot/list', '{\"search\":\"{\\\"name\\\":\\\"\\\",\\\"remark\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"address\":\"\",\"deleteFlag\":\"0\",\"enabled\":true,\"id\":25,\"isDefault\":true,\"name\":\"半成品仓库\",\"remark\":\"总部入库物料\",\"sort\":\"1\",\"tenantId\":63,\"truckage\":0.000000,\"type\":0,\"warehousing\":0.000000},{\"address\":\"\",\"deleteFlag\":\"0\",\"enabled\":true,\"id\":26,\"isDefault\":false,\"name\":\"成品仓库\",\"remark\":\"Stock Status成品\",\"sort\":\"2\",\"tenantId\":63,\"truckage\":0.000000,\"type\":0,\"warehousing\":0.000000}]}}'); +INSERT INTO `tbl_log` VALUES (8442, 63, '接口日志', '43.174.54.50/1.9.116.218', '2026-09-29 13:13:28', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"}]'); +INSERT INTO `tbl_log` VALUES (8443, 63, '接口日志', '43.152.142.110/1.9.116.218', '2026-09-29 13:13:31', 0, 'InOutItemController.getList(..)', NULL, 'GET /apis/inOutItem/list', '{\"search\":\"{\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"\\\",\\\"remark\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":3,\"rows\":[{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":23,\"name\":\"利息收入\",\"remark\":\"收入\",\"tenantId\":63,\"type\":\"收入\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":22,\"name\":\"房租收入\",\"remark\":\"\",\"tenantId\":63,\"type\":\"收入\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":21,\"name\":\"快递费\",\"remark\":\"\",\"tenantId\":63,\"type\":\"支出\"}]}}'); +INSERT INTO `tbl_log` VALUES (8444, 63, '接口日志', '43.174.53.14/1.9.116.218', '2026-09-29 13:13:41', 0, 'AccountController.getList(..)', NULL, 'GET /apis/account/list', '{\"search\":\"{\\\"name\\\":\\\"\\\",\\\"serialNo\\\":\\\"\\\",\\\"remark\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63,\"thisMonthAmount\":\"0\"},{\"currentAmount\":4375618.532800,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63,\"thisMonthAmount\":\"0\"}]}}'); +INSERT INTO `tbl_log` VALUES (8445, 63, '接口日志', '43.174.32.18/1.9.116.218', '2026-09-29 13:13:42', 0, 'PersonController.getList(..)', NULL, 'GET /apis/person/list', '{\"search\":\"{\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":11,\"rows\":[{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":44,\"name\":\"Neezam\",\"type\":\"CEO\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":43,\"name\":\"Juwairiah\",\"type\":\"财务员\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":31,\"name\":\"Arif\",\"sort\":\"1\",\"tenantId\":63,\"type\":\"商务主管\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":36,\"name\":\"张伟\",\"sort\":\"10\",\"tenantId\":63,\"type\":\"资产管理员\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":32,\"name\":\"Hafiz\",\"sort\":\"2\",\"tenantId\":63,\"type\":\"技术主管\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":37,\"name\":\"陈晨\",\"sort\":\"20\",\"tenantId\":63,\"type\":\"设备工程师\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":33,\"name\":\"Aziman\",\"sort\":\"3\",\"tenantId\":63,\"type\":\"软件工程师\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":38,\"name\":\"王磊\",\"sort\":\"30\",\"tenantId\":63,\"type\":\"生产主管\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":34,\"name\":\"Lim\",\"sort\":\"4\",\"tenantId\":63,\"type\":\"IT\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":39,\"name\":\"赵敏\",\"sort\":\"40\",\"tenantId\":63,\"type\":\"IT运维工程师\"}]}}'); +INSERT INTO `tbl_log` VALUES (8446, 63, '接口日志', '43.152.142.57/1.9.116.218', '2026-09-29 13:13:42', 0, 'SysDictDataController.dictType(..)', NULL, 'GET /apis/dict/data/type/person_type', '{\"dictType\":\"person_type\"}', '{\"msg\":\"操作成功\",\"code\":0,\"data\":[{\"createBy\":\"admin\",\"createTime\":1789644159000,\"dictCode\":13,\"dictLabel\":\"采购员\",\"dictSort\":3,\"dictType\":\"person_type\",\"dictValue\":\"采购员\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"},{\"createBy\":\"admin\",\"createTime\":1789724265000,\"dictCode\":14,\"dictLabel\":\"CEO\",\"dictSort\":4,\"dictType\":\"person_type\",\"dictValue\":\"CEO\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"},{\"createBy\":\"admin\",\"createTime\":1789724275000,\"dictCode\":15,\"dictLabel\":\"IT\",\"dictSort\":5,\"dictType\":\"person_type\",\"dictValue\":\"IT\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}]}'); +INSERT INTO `tbl_log` VALUES (8447, 63, '接口日志', '43.152.142.43/1.9.116.218', '2026-09-29 13:13:42', 0, 'SysDictDataController.dictType(..)', NULL, 'GET /apis/dict/data/type/person_type', '{\"dictType\":\"person_type\"}', '{\"msg\":\"操作成功\",\"code\":0,\"data\":[{\"createBy\":\"admin\",\"createTime\":1789644159000,\"dictCode\":13,\"dictLabel\":\"采购员\",\"dictSort\":3,\"dictType\":\"person_type\",\"dictValue\":\"采购员\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"},{\"createBy\":\"admin\",\"createTime\":1789724265000,\"dictCode\":14,\"dictLabel\":\"CEO\",\"dictSort\":4,\"dictType\":\"person_type\",\"dictValue\":\"CEO\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"},{\"createBy\":\"admin\",\"createTime\":1789724275000,\"dictCode\":15,\"dictLabel\":\"IT\",\"dictSort\":5,\"dictType\":\"person_type\",\"dictValue\":\"IT\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}]}'); +INSERT INTO `tbl_log` VALUES (8448, 63, '接口日志', '43.152.142.86/1.9.116.218', '2026-09-29 13:13:58', 0, 'SysDictDataController.dictType(..)', NULL, 'GET /apis/dict/data/type/person_type', '{\"dictType\":\"person_type\"}', '{\"msg\":\"操作成功\",\"code\":0,\"data\":[{\"createBy\":\"admin\",\"createTime\":1789644159000,\"dictCode\":13,\"dictLabel\":\"采购员\",\"dictSort\":3,\"dictType\":\"person_type\",\"dictValue\":\"采购员\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"},{\"createBy\":\"admin\",\"createTime\":1789724265000,\"dictCode\":14,\"dictLabel\":\"CEO\",\"dictSort\":4,\"dictType\":\"person_type\",\"dictValue\":\"CEO\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"},{\"createBy\":\"admin\",\"createTime\":1789724275000,\"dictCode\":15,\"dictLabel\":\"IT\",\"dictSort\":5,\"dictType\":\"person_type\",\"dictValue\":\"IT\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}]}'); +INSERT INTO `tbl_log` VALUES (8449, 63, '接口日志', '43.174.54.27/1.9.116.218', '2026-09-29 13:15:23', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-04\",\"inbound\":100669.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (8450, NULL, '接口日志', '43.152.142.31/1.9.116.218', '2026-09-29 13:27:36', 0, 'UserController.logout(..)', NULL, 'GET /apis/user/logout', '{}', '{\"code\":400}'); +INSERT INTO `tbl_log` VALUES (8451, NULL, '接口日志', '43.152.142.31/1.9.116.218', '2026-09-29 13:27:36', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (8452, NULL, '接口日志', '43.152.142.31/1.9.116.218', '2026-09-29 13:27:36', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (8453, NULL, '接口日志', '120.226.169.13/115.220.229.151', '2026-09-29 15:09:47', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (8454, NULL, '接口日志', '120.226.169.41/115.220.229.151', '2026-09-29 15:09:48', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (8455, NULL, '接口日志', '43.152.142.112/1.9.116.218', '2026-09-30 06:35:30', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (8456, NULL, '接口日志', '43.174.53.14/1.9.116.218', '2026-09-30 06:35:30', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (8457, NULL, '接口日志', '43.174.32.34/1.9.116.218', '2026-09-30 06:35:32', 0, 'PlatformConfigController.getPlatformCheckcodeFlag(..)', NULL, 'GET /apis/platformConfig/getPlatform/checkcodeFlag', '{}', '\"1\"'); +INSERT INTO `tbl_log` VALUES (8458, NULL, '接口日志', '43.174.32.14/1.9.116.218', '2026-09-30 06:35:32', 0, 'UserController.randomImage(..)', NULL, 'GET /apis/user/randomImage', '{}', '{\"code\":200,\"data\":{\"base64\":\"data:image/jpg;base64,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\",\"uuid\":\"c7583eaa104442278fdb737ca30b1e78\"}}'); +INSERT INTO `tbl_log` VALUES (8459, 63, '用户', '43.152.142.57/1.9.116.218', '2026-09-30 06:36:32', 0, '登录admin', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (8460, NULL, '接口日志', '43.152.142.57/1.9.116.218', '2026-09-30 06:36:32', 0, 'UserController.login(..)', NULL, 'POST /apis/user/login', '{\"userParam\":{\"code\":\"zl8f\",\"loginName\":\"admin\",\"password\":\"******\",\"uuid\":\"c7583eaa104442278fdb737ca30b1e78\"}}', '{\"code\":200,\"data\":{\"pwdSimple\":\"******\",\"user\":{\"deleteFlag\":\"0\",\"description\":\"\",\"email\":\"666666@qq.com\",\"id\":63,\"ismanager\":1,\"isystem\":1,\"leaderFlag\":\"0\",\"loginName\":\"admin\",\"password\":\"******\",\"phonenum\":\"1123123123132\",\"position\":\"主管\",\"status\":0,\"tenantId\":63,\"username\":\"admin\"},\"msgTip\":\"user can login\",\"token\":\"******\"}}'); +INSERT INTO `tbl_log` VALUES (8461, 63, '接口日志', '43.152.142.112/1.9.116.218', '2026-09-30 06:36:33', 0, 'MaterialPropertyController.getAllList(..)', NULL, 'GET /apis/materialProperty/getAllList', '{}', '{\"code\":200,\"data\":[{\"anotherName\":\"扩展1\",\"id\":1,\"nativeName\":\"扩展1\"},{\"anotherName\":\"扩展2\",\"id\":2,\"nativeName\":\"扩展2\"},{\"anotherName\":\"扩展3\",\"id\":3,\"nativeName\":\"扩展3\"}]}'); +INSERT INTO `tbl_log` VALUES (8462, 63, '接口日志', '43.152.142.57/1.9.116.218', '2026-09-30 06:36:33', 0, 'FunctionController.findMenuByPNumber(..)', NULL, 'POST /apis/function/findMenuByPNumber', '{\"jsonObject\":{\"userId\":63,\"pNumber\":0}}', '[{\"component\":\"/layouts/TabLayout\",\"icon\":\"home\",\"id\":0,\"text\":\"首页\",\"url\":\"/dashboard/analysis\",\"textEn\":\"Home\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/SaleOrderList\",\"icon\":\"profile\",\"id\":242,\"text\":\"销售订单\",\"url\":\"/bill/sale_order\",\"textEn\":\"Sales Orders\"},{\"component\":\"/bill/SaleOutList\",\"icon\":\"profile\",\"id\":41,\"text\":\"销售出库\",\"url\":\"/bill/sale_out\",\"textEn\":\"Sales Shipments\"},{\"component\":\"/bill/DeliveryPlanList\",\"icon\":\"profile\",\"id\":271,\"text\":\"交货计划管理\",\"url\":\"/bill/delivery_plan\",\"textEn\":\"Delivery Plans\"},{\"component\":\"/bill/SaleShipmentList\",\"icon\":\"car\",\"id\":268,\"text\":\"发货管理\",\"url\":\"/bill/sale_shipment\",\"textEn\":\"Shipment Management\"},{\"component\":\"/bill/SaleBackList\",\"icon\":\"profile\",\"id\":200,\"text\":\"销售退货\",\"url\":\"/bill/sale_back\",\"textEn\":\"Sales Returns\"},{\"component\":\"/bill/RetailOutList\",\"icon\":\"profile\",\"id\":210,\"text\":\"零售出库\",\"url\":\"/bill/retail_out\",\"textEn\":\"Retail Shipments\"},{\"component\":\"/bill/RetailBackList\",\"icon\":\"profile\",\"id\":211,\"text\":\"零售退货\",\"url\":\"/bill/retail_back\",\"textEn\":\"Retail Returns\"}],\"icon\":\"shopping-cart\",\"id\":38,\"text\":\"销售管理\",\"url\":\"/billB\",\"textEn\":\"Sales Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/PurchaseApplyList\",\"icon\":\"profile\",\"id\":261,\"text\":\"请购单\",\"url\":\"/bill/purchase_apply\",\"textEn\":\"Purchase Requisitions\"},{\"component\":\"/bill/PurchaseOrderList\",\"icon\":\"profile\",\"id\":241,\"text\":\"采购订单\",\"url\":\"/bill/purchase_order\",\"textEn\":\"Purchase Orders\"},{\"component\":\"/bill/PurchaseInList\",\"icon\":\"profile\",\"id\":33,\"text\":\"采购入库\",\"url\":\"/bill/purchase_in\",\"textEn\":\"Purchase Receipts\"},{\"component\":\"/bill/PurchaseBackList\",\"icon\":\"profile\",\"id\":199,\"text\":\"采购退货\",\"url\":\"/bill/purchase_back\",\"textEn\":\"Purchase Returns\"}],\"icon\":\"retweet\",\"id\":32,\"text\":\"采购管理\",\"url\":\"/bill\",\"textEn\":\"Purchase Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/production/PackBomList\",\"icon\":\"profile\",\"id\":263,\"text\":\"生产方案\",\"url\":\"/production/pack_bom\",\"textEn\":\"Production BOMs\"},{\"component\":\"/production/OrderList\",\"icon\":\"profile\",\"id\":264,\"text\":\"生产工单\",\"url\":\"/production/order\",\"textEn\":\"Production Orders\"},{\"component\":\"/production/RequisitionList\",\"icon\":\"profile\",\"id\":265,\"text\":\"领料管理\",\"url\":\"/production/requisition\",\"textEn\":\"Material Requisitions\"},{\"component\":\"/production/ReportList\",\"icon\":\"profile\",\"id\":266,\"text\":\"完工报工\",\"url\":\"/production/report\",\"textEn\":\"Production Reports\"}],\"icon\":\"cluster\",\"id\":262,\"text\":\"生产管理\",\"url\":\"/production\",\"textEn\":\"Production Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/MaterialStock\",\"icon\":\"profile\",\"id\":246,\"text\":\"商品库存\",\"url\":\"/report/material_stock\",\"textEn\":\"Product Inventory\"},{\"component\":\"/bill/OtherInList\",\"icon\":\"profile\",\"id\":201,\"text\":\"其它入库\",\"url\":\"/bill/other_in\",\"textEn\":\"Other Receipts\"},{\"component\":\"/bill/OtherOutList\",\"icon\":\"profile\",\"id\":202,\"text\":\"其它出库\",\"url\":\"/bill/other_out\",\"textEn\":\"Other Shipments\"},{\"component\":\"/bill/HeadquartersInList\",\"icon\":\"profile\",\"id\":270,\"text\":\"总部入库\",\"url\":\"/bill/headquarters_in\",\"textEn\":\"Headquarters Receipts\"}],\"icon\":\"hdd\",\"id\":239,\"text\":\"仓库管理\",\"url\":\"/billD\",\"textEn\":\"Warehouse Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/financial/MoneyInList\",\"icon\":\"profile\",\"id\":204,\"text\":\"收款单\",\"url\":\"/financial/money_in\",\"textEn\":\"Receipt Vouchers\"},{\"component\":\"/financial/MoneyOutList\",\"icon\":\"profile\",\"id\":205,\"text\":\"付款单\",\"url\":\"/financial/money_out\",\"textEn\":\"Payment Vouchers\"}],\"icon\":\"money-collect\",\"id\":44,\"text\":\"财务管理\",\"url\":\"/financial\",\"textEn\":\"Finance Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/asset/AssetDashboard\",\"icon\":\"dashboard\",\"id\":276,\"text\":\"资产汇总\",\"url\":\"/asset\",\"textEn\":\"Asset Overview\"},{\"component\":\"/asset/AssetList\",\"icon\":\"profile\",\"id\":273,\"text\":\"资产台账\",\"url\":\"/asset/ledger\",\"textEn\":\"Asset Ledger\"},{\"component\":\"/asset/DeviceList\",\"icon\":\"tool\",\"id\":274,\"text\":\"设备台账\",\"url\":\"/asset/device\",\"textEn\":\"Device Ledger\"},{\"component\":\"/asset/InventoryList\",\"icon\":\"scan\",\"id\":275,\"text\":\"资产盘点\",\"url\":\"/asset/inventory\",\"textEn\":\"Asset Inventory\"}],\"icon\":\"bank\",\"id\":272,\"text\":\"资产管理\",\"url\":\"/assetManagement\",\"textEn\":\"Asset Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/material/MaterialCategoryList\",\"icon\":\"profile\",\"id\":22,\"text\":\"商品类别\",\"url\":\"/material/material_category\",\"textEn\":\"Product Categories\"},{\"component\":\"/material/MaterialList\",\"icon\":\"profile\",\"id\":23,\"text\":\"商品信息\",\"url\":\"/material/material\",\"textEn\":\"Product Information\"},{\"component\":\"/system/UnitList\",\"icon\":\"profile\",\"id\":220,\"text\":\"多单位\",\"url\":\"/system/unit\",\"textEn\":\"Multiple Units\"},{\"component\":\"/material/MaterialAttributeList\",\"icon\":\"profile\",\"id\":247,\"text\":\"多属性\",\"url\":\"/material/material_attribute\",\"textEn\":\"Product Attributes\"}],\"icon\":\"shopping\",\"id\":21,\"text\":\"商品管理\",\"url\":\"/material\",\"textEn\":\"Product Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/AccountReport\",\"icon\":\"profile\",\"id\":207,\"text\":\"账户统计\",\"url\":\"/report/account_report\",\"textEn\":\"Account Summary\"},{\"component\":\"/report/RetailOutReport\",\"icon\":\"profile\",\"id\":259,\"text\":\"零售统计\",\"url\":\"/report/retail_out_report\",\"textEn\":\"Retail Summary\"},{\"component\":\"/report/BuyInReport\",\"icon\":\"profile\",\"id\":208,\"text\":\"采购统计\",\"url\":\"/report/buy_in_report\",\"textEn\":\"Purchase Summary\"},{\"component\":\"/report/SaleOutReport\",\"icon\":\"profile\",\"id\":209,\"text\":\"销售统计\",\"url\":\"/report/sale_out_report\",\"textEn\":\"Sales Summary\"},{\"component\":\"/report/InDetail\",\"icon\":\"profile\",\"id\":226,\"text\":\"入库明细\",\"url\":\"/report/in_detail\",\"textEn\":\"Inbound Details\"},{\"component\":\"/report/OutDetail\",\"icon\":\"profile\",\"id\":227,\"text\":\"出库明细\",\"url\":\"/report/out_detail\",\"textEn\":\"Outbound Details\"},{\"component\":\"/report/InMaterialCount\",\"icon\":\"profile\",\"id\":228,\"text\":\"入库汇总\",\"url\":\"/report/in_material_count\",\"textEn\":\"Inbound Summary\"},{\"component\":\"/report/OutMaterialCount\",\"icon\":\"profile\",\"id\":229,\"text\":\"出库汇总\",\"url\":\"/report/out_material_count\",\"textEn\":\"Outbound Summary\"},{\"component\":\"/report/InOutStockReport\",\"icon\":\"profile\",\"id\":59,\"text\":\"进销存统计\",\"url\":\"/report/in_out_stock_report\",\"textEn\":\"Inventory Transaction Summary\"},{\"component\":\"/report/CustomerAccount\",\"icon\":\"profile\",\"id\":235,\"text\":\"客户对账\",\"url\":\"/report/customer_account\",\"textEn\":\"Customer Reconciliation\"},{\"component\":\"/report/VendorAccount\",\"icon\":\"profile\",\"id\":237,\"text\":\"供应商对账\",\"url\":\"/report/vendor_account\",\"textEn\":\"Supplier Reconciliation\"},{\"component\":\"/report/StockWarningReport\",\"icon\":\"profile\",\"id\":244,\"text\":\"库存预警\",\"url\":\"/report/stock_warning_report\",\"textEn\":\"Stock Alerts\"}],\"icon\":\"pie-chart\",\"id\":198,\"text\":\"报表查询\",\"url\":\"/report\",\"textEn\":\"Reports\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/VendorList\",\"icon\":\"profile\",\"id\":25,\"text\":\"供应商信息\",\"url\":\"/system/vendor\",\"textEn\":\"Suppliers\"},{\"component\":\"/system/CustomerList\",\"icon\":\"profile\",\"id\":217,\"text\":\"客户信息\",\"url\":\"/system/customer\",\"textEn\":\"Customers\"},{\"component\":\"/system/MemberList\",\"icon\":\"profile\",\"id\":218,\"text\":\"会员信息\",\"url\":\"/system/member\",\"textEn\":\"Members\"},{\"component\":\"/system/CustomerCategoryList\",\"icon\":\"bars\",\"id\":267,\"text\":\"客户分类\",\"url\":\"/system/customerCategory\",\"textEn\":\"Customer Categories\"},{\"component\":\"/system/DepotList\",\"icon\":\"profile\",\"id\":26,\"text\":\"仓库信息\",\"url\":\"/system/depot\",\"textEn\":\"Warehouses\"},{\"component\":\"/system/InOutItemList\",\"icon\":\"profile\",\"id\":194,\"text\":\"收支项目\",\"url\":\"/system/in_out_item\",\"textEn\":\"Income and Expense Items\"},{\"component\":\"/system/AccountList\",\"icon\":\"profile\",\"id\":195,\"text\":\"结算账户\",\"url\":\"/system/account\",\"textEn\":\"Settlement Accounts\"},{\"component\":\"/system/PersonList\",\"icon\":\"profile\",\"id\":31,\"text\":\"操作人员管理\",\"url\":\"/system/person\",\"textEn\":\"Operators\"}],\"icon\":\"appstore\",\"id\":24,\"text\":\"基础资料\",\"url\":\"/systemA\",\"textEn\":\"Master Data\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/RoleList\",\"icon\":\"profile\",\"id\":13,\"text\":\"角色管理\",\"url\":\"/system/role\",\"textEn\":\"Role Management\"},{\"component\":\"/system/UserList\",\"icon\":\"profile\",\"id\":14,\"text\":\"用户管理\",\"url\":\"/system/user\",\"textEn\":\"User Management\"},{\"component\":\"/system/OrganizationList\",\"icon\":\"profile\",\"id\":243,\"text\":\"部门管理\",\"url\":\"/system/organization\",\"textEn\":\"Department Management\"},{\"component\":\"/system/LogList\",\"icon\":\"profile\",\"id\":15,\"text\":\"日志管理\",\"url\":\"/system/log\",\"textEn\":\"Log Management\"},{\"component\":\"/material/MaterialPropertyList\",\"icon\":\"profile\",\"id\":236,\"text\":\"商品属性\",\"url\":\"/material/material_property\",\"textEn\":\"Product Properties\"},{\"component\":\"/system/SystemConfigList\",\"icon\":\"profile\",\"id\":234,\"text\":\"系统配置\",\"url\":\"/system/system_config\",\"textEn\":\"System Configuration\"},{\"component\":\"/system/FunctionList\",\"icon\":\"profile\",\"id\":16,\"text\":\"菜单管理\",\"url\":\"/system/function\",\"textEn\":\"Resource Menus\"},{\"component\":\"/system/PluginList\",\"icon\":\"profile\",\"id\":245,\"text\":\"插件管理\",\"url\":\"/system/plugin\",\"textEn\":\"Plugin Management\"},{\"component\":\"/system/DictList\",\"icon\":\"profile\",\"id\":260,\"text\":\"字典管理\",\"url\":\"/system/dict\",\"textEn\":\"Dictionary Management\"},{\"component\":\"/system/PlatformConfigList\",\"icon\":\"profile\",\"id\":258,\"text\":\"平台配置\",\"url\":\"/system/platform_config\",\"textEn\":\"Platform Configuration\"}],\"icon\":\"setting\",\"id\":1,\"text\":\"系统管理\",\"url\":\"/system\",\"textEn\":\"System Management\"}]'); +INSERT INTO `tbl_log` VALUES (8463, 63, '接口日志', '43.152.142.57/1.9.116.218', '2026-09-30 06:36:33', 0, 'UserController.getUserBtnByCurrentUser(..)', NULL, 'GET /apis/user/getUserBtnByCurrentUser', '{}', '{\"code\":200,\"data\":{\"userBtn\":[{\"btnStr\":\"8,1\",\"url\":\"/system/role\"},{\"btnStr\":\"1\",\"url\":\"/system/user\"},{\"btnStr\":\"1\",\"url\":\"/system/organization\"},{\"btnStr\":\"1\",\"url\":\"/material/material_property\"},{\"btnStr\":\"1\",\"url\":\"/system/system_config\"},{\"btnStr\":\"1\",\"url\":\"/system/function\"},{\"btnStr\":\"1\",\"url\":\"/system/plugin\"},{\"btnStr\":\"1\",\"url\":\"/material/material_category\"},{\"btnStr\":\"1,3\",\"url\":\"/material/material\"},{\"btnStr\":\"1\",\"url\":\"/system/unit\"},{\"btnStr\":\"1\",\"url\":\"/material/material_attribute\"},{\"btnStr\":\"1,3\",\"url\":\"/system/vendor\"},{\"btnStr\":\"1,3\",\"url\":\"/system/customer\"},{\"btnStr\":\"1,3\",\"url\":\"/system/member\"},{\"btnStr\":\"1\",\"url\":\"/system/depot\"},{\"btnStr\":\"1\",\"url\":\"/system/in_out_item\"},{\"btnStr\":\"1\",\"url\":\"/system/account\"},{\"btnStr\":\"1\",\"url\":\"/system/person\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_apply\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_out\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/delivery_plan\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/sale_shipment\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_out\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/order\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/requisition\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/report\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/giro\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/advance_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/allocation_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/assemble\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/headquarters_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/disassemble\"}]}}'); +INSERT INTO `tbl_log` VALUES (8464, 63, '接口日志', '43.174.32.23/1.9.116.218', '2026-09-30 06:36:33', 0, 'MsgController.getMsgByStatus(..)', NULL, 'GET /apis/msg/getMsgByStatus', '{\"status\":\"1\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (8465, 63, '接口日志', '43.152.142.84/1.9.116.218', '2026-09-30 06:36:33', 0, 'MsgController.getList(..)', NULL, 'GET /apis/msg/list', '{\"search\":\"{\\\"name\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (8466, 63, '接口日志', '43.152.142.128/1.9.116.218', '2026-09-30 06:36:33', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-04\",\"inbound\":100669.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (8467, 63, '接口日志', '43.152.142.41/1.9.116.218', '2026-09-30 06:36:48', 0, 'PlatformConfigController.getList(..)', NULL, 'GET /apis/platformConfig/list', '{\"search\":\"{\\\"platformKey\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":21,\"rows\":[{\"id\":1,\"platformKey\":\"platform_name\",\"platformKeyInfo\":\"平台名称\",\"platformValue\":\"SMT\"},{\"id\":3,\"platformKey\":\"platform_url\",\"platformKeyInfo\":\"官方网站\",\"platformValue\":\"http://www.gyjerp.com/\"},{\"id\":4,\"platformKey\":\"bill_print_flag\",\"platformKeyInfo\":\"三联打印启用标记\",\"platformValue\":\"0\"},{\"id\":5,\"platformKey\":\"bill_print_url\",\"platformKeyInfo\":\"三联打印地址\",\"platformValue\":\"\"},{\"id\":6,\"platformKey\":\"pay_fee_url\",\"platformKeyInfo\":\"租户续费地址\",\"platformValue\":\"\"},{\"id\":7,\"platformKey\":\"register_flag\",\"platformKeyInfo\":\"注册启用标记\",\"platformValue\":\"0\"},{\"id\":9,\"platformKey\":\"send_workflow_url\",\"platformKeyInfo\":\"发起流程地址\",\"platformValue\":\"\"},{\"id\":10,\"platformKey\":\"weixinUrl\",\"platformKeyInfo\":\"微信url\",\"platformValue\":\"\"},{\"id\":11,\"platformKey\":\"weixinAppid\",\"platformKeyInfo\":\"微信appid\",\"platformValue\":\"\"},{\"id\":12,\"platformKey\":\"weixinSecret\",\"platformKeyInfo\":\"微信secret\",\"platformValue\":\"\"}]}}'); +INSERT INTO `tbl_log` VALUES (8468, 63, '接口日志', '43.152.142.141/1.9.116.218', '2026-09-30 06:36:53', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-04\",\"inbound\":100669.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (8469, 63, '接口日志', '43.152.142.112/1.9.116.218', '2026-09-30 06:36:57', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-04\",\"inbound\":100669.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (8470, 63, '接口日志', '43.174.32.12/1.9.116.218', '2026-09-30 06:37:02', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"其它\\\",\\\"subType\\\":\\\"请购单\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-30\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"createTimeRange\\\":[\\\"2026-06-29T16:00:00.000Z\\\",\\\"2026-09-29T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"backAmount\":0,\"changeAmount\":0,\"createTime\":1789720084000,\"creator\":63,\"debt\":0,\"defaultNumber\":\"QGD00000001738\",\"deleteFlag\":\"0\",\"deposit\":0,\"discountLastMoney\":0,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1722,\"lastDebt\":0,\"lastDeposit\":0.000000,\"materialCount\":10000.000000,\"materialsList\":\"MD-4G111(VF) 包装 MD-4G111(VF) packing MD-4G111(VF) \",\"number\":\"QGD00000001738\",\"operTime\":1789734467000,\"operTimeStr\":\"2026-09-18 16:27:47\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"请购单\",\"type\":\"其它\",\"userName\":\"admin\"},{\"backAmount\":0,\"changeAmount\":0,\"createTime\":1789717442000,\"creator\":63,\"debt\":0,\"defaultNumber\":\"QGD00000001719\",\"deleteFlag\":\"0\",\"deposit\":0,\"discountLastMoney\":0,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1715,\"lastDebt\":0,\"lastDeposit\":0.000000,\"materialCount\":7.000000,\"materialsList\":\"MD-4G111(VF) 4G模块 MD-4G111(VF) MD-4G111(VF) \",\"number\":\"QGD00000001719\",\"operTime\":1789717427000,\"operTimeStr\":\"2026-09-18 11:43:47\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"请购单\",\"type\":\"其它\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (8471, 63, '接口日志', '43.174.32.34/1.9.116.218', '2026-09-30 06:37:02', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (8472, 63, '接口日志', '43.152.142.133/1.9.116.218', '2026-09-30 06:37:02', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"}]'); +INSERT INTO `tbl_log` VALUES (8473, 63, '接口日志', '43.174.32.18/1.9.116.218', '2026-09-30 06:37:02', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8474, 63, '接口日志', '43.152.142.32/1.9.116.218', '2026-09-30 06:37:02', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8475, 63, '接口日志', '43.152.142.33/1.9.116.218', '2026-09-30 06:37:03', 0, 'SupplierController.findBySelectSup(..)', NULL, 'POST /apis/supplier/findBySelect_sup', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司\",\"id\":89}]'); +INSERT INTO `tbl_log` VALUES (8476, 63, '接口日志', '43.152.142.78/1.9.116.218', '2026-09-30 06:37:03', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8477, 63, '接口日志', '43.174.54.44/1.9.116.218', '2026-09-30 06:37:03', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (8478, 63, '接口日志', '43.152.142.64/1.9.116.218', '2026-09-30 06:37:03', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (8479, 63, '接口日志', '43.174.54.14/1.9.116.218', '2026-09-30 06:37:03', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8480, 63, '接口日志', '43.174.52.31/1.9.116.218', '2026-09-30 06:37:03', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"其它\\\",\\\"subType\\\":\\\"采购订单\\\",\\\"linkApply\\\":\\\"\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-30\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"createTimeRange\\\":[\\\"2026-06-29T16:00:00.000Z\\\",\\\"2026-09-29T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789720113000,\"creator\":63,\"debt\":100000.000000,\"defaultNumber\":\"CGDD00000001739\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":100000.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1723,\"lastDebt\":100000.000000,\"lastDeposit\":0.000000,\"linkApply\":\"QGD00000001738\",\"materialCount\":10000.000000,\"materialsList\":\"MD-4G111(VF) 包装 MD-4G111(VF) packing MD-4G111(VF) \",\"number\":\"CGDD00000001739\",\"operTime\":1789734505000,\"operTimeStr\":\"2026-09-18 16:28:25\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"采购订单\",\"totalPrice\":100000.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789717459000,\"creator\":63,\"debt\":0.700000,\"defaultNumber\":\"CGDD00000001720\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":0.700000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1716,\"lastDebt\":0.700000,\"lastDeposit\":0.000000,\"linkApply\":\"QGD00000001719\",\"materialCount\":7.000000,\"materialsList\":\"MD-4G111(VF) 4G模块 MD-4G111(VF) MD-4G111(VF) \",\"number\":\"CGDD00000001720\",\"operTime\":1789717452000,\"operTimeStr\":\"2026-09-18 11:44:12\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"采购订单\",\"totalPrice\":0.700000,\"type\":\"其它\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (8481, 63, '接口日志', '43.152.142.105/1.9.116.218', '2026-09-30 06:37:03', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"}]'); +INSERT INTO `tbl_log` VALUES (8482, 63, '接口日志', '43.152.142.33/1.9.116.218', '2026-09-30 06:37:05', 0, 'SupplierController.findBySelectSup(..)', NULL, 'POST /apis/supplier/findBySelect_sup', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司\",\"id\":89}]'); +INSERT INTO `tbl_log` VALUES (8483, 63, '接口日志', '43.174.53.11/1.9.116.218', '2026-09-30 06:37:05', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8484, 63, '接口日志', '43.152.142.57/1.9.116.218', '2026-09-30 06:37:05', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (8485, 63, '接口日志', '43.152.142.34/1.9.116.218', '2026-09-30 06:37:05', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (8486, 63, '接口日志', '43.174.53.30/1.9.116.218', '2026-09-30 06:37:05', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8487, 63, '接口日志', '43.174.53.17/1.9.116.218', '2026-09-30 06:37:05', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"入库\\\",\\\"subType\\\":\\\"采购\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-30\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"createTimeRange\\\":[\\\"2026-06-29T16:00:00.000Z\\\",\\\"2026-09-29T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789720142000,\"creator\":63,\"debt\":100000.000000,\"defaultNumber\":\"CGRK00000001740\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":100000.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1724,\"lastDebt\":100000.000000,\"lastDeposit\":0.000000,\"linkNumber\":\"CGDD00000001739\",\"materialCount\":10000.000000,\"materialsList\":\"MD-4G111(VF) 包装 MD-4G111(VF) packing MD-4G111(VF) \",\"number\":\"CGRK00000001740\",\"operTime\":1789734542000,\"operTimeStr\":\"2026-09-18 16:29:02\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"采购\",\"totalPrice\":100000.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789717476000,\"creator\":63,\"debt\":0.700000,\"defaultNumber\":\"CGRK00000001721\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":0.700000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1717,\"lastDebt\":0.700000,\"lastDeposit\":0.000000,\"linkNumber\":\"CGDD00000001720\",\"materialCount\":7.000000,\"materialsList\":\"MD-4G111(VF) 4G模块 MD-4G111(VF) MD-4G111(VF) \",\"number\":\"CGRK00000001721\",\"operTime\":1789717474000,\"operTimeStr\":\"2026-09-18 11:44:34\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"采购\",\"totalPrice\":0.700000,\"type\":\"入库\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (8488, 63, '接口日志', '43.152.142.109/1.9.116.218', '2026-09-30 06:37:05', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"}]'); +INSERT INTO `tbl_log` VALUES (8489, 63, '接口日志', '43.152.142.128/1.9.116.218', '2026-09-30 06:37:05', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8490, 63, '接口日志', '43.152.142.33/1.9.116.218', '2026-09-30 06:37:06', 0, 'SupplierController.findBySelectSup(..)', NULL, 'POST /apis/supplier/findBySelect_sup', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司\",\"id\":89}]'); +INSERT INTO `tbl_log` VALUES (8491, 63, '接口日志', '43.152.142.141/1.9.116.218', '2026-09-30 06:37:06', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8492, 63, '接口日志', '43.152.142.41/1.9.116.218', '2026-09-30 06:37:06', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8493, 63, '接口日志', '43.174.32.23/1.9.116.218', '2026-09-30 06:37:06', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (8494, 63, '接口日志', '43.152.142.29/1.9.116.218', '2026-09-30 06:37:06', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (8495, 63, '接口日志', '43.174.55.40/1.9.116.218', '2026-09-30 06:37:06', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"出库\\\",\\\"subType\\\":\\\"采购退货\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-30\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"createTimeRange\\\":[\\\"2026-06-29T16:00:00.000Z\\\",\\\"2026-09-29T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (8496, 63, '接口日志', '43.152.142.84/1.9.116.218', '2026-09-30 06:37:06', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"}]'); +INSERT INTO `tbl_log` VALUES (8497, 63, '接口日志', '43.174.53.30/1.9.116.218', '2026-09-30 06:37:10', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (8498, 63, '接口日志', '43.174.32.18/1.9.116.218', '2026-09-30 06:37:10', 0, 'PersonController.getPersonByNumType(..)', NULL, 'GET /apis/person/getPersonByNumType', '{\"typeNum\":\"1\"}', '[]'); +INSERT INTO `tbl_log` VALUES (8499, 63, '接口日志', '43.152.142.133/1.9.116.218', '2026-09-30 06:37:10', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (8500, 63, '接口日志', '43.174.32.12/1.9.116.218', '2026-09-30 06:37:10', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8501, 63, '接口日志', '43.174.54.44/1.9.116.218', '2026-09-30 06:37:10', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"}]'); +INSERT INTO `tbl_log` VALUES (8502, 63, '接口日志', '43.152.142.112/1.9.116.218', '2026-09-30 06:37:10', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"其它\\\",\\\"subType\\\":\\\"销售订单\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-30\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"createTimeRange\\\":[\\\"2026-06-29T16:00:00.000Z\\\",\\\"2026-09-29T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":5,\"rows\":[{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789718483000,\"creator\":63,\"debt\":808500.000000,\"defaultNumber\":\"XSDD00000001726\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":808500.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1719,\"lastDebt\":808500.000000,\"lastDeposit\":0.000000,\"materialCount\":10000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD00000001726\",\"operTime\":1789732682000,\"operTimeStr\":\"2026-09-18 15:58:02\",\"organId\":90,\"organName\":\"TNB\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"totalPrice\":735000.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789726236000,\"creator\":63,\"debt\":340000000.000000,\"defaultNumber\":\"XSDD00000001724\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":340000000.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1718,\"lastDebt\":340000000.000000,\"lastDeposit\":0.000000,\"materialCount\":1000000.000000,\"materialsList\":\"3PH APEC3-WC 3PH APEC3-WC 3PH APEC3-WC \",\"number\":\"XSDD00000001724\",\"operTime\":1789725706000,\"operTimeStr\":\"2026-09-18 14:01:46\",\"organId\":90,\"organName\":\"TNB\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"0\",\"subType\":\"销售订单\",\"totalPrice\":340000000.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1785355200000,\"creator\":63,\"debt\":242550.000000,\"defaultNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":242550.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1580,\"lastDebt\":242550.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":3000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303475-1PH-WS79-ADD1\",\"operTime\":1785355200000,\"operTimeStr\":\"2026-07-30 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303475\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":242550.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1785355200000,\"creator\":63,\"debt\":323400.000000,\"defaultNumber\":\"XSDD-42303447-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":323400.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1574,\"lastDebt\":323400.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":4000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303447-1PH-WS79-ADD1\",\"operTime\":1785355200000,\"operTimeStr\":\"2026-07-30 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303447\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":323400.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1782936000000,\"creator\":63,\"debt\":323400.000000,\"defaultNumber\":\"XSDD-42303429-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":323400.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1569,\"lastDebt\":323400.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":4000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303429-1PH-WS79-ADD1\",\"operTime\":1782936000000,\"operTimeStr\":\"2026-07-02 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303429\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":323400.000000,\"type\":\"其它\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (8503, 63, '接口日志', '43.174.32.34/1.9.116.218', '2026-09-30 06:37:10', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8504, 63, '接口日志', '43.152.142.32/1.9.116.218', '2026-09-30 06:37:11', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (8505, 63, '接口日志', '43.174.54.14/1.9.116.218', '2026-09-30 06:37:11', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8506, 63, '接口日志', '43.152.142.78/1.9.116.218', '2026-09-30 06:37:15', 0, 'DepotHeadController.getDetailByNumber(..)', NULL, 'GET /apis/depotHead/getDetailByNumber', '{\"number\":\"XSDD00000001726\"}', '{\"code\":200,\"data\":{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"accountNumber\":\"\",\"address\":\"\",\"backAmount\":0,\"bankName\":\"\",\"changeAmount\":0.000000,\"contacts\":\"\",\"createTime\":1789718483000,\"creator\":63,\"creatorName\":\"admin\",\"debt\":808500.000000,\"defaultNumber\":\"XSDD00000001726\",\"deleteFlag\":\"0\",\"deposit\":0,\"depotHeadType\":\"销售订单其它\",\"discount\":0.000000,\"discountLastMoney\":808500.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"hasBackFlag\":false,\"id\":1719,\"lastDeposit\":0.000000,\"materialCount\":10000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD00000001726\",\"operTime\":1789732682000,\"operTimeStr\":\"2026-09-18 15:58:02\",\"organId\":90,\"organName\":\"TNB\",\"payType\":\"现付\",\"phoneNum\":\"\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"taxNum\":\"\",\"telephone\":\"\",\"totalPrice\":735000.000000,\"type\":\"其它\"}}'); +INSERT INTO `tbl_log` VALUES (8507, 63, '接口日志', '43.174.52.31/1.9.116.218', '2026-09-30 06:37:15', 0, 'AccountHeadController.getFinancialBillNoByBillId(..)', NULL, 'GET /apis/accountHead/getFinancialBillNoByBillId', '{\"billId\":1719}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (8508, 63, '接口日志', '43.152.142.105/1.9.116.218', '2026-09-30 06:37:15', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8509, 63, '接口日志', '43.152.142.64/1.9.116.218', '2026-09-30 06:37:15', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_print_flag\"}', '{\"code\":200,\"data\":{\"id\":4,\"platformKey\":\"bill_print_flag\",\"platformKeyInfo\":\"三联打印启用标记\",\"platformValue\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8510, 63, '接口日志', '43.174.53.30/1.9.116.218', '2026-09-30 06:37:15', 0, 'DepotHeadController.getBillListByLinkNumber(..)', NULL, 'GET /apis/depotHead/getBillListByLinkNumber', '{\"number\":\"XSDD00000001726\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (8511, 63, '接口日志', '43.174.53.17/1.9.116.218', '2026-09-30 06:37:15', 0, 'DepotItemController.getDetailList(..)', NULL, 'GET /apis/depotItem/getDetailList', '{\"headerId\":1719,\"mpList\":\"扩展1,扩展2,扩展3\",\"linkType\":\"basic\",\"isReadOnly\":\"1\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"standard\":\"1PH WS79\",\"materialExtendId\":123,\"finishPurchaseNumber\":0,\"anotherDepotName\":\"\",\"color\":\"\",\"preNumber\":10000.000000,\"depotId\":\"\",\"purchaseDecimal\":59.500000,\"imgName\":\"\",\"operNumber\":10000.000000,\"anotherDepotId\":\"\",\"basicNumber\":10000.000000,\"taxLastMoney\":808500.000000,\"model\":\"1PH WS79\",\"id\":1524,\"enableSerialNumber\":\"0\",\"stock\":52400.000000,\"brand\":\"\",\"finishNumber\":0,\"expirationDate\":\"\",\"enableBatchNumber\":\"0\",\"unitPrice\":73.500000,\"op\":1,\"otherField1\":\"\",\"depotName\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"weight\":0,\"otherField3\":\"\",\"otherField2\":\"\",\"taxMoney\":73500.000000,\"imgSmall\":\"\",\"barCode\":\"1PH-WS79\",\"taxRate\":10.000000,\"unit\":\"件\",\"allPrice\":735000.000000,\"name\":\"1PH WS79\",\"imgLarge\":\"\",\"position\":\"\"},{\"allPrice\":735000.000000,\"finishPurchaseNumber\":0,\"operNumber\":10000.000000,\"taxLastMoney\":808500.000000,\"weight\":0,\"taxMoney\":73500.000000,\"finishNumber\":0}]}}'); +INSERT INTO `tbl_log` VALUES (8512, 63, '接口日志', '43.152.142.34/1.9.116.218', '2026-09-30 06:37:39', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"其它\\\",\\\"subType\\\":\\\"销售订单\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-30\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"createTimeRange\\\":[\\\"2026-06-29T16:00:00.000Z\\\",\\\"2026-09-29T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":5,\"rows\":[{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789718483000,\"creator\":63,\"debt\":808500.000000,\"defaultNumber\":\"XSDD00000001726\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":808500.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1719,\"lastDebt\":808500.000000,\"lastDeposit\":0.000000,\"materialCount\":10000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD00000001726\",\"operTime\":1789732682000,\"operTimeStr\":\"2026-09-18 15:58:02\",\"organId\":90,\"organName\":\"TNB\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"totalPrice\":735000.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789726236000,\"creator\":63,\"debt\":340000000.000000,\"defaultNumber\":\"XSDD00000001724\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":340000000.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1718,\"lastDebt\":340000000.000000,\"lastDeposit\":0.000000,\"materialCount\":1000000.000000,\"materialsList\":\"3PH APEC3-WC 3PH APEC3-WC 3PH APEC3-WC \",\"number\":\"XSDD00000001724\",\"operTime\":1789725706000,\"operTimeStr\":\"2026-09-18 14:01:46\",\"organId\":90,\"organName\":\"TNB\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"0\",\"subType\":\"销售订单\",\"totalPrice\":340000000.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1785355200000,\"creator\":63,\"debt\":242550.000000,\"defaultNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":242550.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1580,\"lastDebt\":242550.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":3000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303475-1PH-WS79-ADD1\",\"operTime\":1785355200000,\"operTimeStr\":\"2026-07-30 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303475\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":242550.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1785355200000,\"creator\":63,\"debt\":323400.000000,\"defaultNumber\":\"XSDD-42303447-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":323400.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1574,\"lastDebt\":323400.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":4000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303447-1PH-WS79-ADD1\",\"operTime\":1785355200000,\"operTimeStr\":\"2026-07-30 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303447\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":323400.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1782936000000,\"creator\":63,\"debt\":323400.000000,\"defaultNumber\":\"XSDD-42303429-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":323400.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1569,\"lastDebt\":323400.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":4000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303429-1PH-WS79-ADD1\",\"operTime\":1782936000000,\"operTimeStr\":\"2026-07-02 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303429\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":323400.000000,\"type\":\"其它\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (8513, 63, '接口日志', '43.174.53.30/1.9.116.218', '2026-09-30 06:37:42', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8514, 63, '接口日志', '43.174.53.11/1.9.116.218', '2026-09-30 06:37:42', 0, 'PersonController.getPersonByNumType(..)', NULL, 'GET /apis/person/getPersonByNumType', '{\"typeNum\":\"1\"}', '[]'); +INSERT INTO `tbl_log` VALUES (8515, 63, '接口日志', '43.152.142.128/1.9.116.218', '2026-09-30 06:37:42', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (8516, 63, '接口日志', '43.152.142.29/1.9.116.218', '2026-09-30 06:37:42', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (8517, 63, '接口日志', '43.152.142.62/1.9.116.218', '2026-09-30 06:37:42', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (8518, 63, '接口日志', '43.174.32.18/1.9.116.218', '2026-09-30 06:37:42', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"出库\\\",\\\"subType\\\":\\\"销售\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-30\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"createTimeRange\\\":[\\\"2026-06-29T16:00:00.000Z\\\",\\\"2026-09-29T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":50,\"rows\":[{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789718584000,\"creator\":63,\"debt\":808500.000000,\"defaultNumber\":\"XSCK00000001728\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":808500.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1720,\"lastDebt\":808500.000000,\"lastDeposit\":0.000000,\"linkNumber\":\"XSDD00000001726\",\"materialCount\":10000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK00000001728\",\"operTime\":1789732981000,\"operTimeStr\":\"2026-09-18 16:03:01\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"totalPrice\":735000.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1786305600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-87\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1671,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303506-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-87\",\"operTime\":1786305600000,\"operTimeStr\":\"2026-08-10 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1786305600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2159-86\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1670,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303506-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2159-86\",\"operTime\":1786305600000,\"operTimeStr\":\"2026-08-10 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2159\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785873600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-DO_2158-85\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1669,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-DO_2158-85\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:DO_2158\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785873600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-84\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1668,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-84\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785873600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-DO_2157-83\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1667,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-DO_2157-83\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:DO_2157\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785268800000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2150-69\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1665,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303480-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2150-69\",\"operTime\":1785268800000,\"operTimeStr\":\"2026-07-29 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2150\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784750400000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2142-68\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1664,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303480-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2142-68\",\"operTime\":1784750400000,\"operTimeStr\":\"2026-07-23 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2142\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784145600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-67\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1663,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-67\",\"operTime\":1784145600000,\"operTimeStr\":\"2026-07-16 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784145600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2134-66\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1662,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2134-66\",\"operTime\":1784145600000,\"operTimeStr\":\"2026-07-16 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2134\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (8519, 63, '接口日志', '43.174.52.31/1.9.116.218', '2026-09-30 06:37:42', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"}]'); +INSERT INTO `tbl_log` VALUES (8520, 63, '接口日志', '43.152.142.109/1.9.116.218', '2026-09-30 06:37:42', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8521, 63, '接口日志', '43.152.142.41/1.9.116.218', '2026-09-30 06:37:42', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8522, 63, '接口日志', '43.152.142.57/1.9.116.218', '2026-09-30 06:37:57', 0, 'DepotHeadController.getDetailByNumber(..)', NULL, 'GET /apis/depotHead/getDetailByNumber', '{\"number\":\"XSCK-INV_2159-86\"}', '{\"code\":200,\"data\":{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountNumber\":\"\",\"address\":\"\",\"backAmount\":0.000000,\"bankName\":\"\",\"billType\":\"销售\",\"changeAmount\":0.000000,\"contacts\":\"\",\"createTime\":1786305600000,\"creator\":63,\"creatorName\":\"admin\",\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2159-86\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"depotHeadType\":\"销售出库\",\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"hasBackFlag\":false,\"id\":1670,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303506-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2159-86\",\"operTime\":1786305600000,\"operTimeStr\":\"2026-08-10 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"phoneNum\":\"\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2159\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"taxNum\":\"\",\"telephone\":\"\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\"}}'); +INSERT INTO `tbl_log` VALUES (8523, 63, '接口日志', '43.152.142.112/1.9.116.218', '2026-09-30 06:37:58', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8524, 63, '接口日志', '43.152.142.78/1.9.116.218', '2026-09-30 06:37:58', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_print_flag\"}', '{\"code\":200,\"data\":{\"id\":4,\"platformKey\":\"bill_print_flag\",\"platformKeyInfo\":\"三联打印启用标记\",\"platformValue\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8525, 63, '接口日志', '43.174.53.17/1.9.116.218', '2026-09-30 06:37:58', 0, 'AccountHeadController.getFinancialBillNoByBillId(..)', NULL, 'GET /apis/accountHead/getFinancialBillNoByBillId', '{\"billId\":1670}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (8526, 63, '接口日志', '43.152.142.32/1.9.116.218', '2026-09-30 06:37:58', 0, 'DepotItemController.getDetailList(..)', NULL, 'GET /apis/depotItem/getDetailList', '{\"headerId\":1670,\"mpList\":\"扩展1,扩展2,扩展3\",\"linkType\":\"basic\",\"isReadOnly\":\"1\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"standard\":\"1PH WS79\",\"materialExtendId\":123,\"finishPurchaseNumber\":0,\"anotherDepotName\":\"\",\"color\":\"\",\"preNumber\":1000.000000,\"depotId\":26,\"remark\":\"\",\"purchaseDecimal\":59.500000,\"imgName\":\"\",\"operNumber\":1000.000000,\"anotherDepotId\":\"\",\"basicNumber\":1000.000000,\"taxLastMoney\":80850.000000,\"model\":\"1PH WS79\",\"id\":1475,\"enableSerialNumber\":\"0\",\"stock\":52400.000000,\"brand\":\"\",\"finishNumber\":0,\"expirationDate\":\"\",\"enableBatchNumber\":\"0\",\"unitPrice\":73.500000,\"op\":1,\"otherField1\":\"\",\"depotName\":\"成品仓库\",\"mfrs\":\"浙江瑞银电子有限公司\",\"weight\":0,\"otherField3\":\"\",\"otherField2\":\"\",\"taxMoney\":7350.000000,\"imgSmall\":\"\",\"barCode\":\"1PH-WS79\",\"taxUnitPrice\":80.850000,\"taxRate\":10.000000,\"unit\":\"件\",\"allPrice\":73500.000000,\"name\":\"1PH WS79\",\"imgLarge\":\"\",\"position\":\"\"},{\"allPrice\":73500.000000,\"finishPurchaseNumber\":0,\"operNumber\":1000.000000,\"taxLastMoney\":80850.000000,\"weight\":0,\"taxMoney\":7350.000000,\"finishNumber\":0}]}}'); +INSERT INTO `tbl_log` VALUES (8527, 63, '接口日志', '43.152.142.133/1.9.116.218', '2026-09-30 06:37:58', 0, 'DepotHeadController.getBillListByLinkNumber(..)', NULL, 'GET /apis/depotHead/getBillListByLinkNumber', '{\"number\":\"XSCK-INV_2159-86\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (8528, 63, '接口日志', '43.174.55.40/1.9.116.218', '2026-09-30 06:38:03', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"出库\\\",\\\"subType\\\":\\\"销售\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-30\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"createTimeRange\\\":[\\\"2026-06-29T16:00:00.000Z\\\",\\\"2026-09-29T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":50,\"rows\":[{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789718584000,\"creator\":63,\"debt\":808500.000000,\"defaultNumber\":\"XSCK00000001728\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":808500.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1720,\"lastDebt\":808500.000000,\"lastDeposit\":0.000000,\"linkNumber\":\"XSDD00000001726\",\"materialCount\":10000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK00000001728\",\"operTime\":1789732981000,\"operTimeStr\":\"2026-09-18 16:03:01\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"totalPrice\":735000.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1786305600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-87\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1671,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303506-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-87\",\"operTime\":1786305600000,\"operTimeStr\":\"2026-08-10 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1786305600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2159-86\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1670,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303506-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2159-86\",\"operTime\":1786305600000,\"operTimeStr\":\"2026-08-10 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2159\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785873600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-DO_2158-85\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1669,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-DO_2158-85\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:DO_2158\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785873600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-84\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1668,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-84\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785873600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-DO_2157-83\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1667,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-DO_2157-83\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:DO_2157\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785268800000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2150-69\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1665,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303480-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2150-69\",\"operTime\":1785268800000,\"operTimeStr\":\"2026-07-29 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2150\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784750400000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2142-68\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1664,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303480-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2142-68\",\"operTime\":1784750400000,\"operTimeStr\":\"2026-07-23 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2142\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784145600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-67\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1663,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-67\",\"operTime\":1784145600000,\"operTimeStr\":\"2026-07-16 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784145600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2134-66\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1662,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2134-66\",\"operTime\":1784145600000,\"operTimeStr\":\"2026-07-16 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2134\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (8529, 63, '接口日志', '43.174.54.14/1.9.116.218', '2026-09-30 06:38:07', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"出库\\\",\\\"subType\\\":\\\"销售\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-30\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"createTimeRange\\\":[\\\"2026-06-29T16:00:00.000Z\\\",\\\"2026-09-29T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":50,\"rows\":[{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1782849600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-35\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1628,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303437-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-35\",\"operTime\":1782849600000,\"operTimeStr\":\"2026-07-01 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1782849600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2125-34\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1627,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303437-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2125-34\",\"operTime\":1782849600000,\"operTimeStr\":\"2026-07-01 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2125\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1782849600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-33\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1626,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303433-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-33\",\"operTime\":1782849600000,\"operTimeStr\":\"2026-07-01 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1782849600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-32\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1625,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303433-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-32\",\"operTime\":1782849600000,\"operTimeStr\":\"2026-07-01 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1782849600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2124-31\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1624,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303433-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2124-31\",\"operTime\":1782849600000,\"operTimeStr\":\"2026-07-01 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2124\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1782849600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-30\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1623,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303429-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-30\",\"operTime\":1782849600000,\"operTimeStr\":\"2026-07-01 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1782849600000,\"creator\":63,\"debt\":64680.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-29\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":64680.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1622,\"lastDebt\":64680.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303429-1PH-WS79-ADD1\",\"materialCount\":800.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-29\",\"operTime\":1782849600000,\"operTimeStr\":\"2026-07-01 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":64680.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1782849600000,\"creator\":63,\"debt\":16170.000000,\"defaultNumber\":\"XSCK-INV_2123-28\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":16170.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1620,\"lastDebt\":16170.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303429-1PH-WS79-ADD1\",\"materialCount\":200.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2123-28\",\"operTime\":1782849600000,\"operTimeStr\":\"2026-07-01 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2123\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":16170.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1782849600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-27\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1619,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303429-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-27\",\"operTime\":1782849600000,\"operTimeStr\":\"2026-07-01 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1782849600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2122-26\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1618,\"lastDebt\":-80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303429-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2122-26\",\"operTime\":1782849600000,\"operTimeStr\":\"2026-07-01 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2122\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (8530, 63, '接口日志', '43.152.142.84/1.9.116.218', '2026-09-30 06:38:08', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"出库\\\",\\\"subType\\\":\\\"销售\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-30\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"createTimeRange\\\":[\\\"2026-06-29T16:00:00.000Z\\\",\\\"2026-09-29T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":50,\"rows\":[{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785096000000,\"creator\":63,\"debt\":3234.000000,\"defaultNumber\":\"XSCK-do_2145-55\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":3234.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1649,\"lastDebt\":3234.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303461-1PH-WS79-ADD1\",\"materialCount\":40.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-do_2145-55\",\"operTime\":1785096000000,\"operTimeStr\":\"2026-07-27 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:do_2145\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":3234.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785096000000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-54\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1648,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303456-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-54\",\"operTime\":1785096000000,\"operTimeStr\":\"2026-07-27 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785096000000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-do_2144-53\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1647,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303456-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-do_2144-53\",\"operTime\":1785096000000,\"operTimeStr\":\"2026-07-27 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:do_2144\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785096000000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-do_2143-52\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1646,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303456-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-do_2143-52\",\"operTime\":1785096000000,\"operTimeStr\":\"2026-07-27 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:do_2143\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784664000000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-51\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1645,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303452-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-51\",\"operTime\":1784664000000,\"operTimeStr\":\"2026-07-22 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784664000000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2139-50\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1644,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303452-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2139-50\",\"operTime\":1784664000000,\"operTimeStr\":\"2026-07-22 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2139\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784750400000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2138-49\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1643,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303452-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2138-49\",\"operTime\":1784750400000,\"operTimeStr\":\"2026-07-23 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2138\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1783972800000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2132-48\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1642,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303452-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2132-48\",\"operTime\":1783972800000,\"operTimeStr\":\"2026-07-14 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2132\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1783886400000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2131-47\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1641,\"lastDebt\":0.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303447-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2131-47\",\"operTime\":1783886400000,\"operTimeStr\":\"2026-07-13 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2131\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1783540800000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-46\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1640,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303447-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-46\",\"operTime\":1783540800000,\"operTimeStr\":\"2026-07-09 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (8531, 63, '接口日志', '43.152.142.34/1.9.116.218', '2026-09-30 06:38:09', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"出库\\\",\\\"subType\\\":\\\"销售\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-30\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"createTimeRange\\\":[\\\"2026-06-29T16:00:00.000Z\\\",\\\"2026-09-29T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":50,\"rows\":[{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784145600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2133-65\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1660,\"lastDebt\":0.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2133-65\",\"operTime\":1784145600000,\"operTimeStr\":\"2026-07-16 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2133\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784750400000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-64\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1659,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303470-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-64\",\"operTime\":1784750400000,\"operTimeStr\":\"2026-07-23 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784750400000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2141-63\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1658,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303470-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2141-63\",\"operTime\":1784750400000,\"operTimeStr\":\"2026-07-23 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2141\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784750400000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2140-62\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1657,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303470-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2140-62\",\"operTime\":1784750400000,\"operTimeStr\":\"2026-07-23 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2140\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785096000000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-61\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1656,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303465-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-61\",\"operTime\":1785096000000,\"operTimeStr\":\"2026-07-27 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785096000000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-do_2148-60\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1655,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303465-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-do_2148-60\",\"operTime\":1785096000000,\"operTimeStr\":\"2026-07-27 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:do_2148\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785096000000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-do_2147-59\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1654,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303465-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-do_2147-59\",\"operTime\":1785096000000,\"operTimeStr\":\"2026-07-27 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:do_2147\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785096000000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-58\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1653,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303461-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-58\",\"operTime\":1785096000000,\"operTimeStr\":\"2026-07-27 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785096000000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-do_2146-57\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1652,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303461-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-do_2146-57\",\"operTime\":1785096000000,\"operTimeStr\":\"2026-07-27 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:do_2146\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785096000000,\"creator\":63,\"debt\":77616.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-56\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":77616.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1651,\"lastDebt\":77616.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303461-1PH-WS79-ADD1\",\"materialCount\":960.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-56\",\"operTime\":1785096000000,\"operTimeStr\":\"2026-07-27 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":77616.000000,\"type\":\"出库\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (8532, 63, '接口日志', '43.174.32.23/1.9.116.218', '2026-09-30 06:38:13', 0, 'DeliveryPlanController.getList(..)', NULL, 'GET /apis/deliveryPlan/list', '{\"search\":\"{\\\"planNumber\\\":\\\"\\\",\\\"sourceBillNumber\\\":\\\"\\\",\\\"saleOrderNumber\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"createTime\":1789720385000,\"creator\":63,\"creatorName\":\"admin\",\"customerId\":90,\"customerName\":\"TNB\",\"deleteFlag\":\"0\",\"id\":7,\"materialsList\":\"1PH WS79\",\"planNumber\":\"JH00000001741\",\"planQuantity\":10000.000000,\"saleOrderNumber\":\"XSDD00000001726\",\"shippedQuantity\":0.000000,\"sourceBillId\":1720,\"sourceBillNumber\":\"XSCK00000001728\",\"sourceType\":\"sale\",\"status\":\"2\"},{\"createTime\":1789717298000,\"creator\":63,\"creatorName\":\"admin\",\"customerId\":90,\"customerName\":\"TNB\",\"deleteFlag\":\"0\",\"id\":6,\"materialsList\":\"3PH APEC3-WC\",\"planNumber\":\"JH00000001717\",\"planQuantity\":149.000000,\"saleOrderNumber\":\"XSDD-42260529-3PH-APEC3-WC-OV\",\"shippedQuantity\":0.000000,\"sourceBillId\":1714,\"sourceBillNumber\":\"XSCK-3PH-APEC3-WC-OV-28\",\"sourceType\":\"sale\",\"status\":\"2\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (8533, 63, '接口日志', '43.174.32.34/1.9.116.218', '2026-09-30 06:38:15', 0, 'DeliveryPlanController.getDetail(..)', NULL, 'GET /apis/deliveryPlan/detail', '{\"id\":6}', '{\"code\":200,\"data\":{\"rows\":[{\"barCode\":\"3PH-APEC3-WC\",\"deleteFlag\":\"0\",\"depotId\":26,\"id\":5,\"materialExtendId\":124,\"materialId\":704,\"materialName\":\"3PH APEC3-WC\",\"model\":\"3PH APEC3-WC\",\"planId\":6,\"planQuantity\":149.000000,\"remark\":\"\",\"shippedQuantity\":0.000000,\"sourceItemId\":1519,\"standard\":\"3PH APEC3-WC\",\"tenantId\":63,\"unit\":\"件\"}],\"info\":{\"createTime\":1789717298000,\"creator\":63,\"customerId\":90,\"deleteFlag\":\"0\",\"id\":6,\"planNumber\":\"JH00000001717\",\"saleOrderNumber\":\"XSDD-42260529-3PH-APEC3-WC-OV\",\"sourceBillId\":1714,\"sourceBillNumber\":\"XSCK-3PH-APEC3-WC-OV-28\",\"sourceType\":\"sale\",\"status\":\"2\",\"tenantId\":63}}}'); +INSERT INTO `tbl_log` VALUES (8534, 63, '接口日志', '43.152.142.105/1.9.116.218', '2026-09-30 06:38:22', 0, 'DeliveryPlanController.getDetail(..)', NULL, 'GET /apis/deliveryPlan/detail', '{\"id\":6}', '{\"code\":200,\"data\":{\"rows\":[{\"barCode\":\"3PH-APEC3-WC\",\"deleteFlag\":\"0\",\"depotId\":26,\"id\":5,\"materialExtendId\":124,\"materialId\":704,\"materialName\":\"3PH APEC3-WC\",\"model\":\"3PH APEC3-WC\",\"planId\":6,\"planQuantity\":149.000000,\"remark\":\"\",\"shippedQuantity\":0.000000,\"sourceItemId\":1519,\"standard\":\"3PH APEC3-WC\",\"tenantId\":63,\"unit\":\"件\"}],\"info\":{\"createTime\":1789717298000,\"creator\":63,\"customerId\":90,\"deleteFlag\":\"0\",\"id\":6,\"planNumber\":\"JH00000001717\",\"saleOrderNumber\":\"XSDD-42260529-3PH-APEC3-WC-OV\",\"sourceBillId\":1714,\"sourceBillNumber\":\"XSCK-3PH-APEC3-WC-OV-28\",\"sourceType\":\"sale\",\"status\":\"2\",\"tenantId\":63}}}'); +INSERT INTO `tbl_log` VALUES (8535, 63, '接口日志', '43.174.32.12/1.9.116.218', '2026-09-30 06:38:29', 0, 'DeliveryPlanController.getDetail(..)', NULL, 'GET /apis/deliveryPlan/detail', '{\"id\":7}', '{\"code\":200,\"data\":{\"rows\":[{\"barCode\":\"1PH-WS79\",\"deleteFlag\":\"0\",\"depotId\":25,\"id\":6,\"materialExtendId\":123,\"materialId\":703,\"materialName\":\"1PH WS79\",\"model\":\"1PH WS79\",\"planId\":7,\"planQuantity\":10000.000000,\"shippedQuantity\":0.000000,\"sourceItemId\":1525,\"standard\":\"1PH WS79\",\"unit\":\"件\"}],\"info\":{\"createTime\":1789720385000,\"creator\":63,\"customerId\":90,\"deleteFlag\":\"0\",\"id\":7,\"planNumber\":\"JH00000001741\",\"saleOrderNumber\":\"XSDD00000001726\",\"sourceBillId\":1720,\"sourceBillNumber\":\"XSCK00000001728\",\"sourceType\":\"sale\",\"status\":\"2\"}}}'); +INSERT INTO `tbl_log` VALUES (8536, 63, '接口日志', '43.174.54.44/1.9.116.218', '2026-09-30 06:38:37', 0, 'SaleShipmentController.getList(..)', NULL, 'GET /apis/saleShipment/list', '{\"search\":\"{\\\"shipmentNumber\\\":\\\"\\\",\\\"saleOutNumber\\\":\\\"\\\",\\\"saleOrderNumber\\\":\\\"\\\",\\\"logisticsNo\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"actualQuantity\":10000.000000,\"approveBy\":63,\"approveByName\":\"admin\",\"approveRemark\":\"审批通过\",\"approveTime\":1789720647000,\"confirmBy\":63,\"confirmByName\":\"admin\",\"confirmTime\":1789720682000,\"createTime\":1789720588000,\"creator\":63,\"creatorName\":\"admin\",\"customerId\":90,\"customerName\":\"TNB\",\"deleteFlag\":\"0\",\"deliveryPlanId\":7,\"deliveryPlanNumber\":\"JH00000001741\",\"differenceQuantity\":0.000000,\"id\":17,\"materialsList\":\"1PH WS79\",\"planQuantity\":10000.000000,\"plannedShipTime\":1789734921000,\"saleOrderNumber\":\"XSDD00000001726\",\"saleOutId\":1720,\"saleOutNumber\":\"XSCK00000001728\",\"shipBy\":63,\"shipByName\":\"admin\",\"shipTime\":1789720682000,\"shipmentNumber\":\"FHTZ00000001742\",\"sourceType\":\"sale\",\"status\":\"2\"},{\"actualQuantity\":149.000000,\"approveBy\":63,\"approveByName\":\"admin\",\"approveRemark\":\"审批通过\",\"approveTime\":1789717350000,\"confirmBy\":63,\"confirmByName\":\"admin\",\"confirmTime\":1789717357000,\"createTime\":1789717342000,\"creator\":63,\"creatorName\":\"admin\",\"customerId\":90,\"customerName\":\"TNB\",\"deleteFlag\":\"0\",\"deliveryPlanId\":6,\"deliveryPlanNumber\":\"JH00000001717\",\"differenceQuantity\":0.000000,\"id\":16,\"logisticsCompany\":\"FEXD\",\"logisticsNo\":\"FD10000001\",\"materialsList\":\"3PH APEC3-WC\",\"planQuantity\":149.000000,\"plannedShipTime\":1789717304000,\"receiver\":\"Hank\",\"receiverAddress\":\"5433 Grand Ave\",\"receiverPhone\":\"60001-1111\",\"saleOrderNumber\":\"XSDD-42260529-3PH-APEC3-WC-OV\",\"saleOutId\":1714,\"saleOutNumber\":\"XSCK-3PH-APEC3-WC-OV-28\",\"shipBy\":63,\"shipByName\":\"admin\",\"shipTime\":1789717357000,\"shipmentNumber\":\"FHTZ00000001718\",\"sourceType\":\"sale\",\"status\":\"2\"}]}}'); +INSERT INTO `tbl_log` VALUES (8537, 63, '接口日志', '43.152.142.64/1.9.116.218', '2026-09-30 06:38:42', 0, 'SaleShipmentController.getDetail(..)', NULL, 'GET /apis/saleShipment/detail', '{\"id\":17}', '{\"code\":200,\"data\":{\"rows\":[{\"actualQuantity\":10000.000000,\"barCode\":\"1PH-WS79\",\"deleteFlag\":\"0\",\"deliveryPlanItemId\":6,\"depotId\":25,\"differenceQuantity\":0.000000,\"id\":15,\"materialExtendId\":123,\"materialId\":703,\"materialName\":\"1PH WS79\",\"model\":\"1PH WS79\",\"planQuantity\":10000.000000,\"saleOutItemId\":1525,\"shipmentId\":17,\"shippedQuantity\":0.000000,\"standard\":\"1PH WS79\",\"unit\":\"件\"}],\"info\":{\"approveBy\":63,\"approveRemark\":\"审批通过\",\"approveTime\":1789720647000,\"confirmBy\":63,\"confirmTime\":1789720682000,\"createTime\":1789720588000,\"creator\":63,\"customerId\":90,\"deleteFlag\":\"0\",\"deliveryPlanId\":7,\"deliveryPlanNumber\":\"JH00000001741\",\"id\":17,\"plannedShipTime\":1789734921000,\"saleOrderNumber\":\"XSDD00000001726\",\"saleOutId\":1720,\"saleOutNumber\":\"XSCK00000001728\",\"shipBy\":63,\"shipTime\":1789720682000,\"shipmentNumber\":\"FHTZ00000001742\",\"sourceType\":\"sale\",\"status\":\"2\"}}}'); +INSERT INTO `tbl_log` VALUES (8538, 63, '接口日志', '43.152.142.78/1.9.116.218', '2026-09-30 06:38:44', 0, 'SaleShipmentController.getDetail(..)', NULL, 'GET /apis/saleShipment/detail', '{\"id\":16}', '{\"code\":200,\"data\":{\"rows\":[{\"actualQuantity\":149.000000,\"barCode\":\"3PH-APEC3-WC\",\"deleteFlag\":\"0\",\"deliveryPlanItemId\":5,\"depotId\":26,\"differenceQuantity\":0.000000,\"id\":13,\"materialExtendId\":124,\"materialId\":704,\"materialName\":\"3PH APEC3-WC\",\"model\":\"3PH APEC3-WC\",\"planQuantity\":149.000000,\"remark\":\"\",\"saleOutItemId\":1519,\"shipmentId\":16,\"shippedQuantity\":0.000000,\"standard\":\"3PH APEC3-WC\",\"tenantId\":63,\"unit\":\"件\"}],\"info\":{\"approveBy\":63,\"approveRemark\":\"审批通过\",\"approveTime\":1789717350000,\"confirmBy\":63,\"confirmTime\":1789717357000,\"createTime\":1789717342000,\"creator\":63,\"customerId\":90,\"deleteFlag\":\"0\",\"deliveryPlanId\":6,\"deliveryPlanNumber\":\"JH00000001717\",\"id\":16,\"logisticsCompany\":\"FEXD\",\"logisticsNo\":\"FD10000001\",\"plannedShipTime\":1789717304000,\"receiver\":\"Hank\",\"receiverAddress\":\"5433 Grand Ave\",\"receiverPhone\":\"60001-1111\",\"saleOrderNumber\":\"XSDD-42260529-3PH-APEC3-WC-OV\",\"saleOutId\":1714,\"saleOutNumber\":\"XSCK-3PH-APEC3-WC-OV-28\",\"shipBy\":63,\"shipTime\":1789717357000,\"shipmentNumber\":\"FHTZ00000001718\",\"sourceType\":\"sale\",\"status\":\"2\"}}}'); +INSERT INTO `tbl_log` VALUES (8539, 63, '接口日志', '43.152.142.141/1.9.116.218', '2026-09-30 06:38:50', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8540, 63, '接口日志', '43.152.142.32/1.9.116.218', '2026-09-30 06:38:50', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (8541, 63, '接口日志', '43.174.32.34/1.9.116.218', '2026-09-30 06:38:50', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (8542, 63, '接口日志', '43.152.142.109/1.9.116.218', '2026-09-30 06:38:50', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8543, 63, '接口日志', '43.152.142.112/1.9.116.218', '2026-09-30 06:38:50', 0, 'PersonController.getPersonByNumType(..)', NULL, 'GET /apis/person/getPersonByNumType', '{\"typeNum\":\"1\"}', '[]'); +INSERT INTO `tbl_log` VALUES (8544, 63, '接口日志', '43.152.156.79/1.9.116.218', '2026-09-30 06:38:50', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (8545, 63, '接口日志', '43.174.32.12/1.9.116.218', '2026-09-30 06:38:50', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"入库\\\",\\\"subType\\\":\\\"销售退货\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-30\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"createTimeRange\\\":[\\\"2026-06-29T16:00:00.000Z\\\",\\\"2026-09-29T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (8546, 63, '接口日志', '43.174.32.18/1.9.116.218', '2026-09-30 06:38:50', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"}]'); +INSERT INTO `tbl_log` VALUES (8547, 63, '接口日志', '43.152.156.79/1.9.116.218', '2026-09-30 06:38:54', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (8548, 63, '接口日志', '43.152.142.29/1.9.116.218', '2026-09-30 06:38:54', 0, 'PersonController.getPersonByNumType(..)', NULL, 'GET /apis/person/getPersonByNumType', '{\"typeNum\":\"1\"}', '[]'); +INSERT INTO `tbl_log` VALUES (8549, 63, '接口日志', '43.174.53.30/1.9.116.218', '2026-09-30 06:38:54', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (8550, 63, '接口日志', '43.152.142.105/1.9.116.218', '2026-09-30 06:38:54', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_print_flag\"}', '{\"code\":200,\"data\":{\"id\":4,\"platformKey\":\"bill_print_flag\",\"platformKeyInfo\":\"三联打印启用标记\",\"platformValue\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8551, 63, '接口日志', '43.174.52.31/1.9.116.218', '2026-09-30 06:38:54', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8552, 63, '接口日志', '43.174.55.40/1.9.116.218', '2026-09-30 06:38:54', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8553, 63, '接口日志', '43.152.156.79/1.9.116.218', '2026-09-30 06:38:54', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (8554, 63, '接口日志', '43.174.54.44/1.9.116.218', '2026-09-30 06:38:54', 0, 'SequenceController.buildNumber(..)', NULL, 'GET /apis/sequence/buildNumber', '{}', '{\"code\":200,\"data\":{\"defaultNumber\":\"00000001747\"}}'); +INSERT INTO `tbl_log` VALUES (8555, 63, '接口日志', '43.174.32.23/1.9.116.218', '2026-09-30 06:38:54', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"}]'); +INSERT INTO `tbl_log` VALUES (8556, 63, '接口日志', '43.174.54.14/1.9.116.218', '2026-09-30 06:38:54', 0, 'SystemConfigController.fileSizeLimit(..)', NULL, 'GET /apis/systemConfig/fileSizeLimit', '{}', '{\"code\":200,\"data\":10485760}'); +INSERT INTO `tbl_log` VALUES (8557, 63, '接口日志', '43.152.142.133/1.9.116.218', '2026-09-30 06:38:54', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (8558, 63, '接口日志', '43.174.53.17/1.9.116.218', '2026-09-30 06:38:54', 0, 'CustomerCategoryController.getTreeList(..)', NULL, 'GET /apis/customerCategory/treeList', '{}', '{\"code\":200,\"data\":{\"data\":[],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (8559, 63, '接口日志', '43.152.142.64/1.9.116.218', '2026-09-30 06:38:54', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8560, 63, '接口日志', '43.152.142.128/1.9.116.218', '2026-09-30 06:38:54', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8561, 63, '接口日志', '43.152.142.41/1.9.116.218', '2026-09-30 06:39:00', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"入库\\\",\\\"subType\\\":\\\"销售退货\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-30\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"createTimeRange\\\":[\\\"2026-06-29T16:00:00.000Z\\\",\\\"2026-09-29T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (8562, 63, '接口日志', '43.152.156.79/1.9.116.218', '2026-09-30 06:39:01', 0, 'SupplierController.findBySelectRetail(..)', NULL, 'POST /apis/supplier/findBySelect_retail', '{\"jsonObject\":{\"limit\":1}}', '[]'); +INSERT INTO `tbl_log` VALUES (8563, 63, '接口日志', '43.152.142.141/1.9.116.218', '2026-09-30 06:39:01', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (8564, 63, '接口日志', '43.152.142.84/1.9.116.218', '2026-09-30 06:39:01', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"出库\\\",\\\"subType\\\":\\\"零售\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-30\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"createTimeRange\\\":[\\\"2026-06-29T16:00:00.000Z\\\",\\\"2026-09-29T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (8565, 63, '接口日志', '43.152.142.78/1.9.116.218', '2026-09-30 06:39:01', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"}]'); +INSERT INTO `tbl_log` VALUES (8566, 63, '接口日志', '43.152.142.57/1.9.116.218', '2026-09-30 06:39:01', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8567, 63, '接口日志', '43.152.142.34/1.9.116.218', '2026-09-30 06:39:01', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8568, 63, '接口日志', '43.174.53.11/1.9.116.218', '2026-09-30 06:39:01', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (8569, 63, '接口日志', '43.152.142.112/1.9.116.218', '2026-09-30 06:39:01', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8570, 63, '接口日志', '43.152.156.79/1.9.116.218', '2026-09-30 06:39:03', 0, 'SupplierController.findBySelectRetail(..)', NULL, 'POST /apis/supplier/findBySelect_retail', '{\"jsonObject\":{\"limit\":1}}', '[]'); +INSERT INTO `tbl_log` VALUES (8571, 63, '接口日志', '43.174.32.18/1.9.116.218', '2026-09-30 06:39:03', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (8572, 63, '接口日志', '43.152.142.32/1.9.116.218', '2026-09-30 06:39:03', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (8573, 63, '接口日志', '43.174.32.12/1.9.116.218', '2026-09-30 06:39:03', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8574, 63, '接口日志', '43.174.32.34/1.9.116.218', '2026-09-30 06:39:03', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"入库\\\",\\\"subType\\\":\\\"零售退货\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-30\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"createTimeRange\\\":[\\\"2026-06-29T16:00:00.000Z\\\",\\\"2026-09-29T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (8575, 63, '接口日志', '43.152.142.109/1.9.116.218', '2026-09-30 06:39:03', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8576, 63, '接口日志', '43.174.52.31/1.9.116.218', '2026-09-30 06:39:03', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"}]'); +INSERT INTO `tbl_log` VALUES (8577, 63, '接口日志', '43.174.53.30/1.9.116.218', '2026-09-30 06:39:16', 0, 'PackBomController.getList(..)', NULL, 'GET /apis/packBom/list', '{\"search\":\"{\\\"bomNumber\\\":\\\"\\\",\\\"bomName\\\":\\\"\\\",\\\"productMaterialParam\\\":\\\"\\\",\\\"outputMaterialParam\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"bomName\":\"v1.0\",\"bomNumber\":\"BOM00000001735\",\"createTime\":1789719259000,\"creator\":63,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"itemCount\":1,\"outputMaterialExtendId\":123,\"outputMaterialId\":703,\"outputMaterialName\":\"1PH WS79\",\"outputNumber\":1.000000,\"productMaterialExtendId\":123,\"productMaterialId\":703,\"version\":\"v1.0\"}]}}'); +INSERT INTO `tbl_log` VALUES (8578, 63, '接口日志', '43.174.55.40/1.9.116.218', '2026-09-30 06:39:35', 0, 'MsgController.getMsgByStatus(..)', NULL, 'GET /apis/msg/getMsgByStatus', '{\"status\":\"1\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (8579, 63, '接口日志', '43.152.142.29/1.9.116.218', '2026-09-30 06:39:55', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8580, 63, '接口日志', '43.152.142.105/1.9.116.218', '2026-09-30 06:39:55', 0, 'ProductionOrderController.getList(..)', NULL, 'GET /apis/productionOrder/list', '{\"search\":\"{\\\"orderNumber\\\":\\\"\\\",\\\"sourceNumber\\\":\\\"\\\",\\\"productMaterialParam\\\":\\\"\\\",\\\"beginTime\\\":\\\"\\\",\\\"endTime\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"auditBy\":63,\"auditByName\":\"admin\",\"auditTime\":1789719775000,\"bomId\":18,\"bomName\":\"v1.0\",\"createTime\":1789719619000,\"creator\":63,\"creatorName\":\"admin\",\"deleteFlag\":\"0\",\"finishedQuantity\":0.000000,\"id\":11,\"orderNumber\":\"GD20260918122018493\",\"orderQuantity\":10000.000000,\"outputMaterialExtendId\":123,\"outputMaterialId\":703,\"outputMaterialName\":\"1PH WS79\",\"outputQuantity\":10000.000000,\"planEndDate\":1790280000000,\"planStartDate\":1789675200000,\"priority\":\"0\",\"productMaterialExtendId\":123,\"productMaterialId\":703,\"releaseBy\":63,\"releaseTime\":1789719775000,\"remark\":\"\",\"sourceId\":1719,\"sourceNumber\":\"XSDD00000001726\",\"sourceType\":\"销售订单\",\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (8581, 63, '接口日志', '43.152.142.112/1.9.116.218', '2026-09-30 06:39:57', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8582, 63, '接口日志', '43.174.32.23/1.9.116.218', '2026-09-30 06:39:57', 0, 'ProductionRequisitionController.getList(..)', NULL, 'GET /apis/productionRequisition/list', '{\"search\":\"{\\\"requisitionNumber\\\":\\\"\\\",\\\"orderNumber\\\":\\\"\\\",\\\"beginTime\\\":\\\"\\\",\\\"endTime\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"confirmBy\":63,\"confirmByName\":\"admin\",\"confirmTime\":1790242827000,\"createTime\":1789720317000,\"creator\":63,\"creatorName\":\"admin\",\"deleteFlag\":\"0\",\"depotId\":25,\"depotName\":\"半成品仓库\",\"id\":9,\"itemCount\":1,\"materialsList\":\"MD-4G111(VF) 包装\",\"orderId\":11,\"orderNumber\":\"GD20260918122018493\",\"requisitionNumber\":\"LL20260918123156921\",\"status\":\"1\"},{\"createTime\":1789719809000,\"creator\":63,\"creatorName\":\"admin\",\"deleteFlag\":\"0\",\"depotId\":25,\"depotName\":\"半成品仓库\",\"id\":8,\"itemCount\":1,\"materialsList\":\"MD-4G111(VF) 包装\",\"orderId\":11,\"orderNumber\":\"GD20260918122018493\",\"remark\":\"11\",\"requisitionNumber\":\"LL20260918122329111\",\"status\":\"2\"}]}}'); +INSERT INTO `tbl_log` VALUES (8583, 63, '接口日志', '43.152.142.78/1.9.116.218', '2026-09-30 06:39:57', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8584, 63, '接口日志', '43.174.53.30/1.9.116.218', '2026-09-30 06:40:03', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8585, 63, '接口日志', '43.152.142.41/1.9.116.218', '2026-09-30 06:40:03', 0, 'ProductionReportController.getList(..)', NULL, 'GET /apis/productionReport/list', '{\"search\":\"{\\\"reportNumber\\\":\\\"\\\",\\\"orderNumber\\\":\\\"\\\",\\\"beginTime\\\":\\\"\\\",\\\"endTime\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (8586, 63, '接口日志', '43.152.142.141/1.9.116.218', '2026-09-30 06:40:06', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8587, 63, '接口日志', '43.174.54.44/1.9.116.218', '2026-09-30 06:40:06', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (8588, 63, '接口日志', '43.152.142.57/1.9.116.218', '2026-09-30 06:40:06', 0, 'DepotItemController.findDetailByDepotIdsAndMaterialId(..)', NULL, 'GET /apis/depotItem/findDetailByDepotIdsAndMaterialId', '{\"pageSize\":10,\"currentPage\":1,\"depotIds\":\"\",\"number\":\"\",\"beginTime\":\"\",\"endTime\":\"\",\"stockPriceFlag\":false}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (8589, 63, '接口日志', '43.174.32.34/1.9.116.218', '2026-09-30 06:40:06', 0, 'DepotItemController.findDetailByDepotIdsAndMaterialId(..)', NULL, 'GET /apis/depotItem/findDetailByDepotIdsAndMaterialId', '{\"pageSize\":10,\"currentPage\":1,\"depotIds\":\"\",\"number\":\"\",\"beginTime\":\"\",\"endTime\":\"\",\"stockPriceFlag\":true}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (8590, 63, '接口日志', '43.152.142.133/1.9.116.218', '2026-09-30 06:40:06', 0, 'MaterialController.getListWithStock(..)', NULL, 'GET /apis/material/getListWithStock', '{\"currentPage\":1,\"pageSize\":10,\"position\":\"\",\"materialParam\":\"\",\"zeroStock\":0,\"column\":\"createTime\",\"order\":\"desc\"}', '{\"code\":200,\"data\":{\"currentStockPrice\":107372523.170000000000,\"moveAvgPriceFlag\":false,\"total\":22,\"showStockPrice\":true,\"currentWeight\":0E-12,\"currentStock\":519203.000000,\"rows\":[{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"成品\",\"color\":\"\",\"currentStock\":7223.000000,\"currentStockMovePrice\":2293302.500000000000,\"currentStockPrice\":2293302.500000000000,\"currentUnitPrice\":317.500000,\"currentWeight\":0E-12,\"id\":704,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"3PH-APEC3-WC\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"3PH APEC3-WC\",\"name\":\"3PH APEC3-WC\",\"position\":\"\",\"purchaseDecimal\":317.500000,\"standard\":\"3PH APEC3-WC\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"成品\",\"color\":\"\",\"currentStock\":52400.000000,\"currentStockMovePrice\":3117800.000000000000,\"currentStockPrice\":3117800.000000000000,\"currentUnitPrice\":59.500000,\"currentWeight\":0E-12,\"id\":703,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"1PH-WS79\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"1PH WS79\",\"name\":\"1PH WS79\",\"position\":\"\",\"purchaseDecimal\":59.500000,\"standard\":\"1PH WS79\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":1000.000000,\"currentStockMovePrice\":24300.000000000000,\"currentStockPrice\":24300.000000000000,\"currentUnitPrice\":24.300000,\"currentWeight\":0E-12,\"id\":702,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00722\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-RS178(VA)\",\"name\":\"MD-RS178(VA) RS485分线器\",\"position\":\"\",\"purchaseDecimal\":24.300000,\"standard\":\"MD-RS178(VA)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":100.000000,\"currentStockMovePrice\":14256.000000000000,\"currentStockPrice\":14256.000000000000,\"currentUnitPrice\":142.560000,\"currentWeight\":0E-12,\"id\":701,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.0068900002\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-RS114(VB)\",\"name\":\"MD-RS114(VB) 基于RS485的MODBS TCPMODBS RTUASVII转换模块_(DZG)\",\"position\":\"\",\"purchaseDecimal\":142.560000,\"standard\":\"MD-RS114(VB)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":50.000000,\"currentStockMovePrice\":6642.000000000000,\"currentStockPrice\":6642.000000000000,\"currentUnitPrice\":132.840000,\"currentWeight\":0E-12,\"id\":700,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00686\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"TC160(VA)\",\"name\":\"TC160(VA) 通讯模块供电盒\",\"position\":\"\",\"purchaseDecimal\":132.840000,\"standard\":\"TC160(VA)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":76970.000000,\"currentStockMovePrice\":7697.000000000000,\"currentStockPrice\":7697.000000000000,\"currentUnitPrice\":0.100000,\"currentWeight\":0E-12,\"id\":699,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00654\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-4G111(VF)\",\"name\":\"MD-4G111(VF) 4G模块\",\"position\":\"\",\"purchaseDecimal\":0.100000,\"standard\":\"MD-4G111(VF)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":50.000000,\"currentStockMovePrice\":16200.000000000000,\"currentStockPrice\":16200.000000000000,\"currentUnitPrice\":324.000000,\"currentWeight\":0E-12,\"id\":698,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00562\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-4GVIII(VB)\",\"name\":\"MD-4GVIII(VB)\",\"position\":\"\",\"purchaseDecimal\":324.000000,\"standard\":\"MD-4GVIII(VB)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":500.000000,\"currentStockMovePrice\":64800.000000000000,\"currentStockPrice\":64800.000000000000,\"currentUnitPrice\":129.600000,\"currentWeight\":0E-12,\"id\":697,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00553\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MT-P109(VA)\",\"name\":\"MT-P109(VA)\",\"position\":\"\",\"purchaseDecimal\":129.600000,\"standard\":\"MT-P109(VA)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":54656.000000,\"currentStockMovePrice\":5465.600000000000,\"currentStockPrice\":5465.600000000000,\"currentUnitPrice\":0.100000,\"currentWeight\":0E-12,\"id\":696,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00547\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MT-3NSXL(VC)\",\"name\":\"MT-3NSXL(VC)RF通讯模块\",\"position\":\"\",\"purchaseDecimal\":0.100000,\"standard\":\"MT-3NSXL(VC)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":100.000000,\"currentStockMovePrice\":100375.200000000000,\"currentStockPrice\":100375.200000000000,\"currentUnitPrice\":1003.752000,\"currentWeight\":0E-12,\"id\":695,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00422\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-LR63(VB)\",\"name\":\"MD-LR63(VB)\",\"position\":\"\",\"purchaseDecimal\":1003.752000,\"standard\":\"MD-LR63(VB)\",\"unitName\":\"件\"}]}}'); +INSERT INTO `tbl_log` VALUES (8591, 63, '接口日志', '43.152.142.32/1.9.116.218', '2026-09-30 06:40:11', 0, 'DepotItemController.findDetailByDepotIdsAndMaterialId(..)', NULL, 'GET /apis/depotItem/findDetailByDepotIdsAndMaterialId', '{\"pageSize\":10,\"currentPage\":1,\"depotIds\":\"\",\"number\":\"\",\"beginTime\":\"\",\"endTime\":\"\",\"stockPriceFlag\":false,\"mId\":695}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"unitPrice\":1003.752000,\"number\":\"SM2505230003\",\"materialName\":\"MD-LR63(VB)\",\"depotName\":\"半成品仓库\",\"allPrice\":100375.200000000000,\"basicNumber\":100.000000,\"type\":\"总部入库入库\",\"barCode\":\"C.4.T.0.00422\",\"operTime\":\"2025-05-23 00:00:00\"}],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (8592, 63, '接口日志', '43.152.142.128/1.9.116.218', '2026-09-30 06:40:22', 0, 'ProductionRequisitionController.getDetail(..)', NULL, 'GET /apis/productionRequisition/getDetail', '{\"id\":8}', '{\"code\":200,\"data\":{\"requisition\":{\"createTime\":1789719809000,\"creator\":63,\"deleteFlag\":\"0\",\"depotId\":25,\"id\":8,\"orderId\":11,\"orderNumber\":\"GD20260918122018493\",\"remark\":\"11\",\"requisitionNumber\":\"LL20260918122329111\",\"status\":\"2\"},\"rows\":[{\"deleteFlag\":\"0\",\"requisitionId\":8,\"materialExtendId\":125,\"unit\":\"件\",\"requiredQuantity\":10000.000000,\"depotId\":25,\"issuedQuantity\":10000.000000,\"name\":\"MD-4G111(VF) 包装\",\"id\":25,\"materialId\":705,\"materialSku\":\"\",\"barCode\":\"1001\"}]}}'); +INSERT INTO `tbl_log` VALUES (8593, 63, '接口日志', '43.174.32.18/1.9.116.218', '2026-09-30 06:40:24', 0, 'ProductionRequisitionController.getDetail(..)', NULL, 'GET /apis/productionRequisition/getDetail', '{\"id\":9}', '{\"code\":200,\"data\":{\"requisition\":{\"confirmBy\":63,\"confirmTime\":1790242827000,\"createTime\":1789720317000,\"creator\":63,\"deleteFlag\":\"0\",\"depotId\":25,\"id\":9,\"orderId\":11,\"orderNumber\":\"GD20260918122018493\",\"requisitionNumber\":\"LL20260918123156921\",\"status\":\"1\"},\"rows\":[{\"deleteFlag\":\"0\",\"requisitionId\":9,\"materialExtendId\":125,\"unit\":\"件\",\"requiredQuantity\":10000.000000,\"depotId\":25,\"issuedQuantity\":10000.000000,\"name\":\"MD-4G111(VF) 包装\",\"id\":26,\"materialId\":705,\"materialSku\":\"\",\"barCode\":\"1001\"}]}}'); +INSERT INTO `tbl_log` VALUES (8594, 63, '接口日志', '43.152.142.84/1.9.116.218', '2026-09-30 06:40:33', 0, 'ProductionOrderController.getList(..)', NULL, 'GET /apis/productionOrder/list', '{\"search\":\"{\\\"status\\\":\\\"1\\\"}\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"auditBy\":63,\"auditByName\":\"admin\",\"auditTime\":1789719775000,\"bomId\":18,\"bomName\":\"v1.0\",\"createTime\":1789719619000,\"creator\":63,\"creatorName\":\"admin\",\"deleteFlag\":\"0\",\"finishedQuantity\":0.000000,\"id\":11,\"orderNumber\":\"GD20260918122018493\",\"orderQuantity\":10000.000000,\"outputMaterialExtendId\":123,\"outputMaterialId\":703,\"outputMaterialName\":\"1PH WS79\",\"outputQuantity\":10000.000000,\"planEndDate\":1790280000000,\"planStartDate\":1789675200000,\"priority\":\"0\",\"productMaterialExtendId\":123,\"productMaterialId\":703,\"releaseBy\":63,\"releaseTime\":1789719775000,\"remark\":\"\",\"sourceId\":1719,\"sourceNumber\":\"XSDD00000001726\",\"sourceType\":\"销售订单\",\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (8595, 63, '接口日志', '43.152.142.34/1.9.116.218', '2026-09-30 06:40:33', 0, 'ProductionOrderController.getList(..)', NULL, 'GET /apis/productionOrder/list', '{\"search\":\"{\\\"status\\\":\\\"2\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (8596, 63, '接口日志', '43.152.156.79/1.9.116.218', '2026-09-30 06:40:44', 0, 'SupplierController.findBySelectSup(..)', NULL, 'POST /apis/supplier/findBySelect_sup', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司\",\"id\":89}]'); +INSERT INTO `tbl_log` VALUES (8597, 63, '接口日志', '43.174.55.40/1.9.116.218', '2026-09-30 06:40:44', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (8598, 63, '接口日志', '43.174.54.14/1.9.116.218', '2026-09-30 06:40:44', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"}]'); +INSERT INTO `tbl_log` VALUES (8599, 63, '接口日志', '43.174.52.31/1.9.116.218', '2026-09-30 06:40:44', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8600, 63, '接口日志', '43.152.142.64/1.9.116.218', '2026-09-30 06:40:44', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8601, 63, '接口日志', '43.174.53.11/1.9.116.218', '2026-09-30 06:40:44', 0, 'DepotHeadController.waitBillCount(..)', NULL, 'GET /apis/depotHead/waitBillCount', '{\"search\":\"{\\\"type\\\":\\\"入库\\\",\\\"subType\\\":\\\"采购,销售退货\\\",\\\"status\\\":\\\"1,3\\\"}\"}', '{\"code\":200,\"data\":{\"total\":47,\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (8602, 63, '接口日志', '43.174.53.17/1.9.116.218', '2026-09-30 06:40:44', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"入库\\\",\\\"subType\\\":\\\"其它\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-30\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"createTimeRange\\\":[\\\"2026-06-29T16:00:00.000Z\\\",\\\"2026-09-29T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (8603, 63, '接口日志', '43.152.156.79/1.9.116.218', '2026-09-30 06:41:11', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (8604, 63, '接口日志', '43.152.142.112/1.9.116.218', '2026-09-30 06:41:11', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8605, 63, '接口日志', '43.152.142.105/1.9.116.218', '2026-09-30 06:41:11', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"出库\\\",\\\"subType\\\":\\\"其它\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-30\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"createTimeRange\\\":[\\\"2026-06-29T16:00:00.000Z\\\",\\\"2026-09-29T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (8606, 63, '接口日志', '43.152.142.109/1.9.116.218', '2026-09-30 06:41:11', 0, 'DepotHeadController.waitBillCount(..)', NULL, 'GET /apis/depotHead/waitBillCount', '{\"search\":\"{\\\"type\\\":\\\"出库\\\",\\\"subType\\\":\\\"销售,采购退货\\\",\\\"status\\\":\\\"1,3\\\"}\"}', '{\"code\":200,\"data\":{\"total\":167,\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (8607, 63, '接口日志', '43.152.142.29/1.9.116.218', '2026-09-30 06:41:11', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (8608, 63, '接口日志', '43.174.32.12/1.9.116.218', '2026-09-30 06:41:11', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8609, 63, '接口日志', '43.174.32.23/1.9.116.218', '2026-09-30 06:41:11', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"}]'); +INSERT INTO `tbl_log` VALUES (8610, 63, '接口日志', '43.152.142.84/1.9.116.218', '2026-09-30 06:41:31', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8611, 63, '接口日志', '43.174.32.23/1.9.116.218', '2026-09-30 06:41:31', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"}]'); +INSERT INTO `tbl_log` VALUES (8612, 63, '接口日志', '43.152.156.79/1.9.116.218', '2026-09-30 06:41:31', 0, 'SupplierController.findBySelectSup(..)', NULL, 'POST /apis/supplier/findBySelect_sup', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司\",\"id\":89}]'); +INSERT INTO `tbl_log` VALUES (8613, 63, '接口日志', '43.152.142.109/1.9.116.218', '2026-09-30 06:41:31', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (8614, 63, '接口日志', '43.152.142.41/1.9.116.218', '2026-09-30 06:41:31', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8615, 63, '接口日志', '43.174.32.34/1.9.116.218', '2026-09-30 06:41:31', 0, 'DepotHeadController.waitBillCount(..)', NULL, 'GET /apis/depotHead/waitBillCount', '{\"search\":\"{\\\"type\\\":\\\"入库\\\",\\\"subType\\\":\\\"采购,销售退货\\\",\\\"status\\\":\\\"1,3\\\"}\"}', '{\"code\":200,\"data\":{\"total\":47,\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (8616, 63, '接口日志', '43.152.142.57/1.9.116.218', '2026-09-30 06:41:31', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"入库\\\",\\\"subType\\\":\\\"总部入库\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-30\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"createTimeRange\\\":[\\\"2026-06-29T16:00:00.000Z\\\",\\\"2026-09-29T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":41,\"rows\":[{\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789718802000,\"creator\":63,\"debt\":595000.000000,\"defaultNumber\":\"SM2609180001\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discountLastMoney\":595000.000000,\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1721,\"lastDebt\":595000.000000,\"materialCount\":10000.000000,\"materialsList\":\"1PH WS79\",\"number\":\"SM2609180001\",\"operTime\":1789733163000,\"operTimeStr\":\"2026-09-18 16:06:03\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"totalPrice\":595000.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1786046400000,\"creator\":63,\"debt\":183.600000,\"defaultNumber\":\"SM2608070007\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":183.600000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1423,\"lastDebt\":183.600000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":1836.000000,\"materialsList\":\"MT-3NSXL(VC)\",\"number\":\"SM2608070007\",\"operTime\":1786046400000,\"operTimeStr\":\"2026-08-07 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":183.600000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1786046400000,\"creator\":63,\"debt\":2077650.000000,\"defaultNumber\":\"SM2608070002\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":2077650.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1422,\"lastDebt\":2077650.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":9500.000000,\"materialsList\":\"DDSD1226-T49(VB)\",\"number\":\"SM2608070002\",\"operTime\":1786046400000,\"operTimeStr\":\"2026-08-07 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":2077650.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1785960000000,\"creator\":63,\"debt\":91854.000000,\"defaultNumber\":\"SM2608060005\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":91854.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1421,\"lastDebt\":91854.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":420.000000,\"materialsList\":\"DDSD1226-T49(VB)\",\"number\":\"SM2608060005\",\"operTime\":1785960000000,\"operTimeStr\":\"2026-08-06 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":91854.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1785960000000,\"creator\":63,\"debt\":816.000000,\"defaultNumber\":\"SM2608060004\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":816.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1420,\"lastDebt\":816.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":8160.000000,\"materialsList\":\"MT-3NSXL(VC)\",\"number\":\"SM2608060004\",\"operTime\":1785960000000,\"operTimeStr\":\"2026-08-06 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":816.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1784836800000,\"creator\":63,\"debt\":91854.000000,\"defaultNumber\":\"SM2607240005\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":91854.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1419,\"lastDebt\":91854.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":420.000000,\"materialsList\":\"DDSD1226-T49(VB)\",\"number\":\"SM2607240005\",\"operTime\":1784836800000,\"operTimeStr\":\"2026-07-24 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":91854.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1784750400000,\"creator\":63,\"debt\":551124.000000,\"defaultNumber\":\"SM2607230004\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":551124.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1418,\"lastDebt\":551124.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":2520.000000,\"materialsList\":\"DDSD1226-T49(VB)\",\"number\":\"SM2607230004\",\"operTime\":1784750400000,\"operTimeStr\":\"2026-07-23 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":551124.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1784750400000,\"creator\":63,\"debt\":1285956.000000,\"defaultNumber\":\"SM2607230002\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":1285956.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1417,\"lastDebt\":1285956.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":5880.000000,\"materialsList\":\"DDSD1226-T49(VB)\",\"number\":\"SM2607230002\",\"operTime\":1784750400000,\"operTimeStr\":\"2026-07-23 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":1285956.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1784664000000,\"creator\":63,\"debt\":1020.000000,\"defaultNumber\":\"SM2607220006\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":1020.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1416,\"lastDebt\":1020.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":10200.000000,\"materialsList\":\"MT-3NSXL(VC)\",\"number\":\"SM2607220006\",\"operTime\":1784664000000,\"operTimeStr\":\"2026-07-22 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":1020.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1784664000000,\"creator\":63,\"debt\":275562.000000,\"defaultNumber\":\"SM2607220004\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":275562.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1415,\"lastDebt\":275562.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":1260.000000,\"materialsList\":\"DDSD1226-T49(VB)\",\"number\":\"SM2607220004\",\"operTime\":1784664000000,\"operTimeStr\":\"2026-07-22 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":275562.000000,\"type\":\"入库\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (8617, 63, '接口日志', '43.152.142.64/1.9.116.218', '2026-09-30 06:41:38', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"入库\\\",\\\"subType\\\":\\\"总部入库\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-30\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"createTimeRange\\\":[\\\"2026-06-29T16:00:00.000Z\\\",\\\"2026-09-29T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":41,\"rows\":[{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1784491200000,\"creator\":63,\"debt\":291600.000000,\"defaultNumber\":\"SM2607200002\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":291600.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1414,\"lastDebt\":291600.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":600.000000,\"materialsList\":\"DTSD1226-T46(VC)\",\"number\":\"SM2607200002\",\"operTime\":1784491200000,\"operTimeStr\":\"2026-07-20 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":291600.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1784318400000,\"creator\":63,\"debt\":102060.000000,\"defaultNumber\":\"SM2607180014\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":102060.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1413,\"lastDebt\":102060.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":210.000000,\"materialsList\":\"DTSD1226-T46(VC)\",\"number\":\"SM2607180014\",\"operTime\":1784318400000,\"operTimeStr\":\"2026-07-18 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":102060.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1784318400000,\"creator\":63,\"debt\":1020600.000000,\"defaultNumber\":\"SM2607180013\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":1020600.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1412,\"lastDebt\":1020600.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":2100.000000,\"materialsList\":\"DTSD1226-T46(VC)\",\"number\":\"SM2607180013\",\"operTime\":1784318400000,\"operTimeStr\":\"2026-07-18 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":1020600.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1784318400000,\"creator\":63,\"debt\":102060.000000,\"defaultNumber\":\"SM2607180010\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":102060.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1411,\"lastDebt\":102060.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":210.000000,\"materialsList\":\"DTSD1226-T46(VC)\",\"number\":\"SM2607180010\",\"operTime\":1784318400000,\"operTimeStr\":\"2026-07-18 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":102060.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1784318400000,\"creator\":63,\"debt\":102060.000000,\"defaultNumber\":\"SM2607180009\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":102060.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1410,\"lastDebt\":102060.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":210.000000,\"materialsList\":\"DTSD1226-T46(VC)\",\"number\":\"SM2607180009\",\"operTime\":1784318400000,\"operTimeStr\":\"2026-07-18 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":102060.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1784318400000,\"creator\":63,\"debt\":510300.000000,\"defaultNumber\":\"SM2607180007\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":510300.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1409,\"lastDebt\":510300.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":1050.000000,\"materialsList\":\"DTSD1226-T46(VC)\",\"number\":\"SM2607180007\",\"operTime\":1784318400000,\"operTimeStr\":\"2026-07-18 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":510300.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1784232000000,\"creator\":63,\"debt\":161935.200000,\"defaultNumber\":\"SM2607170005\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":161935.200000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1408,\"lastDebt\":161935.200000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":336.000000,\"materialsList\":\"DTSD1226-CXVI(VA)\",\"number\":\"SM2607170005\",\"operTime\":1784232000000,\"operTimeStr\":\"2026-07-17 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":161935.200000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1784145600000,\"creator\":63,\"debt\":385.200000,\"defaultNumber\":\"SM2607160006\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":385.200000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1407,\"lastDebt\":385.200000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":3852.000000,\"materialsList\":\"MT-3NSXL(VC)\",\"number\":\"SM2607160006\",\"operTime\":1784145600000,\"operTimeStr\":\"2026-07-16 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":385.200000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1784145600000,\"creator\":63,\"debt\":1457416.800000,\"defaultNumber\":\"SM2607160005\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":1457416.800000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1406,\"lastDebt\":1457416.800000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":3024.000000,\"materialsList\":\"DTSD1226-CXVI(VA)\",\"number\":\"SM2607160005\",\"operTime\":1784145600000,\"operTimeStr\":\"2026-07-16 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":1457416.800000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1784059200000,\"creator\":63,\"debt\":408240.000000,\"defaultNumber\":\"SM2607150003\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":408240.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1405,\"lastDebt\":408240.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":840.000000,\"materialsList\":\"DTSD1226-T46(VC)\",\"number\":\"SM2607150003\",\"operTime\":1784059200000,\"operTimeStr\":\"2026-07-15 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":408240.000000,\"type\":\"入库\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (8618, 63, '接口日志', '43.174.32.18/1.9.116.218', '2026-09-30 06:41:43', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"入库\\\",\\\"subType\\\":\\\"总部入库\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-30\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"createTimeRange\\\":[\\\"2026-06-29T16:00:00.000Z\\\",\\\"2026-09-29T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":41,\"rows\":[{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1783972800000,\"creator\":63,\"debt\":510.000000,\"defaultNumber\":\"SM2607140013\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":510.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1404,\"lastDebt\":510.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":5100.000000,\"materialsList\":\"MT-3NSXL(VC)\",\"number\":\"SM2607140013\",\"operTime\":1783972800000,\"operTimeStr\":\"2026-07-14 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":510.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1783972800000,\"creator\":63,\"debt\":1224720.000000,\"defaultNumber\":\"SM2607140011\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":1224720.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1403,\"lastDebt\":1224720.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":2520.000000,\"materialsList\":\"DTSD1226-T46(VC)\",\"number\":\"SM2607140011\",\"operTime\":1783972800000,\"operTimeStr\":\"2026-07-14 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":1224720.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1783972800000,\"creator\":63,\"debt\":816480.000000,\"defaultNumber\":\"SM2607140010\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":816480.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1402,\"lastDebt\":816480.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":1680.000000,\"materialsList\":\"DTSD1226-T46(VC)\",\"number\":\"SM2607140010\",\"operTime\":1783972800000,\"operTimeStr\":\"2026-07-14 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":816480.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1783972800000,\"creator\":63,\"debt\":1619352.000000,\"defaultNumber\":\"SM2607140007\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":1619352.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1401,\"lastDebt\":1619352.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":3360.000000,\"materialsList\":\"DTSD1226-CXVI(VA)\",\"number\":\"SM2607140007\",\"operTime\":1783972800000,\"operTimeStr\":\"2026-07-14 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":1619352.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1783886400000,\"creator\":63,\"debt\":306180.000000,\"defaultNumber\":\"SM2607130031\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":306180.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1400,\"lastDebt\":306180.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":630.000000,\"materialsList\":\"DTSD1226-T46(VC)\",\"number\":\"SM2607130031\",\"operTime\":1783886400000,\"operTimeStr\":\"2026-07-13 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":306180.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1783886400000,\"creator\":63,\"debt\":56862.000000,\"defaultNumber\":\"SM2607130030\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":56862.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1399,\"lastDebt\":56862.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":260.000000,\"materialsList\":\"DDSD1226-T49(VB)\",\"number\":\"SM2607130030\",\"operTime\":1783886400000,\"operTimeStr\":\"2026-07-13 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":56862.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1783886400000,\"creator\":63,\"debt\":81.600000,\"defaultNumber\":\"SM2607130011\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":81.600000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1398,\"lastDebt\":81.600000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":816.000000,\"materialsList\":\"MT-3NSXL(VC)\",\"number\":\"SM2607130011\",\"operTime\":1783886400000,\"operTimeStr\":\"2026-07-13 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":81.600000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1783886400000,\"creator\":63,\"debt\":81.600000,\"defaultNumber\":\"SM2607130009\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":81.600000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1397,\"lastDebt\":81.600000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":816.000000,\"materialsList\":\"MT-3NSXL(VC)\",\"number\":\"SM2607130009\",\"operTime\":1783886400000,\"operTimeStr\":\"2026-07-13 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":81.600000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1783886400000,\"creator\":63,\"debt\":265.200000,\"defaultNumber\":\"SM2607130005\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":265.200000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1396,\"lastDebt\":265.200000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":2652.000000,\"materialsList\":\"MT-3NSXL(VC)\",\"number\":\"SM2607130005\",\"operTime\":1783886400000,\"operTimeStr\":\"2026-07-13 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":265.200000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1783886400000,\"creator\":63,\"debt\":408.800000,\"defaultNumber\":\"SM2607130004\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":408.800000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1395,\"lastDebt\":408.800000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":4088.000000,\"materialsList\":\"MT-3NSXL(VC)\",\"number\":\"SM2607130004\",\"operTime\":1783886400000,\"operTimeStr\":\"2026-07-13 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":408.800000,\"type\":\"入库\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (8619, 63, '接口日志', '43.152.142.105/1.9.116.218', '2026-09-30 06:41:50', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"}]'); +INSERT INTO `tbl_log` VALUES (8620, 63, '接口日志', '43.152.156.79/1.9.116.218', '2026-09-30 06:41:50', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (8621, 63, '接口日志', '43.174.32.12/1.9.116.218', '2026-09-30 06:41:50', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (8622, 63, '接口日志', '43.152.156.79/1.9.116.218', '2026-09-30 06:41:50', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (8623, 63, '接口日志', '43.174.54.14/1.9.116.218', '2026-09-30 06:41:50', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (8624, 63, '接口日志', '43.152.142.133/1.9.116.218', '2026-09-30 06:41:50', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8625, 63, '接口日志', '43.152.142.34/1.9.116.218', '2026-09-30 06:41:50', 0, 'CustomerCategoryController.getTreeList(..)', NULL, 'GET /apis/customerCategory/treeList', '{}', '{\"code\":200,\"data\":{\"data\":[],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (8626, 63, '接口日志', '43.152.142.141/1.9.116.218', '2026-09-30 06:41:50', 0, 'PersonController.getPersonByType(..)', NULL, 'GET /apis/person/getPersonByType', '{\"type\":\"财务员\"}', '{\"code\":200,\"data\":{\"personList\":[{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":43,\"name\":\"Juwairiah\",\"type\":\"财务员\"}]}}'); +INSERT INTO `tbl_log` VALUES (8627, 63, '接口日志', '43.174.53.11/1.9.116.218', '2026-09-30 06:41:50', 0, 'AccountHeadController.getList(..)', NULL, 'GET /apis/accountHead/list', '{\"search\":\"{\\\"billNo\\\":\\\"\\\",\\\"searchMaterial\\\":\\\"\\\",\\\"type\\\":\\\"收款\\\",\\\"remark\\\":\\\"\\\",\\\"number\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-30\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"createTimeRange\\\":[\\\"2026-06-29T16:00:00.000Z\\\",\\\"2026-09-29T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":11,\"rows\":[{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2110-25\",\"billTime\":1784836800000,\"billTimeStr\":\"2026-07-24 00:00:00\",\"changeAmount\":1122000.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":105,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2110\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2110-25\",\"sourceTime\":\"2026-06-23 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":1122000.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2108-18\",\"billTime\":1784145600000,\"billTimeStr\":\"2026-07-16 00:00:00\",\"changeAmount\":1122000.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":103,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2108\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2108-18\",\"sourceTime\":\"2026-06-16 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":1122000.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2107-14\",\"billTime\":1783281600000,\"billTimeStr\":\"2026-07-06 00:00:00\",\"changeAmount\":1122000.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":102,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2107\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2107-14\",\"sourceTime\":\"2026-06-06 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":1122000.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2102-11\",\"billTime\":1782763200000,\"billTimeStr\":\"2026-06-30 00:00:00\",\"changeAmount\":1122000.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":101,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2102\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2102-11\",\"sourceTime\":\"2026-05-26 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":1122000.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2129-11\",\"billTime\":1786564800000,\"billTimeStr\":\"2026-08-13 00:00:00\",\"changeAmount\":1122000.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":99,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2129\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2129-11\",\"sourceTime\":\"2026-01-01 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":1122000.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2133-65\",\"billTime\":1786651200000,\"billTimeStr\":\"2026-08-14 00:00:00\",\"changeAmount\":80850.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":98,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2133\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2133-65\",\"sourceTime\":\"2026-07-16 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2131-47\",\"billTime\":1783886400000,\"billTimeStr\":\"2026-07-13 00:00:00\",\"changeAmount\":80850.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":97,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2131\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2131-47\",\"sourceTime\":\"2026-07-13 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2130-44\",\"billTime\":1786046400000,\"billTimeStr\":\"2026-08-07 00:00:00\",\"changeAmount\":242550.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":96,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2130\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2130-44\",\"sourceTime\":\"2026-07-09 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":242550.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2122-26\",\"billTime\":1785441600000,\"billTimeStr\":\"2026-07-31 00:00:00\",\"changeAmount\":161700.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":95,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2122\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2122-26\",\"sourceTime\":\"2026-07-01 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":161700.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2113-15\",\"billTime\":1785182400000,\"billTimeStr\":\"2026-07-28 00:00:00\",\"changeAmount\":161700.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":94,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2113\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2113-15\",\"sourceTime\":\"2026-06-28 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":161700.000000,\"type\":\"收款\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (8628, 63, '接口日志', '43.152.142.78/1.9.116.218', '2026-09-30 06:41:50', 0, 'DepotHeadController.getNeedCount(..)', NULL, 'GET /apis/depotHead/getNeedCount', '{\"type\":\"customer\"}', '{\"code\":200,\"data\":{\"needCount\":1}}'); +INSERT INTO `tbl_log` VALUES (8629, 63, '接口日志', '43.152.156.79/1.9.116.218', '2026-09-30 06:41:51', 0, 'SupplierController.findBySelectSup(..)', NULL, 'POST /apis/supplier/findBySelect_sup', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司\",\"id\":89}]'); +INSERT INTO `tbl_log` VALUES (8630, 63, '接口日志', '43.152.142.112/1.9.116.218', '2026-09-30 06:41:51', 0, 'PersonController.getPersonByType(..)', NULL, 'GET /apis/person/getPersonByType', '{\"type\":\"财务员\"}', '{\"code\":200,\"data\":{\"personList\":[{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":43,\"name\":\"Juwairiah\",\"type\":\"财务员\"}]}}'); +INSERT INTO `tbl_log` VALUES (8631, 63, '接口日志', '43.152.142.29/1.9.116.218', '2026-09-30 06:41:51', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8632, 63, '接口日志', '43.152.142.128/1.9.116.218', '2026-09-30 06:41:51', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (8633, 63, '接口日志', '43.174.54.44/1.9.116.218', '2026-09-30 06:41:51', 0, 'AccountHeadController.getList(..)', NULL, 'GET /apis/accountHead/list', '{\"search\":\"{\\\"billNo\\\":\\\"\\\",\\\"searchMaterial\\\":\\\"\\\",\\\"type\\\":\\\"付款\\\",\\\"remark\\\":\\\"\\\",\\\"number\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-30\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"createTimeRange\\\":[\\\"2026-06-29T16:00:00.000Z\\\",\\\"2026-09-29T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":3,\"rows\":[{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"FK-PV-008186-87-3PH-APEC3-WC-OV-25\",\"billTime\":1786651200000,\"billTimeStr\":\"2026-08-14 00:00:00\",\"changeAmount\":947751.900000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":104,\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"remark\":\"Stock Status供应商付款;PV:PV 008186/87\",\"source\":\"0\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":947751.900000,\"type\":\"付款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"FK-PV-008145-45---ZHEJIANG-METRONIX-3PH-APEC3-WC-O\",\"billTime\":1785700800000,\"billTimeStr\":\"2026-08-03 00:00:00\",\"changeAmount\":954860.058400,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":100,\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"remark\":\"Stock Status供应商付款;PV:PV 008145/45 - ZHEJIANG & METRONIX\",\"source\":\"0\",\"sourceNumber\":\"CGRK-260415-01-11\",\"sourceTime\":\"2026-04-29 00:00:00\",\"sourceType\":\"采购入库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":954860.058400,\"type\":\"付款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"FK-PV-008186-87-1PH-WS79-ADD1-11\",\"billTime\":1786651200000,\"billTimeStr\":\"2026-08-14 00:00:00\",\"changeAmount\":236946.640000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":92,\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"remark\":\"Stock Status供应商付款;PV:PV 008186/87\",\"source\":\"0\",\"sourceNumber\":\"CGRK-260414-01-11\",\"sourceTime\":\"2026-04-29 00:00:00\",\"sourceType\":\"采购入库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":236946.640000,\"type\":\"付款\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (8634, 63, '接口日志', '43.174.52.31/1.9.116.218', '2026-09-30 06:41:51', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (8635, 63, '接口日志', '43.174.53.17/1.9.116.218', '2026-09-30 06:41:51', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"}]'); +INSERT INTO `tbl_log` VALUES (8636, 63, '接口日志', '43.174.55.40/1.9.116.218', '2026-09-30 06:41:51', 0, 'DepotHeadController.getNeedCount(..)', NULL, 'GET /apis/depotHead/getNeedCount', '{\"type\":\"vendor\"}', '{\"code\":200,\"data\":{\"needCount\":1}}'); +INSERT INTO `tbl_log` VALUES (8637, 63, '接口日志', '43.152.156.79/1.9.116.218', '2026-09-30 06:48:10', 0, 'SupplierController.findBySelectSup(..)', NULL, 'POST /apis/supplier/findBySelect_sup', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司\",\"id\":89}]'); +INSERT INTO `tbl_log` VALUES (8638, 63, '接口日志', '43.174.53.30/1.9.116.218', '2026-09-30 06:48:10', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8639, 63, '接口日志', '43.152.142.84/1.9.116.218', '2026-09-30 06:48:10', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (8640, 63, '接口日志', '43.152.142.57/1.9.116.218', '2026-09-30 06:48:10', 0, 'SequenceController.buildNumber(..)', NULL, 'GET /apis/sequence/buildNumber', '{}', '{\"code\":200,\"data\":{\"defaultNumber\":\"00000001748\"}}'); +INSERT INTO `tbl_log` VALUES (8641, 63, '接口日志', '43.152.142.32/1.9.116.218', '2026-09-30 06:48:10', 0, 'PersonController.getPersonByType(..)', NULL, 'GET /apis/person/getPersonByType', '{\"type\":\"财务员\"}', '{\"code\":200,\"data\":{\"personList\":[{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":43,\"name\":\"Juwairiah\",\"type\":\"财务员\"}]}}'); +INSERT INTO `tbl_log` VALUES (8642, 63, '接口日志', '43.152.142.109/1.9.116.218', '2026-09-30 06:48:10', 0, 'SystemConfigController.fileSizeLimit(..)', NULL, 'GET /apis/systemConfig/fileSizeLimit', '{}', '{\"code\":200,\"data\":10485760}'); +INSERT INTO `tbl_log` VALUES (8643, 63, '接口日志', '43.174.32.23/1.9.116.218', '2026-09-30 06:48:10', 0, 'SysDictDataController.dictType(..)', NULL, 'GET /apis/dict/data/type/person_type', '{\"dictType\":\"person_type\"}', '{\"msg\":\"操作成功\",\"code\":0,\"data\":[{\"createBy\":\"admin\",\"createTime\":1789644159000,\"dictCode\":13,\"dictLabel\":\"采购员\",\"dictSort\":3,\"dictType\":\"person_type\",\"dictValue\":\"采购员\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"},{\"createBy\":\"admin\",\"createTime\":1789724265000,\"dictCode\":14,\"dictLabel\":\"CEO\",\"dictSort\":4,\"dictType\":\"person_type\",\"dictValue\":\"CEO\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"},{\"createBy\":\"admin\",\"createTime\":1789724275000,\"dictCode\":15,\"dictLabel\":\"IT\",\"dictSort\":5,\"dictType\":\"person_type\",\"dictValue\":\"IT\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}]}'); +INSERT INTO `tbl_log` VALUES (8644, 63, '接口日志', '43.152.142.105/1.9.116.218', '2026-09-30 06:48:10', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (8645, 63, '接口日志', '43.152.156.79/1.9.116.218', '2026-09-30 06:48:11', 0, 'SupplierController.findBySelectSup(..)', NULL, 'POST /apis/supplier/findBySelect_sup', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司\",\"id\":89}]'); +INSERT INTO `tbl_log` VALUES (8646, 63, '接口日志', '43.174.54.44/1.9.116.218', '2026-09-30 06:48:11', 0, 'DepotHeadController.debtList(..)', NULL, 'GET /apis/depotHead/debtList', '{\"search\":\"{\\\"supplierType\\\":\\\"供应商\\\",\\\"billDirection\\\":\\\"\\\",\\\"hasDebt\\\":\\\"1\\\",\\\"beginTime\\\":\\\"1990-01-01\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"type\\\":\\\"入库\\\",\\\"subType\\\":\\\"采购\\\"}\",\"currentPage\":1,\"pageSize\":10}', '{\"code\":200,\"data\":{\"total\":197,\"rows\":[{\"fileName\":\"\",\"totalPrice\":100000.000000,\"discount\":0.000000,\"discountLastMoney\":100000.000000,\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"入库\",\"operTimeStr\":\"2026-09-18 16:29:02\",\"deleteFlag\":\"0\",\"number\":\"CGRK00000001740\",\"payType\":\"现付\",\"accountIdList\":\"\",\"needDebt\":100000.000000,\"id\":1724,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"operTime\":\"2026-09-18\",\"creator\":63,\"materialsList\":\"MD-4G111(VF) 包装 MD-4G111(VF) packing MD-4G111(VF) \",\"defaultNumber\":\"CGRK00000001740\",\"linkNumber\":\"CGDD00000001739\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"accountId\":17,\"organName\":\"浙江瑞银电子有限公司\",\"lastDebt\":100000.000000,\"otherMoney\":0.000000,\"createTime\":1789720142000,\"deposit\":0,\"organId\":89,\"purchaseStatus\":\"0\",\"subType\":\"采购\",\"debt\":100000.000000,\"status\":\"1\"},{\"totalPrice\":595000.000000,\"discountLastMoney\":595000.000000,\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"入库\",\"operTimeStr\":\"2026-09-18 16:06:03\",\"deleteFlag\":\"0\",\"number\":\"SM2609180001\",\"payType\":\"现付\",\"needDebt\":595000.000000,\"id\":1721,\"finishDebt\":0.000000,\"operTime\":\"2026-09-18\",\"creator\":63,\"materialsList\":\"1PH WS79\",\"defaultNumber\":\"SM2609180001\",\"userName\":\"admin\",\"organName\":\"浙江瑞银电子有限公司\",\"lastDebt\":595000.000000,\"otherMoney\":0.000000,\"createTime\":1789718802000,\"deposit\":0.000000,\"organId\":89,\"purchaseStatus\":\"0\",\"subType\":\"总部入库\",\"debt\":595000.000000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":0.700000,\"discount\":0.000000,\"discountLastMoney\":0.700000,\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"入库\",\"operTimeStr\":\"2026-09-18 11:44:34\",\"deleteFlag\":\"0\",\"number\":\"CGRK00000001721\",\"payType\":\"现付\",\"accountIdList\":\"\",\"needDebt\":0.700000,\"id\":1717,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"operTime\":\"2026-09-18\",\"creator\":63,\"materialsList\":\"MD-4G111(VF) 4G模块 MD-4G111(VF) MD-4G111(VF) \",\"defaultNumber\":\"CGRK00000001721\",\"linkNumber\":\"CGDD00000001720\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"accountId\":17,\"organName\":\"浙江瑞银电子有限公司\",\"lastDebt\":0.700000,\"otherMoney\":0.000000,\"createTime\":1789717476000,\"deposit\":0,\"organId\":89,\"purchaseStatus\":\"0\",\"subType\":\"采购\",\"debt\":0.700000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":2077650.000000,\"discount\":100.000000,\"discountLastMoney\":2077650.000000,\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"入库\",\"operTimeStr\":\"2026-08-07 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"SM2608070002\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":2077650.000000,\"id\":1422,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-08-07\",\"creator\":63,\"materialsList\":\"DDSD1226-T49(VB)\",\"defaultNumber\":\"SM2608070002\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"organName\":\"浙江瑞银电子有限公司\",\"lastDebt\":2077650.000000,\"otherMoney\":0.000000,\"createTime\":1786046400000,\"tenantId\":63,\"deposit\":0.000000,\"organId\":89,\"subType\":\"总部入库\",\"debt\":2077650.000000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":183.600000,\"discount\":100.000000,\"discountLastMoney\":183.600000,\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"入库\",\"operTimeStr\":\"2026-08-07 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"SM2608070007\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":183.600000,\"id\":1423,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-08-07\",\"creator\":63,\"materialsList\":\"MT-3NSXL(VC)\",\"defaultNumber\":\"SM2608070007\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"organName\":\"浙江瑞银电子有限公司\",\"lastDebt\":183.600000,\"otherMoney\":0.000000,\"createTime\":1786046400000,\"tenantId\":63,\"deposit\":0.000000,\"organId\":89,\"subType\":\"总部入库\",\"debt\":183.600000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":91854.000000,\"discount\":100.000000,\"discountLastMoney\":91854.000000,\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"入库\",\"operTimeStr\":\"2026-08-06 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"SM2608060005\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":91854.000000,\"id\":1421,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-08-06\",\"creator\":63,\"materialsList\":\"DDSD1226-T49(VB)\",\"defaultNumber\":\"SM2608060005\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"organName\":\"浙江瑞银电子有限公司\",\"lastDebt\":91854.000000,\"otherMoney\":0.000000,\"createTime\":1785960000000,\"tenantId\":63,\"deposit\":0.000000,\"organId\":89,\"subType\":\"总部入库\",\"debt\":91854.000000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":816.000000,\"discount\":100.000000,\"discountLastMoney\":816.000000,\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"入库\",\"operTimeStr\":\"2026-08-06 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"SM2608060004\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":816.000000,\"id\":1420,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-08-06\",\"creator\":63,\"materialsList\":\"MT-3NSXL(VC)\",\"defaultNumber\":\"SM2608060004\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"organName\":\"浙江瑞银电子有限公司\",\"lastDebt\":816.000000,\"otherMoney\":0.000000,\"createTime\":1785960000000,\"tenantId\":63,\"deposit\":0.000000,\"organId\":89,\"subType\":\"总部入库\",\"debt\":816.000000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":91854.000000,\"discount\":100.000000,\"discountLastMoney\":91854.000000,\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"入库\",\"operTimeStr\":\"2026-07-24 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"SM2607240005\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":91854.000000,\"id\":1419,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-07-24\",\"creator\":63,\"materialsList\":\"DDSD1226-T49(VB)\",\"defaultNumber\":\"SM2607240005\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"organName\":\"浙江瑞银电子有限公司\",\"lastDebt\":91854.000000,\"otherMoney\":0.000000,\"createTime\":1784836800000,\"tenantId\":63,\"deposit\":0.000000,\"organId\":89,\"subType\":\"总部入库\",\"debt\":91854.000000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":551124.000000,\"discount\":100.000000,\"discountLastMoney\":551124.000000,\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"入库\",\"operTimeStr\":\"2026-07-23 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"SM2607230004\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":551124.000000,\"id\":1418,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-07-23\",\"creator\":63,\"materialsList\":\"DDSD1226-T49(VB)\",\"defaultNumber\":\"SM2607230004\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"organName\":\"浙江瑞银电子有限公司\",\"lastDebt\":551124.000000,\"otherMoney\":0.000000,\"createTime\":1784750400000,\"tenantId\":63,\"deposit\":0.000000,\"organId\":89,\"subType\":\"总部入库\",\"debt\":551124.000000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":1285956.000000,\"discount\":100.000000,\"discountLastMoney\":1285956.000000,\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"入库\",\"operTimeStr\":\"2026-07-23 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"SM2607230002\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":1285956.000000,\"id\":1417,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-07-23\",\"creator\":63,\"materialsList\":\"DDSD1226-T49(VB)\",\"defaultNumber\":\"SM2607230002\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"organName\":\"浙江瑞银电子有限公司\",\"lastDebt\":1285956.000000,\"otherMoney\":0.000000,\"createTime\":1784750400000,\"tenantId\":63,\"deposit\":0.000000,\"organId\":89,\"subType\":\"总部入库\",\"debt\":1285956.000000,\"status\":\"1\"}],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (8647, 63, '接口日志', '43.174.32.13/1.9.116.218', '2026-09-30 07:20:59', 0, 'SupplierController.findBySelectSup(..)', NULL, 'POST /apis/supplier/findBySelect_sup', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司\",\"id\":89}]'); +INSERT INTO `tbl_log` VALUES (8648, 63, '接口日志', '43.174.53.30/1.9.116.218', '2026-09-30 07:20:59', 0, 'DepotHeadController.debtList(..)', NULL, 'GET /apis/depotHead/debtList', '{\"search\":\"{\\\"supplierType\\\":\\\"供应商\\\",\\\"billDirection\\\":\\\"\\\",\\\"hasDebt\\\":\\\"1\\\",\\\"beginTime\\\":\\\"1990-01-01\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"type\\\":\\\"入库\\\",\\\"subType\\\":\\\"采购\\\"}\",\"currentPage\":1,\"pageSize\":10}', '{\"code\":200,\"data\":{\"total\":197,\"rows\":[{\"fileName\":\"\",\"totalPrice\":100000.000000,\"discount\":0.000000,\"discountLastMoney\":100000.000000,\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"入库\",\"operTimeStr\":\"2026-09-18 16:29:02\",\"deleteFlag\":\"0\",\"number\":\"CGRK00000001740\",\"payType\":\"现付\",\"accountIdList\":\"\",\"needDebt\":100000.000000,\"id\":1724,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"operTime\":\"2026-09-18\",\"creator\":63,\"materialsList\":\"MD-4G111(VF) 包装 MD-4G111(VF) packing MD-4G111(VF) \",\"defaultNumber\":\"CGRK00000001740\",\"linkNumber\":\"CGDD00000001739\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"accountId\":17,\"organName\":\"浙江瑞银电子有限公司\",\"lastDebt\":100000.000000,\"otherMoney\":0.000000,\"createTime\":1789720142000,\"deposit\":0,\"organId\":89,\"purchaseStatus\":\"0\",\"subType\":\"采购\",\"debt\":100000.000000,\"status\":\"1\"},{\"totalPrice\":595000.000000,\"discountLastMoney\":595000.000000,\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"入库\",\"operTimeStr\":\"2026-09-18 16:06:03\",\"deleteFlag\":\"0\",\"number\":\"SM2609180001\",\"payType\":\"现付\",\"needDebt\":595000.000000,\"id\":1721,\"finishDebt\":0.000000,\"operTime\":\"2026-09-18\",\"creator\":63,\"materialsList\":\"1PH WS79\",\"defaultNumber\":\"SM2609180001\",\"userName\":\"admin\",\"organName\":\"浙江瑞银电子有限公司\",\"lastDebt\":595000.000000,\"otherMoney\":0.000000,\"createTime\":1789718802000,\"deposit\":0.000000,\"organId\":89,\"purchaseStatus\":\"0\",\"subType\":\"总部入库\",\"debt\":595000.000000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":0.700000,\"discount\":0.000000,\"discountLastMoney\":0.700000,\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"入库\",\"operTimeStr\":\"2026-09-18 11:44:34\",\"deleteFlag\":\"0\",\"number\":\"CGRK00000001721\",\"payType\":\"现付\",\"accountIdList\":\"\",\"needDebt\":0.700000,\"id\":1717,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"operTime\":\"2026-09-18\",\"creator\":63,\"materialsList\":\"MD-4G111(VF) 4G模块 MD-4G111(VF) MD-4G111(VF) \",\"defaultNumber\":\"CGRK00000001721\",\"linkNumber\":\"CGDD00000001720\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"accountId\":17,\"organName\":\"浙江瑞银电子有限公司\",\"lastDebt\":0.700000,\"otherMoney\":0.000000,\"createTime\":1789717476000,\"deposit\":0,\"organId\":89,\"purchaseStatus\":\"0\",\"subType\":\"采购\",\"debt\":0.700000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":2077650.000000,\"discount\":100.000000,\"discountLastMoney\":2077650.000000,\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"入库\",\"operTimeStr\":\"2026-08-07 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"SM2608070002\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":2077650.000000,\"id\":1422,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-08-07\",\"creator\":63,\"materialsList\":\"DDSD1226-T49(VB)\",\"defaultNumber\":\"SM2608070002\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"organName\":\"浙江瑞银电子有限公司\",\"lastDebt\":2077650.000000,\"otherMoney\":0.000000,\"createTime\":1786046400000,\"tenantId\":63,\"deposit\":0.000000,\"organId\":89,\"subType\":\"总部入库\",\"debt\":2077650.000000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":183.600000,\"discount\":100.000000,\"discountLastMoney\":183.600000,\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"入库\",\"operTimeStr\":\"2026-08-07 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"SM2608070007\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":183.600000,\"id\":1423,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-08-07\",\"creator\":63,\"materialsList\":\"MT-3NSXL(VC)\",\"defaultNumber\":\"SM2608070007\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"organName\":\"浙江瑞银电子有限公司\",\"lastDebt\":183.600000,\"otherMoney\":0.000000,\"createTime\":1786046400000,\"tenantId\":63,\"deposit\":0.000000,\"organId\":89,\"subType\":\"总部入库\",\"debt\":183.600000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":91854.000000,\"discount\":100.000000,\"discountLastMoney\":91854.000000,\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"入库\",\"operTimeStr\":\"2026-08-06 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"SM2608060005\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":91854.000000,\"id\":1421,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-08-06\",\"creator\":63,\"materialsList\":\"DDSD1226-T49(VB)\",\"defaultNumber\":\"SM2608060005\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"organName\":\"浙江瑞银电子有限公司\",\"lastDebt\":91854.000000,\"otherMoney\":0.000000,\"createTime\":1785960000000,\"tenantId\":63,\"deposit\":0.000000,\"organId\":89,\"subType\":\"总部入库\",\"debt\":91854.000000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":816.000000,\"discount\":100.000000,\"discountLastMoney\":816.000000,\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"入库\",\"operTimeStr\":\"2026-08-06 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"SM2608060004\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":816.000000,\"id\":1420,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-08-06\",\"creator\":63,\"materialsList\":\"MT-3NSXL(VC)\",\"defaultNumber\":\"SM2608060004\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"organName\":\"浙江瑞银电子有限公司\",\"lastDebt\":816.000000,\"otherMoney\":0.000000,\"createTime\":1785960000000,\"tenantId\":63,\"deposit\":0.000000,\"organId\":89,\"subType\":\"总部入库\",\"debt\":816.000000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":91854.000000,\"discount\":100.000000,\"discountLastMoney\":91854.000000,\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"入库\",\"operTimeStr\":\"2026-07-24 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"SM2607240005\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":91854.000000,\"id\":1419,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-07-24\",\"creator\":63,\"materialsList\":\"DDSD1226-T49(VB)\",\"defaultNumber\":\"SM2607240005\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"organName\":\"浙江瑞银电子有限公司\",\"lastDebt\":91854.000000,\"otherMoney\":0.000000,\"createTime\":1784836800000,\"tenantId\":63,\"deposit\":0.000000,\"organId\":89,\"subType\":\"总部入库\",\"debt\":91854.000000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":551124.000000,\"discount\":100.000000,\"discountLastMoney\":551124.000000,\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"入库\",\"operTimeStr\":\"2026-07-23 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"SM2607230004\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":551124.000000,\"id\":1418,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-07-23\",\"creator\":63,\"materialsList\":\"DDSD1226-T49(VB)\",\"defaultNumber\":\"SM2607230004\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"organName\":\"浙江瑞银电子有限公司\",\"lastDebt\":551124.000000,\"otherMoney\":0.000000,\"createTime\":1784750400000,\"tenantId\":63,\"deposit\":0.000000,\"organId\":89,\"subType\":\"总部入库\",\"debt\":551124.000000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":1285956.000000,\"discount\":100.000000,\"discountLastMoney\":1285956.000000,\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"入库\",\"operTimeStr\":\"2026-07-23 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"SM2607230002\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":1285956.000000,\"id\":1417,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-07-23\",\"creator\":63,\"materialsList\":\"DDSD1226-T49(VB)\",\"defaultNumber\":\"SM2607230002\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"organName\":\"浙江瑞银电子有限公司\",\"lastDebt\":1285956.000000,\"otherMoney\":0.000000,\"createTime\":1784750400000,\"tenantId\":63,\"deposit\":0.000000,\"organId\":89,\"subType\":\"总部入库\",\"debt\":1285956.000000,\"status\":\"1\"}],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (8649, 63, '接口日志', '43.174.52.68/1.9.116.218', '2026-09-30 07:21:04', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-04\",\"inbound\":100669.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (8650, NULL, '接口日志', '43.152.142.29/1.9.116.218', '2026-09-30 07:21:11', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (8651, NULL, '接口日志', '43.152.142.43/1.9.116.218', '2026-09-30 07:21:11', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (8652, 63, '接口日志', '43.152.157.121/1.9.116.218', '2026-09-30 07:21:12', 0, 'FunctionController.findMenuByPNumber(..)', NULL, 'POST /apis/function/findMenuByPNumber', '{\"jsonObject\":{\"userId\":63,\"pNumber\":0}}', '[{\"component\":\"/layouts/TabLayout\",\"icon\":\"home\",\"id\":0,\"text\":\"首页\",\"url\":\"/dashboard/analysis\",\"textEn\":\"Home\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/SaleOrderList\",\"icon\":\"profile\",\"id\":242,\"text\":\"销售订单\",\"url\":\"/bill/sale_order\",\"textEn\":\"Sales Orders\"},{\"component\":\"/bill/SaleOutList\",\"icon\":\"profile\",\"id\":41,\"text\":\"销售出库\",\"url\":\"/bill/sale_out\",\"textEn\":\"Sales Shipments\"},{\"component\":\"/bill/DeliveryPlanList\",\"icon\":\"profile\",\"id\":271,\"text\":\"交货计划管理\",\"url\":\"/bill/delivery_plan\",\"textEn\":\"Delivery Plans\"},{\"component\":\"/bill/SaleShipmentList\",\"icon\":\"car\",\"id\":268,\"text\":\"发货管理\",\"url\":\"/bill/sale_shipment\",\"textEn\":\"Shipment Management\"},{\"component\":\"/bill/SaleBackList\",\"icon\":\"profile\",\"id\":200,\"text\":\"销售退货\",\"url\":\"/bill/sale_back\",\"textEn\":\"Sales Returns\"},{\"component\":\"/bill/RetailOutList\",\"icon\":\"profile\",\"id\":210,\"text\":\"零售出库\",\"url\":\"/bill/retail_out\",\"textEn\":\"Retail Shipments\"},{\"component\":\"/bill/RetailBackList\",\"icon\":\"profile\",\"id\":211,\"text\":\"零售退货\",\"url\":\"/bill/retail_back\",\"textEn\":\"Retail Returns\"}],\"icon\":\"shopping-cart\",\"id\":38,\"text\":\"销售管理\",\"url\":\"/billB\",\"textEn\":\"Sales Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/PurchaseApplyList\",\"icon\":\"profile\",\"id\":261,\"text\":\"请购单\",\"url\":\"/bill/purchase_apply\",\"textEn\":\"Purchase Requisitions\"},{\"component\":\"/bill/PurchaseOrderList\",\"icon\":\"profile\",\"id\":241,\"text\":\"采购订单\",\"url\":\"/bill/purchase_order\",\"textEn\":\"Purchase Orders\"},{\"component\":\"/bill/PurchaseInList\",\"icon\":\"profile\",\"id\":33,\"text\":\"采购入库\",\"url\":\"/bill/purchase_in\",\"textEn\":\"Purchase Receipts\"},{\"component\":\"/bill/PurchaseBackList\",\"icon\":\"profile\",\"id\":199,\"text\":\"采购退货\",\"url\":\"/bill/purchase_back\",\"textEn\":\"Purchase Returns\"}],\"icon\":\"retweet\",\"id\":32,\"text\":\"采购管理\",\"url\":\"/bill\",\"textEn\":\"Purchase Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/production/PackBomList\",\"icon\":\"profile\",\"id\":263,\"text\":\"生产方案\",\"url\":\"/production/pack_bom\",\"textEn\":\"Production BOMs\"},{\"component\":\"/production/OrderList\",\"icon\":\"profile\",\"id\":264,\"text\":\"生产工单\",\"url\":\"/production/order\",\"textEn\":\"Production Orders\"},{\"component\":\"/production/RequisitionList\",\"icon\":\"profile\",\"id\":265,\"text\":\"领料管理\",\"url\":\"/production/requisition\",\"textEn\":\"Material Requisitions\"},{\"component\":\"/production/ReportList\",\"icon\":\"profile\",\"id\":266,\"text\":\"完工报工\",\"url\":\"/production/report\",\"textEn\":\"Production Reports\"}],\"icon\":\"cluster\",\"id\":262,\"text\":\"生产管理\",\"url\":\"/production\",\"textEn\":\"Production Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/MaterialStock\",\"icon\":\"profile\",\"id\":246,\"text\":\"商品库存\",\"url\":\"/report/material_stock\",\"textEn\":\"Product Inventory\"},{\"component\":\"/bill/OtherInList\",\"icon\":\"profile\",\"id\":201,\"text\":\"其它入库\",\"url\":\"/bill/other_in\",\"textEn\":\"Other Receipts\"},{\"component\":\"/bill/OtherOutList\",\"icon\":\"profile\",\"id\":202,\"text\":\"其它出库\",\"url\":\"/bill/other_out\",\"textEn\":\"Other Shipments\"},{\"component\":\"/bill/HeadquartersInList\",\"icon\":\"profile\",\"id\":270,\"text\":\"总部入库\",\"url\":\"/bill/headquarters_in\",\"textEn\":\"Headquarters Receipts\"}],\"icon\":\"hdd\",\"id\":239,\"text\":\"仓库管理\",\"url\":\"/billD\",\"textEn\":\"Warehouse Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/financial/MoneyInList\",\"icon\":\"profile\",\"id\":204,\"text\":\"收款单\",\"url\":\"/financial/money_in\",\"textEn\":\"Receipt Vouchers\"},{\"component\":\"/financial/MoneyOutList\",\"icon\":\"profile\",\"id\":205,\"text\":\"付款单\",\"url\":\"/financial/money_out\",\"textEn\":\"Payment Vouchers\"}],\"icon\":\"money-collect\",\"id\":44,\"text\":\"财务管理\",\"url\":\"/financial\",\"textEn\":\"Finance Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/asset/AssetDashboard\",\"icon\":\"dashboard\",\"id\":276,\"text\":\"资产汇总\",\"url\":\"/asset\",\"textEn\":\"Asset Overview\"},{\"component\":\"/asset/AssetList\",\"icon\":\"profile\",\"id\":273,\"text\":\"资产台账\",\"url\":\"/asset/ledger\",\"textEn\":\"Asset Ledger\"},{\"component\":\"/asset/DeviceList\",\"icon\":\"tool\",\"id\":274,\"text\":\"设备台账\",\"url\":\"/asset/device\",\"textEn\":\"Device Ledger\"},{\"component\":\"/asset/InventoryList\",\"icon\":\"scan\",\"id\":275,\"text\":\"资产盘点\",\"url\":\"/asset/inventory\",\"textEn\":\"Asset Inventory\"}],\"icon\":\"bank\",\"id\":272,\"text\":\"资产管理\",\"url\":\"/assetManagement\",\"textEn\":\"Asset Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/material/MaterialCategoryList\",\"icon\":\"profile\",\"id\":22,\"text\":\"商品类别\",\"url\":\"/material/material_category\",\"textEn\":\"Product Categories\"},{\"component\":\"/material/MaterialList\",\"icon\":\"profile\",\"id\":23,\"text\":\"商品信息\",\"url\":\"/material/material\",\"textEn\":\"Product Information\"},{\"component\":\"/system/UnitList\",\"icon\":\"profile\",\"id\":220,\"text\":\"多单位\",\"url\":\"/system/unit\",\"textEn\":\"Multiple Units\"},{\"component\":\"/material/MaterialAttributeList\",\"icon\":\"profile\",\"id\":247,\"text\":\"多属性\",\"url\":\"/material/material_attribute\",\"textEn\":\"Product Attributes\"}],\"icon\":\"shopping\",\"id\":21,\"text\":\"商品管理\",\"url\":\"/material\",\"textEn\":\"Product Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/AccountReport\",\"icon\":\"profile\",\"id\":207,\"text\":\"账户统计\",\"url\":\"/report/account_report\",\"textEn\":\"Account Summary\"},{\"component\":\"/report/RetailOutReport\",\"icon\":\"profile\",\"id\":259,\"text\":\"零售统计\",\"url\":\"/report/retail_out_report\",\"textEn\":\"Retail Summary\"},{\"component\":\"/report/BuyInReport\",\"icon\":\"profile\",\"id\":208,\"text\":\"采购统计\",\"url\":\"/report/buy_in_report\",\"textEn\":\"Purchase Summary\"},{\"component\":\"/report/SaleOutReport\",\"icon\":\"profile\",\"id\":209,\"text\":\"销售统计\",\"url\":\"/report/sale_out_report\",\"textEn\":\"Sales Summary\"},{\"component\":\"/report/InDetail\",\"icon\":\"profile\",\"id\":226,\"text\":\"入库明细\",\"url\":\"/report/in_detail\",\"textEn\":\"Inbound Details\"},{\"component\":\"/report/OutDetail\",\"icon\":\"profile\",\"id\":227,\"text\":\"出库明细\",\"url\":\"/report/out_detail\",\"textEn\":\"Outbound Details\"},{\"component\":\"/report/InMaterialCount\",\"icon\":\"profile\",\"id\":228,\"text\":\"入库汇总\",\"url\":\"/report/in_material_count\",\"textEn\":\"Inbound Summary\"},{\"component\":\"/report/OutMaterialCount\",\"icon\":\"profile\",\"id\":229,\"text\":\"出库汇总\",\"url\":\"/report/out_material_count\",\"textEn\":\"Outbound Summary\"},{\"component\":\"/report/InOutStockReport\",\"icon\":\"profile\",\"id\":59,\"text\":\"进销存统计\",\"url\":\"/report/in_out_stock_report\",\"textEn\":\"Inventory Transaction Summary\"},{\"component\":\"/report/CustomerAccount\",\"icon\":\"profile\",\"id\":235,\"text\":\"客户对账\",\"url\":\"/report/customer_account\",\"textEn\":\"Customer Reconciliation\"},{\"component\":\"/report/VendorAccount\",\"icon\":\"profile\",\"id\":237,\"text\":\"供应商对账\",\"url\":\"/report/vendor_account\",\"textEn\":\"Supplier Reconciliation\"},{\"component\":\"/report/StockWarningReport\",\"icon\":\"profile\",\"id\":244,\"text\":\"库存预警\",\"url\":\"/report/stock_warning_report\",\"textEn\":\"Stock Alerts\"}],\"icon\":\"pie-chart\",\"id\":198,\"text\":\"报表查询\",\"url\":\"/report\",\"textEn\":\"Reports\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/VendorList\",\"icon\":\"profile\",\"id\":25,\"text\":\"供应商信息\",\"url\":\"/system/vendor\",\"textEn\":\"Suppliers\"},{\"component\":\"/system/CustomerList\",\"icon\":\"profile\",\"id\":217,\"text\":\"客户信息\",\"url\":\"/system/customer\",\"textEn\":\"Customers\"},{\"component\":\"/system/MemberList\",\"icon\":\"profile\",\"id\":218,\"text\":\"会员信息\",\"url\":\"/system/member\",\"textEn\":\"Members\"},{\"component\":\"/system/CustomerCategoryList\",\"icon\":\"bars\",\"id\":267,\"text\":\"客户分类\",\"url\":\"/system/customerCategory\",\"textEn\":\"Customer Categories\"},{\"component\":\"/system/DepotList\",\"icon\":\"profile\",\"id\":26,\"text\":\"仓库信息\",\"url\":\"/system/depot\",\"textEn\":\"Warehouses\"},{\"component\":\"/system/InOutItemList\",\"icon\":\"profile\",\"id\":194,\"text\":\"收支项目\",\"url\":\"/system/in_out_item\",\"textEn\":\"Income and Expense Items\"},{\"component\":\"/system/AccountList\",\"icon\":\"profile\",\"id\":195,\"text\":\"结算账户\",\"url\":\"/system/account\",\"textEn\":\"Settlement Accounts\"},{\"component\":\"/system/PersonList\",\"icon\":\"profile\",\"id\":31,\"text\":\"操作人员管理\",\"url\":\"/system/person\",\"textEn\":\"Operators\"}],\"icon\":\"appstore\",\"id\":24,\"text\":\"基础资料\",\"url\":\"/systemA\",\"textEn\":\"Master Data\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/RoleList\",\"icon\":\"profile\",\"id\":13,\"text\":\"角色管理\",\"url\":\"/system/role\",\"textEn\":\"Role Management\"},{\"component\":\"/system/UserList\",\"icon\":\"profile\",\"id\":14,\"text\":\"用户管理\",\"url\":\"/system/user\",\"textEn\":\"User Management\"},{\"component\":\"/system/OrganizationList\",\"icon\":\"profile\",\"id\":243,\"text\":\"部门管理\",\"url\":\"/system/organization\",\"textEn\":\"Department Management\"},{\"component\":\"/system/LogList\",\"icon\":\"profile\",\"id\":15,\"text\":\"日志管理\",\"url\":\"/system/log\",\"textEn\":\"Log Management\"},{\"component\":\"/material/MaterialPropertyList\",\"icon\":\"profile\",\"id\":236,\"text\":\"商品属性\",\"url\":\"/material/material_property\",\"textEn\":\"Product Properties\"},{\"component\":\"/system/SystemConfigList\",\"icon\":\"profile\",\"id\":234,\"text\":\"系统配置\",\"url\":\"/system/system_config\",\"textEn\":\"System Configuration\"},{\"component\":\"/system/FunctionList\",\"icon\":\"profile\",\"id\":16,\"text\":\"菜单管理\",\"url\":\"/system/function\",\"textEn\":\"Resource Menus\"},{\"component\":\"/system/PluginList\",\"icon\":\"profile\",\"id\":245,\"text\":\"插件管理\",\"url\":\"/system/plugin\",\"textEn\":\"Plugin Management\"},{\"component\":\"/system/DictList\",\"icon\":\"profile\",\"id\":260,\"text\":\"字典管理\",\"url\":\"/system/dict\",\"textEn\":\"Dictionary Management\"},{\"component\":\"/system/PlatformConfigList\",\"icon\":\"profile\",\"id\":258,\"text\":\"平台配置\",\"url\":\"/system/platform_config\",\"textEn\":\"Platform Configuration\"}],\"icon\":\"setting\",\"id\":1,\"text\":\"系统管理\",\"url\":\"/system\",\"textEn\":\"System Management\"}]'); +INSERT INTO `tbl_log` VALUES (8653, 63, '接口日志', '43.174.53.30/1.9.116.218', '2026-09-30 07:21:12', 0, 'UserController.getUserBtnByCurrentUser(..)', NULL, 'GET /apis/user/getUserBtnByCurrentUser', '{}', '{\"code\":200,\"data\":{\"userBtn\":[{\"btnStr\":\"8,1\",\"url\":\"/system/role\"},{\"btnStr\":\"1\",\"url\":\"/system/user\"},{\"btnStr\":\"1\",\"url\":\"/system/organization\"},{\"btnStr\":\"1\",\"url\":\"/material/material_property\"},{\"btnStr\":\"1\",\"url\":\"/system/system_config\"},{\"btnStr\":\"1\",\"url\":\"/system/function\"},{\"btnStr\":\"1\",\"url\":\"/system/plugin\"},{\"btnStr\":\"1\",\"url\":\"/material/material_category\"},{\"btnStr\":\"1,3\",\"url\":\"/material/material\"},{\"btnStr\":\"1\",\"url\":\"/system/unit\"},{\"btnStr\":\"1\",\"url\":\"/material/material_attribute\"},{\"btnStr\":\"1,3\",\"url\":\"/system/vendor\"},{\"btnStr\":\"1,3\",\"url\":\"/system/customer\"},{\"btnStr\":\"1,3\",\"url\":\"/system/member\"},{\"btnStr\":\"1\",\"url\":\"/system/depot\"},{\"btnStr\":\"1\",\"url\":\"/system/in_out_item\"},{\"btnStr\":\"1\",\"url\":\"/system/account\"},{\"btnStr\":\"1\",\"url\":\"/system/person\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_apply\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_out\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/delivery_plan\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/sale_shipment\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_out\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/order\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/requisition\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/report\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/giro\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/advance_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/allocation_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/assemble\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/headquarters_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/disassemble\"}]}}'); +INSERT INTO `tbl_log` VALUES (8654, 63, '接口日志', '43.152.142.32/1.9.116.218', '2026-09-30 07:21:12', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-04\",\"inbound\":100669.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (8655, 63, '接口日志', '43.152.142.112/1.9.116.218', '2026-09-30 07:21:12', 0, 'MsgController.getList(..)', NULL, 'GET /apis/msg/list', '{\"search\":\"{\\\"name\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (8656, 63, '接口日志', '43.174.32.18/1.9.116.218', '2026-09-30 07:21:12', 0, 'MsgController.getMsgByStatus(..)', NULL, 'GET /apis/msg/getMsgByStatus', '{\"status\":\"1\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (8657, 63, '接口日志', '43.152.142.40/1.9.116.218', '2026-09-30 07:21:18', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-04\",\"inbound\":100669.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (8658, 63, '接口日志', '43.152.142.57/1.9.116.218', '2026-09-30 07:21:18', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-04\",\"inbound\":100669.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (8659, 63, '接口日志', '43.174.32.34/1.9.116.218', '2026-09-30 07:21:19', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-04\",\"inbound\":100669.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (8660, 63, '接口日志', '43.152.157.121/1.9.116.218', '2026-09-30 07:22:11', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (8661, 63, '接口日志', '43.152.157.121/1.9.116.218', '2026-09-30 07:22:11', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (8662, 63, '接口日志', '43.174.32.13/1.9.116.218', '2026-09-30 07:22:11', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (8663, 63, '接口日志', '43.174.53.14/1.9.116.218', '2026-09-30 07:22:11', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8664, 63, '接口日志', '43.152.142.132/1.9.116.218', '2026-09-30 07:22:11', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (8665, 63, '接口日志', '43.152.142.105/1.9.116.218', '2026-09-30 07:22:11', 0, 'PersonController.getPersonByType(..)', NULL, 'GET /apis/person/getPersonByType', '{\"type\":\"财务员\"}', '{\"code\":200,\"data\":{\"personList\":[{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":43,\"name\":\"Juwairiah\",\"type\":\"财务员\"}]}}'); +INSERT INTO `tbl_log` VALUES (8666, 63, '接口日志', '43.152.142.64/1.9.116.218', '2026-09-30 07:22:11', 0, 'AccountHeadController.getList(..)', NULL, 'GET /apis/accountHead/list', '{\"search\":\"{\\\"billNo\\\":\\\"\\\",\\\"searchMaterial\\\":\\\"\\\",\\\"type\\\":\\\"收款\\\",\\\"remark\\\":\\\"\\\",\\\"number\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-30\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"createTimeRange\\\":[\\\"2026-06-29T16:00:00.000Z\\\",\\\"2026-09-29T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":11,\"rows\":[{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2110-25\",\"billTime\":1784836800000,\"billTimeStr\":\"2026-07-24 00:00:00\",\"changeAmount\":1122000.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":105,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2110\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2110-25\",\"sourceTime\":\"2026-06-23 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":1122000.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2108-18\",\"billTime\":1784145600000,\"billTimeStr\":\"2026-07-16 00:00:00\",\"changeAmount\":1122000.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":103,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2108\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2108-18\",\"sourceTime\":\"2026-06-16 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":1122000.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2107-14\",\"billTime\":1783281600000,\"billTimeStr\":\"2026-07-06 00:00:00\",\"changeAmount\":1122000.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":102,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2107\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2107-14\",\"sourceTime\":\"2026-06-06 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":1122000.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2102-11\",\"billTime\":1782763200000,\"billTimeStr\":\"2026-06-30 00:00:00\",\"changeAmount\":1122000.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":101,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2102\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2102-11\",\"sourceTime\":\"2026-05-26 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":1122000.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2129-11\",\"billTime\":1786564800000,\"billTimeStr\":\"2026-08-13 00:00:00\",\"changeAmount\":1122000.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":99,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2129\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2129-11\",\"sourceTime\":\"2026-01-01 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":1122000.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2133-65\",\"billTime\":1786651200000,\"billTimeStr\":\"2026-08-14 00:00:00\",\"changeAmount\":80850.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":98,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2133\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2133-65\",\"sourceTime\":\"2026-07-16 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2131-47\",\"billTime\":1783886400000,\"billTimeStr\":\"2026-07-13 00:00:00\",\"changeAmount\":80850.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":97,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2131\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2131-47\",\"sourceTime\":\"2026-07-13 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2130-44\",\"billTime\":1786046400000,\"billTimeStr\":\"2026-08-07 00:00:00\",\"changeAmount\":242550.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":96,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2130\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2130-44\",\"sourceTime\":\"2026-07-09 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":242550.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2122-26\",\"billTime\":1785441600000,\"billTimeStr\":\"2026-07-31 00:00:00\",\"changeAmount\":161700.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":95,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2122\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2122-26\",\"sourceTime\":\"2026-07-01 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":161700.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2113-15\",\"billTime\":1785182400000,\"billTimeStr\":\"2026-07-28 00:00:00\",\"changeAmount\":161700.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":94,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2113\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2113-15\",\"sourceTime\":\"2026-06-28 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":161700.000000,\"type\":\"收款\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (8667, 63, '接口日志', '43.174.54.50/1.9.116.218', '2026-09-30 07:22:11', 0, 'CustomerCategoryController.getTreeList(..)', NULL, 'GET /apis/customerCategory/treeList', '{}', '{\"code\":200,\"data\":{\"data\":[],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (8668, 63, '接口日志', '43.152.142.139/1.9.116.218', '2026-09-30 07:22:11', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"}]'); +INSERT INTO `tbl_log` VALUES (8669, 63, '接口日志', '43.152.142.43/1.9.116.218', '2026-09-30 07:22:11', 0, 'DepotHeadController.getNeedCount(..)', NULL, 'GET /apis/depotHead/getNeedCount', '{\"type\":\"customer\"}', '{\"code\":200,\"data\":{\"needCount\":1}}'); +INSERT INTO `tbl_log` VALUES (8670, 63, '接口日志', '43.152.157.121/1.9.116.218', '2026-09-30 07:22:30', 0, 'SupplierController.findBySelectSup(..)', NULL, 'POST /apis/supplier/findBySelect_sup', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司\",\"id\":89}]'); +INSERT INTO `tbl_log` VALUES (8671, 63, '接口日志', '43.152.142.105/1.9.116.218', '2026-09-30 07:22:30', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8672, 63, '接口日志', '43.174.32.34/1.9.116.218', '2026-09-30 07:22:30', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"}]'); +INSERT INTO `tbl_log` VALUES (8673, 63, '接口日志', '43.152.142.78/1.9.116.218', '2026-09-30 07:22:30', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (8674, 63, '接口日志', '43.152.142.112/1.9.116.218', '2026-09-30 07:22:30', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (8675, 63, '接口日志', '43.174.32.23/1.9.116.218', '2026-09-30 07:22:30', 0, 'PersonController.getPersonByType(..)', NULL, 'GET /apis/person/getPersonByType', '{\"type\":\"财务员\"}', '{\"code\":200,\"data\":{\"personList\":[{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":43,\"name\":\"Juwairiah\",\"type\":\"财务员\"}]}}'); +INSERT INTO `tbl_log` VALUES (8676, 63, '接口日志', '43.152.142.109/1.9.116.218', '2026-09-30 07:22:30', 0, 'AccountHeadController.getList(..)', NULL, 'GET /apis/accountHead/list', '{\"search\":\"{\\\"billNo\\\":\\\"\\\",\\\"searchMaterial\\\":\\\"\\\",\\\"type\\\":\\\"付款\\\",\\\"remark\\\":\\\"\\\",\\\"number\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-30\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"createTimeRange\\\":[\\\"2026-06-29T16:00:00.000Z\\\",\\\"2026-09-29T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":3,\"rows\":[{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"FK-PV-008186-87-3PH-APEC3-WC-OV-25\",\"billTime\":1786651200000,\"billTimeStr\":\"2026-08-14 00:00:00\",\"changeAmount\":947751.900000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":104,\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"remark\":\"Stock Status供应商付款;PV:PV 008186/87\",\"source\":\"0\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":947751.900000,\"type\":\"付款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"FK-PV-008145-45---ZHEJIANG-METRONIX-3PH-APEC3-WC-O\",\"billTime\":1785700800000,\"billTimeStr\":\"2026-08-03 00:00:00\",\"changeAmount\":954860.058400,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":100,\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"remark\":\"Stock Status供应商付款;PV:PV 008145/45 - ZHEJIANG & METRONIX\",\"source\":\"0\",\"sourceNumber\":\"CGRK-260415-01-11\",\"sourceTime\":\"2026-04-29 00:00:00\",\"sourceType\":\"采购入库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":954860.058400,\"type\":\"付款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"FK-PV-008186-87-1PH-WS79-ADD1-11\",\"billTime\":1786651200000,\"billTimeStr\":\"2026-08-14 00:00:00\",\"changeAmount\":236946.640000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":92,\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"remark\":\"Stock Status供应商付款;PV:PV 008186/87\",\"source\":\"0\",\"sourceNumber\":\"CGRK-260414-01-11\",\"sourceTime\":\"2026-04-29 00:00:00\",\"sourceType\":\"采购入库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":236946.640000,\"type\":\"付款\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (8677, 63, '接口日志', '43.152.142.139/1.9.116.218', '2026-09-30 07:22:31', 0, 'DepotHeadController.getNeedCount(..)', NULL, 'GET /apis/depotHead/getNeedCount', '{\"type\":\"vendor\"}', '{\"code\":200,\"data\":{\"needCount\":1}}'); +INSERT INTO `tbl_log` VALUES (8678, 63, '接口日志', '43.152.142.132/1.9.116.218', '2026-09-30 07:22:35', 0, 'AssetController.dashboard()', NULL, 'GET /apis/asset/dashboard', '{}', '{\"code\":200,\"data\":{\"summary\":{\"activeCount\":259,\"deviceCount\":10,\"assetQuantity\":289.000000,\"assetCount\":255,\"assetValue\":17260.000000,\"openInventoryCount\":2,\"managedCount\":265},\"statusDistribution\":[{\"code\":\"IN_USE\",\"value\":259},{\"code\":\"REPAIR\",\"value\":3},{\"code\":\"SCRAPPED\",\"value\":3}],\"departmentDistribution\":[{\"name\":\"Production\",\"value\":56},{\"name\":\"未指定\",\"value\":54},{\"name\":\"Laboratory\",\"value\":48},{\"name\":\"Technical & Technologies\",\"value\":29},{\"name\":\"Engineering\",\"value\":18},{\"name\":\"Not Specified\",\"value\":11},{\"name\":\"Human Resources\",\"value\":6},{\"name\":\"Quality\",\"value\":6}],\"deviceCategoryDistribution\":[{\"name\":\"检测设备\",\"value\":2},{\"name\":\"贴装设备\",\"value\":2},{\"name\":\"动力设备\",\"value\":1},{\"name\":\"印刷设备\",\"value\":1},{\"name\":\"工装设备\",\"value\":1},{\"name\":\"服务器\",\"value\":1},{\"name\":\"焊接设备\",\"value\":1},{\"name\":\"物流设备\",\"value\":1}],\"message\":\"成功\",\"categoryDistribution\":[{\"code\":\"HARDWARE\",\"name\":\"硬件资产\",\"value\":198.00},{\"code\":\"SOFTWARE\",\"name\":\"软件资产\",\"value\":67.00},{\"code\":\"SIM_CARD\",\"name\":\"SIM卡\",\"value\":24.00}],\"recentInventories\":[{\"inventoryNo\":\"PD20260921190840893\",\"inventoryUserName\":\"admin\",\"planName\":\"2026年09月资产设备专项盘点\",\"id\":6,\"totalCount\":1,\"inventoriedCount\":1,\"status\":\"CLOSED\",\"updatedAt\":\"2026-09-21 19:17:28\"},{\"inventoryNo\":\"PD20260921170623856\",\"inventoryUserName\":\"张三\",\"planName\":\"2026年09月资产设备专项盘点\",\"id\":4,\"totalCount\":8,\"inventoriedCount\":8,\"status\":\"CLOSED\",\"updatedAt\":\"2026-09-21 19:16:33\"},{\"inventoryNo\":\"PD20260921190800418\",\"inventoryUserName\":\"张三\",\"planName\":\"2026年09月资产设备专项盘点\",\"id\":5,\"totalCount\":2,\"inventoriedCount\":0,\"status\":\"ACCEPTED\",\"updatedAt\":\"2026-09-21 19:08:13\"},{\"inventoryNo\":\"PD20260918131230171\",\"inventoryUserName\":\"张伟\",\"planName\":\"2026年09月资产设备专项盘点\",\"id\":1,\"totalCount\":3,\"inventoriedCount\":1,\"status\":\"IN_PROGRESS\",\"updatedAt\":\"2026-09-21 14:35:59\"}],\"updatedAt\":\"2026-09-30\"}}'); +INSERT INTO `tbl_log` VALUES (8679, 63, '接口日志', '43.174.53.14/1.9.116.218', '2026-09-30 07:22:45', 0, 'AssetInventoryController.operatorOptions()', NULL, 'GET /apis/assetInventory/operatorOptions', '{}', '{\"code\":200,\"data\":{\"rows\":[{\"loginName\":\"admin\",\"name\":\"admin\",\"id\":63}],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (8680, 63, '接口日志', '43.174.52.68/1.9.116.218', '2026-09-30 07:22:45', 0, 'AssetInventoryController.list(..)', NULL, 'GET /apis/assetInventory/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":4,\"rows\":[{\"abnormalCount\":0,\"auditTime\":1790003845000,\"auditUserId\":149,\"completedAt\":1790003836000,\"createTime\":1790003320000,\"creator\":149,\"deadline\":1790258400000,\"deleteFlag\":\"0\",\"id\":6,\"inventoriedCount\":1,\"inventoryNo\":\"PD20260921190840893\",\"inventoryUserId\":63,\"inventoryUserName\":\"admin\",\"normalCount\":1,\"planName\":\"2026年09月资产设备专项盘点\",\"plannedAt\":1790053200000,\"scopeType\":\"DEVICE\",\"source\":\"MANUAL\",\"startedAt\":1790003819000,\"status\":\"CLOSED\",\"totalCount\":1,\"updateTime\":1790003848000,\"updater\":149},{\"abnormalCount\":0,\"createTime\":1790003280000,\"creator\":149,\"deadline\":1790258400000,\"deleteFlag\":\"0\",\"id\":5,\"inventoriedCount\":0,\"inventoryNo\":\"PD20260921190800418\",\"inventoryUserId\":149,\"inventoryUserName\":\"张三\",\"normalCount\":0,\"planName\":\"2026年09月资产设备专项盘点\",\"plannedAt\":1790053200000,\"remark\":\"进行盘点\",\"scopeType\":\"ALL\",\"source\":\"MANUAL\",\"status\":\"ACCEPTED\",\"totalCount\":2,\"updateTime\":1790003293000,\"updater\":149},{\"abnormalCount\":0,\"completedAt\":1790002875000,\"createTime\":1789995983000,\"creator\":63,\"deadline\":1790258400000,\"deleteFlag\":\"0\",\"id\":4,\"inventoriedCount\":8,\"inventoryNo\":\"PD20260921170623856\",\"inventoryUserId\":149,\"inventoryUserName\":\"张三\",\"normalCount\":0,\"planName\":\"2026年09月资产设备专项盘点\",\"plannedAt\":1790053200000,\"remark\":\"进行盘点\",\"scopeType\":\"ASSET\",\"source\":\"MANUAL\",\"startedAt\":1790002559000,\"status\":\"CLOSED\",\"totalCount\":8,\"updateTime\":1790003793000,\"updater\":149},{\"abnormalCount\":0,\"createTime\":1789722750000,\"creator\":63,\"deadline\":1789999200000,\"deleteFlag\":\"0\",\"id\":1,\"inventoriedCount\":1,\"inventoryNo\":\"PD20260918131230171\",\"inventoryUserId\":36,\"inventoryUserName\":\"张伟\",\"normalCount\":0,\"planName\":\"2026年09月资产设备专项盘点\",\"plannedAt\":1789794000000,\"remark\":\"进行盘点\",\"scopeType\":\"DEVICE\",\"source\":\"MANUAL\",\"startedAt\":1789723142000,\"status\":\"IN_PROGRESS\",\"totalCount\":3,\"updateTime\":1789986959000,\"updater\":63}]}}'); +INSERT INTO `tbl_log` VALUES (8681, 63, '接口日志', '43.174.54.50/1.9.116.218', '2026-09-30 07:22:50', 0, 'AssetController.categoryOptions()', NULL, 'GET /apis/asset/category/options', '{}', '{\"code\":200,\"data\":{\"rows\":[{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"尚未归入具体种类的资产\",\"updateTime\":1790613193000,\"categoryCode\":\"UNCATEGORIZED\",\"id\":4,\"sort\":10,\"categoryName\":\"未分类\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System 硬件台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"HARDWARE\",\"id\":5,\"sort\":20,\"categoryName\":\"硬件资产\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System 软件台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"SOFTWARE\",\"id\":6,\"sort\":30,\"categoryName\":\"软件资产\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System SIM 卡台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"SIM_CARD\",\"id\":7,\"sort\":40,\"categoryName\":\"SIM卡\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_01BF8DA563A0\",\"id\":11,\"sort\":100,\"categoryName\":\"生产设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_7129859760C3\",\"id\":12,\"sort\":100,\"categoryName\":\"检测设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_9F38069B30A1\",\"id\":13,\"sort\":100,\"categoryName\":\"动力设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_75F489029B11\",\"id\":14,\"sort\":100,\"categoryName\":\"IT设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_3DDFE01CA0B8\",\"id\":15,\"sort\":100,\"categoryName\":\"物流设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_B5D44F2B039A\",\"id\":16,\"sort\":100,\"categoryName\":\"工装设备\",\"enabled\":true}],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (8682, 63, '接口日志', '43.174.53.17/1.9.116.218', '2026-09-30 07:22:50', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":255,\"rows\":[{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019200694297052\",\"assetName\":\"SIM卡 896019200694297052\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"6\",\"externalSource\":\"SIM\",\"id\":270,\"keeper\":\"UITM Dungun\",\"location\":\"SMT (???)\",\"originalValue\":0.000000,\"quantity\":1.000000,\"source\":\"SAS\",\"specification\":\"183.171.146.98\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019190221500578\",\"assetName\":\"SIM卡 896019190221500578\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"5\",\"externalSource\":\"SIM\",\"id\":269,\"keeper\":\"SMT\",\"location\":\"UITM Dungun\",\"originalValue\":0.000000,\"purchaseDate\":1608062400000,\"quantity\":1.000000,\"remark\":\"启用日期: 2020-12-16\",\"source\":\"SAS\",\"specification\":\"183.171.14.125\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019190221500576\",\"assetName\":\"SIM卡 896019190221500576\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"1\",\"externalSource\":\"SIM\",\"id\":268,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1608062400000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2020-12-16\",\"source\":\"SAS\",\"specification\":\"183.171.144.65\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607778\",\"assetName\":\"SIM卡 896019210381607778\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"2\",\"externalSource\":\"SIM\",\"id\":267,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1711051200000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2024-03-22\",\"source\":\"SAS\",\"specification\":\"183.171.15.60\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607781\",\"assetName\":\"SIM卡 896019210381607781\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"9\",\"externalSource\":\"SIM\",\"id\":266,\"keeper\":\"SMT\",\"location\":\"SMT (RnD) Modem RnD\",\"originalValue\":0.000000,\"purchaseDate\":1711051200000,\"quantity\":1.000000,\"remark\":\"设备序列号: 21070014;电表序列号: 320910015;启用日期: 2024-03-22\",\"source\":\"SAS\",\"specification\":\"183.171.5.142 / KM08-LTE Modem / 21070014\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607777\",\"assetName\":\"SIM卡 896019210381607777\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"3\",\"externalSource\":\"SIM\",\"id\":265,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1720987200000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2024-07-15\",\"source\":\"SAS\",\"specification\":\"183.171.40.182\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607782\",\"assetName\":\"SIM卡 896019210381607782\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"4\",\"externalSource\":\"SIM\",\"id\":264,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1720987200000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2024-07-15\",\"source\":\"SAS\",\"specification\":\"183.171.40.117\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607784\",\"assetName\":\"SIM卡 896019210381607784\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"7\",\"externalSource\":\"SIM\",\"id\":263,\"keeper\":\"SMT\",\"location\":\"SMT (Modem-Production)\",\"originalValue\":0.000000,\"purchaseDate\":1727553600000,\"quantity\":1.000000,\"remark\":\"设备序列号: 20041004;启用日期: 2024-09-29\",\"source\":\"SAS\",\"specification\":\"183.171.50.5 / KM08-LTE Modem / 20041004\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607783\",\"assetName\":\"SIM卡 896019210381607783\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"8\",\"externalSource\":\"SIM\",\"id\":262,\"keeper\":\"SMT\",\"location\":\"SMT (RnD) Modem Store\",\"originalValue\":0.000000,\"purchaseDate\":1727553600000,\"quantity\":1.000000,\"remark\":\"设备序列号: 2403005;启用日期: 2024-09-29\",\"source\":\"SAS\",\"specification\":\"183.171.50.6 / KM08-LTE Modem / 2403005\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607785\",\"assetName\":\"SIM卡 896019210381607785\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"10\",\"externalSource\":\"SIM\",\"id\":261,\"keeper\":\"SMT\",\"location\":\"SMT (RnD) Alyaa\",\"originalValue\":0.000000,\"purchaseDate\":1766433600000,\"quantity\":1.000000,\"remark\":\"设备序列号: 21070011;电表序列号: 320910014;启用日期: 2025-12-23\",\"source\":\"SAS\",\"specification\":\"183.171.151.171 / KM08-LTE Modem / 21070011\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000}]}}'); +INSERT INTO `tbl_log` VALUES (8683, NULL, '接口日志', '43.152.142.86/1.9.116.218', '2026-09-30 07:23:00', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (8684, NULL, '接口日志', '43.174.32.13/1.9.116.218', '2026-09-30 07:23:00', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (8685, 63, '接口日志', '43.152.157.121/1.9.116.218', '2026-09-30 07:23:00', 0, 'FunctionController.findMenuByPNumber(..)', NULL, 'POST /apis/function/findMenuByPNumber', '{\"jsonObject\":{\"userId\":63,\"pNumber\":0}}', '[{\"component\":\"/layouts/TabLayout\",\"icon\":\"home\",\"id\":0,\"text\":\"首页\",\"url\":\"/dashboard/analysis\",\"textEn\":\"Home\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/SaleOrderList\",\"icon\":\"profile\",\"id\":242,\"text\":\"销售订单\",\"url\":\"/bill/sale_order\",\"textEn\":\"Sales Orders\"},{\"component\":\"/bill/SaleOutList\",\"icon\":\"profile\",\"id\":41,\"text\":\"销售出库\",\"url\":\"/bill/sale_out\",\"textEn\":\"Sales Shipments\"},{\"component\":\"/bill/DeliveryPlanList\",\"icon\":\"profile\",\"id\":271,\"text\":\"交货计划管理\",\"url\":\"/bill/delivery_plan\",\"textEn\":\"Delivery Plans\"},{\"component\":\"/bill/SaleShipmentList\",\"icon\":\"car\",\"id\":268,\"text\":\"发货管理\",\"url\":\"/bill/sale_shipment\",\"textEn\":\"Shipment Management\"},{\"component\":\"/bill/SaleBackList\",\"icon\":\"profile\",\"id\":200,\"text\":\"销售退货\",\"url\":\"/bill/sale_back\",\"textEn\":\"Sales Returns\"},{\"component\":\"/bill/RetailOutList\",\"icon\":\"profile\",\"id\":210,\"text\":\"零售出库\",\"url\":\"/bill/retail_out\",\"textEn\":\"Retail Shipments\"},{\"component\":\"/bill/RetailBackList\",\"icon\":\"profile\",\"id\":211,\"text\":\"零售退货\",\"url\":\"/bill/retail_back\",\"textEn\":\"Retail Returns\"}],\"icon\":\"shopping-cart\",\"id\":38,\"text\":\"销售管理\",\"url\":\"/billB\",\"textEn\":\"Sales Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/PurchaseApplyList\",\"icon\":\"profile\",\"id\":261,\"text\":\"请购单\",\"url\":\"/bill/purchase_apply\",\"textEn\":\"Purchase Requisitions\"},{\"component\":\"/bill/PurchaseOrderList\",\"icon\":\"profile\",\"id\":241,\"text\":\"采购订单\",\"url\":\"/bill/purchase_order\",\"textEn\":\"Purchase Orders\"},{\"component\":\"/bill/PurchaseInList\",\"icon\":\"profile\",\"id\":33,\"text\":\"采购入库\",\"url\":\"/bill/purchase_in\",\"textEn\":\"Purchase Receipts\"},{\"component\":\"/bill/PurchaseBackList\",\"icon\":\"profile\",\"id\":199,\"text\":\"采购退货\",\"url\":\"/bill/purchase_back\",\"textEn\":\"Purchase Returns\"}],\"icon\":\"retweet\",\"id\":32,\"text\":\"采购管理\",\"url\":\"/bill\",\"textEn\":\"Purchase Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/production/PackBomList\",\"icon\":\"profile\",\"id\":263,\"text\":\"生产方案\",\"url\":\"/production/pack_bom\",\"textEn\":\"Production BOMs\"},{\"component\":\"/production/OrderList\",\"icon\":\"profile\",\"id\":264,\"text\":\"生产工单\",\"url\":\"/production/order\",\"textEn\":\"Production Orders\"},{\"component\":\"/production/RequisitionList\",\"icon\":\"profile\",\"id\":265,\"text\":\"领料管理\",\"url\":\"/production/requisition\",\"textEn\":\"Material Requisitions\"},{\"component\":\"/production/ReportList\",\"icon\":\"profile\",\"id\":266,\"text\":\"完工报工\",\"url\":\"/production/report\",\"textEn\":\"Production Reports\"}],\"icon\":\"cluster\",\"id\":262,\"text\":\"生产管理\",\"url\":\"/production\",\"textEn\":\"Production Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/MaterialStock\",\"icon\":\"profile\",\"id\":246,\"text\":\"商品库存\",\"url\":\"/report/material_stock\",\"textEn\":\"Product Inventory\"},{\"component\":\"/bill/OtherInList\",\"icon\":\"profile\",\"id\":201,\"text\":\"其它入库\",\"url\":\"/bill/other_in\",\"textEn\":\"Other Receipts\"},{\"component\":\"/bill/OtherOutList\",\"icon\":\"profile\",\"id\":202,\"text\":\"其它出库\",\"url\":\"/bill/other_out\",\"textEn\":\"Other Shipments\"},{\"component\":\"/bill/HeadquartersInList\",\"icon\":\"profile\",\"id\":270,\"text\":\"总部入库\",\"url\":\"/bill/headquarters_in\",\"textEn\":\"Headquarters Receipts\"}],\"icon\":\"hdd\",\"id\":239,\"text\":\"仓库管理\",\"url\":\"/billD\",\"textEn\":\"Warehouse Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/financial/MoneyInList\",\"icon\":\"profile\",\"id\":204,\"text\":\"收款单\",\"url\":\"/financial/money_in\",\"textEn\":\"Receipt Vouchers\"},{\"component\":\"/financial/MoneyOutList\",\"icon\":\"profile\",\"id\":205,\"text\":\"付款单\",\"url\":\"/financial/money_out\",\"textEn\":\"Payment Vouchers\"}],\"icon\":\"money-collect\",\"id\":44,\"text\":\"财务管理\",\"url\":\"/financial\",\"textEn\":\"Finance Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/asset/AssetDashboard\",\"icon\":\"dashboard\",\"id\":276,\"text\":\"资产汇总\",\"url\":\"/asset\",\"textEn\":\"Asset Overview\"},{\"component\":\"/asset/AssetList\",\"icon\":\"profile\",\"id\":273,\"text\":\"资产台账\",\"url\":\"/asset/ledger\",\"textEn\":\"Asset Ledger\"},{\"component\":\"/asset/DeviceList\",\"icon\":\"tool\",\"id\":274,\"text\":\"设备台账\",\"url\":\"/asset/device\",\"textEn\":\"Device Ledger\"},{\"component\":\"/asset/InventoryList\",\"icon\":\"scan\",\"id\":275,\"text\":\"资产盘点\",\"url\":\"/asset/inventory\",\"textEn\":\"Asset Inventory\"}],\"icon\":\"bank\",\"id\":272,\"text\":\"资产管理\",\"url\":\"/assetManagement\",\"textEn\":\"Asset Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/material/MaterialCategoryList\",\"icon\":\"profile\",\"id\":22,\"text\":\"商品类别\",\"url\":\"/material/material_category\",\"textEn\":\"Product Categories\"},{\"component\":\"/material/MaterialList\",\"icon\":\"profile\",\"id\":23,\"text\":\"商品信息\",\"url\":\"/material/material\",\"textEn\":\"Product Information\"},{\"component\":\"/system/UnitList\",\"icon\":\"profile\",\"id\":220,\"text\":\"多单位\",\"url\":\"/system/unit\",\"textEn\":\"Multiple Units\"},{\"component\":\"/material/MaterialAttributeList\",\"icon\":\"profile\",\"id\":247,\"text\":\"多属性\",\"url\":\"/material/material_attribute\",\"textEn\":\"Product Attributes\"}],\"icon\":\"shopping\",\"id\":21,\"text\":\"商品管理\",\"url\":\"/material\",\"textEn\":\"Product Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/AccountReport\",\"icon\":\"profile\",\"id\":207,\"text\":\"账户统计\",\"url\":\"/report/account_report\",\"textEn\":\"Account Summary\"},{\"component\":\"/report/RetailOutReport\",\"icon\":\"profile\",\"id\":259,\"text\":\"零售统计\",\"url\":\"/report/retail_out_report\",\"textEn\":\"Retail Summary\"},{\"component\":\"/report/BuyInReport\",\"icon\":\"profile\",\"id\":208,\"text\":\"采购统计\",\"url\":\"/report/buy_in_report\",\"textEn\":\"Purchase Summary\"},{\"component\":\"/report/SaleOutReport\",\"icon\":\"profile\",\"id\":209,\"text\":\"销售统计\",\"url\":\"/report/sale_out_report\",\"textEn\":\"Sales Summary\"},{\"component\":\"/report/InDetail\",\"icon\":\"profile\",\"id\":226,\"text\":\"入库明细\",\"url\":\"/report/in_detail\",\"textEn\":\"Inbound Details\"},{\"component\":\"/report/OutDetail\",\"icon\":\"profile\",\"id\":227,\"text\":\"出库明细\",\"url\":\"/report/out_detail\",\"textEn\":\"Outbound Details\"},{\"component\":\"/report/InMaterialCount\",\"icon\":\"profile\",\"id\":228,\"text\":\"入库汇总\",\"url\":\"/report/in_material_count\",\"textEn\":\"Inbound Summary\"},{\"component\":\"/report/OutMaterialCount\",\"icon\":\"profile\",\"id\":229,\"text\":\"出库汇总\",\"url\":\"/report/out_material_count\",\"textEn\":\"Outbound Summary\"},{\"component\":\"/report/InOutStockReport\",\"icon\":\"profile\",\"id\":59,\"text\":\"进销存统计\",\"url\":\"/report/in_out_stock_report\",\"textEn\":\"Inventory Transaction Summary\"},{\"component\":\"/report/CustomerAccount\",\"icon\":\"profile\",\"id\":235,\"text\":\"客户对账\",\"url\":\"/report/customer_account\",\"textEn\":\"Customer Reconciliation\"},{\"component\":\"/report/VendorAccount\",\"icon\":\"profile\",\"id\":237,\"text\":\"供应商对账\",\"url\":\"/report/vendor_account\",\"textEn\":\"Supplier Reconciliation\"},{\"component\":\"/report/StockWarningReport\",\"icon\":\"profile\",\"id\":244,\"text\":\"库存预警\",\"url\":\"/report/stock_warning_report\",\"textEn\":\"Stock Alerts\"}],\"icon\":\"pie-chart\",\"id\":198,\"text\":\"报表查询\",\"url\":\"/report\",\"textEn\":\"Reports\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/VendorList\",\"icon\":\"profile\",\"id\":25,\"text\":\"供应商信息\",\"url\":\"/system/vendor\",\"textEn\":\"Suppliers\"},{\"component\":\"/system/CustomerList\",\"icon\":\"profile\",\"id\":217,\"text\":\"客户信息\",\"url\":\"/system/customer\",\"textEn\":\"Customers\"},{\"component\":\"/system/MemberList\",\"icon\":\"profile\",\"id\":218,\"text\":\"会员信息\",\"url\":\"/system/member\",\"textEn\":\"Members\"},{\"component\":\"/system/CustomerCategoryList\",\"icon\":\"bars\",\"id\":267,\"text\":\"客户分类\",\"url\":\"/system/customerCategory\",\"textEn\":\"Customer Categories\"},{\"component\":\"/system/DepotList\",\"icon\":\"profile\",\"id\":26,\"text\":\"仓库信息\",\"url\":\"/system/depot\",\"textEn\":\"Warehouses\"},{\"component\":\"/system/InOutItemList\",\"icon\":\"profile\",\"id\":194,\"text\":\"收支项目\",\"url\":\"/system/in_out_item\",\"textEn\":\"Income and Expense Items\"},{\"component\":\"/system/AccountList\",\"icon\":\"profile\",\"id\":195,\"text\":\"结算账户\",\"url\":\"/system/account\",\"textEn\":\"Settlement Accounts\"},{\"component\":\"/system/PersonList\",\"icon\":\"profile\",\"id\":31,\"text\":\"操作人员管理\",\"url\":\"/system/person\",\"textEn\":\"Operators\"}],\"icon\":\"appstore\",\"id\":24,\"text\":\"基础资料\",\"url\":\"/systemA\",\"textEn\":\"Master Data\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/RoleList\",\"icon\":\"profile\",\"id\":13,\"text\":\"角色管理\",\"url\":\"/system/role\",\"textEn\":\"Role Management\"},{\"component\":\"/system/UserList\",\"icon\":\"profile\",\"id\":14,\"text\":\"用户管理\",\"url\":\"/system/user\",\"textEn\":\"User Management\"},{\"component\":\"/system/OrganizationList\",\"icon\":\"profile\",\"id\":243,\"text\":\"部门管理\",\"url\":\"/system/organization\",\"textEn\":\"Department Management\"},{\"component\":\"/system/LogList\",\"icon\":\"profile\",\"id\":15,\"text\":\"日志管理\",\"url\":\"/system/log\",\"textEn\":\"Log Management\"},{\"component\":\"/material/MaterialPropertyList\",\"icon\":\"profile\",\"id\":236,\"text\":\"商品属性\",\"url\":\"/material/material_property\",\"textEn\":\"Product Properties\"},{\"component\":\"/system/SystemConfigList\",\"icon\":\"profile\",\"id\":234,\"text\":\"系统配置\",\"url\":\"/system/system_config\",\"textEn\":\"System Configuration\"},{\"component\":\"/system/FunctionList\",\"icon\":\"profile\",\"id\":16,\"text\":\"菜单管理\",\"url\":\"/system/function\",\"textEn\":\"Resource Menus\"},{\"component\":\"/system/PluginList\",\"icon\":\"profile\",\"id\":245,\"text\":\"插件管理\",\"url\":\"/system/plugin\",\"textEn\":\"Plugin Management\"},{\"component\":\"/system/DictList\",\"icon\":\"profile\",\"id\":260,\"text\":\"字典管理\",\"url\":\"/system/dict\",\"textEn\":\"Dictionary Management\"},{\"component\":\"/system/PlatformConfigList\",\"icon\":\"profile\",\"id\":258,\"text\":\"平台配置\",\"url\":\"/system/platform_config\",\"textEn\":\"Platform Configuration\"}],\"icon\":\"setting\",\"id\":1,\"text\":\"系统管理\",\"url\":\"/system\",\"textEn\":\"System Management\"}]'); +INSERT INTO `tbl_log` VALUES (8686, 63, '接口日志', '43.174.53.30/1.9.116.218', '2026-09-30 07:23:00', 0, 'UserController.getUserBtnByCurrentUser(..)', NULL, 'GET /apis/user/getUserBtnByCurrentUser', '{}', '{\"code\":200,\"data\":{\"userBtn\":[{\"btnStr\":\"8,1\",\"url\":\"/system/role\"},{\"btnStr\":\"1\",\"url\":\"/system/user\"},{\"btnStr\":\"1\",\"url\":\"/system/organization\"},{\"btnStr\":\"1\",\"url\":\"/material/material_property\"},{\"btnStr\":\"1\",\"url\":\"/system/system_config\"},{\"btnStr\":\"1\",\"url\":\"/system/function\"},{\"btnStr\":\"1\",\"url\":\"/system/plugin\"},{\"btnStr\":\"1\",\"url\":\"/material/material_category\"},{\"btnStr\":\"1,3\",\"url\":\"/material/material\"},{\"btnStr\":\"1\",\"url\":\"/system/unit\"},{\"btnStr\":\"1\",\"url\":\"/material/material_attribute\"},{\"btnStr\":\"1,3\",\"url\":\"/system/vendor\"},{\"btnStr\":\"1,3\",\"url\":\"/system/customer\"},{\"btnStr\":\"1,3\",\"url\":\"/system/member\"},{\"btnStr\":\"1\",\"url\":\"/system/depot\"},{\"btnStr\":\"1\",\"url\":\"/system/in_out_item\"},{\"btnStr\":\"1\",\"url\":\"/system/account\"},{\"btnStr\":\"1\",\"url\":\"/system/person\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_apply\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_out\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/delivery_plan\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/sale_shipment\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_out\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/order\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/requisition\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/report\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/giro\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/advance_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/allocation_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/assemble\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/headquarters_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/disassemble\"}]}}'); +INSERT INTO `tbl_log` VALUES (8687, 63, '接口日志', '43.174.32.18/1.9.116.218', '2026-09-30 07:23:01', 0, 'MsgController.getList(..)', NULL, 'GET /apis/msg/list', '{\"search\":\"{\\\"name\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (8688, 63, '接口日志', '43.152.142.57/1.9.116.218', '2026-09-30 07:23:01', 0, 'MsgController.getMsgByStatus(..)', NULL, 'GET /apis/msg/getMsgByStatus', '{\"status\":\"1\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (8689, 63, '接口日志', '43.152.142.32/1.9.116.218', '2026-09-30 07:23:01', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":255,\"rows\":[{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019200694297052\",\"assetName\":\"SIM卡 896019200694297052\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"6\",\"externalSource\":\"SIM\",\"id\":270,\"keeper\":\"UITM Dungun\",\"location\":\"SMT (???)\",\"originalValue\":0.000000,\"quantity\":1.000000,\"source\":\"SAS\",\"specification\":\"183.171.146.98\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019190221500578\",\"assetName\":\"SIM卡 896019190221500578\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"5\",\"externalSource\":\"SIM\",\"id\":269,\"keeper\":\"SMT\",\"location\":\"UITM Dungun\",\"originalValue\":0.000000,\"purchaseDate\":1608062400000,\"quantity\":1.000000,\"remark\":\"启用日期: 2020-12-16\",\"source\":\"SAS\",\"specification\":\"183.171.14.125\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019190221500576\",\"assetName\":\"SIM卡 896019190221500576\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"1\",\"externalSource\":\"SIM\",\"id\":268,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1608062400000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2020-12-16\",\"source\":\"SAS\",\"specification\":\"183.171.144.65\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607778\",\"assetName\":\"SIM卡 896019210381607778\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"2\",\"externalSource\":\"SIM\",\"id\":267,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1711051200000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2024-03-22\",\"source\":\"SAS\",\"specification\":\"183.171.15.60\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607781\",\"assetName\":\"SIM卡 896019210381607781\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"9\",\"externalSource\":\"SIM\",\"id\":266,\"keeper\":\"SMT\",\"location\":\"SMT (RnD) Modem RnD\",\"originalValue\":0.000000,\"purchaseDate\":1711051200000,\"quantity\":1.000000,\"remark\":\"设备序列号: 21070014;电表序列号: 320910015;启用日期: 2024-03-22\",\"source\":\"SAS\",\"specification\":\"183.171.5.142 / KM08-LTE Modem / 21070014\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607777\",\"assetName\":\"SIM卡 896019210381607777\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"3\",\"externalSource\":\"SIM\",\"id\":265,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1720987200000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2024-07-15\",\"source\":\"SAS\",\"specification\":\"183.171.40.182\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607782\",\"assetName\":\"SIM卡 896019210381607782\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"4\",\"externalSource\":\"SIM\",\"id\":264,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1720987200000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2024-07-15\",\"source\":\"SAS\",\"specification\":\"183.171.40.117\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607784\",\"assetName\":\"SIM卡 896019210381607784\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"7\",\"externalSource\":\"SIM\",\"id\":263,\"keeper\":\"SMT\",\"location\":\"SMT (Modem-Production)\",\"originalValue\":0.000000,\"purchaseDate\":1727553600000,\"quantity\":1.000000,\"remark\":\"设备序列号: 20041004;启用日期: 2024-09-29\",\"source\":\"SAS\",\"specification\":\"183.171.50.5 / KM08-LTE Modem / 20041004\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607783\",\"assetName\":\"SIM卡 896019210381607783\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"8\",\"externalSource\":\"SIM\",\"id\":262,\"keeper\":\"SMT\",\"location\":\"SMT (RnD) Modem Store\",\"originalValue\":0.000000,\"purchaseDate\":1727553600000,\"quantity\":1.000000,\"remark\":\"设备序列号: 2403005;启用日期: 2024-09-29\",\"source\":\"SAS\",\"specification\":\"183.171.50.6 / KM08-LTE Modem / 2403005\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607785\",\"assetName\":\"SIM卡 896019210381607785\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"10\",\"externalSource\":\"SIM\",\"id\":261,\"keeper\":\"SMT\",\"location\":\"SMT (RnD) Alyaa\",\"originalValue\":0.000000,\"purchaseDate\":1766433600000,\"quantity\":1.000000,\"remark\":\"设备序列号: 21070011;电表序列号: 320910014;启用日期: 2025-12-23\",\"source\":\"SAS\",\"specification\":\"183.171.151.171 / KM08-LTE Modem / 21070011\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000}]}}'); +INSERT INTO `tbl_log` VALUES (8690, 63, '接口日志', '43.152.142.141/1.9.116.218', '2026-09-30 07:23:01', 0, 'AssetController.categoryOptions()', NULL, 'GET /apis/asset/category/options', '{}', '{\"code\":200,\"data\":{\"rows\":[{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"尚未归入具体种类的资产\",\"updateTime\":1790613193000,\"categoryCode\":\"UNCATEGORIZED\",\"id\":4,\"sort\":10,\"categoryName\":\"未分类\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System 硬件台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"HARDWARE\",\"id\":5,\"sort\":20,\"categoryName\":\"硬件资产\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System 软件台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"SOFTWARE\",\"id\":6,\"sort\":30,\"categoryName\":\"软件资产\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System SIM 卡台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"SIM_CARD\",\"id\":7,\"sort\":40,\"categoryName\":\"SIM卡\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_01BF8DA563A0\",\"id\":11,\"sort\":100,\"categoryName\":\"生产设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_7129859760C3\",\"id\":12,\"sort\":100,\"categoryName\":\"检测设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_9F38069B30A1\",\"id\":13,\"sort\":100,\"categoryName\":\"动力设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_75F489029B11\",\"id\":14,\"sort\":100,\"categoryName\":\"IT设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_3DDFE01CA0B8\",\"id\":15,\"sort\":100,\"categoryName\":\"物流设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_B5D44F2B039A\",\"id\":16,\"sort\":100,\"categoryName\":\"工装设备\",\"enabled\":true}],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (8691, 63, '接口日志', '43.152.142.40/1.9.116.218', '2026-09-30 07:23:02', 0, 'AssetController.dashboard()', NULL, 'GET /apis/asset/dashboard', '{}', '{\"code\":200,\"data\":{\"summary\":{\"activeCount\":259,\"deviceCount\":10,\"assetQuantity\":289.000000,\"assetCount\":255,\"assetValue\":17260.000000,\"openInventoryCount\":2,\"managedCount\":265},\"statusDistribution\":[{\"code\":\"IN_USE\",\"value\":259},{\"code\":\"REPAIR\",\"value\":3},{\"code\":\"SCRAPPED\",\"value\":3}],\"departmentDistribution\":[{\"name\":\"Production\",\"value\":56},{\"name\":\"未指定\",\"value\":54},{\"name\":\"Laboratory\",\"value\":48},{\"name\":\"Technical & Technologies\",\"value\":29},{\"name\":\"Engineering\",\"value\":18},{\"name\":\"Not Specified\",\"value\":11},{\"name\":\"Human Resources\",\"value\":6},{\"name\":\"Quality\",\"value\":6}],\"deviceCategoryDistribution\":[{\"name\":\"检测设备\",\"value\":2},{\"name\":\"贴装设备\",\"value\":2},{\"name\":\"动力设备\",\"value\":1},{\"name\":\"印刷设备\",\"value\":1},{\"name\":\"工装设备\",\"value\":1},{\"name\":\"服务器\",\"value\":1},{\"name\":\"焊接设备\",\"value\":1},{\"name\":\"物流设备\",\"value\":1}],\"message\":\"成功\",\"categoryDistribution\":[{\"code\":\"HARDWARE\",\"name\":\"硬件资产\",\"value\":198.00},{\"code\":\"SOFTWARE\",\"name\":\"软件资产\",\"value\":67.00},{\"code\":\"SIM_CARD\",\"name\":\"SIM卡\",\"value\":24.00}],\"recentInventories\":[{\"inventoryNo\":\"PD20260921190840893\",\"inventoryUserName\":\"admin\",\"planName\":\"2026年09月资产设备专项盘点\",\"id\":6,\"totalCount\":1,\"inventoriedCount\":1,\"status\":\"CLOSED\",\"updatedAt\":\"2026-09-21 19:17:28\"},{\"inventoryNo\":\"PD20260921170623856\",\"inventoryUserName\":\"张三\",\"planName\":\"2026年09月资产设备专项盘点\",\"id\":4,\"totalCount\":8,\"inventoriedCount\":8,\"status\":\"CLOSED\",\"updatedAt\":\"2026-09-21 19:16:33\"},{\"inventoryNo\":\"PD20260921190800418\",\"inventoryUserName\":\"张三\",\"planName\":\"2026年09月资产设备专项盘点\",\"id\":5,\"totalCount\":2,\"inventoriedCount\":0,\"status\":\"ACCEPTED\",\"updatedAt\":\"2026-09-21 19:08:13\"},{\"inventoryNo\":\"PD20260918131230171\",\"inventoryUserName\":\"张伟\",\"planName\":\"2026年09月资产设备专项盘点\",\"id\":1,\"totalCount\":3,\"inventoriedCount\":1,\"status\":\"IN_PROGRESS\",\"updatedAt\":\"2026-09-21 14:35:59\"}],\"updatedAt\":\"2026-09-30\"}}'); +INSERT INTO `tbl_log` VALUES (8692, 63, '接口日志', '43.152.142.43/1.9.116.218', '2026-09-30 07:23:43', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":255,\"rows\":[{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607786\",\"assetName\":\"SIM卡 896019210381607786\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"11\",\"externalSource\":\"SIM\",\"id\":260,\"keeper\":\"SMT\",\"location\":\"SMT (RnD) Alyaa\",\"originalValue\":0.000000,\"purchaseDate\":1766433600000,\"quantity\":1.000000,\"remark\":\"设备序列号: 21070013;启用日期: 2025-12-23\",\"source\":\"SAS\",\"specification\":\"183.171.208.37 / KM08-LTE Modem / 21070013\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381702562\",\"assetName\":\"SIM卡 896019210381702562\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"12\",\"externalSource\":\"SIM\",\"id\":259,\"keeper\":\"SMT\",\"location\":\"Loan to Hanif/Adha (22-May-2026); \",\"originalValue\":0.000000,\"purchaseDate\":1766433600000,\"quantity\":1.000000,\"remark\":\"启用日期: 2025-12-23\",\"source\":\"SAS\",\"specification\":\"183.171.144.61\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607780\",\"assetName\":\"SIM卡 896019210381607780\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"14\",\"externalSource\":\"SIM\",\"id\":258,\"keeper\":\"SMT\",\"location\":\"POC AEON\",\"originalValue\":0.000000,\"purchaseDate\":1766433600000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Months;启用日期: 2025-12-23\",\"source\":\"SAS\",\"specification\":\"183.171.208.37\",\"status\":\"SCRAPPED\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019190221500577\",\"assetName\":\"SIM卡 896019190221500577\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"15\",\"externalSource\":\"SIM\",\"id\":257,\"keeper\":\"SMT\",\"location\":\"Kompleks Pertama\",\"originalValue\":0.000000,\"purchaseDate\":1766433600000,\"quantity\":1.000000,\"remark\":\"启用日期: 2025-12-23\",\"source\":\"SAS\",\"specification\":\"183.171.144.61\",\"status\":\"SCRAPPED\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607779\",\"assetName\":\"SIM卡 896019210381607779\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"13\",\"externalSource\":\"SIM\",\"id\":256,\"keeper\":\"SMT\",\"location\":\"POC AEON\",\"originalValue\":0.000000,\"purchaseDate\":1766433600000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Months;启用日期: 2025-12-23\",\"source\":\"SAS\",\"specification\":\"183.171.151.171\",\"status\":\"SCRAPPED\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381702569\",\"assetName\":\"SIM卡 896019210381702569\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"18\",\"externalSource\":\"SIM\",\"id\":255,\"keeper\":\"SMT\",\"location\":\"With Amir\",\"originalValue\":0.000000,\"purchaseDate\":1780430400000,\"quantity\":1.000000,\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"source\":\"SAS\",\"specification\":\"183.171.11.200\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381702570\",\"assetName\":\"SIM卡 896019210381702570\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"19\",\"externalSource\":\"SIM\",\"id\":254,\"keeper\":\"SMT\",\"location\":\"With Amir\",\"originalValue\":0.000000,\"purchaseDate\":1780430400000,\"quantity\":1.000000,\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"source\":\"SAS\",\"specification\":\"183.171.214.141\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381702571\",\"assetName\":\"SIM卡 896019210381702571\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"23\",\"externalSource\":\"SIM\",\"id\":253,\"keeper\":\"SMT\",\"location\":\"R&D room, SMT\",\"originalValue\":0.000000,\"purchaseDate\":1780430400000,\"quantity\":1.000000,\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"source\":\"SAS\",\"specification\":\"183.171.9.45\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381702568\",\"assetName\":\"SIM卡 896019210381702568\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"24\",\"externalSource\":\"SIM\",\"id\":252,\"keeper\":\"SMT\",\"location\":\"Molnlycke Health Care\",\"originalValue\":0.000000,\"purchaseDate\":1780430400000,\"quantity\":1.000000,\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"source\":\"SAS\",\"specification\":\"183.171.214.217 / 4G Modem\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381702567\",\"assetName\":\"SIM卡 896019210381702567\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"25\",\"externalSource\":\"SIM\",\"id\":251,\"keeper\":\"SMT\",\"location\":\"Molnlycke Health Care\",\"originalValue\":0.000000,\"purchaseDate\":1780430400000,\"quantity\":1.000000,\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"source\":\"SAS\",\"specification\":\"183.171.12.143 / 4G Modem\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000}]}}'); +INSERT INTO `tbl_log` VALUES (8693, 63, '接口日志', '43.174.53.19/1.9.116.218', '2026-09-30 07:23:44', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":255,\"rows\":[{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381702566\",\"assetName\":\"SIM卡 896019210381702566\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"26\",\"externalSource\":\"SIM\",\"id\":250,\"keeper\":\"SMT\",\"location\":\"GT3.1 (Nur)\",\"originalValue\":0.000000,\"purchaseDate\":1780430400000,\"quantity\":1.000000,\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"source\":\"SAS\",\"specification\":\"183.171.11.123 / Lora Gateway\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381702565\",\"assetName\":\"SIM卡 896019210381702565\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"27\",\"externalSource\":\"SIM\",\"id\":249,\"keeper\":\"SMT\",\"location\":\"Menicon Malaysia\",\"originalValue\":0.000000,\"purchaseDate\":1780430400000,\"quantity\":1.000000,\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"source\":\"SAS\",\"specification\":\"183.171.12.136 / Lora Gateway\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381702564\",\"assetName\":\"SIM卡 896019210381702564\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"28\",\"externalSource\":\"SIM\",\"id\":248,\"keeper\":\"SMT\",\"location\":\"First Solar Malaysia\",\"originalValue\":0.000000,\"purchaseDate\":1780430400000,\"quantity\":1.000000,\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"source\":\"SAS\",\"specification\":\"183.171.10.11 / 4G Modem\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381702563\",\"assetName\":\"SIM卡 896019210381702563\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"29\",\"externalSource\":\"SIM\",\"id\":247,\"keeper\":\"SMT\",\"location\":\"First Solar Malaysia\",\"originalValue\":0.000000,\"purchaseDate\":1780430400000,\"quantity\":1.000000,\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"source\":\"SAS\",\"specification\":\"183.171.11.141 / 4G Modem\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-2\",\"assetName\":\"MS Office 2019 Home & Business\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"2\",\"externalSource\":\"SOFTWARE\",\"id\":246,\"originalValue\":8700.000000,\"purchaseDate\":1694980800000,\"quantity\":15.000000,\"remark\":\"供应商: Amimo;发票号: INV230902\",\"source\":\"SAS\",\"specification\":\"Amimo\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-3\",\"assetName\":\"MS Office 2019 Home & Business\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"3\",\"externalSource\":\"SOFTWARE\",\"id\":245,\"originalValue\":1160.000000,\"purchaseDate\":1704916800000,\"quantity\":2.000000,\"remark\":\"供应商: Amimo;发票号: INV240101\",\"source\":\"SAS\",\"specification\":\"Amimo\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-4\",\"assetName\":\"MS Office 2019 Pro\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"4\",\"externalSource\":\"SOFTWARE\",\"id\":244,\"originalValue\":0.000000,\"purchaseDate\":1727380800000,\"quantity\":1.000000,\"remark\":\"供应商: Amimo;发票号: INV240901;原备注: Price bundled with PC purchase.\",\"source\":\"SAS\",\"specification\":\"Amimo\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-5\",\"assetName\":\"MS Office 2019 Pro Plus\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"5\",\"externalSource\":\"SOFTWARE\",\"id\":243,\"originalValue\":580.000000,\"purchaseDate\":1712088000000,\"quantity\":1.000000,\"remark\":\"供应商: Amimo;发票号: INV240402\",\"source\":\"SAS\",\"specification\":\"Amimo\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-6\",\"assetName\":\"MS Office 2019 Pro Plus\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"6\",\"externalSource\":\"SOFTWARE\",\"id\":242,\"originalValue\":2320.000000,\"purchaseDate\":1736798400000,\"quantity\":4.000000,\"remark\":\"供应商: Amimo;发票号: QUO250101\",\"source\":\"SAS\",\"specification\":\"Amimo\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-7\",\"assetName\":\"MS Office 2021 Home & Business\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"7\",\"externalSource\":\"SOFTWARE\",\"id\":241,\"originalValue\":750.000000,\"purchaseDate\":1707768000000,\"quantity\":1.000000,\"remark\":\"供应商: Amimo;发票号: INV240201\",\"source\":\"SAS\",\"specification\":\"Amimo\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000}]}}'); +INSERT INTO `tbl_log` VALUES (8694, 63, '接口日志', '43.174.32.19/1.9.116.218', '2026-09-30 07:23:46', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":255,\"rows\":[{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-8\",\"assetName\":\"MS Office 2021 Pro\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"8\",\"externalSource\":\"SOFTWARE\",\"id\":240,\"originalValue\":0.000000,\"purchaseDate\":1712088000000,\"quantity\":2.000000,\"remark\":\"供应商: Amimo;发票号: INV240401;原备注: Price bundled with PC purchase.\",\"source\":\"SAS\",\"specification\":\"Amimo\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-9\",\"assetName\":\"MS Office 2021 Pro\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"9\",\"externalSource\":\"SOFTWARE\",\"id\":239,\"originalValue\":0.000000,\"purchaseDate\":1718913600000,\"quantity\":1.000000,\"remark\":\"供应商: Amimo;发票号: INV240601;原备注: Price bundled with PC purchase.\",\"source\":\"SAS\",\"specification\":\"Amimo\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000,\"useDepartment\":\"HR\"},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-10\",\"assetName\":\"MS Office Home & Business\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"10\",\"externalSource\":\"SOFTWARE\",\"id\":238,\"originalValue\":0.000000,\"purchaseDate\":1768939200000,\"quantity\":10.000000,\"remark\":\"供应商: Amimo;许可证: Smt@123;发票号: INV260101;原备注: Bundled with 10 unit of PC purchase for Lab.\",\"source\":\"SAS\",\"specification\":\"Amimo\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-11\",\"assetName\":\"MS Office Home & Business\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"11\",\"externalSource\":\"SOFTWARE\",\"id\":237,\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"供应商: Amimo;原备注: Bundled with 1 unit of Laptop\",\"source\":\"SAS\",\"specification\":\"Amimo\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000,\"useDepartment\":\"Tech & Technology\"},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-12\",\"assetName\":\"MS Office Home & Business 2010\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"12\",\"externalSource\":\"SOFTWARE\",\"id\":236,\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"许可证: BX27V-J9QMG-3VVWY-7JTYT-94CXB\",\"source\":\"SAS\",\"specification\":\"CD\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-13\",\"assetName\":\"MS Office Home & Business 2010\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"13\",\"externalSource\":\"SOFTWARE\",\"id\":235,\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"许可证: GTTC2-XH8PW-3WJFH-76VFQ-PHYX9\",\"source\":\"SAS\",\"specification\":\"CD\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-14\",\"assetName\":\"MS Office Home & Business 2010\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"14\",\"externalSource\":\"SOFTWARE\",\"id\":234,\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"许可证: WY8KV-GQ39X-2WQF2-V8R93-RY6CT\",\"source\":\"SAS\",\"specification\":\"CD\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-15\",\"assetName\":\"MS Office Home & Business 2010\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"15\",\"externalSource\":\"SOFTWARE\",\"id\":233,\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"许可证: YBDDT-C4QPP-J6T63-DQMB8-9XB29;原备注: Written: Burnny / Asus\",\"source\":\"SAS\",\"specification\":\"CD\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-16\",\"assetName\":\"MS Office Home & Business 2010\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"16\",\"externalSource\":\"SOFTWARE\",\"id\":232,\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"许可证: XG2WV-YRDV4-VQWQ2-XQQ26-XJ3FF;原备注: Written: SGH109RCWK\",\"source\":\"SAS\",\"specification\":\"CD\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-1\",\"assetName\":\"Linux 6.8.0-45\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"1\",\"externalSource\":\"SOFTWARE\",\"id\":231,\"originalValue\":0.000000,\"purchaseDate\":1728849600000,\"quantity\":2.000000,\"remark\":\"供应商: Amimo;发票号: INV240902;原备注: For server\",\"source\":\"SAS\",\"specification\":\"Amimo\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000}]}}'); +INSERT INTO `tbl_log` VALUES (8695, 63, '接口日志', '43.152.142.110/1.9.116.218', '2026-09-30 07:23:50', 0, 'AssetDeviceController.list(..)', NULL, 'GET /apis/assetDevice/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":10,\"rows\":[{\"assetId\":8,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"工装设备\",\"deviceCode\":\"TOOL-STENCIL-CLEAN-01\",\"deviceName\":\"全自动钢网清洗机\",\"enabledDate\":1739822400000,\"id\":10,\"keeper\":\"王磊\",\"location\":\"一车间 钢网房\",\"manufacturer\":\"SAWA\",\"model\":\"SC-A1000\",\"nextMaintenanceDate\":1794254400000,\"purchaseDate\":1739131200000,\"remark\":\"水基清洗、漂洗、热风干燥一体化\",\"serialNumber\":\"SAWA-A1000-250210\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetId\":7,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"物流设备\",\"deviceCode\":\"WH-FORKLIFT-01\",\"deviceName\":\"2 吨电动叉车\",\"enabledDate\":1722456000000,\"id\":9,\"keeper\":\"张伟\",\"location\":\"原材料仓充电区\",\"manufacturer\":\"Toyota\",\"model\":\"8FBE20\",\"nextMaintenanceDate\":1792872000000,\"purchaseDate\":1721592000000,\"remark\":\"锂电池版本,配置蓝光安全警示灯\",\"serialNumber\":\"TY-8FBE20-240722\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"仓储物流部\"},{\"assetId\":6,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"服务器\",\"deviceCode\":\"IT-MES-DB-01\",\"deviceName\":\"MES 数据库主服务器\",\"enabledDate\":1737489600000,\"id\":8,\"keeper\":\"赵敏\",\"location\":\"数据中心 A03-U18\",\"manufacturer\":\"Dell\",\"model\":\"PowerEdge R760\",\"nextMaintenanceDate\":1797278400000,\"purchaseDate\":1736884800000,\"remark\":\"双路 CPU、512GB 内存、全闪存 RAID10\",\"serialNumber\":\"CN-R760-25011501\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"信息技术部\"},{\"assetId\":5,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"动力设备\",\"deviceCode\":\"UTIL-AIR-01\",\"deviceName\":\"变频螺杆空压机\",\"enabledDate\":1701374400000,\"id\":7,\"keeper\":\"陈晨\",\"location\":\"动力站 1 号机位\",\"manufacturer\":\"Atlas Copco\",\"model\":\"GA22 VSD+\",\"nextMaintenanceDate\":1790798400000,\"purchaseDate\":1700424000000,\"remark\":\"运行压力 0.72MPa,接入能源管理系统\",\"serialNumber\":\"AC-GA22-2311209\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"设备动力部\"},{\"assetId\":4,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"检测设备\",\"deviceCode\":\"QC-SPI-01\",\"deviceName\":\"在线 3D SPI\",\"enabledDate\":1713384000000,\"id\":6,\"keeper\":\"陈晨\",\"lastInventoryTime\":1789986951000,\"location\":\"一车间 印刷检测区\",\"manufacturer\":\"Koh Young\",\"model\":\"KY8030-3\",\"nextMaintenanceDate\":1793908800000,\"purchaseDate\":1712347200000,\"remark\":\"与印刷机闭环反馈锡膏偏移数据\",\"serialNumber\":\"KY-8030-24040608\",\"status\":\"IN_USE\",\"updateTime\":1789986959000,\"useDepartment\":\"品质部\"},{\"assetId\":3,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"检测设备\",\"deviceCode\":\"QC-AOI-01\",\"deviceName\":\"在线 3D AOI\",\"enabledDate\":1713384000000,\"id\":5,\"keeper\":\"陈晨\",\"lastInventoryTime\":1790003830000,\"location\":\"一车间 AOI 检测区\",\"manufacturer\":\"Koh Young\",\"model\":\"Zenith 2\",\"nextMaintenanceDate\":1793822400000,\"purchaseDate\":1712347200000,\"remark\":\"具备 AI 缺陷复判和 SPC 数据接口\",\"serialNumber\":\"KY-Z2-24040615\",\"status\":\"IN_USE\",\"updateTime\":1790003830000,\"useDepartment\":\"品质部\"},{\"assetId\":2,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"焊接设备\",\"deviceCode\":\"SMT-L01-REFLOW-01\",\"deviceName\":\"十温区氮气回流焊炉\",\"enabledDate\":1712692800000,\"id\":4,\"keeper\":\"王磊\",\"location\":\"一车间 SMT-01 线后段\",\"manufacturer\":\"Heller Industries\",\"model\":\"HELLER 1936MK7\",\"nextMaintenanceDate\":1792440000000,\"purchaseDate\":1710705600000,\"remark\":\"氮气闭环控制,支持双轨独立调宽\",\"serialNumber\":\"HLR1936-2403268\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetId\":1,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"贴装设备\",\"deviceCode\":\"SMT-L01-MOUNTER-B\",\"deviceName\":\"多功能贴片机 B\",\"enabledDate\":1712520000000,\"id\":3,\"keeper\":\"王磊\",\"location\":\"一车间 SMT-01 线 B 工位\",\"manufacturer\":\"Panasonic\",\"model\":\"Panasonic NPM-W2S\",\"nextMaintenanceDate\":1792094400000,\"purchaseDate\":1710705600000,\"remark\":\"负责异形件及高精度元件贴装\",\"serialNumber\":\"NPMW2S24031802\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetId\":1,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"贴装设备\",\"deviceCode\":\"SMT-L01-MOUNTER-A\",\"deviceName\":\"高速模块贴片机 A\",\"enabledDate\":1712520000000,\"id\":2,\"keeper\":\"王磊\",\"location\":\"一车间 SMT-01 线 A 工位\",\"manufacturer\":\"Panasonic\",\"model\":\"Panasonic NPM-D3A\",\"nextMaintenanceDate\":1792008000000,\"purchaseDate\":1710705600000,\"remark\":\"前段高速贴装,配置 16 头轻量贴装头\",\"serialNumber\":\"NPMD3A24031801\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetId\":1,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"印刷设备\",\"deviceCode\":\"SMT-L01-PRINTER-01\",\"deviceName\":\"全自动锡膏印刷机\",\"enabledDate\":1712520000000,\"id\":1,\"keeper\":\"王磊\",\"lastInventoryTime\":1789726083000,\"location\":\"一车间 SMT-01 线前段\",\"manufacturer\":\"ASMPT\",\"model\":\"DEK NeoHorizon 03iX\",\"nextMaintenanceDate\":1791403200000,\"purchaseDate\":1710705600000,\"remark\":\"配置 2D 检测与自动擦网单元\",\"serialNumber\":\"DEK24NH03187\",\"status\":\"IN_USE\",\"updateTime\":1789726082000,\"useDepartment\":\"SMT生产部\"}]}}'); +INSERT INTO `tbl_log` VALUES (8696, 63, '接口日志', '43.152.142.128/1.9.116.218', '2026-09-30 07:24:04', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":255,\"rows\":[{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-383\",\"assetName\":\"Epson Epson LQ-310\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"383\",\"externalSource\":\"HARDWARE\",\"id\":20,\"keeper\":\"Hab\",\"location\":\"Admin Office\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: R9DY417590\",\"source\":\"SAS\",\"specification\":\"Printer / Epson / Epson LQ-310\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Ad\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-384\",\"assetName\":\"H3C H3C UniServer R3950 G6\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"384\",\"externalSource\":\"HARDWARE\",\"id\":19,\"keeper\":\"Haslim\",\"location\":\"Server Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 210235A4V0H259000004\",\"source\":\"SAS\",\"specification\":\"Server / H3C / H3C UniServer R3950 G6\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Technical & Technologies\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-385\",\"assetName\":\"TP-Link Omada SG3452\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"385\",\"externalSource\":\"HARDWARE\",\"id\":18,\"keeper\":\"Haslim\",\"location\":\"Server Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 225B0AN000371;MAC: 6C-4C-BC-C9-F0-8A\",\"source\":\"SAS\",\"specification\":\"Switch / TP-Link / Omada SG3452\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Technical & Technologies\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-387\",\"assetName\":\"HP HP LaserJet MFP M236sdw\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"387\",\"externalSource\":\"HARDWARE\",\"id\":17,\"location\":\"R&D Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: VNP5F19044\",\"source\":\"SAS\",\"specification\":\"Printer / HP / HP LaserJet MFP M236sdw\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Prod\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-389\",\"assetName\":\"Lenovo ThinkPad T14s 2-in-1\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"389\",\"externalSource\":\"HARDWARE\",\"id\":16,\"keeper\":\"Syed Bakri\",\"location\":\"Admin\",\"originalValue\":0.000000,\"purchaseDate\":1787169600000,\"quantity\":1.000000,\"remark\":\"序列号: PF6EN008\",\"source\":\"SAS\",\"specification\":\"Laptop / Lenovo / ThinkPad T14s 2-in-1 / Win 11 Home / Core Ultra 5 / 16G / 500G SSD\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"GM\"}]}}'); +INSERT INTO `tbl_log` VALUES (8697, 63, '接口日志', '43.174.54.44/1.9.116.218', '2026-09-30 07:24:14', 0, 'AssetController.options()', NULL, 'GET /apis/asset/options', '{}', '{\"code\":200,\"data\":{\"rows\":[{\"creator\":63,\"assetCode\":\"SIM-896019200694297052\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"UITM Dungun\",\"externalId\":\"6\",\"originalValue\":0.000000,\"specification\":\"183.171.146.98\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019200694297052\",\"location\":\"SMT (???)\",\"id\":270,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2020-12-16\",\"assetCode\":\"SIM-896019190221500578\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"5\",\"originalValue\":0.000000,\"specification\":\"183.171.14.125\",\"remark\":\"启用日期: 2020-12-16\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019190221500578\",\"location\":\"UITM Dungun\",\"id\":269,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2020-12-16\",\"assetCode\":\"SIM-896019190221500576\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"1\",\"originalValue\":0.000000,\"specification\":\"183.171.144.65\",\"remark\":\"使用期限: 2 Years;启用日期: 2020-12-16\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019190221500576\",\"location\":\"Genting\",\"id\":268,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2024-03-22\",\"assetCode\":\"SIM-896019210381607778\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"2\",\"originalValue\":0.000000,\"specification\":\"183.171.15.60\",\"remark\":\"使用期限: 2 Years;启用日期: 2024-03-22\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381607778\",\"location\":\"Genting\",\"id\":267,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2024-03-22\",\"assetCode\":\"SIM-896019210381607781\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"9\",\"originalValue\":0.000000,\"specification\":\"183.171.5.142 / KM08-LTE Modem / 21070014\",\"remark\":\"设备序列号: 21070014;电表序列号: 320910015;启用日期: 2024-03-22\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381607781\",\"location\":\"SMT (RnD) Modem RnD\",\"id\":266,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2024-07-15\",\"assetCode\":\"SIM-896019210381607777\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"3\",\"originalValue\":0.000000,\"specification\":\"183.171.40.182\",\"remark\":\"使用期限: 2 Years;启用日期: 2024-07-15\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381607777\",\"location\":\"Genting\",\"id\":265,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2024-07-15\",\"assetCode\":\"SIM-896019210381607782\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"4\",\"originalValue\":0.000000,\"specification\":\"183.171.40.117\",\"remark\":\"使用期限: 2 Years;启用日期: 2024-07-15\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381607782\",\"location\":\"Genting\",\"id\":264,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2024-09-29\",\"assetCode\":\"SIM-896019210381607784\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"7\",\"originalValue\":0.000000,\"specification\":\"183.171.50.5 / KM08-LTE Modem / 20041004\",\"remark\":\"设备序列号: 20041004;启用日期: 2024-09-29\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381607784\",\"location\":\"SMT (Modem-Production)\",\"id\":263,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2024-09-29\",\"assetCode\":\"SIM-896019210381607783\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"8\",\"originalValue\":0.000000,\"specification\":\"183.171.50.6 / KM08-LTE Modem / 2403005\",\"remark\":\"设备序列号: 2403005;启用日期: 2024-09-29\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381607783\",\"location\":\"SMT (RnD) Modem Store\",\"id\":262,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2025-12-23\",\"assetCode\":\"SIM-896019210381607785\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"10\",\"originalValue\":0.000000,\"specification\":\"183.171.151.171 / KM08-LTE Modem / 21070011\",\"remark\":\"设备序列号: 21070011;电表序列号: 320910014;启用日期: 2025-12-23\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381607785\",\"location\":\"SMT (RnD) Alyaa\",\"id\":261,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2025-12-23\",\"assetCode\":\"SIM-896019210381607786\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"11\",\"originalValue\":0.000000,\"specification\":\"183.171.208.37 / KM08-LTE Modem / 21070013\",\"remark\":\"设备序列号: 21070013;启用日期: 2025-12-23\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381607786\",\"location\":\"SMT (RnD) Alyaa\",\"id\":260,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2025-12-23\",\"assetCode\":\"SIM-896019210381702562\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"12\",\"originalValue\":0.000000,\"specification\":\"183.171.144.61\",\"remark\":\"启用日期: 2025-12-23\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381702562\",\"location\":\"Loan to Hanif/Adha (22-May-2026); \",\"id\":259,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2025-12-23\",\"assetCode\":\"SIM-896019210381607780\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"14\",\"originalValue\":0.000000,\"specification\":\"183.171.208.37\",\"remark\":\"使用期限: 2 Months;启用日期: 2025-12-23\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381607780\",\"location\":\"POC AEON\",\"id\":258,\"categoryId\":7,\"status\":\"SCRAPPED\"},{\"creator\":63,\"purchaseDate\":\"2025-12-23\",\"assetCode\":\"SIM-896019190221500577\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"15\",\"originalValue\":0.000000,\"specification\":\"183.171.144.61\",\"remark\":\"启用日期: 2025-12-23\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019190221500577\",\"location\":\"Kompleks Pertama\",\"id\":257,\"categoryId\":7,\"status\":\"SCRAPPED\"},{\"creator\":63,\"purchaseDate\":\"2025-12-23\",\"assetCode\":\"SIM-896019210381607779\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"13\",\"originalValue\":0.000000,\"specification\":\"183.171.151.171\",\"remark\":\"使用期限: 2 Months;启用日期: 2025-12-23\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381607779\",\"location\":\"POC AEON\",\"id\":256,\"categoryId\":7,\"status\":\"SCRAPPED\"},{\"creator\":63,\"purchaseDate\":\"2026-06-03\",\"assetCode\":\"SIM-896019210381702569\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"18\",\"originalValue\":0.000000,\"specification\":\"183.171.11.200\",\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381702569\",\"location\":\"With Amir\",\"id\":255,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2026-06-03\",\"assetCode\":\"SIM-896019210381702570\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"19\",\"originalValue\":0.000000,\"specification\":\"183.171.214.141\",\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381702570\",\"location\":\"With Amir\",\"id\":254,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2026-06-03\",\"assetCode\":\"SIM-896019210381702571\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"23\",\"originalValue\":0.000000,\"specification\":\"183.171.9.45\",\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381702571\",\"location\":\"R&D room, SMT\",\"id\":253,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2026-06-03\",\"assetCode\":\"SIM-896019210381702568\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"24\",\"originalValue\":0.000000,\"specification\":\"183.171.214.217 / 4G Modem\",\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381702568\",\"location\":\"Molnlycke Health Care\",\"id\":252,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2026-06-03\",\"assetCode\":\"SIM-896019210381702567\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"25\",\"originalValue\":0.000000,\"specification\":\"183.171.12.143 / 4G Modem\",\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381702567\",\"location\":\"Molnlycke Health Care\",\"id\":251,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2026-06-03\",\"assetCode\":\"SIM-896019210381702566\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"26\",\"originalValue\":0.000000,\"specification\":\"183.171.11.123 / Lora Gateway\",\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381702566\",\"location\":\"GT3.1 (Nur)\",\"id\":250,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2026-06-03\",\"assetCode\":\"SIM-896019210381702565\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"27\",\"originalValue\":0.000000,\"specification\":\"183.171.12.136 / Lora Gateway\",\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381702565\",\"location\":\"Menicon Malaysia\",\"id\":249,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2026-06-03\",\"assetCode\":\"SIM-896019210381702564\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"28\",\"originalValue\":0.000000,\"specification\":\"183.171.10.11 / 4G Modem\",\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381702564\",\"location\":\"First Solar Malaysia\",\"id\":248,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2026-06-03\",\"assetCode\":\"SIM-896019210381702563\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"29\",\"originalValue\":0.000000,\"specification\":\"183.171.11.141 / 4G Modem\",\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381702563\",\"location\":\"First Solar Malaysia\",\"id\":247,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2023-09-18\",\"assetCode\":\"SAS-SW-2\",\"quantity\":15.000000,\"assetCategory\":\"软件资产\",\"externalId\":\"2\",\"originalValue\":8700.000000,\"specification\":\"Amimo\",\"remark\":\"供应商: Amimo;发票号: INV230902\",\"updateTime\":1790613750000,\"categoryCode\":\"SOFTWARE\",\"source\":\"SAS\",\"externalSource\":\"SOFTWARE\",\"deleteFlag\":\"0\",\"unit\":\"套\",\"createTime\":1790613750000,\"assetName\":\"MS Office 2019 Home & Business\",\"id\":246,\"categoryId\":6,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2024-01-11\",\"assetCode\":\"SAS-SW-3\",\"quantity\":2.000000,\"assetCategory\":\"软件资产\",\"externalId\":\"3\",\"originalValue\":1160.000000,\"specification\":\"Amimo\",\"remark\":\"供应商: Amimo;发票号: INV240101\",\"updateTime\":1790613750000,\"categoryCode\":\"SOFTWARE\",\"source\":\"SAS\",\"externalSource\":\"SOFTWARE\",\"deleteFlag\":\"0\",\"unit\":\"套\",\"createTime\":1790613750000,\"assetName\":\"MS Office 2019 Home & Business\",\"id\":245,\"categoryId\":6,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2024-09-27\",\"assetCode\":\"SAS-SW-4\",\"quantity\":1.000000,\"assetCategory\":\"软件资产\",\"externalId\":\"4\",\"originalValue\":0.000000,\"specification\":\"Amimo\",\"remark\":\"供应商: Amimo;发票号: INV240901;原备注: Price bundled with PC purchase.\",\"updateTime\":1790613750000,\"categoryCode\":\"SOFTWARE\",\"source\":\"SAS\",\"externalSource\":\"SOFTWARE\",\"deleteFlag\":\"0\",\"unit\":\"套\",\"createTime\":1790613750000,\"assetName\":\"MS Office 2019 Pro\",\"id\":244,\"categoryId\":6,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2024-04-03\",\"assetCode\":\"SAS-SW-5\",\"quantity\":1.000000,\"assetCategory\":\"软件资产\",\"externalId\":\"5\",\"originalValue\":580.000000,\"specification\":\"Amimo\",\"remark\":\"供应商: Amimo;发票号: INV240402\",\"updateTime\":1790613750000,\"categoryCode\":\"SOFTWARE\",\"source\":\"SAS\",\"externalSource\":\"SOFTWARE\",\"deleteFlag\":\"0\",\"unit\":\"套\",\"createTime\":1790613750000,\"assetName\":\"MS Office 2019 Pro Plus\",\"id\":243,\"categoryId\":6,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2025-01-14\",\"assetCode\":\"SAS-SW-6\",\"quantity\":4.000000,\"assetCategory\":\"软件资产\",\"externalId\":\"6\",\"originalValue\":2320.000000,\"specification\":\"Amimo\",\"remark\":\"供应商: Amimo;发票号: QUO250101\",\"updateTime\":1790613750000,\"categoryCode\":\"SOFTWARE\",\"source\":\"SAS\",\"externalSource\":\"SOFTWARE\",\"deleteFlag\":\"0\",\"unit\":\"套\",\"createTime\":1790613750000,\"assetName\":\"MS Office 2019 Pro Plus\",\"id\":242,\"categoryId\":6,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2024-02-13\",\"assetCode\":\"SAS-SW-7\",\"quantity\":1.000000,\"assetCategory\":\"软件资产\",\"externalId\":\"7\",\"originalValue\":750.000000,\"specification\":\"Amimo\",\"remark\":\"供应商: Amimo;发票号: INV240201\",\"updateTime\":1790613750000,\"categoryCode\":\"SOFTWARE\",\"source\":\"SAS\",\"externalSource\":\"SOFTWARE\",\"deleteFlag\":\"0\",\"unit\":\"套\",\"createTime\":1790613750000,\"assetName\":\"MS Office 2021 Home & Business\",\"id\":241,\"categoryId\":6,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2024-04-03\",\"assetCode\":\"SAS-SW-8\",\"quantity\":2.000000,\"assetCategory\":\"软件资产\",\"externalId\":\"8\",\"originalValue\":0.000000,\"specification\":\"Amimo\",\"remark\":\"供应商: Amimo;发票号: INV240401;原备注: Price bundled with PC purchase.\",\"updateTime\":1790613750000,\"categoryCode\":\"SOFTWARE\",\"source\":\"SAS\",\"externalSource\":\"SOFTWARE\",\"deleteFlag\":\"0\",\"unit\":\"套\",\"createTime\":1790613750000,\"assetName\":\"MS Office 2021 Pro\",\"id\":240,\"categoryId\":6,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2024-06-21\",\"assetCode\":\"SAS-SW-9\",\"quantity\":1.000000,\"assetCategory\":\"软件资产\",\"externalId\":\"9\",\"originalValue\":0.000000,\"specification\":\"Amimo\",\"remark\":\"供应商: Amimo;发票号: INV240601;原备注: Price bundled with PC purchase.\",\"updateTime\":1790613750000,\"categoryCode\":\"SOFTWARE\",\"source\":\"SAS\",\"externalSource\":\"SOFTWARE\",\"deleteFlag\":\"0\",\"useDepartment\":\"HR\",\"unit\":\"套\",\"createTime\":1790613750000,\"assetName\":\"MS Office 2021 Pro\",\"id\":239,\"categoryId\":6,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2026-01-21\",\"assetCode\":\"SAS-SW-10\",\"quantity\":10.000000,\"assetCategory\":\"软件资产\",\"externalId\":\"10\",\"originalValue\":0.000000,\"specification\":\"Amimo\",\"remark\":\"供应商: Amimo;许可证: Smt@123;发票号: INV260101;原备注: Bundled with 10 unit of PC purchase for Lab.\",\"updateTime\":1790613750000,\"categoryCode\":\"SOFTWARE\",\"source\":\"SAS\",\"externalSource\":\"SOFTWARE\",\"deleteFlag\":\"0\",\"useDepartment\":\"Laboratory\",\"unit\":\"套\",\"createTime\":1790613750000,\"assetName\":\"MS Office Home & Business\",\"id\":238,\"categoryId\":6,\"status\":\"IN_USE\"},{\"creator\":63,\"assetCode\":\"SAS-SW-11\",\"quantity\":1.000000,\"assetCategory\":\"软件资产\",\"externalId\":\"11\",\"originalValue\":0.000000,\"specification\":\"Amimo\",\"remark\":\"供应商: Amimo;原备注: Bundled with 1 unit of Laptop\",\"updateTime\":1790613750000,\"categoryCode\":\"SOFTWARE\",\"source\":\"SAS\",\"externalSource\":\"SOFTWARE\",\"deleteFlag\":\"0\",\"useDepartment\":\"Tech & Technology\",\"unit\":\"套\",\"createTime\":1790613750000,\"assetName\":\"MS Office Home & Business\",\"id\":237,\"categoryId\":6,\"status\":\"IN_USE\"},{\"creator\":63,\"assetCode\":\"SAS-SW-12\",\"quantity\":1.000000,\"assetCategory\":\"软件资产\",\"externalId\":\"12\",\"originalValue\":0.000000,\"specification\":\"CD\",\"remark\":\"许可证: BX27V-J9QMG-3VVWY-7JTYT-94CXB\",\"updateTime\":1790613750000,\"categoryCode\":\"SOFTWARE\",\"source\":\"SAS\",\"externalSource\":\"SOFTWARE\",\"deleteFlag\":\"0\",\"unit\":\"套\",\"createTime\":1790613750000,\"assetName\":\"MS Office Home & Business 2010\",\"id\":236,\"categoryId\":6,\"status\":\"IN_USE\"},{\"creator\":63,\"assetCode\":\"SAS-SW-13\",\"quantity\":1.000000,\"assetCategory\":\"软件资产\",\"externalId\":\"13\",\"originalValue\":0.000000,\"specification\":\"CD\",\"remark\":\"许可证: GTTC2-XH8PW-3WJFH-76VFQ-PHYX9\",\"updateTime\":1790613750000,\"categoryCode\":\"SOFTWARE\",\"source\":\"SAS\",\"externalSource\":\"SOFTWARE\",\"deleteFlag\":\"0\",\"unit\":\"套\",\"createTime\":1790613750000,\"assetName\":\"MS Office Home & Business 2010\",\"id\":235,\"categoryId\":6,\"status\":\"IN_USE\"},{\"creator\":63,\"assetCode\":\"SAS-SW-14\",\"quantity\":1.000000,\"assetCategory\":\"软件资产\",\"externalId\":\"14\",\"originalValue\":0.000000,\"specification\":\"CD\",\"remark\":\"许可证: WY8KV-GQ39X-2WQF2-V8R93-RY6CT\",\"updateTime\":1790613750000,\"categoryCode\":\"SOFTWARE\",\"source\":\"SAS\",\"externalSource\":\"SOFTWARE\",\"deleteFlag\":\"0\",\"unit\":\"套\",\"createTime\":1790613750000,\"assetName\":\"MS Office Home & Business 2010\",\"id\":234,\"categoryId\":6,\"status\":\"IN_USE\"},{\"creator\":63,\"assetCode\":\"SAS-SW-15\",\"quantity\":1.000000,\"assetCategory\":\"软件资产\",\"externalId\":\"15\",\"originalValue\":0.000000,\"specification\":\"CD\",\"remark\":\"许可证: YBDDT-C4QPP-J6T63-DQMB8-9XB29;原备注: Written: Burnny / Asus\",\"updateTime\":1790613750000,\"categoryCode\":\"SOFTWARE\",\"source\":\"SAS\",\"externalSource\":\"SOFTWARE\",\"deleteFlag\":\"0\",\"unit\":\"套\",\"createTime\":1790613750000,\"assetName\":\"MS Office Home & Business 2010\",\"id\":233,\"categoryId\":6,\"status\":\"IN_USE\"},{\"creator\":63,\"assetCode\":\"SAS-SW-16\",\"quantity\":1.000000,\"assetCategory\":\"软件资产\",\"externalId\":\"16\",\"originalValue\":0.000000,\"specification\":\"CD\",\"remark\":\"许可证: XG2WV-YRDV4-VQWQ2-XQQ26-XJ3FF;原备注: Written: SGH109RCWK\",\"updateTime\":1790613750000,\"categoryCode\":\"SOFTWARE\",\"source\":\"SAS\",\"externalSource\":\"SOFTWARE\",\"deleteFlag\":\"0\",\"unit\":\"套\",\"createTime\":1790613750000,\"assetName\":\"MS Office Home & Business 2010\",\"id\":232,\"categoryId\":6,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2024-10-14\",\"assetCode\":\"SAS-SW-1\",\"quantity\":2.000000,\"assetCategory\":\"软件资产\",\"externalId\":\"1\",\"originalValue\":0.000000,\"specification\":\"Amimo\",\"remark\":\"供应商: Amimo;发票号: INV240902;原备注: For server\",\"updateTime\":1790613750000,\"categoryCode\":\"SOFTWARE\",\"source\":\"SAS\",\"externalSource\":\"SOFTWARE\",\"deleteFlag\":\"0\",\"unit\":\"套\",\"createTime\":1790613750000,\"assetName\":\"Linux 6.8.0-45\",\"id\":231,\"categoryId\":6,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2024-10-14\",\"assetCode\":\"SAS-SW-33\",\"quantity\":2.000000,\"assetCategory\":\"软件资产\",\"externalId\":\"33\",\"originalValue\":0.000000,\"specification\":\"Amimo\",\"remark\":\"供应商: Ami...[已截断]'); +INSERT INTO `tbl_log` VALUES (8698, 63, '接口日志', '43.152.142.108/1.9.116.218', '2026-09-30 07:24:19', 0, 'AssetInventoryController.operatorOptions()', NULL, 'GET /apis/assetInventory/operatorOptions', '{}', '{\"code\":200,\"data\":{\"rows\":[{\"loginName\":\"admin\",\"name\":\"admin\",\"id\":63}],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (8699, 63, '接口日志', '43.152.142.140/1.9.116.218', '2026-09-30 07:24:19', 0, 'AssetInventoryController.list(..)', NULL, 'GET /apis/assetInventory/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":4,\"rows\":[{\"abnormalCount\":0,\"auditTime\":1790003845000,\"auditUserId\":149,\"completedAt\":1790003836000,\"createTime\":1790003320000,\"creator\":149,\"deadline\":1790258400000,\"deleteFlag\":\"0\",\"id\":6,\"inventoriedCount\":1,\"inventoryNo\":\"PD20260921190840893\",\"inventoryUserId\":63,\"inventoryUserName\":\"admin\",\"normalCount\":1,\"planName\":\"2026年09月资产设备专项盘点\",\"plannedAt\":1790053200000,\"scopeType\":\"DEVICE\",\"source\":\"MANUAL\",\"startedAt\":1790003819000,\"status\":\"CLOSED\",\"totalCount\":1,\"updateTime\":1790003848000,\"updater\":149},{\"abnormalCount\":0,\"createTime\":1790003280000,\"creator\":149,\"deadline\":1790258400000,\"deleteFlag\":\"0\",\"id\":5,\"inventoriedCount\":0,\"inventoryNo\":\"PD20260921190800418\",\"inventoryUserId\":149,\"inventoryUserName\":\"张三\",\"normalCount\":0,\"planName\":\"2026年09月资产设备专项盘点\",\"plannedAt\":1790053200000,\"remark\":\"进行盘点\",\"scopeType\":\"ALL\",\"source\":\"MANUAL\",\"status\":\"ACCEPTED\",\"totalCount\":2,\"updateTime\":1790003293000,\"updater\":149},{\"abnormalCount\":0,\"completedAt\":1790002875000,\"createTime\":1789995983000,\"creator\":63,\"deadline\":1790258400000,\"deleteFlag\":\"0\",\"id\":4,\"inventoriedCount\":8,\"inventoryNo\":\"PD20260921170623856\",\"inventoryUserId\":149,\"inventoryUserName\":\"张三\",\"normalCount\":0,\"planName\":\"2026年09月资产设备专项盘点\",\"plannedAt\":1790053200000,\"remark\":\"进行盘点\",\"scopeType\":\"ASSET\",\"source\":\"MANUAL\",\"startedAt\":1790002559000,\"status\":\"CLOSED\",\"totalCount\":8,\"updateTime\":1790003793000,\"updater\":149},{\"abnormalCount\":0,\"createTime\":1789722750000,\"creator\":63,\"deadline\":1789999200000,\"deleteFlag\":\"0\",\"id\":1,\"inventoriedCount\":1,\"inventoryNo\":\"PD20260918131230171\",\"inventoryUserId\":36,\"inventoryUserName\":\"张伟\",\"normalCount\":0,\"planName\":\"2026年09月资产设备专项盘点\",\"plannedAt\":1789794000000,\"remark\":\"进行盘点\",\"scopeType\":\"DEVICE\",\"source\":\"MANUAL\",\"startedAt\":1789723142000,\"status\":\"IN_PROGRESS\",\"totalCount\":3,\"updateTime\":1789986959000,\"updater\":63}]}}'); +INSERT INTO `tbl_log` VALUES (8700, 63, '接口日志', '43.174.53.16/1.9.116.218', '2026-09-30 07:24:22', 0, 'AssetInventoryController.details(..)', NULL, 'GET /apis/assetInventory/details', '{\"inventoryId\":1,\"keyword\":\"\"}', '{\"code\":200,\"data\":{\"total\":3,\"rows\":[{\"actualQuantity\":0.000000,\"bookDepartment\":\"SMT生产部\",\"bookLocation\":\"一车间 SMT-01 线 A 工位\",\"bookQuantity\":1.000000,\"createTime\":1789722750000,\"id\":2,\"imageGroupId\":\"01f08d9e8b2c43cfa2fb59a67ac6a954\",\"imageUrls\":[\"/apis/systemConfig/static/asset-inventory/图片1_1789973064775.png\"],\"inventoryId\":1,\"inventoryStatus\":\"PENDING\",\"model\":\"Panasonic NPM-D3A\",\"targetCode\":\"SMT-L01-MOUNTER-A\",\"targetId\":2,\"targetName\":\"高速模块贴片机 A\",\"targetType\":\"DEVICE\",\"updateTime\":1789987464000},{\"actualQuantity\":0.000000,\"bookDepartment\":\"SMT生产部\",\"bookLocation\":\"一车间 SMT-01 线 B 工位\",\"bookQuantity\":1.000000,\"createTime\":1789722750000,\"id\":3,\"imageUrls\":[],\"inventoryId\":1,\"inventoryStatus\":\"PENDING\",\"model\":\"Panasonic NPM-W2S\",\"targetCode\":\"SMT-L01-MOUNTER-B\",\"targetId\":3,\"targetName\":\"多功能贴片机 B\",\"targetType\":\"DEVICE\",\"updateTime\":1789722750000},{\"actualLocation\":\"一车间 印刷检测区-A区\",\"actualQuantity\":1.000000,\"bookDepartment\":\"品质部\",\"bookLocation\":\"一车间 印刷检测区\",\"bookQuantity\":1.000000,\"createTime\":1789722750000,\"id\":1,\"imageUrls\":[],\"inventoryId\":1,\"inventoryStatus\":\"INVENTORIED\",\"inventoryTime\":1789986951000,\"inventoryUserId\":63,\"inventoryUserName\":\"admin\",\"model\":\"KY8030-3\",\"remark\":\"111\",\"targetCode\":\"QC-SPI-01\",\"targetId\":6,\"targetName\":\"在线 3D SPI\",\"targetType\":\"DEVICE\",\"updateTime\":1789986959000}]}}'); +INSERT INTO `tbl_log` VALUES (8701, NULL, '接口日志', '43.152.142.62/1.9.116.218', '2026-09-30 07:24:23', 0, 'SystemConfigController.view(..)', NULL, 'GET /apis/systemConfig/static/asset-inventory/%E5%9B%BE%E7%89%871_1789973064775.png', '{}', NULL); +INSERT INTO `tbl_log` VALUES (8702, 63, '接口日志', '43.152.142.41/1.9.116.218', '2026-09-30 07:24:40', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (8703, 63, '接口日志', '43.174.52.31/1.9.116.218', '2026-09-30 07:24:42', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (8704, 63, '接口日志', '43.152.142.31/1.9.116.218', '2026-09-30 07:24:42', 0, 'MaterialController.getList(..)', NULL, 'GET /apis/material/list', '{\"search\":\"{\\\"materialParam\\\":\\\"\\\",\\\"standard\\\":\\\"\\\",\\\"model\\\":\\\"\\\",\\\"color\\\":\\\"\\\",\\\"brand\\\":\\\"\\\",\\\"mfrs\\\":\\\"\\\",\\\"otherField1\\\":\\\"\\\",\\\"otherField2\\\":\\\"\\\",\\\"otherField3\\\":\\\"\\\",\\\"weight\\\":\\\"\\\",\\\"expiryNum\\\":\\\"\\\",\\\"position\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"mpList\\\":\\\"扩展1,扩展2,扩展3\\\"}\"}', '{\"code\":200,\"data\":{\"total\":24,\"rows\":[{\"attribute\":\"{}\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"categoryId\":33,\"categoryName\":\"成品\",\"commodityDecimal\":200.000000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":706,\"imgName\":\"\",\"initialStock\":0,\"lowDecimal\":200.000000,\"mBarCode\":\"1002\",\"materialOther\":\"\",\"mfrs\":\"SMT\",\"mnemonic\":\"MD-4G111(VF) 4G\",\"model\":\"MD-4G111(VF) 4G\",\"name\":\"MD-4G111(VF) 4G\",\"purchaseDecimal\":100.000000,\"sku\":\"\",\"standard\":\"MD-4G111(VF) 4G\",\"stock\":0,\"unit\":\"只\",\"wholesaleDecimal\":200.000000},{\"attribute\":\"{}\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"categoryId\":34,\"categoryName\":\"包装\",\"commodityDecimal\":10.000000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":705,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":10.000000,\"mBarCode\":\"1001\",\"materialOther\":\"\",\"mnemonic\":\"MD-4G111(VF) bz\",\"model\":\"MD-4G111(VF)\",\"name\":\"MD-4G111(VF) 包装\",\"purchaseDecimal\":10.000000,\"sku\":\"\",\"standard\":\"MD-4G111(VF) packing\",\"stock\":0.000000,\"unit\":\"件\",\"wholesaleDecimal\":10.000000},{\"attribute\":\"\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryId\":33,\"categoryName\":\"成品\",\"color\":\"\",\"commodityDecimal\":340.000000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":704,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":340.000000,\"mBarCode\":\"3PH-APEC3-WC\",\"materialOther\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mnemonic\":\"\",\"model\":\"3PH APEC3-WC\",\"name\":\"3PH APEC3-WC\",\"otherField1\":\"\",\"otherField2\":\"\",\"otherField3\":\"\",\"position\":\"\",\"purchaseDecimal\":317.500000,\"remark\":\"Excel初始化;条码:3PH-APEC3-WC\",\"standard\":\"3PH APEC3-WC\",\"stock\":7223.000000,\"tenantId\":63,\"unit\":\"件\",\"wholesaleDecimal\":340.000000},{\"attribute\":\"\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryId\":33,\"categoryName\":\"成品\",\"color\":\"\",\"commodityDecimal\":73.500000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":703,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":73.500000,\"mBarCode\":\"1PH-WS79\",\"materialOther\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mnemonic\":\"\",\"model\":\"1PH WS79\",\"name\":\"1PH WS79\",\"otherField1\":\"\",\"otherField2\":\"\",\"otherField3\":\"\",\"position\":\"\",\"purchaseDecimal\":59.500000,\"remark\":\"Excel初始化;条码:1PH-WS79\",\"standard\":\"1PH WS79\",\"stock\":52400.000000,\"tenantId\":63,\"unit\":\"件\",\"wholesaleDecimal\":73.500000},{\"attribute\":\"\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryId\":32,\"categoryName\":\"半成品\",\"color\":\"\",\"commodityDecimal\":24.300000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":702,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":24.300000,\"mBarCode\":\"C.4.T.0.00722\",\"materialOther\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mnemonic\":\"\",\"model\":\"MD-RS178(VA)\",\"name\":\"MD-RS178(VA) RS485分线器\",\"otherField1\":\"\",\"otherField2\":\"\",\"otherField3\":\"\",\"position\":\"\",\"purchaseDecimal\":24.300000,\"remark\":\"Excel初始化;条码:C.4.T.0.00722\",\"standard\":\"MD-RS178(VA)\",\"stock\":1000.000000,\"tenantId\":63,\"unit\":\"件\",\"wholesaleDecimal\":24.300000},{\"attribute\":\"\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryId\":32,\"categoryName\":\"半成品\",\"color\":\"\",\"commodityDecimal\":142.560000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":701,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":142.560000,\"mBarCode\":\"C.4.T.0.0068900002\",\"materialOther\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mnemonic\":\"\",\"model\":\"MD-RS114(VB)\",\"name\":\"MD-RS114(VB) 基于RS485的MODBS TCPMODBS RTUASVII转换模块_(DZG)\",\"otherField1\":\"\",\"otherField2\":\"\",\"otherField3\":\"\",\"position\":\"\",\"purchaseDecimal\":142.560000,\"remark\":\"Excel初始化;条码:C.4.T.0.0068900002\",\"standard\":\"MD-RS114(VB)\",\"stock\":100.000000,\"tenantId\":63,\"unit\":\"件\",\"wholesaleDecimal\":142.560000},{\"attribute\":\"\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryId\":32,\"categoryName\":\"半成品\",\"color\":\"\",\"commodityDecimal\":132.840000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":700,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":132.840000,\"mBarCode\":\"C.4.T.0.00686\",\"materialOther\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mnemonic\":\"\",\"model\":\"TC160(VA)\",\"name\":\"TC160(VA) 通讯模块供电盒\",\"otherField1\":\"\",\"otherField2\":\"\",\"otherField3\":\"\",\"position\":\"\",\"purchaseDecimal\":132.840000,\"remark\":\"Excel初始化;条码:C.4.T.0.00686\",\"standard\":\"TC160(VA)\",\"stock\":50.000000,\"tenantId\":63,\"unit\":\"件\",\"wholesaleDecimal\":132.840000},{\"attribute\":\"\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryId\":32,\"categoryName\":\"半成品\",\"color\":\"\",\"commodityDecimal\":0.100000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":699,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":0.100000,\"mBarCode\":\"C.4.T.0.00654\",\"materialOther\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mnemonic\":\"\",\"model\":\"MD-4G111(VF)\",\"name\":\"MD-4G111(VF) 4G模块\",\"otherField1\":\"\",\"otherField2\":\"\",\"otherField3\":\"\",\"position\":\"\",\"purchaseDecimal\":0.100000,\"remark\":\"Excel初始化;条码:C.4.T.0.00654\",\"standard\":\"MD-4G111(VF)\",\"stock\":76970.000000,\"tenantId\":63,\"unit\":\"件\",\"wholesaleDecimal\":0.100000},{\"attribute\":\"\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryId\":32,\"categoryName\":\"半成品\",\"color\":\"\",\"commodityDecimal\":324.000000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":698,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":324.000000,\"mBarCode\":\"C.4.T.0.00562\",\"materialOther\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mnemonic\":\"\",\"model\":\"MD-4GVIII(VB)\",\"name\":\"MD-4GVIII(VB)\",\"otherField1\":\"\",\"otherField2\":\"\",\"otherField3\":\"\",\"position\":\"\",\"purchaseDecimal\":324.000000,\"remark\":\"Excel初始化;条码:C.4.T.0.00562\",\"standard\":\"MD-4GVIII(VB)\",\"stock\":50.000000,\"tenantId\":63,\"unit\":\"件\",\"wholesaleDecimal\":324.000000},{\"attribute\":\"\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryId\":32,\"categoryName\":\"半成品\",\"color\":\"\",\"commodityDecimal\":129.600000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":697,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":129.600000,\"mBarCode\":\"C.4.T.0.00553\",\"materialOther\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mnemonic\":\"\",\"model\":\"MT-P109(VA)\",\"name\":\"MT-P109(VA)\",\"otherField1\":\"\",\"otherField2\":\"\",\"otherField3\":\"\",\"position\":\"\",\"purchaseDecimal\":129.600000,\"remark\":\"Excel初始化;条码:C.4.T.0.00553\",\"standard\":\"MT-P109(VA)\",\"stock\":500.000000,\"tenantId\":63,\"unit\":\"件\",\"wholesaleDecimal\":129.600000}]}}'); +INSERT INTO `tbl_log` VALUES (8705, 63, '接口日志', '43.174.32.33/1.9.116.218', '2026-09-30 07:24:44', 0, 'UnitController.getList(..)', NULL, 'GET /apis/unit/list', '{\"search\":\"{\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":4,\"rows\":[{\"basicUnit\":\"瓶\",\"deleteFlag\":\"0\",\"enabled\":true,\"id\":21,\"name\":\"瓶/(箱=12瓶)\",\"otherUnit\":\"箱\",\"ratio\":12.000,\"tenantId\":63},{\"basicUnit\":\"盒\",\"deleteFlag\":\"0\",\"enabled\":true,\"id\":20,\"name\":\"盒/(箱=8盒)\",\"otherUnit\":\"箱\",\"ratio\":8.000,\"tenantId\":63},{\"basicUnit\":\"个\",\"deleteFlag\":\"0\",\"enabled\":true,\"id\":19,\"name\":\"个/(盒=15个)\",\"otherUnit\":\"盒\",\"ratio\":15.000,\"tenantId\":63},{\"basicUnit\":\"个\",\"deleteFlag\":\"0\",\"enabled\":true,\"id\":15,\"name\":\"个/(箱=12个)\",\"otherUnit\":\"箱\",\"ratio\":12.000,\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (8706, 63, '接口日志', '43.174.53.11/1.9.116.218', '2026-09-30 07:24:45', 0, 'MaterialAttributeController.getList(..)', NULL, 'GET /apis/materialAttribute/list', '{\"search\":\"{\\\"attributeName\\\":\\\"\\\",\\\"attributeValue\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":5,\"rows\":[{\"attributeName\":\"自定义3\",\"deleteFlag\":\"0\",\"id\":5,\"tenantId\":63},{\"attributeName\":\"自定义2\",\"deleteFlag\":\"0\",\"id\":4,\"tenantId\":63},{\"attributeName\":\"自定义1\",\"attributeValue\":\"小米|华为\",\"deleteFlag\":\"0\",\"id\":3,\"tenantId\":63},{\"attributeName\":\"多尺寸\",\"attributeValue\":\"S|M|L|XL|XXL|XXXL\",\"deleteFlag\":\"0\",\"id\":2,\"tenantId\":63},{\"attributeName\":\"多颜色\",\"attributeValue\":\"红色|橙色|黄色|绿色|蓝色|紫色\",\"deleteFlag\":\"0\",\"id\":1,\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (8707, 63, '接口日志', '43.152.142.34/1.9.116.218', '2026-09-30 07:25:38', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":255,\"rows\":[{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAB/031PC\",\"assetName\":\"HP\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"221\",\"externalSource\":\"HARDWARE\",\"id\":60,\"keeper\":\"Aqila\",\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Testing / Lab\",\"source\":\"SAS\",\"specification\":\"Monitor / HP\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/N02/CPU020\",\"assetName\":\"HP HP Pro 3330 MT\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"220\",\"externalSource\":\"HARDWARE\",\"id\":59,\"keeper\":\"Aqila\",\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: SGH221S6SH;用途: Testing / Lab\",\"source\":\"SAS\",\"specification\":\"CPU / HP / HP Pro 3330 MT / Win 10 Pro / Core i7-2600 / 8G / 220G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAB/030PC\",\"assetName\":\"HP ProDesk 400 G7\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"219\",\"externalSource\":\"HARDWARE\",\"id\":58,\"keeper\":\"Aqila\",\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 4CE216BDPN;用途: Testing / Lab;原备注: Windows License Key : QRWJ7-2N8MF-TM9WY-HKB42-VFR9C\\n\",\"source\":\"SAS\",\"specification\":\"CPU / HP / ProDesk 400 G7 / Win 11 Pro / Core i5-10500 / 16G / 250G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAB/029CPU\",\"assetName\":\"HP ProDesk 400 G7\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"218\",\"externalSource\":\"HARDWARE\",\"id\":57,\"keeper\":\"Aqila\",\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 4CE219BMSP;用途: Testing / Lab\",\"source\":\"SAS\",\"specification\":\"CPU / HP / ProDesk 400 G7 / Win 11 Pro / Core i5-10500 / 16G / 1TB\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAB/029PC\",\"assetName\":\"HP\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"217\",\"externalSource\":\"HARDWARE\",\"id\":56,\"keeper\":\"Aqila\",\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Testing / Lab\",\"source\":\"SAS\",\"specification\":\"Monitor / HP\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAP19/11112024\",\"assetName\":\"Lenovo ThinkPad X1 Carbon Gen 8\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"216\",\"externalSource\":\"HARDWARE\",\"id\":55,\"keeper\":\"Hasmah\",\"location\":\"Not Specified\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Not Specified;原备注: RETURN TO SUPPLIER DUE THE PROBLEM\",\"source\":\"SAS\",\"specification\":\"Laptop / Lenovo / ThinkPad X1 Carbon Gen 8\",\"status\":\"REPAIR\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Human Resources\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAP18/11112024\",\"assetName\":\"Lenovo ThinkPad X1 Carbon Gen 8\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"215\",\"externalSource\":\"HARDWARE\",\"id\":54,\"keeper\":\"Hasmah\",\"location\":\"Stored with HR\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Stored\",\"source\":\"SAS\",\"specification\":\"Laptop / Lenovo / ThinkPad X1 Carbon Gen 8\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Human Resources\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAP17/11112024\",\"assetName\":\"HP Pro Book 440\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"214\",\"externalSource\":\"HARDWARE\",\"id\":53,\"keeper\":\"Hasmah\",\"location\":\"Stored with HR\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Stored\",\"source\":\"SAS\",\"specification\":\"Laptop / HP / Pro Book 440\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Human Resources\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAP16/11112024\",\"assetName\":\"HP Radeon Intel Core i5\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"213\",\"externalSource\":\"HARDWARE\",\"id\":52,\"keeper\":\"Hasmah\",\"location\":\"Stored with HR\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Stored\",\"source\":\"SAS\",\"specification\":\"Laptop / HP / Radeon Intel Core i5\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Human Resources\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-212\",\"assetName\":\"HP All-in-One 24-dp0209d\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"212\",\"externalSource\":\"HARDWARE\",\"id\":51,\"keeper\":\"Hasmah\",\"location\":\"HR Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 8CC10109F6\",\"source\":\"SAS\",\"specification\":\"All-In-One / HP / All-in-One 24-dp0209d / Win 10 Home / AMD Ryzen 5 4500U / 24G / 500G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Human Resources\"}]}}'); +INSERT INTO `tbl_log` VALUES (8708, 63, '接口日志', '43.152.142.62/1.9.116.218', '2026-09-30 07:25:40', 0, 'AssetController.categoryOptions()', NULL, 'GET /apis/asset/category/options', '{}', '{\"code\":200,\"data\":{\"rows\":[{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"尚未归入具体种类的资产\",\"updateTime\":1790613193000,\"categoryCode\":\"UNCATEGORIZED\",\"id\":4,\"sort\":10,\"categoryName\":\"未分类\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System 硬件台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"HARDWARE\",\"id\":5,\"sort\":20,\"categoryName\":\"硬件资产\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System 软件台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"SOFTWARE\",\"id\":6,\"sort\":30,\"categoryName\":\"软件资产\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System SIM 卡台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"SIM_CARD\",\"id\":7,\"sort\":40,\"categoryName\":\"SIM卡\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_01BF8DA563A0\",\"id\":11,\"sort\":100,\"categoryName\":\"生产设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_7129859760C3\",\"id\":12,\"sort\":100,\"categoryName\":\"检测设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_9F38069B30A1\",\"id\":13,\"sort\":100,\"categoryName\":\"动力设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_75F489029B11\",\"id\":14,\"sort\":100,\"categoryName\":\"IT设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_3DDFE01CA0B8\",\"id\":15,\"sort\":100,\"categoryName\":\"物流设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_B5D44F2B039A\",\"id\":16,\"sort\":100,\"categoryName\":\"工装设备\",\"enabled\":true}],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (8709, 63, '接口日志', '43.152.142.110/1.9.116.218', '2026-09-30 07:25:50', 0, 'AssetInventoryController.details(..)', NULL, 'GET /apis/assetInventory/details', '{\"inventoryId\":6,\"keyword\":\"\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"actualDepartment\":\"品质部\",\"actualLocation\":\"一车间 AOI 检测区\",\"actualQuantity\":1.000000,\"bookDepartment\":\"品质部\",\"bookLocation\":\"一车间 AOI 检测区\",\"bookQuantity\":1.000000,\"createTime\":1790003320000,\"id\":16,\"imageUrls\":[],\"inventoryId\":6,\"inventoryStatus\":\"NORMAL\",\"inventoryTime\":1790003830000,\"inventoryUserId\":149,\"inventoryUserName\":\"张三\",\"model\":\"Zenith 2\",\"remark\":\"111\",\"targetCode\":\"QC-AOI-01\",\"targetId\":5,\"targetName\":\"在线 3D AOI\",\"targetType\":\"DEVICE\",\"updateTime\":1790003830000}]}}'); +INSERT INTO `tbl_log` VALUES (8710, 63, '接口日志', '43.174.32.12/1.9.116.218', '2026-09-30 07:25:53', 0, 'AssetInventoryController.details(..)', NULL, 'GET /apis/assetInventory/details', '{\"inventoryId\":4,\"keyword\":\"\"}', '{\"code\":200,\"data\":{\"total\":8,\"rows\":[{\"actualLocation\":\"数据中心 A03 机柜\",\"actualQuantity\":1.000000,\"bookDepartment\":\"信息技术部\",\"bookLocation\":\"数据中心 A03 机柜\",\"bookQuantity\":1.000000,\"createTime\":1789995983000,\"id\":8,\"imageGroupId\":\"5db8ca7a79a445b88645dd39d97e2e67\",\"imageUrls\":[\"/apis/systemConfig/static/asset-inventory/20260921_185724_3db4823f_1789988298359.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185724_170b6de4_1789988298363.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185724_3db4823f_1789988341617.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185724_170b6de4_1789988341621.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185724_3db4823f_1789988394098.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185724_170b6de4_1789988394100.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185724_3db4823f_1789988417997.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185724_170b6de4_1789988418007.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185724_3db4823f_1789988423446.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185724_170b6de4_1789988423447.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185724_3db4823f_1789988439784.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185724_170b6de4_1789988439785.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185724_3db4823f_1789988449196.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185724_170b6de4_1789988449198.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185724_3db4823f_1789988475342.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185724_170b6de4_1789988475344.jpg\"],\"inventoryId\":4,\"inventoryStatus\":\"INVENTORIED\",\"inventoryTime\":1790002645000,\"inventoryUserId\":149,\"inventoryUserName\":\"张三\",\"model\":\"Dell PowerEdge R760\",\"remark\":\"简直一模一样的\",\"targetCode\":\"FA-IT-2025-006\",\"targetId\":6,\"targetName\":\"MES 数据库服务器\",\"targetType\":\"ASSET\",\"updateTime\":1790002873000},{\"actualLocation\":\"一车间 AOI 检测区\",\"actualQuantity\":1.000000,\"bookDepartment\":\"品质部\",\"bookLocation\":\"一车间 AOI 检测区\",\"bookQuantity\":1.000000,\"createTime\":1789995983000,\"id\":11,\"imageGroupId\":\"97e05ba483eb41a9a3f33796682f6d46\",\"imageUrls\":[\"/apis/systemConfig/static/asset-inventory/20260921_185751_e989e463_1789988309407.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185751_8247956e_1789988309411.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185751_e989e463_1789988351115.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185751_8247956e_1789988351118.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185751_e989e463_1789988404437.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185751_8247956e_1789988404438.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185751_e989e463_1789988430620.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185751_8247956e_1789988430622.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185751_e989e463_1789988440631.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185751_8247956e_1789988440633.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185751_e989e463_1789988449840.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185751_8247956e_1789988449841.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185751_e989e463_1789988483971.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185751_8247956e_1789988483974.jpg\"],\"inventoryId\":4,\"inventoryStatus\":\"INVENTORIED\",\"inventoryTime\":1790002672000,\"inventoryUserId\":149,\"inventoryUserName\":\"张三\",\"model\":\"Koh Young Zenith 2\",\"remark\":\"补补团出来了?那就算了\",\"targetCode\":\"FA-QC-2024-003\",\"targetId\":3,\"targetName\":\"在线 3D AOI 检测系统\",\"targetType\":\"ASSET\",\"updateTime\":1790002873000},{\"actualLocation\":\"一车间 印刷检测区\",\"actualQuantity\":1.000000,\"bookDepartment\":\"品质部\",\"bookLocation\":\"一车间 印刷检测区\",\"bookQuantity\":1.000000,\"createTime\":1789995983000,\"id\":10,\"imageGroupId\":\"6ff9119f63b64993845a9c067467e5da\",\"imageUrls\":[\"/apis/systemConfig/static/asset-inventory/20260921_185807_e5ff915e_1789988310159.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185807_85b6a9b5_1789988310162.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185807_e5ff915e_1789988352623.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185807_85b6a9b5_1789988352626.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185807_e5ff915e_1789988406177.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185807_85b6a9b5_1789988406180.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185807_e5ff915e_1789988431663.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185807_85b6a9b5_1789988431666.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185807_e5ff915e_1789988442110.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185807_85b6a9b5_1789988442112.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185807_e5ff915e_1789988451305.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185807_85b6a9b5_1789988451307.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185807_e5ff915e_1789988484616.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185807_85b6a9b5_1789988484618.jpg\"],\"inventoryId\":4,\"inventoryStatus\":\"INVENTORIED\",\"inventoryTime\":1790002687000,\"inventoryUserId\":149,\"inventoryUserName\":\"张三\",\"model\":\"Koh Young KY8030-3\",\"remark\":\"踏步踏步谢谢你\",\"targetCode\":\"FA-QC-2024-004\",\"targetId\":4,\"targetName\":\"在线 3D SPI 检测系统\",\"targetType\":\"ASSET\",\"updateTime\":1790002873000},{\"actualLocation\":\"一车间 SMT-01 线\",\"actualQuantity\":1.000000,\"bookDepartment\":\"SMT生产部\",\"bookLocation\":\"一车间 SMT-01 线\",\"bookQuantity\":1.000000,\"createTime\":1789995983000,\"id\":13,\"imageGroupId\":\"edd28c5442e84cf59a6e1e3d73be44c1\",\"imageUrls\":[\"/apis/systemConfig/static/asset-inventory/20260921_190114_943b06d2_1789988485988.jpg\"],\"inventoryId\":4,\"inventoryStatus\":\"INVENTORIED\",\"inventoryTime\":1790002875000,\"inventoryUserId\":149,\"inventoryUserName\":\"张三\",\"model\":\"Panasonic NPM-D3A 双轨配置\",\"remark\":\"吧监控OK了\",\"targetCode\":\"FA-SMT-2024-001\",\"targetId\":1,\"targetName\":\"SMT 高速贴片生产线\",\"targetType\":\"ASSET\",\"updateTime\":1790002885000},{\"actualLocation\":\"一车间 SMT-01 线\",\"actualQuantity\":1.000000,\"bookDepartment\":\"SMT生产部\",\"bookLocation\":\"一车间 SMT-01 线\",\"bookQuantity\":1.000000,\"createTime\":1789995983000,\"id\":12,\"imageGroupId\":\"93b35db7703f4e3e86d44b27f35f2a58\",\"imageUrls\":[\"/apis/systemConfig/static/asset-inventory/20260921_185735_77ed497d_1789988308337.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185735_16e3ae77_1789988308359.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185735_77ed497d_1789988350408.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185735_16e3ae77_1789988350421.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185735_77ed497d_1789988403600.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185735_16e3ae77_1789988403613.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185735_77ed497d_1789988429712.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185735_16e3ae77_1789988429724.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185735_77ed497d_1789988435876.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185735_16e3ae77_1789988435886.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185735_77ed497d_1789988448505.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185735_16e3ae77_1789988448516.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185735_77ed497d_1789988457433.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185735_16e3ae77_1789988457445.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185735_77ed497d_1789988483284.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185735_16e3ae77_1789988483294.jpg\"],\"inventoryId\":4,\"inventoryStatus\":\"INVENTORIED\",\"inventoryTime\":1790002655000,\"inventoryUserId\":149,\"inventoryUserName\":\"张三\",\"model\":\"HELLER 1936MK7\",\"remark\":\"不啊图天冷加衣\",\"targetCode\":\"FA-SMT-2024-002\",\"targetId\":2,\"targetName\":\"十温区氮气回流焊系统\",\"targetType\":\"ASSET\",\"updateTime\":1790002873000},{\"actualLocation\":\"一车间 钢网房\",\"actualQuantity\":1.000000,\"bookDepartment\":\"SMT生产部\",\"bookLocation\":\"一车间 钢网房\",\"bookQuantity\":1.000000,\"createTime\":1789995983000,\"id\":6,\"imageGroupId\":\"bafb696ee03b4daab4c00a5183d9f8ca\",\"imageUrls\":[\"/apis/systemConfig/static/asset-inventory/20260921_185638_3ded6754_1789988297758.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185638_3ded6754_1789988341036.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185638_3ded6754_1789988393529.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185638_3ded6754_1789988417419.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185638_3ded6754_1789988422324.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185638_3ded6754_1789988439407.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185638_3ded6754_1789988448947.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185638_3ded6754_1789988474767.jpg\"],\"inventoryId\":4,\"inventoryStatus\":\"INVENTORIED\",\"inventoryTime\":1790002598000,\"inventoryUserId\":149,\"inventoryUserName\":\"张三\",\"model\":\"SAWA SC-A1000\",\"remark\":\"来看看你们这些\",\"targetCode\":\"FA-TOOL-2025-008\",\"targetId\":8,\"targetName\":\"全自动钢网清洗机\",\"targetType\":\"ASSET\",\"updateTime\":1790002873000},{\"actualLocation\":\"动力站 1 号机位\",\"actualQuantity\":1.000000,\"bookDepartment\":\"设备动力部\",\"bookLocation\":\"动力站 1 号机位\",\"bookQuantity\":1.000000,\"createTime\":1789995983000,\"id\":9,\"imageGroupId\":\"b0212c0127ec4c7583a507552720ea27\",\"imageUrls\":[\"/apis/systemConfig/static/asset-inventory/20260921_190106_a0384808_1789988485420.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_190106_b0fa45d8_1789988485421.jpg\"],\"inventoryId\":4,\"inventoryStatus\":\"INVENTORIED\",\"inventoryTime\":1790002866000,\"inventoryUserId\":149,\"inventoryUserName\":\"张三\",\"model\":\"Atlas Copco GA22 VSD+\",\"remark\":\"连卡佛哦哦哦\",\"targetCode\":\"FA-UTIL-2023-005\",\"targetId\":5,\"targetName\":\"螺杆式空气压缩机\",\"targetType\":\"ASSET\",\"updateTime\":1790002885000},{\"actualLocation\":\"原材料仓充电区\",\"actualQuantity\":1.000000,\"bookDepartment\":\"仓储物流部\",\"bookLocation\":\"原材料仓充电区\",\"bookQuantity\":1.000000,\"createTime\":1789995983000,\"id\":7,\"imageGroupId\":\"fe02f5769bdf4dc0b5726aac93bb730b\",\"imageUrls\":[\"/apis/systemConfig/static/asset-inventory/20260921_185558_5107047d_1789988297310.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185558_5107047d_1789988340622.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185558_5107047d_1789988392678.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185558_5107047d_1789988417028.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185558_5107047d_1789988421508.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185558_5107047d_1789988438145.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185558_5107047d_1789988438901.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185558_5107047d_1789988439198.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185558_5107047d_1789988448400.jpg\",\"/apis/systemConfig/static/asset-inventory/20260921_185558_5107047d_1789988474375.jpg\"],\"inventoryId\":4,\"inventoryStatus\":\"INVENTORIED\",\"inventoryTime\":1790002559000,\"inventoryUserId\":149,\"inventoryUserName\":\"张三\",\"model\":\"Toyota 8FBE20\",\"remark\":\"有空聚聚看看\",\"targetCode\":\"FA-WH-2024-007\",\"targetId\":7,\"targetName\":\"电动平衡重式叉车\",\"targetType\":\"ASSET\",\"updateTime\":1790002873000}]}}'); +INSERT INTO `tbl_log` VALUES (8711, NULL, '接口日志', '43.152.142.140/1.9.116.218', '2026-09-30 07:25:54', 0, 'SystemConfigController.view(..)', NULL, 'GET /apis/systemConfig/static/asset-inventory/20260921_185724_3db4823f_1789988298359.jpg', '{}', NULL); +INSERT INTO `tbl_log` VALUES (8712, NULL, '接口日志', '43.152.142.41/1.9.116.218', '2026-09-30 07:25:54', 0, 'SystemConfigController.view(..)', NULL, 'GET /apis/systemConfig/static/asset-inventory/20260921_190114_943b06d2_1789988485988.jpg', '{}', NULL); +INSERT INTO `tbl_log` VALUES (8713, NULL, '接口日志', '43.174.52.31/1.9.116.218', '2026-09-30 07:25:54', 0, 'SystemConfigController.view(..)', NULL, 'GET /apis/systemConfig/static/asset-inventory/20260921_185558_5107047d_1789988297310.jpg', '{}', NULL); +INSERT INTO `tbl_log` VALUES (8714, NULL, '接口日志', '43.174.53.11/1.9.116.218', '2026-09-30 07:25:54', 0, 'SystemConfigController.view(..)', NULL, 'GET /apis/systemConfig/static/asset-inventory/20260921_185638_3ded6754_1789988297758.jpg', '{}', NULL); +INSERT INTO `tbl_log` VALUES (8715, NULL, '接口日志', '43.152.142.68/1.9.116.218', '2026-09-30 07:25:54', 0, 'SystemConfigController.view(..)', NULL, 'GET /apis/systemConfig/static/asset-inventory/20260921_185735_77ed497d_1789988308337.jpg', '{}', NULL); +INSERT INTO `tbl_log` VALUES (8716, NULL, '接口日志', '43.152.142.62/1.9.116.218', '2026-09-30 07:25:54', 0, 'SystemConfigController.view(..)', NULL, 'GET /apis/systemConfig/static/asset-inventory/20260921_190106_a0384808_1789988485420.jpg', '{}', NULL); +INSERT INTO `tbl_log` VALUES (8717, NULL, '接口日志', '43.174.53.48/1.9.116.218', '2026-09-30 07:25:54', 0, 'SystemConfigController.view(..)', NULL, 'GET /apis/systemConfig/static/asset-inventory/20260921_185751_e989e463_1789988309407.jpg', '{}', NULL); +INSERT INTO `tbl_log` VALUES (8718, NULL, '接口日志', '43.174.53.19/1.9.116.218', '2026-09-30 07:25:54', 0, 'SystemConfigController.view(..)', NULL, 'GET /apis/systemConfig/static/asset-inventory/20260921_185807_e5ff915e_1789988310159.jpg', '{}', NULL); +INSERT INTO `tbl_log` VALUES (8719, NULL, '接口日志', '43.152.142.45/1.9.116.218', '2026-09-30 07:25:57', 0, 'SystemConfigController.view(..)', NULL, 'GET /apis/systemConfig/static/asset-inventory/20260921_185558_5107047d_1789988421508.jpg', '{}', NULL); +INSERT INTO `tbl_log` VALUES (8720, NULL, '接口日志', '43.152.142.108/1.9.116.218', '2026-09-30 07:25:57', 0, 'SystemConfigController.view(..)', NULL, 'GET /apis/systemConfig/static/asset-inventory/20260921_185558_5107047d_1789988417028.jpg', '{}', NULL); +INSERT INTO `tbl_log` VALUES (8721, NULL, '接口日志', '43.174.54.44/1.9.116.218', '2026-09-30 07:25:57', 0, 'SystemConfigController.view(..)', NULL, 'GET /apis/systemConfig/static/asset-inventory/20260921_185558_5107047d_1789988340622.jpg', '{}', NULL); +INSERT INTO `tbl_log` VALUES (8722, NULL, '接口日志', '43.152.142.31/1.9.116.218', '2026-09-30 07:25:57', 0, 'SystemConfigController.view(..)', NULL, 'GET /apis/systemConfig/static/asset-inventory/20260921_185558_5107047d_1789988438145.jpg', '{}', NULL); +INSERT INTO `tbl_log` VALUES (8723, NULL, '接口日志', '43.174.55.40/1.9.116.218', '2026-09-30 07:25:57', 0, 'SystemConfigController.view(..)', NULL, 'GET /apis/systemConfig/static/asset-inventory/20260921_185558_5107047d_1789988438901.jpg', '{}', NULL); +INSERT INTO `tbl_log` VALUES (8724, NULL, '接口日志', '43.174.32.33/1.9.116.218', '2026-09-30 07:25:57', 0, 'SystemConfigController.view(..)', NULL, 'GET /apis/systemConfig/static/asset-inventory/20260921_185558_5107047d_1789988439198.jpg', '{}', NULL); +INSERT INTO `tbl_log` VALUES (8725, NULL, '接口日志', '43.152.142.34/1.9.116.218', '2026-09-30 07:25:57', 0, 'SystemConfigController.view(..)', NULL, 'GET /apis/systemConfig/static/asset-inventory/20260921_185558_5107047d_1789988448400.jpg', '{}', NULL); +INSERT INTO `tbl_log` VALUES (8726, NULL, '接口日志', '43.174.32.19/1.9.116.218', '2026-09-30 07:25:57', 0, 'SystemConfigController.view(..)', NULL, 'GET /apis/systemConfig/static/asset-inventory/20260921_185558_5107047d_1789988392678.jpg', '{}', NULL); +INSERT INTO `tbl_log` VALUES (8727, NULL, '接口日志', '43.152.142.84/1.9.116.218', '2026-09-30 07:25:57', 0, 'SystemConfigController.view(..)', NULL, 'GET /apis/systemConfig/static/asset-inventory/20260921_185558_5107047d_1789988474375.jpg', '{}', NULL); +INSERT INTO `tbl_log` VALUES (8728, 63, '接口日志', '43.152.142.128/1.9.116.218', '2026-09-30 07:26:19', 0, 'AccountController.getStatistics(..)', NULL, 'GET /apis/account/getStatistics', '{\"name\":\"\",\"serialNo\":\"\"}', '{\"code\":200,\"data\":{\"allCurrentAmount\":\"4375818.53\",\"allMonthAmount\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8729, 63, '接口日志', '43.152.142.142/1.9.116.218', '2026-09-30 07:26:19', 0, 'AccountController.listWithBalance(..)', NULL, 'GET /apis/account/listWithBalance', '{\"name\":\"\",\"serialNo\":\"\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63,\"thisMonthAmount\":\"0\"},{\"currentAmount\":4375618.532800,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63,\"thisMonthAmount\":\"0\"}]}}'); +INSERT INTO `tbl_log` VALUES (8730, 63, '接口日志', '43.152.142.128/1.9.116.218', '2026-09-30 07:26:20', 0, 'SupplierController.findBySelectRetail(..)', NULL, 'POST /apis/supplier/findBySelect_retail', '{\"jsonObject\":{\"limit\":1}}', '[]'); +INSERT INTO `tbl_log` VALUES (8731, 63, '接口日志', '43.174.53.16/1.9.116.218', '2026-09-30 07:26:20', 0, 'DepotItemController.retailOut(..)', NULL, 'GET /apis/depotItem/retailOut', '{\"currentPage\":1,\"pageSize\":10,\"beginTime\":\"2026-06-30\",\"endTime\":\"2026-09-30\",\"materialParam\":\"\",\"mpList\":\"扩展1,扩展2,扩展3\"}', '{\"code\":200,\"data\":{\"total\":0,\"realityPriceTotal\":0.000000,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (8732, 63, '接口日志', '43.174.32.14/1.9.116.218', '2026-09-30 07:26:20', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (8733, 63, '接口日志', '43.152.142.110/1.9.116.218', '2026-09-30 07:26:20', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8734, 63, '接口日志', '43.152.142.133/1.9.116.218', '2026-09-30 07:26:20', 0, 'OrganizationController.getAllOrganizationTreeByUser(..)', NULL, 'GET /apis/organization/getAllOrganizationTreeByUser', '{}', '[{\"children\":[{\"children\":[{\"children\":[],\"checked\":false,\"attributes\":\"12\",\"id\":14,\"state\":\"open\",\"title\":\"部门2\",\"value\":14,\"key\":14}],\"checked\":false,\"attributes\":\"jg1\",\"id\":13,\"state\":\"open\",\"title\":\"部门1\",\"value\":13,\"key\":13}],\"checked\":false,\"attributes\":\"001\",\"id\":12,\"state\":\"open\",\"title\":\"测试部门\",\"value\":12,\"key\":12}]'); +INSERT INTO `tbl_log` VALUES (8735, 63, '接口日志', '43.168.32.240/1.9.116.218', '2026-09-30 07:26:21', 0, 'SupplierController.findBySelectSup(..)', NULL, 'POST /apis/supplier/findBySelect_sup', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司\",\"id\":89}]'); +INSERT INTO `tbl_log` VALUES (8736, 63, '接口日志', '43.174.53.48/1.9.116.218', '2026-09-30 07:26:21', 0, 'OrganizationController.getAllOrganizationTreeByUser(..)', NULL, 'GET /apis/organization/getAllOrganizationTreeByUser', '{}', '[{\"children\":[{\"children\":[{\"children\":[],\"checked\":false,\"attributes\":\"12\",\"id\":14,\"state\":\"open\",\"title\":\"部门2\",\"value\":14,\"key\":14}],\"checked\":false,\"attributes\":\"jg1\",\"id\":13,\"state\":\"open\",\"title\":\"部门1\",\"value\":13,\"key\":13}],\"checked\":false,\"attributes\":\"001\",\"id\":12,\"state\":\"open\",\"title\":\"测试部门\",\"value\":12,\"key\":12}]'); +INSERT INTO `tbl_log` VALUES (8737, 63, '接口日志', '43.174.32.12/1.9.116.218', '2026-09-30 07:26:21', 0, 'DepotItemController.buyIn(..)', NULL, 'GET /apis/depotItem/buyIn', '{\"currentPage\":1,\"pageSize\":10,\"beginTime\":\"2026-06-30\",\"endTime\":\"2026-09-30\",\"materialParam\":\"\",\"mpList\":\"扩展1,扩展2,扩展3\"}', '{\"code\":200,\"data\":{\"total\":2,\"realityPriceTotal\":100000.700000,\"rows\":[{\"materialModel\":\"MD-4G111(VF)\",\"materialStandard\":\"MD-4G111(VF) packing\",\"materialUnit\":\"件\",\"outSum\":0.000000,\"barCode\":\"1001\",\"materialName\":\"MD-4G111(VF) 包装\",\"inOutSumPrice\":100000.000000,\"outSumPrice\":0.000000,\"inSum\":10000.000000,\"inSumPrice\":100000.000000},{\"otherField1\":\"\",\"materialMfrs\":\"浙江瑞银电子有限公司\",\"materialModel\":\"MD-4G111(VF)\",\"materialStandard\":\"MD-4G111(VF)\",\"materialColor\":\"\",\"materialBrand\":\"\",\"otherField3\":\"\",\"otherField2\":\"\",\"materialUnit\":\"件\",\"outSum\":0.000000,\"barCode\":\"C.4.T.0.00654\",\"materialName\":\"MD-4G111(VF) 4G模块\",\"inOutSumPrice\":0.700000,\"outSumPrice\":0.000000,\"inSum\":7.000000,\"inSumPrice\":0.700000}]}}'); +INSERT INTO `tbl_log` VALUES (8738, 63, '接口日志', '43.152.142.68/1.9.116.218', '2026-09-30 07:26:21', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (8739, 63, '接口日志', '43.152.142.140/1.9.116.218', '2026-09-30 07:26:21', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8740, 63, '接口日志', '43.168.32.240/1.9.116.218', '2026-09-30 07:26:23', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (8741, 63, '接口日志', '43.174.53.19/1.9.116.218', '2026-09-30 07:26:23', 0, 'OrganizationController.getAllOrganizationTreeByUser(..)', NULL, 'GET /apis/organization/getAllOrganizationTreeByUser', '{}', '[{\"children\":[{\"children\":[{\"children\":[],\"checked\":false,\"attributes\":\"12\",\"id\":14,\"state\":\"open\",\"title\":\"部门2\",\"value\":14,\"key\":14}],\"checked\":false,\"attributes\":\"jg1\",\"id\":13,\"state\":\"open\",\"title\":\"部门1\",\"value\":13,\"key\":13}],\"checked\":false,\"attributes\":\"001\",\"id\":12,\"state\":\"open\",\"title\":\"测试部门\",\"value\":12,\"key\":12}]'); +INSERT INTO `tbl_log` VALUES (8742, 63, '接口日志', '43.152.142.41/1.9.116.218', '2026-09-30 07:26:23', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8743, 63, '接口日志', '43.174.52.31/1.9.116.218', '2026-09-30 07:26:23', 0, 'DepotItemController.saleOut(..)', NULL, 'GET /apis/depotItem/saleOut', '{\"currentPage\":1,\"pageSize\":10,\"beginTime\":\"2026-06-30\",\"endTime\":\"2026-09-30\",\"materialParam\":\"\",\"mpList\":\"扩展1,扩展2,扩展3\"}', '{\"code\":200,\"data\":{\"total\":1,\"realityPriceTotal\":4116000.000000,\"rows\":[{\"outInSumPrice\":4116000.000000,\"otherField1\":\"\",\"materialMfrs\":\"浙江瑞银电子有限公司\",\"materialModel\":\"1PH WS79\",\"materialStandard\":\"1PH WS79\",\"materialColor\":\"\",\"materialBrand\":\"\",\"otherField3\":\"\",\"otherField2\":\"\",\"materialUnit\":\"件\",\"outSum\":56000.000000,\"barCode\":\"1PH-WS79\",\"materialName\":\"1PH WS79\",\"outSumPrice\":4116000.000000,\"inSum\":0.000000,\"inSumPrice\":0.000000}]}}'); +INSERT INTO `tbl_log` VALUES (8744, 63, '接口日志', '43.174.53.11/1.9.116.218', '2026-09-30 07:26:23', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (8745, 63, '接口日志', '43.168.32.240/1.9.116.218', '2026-09-30 07:26:24', 0, 'SupplierController.findBySelectOrgan(..)', NULL, 'POST /apis/supplier/findBySelect_organ', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司[供应商]\",\"id\":89},{\"supplier\":\"TNB[客户]\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (8746, 63, '接口日志', '43.152.142.62/1.9.116.218', '2026-09-30 07:26:24', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8747, 63, '接口日志', '43.174.54.44/1.9.116.218', '2026-09-30 07:26:24', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"}]'); +INSERT INTO `tbl_log` VALUES (8748, 63, '接口日志', '43.174.32.19/1.9.116.218', '2026-09-30 07:26:24', 0, 'OrganizationController.getAllOrganizationTreeByUser(..)', NULL, 'GET /apis/organization/getAllOrganizationTreeByUser', '{}', '[{\"children\":[{\"children\":[{\"children\":[],\"checked\":false,\"attributes\":\"12\",\"id\":14,\"state\":\"open\",\"title\":\"部门2\",\"value\":14,\"key\":14}],\"checked\":false,\"attributes\":\"jg1\",\"id\":13,\"state\":\"open\",\"title\":\"部门1\",\"value\":13,\"key\":13}],\"checked\":false,\"attributes\":\"001\",\"id\":12,\"state\":\"open\",\"title\":\"测试部门\",\"value\":12,\"key\":12}]'); +INSERT INTO `tbl_log` VALUES (8749, 63, '接口日志', '43.152.142.45/1.9.116.218', '2026-09-30 07:26:24', 0, 'DepotHeadController.findInOutDetail(..)', NULL, 'GET /apis/depotHead/findInOutDetail', '{\"currentPage\":1,\"pageSize\":10,\"number\":\"\",\"materialParam\":\"\",\"beginTime\":\"2026-06-30\",\"endTime\":\"2026-09-30\",\"type\":\"入库\",\"remark\":\"\",\"column\":\"createTime\",\"order\":\"desc\"}', '{\"code\":200,\"data\":{\"total\":43,\"operNumberTotal\":133359.000000,\"rows\":[{\"allPrice\":100000.000000,\"barCode\":\"1001\",\"dname\":\"半成品仓库\",\"mUnit\":\"件\",\"mname\":\"MD-4G111(VF) 包装\",\"model\":\"MD-4G111(VF)\",\"newRemark\":\"\",\"newType\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operNumber\":10000.000000,\"operTime\":\"2026-09-18\",\"sname\":\"浙江瑞银电子有限公司\",\"standard\":\"MD-4G111(VF) packing\",\"taxLastMoney\":100000.000000,\"taxMoney\":0.000000,\"taxRate\":0.000000,\"unitPrice\":10.000000},{\"allPrice\":595000.000000,\"barCode\":\"1PH-WS79\",\"brand\":\"\",\"color\":\"\",\"dname\":\"半成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"1PH WS79\",\"model\":\"1PH WS79\",\"newRemark\":\"\",\"newType\":\"总部入库入库\",\"number\":\"SM2609180001\",\"operNumber\":10000.000000,\"operTime\":\"2026-09-18\",\"sname\":\"浙江瑞银电子有限公司\",\"standard\":\"1PH WS79\",\"taxLastMoney\":595000.000000,\"taxMoney\":0.000000,\"taxRate\":0.000000,\"unitPrice\":59.500000},{\"allPrice\":0.700000,\"barCode\":\"C.4.T.0.00654\",\"brand\":\"\",\"color\":\"\",\"dname\":\"半成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"MD-4G111(VF) 4G模块\",\"model\":\"MD-4G111(VF)\",\"newRemark\":\"\",\"newType\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operNumber\":7.000000,\"operTime\":\"2026-09-18\",\"sname\":\"浙江瑞银电子有限公司\",\"standard\":\"MD-4G111(VF)\",\"taxLastMoney\":0.700000,\"taxMoney\":0.000000,\"taxRate\":0.000000,\"unitPrice\":0.100000},{\"allPrice\":183.600000,\"barCode\":\"C.4.T.0.00547\",\"brand\":\"\",\"color\":\"\",\"dname\":\"半成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"MT-3NSXL(VC)RF通讯模块\",\"model\":\"MT-3NSXL(VC)\",\"newRemark\":\"SMT出库单详情初始化;已审核;价税合计计入应付 来源单据:SH2608060003\",\"newType\":\"总部入库入库\",\"number\":\"SM2608070007\",\"operNumber\":1836.000000,\"operTime\":\"2026-08-07\",\"sname\":\"浙江瑞银电子有限公司\",\"standard\":\"MT-3NSXL(VC)\",\"taxLastMoney\":183.600000,\"taxMoney\":0.000000,\"taxRate\":0.000000,\"unitPrice\":0.100000},{\"allPrice\":2077650.000000,\"barCode\":\"C.1.T.0.00032\",\"brand\":\"\",\"color\":\"\",\"dname\":\"半成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"单相多功能电能表T49(VB)\",\"model\":\"DDSD1226-T49(VB)\",\"newRemark\":\"SMT出库单详情初始化;已审核;价税合计计入应付 来源单据:SH2608060001\",\"newType\":\"总部入库入库\",\"number\":\"SM2608070002\",\"operNumber\":9500.000000,\"operTime\":\"2026-08-07\",\"sname\":\"浙江瑞银电子有限公司\",\"standard\":\"DDSD1226-T49(VB)\",\"taxLastMoney\":2077650.000000,\"taxMoney\":0.000000,\"taxRate\":0.000000,\"unitPrice\":218.700000},{\"allPrice\":91854.000000,\"barCode\":\"C.1.T.0.00032\",\"brand\":\"\",\"color\":\"\",\"dname\":\"半成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"单相多功能电能表T49(VB)\",\"model\":\"DDSD1226-T49(VB)\",\"newRemark\":\"SMT出库单详情初始化;已审核;价税合计计入应付 来源单据:SH2608060001\",\"newType\":\"总部入库入库\",\"number\":\"SM2608060005\",\"operNumber\":420.000000,\"operTime\":\"2026-08-06\",\"sname\":\"浙江瑞银电子有限公司\",\"standard\":\"DDSD1226-T49(VB)\",\"taxLastMoney\":91854.000000,\"taxMoney\":0.000000,\"taxRate\":0.000000,\"unitPrice\":218.700000},{\"allPrice\":816.000000,\"barCode\":\"C.4.T.0.00547\",\"brand\":\"\",\"color\":\"\",\"dname\":\"半成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"MT-3NSXL(VC)RF通讯模块\",\"model\":\"MT-3NSXL(VC)\",\"newRemark\":\"SMT出库单详情初始化;已审核;价税合计计入应付 来源单据:SH2608060003\",\"newType\":\"总部入库入库\",\"number\":\"SM2608060004\",\"operNumber\":8160.000000,\"operTime\":\"2026-08-06\",\"sname\":\"浙江瑞银电子有限公司\",\"standard\":\"MT-3NSXL(VC)\",\"taxLastMoney\":816.000000,\"taxMoney\":0.000000,\"taxRate\":0.000000,\"unitPrice\":0.100000},{\"allPrice\":91854.000000,\"barCode\":\"C.1.T.0.00032\",\"brand\":\"\",\"color\":\"\",\"dname\":\"半成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"单相多功能电能表T49(VB)\",\"model\":\"DDSD1226-T49(VB)\",\"newRemark\":\"SMT出库单详情初始化;已审核;价税合计计入应付 来源单据:SH2607220001\",\"newType\":\"总部入库入库\",\"number\":\"SM2607240005\",\"operNumber\":420.000000,\"operTime\":\"2026-07-24\",\"sname\":\"浙江瑞银电子有限公司\",\"standard\":\"DDSD1226-T49(VB)\",\"taxLastMoney\":91854.000000,\"taxMoney\":0.000000,\"taxRate\":0.000000,\"unitPrice\":218.700000},{\"allPrice\":551124.000000,\"barCode\":\"C.1.T.0.00032\",\"brand\":\"\",\"color\":\"\",\"dname\":\"半成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"单相多功能电能表T49(VB)\",\"model\":\"DDSD1226-T49(VB)\",\"newRemark\":\"SMT出库单详情初始化;已审核;价税合计计入应付 来源单据:SH2607220001\",\"newType\":\"总部入库入库\",\"number\":\"SM2607230004\",\"operNumber\":2520.000000,\"operTime\":\"2026-07-23\",\"sname\":\"浙江瑞银电子有限公司\",\"standard\":\"DDSD1226-T49(VB)\",\"taxLastMoney\":551124.000000,\"taxMoney\":0.000000,\"taxRate\":0.000000,\"unitPrice\":218.700000},{\"allPrice\":1285956.000000,\"barCode\":\"C.1.T.0.00032\",\"brand\":\"\",\"color\":\"\",\"dname\":\"半成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"单相多功能电能表T49(VB)\",\"model\":\"DDSD1226-T49(VB)\",\"newRemark\":\"SMT出库单详情初始化;已审核;价税合计计入应付 来源单据:SH2607220001\",\"newType\":\"总部入库入库\",\"number\":\"SM2607230002\",\"operNumber\":5880.000000,\"operTime\":\"2026-07-23\",\"sname\":\"浙江瑞银电子有限公司\",\"standard\":\"DDSD1226-T49(VB)\",\"taxLastMoney\":1285956.000000,\"taxMoney\":0.000000,\"taxRate\":0.000000,\"unitPrice\":218.700000}],\"allPriceTotal\":19439045.900000}}'); +INSERT INTO `tbl_log` VALUES (8750, 63, '接口日志', '43.152.142.108/1.9.116.218', '2026-09-30 07:26:24', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (8751, 63, '接口日志', '43.168.32.240/1.9.116.218', '2026-09-30 07:26:25', 0, 'SupplierController.findBySelectOrgan(..)', NULL, 'POST /apis/supplier/findBySelect_organ', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司[供应商]\",\"id\":89},{\"supplier\":\"TNB[客户]\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (8752, 63, '接口日志', '43.174.32.33/1.9.116.218', '2026-09-30 07:26:25', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8753, 63, '接口日志', '43.152.142.31/1.9.116.218', '2026-09-30 07:26:25', 0, 'DepotHeadController.findInOutDetail(..)', NULL, 'GET /apis/depotHead/findInOutDetail', '{\"currentPage\":1,\"pageSize\":10,\"number\":\"\",\"materialParam\":\"\",\"beginTime\":\"2026-06-30\",\"endTime\":\"2026-09-30\",\"type\":\"出库\",\"remark\":\"\",\"column\":\"createTime\",\"order\":\"desc\"}', '{\"code\":200,\"data\":{\"total\":51,\"operNumberTotal\":66000.000000,\"rows\":[{\"allPrice\":0.000000,\"barCode\":\"1001\",\"dname\":\"半成品仓库\",\"mUnit\":\"件\",\"mname\":\"MD-4G111(VF) 包装\",\"model\":\"MD-4G111(VF)\",\"newRemark\":\"\",\"newType\":\"生产领料出库\",\"number\":\"LL20260924134027104\",\"operNumber\":10000.000000,\"operTime\":\"2026-09-24\",\"sku\":\"\",\"standard\":\"MD-4G111(VF) packing\",\"taxLastMoney\":0.000000,\"taxMoney\":0.000000,\"taxRate\":0.000000,\"unitPrice\":0.000000},{\"allPrice\":735000.000000,\"barCode\":\"1PH-WS79\",\"brand\":\"\",\"color\":\"\",\"dname\":\"半成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"1PH WS79\",\"model\":\"1PH WS79\",\"newRemark\":\"\",\"newType\":\"销售出库\",\"number\":\"XSCK00000001728\",\"operNumber\":10000.000000,\"operTime\":\"2026-09-18\",\"sname\":\"TNB\",\"standard\":\"1PH WS79\",\"taxLastMoney\":808500.000000,\"taxMoney\":73500.000000,\"taxRate\":10.000000,\"unitPrice\":73.500000},{\"allPrice\":73500.000000,\"barCode\":\"1PH-WS79\",\"brand\":\"\",\"color\":\"\",\"dname\":\"成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"1PH WS79\",\"model\":\"1PH WS79\",\"newRemark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2159 \",\"newType\":\"销售出库\",\"number\":\"XSCK-INV_2159-86\",\"operNumber\":1000.000000,\"operTime\":\"2026-08-10\",\"sname\":\"TNB\",\"standard\":\"1PH WS79\",\"taxLastMoney\":80850.000000,\"taxMoney\":7350.000000,\"taxRate\":10.000000,\"unitPrice\":73.500000},{\"allPrice\":73500.000000,\"barCode\":\"1PH-WS79\",\"brand\":\"\",\"color\":\"\",\"dname\":\"成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"1PH WS79\",\"model\":\"1PH WS79\",\"newRemark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写 \",\"newType\":\"销售出库\",\"number\":\"XSCK-1PH-WS79-ADD1-87\",\"operNumber\":1000.000000,\"operTime\":\"2026-08-10\",\"sname\":\"TNB\",\"standard\":\"1PH WS79\",\"taxLastMoney\":80850.000000,\"taxMoney\":7350.000000,\"taxRate\":10.000000,\"unitPrice\":73.500000},{\"allPrice\":73500.000000,\"barCode\":\"1PH-WS79\",\"brand\":\"\",\"color\":\"\",\"dname\":\"成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"1PH WS79\",\"model\":\"1PH WS79\",\"newRemark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:DO_2158 \",\"newType\":\"销售出库\",\"number\":\"XSCK-DO_2158-85\",\"operNumber\":1000.000000,\"operTime\":\"2026-08-05\",\"sname\":\"TNB\",\"standard\":\"1PH WS79\",\"taxLastMoney\":80850.000000,\"taxMoney\":7350.000000,\"taxRate\":10.000000,\"unitPrice\":73.500000},{\"allPrice\":73500.000000,\"barCode\":\"1PH-WS79\",\"brand\":\"\",\"color\":\"\",\"dname\":\"成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"1PH WS79\",\"model\":\"1PH WS79\",\"newRemark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:DO_2157 \",\"newType\":\"销售出库\",\"number\":\"XSCK-DO_2157-83\",\"operNumber\":1000.000000,\"operTime\":\"2026-08-05\",\"sname\":\"TNB\",\"standard\":\"1PH WS79\",\"taxLastMoney\":80850.000000,\"taxMoney\":7350.000000,\"taxRate\":10.000000,\"unitPrice\":73.500000},{\"allPrice\":73500.000000,\"barCode\":\"1PH-WS79\",\"brand\":\"\",\"color\":\"\",\"dname\":\"成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"1PH WS79\",\"model\":\"1PH WS79\",\"newRemark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写 \",\"newType\":\"销售出库\",\"number\":\"XSCK-1PH-WS79-ADD1-84\",\"operNumber\":1000.000000,\"operTime\":\"2026-08-05\",\"sname\":\"TNB\",\"standard\":\"1PH WS79\",\"taxLastMoney\":80850.000000,\"taxMoney\":7350.000000,\"taxRate\":10.000000,\"unitPrice\":73.500000},{\"allPrice\":73500.000000,\"barCode\":\"1PH-WS79\",\"brand\":\"\",\"color\":\"\",\"dname\":\"成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"1PH WS79\",\"model\":\"1PH WS79\",\"newRemark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2150 \",\"newType\":\"销售出库\",\"number\":\"XSCK-INV_2150-69\",\"operNumber\":1000.000000,\"operTime\":\"2026-07-29\",\"sname\":\"TNB\",\"standard\":\"1PH WS79\",\"taxLastMoney\":80850.000000,\"taxMoney\":7350.000000,\"taxRate\":10.000000,\"unitPrice\":73.500000},{\"allPrice\":73500.000000,\"barCode\":\"1PH-WS79\",\"brand\":\"\",\"color\":\"\",\"dname\":\"成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"1PH WS79\",\"model\":\"1PH WS79\",\"newRemark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:do_2148 \",\"newType\":\"销售出库\",\"number\":\"XSCK-do_2148-60\",\"operNumber\":1000.000000,\"operTime\":\"2026-07-27\",\"sname\":\"TNB\",\"standard\":\"1PH WS79\",\"taxLastMoney\":80850.000000,\"taxMoney\":7350.000000,\"taxRate\":10.000000,\"unitPrice\":73.500000},{\"allPrice\":73500.000000,\"barCode\":\"1PH-WS79\",\"brand\":\"\",\"color\":\"\",\"dname\":\"成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"1PH WS79\",\"model\":\"1PH WS79\",\"newRemark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:do_2147 \",\"newType\":\"销售出库\",\"number\":\"XSCK-do_2147-59\",\"operNumber\":1000.000000,\"operTime\":\"2026-07-27\",\"sname\":\"TNB\",\"standard\":\"1PH WS79\",\"taxLastMoney\":80850.000000,\"taxMoney\":7350.000000,\"taxRate\":10.000000,\"unitPrice\":73.500000}],\"allPriceTotal\":4116000.000000}}'); +INSERT INTO `tbl_log` VALUES (8754, 63, '接口日志', '43.174.55.40/1.9.116.218', '2026-09-30 07:26:25', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (8755, 63, '接口日志', '43.152.142.84/1.9.116.218', '2026-09-30 07:26:25', 0, 'OrganizationController.getAllOrganizationTreeByUser(..)', NULL, 'GET /apis/organization/getAllOrganizationTreeByUser', '{}', '[{\"children\":[{\"children\":[{\"children\":[],\"checked\":false,\"attributes\":\"12\",\"id\":14,\"state\":\"open\",\"title\":\"部门2\",\"value\":14,\"key\":14}],\"checked\":false,\"attributes\":\"jg1\",\"id\":13,\"state\":\"open\",\"title\":\"部门1\",\"value\":13,\"key\":13}],\"checked\":false,\"attributes\":\"001\",\"id\":12,\"state\":\"open\",\"title\":\"测试部门\",\"value\":12,\"key\":12}]'); +INSERT INTO `tbl_log` VALUES (8756, 63, '接口日志', '43.152.142.34/1.9.116.218', '2026-09-30 07:26:25', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"}]'); +INSERT INTO `tbl_log` VALUES (8757, 63, '接口日志', '43.168.32.240/1.9.116.218', '2026-09-30 07:26:26', 0, 'SupplierController.findBySelectOrgan(..)', NULL, 'POST /apis/supplier/findBySelect_organ', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司[供应商]\",\"id\":89},{\"supplier\":\"TNB[客户]\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (8758, 63, '接口日志', '43.174.32.14/1.9.116.218', '2026-09-30 07:26:26', 0, 'DepotHeadController.findInOutMaterialCount(..)', NULL, 'GET /apis/depotHead/findInOutMaterialCount', '{\"currentPage\":1,\"pageSize\":10,\"materialParam\":\"\",\"beginTime\":\"2026-06-30\",\"endTime\":\"2026-09-30\",\"type\":\"入库\",\"column\":\"createTime\",\"order\":\"desc\"}', '{\"code\":200,\"data\":{\"total\":7,\"priceSumTotal\":19439045.900000,\"numSumTotal\":133359.000000,\"rows\":[{\"barCode\":\"1001\",\"categoryName\":\"包装\",\"mName\":\"MD-4G111(VF) 包装\",\"materialId\":705,\"materialUnit\":\"件\",\"model\":\"MD-4G111(VF)\",\"numSum\":10000.000000,\"priceSum\":100000.000000,\"standard\":\"MD-4G111(VF) packing\"},{\"barCode\":\"1PH-WS79\",\"brand\":\"\",\"categoryName\":\"成品\",\"color\":\"\",\"mName\":\"1PH WS79\",\"materialId\":703,\"materialUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"1PH WS79\",\"numSum\":10000.000000,\"priceSum\":595000.000000,\"standard\":\"1PH WS79\"},{\"barCode\":\"C.4.T.0.00654\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"mName\":\"MD-4G111(VF) 4G模块\",\"materialId\":699,\"materialUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-4G111(VF)\",\"numSum\":7.000000,\"priceSum\":0.700000,\"standard\":\"MD-4G111(VF)\"},{\"barCode\":\"C.4.T.0.00547\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"mName\":\"MT-3NSXL(VC)RF通讯模块\",\"materialId\":696,\"materialUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MT-3NSXL(VC)\",\"numSum\":53432.000000,\"priceSum\":5343.200000,\"standard\":\"MT-3NSXL(VC)\"},{\"barCode\":\"C.3.T.0.00030\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"mName\":\"三相四线多功能电能表T46(VC)\",\"materialId\":691,\"materialUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DTSD1226-T46(VC)\",\"numSum\":14460.000000,\"priceSum\":7027560.000000,\"standard\":\"DTSD1226-T46(VC)\"},{\"barCode\":\"C.3.C.2.00025\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"mName\":\"三相四线多功能电能表CXVI(VA)-新\",\"materialId\":687,\"materialUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DTSD1226-CXVI(VA)\",\"numSum\":6720.000000,\"priceSum\":3238704.000000,\"standard\":\"DTSD1226-CXVI(VA)\"},{\"barCode\":\"C.1.T.0.00032\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"mName\":\"单相多功能电能表T49(VB)\",\"materialId\":685,\"materialUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DDSD1226-T49(VB)\",\"numSum\":38740.000000,\"priceSum\":8472438.000000,\"standard\":\"DDSD1226-T49(VB)\"}]}}'); +INSERT INTO `tbl_log` VALUES (8759, 63, '接口日志', '43.152.142.133/1.9.116.218', '2026-09-30 07:26:26', 0, 'OrganizationController.getAllOrganizationTreeByUser(..)', NULL, 'GET /apis/organization/getAllOrganizationTreeByUser', '{}', '[{\"children\":[{\"children\":[{\"children\":[],\"checked\":false,\"attributes\":\"12\",\"id\":14,\"state\":\"open\",\"title\":\"部门2\",\"value\":14,\"key\":14}],\"checked\":false,\"attributes\":\"jg1\",\"id\":13,\"state\":\"open\",\"title\":\"部门1\",\"value\":13,\"key\":13}],\"checked\":false,\"attributes\":\"001\",\"id\":12,\"state\":\"open\",\"title\":\"测试部门\",\"value\":12,\"key\":12}]'); +INSERT INTO `tbl_log` VALUES (8760, 63, '接口日志', '43.152.142.142/1.9.116.218', '2026-09-30 07:26:26', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (8761, 63, '接口日志', '43.152.142.128/1.9.116.218', '2026-09-30 07:26:26', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8762, 63, '接口日志', '43.168.32.240/1.9.116.218', '2026-09-30 07:26:26', 0, 'SupplierController.findBySelectOrgan(..)', NULL, 'POST /apis/supplier/findBySelect_organ', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司[供应商]\",\"id\":89},{\"supplier\":\"TNB[客户]\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (8763, 63, '接口日志', '43.152.142.110/1.9.116.218', '2026-09-30 07:26:26', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (8764, 63, '接口日志', '43.152.142.140/1.9.116.218', '2026-09-30 07:26:26', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8765, 63, '接口日志', '43.174.32.12/1.9.116.218', '2026-09-30 07:26:26', 0, 'OrganizationController.getAllOrganizationTreeByUser(..)', NULL, 'GET /apis/organization/getAllOrganizationTreeByUser', '{}', '[{\"children\":[{\"children\":[{\"children\":[],\"checked\":false,\"attributes\":\"12\",\"id\":14,\"state\":\"open\",\"title\":\"部门2\",\"value\":14,\"key\":14}],\"checked\":false,\"attributes\":\"jg1\",\"id\":13,\"state\":\"open\",\"title\":\"部门1\",\"value\":13,\"key\":13}],\"checked\":false,\"attributes\":\"001\",\"id\":12,\"state\":\"open\",\"title\":\"测试部门\",\"value\":12,\"key\":12}]'); +INSERT INTO `tbl_log` VALUES (8766, 63, '接口日志', '43.174.53.16/1.9.116.218', '2026-09-30 07:26:26', 0, 'DepotHeadController.findInOutMaterialCount(..)', NULL, 'GET /apis/depotHead/findInOutMaterialCount', '{\"currentPage\":1,\"pageSize\":10,\"materialParam\":\"\",\"beginTime\":\"2026-06-30\",\"endTime\":\"2026-09-30\",\"type\":\"出库\",\"column\":\"createTime\",\"order\":\"desc\"}', '{\"code\":200,\"data\":{\"total\":2,\"priceSumTotal\":4116000.000000,\"numSumTotal\":66000.000000,\"rows\":[{\"barCode\":\"1001\",\"categoryName\":\"包装\",\"mName\":\"MD-4G111(VF) 包装\",\"materialId\":705,\"materialUnit\":\"件\",\"model\":\"MD-4G111(VF)\",\"numSum\":10000.000000,\"priceSum\":0.000000,\"standard\":\"MD-4G111(VF) packing\"},{\"barCode\":\"1PH-WS79\",\"brand\":\"\",\"categoryName\":\"成品\",\"color\":\"\",\"mName\":\"1PH WS79\",\"materialId\":703,\"materialUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"1PH WS79\",\"numSum\":56000.000000,\"priceSum\":4116000.000000,\"standard\":\"1PH WS79\"}]}}'); +INSERT INTO `tbl_log` VALUES (8767, 63, '接口日志', '43.168.32.240/1.9.116.218', '2026-09-30 07:26:31', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (8768, 63, '接口日志', '43.168.32.240/1.9.116.218', '2026-09-30 07:26:31', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (8769, 63, '接口日志', '43.174.53.48/1.9.116.218', '2026-09-30 07:26:31', 0, 'CustomerCategoryController.getTreeList(..)', NULL, 'GET /apis/customerCategory/treeList', '{}', '{\"code\":200,\"data\":{\"data\":[],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (8770, 63, '接口日志', '43.152.142.68/1.9.116.218', '2026-09-30 07:26:31', 0, 'DepotHeadController.getStatementAccount(..)', NULL, 'GET /apis/depotHead/getStatementAccount', '{\"currentPage\":1,\"pageSize\":10,\"beginTime\":\"2026-06-30\",\"endTime\":\"2026-09-30\",\"hasDebt\":1,\"supplierType\":\"客户\"}', '{\"code\":200,\"data\":{\"total\":1,\"firstMoney\":13360666.000000,\"lastMoney\":12430066.000000,\"rows\":[{\"allNeed\":12430066.000000,\"backMoney\":5458200.000000,\"beginNeed\":0.000000,\"contacts\":\"\",\"debtMoney\":4527600.000000,\"email\":\"\",\"id\":90,\"phoneNum\":\"\",\"preBackMoney\":9555700.000000,\"preDebtMoney\":22916366.000000,\"preNeed\":13360666.000000,\"preReturnDebtMoney\":0.000000,\"returnDebtMoney\":0.000000,\"supplier\":\"TNB\",\"telephone\":\"\"}]}}'); +INSERT INTO `tbl_log` VALUES (8771, 63, '接口日志', '43.174.52.31/1.9.116.218', '2026-09-30 07:26:33', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8772, 63, '接口日志', '43.174.53.19/1.9.116.218', '2026-09-30 07:26:33', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (8773, 63, '接口日志', '43.174.53.11/1.9.116.218', '2026-09-30 07:26:33', 0, 'DepotItemController.findStockWarningCount(..)', NULL, 'GET /apis/depotItem/findStockWarningCount', '{\"currentPage\":1,\"pageSize\":10,\"materialParam\":\"\",\"mpList\":\"扩展1,扩展2,扩展3\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (8774, 63, '接口日志', '43.168.32.240/1.9.116.218', '2026-09-30 07:26:44', 0, 'SupplierController.findBySelectSup(..)', NULL, 'POST /apis/supplier/findBySelect_sup', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司\",\"id\":89}]'); +INSERT INTO `tbl_log` VALUES (8775, 63, '接口日志', '43.152.142.41/1.9.116.218', '2026-09-30 07:26:44', 0, 'DepotHeadController.getStatementAccount(..)', NULL, 'GET /apis/depotHead/getStatementAccount', '{\"currentPage\":1,\"pageSize\":10,\"beginTime\":\"2026-06-30\",\"endTime\":\"2026-09-30\",\"hasDebt\":1,\"supplierType\":\"供应商\"}', '{\"code\":200,\"data\":{\"total\":1,\"firstMoney\":100671250.134800,\"lastMoney\":116500257.436400,\"rows\":[{\"allNeed\":116500257.436400,\"backMoney\":2139558.598400,\"beginNeed\":0.000000,\"contacts\":\"\",\"debtMoney\":17968565.900000,\"email\":\"\",\"id\":89,\"phoneNum\":\"\",\"preBackMoney\":10686582.135200,\"preDebtMoney\":111357832.270000,\"preNeed\":100671250.134800,\"preReturnDebtMoney\":0.000000,\"returnDebtMoney\":0.000000,\"supplier\":\"浙江瑞银电子有限公司\",\"telephone\":\"\"}]}}'); +INSERT INTO `tbl_log` VALUES (8776, 63, '接口日志', '43.152.142.62/1.9.116.218', '2026-09-30 07:28:50', 0, 'AssetController.categoryList(..)', NULL, 'GET /apis/asset/category/list', '{}', '{\"code\":200,\"data\":{\"rows\":[{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"尚未归入具体种类的资产\",\"updateTime\":1790613193000,\"categoryCode\":\"UNCATEGORIZED\",\"id\":4,\"sort\":10,\"categoryName\":\"未分类\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System 硬件台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"HARDWARE\",\"id\":5,\"sort\":20,\"categoryName\":\"硬件资产\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System 软件台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"SOFTWARE\",\"id\":6,\"sort\":30,\"categoryName\":\"软件资产\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System SIM 卡台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"SIM_CARD\",\"id\":7,\"sort\":40,\"categoryName\":\"SIM卡\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_01BF8DA563A0\",\"id\":11,\"sort\":100,\"categoryName\":\"生产设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_7129859760C3\",\"id\":12,\"sort\":100,\"categoryName\":\"检测设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_9F38069B30A1\",\"id\":13,\"sort\":100,\"categoryName\":\"动力设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_75F489029B11\",\"id\":14,\"sort\":100,\"categoryName\":\"IT设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_3DDFE01CA0B8\",\"id\":15,\"sort\":100,\"categoryName\":\"物流设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_B5D44F2B039A\",\"id\":16,\"sort\":100,\"categoryName\":\"工装设备\",\"enabled\":true}],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (8777, 63, '接口日志', '43.174.54.44/1.9.116.218', '2026-09-30 07:28:55', 0, 'AssetController.categoryOptions()', NULL, 'GET /apis/asset/category/options', '{}', '{\"code\":200,\"data\":{\"rows\":[{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"尚未归入具体种类的资产\",\"updateTime\":1790613193000,\"categoryCode\":\"UNCATEGORIZED\",\"id\":4,\"sort\":10,\"categoryName\":\"未分类\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System 硬件台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"HARDWARE\",\"id\":5,\"sort\":20,\"categoryName\":\"硬件资产\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System 软件台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"SOFTWARE\",\"id\":6,\"sort\":30,\"categoryName\":\"软件资产\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System SIM 卡台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"SIM_CARD\",\"id\":7,\"sort\":40,\"categoryName\":\"SIM卡\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_01BF8DA563A0\",\"id\":11,\"sort\":100,\"categoryName\":\"生产设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_7129859760C3\",\"id\":12,\"sort\":100,\"categoryName\":\"检测设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_9F38069B30A1\",\"id\":13,\"sort\":100,\"categoryName\":\"动力设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_75F489029B11\",\"id\":14,\"sort\":100,\"categoryName\":\"IT设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_3DDFE01CA0B8\",\"id\":15,\"sort\":100,\"categoryName\":\"物流设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_B5D44F2B039A\",\"id\":16,\"sort\":100,\"categoryName\":\"工装设备\",\"enabled\":true}],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (8778, 63, '接口日志', '43.152.142.133/1.9.116.218', '2026-09-30 07:28:55', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":255,\"rows\":[{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAB/031PC\",\"assetName\":\"HP\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"221\",\"externalSource\":\"HARDWARE\",\"id\":60,\"keeper\":\"Aqila\",\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Testing / Lab\",\"source\":\"SAS\",\"specification\":\"Monitor / HP\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/N02/CPU020\",\"assetName\":\"HP HP Pro 3330 MT\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"220\",\"externalSource\":\"HARDWARE\",\"id\":59,\"keeper\":\"Aqila\",\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: SGH221S6SH;用途: Testing / Lab\",\"source\":\"SAS\",\"specification\":\"CPU / HP / HP Pro 3330 MT / Win 10 Pro / Core i7-2600 / 8G / 220G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAB/030PC\",\"assetName\":\"HP ProDesk 400 G7\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"219\",\"externalSource\":\"HARDWARE\",\"id\":58,\"keeper\":\"Aqila\",\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 4CE216BDPN;用途: Testing / Lab;原备注: Windows License Key : QRWJ7-2N8MF-TM9WY-HKB42-VFR9C\\n\",\"source\":\"SAS\",\"specification\":\"CPU / HP / ProDesk 400 G7 / Win 11 Pro / Core i5-10500 / 16G / 250G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAB/029CPU\",\"assetName\":\"HP ProDesk 400 G7\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"218\",\"externalSource\":\"HARDWARE\",\"id\":57,\"keeper\":\"Aqila\",\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 4CE219BMSP;用途: Testing / Lab\",\"source\":\"SAS\",\"specification\":\"CPU / HP / ProDesk 400 G7 / Win 11 Pro / Core i5-10500 / 16G / 1TB\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAB/029PC\",\"assetName\":\"HP\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"217\",\"externalSource\":\"HARDWARE\",\"id\":56,\"keeper\":\"Aqila\",\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Testing / Lab\",\"source\":\"SAS\",\"specification\":\"Monitor / HP\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAP19/11112024\",\"assetName\":\"Lenovo ThinkPad X1 Carbon Gen 8\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"216\",\"externalSource\":\"HARDWARE\",\"id\":55,\"keeper\":\"Hasmah\",\"location\":\"Not Specified\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Not Specified;原备注: RETURN TO SUPPLIER DUE THE PROBLEM\",\"source\":\"SAS\",\"specification\":\"Laptop / Lenovo / ThinkPad X1 Carbon Gen 8\",\"status\":\"REPAIR\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Human Resources\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAP18/11112024\",\"assetName\":\"Lenovo ThinkPad X1 Carbon Gen 8\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"215\",\"externalSource\":\"HARDWARE\",\"id\":54,\"keeper\":\"Hasmah\",\"location\":\"Stored with HR\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Stored\",\"source\":\"SAS\",\"specification\":\"Laptop / Lenovo / ThinkPad X1 Carbon Gen 8\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Human Resources\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAP17/11112024\",\"assetName\":\"HP Pro Book 440\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"214\",\"externalSource\":\"HARDWARE\",\"id\":53,\"keeper\":\"Hasmah\",\"location\":\"Stored with HR\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Stored\",\"source\":\"SAS\",\"specification\":\"Laptop / HP / Pro Book 440\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Human Resources\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAP16/11112024\",\"assetName\":\"HP Radeon Intel Core i5\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"213\",\"externalSource\":\"HARDWARE\",\"id\":52,\"keeper\":\"Hasmah\",\"location\":\"Stored with HR\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Stored\",\"source\":\"SAS\",\"specification\":\"Laptop / HP / Radeon Intel Core i5\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Human Resources\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-212\",\"assetName\":\"HP All-in-One 24-dp0209d\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"212\",\"externalSource\":\"HARDWARE\",\"id\":51,\"keeper\":\"Hasmah\",\"location\":\"HR Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 8CC10109F6\",\"source\":\"SAS\",\"specification\":\"All-In-One / HP / All-in-One 24-dp0209d / Win 10 Home / AMD Ryzen 5 4500U / 24G / 500G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Human Resources\"}]}}'); +INSERT INTO `tbl_log` VALUES (8779, 63, '接口日志', '43.174.32.14/1.9.116.218', '2026-09-30 07:29:22', 0, 'SupplierController.getList(..)', NULL, 'GET /apis/supplier/list', '{\"search\":\"{\\\"supplier\\\":\\\"\\\",\\\"type\\\":\\\"供应商\\\",\\\"contacts\\\":\\\"\\\",\\\"telephone\\\":\\\"\\\",\\\"phonenum\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"accountNumber\":\"\",\"address\":\"\",\"advanceIn\":0.000000,\"allNeedGet\":0.000000,\"allNeedPay\":116500257.436400,\"bankName\":\"\",\"beginNeedGet\":0.000000,\"beginNeedPay\":0.000000,\"contacts\":\"\",\"creator\":63,\"deleteFlag\":\"0\",\"description\":\"Excel初始化默认供应商\",\"email\":\"\",\"enabled\":true,\"fax\":\"\",\"id\":89,\"isystem\":1,\"phoneNum\":\"\",\"sort\":\"1\",\"supplier\":\"浙江瑞银电子有限公司\",\"taxNum\":\"\",\"taxRate\":0.000000,\"telephone\":\"\",\"tenantId\":63,\"type\":\"供应商\"}]}}'); +INSERT INTO `tbl_log` VALUES (8780, 63, '接口日志', '43.152.142.140/1.9.116.218', '2026-09-30 07:29:23', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8781, 63, '接口日志', '43.152.142.142/1.9.116.218', '2026-09-30 07:29:23', 0, 'SupplierController.getList(..)', NULL, 'GET /apis/supplier/list', '{\"search\":\"{\\\"supplier\\\":\\\"\\\",\\\"type\\\":\\\"客户\\\",\\\"contacts\\\":\\\"\\\",\\\"telephone\\\":\\\"\\\",\\\"phonenum\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"accountNumber\":\"\",\"address\":\"\",\"advanceIn\":0.000000,\"allNeedGet\":12430066.000000,\"allNeedPay\":0.000000,\"bankName\":\"\",\"beginNeedGet\":0.000000,\"beginNeedPay\":0.000000,\"contacts\":\"\",\"creator\":63,\"deleteFlag\":\"0\",\"description\":\"Stock Status客户\",\"email\":\"\",\"enabled\":true,\"fax\":\"\",\"id\":90,\"isystem\":1,\"phoneNum\":\"\",\"sort\":\"2\",\"supplier\":\"TNB\",\"taxNum\":\"\",\"taxRate\":10.000000,\"telephone\":\"\",\"tenantId\":63,\"type\":\"客户\"}]}}'); +INSERT INTO `tbl_log` VALUES (8782, 63, '接口日志', '43.152.142.31/1.9.116.218', '2026-09-30 07:29:23', 0, 'CustomerCategoryController.getTreeList(..)', NULL, 'GET /apis/customerCategory/treeList', '{}', '{\"code\":200,\"data\":{\"data\":[],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (8783, 63, '接口日志', '43.174.55.40/1.9.116.218', '2026-09-30 07:29:25', 0, 'SupplierController.getList(..)', NULL, 'GET /apis/supplier/list', '{\"search\":\"{\\\"supplier\\\":\\\"\\\",\\\"type\\\":\\\"会员\\\",\\\"telephone\\\":\\\"\\\",\\\"phonenum\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (8784, 63, '接口日志', '43.174.32.33/1.9.116.218', '2026-09-30 07:29:26', 0, 'CustomerCategoryController.getTreeList(..)', NULL, 'GET /apis/customerCategory/treeList', '{}', '{\"code\":200,\"data\":{\"data\":[],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (8785, 63, '接口日志', '43.174.53.11/1.9.116.218', '2026-09-30 07:29:27', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8786, 63, '接口日志', '43.152.142.128/1.9.116.218', '2026-09-30 07:29:27', 0, 'DepotController.getList(..)', NULL, 'GET /apis/depot/list', '{\"search\":\"{\\\"name\\\":\\\"\\\",\\\"remark\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"address\":\"\",\"deleteFlag\":\"0\",\"enabled\":true,\"id\":25,\"isDefault\":true,\"name\":\"半成品仓库\",\"remark\":\"总部入库物料\",\"sort\":\"1\",\"tenantId\":63,\"truckage\":0.000000,\"type\":0,\"warehousing\":0.000000},{\"address\":\"\",\"deleteFlag\":\"0\",\"enabled\":true,\"id\":26,\"isDefault\":false,\"name\":\"成品仓库\",\"remark\":\"Stock Status成品\",\"sort\":\"2\",\"tenantId\":63,\"truckage\":0.000000,\"type\":0,\"warehousing\":0.000000}]}}'); +INSERT INTO `tbl_log` VALUES (8787, 63, '接口日志', '43.152.142.108/1.9.116.218', '2026-09-30 07:29:27', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"}]'); +INSERT INTO `tbl_log` VALUES (8788, 63, '接口日志', '43.152.142.45/1.9.116.218', '2026-09-30 07:29:28', 0, 'InOutItemController.getList(..)', NULL, 'GET /apis/inOutItem/list', '{\"search\":\"{\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"\\\",\\\"remark\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":3,\"rows\":[{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":23,\"name\":\"利息收入\",\"remark\":\"收入\",\"tenantId\":63,\"type\":\"收入\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":22,\"name\":\"房租收入\",\"remark\":\"\",\"tenantId\":63,\"type\":\"收入\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":21,\"name\":\"快递费\",\"remark\":\"\",\"tenantId\":63,\"type\":\"支出\"}]}}'); +INSERT INTO `tbl_log` VALUES (8789, 63, '接口日志', '43.152.142.34/1.9.116.218', '2026-09-30 07:29:30', 0, 'AccountController.getList(..)', NULL, 'GET /apis/account/list', '{\"search\":\"{\\\"name\\\":\\\"\\\",\\\"serialNo\\\":\\\"\\\",\\\"remark\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63,\"thisMonthAmount\":\"0\"},{\"currentAmount\":4375618.532800,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63,\"thisMonthAmount\":\"0\"}]}}'); +INSERT INTO `tbl_log` VALUES (8790, 63, '接口日志', '43.174.32.12/1.9.116.218', '2026-09-30 07:29:31', 0, 'PersonController.getList(..)', NULL, 'GET /apis/person/list', '{\"search\":\"{\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":11,\"rows\":[{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":44,\"name\":\"Neezam\",\"type\":\"CEO\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":43,\"name\":\"Juwairiah\",\"type\":\"财务员\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":31,\"name\":\"Arif\",\"sort\":\"1\",\"tenantId\":63,\"type\":\"商务主管\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":36,\"name\":\"张伟\",\"sort\":\"10\",\"tenantId\":63,\"type\":\"资产管理员\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":32,\"name\":\"Hafiz\",\"sort\":\"2\",\"tenantId\":63,\"type\":\"技术主管\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":37,\"name\":\"陈晨\",\"sort\":\"20\",\"tenantId\":63,\"type\":\"设备工程师\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":33,\"name\":\"Aziman\",\"sort\":\"3\",\"tenantId\":63,\"type\":\"软件工程师\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":38,\"name\":\"王磊\",\"sort\":\"30\",\"tenantId\":63,\"type\":\"生产主管\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":34,\"name\":\"Lim\",\"sort\":\"4\",\"tenantId\":63,\"type\":\"IT\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":39,\"name\":\"赵敏\",\"sort\":\"40\",\"tenantId\":63,\"type\":\"IT运维工程师\"}]}}'); +INSERT INTO `tbl_log` VALUES (8791, 63, '接口日志', '43.174.53.16/1.9.116.218', '2026-09-30 07:29:31', 0, 'SysDictDataController.dictType(..)', NULL, 'GET /apis/dict/data/type/person_type', '{\"dictType\":\"person_type\"}', '{\"msg\":\"操作成功\",\"code\":0,\"data\":[{\"createBy\":\"admin\",\"createTime\":1789644159000,\"dictCode\":13,\"dictLabel\":\"采购员\",\"dictSort\":3,\"dictType\":\"person_type\",\"dictValue\":\"采购员\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"},{\"createBy\":\"admin\",\"createTime\":1789724265000,\"dictCode\":14,\"dictLabel\":\"CEO\",\"dictSort\":4,\"dictType\":\"person_type\",\"dictValue\":\"CEO\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"},{\"createBy\":\"admin\",\"createTime\":1789724275000,\"dictCode\":15,\"dictLabel\":\"IT\",\"dictSort\":5,\"dictType\":\"person_type\",\"dictValue\":\"IT\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}]}'); +INSERT INTO `tbl_log` VALUES (8792, 63, '接口日志', '43.152.142.84/1.9.116.218', '2026-09-30 07:29:31', 0, 'SysDictDataController.dictType(..)', NULL, 'GET /apis/dict/data/type/person_type', '{\"dictType\":\"person_type\"}', '{\"msg\":\"操作成功\",\"code\":0,\"data\":[{\"createBy\":\"admin\",\"createTime\":1789644159000,\"dictCode\":13,\"dictLabel\":\"采购员\",\"dictSort\":3,\"dictType\":\"person_type\",\"dictValue\":\"采购员\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"},{\"createBy\":\"admin\",\"createTime\":1789724265000,\"dictCode\":14,\"dictLabel\":\"CEO\",\"dictSort\":4,\"dictType\":\"person_type\",\"dictValue\":\"CEO\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"},{\"createBy\":\"admin\",\"createTime\":1789724275000,\"dictCode\":15,\"dictLabel\":\"IT\",\"dictSort\":5,\"dictType\":\"person_type\",\"dictValue\":\"IT\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}]}'); +INSERT INTO `tbl_log` VALUES (8793, 63, '接口日志', '43.174.52.31/1.9.116.218', '2026-09-30 07:29:39', 0, 'RoleController.getList(..)', NULL, 'GET /apis/role/list', '{\"search\":\"{\\\"name\\\":\\\"\\\",\\\"description\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":7,\"rows\":[{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":24,\"name\":\"system admin\",\"type\":\"全部数据\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":23,\"name\":\"system admin\",\"type\":\"全部数据\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":21,\"name\":\"admin\",\"tenantId\":63,\"type\":\"全部数据\"},{\"deleteFlag\":\"0\",\"description\":\"rrr\",\"enabled\":true,\"id\":17,\"name\":\"销售代表\",\"tenantId\":63,\"type\":\"个人数据\"},{\"deleteFlag\":\"0\",\"description\":\"ddd\",\"enabled\":true,\"id\":16,\"name\":\"销售经理\",\"tenantId\":63,\"type\":\"全部数据\"},{\"deleteFlag\":\"0\",\"description\":\"\",\"enabled\":true,\"id\":10,\"name\":\"租户\",\"type\":\"全部数据\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":4,\"name\":\"管理员\",\"type\":\"全部数据\"}]}}'); +INSERT INTO `tbl_log` VALUES (8794, 63, '接口日志', '43.152.142.110/1.9.116.218', '2026-09-30 07:29:40', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8795, 63, '接口日志', '43.174.53.48/1.9.116.218', '2026-09-30 07:29:40', 0, 'UserController.getList(..)', NULL, 'GET /apis/user/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"description\":\"\",\"email\":\"666666@qq.com\",\"id\":63,\"isystem\":1,\"leaderFlag\":\"0\",\"leaderFlagStr\":\"否\",\"loginName\":\"admin\",\"orgAbr\":\"测试部门\",\"orgaId\":12,\"orgaUserRelId\":11,\"password\":\"******\",\"phonenum\":\"1123123123132\",\"position\":\"主管\",\"roleId\":21,\"roleName\":\"admin\",\"status\":0,\"tenantId\":63,\"userBlngOrgaDsplSeq\":\"15\",\"userType\":\"系统管理员\",\"username\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (8796, 63, '接口日志', '43.152.142.68/1.9.116.218', '2026-09-30 07:29:41', 0, 'OrganizationController.getOrganizationTree(..)', NULL, 'GET /apis/organization/getOrganizationTree', '{}', '[{\"children\":[{\"children\":[{\"children\":[],\"checked\":false,\"attributes\":\"12\",\"id\":14,\"state\":\"open\",\"title\":\"部门2\",\"value\":14,\"key\":14}],\"checked\":false,\"attributes\":\"jg1\",\"id\":13,\"state\":\"open\",\"title\":\"部门1\",\"value\":13,\"key\":13}],\"checked\":false,\"attributes\":\"001\",\"id\":12,\"state\":\"open\",\"title\":\"测试部门\",\"value\":12,\"key\":12}]'); +INSERT INTO `tbl_log` VALUES (8797, 63, '接口日志', '43.174.32.19/1.9.116.218', '2026-09-30 07:29:45', 0, 'MaterialPropertyController.getList(..)', NULL, 'GET /apis/materialProperty/list', '{\"search\":\"{\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":3,\"rows\":[{\"anotherName\":\"扩展1\",\"id\":1,\"nativeName\":\"扩展1\"},{\"anotherName\":\"扩展2\",\"id\":2,\"nativeName\":\"扩展2\"},{\"anotherName\":\"扩展3\",\"id\":3,\"nativeName\":\"扩展3\"}]}}'); +INSERT INTO `tbl_log` VALUES (8798, 63, '接口日志', '43.152.142.133/1.9.116.218', '2026-09-30 07:29:47', 0, 'PluginController.checkByTag(..)', NULL, 'GET /apis/plugin/checkByPluginId', '{\"pluginIds\":\"workflow\"}', '{\"code\":200,\"data\":false}'); +INSERT INTO `tbl_log` VALUES (8799, 63, '接口日志', '43.152.142.41/1.9.116.218', '2026-09-30 07:29:47', 0, 'PluginController.checkByTag(..)', NULL, 'GET /apis/plugin/checkByPluginId', '{\"pluginIds\":\"stock-check\"}', '{\"code\":200,\"data\":false}'); +INSERT INTO `tbl_log` VALUES (8800, 63, '接口日志', '43.152.142.62/1.9.116.218', '2026-09-30 07:29:47', 0, 'SystemConfigController.getList(..)', NULL, 'GET /apis/systemConfig/list', '{\"search\":\"{\\\"companyName\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}]}}'); +INSERT INTO `tbl_log` VALUES (8801, 63, '接口日志', '43.174.54.44/1.9.116.218', '2026-09-30 07:29:48', 0, 'FunctionController.getList(..)', NULL, 'GET /apis/function/list', '{\"search\":\"{\\\"name\\\":\\\"\\\",\\\"nameEn\\\":\\\"\\\",\\\"type\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":79,\"rows\":[{\"component\":\"/layouts/TabLayout\",\"deleteFlag\":\"0\",\"enabled\":true,\"icon\":\"shopping-cart\",\"id\":38,\"name\":\"销售管理\",\"nameEn\":\"Sales Management\",\"number\":\"0603\",\"parentNumber\":\"0\",\"pushBtn\":\"\",\"sort\":\"0001\",\"state\":false,\"type\":\"电脑版\",\"url\":\"/billB\"},{\"component\":\"/layouts/TabLayout\",\"deleteFlag\":\"0\",\"enabled\":true,\"icon\":\"retweet\",\"id\":32,\"name\":\"采购管理\",\"nameEn\":\"Purchase Management\",\"number\":\"0502\",\"parentNumber\":\"0\",\"pushBtn\":\"\",\"sort\":\"0002\",\"state\":false,\"type\":\"电脑版\",\"url\":\"/bill\"},{\"component\":\"/layouts/TabLayout\",\"deleteFlag\":\"0\",\"enabled\":true,\"icon\":\"cluster\",\"id\":262,\"name\":\"生产管理\",\"nameEn\":\"Production Management\",\"number\":\"0901\",\"parentNumber\":\"0\",\"pushBtn\":\"\",\"sort\":\"0003\",\"state\":false,\"type\":\"电脑版\",\"url\":\"/production\"},{\"component\":\"/layouts/TabLayout\",\"deleteFlag\":\"0\",\"enabled\":true,\"icon\":\"hdd\",\"id\":239,\"name\":\"仓库管理\",\"nameEn\":\"Warehouse Management\",\"number\":\"0801\",\"parentNumber\":\"0\",\"pushBtn\":\"\",\"sort\":\"0004\",\"state\":false,\"type\":\"电脑版\",\"url\":\"/billD\"},{\"component\":\"/layouts/TabLayout\",\"deleteFlag\":\"0\",\"enabled\":true,\"icon\":\"money-collect\",\"id\":44,\"name\":\"财务管理\",\"nameEn\":\"Finance Management\",\"number\":\"0704\",\"parentNumber\":\"0\",\"pushBtn\":\"\",\"sort\":\"0005\",\"state\":false,\"type\":\"电脑版\",\"url\":\"/financial\"},{\"component\":\"/layouts/TabLayout\",\"deleteFlag\":\"0\",\"enabled\":true,\"icon\":\"bank\",\"id\":272,\"name\":\"资产管理\",\"nameEn\":\"Asset Management\",\"number\":\"0902\",\"parentNumber\":\"0\",\"pushBtn\":\"\",\"sort\":\"0006\",\"state\":false,\"type\":\"电脑版\",\"url\":\"/assetManagement\"},{\"component\":\"/layouts/TabLayout\",\"deleteFlag\":\"0\",\"enabled\":true,\"icon\":\"shopping\",\"id\":21,\"name\":\"商品管理\",\"nameEn\":\"Product Management\",\"number\":\"0101\",\"parentNumber\":\"0\",\"sort\":\"0007\",\"state\":false,\"type\":\"电脑版\",\"url\":\"/material\"},{\"component\":\"/layouts/TabLayout\",\"deleteFlag\":\"0\",\"enabled\":true,\"icon\":\"pie-chart\",\"id\":198,\"name\":\"报表查询\",\"nameEn\":\"Reports\",\"number\":\"0301\",\"parentNumber\":\"0\",\"sort\":\"0008\",\"state\":false,\"type\":\"电脑版\",\"url\":\"/report\"},{\"component\":\"/layouts/TabLayout\",\"deleteFlag\":\"0\",\"enabled\":true,\"icon\":\"appstore\",\"id\":24,\"name\":\"基础资料\",\"nameEn\":\"Master Data\",\"number\":\"0102\",\"parentNumber\":\"0\",\"sort\":\"0009\",\"state\":false,\"type\":\"电脑版\",\"url\":\"/systemA\"},{\"component\":\"/layouts/TabLayout\",\"deleteFlag\":\"0\",\"enabled\":true,\"icon\":\"setting\",\"id\":1,\"name\":\"系统管理\",\"nameEn\":\"System Management\",\"number\":\"0001\",\"parentNumber\":\"0\",\"pushBtn\":\"\",\"sort\":\"0010\",\"state\":true,\"type\":\"电脑版\",\"url\":\"/system\"}]}}'); +INSERT INTO `tbl_log` VALUES (8802, 63, '接口日志', '43.174.32.14/1.9.116.218', '2026-09-30 07:29:50', 0, 'PluginController.getPluginInfo(..)', NULL, 'GET /apis/plugin/list', '{\"currentPage\":1,\"pageSize\":10}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (8803, 63, '接口日志', '43.174.32.12/1.9.116.218', '2026-09-30 07:29:52', 0, 'SysDictTypeController.list(..)', NULL, 'GET /apis/dict/type/list', '{\"search\":\"{\\\"dictName\\\":\\\"\\\",\\\"dictType\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"createBy\":\"admin\",\"createTime\":1639589778000,\"dictId\":1,\"dictName\":\"用户性别\",\"dictType\":\"sys_user_sex\",\"params\":{},\"remark\":\"用户性别列表\",\"status\":\"0\",\"updateBy\":\"admin\",\"updateTime\":1775132441000},{\"createBy\":\"admin\",\"createTime\":1775241057000,\"dictId\":12,\"dictName\":\"系统开关\",\"dictType\":\"sys_normal_disable\",\"params\":{},\"remark\":\"系统开关列表\",\"status\":\"0\",\"updateBy\":\"admin\",\"updateTime\":1775324469000}]}}'); +INSERT INTO `tbl_log` VALUES (8804, 63, '接口日志', '43.152.142.84/1.9.116.218', '2026-09-30 07:29:52', 0, 'SysDictDataController.dictType(..)', NULL, 'GET /apis/dict/data/type/sys_normal_disable', '{\"dictType\":\"sys_normal_disable\"}', '{\"msg\":\"操作成功\",\"code\":0,\"data\":[{\"createBy\":\"admin\",\"createTime\":1775241094000,\"dictCode\":11,\"dictLabel\":\"正常\",\"dictSort\":1,\"dictType\":\"sys_normal_disable\",\"dictValue\":\"0\",\"isDefault\":\"N\",\"listClass\":\"green\",\"params\":{},\"remark\":\"正常状态\",\"status\":\"0\"},{\"createBy\":\"admin\",\"createTime\":1775241123000,\"dictCode\":12,\"dictLabel\":\"停用\",\"dictSort\":2,\"dictType\":\"sys_normal_disable\",\"dictValue\":\"1\",\"isDefault\":\"N\",\"listClass\":\"red\",\"params\":{},\"remark\":\"停用状态\",\"status\":\"0\"}]}'); +INSERT INTO `tbl_log` VALUES (8805, 63, '接口日志', '43.174.32.33/1.9.116.218', '2026-09-30 07:29:52', 0, 'SysDictDataController.dictType(..)', NULL, 'GET /apis/dict/data/type/sys_normal_disable', '{\"dictType\":\"sys_normal_disable\"}', '{\"msg\":\"操作成功\",\"code\":0,\"data\":[{\"createBy\":\"admin\",\"createTime\":1775241094000,\"dictCode\":11,\"dictLabel\":\"正常\",\"dictSort\":1,\"dictType\":\"sys_normal_disable\",\"dictValue\":\"0\",\"isDefault\":\"N\",\"listClass\":\"green\",\"params\":{},\"remark\":\"正常状态\",\"status\":\"0\"},{\"createBy\":\"admin\",\"createTime\":1775241123000,\"dictCode\":12,\"dictLabel\":\"停用\",\"dictSort\":2,\"dictType\":\"sys_normal_disable\",\"dictValue\":\"1\",\"isDefault\":\"N\",\"listClass\":\"red\",\"params\":{},\"remark\":\"停用状态\",\"status\":\"0\"}]}'); +INSERT INTO `tbl_log` VALUES (8806, 63, '接口日志', '43.152.142.68/1.9.116.218', '2026-09-30 07:29:52', 0, 'SysDictDataController.dictType(..)', NULL, 'GET /apis/dict/data/type/sys_normal_disable', '{\"dictType\":\"sys_normal_disable\"}', '{\"msg\":\"操作成功\",\"code\":0,\"data\":[{\"createBy\":\"admin\",\"createTime\":1775241094000,\"dictCode\":11,\"dictLabel\":\"正常\",\"dictSort\":1,\"dictType\":\"sys_normal_disable\",\"dictValue\":\"0\",\"isDefault\":\"N\",\"listClass\":\"green\",\"params\":{},\"remark\":\"正常状态\",\"status\":\"0\"},{\"createBy\":\"admin\",\"createTime\":1775241123000,\"dictCode\":12,\"dictLabel\":\"停用\",\"dictSort\":2,\"dictType\":\"sys_normal_disable\",\"dictValue\":\"1\",\"isDefault\":\"N\",\"listClass\":\"red\",\"params\":{},\"remark\":\"停用状态\",\"status\":\"0\"}]}'); +INSERT INTO `tbl_log` VALUES (8807, 63, '接口日志', '43.174.53.19/1.9.116.218', '2026-09-30 07:29:53', 0, 'PlatformConfigController.getList(..)', NULL, 'GET /apis/platformConfig/list', '{\"search\":\"{\\\"platformKey\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":21,\"rows\":[{\"id\":1,\"platformKey\":\"platform_name\",\"platformKeyInfo\":\"平台名称\",\"platformValue\":\"SMT\"},{\"id\":3,\"platformKey\":\"platform_url\",\"platformKeyInfo\":\"官方网站\",\"platformValue\":\"http://www.gyjerp.com/\"},{\"id\":4,\"platformKey\":\"bill_print_flag\",\"platformKeyInfo\":\"三联打印启用标记\",\"platformValue\":\"0\"},{\"id\":5,\"platformKey\":\"bill_print_url\",\"platformKeyInfo\":\"三联打印地址\",\"platformValue\":\"\"},{\"id\":6,\"platformKey\":\"pay_fee_url\",\"platformKeyInfo\":\"租户续费地址\",\"platformValue\":\"\"},{\"id\":7,\"platformKey\":\"register_flag\",\"platformKeyInfo\":\"注册启用标记\",\"platformValue\":\"0\"},{\"id\":9,\"platformKey\":\"send_workflow_url\",\"platformKeyInfo\":\"发起流程地址\",\"platformValue\":\"\"},{\"id\":10,\"platformKey\":\"weixinUrl\",\"platformKeyInfo\":\"微信url\",\"platformValue\":\"\"},{\"id\":11,\"platformKey\":\"weixinAppid\",\"platformKeyInfo\":\"微信appid\",\"platformValue\":\"\"},{\"id\":12,\"platformKey\":\"weixinSecret\",\"platformKeyInfo\":\"微信secret\",\"platformValue\":\"\"}]}}'); +INSERT INTO `tbl_log` VALUES (8808, 63, '接口日志', '43.168.32.240/1.9.116.218', '2026-09-30 07:29:58', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (8809, 63, '接口日志', '43.174.53.11/1.9.116.218', '2026-09-30 07:29:58', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"}]'); +INSERT INTO `tbl_log` VALUES (8810, 63, '接口日志', '43.152.142.133/1.9.116.218', '2026-09-30 07:29:58', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8811, 63, '接口日志', '43.152.142.140/1.9.116.218', '2026-09-30 07:29:58', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (8812, 63, '接口日志', '43.152.142.128/1.9.116.218', '2026-09-30 07:29:58', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (8813, 63, '接口日志', '43.152.142.62/1.9.116.218', '2026-09-30 07:29:58', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"其它\\\",\\\"subType\\\":\\\"销售订单\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-30\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"createTimeRange\\\":[\\\"2026-06-29T16:00:00.000Z\\\",\\\"2026-09-29T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":5,\"rows\":[{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789718483000,\"creator\":63,\"debt\":808500.000000,\"defaultNumber\":\"XSDD00000001726\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":808500.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1719,\"lastDebt\":808500.000000,\"lastDeposit\":0.000000,\"materialCount\":10000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD00000001726\",\"operTime\":1789732682000,\"operTimeStr\":\"2026-09-18 15:58:02\",\"organId\":90,\"organName\":\"TNB\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"totalPrice\":735000.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789726236000,\"creator\":63,\"debt\":340000000.000000,\"defaultNumber\":\"XSDD00000001724\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":340000000.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1718,\"lastDebt\":340000000.000000,\"lastDeposit\":0.000000,\"materialCount\":1000000.000000,\"materialsList\":\"3PH APEC3-WC 3PH APEC3-WC 3PH APEC3-WC \",\"number\":\"XSDD00000001724\",\"operTime\":1789725706000,\"operTimeStr\":\"2026-09-18 14:01:46\",\"organId\":90,\"organName\":\"TNB\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"0\",\"subType\":\"销售订单\",\"totalPrice\":340000000.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1785355200000,\"creator\":63,\"debt\":242550.000000,\"defaultNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":242550.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1580,\"lastDebt\":242550.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":3000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303475-1PH-WS79-ADD1\",\"operTime\":1785355200000,\"operTimeStr\":\"2026-07-30 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303475\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":242550.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1785355200000,\"creator\":63,\"debt\":323400.000000,\"defaultNumber\":\"XSDD-42303447-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":323400.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1574,\"lastDebt\":323400.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":4000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303447-1PH-WS79-ADD1\",\"operTime\":1785355200000,\"operTimeStr\":\"2026-07-30 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303447\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":323400.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1782936000000,\"creator\":63,\"debt\":323400.000000,\"defaultNumber\":\"XSDD-42303429-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":323400.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1569,\"lastDebt\":323400.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":4000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303429-1PH-WS79-ADD1\",\"operTime\":1782936000000,\"operTimeStr\":\"2026-07-02 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303429\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":323400.000000,\"type\":\"其它\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (8814, 63, '接口日志', '43.174.32.14/1.9.116.218', '2026-09-30 07:29:58', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8815, 63, '接口日志', '43.174.53.16/1.9.116.218', '2026-09-30 07:29:58', 0, 'PersonController.getPersonByNumType(..)', NULL, 'GET /apis/person/getPersonByNumType', '{\"typeNum\":\"1\"}', '[]'); +INSERT INTO `tbl_log` VALUES (8816, 63, '接口日志', '43.152.142.34/1.9.116.218', '2026-09-30 07:29:58', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8817, 63, '接口日志', '43.174.32.19/1.9.116.218', '2026-09-30 07:30:06', 0, 'DeliveryPlanController.getList(..)', NULL, 'GET /apis/deliveryPlan/list', '{\"search\":\"{\\\"planNumber\\\":\\\"\\\",\\\"sourceBillNumber\\\":\\\"\\\",\\\"saleOrderNumber\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"createTime\":1789720385000,\"creator\":63,\"creatorName\":\"admin\",\"customerId\":90,\"customerName\":\"TNB\",\"deleteFlag\":\"0\",\"id\":7,\"materialsList\":\"1PH WS79\",\"planNumber\":\"JH00000001741\",\"planQuantity\":10000.000000,\"saleOrderNumber\":\"XSDD00000001726\",\"shippedQuantity\":0.000000,\"sourceBillId\":1720,\"sourceBillNumber\":\"XSCK00000001728\",\"sourceType\":\"sale\",\"status\":\"2\"},{\"createTime\":1789717298000,\"creator\":63,\"creatorName\":\"admin\",\"customerId\":90,\"customerName\":\"TNB\",\"deleteFlag\":\"0\",\"id\":6,\"materialsList\":\"3PH APEC3-WC\",\"planNumber\":\"JH00000001717\",\"planQuantity\":149.000000,\"saleOrderNumber\":\"XSDD-42260529-3PH-APEC3-WC-OV\",\"shippedQuantity\":0.000000,\"sourceBillId\":1714,\"sourceBillNumber\":\"XSCK-3PH-APEC3-WC-OV-28\",\"sourceType\":\"sale\",\"status\":\"2\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (8818, 63, '接口日志', '43.152.142.41/1.9.116.218', '2026-09-30 07:30:08', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8819, 63, '接口日志', '43.174.52.31/1.9.116.218', '2026-09-30 07:30:08', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (8820, 63, '接口日志', '43.174.55.40/1.9.116.218', '2026-09-30 07:30:08', 0, 'PersonController.getPersonByNumType(..)', NULL, 'GET /apis/person/getPersonByNumType', '{\"typeNum\":\"1\"}', '[]'); +INSERT INTO `tbl_log` VALUES (8821, 63, '接口日志', '43.152.142.110/1.9.116.218', '2026-09-30 07:30:08', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (8822, 63, '接口日志', '43.174.54.44/1.9.116.218', '2026-09-30 07:30:08', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"入库\\\",\\\"subType\\\":\\\"销售退货\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-30\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"createTimeRange\\\":[\\\"2026-06-29T16:00:00.000Z\\\",\\\"2026-09-29T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (8823, 63, '接口日志', '43.152.142.31/1.9.116.218', '2026-09-30 07:30:08', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"}]'); +INSERT INTO `tbl_log` VALUES (8824, 63, '接口日志', '43.152.142.142/1.9.116.218', '2026-09-30 07:30:08', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8825, 63, '接口日志', '43.168.32.240/1.9.116.218', '2026-09-30 07:30:08', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (8826, 63, '接口日志', '43.168.32.240/1.9.116.218', '2026-09-30 07:30:15', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (8827, 63, '接口日志', '43.174.53.48/1.9.116.218', '2026-09-30 07:30:15', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (8828, 63, '接口日志', '43.152.142.108/1.9.116.218', '2026-09-30 07:30:15', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8829, 63, '接口日志', '43.152.142.84/1.9.116.218', '2026-09-30 07:30:15', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8830, 63, '接口日志', '43.174.32.12/1.9.116.218', '2026-09-30 07:30:15', 0, 'PersonController.getPersonByNumType(..)', NULL, 'GET /apis/person/getPersonByNumType', '{\"typeNum\":\"1\"}', '[]'); +INSERT INTO `tbl_log` VALUES (8831, 63, '接口日志', '43.174.32.33/1.9.116.218', '2026-09-30 07:30:15', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"}]'); +INSERT INTO `tbl_log` VALUES (8832, 63, '接口日志', '43.152.142.45/1.9.116.218', '2026-09-30 07:30:15', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"出库\\\",\\\"subType\\\":\\\"销售\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-30\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"createTimeRange\\\":[\\\"2026-06-29T16:00:00.000Z\\\",\\\"2026-09-29T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":50,\"rows\":[{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789718584000,\"creator\":63,\"debt\":808500.000000,\"defaultNumber\":\"XSCK00000001728\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":808500.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1720,\"lastDebt\":808500.000000,\"lastDeposit\":0.000000,\"linkNumber\":\"XSDD00000001726\",\"materialCount\":10000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK00000001728\",\"operTime\":1789732981000,\"operTimeStr\":\"2026-09-18 16:03:01\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"totalPrice\":735000.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1786305600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-87\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1671,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303506-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-87\",\"operTime\":1786305600000,\"operTimeStr\":\"2026-08-10 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1786305600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2159-86\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1670,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303506-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2159-86\",\"operTime\":1786305600000,\"operTimeStr\":\"2026-08-10 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2159\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785873600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-DO_2158-85\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1669,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-DO_2158-85\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:DO_2158\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785873600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-84\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1668,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-84\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785873600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-DO_2157-83\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1667,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-DO_2157-83\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:DO_2157\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785268800000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2150-69\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1665,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303480-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2150-69\",\"operTime\":1785268800000,\"operTimeStr\":\"2026-07-29 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2150\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784750400000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2142-68\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1664,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303480-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2142-68\",\"operTime\":1784750400000,\"operTimeStr\":\"2026-07-23 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2142\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784145600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-67\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1663,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-67\",\"operTime\":1784145600000,\"operTimeStr\":\"2026-07-16 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784145600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2134-66\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1662,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2134-66\",\"operTime\":1784145600000,\"operTimeStr\":\"2026-07-16 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2134\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (8833, 63, '接口日志', '43.152.142.68/1.9.116.218', '2026-09-30 07:30:15', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (8834, 63, '接口日志', '43.174.53.19/1.9.116.218', '2026-09-30 07:30:15', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8835, 63, '接口日志', '43.152.142.133/1.9.116.218', '2026-09-30 07:30:17', 0, 'SaleShipmentController.getList(..)', NULL, 'GET /apis/saleShipment/list', '{\"search\":\"{\\\"shipmentNumber\\\":\\\"\\\",\\\"saleOutNumber\\\":\\\"\\\",\\\"saleOrderNumber\\\":\\\"\\\",\\\"logisticsNo\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"actualQuantity\":10000.000000,\"approveBy\":63,\"approveByName\":\"admin\",\"approveRemark\":\"审批通过\",\"approveTime\":1789720647000,\"confirmBy\":63,\"confirmByName\":\"admin\",\"confirmTime\":1789720682000,\"createTime\":1789720588000,\"creator\":63,\"creatorName\":\"admin\",\"customerId\":90,\"customerName\":\"TNB\",\"deleteFlag\":\"0\",\"deliveryPlanId\":7,\"deliveryPlanNumber\":\"JH00000001741\",\"differenceQuantity\":0.000000,\"id\":17,\"materialsList\":\"1PH WS79\",\"planQuantity\":10000.000000,\"plannedShipTime\":1789734921000,\"saleOrderNumber\":\"XSDD00000001726\",\"saleOutId\":1720,\"saleOutNumber\":\"XSCK00000001728\",\"shipBy\":63,\"shipByName\":\"admin\",\"shipTime\":1789720682000,\"shipmentNumber\":\"FHTZ00000001742\",\"sourceType\":\"sale\",\"status\":\"2\"},{\"actualQuantity\":149.000000,\"approveBy\":63,\"approveByName\":\"admin\",\"approveRemark\":\"审批通过\",\"approveTime\":1789717350000,\"confirmBy\":63,\"confirmByName\":\"admin\",\"confirmTime\":1789717357000,\"createTime\":1789717342000,\"creator\":63,\"creatorName\":\"admin\",\"customerId\":90,\"customerName\":\"TNB\",\"deleteFlag\":\"0\",\"deliveryPlanId\":6,\"deliveryPlanNumber\":\"JH00000001717\",\"differenceQuantity\":0.000000,\"id\":16,\"logisticsCompany\":\"FEXD\",\"logisticsNo\":\"FD10000001\",\"materialsList\":\"3PH APEC3-WC\",\"planQuantity\":149.000000,\"plannedShipTime\":1789717304000,\"receiver\":\"Hank\",\"receiverAddress\":\"5433 Grand Ave\",\"receiverPhone\":\"60001-1111\",\"saleOrderNumber\":\"XSDD-42260529-3PH-APEC3-WC-OV\",\"saleOutId\":1714,\"saleOutNumber\":\"XSCK-3PH-APEC3-WC-OV-28\",\"shipBy\":63,\"shipByName\":\"admin\",\"shipTime\":1789717357000,\"shipmentNumber\":\"FHTZ00000001718\",\"sourceType\":\"sale\",\"status\":\"2\"}]}}'); +INSERT INTO `tbl_log` VALUES (8836, 63, '接口日志', '43.168.32.240/1.9.116.218', '2026-09-30 07:30:19', 0, 'SupplierController.findBySelectRetail(..)', NULL, 'POST /apis/supplier/findBySelect_retail', '{\"jsonObject\":{\"limit\":1}}', '[]'); +INSERT INTO `tbl_log` VALUES (8837, 63, '接口日志', '43.152.142.140/1.9.116.218', '2026-09-30 07:30:19', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"}]'); +INSERT INTO `tbl_log` VALUES (8838, 63, '接口日志', '43.152.142.128/1.9.116.218', '2026-09-30 07:30:19', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"出库\\\",\\\"subType\\\":\\\"零售\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-30\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"createTimeRange\\\":[\\\"2026-06-29T16:00:00.000Z\\\",\\\"2026-09-29T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (8839, 63, '接口日志', '43.174.53.16/1.9.116.218', '2026-09-30 07:30:19', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8840, 63, '接口日志', '43.152.142.62/1.9.116.218', '2026-09-30 07:30:19', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (8841, 63, '接口日志', '43.174.32.14/1.9.116.218', '2026-09-30 07:30:19', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8842, 63, '接口日志', '43.174.53.11/1.9.116.218', '2026-09-30 07:30:19', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (8843, 63, '接口日志', '43.152.142.34/1.9.116.218', '2026-09-30 07:30:19', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8844, 63, '接口日志', '43.168.32.240/1.9.116.218', '2026-09-30 07:30:20', 0, 'SupplierController.findBySelectRetail(..)', NULL, 'POST /apis/supplier/findBySelect_retail', '{\"jsonObject\":{\"limit\":1}}', '[]'); +INSERT INTO `tbl_log` VALUES (8845, 63, '接口日志', '43.152.142.41/1.9.116.218', '2026-09-30 07:30:20', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"}]'); +INSERT INTO `tbl_log` VALUES (8846, 63, '接口日志', '43.174.52.31/1.9.116.218', '2026-09-30 07:30:20', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8847, 63, '接口日志', '43.174.32.19/1.9.116.218', '2026-09-30 07:30:20', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (8848, 63, '接口日志', '43.174.55.40/1.9.116.218', '2026-09-30 07:30:20', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (8849, 63, '接口日志', '43.152.142.110/1.9.116.218', '2026-09-30 07:30:20', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8850, 63, '接口日志', '43.174.54.44/1.9.116.218', '2026-09-30 07:30:20', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"入库\\\",\\\"subType\\\":\\\"零售退货\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-30\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"createTimeRange\\\":[\\\"2026-06-29T16:00:00.000Z\\\",\\\"2026-09-29T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (8851, 63, '接口日志', '43.174.53.48/1.9.116.218', '2026-09-30 07:30:27', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8852, 63, '接口日志', '43.152.142.108/1.9.116.218', '2026-09-30 07:30:27', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (8853, 63, '接口日志', '43.152.142.45/1.9.116.218', '2026-09-30 07:30:27', 0, 'DepotItemController.findDetailByDepotIdsAndMaterialId(..)', NULL, 'GET /apis/depotItem/findDetailByDepotIdsAndMaterialId', '{\"pageSize\":10,\"currentPage\":1,\"depotIds\":\"\",\"number\":\"\",\"beginTime\":\"\",\"endTime\":\"\",\"stockPriceFlag\":false}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (8854, 63, '接口日志', '43.152.142.31/1.9.116.218', '2026-09-30 07:30:27', 0, 'MaterialController.getListWithStock(..)', NULL, 'GET /apis/material/getListWithStock', '{\"currentPage\":1,\"pageSize\":10,\"position\":\"\",\"materialParam\":\"\",\"zeroStock\":0,\"column\":\"createTime\",\"order\":\"desc\"}', '{\"code\":200,\"data\":{\"currentStockPrice\":107372523.170000000000,\"moveAvgPriceFlag\":false,\"total\":22,\"showStockPrice\":true,\"currentWeight\":0E-12,\"currentStock\":519203.000000,\"rows\":[{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"成品\",\"color\":\"\",\"currentStock\":7223.000000,\"currentStockMovePrice\":2293302.500000000000,\"currentStockPrice\":2293302.500000000000,\"currentUnitPrice\":317.500000,\"currentWeight\":0E-12,\"id\":704,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"3PH-APEC3-WC\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"3PH APEC3-WC\",\"name\":\"3PH APEC3-WC\",\"position\":\"\",\"purchaseDecimal\":317.500000,\"standard\":\"3PH APEC3-WC\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"成品\",\"color\":\"\",\"currentStock\":52400.000000,\"currentStockMovePrice\":3117800.000000000000,\"currentStockPrice\":3117800.000000000000,\"currentUnitPrice\":59.500000,\"currentWeight\":0E-12,\"id\":703,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"1PH-WS79\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"1PH WS79\",\"name\":\"1PH WS79\",\"position\":\"\",\"purchaseDecimal\":59.500000,\"standard\":\"1PH WS79\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":1000.000000,\"currentStockMovePrice\":24300.000000000000,\"currentStockPrice\":24300.000000000000,\"currentUnitPrice\":24.300000,\"currentWeight\":0E-12,\"id\":702,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00722\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-RS178(VA)\",\"name\":\"MD-RS178(VA) RS485分线器\",\"position\":\"\",\"purchaseDecimal\":24.300000,\"standard\":\"MD-RS178(VA)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":100.000000,\"currentStockMovePrice\":14256.000000000000,\"currentStockPrice\":14256.000000000000,\"currentUnitPrice\":142.560000,\"currentWeight\":0E-12,\"id\":701,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.0068900002\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-RS114(VB)\",\"name\":\"MD-RS114(VB) 基于RS485的MODBS TCPMODBS RTUASVII转换模块_(DZG)\",\"position\":\"\",\"purchaseDecimal\":142.560000,\"standard\":\"MD-RS114(VB)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":50.000000,\"currentStockMovePrice\":6642.000000000000,\"currentStockPrice\":6642.000000000000,\"currentUnitPrice\":132.840000,\"currentWeight\":0E-12,\"id\":700,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00686\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"TC160(VA)\",\"name\":\"TC160(VA) 通讯模块供电盒\",\"position\":\"\",\"purchaseDecimal\":132.840000,\"standard\":\"TC160(VA)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":76970.000000,\"currentStockMovePrice\":7697.000000000000,\"currentStockPrice\":7697.000000000000,\"currentUnitPrice\":0.100000,\"currentWeight\":0E-12,\"id\":699,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00654\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-4G111(VF)\",\"name\":\"MD-4G111(VF) 4G模块\",\"position\":\"\",\"purchaseDecimal\":0.100000,\"standard\":\"MD-4G111(VF)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":50.000000,\"currentStockMovePrice\":16200.000000000000,\"currentStockPrice\":16200.000000000000,\"currentUnitPrice\":324.000000,\"currentWeight\":0E-12,\"id\":698,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00562\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-4GVIII(VB)\",\"name\":\"MD-4GVIII(VB)\",\"position\":\"\",\"purchaseDecimal\":324.000000,\"standard\":\"MD-4GVIII(VB)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":500.000000,\"currentStockMovePrice\":64800.000000000000,\"currentStockPrice\":64800.000000000000,\"currentUnitPrice\":129.600000,\"currentWeight\":0E-12,\"id\":697,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00553\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MT-P109(VA)\",\"name\":\"MT-P109(VA)\",\"position\":\"\",\"purchaseDecimal\":129.600000,\"standard\":\"MT-P109(VA)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":54656.000000,\"currentStockMovePrice\":5465.600000000000,\"currentStockPrice\":5465.600000000000,\"currentUnitPrice\":0.100000,\"currentWeight\":0E-12,\"id\":696,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00547\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MT-3NSXL(VC)\",\"name\":\"MT-3NSXL(VC)RF通讯模块\",\"position\":\"\",\"purchaseDecimal\":0.100000,\"standard\":\"MT-3NSXL(VC)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":100.000000,\"currentStockMovePrice\":100375.200000000000,\"currentStockPrice\":100375.200000000000,\"currentUnitPrice\":1003.752000,\"currentWeight\":0E-12,\"id\":695,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00422\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-LR63(VB)\",\"name\":\"MD-LR63(VB)\",\"position\":\"\",\"purchaseDecimal\":1003.752000,\"standard\":\"MD-LR63(VB)\",\"unitName\":\"件\"}]}}'); +INSERT INTO `tbl_log` VALUES (8855, 63, '接口日志', '43.152.142.142/1.9.116.218', '2026-09-30 07:30:27', 0, 'DepotItemController.findDetailByDepotIdsAndMaterialId(..)', NULL, 'GET /apis/depotItem/findDetailByDepotIdsAndMaterialId', '{\"pageSize\":10,\"currentPage\":1,\"depotIds\":\"\",\"number\":\"\",\"beginTime\":\"\",\"endTime\":\"\",\"stockPriceFlag\":true}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (8856, 63, '接口日志', '43.174.32.12/1.9.116.218', '2026-09-30 07:30:46', 0, 'AssetInventoryController.details(..)', NULL, 'GET /apis/assetInventory/details', '{\"inventoryId\":1,\"keyword\":\"\"}', '{\"code\":200,\"data\":{\"total\":3,\"rows\":[{\"actualQuantity\":0.000000,\"bookDepartment\":\"SMT生产部\",\"bookLocation\":\"一车间 SMT-01 线 A 工位\",\"bookQuantity\":1.000000,\"createTime\":1789722750000,\"id\":2,\"imageGroupId\":\"01f08d9e8b2c43cfa2fb59a67ac6a954\",\"imageUrls\":[\"/apis/systemConfig/static/asset-inventory/图片1_1789973064775.png\"],\"inventoryId\":1,\"inventoryStatus\":\"PENDING\",\"model\":\"Panasonic NPM-D3A\",\"targetCode\":\"SMT-L01-MOUNTER-A\",\"targetId\":2,\"targetName\":\"高速模块贴片机 A\",\"targetType\":\"DEVICE\",\"updateTime\":1789987464000},{\"actualQuantity\":0.000000,\"bookDepartment\":\"SMT生产部\",\"bookLocation\":\"一车间 SMT-01 线 B 工位\",\"bookQuantity\":1.000000,\"createTime\":1789722750000,\"id\":3,\"imageUrls\":[],\"inventoryId\":1,\"inventoryStatus\":\"PENDING\",\"model\":\"Panasonic NPM-W2S\",\"targetCode\":\"SMT-L01-MOUNTER-B\",\"targetId\":3,\"targetName\":\"多功能贴片机 B\",\"targetType\":\"DEVICE\",\"updateTime\":1789722750000},{\"actualLocation\":\"一车间 印刷检测区-A区\",\"actualQuantity\":1.000000,\"bookDepartment\":\"品质部\",\"bookLocation\":\"一车间 印刷检测区\",\"bookQuantity\":1.000000,\"createTime\":1789722750000,\"id\":1,\"imageUrls\":[],\"inventoryId\":1,\"inventoryStatus\":\"INVENTORIED\",\"inventoryTime\":1789986951000,\"inventoryUserId\":63,\"inventoryUserName\":\"admin\",\"model\":\"KY8030-3\",\"remark\":\"111\",\"targetCode\":\"QC-SPI-01\",\"targetId\":6,\"targetName\":\"在线 3D SPI\",\"targetType\":\"DEVICE\",\"updateTime\":1789986959000}]}}'); +INSERT INTO `tbl_log` VALUES (8857, NULL, '接口日志', '43.152.142.84/1.9.116.218', '2026-09-30 07:30:46', 0, 'SystemConfigController.view(..)', NULL, 'GET /apis/systemConfig/static/asset-inventory/%E5%9B%BE%E7%89%871_1789973064775.png', '{}', NULL); +INSERT INTO `tbl_log` VALUES (8858, 63, '接口日志', '43.152.142.62/1.9.116.218', '2026-09-30 07:32:11', 0, 'MsgController.getMsgByStatus(..)', NULL, 'GET /apis/msg/getMsgByStatus', '{\"status\":\"1\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (8859, 63, '接口日志', '43.174.53.19/1.9.116.218', '2026-09-30 07:32:11', 0, 'MsgController.getList(..)', NULL, 'GET /apis/msg/list', '{\"search\":\"{\\\"name\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (8860, NULL, '接口日志', '43.174.55.40/1.9.116.218', '2026-09-30 07:32:51', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (8861, NULL, '接口日志', '43.174.32.14/1.9.116.218', '2026-09-30 07:32:52', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (8862, 63, '接口日志', '43.168.32.240/1.9.116.218', '2026-09-30 07:32:52', 0, 'FunctionController.findMenuByPNumber(..)', NULL, 'POST /apis/function/findMenuByPNumber', '{\"jsonObject\":{\"userId\":63,\"pNumber\":0}}', '[{\"component\":\"/layouts/TabLayout\",\"icon\":\"home\",\"id\":0,\"text\":\"首页\",\"url\":\"/dashboard/analysis\",\"textEn\":\"Home\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/SaleOrderList\",\"icon\":\"profile\",\"id\":242,\"text\":\"销售订单\",\"url\":\"/bill/sale_order\",\"textEn\":\"Sales Orders\"},{\"component\":\"/bill/SaleOutList\",\"icon\":\"profile\",\"id\":41,\"text\":\"销售出库\",\"url\":\"/bill/sale_out\",\"textEn\":\"Sales Shipments\"},{\"component\":\"/bill/DeliveryPlanList\",\"icon\":\"profile\",\"id\":271,\"text\":\"交货计划管理\",\"url\":\"/bill/delivery_plan\",\"textEn\":\"Delivery Plans\"},{\"component\":\"/bill/SaleShipmentList\",\"icon\":\"car\",\"id\":268,\"text\":\"发货管理\",\"url\":\"/bill/sale_shipment\",\"textEn\":\"Shipment Management\"},{\"component\":\"/bill/SaleBackList\",\"icon\":\"profile\",\"id\":200,\"text\":\"销售退货\",\"url\":\"/bill/sale_back\",\"textEn\":\"Sales Returns\"},{\"component\":\"/bill/RetailOutList\",\"icon\":\"profile\",\"id\":210,\"text\":\"零售出库\",\"url\":\"/bill/retail_out\",\"textEn\":\"Retail Shipments\"},{\"component\":\"/bill/RetailBackList\",\"icon\":\"profile\",\"id\":211,\"text\":\"零售退货\",\"url\":\"/bill/retail_back\",\"textEn\":\"Retail Returns\"}],\"icon\":\"shopping-cart\",\"id\":38,\"text\":\"销售管理\",\"url\":\"/billB\",\"textEn\":\"Sales Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/PurchaseApplyList\",\"icon\":\"profile\",\"id\":261,\"text\":\"请购单\",\"url\":\"/bill/purchase_apply\",\"textEn\":\"Purchase Requisitions\"},{\"component\":\"/bill/PurchaseOrderList\",\"icon\":\"profile\",\"id\":241,\"text\":\"采购订单\",\"url\":\"/bill/purchase_order\",\"textEn\":\"Purchase Orders\"},{\"component\":\"/bill/PurchaseInList\",\"icon\":\"profile\",\"id\":33,\"text\":\"采购入库\",\"url\":\"/bill/purchase_in\",\"textEn\":\"Purchase Receipts\"},{\"component\":\"/bill/PurchaseBackList\",\"icon\":\"profile\",\"id\":199,\"text\":\"采购退货\",\"url\":\"/bill/purchase_back\",\"textEn\":\"Purchase Returns\"}],\"icon\":\"retweet\",\"id\":32,\"text\":\"采购管理\",\"url\":\"/bill\",\"textEn\":\"Purchase Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/production/PackBomList\",\"icon\":\"profile\",\"id\":263,\"text\":\"生产方案\",\"url\":\"/production/pack_bom\",\"textEn\":\"Production BOMs\"},{\"component\":\"/production/OrderList\",\"icon\":\"profile\",\"id\":264,\"text\":\"生产工单\",\"url\":\"/production/order\",\"textEn\":\"Production Orders\"},{\"component\":\"/production/RequisitionList\",\"icon\":\"profile\",\"id\":265,\"text\":\"领料管理\",\"url\":\"/production/requisition\",\"textEn\":\"Material Requisitions\"},{\"component\":\"/production/ReportList\",\"icon\":\"profile\",\"id\":266,\"text\":\"完工报工\",\"url\":\"/production/report\",\"textEn\":\"Production Reports\"}],\"icon\":\"cluster\",\"id\":262,\"text\":\"生产管理\",\"url\":\"/production\",\"textEn\":\"Production Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/MaterialStock\",\"icon\":\"profile\",\"id\":246,\"text\":\"商品库存\",\"url\":\"/report/material_stock\",\"textEn\":\"Product Inventory\"},{\"component\":\"/bill/OtherInList\",\"icon\":\"profile\",\"id\":201,\"text\":\"其它入库\",\"url\":\"/bill/other_in\",\"textEn\":\"Other Receipts\"},{\"component\":\"/bill/OtherOutList\",\"icon\":\"profile\",\"id\":202,\"text\":\"其它出库\",\"url\":\"/bill/other_out\",\"textEn\":\"Other Shipments\"},{\"component\":\"/bill/HeadquartersInList\",\"icon\":\"profile\",\"id\":270,\"text\":\"总部入库\",\"url\":\"/bill/headquarters_in\",\"textEn\":\"Headquarters Receipts\"}],\"icon\":\"hdd\",\"id\":239,\"text\":\"仓库管理\",\"url\":\"/billD\",\"textEn\":\"Warehouse Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/financial/MoneyInList\",\"icon\":\"profile\",\"id\":204,\"text\":\"收款单\",\"url\":\"/financial/money_in\",\"textEn\":\"Receipt Vouchers\"},{\"component\":\"/financial/MoneyOutList\",\"icon\":\"profile\",\"id\":205,\"text\":\"付款单\",\"url\":\"/financial/money_out\",\"textEn\":\"Payment Vouchers\"}],\"icon\":\"money-collect\",\"id\":44,\"text\":\"财务管理\",\"url\":\"/financial\",\"textEn\":\"Finance Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/asset/AssetDashboard\",\"icon\":\"dashboard\",\"id\":276,\"text\":\"资产汇总\",\"url\":\"/asset\",\"textEn\":\"Asset Overview\"},{\"component\":\"/asset/AssetList\",\"icon\":\"profile\",\"id\":273,\"text\":\"资产台账\",\"url\":\"/asset/ledger\",\"textEn\":\"Asset Ledger\"},{\"component\":\"/asset/DeviceList\",\"icon\":\"tool\",\"id\":274,\"text\":\"设备台账\",\"url\":\"/asset/device\",\"textEn\":\"Device Ledger\"},{\"component\":\"/asset/InventoryList\",\"icon\":\"scan\",\"id\":275,\"text\":\"资产盘点\",\"url\":\"/asset/inventory\",\"textEn\":\"Asset Inventory\"}],\"icon\":\"bank\",\"id\":272,\"text\":\"资产管理\",\"url\":\"/assetManagement\",\"textEn\":\"Asset Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/material/MaterialCategoryList\",\"icon\":\"profile\",\"id\":22,\"text\":\"商品类别\",\"url\":\"/material/material_category\",\"textEn\":\"Product Categories\"},{\"component\":\"/material/MaterialList\",\"icon\":\"profile\",\"id\":23,\"text\":\"商品信息\",\"url\":\"/material/material\",\"textEn\":\"Product Information\"},{\"component\":\"/system/UnitList\",\"icon\":\"profile\",\"id\":220,\"text\":\"多单位\",\"url\":\"/system/unit\",\"textEn\":\"Multiple Units\"},{\"component\":\"/material/MaterialAttributeList\",\"icon\":\"profile\",\"id\":247,\"text\":\"多属性\",\"url\":\"/material/material_attribute\",\"textEn\":\"Product Attributes\"}],\"icon\":\"shopping\",\"id\":21,\"text\":\"商品管理\",\"url\":\"/material\",\"textEn\":\"Product Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/AccountReport\",\"icon\":\"profile\",\"id\":207,\"text\":\"账户统计\",\"url\":\"/report/account_report\",\"textEn\":\"Account Summary\"},{\"component\":\"/report/RetailOutReport\",\"icon\":\"profile\",\"id\":259,\"text\":\"零售统计\",\"url\":\"/report/retail_out_report\",\"textEn\":\"Retail Summary\"},{\"component\":\"/report/BuyInReport\",\"icon\":\"profile\",\"id\":208,\"text\":\"采购统计\",\"url\":\"/report/buy_in_report\",\"textEn\":\"Purchase Summary\"},{\"component\":\"/report/SaleOutReport\",\"icon\":\"profile\",\"id\":209,\"text\":\"销售统计\",\"url\":\"/report/sale_out_report\",\"textEn\":\"Sales Summary\"},{\"component\":\"/report/InDetail\",\"icon\":\"profile\",\"id\":226,\"text\":\"入库明细\",\"url\":\"/report/in_detail\",\"textEn\":\"Inbound Details\"},{\"component\":\"/report/OutDetail\",\"icon\":\"profile\",\"id\":227,\"text\":\"出库明细\",\"url\":\"/report/out_detail\",\"textEn\":\"Outbound Details\"},{\"component\":\"/report/InMaterialCount\",\"icon\":\"profile\",\"id\":228,\"text\":\"入库汇总\",\"url\":\"/report/in_material_count\",\"textEn\":\"Inbound Summary\"},{\"component\":\"/report/OutMaterialCount\",\"icon\":\"profile\",\"id\":229,\"text\":\"出库汇总\",\"url\":\"/report/out_material_count\",\"textEn\":\"Outbound Summary\"},{\"component\":\"/report/InOutStockReport\",\"icon\":\"profile\",\"id\":59,\"text\":\"进销存统计\",\"url\":\"/report/in_out_stock_report\",\"textEn\":\"Inventory Transaction Summary\"},{\"component\":\"/report/CustomerAccount\",\"icon\":\"profile\",\"id\":235,\"text\":\"客户对账\",\"url\":\"/report/customer_account\",\"textEn\":\"Customer Reconciliation\"},{\"component\":\"/report/VendorAccount\",\"icon\":\"profile\",\"id\":237,\"text\":\"供应商对账\",\"url\":\"/report/vendor_account\",\"textEn\":\"Supplier Reconciliation\"},{\"component\":\"/report/StockWarningReport\",\"icon\":\"profile\",\"id\":244,\"text\":\"库存预警\",\"url\":\"/report/stock_warning_report\",\"textEn\":\"Stock Alerts\"}],\"icon\":\"pie-chart\",\"id\":198,\"text\":\"报表查询\",\"url\":\"/report\",\"textEn\":\"Reports\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/VendorList\",\"icon\":\"profile\",\"id\":25,\"text\":\"供应商信息\",\"url\":\"/system/vendor\",\"textEn\":\"Suppliers\"},{\"component\":\"/system/CustomerList\",\"icon\":\"profile\",\"id\":217,\"text\":\"客户信息\",\"url\":\"/system/customer\",\"textEn\":\"Customers\"},{\"component\":\"/system/MemberList\",\"icon\":\"profile\",\"id\":218,\"text\":\"会员信息\",\"url\":\"/system/member\",\"textEn\":\"Members\"},{\"component\":\"/system/CustomerCategoryList\",\"icon\":\"bars\",\"id\":267,\"text\":\"客户分类\",\"url\":\"/system/customerCategory\",\"textEn\":\"Customer Categories\"},{\"component\":\"/system/DepotList\",\"icon\":\"profile\",\"id\":26,\"text\":\"仓库信息\",\"url\":\"/system/depot\",\"textEn\":\"Warehouses\"},{\"component\":\"/system/InOutItemList\",\"icon\":\"profile\",\"id\":194,\"text\":\"收支项目\",\"url\":\"/system/in_out_item\",\"textEn\":\"Income and Expense Items\"},{\"component\":\"/system/AccountList\",\"icon\":\"profile\",\"id\":195,\"text\":\"结算账户\",\"url\":\"/system/account\",\"textEn\":\"Settlement Accounts\"},{\"component\":\"/system/PersonList\",\"icon\":\"profile\",\"id\":31,\"text\":\"操作人员管理\",\"url\":\"/system/person\",\"textEn\":\"Operators\"}],\"icon\":\"appstore\",\"id\":24,\"text\":\"基础资料\",\"url\":\"/systemA\",\"textEn\":\"Master Data\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/RoleList\",\"icon\":\"profile\",\"id\":13,\"text\":\"角色管理\",\"url\":\"/system/role\",\"textEn\":\"Role Management\"},{\"component\":\"/system/UserList\",\"icon\":\"profile\",\"id\":14,\"text\":\"用户管理\",\"url\":\"/system/user\",\"textEn\":\"User Management\"},{\"component\":\"/system/OrganizationList\",\"icon\":\"profile\",\"id\":243,\"text\":\"部门管理\",\"url\":\"/system/organization\",\"textEn\":\"Department Management\"},{\"component\":\"/system/LogList\",\"icon\":\"profile\",\"id\":15,\"text\":\"日志管理\",\"url\":\"/system/log\",\"textEn\":\"Log Management\"},{\"component\":\"/material/MaterialPropertyList\",\"icon\":\"profile\",\"id\":236,\"text\":\"商品属性\",\"url\":\"/material/material_property\",\"textEn\":\"Product Properties\"},{\"component\":\"/system/SystemConfigList\",\"icon\":\"profile\",\"id\":234,\"text\":\"系统配置\",\"url\":\"/system/system_config\",\"textEn\":\"System Configuration\"},{\"component\":\"/system/FunctionList\",\"icon\":\"profile\",\"id\":16,\"text\":\"菜单管理\",\"url\":\"/system/function\",\"textEn\":\"Resource Menus\"},{\"component\":\"/system/PluginList\",\"icon\":\"profile\",\"id\":245,\"text\":\"插件管理\",\"url\":\"/system/plugin\",\"textEn\":\"Plugin Management\"},{\"component\":\"/system/DictList\",\"icon\":\"profile\",\"id\":260,\"text\":\"字典管理\",\"url\":\"/system/dict\",\"textEn\":\"Dictionary Management\"},{\"component\":\"/system/PlatformConfigList\",\"icon\":\"profile\",\"id\":258,\"text\":\"平台配置\",\"url\":\"/system/platform_config\",\"textEn\":\"Platform Configuration\"}],\"icon\":\"setting\",\"id\":1,\"text\":\"系统管理\",\"url\":\"/system\",\"textEn\":\"System Management\"}]'); +INSERT INTO `tbl_log` VALUES (8863, 63, '接口日志', '43.152.142.34/1.9.116.218', '2026-09-30 07:32:52', 0, 'UserController.getUserBtnByCurrentUser(..)', NULL, 'GET /apis/user/getUserBtnByCurrentUser', '{}', '{\"code\":200,\"data\":{\"userBtn\":[{\"btnStr\":\"8,1\",\"url\":\"/system/role\"},{\"btnStr\":\"1\",\"url\":\"/system/user\"},{\"btnStr\":\"1\",\"url\":\"/system/organization\"},{\"btnStr\":\"1\",\"url\":\"/material/material_property\"},{\"btnStr\":\"1\",\"url\":\"/system/system_config\"},{\"btnStr\":\"1\",\"url\":\"/system/function\"},{\"btnStr\":\"1\",\"url\":\"/system/plugin\"},{\"btnStr\":\"1\",\"url\":\"/material/material_category\"},{\"btnStr\":\"1,3\",\"url\":\"/material/material\"},{\"btnStr\":\"1\",\"url\":\"/system/unit\"},{\"btnStr\":\"1\",\"url\":\"/material/material_attribute\"},{\"btnStr\":\"1,3\",\"url\":\"/system/vendor\"},{\"btnStr\":\"1,3\",\"url\":\"/system/customer\"},{\"btnStr\":\"1,3\",\"url\":\"/system/member\"},{\"btnStr\":\"1\",\"url\":\"/system/depot\"},{\"btnStr\":\"1\",\"url\":\"/system/in_out_item\"},{\"btnStr\":\"1\",\"url\":\"/system/account\"},{\"btnStr\":\"1\",\"url\":\"/system/person\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_apply\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_out\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/delivery_plan\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/sale_shipment\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_out\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/order\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/requisition\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/report\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/giro\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/advance_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/allocation_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/assemble\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/headquarters_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/disassemble\"}]}}'); +INSERT INTO `tbl_log` VALUES (8864, 63, '接口日志', '43.174.54.44/1.9.116.218', '2026-09-30 07:32:53', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":255,\"rows\":[{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019200694297052\",\"assetName\":\"SIM卡 896019200694297052\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"6\",\"externalSource\":\"SIM\",\"id\":270,\"keeper\":\"UITM Dungun\",\"location\":\"SMT (???)\",\"originalValue\":0.000000,\"quantity\":1.000000,\"source\":\"SAS\",\"specification\":\"183.171.146.98\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019190221500578\",\"assetName\":\"SIM卡 896019190221500578\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"5\",\"externalSource\":\"SIM\",\"id\":269,\"keeper\":\"SMT\",\"location\":\"UITM Dungun\",\"originalValue\":0.000000,\"purchaseDate\":1608062400000,\"quantity\":1.000000,\"remark\":\"启用日期: 2020-12-16\",\"source\":\"SAS\",\"specification\":\"183.171.14.125\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019190221500576\",\"assetName\":\"SIM卡 896019190221500576\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"1\",\"externalSource\":\"SIM\",\"id\":268,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1608062400000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2020-12-16\",\"source\":\"SAS\",\"specification\":\"183.171.144.65\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607778\",\"assetName\":\"SIM卡 896019210381607778\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"2\",\"externalSource\":\"SIM\",\"id\":267,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1711051200000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2024-03-22\",\"source\":\"SAS\",\"specification\":\"183.171.15.60\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607781\",\"assetName\":\"SIM卡 896019210381607781\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"9\",\"externalSource\":\"SIM\",\"id\":266,\"keeper\":\"SMT\",\"location\":\"SMT (RnD) Modem RnD\",\"originalValue\":0.000000,\"purchaseDate\":1711051200000,\"quantity\":1.000000,\"remark\":\"设备序列号: 21070014;电表序列号: 320910015;启用日期: 2024-03-22\",\"source\":\"SAS\",\"specification\":\"183.171.5.142 / KM08-LTE Modem / 21070014\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607777\",\"assetName\":\"SIM卡 896019210381607777\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"3\",\"externalSource\":\"SIM\",\"id\":265,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1720987200000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2024-07-15\",\"source\":\"SAS\",\"specification\":\"183.171.40.182\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607782\",\"assetName\":\"SIM卡 896019210381607782\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"4\",\"externalSource\":\"SIM\",\"id\":264,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1720987200000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2024-07-15\",\"source\":\"SAS\",\"specification\":\"183.171.40.117\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607784\",\"assetName\":\"SIM卡 896019210381607784\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"7\",\"externalSource\":\"SIM\",\"id\":263,\"keeper\":\"SMT\",\"location\":\"SMT (Modem-Production)\",\"originalValue\":0.000000,\"purchaseDate\":1727553600000,\"quantity\":1.000000,\"remark\":\"设备序列号: 20041004;启用日期: 2024-09-29\",\"source\":\"SAS\",\"specification\":\"183.171.50.5 / KM08-LTE Modem / 20041004\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607783\",\"assetName\":\"SIM卡 896019210381607783\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"8\",\"externalSource\":\"SIM\",\"id\":262,\"keeper\":\"SMT\",\"location\":\"SMT (RnD) Modem Store\",\"originalValue\":0.000000,\"purchaseDate\":1727553600000,\"quantity\":1.000000,\"remark\":\"设备序列号: 2403005;启用日期: 2024-09-29\",\"source\":\"SAS\",\"specification\":\"183.171.50.6 / KM08-LTE Modem / 2403005\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607785\",\"assetName\":\"SIM卡 896019210381607785\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"10\",\"externalSource\":\"SIM\",\"id\":261,\"keeper\":\"SMT\",\"location\":\"SMT (RnD) Alyaa\",\"originalValue\":0.000000,\"purchaseDate\":1766433600000,\"quantity\":1.000000,\"remark\":\"设备序列号: 21070011;电表序列号: 320910014;启用日期: 2025-12-23\",\"source\":\"SAS\",\"specification\":\"183.171.151.171 / KM08-LTE Modem / 21070011\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000}]}}'); +INSERT INTO `tbl_log` VALUES (8865, 63, '接口日志', '43.152.142.142/1.9.116.218', '2026-09-30 07:32:53', 0, 'AssetController.categoryOptions()', NULL, 'GET /apis/asset/category/options', '{}', '{\"code\":200,\"data\":{\"rows\":[{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"尚未归入具体种类的资产\",\"updateTime\":1790613193000,\"categoryCode\":\"UNCATEGORIZED\",\"id\":4,\"sort\":10,\"categoryName\":\"未分类\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System 硬件台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"HARDWARE\",\"id\":5,\"sort\":20,\"categoryName\":\"硬件资产\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System 软件台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"SOFTWARE\",\"id\":6,\"sort\":30,\"categoryName\":\"软件资产\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System SIM 卡台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"SIM_CARD\",\"id\":7,\"sort\":40,\"categoryName\":\"SIM卡\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_01BF8DA563A0\",\"id\":11,\"sort\":100,\"categoryName\":\"生产设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_7129859760C3\",\"id\":12,\"sort\":100,\"categoryName\":\"检测设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_9F38069B30A1\",\"id\":13,\"sort\":100,\"categoryName\":\"动力设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_75F489029B11\",\"id\":14,\"sort\":100,\"categoryName\":\"IT设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_3DDFE01CA0B8\",\"id\":15,\"sort\":100,\"categoryName\":\"物流设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_B5D44F2B039A\",\"id\":16,\"sort\":100,\"categoryName\":\"工装设备\",\"enabled\":true}],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (8866, 63, '接口日志', '43.174.53.16/1.9.116.218', '2026-09-30 07:32:53', 0, 'MsgController.getMsgByStatus(..)', NULL, 'GET /apis/msg/getMsgByStatus', '{\"status\":\"1\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (8867, 63, '接口日志', '43.152.142.110/1.9.116.218', '2026-09-30 07:32:53', 0, 'MsgController.getList(..)', NULL, 'GET /apis/msg/list', '{\"search\":\"{\\\"name\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (8868, 63, '接口日志', '43.168.32.240/1.9.116.218', '2026-09-30 07:32:59', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (8869, 63, '接口日志', '43.168.32.240/1.9.116.218', '2026-09-30 07:32:59', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (8870, 63, '接口日志', '43.152.142.128/1.9.116.218', '2026-09-30 07:32:59', 0, 'AccountHeadController.getList(..)', NULL, 'GET /apis/accountHead/list', '{\"search\":\"{\\\"billNo\\\":\\\"\\\",\\\"searchMaterial\\\":\\\"\\\",\\\"type\\\":\\\"收款\\\",\\\"remark\\\":\\\"\\\",\\\"number\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-30\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"createTimeRange\\\":[\\\"2026-06-29T16:00:00.000Z\\\",\\\"2026-09-29T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":11,\"rows\":[{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2110-25\",\"billTime\":1784836800000,\"billTimeStr\":\"2026-07-24 00:00:00\",\"changeAmount\":1122000.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":105,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2110\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2110-25\",\"sourceTime\":\"2026-06-23 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":1122000.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2108-18\",\"billTime\":1784145600000,\"billTimeStr\":\"2026-07-16 00:00:00\",\"changeAmount\":1122000.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":103,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2108\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2108-18\",\"sourceTime\":\"2026-06-16 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":1122000.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2107-14\",\"billTime\":1783281600000,\"billTimeStr\":\"2026-07-06 00:00:00\",\"changeAmount\":1122000.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":102,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2107\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2107-14\",\"sourceTime\":\"2026-06-06 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":1122000.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2102-11\",\"billTime\":1782763200000,\"billTimeStr\":\"2026-06-30 00:00:00\",\"changeAmount\":1122000.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":101,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2102\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2102-11\",\"sourceTime\":\"2026-05-26 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":1122000.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2129-11\",\"billTime\":1786564800000,\"billTimeStr\":\"2026-08-13 00:00:00\",\"changeAmount\":1122000.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":99,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2129\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2129-11\",\"sourceTime\":\"2026-01-01 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":1122000.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2133-65\",\"billTime\":1786651200000,\"billTimeStr\":\"2026-08-14 00:00:00\",\"changeAmount\":80850.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":98,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2133\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2133-65\",\"sourceTime\":\"2026-07-16 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2131-47\",\"billTime\":1783886400000,\"billTimeStr\":\"2026-07-13 00:00:00\",\"changeAmount\":80850.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":97,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2131\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2131-47\",\"sourceTime\":\"2026-07-13 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2130-44\",\"billTime\":1786046400000,\"billTimeStr\":\"2026-08-07 00:00:00\",\"changeAmount\":242550.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":96,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2130\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2130-44\",\"sourceTime\":\"2026-07-09 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":242550.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2122-26\",\"billTime\":1785441600000,\"billTimeStr\":\"2026-07-31 00:00:00\",\"changeAmount\":161700.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":95,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2122\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2122-26\",\"sourceTime\":\"2026-07-01 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":161700.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2113-15\",\"billTime\":1785182400000,\"billTimeStr\":\"2026-07-28 00:00:00\",\"changeAmount\":161700.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":94,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2113\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2113-15\",\"sourceTime\":\"2026-06-28 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":161700.000000,\"type\":\"收款\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (8871, 63, '接口日志', '43.152.142.41/1.9.116.218', '2026-09-30 07:32:59', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (8872, 63, '接口日志', '43.174.32.33/1.9.116.218', '2026-09-30 07:32:59', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8873, 63, '接口日志', '43.152.142.133/1.9.116.218', '2026-09-30 07:32:59', 0, 'CustomerCategoryController.getTreeList(..)', NULL, 'GET /apis/customerCategory/treeList', '{}', '{\"code\":200,\"data\":{\"data\":[],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (8874, 63, '接口日志', '43.152.142.68/1.9.116.218', '2026-09-30 07:32:59', 0, 'PersonController.getPersonByType(..)', NULL, 'GET /apis/person/getPersonByType', '{\"type\":\"财务员\"}', '{\"code\":200,\"data\":{\"personList\":[{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":43,\"name\":\"Juwairiah\",\"type\":\"财务员\"}]}}'); +INSERT INTO `tbl_log` VALUES (8875, 63, '接口日志', '43.174.55.40/1.9.116.218', '2026-09-30 07:32:59', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"}]'); +INSERT INTO `tbl_log` VALUES (8876, 63, '接口日志', '43.152.142.140/1.9.116.218', '2026-09-30 07:32:59', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (8877, 63, '接口日志', '43.174.53.48/1.9.116.218', '2026-09-30 07:32:59', 0, 'DepotHeadController.getNeedCount(..)', NULL, 'GET /apis/depotHead/getNeedCount', '{\"type\":\"customer\"}', '{\"code\":200,\"data\":{\"needCount\":1}}'); +INSERT INTO `tbl_log` VALUES (8878, NULL, '接口日志', '43.174.53.30/1.9.116.218', '2026-09-30 07:34:37', 0, 'UserController.logout(..)', NULL, 'GET /apis/user/logout', '{}', '{\"code\":400}'); +INSERT INTO `tbl_log` VALUES (8879, NULL, '接口日志', '43.174.53.30/1.9.116.218', '2026-09-30 07:34:37', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (8880, NULL, '接口日志', '43.174.53.30/1.9.116.218', '2026-09-30 07:34:37', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (8881, NULL, '接口日志', '43.152.142.34/1.9.116.218', '2026-09-30 07:34:38', 0, 'UserController.randomImage(..)', NULL, 'GET /apis/user/randomImage', '{}', '{\"code\":200,\"data\":{\"base64\":\"data:image/jpg;base64,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\",\"uuid\":\"44cb030d83a2416e96102a5111f24930\"}}'); +INSERT INTO `tbl_log` VALUES (8882, NULL, '接口日志', '43.174.52.31/1.9.116.218', '2026-09-30 07:34:38', 0, 'PlatformConfigController.getPlatformCheckcodeFlag(..)', NULL, 'GET /apis/platformConfig/getPlatform/checkcodeFlag', '{}', '\"1\"'); +INSERT INTO `tbl_log` VALUES (8883, 63, '用户', '43.174.53.30/1.9.116.218', '2026-09-30 07:35:01', 0, '登录admin', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (8884, NULL, '接口日志', '43.174.53.30/1.9.116.218', '2026-09-30 07:35:01', 0, 'UserController.login(..)', NULL, 'POST /apis/user/login', '{\"userParam\":{\"code\":\"778u\",\"loginName\":\"admin\",\"password\":\"******\",\"uuid\":\"44cb030d83a2416e96102a5111f24930\"}}', '{\"code\":200,\"data\":{\"pwdSimple\":\"******\",\"user\":{\"deleteFlag\":\"0\",\"description\":\"\",\"email\":\"666666@qq.com\",\"id\":63,\"ismanager\":1,\"isystem\":1,\"leaderFlag\":\"0\",\"loginName\":\"admin\",\"password\":\"******\",\"phonenum\":\"1123123123132\",\"position\":\"主管\",\"status\":0,\"tenantId\":63,\"username\":\"admin\"},\"msgTip\":\"user can login\",\"token\":\"******\"}}'); +INSERT INTO `tbl_log` VALUES (8885, 63, '接口日志', '43.152.157.109/1.9.116.218', '2026-09-30 07:35:01', 0, 'FunctionController.findMenuByPNumber(..)', NULL, 'POST /apis/function/findMenuByPNumber', '{\"jsonObject\":{\"userId\":63,\"pNumber\":0}}', '[{\"component\":\"/layouts/TabLayout\",\"icon\":\"home\",\"id\":0,\"text\":\"首页\",\"url\":\"/dashboard/analysis\",\"textEn\":\"Home\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/SaleOrderList\",\"icon\":\"profile\",\"id\":242,\"text\":\"销售订单\",\"url\":\"/bill/sale_order\",\"textEn\":\"Sales Orders\"},{\"component\":\"/bill/SaleOutList\",\"icon\":\"profile\",\"id\":41,\"text\":\"销售出库\",\"url\":\"/bill/sale_out\",\"textEn\":\"Sales Shipments\"},{\"component\":\"/bill/DeliveryPlanList\",\"icon\":\"profile\",\"id\":271,\"text\":\"交货计划管理\",\"url\":\"/bill/delivery_plan\",\"textEn\":\"Delivery Plans\"},{\"component\":\"/bill/SaleShipmentList\",\"icon\":\"car\",\"id\":268,\"text\":\"发货管理\",\"url\":\"/bill/sale_shipment\",\"textEn\":\"Shipment Management\"},{\"component\":\"/bill/SaleBackList\",\"icon\":\"profile\",\"id\":200,\"text\":\"销售退货\",\"url\":\"/bill/sale_back\",\"textEn\":\"Sales Returns\"},{\"component\":\"/bill/RetailOutList\",\"icon\":\"profile\",\"id\":210,\"text\":\"零售出库\",\"url\":\"/bill/retail_out\",\"textEn\":\"Retail Shipments\"},{\"component\":\"/bill/RetailBackList\",\"icon\":\"profile\",\"id\":211,\"text\":\"零售退货\",\"url\":\"/bill/retail_back\",\"textEn\":\"Retail Returns\"}],\"icon\":\"shopping-cart\",\"id\":38,\"text\":\"销售管理\",\"url\":\"/billB\",\"textEn\":\"Sales Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/PurchaseApplyList\",\"icon\":\"profile\",\"id\":261,\"text\":\"请购单\",\"url\":\"/bill/purchase_apply\",\"textEn\":\"Purchase Requisitions\"},{\"component\":\"/bill/PurchaseOrderList\",\"icon\":\"profile\",\"id\":241,\"text\":\"采购订单\",\"url\":\"/bill/purchase_order\",\"textEn\":\"Purchase Orders\"},{\"component\":\"/bill/PurchaseInList\",\"icon\":\"profile\",\"id\":33,\"text\":\"采购入库\",\"url\":\"/bill/purchase_in\",\"textEn\":\"Purchase Receipts\"},{\"component\":\"/bill/PurchaseBackList\",\"icon\":\"profile\",\"id\":199,\"text\":\"采购退货\",\"url\":\"/bill/purchase_back\",\"textEn\":\"Purchase Returns\"}],\"icon\":\"retweet\",\"id\":32,\"text\":\"采购管理\",\"url\":\"/bill\",\"textEn\":\"Purchase Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/production/PackBomList\",\"icon\":\"profile\",\"id\":263,\"text\":\"生产方案\",\"url\":\"/production/pack_bom\",\"textEn\":\"Production BOMs\"},{\"component\":\"/production/OrderList\",\"icon\":\"profile\",\"id\":264,\"text\":\"生产工单\",\"url\":\"/production/order\",\"textEn\":\"Production Orders\"},{\"component\":\"/production/RequisitionList\",\"icon\":\"profile\",\"id\":265,\"text\":\"领料管理\",\"url\":\"/production/requisition\",\"textEn\":\"Material Requisitions\"},{\"component\":\"/production/ReportList\",\"icon\":\"profile\",\"id\":266,\"text\":\"完工报工\",\"url\":\"/production/report\",\"textEn\":\"Production Reports\"}],\"icon\":\"cluster\",\"id\":262,\"text\":\"生产管理\",\"url\":\"/production\",\"textEn\":\"Production Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/MaterialStock\",\"icon\":\"profile\",\"id\":246,\"text\":\"商品库存\",\"url\":\"/report/material_stock\",\"textEn\":\"Product Inventory\"},{\"component\":\"/bill/OtherInList\",\"icon\":\"profile\",\"id\":201,\"text\":\"其它入库\",\"url\":\"/bill/other_in\",\"textEn\":\"Other Receipts\"},{\"component\":\"/bill/OtherOutList\",\"icon\":\"profile\",\"id\":202,\"text\":\"其它出库\",\"url\":\"/bill/other_out\",\"textEn\":\"Other Shipments\"},{\"component\":\"/bill/HeadquartersInList\",\"icon\":\"profile\",\"id\":270,\"text\":\"总部入库\",\"url\":\"/bill/headquarters_in\",\"textEn\":\"Headquarters Receipts\"}],\"icon\":\"hdd\",\"id\":239,\"text\":\"仓库管理\",\"url\":\"/billD\",\"textEn\":\"Warehouse Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/financial/MoneyInList\",\"icon\":\"profile\",\"id\":204,\"text\":\"收款单\",\"url\":\"/financial/money_in\",\"textEn\":\"Receipt Vouchers\"},{\"component\":\"/financial/MoneyOutList\",\"icon\":\"profile\",\"id\":205,\"text\":\"付款单\",\"url\":\"/financial/money_out\",\"textEn\":\"Payment Vouchers\"}],\"icon\":\"money-collect\",\"id\":44,\"text\":\"财务管理\",\"url\":\"/financial\",\"textEn\":\"Finance Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/asset/AssetDashboard\",\"icon\":\"dashboard\",\"id\":276,\"text\":\"资产汇总\",\"url\":\"/asset\",\"textEn\":\"Asset Overview\"},{\"component\":\"/asset/AssetList\",\"icon\":\"profile\",\"id\":273,\"text\":\"资产台账\",\"url\":\"/asset/ledger\",\"textEn\":\"Asset Ledger\"},{\"component\":\"/asset/DeviceList\",\"icon\":\"tool\",\"id\":274,\"text\":\"设备台账\",\"url\":\"/asset/device\",\"textEn\":\"Device Ledger\"},{\"component\":\"/asset/InventoryList\",\"icon\":\"scan\",\"id\":275,\"text\":\"资产盘点\",\"url\":\"/asset/inventory\",\"textEn\":\"Asset Inventory\"}],\"icon\":\"bank\",\"id\":272,\"text\":\"资产管理\",\"url\":\"/assetManagement\",\"textEn\":\"Asset Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/material/MaterialCategoryList\",\"icon\":\"profile\",\"id\":22,\"text\":\"商品类别\",\"url\":\"/material/material_category\",\"textEn\":\"Product Categories\"},{\"component\":\"/material/MaterialList\",\"icon\":\"profile\",\"id\":23,\"text\":\"商品信息\",\"url\":\"/material/material\",\"textEn\":\"Product Information\"},{\"component\":\"/system/UnitList\",\"icon\":\"profile\",\"id\":220,\"text\":\"多单位\",\"url\":\"/system/unit\",\"textEn\":\"Multiple Units\"},{\"component\":\"/material/MaterialAttributeList\",\"icon\":\"profile\",\"id\":247,\"text\":\"多属性\",\"url\":\"/material/material_attribute\",\"textEn\":\"Product Attributes\"}],\"icon\":\"shopping\",\"id\":21,\"text\":\"商品管理\",\"url\":\"/material\",\"textEn\":\"Product Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/AccountReport\",\"icon\":\"profile\",\"id\":207,\"text\":\"账户统计\",\"url\":\"/report/account_report\",\"textEn\":\"Account Summary\"},{\"component\":\"/report/RetailOutReport\",\"icon\":\"profile\",\"id\":259,\"text\":\"零售统计\",\"url\":\"/report/retail_out_report\",\"textEn\":\"Retail Summary\"},{\"component\":\"/report/BuyInReport\",\"icon\":\"profile\",\"id\":208,\"text\":\"采购统计\",\"url\":\"/report/buy_in_report\",\"textEn\":\"Purchase Summary\"},{\"component\":\"/report/SaleOutReport\",\"icon\":\"profile\",\"id\":209,\"text\":\"销售统计\",\"url\":\"/report/sale_out_report\",\"textEn\":\"Sales Summary\"},{\"component\":\"/report/InDetail\",\"icon\":\"profile\",\"id\":226,\"text\":\"入库明细\",\"url\":\"/report/in_detail\",\"textEn\":\"Inbound Details\"},{\"component\":\"/report/OutDetail\",\"icon\":\"profile\",\"id\":227,\"text\":\"出库明细\",\"url\":\"/report/out_detail\",\"textEn\":\"Outbound Details\"},{\"component\":\"/report/InMaterialCount\",\"icon\":\"profile\",\"id\":228,\"text\":\"入库汇总\",\"url\":\"/report/in_material_count\",\"textEn\":\"Inbound Summary\"},{\"component\":\"/report/OutMaterialCount\",\"icon\":\"profile\",\"id\":229,\"text\":\"出库汇总\",\"url\":\"/report/out_material_count\",\"textEn\":\"Outbound Summary\"},{\"component\":\"/report/InOutStockReport\",\"icon\":\"profile\",\"id\":59,\"text\":\"进销存统计\",\"url\":\"/report/in_out_stock_report\",\"textEn\":\"Inventory Transaction Summary\"},{\"component\":\"/report/CustomerAccount\",\"icon\":\"profile\",\"id\":235,\"text\":\"客户对账\",\"url\":\"/report/customer_account\",\"textEn\":\"Customer Reconciliation\"},{\"component\":\"/report/VendorAccount\",\"icon\":\"profile\",\"id\":237,\"text\":\"供应商对账\",\"url\":\"/report/vendor_account\",\"textEn\":\"Supplier Reconciliation\"},{\"component\":\"/report/StockWarningReport\",\"icon\":\"profile\",\"id\":244,\"text\":\"库存预警\",\"url\":\"/report/stock_warning_report\",\"textEn\":\"Stock Alerts\"}],\"icon\":\"pie-chart\",\"id\":198,\"text\":\"报表查询\",\"url\":\"/report\",\"textEn\":\"Reports\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/VendorList\",\"icon\":\"profile\",\"id\":25,\"text\":\"供应商信息\",\"url\":\"/system/vendor\",\"textEn\":\"Suppliers\"},{\"component\":\"/system/CustomerList\",\"icon\":\"profile\",\"id\":217,\"text\":\"客户信息\",\"url\":\"/system/customer\",\"textEn\":\"Customers\"},{\"component\":\"/system/MemberList\",\"icon\":\"profile\",\"id\":218,\"text\":\"会员信息\",\"url\":\"/system/member\",\"textEn\":\"Members\"},{\"component\":\"/system/CustomerCategoryList\",\"icon\":\"bars\",\"id\":267,\"text\":\"客户分类\",\"url\":\"/system/customerCategory\",\"textEn\":\"Customer Categories\"},{\"component\":\"/system/DepotList\",\"icon\":\"profile\",\"id\":26,\"text\":\"仓库信息\",\"url\":\"/system/depot\",\"textEn\":\"Warehouses\"},{\"component\":\"/system/InOutItemList\",\"icon\":\"profile\",\"id\":194,\"text\":\"收支项目\",\"url\":\"/system/in_out_item\",\"textEn\":\"Income and Expense Items\"},{\"component\":\"/system/AccountList\",\"icon\":\"profile\",\"id\":195,\"text\":\"结算账户\",\"url\":\"/system/account\",\"textEn\":\"Settlement Accounts\"},{\"component\":\"/system/PersonList\",\"icon\":\"profile\",\"id\":31,\"text\":\"操作人员管理\",\"url\":\"/system/person\",\"textEn\":\"Operators\"}],\"icon\":\"appstore\",\"id\":24,\"text\":\"基础资料\",\"url\":\"/systemA\",\"textEn\":\"Master Data\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/RoleList\",\"icon\":\"profile\",\"id\":13,\"text\":\"角色管理\",\"url\":\"/system/role\",\"textEn\":\"Role Management\"},{\"component\":\"/system/UserList\",\"icon\":\"profile\",\"id\":14,\"text\":\"用户管理\",\"url\":\"/system/user\",\"textEn\":\"User Management\"},{\"component\":\"/system/OrganizationList\",\"icon\":\"profile\",\"id\":243,\"text\":\"部门管理\",\"url\":\"/system/organization\",\"textEn\":\"Department Management\"},{\"component\":\"/system/LogList\",\"icon\":\"profile\",\"id\":15,\"text\":\"日志管理\",\"url\":\"/system/log\",\"textEn\":\"Log Management\"},{\"component\":\"/material/MaterialPropertyList\",\"icon\":\"profile\",\"id\":236,\"text\":\"商品属性\",\"url\":\"/material/material_property\",\"textEn\":\"Product Properties\"},{\"component\":\"/system/SystemConfigList\",\"icon\":\"profile\",\"id\":234,\"text\":\"系统配置\",\"url\":\"/system/system_config\",\"textEn\":\"System Configuration\"},{\"component\":\"/system/FunctionList\",\"icon\":\"profile\",\"id\":16,\"text\":\"菜单管理\",\"url\":\"/system/function\",\"textEn\":\"Resource Menus\"},{\"component\":\"/system/PluginList\",\"icon\":\"profile\",\"id\":245,\"text\":\"插件管理\",\"url\":\"/system/plugin\",\"textEn\":\"Plugin Management\"},{\"component\":\"/system/DictList\",\"icon\":\"profile\",\"id\":260,\"text\":\"字典管理\",\"url\":\"/system/dict\",\"textEn\":\"Dictionary Management\"},{\"component\":\"/system/PlatformConfigList\",\"icon\":\"profile\",\"id\":258,\"text\":\"平台配置\",\"url\":\"/system/platform_config\",\"textEn\":\"Platform Configuration\"}],\"icon\":\"setting\",\"id\":1,\"text\":\"系统管理\",\"url\":\"/system\",\"textEn\":\"System Management\"}]'); +INSERT INTO `tbl_log` VALUES (8886, 63, '接口日志', '43.174.53.30/1.9.116.218', '2026-09-30 07:35:01', 0, 'MaterialPropertyController.getAllList(..)', NULL, 'GET /apis/materialProperty/getAllList', '{}', '{\"code\":200,\"data\":[{\"anotherName\":\"扩展1\",\"id\":1,\"nativeName\":\"扩展1\"},{\"anotherName\":\"扩展2\",\"id\":2,\"nativeName\":\"扩展2\"},{\"anotherName\":\"扩展3\",\"id\":3,\"nativeName\":\"扩展3\"}]}'); +INSERT INTO `tbl_log` VALUES (8887, 63, '接口日志', '43.152.142.84/1.9.116.218', '2026-09-30 07:35:02', 0, 'UserController.getUserBtnByCurrentUser(..)', NULL, 'GET /apis/user/getUserBtnByCurrentUser', '{}', '{\"code\":200,\"data\":{\"userBtn\":[{\"btnStr\":\"8,1\",\"url\":\"/system/role\"},{\"btnStr\":\"1\",\"url\":\"/system/user\"},{\"btnStr\":\"1\",\"url\":\"/system/organization\"},{\"btnStr\":\"1\",\"url\":\"/material/material_property\"},{\"btnStr\":\"1\",\"url\":\"/system/system_config\"},{\"btnStr\":\"1\",\"url\":\"/system/function\"},{\"btnStr\":\"1\",\"url\":\"/system/plugin\"},{\"btnStr\":\"1\",\"url\":\"/material/material_category\"},{\"btnStr\":\"1,3\",\"url\":\"/material/material\"},{\"btnStr\":\"1\",\"url\":\"/system/unit\"},{\"btnStr\":\"1\",\"url\":\"/material/material_attribute\"},{\"btnStr\":\"1,3\",\"url\":\"/system/vendor\"},{\"btnStr\":\"1,3\",\"url\":\"/system/customer\"},{\"btnStr\":\"1,3\",\"url\":\"/system/member\"},{\"btnStr\":\"1\",\"url\":\"/system/depot\"},{\"btnStr\":\"1\",\"url\":\"/system/in_out_item\"},{\"btnStr\":\"1\",\"url\":\"/system/account\"},{\"btnStr\":\"1\",\"url\":\"/system/person\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_apply\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_out\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/delivery_plan\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/sale_shipment\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_out\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/order\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/requisition\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/report\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/giro\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/advance_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/allocation_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/assemble\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/headquarters_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/disassemble\"}]}}'); +INSERT INTO `tbl_log` VALUES (8888, 63, '接口日志', '43.174.32.18/1.9.116.218', '2026-09-30 07:35:02', 0, 'MsgController.getMsgByStatus(..)', NULL, 'GET /apis/msg/getMsgByStatus', '{\"status\":\"1\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (8889, 63, '接口日志', '43.152.142.32/1.9.116.218', '2026-09-30 07:35:02', 0, 'MsgController.getList(..)', NULL, 'GET /apis/msg/list', '{\"search\":\"{\\\"name\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (8890, 63, '接口日志', '43.174.54.44/1.9.116.218', '2026-09-30 07:35:02', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-04\",\"inbound\":100669.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (8891, 63, '接口日志', '43.152.142.105/1.9.116.218', '2026-09-30 07:35:59', 0, 'SaleShipmentController.getList(..)', NULL, 'GET /apis/saleShipment/list', '{\"search\":\"{\\\"shipmentNumber\\\":\\\"\\\",\\\"saleOutNumber\\\":\\\"\\\",\\\"saleOrderNumber\\\":\\\"\\\",\\\"logisticsNo\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"actualQuantity\":10000.000000,\"approveBy\":63,\"approveByName\":\"admin\",\"approveRemark\":\"审批通过\",\"approveTime\":1789720647000,\"confirmBy\":63,\"confirmByName\":\"admin\",\"confirmTime\":1789720682000,\"createTime\":1789720588000,\"creator\":63,\"creatorName\":\"admin\",\"customerId\":90,\"customerName\":\"TNB\",\"deleteFlag\":\"0\",\"deliveryPlanId\":7,\"deliveryPlanNumber\":\"JH00000001741\",\"differenceQuantity\":0.000000,\"id\":17,\"materialsList\":\"1PH WS79\",\"planQuantity\":10000.000000,\"plannedShipTime\":1789734921000,\"saleOrderNumber\":\"XSDD00000001726\",\"saleOutId\":1720,\"saleOutNumber\":\"XSCK00000001728\",\"shipBy\":63,\"shipByName\":\"admin\",\"shipTime\":1789720682000,\"shipmentNumber\":\"FHTZ00000001742\",\"sourceType\":\"sale\",\"status\":\"2\"},{\"actualQuantity\":149.000000,\"approveBy\":63,\"approveByName\":\"admin\",\"approveRemark\":\"审批通过\",\"approveTime\":1789717350000,\"confirmBy\":63,\"confirmByName\":\"admin\",\"confirmTime\":1789717357000,\"createTime\":1789717342000,\"creator\":63,\"creatorName\":\"admin\",\"customerId\":90,\"customerName\":\"TNB\",\"deleteFlag\":\"0\",\"deliveryPlanId\":6,\"deliveryPlanNumber\":\"JH00000001717\",\"differenceQuantity\":0.000000,\"id\":16,\"logisticsCompany\":\"FEXD\",\"logisticsNo\":\"FD10000001\",\"materialsList\":\"3PH APEC3-WC\",\"planQuantity\":149.000000,\"plannedShipTime\":1789717304000,\"receiver\":\"Hank\",\"receiverAddress\":\"5433 Grand Ave\",\"receiverPhone\":\"60001-1111\",\"saleOrderNumber\":\"XSDD-42260529-3PH-APEC3-WC-OV\",\"saleOutId\":1714,\"saleOutNumber\":\"XSCK-3PH-APEC3-WC-OV-28\",\"shipBy\":63,\"shipByName\":\"admin\",\"shipTime\":1789717357000,\"shipmentNumber\":\"FHTZ00000001718\",\"sourceType\":\"sale\",\"status\":\"2\"}]}}'); +INSERT INTO `tbl_log` VALUES (8892, 63, '接口日志', '43.152.142.78/1.9.116.218', '2026-09-30 07:36:03', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-04\",\"inbound\":100669.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (8893, 63, '接口日志', '43.174.32.13/1.9.116.218', '2026-09-30 07:36:13', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-04\",\"inbound\":100669.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (8894, 63, '接口日志', '43.152.142.43/1.9.116.218', '2026-09-30 07:36:16', 0, 'SaleShipmentController.getDetail(..)', NULL, 'GET /apis/saleShipment/detail', '{\"id\":17}', '{\"code\":200,\"data\":{\"rows\":[{\"actualQuantity\":10000.000000,\"barCode\":\"1PH-WS79\",\"deleteFlag\":\"0\",\"deliveryPlanItemId\":6,\"depotId\":25,\"differenceQuantity\":0.000000,\"id\":15,\"materialExtendId\":123,\"materialId\":703,\"materialName\":\"1PH WS79\",\"model\":\"1PH WS79\",\"planQuantity\":10000.000000,\"saleOutItemId\":1525,\"shipmentId\":17,\"shippedQuantity\":0.000000,\"standard\":\"1PH WS79\",\"unit\":\"件\"}],\"info\":{\"approveBy\":63,\"approveRemark\":\"审批通过\",\"approveTime\":1789720647000,\"confirmBy\":63,\"confirmTime\":1789720682000,\"createTime\":1789720588000,\"creator\":63,\"customerId\":90,\"deleteFlag\":\"0\",\"deliveryPlanId\":7,\"deliveryPlanNumber\":\"JH00000001741\",\"id\":17,\"plannedShipTime\":1789734921000,\"saleOrderNumber\":\"XSDD00000001726\",\"saleOutId\":1720,\"saleOutNumber\":\"XSCK00000001728\",\"shipBy\":63,\"shipTime\":1789720682000,\"shipmentNumber\":\"FHTZ00000001742\",\"sourceType\":\"sale\",\"status\":\"2\"}}}'); +INSERT INTO `tbl_log` VALUES (8895, 63, '接口日志', '43.152.142.34/1.9.116.218', '2026-09-30 07:36:57', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-04\",\"inbound\":100669.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (8896, 63, '接口日志', '43.152.157.109/1.9.116.218', '2026-09-30 07:37:00', 0, 'SupplierController.findBySelectSup(..)', NULL, 'POST /apis/supplier/findBySelect_sup', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司\",\"id\":89}]'); +INSERT INTO `tbl_log` VALUES (8897, 63, '接口日志', '43.174.52.31/1.9.116.218', '2026-09-30 07:37:00', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"}]'); +INSERT INTO `tbl_log` VALUES (8898, 63, '接口日志', '43.174.54.44/1.9.116.218', '2026-09-30 07:37:00', 0, 'PersonController.getPersonByType(..)', NULL, 'GET /apis/person/getPersonByType', '{\"type\":\"财务员\"}', '{\"code\":200,\"data\":{\"personList\":[{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":43,\"name\":\"Juwairiah\",\"type\":\"财务员\"}]}}'); +INSERT INTO `tbl_log` VALUES (8899, 63, '接口日志', '43.152.142.29/1.9.116.218', '2026-09-30 07:37:00', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (8900, 63, '接口日志', '43.174.53.30/1.9.116.218', '2026-09-30 07:37:00', 0, 'AccountHeadController.getList(..)', NULL, 'GET /apis/accountHead/list', '{\"search\":\"{\\\"billNo\\\":\\\"\\\",\\\"searchMaterial\\\":\\\"\\\",\\\"type\\\":\\\"付款\\\",\\\"remark\\\":\\\"\\\",\\\"number\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-30\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"createTimeRange\\\":[\\\"2026-06-29T16:00:00.000Z\\\",\\\"2026-09-29T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":3,\"rows\":[{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"FK-PV-008186-87-3PH-APEC3-WC-OV-25\",\"billTime\":1786651200000,\"billTimeStr\":\"2026-08-14 00:00:00\",\"changeAmount\":947751.900000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":104,\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"remark\":\"Stock Status供应商付款;PV:PV 008186/87\",\"source\":\"0\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":947751.900000,\"type\":\"付款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"FK-PV-008145-45---ZHEJIANG-METRONIX-3PH-APEC3-WC-O\",\"billTime\":1785700800000,\"billTimeStr\":\"2026-08-03 00:00:00\",\"changeAmount\":954860.058400,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":100,\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"remark\":\"Stock Status供应商付款;PV:PV 008145/45 - ZHEJIANG & METRONIX\",\"source\":\"0\",\"sourceNumber\":\"CGRK-260415-01-11\",\"sourceTime\":\"2026-04-29 00:00:00\",\"sourceType\":\"采购入库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":954860.058400,\"type\":\"付款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"FK-PV-008186-87-1PH-WS79-ADD1-11\",\"billTime\":1786651200000,\"billTimeStr\":\"2026-08-14 00:00:00\",\"changeAmount\":236946.640000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":92,\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"remark\":\"Stock Status供应商付款;PV:PV 008186/87\",\"source\":\"0\",\"sourceNumber\":\"CGRK-260414-01-11\",\"sourceTime\":\"2026-04-29 00:00:00\",\"sourceType\":\"采购入库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":236946.640000,\"type\":\"付款\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (8901, 63, '接口日志', '43.152.142.112/1.9.116.218', '2026-09-30 07:37:00', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (8902, 63, '接口日志', '43.152.142.128/1.9.116.218', '2026-09-30 07:37:00', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8903, 63, '接口日志', '43.174.54.44/1.9.116.218', '2026-09-30 07:37:00', 0, 'DepotHeadController.getNeedCount(..)', NULL, 'GET /apis/depotHead/getNeedCount', '{\"type\":\"vendor\"}', '{\"code\":200,\"data\":{\"needCount\":1}}'); +INSERT INTO `tbl_log` VALUES (8904, 63, '接口日志', '43.152.157.109/1.9.116.218', '2026-09-30 07:37:17', 0, 'SupplierController.findBySelectSup(..)', NULL, 'POST /apis/supplier/findBySelect_sup', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司\",\"id\":89}]'); +INSERT INTO `tbl_log` VALUES (8905, 63, '接口日志', '43.152.142.112/1.9.116.218', '2026-09-30 07:37:17', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (8906, 63, '接口日志', '43.174.53.30/1.9.116.218', '2026-09-30 07:37:17', 0, 'DepotHeadController.waitBillCount(..)', NULL, 'GET /apis/depotHead/waitBillCount', '{\"search\":\"{\\\"type\\\":\\\"入库\\\",\\\"subType\\\":\\\"采购,销售退货\\\",\\\"status\\\":\\\"1,3\\\"}\"}', '{\"code\":200,\"data\":{\"total\":47,\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (8907, 63, '接口日志', '43.152.142.78/1.9.116.218', '2026-09-30 07:37:17', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"}]'); +INSERT INTO `tbl_log` VALUES (8908, 63, '接口日志', '43.174.32.13/1.9.116.218', '2026-09-30 07:37:17', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8909, 63, '接口日志', '43.152.142.64/1.9.116.218', '2026-09-30 07:37:17', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8910, 63, '接口日志', '43.174.52.31/1.9.116.218', '2026-09-30 07:37:17', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"入库\\\",\\\"subType\\\":\\\"其它\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-30\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"createTimeRange\\\":[\\\"2026-06-29T16:00:00.000Z\\\",\\\"2026-09-29T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (8911, 63, '接口日志', '43.152.157.109/1.9.116.218', '2026-09-30 07:37:49', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (8912, 63, '接口日志', '43.152.157.109/1.9.116.218', '2026-09-30 07:37:49', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (8913, 63, '接口日志', '43.174.32.18/1.9.116.218', '2026-09-30 07:37:49', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (8914, 63, '接口日志', '43.174.32.34/1.9.116.218', '2026-09-30 07:37:49', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"}]'); +INSERT INTO `tbl_log` VALUES (8915, 63, '接口日志', '43.174.53.14/1.9.116.218', '2026-09-30 07:37:49', 0, 'PersonController.getPersonByType(..)', NULL, 'GET /apis/person/getPersonByType', '{\"type\":\"财务员\"}', '{\"code\":200,\"data\":{\"personList\":[{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":43,\"name\":\"Juwairiah\",\"type\":\"财务员\"}]}}'); +INSERT INTO `tbl_log` VALUES (8916, 63, '接口日志', '43.152.142.29/1.9.116.218', '2026-09-30 07:37:49', 0, 'CustomerCategoryController.getTreeList(..)', NULL, 'GET /apis/customerCategory/treeList', '{}', '{\"code\":200,\"data\":{\"data\":[],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (8917, 63, '接口日志', '43.152.142.57/1.9.116.218', '2026-09-30 07:37:49', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (8918, 63, '接口日志', '43.152.142.139/1.9.116.218', '2026-09-30 07:37:49', 0, 'AccountHeadController.getList(..)', NULL, 'GET /apis/accountHead/list', '{\"search\":\"{\\\"billNo\\\":\\\"\\\",\\\"searchMaterial\\\":\\\"\\\",\\\"type\\\":\\\"收款\\\",\\\"remark\\\":\\\"\\\",\\\"number\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-30\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"createTimeRange\\\":[\\\"2026-06-29T16:00:00.000Z\\\",\\\"2026-09-29T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":11,\"rows\":[{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2110-25\",\"billTime\":1784836800000,\"billTimeStr\":\"2026-07-24 00:00:00\",\"changeAmount\":1122000.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":105,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2110\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2110-25\",\"sourceTime\":\"2026-06-23 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":1122000.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2108-18\",\"billTime\":1784145600000,\"billTimeStr\":\"2026-07-16 00:00:00\",\"changeAmount\":1122000.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":103,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2108\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2108-18\",\"sourceTime\":\"2026-06-16 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":1122000.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2107-14\",\"billTime\":1783281600000,\"billTimeStr\":\"2026-07-06 00:00:00\",\"changeAmount\":1122000.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":102,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2107\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2107-14\",\"sourceTime\":\"2026-06-06 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":1122000.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2102-11\",\"billTime\":1782763200000,\"billTimeStr\":\"2026-06-30 00:00:00\",\"changeAmount\":1122000.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":101,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2102\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2102-11\",\"sourceTime\":\"2026-05-26 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":1122000.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2129-11\",\"billTime\":1786564800000,\"billTimeStr\":\"2026-08-13 00:00:00\",\"changeAmount\":1122000.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":99,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2129\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2129-11\",\"sourceTime\":\"2026-01-01 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":1122000.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2133-65\",\"billTime\":1786651200000,\"billTimeStr\":\"2026-08-14 00:00:00\",\"changeAmount\":80850.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":98,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2133\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2133-65\",\"sourceTime\":\"2026-07-16 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2131-47\",\"billTime\":1783886400000,\"billTimeStr\":\"2026-07-13 00:00:00\",\"changeAmount\":80850.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":97,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2131\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2131-47\",\"sourceTime\":\"2026-07-13 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2130-44\",\"billTime\":1786046400000,\"billTimeStr\":\"2026-08-07 00:00:00\",\"changeAmount\":242550.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":96,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2130\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2130-44\",\"sourceTime\":\"2026-07-09 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":242550.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2122-26\",\"billTime\":1785441600000,\"billTimeStr\":\"2026-07-31 00:00:00\",\"changeAmount\":161700.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":95,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2122\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2122-26\",\"sourceTime\":\"2026-07-01 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":161700.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2113-15\",\"billTime\":1785182400000,\"billTimeStr\":\"2026-07-28 00:00:00\",\"changeAmount\":161700.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":94,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2113\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2113-15\",\"sourceTime\":\"2026-06-28 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":161700.000000,\"type\":\"收款\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (8919, 63, '接口日志', '43.174.54.14/1.9.116.218', '2026-09-30 07:37:49', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8920, 63, '接口日志', '43.174.32.23/1.9.116.218', '2026-09-30 07:37:49', 0, 'DepotHeadController.getNeedCount(..)', NULL, 'GET /apis/depotHead/getNeedCount', '{\"type\":\"customer\"}', '{\"code\":200,\"data\":{\"needCount\":1}}'); +INSERT INTO `tbl_log` VALUES (8921, 63, '接口日志', '43.152.142.128/1.9.116.218', '2026-09-30 07:37:53', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (8922, 63, '接口日志', '43.152.142.34/1.9.116.218', '2026-09-30 07:37:53', 0, 'MaterialController.getList(..)', NULL, 'GET /apis/material/list', '{\"search\":\"{\\\"materialParam\\\":\\\"\\\",\\\"standard\\\":\\\"\\\",\\\"model\\\":\\\"\\\",\\\"color\\\":\\\"\\\",\\\"brand\\\":\\\"\\\",\\\"mfrs\\\":\\\"\\\",\\\"otherField1\\\":\\\"\\\",\\\"otherField2\\\":\\\"\\\",\\\"otherField3\\\":\\\"\\\",\\\"weight\\\":\\\"\\\",\\\"expiryNum\\\":\\\"\\\",\\\"position\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"mpList\\\":\\\"扩展1,扩展2,扩展3\\\"}\"}', '{\"code\":200,\"data\":{\"total\":24,\"rows\":[{\"attribute\":\"{}\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"categoryId\":33,\"categoryName\":\"成品\",\"commodityDecimal\":200.000000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":706,\"imgName\":\"\",\"initialStock\":0,\"lowDecimal\":200.000000,\"mBarCode\":\"1002\",\"materialOther\":\"\",\"mfrs\":\"SMT\",\"mnemonic\":\"MD-4G111(VF) 4G\",\"model\":\"MD-4G111(VF) 4G\",\"name\":\"MD-4G111(VF) 4G\",\"purchaseDecimal\":100.000000,\"sku\":\"\",\"standard\":\"MD-4G111(VF) 4G\",\"stock\":0,\"unit\":\"只\",\"wholesaleDecimal\":200.000000},{\"attribute\":\"{}\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"categoryId\":34,\"categoryName\":\"包装\",\"commodityDecimal\":10.000000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":705,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":10.000000,\"mBarCode\":\"1001\",\"materialOther\":\"\",\"mnemonic\":\"MD-4G111(VF) bz\",\"model\":\"MD-4G111(VF)\",\"name\":\"MD-4G111(VF) 包装\",\"purchaseDecimal\":10.000000,\"sku\":\"\",\"standard\":\"MD-4G111(VF) packing\",\"stock\":0.000000,\"unit\":\"件\",\"wholesaleDecimal\":10.000000},{\"attribute\":\"\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryId\":33,\"categoryName\":\"成品\",\"color\":\"\",\"commodityDecimal\":340.000000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":704,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":340.000000,\"mBarCode\":\"3PH-APEC3-WC\",\"materialOther\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mnemonic\":\"\",\"model\":\"3PH APEC3-WC\",\"name\":\"3PH APEC3-WC\",\"otherField1\":\"\",\"otherField2\":\"\",\"otherField3\":\"\",\"position\":\"\",\"purchaseDecimal\":317.500000,\"remark\":\"Excel初始化;条码:3PH-APEC3-WC\",\"standard\":\"3PH APEC3-WC\",\"stock\":7223.000000,\"tenantId\":63,\"unit\":\"件\",\"wholesaleDecimal\":340.000000},{\"attribute\":\"\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryId\":33,\"categoryName\":\"成品\",\"color\":\"\",\"commodityDecimal\":73.500000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":703,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":73.500000,\"mBarCode\":\"1PH-WS79\",\"materialOther\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mnemonic\":\"\",\"model\":\"1PH WS79\",\"name\":\"1PH WS79\",\"otherField1\":\"\",\"otherField2\":\"\",\"otherField3\":\"\",\"position\":\"\",\"purchaseDecimal\":59.500000,\"remark\":\"Excel初始化;条码:1PH-WS79\",\"standard\":\"1PH WS79\",\"stock\":52400.000000,\"tenantId\":63,\"unit\":\"件\",\"wholesaleDecimal\":73.500000},{\"attribute\":\"\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryId\":32,\"categoryName\":\"半成品\",\"color\":\"\",\"commodityDecimal\":24.300000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":702,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":24.300000,\"mBarCode\":\"C.4.T.0.00722\",\"materialOther\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mnemonic\":\"\",\"model\":\"MD-RS178(VA)\",\"name\":\"MD-RS178(VA) RS485分线器\",\"otherField1\":\"\",\"otherField2\":\"\",\"otherField3\":\"\",\"position\":\"\",\"purchaseDecimal\":24.300000,\"remark\":\"Excel初始化;条码:C.4.T.0.00722\",\"standard\":\"MD-RS178(VA)\",\"stock\":1000.000000,\"tenantId\":63,\"unit\":\"件\",\"wholesaleDecimal\":24.300000},{\"attribute\":\"\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryId\":32,\"categoryName\":\"半成品\",\"color\":\"\",\"commodityDecimal\":142.560000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":701,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":142.560000,\"mBarCode\":\"C.4.T.0.0068900002\",\"materialOther\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mnemonic\":\"\",\"model\":\"MD-RS114(VB)\",\"name\":\"MD-RS114(VB) 基于RS485的MODBS TCPMODBS RTUASVII转换模块_(DZG)\",\"otherField1\":\"\",\"otherField2\":\"\",\"otherField3\":\"\",\"position\":\"\",\"purchaseDecimal\":142.560000,\"remark\":\"Excel初始化;条码:C.4.T.0.0068900002\",\"standard\":\"MD-RS114(VB)\",\"stock\":100.000000,\"tenantId\":63,\"unit\":\"件\",\"wholesaleDecimal\":142.560000},{\"attribute\":\"\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryId\":32,\"categoryName\":\"半成品\",\"color\":\"\",\"commodityDecimal\":132.840000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":700,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":132.840000,\"mBarCode\":\"C.4.T.0.00686\",\"materialOther\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mnemonic\":\"\",\"model\":\"TC160(VA)\",\"name\":\"TC160(VA) 通讯模块供电盒\",\"otherField1\":\"\",\"otherField2\":\"\",\"otherField3\":\"\",\"position\":\"\",\"purchaseDecimal\":132.840000,\"remark\":\"Excel初始化;条码:C.4.T.0.00686\",\"standard\":\"TC160(VA)\",\"stock\":50.000000,\"tenantId\":63,\"unit\":\"件\",\"wholesaleDecimal\":132.840000},{\"attribute\":\"\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryId\":32,\"categoryName\":\"半成品\",\"color\":\"\",\"commodityDecimal\":0.100000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":699,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":0.100000,\"mBarCode\":\"C.4.T.0.00654\",\"materialOther\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mnemonic\":\"\",\"model\":\"MD-4G111(VF)\",\"name\":\"MD-4G111(VF) 4G模块\",\"otherField1\":\"\",\"otherField2\":\"\",\"otherField3\":\"\",\"position\":\"\",\"purchaseDecimal\":0.100000,\"remark\":\"Excel初始化;条码:C.4.T.0.00654\",\"standard\":\"MD-4G111(VF)\",\"stock\":76970.000000,\"tenantId\":63,\"unit\":\"件\",\"wholesaleDecimal\":0.100000},{\"attribute\":\"\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryId\":32,\"categoryName\":\"半成品\",\"color\":\"\",\"commodityDecimal\":324.000000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":698,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":324.000000,\"mBarCode\":\"C.4.T.0.00562\",\"materialOther\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mnemonic\":\"\",\"model\":\"MD-4GVIII(VB)\",\"name\":\"MD-4GVIII(VB)\",\"otherField1\":\"\",\"otherField2\":\"\",\"otherField3\":\"\",\"position\":\"\",\"purchaseDecimal\":324.000000,\"remark\":\"Excel初始化;条码:C.4.T.0.00562\",\"standard\":\"MD-4GVIII(VB)\",\"stock\":50.000000,\"tenantId\":63,\"unit\":\"件\",\"wholesaleDecimal\":324.000000},{\"attribute\":\"\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryId\":32,\"categoryName\":\"半成品\",\"color\":\"\",\"commodityDecimal\":129.600000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":697,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":129.600000,\"mBarCode\":\"C.4.T.0.00553\",\"materialOther\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mnemonic\":\"\",\"model\":\"MT-P109(VA)\",\"name\":\"MT-P109(VA)\",\"otherField1\":\"\",\"otherField2\":\"\",\"otherField3\":\"\",\"position\":\"\",\"purchaseDecimal\":129.600000,\"remark\":\"Excel初始化;条码:C.4.T.0.00553\",\"standard\":\"MT-P109(VA)\",\"stock\":500.000000,\"tenantId\":63,\"unit\":\"件\",\"wholesaleDecimal\":129.600000}]}}'); +INSERT INTO `tbl_log` VALUES (8923, 63, '接口日志', '43.152.142.32/1.9.116.218', '2026-09-30 07:37:59', 0, 'AssetController.dashboard()', NULL, 'GET /apis/asset/dashboard', '{}', '{\"code\":200,\"data\":{\"summary\":{\"activeCount\":259,\"deviceCount\":10,\"assetQuantity\":289.000000,\"assetCount\":255,\"assetValue\":17260.000000,\"openInventoryCount\":2,\"managedCount\":265},\"statusDistribution\":[{\"code\":\"IN_USE\",\"value\":259},{\"code\":\"REPAIR\",\"value\":3},{\"code\":\"SCRAPPED\",\"value\":3}],\"departmentDistribution\":[{\"name\":\"Production\",\"value\":56},{\"name\":\"未指定\",\"value\":54},{\"name\":\"Laboratory\",\"value\":48},{\"name\":\"Technical & Technologies\",\"value\":29},{\"name\":\"Engineering\",\"value\":18},{\"name\":\"Not Specified\",\"value\":11},{\"name\":\"Human Resources\",\"value\":6},{\"name\":\"Quality\",\"value\":6}],\"deviceCategoryDistribution\":[{\"name\":\"检测设备\",\"value\":2},{\"name\":\"贴装设备\",\"value\":2},{\"name\":\"动力设备\",\"value\":1},{\"name\":\"印刷设备\",\"value\":1},{\"name\":\"工装设备\",\"value\":1},{\"name\":\"服务器\",\"value\":1},{\"name\":\"焊接设备\",\"value\":1},{\"name\":\"物流设备\",\"value\":1}],\"message\":\"成功\",\"categoryDistribution\":[{\"code\":\"HARDWARE\",\"name\":\"硬件资产\",\"value\":198.00},{\"code\":\"SOFTWARE\",\"name\":\"软件资产\",\"value\":67.00},{\"code\":\"SIM_CARD\",\"name\":\"SIM卡\",\"value\":24.00}],\"recentInventories\":[{\"inventoryNo\":\"PD20260921190840893\",\"inventoryUserName\":\"admin\",\"planName\":\"2026年09月资产设备专项盘点\",\"id\":6,\"totalCount\":1,\"inventoriedCount\":1,\"status\":\"CLOSED\",\"updatedAt\":\"2026-09-21 19:17:28\"},{\"inventoryNo\":\"PD20260921170623856\",\"inventoryUserName\":\"张三\",\"planName\":\"2026年09月资产设备专项盘点\",\"id\":4,\"totalCount\":8,\"inventoriedCount\":8,\"status\":\"CLOSED\",\"updatedAt\":\"2026-09-21 19:16:33\"},{\"inventoryNo\":\"PD20260921190800418\",\"inventoryUserName\":\"张三\",\"planName\":\"2026年09月资产设备专项盘点\",\"id\":5,\"totalCount\":2,\"inventoriedCount\":0,\"status\":\"ACCEPTED\",\"updatedAt\":\"2026-09-21 19:08:13\"},{\"inventoryNo\":\"PD20260918131230171\",\"inventoryUserName\":\"张伟\",\"planName\":\"2026年09月资产设备专项盘点\",\"id\":1,\"totalCount\":3,\"inventoriedCount\":1,\"status\":\"IN_PROGRESS\",\"updatedAt\":\"2026-09-21 14:35:59\"}],\"updatedAt\":\"2026-09-30\"}}'); +INSERT INTO `tbl_log` VALUES (8924, 63, '接口日志', '43.152.142.109/1.9.116.218', '2026-09-30 07:38:01', 0, 'AssetDeviceController.list(..)', NULL, 'GET /apis/assetDevice/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":10,\"rows\":[{\"assetId\":8,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"工装设备\",\"deviceCode\":\"TOOL-STENCIL-CLEAN-01\",\"deviceName\":\"全自动钢网清洗机\",\"enabledDate\":1739822400000,\"id\":10,\"keeper\":\"王磊\",\"location\":\"一车间 钢网房\",\"manufacturer\":\"SAWA\",\"model\":\"SC-A1000\",\"nextMaintenanceDate\":1794254400000,\"purchaseDate\":1739131200000,\"remark\":\"水基清洗、漂洗、热风干燥一体化\",\"serialNumber\":\"SAWA-A1000-250210\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetId\":7,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"物流设备\",\"deviceCode\":\"WH-FORKLIFT-01\",\"deviceName\":\"2 吨电动叉车\",\"enabledDate\":1722456000000,\"id\":9,\"keeper\":\"张伟\",\"location\":\"原材料仓充电区\",\"manufacturer\":\"Toyota\",\"model\":\"8FBE20\",\"nextMaintenanceDate\":1792872000000,\"purchaseDate\":1721592000000,\"remark\":\"锂电池版本,配置蓝光安全警示灯\",\"serialNumber\":\"TY-8FBE20-240722\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"仓储物流部\"},{\"assetId\":6,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"服务器\",\"deviceCode\":\"IT-MES-DB-01\",\"deviceName\":\"MES 数据库主服务器\",\"enabledDate\":1737489600000,\"id\":8,\"keeper\":\"赵敏\",\"location\":\"数据中心 A03-U18\",\"manufacturer\":\"Dell\",\"model\":\"PowerEdge R760\",\"nextMaintenanceDate\":1797278400000,\"purchaseDate\":1736884800000,\"remark\":\"双路 CPU、512GB 内存、全闪存 RAID10\",\"serialNumber\":\"CN-R760-25011501\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"信息技术部\"},{\"assetId\":5,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"动力设备\",\"deviceCode\":\"UTIL-AIR-01\",\"deviceName\":\"变频螺杆空压机\",\"enabledDate\":1701374400000,\"id\":7,\"keeper\":\"陈晨\",\"location\":\"动力站 1 号机位\",\"manufacturer\":\"Atlas Copco\",\"model\":\"GA22 VSD+\",\"nextMaintenanceDate\":1790798400000,\"purchaseDate\":1700424000000,\"remark\":\"运行压力 0.72MPa,接入能源管理系统\",\"serialNumber\":\"AC-GA22-2311209\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"设备动力部\"},{\"assetId\":4,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"检测设备\",\"deviceCode\":\"QC-SPI-01\",\"deviceName\":\"在线 3D SPI\",\"enabledDate\":1713384000000,\"id\":6,\"keeper\":\"陈晨\",\"lastInventoryTime\":1789986951000,\"location\":\"一车间 印刷检测区\",\"manufacturer\":\"Koh Young\",\"model\":\"KY8030-3\",\"nextMaintenanceDate\":1793908800000,\"purchaseDate\":1712347200000,\"remark\":\"与印刷机闭环反馈锡膏偏移数据\",\"serialNumber\":\"KY-8030-24040608\",\"status\":\"IN_USE\",\"updateTime\":1789986959000,\"useDepartment\":\"品质部\"},{\"assetId\":3,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"检测设备\",\"deviceCode\":\"QC-AOI-01\",\"deviceName\":\"在线 3D AOI\",\"enabledDate\":1713384000000,\"id\":5,\"keeper\":\"陈晨\",\"lastInventoryTime\":1790003830000,\"location\":\"一车间 AOI 检测区\",\"manufacturer\":\"Koh Young\",\"model\":\"Zenith 2\",\"nextMaintenanceDate\":1793822400000,\"purchaseDate\":1712347200000,\"remark\":\"具备 AI 缺陷复判和 SPC 数据接口\",\"serialNumber\":\"KY-Z2-24040615\",\"status\":\"IN_USE\",\"updateTime\":1790003830000,\"useDepartment\":\"品质部\"},{\"assetId\":2,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"焊接设备\",\"deviceCode\":\"SMT-L01-REFLOW-01\",\"deviceName\":\"十温区氮气回流焊炉\",\"enabledDate\":1712692800000,\"id\":4,\"keeper\":\"王磊\",\"location\":\"一车间 SMT-01 线后段\",\"manufacturer\":\"Heller Industries\",\"model\":\"HELLER 1936MK7\",\"nextMaintenanceDate\":1792440000000,\"purchaseDate\":1710705600000,\"remark\":\"氮气闭环控制,支持双轨独立调宽\",\"serialNumber\":\"HLR1936-2403268\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetId\":1,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"贴装设备\",\"deviceCode\":\"SMT-L01-MOUNTER-B\",\"deviceName\":\"多功能贴片机 B\",\"enabledDate\":1712520000000,\"id\":3,\"keeper\":\"王磊\",\"location\":\"一车间 SMT-01 线 B 工位\",\"manufacturer\":\"Panasonic\",\"model\":\"Panasonic NPM-W2S\",\"nextMaintenanceDate\":1792094400000,\"purchaseDate\":1710705600000,\"remark\":\"负责异形件及高精度元件贴装\",\"serialNumber\":\"NPMW2S24031802\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetId\":1,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"贴装设备\",\"deviceCode\":\"SMT-L01-MOUNTER-A\",\"deviceName\":\"高速模块贴片机 A\",\"enabledDate\":1712520000000,\"id\":2,\"keeper\":\"王磊\",\"location\":\"一车间 SMT-01 线 A 工位\",\"manufacturer\":\"Panasonic\",\"model\":\"Panasonic NPM-D3A\",\"nextMaintenanceDate\":1792008000000,\"purchaseDate\":1710705600000,\"remark\":\"前段高速贴装,配置 16 头轻量贴装头\",\"serialNumber\":\"NPMD3A24031801\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetId\":1,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"印刷设备\",\"deviceCode\":\"SMT-L01-PRINTER-01\",\"deviceName\":\"全自动锡膏印刷机\",\"enabledDate\":1712520000000,\"id\":1,\"keeper\":\"王磊\",\"lastInventoryTime\":1789726083000,\"location\":\"一车间 SMT-01 线前段\",\"manufacturer\":\"ASMPT\",\"model\":\"DEK NeoHorizon 03iX\",\"nextMaintenanceDate\":1791403200000,\"purchaseDate\":1710705600000,\"remark\":\"配置 2D 检测与自动擦网单元\",\"serialNumber\":\"DEK24NH03187\",\"status\":\"IN_USE\",\"updateTime\":1789726082000,\"useDepartment\":\"SMT生产部\"}]}}'); +INSERT INTO `tbl_log` VALUES (8925, NULL, '接口日志', '43.174.52.31/1.9.116.218', '2026-09-30 07:38:10', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (8926, NULL, '接口日志', '43.174.54.44/1.9.116.218', '2026-09-30 07:38:10', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (8927, 63, '接口日志', '43.152.157.109/1.9.116.218', '2026-09-30 07:38:11', 0, 'FunctionController.findMenuByPNumber(..)', NULL, 'POST /apis/function/findMenuByPNumber', '{\"jsonObject\":{\"userId\":63,\"pNumber\":0}}', '[{\"component\":\"/layouts/TabLayout\",\"icon\":\"home\",\"id\":0,\"text\":\"首页\",\"url\":\"/dashboard/analysis\",\"textEn\":\"Home\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/SaleOrderList\",\"icon\":\"profile\",\"id\":242,\"text\":\"销售订单\",\"url\":\"/bill/sale_order\",\"textEn\":\"Sales Orders\"},{\"component\":\"/bill/SaleOutList\",\"icon\":\"profile\",\"id\":41,\"text\":\"销售出库\",\"url\":\"/bill/sale_out\",\"textEn\":\"Sales Shipments\"},{\"component\":\"/bill/DeliveryPlanList\",\"icon\":\"profile\",\"id\":271,\"text\":\"交货计划管理\",\"url\":\"/bill/delivery_plan\",\"textEn\":\"Delivery Plans\"},{\"component\":\"/bill/SaleShipmentList\",\"icon\":\"car\",\"id\":268,\"text\":\"发货管理\",\"url\":\"/bill/sale_shipment\",\"textEn\":\"Shipment Management\"},{\"component\":\"/bill/SaleBackList\",\"icon\":\"profile\",\"id\":200,\"text\":\"销售退货\",\"url\":\"/bill/sale_back\",\"textEn\":\"Sales Returns\"},{\"component\":\"/bill/RetailOutList\",\"icon\":\"profile\",\"id\":210,\"text\":\"零售出库\",\"url\":\"/bill/retail_out\",\"textEn\":\"Retail Shipments\"},{\"component\":\"/bill/RetailBackList\",\"icon\":\"profile\",\"id\":211,\"text\":\"零售退货\",\"url\":\"/bill/retail_back\",\"textEn\":\"Retail Returns\"}],\"icon\":\"shopping-cart\",\"id\":38,\"text\":\"销售管理\",\"url\":\"/billB\",\"textEn\":\"Sales Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/PurchaseApplyList\",\"icon\":\"profile\",\"id\":261,\"text\":\"请购单\",\"url\":\"/bill/purchase_apply\",\"textEn\":\"Purchase Requisitions\"},{\"component\":\"/bill/PurchaseOrderList\",\"icon\":\"profile\",\"id\":241,\"text\":\"采购订单\",\"url\":\"/bill/purchase_order\",\"textEn\":\"Purchase Orders\"},{\"component\":\"/bill/PurchaseInList\",\"icon\":\"profile\",\"id\":33,\"text\":\"采购入库\",\"url\":\"/bill/purchase_in\",\"textEn\":\"Purchase Receipts\"},{\"component\":\"/bill/PurchaseBackList\",\"icon\":\"profile\",\"id\":199,\"text\":\"采购退货\",\"url\":\"/bill/purchase_back\",\"textEn\":\"Purchase Returns\"}],\"icon\":\"retweet\",\"id\":32,\"text\":\"采购管理\",\"url\":\"/bill\",\"textEn\":\"Purchase Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/production/PackBomList\",\"icon\":\"profile\",\"id\":263,\"text\":\"生产方案\",\"url\":\"/production/pack_bom\",\"textEn\":\"Production BOMs\"},{\"component\":\"/production/OrderList\",\"icon\":\"profile\",\"id\":264,\"text\":\"生产工单\",\"url\":\"/production/order\",\"textEn\":\"Production Orders\"},{\"component\":\"/production/RequisitionList\",\"icon\":\"profile\",\"id\":265,\"text\":\"领料管理\",\"url\":\"/production/requisition\",\"textEn\":\"Material Requisitions\"},{\"component\":\"/production/ReportList\",\"icon\":\"profile\",\"id\":266,\"text\":\"完工报工\",\"url\":\"/production/report\",\"textEn\":\"Production Reports\"}],\"icon\":\"cluster\",\"id\":262,\"text\":\"生产管理\",\"url\":\"/production\",\"textEn\":\"Production Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/MaterialStock\",\"icon\":\"profile\",\"id\":246,\"text\":\"商品库存\",\"url\":\"/report/material_stock\",\"textEn\":\"Product Inventory\"},{\"component\":\"/bill/OtherInList\",\"icon\":\"profile\",\"id\":201,\"text\":\"其它入库\",\"url\":\"/bill/other_in\",\"textEn\":\"Other Receipts\"},{\"component\":\"/bill/OtherOutList\",\"icon\":\"profile\",\"id\":202,\"text\":\"其它出库\",\"url\":\"/bill/other_out\",\"textEn\":\"Other Shipments\"},{\"component\":\"/bill/HeadquartersInList\",\"icon\":\"profile\",\"id\":270,\"text\":\"总部入库\",\"url\":\"/bill/headquarters_in\",\"textEn\":\"Headquarters Receipts\"}],\"icon\":\"hdd\",\"id\":239,\"text\":\"仓库管理\",\"url\":\"/billD\",\"textEn\":\"Warehouse Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/financial/MoneyInList\",\"icon\":\"profile\",\"id\":204,\"text\":\"收款单\",\"url\":\"/financial/money_in\",\"textEn\":\"Receipt Vouchers\"},{\"component\":\"/financial/MoneyOutList\",\"icon\":\"profile\",\"id\":205,\"text\":\"付款单\",\"url\":\"/financial/money_out\",\"textEn\":\"Payment Vouchers\"}],\"icon\":\"money-collect\",\"id\":44,\"text\":\"财务管理\",\"url\":\"/financial\",\"textEn\":\"Finance Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/asset/AssetDashboard\",\"icon\":\"dashboard\",\"id\":276,\"text\":\"资产汇总\",\"url\":\"/asset\",\"textEn\":\"Asset Overview\"},{\"component\":\"/asset/AssetList\",\"icon\":\"profile\",\"id\":273,\"text\":\"资产台账\",\"url\":\"/asset/ledger\",\"textEn\":\"Asset Ledger\"},{\"component\":\"/asset/DeviceList\",\"icon\":\"tool\",\"id\":274,\"text\":\"设备台账\",\"url\":\"/asset/device\",\"textEn\":\"Device Ledger\"},{\"component\":\"/asset/InventoryList\",\"icon\":\"scan\",\"id\":275,\"text\":\"资产盘点\",\"url\":\"/asset/inventory\",\"textEn\":\"Asset Inventory\"}],\"icon\":\"bank\",\"id\":272,\"text\":\"资产管理\",\"url\":\"/assetManagement\",\"textEn\":\"Asset Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/material/MaterialCategoryList\",\"icon\":\"profile\",\"id\":22,\"text\":\"商品类别\",\"url\":\"/material/material_category\",\"textEn\":\"Product Categories\"},{\"component\":\"/material/MaterialList\",\"icon\":\"profile\",\"id\":23,\"text\":\"商品信息\",\"url\":\"/material/material\",\"textEn\":\"Product Information\"},{\"component\":\"/system/UnitList\",\"icon\":\"profile\",\"id\":220,\"text\":\"多单位\",\"url\":\"/system/unit\",\"textEn\":\"Multiple Units\"},{\"component\":\"/material/MaterialAttributeList\",\"icon\":\"profile\",\"id\":247,\"text\":\"多属性\",\"url\":\"/material/material_attribute\",\"textEn\":\"Product Attributes\"}],\"icon\":\"shopping\",\"id\":21,\"text\":\"商品管理\",\"url\":\"/material\",\"textEn\":\"Product Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/AccountReport\",\"icon\":\"profile\",\"id\":207,\"text\":\"账户统计\",\"url\":\"/report/account_report\",\"textEn\":\"Account Summary\"},{\"component\":\"/report/RetailOutReport\",\"icon\":\"profile\",\"id\":259,\"text\":\"零售统计\",\"url\":\"/report/retail_out_report\",\"textEn\":\"Retail Summary\"},{\"component\":\"/report/BuyInReport\",\"icon\":\"profile\",\"id\":208,\"text\":\"采购统计\",\"url\":\"/report/buy_in_report\",\"textEn\":\"Purchase Summary\"},{\"component\":\"/report/SaleOutReport\",\"icon\":\"profile\",\"id\":209,\"text\":\"销售统计\",\"url\":\"/report/sale_out_report\",\"textEn\":\"Sales Summary\"},{\"component\":\"/report/InDetail\",\"icon\":\"profile\",\"id\":226,\"text\":\"入库明细\",\"url\":\"/report/in_detail\",\"textEn\":\"Inbound Details\"},{\"component\":\"/report/OutDetail\",\"icon\":\"profile\",\"id\":227,\"text\":\"出库明细\",\"url\":\"/report/out_detail\",\"textEn\":\"Outbound Details\"},{\"component\":\"/report/InMaterialCount\",\"icon\":\"profile\",\"id\":228,\"text\":\"入库汇总\",\"url\":\"/report/in_material_count\",\"textEn\":\"Inbound Summary\"},{\"component\":\"/report/OutMaterialCount\",\"icon\":\"profile\",\"id\":229,\"text\":\"出库汇总\",\"url\":\"/report/out_material_count\",\"textEn\":\"Outbound Summary\"},{\"component\":\"/report/InOutStockReport\",\"icon\":\"profile\",\"id\":59,\"text\":\"进销存统计\",\"url\":\"/report/in_out_stock_report\",\"textEn\":\"Inventory Transaction Summary\"},{\"component\":\"/report/CustomerAccount\",\"icon\":\"profile\",\"id\":235,\"text\":\"客户对账\",\"url\":\"/report/customer_account\",\"textEn\":\"Customer Reconciliation\"},{\"component\":\"/report/VendorAccount\",\"icon\":\"profile\",\"id\":237,\"text\":\"供应商对账\",\"url\":\"/report/vendor_account\",\"textEn\":\"Supplier Reconciliation\"},{\"component\":\"/report/StockWarningReport\",\"icon\":\"profile\",\"id\":244,\"text\":\"库存预警\",\"url\":\"/report/stock_warning_report\",\"textEn\":\"Stock Alerts\"}],\"icon\":\"pie-chart\",\"id\":198,\"text\":\"报表查询\",\"url\":\"/report\",\"textEn\":\"Reports\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/VendorList\",\"icon\":\"profile\",\"id\":25,\"text\":\"供应商信息\",\"url\":\"/system/vendor\",\"textEn\":\"Suppliers\"},{\"component\":\"/system/CustomerList\",\"icon\":\"profile\",\"id\":217,\"text\":\"客户信息\",\"url\":\"/system/customer\",\"textEn\":\"Customers\"},{\"component\":\"/system/MemberList\",\"icon\":\"profile\",\"id\":218,\"text\":\"会员信息\",\"url\":\"/system/member\",\"textEn\":\"Members\"},{\"component\":\"/system/CustomerCategoryList\",\"icon\":\"bars\",\"id\":267,\"text\":\"客户分类\",\"url\":\"/system/customerCategory\",\"textEn\":\"Customer Categories\"},{\"component\":\"/system/DepotList\",\"icon\":\"profile\",\"id\":26,\"text\":\"仓库信息\",\"url\":\"/system/depot\",\"textEn\":\"Warehouses\"},{\"component\":\"/system/InOutItemList\",\"icon\":\"profile\",\"id\":194,\"text\":\"收支项目\",\"url\":\"/system/in_out_item\",\"textEn\":\"Income and Expense Items\"},{\"component\":\"/system/AccountList\",\"icon\":\"profile\",\"id\":195,\"text\":\"结算账户\",\"url\":\"/system/account\",\"textEn\":\"Settlement Accounts\"},{\"component\":\"/system/PersonList\",\"icon\":\"profile\",\"id\":31,\"text\":\"操作人员管理\",\"url\":\"/system/person\",\"textEn\":\"Operators\"}],\"icon\":\"appstore\",\"id\":24,\"text\":\"基础资料\",\"url\":\"/systemA\",\"textEn\":\"Master Data\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/RoleList\",\"icon\":\"profile\",\"id\":13,\"text\":\"角色管理\",\"url\":\"/system/role\",\"textEn\":\"Role Management\"},{\"component\":\"/system/UserList\",\"icon\":\"profile\",\"id\":14,\"text\":\"用户管理\",\"url\":\"/system/user\",\"textEn\":\"User Management\"},{\"component\":\"/system/OrganizationList\",\"icon\":\"profile\",\"id\":243,\"text\":\"部门管理\",\"url\":\"/system/organization\",\"textEn\":\"Department Management\"},{\"component\":\"/system/LogList\",\"icon\":\"profile\",\"id\":15,\"text\":\"日志管理\",\"url\":\"/system/log\",\"textEn\":\"Log Management\"},{\"component\":\"/material/MaterialPropertyList\",\"icon\":\"profile\",\"id\":236,\"text\":\"商品属性\",\"url\":\"/material/material_property\",\"textEn\":\"Product Properties\"},{\"component\":\"/system/SystemConfigList\",\"icon\":\"profile\",\"id\":234,\"text\":\"系统配置\",\"url\":\"/system/system_config\",\"textEn\":\"System Configuration\"},{\"component\":\"/system/FunctionList\",\"icon\":\"profile\",\"id\":16,\"text\":\"菜单管理\",\"url\":\"/system/function\",\"textEn\":\"Resource Menus\"},{\"component\":\"/system/PluginList\",\"icon\":\"profile\",\"id\":245,\"text\":\"插件管理\",\"url\":\"/system/plugin\",\"textEn\":\"Plugin Management\"},{\"component\":\"/system/DictList\",\"icon\":\"profile\",\"id\":260,\"text\":\"字典管理\",\"url\":\"/system/dict\",\"textEn\":\"Dictionary Management\"},{\"component\":\"/system/PlatformConfigList\",\"icon\":\"profile\",\"id\":258,\"text\":\"平台配置\",\"url\":\"/system/platform_config\",\"textEn\":\"Platform Configuration\"}],\"icon\":\"setting\",\"id\":1,\"text\":\"系统管理\",\"url\":\"/system\",\"textEn\":\"System Management\"}]'); +INSERT INTO `tbl_log` VALUES (8928, 63, '接口日志', '43.152.142.64/1.9.116.218', '2026-09-30 07:38:11', 0, 'UserController.getUserBtnByCurrentUser(..)', NULL, 'GET /apis/user/getUserBtnByCurrentUser', '{}', '{\"code\":200,\"data\":{\"userBtn\":[{\"btnStr\":\"8,1\",\"url\":\"/system/role\"},{\"btnStr\":\"1\",\"url\":\"/system/user\"},{\"btnStr\":\"1\",\"url\":\"/system/organization\"},{\"btnStr\":\"1\",\"url\":\"/material/material_property\"},{\"btnStr\":\"1\",\"url\":\"/system/system_config\"},{\"btnStr\":\"1\",\"url\":\"/system/function\"},{\"btnStr\":\"1\",\"url\":\"/system/plugin\"},{\"btnStr\":\"1\",\"url\":\"/material/material_category\"},{\"btnStr\":\"1,3\",\"url\":\"/material/material\"},{\"btnStr\":\"1\",\"url\":\"/system/unit\"},{\"btnStr\":\"1\",\"url\":\"/material/material_attribute\"},{\"btnStr\":\"1,3\",\"url\":\"/system/vendor\"},{\"btnStr\":\"1,3\",\"url\":\"/system/customer\"},{\"btnStr\":\"1,3\",\"url\":\"/system/member\"},{\"btnStr\":\"1\",\"url\":\"/system/depot\"},{\"btnStr\":\"1\",\"url\":\"/system/in_out_item\"},{\"btnStr\":\"1\",\"url\":\"/system/account\"},{\"btnStr\":\"1\",\"url\":\"/system/person\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_apply\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_out\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/delivery_plan\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/sale_shipment\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_out\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/order\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/requisition\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/report\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/giro\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/advance_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/allocation_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/assemble\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/headquarters_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/disassemble\"}]}}'); +INSERT INTO `tbl_log` VALUES (8929, 63, '接口日志', '43.152.142.57/1.9.116.218', '2026-09-30 07:38:11', 0, 'AssetDeviceController.list(..)', NULL, 'GET /apis/assetDevice/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":10,\"rows\":[{\"assetId\":8,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"工装设备\",\"deviceCode\":\"TOOL-STENCIL-CLEAN-01\",\"deviceName\":\"全自动钢网清洗机\",\"enabledDate\":1739822400000,\"id\":10,\"keeper\":\"王磊\",\"location\":\"一车间 钢网房\",\"manufacturer\":\"SAWA\",\"model\":\"SC-A1000\",\"nextMaintenanceDate\":1794254400000,\"purchaseDate\":1739131200000,\"remark\":\"水基清洗、漂洗、热风干燥一体化\",\"serialNumber\":\"SAWA-A1000-250210\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetId\":7,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"物流设备\",\"deviceCode\":\"WH-FORKLIFT-01\",\"deviceName\":\"2 吨电动叉车\",\"enabledDate\":1722456000000,\"id\":9,\"keeper\":\"张伟\",\"location\":\"原材料仓充电区\",\"manufacturer\":\"Toyota\",\"model\":\"8FBE20\",\"nextMaintenanceDate\":1792872000000,\"purchaseDate\":1721592000000,\"remark\":\"锂电池版本,配置蓝光安全警示灯\",\"serialNumber\":\"TY-8FBE20-240722\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"仓储物流部\"},{\"assetId\":6,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"服务器\",\"deviceCode\":\"IT-MES-DB-01\",\"deviceName\":\"MES 数据库主服务器\",\"enabledDate\":1737489600000,\"id\":8,\"keeper\":\"赵敏\",\"location\":\"数据中心 A03-U18\",\"manufacturer\":\"Dell\",\"model\":\"PowerEdge R760\",\"nextMaintenanceDate\":1797278400000,\"purchaseDate\":1736884800000,\"remark\":\"双路 CPU、512GB 内存、全闪存 RAID10\",\"serialNumber\":\"CN-R760-25011501\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"信息技术部\"},{\"assetId\":5,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"动力设备\",\"deviceCode\":\"UTIL-AIR-01\",\"deviceName\":\"变频螺杆空压机\",\"enabledDate\":1701374400000,\"id\":7,\"keeper\":\"陈晨\",\"location\":\"动力站 1 号机位\",\"manufacturer\":\"Atlas Copco\",\"model\":\"GA22 VSD+\",\"nextMaintenanceDate\":1790798400000,\"purchaseDate\":1700424000000,\"remark\":\"运行压力 0.72MPa,接入能源管理系统\",\"serialNumber\":\"AC-GA22-2311209\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"设备动力部\"},{\"assetId\":4,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"检测设备\",\"deviceCode\":\"QC-SPI-01\",\"deviceName\":\"在线 3D SPI\",\"enabledDate\":1713384000000,\"id\":6,\"keeper\":\"陈晨\",\"lastInventoryTime\":1789986951000,\"location\":\"一车间 印刷检测区\",\"manufacturer\":\"Koh Young\",\"model\":\"KY8030-3\",\"nextMaintenanceDate\":1793908800000,\"purchaseDate\":1712347200000,\"remark\":\"与印刷机闭环反馈锡膏偏移数据\",\"serialNumber\":\"KY-8030-24040608\",\"status\":\"IN_USE\",\"updateTime\":1789986959000,\"useDepartment\":\"品质部\"},{\"assetId\":3,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"检测设备\",\"deviceCode\":\"QC-AOI-01\",\"deviceName\":\"在线 3D AOI\",\"enabledDate\":1713384000000,\"id\":5,\"keeper\":\"陈晨\",\"lastInventoryTime\":1790003830000,\"location\":\"一车间 AOI 检测区\",\"manufacturer\":\"Koh Young\",\"model\":\"Zenith 2\",\"nextMaintenanceDate\":1793822400000,\"purchaseDate\":1712347200000,\"remark\":\"具备 AI 缺陷复判和 SPC 数据接口\",\"serialNumber\":\"KY-Z2-24040615\",\"status\":\"IN_USE\",\"updateTime\":1790003830000,\"useDepartment\":\"品质部\"},{\"assetId\":2,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"焊接设备\",\"deviceCode\":\"SMT-L01-REFLOW-01\",\"deviceName\":\"十温区氮气回流焊炉\",\"enabledDate\":1712692800000,\"id\":4,\"keeper\":\"王磊\",\"location\":\"一车间 SMT-01 线后段\",\"manufacturer\":\"Heller Industries\",\"model\":\"HELLER 1936MK7\",\"nextMaintenanceDate\":1792440000000,\"purchaseDate\":1710705600000,\"remark\":\"氮气闭环控制,支持双轨独立调宽\",\"serialNumber\":\"HLR1936-2403268\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetId\":1,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"贴装设备\",\"deviceCode\":\"SMT-L01-MOUNTER-B\",\"deviceName\":\"多功能贴片机 B\",\"enabledDate\":1712520000000,\"id\":3,\"keeper\":\"王磊\",\"location\":\"一车间 SMT-01 线 B 工位\",\"manufacturer\":\"Panasonic\",\"model\":\"Panasonic NPM-W2S\",\"nextMaintenanceDate\":1792094400000,\"purchaseDate\":1710705600000,\"remark\":\"负责异形件及高精度元件贴装\",\"serialNumber\":\"NPMW2S24031802\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetId\":1,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"贴装设备\",\"deviceCode\":\"SMT-L01-MOUNTER-A\",\"deviceName\":\"高速模块贴片机 A\",\"enabledDate\":1712520000000,\"id\":2,\"keeper\":\"王磊\",\"location\":\"一车间 SMT-01 线 A 工位\",\"manufacturer\":\"Panasonic\",\"model\":\"Panasonic NPM-D3A\",\"nextMaintenanceDate\":1792008000000,\"purchaseDate\":1710705600000,\"remark\":\"前段高速贴装,配置 16 头轻量贴装头\",\"serialNumber\":\"NPMD3A24031801\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetId\":1,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"印刷设备\",\"deviceCode\":\"SMT-L01-PRINTER-01\",\"deviceName\":\"全自动锡膏印刷机\",\"enabledDate\":1712520000000,\"id\":1,\"keeper\":\"王磊\",\"lastInventoryTime\":1789726083000,\"location\":\"一车间 SMT-01 线前段\",\"manufacturer\":\"ASMPT\",\"model\":\"DEK NeoHorizon 03iX\",\"nextMaintenanceDate\":1791403200000,\"purchaseDate\":1710705600000,\"remark\":\"配置 2D 检测与自动擦网单元\",\"serialNumber\":\"DEK24NH03187\",\"status\":\"IN_USE\",\"updateTime\":1789726082000,\"useDepartment\":\"SMT生产部\"}]}}'); +INSERT INTO `tbl_log` VALUES (8930, 63, '接口日志', '43.152.142.141/1.9.116.218', '2026-09-30 07:38:11', 0, 'MsgController.getList(..)', NULL, 'GET /apis/msg/list', '{\"search\":\"{\\\"name\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (8931, 63, '接口日志', '43.152.142.32/1.9.116.218', '2026-09-30 07:38:11', 0, 'MsgController.getMsgByStatus(..)', NULL, 'GET /apis/msg/getMsgByStatus', '{\"status\":\"1\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (8932, 63, '接口日志', '43.174.32.18/1.9.116.218', '2026-09-30 07:38:14', 0, 'AssetController.dashboard()', NULL, 'GET /apis/asset/dashboard', '{}', '{\"code\":200,\"data\":{\"summary\":{\"activeCount\":259,\"deviceCount\":10,\"assetQuantity\":289.000000,\"assetCount\":255,\"assetValue\":17260.000000,\"openInventoryCount\":2,\"managedCount\":265},\"statusDistribution\":[{\"code\":\"IN_USE\",\"value\":259},{\"code\":\"REPAIR\",\"value\":3},{\"code\":\"SCRAPPED\",\"value\":3}],\"departmentDistribution\":[{\"name\":\"Production\",\"value\":56},{\"name\":\"未指定\",\"value\":54},{\"name\":\"Laboratory\",\"value\":48},{\"name\":\"Technical & Technologies\",\"value\":29},{\"name\":\"Engineering\",\"value\":18},{\"name\":\"Not Specified\",\"value\":11},{\"name\":\"Human Resources\",\"value\":6},{\"name\":\"Quality\",\"value\":6}],\"deviceCategoryDistribution\":[{\"name\":\"检测设备\",\"value\":2},{\"name\":\"贴装设备\",\"value\":2},{\"name\":\"动力设备\",\"value\":1},{\"name\":\"印刷设备\",\"value\":1},{\"name\":\"工装设备\",\"value\":1},{\"name\":\"服务器\",\"value\":1},{\"name\":\"焊接设备\",\"value\":1},{\"name\":\"物流设备\",\"value\":1}],\"message\":\"成功\",\"categoryDistribution\":[{\"code\":\"HARDWARE\",\"name\":\"硬件资产\",\"value\":198.00},{\"code\":\"SOFTWARE\",\"name\":\"软件资产\",\"value\":67.00},{\"code\":\"SIM_CARD\",\"name\":\"SIM卡\",\"value\":24.00}],\"recentInventories\":[{\"inventoryNo\":\"PD20260921190840893\",\"inventoryUserName\":\"admin\",\"planName\":\"2026年09月资产设备专项盘点\",\"id\":6,\"totalCount\":1,\"inventoriedCount\":1,\"status\":\"CLOSED\",\"updatedAt\":\"2026-09-21 19:17:28\"},{\"inventoryNo\":\"PD20260921170623856\",\"inventoryUserName\":\"张三\",\"planName\":\"2026年09月资产设备专项盘点\",\"id\":4,\"totalCount\":8,\"inventoriedCount\":8,\"status\":\"CLOSED\",\"updatedAt\":\"2026-09-21 19:16:33\"},{\"inventoryNo\":\"PD20260921190800418\",\"inventoryUserName\":\"张三\",\"planName\":\"2026年09月资产设备专项盘点\",\"id\":5,\"totalCount\":2,\"inventoriedCount\":0,\"status\":\"ACCEPTED\",\"updatedAt\":\"2026-09-21 19:08:13\"},{\"inventoryNo\":\"PD20260918131230171\",\"inventoryUserName\":\"张伟\",\"planName\":\"2026年09月资产设备专项盘点\",\"id\":1,\"totalCount\":3,\"inventoriedCount\":1,\"status\":\"IN_PROGRESS\",\"updatedAt\":\"2026-09-21 14:35:59\"}],\"updatedAt\":\"2026-09-30\"}}'); +INSERT INTO `tbl_log` VALUES (8933, 63, '接口日志', '43.152.142.128/1.9.116.218', '2026-09-30 07:38:16', 0, 'AssetInventoryController.operatorOptions()', NULL, 'GET /apis/assetInventory/operatorOptions', '{}', '{\"code\":200,\"data\":{\"rows\":[{\"loginName\":\"admin\",\"name\":\"admin\",\"id\":63}],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (8934, 63, '接口日志', '43.152.142.78/1.9.116.218', '2026-09-30 07:38:16', 0, 'AssetInventoryController.list(..)', NULL, 'GET /apis/assetInventory/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":4,\"rows\":[{\"abnormalCount\":0,\"auditTime\":1790003845000,\"auditUserId\":149,\"completedAt\":1790003836000,\"createTime\":1790003320000,\"creator\":149,\"deadline\":1790258400000,\"deleteFlag\":\"0\",\"id\":6,\"inventoriedCount\":1,\"inventoryNo\":\"PD20260921190840893\",\"inventoryUserId\":63,\"inventoryUserName\":\"admin\",\"normalCount\":1,\"planName\":\"2026年09月资产设备专项盘点\",\"plannedAt\":1790053200000,\"scopeType\":\"DEVICE\",\"source\":\"MANUAL\",\"startedAt\":1790003819000,\"status\":\"CLOSED\",\"totalCount\":1,\"updateTime\":1790003848000,\"updater\":149},{\"abnormalCount\":0,\"createTime\":1790003280000,\"creator\":149,\"deadline\":1790258400000,\"deleteFlag\":\"0\",\"id\":5,\"inventoriedCount\":0,\"inventoryNo\":\"PD20260921190800418\",\"inventoryUserId\":149,\"inventoryUserName\":\"张三\",\"normalCount\":0,\"planName\":\"2026年09月资产设备专项盘点\",\"plannedAt\":1790053200000,\"remark\":\"进行盘点\",\"scopeType\":\"ALL\",\"source\":\"MANUAL\",\"status\":\"ACCEPTED\",\"totalCount\":2,\"updateTime\":1790003293000,\"updater\":149},{\"abnormalCount\":0,\"completedAt\":1790002875000,\"createTime\":1789995983000,\"creator\":63,\"deadline\":1790258400000,\"deleteFlag\":\"0\",\"id\":4,\"inventoriedCount\":8,\"inventoryNo\":\"PD20260921170623856\",\"inventoryUserId\":149,\"inventoryUserName\":\"张三\",\"normalCount\":0,\"planName\":\"2026年09月资产设备专项盘点\",\"plannedAt\":1790053200000,\"remark\":\"进行盘点\",\"scopeType\":\"ASSET\",\"source\":\"MANUAL\",\"startedAt\":1790002559000,\"status\":\"CLOSED\",\"totalCount\":8,\"updateTime\":1790003793000,\"updater\":149},{\"abnormalCount\":0,\"createTime\":1789722750000,\"creator\":63,\"deadline\":1789999200000,\"deleteFlag\":\"0\",\"id\":1,\"inventoriedCount\":1,\"inventoryNo\":\"PD20260918131230171\",\"inventoryUserId\":36,\"inventoryUserName\":\"张伟\",\"normalCount\":0,\"planName\":\"2026年09月资产设备专项盘点\",\"plannedAt\":1789794000000,\"remark\":\"进行盘点\",\"scopeType\":\"DEVICE\",\"source\":\"MANUAL\",\"startedAt\":1789723142000,\"status\":\"IN_PROGRESS\",\"totalCount\":3,\"updateTime\":1789986959000,\"updater\":63}]}}'); +INSERT INTO `tbl_log` VALUES (8935, NULL, '接口日志', '43.152.142.29/1.9.116.218', '2026-09-30 07:38:23', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (8936, NULL, '接口日志', '43.174.32.34/1.9.116.218', '2026-09-30 07:38:23', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (8937, 63, '接口日志', '43.152.157.109/1.9.116.218', '2026-09-30 07:38:23', 0, 'FunctionController.findMenuByPNumber(..)', NULL, 'POST /apis/function/findMenuByPNumber', '{\"jsonObject\":{\"userId\":63,\"pNumber\":0}}', '[{\"component\":\"/layouts/TabLayout\",\"icon\":\"home\",\"id\":0,\"text\":\"首页\",\"url\":\"/dashboard/analysis\",\"textEn\":\"Home\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/SaleOrderList\",\"icon\":\"profile\",\"id\":242,\"text\":\"销售订单\",\"url\":\"/bill/sale_order\",\"textEn\":\"Sales Orders\"},{\"component\":\"/bill/SaleOutList\",\"icon\":\"profile\",\"id\":41,\"text\":\"销售出库\",\"url\":\"/bill/sale_out\",\"textEn\":\"Sales Shipments\"},{\"component\":\"/bill/DeliveryPlanList\",\"icon\":\"profile\",\"id\":271,\"text\":\"交货计划管理\",\"url\":\"/bill/delivery_plan\",\"textEn\":\"Delivery Plans\"},{\"component\":\"/bill/SaleShipmentList\",\"icon\":\"car\",\"id\":268,\"text\":\"发货管理\",\"url\":\"/bill/sale_shipment\",\"textEn\":\"Shipment Management\"},{\"component\":\"/bill/SaleBackList\",\"icon\":\"profile\",\"id\":200,\"text\":\"销售退货\",\"url\":\"/bill/sale_back\",\"textEn\":\"Sales Returns\"},{\"component\":\"/bill/RetailOutList\",\"icon\":\"profile\",\"id\":210,\"text\":\"零售出库\",\"url\":\"/bill/retail_out\",\"textEn\":\"Retail Shipments\"},{\"component\":\"/bill/RetailBackList\",\"icon\":\"profile\",\"id\":211,\"text\":\"零售退货\",\"url\":\"/bill/retail_back\",\"textEn\":\"Retail Returns\"}],\"icon\":\"shopping-cart\",\"id\":38,\"text\":\"销售管理\",\"url\":\"/billB\",\"textEn\":\"Sales Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/PurchaseApplyList\",\"icon\":\"profile\",\"id\":261,\"text\":\"请购单\",\"url\":\"/bill/purchase_apply\",\"textEn\":\"Purchase Requisitions\"},{\"component\":\"/bill/PurchaseOrderList\",\"icon\":\"profile\",\"id\":241,\"text\":\"采购订单\",\"url\":\"/bill/purchase_order\",\"textEn\":\"Purchase Orders\"},{\"component\":\"/bill/PurchaseInList\",\"icon\":\"profile\",\"id\":33,\"text\":\"采购入库\",\"url\":\"/bill/purchase_in\",\"textEn\":\"Purchase Receipts\"},{\"component\":\"/bill/PurchaseBackList\",\"icon\":\"profile\",\"id\":199,\"text\":\"采购退货\",\"url\":\"/bill/purchase_back\",\"textEn\":\"Purchase Returns\"}],\"icon\":\"retweet\",\"id\":32,\"text\":\"采购管理\",\"url\":\"/bill\",\"textEn\":\"Purchase Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/production/PackBomList\",\"icon\":\"profile\",\"id\":263,\"text\":\"生产方案\",\"url\":\"/production/pack_bom\",\"textEn\":\"Production BOMs\"},{\"component\":\"/production/OrderList\",\"icon\":\"profile\",\"id\":264,\"text\":\"生产工单\",\"url\":\"/production/order\",\"textEn\":\"Production Orders\"},{\"component\":\"/production/RequisitionList\",\"icon\":\"profile\",\"id\":265,\"text\":\"领料管理\",\"url\":\"/production/requisition\",\"textEn\":\"Material Requisitions\"},{\"component\":\"/production/ReportList\",\"icon\":\"profile\",\"id\":266,\"text\":\"完工报工\",\"url\":\"/production/report\",\"textEn\":\"Production Reports\"}],\"icon\":\"cluster\",\"id\":262,\"text\":\"生产管理\",\"url\":\"/production\",\"textEn\":\"Production Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/MaterialStock\",\"icon\":\"profile\",\"id\":246,\"text\":\"商品库存\",\"url\":\"/report/material_stock\",\"textEn\":\"Product Inventory\"},{\"component\":\"/bill/OtherInList\",\"icon\":\"profile\",\"id\":201,\"text\":\"其它入库\",\"url\":\"/bill/other_in\",\"textEn\":\"Other Receipts\"},{\"component\":\"/bill/OtherOutList\",\"icon\":\"profile\",\"id\":202,\"text\":\"其它出库\",\"url\":\"/bill/other_out\",\"textEn\":\"Other Shipments\"},{\"component\":\"/bill/HeadquartersInList\",\"icon\":\"profile\",\"id\":270,\"text\":\"总部入库\",\"url\":\"/bill/headquarters_in\",\"textEn\":\"Headquarters Receipts\"}],\"icon\":\"hdd\",\"id\":239,\"text\":\"仓库管理\",\"url\":\"/billD\",\"textEn\":\"Warehouse Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/financial/MoneyInList\",\"icon\":\"profile\",\"id\":204,\"text\":\"收款单\",\"url\":\"/financial/money_in\",\"textEn\":\"Receipt Vouchers\"},{\"component\":\"/financial/MoneyOutList\",\"icon\":\"profile\",\"id\":205,\"text\":\"付款单\",\"url\":\"/financial/money_out\",\"textEn\":\"Payment Vouchers\"}],\"icon\":\"money-collect\",\"id\":44,\"text\":\"财务管理\",\"url\":\"/financial\",\"textEn\":\"Finance Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/asset/AssetDashboard\",\"icon\":\"dashboard\",\"id\":276,\"text\":\"资产汇总\",\"url\":\"/asset\",\"textEn\":\"Asset Overview\"},{\"component\":\"/asset/AssetList\",\"icon\":\"profile\",\"id\":273,\"text\":\"资产台账\",\"url\":\"/asset/ledger\",\"textEn\":\"Asset Ledger\"},{\"component\":\"/asset/DeviceList\",\"icon\":\"tool\",\"id\":274,\"text\":\"设备台账\",\"url\":\"/asset/device\",\"textEn\":\"Device Ledger\"},{\"component\":\"/asset/InventoryList\",\"icon\":\"scan\",\"id\":275,\"text\":\"资产盘点\",\"url\":\"/asset/inventory\",\"textEn\":\"Asset Inventory\"}],\"icon\":\"bank\",\"id\":272,\"text\":\"资产管理\",\"url\":\"/assetManagement\",\"textEn\":\"Asset Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/material/MaterialCategoryList\",\"icon\":\"profile\",\"id\":22,\"text\":\"商品类别\",\"url\":\"/material/material_category\",\"textEn\":\"Product Categories\"},{\"component\":\"/material/MaterialList\",\"icon\":\"profile\",\"id\":23,\"text\":\"商品信息\",\"url\":\"/material/material\",\"textEn\":\"Product Information\"},{\"component\":\"/system/UnitList\",\"icon\":\"profile\",\"id\":220,\"text\":\"多单位\",\"url\":\"/system/unit\",\"textEn\":\"Multiple Units\"},{\"component\":\"/material/MaterialAttributeList\",\"icon\":\"profile\",\"id\":247,\"text\":\"多属性\",\"url\":\"/material/material_attribute\",\"textEn\":\"Product Attributes\"}],\"icon\":\"shopping\",\"id\":21,\"text\":\"商品管理\",\"url\":\"/material\",\"textEn\":\"Product Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/AccountReport\",\"icon\":\"profile\",\"id\":207,\"text\":\"账户统计\",\"url\":\"/report/account_report\",\"textEn\":\"Account Summary\"},{\"component\":\"/report/RetailOutReport\",\"icon\":\"profile\",\"id\":259,\"text\":\"零售统计\",\"url\":\"/report/retail_out_report\",\"textEn\":\"Retail Summary\"},{\"component\":\"/report/BuyInReport\",\"icon\":\"profile\",\"id\":208,\"text\":\"采购统计\",\"url\":\"/report/buy_in_report\",\"textEn\":\"Purchase Summary\"},{\"component\":\"/report/SaleOutReport\",\"icon\":\"profile\",\"id\":209,\"text\":\"销售统计\",\"url\":\"/report/sale_out_report\",\"textEn\":\"Sales Summary\"},{\"component\":\"/report/InDetail\",\"icon\":\"profile\",\"id\":226,\"text\":\"入库明细\",\"url\":\"/report/in_detail\",\"textEn\":\"Inbound Details\"},{\"component\":\"/report/OutDetail\",\"icon\":\"profile\",\"id\":227,\"text\":\"出库明细\",\"url\":\"/report/out_detail\",\"textEn\":\"Outbound Details\"},{\"component\":\"/report/InMaterialCount\",\"icon\":\"profile\",\"id\":228,\"text\":\"入库汇总\",\"url\":\"/report/in_material_count\",\"textEn\":\"Inbound Summary\"},{\"component\":\"/report/OutMaterialCount\",\"icon\":\"profile\",\"id\":229,\"text\":\"出库汇总\",\"url\":\"/report/out_material_count\",\"textEn\":\"Outbound Summary\"},{\"component\":\"/report/InOutStockReport\",\"icon\":\"profile\",\"id\":59,\"text\":\"进销存统计\",\"url\":\"/report/in_out_stock_report\",\"textEn\":\"Inventory Transaction Summary\"},{\"component\":\"/report/CustomerAccount\",\"icon\":\"profile\",\"id\":235,\"text\":\"客户对账\",\"url\":\"/report/customer_account\",\"textEn\":\"Customer Reconciliation\"},{\"component\":\"/report/VendorAccount\",\"icon\":\"profile\",\"id\":237,\"text\":\"供应商对账\",\"url\":\"/report/vendor_account\",\"textEn\":\"Supplier Reconciliation\"},{\"component\":\"/report/StockWarningReport\",\"icon\":\"profile\",\"id\":244,\"text\":\"库存预警\",\"url\":\"/report/stock_warning_report\",\"textEn\":\"Stock Alerts\"}],\"icon\":\"pie-chart\",\"id\":198,\"text\":\"报表查询\",\"url\":\"/report\",\"textEn\":\"Reports\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/VendorList\",\"icon\":\"profile\",\"id\":25,\"text\":\"供应商信息\",\"url\":\"/system/vendor\",\"textEn\":\"Suppliers\"},{\"component\":\"/system/CustomerList\",\"icon\":\"profile\",\"id\":217,\"text\":\"客户信息\",\"url\":\"/system/customer\",\"textEn\":\"Customers\"},{\"component\":\"/system/MemberList\",\"icon\":\"profile\",\"id\":218,\"text\":\"会员信息\",\"url\":\"/system/member\",\"textEn\":\"Members\"},{\"component\":\"/system/CustomerCategoryList\",\"icon\":\"bars\",\"id\":267,\"text\":\"客户分类\",\"url\":\"/system/customerCategory\",\"textEn\":\"Customer Categories\"},{\"component\":\"/system/DepotList\",\"icon\":\"profile\",\"id\":26,\"text\":\"仓库信息\",\"url\":\"/system/depot\",\"textEn\":\"Warehouses\"},{\"component\":\"/system/InOutItemList\",\"icon\":\"profile\",\"id\":194,\"text\":\"收支项目\",\"url\":\"/system/in_out_item\",\"textEn\":\"Income and Expense Items\"},{\"component\":\"/system/AccountList\",\"icon\":\"profile\",\"id\":195,\"text\":\"结算账户\",\"url\":\"/system/account\",\"textEn\":\"Settlement Accounts\"},{\"component\":\"/system/PersonList\",\"icon\":\"profile\",\"id\":31,\"text\":\"操作人员管理\",\"url\":\"/system/person\",\"textEn\":\"Operators\"}],\"icon\":\"appstore\",\"id\":24,\"text\":\"基础资料\",\"url\":\"/systemA\",\"textEn\":\"Master Data\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/RoleList\",\"icon\":\"profile\",\"id\":13,\"text\":\"角色管理\",\"url\":\"/system/role\",\"textEn\":\"Role Management\"},{\"component\":\"/system/UserList\",\"icon\":\"profile\",\"id\":14,\"text\":\"用户管理\",\"url\":\"/system/user\",\"textEn\":\"User Management\"},{\"component\":\"/system/OrganizationList\",\"icon\":\"profile\",\"id\":243,\"text\":\"部门管理\",\"url\":\"/system/organization\",\"textEn\":\"Department Management\"},{\"component\":\"/system/LogList\",\"icon\":\"profile\",\"id\":15,\"text\":\"日志管理\",\"url\":\"/system/log\",\"textEn\":\"Log Management\"},{\"component\":\"/material/MaterialPropertyList\",\"icon\":\"profile\",\"id\":236,\"text\":\"商品属性\",\"url\":\"/material/material_property\",\"textEn\":\"Product Properties\"},{\"component\":\"/system/SystemConfigList\",\"icon\":\"profile\",\"id\":234,\"text\":\"系统配置\",\"url\":\"/system/system_config\",\"textEn\":\"System Configuration\"},{\"component\":\"/system/FunctionList\",\"icon\":\"profile\",\"id\":16,\"text\":\"菜单管理\",\"url\":\"/system/function\",\"textEn\":\"Resource Menus\"},{\"component\":\"/system/PluginList\",\"icon\":\"profile\",\"id\":245,\"text\":\"插件管理\",\"url\":\"/system/plugin\",\"textEn\":\"Plugin Management\"},{\"component\":\"/system/DictList\",\"icon\":\"profile\",\"id\":260,\"text\":\"字典管理\",\"url\":\"/system/dict\",\"textEn\":\"Dictionary Management\"},{\"component\":\"/system/PlatformConfigList\",\"icon\":\"profile\",\"id\":258,\"text\":\"平台配置\",\"url\":\"/system/platform_config\",\"textEn\":\"Platform Configuration\"}],\"icon\":\"setting\",\"id\":1,\"text\":\"系统管理\",\"url\":\"/system\",\"textEn\":\"System Management\"}]'); +INSERT INTO `tbl_log` VALUES (8938, 63, '接口日志', '43.152.142.112/1.9.116.218', '2026-09-30 07:38:24', 0, 'UserController.getUserBtnByCurrentUser(..)', NULL, 'GET /apis/user/getUserBtnByCurrentUser', '{}', '{\"code\":200,\"data\":{\"userBtn\":[{\"btnStr\":\"8,1\",\"url\":\"/system/role\"},{\"btnStr\":\"1\",\"url\":\"/system/user\"},{\"btnStr\":\"1\",\"url\":\"/system/organization\"},{\"btnStr\":\"1\",\"url\":\"/material/material_property\"},{\"btnStr\":\"1\",\"url\":\"/system/system_config\"},{\"btnStr\":\"1\",\"url\":\"/system/function\"},{\"btnStr\":\"1\",\"url\":\"/system/plugin\"},{\"btnStr\":\"1\",\"url\":\"/material/material_category\"},{\"btnStr\":\"1,3\",\"url\":\"/material/material\"},{\"btnStr\":\"1\",\"url\":\"/system/unit\"},{\"btnStr\":\"1\",\"url\":\"/material/material_attribute\"},{\"btnStr\":\"1,3\",\"url\":\"/system/vendor\"},{\"btnStr\":\"1,3\",\"url\":\"/system/customer\"},{\"btnStr\":\"1,3\",\"url\":\"/system/member\"},{\"btnStr\":\"1\",\"url\":\"/system/depot\"},{\"btnStr\":\"1\",\"url\":\"/system/in_out_item\"},{\"btnStr\":\"1\",\"url\":\"/system/account\"},{\"btnStr\":\"1\",\"url\":\"/system/person\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_apply\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_out\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/delivery_plan\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/sale_shipment\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_out\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/order\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/requisition\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/report\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/giro\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/advance_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/allocation_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/assemble\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/headquarters_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/disassemble\"}]}}'); +INSERT INTO `tbl_log` VALUES (8939, 63, '接口日志', '43.174.53.14/1.9.116.218', '2026-09-30 07:38:24', 0, 'MsgController.getList(..)', NULL, 'GET /apis/msg/list', '{\"search\":\"{\\\"name\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (8940, 63, '接口日志', '43.152.142.105/1.9.116.218', '2026-09-30 07:38:24', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-04\",\"inbound\":100669.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (8941, 63, '接口日志', '43.174.32.13/1.9.116.218', '2026-09-30 07:38:24', 0, 'MsgController.getMsgByStatus(..)', NULL, 'GET /apis/msg/getMsgByStatus', '{\"status\":\"1\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (8942, NULL, '接口日志', '43.152.142.43/1.9.116.218', '2026-09-30 07:38:41', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (8943, NULL, '接口日志', '43.152.142.84/1.9.116.218', '2026-09-30 07:38:41', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (8944, 63, '接口日志', '43.152.157.109/1.9.116.218', '2026-09-30 07:38:41', 0, 'FunctionController.findMenuByPNumber(..)', NULL, 'POST /apis/function/findMenuByPNumber', '{\"jsonObject\":{\"userId\":63,\"pNumber\":0}}', '[{\"component\":\"/layouts/TabLayout\",\"icon\":\"home\",\"id\":0,\"text\":\"首页\",\"url\":\"/dashboard/analysis\",\"textEn\":\"Home\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/SaleOrderList\",\"icon\":\"profile\",\"id\":242,\"text\":\"销售订单\",\"url\":\"/bill/sale_order\",\"textEn\":\"Sales Orders\"},{\"component\":\"/bill/SaleOutList\",\"icon\":\"profile\",\"id\":41,\"text\":\"销售出库\",\"url\":\"/bill/sale_out\",\"textEn\":\"Sales Shipments\"},{\"component\":\"/bill/DeliveryPlanList\",\"icon\":\"profile\",\"id\":271,\"text\":\"交货计划管理\",\"url\":\"/bill/delivery_plan\",\"textEn\":\"Delivery Plans\"},{\"component\":\"/bill/SaleShipmentList\",\"icon\":\"car\",\"id\":268,\"text\":\"发货管理\",\"url\":\"/bill/sale_shipment\",\"textEn\":\"Shipment Management\"},{\"component\":\"/bill/SaleBackList\",\"icon\":\"profile\",\"id\":200,\"text\":\"销售退货\",\"url\":\"/bill/sale_back\",\"textEn\":\"Sales Returns\"},{\"component\":\"/bill/RetailOutList\",\"icon\":\"profile\",\"id\":210,\"text\":\"零售出库\",\"url\":\"/bill/retail_out\",\"textEn\":\"Retail Shipments\"},{\"component\":\"/bill/RetailBackList\",\"icon\":\"profile\",\"id\":211,\"text\":\"零售退货\",\"url\":\"/bill/retail_back\",\"textEn\":\"Retail Returns\"}],\"icon\":\"shopping-cart\",\"id\":38,\"text\":\"销售管理\",\"url\":\"/billB\",\"textEn\":\"Sales Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/PurchaseApplyList\",\"icon\":\"profile\",\"id\":261,\"text\":\"请购单\",\"url\":\"/bill/purchase_apply\",\"textEn\":\"Purchase Requisitions\"},{\"component\":\"/bill/PurchaseOrderList\",\"icon\":\"profile\",\"id\":241,\"text\":\"采购订单\",\"url\":\"/bill/purchase_order\",\"textEn\":\"Purchase Orders\"},{\"component\":\"/bill/PurchaseInList\",\"icon\":\"profile\",\"id\":33,\"text\":\"采购入库\",\"url\":\"/bill/purchase_in\",\"textEn\":\"Purchase Receipts\"},{\"component\":\"/bill/PurchaseBackList\",\"icon\":\"profile\",\"id\":199,\"text\":\"采购退货\",\"url\":\"/bill/purchase_back\",\"textEn\":\"Purchase Returns\"}],\"icon\":\"retweet\",\"id\":32,\"text\":\"采购管理\",\"url\":\"/bill\",\"textEn\":\"Purchase Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/production/PackBomList\",\"icon\":\"profile\",\"id\":263,\"text\":\"生产方案\",\"url\":\"/production/pack_bom\",\"textEn\":\"Production BOMs\"},{\"component\":\"/production/OrderList\",\"icon\":\"profile\",\"id\":264,\"text\":\"生产工单\",\"url\":\"/production/order\",\"textEn\":\"Production Orders\"},{\"component\":\"/production/RequisitionList\",\"icon\":\"profile\",\"id\":265,\"text\":\"领料管理\",\"url\":\"/production/requisition\",\"textEn\":\"Material Requisitions\"},{\"component\":\"/production/ReportList\",\"icon\":\"profile\",\"id\":266,\"text\":\"完工报工\",\"url\":\"/production/report\",\"textEn\":\"Production Reports\"}],\"icon\":\"cluster\",\"id\":262,\"text\":\"生产管理\",\"url\":\"/production\",\"textEn\":\"Production Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/MaterialStock\",\"icon\":\"profile\",\"id\":246,\"text\":\"商品库存\",\"url\":\"/report/material_stock\",\"textEn\":\"Product Inventory\"},{\"component\":\"/bill/OtherInList\",\"icon\":\"profile\",\"id\":201,\"text\":\"其它入库\",\"url\":\"/bill/other_in\",\"textEn\":\"Other Receipts\"},{\"component\":\"/bill/OtherOutList\",\"icon\":\"profile\",\"id\":202,\"text\":\"其它出库\",\"url\":\"/bill/other_out\",\"textEn\":\"Other Shipments\"},{\"component\":\"/bill/HeadquartersInList\",\"icon\":\"profile\",\"id\":270,\"text\":\"总部入库\",\"url\":\"/bill/headquarters_in\",\"textEn\":\"Headquarters Receipts\"}],\"icon\":\"hdd\",\"id\":239,\"text\":\"仓库管理\",\"url\":\"/billD\",\"textEn\":\"Warehouse Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/financial/MoneyInList\",\"icon\":\"profile\",\"id\":204,\"text\":\"收款单\",\"url\":\"/financial/money_in\",\"textEn\":\"Receipt Vouchers\"},{\"component\":\"/financial/MoneyOutList\",\"icon\":\"profile\",\"id\":205,\"text\":\"付款单\",\"url\":\"/financial/money_out\",\"textEn\":\"Payment Vouchers\"}],\"icon\":\"money-collect\",\"id\":44,\"text\":\"财务管理\",\"url\":\"/financial\",\"textEn\":\"Finance Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/asset/AssetDashboard\",\"icon\":\"dashboard\",\"id\":276,\"text\":\"资产汇总\",\"url\":\"/asset\",\"textEn\":\"Asset Overview\"},{\"component\":\"/asset/AssetList\",\"icon\":\"profile\",\"id\":273,\"text\":\"资产台账\",\"url\":\"/asset/ledger\",\"textEn\":\"Asset Ledger\"},{\"component\":\"/asset/DeviceList\",\"icon\":\"tool\",\"id\":274,\"text\":\"设备台账\",\"url\":\"/asset/device\",\"textEn\":\"Device Ledger\"},{\"component\":\"/asset/InventoryList\",\"icon\":\"scan\",\"id\":275,\"text\":\"资产盘点\",\"url\":\"/asset/inventory\",\"textEn\":\"Asset Inventory\"}],\"icon\":\"bank\",\"id\":272,\"text\":\"资产管理\",\"url\":\"/assetManagement\",\"textEn\":\"Asset Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/material/MaterialCategoryList\",\"icon\":\"profile\",\"id\":22,\"text\":\"商品类别\",\"url\":\"/material/material_category\",\"textEn\":\"Product Categories\"},{\"component\":\"/material/MaterialList\",\"icon\":\"profile\",\"id\":23,\"text\":\"商品信息\",\"url\":\"/material/material\",\"textEn\":\"Product Information\"},{\"component\":\"/system/UnitList\",\"icon\":\"profile\",\"id\":220,\"text\":\"多单位\",\"url\":\"/system/unit\",\"textEn\":\"Multiple Units\"},{\"component\":\"/material/MaterialAttributeList\",\"icon\":\"profile\",\"id\":247,\"text\":\"多属性\",\"url\":\"/material/material_attribute\",\"textEn\":\"Product Attributes\"}],\"icon\":\"shopping\",\"id\":21,\"text\":\"商品管理\",\"url\":\"/material\",\"textEn\":\"Product Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/AccountReport\",\"icon\":\"profile\",\"id\":207,\"text\":\"账户统计\",\"url\":\"/report/account_report\",\"textEn\":\"Account Summary\"},{\"component\":\"/report/RetailOutReport\",\"icon\":\"profile\",\"id\":259,\"text\":\"零售统计\",\"url\":\"/report/retail_out_report\",\"textEn\":\"Retail Summary\"},{\"component\":\"/report/BuyInReport\",\"icon\":\"profile\",\"id\":208,\"text\":\"采购统计\",\"url\":\"/report/buy_in_report\",\"textEn\":\"Purchase Summary\"},{\"component\":\"/report/SaleOutReport\",\"icon\":\"profile\",\"id\":209,\"text\":\"销售统计\",\"url\":\"/report/sale_out_report\",\"textEn\":\"Sales Summary\"},{\"component\":\"/report/InDetail\",\"icon\":\"profile\",\"id\":226,\"text\":\"入库明细\",\"url\":\"/report/in_detail\",\"textEn\":\"Inbound Details\"},{\"component\":\"/report/OutDetail\",\"icon\":\"profile\",\"id\":227,\"text\":\"出库明细\",\"url\":\"/report/out_detail\",\"textEn\":\"Outbound Details\"},{\"component\":\"/report/InMaterialCount\",\"icon\":\"profile\",\"id\":228,\"text\":\"入库汇总\",\"url\":\"/report/in_material_count\",\"textEn\":\"Inbound Summary\"},{\"component\":\"/report/OutMaterialCount\",\"icon\":\"profile\",\"id\":229,\"text\":\"出库汇总\",\"url\":\"/report/out_material_count\",\"textEn\":\"Outbound Summary\"},{\"component\":\"/report/InOutStockReport\",\"icon\":\"profile\",\"id\":59,\"text\":\"进销存统计\",\"url\":\"/report/in_out_stock_report\",\"textEn\":\"Inventory Transaction Summary\"},{\"component\":\"/report/CustomerAccount\",\"icon\":\"profile\",\"id\":235,\"text\":\"客户对账\",\"url\":\"/report/customer_account\",\"textEn\":\"Customer Reconciliation\"},{\"component\":\"/report/VendorAccount\",\"icon\":\"profile\",\"id\":237,\"text\":\"供应商对账\",\"url\":\"/report/vendor_account\",\"textEn\":\"Supplier Reconciliation\"},{\"component\":\"/report/StockWarningReport\",\"icon\":\"profile\",\"id\":244,\"text\":\"库存预警\",\"url\":\"/report/stock_warning_report\",\"textEn\":\"Stock Alerts\"}],\"icon\":\"pie-chart\",\"id\":198,\"text\":\"报表查询\",\"url\":\"/report\",\"textEn\":\"Reports\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/VendorList\",\"icon\":\"profile\",\"id\":25,\"text\":\"供应商信息\",\"url\":\"/system/vendor\",\"textEn\":\"Suppliers\"},{\"component\":\"/system/CustomerList\",\"icon\":\"profile\",\"id\":217,\"text\":\"客户信息\",\"url\":\"/system/customer\",\"textEn\":\"Customers\"},{\"component\":\"/system/MemberList\",\"icon\":\"profile\",\"id\":218,\"text\":\"会员信息\",\"url\":\"/system/member\",\"textEn\":\"Members\"},{\"component\":\"/system/CustomerCategoryList\",\"icon\":\"bars\",\"id\":267,\"text\":\"客户分类\",\"url\":\"/system/customerCategory\",\"textEn\":\"Customer Categories\"},{\"component\":\"/system/DepotList\",\"icon\":\"profile\",\"id\":26,\"text\":\"仓库信息\",\"url\":\"/system/depot\",\"textEn\":\"Warehouses\"},{\"component\":\"/system/InOutItemList\",\"icon\":\"profile\",\"id\":194,\"text\":\"收支项目\",\"url\":\"/system/in_out_item\",\"textEn\":\"Income and Expense Items\"},{\"component\":\"/system/AccountList\",\"icon\":\"profile\",\"id\":195,\"text\":\"结算账户\",\"url\":\"/system/account\",\"textEn\":\"Settlement Accounts\"},{\"component\":\"/system/PersonList\",\"icon\":\"profile\",\"id\":31,\"text\":\"操作人员管理\",\"url\":\"/system/person\",\"textEn\":\"Operators\"}],\"icon\":\"appstore\",\"id\":24,\"text\":\"基础资料\",\"url\":\"/systemA\",\"textEn\":\"Master Data\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/RoleList\",\"icon\":\"profile\",\"id\":13,\"text\":\"角色管理\",\"url\":\"/system/role\",\"textEn\":\"Role Management\"},{\"component\":\"/system/UserList\",\"icon\":\"profile\",\"id\":14,\"text\":\"用户管理\",\"url\":\"/system/user\",\"textEn\":\"User Management\"},{\"component\":\"/system/OrganizationList\",\"icon\":\"profile\",\"id\":243,\"text\":\"部门管理\",\"url\":\"/system/organization\",\"textEn\":\"Department Management\"},{\"component\":\"/system/LogList\",\"icon\":\"profile\",\"id\":15,\"text\":\"日志管理\",\"url\":\"/system/log\",\"textEn\":\"Log Management\"},{\"component\":\"/material/MaterialPropertyList\",\"icon\":\"profile\",\"id\":236,\"text\":\"商品属性\",\"url\":\"/material/material_property\",\"textEn\":\"Product Properties\"},{\"component\":\"/system/SystemConfigList\",\"icon\":\"profile\",\"id\":234,\"text\":\"系统配置\",\"url\":\"/system/system_config\",\"textEn\":\"System Configuration\"},{\"component\":\"/system/FunctionList\",\"icon\":\"profile\",\"id\":16,\"text\":\"菜单管理\",\"url\":\"/system/function\",\"textEn\":\"Resource Menus\"},{\"component\":\"/system/PluginList\",\"icon\":\"profile\",\"id\":245,\"text\":\"插件管理\",\"url\":\"/system/plugin\",\"textEn\":\"Plugin Management\"},{\"component\":\"/system/DictList\",\"icon\":\"profile\",\"id\":260,\"text\":\"字典管理\",\"url\":\"/system/dict\",\"textEn\":\"Dictionary Management\"},{\"component\":\"/system/PlatformConfigList\",\"icon\":\"profile\",\"id\":258,\"text\":\"平台配置\",\"url\":\"/system/platform_config\",\"textEn\":\"Platform Configuration\"}],\"icon\":\"setting\",\"id\":1,\"text\":\"系统管理\",\"url\":\"/system\",\"textEn\":\"System Management\"}]'); +INSERT INTO `tbl_log` VALUES (8945, 63, '接口日志', '43.152.142.34/1.9.116.218', '2026-09-30 07:38:42', 0, 'UserController.getUserBtnByCurrentUser(..)', NULL, 'GET /apis/user/getUserBtnByCurrentUser', '{}', '{\"code\":200,\"data\":{\"userBtn\":[{\"btnStr\":\"8,1\",\"url\":\"/system/role\"},{\"btnStr\":\"1\",\"url\":\"/system/user\"},{\"btnStr\":\"1\",\"url\":\"/system/organization\"},{\"btnStr\":\"1\",\"url\":\"/material/material_property\"},{\"btnStr\":\"1\",\"url\":\"/system/system_config\"},{\"btnStr\":\"1\",\"url\":\"/system/function\"},{\"btnStr\":\"1\",\"url\":\"/system/plugin\"},{\"btnStr\":\"1\",\"url\":\"/material/material_category\"},{\"btnStr\":\"1,3\",\"url\":\"/material/material\"},{\"btnStr\":\"1\",\"url\":\"/system/unit\"},{\"btnStr\":\"1\",\"url\":\"/material/material_attribute\"},{\"btnStr\":\"1,3\",\"url\":\"/system/vendor\"},{\"btnStr\":\"1,3\",\"url\":\"/system/customer\"},{\"btnStr\":\"1,3\",\"url\":\"/system/member\"},{\"btnStr\":\"1\",\"url\":\"/system/depot\"},{\"btnStr\":\"1\",\"url\":\"/system/in_out_item\"},{\"btnStr\":\"1\",\"url\":\"/system/account\"},{\"btnStr\":\"1\",\"url\":\"/system/person\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_apply\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_out\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/delivery_plan\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/sale_shipment\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_out\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/order\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/requisition\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/report\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/giro\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/advance_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/allocation_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/assemble\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/headquarters_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/disassemble\"}]}}'); +INSERT INTO `tbl_log` VALUES (8946, 63, '接口日志', '43.152.142.109/1.9.116.218', '2026-09-30 07:38:42', 0, 'MsgController.getList(..)', NULL, 'GET /apis/msg/list', '{\"search\":\"{\\\"name\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (8947, 63, '接口日志', '43.152.142.139/1.9.116.218', '2026-09-30 07:38:42', 0, 'MsgController.getMsgByStatus(..)', NULL, 'GET /apis/msg/getMsgByStatus', '{\"status\":\"1\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (8948, 63, '接口日志', '43.174.54.14/1.9.116.218', '2026-09-30 07:38:42', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-04\",\"inbound\":100669.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (8949, 63, '接口日志', '43.174.54.44/1.9.116.218', '2026-09-30 07:38:49', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (8950, 63, '接口日志', '43.152.142.64/1.9.116.218', '2026-09-30 07:38:49', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8951, 63, '接口日志', '43.152.142.141/1.9.116.218', '2026-09-30 07:38:49', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"}]'); +INSERT INTO `tbl_log` VALUES (8952, 63, '接口日志', '43.152.157.109/1.9.116.218', '2026-09-30 07:38:49', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (8953, 63, '接口日志', '43.174.53.30/1.9.116.218', '2026-09-30 07:38:49', 0, 'PersonController.getPersonByNumType(..)', NULL, 'GET /apis/person/getPersonByNumType', '{\"typeNum\":\"1\"}', '[]'); +INSERT INTO `tbl_log` VALUES (8954, 63, '接口日志', '43.174.52.31/1.9.116.218', '2026-09-30 07:38:49', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"出库\\\",\\\"subType\\\":\\\"销售\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-30\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"createTimeRange\\\":[\\\"2026-06-29T16:00:00.000Z\\\",\\\"2026-09-29T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":50,\"rows\":[{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789718584000,\"creator\":63,\"debt\":808500.000000,\"defaultNumber\":\"XSCK00000001728\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":808500.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1720,\"lastDebt\":808500.000000,\"lastDeposit\":0.000000,\"linkNumber\":\"XSDD00000001726\",\"materialCount\":10000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK00000001728\",\"operTime\":1789732981000,\"operTimeStr\":\"2026-09-18 16:03:01\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"totalPrice\":735000.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1786305600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-87\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1671,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303506-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-87\",\"operTime\":1786305600000,\"operTimeStr\":\"2026-08-10 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1786305600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2159-86\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1670,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303506-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2159-86\",\"operTime\":1786305600000,\"operTimeStr\":\"2026-08-10 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2159\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785873600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-DO_2158-85\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1669,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-DO_2158-85\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:DO_2158\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785873600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-84\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1668,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-84\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785873600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-DO_2157-83\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1667,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-DO_2157-83\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:DO_2157\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785268800000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2150-69\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1665,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303480-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2150-69\",\"operTime\":1785268800000,\"operTimeStr\":\"2026-07-29 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2150\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784750400000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2142-68\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1664,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303480-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2142-68\",\"operTime\":1784750400000,\"operTimeStr\":\"2026-07-23 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2142\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784145600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-67\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1663,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-67\",\"operTime\":1784145600000,\"operTimeStr\":\"2026-07-16 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784145600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2134-66\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1662,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2134-66\",\"operTime\":1784145600000,\"operTimeStr\":\"2026-07-16 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2134\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (8955, 63, '接口日志', '43.174.53.17/1.9.116.218', '2026-09-30 07:38:49', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (8956, 63, '接口日志', '43.174.32.23/1.9.116.218', '2026-09-30 07:38:49', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8957, 63, '接口日志', '43.152.142.57/1.9.116.218', '2026-09-30 07:38:49', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8958, 63, '接口日志', '43.152.142.32/1.9.116.218', '2026-09-30 07:38:54', 0, 'SaleShipmentController.getList(..)', NULL, 'GET /apis/saleShipment/list', '{\"search\":\"{\\\"shipmentNumber\\\":\\\"\\\",\\\"saleOutNumber\\\":\\\"\\\",\\\"saleOrderNumber\\\":\\\"\\\",\\\"logisticsNo\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"actualQuantity\":10000.000000,\"approveBy\":63,\"approveByName\":\"admin\",\"approveRemark\":\"审批通过\",\"approveTime\":1789720647000,\"confirmBy\":63,\"confirmByName\":\"admin\",\"confirmTime\":1789720682000,\"createTime\":1789720588000,\"creator\":63,\"creatorName\":\"admin\",\"customerId\":90,\"customerName\":\"TNB\",\"deleteFlag\":\"0\",\"deliveryPlanId\":7,\"deliveryPlanNumber\":\"JH00000001741\",\"differenceQuantity\":0.000000,\"id\":17,\"materialsList\":\"1PH WS79\",\"planQuantity\":10000.000000,\"plannedShipTime\":1789734921000,\"saleOrderNumber\":\"XSDD00000001726\",\"saleOutId\":1720,\"saleOutNumber\":\"XSCK00000001728\",\"shipBy\":63,\"shipByName\":\"admin\",\"shipTime\":1789720682000,\"shipmentNumber\":\"FHTZ00000001742\",\"sourceType\":\"sale\",\"status\":\"2\"},{\"actualQuantity\":149.000000,\"approveBy\":63,\"approveByName\":\"admin\",\"approveRemark\":\"审批通过\",\"approveTime\":1789717350000,\"confirmBy\":63,\"confirmByName\":\"admin\",\"confirmTime\":1789717357000,\"createTime\":1789717342000,\"creator\":63,\"creatorName\":\"admin\",\"customerId\":90,\"customerName\":\"TNB\",\"deleteFlag\":\"0\",\"deliveryPlanId\":6,\"deliveryPlanNumber\":\"JH00000001717\",\"differenceQuantity\":0.000000,\"id\":16,\"logisticsCompany\":\"FEXD\",\"logisticsNo\":\"FD10000001\",\"materialsList\":\"3PH APEC3-WC\",\"planQuantity\":149.000000,\"plannedShipTime\":1789717304000,\"receiver\":\"Hank\",\"receiverAddress\":\"5433 Grand Ave\",\"receiverPhone\":\"60001-1111\",\"saleOrderNumber\":\"XSDD-42260529-3PH-APEC3-WC-OV\",\"saleOutId\":1714,\"saleOutNumber\":\"XSCK-3PH-APEC3-WC-OV-28\",\"shipBy\":63,\"shipByName\":\"admin\",\"shipTime\":1789717357000,\"shipmentNumber\":\"FHTZ00000001718\",\"sourceType\":\"sale\",\"status\":\"2\"}]}}'); +INSERT INTO `tbl_log` VALUES (8959, NULL, '接口日志', '43.174.32.18/1.9.116.218', '2026-09-30 07:39:04', 0, 'UserController.logout(..)', NULL, 'GET /apis/user/logout', '{}', '{\"code\":400}'); +INSERT INTO `tbl_log` VALUES (8960, NULL, '接口日志', '43.174.32.34/1.9.116.218', '2026-09-30 07:39:04', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (8961, NULL, '接口日志', '43.152.142.32/1.9.116.218', '2026-09-30 07:39:04', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (8962, NULL, '接口日志', '43.152.142.64/1.9.116.218', '2026-09-30 07:39:05', 0, 'UserController.randomImage(..)', NULL, 'GET /apis/user/randomImage', '{}', '{\"code\":200,\"data\":{\"base64\":\"data:image/jpg;base64,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\",\"uuid\":\"c18f49cc373d47e5984327891e384b94\"}}'); +INSERT INTO `tbl_log` VALUES (8963, NULL, '接口日志', '43.152.142.84/1.9.116.218', '2026-09-30 07:39:05', 0, 'PlatformConfigController.getPlatformCheckcodeFlag(..)', NULL, 'GET /apis/platformConfig/getPlatform/checkcodeFlag', '{}', '\"1\"'); +INSERT INTO `tbl_log` VALUES (8964, NULL, '接口日志', '43.152.157.109/1.9.116.218', '2026-09-30 07:39:19', 0, 'UserController.login(..)', NULL, 'POST /apis/user/login', '{\"userParam\":{\"code\":\"kyg7\",\"loginName\":\"admin\",\"password\":\"******\",\"uuid\":\"c18f49cc373d47e5984327891e384b94\"}}', '{\"code\":200,\"data\":{\"msgTip\":\"user password error\"}}'); +INSERT INTO `tbl_log` VALUES (8965, NULL, '接口日志', '43.174.32.23/1.9.116.218', '2026-09-30 07:39:19', 0, 'UserController.randomImage(..)', NULL, 'GET /apis/user/randomImage', '{}', '{\"code\":200,\"data\":{\"base64\":\"data:image/jpg;base64,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\",\"uuid\":\"6420c7a5d1f44c5f86df9422f39dcd31\"}}'); +INSERT INTO `tbl_log` VALUES (8966, 63, '用户', '43.152.157.109/1.9.116.218', '2026-09-30 07:39:30', 0, '登录admin', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (8967, NULL, '接口日志', '43.152.157.109/1.9.116.218', '2026-09-30 07:39:30', 0, 'UserController.login(..)', NULL, 'POST /apis/user/login', '{\"userParam\":{\"code\":\"jn6j\",\"loginName\":\"admin\",\"password\":\"******\",\"uuid\":\"6420c7a5d1f44c5f86df9422f39dcd31\"}}', '{\"code\":200,\"data\":{\"pwdSimple\":\"******\",\"user\":{\"deleteFlag\":\"0\",\"description\":\"\",\"email\":\"666666@qq.com\",\"id\":63,\"ismanager\":1,\"isystem\":1,\"leaderFlag\":\"0\",\"loginName\":\"admin\",\"password\":\"******\",\"phonenum\":\"1123123123132\",\"position\":\"主管\",\"status\":0,\"tenantId\":63,\"username\":\"admin\"},\"msgTip\":\"user can login\",\"token\":\"******\"}}'); +INSERT INTO `tbl_log` VALUES (8968, 63, '接口日志', '43.152.157.109/1.9.116.218', '2026-09-30 07:39:30', 0, 'FunctionController.findMenuByPNumber(..)', NULL, 'POST /apis/function/findMenuByPNumber', '{\"jsonObject\":{\"userId\":63,\"pNumber\":0}}', '[{\"component\":\"/layouts/TabLayout\",\"icon\":\"home\",\"id\":0,\"text\":\"首页\",\"url\":\"/dashboard/analysis\",\"textEn\":\"Home\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/SaleOrderList\",\"icon\":\"profile\",\"id\":242,\"text\":\"销售订单\",\"url\":\"/bill/sale_order\",\"textEn\":\"Sales Orders\"},{\"component\":\"/bill/SaleOutList\",\"icon\":\"profile\",\"id\":41,\"text\":\"销售出库\",\"url\":\"/bill/sale_out\",\"textEn\":\"Sales Shipments\"},{\"component\":\"/bill/DeliveryPlanList\",\"icon\":\"profile\",\"id\":271,\"text\":\"交货计划管理\",\"url\":\"/bill/delivery_plan\",\"textEn\":\"Delivery Plans\"},{\"component\":\"/bill/SaleShipmentList\",\"icon\":\"car\",\"id\":268,\"text\":\"发货管理\",\"url\":\"/bill/sale_shipment\",\"textEn\":\"Shipment Management\"},{\"component\":\"/bill/SaleBackList\",\"icon\":\"profile\",\"id\":200,\"text\":\"销售退货\",\"url\":\"/bill/sale_back\",\"textEn\":\"Sales Returns\"},{\"component\":\"/bill/RetailOutList\",\"icon\":\"profile\",\"id\":210,\"text\":\"零售出库\",\"url\":\"/bill/retail_out\",\"textEn\":\"Retail Shipments\"},{\"component\":\"/bill/RetailBackList\",\"icon\":\"profile\",\"id\":211,\"text\":\"零售退货\",\"url\":\"/bill/retail_back\",\"textEn\":\"Retail Returns\"}],\"icon\":\"shopping-cart\",\"id\":38,\"text\":\"销售管理\",\"url\":\"/billB\",\"textEn\":\"Sales Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/PurchaseApplyList\",\"icon\":\"profile\",\"id\":261,\"text\":\"请购单\",\"url\":\"/bill/purchase_apply\",\"textEn\":\"Purchase Requisitions\"},{\"component\":\"/bill/PurchaseOrderList\",\"icon\":\"profile\",\"id\":241,\"text\":\"采购订单\",\"url\":\"/bill/purchase_order\",\"textEn\":\"Purchase Orders\"},{\"component\":\"/bill/PurchaseInList\",\"icon\":\"profile\",\"id\":33,\"text\":\"采购入库\",\"url\":\"/bill/purchase_in\",\"textEn\":\"Purchase Receipts\"},{\"component\":\"/bill/PurchaseBackList\",\"icon\":\"profile\",\"id\":199,\"text\":\"采购退货\",\"url\":\"/bill/purchase_back\",\"textEn\":\"Purchase Returns\"}],\"icon\":\"retweet\",\"id\":32,\"text\":\"采购管理\",\"url\":\"/bill\",\"textEn\":\"Purchase Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/production/PackBomList\",\"icon\":\"profile\",\"id\":263,\"text\":\"生产方案\",\"url\":\"/production/pack_bom\",\"textEn\":\"Production BOMs\"},{\"component\":\"/production/OrderList\",\"icon\":\"profile\",\"id\":264,\"text\":\"生产工单\",\"url\":\"/production/order\",\"textEn\":\"Production Orders\"},{\"component\":\"/production/RequisitionList\",\"icon\":\"profile\",\"id\":265,\"text\":\"领料管理\",\"url\":\"/production/requisition\",\"textEn\":\"Material Requisitions\"},{\"component\":\"/production/ReportList\",\"icon\":\"profile\",\"id\":266,\"text\":\"完工报工\",\"url\":\"/production/report\",\"textEn\":\"Production Reports\"}],\"icon\":\"cluster\",\"id\":262,\"text\":\"生产管理\",\"url\":\"/production\",\"textEn\":\"Production Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/MaterialStock\",\"icon\":\"profile\",\"id\":246,\"text\":\"商品库存\",\"url\":\"/report/material_stock\",\"textEn\":\"Product Inventory\"},{\"component\":\"/bill/OtherInList\",\"icon\":\"profile\",\"id\":201,\"text\":\"其它入库\",\"url\":\"/bill/other_in\",\"textEn\":\"Other Receipts\"},{\"component\":\"/bill/OtherOutList\",\"icon\":\"profile\",\"id\":202,\"text\":\"其它出库\",\"url\":\"/bill/other_out\",\"textEn\":\"Other Shipments\"},{\"component\":\"/bill/HeadquartersInList\",\"icon\":\"profile\",\"id\":270,\"text\":\"总部入库\",\"url\":\"/bill/headquarters_in\",\"textEn\":\"Headquarters Receipts\"}],\"icon\":\"hdd\",\"id\":239,\"text\":\"仓库管理\",\"url\":\"/billD\",\"textEn\":\"Warehouse Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/financial/MoneyInList\",\"icon\":\"profile\",\"id\":204,\"text\":\"收款单\",\"url\":\"/financial/money_in\",\"textEn\":\"Receipt Vouchers\"},{\"component\":\"/financial/MoneyOutList\",\"icon\":\"profile\",\"id\":205,\"text\":\"付款单\",\"url\":\"/financial/money_out\",\"textEn\":\"Payment Vouchers\"}],\"icon\":\"money-collect\",\"id\":44,\"text\":\"财务管理\",\"url\":\"/financial\",\"textEn\":\"Finance Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/asset/AssetDashboard\",\"icon\":\"dashboard\",\"id\":276,\"text\":\"资产汇总\",\"url\":\"/asset\",\"textEn\":\"Asset Overview\"},{\"component\":\"/asset/AssetList\",\"icon\":\"profile\",\"id\":273,\"text\":\"资产台账\",\"url\":\"/asset/ledger\",\"textEn\":\"Asset Ledger\"},{\"component\":\"/asset/DeviceList\",\"icon\":\"tool\",\"id\":274,\"text\":\"设备台账\",\"url\":\"/asset/device\",\"textEn\":\"Device Ledger\"},{\"component\":\"/asset/InventoryList\",\"icon\":\"scan\",\"id\":275,\"text\":\"资产盘点\",\"url\":\"/asset/inventory\",\"textEn\":\"Asset Inventory\"}],\"icon\":\"bank\",\"id\":272,\"text\":\"资产管理\",\"url\":\"/assetManagement\",\"textEn\":\"Asset Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/material/MaterialCategoryList\",\"icon\":\"profile\",\"id\":22,\"text\":\"商品类别\",\"url\":\"/material/material_category\",\"textEn\":\"Product Categories\"},{\"component\":\"/material/MaterialList\",\"icon\":\"profile\",\"id\":23,\"text\":\"商品信息\",\"url\":\"/material/material\",\"textEn\":\"Product Information\"},{\"component\":\"/system/UnitList\",\"icon\":\"profile\",\"id\":220,\"text\":\"多单位\",\"url\":\"/system/unit\",\"textEn\":\"Multiple Units\"},{\"component\":\"/material/MaterialAttributeList\",\"icon\":\"profile\",\"id\":247,\"text\":\"多属性\",\"url\":\"/material/material_attribute\",\"textEn\":\"Product Attributes\"}],\"icon\":\"shopping\",\"id\":21,\"text\":\"商品管理\",\"url\":\"/material\",\"textEn\":\"Product Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/AccountReport\",\"icon\":\"profile\",\"id\":207,\"text\":\"账户统计\",\"url\":\"/report/account_report\",\"textEn\":\"Account Summary\"},{\"component\":\"/report/RetailOutReport\",\"icon\":\"profile\",\"id\":259,\"text\":\"零售统计\",\"url\":\"/report/retail_out_report\",\"textEn\":\"Retail Summary\"},{\"component\":\"/report/BuyInReport\",\"icon\":\"profile\",\"id\":208,\"text\":\"采购统计\",\"url\":\"/report/buy_in_report\",\"textEn\":\"Purchase Summary\"},{\"component\":\"/report/SaleOutReport\",\"icon\":\"profile\",\"id\":209,\"text\":\"销售统计\",\"url\":\"/report/sale_out_report\",\"textEn\":\"Sales Summary\"},{\"component\":\"/report/InDetail\",\"icon\":\"profile\",\"id\":226,\"text\":\"入库明细\",\"url\":\"/report/in_detail\",\"textEn\":\"Inbound Details\"},{\"component\":\"/report/OutDetail\",\"icon\":\"profile\",\"id\":227,\"text\":\"出库明细\",\"url\":\"/report/out_detail\",\"textEn\":\"Outbound Details\"},{\"component\":\"/report/InMaterialCount\",\"icon\":\"profile\",\"id\":228,\"text\":\"入库汇总\",\"url\":\"/report/in_material_count\",\"textEn\":\"Inbound Summary\"},{\"component\":\"/report/OutMaterialCount\",\"icon\":\"profile\",\"id\":229,\"text\":\"出库汇总\",\"url\":\"/report/out_material_count\",\"textEn\":\"Outbound Summary\"},{\"component\":\"/report/InOutStockReport\",\"icon\":\"profile\",\"id\":59,\"text\":\"进销存统计\",\"url\":\"/report/in_out_stock_report\",\"textEn\":\"Inventory Transaction Summary\"},{\"component\":\"/report/CustomerAccount\",\"icon\":\"profile\",\"id\":235,\"text\":\"客户对账\",\"url\":\"/report/customer_account\",\"textEn\":\"Customer Reconciliation\"},{\"component\":\"/report/VendorAccount\",\"icon\":\"profile\",\"id\":237,\"text\":\"供应商对账\",\"url\":\"/report/vendor_account\",\"textEn\":\"Supplier Reconciliation\"},{\"component\":\"/report/StockWarningReport\",\"icon\":\"profile\",\"id\":244,\"text\":\"库存预警\",\"url\":\"/report/stock_warning_report\",\"textEn\":\"Stock Alerts\"}],\"icon\":\"pie-chart\",\"id\":198,\"text\":\"报表查询\",\"url\":\"/report\",\"textEn\":\"Reports\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/VendorList\",\"icon\":\"profile\",\"id\":25,\"text\":\"供应商信息\",\"url\":\"/system/vendor\",\"textEn\":\"Suppliers\"},{\"component\":\"/system/CustomerList\",\"icon\":\"profile\",\"id\":217,\"text\":\"客户信息\",\"url\":\"/system/customer\",\"textEn\":\"Customers\"},{\"component\":\"/system/MemberList\",\"icon\":\"profile\",\"id\":218,\"text\":\"会员信息\",\"url\":\"/system/member\",\"textEn\":\"Members\"},{\"component\":\"/system/CustomerCategoryList\",\"icon\":\"bars\",\"id\":267,\"text\":\"客户分类\",\"url\":\"/system/customerCategory\",\"textEn\":\"Customer Categories\"},{\"component\":\"/system/DepotList\",\"icon\":\"profile\",\"id\":26,\"text\":\"仓库信息\",\"url\":\"/system/depot\",\"textEn\":\"Warehouses\"},{\"component\":\"/system/InOutItemList\",\"icon\":\"profile\",\"id\":194,\"text\":\"收支项目\",\"url\":\"/system/in_out_item\",\"textEn\":\"Income and Expense Items\"},{\"component\":\"/system/AccountList\",\"icon\":\"profile\",\"id\":195,\"text\":\"结算账户\",\"url\":\"/system/account\",\"textEn\":\"Settlement Accounts\"},{\"component\":\"/system/PersonList\",\"icon\":\"profile\",\"id\":31,\"text\":\"操作人员管理\",\"url\":\"/system/person\",\"textEn\":\"Operators\"}],\"icon\":\"appstore\",\"id\":24,\"text\":\"基础资料\",\"url\":\"/systemA\",\"textEn\":\"Master Data\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/RoleList\",\"icon\":\"profile\",\"id\":13,\"text\":\"角色管理\",\"url\":\"/system/role\",\"textEn\":\"Role Management\"},{\"component\":\"/system/UserList\",\"icon\":\"profile\",\"id\":14,\"text\":\"用户管理\",\"url\":\"/system/user\",\"textEn\":\"User Management\"},{\"component\":\"/system/OrganizationList\",\"icon\":\"profile\",\"id\":243,\"text\":\"部门管理\",\"url\":\"/system/organization\",\"textEn\":\"Department Management\"},{\"component\":\"/system/LogList\",\"icon\":\"profile\",\"id\":15,\"text\":\"日志管理\",\"url\":\"/system/log\",\"textEn\":\"Log Management\"},{\"component\":\"/material/MaterialPropertyList\",\"icon\":\"profile\",\"id\":236,\"text\":\"商品属性\",\"url\":\"/material/material_property\",\"textEn\":\"Product Properties\"},{\"component\":\"/system/SystemConfigList\",\"icon\":\"profile\",\"id\":234,\"text\":\"系统配置\",\"url\":\"/system/system_config\",\"textEn\":\"System Configuration\"},{\"component\":\"/system/FunctionList\",\"icon\":\"profile\",\"id\":16,\"text\":\"菜单管理\",\"url\":\"/system/function\",\"textEn\":\"Resource Menus\"},{\"component\":\"/system/PluginList\",\"icon\":\"profile\",\"id\":245,\"text\":\"插件管理\",\"url\":\"/system/plugin\",\"textEn\":\"Plugin Management\"},{\"component\":\"/system/DictList\",\"icon\":\"profile\",\"id\":260,\"text\":\"字典管理\",\"url\":\"/system/dict\",\"textEn\":\"Dictionary Management\"},{\"component\":\"/system/PlatformConfigList\",\"icon\":\"profile\",\"id\":258,\"text\":\"平台配置\",\"url\":\"/system/platform_config\",\"textEn\":\"Platform Configuration\"}],\"icon\":\"setting\",\"id\":1,\"text\":\"系统管理\",\"url\":\"/system\",\"textEn\":\"System Management\"}]'); +INSERT INTO `tbl_log` VALUES (8969, 63, '接口日志', '43.174.53.14/1.9.116.218', '2026-09-30 07:39:30', 0, 'MaterialPropertyController.getAllList(..)', NULL, 'GET /apis/materialProperty/getAllList', '{}', '{\"code\":200,\"data\":[{\"anotherName\":\"扩展1\",\"id\":1,\"nativeName\":\"扩展1\"},{\"anotherName\":\"扩展2\",\"id\":2,\"nativeName\":\"扩展2\"},{\"anotherName\":\"扩展3\",\"id\":3,\"nativeName\":\"扩展3\"}]}'); +INSERT INTO `tbl_log` VALUES (8970, 63, '接口日志', '43.152.142.128/1.9.116.218', '2026-09-30 07:39:30', 0, 'UserController.getUserBtnByCurrentUser(..)', NULL, 'GET /apis/user/getUserBtnByCurrentUser', '{}', '{\"code\":200,\"data\":{\"userBtn\":[{\"btnStr\":\"8,1\",\"url\":\"/system/role\"},{\"btnStr\":\"1\",\"url\":\"/system/user\"},{\"btnStr\":\"1\",\"url\":\"/system/organization\"},{\"btnStr\":\"1\",\"url\":\"/material/material_property\"},{\"btnStr\":\"1\",\"url\":\"/system/system_config\"},{\"btnStr\":\"1\",\"url\":\"/system/function\"},{\"btnStr\":\"1\",\"url\":\"/system/plugin\"},{\"btnStr\":\"1\",\"url\":\"/material/material_category\"},{\"btnStr\":\"1,3\",\"url\":\"/material/material\"},{\"btnStr\":\"1\",\"url\":\"/system/unit\"},{\"btnStr\":\"1\",\"url\":\"/material/material_attribute\"},{\"btnStr\":\"1,3\",\"url\":\"/system/vendor\"},{\"btnStr\":\"1,3\",\"url\":\"/system/customer\"},{\"btnStr\":\"1,3\",\"url\":\"/system/member\"},{\"btnStr\":\"1\",\"url\":\"/system/depot\"},{\"btnStr\":\"1\",\"url\":\"/system/in_out_item\"},{\"btnStr\":\"1\",\"url\":\"/system/account\"},{\"btnStr\":\"1\",\"url\":\"/system/person\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_apply\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_out\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/delivery_plan\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/sale_shipment\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_out\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/order\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/requisition\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/report\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/giro\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/advance_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/allocation_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/assemble\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/headquarters_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/disassemble\"}]}}'); +INSERT INTO `tbl_log` VALUES (8971, 63, '接口日志', '43.152.142.34/1.9.116.218', '2026-09-30 07:39:30', 0, 'MsgController.getList(..)', NULL, 'GET /apis/msg/list', '{\"search\":\"{\\\"name\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (8972, 63, '接口日志', '43.152.142.139/1.9.116.218', '2026-09-30 07:39:30', 0, 'MsgController.getMsgByStatus(..)', NULL, 'GET /apis/msg/getMsgByStatus', '{\"status\":\"1\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (8973, 63, '接口日志', '43.152.142.109/1.9.116.218', '2026-09-30 07:39:30', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-04\",\"inbound\":100669.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (8974, 63, '接口日志', '43.152.157.109/1.9.116.218', '2026-09-30 07:40:13', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (8975, 63, '接口日志', '43.152.142.105/1.9.116.218', '2026-09-30 07:40:13', 0, 'PersonController.getPersonByNumType(..)', NULL, 'GET /apis/person/getPersonByNumType', '{\"typeNum\":\"1\"}', '[]'); +INSERT INTO `tbl_log` VALUES (8976, 63, '接口日志', '43.152.142.57/1.9.116.218', '2026-09-30 07:40:13', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (8977, 63, '接口日志', '43.174.32.18/1.9.116.218', '2026-09-30 07:40:13', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8978, 63, '接口日志', '43.174.53.30/1.9.116.218', '2026-09-30 07:40:13', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8979, 63, '接口日志', '43.152.142.112/1.9.116.218', '2026-09-30 07:40:13', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (8980, 63, '接口日志', '43.174.53.17/1.9.116.218', '2026-09-30 07:40:13', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"}]'); +INSERT INTO `tbl_log` VALUES (8981, 63, '接口日志', '43.152.142.29/1.9.116.218', '2026-09-30 07:40:13', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8982, 63, '接口日志', '43.152.142.141/1.9.116.218', '2026-09-30 07:40:13', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"其它\\\",\\\"subType\\\":\\\"销售订单\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-30\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"createTimeRange\\\":[\\\"2026-06-29T16:00:00.000Z\\\",\\\"2026-09-29T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":5,\"rows\":[{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789718483000,\"creator\":63,\"debt\":808500.000000,\"defaultNumber\":\"XSDD00000001726\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":808500.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1719,\"lastDebt\":808500.000000,\"lastDeposit\":0.000000,\"materialCount\":10000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD00000001726\",\"operTime\":1789732682000,\"operTimeStr\":\"2026-09-18 15:58:02\",\"organId\":90,\"organName\":\"TNB\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"totalPrice\":735000.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789726236000,\"creator\":63,\"debt\":340000000.000000,\"defaultNumber\":\"XSDD00000001724\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":340000000.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1718,\"lastDebt\":340000000.000000,\"lastDeposit\":0.000000,\"materialCount\":1000000.000000,\"materialsList\":\"3PH APEC3-WC 3PH APEC3-WC 3PH APEC3-WC \",\"number\":\"XSDD00000001724\",\"operTime\":1789725706000,\"operTimeStr\":\"2026-09-18 14:01:46\",\"organId\":90,\"organName\":\"TNB\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"0\",\"subType\":\"销售订单\",\"totalPrice\":340000000.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1785355200000,\"creator\":63,\"debt\":242550.000000,\"defaultNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":242550.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1580,\"lastDebt\":242550.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":3000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303475-1PH-WS79-ADD1\",\"operTime\":1785355200000,\"operTimeStr\":\"2026-07-30 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303475\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":242550.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1785355200000,\"creator\":63,\"debt\":323400.000000,\"defaultNumber\":\"XSDD-42303447-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":323400.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1574,\"lastDebt\":323400.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":4000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303447-1PH-WS79-ADD1\",\"operTime\":1785355200000,\"operTimeStr\":\"2026-07-30 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303447\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":323400.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1782936000000,\"creator\":63,\"debt\":323400.000000,\"defaultNumber\":\"XSDD-42303429-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":323400.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1569,\"lastDebt\":323400.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":4000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303429-1PH-WS79-ADD1\",\"operTime\":1782936000000,\"operTimeStr\":\"2026-07-02 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303429\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":323400.000000,\"type\":\"其它\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (8983, 63, '接口日志', '43.152.157.109/1.9.116.218', '2026-09-30 07:40:14', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (8984, 63, '接口日志', '43.152.142.105/1.9.116.218', '2026-09-30 07:40:14', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8985, 63, '接口日志', '43.152.142.141/1.9.116.218', '2026-09-30 07:40:14', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (8986, 63, '接口日志', '43.152.142.34/1.9.116.218', '2026-09-30 07:40:14', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8987, 63, '接口日志', '43.152.142.139/1.9.116.218', '2026-09-30 07:40:14', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (8988, 63, '接口日志', '43.174.32.18/1.9.116.218', '2026-09-30 07:40:14', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"}]'); +INSERT INTO `tbl_log` VALUES (8989, 63, '接口日志', '43.152.142.32/1.9.116.218', '2026-09-30 07:40:14', 0, 'PersonController.getPersonByNumType(..)', NULL, 'GET /apis/person/getPersonByNumType', '{\"typeNum\":\"1\"}', '[]'); +INSERT INTO `tbl_log` VALUES (8990, 63, '接口日志', '43.152.142.43/1.9.116.218', '2026-09-30 07:40:15', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8991, 63, '接口日志', '43.174.54.14/1.9.116.218', '2026-09-30 07:40:15', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"出库\\\",\\\"subType\\\":\\\"销售\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-30\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"createTimeRange\\\":[\\\"2026-06-29T16:00:00.000Z\\\",\\\"2026-09-29T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":50,\"rows\":[{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789718584000,\"creator\":63,\"debt\":808500.000000,\"defaultNumber\":\"XSCK00000001728\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":808500.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1720,\"lastDebt\":808500.000000,\"lastDeposit\":0.000000,\"linkNumber\":\"XSDD00000001726\",\"materialCount\":10000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK00000001728\",\"operTime\":1789732981000,\"operTimeStr\":\"2026-09-18 16:03:01\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"totalPrice\":735000.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1786305600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-87\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1671,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303506-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-87\",\"operTime\":1786305600000,\"operTimeStr\":\"2026-08-10 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1786305600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2159-86\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1670,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303506-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2159-86\",\"operTime\":1786305600000,\"operTimeStr\":\"2026-08-10 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2159\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785873600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-DO_2158-85\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1669,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-DO_2158-85\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:DO_2158\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785873600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-84\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1668,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-84\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785873600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-DO_2157-83\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1667,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-DO_2157-83\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:DO_2157\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785268800000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2150-69\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1665,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303480-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2150-69\",\"operTime\":1785268800000,\"operTimeStr\":\"2026-07-29 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2150\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784750400000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2142-68\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1664,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303480-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2142-68\",\"operTime\":1784750400000,\"operTimeStr\":\"2026-07-23 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2142\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784145600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-67\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1663,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-67\",\"operTime\":1784145600000,\"operTimeStr\":\"2026-07-16 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784145600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2134-66\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1662,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2134-66\",\"operTime\":1784145600000,\"operTimeStr\":\"2026-07-16 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2134\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (8992, 63, '接口日志', '43.152.142.128/1.9.116.218', '2026-09-30 07:40:17', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (8993, 63, '接口日志', '43.152.157.109/1.9.116.218', '2026-09-30 07:40:17', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (8994, 63, '接口日志', '43.152.142.29/1.9.116.218', '2026-09-30 07:40:17', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (8995, 63, '接口日志', '43.174.53.30/1.9.116.218', '2026-09-30 07:40:17', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"}]'); +INSERT INTO `tbl_log` VALUES (8996, 63, '接口日志', '43.152.142.64/1.9.116.218', '2026-09-30 07:40:17', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (8997, 63, '接口日志', '43.152.142.78/1.9.116.218', '2026-09-30 07:40:17', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (8998, 63, '接口日志', '43.152.142.84/1.9.116.218', '2026-09-30 07:40:17', 0, 'PersonController.getPersonByNumType(..)', NULL, 'GET /apis/person/getPersonByNumType', '{\"typeNum\":\"1\"}', '[]'); +INSERT INTO `tbl_log` VALUES (8999, 63, '接口日志', '43.174.53.17/1.9.116.218', '2026-09-30 07:40:17', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"入库\\\",\\\"subType\\\":\\\"销售退货\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-30\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"createTimeRange\\\":[\\\"2026-06-29T16:00:00.000Z\\\",\\\"2026-09-29T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9000, 63, '接口日志', '43.152.157.109/1.9.116.218', '2026-09-30 07:40:43', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (9001, 63, '接口日志', '43.174.32.13/1.9.116.218', '2026-09-30 07:40:43', 0, 'CustomerCategoryController.getTreeList(..)', NULL, 'GET /apis/customerCategory/treeList', '{}', '{\"code\":200,\"data\":{\"data\":[],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9002, 63, '接口日志', '43.152.142.57/1.9.116.218', '2026-09-30 07:40:55', 0, 'RoleController.getList(..)', NULL, 'GET /apis/role/list', '{\"search\":\"{\\\"name\\\":\\\"\\\",\\\"description\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":7,\"rows\":[{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":24,\"name\":\"system admin\",\"type\":\"全部数据\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":23,\"name\":\"system admin\",\"type\":\"全部数据\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":21,\"name\":\"admin\",\"tenantId\":63,\"type\":\"全部数据\"},{\"deleteFlag\":\"0\",\"description\":\"rrr\",\"enabled\":true,\"id\":17,\"name\":\"销售代表\",\"tenantId\":63,\"type\":\"个人数据\"},{\"deleteFlag\":\"0\",\"description\":\"ddd\",\"enabled\":true,\"id\":16,\"name\":\"销售经理\",\"tenantId\":63,\"type\":\"全部数据\"},{\"deleteFlag\":\"0\",\"description\":\"\",\"enabled\":true,\"id\":10,\"name\":\"租户\",\"type\":\"全部数据\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":4,\"name\":\"管理员\",\"type\":\"全部数据\"}]}}'); +INSERT INTO `tbl_log` VALUES (9003, 63, '接口日志', '43.152.142.112/1.9.116.218', '2026-09-30 07:40:56', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9004, 63, '接口日志', '43.174.54.44/1.9.116.218', '2026-09-30 07:40:56', 0, 'UserController.getList(..)', NULL, 'GET /apis/user/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"description\":\"\",\"email\":\"666666@qq.com\",\"id\":63,\"isystem\":1,\"leaderFlag\":\"0\",\"leaderFlagStr\":\"否\",\"loginName\":\"admin\",\"orgAbr\":\"测试部门\",\"orgaId\":12,\"orgaUserRelId\":11,\"password\":\"******\",\"phonenum\":\"1123123123132\",\"position\":\"主管\",\"roleId\":21,\"roleName\":\"admin\",\"status\":0,\"tenantId\":63,\"userBlngOrgaDsplSeq\":\"15\",\"userType\":\"系统管理员\",\"username\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (9005, 63, '接口日志', '43.174.32.23/1.9.116.218', '2026-09-30 07:41:01', 0, 'OrganizationController.getOrganizationTree(..)', NULL, 'GET /apis/organization/getOrganizationTree', '{}', '[{\"children\":[{\"children\":[{\"children\":[],\"checked\":false,\"attributes\":\"12\",\"id\":14,\"state\":\"open\",\"title\":\"部门2\",\"value\":14,\"key\":14}],\"checked\":false,\"attributes\":\"jg1\",\"id\":13,\"state\":\"open\",\"title\":\"部门1\",\"value\":13,\"key\":13}],\"checked\":false,\"attributes\":\"001\",\"id\":12,\"state\":\"open\",\"title\":\"测试部门\",\"value\":12,\"key\":12}]'); +INSERT INTO `tbl_log` VALUES (9006, 63, '接口日志', '43.174.53.14/1.9.116.218', '2026-09-30 07:41:01', 0, 'RoleController.allList(..)', NULL, 'GET /apis/role/allList', '{}', '[{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":24,\"name\":\"system admin\",\"type\":\"全部数据\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":23,\"name\":\"system admin\",\"type\":\"全部数据\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":21,\"name\":\"admin\",\"tenantId\":63,\"type\":\"全部数据\"},{\"deleteFlag\":\"0\",\"description\":\"rrr\",\"enabled\":true,\"id\":17,\"name\":\"销售代表\",\"tenantId\":63,\"type\":\"个人数据\"},{\"deleteFlag\":\"0\",\"description\":\"ddd\",\"enabled\":true,\"id\":16,\"name\":\"销售经理\",\"tenantId\":63,\"type\":\"全部数据\"},{\"deleteFlag\":\"0\",\"description\":\"\",\"enabled\":true,\"id\":10,\"name\":\"租户\",\"type\":\"全部数据\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":4,\"name\":\"管理员\",\"type\":\"全部数据\"}]'); +INSERT INTO `tbl_log` VALUES (9007, 63, '用户', '43.152.157.109/1.9.116.218', '2026-09-30 07:41:49', 0, '新增', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (9008, 63, '关联关系', '43.152.157.109/1.9.116.218', '2026-09-30 07:41:49', 0, '新增', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (9009, 63, '接口日志', '43.152.157.109/1.9.116.218', '2026-09-30 07:41:49', 0, 'UserController.addUser(..)', NULL, 'POST /apis/user/addUser', '{\"obj\":{\"password\":\"******\",\"roleId\":23,\"loginName\":\"admin2\",\"orgaId\":13,\"username\":\"admin2\"}}', '{\"msg\":\"操作成功\",\"code\":200}'); +INSERT INTO `tbl_log` VALUES (9010, 63, '接口日志', '43.152.142.109/1.9.116.218', '2026-09-30 07:41:49', 0, 'UserController.getList(..)', NULL, 'GET /apis/user/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"id\":149,\"isystem\":0,\"leaderFlag\":\"0\",\"leaderFlagStr\":\"否\",\"loginName\":\"admin2\",\"orgAbr\":\"部门1\",\"orgaId\":13,\"orgaUserRelId\":20,\"password\":\"******\",\"roleId\":23,\"roleName\":\"system admin\",\"status\":0,\"userType\":\"普通用户\",\"username\":\"admin2\"},{\"description\":\"\",\"email\":\"666666@qq.com\",\"id\":63,\"isystem\":1,\"leaderFlag\":\"0\",\"leaderFlagStr\":\"否\",\"loginName\":\"admin\",\"orgAbr\":\"测试部门\",\"orgaId\":12,\"orgaUserRelId\":11,\"password\":\"******\",\"phonenum\":\"1123123123132\",\"position\":\"主管\",\"roleId\":21,\"roleName\":\"admin\",\"status\":0,\"tenantId\":63,\"userBlngOrgaDsplSeq\":\"15\",\"userType\":\"系统管理员\",\"username\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (9011, NULL, '接口日志', '43.152.142.84/1.9.116.218', '2026-09-30 07:41:53', 0, 'UserController.logout(..)', NULL, 'GET /apis/user/logout', '{}', '{\"code\":400}'); +INSERT INTO `tbl_log` VALUES (9012, NULL, '接口日志', '43.174.52.31/1.9.116.218', '2026-09-30 07:41:53', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (9013, NULL, '接口日志', '43.174.54.44/1.9.116.218', '2026-09-30 07:41:53', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (9014, NULL, '接口日志', '43.174.53.17/1.9.116.218', '2026-09-30 07:41:54', 0, 'PlatformConfigController.getPlatformCheckcodeFlag(..)', NULL, 'GET /apis/platformConfig/getPlatform/checkcodeFlag', '{}', '\"1\"'); +INSERT INTO `tbl_log` VALUES (9015, NULL, '接口日志', '43.174.54.14/1.9.116.218', '2026-09-30 07:41:54', 0, 'UserController.randomImage(..)', NULL, 'GET /apis/user/randomImage', '{}', '{\"code\":200,\"data\":{\"base64\":\"data:image/jpg;base64,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\",\"uuid\":\"84d59c29f5014017811046d560d4807e\"}}'); +INSERT INTO `tbl_log` VALUES (9016, 149, '用户', '43.152.157.109/1.9.116.218', '2026-09-30 07:42:06', 0, '登录admin2', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (9017, NULL, '接口日志', '43.152.157.109/1.9.116.218', '2026-09-30 07:42:06', 0, 'UserController.login(..)', NULL, 'POST /apis/user/login', '{\"userParam\":{\"code\":\"4gmn\",\"loginName\":\"admin2\",\"password\":\"******\",\"uuid\":\"84d59c29f5014017811046d560d4807e\"}}', '{\"code\":200,\"data\":{\"pwdSimple\":\"******\",\"user\":{\"deleteFlag\":\"0\",\"id\":149,\"ismanager\":1,\"isystem\":0,\"leaderFlag\":\"0\",\"loginName\":\"admin2\",\"password\":\"******\",\"status\":0,\"username\":\"admin2\"},\"msgTip\":\"user can login\",\"token\":\"******\"}}'); +INSERT INTO `tbl_log` VALUES (9018, 149, '接口日志', '43.152.157.109/1.9.116.218', '2026-09-30 07:42:06', 0, 'FunctionController.findMenuByPNumber(..)', NULL, 'POST /apis/function/findMenuByPNumber', '{\"jsonObject\":{\"userId\":149,\"pNumber\":0}}', '[{\"component\":\"/layouts/TabLayout\",\"icon\":\"home\",\"id\":0,\"text\":\"首页\",\"url\":\"/dashboard/analysis\",\"textEn\":\"Home\"}]'); +INSERT INTO `tbl_log` VALUES (9019, 149, '接口日志', '43.174.32.23/1.9.116.218', '2026-09-30 07:42:06', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (9020, 149, '接口日志', '43.152.142.57/1.9.116.218', '2026-09-30 07:42:06', 0, 'MaterialPropertyController.getAllList(..)', NULL, 'GET /apis/materialProperty/getAllList', '{}', '{\"code\":200,\"data\":[{\"anotherName\":\"扩展1\",\"id\":1,\"nativeName\":\"扩展1\"},{\"anotherName\":\"扩展2\",\"id\":2,\"nativeName\":\"扩展2\"},{\"anotherName\":\"扩展3\",\"id\":3,\"nativeName\":\"扩展3\"}]}'); +INSERT INTO `tbl_log` VALUES (9021, 149, '接口日志', '43.152.142.139/1.9.116.218', '2026-09-30 07:42:06', 0, 'UserController.getUserBtnByCurrentUser(..)', NULL, 'GET /apis/user/getUserBtnByCurrentUser', '{}', '{\"code\":200,\"data\":{\"userBtn\":[]}}'); +INSERT INTO `tbl_log` VALUES (9022, 149, '接口日志', '43.174.32.34/1.9.116.218', '2026-09-30 07:42:06', 0, 'MsgController.getList(..)', NULL, 'GET /apis/msg/list', '{\"search\":\"{\\\"name\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9023, 149, '接口日志', '43.174.32.13/1.9.116.218', '2026-09-30 07:42:06', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-04\",\"inbound\":100669.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (9024, 149, '接口日志', '43.174.32.18/1.9.116.218', '2026-09-30 07:42:06', 0, 'MsgController.getMsgByStatus(..)', NULL, 'GET /apis/msg/getMsgByStatus', '{\"status\":\"1\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (9025, NULL, '接口日志', '43.152.142.29/1.9.116.218', '2026-09-30 07:42:29', 0, 'UserController.logout(..)', NULL, 'GET /apis/user/logout', '{}', '{\"code\":400}'); +INSERT INTO `tbl_log` VALUES (9026, NULL, '接口日志', '43.152.142.43/1.9.116.218', '2026-09-30 07:42:29', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (9027, NULL, '接口日志', '43.152.142.32/1.9.116.218', '2026-09-30 07:42:29', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (9028, NULL, '接口日志', '43.152.142.109/1.9.116.218', '2026-09-30 07:42:30', 0, 'PlatformConfigController.getPlatformCheckcodeFlag(..)', NULL, 'GET /apis/platformConfig/getPlatform/checkcodeFlag', '{}', '\"1\"'); +INSERT INTO `tbl_log` VALUES (9029, NULL, '接口日志', '43.152.142.64/1.9.116.218', '2026-09-30 07:42:30', 0, 'UserController.randomImage(..)', NULL, 'GET /apis/user/randomImage', '{}', '{\"code\":200,\"data\":{\"base64\":\"data:image/jpg;base64,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\",\"uuid\":\"4062c82d1b6c41db8901789411f34bc4\"}}'); +INSERT INTO `tbl_log` VALUES (9030, NULL, '接口日志', '43.174.32.14/1.9.116.218', '2026-09-30 07:43:53', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (9031, NULL, '接口日志', '43.152.142.34/1.9.116.218', '2026-09-30 07:43:53', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (9032, NULL, '接口日志', '43.152.142.128/1.9.116.218', '2026-09-30 07:43:56', 0, 'UserController.randomImage(..)', NULL, 'GET /apis/user/randomImage', '{}', '{\"code\":200,\"data\":{\"base64\":\"data:image/jpg;base64,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\",\"uuid\":\"b2dd51e50fa143c9ad493acb14080b37\"}}'); +INSERT INTO `tbl_log` VALUES (9033, NULL, '接口日志', '43.174.53.48/1.9.116.218', '2026-09-30 07:43:56', 0, 'PlatformConfigController.getPlatformCheckcodeFlag(..)', NULL, 'GET /apis/platformConfig/getPlatform/checkcodeFlag', '{}', '\"1\"'); +INSERT INTO `tbl_log` VALUES (9034, 63, '用户', '43.168.32.240/1.9.116.218', '2026-09-30 07:44:14', 0, '登录admin', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (9035, NULL, '接口日志', '43.168.32.240/1.9.116.218', '2026-09-30 07:44:14', 0, 'UserController.login(..)', NULL, 'POST /apis/user/login', '{\"userParam\":{\"code\":\"cjp7\",\"loginName\":\"admin\",\"password\":\"******\",\"uuid\":\"b2dd51e50fa143c9ad493acb14080b37\"}}', '{\"code\":200,\"data\":{\"pwdSimple\":\"******\",\"user\":{\"deleteFlag\":\"0\",\"description\":\"\",\"email\":\"666666@qq.com\",\"id\":63,\"ismanager\":1,\"isystem\":1,\"leaderFlag\":\"0\",\"loginName\":\"admin\",\"password\":\"******\",\"phonenum\":\"1123123123132\",\"position\":\"主管\",\"status\":0,\"tenantId\":63,\"username\":\"admin\"},\"msgTip\":\"user can login\",\"token\":\"******\"}}'); +INSERT INTO `tbl_log` VALUES (9036, 63, '接口日志', '43.168.32.240/1.9.116.218', '2026-09-30 07:44:14', 0, 'FunctionController.findMenuByPNumber(..)', NULL, 'POST /apis/function/findMenuByPNumber', '{\"jsonObject\":{\"userId\":63,\"pNumber\":0}}', '[{\"component\":\"/layouts/TabLayout\",\"icon\":\"home\",\"id\":0,\"text\":\"首页\",\"url\":\"/dashboard/analysis\",\"textEn\":\"Home\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/SaleOrderList\",\"icon\":\"profile\",\"id\":242,\"text\":\"销售订单\",\"url\":\"/bill/sale_order\",\"textEn\":\"Sales Orders\"},{\"component\":\"/bill/SaleOutList\",\"icon\":\"profile\",\"id\":41,\"text\":\"销售出库\",\"url\":\"/bill/sale_out\",\"textEn\":\"Sales Shipments\"},{\"component\":\"/bill/DeliveryPlanList\",\"icon\":\"profile\",\"id\":271,\"text\":\"交货计划管理\",\"url\":\"/bill/delivery_plan\",\"textEn\":\"Delivery Plans\"},{\"component\":\"/bill/SaleShipmentList\",\"icon\":\"car\",\"id\":268,\"text\":\"发货管理\",\"url\":\"/bill/sale_shipment\",\"textEn\":\"Shipment Management\"},{\"component\":\"/bill/SaleBackList\",\"icon\":\"profile\",\"id\":200,\"text\":\"销售退货\",\"url\":\"/bill/sale_back\",\"textEn\":\"Sales Returns\"},{\"component\":\"/bill/RetailOutList\",\"icon\":\"profile\",\"id\":210,\"text\":\"零售出库\",\"url\":\"/bill/retail_out\",\"textEn\":\"Retail Shipments\"},{\"component\":\"/bill/RetailBackList\",\"icon\":\"profile\",\"id\":211,\"text\":\"零售退货\",\"url\":\"/bill/retail_back\",\"textEn\":\"Retail Returns\"}],\"icon\":\"shopping-cart\",\"id\":38,\"text\":\"销售管理\",\"url\":\"/billB\",\"textEn\":\"Sales Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/PurchaseApplyList\",\"icon\":\"profile\",\"id\":261,\"text\":\"请购单\",\"url\":\"/bill/purchase_apply\",\"textEn\":\"Purchase Requisitions\"},{\"component\":\"/bill/PurchaseOrderList\",\"icon\":\"profile\",\"id\":241,\"text\":\"采购订单\",\"url\":\"/bill/purchase_order\",\"textEn\":\"Purchase Orders\"},{\"component\":\"/bill/PurchaseInList\",\"icon\":\"profile\",\"id\":33,\"text\":\"采购入库\",\"url\":\"/bill/purchase_in\",\"textEn\":\"Purchase Receipts\"},{\"component\":\"/bill/PurchaseBackList\",\"icon\":\"profile\",\"id\":199,\"text\":\"采购退货\",\"url\":\"/bill/purchase_back\",\"textEn\":\"Purchase Returns\"}],\"icon\":\"retweet\",\"id\":32,\"text\":\"采购管理\",\"url\":\"/bill\",\"textEn\":\"Purchase Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/production/PackBomList\",\"icon\":\"profile\",\"id\":263,\"text\":\"生产方案\",\"url\":\"/production/pack_bom\",\"textEn\":\"Production BOMs\"},{\"component\":\"/production/OrderList\",\"icon\":\"profile\",\"id\":264,\"text\":\"生产工单\",\"url\":\"/production/order\",\"textEn\":\"Production Orders\"},{\"component\":\"/production/RequisitionList\",\"icon\":\"profile\",\"id\":265,\"text\":\"领料管理\",\"url\":\"/production/requisition\",\"textEn\":\"Material Requisitions\"},{\"component\":\"/production/ReportList\",\"icon\":\"profile\",\"id\":266,\"text\":\"完工报工\",\"url\":\"/production/report\",\"textEn\":\"Production Reports\"}],\"icon\":\"cluster\",\"id\":262,\"text\":\"生产管理\",\"url\":\"/production\",\"textEn\":\"Production Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/MaterialStock\",\"icon\":\"profile\",\"id\":246,\"text\":\"商品库存\",\"url\":\"/report/material_stock\",\"textEn\":\"Product Inventory\"},{\"component\":\"/bill/OtherInList\",\"icon\":\"profile\",\"id\":201,\"text\":\"其它入库\",\"url\":\"/bill/other_in\",\"textEn\":\"Other Receipts\"},{\"component\":\"/bill/OtherOutList\",\"icon\":\"profile\",\"id\":202,\"text\":\"其它出库\",\"url\":\"/bill/other_out\",\"textEn\":\"Other Shipments\"},{\"component\":\"/bill/HeadquartersInList\",\"icon\":\"profile\",\"id\":270,\"text\":\"总部入库\",\"url\":\"/bill/headquarters_in\",\"textEn\":\"Headquarters Receipts\"}],\"icon\":\"hdd\",\"id\":239,\"text\":\"仓库管理\",\"url\":\"/billD\",\"textEn\":\"Warehouse Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/financial/MoneyInList\",\"icon\":\"profile\",\"id\":204,\"text\":\"收款单\",\"url\":\"/financial/money_in\",\"textEn\":\"Receipt Vouchers\"},{\"component\":\"/financial/MoneyOutList\",\"icon\":\"profile\",\"id\":205,\"text\":\"付款单\",\"url\":\"/financial/money_out\",\"textEn\":\"Payment Vouchers\"}],\"icon\":\"money-collect\",\"id\":44,\"text\":\"财务管理\",\"url\":\"/financial\",\"textEn\":\"Finance Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/asset/AssetDashboard\",\"icon\":\"dashboard\",\"id\":276,\"text\":\"资产汇总\",\"url\":\"/asset\",\"textEn\":\"Asset Overview\"},{\"component\":\"/asset/AssetList\",\"icon\":\"profile\",\"id\":273,\"text\":\"资产台账\",\"url\":\"/asset/ledger\",\"textEn\":\"Asset Ledger\"},{\"component\":\"/asset/DeviceList\",\"icon\":\"tool\",\"id\":274,\"text\":\"设备台账\",\"url\":\"/asset/device\",\"textEn\":\"Device Ledger\"},{\"component\":\"/asset/InventoryList\",\"icon\":\"scan\",\"id\":275,\"text\":\"资产盘点\",\"url\":\"/asset/inventory\",\"textEn\":\"Asset Inventory\"}],\"icon\":\"bank\",\"id\":272,\"text\":\"资产管理\",\"url\":\"/assetManagement\",\"textEn\":\"Asset Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/material/MaterialCategoryList\",\"icon\":\"profile\",\"id\":22,\"text\":\"商品类别\",\"url\":\"/material/material_category\",\"textEn\":\"Product Categories\"},{\"component\":\"/material/MaterialList\",\"icon\":\"profile\",\"id\":23,\"text\":\"商品信息\",\"url\":\"/material/material\",\"textEn\":\"Product Information\"},{\"component\":\"/system/UnitList\",\"icon\":\"profile\",\"id\":220,\"text\":\"多单位\",\"url\":\"/system/unit\",\"textEn\":\"Multiple Units\"},{\"component\":\"/material/MaterialAttributeList\",\"icon\":\"profile\",\"id\":247,\"text\":\"多属性\",\"url\":\"/material/material_attribute\",\"textEn\":\"Product Attributes\"}],\"icon\":\"shopping\",\"id\":21,\"text\":\"商品管理\",\"url\":\"/material\",\"textEn\":\"Product Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/AccountReport\",\"icon\":\"profile\",\"id\":207,\"text\":\"账户统计\",\"url\":\"/report/account_report\",\"textEn\":\"Account Summary\"},{\"component\":\"/report/RetailOutReport\",\"icon\":\"profile\",\"id\":259,\"text\":\"零售统计\",\"url\":\"/report/retail_out_report\",\"textEn\":\"Retail Summary\"},{\"component\":\"/report/BuyInReport\",\"icon\":\"profile\",\"id\":208,\"text\":\"采购统计\",\"url\":\"/report/buy_in_report\",\"textEn\":\"Purchase Summary\"},{\"component\":\"/report/SaleOutReport\",\"icon\":\"profile\",\"id\":209,\"text\":\"销售统计\",\"url\":\"/report/sale_out_report\",\"textEn\":\"Sales Summary\"},{\"component\":\"/report/InDetail\",\"icon\":\"profile\",\"id\":226,\"text\":\"入库明细\",\"url\":\"/report/in_detail\",\"textEn\":\"Inbound Details\"},{\"component\":\"/report/OutDetail\",\"icon\":\"profile\",\"id\":227,\"text\":\"出库明细\",\"url\":\"/report/out_detail\",\"textEn\":\"Outbound Details\"},{\"component\":\"/report/InMaterialCount\",\"icon\":\"profile\",\"id\":228,\"text\":\"入库汇总\",\"url\":\"/report/in_material_count\",\"textEn\":\"Inbound Summary\"},{\"component\":\"/report/OutMaterialCount\",\"icon\":\"profile\",\"id\":229,\"text\":\"出库汇总\",\"url\":\"/report/out_material_count\",\"textEn\":\"Outbound Summary\"},{\"component\":\"/report/InOutStockReport\",\"icon\":\"profile\",\"id\":59,\"text\":\"进销存统计\",\"url\":\"/report/in_out_stock_report\",\"textEn\":\"Inventory Transaction Summary\"},{\"component\":\"/report/CustomerAccount\",\"icon\":\"profile\",\"id\":235,\"text\":\"客户对账\",\"url\":\"/report/customer_account\",\"textEn\":\"Customer Reconciliation\"},{\"component\":\"/report/VendorAccount\",\"icon\":\"profile\",\"id\":237,\"text\":\"供应商对账\",\"url\":\"/report/vendor_account\",\"textEn\":\"Supplier Reconciliation\"},{\"component\":\"/report/StockWarningReport\",\"icon\":\"profile\",\"id\":244,\"text\":\"库存预警\",\"url\":\"/report/stock_warning_report\",\"textEn\":\"Stock Alerts\"}],\"icon\":\"pie-chart\",\"id\":198,\"text\":\"报表查询\",\"url\":\"/report\",\"textEn\":\"Reports\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/VendorList\",\"icon\":\"profile\",\"id\":25,\"text\":\"供应商信息\",\"url\":\"/system/vendor\",\"textEn\":\"Suppliers\"},{\"component\":\"/system/CustomerList\",\"icon\":\"profile\",\"id\":217,\"text\":\"客户信息\",\"url\":\"/system/customer\",\"textEn\":\"Customers\"},{\"component\":\"/system/MemberList\",\"icon\":\"profile\",\"id\":218,\"text\":\"会员信息\",\"url\":\"/system/member\",\"textEn\":\"Members\"},{\"component\":\"/system/CustomerCategoryList\",\"icon\":\"bars\",\"id\":267,\"text\":\"客户分类\",\"url\":\"/system/customerCategory\",\"textEn\":\"Customer Categories\"},{\"component\":\"/system/DepotList\",\"icon\":\"profile\",\"id\":26,\"text\":\"仓库信息\",\"url\":\"/system/depot\",\"textEn\":\"Warehouses\"},{\"component\":\"/system/InOutItemList\",\"icon\":\"profile\",\"id\":194,\"text\":\"收支项目\",\"url\":\"/system/in_out_item\",\"textEn\":\"Income and Expense Items\"},{\"component\":\"/system/AccountList\",\"icon\":\"profile\",\"id\":195,\"text\":\"结算账户\",\"url\":\"/system/account\",\"textEn\":\"Settlement Accounts\"},{\"component\":\"/system/PersonList\",\"icon\":\"profile\",\"id\":31,\"text\":\"操作人员管理\",\"url\":\"/system/person\",\"textEn\":\"Operators\"}],\"icon\":\"appstore\",\"id\":24,\"text\":\"基础资料\",\"url\":\"/systemA\",\"textEn\":\"Master Data\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/RoleList\",\"icon\":\"profile\",\"id\":13,\"text\":\"角色管理\",\"url\":\"/system/role\",\"textEn\":\"Role Management\"},{\"component\":\"/system/UserList\",\"icon\":\"profile\",\"id\":14,\"text\":\"用户管理\",\"url\":\"/system/user\",\"textEn\":\"User Management\"},{\"component\":\"/system/OrganizationList\",\"icon\":\"profile\",\"id\":243,\"text\":\"部门管理\",\"url\":\"/system/organization\",\"textEn\":\"Department Management\"},{\"component\":\"/system/LogList\",\"icon\":\"profile\",\"id\":15,\"text\":\"日志管理\",\"url\":\"/system/log\",\"textEn\":\"Log Management\"},{\"component\":\"/material/MaterialPropertyList\",\"icon\":\"profile\",\"id\":236,\"text\":\"商品属性\",\"url\":\"/material/material_property\",\"textEn\":\"Product Properties\"},{\"component\":\"/system/SystemConfigList\",\"icon\":\"profile\",\"id\":234,\"text\":\"系统配置\",\"url\":\"/system/system_config\",\"textEn\":\"System Configuration\"},{\"component\":\"/system/FunctionList\",\"icon\":\"profile\",\"id\":16,\"text\":\"菜单管理\",\"url\":\"/system/function\",\"textEn\":\"Resource Menus\"},{\"component\":\"/system/PluginList\",\"icon\":\"profile\",\"id\":245,\"text\":\"插件管理\",\"url\":\"/system/plugin\",\"textEn\":\"Plugin Management\"},{\"component\":\"/system/DictList\",\"icon\":\"profile\",\"id\":260,\"text\":\"字典管理\",\"url\":\"/system/dict\",\"textEn\":\"Dictionary Management\"},{\"component\":\"/system/PlatformConfigList\",\"icon\":\"profile\",\"id\":258,\"text\":\"平台配置\",\"url\":\"/system/platform_config\",\"textEn\":\"Platform Configuration\"}],\"icon\":\"setting\",\"id\":1,\"text\":\"系统管理\",\"url\":\"/system\",\"textEn\":\"System Management\"}]'); +INSERT INTO `tbl_log` VALUES (9037, 63, '接口日志', '43.152.142.140/1.9.116.218', '2026-09-30 07:44:14', 0, 'MaterialPropertyController.getAllList(..)', NULL, 'GET /apis/materialProperty/getAllList', '{}', '{\"code\":200,\"data\":[{\"anotherName\":\"扩展1\",\"id\":1,\"nativeName\":\"扩展1\"},{\"anotherName\":\"扩展2\",\"id\":2,\"nativeName\":\"扩展2\"},{\"anotherName\":\"扩展3\",\"id\":3,\"nativeName\":\"扩展3\"}]}'); +INSERT INTO `tbl_log` VALUES (9038, 63, '接口日志', '43.174.53.16/1.9.116.218', '2026-09-30 07:44:14', 0, 'UserController.getUserBtnByCurrentUser(..)', NULL, 'GET /apis/user/getUserBtnByCurrentUser', '{}', '{\"code\":200,\"data\":{\"userBtn\":[{\"btnStr\":\"8,1\",\"url\":\"/system/role\"},{\"btnStr\":\"1\",\"url\":\"/system/user\"},{\"btnStr\":\"1\",\"url\":\"/system/organization\"},{\"btnStr\":\"1\",\"url\":\"/material/material_property\"},{\"btnStr\":\"1\",\"url\":\"/system/system_config\"},{\"btnStr\":\"1\",\"url\":\"/system/function\"},{\"btnStr\":\"1\",\"url\":\"/system/plugin\"},{\"btnStr\":\"1\",\"url\":\"/material/material_category\"},{\"btnStr\":\"1,3\",\"url\":\"/material/material\"},{\"btnStr\":\"1\",\"url\":\"/system/unit\"},{\"btnStr\":\"1\",\"url\":\"/material/material_attribute\"},{\"btnStr\":\"1,3\",\"url\":\"/system/vendor\"},{\"btnStr\":\"1,3\",\"url\":\"/system/customer\"},{\"btnStr\":\"1,3\",\"url\":\"/system/member\"},{\"btnStr\":\"1\",\"url\":\"/system/depot\"},{\"btnStr\":\"1\",\"url\":\"/system/in_out_item\"},{\"btnStr\":\"1\",\"url\":\"/system/account\"},{\"btnStr\":\"1\",\"url\":\"/system/person\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_apply\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_out\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/delivery_plan\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/sale_shipment\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_out\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/order\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/requisition\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/report\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/giro\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/advance_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/allocation_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/assemble\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/headquarters_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/disassemble\"}]}}'); +INSERT INTO `tbl_log` VALUES (9039, 63, '接口日志', '43.174.52.31/1.9.116.218', '2026-09-30 07:44:14', 0, 'MsgController.getList(..)', NULL, 'GET /apis/msg/list', '{\"search\":\"{\\\"name\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9040, 63, '接口日志', '43.152.142.133/1.9.116.218', '2026-09-30 07:44:14', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-04\",\"inbound\":100669.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (9041, 63, '接口日志', '43.152.142.142/1.9.116.218', '2026-09-30 07:44:14', 0, 'MsgController.getMsgByStatus(..)', NULL, 'GET /apis/msg/getMsgByStatus', '{\"status\":\"1\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (9042, 63, '接口日志', '43.168.32.240/1.9.116.218', '2026-09-30 07:44:36', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (9043, 63, '接口日志', '43.174.55.40/1.9.116.218', '2026-09-30 07:44:36', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (9044, 63, '接口日志', '43.152.142.62/1.9.116.218', '2026-09-30 07:44:36', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9045, 63, '接口日志', '43.174.53.19/1.9.116.218', '2026-09-30 07:44:36', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (9046, 63, '接口日志', '43.174.32.33/1.9.116.218', '2026-09-30 07:44:36', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (9047, 63, '接口日志', '43.174.54.44/1.9.116.218', '2026-09-30 07:44:36', 0, 'PersonController.getPersonByNumType(..)', NULL, 'GET /apis/person/getPersonByNumType', '{\"typeNum\":\"1\"}', '[]'); +INSERT INTO `tbl_log` VALUES (9048, 63, '接口日志', '43.174.32.12/1.9.116.218', '2026-09-30 07:44:36', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"其它\\\",\\\"subType\\\":\\\"销售订单\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-30\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"createTimeRange\\\":[\\\"2026-06-29T16:00:00.000Z\\\",\\\"2026-09-29T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":5,\"rows\":[{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789718483000,\"creator\":63,\"debt\":808500.000000,\"defaultNumber\":\"XSDD00000001726\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":808500.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1719,\"lastDebt\":808500.000000,\"lastDeposit\":0.000000,\"materialCount\":10000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD00000001726\",\"operTime\":1789732682000,\"operTimeStr\":\"2026-09-18 15:58:02\",\"organId\":90,\"organName\":\"TNB\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"totalPrice\":735000.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789726236000,\"creator\":63,\"debt\":340000000.000000,\"defaultNumber\":\"XSDD00000001724\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":340000000.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1718,\"lastDebt\":340000000.000000,\"lastDeposit\":0.000000,\"materialCount\":1000000.000000,\"materialsList\":\"3PH APEC3-WC 3PH APEC3-WC 3PH APEC3-WC \",\"number\":\"XSDD00000001724\",\"operTime\":1789725706000,\"operTimeStr\":\"2026-09-18 14:01:46\",\"organId\":90,\"organName\":\"TNB\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"0\",\"subType\":\"销售订单\",\"totalPrice\":340000000.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1785355200000,\"creator\":63,\"debt\":242550.000000,\"defaultNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":242550.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1580,\"lastDebt\":242550.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":3000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303475-1PH-WS79-ADD1\",\"operTime\":1785355200000,\"operTimeStr\":\"2026-07-30 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303475\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":242550.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1785355200000,\"creator\":63,\"debt\":323400.000000,\"defaultNumber\":\"XSDD-42303447-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":323400.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1574,\"lastDebt\":323400.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":4000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303447-1PH-WS79-ADD1\",\"operTime\":1785355200000,\"operTimeStr\":\"2026-07-30 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303447\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":323400.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1782936000000,\"creator\":63,\"debt\":323400.000000,\"defaultNumber\":\"XSDD-42303429-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":323400.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1569,\"lastDebt\":323400.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":4000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303429-1PH-WS79-ADD1\",\"operTime\":1782936000000,\"operTimeStr\":\"2026-07-02 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303429\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":323400.000000,\"type\":\"其它\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (9049, 63, '接口日志', '43.152.142.110/1.9.116.218', '2026-09-30 07:44:36', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9050, 63, '接口日志', '43.152.142.41/1.9.116.218', '2026-09-30 07:44:36', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9051, 63, '接口日志', '43.168.32.240/1.9.116.218', '2026-09-30 07:44:37', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (9052, 63, '接口日志', '43.152.142.84/1.9.116.218', '2026-09-30 07:44:37', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (9053, 63, '接口日志', '43.152.142.31/1.9.116.218', '2026-09-30 07:44:37', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (9054, 63, '接口日志', '43.174.53.11/1.9.116.218', '2026-09-30 07:44:37', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9055, 63, '接口日志', '43.152.142.68/1.9.116.218', '2026-09-30 07:44:37', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (9056, 63, '接口日志', '43.174.32.14/1.9.116.218', '2026-09-30 07:44:37', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"出库\\\",\\\"subType\\\":\\\"销售\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-30\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"createTimeRange\\\":[\\\"2026-06-29T16:00:00.000Z\\\",\\\"2026-09-29T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":50,\"rows\":[{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789718584000,\"creator\":63,\"debt\":808500.000000,\"defaultNumber\":\"XSCK00000001728\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":808500.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1720,\"lastDebt\":808500.000000,\"lastDeposit\":0.000000,\"linkNumber\":\"XSDD00000001726\",\"materialCount\":10000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK00000001728\",\"operTime\":1789732981000,\"operTimeStr\":\"2026-09-18 16:03:01\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"totalPrice\":735000.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1786305600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-87\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1671,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303506-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-87\",\"operTime\":1786305600000,\"operTimeStr\":\"2026-08-10 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1786305600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2159-86\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1670,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303506-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2159-86\",\"operTime\":1786305600000,\"operTimeStr\":\"2026-08-10 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2159\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785873600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-DO_2158-85\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1669,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-DO_2158-85\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:DO_2158\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785873600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-84\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1668,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-84\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785873600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-DO_2157-83\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1667,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-DO_2157-83\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:DO_2157\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785268800000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2150-69\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1665,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303480-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2150-69\",\"operTime\":1785268800000,\"operTimeStr\":\"2026-07-29 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2150\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784750400000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2142-68\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1664,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303480-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2142-68\",\"operTime\":1784750400000,\"operTimeStr\":\"2026-07-23 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2142\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784145600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-67\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1663,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-67\",\"operTime\":1784145600000,\"operTimeStr\":\"2026-07-16 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784145600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2134-66\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1662,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2134-66\",\"operTime\":1784145600000,\"operTimeStr\":\"2026-07-16 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2134\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (9057, 63, '接口日志', '43.152.142.45/1.9.116.218', '2026-09-30 07:44:37', 0, 'PersonController.getPersonByNumType(..)', NULL, 'GET /apis/person/getPersonByNumType', '{\"typeNum\":\"1\"}', '[]'); +INSERT INTO `tbl_log` VALUES (9058, 63, '接口日志', '43.174.32.19/1.9.116.218', '2026-09-30 07:44:37', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9059, 63, '接口日志', '43.152.142.108/1.9.116.218', '2026-09-30 07:44:37', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9060, 63, '接口日志', '43.174.53.48/1.9.116.218', '2026-09-30 07:44:39', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-04\",\"inbound\":100669.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (9061, 63, '接口日志', '43.152.142.128/1.9.116.218', '2026-09-30 07:44:44', 0, 'AccountController.listWithBalance(..)', NULL, 'GET /apis/account/listWithBalance', '{\"name\":\"\",\"serialNo\":\"\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63,\"thisMonthAmount\":\"0\"},{\"currentAmount\":4375618.532800,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63,\"thisMonthAmount\":\"0\"}]}}'); +INSERT INTO `tbl_log` VALUES (9062, 63, '接口日志', '43.152.142.34/1.9.116.218', '2026-09-30 07:44:44', 0, 'AccountController.getStatistics(..)', NULL, 'GET /apis/account/getStatistics', '{\"name\":\"\",\"serialNo\":\"\"}', '{\"code\":200,\"data\":{\"allCurrentAmount\":\"4375818.53\",\"allMonthAmount\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9063, 63, '接口日志', '43.152.142.133/1.9.116.218', '2026-09-30 07:44:48', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9064, 63, '接口日志', '43.152.142.140/1.9.116.218', '2026-09-30 07:44:48', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (9065, 63, '接口日志', '43.174.52.31/1.9.116.218', '2026-09-30 07:44:48', 0, 'MaterialController.getListWithStock(..)', NULL, 'GET /apis/material/getListWithStock', '{\"currentPage\":1,\"pageSize\":10,\"position\":\"\",\"materialParam\":\"\",\"zeroStock\":0,\"column\":\"createTime\",\"order\":\"desc\"}', '{\"code\":200,\"data\":{\"currentStockPrice\":107372523.170000000000,\"moveAvgPriceFlag\":false,\"total\":22,\"showStockPrice\":true,\"currentWeight\":0E-12,\"currentStock\":519203.000000,\"rows\":[{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"成品\",\"color\":\"\",\"currentStock\":7223.000000,\"currentStockMovePrice\":2293302.500000000000,\"currentStockPrice\":2293302.500000000000,\"currentUnitPrice\":317.500000,\"currentWeight\":0E-12,\"id\":704,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"3PH-APEC3-WC\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"3PH APEC3-WC\",\"name\":\"3PH APEC3-WC\",\"position\":\"\",\"purchaseDecimal\":317.500000,\"standard\":\"3PH APEC3-WC\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"成品\",\"color\":\"\",\"currentStock\":52400.000000,\"currentStockMovePrice\":3117800.000000000000,\"currentStockPrice\":3117800.000000000000,\"currentUnitPrice\":59.500000,\"currentWeight\":0E-12,\"id\":703,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"1PH-WS79\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"1PH WS79\",\"name\":\"1PH WS79\",\"position\":\"\",\"purchaseDecimal\":59.500000,\"standard\":\"1PH WS79\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":1000.000000,\"currentStockMovePrice\":24300.000000000000,\"currentStockPrice\":24300.000000000000,\"currentUnitPrice\":24.300000,\"currentWeight\":0E-12,\"id\":702,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00722\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-RS178(VA)\",\"name\":\"MD-RS178(VA) RS485分线器\",\"position\":\"\",\"purchaseDecimal\":24.300000,\"standard\":\"MD-RS178(VA)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":100.000000,\"currentStockMovePrice\":14256.000000000000,\"currentStockPrice\":14256.000000000000,\"currentUnitPrice\":142.560000,\"currentWeight\":0E-12,\"id\":701,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.0068900002\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-RS114(VB)\",\"name\":\"MD-RS114(VB) 基于RS485的MODBS TCPMODBS RTUASVII转换模块_(DZG)\",\"position\":\"\",\"purchaseDecimal\":142.560000,\"standard\":\"MD-RS114(VB)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":50.000000,\"currentStockMovePrice\":6642.000000000000,\"currentStockPrice\":6642.000000000000,\"currentUnitPrice\":132.840000,\"currentWeight\":0E-12,\"id\":700,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00686\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"TC160(VA)\",\"name\":\"TC160(VA) 通讯模块供电盒\",\"position\":\"\",\"purchaseDecimal\":132.840000,\"standard\":\"TC160(VA)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":76970.000000,\"currentStockMovePrice\":7697.000000000000,\"currentStockPrice\":7697.000000000000,\"currentUnitPrice\":0.100000,\"currentWeight\":0E-12,\"id\":699,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00654\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-4G111(VF)\",\"name\":\"MD-4G111(VF) 4G模块\",\"position\":\"\",\"purchaseDecimal\":0.100000,\"standard\":\"MD-4G111(VF)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":50.000000,\"currentStockMovePrice\":16200.000000000000,\"currentStockPrice\":16200.000000000000,\"currentUnitPrice\":324.000000,\"currentWeight\":0E-12,\"id\":698,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00562\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-4GVIII(VB)\",\"name\":\"MD-4GVIII(VB)\",\"position\":\"\",\"purchaseDecimal\":324.000000,\"standard\":\"MD-4GVIII(VB)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":500.000000,\"currentStockMovePrice\":64800.000000000000,\"currentStockPrice\":64800.000000000000,\"currentUnitPrice\":129.600000,\"currentWeight\":0E-12,\"id\":697,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00553\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MT-P109(VA)\",\"name\":\"MT-P109(VA)\",\"position\":\"\",\"purchaseDecimal\":129.600000,\"standard\":\"MT-P109(VA)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":54656.000000,\"currentStockMovePrice\":5465.600000000000,\"currentStockPrice\":5465.600000000000,\"currentUnitPrice\":0.100000,\"currentWeight\":0E-12,\"id\":696,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00547\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MT-3NSXL(VC)\",\"name\":\"MT-3NSXL(VC)RF通讯模块\",\"position\":\"\",\"purchaseDecimal\":0.100000,\"standard\":\"MT-3NSXL(VC)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":100.000000,\"currentStockMovePrice\":100375.200000000000,\"currentStockPrice\":100375.200000000000,\"currentUnitPrice\":1003.752000,\"currentWeight\":0E-12,\"id\":695,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00422\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-LR63(VB)\",\"name\":\"MD-LR63(VB)\",\"position\":\"\",\"purchaseDecimal\":1003.752000,\"standard\":\"MD-LR63(VB)\",\"unitName\":\"件\"}]}}'); +INSERT INTO `tbl_log` VALUES (9066, 63, '接口日志', '43.174.53.16/1.9.116.218', '2026-09-30 07:44:48', 0, 'DepotItemController.findDetailByDepotIdsAndMaterialId(..)', NULL, 'GET /apis/depotItem/findDetailByDepotIdsAndMaterialId', '{\"pageSize\":10,\"currentPage\":1,\"depotIds\":\"\",\"number\":\"\",\"beginTime\":\"\",\"endTime\":\"\",\"stockPriceFlag\":false}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9067, 63, '接口日志', '43.152.142.142/1.9.116.218', '2026-09-30 07:44:48', 0, 'DepotItemController.findDetailByDepotIdsAndMaterialId(..)', NULL, 'GET /apis/depotItem/findDetailByDepotIdsAndMaterialId', '{\"pageSize\":10,\"currentPage\":1,\"depotIds\":\"\",\"number\":\"\",\"beginTime\":\"\",\"endTime\":\"\",\"stockPriceFlag\":true}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9068, 63, '接口日志', '43.168.32.240/1.9.116.218', '2026-09-30 07:44:49', 0, 'SupplierController.findBySelectSup(..)', NULL, 'POST /apis/supplier/findBySelect_sup', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司\",\"id\":89}]'); +INSERT INTO `tbl_log` VALUES (9069, 63, '接口日志', '43.174.32.12/1.9.116.218', '2026-09-30 07:44:49', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (9070, 63, '接口日志', '43.174.55.40/1.9.116.218', '2026-09-30 07:44:49', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (9071, 63, '接口日志', '43.174.54.44/1.9.116.218', '2026-09-30 07:44:49', 0, 'DepotHeadController.waitBillCount(..)', NULL, 'GET /apis/depotHead/waitBillCount', '{\"search\":\"{\\\"type\\\":\\\"入库\\\",\\\"subType\\\":\\\"采购,销售退货\\\",\\\"status\\\":\\\"1,3\\\"}\"}', '{\"code\":200,\"data\":{\"total\":47,\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9072, 63, '接口日志', '43.174.53.19/1.9.116.218', '2026-09-30 07:44:49', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9073, 63, '接口日志', '43.174.32.33/1.9.116.218', '2026-09-30 07:44:49', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9074, 63, '接口日志', '43.152.142.62/1.9.116.218', '2026-09-30 07:44:49', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"入库\\\",\\\"subType\\\":\\\"其它\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-30\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"createTimeRange\\\":[\\\"2026-06-29T16:00:00.000Z\\\",\\\"2026-09-29T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9075, 63, '接口日志', '43.168.32.240/1.9.116.218', '2026-09-30 07:44:50', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (9076, 63, '接口日志', '43.152.142.84/1.9.116.218', '2026-09-30 07:44:50', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (9077, 63, '接口日志', '43.174.32.14/1.9.116.218', '2026-09-30 07:44:50', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9078, 63, '接口日志', '43.152.142.41/1.9.116.218', '2026-09-30 07:44:50', 0, 'DepotHeadController.waitBillCount(..)', NULL, 'GET /apis/depotHead/waitBillCount', '{\"search\":\"{\\\"type\\\":\\\"出库\\\",\\\"subType\\\":\\\"销售,采购退货\\\",\\\"status\\\":\\\"1,3\\\"}\"}', '{\"code\":200,\"data\":{\"total\":167,\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9079, 63, '接口日志', '43.152.142.45/1.9.116.218', '2026-09-30 07:44:50', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9080, 63, '接口日志', '43.174.53.11/1.9.116.218', '2026-09-30 07:44:50', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (9081, 63, '接口日志', '43.152.142.110/1.9.116.218', '2026-09-30 07:44:50', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"出库\\\",\\\"subType\\\":\\\"其它\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-30\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"createTimeRange\\\":[\\\"2026-06-29T16:00:00.000Z\\\",\\\"2026-09-29T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9082, 63, '接口日志', '43.168.32.240/1.9.116.218', '2026-09-30 07:44:52', 0, 'SupplierController.findBySelectSup(..)', NULL, 'POST /apis/supplier/findBySelect_sup', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司\",\"id\":89}]'); +INSERT INTO `tbl_log` VALUES (9083, 63, '接口日志', '43.152.142.108/1.9.116.218', '2026-09-30 07:44:52', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9084, 63, '接口日志', '43.152.142.68/1.9.116.218', '2026-09-30 07:44:52', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9085, 63, '接口日志', '43.174.53.48/1.9.116.218', '2026-09-30 07:44:52', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (9086, 63, '接口日志', '43.152.142.128/1.9.116.218', '2026-09-30 07:44:52', 0, 'DepotHeadController.waitBillCount(..)', NULL, 'GET /apis/depotHead/waitBillCount', '{\"search\":\"{\\\"type\\\":\\\"入库\\\",\\\"subType\\\":\\\"采购,销售退货\\\",\\\"status\\\":\\\"1,3\\\"}\"}', '{\"code\":200,\"data\":{\"total\":47,\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9087, 63, '接口日志', '43.174.32.19/1.9.116.218', '2026-09-30 07:44:52', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (9088, 63, '接口日志', '43.152.142.31/1.9.116.218', '2026-09-30 07:44:52', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"入库\\\",\\\"subType\\\":\\\"总部入库\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-30\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"createTimeRange\\\":[\\\"2026-06-29T16:00:00.000Z\\\",\\\"2026-09-29T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":41,\"rows\":[{\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789718802000,\"creator\":63,\"debt\":595000.000000,\"defaultNumber\":\"SM2609180001\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discountLastMoney\":595000.000000,\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1721,\"lastDebt\":595000.000000,\"materialCount\":10000.000000,\"materialsList\":\"1PH WS79\",\"number\":\"SM2609180001\",\"operTime\":1789733163000,\"operTimeStr\":\"2026-09-18 16:06:03\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"totalPrice\":595000.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1786046400000,\"creator\":63,\"debt\":183.600000,\"defaultNumber\":\"SM2608070007\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":183.600000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1423,\"lastDebt\":183.600000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":1836.000000,\"materialsList\":\"MT-3NSXL(VC)\",\"number\":\"SM2608070007\",\"operTime\":1786046400000,\"operTimeStr\":\"2026-08-07 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":183.600000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1786046400000,\"creator\":63,\"debt\":2077650.000000,\"defaultNumber\":\"SM2608070002\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":2077650.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1422,\"lastDebt\":2077650.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":9500.000000,\"materialsList\":\"DDSD1226-T49(VB)\",\"number\":\"SM2608070002\",\"operTime\":1786046400000,\"operTimeStr\":\"2026-08-07 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":2077650.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1785960000000,\"creator\":63,\"debt\":91854.000000,\"defaultNumber\":\"SM2608060005\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":91854.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1421,\"lastDebt\":91854.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":420.000000,\"materialsList\":\"DDSD1226-T49(VB)\",\"number\":\"SM2608060005\",\"operTime\":1785960000000,\"operTimeStr\":\"2026-08-06 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":91854.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1785960000000,\"creator\":63,\"debt\":816.000000,\"defaultNumber\":\"SM2608060004\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":816.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1420,\"lastDebt\":816.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":8160.000000,\"materialsList\":\"MT-3NSXL(VC)\",\"number\":\"SM2608060004\",\"operTime\":1785960000000,\"operTimeStr\":\"2026-08-06 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":816.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1784836800000,\"creator\":63,\"debt\":91854.000000,\"defaultNumber\":\"SM2607240005\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":91854.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1419,\"lastDebt\":91854.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":420.000000,\"materialsList\":\"DDSD1226-T49(VB)\",\"number\":\"SM2607240005\",\"operTime\":1784836800000,\"operTimeStr\":\"2026-07-24 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":91854.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1784750400000,\"creator\":63,\"debt\":551124.000000,\"defaultNumber\":\"SM2607230004\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":551124.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1418,\"lastDebt\":551124.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":2520.000000,\"materialsList\":\"DDSD1226-T49(VB)\",\"number\":\"SM2607230004\",\"operTime\":1784750400000,\"operTimeStr\":\"2026-07-23 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":551124.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1784750400000,\"creator\":63,\"debt\":1285956.000000,\"defaultNumber\":\"SM2607230002\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":1285956.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1417,\"lastDebt\":1285956.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":5880.000000,\"materialsList\":\"DDSD1226-T49(VB)\",\"number\":\"SM2607230002\",\"operTime\":1784750400000,\"operTimeStr\":\"2026-07-23 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":1285956.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1784664000000,\"creator\":63,\"debt\":1020.000000,\"defaultNumber\":\"SM2607220006\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":1020.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1416,\"lastDebt\":1020.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":10200.000000,\"materialsList\":\"MT-3NSXL(VC)\",\"number\":\"SM2607220006\",\"operTime\":1784664000000,\"operTimeStr\":\"2026-07-22 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":1020.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1784664000000,\"creator\":63,\"debt\":275562.000000,\"defaultNumber\":\"SM2607220004\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":275562.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1415,\"lastDebt\":275562.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":1260.000000,\"materialsList\":\"DDSD1226-T49(VB)\",\"number\":\"SM2607220004\",\"operTime\":1784664000000,\"operTimeStr\":\"2026-07-22 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":275562.000000,\"type\":\"入库\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (9089, 63, '接口日志', '43.152.142.34/1.9.116.218', '2026-09-30 07:44:59', 0, 'HeadquartersInboundController.details(..)', NULL, 'GET /apis/headquartersInbound/details', '{\"headerId\":1721}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"id\":751,\"depotId\":\"25\",\"depotName\":\"半成品仓库\",\"barCode\":\"1PH-WS79\",\"materialCode\":\"1PH-WS79\",\"name\":\"1PH WS79\",\"materialName\":\"1PH WS79\",\"standard\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"operNumber\":10000.000000,\"qtyPriceAmount\":10000.000000,\"unitPrice\":59.500000,\"finallyPrice\":59.500000,\"allPrice\":595000.000000,\"totalMoney\":595000.000000,\"itemJson\":\"{\\\"出货量\\\": 10000, \\\"价税合计\\\": 595000.0, \\\"商品单价\\\": 59.5, \\\"成品名称\\\": \\\"1PH WS79\\\", \\\"规格型号\\\": \\\"1PH WS79\\\", \\\"成品物料代码\\\": \\\"1PH-WS79\\\"}\"}]}}'); +INSERT INTO `tbl_log` VALUES (9090, NULL, '接口日志', '43.152.142.84/1.9.116.218', '2026-09-30 07:45:07', 0, 'UserController.logout(..)', NULL, 'GET /apis/user/logout', '{}', '{\"code\":400}'); +INSERT INTO `tbl_log` VALUES (9091, NULL, '接口日志', '43.174.54.44/1.9.116.218', '2026-09-30 07:45:07', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (9092, NULL, '接口日志', '43.174.32.12/1.9.116.218', '2026-09-30 07:45:07', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (9093, NULL, '接口日志', '43.174.55.40/1.9.116.218', '2026-09-30 07:45:08', 0, 'PlatformConfigController.getPlatformCheckcodeFlag(..)', NULL, 'GET /apis/platformConfig/getPlatform/checkcodeFlag', '{}', '\"1\"'); +INSERT INTO `tbl_log` VALUES (9094, NULL, '接口日志', '43.152.142.140/1.9.116.218', '2026-09-30 07:45:08', 0, 'UserController.randomImage(..)', NULL, 'GET /apis/user/randomImage', '{}', '{\"code\":200,\"data\":{\"base64\":\"data:image/jpg;base64,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\",\"uuid\":\"68e217cfc29d48a5932f9783c4863112\"}}'); +INSERT INTO `tbl_log` VALUES (9095, NULL, '接口日志', '43.152.142.29/1.9.116.218', '2026-09-30 07:49:06', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (9096, NULL, '接口日志', '43.174.54.14/1.9.116.218', '2026-09-30 07:49:06', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (9097, NULL, '接口日志', '43.152.142.57/1.9.116.218', '2026-09-30 07:49:07', 0, 'PlatformConfigController.getPlatformCheckcodeFlag(..)', NULL, 'GET /apis/platformConfig/getPlatform/checkcodeFlag', '{}', '\"1\"'); +INSERT INTO `tbl_log` VALUES (9098, NULL, '接口日志', '43.174.32.13/1.9.116.218', '2026-09-30 07:49:07', 0, 'UserController.randomImage(..)', NULL, 'GET /apis/user/randomImage', '{}', '{\"code\":200,\"data\":{\"base64\":\"data:image/jpg;base64,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\",\"uuid\":\"6697bcb0bd4d4e36bedaab83f33a8eb7\"}}'); +INSERT INTO `tbl_log` VALUES (9099, 63, '用户', '43.152.157.121/1.9.116.218', '2026-09-30 07:49:21', 0, '登录admin', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (9100, NULL, '接口日志', '43.152.157.121/1.9.116.218', '2026-09-30 07:49:21', 0, 'UserController.login(..)', NULL, 'POST /apis/user/login', '{\"userParam\":{\"code\":\"kyks\",\"loginName\":\"admin\",\"password\":\"******\",\"uuid\":\"6697bcb0bd4d4e36bedaab83f33a8eb7\"}}', '{\"code\":200,\"data\":{\"pwdSimple\":\"******\",\"user\":{\"deleteFlag\":\"0\",\"description\":\"\",\"email\":\"666666@qq.com\",\"id\":63,\"ismanager\":1,\"isystem\":1,\"leaderFlag\":\"0\",\"loginName\":\"admin\",\"password\":\"******\",\"phonenum\":\"1123123123132\",\"position\":\"主管\",\"status\":0,\"tenantId\":63,\"username\":\"admin\"},\"msgTip\":\"user can login\",\"token\":\"******\"}}'); +INSERT INTO `tbl_log` VALUES (9101, 63, '接口日志', '43.152.157.121/1.9.116.218', '2026-09-30 07:49:21', 0, 'FunctionController.findMenuByPNumber(..)', NULL, 'POST /apis/function/findMenuByPNumber', '{\"jsonObject\":{\"userId\":63,\"pNumber\":0}}', '[{\"component\":\"/layouts/TabLayout\",\"icon\":\"home\",\"id\":0,\"text\":\"首页\",\"url\":\"/dashboard/analysis\",\"textEn\":\"Home\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/SaleOrderList\",\"icon\":\"profile\",\"id\":242,\"text\":\"销售订单\",\"url\":\"/bill/sale_order\",\"textEn\":\"Sales Orders\"},{\"component\":\"/bill/SaleOutList\",\"icon\":\"profile\",\"id\":41,\"text\":\"销售出库\",\"url\":\"/bill/sale_out\",\"textEn\":\"Sales Shipments\"},{\"component\":\"/bill/DeliveryPlanList\",\"icon\":\"profile\",\"id\":271,\"text\":\"交货计划管理\",\"url\":\"/bill/delivery_plan\",\"textEn\":\"Delivery Plans\"},{\"component\":\"/bill/SaleShipmentList\",\"icon\":\"car\",\"id\":268,\"text\":\"发货管理\",\"url\":\"/bill/sale_shipment\",\"textEn\":\"Shipment Management\"},{\"component\":\"/bill/SaleBackList\",\"icon\":\"profile\",\"id\":200,\"text\":\"销售退货\",\"url\":\"/bill/sale_back\",\"textEn\":\"Sales Returns\"},{\"component\":\"/bill/RetailOutList\",\"icon\":\"profile\",\"id\":210,\"text\":\"零售出库\",\"url\":\"/bill/retail_out\",\"textEn\":\"Retail Shipments\"},{\"component\":\"/bill/RetailBackList\",\"icon\":\"profile\",\"id\":211,\"text\":\"零售退货\",\"url\":\"/bill/retail_back\",\"textEn\":\"Retail Returns\"}],\"icon\":\"shopping-cart\",\"id\":38,\"text\":\"销售管理\",\"url\":\"/billB\",\"textEn\":\"Sales Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/PurchaseApplyList\",\"icon\":\"profile\",\"id\":261,\"text\":\"请购单\",\"url\":\"/bill/purchase_apply\",\"textEn\":\"Purchase Requisitions\"},{\"component\":\"/bill/PurchaseOrderList\",\"icon\":\"profile\",\"id\":241,\"text\":\"采购订单\",\"url\":\"/bill/purchase_order\",\"textEn\":\"Purchase Orders\"},{\"component\":\"/bill/PurchaseInList\",\"icon\":\"profile\",\"id\":33,\"text\":\"采购入库\",\"url\":\"/bill/purchase_in\",\"textEn\":\"Purchase Receipts\"},{\"component\":\"/bill/PurchaseBackList\",\"icon\":\"profile\",\"id\":199,\"text\":\"采购退货\",\"url\":\"/bill/purchase_back\",\"textEn\":\"Purchase Returns\"}],\"icon\":\"retweet\",\"id\":32,\"text\":\"采购管理\",\"url\":\"/bill\",\"textEn\":\"Purchase Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/production/PackBomList\",\"icon\":\"profile\",\"id\":263,\"text\":\"生产方案\",\"url\":\"/production/pack_bom\",\"textEn\":\"Production BOMs\"},{\"component\":\"/production/OrderList\",\"icon\":\"profile\",\"id\":264,\"text\":\"生产工单\",\"url\":\"/production/order\",\"textEn\":\"Production Orders\"},{\"component\":\"/production/RequisitionList\",\"icon\":\"profile\",\"id\":265,\"text\":\"领料管理\",\"url\":\"/production/requisition\",\"textEn\":\"Material Requisitions\"},{\"component\":\"/production/ReportList\",\"icon\":\"profile\",\"id\":266,\"text\":\"完工报工\",\"url\":\"/production/report\",\"textEn\":\"Production Reports\"}],\"icon\":\"cluster\",\"id\":262,\"text\":\"生产管理\",\"url\":\"/production\",\"textEn\":\"Production Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/MaterialStock\",\"icon\":\"profile\",\"id\":246,\"text\":\"商品库存\",\"url\":\"/report/material_stock\",\"textEn\":\"Product Inventory\"},{\"component\":\"/bill/OtherInList\",\"icon\":\"profile\",\"id\":201,\"text\":\"其它入库\",\"url\":\"/bill/other_in\",\"textEn\":\"Other Receipts\"},{\"component\":\"/bill/OtherOutList\",\"icon\":\"profile\",\"id\":202,\"text\":\"其它出库\",\"url\":\"/bill/other_out\",\"textEn\":\"Other Shipments\"},{\"component\":\"/bill/HeadquartersInList\",\"icon\":\"profile\",\"id\":270,\"text\":\"总部入库\",\"url\":\"/bill/headquarters_in\",\"textEn\":\"Headquarters Receipts\"}],\"icon\":\"hdd\",\"id\":239,\"text\":\"仓库管理\",\"url\":\"/billD\",\"textEn\":\"Warehouse Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/financial/MoneyInList\",\"icon\":\"profile\",\"id\":204,\"text\":\"收款单\",\"url\":\"/financial/money_in\",\"textEn\":\"Receipt Vouchers\"},{\"component\":\"/financial/MoneyOutList\",\"icon\":\"profile\",\"id\":205,\"text\":\"付款单\",\"url\":\"/financial/money_out\",\"textEn\":\"Payment Vouchers\"}],\"icon\":\"money-collect\",\"id\":44,\"text\":\"财务管理\",\"url\":\"/financial\",\"textEn\":\"Finance Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/asset/AssetDashboard\",\"icon\":\"dashboard\",\"id\":276,\"text\":\"资产汇总\",\"url\":\"/asset\",\"textEn\":\"Asset Overview\"},{\"component\":\"/asset/AssetList\",\"icon\":\"profile\",\"id\":273,\"text\":\"资产台账\",\"url\":\"/asset/ledger\",\"textEn\":\"Asset Ledger\"},{\"component\":\"/asset/DeviceList\",\"icon\":\"tool\",\"id\":274,\"text\":\"设备台账\",\"url\":\"/asset/device\",\"textEn\":\"Device Ledger\"},{\"component\":\"/asset/InventoryList\",\"icon\":\"scan\",\"id\":275,\"text\":\"资产盘点\",\"url\":\"/asset/inventory\",\"textEn\":\"Asset Inventory\"}],\"icon\":\"bank\",\"id\":272,\"text\":\"资产管理\",\"url\":\"/assetManagement\",\"textEn\":\"Asset Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/material/MaterialCategoryList\",\"icon\":\"profile\",\"id\":22,\"text\":\"商品类别\",\"url\":\"/material/material_category\",\"textEn\":\"Product Categories\"},{\"component\":\"/material/MaterialList\",\"icon\":\"profile\",\"id\":23,\"text\":\"商品信息\",\"url\":\"/material/material\",\"textEn\":\"Product Information\"},{\"component\":\"/system/UnitList\",\"icon\":\"profile\",\"id\":220,\"text\":\"多单位\",\"url\":\"/system/unit\",\"textEn\":\"Multiple Units\"},{\"component\":\"/material/MaterialAttributeList\",\"icon\":\"profile\",\"id\":247,\"text\":\"多属性\",\"url\":\"/material/material_attribute\",\"textEn\":\"Product Attributes\"}],\"icon\":\"shopping\",\"id\":21,\"text\":\"商品管理\",\"url\":\"/material\",\"textEn\":\"Product Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/AccountReport\",\"icon\":\"profile\",\"id\":207,\"text\":\"账户统计\",\"url\":\"/report/account_report\",\"textEn\":\"Account Summary\"},{\"component\":\"/report/RetailOutReport\",\"icon\":\"profile\",\"id\":259,\"text\":\"零售统计\",\"url\":\"/report/retail_out_report\",\"textEn\":\"Retail Summary\"},{\"component\":\"/report/BuyInReport\",\"icon\":\"profile\",\"id\":208,\"text\":\"采购统计\",\"url\":\"/report/buy_in_report\",\"textEn\":\"Purchase Summary\"},{\"component\":\"/report/SaleOutReport\",\"icon\":\"profile\",\"id\":209,\"text\":\"销售统计\",\"url\":\"/report/sale_out_report\",\"textEn\":\"Sales Summary\"},{\"component\":\"/report/InDetail\",\"icon\":\"profile\",\"id\":226,\"text\":\"入库明细\",\"url\":\"/report/in_detail\",\"textEn\":\"Inbound Details\"},{\"component\":\"/report/OutDetail\",\"icon\":\"profile\",\"id\":227,\"text\":\"出库明细\",\"url\":\"/report/out_detail\",\"textEn\":\"Outbound Details\"},{\"component\":\"/report/InMaterialCount\",\"icon\":\"profile\",\"id\":228,\"text\":\"入库汇总\",\"url\":\"/report/in_material_count\",\"textEn\":\"Inbound Summary\"},{\"component\":\"/report/OutMaterialCount\",\"icon\":\"profile\",\"id\":229,\"text\":\"出库汇总\",\"url\":\"/report/out_material_count\",\"textEn\":\"Outbound Summary\"},{\"component\":\"/report/InOutStockReport\",\"icon\":\"profile\",\"id\":59,\"text\":\"进销存统计\",\"url\":\"/report/in_out_stock_report\",\"textEn\":\"Inventory Transaction Summary\"},{\"component\":\"/report/CustomerAccount\",\"icon\":\"profile\",\"id\":235,\"text\":\"客户对账\",\"url\":\"/report/customer_account\",\"textEn\":\"Customer Reconciliation\"},{\"component\":\"/report/VendorAccount\",\"icon\":\"profile\",\"id\":237,\"text\":\"供应商对账\",\"url\":\"/report/vendor_account\",\"textEn\":\"Supplier Reconciliation\"},{\"component\":\"/report/StockWarningReport\",\"icon\":\"profile\",\"id\":244,\"text\":\"库存预警\",\"url\":\"/report/stock_warning_report\",\"textEn\":\"Stock Alerts\"}],\"icon\":\"pie-chart\",\"id\":198,\"text\":\"报表查询\",\"url\":\"/report\",\"textEn\":\"Reports\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/VendorList\",\"icon\":\"profile\",\"id\":25,\"text\":\"供应商信息\",\"url\":\"/system/vendor\",\"textEn\":\"Suppliers\"},{\"component\":\"/system/CustomerList\",\"icon\":\"profile\",\"id\":217,\"text\":\"客户信息\",\"url\":\"/system/customer\",\"textEn\":\"Customers\"},{\"component\":\"/system/MemberList\",\"icon\":\"profile\",\"id\":218,\"text\":\"会员信息\",\"url\":\"/system/member\",\"textEn\":\"Members\"},{\"component\":\"/system/CustomerCategoryList\",\"icon\":\"bars\",\"id\":267,\"text\":\"客户分类\",\"url\":\"/system/customerCategory\",\"textEn\":\"Customer Categories\"},{\"component\":\"/system/DepotList\",\"icon\":\"profile\",\"id\":26,\"text\":\"仓库信息\",\"url\":\"/system/depot\",\"textEn\":\"Warehouses\"},{\"component\":\"/system/InOutItemList\",\"icon\":\"profile\",\"id\":194,\"text\":\"收支项目\",\"url\":\"/system/in_out_item\",\"textEn\":\"Income and Expense Items\"},{\"component\":\"/system/AccountList\",\"icon\":\"profile\",\"id\":195,\"text\":\"结算账户\",\"url\":\"/system/account\",\"textEn\":\"Settlement Accounts\"},{\"component\":\"/system/PersonList\",\"icon\":\"profile\",\"id\":31,\"text\":\"操作人员管理\",\"url\":\"/system/person\",\"textEn\":\"Operators\"}],\"icon\":\"appstore\",\"id\":24,\"text\":\"基础资料\",\"url\":\"/systemA\",\"textEn\":\"Master Data\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/RoleList\",\"icon\":\"profile\",\"id\":13,\"text\":\"角色管理\",\"url\":\"/system/role\",\"textEn\":\"Role Management\"},{\"component\":\"/system/UserList\",\"icon\":\"profile\",\"id\":14,\"text\":\"用户管理\",\"url\":\"/system/user\",\"textEn\":\"User Management\"},{\"component\":\"/system/OrganizationList\",\"icon\":\"profile\",\"id\":243,\"text\":\"部门管理\",\"url\":\"/system/organization\",\"textEn\":\"Department Management\"},{\"component\":\"/system/LogList\",\"icon\":\"profile\",\"id\":15,\"text\":\"日志管理\",\"url\":\"/system/log\",\"textEn\":\"Log Management\"},{\"component\":\"/material/MaterialPropertyList\",\"icon\":\"profile\",\"id\":236,\"text\":\"商品属性\",\"url\":\"/material/material_property\",\"textEn\":\"Product Properties\"},{\"component\":\"/system/SystemConfigList\",\"icon\":\"profile\",\"id\":234,\"text\":\"系统配置\",\"url\":\"/system/system_config\",\"textEn\":\"System Configuration\"},{\"component\":\"/system/FunctionList\",\"icon\":\"profile\",\"id\":16,\"text\":\"菜单管理\",\"url\":\"/system/function\",\"textEn\":\"Resource Menus\"},{\"component\":\"/system/PluginList\",\"icon\":\"profile\",\"id\":245,\"text\":\"插件管理\",\"url\":\"/system/plugin\",\"textEn\":\"Plugin Management\"},{\"component\":\"/system/DictList\",\"icon\":\"profile\",\"id\":260,\"text\":\"字典管理\",\"url\":\"/system/dict\",\"textEn\":\"Dictionary Management\"},{\"component\":\"/system/PlatformConfigList\",\"icon\":\"profile\",\"id\":258,\"text\":\"平台配置\",\"url\":\"/system/platform_config\",\"textEn\":\"Platform Configuration\"}],\"icon\":\"setting\",\"id\":1,\"text\":\"系统管理\",\"url\":\"/system\",\"textEn\":\"System Management\"}]'); +INSERT INTO `tbl_log` VALUES (9102, 63, '接口日志', '43.152.142.109/1.9.116.218', '2026-09-30 07:49:21', 0, 'MaterialPropertyController.getAllList(..)', NULL, 'GET /apis/materialProperty/getAllList', '{}', '{\"code\":200,\"data\":[{\"anotherName\":\"扩展1\",\"id\":1,\"nativeName\":\"扩展1\"},{\"anotherName\":\"扩展2\",\"id\":2,\"nativeName\":\"扩展2\"},{\"anotherName\":\"扩展3\",\"id\":3,\"nativeName\":\"扩展3\"}]}'); +INSERT INTO `tbl_log` VALUES (9103, 63, '接口日志', '43.174.32.34/1.9.116.218', '2026-09-30 07:49:21', 0, 'UserController.getUserBtnByCurrentUser(..)', NULL, 'GET /apis/user/getUserBtnByCurrentUser', '{}', '{\"code\":200,\"data\":{\"userBtn\":[{\"btnStr\":\"8,1\",\"url\":\"/system/role\"},{\"btnStr\":\"1\",\"url\":\"/system/user\"},{\"btnStr\":\"1\",\"url\":\"/system/organization\"},{\"btnStr\":\"1\",\"url\":\"/material/material_property\"},{\"btnStr\":\"1\",\"url\":\"/system/system_config\"},{\"btnStr\":\"1\",\"url\":\"/system/function\"},{\"btnStr\":\"1\",\"url\":\"/system/plugin\"},{\"btnStr\":\"1\",\"url\":\"/material/material_category\"},{\"btnStr\":\"1,3\",\"url\":\"/material/material\"},{\"btnStr\":\"1\",\"url\":\"/system/unit\"},{\"btnStr\":\"1\",\"url\":\"/material/material_attribute\"},{\"btnStr\":\"1,3\",\"url\":\"/system/vendor\"},{\"btnStr\":\"1,3\",\"url\":\"/system/customer\"},{\"btnStr\":\"1,3\",\"url\":\"/system/member\"},{\"btnStr\":\"1\",\"url\":\"/system/depot\"},{\"btnStr\":\"1\",\"url\":\"/system/in_out_item\"},{\"btnStr\":\"1\",\"url\":\"/system/account\"},{\"btnStr\":\"1\",\"url\":\"/system/person\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_apply\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_out\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/delivery_plan\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/sale_shipment\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_out\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/order\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/requisition\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/report\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/giro\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/advance_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/allocation_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/assemble\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/headquarters_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/disassemble\"}]}}'); +INSERT INTO `tbl_log` VALUES (9104, 63, '接口日志', '43.174.32.18/1.9.116.218', '2026-09-30 07:49:22', 0, 'MsgController.getMsgByStatus(..)', NULL, 'GET /apis/msg/getMsgByStatus', '{\"status\":\"1\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (9105, 63, '接口日志', '43.174.54.50/1.9.116.218', '2026-09-30 07:49:22', 0, 'MsgController.getList(..)', NULL, 'GET /apis/msg/list', '{\"search\":\"{\\\"name\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9106, 63, '接口日志', '43.152.142.112/1.9.116.218', '2026-09-30 07:49:22', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-04\",\"inbound\":100669.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (9107, 63, '接口日志', '43.152.157.121/1.9.116.218', '2026-09-30 07:49:31', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (9108, 63, '接口日志', '43.152.142.32/1.9.116.218', '2026-09-30 07:49:31', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9109, 63, '接口日志', '43.152.142.105/1.9.116.218', '2026-09-30 07:49:31', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (9110, 63, '接口日志', '43.174.53.14/1.9.116.218', '2026-09-30 07:49:31', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"其它\\\",\\\"subType\\\":\\\"销售订单\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-30\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"createTimeRange\\\":[\\\"2026-06-29T16:00:00.000Z\\\",\\\"2026-09-29T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":5,\"rows\":[{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789718483000,\"creator\":63,\"debt\":808500.000000,\"defaultNumber\":\"XSDD00000001726\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":808500.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1719,\"lastDebt\":808500.000000,\"lastDeposit\":0.000000,\"materialCount\":10000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD00000001726\",\"operTime\":1789732682000,\"operTimeStr\":\"2026-09-18 15:58:02\",\"organId\":90,\"organName\":\"TNB\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"totalPrice\":735000.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789726236000,\"creator\":63,\"debt\":340000000.000000,\"defaultNumber\":\"XSDD00000001724\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":340000000.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1718,\"lastDebt\":340000000.000000,\"lastDeposit\":0.000000,\"materialCount\":1000000.000000,\"materialsList\":\"3PH APEC3-WC 3PH APEC3-WC 3PH APEC3-WC \",\"number\":\"XSDD00000001724\",\"operTime\":1789725706000,\"operTimeStr\":\"2026-09-18 14:01:46\",\"organId\":90,\"organName\":\"TNB\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"0\",\"subType\":\"销售订单\",\"totalPrice\":340000000.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1785355200000,\"creator\":63,\"debt\":242550.000000,\"defaultNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":242550.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1580,\"lastDebt\":242550.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":3000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303475-1PH-WS79-ADD1\",\"operTime\":1785355200000,\"operTimeStr\":\"2026-07-30 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303475\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":242550.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1785355200000,\"creator\":63,\"debt\":323400.000000,\"defaultNumber\":\"XSDD-42303447-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":323400.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1574,\"lastDebt\":323400.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":4000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303447-1PH-WS79-ADD1\",\"operTime\":1785355200000,\"operTimeStr\":\"2026-07-30 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303447\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":323400.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1782936000000,\"creator\":63,\"debt\":323400.000000,\"defaultNumber\":\"XSDD-42303429-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":323400.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1569,\"lastDebt\":323400.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":4000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303429-1PH-WS79-ADD1\",\"operTime\":1782936000000,\"operTimeStr\":\"2026-07-02 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303429\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":323400.000000,\"type\":\"其它\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (9111, 63, '接口日志', '43.152.142.132/1.9.116.218', '2026-09-30 07:49:31', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9112, 63, '接口日志', '43.152.142.40/1.9.116.218', '2026-09-30 07:49:31', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (9113, 63, '接口日志', '43.174.32.23/1.9.116.218', '2026-09-30 07:49:31', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (9114, 63, '接口日志', '43.174.52.68/1.9.116.218', '2026-09-30 07:49:31', 0, 'PersonController.getPersonByNumType(..)', NULL, 'GET /apis/person/getPersonByNumType', '{\"typeNum\":\"1\"}', '[]'); +INSERT INTO `tbl_log` VALUES (9115, 63, '接口日志', '43.174.53.30/1.9.116.218', '2026-09-30 07:49:31', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9116, 63, '接口日志', '43.152.157.121/1.9.116.218', '2026-09-30 07:49:33', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (9117, 63, '接口日志', '43.152.142.29/1.9.116.218', '2026-09-30 07:49:33', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9118, 63, '接口日志', '43.174.53.17/1.9.116.218', '2026-09-30 07:49:33', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (9119, 63, '接口日志', '43.152.142.43/1.9.116.218', '2026-09-30 07:49:33', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (9120, 63, '接口日志', '43.152.142.86/1.9.116.218', '2026-09-30 07:49:33', 0, 'PersonController.getPersonByNumType(..)', NULL, 'GET /apis/person/getPersonByNumType', '{\"typeNum\":\"1\"}', '[]'); +INSERT INTO `tbl_log` VALUES (9121, 63, '接口日志', '43.152.142.78/1.9.116.218', '2026-09-30 07:49:33', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9122, 63, '接口日志', '43.174.54.14/1.9.116.218', '2026-09-30 07:49:33', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9123, 63, '接口日志', '43.152.142.139/1.9.116.218', '2026-09-30 07:49:33', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"出库\\\",\\\"subType\\\":\\\"销售\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-30\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"createTimeRange\\\":[\\\"2026-06-29T16:00:00.000Z\\\",\\\"2026-09-29T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":50,\"rows\":[{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789718584000,\"creator\":63,\"debt\":808500.000000,\"defaultNumber\":\"XSCK00000001728\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":808500.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1720,\"lastDebt\":808500.000000,\"lastDeposit\":0.000000,\"linkNumber\":\"XSDD00000001726\",\"materialCount\":10000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK00000001728\",\"operTime\":1789732981000,\"operTimeStr\":\"2026-09-18 16:03:01\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"totalPrice\":735000.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1786305600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-87\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1671,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303506-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-87\",\"operTime\":1786305600000,\"operTimeStr\":\"2026-08-10 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1786305600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2159-86\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1670,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303506-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2159-86\",\"operTime\":1786305600000,\"operTimeStr\":\"2026-08-10 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2159\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785873600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-DO_2158-85\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1669,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-DO_2158-85\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:DO_2158\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785873600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-84\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1668,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-84\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785873600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-DO_2157-83\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1667,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-DO_2157-83\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:DO_2157\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785268800000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2150-69\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1665,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303480-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2150-69\",\"operTime\":1785268800000,\"operTimeStr\":\"2026-07-29 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2150\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784750400000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2142-68\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1664,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303480-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2142-68\",\"operTime\":1784750400000,\"operTimeStr\":\"2026-07-23 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2142\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784145600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-67\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1663,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-67\",\"operTime\":1784145600000,\"operTimeStr\":\"2026-07-16 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784145600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2134-66\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1662,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2134-66\",\"operTime\":1784145600000,\"operTimeStr\":\"2026-07-16 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2134\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (9124, 63, '接口日志', '43.152.142.141/1.9.116.218', '2026-09-30 07:49:33', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (9125, 63, '接口日志', '43.152.142.64/1.9.116.218', '2026-09-30 07:49:33', 0, 'DeliveryPlanController.getList(..)', NULL, 'GET /apis/deliveryPlan/list', '{\"search\":\"{\\\"planNumber\\\":\\\"\\\",\\\"sourceBillNumber\\\":\\\"\\\",\\\"saleOrderNumber\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"createTime\":1789720385000,\"creator\":63,\"creatorName\":\"admin\",\"customerId\":90,\"customerName\":\"TNB\",\"deleteFlag\":\"0\",\"id\":7,\"materialsList\":\"1PH WS79\",\"planNumber\":\"JH00000001741\",\"planQuantity\":10000.000000,\"saleOrderNumber\":\"XSDD00000001726\",\"shippedQuantity\":0.000000,\"sourceBillId\":1720,\"sourceBillNumber\":\"XSCK00000001728\",\"sourceType\":\"sale\",\"status\":\"2\"},{\"createTime\":1789717298000,\"creator\":63,\"creatorName\":\"admin\",\"customerId\":90,\"customerName\":\"TNB\",\"deleteFlag\":\"0\",\"id\":6,\"materialsList\":\"3PH APEC3-WC\",\"planNumber\":\"JH00000001717\",\"planQuantity\":149.000000,\"saleOrderNumber\":\"XSDD-42260529-3PH-APEC3-WC-OV\",\"shippedQuantity\":0.000000,\"sourceBillId\":1714,\"sourceBillNumber\":\"XSCK-3PH-APEC3-WC-OV-28\",\"sourceType\":\"sale\",\"status\":\"2\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (9126, 63, '接口日志', '43.152.142.109/1.9.116.218', '2026-09-30 07:49:36', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9127, 63, '接口日志', '43.152.142.57/1.9.116.218', '2026-09-30 07:49:36', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (9128, 63, '接口日志', '43.174.32.18/1.9.116.218', '2026-09-30 07:49:36', 0, 'DepotItemController.findDetailByDepotIdsAndMaterialId(..)', NULL, 'GET /apis/depotItem/findDetailByDepotIdsAndMaterialId', '{\"pageSize\":10,\"currentPage\":1,\"depotIds\":\"\",\"number\":\"\",\"beginTime\":\"\",\"endTime\":\"\",\"stockPriceFlag\":false}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9129, 63, '接口日志', '43.174.32.13/1.9.116.218', '2026-09-30 07:49:36', 0, 'DepotItemController.findDetailByDepotIdsAndMaterialId(..)', NULL, 'GET /apis/depotItem/findDetailByDepotIdsAndMaterialId', '{\"pageSize\":10,\"currentPage\":1,\"depotIds\":\"\",\"number\":\"\",\"beginTime\":\"\",\"endTime\":\"\",\"stockPriceFlag\":true}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9130, 63, '接口日志', '43.174.32.34/1.9.116.218', '2026-09-30 07:49:36', 0, 'MaterialController.getListWithStock(..)', NULL, 'GET /apis/material/getListWithStock', '{\"currentPage\":1,\"pageSize\":10,\"position\":\"\",\"materialParam\":\"\",\"zeroStock\":0,\"column\":\"createTime\",\"order\":\"desc\"}', '{\"code\":200,\"data\":{\"currentStockPrice\":107372523.170000000000,\"moveAvgPriceFlag\":false,\"total\":22,\"showStockPrice\":true,\"currentWeight\":0E-12,\"currentStock\":519203.000000,\"rows\":[{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"成品\",\"color\":\"\",\"currentStock\":7223.000000,\"currentStockMovePrice\":2293302.500000000000,\"currentStockPrice\":2293302.500000000000,\"currentUnitPrice\":317.500000,\"currentWeight\":0E-12,\"id\":704,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"3PH-APEC3-WC\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"3PH APEC3-WC\",\"name\":\"3PH APEC3-WC\",\"position\":\"\",\"purchaseDecimal\":317.500000,\"standard\":\"3PH APEC3-WC\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"成品\",\"color\":\"\",\"currentStock\":52400.000000,\"currentStockMovePrice\":3117800.000000000000,\"currentStockPrice\":3117800.000000000000,\"currentUnitPrice\":59.500000,\"currentWeight\":0E-12,\"id\":703,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"1PH-WS79\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"1PH WS79\",\"name\":\"1PH WS79\",\"position\":\"\",\"purchaseDecimal\":59.500000,\"standard\":\"1PH WS79\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":1000.000000,\"currentStockMovePrice\":24300.000000000000,\"currentStockPrice\":24300.000000000000,\"currentUnitPrice\":24.300000,\"currentWeight\":0E-12,\"id\":702,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00722\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-RS178(VA)\",\"name\":\"MD-RS178(VA) RS485分线器\",\"position\":\"\",\"purchaseDecimal\":24.300000,\"standard\":\"MD-RS178(VA)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":100.000000,\"currentStockMovePrice\":14256.000000000000,\"currentStockPrice\":14256.000000000000,\"currentUnitPrice\":142.560000,\"currentWeight\":0E-12,\"id\":701,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.0068900002\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-RS114(VB)\",\"name\":\"MD-RS114(VB) 基于RS485的MODBS TCPMODBS RTUASVII转换模块_(DZG)\",\"position\":\"\",\"purchaseDecimal\":142.560000,\"standard\":\"MD-RS114(VB)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":50.000000,\"currentStockMovePrice\":6642.000000000000,\"currentStockPrice\":6642.000000000000,\"currentUnitPrice\":132.840000,\"currentWeight\":0E-12,\"id\":700,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00686\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"TC160(VA)\",\"name\":\"TC160(VA) 通讯模块供电盒\",\"position\":\"\",\"purchaseDecimal\":132.840000,\"standard\":\"TC160(VA)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":76970.000000,\"currentStockMovePrice\":7697.000000000000,\"currentStockPrice\":7697.000000000000,\"currentUnitPrice\":0.100000,\"currentWeight\":0E-12,\"id\":699,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00654\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-4G111(VF)\",\"name\":\"MD-4G111(VF) 4G模块\",\"position\":\"\",\"purchaseDecimal\":0.100000,\"standard\":\"MD-4G111(VF)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":50.000000,\"currentStockMovePrice\":16200.000000000000,\"currentStockPrice\":16200.000000000000,\"currentUnitPrice\":324.000000,\"currentWeight\":0E-12,\"id\":698,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00562\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-4GVIII(VB)\",\"name\":\"MD-4GVIII(VB)\",\"position\":\"\",\"purchaseDecimal\":324.000000,\"standard\":\"MD-4GVIII(VB)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":500.000000,\"currentStockMovePrice\":64800.000000000000,\"currentStockPrice\":64800.000000000000,\"currentUnitPrice\":129.600000,\"currentWeight\":0E-12,\"id\":697,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00553\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MT-P109(VA)\",\"name\":\"MT-P109(VA)\",\"position\":\"\",\"purchaseDecimal\":129.600000,\"standard\":\"MT-P109(VA)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":54656.000000,\"currentStockMovePrice\":5465.600000000000,\"currentStockPrice\":5465.600000000000,\"currentUnitPrice\":0.100000,\"currentWeight\":0E-12,\"id\":696,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00547\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MT-3NSXL(VC)\",\"name\":\"MT-3NSXL(VC)RF通讯模块\",\"position\":\"\",\"purchaseDecimal\":0.100000,\"standard\":\"MT-3NSXL(VC)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":100.000000,\"currentStockMovePrice\":100375.200000000000,\"currentStockPrice\":100375.200000000000,\"currentUnitPrice\":1003.752000,\"currentWeight\":0E-12,\"id\":695,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00422\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-LR63(VB)\",\"name\":\"MD-LR63(VB)\",\"position\":\"\",\"purchaseDecimal\":1003.752000,\"standard\":\"MD-LR63(VB)\",\"unitName\":\"件\"}]}}'); +INSERT INTO `tbl_log` VALUES (9131, 63, '接口日志', '43.152.142.112/1.9.116.218', '2026-09-30 07:49:39', 0, 'AssetController.dashboard()', NULL, 'GET /apis/asset/dashboard', '{}', '{\"code\":200,\"data\":{\"summary\":{\"activeCount\":259,\"deviceCount\":10,\"assetQuantity\":289.000000,\"assetCount\":255,\"assetValue\":17260.000000,\"openInventoryCount\":2,\"managedCount\":265},\"statusDistribution\":[{\"code\":\"IN_USE\",\"value\":259},{\"code\":\"REPAIR\",\"value\":3},{\"code\":\"SCRAPPED\",\"value\":3}],\"departmentDistribution\":[{\"name\":\"Production\",\"value\":56},{\"name\":\"未指定\",\"value\":54},{\"name\":\"Laboratory\",\"value\":48},{\"name\":\"Technical & Technologies\",\"value\":29},{\"name\":\"Engineering\",\"value\":18},{\"name\":\"Not Specified\",\"value\":11},{\"name\":\"Human Resources\",\"value\":6},{\"name\":\"Quality\",\"value\":6}],\"deviceCategoryDistribution\":[{\"name\":\"检测设备\",\"value\":2},{\"name\":\"贴装设备\",\"value\":2},{\"name\":\"动力设备\",\"value\":1},{\"name\":\"印刷设备\",\"value\":1},{\"name\":\"工装设备\",\"value\":1},{\"name\":\"服务器\",\"value\":1},{\"name\":\"焊接设备\",\"value\":1},{\"name\":\"物流设备\",\"value\":1}],\"message\":\"成功\",\"categoryDistribution\":[{\"code\":\"HARDWARE\",\"name\":\"硬件资产\",\"value\":198.00},{\"code\":\"SOFTWARE\",\"name\":\"软件资产\",\"value\":67.00},{\"code\":\"SIM_CARD\",\"name\":\"SIM卡\",\"value\":24.00}],\"recentInventories\":[{\"inventoryNo\":\"PD20260921190840893\",\"inventoryUserName\":\"admin\",\"planName\":\"2026年09月资产设备专项盘点\",\"id\":6,\"totalCount\":1,\"inventoriedCount\":1,\"status\":\"CLOSED\",\"updatedAt\":\"2026-09-21 19:17:28\"},{\"inventoryNo\":\"PD20260921170623856\",\"inventoryUserName\":\"张三\",\"planName\":\"2026年09月资产设备专项盘点\",\"id\":4,\"totalCount\":8,\"inventoriedCount\":8,\"status\":\"CLOSED\",\"updatedAt\":\"2026-09-21 19:16:33\"},{\"inventoryNo\":\"PD20260921190800418\",\"inventoryUserName\":\"张三\",\"planName\":\"2026年09月资产设备专项盘点\",\"id\":5,\"totalCount\":2,\"inventoriedCount\":0,\"status\":\"ACCEPTED\",\"updatedAt\":\"2026-09-21 19:08:13\"},{\"inventoryNo\":\"PD20260918131230171\",\"inventoryUserName\":\"张伟\",\"planName\":\"2026年09月资产设备专项盘点\",\"id\":1,\"totalCount\":3,\"inventoriedCount\":1,\"status\":\"IN_PROGRESS\",\"updatedAt\":\"2026-09-21 14:35:59\"}],\"updatedAt\":\"2026-09-30\"}}'); +INSERT INTO `tbl_log` VALUES (9132, 63, '接口日志', '43.174.54.50/1.9.116.218', '2026-09-30 07:49:45', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":255,\"rows\":[{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019200694297052\",\"assetName\":\"SIM卡 896019200694297052\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"6\",\"externalSource\":\"SIM\",\"id\":270,\"keeper\":\"UITM Dungun\",\"location\":\"SMT (???)\",\"originalValue\":0.000000,\"quantity\":1.000000,\"source\":\"SAS\",\"specification\":\"183.171.146.98\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019190221500578\",\"assetName\":\"SIM卡 896019190221500578\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"5\",\"externalSource\":\"SIM\",\"id\":269,\"keeper\":\"SMT\",\"location\":\"UITM Dungun\",\"originalValue\":0.000000,\"purchaseDate\":1608062400000,\"quantity\":1.000000,\"remark\":\"启用日期: 2020-12-16\",\"source\":\"SAS\",\"specification\":\"183.171.14.125\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019190221500576\",\"assetName\":\"SIM卡 896019190221500576\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"1\",\"externalSource\":\"SIM\",\"id\":268,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1608062400000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2020-12-16\",\"source\":\"SAS\",\"specification\":\"183.171.144.65\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607778\",\"assetName\":\"SIM卡 896019210381607778\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"2\",\"externalSource\":\"SIM\",\"id\":267,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1711051200000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2024-03-22\",\"source\":\"SAS\",\"specification\":\"183.171.15.60\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607781\",\"assetName\":\"SIM卡 896019210381607781\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"9\",\"externalSource\":\"SIM\",\"id\":266,\"keeper\":\"SMT\",\"location\":\"SMT (RnD) Modem RnD\",\"originalValue\":0.000000,\"purchaseDate\":1711051200000,\"quantity\":1.000000,\"remark\":\"设备序列号: 21070014;电表序列号: 320910015;启用日期: 2024-03-22\",\"source\":\"SAS\",\"specification\":\"183.171.5.142 / KM08-LTE Modem / 21070014\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607777\",\"assetName\":\"SIM卡 896019210381607777\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"3\",\"externalSource\":\"SIM\",\"id\":265,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1720987200000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2024-07-15\",\"source\":\"SAS\",\"specification\":\"183.171.40.182\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607782\",\"assetName\":\"SIM卡 896019210381607782\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"4\",\"externalSource\":\"SIM\",\"id\":264,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1720987200000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2024-07-15\",\"source\":\"SAS\",\"specification\":\"183.171.40.117\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607784\",\"assetName\":\"SIM卡 896019210381607784\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"7\",\"externalSource\":\"SIM\",\"id\":263,\"keeper\":\"SMT\",\"location\":\"SMT (Modem-Production)\",\"originalValue\":0.000000,\"purchaseDate\":1727553600000,\"quantity\":1.000000,\"remark\":\"设备序列号: 20041004;启用日期: 2024-09-29\",\"source\":\"SAS\",\"specification\":\"183.171.50.5 / KM08-LTE Modem / 20041004\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607783\",\"assetName\":\"SIM卡 896019210381607783\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"8\",\"externalSource\":\"SIM\",\"id\":262,\"keeper\":\"SMT\",\"location\":\"SMT (RnD) Modem Store\",\"originalValue\":0.000000,\"purchaseDate\":1727553600000,\"quantity\":1.000000,\"remark\":\"设备序列号: 2403005;启用日期: 2024-09-29\",\"source\":\"SAS\",\"specification\":\"183.171.50.6 / KM08-LTE Modem / 2403005\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607785\",\"assetName\":\"SIM卡 896019210381607785\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"10\",\"externalSource\":\"SIM\",\"id\":261,\"keeper\":\"SMT\",\"location\":\"SMT (RnD) Alyaa\",\"originalValue\":0.000000,\"purchaseDate\":1766433600000,\"quantity\":1.000000,\"remark\":\"设备序列号: 21070011;电表序列号: 320910014;启用日期: 2025-12-23\",\"source\":\"SAS\",\"specification\":\"183.171.151.171 / KM08-LTE Modem / 21070011\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000}]}}'); +INSERT INTO `tbl_log` VALUES (9133, 63, '接口日志', '43.152.142.40/1.9.116.218', '2026-09-30 07:49:45', 0, 'AssetController.categoryOptions()', NULL, 'GET /apis/asset/category/options', '{}', '{\"code\":200,\"data\":{\"rows\":[{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"尚未归入具体种类的资产\",\"updateTime\":1790613193000,\"categoryCode\":\"UNCATEGORIZED\",\"id\":4,\"sort\":10,\"categoryName\":\"未分类\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System 硬件台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"HARDWARE\",\"id\":5,\"sort\":20,\"categoryName\":\"硬件资产\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System 软件台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"SOFTWARE\",\"id\":6,\"sort\":30,\"categoryName\":\"软件资产\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System SIM 卡台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"SIM_CARD\",\"id\":7,\"sort\":40,\"categoryName\":\"SIM卡\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_01BF8DA563A0\",\"id\":11,\"sort\":100,\"categoryName\":\"生产设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_7129859760C3\",\"id\":12,\"sort\":100,\"categoryName\":\"检测设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_9F38069B30A1\",\"id\":13,\"sort\":100,\"categoryName\":\"动力设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_75F489029B11\",\"id\":14,\"sort\":100,\"categoryName\":\"IT设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_3DDFE01CA0B8\",\"id\":15,\"sort\":100,\"categoryName\":\"物流设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_B5D44F2B039A\",\"id\":16,\"sort\":100,\"categoryName\":\"工装设备\",\"enabled\":true}],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9134, 63, '接口日志', '43.152.142.32/1.9.116.218', '2026-09-30 07:49:46', 0, 'AssetDeviceController.list(..)', NULL, 'GET /apis/assetDevice/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":10,\"rows\":[{\"assetId\":8,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"工装设备\",\"deviceCode\":\"TOOL-STENCIL-CLEAN-01\",\"deviceName\":\"全自动钢网清洗机\",\"enabledDate\":1739822400000,\"id\":10,\"keeper\":\"王磊\",\"location\":\"一车间 钢网房\",\"manufacturer\":\"SAWA\",\"model\":\"SC-A1000\",\"nextMaintenanceDate\":1794254400000,\"purchaseDate\":1739131200000,\"remark\":\"水基清洗、漂洗、热风干燥一体化\",\"serialNumber\":\"SAWA-A1000-250210\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetId\":7,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"物流设备\",\"deviceCode\":\"WH-FORKLIFT-01\",\"deviceName\":\"2 吨电动叉车\",\"enabledDate\":1722456000000,\"id\":9,\"keeper\":\"张伟\",\"location\":\"原材料仓充电区\",\"manufacturer\":\"Toyota\",\"model\":\"8FBE20\",\"nextMaintenanceDate\":1792872000000,\"purchaseDate\":1721592000000,\"remark\":\"锂电池版本,配置蓝光安全警示灯\",\"serialNumber\":\"TY-8FBE20-240722\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"仓储物流部\"},{\"assetId\":6,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"服务器\",\"deviceCode\":\"IT-MES-DB-01\",\"deviceName\":\"MES 数据库主服务器\",\"enabledDate\":1737489600000,\"id\":8,\"keeper\":\"赵敏\",\"location\":\"数据中心 A03-U18\",\"manufacturer\":\"Dell\",\"model\":\"PowerEdge R760\",\"nextMaintenanceDate\":1797278400000,\"purchaseDate\":1736884800000,\"remark\":\"双路 CPU、512GB 内存、全闪存 RAID10\",\"serialNumber\":\"CN-R760-25011501\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"信息技术部\"},{\"assetId\":5,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"动力设备\",\"deviceCode\":\"UTIL-AIR-01\",\"deviceName\":\"变频螺杆空压机\",\"enabledDate\":1701374400000,\"id\":7,\"keeper\":\"陈晨\",\"location\":\"动力站 1 号机位\",\"manufacturer\":\"Atlas Copco\",\"model\":\"GA22 VSD+\",\"nextMaintenanceDate\":1790798400000,\"purchaseDate\":1700424000000,\"remark\":\"运行压力 0.72MPa,接入能源管理系统\",\"serialNumber\":\"AC-GA22-2311209\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"设备动力部\"},{\"assetId\":4,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"检测设备\",\"deviceCode\":\"QC-SPI-01\",\"deviceName\":\"在线 3D SPI\",\"enabledDate\":1713384000000,\"id\":6,\"keeper\":\"陈晨\",\"lastInventoryTime\":1789986951000,\"location\":\"一车间 印刷检测区\",\"manufacturer\":\"Koh Young\",\"model\":\"KY8030-3\",\"nextMaintenanceDate\":1793908800000,\"purchaseDate\":1712347200000,\"remark\":\"与印刷机闭环反馈锡膏偏移数据\",\"serialNumber\":\"KY-8030-24040608\",\"status\":\"IN_USE\",\"updateTime\":1789986959000,\"useDepartment\":\"品质部\"},{\"assetId\":3,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"检测设备\",\"deviceCode\":\"QC-AOI-01\",\"deviceName\":\"在线 3D AOI\",\"enabledDate\":1713384000000,\"id\":5,\"keeper\":\"陈晨\",\"lastInventoryTime\":1790003830000,\"location\":\"一车间 AOI 检测区\",\"manufacturer\":\"Koh Young\",\"model\":\"Zenith 2\",\"nextMaintenanceDate\":1793822400000,\"purchaseDate\":1712347200000,\"remark\":\"具备 AI 缺陷复判和 SPC 数据接口\",\"serialNumber\":\"KY-Z2-24040615\",\"status\":\"IN_USE\",\"updateTime\":1790003830000,\"useDepartment\":\"品质部\"},{\"assetId\":2,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"焊接设备\",\"deviceCode\":\"SMT-L01-REFLOW-01\",\"deviceName\":\"十温区氮气回流焊炉\",\"enabledDate\":1712692800000,\"id\":4,\"keeper\":\"王磊\",\"location\":\"一车间 SMT-01 线后段\",\"manufacturer\":\"Heller Industries\",\"model\":\"HELLER 1936MK7\",\"nextMaintenanceDate\":1792440000000,\"purchaseDate\":1710705600000,\"remark\":\"氮气闭环控制,支持双轨独立调宽\",\"serialNumber\":\"HLR1936-2403268\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetId\":1,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"贴装设备\",\"deviceCode\":\"SMT-L01-MOUNTER-B\",\"deviceName\":\"多功能贴片机 B\",\"enabledDate\":1712520000000,\"id\":3,\"keeper\":\"王磊\",\"location\":\"一车间 SMT-01 线 B 工位\",\"manufacturer\":\"Panasonic\",\"model\":\"Panasonic NPM-W2S\",\"nextMaintenanceDate\":1792094400000,\"purchaseDate\":1710705600000,\"remark\":\"负责异形件及高精度元件贴装\",\"serialNumber\":\"NPMW2S24031802\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetId\":1,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"贴装设备\",\"deviceCode\":\"SMT-L01-MOUNTER-A\",\"deviceName\":\"高速模块贴片机 A\",\"enabledDate\":1712520000000,\"id\":2,\"keeper\":\"王磊\",\"location\":\"一车间 SMT-01 线 A 工位\",\"manufacturer\":\"Panasonic\",\"model\":\"Panasonic NPM-D3A\",\"nextMaintenanceDate\":1792008000000,\"purchaseDate\":1710705600000,\"remark\":\"前段高速贴装,配置 16 头轻量贴装头\",\"serialNumber\":\"NPMD3A24031801\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetId\":1,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"印刷设备\",\"deviceCode\":\"SMT-L01-PRINTER-01\",\"deviceName\":\"全自动锡膏印刷机\",\"enabledDate\":1712520000000,\"id\":1,\"keeper\":\"王磊\",\"lastInventoryTime\":1789726083000,\"location\":\"一车间 SMT-01 线前段\",\"manufacturer\":\"ASMPT\",\"model\":\"DEK NeoHorizon 03iX\",\"nextMaintenanceDate\":1791403200000,\"purchaseDate\":1710705600000,\"remark\":\"配置 2D 检测与自动擦网单元\",\"serialNumber\":\"DEK24NH03187\",\"status\":\"IN_USE\",\"updateTime\":1789726082000,\"useDepartment\":\"SMT生产部\"}]}}'); +INSERT INTO `tbl_log` VALUES (9135, 63, '接口日志', '43.174.53.14/1.9.116.218', '2026-09-30 07:49:47', 0, 'AssetInventoryController.operatorOptions()', NULL, 'GET /apis/assetInventory/operatorOptions', '{}', '{\"code\":200,\"data\":{\"rows\":[{\"loginName\":\"admin\",\"name\":\"admin\",\"id\":63},{\"loginName\":\"admin2\",\"name\":\"admin2\",\"id\":149}],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9136, 63, '接口日志', '43.152.142.105/1.9.116.218', '2026-09-30 07:49:47', 0, 'AssetInventoryController.list(..)', NULL, 'GET /apis/assetInventory/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":4,\"rows\":[{\"abnormalCount\":0,\"auditTime\":1790003845000,\"auditUserId\":149,\"completedAt\":1790003836000,\"createTime\":1790003320000,\"creator\":149,\"deadline\":1790258400000,\"deleteFlag\":\"0\",\"id\":6,\"inventoriedCount\":1,\"inventoryNo\":\"PD20260921190840893\",\"inventoryUserId\":63,\"inventoryUserName\":\"admin\",\"normalCount\":1,\"planName\":\"2026年09月资产设备专项盘点\",\"plannedAt\":1790053200000,\"scopeType\":\"DEVICE\",\"source\":\"MANUAL\",\"startedAt\":1790003819000,\"status\":\"CLOSED\",\"totalCount\":1,\"updateTime\":1790003848000,\"updater\":149},{\"abnormalCount\":0,\"createTime\":1790003280000,\"creator\":149,\"deadline\":1790258400000,\"deleteFlag\":\"0\",\"id\":5,\"inventoriedCount\":0,\"inventoryNo\":\"PD20260921190800418\",\"inventoryUserId\":149,\"inventoryUserName\":\"张三\",\"normalCount\":0,\"planName\":\"2026年09月资产设备专项盘点\",\"plannedAt\":1790053200000,\"remark\":\"进行盘点\",\"scopeType\":\"ALL\",\"source\":\"MANUAL\",\"status\":\"ACCEPTED\",\"totalCount\":2,\"updateTime\":1790003293000,\"updater\":149},{\"abnormalCount\":0,\"completedAt\":1790002875000,\"createTime\":1789995983000,\"creator\":63,\"deadline\":1790258400000,\"deleteFlag\":\"0\",\"id\":4,\"inventoriedCount\":8,\"inventoryNo\":\"PD20260921170623856\",\"inventoryUserId\":149,\"inventoryUserName\":\"张三\",\"normalCount\":0,\"planName\":\"2026年09月资产设备专项盘点\",\"plannedAt\":1790053200000,\"remark\":\"进行盘点\",\"scopeType\":\"ASSET\",\"source\":\"MANUAL\",\"startedAt\":1790002559000,\"status\":\"CLOSED\",\"totalCount\":8,\"updateTime\":1790003793000,\"updater\":149},{\"abnormalCount\":0,\"createTime\":1789722750000,\"creator\":63,\"deadline\":1789999200000,\"deleteFlag\":\"0\",\"id\":1,\"inventoriedCount\":1,\"inventoryNo\":\"PD20260918131230171\",\"inventoryUserId\":36,\"inventoryUserName\":\"张伟\",\"normalCount\":0,\"planName\":\"2026年09月资产设备专项盘点\",\"plannedAt\":1789794000000,\"remark\":\"进行盘点\",\"scopeType\":\"DEVICE\",\"source\":\"MANUAL\",\"startedAt\":1789723142000,\"status\":\"IN_PROGRESS\",\"totalCount\":3,\"updateTime\":1789986959000,\"updater\":63}]}}'); +INSERT INTO `tbl_log` VALUES (9137, 63, '接口日志', '43.152.142.132/1.9.116.218', '2026-09-30 07:50:18', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":255,\"rows\":[{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-383\",\"assetName\":\"Epson Epson LQ-310\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"383\",\"externalSource\":\"HARDWARE\",\"id\":20,\"keeper\":\"Hab\",\"location\":\"Admin Office\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: R9DY417590\",\"source\":\"SAS\",\"specification\":\"Printer / Epson / Epson LQ-310\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Ad\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-384\",\"assetName\":\"H3C H3C UniServer R3950 G6\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"384\",\"externalSource\":\"HARDWARE\",\"id\":19,\"keeper\":\"Haslim\",\"location\":\"Server Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 210235A4V0H259000004\",\"source\":\"SAS\",\"specification\":\"Server / H3C / H3C UniServer R3950 G6\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Technical & Technologies\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-385\",\"assetName\":\"TP-Link Omada SG3452\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"385\",\"externalSource\":\"HARDWARE\",\"id\":18,\"keeper\":\"Haslim\",\"location\":\"Server Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 225B0AN000371;MAC: 6C-4C-BC-C9-F0-8A\",\"source\":\"SAS\",\"specification\":\"Switch / TP-Link / Omada SG3452\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Technical & Technologies\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-387\",\"assetName\":\"HP HP LaserJet MFP M236sdw\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"387\",\"externalSource\":\"HARDWARE\",\"id\":17,\"location\":\"R&D Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: VNP5F19044\",\"source\":\"SAS\",\"specification\":\"Printer / HP / HP LaserJet MFP M236sdw\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Prod\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-389\",\"assetName\":\"Lenovo ThinkPad T14s 2-in-1\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"389\",\"externalSource\":\"HARDWARE\",\"id\":16,\"keeper\":\"Syed Bakri\",\"location\":\"Admin\",\"originalValue\":0.000000,\"purchaseDate\":1787169600000,\"quantity\":1.000000,\"remark\":\"序列号: PF6EN008\",\"source\":\"SAS\",\"specification\":\"Laptop / Lenovo / ThinkPad T14s 2-in-1 / Win 11 Home / Core Ultra 5 / 16G / 500G SSD\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"GM\"}]}}'); +INSERT INTO `tbl_log` VALUES (9138, 63, '接口日志', '43.152.142.64/1.9.116.218', '2026-09-30 07:50:21', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":255,\"rows\":[{\"assetCategory\":\"硬件资产\",\"assetCode\":\"PTC8320M\",\"assetName\":\"Dell OptiPlex 7070\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"191\",\"externalSource\":\"HARDWARE\",\"id\":30,\"keeper\":\"Fitri\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: DCH5F13\",\"source\":\"SAS\",\"specification\":\"CPU / Dell / OptiPlex 7070 / Win 10 Pro / Core i5-8500 / 16G / 500G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Engineering\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-190\",\"assetName\":\"Microsoft Surface Pro 7 @1866\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"190\",\"externalSource\":\"HARDWARE\",\"id\":29,\"keeper\":\"CEO\",\"location\":\"CEO\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 065060402353\",\"source\":\"SAS\",\"specification\":\"Laptop / Microsoft / Surface Pro 7 @1866 / Core i5-1035G4 / 8G / 128G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"CEO\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAP16/112004\",\"assetName\":\"HP HP 14s-cf3022tx\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"189\",\"externalSource\":\"HARDWARE\",\"id\":28,\"keeper\":\"Habsah\",\"location\":\"Admin\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 5CG03082JY;原备注: MTPH4-NH3DW-BRKQY-YMVFB-88F72\",\"source\":\"SAS\",\"specification\":\"Laptop / HP / HP 14s-cf3022tx / Win 11 Pro / Core i5-1035G1 / 8G / 500G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Admin\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/N02/PC007\",\"assetName\":\"HP All-in-One 24-dp0209d\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"188\",\"externalSource\":\"HARDWARE\",\"id\":27,\"keeper\":\"Habsah\",\"location\":\"Admin\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 8CC10109H6;用途: test\",\"source\":\"SAS\",\"specification\":\"All-In-One / HP / All-in-One 24-dp0209d / Win 11 Pro / AMD Ryzen 5 4500U / 24G / 500G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Admin\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-377\",\"assetName\":\"ScreenBeam ScreenBeam 1100 Plus\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"377\",\"externalSource\":\"HARDWARE\",\"id\":26,\"location\":\"Meeting Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: CBKB52500329;用途: Smartboard add-on for presentation\",\"source\":\"SAS\",\"specification\":\"Other / ScreenBeam / ScreenBeam 1100 Plus\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Admin\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-378\",\"assetName\":\"Prolink Prolink 3KVA/2700W\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"378\",\"externalSource\":\"HARDWARE\",\"id\":25,\"keeper\":\"Haslim\",\"location\":\"Server Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 535101254800056;用途: UPS for servers and switches.\",\"source\":\"SAS\",\"specification\":\"Other / Prolink / Prolink 3KVA/2700W\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Technical & Technologies\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-379\",\"assetName\":\"TP-Link Omada Controller OC220\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"379\",\"externalSource\":\"HARDWARE\",\"id\":24,\"keeper\":\"Haslim\",\"location\":\"Server Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 225906R001139;MAC: 3C-78-95-33-F9-5A;用途: Network controller\",\"source\":\"SAS\",\"specification\":\"Other / TP-Link / Omada Controller OC220\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Technical & Technologies\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-380\",\"assetName\":\"Canon Canon Imageclass mf633cdw\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"380\",\"externalSource\":\"HARDWARE\",\"id\":23,\"location\":\"CEO Office\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: WUE14822\",\"source\":\"SAS\",\"specification\":\"Printer / Canon / Canon Imageclass mf633cdw\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"CEO\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-381\",\"assetName\":\"HP HP LaserJet 1020\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"381\",\"externalSource\":\"HARDWARE\",\"id\":22,\"keeper\":\"Wan Rosli\",\"location\":\"Store Office\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: CNCK596090\",\"source\":\"SAS\",\"specification\":\"Printer / HP / HP LaserJet 1020\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Store\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-382\",\"assetName\":\"HP HP LaserJet 1020\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"382\",\"externalSource\":\"HARDWARE\",\"id\":21,\"keeper\":\"Juwairiah\",\"location\":\"Finance Mgr Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: CNCKC63735\",\"source\":\"SAS\",\"specification\":\"Printer / HP / HP LaserJet 1020\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Finance\"}]}}'); +INSERT INTO `tbl_log` VALUES (9139, 63, '接口日志', '43.152.142.139/1.9.116.218', '2026-09-30 07:50:25', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":255,\"rows\":[{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/TECH/047CPU\",\"assetName\":\"HP\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"201\",\"externalSource\":\"HARDWARE\",\"id\":40,\"keeper\":\"Azam\",\"location\":\"Tech Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Not Specified\",\"source\":\"SAS\",\"specification\":\"CPU / HP\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Engineering\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/TECH/047PC\",\"assetName\":\"HP\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"200\",\"externalSource\":\"HARDWARE\",\"id\":39,\"keeper\":\"Azam\",\"location\":\"Tech Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Not Specified\",\"source\":\"SAS\",\"specification\":\"Monitor / HP\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Engineering\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/TECH/046CPU\",\"assetName\":\"Dell OptiPlex 3080\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"199\",\"externalSource\":\"HARDWARE\",\"id\":38,\"keeper\":\"Ariffin\",\"location\":\"Tech Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: LH5TTC3;用途: Not Specified\",\"source\":\"SAS\",\"specification\":\"CPU / Dell / OptiPlex 3080 / Core i3-10100\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Engineering\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/TECH/046PC\",\"assetName\":\"Dell\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"198\",\"externalSource\":\"HARDWARE\",\"id\":37,\"keeper\":\"Azam\",\"location\":\"Tech Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Not Specified\",\"source\":\"SAS\",\"specification\":\"Monitor / Dell\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Engineering\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/TECH/045CPU\",\"assetName\":\"Cooto\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"197\",\"externalSource\":\"HARDWARE\",\"id\":36,\"keeper\":\"Azam\",\"location\":\"Tech Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Not Specified\",\"source\":\"SAS\",\"specification\":\"CPU / Cooto\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Engineering\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/TECH/045PC\",\"assetName\":\"Dell\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"196\",\"externalSource\":\"HARDWARE\",\"id\":35,\"keeper\":\"Azam\",\"location\":\"Tech Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Not Specified\",\"source\":\"SAS\",\"specification\":\"Monitor / Dell\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Engineering\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/TECH/044CPU\",\"assetName\":\"HP ProDesk 400 G7\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"195\",\"externalSource\":\"HARDWARE\",\"id\":34,\"keeper\":\"Azam\",\"location\":\"Tech Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 4CE216BFHW;用途: Not Specified\",\"source\":\"SAS\",\"specification\":\"CPU / HP / ProDesk 400 G7 / Win 11 Pro / Core i5-10500 / 8G / 240G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Engineering\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/TECH/044PC\",\"assetName\":\"HP\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"194\",\"externalSource\":\"HARDWARE\",\"id\":33,\"keeper\":\"Azam\",\"location\":\"Tech Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Not Specified\",\"source\":\"SAS\",\"specification\":\"Monitor / HP\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Engineering\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/TECH/043CPU\",\"assetName\":\"HP\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"193\",\"externalSource\":\"HARDWARE\",\"id\":32,\"keeper\":\"Azam\",\"location\":\"Tech Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Not Specified\",\"source\":\"SAS\",\"specification\":\"CPU / HP\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Engineering\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/TECH/043PC\",\"assetName\":\"Lenovo\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"192\",\"externalSource\":\"HARDWARE\",\"id\":31,\"keeper\":\"Azam\",\"location\":\"Tech Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Not Specified\",\"source\":\"SAS\",\"specification\":\"Monitor / Lenovo\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Engineering\"}]}}'); +INSERT INTO `tbl_log` VALUES (9140, 63, '接口日志', '43.174.32.34/1.9.116.218', '2026-09-30 07:50:27', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":255,\"rows\":[{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAP3/11112024\",\"assetName\":\"Lenovo ThinkPad X1 Carbon Gen 8\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"211\",\"externalSource\":\"HARDWARE\",\"id\":50,\"keeper\":\"Hasmah\",\"location\":\"Personal Carry\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: PF1Q9H0C;用途: Personal Work\",\"source\":\"SAS\",\"specification\":\"Laptop / Lenovo / ThinkPad X1 Carbon Gen 8 / Win 11 Pro / Core i7-8650U / 16G / 500G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Human Resources\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/N02/CPU003\",\"assetName\":\"HP ProDesk 400 G7\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"210\",\"externalSource\":\"HARDWARE\",\"id\":49,\"keeper\":\"Sharida\",\"location\":\"HR Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 4CE219BMV5\",\"source\":\"SAS\",\"specification\":\"CPU / HP / ProDesk 400 G7 / Win 11 Pro / Core i5-10500 / 8G / 1T\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Finance\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-209\",\"assetName\":\"HP All-in-One 24-dp0209d\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"209\",\"externalSource\":\"HARDWARE\",\"id\":48,\"keeper\":\"Juwairiah\",\"location\":\"Finance Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 8CC10114RG\",\"source\":\"SAS\",\"specification\":\"All-In-One / HP / All-in-One 24-dp0209d / Win 11 Home / AMD Ryzen 5 4500U / 24G / 500G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Finance\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAP2/11112024\",\"assetName\":\"Lenovo ThinkPad X1 Carbon Gen 8\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"208\",\"externalSource\":\"HARDWARE\",\"id\":47,\"keeper\":\"Juwairiah\",\"location\":\"Personal Carry\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: PF1VB7AE;用途: Personal Work\",\"source\":\"SAS\",\"specification\":\"Laptop / Lenovo / ThinkPad X1 Carbon Gen 8 / Win 10 Pro / Core i7-10510U / 16G / 256G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Finance\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-207\",\"assetName\":\"HP ProDesk 400 G7\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"207\",\"externalSource\":\"HARDWARE\",\"id\":46,\"keeper\":\"Adha\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 4CE216BFJM\",\"source\":\"SAS\",\"specification\":\"CPU / HP / ProDesk 400 G7 / Win 11 Pro / Core i5-10500 / 8G / 250G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Engineering\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/TECH/047\",\"assetName\":\"HP ProDesk 400 G7\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"206\",\"externalSource\":\"HARDWARE\",\"id\":45,\"keeper\":\"Ilham\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 4CE216BNS9\",\"source\":\"SAS\",\"specification\":\"CPU / HP / ProDesk 400 G7 / Win 10 Pro / Core i5-10500 / 8G / 250G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Engineering\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAP20/112004\",\"assetName\":\"HP HP 14s-cf3022tx\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"205\",\"externalSource\":\"HARDWARE\",\"id\":44,\"keeper\":\"Adha\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 5CG03082JK\",\"source\":\"SAS\",\"specification\":\"Laptop / HP / HP 14s-cf3022tx / Win 10 Home / Core i5-1035G1 / 8G / 512G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Engineering\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAP5/112004\",\"assetName\":\"Lenovo ThinkPad X1\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"204\",\"externalSource\":\"HARDWARE\",\"id\":43,\"keeper\":\"Amir\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: PF1V7QXT\",\"source\":\"SAS\",\"specification\":\"Laptop / Lenovo / ThinkPad X1 / Win 10 Pro / Core i7-10510U / 16G / 256G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Engineering\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/CPU/053,SMT/N02/CPU046\",\"assetName\":\"Dell Vostro 230\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"203\",\"externalSource\":\"HARDWARE\",\"id\":42,\"keeper\":\"Halimaton\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 2VBK92S\",\"source\":\"SAS\",\"specification\":\"CPU / Dell / Vostro 230 / Win 7 Pro / Pentium Dual Core E6700 / 4G / 320G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production 2\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAP13/112004\",\"assetName\":\"HP HP 14s-cf2036tx\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"202\",\"externalSource\":\"HARDWARE\",\"id\":41,\"keeper\":\"Fitri/Hanif\",\"location\":\"Personal Carry\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 5CG011D1XR;用途: Personal Work\",\"source\":\"SAS\",\"specification\":\"Laptop / HP / HP 14s-cf2036tx / Win 10 Home / Core i7-1051U / 8G / 500GB\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Engineering\"}]}}'); +INSERT INTO `tbl_log` VALUES (9141, 63, '接口日志', '43.174.52.68/1.9.116.218', '2026-09-30 07:50:29', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":255,\"rows\":[{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAB/031PC\",\"assetName\":\"HP\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"221\",\"externalSource\":\"HARDWARE\",\"id\":60,\"keeper\":\"Aqila\",\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Testing / Lab\",\"source\":\"SAS\",\"specification\":\"Monitor / HP\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/N02/CPU020\",\"assetName\":\"HP HP Pro 3330 MT\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"220\",\"externalSource\":\"HARDWARE\",\"id\":59,\"keeper\":\"Aqila\",\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: SGH221S6SH;用途: Testing / Lab\",\"source\":\"SAS\",\"specification\":\"CPU / HP / HP Pro 3330 MT / Win 10 Pro / Core i7-2600 / 8G / 220G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAB/030PC\",\"assetName\":\"HP ProDesk 400 G7\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"219\",\"externalSource\":\"HARDWARE\",\"id\":58,\"keeper\":\"Aqila\",\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 4CE216BDPN;用途: Testing / Lab;原备注: Windows License Key : QRWJ7-2N8MF-TM9WY-HKB42-VFR9C\\n\",\"source\":\"SAS\",\"specification\":\"CPU / HP / ProDesk 400 G7 / Win 11 Pro / Core i5-10500 / 16G / 250G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAB/029CPU\",\"assetName\":\"HP ProDesk 400 G7\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"218\",\"externalSource\":\"HARDWARE\",\"id\":57,\"keeper\":\"Aqila\",\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 4CE219BMSP;用途: Testing / Lab\",\"source\":\"SAS\",\"specification\":\"CPU / HP / ProDesk 400 G7 / Win 11 Pro / Core i5-10500 / 16G / 1TB\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAB/029PC\",\"assetName\":\"HP\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"217\",\"externalSource\":\"HARDWARE\",\"id\":56,\"keeper\":\"Aqila\",\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Testing / Lab\",\"source\":\"SAS\",\"specification\":\"Monitor / HP\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAP19/11112024\",\"assetName\":\"Lenovo ThinkPad X1 Carbon Gen 8\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"216\",\"externalSource\":\"HARDWARE\",\"id\":55,\"keeper\":\"Hasmah\",\"location\":\"Not Specified\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Not Specified;原备注: RETURN TO SUPPLIER DUE THE PROBLEM\",\"source\":\"SAS\",\"specification\":\"Laptop / Lenovo / ThinkPad X1 Carbon Gen 8\",\"status\":\"REPAIR\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Human Resources\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAP18/11112024\",\"assetName\":\"Lenovo ThinkPad X1 Carbon Gen 8\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"215\",\"externalSource\":\"HARDWARE\",\"id\":54,\"keeper\":\"Hasmah\",\"location\":\"Stored with HR\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Stored\",\"source\":\"SAS\",\"specification\":\"Laptop / Lenovo / ThinkPad X1 Carbon Gen 8\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Human Resources\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAP17/11112024\",\"assetName\":\"HP Pro Book 440\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"214\",\"externalSource\":\"HARDWARE\",\"id\":53,\"keeper\":\"Hasmah\",\"location\":\"Stored with HR\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Stored\",\"source\":\"SAS\",\"specification\":\"Laptop / HP / Pro Book 440\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Human Resources\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAP16/11112024\",\"assetName\":\"HP Radeon Intel Core i5\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"213\",\"externalSource\":\"HARDWARE\",\"id\":52,\"keeper\":\"Hasmah\",\"location\":\"Stored with HR\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Stored\",\"source\":\"SAS\",\"specification\":\"Laptop / HP / Radeon Intel Core i5\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Human Resources\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-212\",\"assetName\":\"HP All-in-One 24-dp0209d\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"212\",\"externalSource\":\"HARDWARE\",\"id\":51,\"keeper\":\"Hasmah\",\"location\":\"HR Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 8CC10109F6\",\"source\":\"SAS\",\"specification\":\"All-In-One / HP / All-in-One 24-dp0209d / Win 10 Home / AMD Ryzen 5 4500U / 24G / 500G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Human Resources\"}]}}'); +INSERT INTO `tbl_log` VALUES (9142, 63, '接口日志', '43.174.53.30/1.9.116.218', '2026-09-30 07:50:55', 0, 'DepotItemController.findDetailByDepotIdsAndMaterialId(..)', NULL, 'GET /apis/depotItem/findDetailByDepotIdsAndMaterialId', '{\"pageSize\":10,\"currentPage\":1,\"depotIds\":\"\",\"number\":\"\",\"beginTime\":\"\",\"endTime\":\"\",\"stockPriceFlag\":false,\"mId\":699}', '{\"code\":200,\"data\":{\"total\":17,\"rows\":[{\"unitPrice\":0.100000,\"number\":\"CGRK00000001721\",\"materialName\":\"MD-4G111(VF) 4G模块\",\"depotName\":\"半成品仓库\",\"allPrice\":0.700000000000,\"basicNumber\":7.000000,\"type\":\"采购入库\",\"barCode\":\"C.4.T.0.00654\",\"operTime\":\"2026-09-18 11:44:34\"},{\"unitPrice\":0.100000,\"number\":\"SM2512300003\",\"materialName\":\"MD-4G111(VF) 4G模块\",\"depotName\":\"半成品仓库\",\"allPrice\":471.300000000000,\"basicNumber\":4713.000000,\"type\":\"总部入库入库\",\"barCode\":\"C.4.T.0.00654\",\"operTime\":\"2025-12-30 00:00:00\"},{\"unitPrice\":0.100000,\"number\":\"SM2512260022\",\"materialName\":\"MD-4G111(VF) 4G模块\",\"depotName\":\"半成品仓库\",\"allPrice\":496.000000000000,\"basicNumber\":4960.000000,\"type\":\"总部入库入库\",\"barCode\":\"C.4.T.0.00654\",\"operTime\":\"2025-12-26 00:00:00\"},{\"unitPrice\":0.100000,\"number\":\"SM2512260011\",\"materialName\":\"MD-4G111(VF) 4G模块\",\"depotName\":\"半成品仓库\",\"allPrice\":273.000000000000,\"basicNumber\":2730.000000,\"type\":\"总部入库入库\",\"barCode\":\"C.4.T.0.00654\",\"operTime\":\"2025-12-26 00:00:00\"},{\"unitPrice\":0.100000,\"number\":\"SM2512100033\",\"materialName\":\"MD-4G111(VF) 4G模块\",\"depotName\":\"半成品仓库\",\"allPrice\":504.000000000000,\"basicNumber\":5040.000000,\"type\":\"总部入库入库\",\"barCode\":\"C.4.T.0.00654\",\"operTime\":\"2025-12-10 00:00:00\"},{\"unitPrice\":0.100000,\"number\":\"SM2512030024\",\"materialName\":\"MD-4G111(VF) 4G模块\",\"depotName\":\"半成品仓库\",\"allPrice\":496.000000000000,\"basicNumber\":4960.000000,\"type\":\"总部入库入库\",\"barCode\":\"C.4.T.0.00654\",\"operTime\":\"2025-12-03 00:00:00\"},{\"unitPrice\":0.100000,\"number\":\"SM2512030024\",\"materialName\":\"MD-4G111(VF) 4G模块\",\"depotName\":\"半成品仓库\",\"allPrice\":504.000000000000,\"basicNumber\":5040.000000,\"type\":\"总部入库入库\",\"barCode\":\"C.4.T.0.00654\",\"operTime\":\"2025-12-03 00:00:00\"},{\"unitPrice\":0.100000,\"number\":\"SM2511260001\",\"materialName\":\"MD-4G111(VF) 4G模块\",\"depotName\":\"半成品仓库\",\"allPrice\":420.000000000000,\"basicNumber\":4200.000000,\"type\":\"总部入库入库\",\"barCode\":\"C.4.T.0.00654\",\"operTime\":\"2025-11-26 00:00:00\"},{\"unitPrice\":0.100000,\"number\":\"SM2511260006\",\"materialName\":\"MD-4G111(VF) 4G模块\",\"depotName\":\"半成品仓库\",\"allPrice\":504.000000000000,\"basicNumber\":5040.000000,\"type\":\"总部入库入库\",\"barCode\":\"C.4.T.0.00654\",\"operTime\":\"2025-11-26 00:00:00\"},{\"unitPrice\":0.100000,\"number\":\"SM2510300018\",\"materialName\":\"MD-4G111(VF) 4G模块\",\"depotName\":\"半成品仓库\",\"allPrice\":1.000000000000,\"basicNumber\":10.000000,\"type\":\"总部入库入库\",\"barCode\":\"C.4.T.0.00654\",\"operTime\":\"2025-10-30 00:00:00\"}],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9143, 63, '接口日志', '43.152.142.43/1.9.116.218', '2026-09-30 07:50:57', 0, 'DepotItemController.findDetailByDepotIdsAndMaterialId(..)', NULL, 'GET /apis/depotItem/findDetailByDepotIdsAndMaterialId', '{\"pageSize\":10,\"currentPage\":2,\"depotIds\":\"\",\"number\":\"\",\"beginTime\":\"\",\"endTime\":\"\",\"stockPriceFlag\":false,\"mId\":699}', '{\"code\":200,\"data\":{\"total\":17,\"rows\":[{\"unitPrice\":0.100000,\"number\":\"SM2510300015\",\"materialName\":\"MD-4G111(VF) 4G模块\",\"depotName\":\"半成品仓库\",\"allPrice\":999.000000000000,\"basicNumber\":9990.000000,\"type\":\"总部入库入库\",\"barCode\":\"C.4.T.0.00654\",\"operTime\":\"2025-10-30 00:00:00\"},{\"unitPrice\":0.100000,\"number\":\"SM2509250039\",\"materialName\":\"MD-4G111(VF) 4G模块\",\"depotName\":\"半成品仓库\",\"allPrice\":1000.000000000000,\"basicNumber\":10000.000000,\"type\":\"总部入库入库\",\"barCode\":\"C.4.T.0.00654\",\"operTime\":\"2025-09-25 00:00:00\"},{\"unitPrice\":0.100000,\"number\":\"SM2508200021\",\"materialName\":\"MD-4G111(VF) 4G模块\",\"depotName\":\"半成品仓库\",\"allPrice\":11.000000000000,\"basicNumber\":110.000000,\"type\":\"总部入库入库\",\"barCode\":\"C.4.T.0.00654\",\"operTime\":\"2025-08-20 00:00:00\"},{\"unitPrice\":0.100000,\"number\":\"SM2508150005\",\"materialName\":\"MD-4G111(VF) 4G模块\",\"depotName\":\"半成品仓库\",\"allPrice\":527.000000000000,\"basicNumber\":5270.000000,\"type\":\"总部入库入库\",\"barCode\":\"C.4.T.0.00654\",\"operTime\":\"2025-08-15 00:00:00\"},{\"unitPrice\":0.100000,\"number\":\"SM2508130002\",\"materialName\":\"MD-4G111(VF) 4G模块\",\"depotName\":\"半成品仓库\",\"allPrice\":462.000000000000,\"basicNumber\":4620.000000,\"type\":\"总部入库入库\",\"barCode\":\"C.4.T.0.00654\",\"operTime\":\"2025-08-13 00:00:00\"},{\"unitPrice\":0.100000,\"number\":\"SM2504010007\",\"materialName\":\"MD-4G111(VF) 4G模块\",\"depotName\":\"半成品仓库\",\"allPrice\":829.000000000000,\"basicNumber\":8290.000000,\"type\":\"总部入库入库\",\"barCode\":\"C.4.T.0.00654\",\"operTime\":\"2025-04-01 00:00:00\"},{\"unitPrice\":0.100000,\"number\":\"SM2503260006\",\"materialName\":\"MD-4G111(VF) 4G模块\",\"depotName\":\"半成品仓库\",\"allPrice\":199.000000000000,\"basicNumber\":1990.000000,\"type\":\"总部入库入库\",\"barCode\":\"C.4.T.0.00654\",\"operTime\":\"2025-03-26 00:00:00\"}],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9144, 63, '接口日志', '43.152.142.86/1.9.116.218', '2026-09-30 07:51:12', 0, 'ProductionReportController.getList(..)', NULL, 'GET /apis/productionReport/list', '{\"search\":\"{\\\"reportNumber\\\":\\\"\\\",\\\"orderNumber\\\":\\\"\\\",\\\"beginTime\\\":\\\"\\\",\\\"endTime\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9145, 63, '接口日志', '43.152.142.105/1.9.116.218', '2026-09-30 07:51:12', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9146, 63, '接口日志', '43.174.32.13/1.9.116.218', '2026-09-30 07:51:14', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9147, 63, '接口日志', '43.174.53.14/1.9.116.218', '2026-09-30 07:51:14', 0, 'ProductionRequisitionController.getList(..)', NULL, 'GET /apis/productionRequisition/list', '{\"search\":\"{\\\"requisitionNumber\\\":\\\"\\\",\\\"orderNumber\\\":\\\"\\\",\\\"beginTime\\\":\\\"\\\",\\\"endTime\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"confirmBy\":63,\"confirmByName\":\"admin\",\"confirmTime\":1790242827000,\"createTime\":1789720317000,\"creator\":63,\"creatorName\":\"admin\",\"deleteFlag\":\"0\",\"depotId\":25,\"depotName\":\"半成品仓库\",\"id\":9,\"itemCount\":1,\"materialsList\":\"MD-4G111(VF) 包装\",\"orderId\":11,\"orderNumber\":\"GD20260918122018493\",\"requisitionNumber\":\"LL20260918123156921\",\"status\":\"1\"},{\"createTime\":1789719809000,\"creator\":63,\"creatorName\":\"admin\",\"deleteFlag\":\"0\",\"depotId\":25,\"depotName\":\"半成品仓库\",\"id\":8,\"itemCount\":1,\"materialsList\":\"MD-4G111(VF) 包装\",\"orderId\":11,\"orderNumber\":\"GD20260918122018493\",\"remark\":\"11\",\"requisitionNumber\":\"LL20260918122329111\",\"status\":\"2\"}]}}'); +INSERT INTO `tbl_log` VALUES (9148, 63, '接口日志', '43.174.32.18/1.9.116.218', '2026-09-30 07:51:14', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9149, 63, '接口日志', '43.152.142.78/1.9.116.218', '2026-09-30 07:51:16', 0, 'ProductionRequisitionController.getDetail(..)', NULL, 'GET /apis/productionRequisition/getDetail', '{\"id\":8}', '{\"code\":200,\"data\":{\"requisition\":{\"createTime\":1789719809000,\"creator\":63,\"deleteFlag\":\"0\",\"depotId\":25,\"id\":8,\"orderId\":11,\"orderNumber\":\"GD20260918122018493\",\"remark\":\"11\",\"requisitionNumber\":\"LL20260918122329111\",\"status\":\"2\"},\"rows\":[{\"deleteFlag\":\"0\",\"requisitionId\":8,\"materialExtendId\":125,\"unit\":\"件\",\"requiredQuantity\":10000.000000,\"depotId\":25,\"issuedQuantity\":10000.000000,\"name\":\"MD-4G111(VF) 包装\",\"id\":25,\"materialId\":705,\"materialSku\":\"\",\"barCode\":\"1001\"}]}}'); +INSERT INTO `tbl_log` VALUES (9150, 63, '接口日志', '43.152.157.121/1.9.116.218', '2026-09-30 07:51:40', 1, 'ProductionRequisitionController.updateRequisition(..)', NULL, 'PUT /apis/productionRequisition/updateRequisition', '{\"obj\":{\"requisitionNumber\":\"LL20260918122329111\",\"creator\":63,\"depotName\":\"半成品仓库\",\"orderNumber\":\"GD20260918122018493\",\"materialsList\":\"MD-4G111(VF) 包装\",\"orderId\":11,\"depotId\":25,\"creatorName\":\"admin\",\"remark\":\"11\",\"rows\":[{\"id\":\"25\",\"barCode\":\"1001\",\"name\":\"MD-4G111(VF) 包装\",\"unit\":\"件\",\"requiredQuantity\":\"10000\",\"issuedQuantity\":\"10000\",\"remark\":\"\",\"depotId\":\"25\"}],\"itemCount\":1,\"deleteFlag\":\"0\",\"createTime\":\"2026-09-18T08:23:29.000+0000\",\"id\":8,\"status\":\"2\"}}', 'com.reallin.smt.exception.BusinessRunTimeException: 只有待确认状态的领料单才能修改'); +INSERT INTO `tbl_log` VALUES (9151, 63, '接口日志', '43.152.142.109/1.9.116.218', '2026-09-30 07:51:44', 0, 'ProductionRequisitionController.getDetail(..)', NULL, 'GET /apis/productionRequisition/getDetail', '{\"id\":8}', '{\"code\":200,\"data\":{\"requisition\":{\"createTime\":1789719809000,\"creator\":63,\"deleteFlag\":\"0\",\"depotId\":25,\"id\":8,\"orderId\":11,\"orderNumber\":\"GD20260918122018493\",\"remark\":\"11\",\"requisitionNumber\":\"LL20260918122329111\",\"status\":\"2\"},\"rows\":[{\"deleteFlag\":\"0\",\"requisitionId\":8,\"materialExtendId\":125,\"unit\":\"件\",\"requiredQuantity\":10000.000000,\"depotId\":25,\"issuedQuantity\":10000.000000,\"name\":\"MD-4G111(VF) 包装\",\"id\":25,\"materialId\":705,\"materialSku\":\"\",\"barCode\":\"1001\"}]}}'); +INSERT INTO `tbl_log` VALUES (9152, 63, '接口日志', '43.174.54.50/1.9.116.218', '2026-09-30 07:51:54', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9153, 63, '接口日志', '43.152.142.109/1.9.116.218', '2026-09-30 07:51:54', 0, 'ProductionOrderController.getList(..)', NULL, 'GET /apis/productionOrder/list', '{\"search\":\"{\\\"orderNumber\\\":\\\"\\\",\\\"sourceNumber\\\":\\\"\\\",\\\"productMaterialParam\\\":\\\"\\\",\\\"beginTime\\\":\\\"\\\",\\\"endTime\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"auditBy\":63,\"auditByName\":\"admin\",\"auditTime\":1789719775000,\"bomId\":18,\"bomName\":\"v1.0\",\"createTime\":1789719619000,\"creator\":63,\"creatorName\":\"admin\",\"deleteFlag\":\"0\",\"finishedQuantity\":0.000000,\"id\":11,\"orderNumber\":\"GD20260918122018493\",\"orderQuantity\":10000.000000,\"outputMaterialExtendId\":123,\"outputMaterialId\":703,\"outputMaterialName\":\"1PH WS79\",\"outputQuantity\":10000.000000,\"planEndDate\":1790280000000,\"planStartDate\":1789675200000,\"priority\":\"0\",\"productMaterialExtendId\":123,\"productMaterialId\":703,\"releaseBy\":63,\"releaseTime\":1789719775000,\"remark\":\"\",\"sourceId\":1719,\"sourceNumber\":\"XSDD00000001726\",\"sourceType\":\"销售订单\",\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (9154, 63, '接口日志', '43.152.142.132/1.9.116.218', '2026-09-30 07:51:56', 0, 'ProductionOrderController.getOrderDetail(..)', NULL, 'GET /apis/productionOrder/getOrderDetail', '{\"id\":11}', '{\"code\":200,\"data\":{\"logs\":[{\"createTime\":1789719619000,\"id\":53,\"operationDesc\":\"创建生产工单,数量:10000\",\"operationType\":\"创建工单\",\"operator\":63,\"orderId\":11,\"orderNumber\":\"GD20260918122018493\"},{\"createTime\":1789719775000,\"id\":54,\"operationDesc\":\"工单审批通过并下达\",\"operationType\":\"审批下达\",\"operator\":63,\"orderId\":11,\"orderNumber\":\"GD20260918122018493\"},{\"createTime\":1789719809000,\"id\":55,\"operationDesc\":\"生成领料单[LL20260918122329111]\",\"operationType\":\"生成领料单\",\"operator\":63,\"orderId\":11,\"orderNumber\":\"GD20260918122018493\"},{\"createTime\":1789720311000,\"id\":56,\"operationDesc\":\"领料单[LL20260918122329111]被驳回:11\",\"operationType\":\"领料驳回\",\"operator\":63,\"orderId\":11,\"orderNumber\":\"GD20260918122018493\"},{\"createTime\":1789720317000,\"id\":57,\"operationDesc\":\"生成领料单[LL20260918123156921]\",\"operationType\":\"生成领料单\",\"operator\":63,\"orderId\":11,\"orderNumber\":\"GD20260918122018493\"},{\"createTime\":1790242827000,\"id\":58,\"operationDesc\":\"领料单[LL20260918123156921]确认发料,出库单号[LL20260924134027104]\",\"operationType\":\"领料发料\",\"operator\":63,\"orderId\":11,\"orderNumber\":\"GD20260918122018493\"}],\"order\":{\"sourceId\":1719,\"orderNumber\":\"GD20260918122018493\",\"outputQuantity\":10000.000000,\"releaseTime\":1789719775000,\"auditBy\":\"admin\",\"productMaterialExtendId\":123,\"outputBarCode\":\"1PH-WS79\",\"outputMaterialId\":703,\"finishedQuantity\":0.000000,\"remark\":\"\",\"orderQuantity\":10000.000000,\"deleteFlag\":\"0\",\"productMaterialId\":703,\"outputMaterialName\":\"1PH WS79\",\"id\":11,\"planEndDate\":\"2026-09-25\",\"bomId\":18,\"creator\":63,\"releaseBy\":\"admin\",\"priority\":\"0\",\"sourceNumber\":\"XSDD00000001726\",\"auditTime\":1789719775000,\"createTime\":\"2026-09-18 12:20:19\",\"sourceType\":\"销售订单\",\"outputMaterialExtendId\":123,\"planStartDate\":\"2026-09-18\",\"status\":\"1\"}}}'); +INSERT INTO `tbl_log` VALUES (9155, 63, '接口日志', '43.174.53.30/1.9.116.218', '2026-09-30 07:52:31', 0, 'PackBomController.getList(..)', NULL, 'GET /apis/packBom/list', '{\"search\":\"{\\\"bomNumber\\\":\\\"\\\",\\\"bomName\\\":\\\"\\\",\\\"productMaterialParam\\\":\\\"\\\",\\\"outputMaterialParam\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"bomName\":\"v1.0\",\"bomNumber\":\"BOM00000001735\",\"createTime\":1789719259000,\"creator\":63,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"itemCount\":1,\"outputMaterialExtendId\":123,\"outputMaterialId\":703,\"outputMaterialName\":\"1PH WS79\",\"outputNumber\":1.000000,\"productMaterialExtendId\":123,\"productMaterialId\":703,\"version\":\"v1.0\"}]}}'); +INSERT INTO `tbl_log` VALUES (9156, 63, '接口日志', '43.174.32.18/1.9.116.218', '2026-09-30 07:52:33', 0, 'PackBomController.getPackBomDetail(..)', NULL, 'GET /apis/packBom/getPackBomDetail', '{\"id\":18}', '{\"code\":200,\"data\":{\"bom\":{\"creator\":63,\"productMaterialExtendId\":123,\"outputBarCode\":\"1PH-WS79\",\"outputMaterialId\":703,\"version\":\"v1.0\",\"enabled\":true,\"bomNumber\":\"BOM00000001735\",\"deleteFlag\":\"0\",\"productMaterialId\":703,\"outputNumber\":1.000000,\"createTime\":1789719259000,\"outputMaterialExtendId\":123,\"bomName\":\"v1.0\",\"id\":18},\"rows\":[{\"deleteFlag\":\"0\",\"materialExtendId\":125,\"bomId\":18,\"unit\":\"件\",\"quantity\":1.000000,\"name\":\"MD-4G111(VF) 包装\",\"remark\":\"\",\"id\":26,\"materialId\":705,\"materialSku\":\"\",\"barCode\":\"1001\"}]}}'); +INSERT INTO `tbl_log` VALUES (9157, 63, '接口日志', '43.174.32.13/1.9.116.218', '2026-09-30 07:52:37', 0, 'PackBomController.getPackBomDetail(..)', NULL, 'GET /apis/packBom/getPackBomDetail', '{\"id\":18}', '{\"code\":200,\"data\":{\"bom\":{\"creator\":63,\"productMaterialExtendId\":123,\"outputBarCode\":\"1PH-WS79\",\"outputMaterialId\":703,\"version\":\"v1.0\",\"enabled\":true,\"bomNumber\":\"BOM00000001735\",\"deleteFlag\":\"0\",\"productMaterialId\":703,\"outputNumber\":1.000000,\"createTime\":1789719259000,\"outputMaterialExtendId\":123,\"bomName\":\"v1.0\",\"id\":18},\"rows\":[{\"deleteFlag\":\"0\",\"materialExtendId\":125,\"bomId\":18,\"unit\":\"件\",\"quantity\":1.000000,\"name\":\"MD-4G111(VF) 包装\",\"remark\":\"\",\"id\":26,\"materialId\":705,\"materialSku\":\"\",\"barCode\":\"1001\"}]}}'); +INSERT INTO `tbl_log` VALUES (9158, 63, '接口日志', '43.152.157.121/1.9.116.218', '2026-09-30 07:52:48', 0, 'SupplierController.findBySelectSup(..)', NULL, 'POST /apis/supplier/findBySelect_sup', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司\",\"id\":89}]'); +INSERT INTO `tbl_log` VALUES (9159, 63, '接口日志', '43.152.142.78/1.9.116.218', '2026-09-30 07:52:48', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9160, 63, '接口日志', '43.174.52.68/1.9.116.218', '2026-09-30 07:52:48', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (9161, 63, '接口日志', '43.174.53.14/1.9.116.218', '2026-09-30 07:52:48', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9162, 63, '接口日志', '43.152.142.86/1.9.116.218', '2026-09-30 07:52:48', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"出库\\\",\\\"subType\\\":\\\"采购退货\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-30\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"createTimeRange\\\":[\\\"2026-06-29T16:00:00.000Z\\\",\\\"2026-09-29T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9163, 63, '接口日志', '43.174.32.34/1.9.116.218', '2026-09-30 07:52:48', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (9164, 63, '接口日志', '43.152.142.139/1.9.116.218', '2026-09-30 07:52:48', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (9165, 63, '接口日志', '43.152.157.121/1.9.116.218', '2026-09-30 07:52:49', 0, 'SupplierController.findBySelectSup(..)', NULL, 'POST /apis/supplier/findBySelect_sup', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司\",\"id\":89}]'); +INSERT INTO `tbl_log` VALUES (9166, 63, '接口日志', '43.152.142.132/1.9.116.218', '2026-09-30 07:52:49', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (9167, 63, '接口日志', '43.174.53.14/1.9.116.218', '2026-09-30 07:52:49', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (9168, 63, '接口日志', '43.152.142.109/1.9.116.218', '2026-09-30 07:52:49', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (9169, 63, '接口日志', '43.174.53.17/1.9.116.218', '2026-09-30 07:52:49', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9170, 63, '接口日志', '43.174.52.68/1.9.116.218', '2026-09-30 07:52:49', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9171, 63, '接口日志', '43.152.142.141/1.9.116.218', '2026-09-30 07:52:49', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"入库\\\",\\\"subType\\\":\\\"采购\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-30\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"createTimeRange\\\":[\\\"2026-06-29T16:00:00.000Z\\\",\\\"2026-09-29T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789720142000,\"creator\":63,\"debt\":100000.000000,\"defaultNumber\":\"CGRK00000001740\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":100000.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1724,\"lastDebt\":100000.000000,\"lastDeposit\":0.000000,\"linkNumber\":\"CGDD00000001739\",\"materialCount\":10000.000000,\"materialsList\":\"MD-4G111(VF) 包装 MD-4G111(VF) packing MD-4G111(VF) \",\"number\":\"CGRK00000001740\",\"operTime\":1789734542000,\"operTimeStr\":\"2026-09-18 16:29:02\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"采购\",\"totalPrice\":100000.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789717476000,\"creator\":63,\"debt\":0.700000,\"defaultNumber\":\"CGRK00000001721\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":0.700000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1717,\"lastDebt\":0.700000,\"lastDeposit\":0.000000,\"linkNumber\":\"CGDD00000001720\",\"materialCount\":7.000000,\"materialsList\":\"MD-4G111(VF) 4G模块 MD-4G111(VF) MD-4G111(VF) \",\"number\":\"CGRK00000001721\",\"operTime\":1789717474000,\"operTimeStr\":\"2026-09-18 11:44:34\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"采购\",\"totalPrice\":0.700000,\"type\":\"入库\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (9172, 63, '接口日志', '43.152.142.29/1.9.116.218', '2026-09-30 07:52:49', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9173, 63, '接口日志', '43.152.157.121/1.9.116.218', '2026-09-30 07:52:51', 0, 'SupplierController.findBySelectSup(..)', NULL, 'POST /apis/supplier/findBySelect_sup', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司\",\"id\":89}]'); +INSERT INTO `tbl_log` VALUES (9174, 63, '接口日志', '43.152.142.86/1.9.116.218', '2026-09-30 07:52:51', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (9175, 63, '接口日志', '43.174.32.18/1.9.116.218', '2026-09-30 07:52:51', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (9176, 63, '接口日志', '43.174.32.34/1.9.116.218', '2026-09-30 07:52:51', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9177, 63, '接口日志', '43.174.32.23/1.9.116.218', '2026-09-30 07:52:51', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9178, 63, '接口日志', '43.152.142.40/1.9.116.218', '2026-09-30 07:52:51', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (9179, 63, '接口日志', '43.152.142.112/1.9.116.218', '2026-09-30 07:52:51', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"其它\\\",\\\"subType\\\":\\\"采购订单\\\",\\\"linkApply\\\":\\\"\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-30\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"createTimeRange\\\":[\\\"2026-06-29T16:00:00.000Z\\\",\\\"2026-09-29T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789720113000,\"creator\":63,\"debt\":100000.000000,\"defaultNumber\":\"CGDD00000001739\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":100000.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1723,\"lastDebt\":100000.000000,\"lastDeposit\":0.000000,\"linkApply\":\"QGD00000001738\",\"materialCount\":10000.000000,\"materialsList\":\"MD-4G111(VF) 包装 MD-4G111(VF) packing MD-4G111(VF) \",\"number\":\"CGDD00000001739\",\"operTime\":1789734505000,\"operTimeStr\":\"2026-09-18 16:28:25\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"采购订单\",\"totalPrice\":100000.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789717459000,\"creator\":63,\"debt\":0.700000,\"defaultNumber\":\"CGDD00000001720\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":0.700000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1716,\"lastDebt\":0.700000,\"lastDeposit\":0.000000,\"linkApply\":\"QGD00000001719\",\"materialCount\":7.000000,\"materialsList\":\"MD-4G111(VF) 4G模块 MD-4G111(VF) MD-4G111(VF) \",\"number\":\"CGDD00000001720\",\"operTime\":1789717452000,\"operTimeStr\":\"2026-09-18 11:44:12\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"采购订单\",\"totalPrice\":0.700000,\"type\":\"其它\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (9180, 63, '接口日志', '43.152.142.78/1.9.116.218', '2026-09-30 07:52:52', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9181, 63, '接口日志', '43.152.142.105/1.9.116.218', '2026-09-30 07:52:52', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (9182, 63, '接口日志', '43.152.142.32/1.9.116.218', '2026-09-30 07:52:52', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"其它\\\",\\\"subType\\\":\\\"请购单\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-30\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"createTimeRange\\\":[\\\"2026-06-29T16:00:00.000Z\\\",\\\"2026-09-29T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"backAmount\":0,\"changeAmount\":0,\"createTime\":1789720084000,\"creator\":63,\"debt\":0,\"defaultNumber\":\"QGD00000001738\",\"deleteFlag\":\"0\",\"deposit\":0,\"discountLastMoney\":0,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1722,\"lastDebt\":0,\"lastDeposit\":0.000000,\"materialCount\":10000.000000,\"materialsList\":\"MD-4G111(VF) 包装 MD-4G111(VF) packing MD-4G111(VF) \",\"number\":\"QGD00000001738\",\"operTime\":1789734467000,\"operTimeStr\":\"2026-09-18 16:27:47\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"请购单\",\"type\":\"其它\",\"userName\":\"admin\"},{\"backAmount\":0,\"changeAmount\":0,\"createTime\":1789717442000,\"creator\":63,\"debt\":0,\"defaultNumber\":\"QGD00000001719\",\"deleteFlag\":\"0\",\"deposit\":0,\"discountLastMoney\":0,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1715,\"lastDebt\":0,\"lastDeposit\":0.000000,\"materialCount\":7.000000,\"materialsList\":\"MD-4G111(VF) 4G模块 MD-4G111(VF) MD-4G111(VF) \",\"number\":\"QGD00000001719\",\"operTime\":1789717427000,\"operTimeStr\":\"2026-09-18 11:43:47\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"请购单\",\"type\":\"其它\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (9183, 63, '接口日志', '43.174.54.50/1.9.116.218', '2026-09-30 07:52:52', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (9184, 63, '接口日志', '43.174.54.14/1.9.116.218', '2026-09-30 07:52:52', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9185, 63, '接口日志', '43.152.142.139/1.9.116.218', '2026-09-30 07:52:55', 0, 'DepotHeadController.getDetailByNumber(..)', NULL, 'GET /apis/depotHead/getDetailByNumber', '{\"number\":\"QGD00000001738\"}', '{\"code\":200,\"data\":{\"backAmount\":0,\"changeAmount\":0,\"createTime\":1789720084000,\"creator\":63,\"creatorName\":\"admin\",\"debt\":0,\"defaultNumber\":\"QGD00000001738\",\"deleteFlag\":\"0\",\"deposit\":0,\"depotHeadType\":\"请购单其它\",\"discountLastMoney\":0,\"fileName\":\"\",\"hasBackFlag\":false,\"id\":1722,\"lastDeposit\":0.000000,\"materialCount\":10000.000000,\"materialsList\":\"MD-4G111(VF) 包装 MD-4G111(VF) packing MD-4G111(VF) \",\"number\":\"QGD00000001738\",\"operTime\":1789734467000,\"operTimeStr\":\"2026-09-18 16:27:47\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"请购单\",\"type\":\"其它\"}}'); +INSERT INTO `tbl_log` VALUES (9186, 63, '接口日志', '43.174.53.30/1.9.116.218', '2026-09-30 07:52:55', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_print_flag\"}', '{\"code\":200,\"data\":{\"id\":4,\"platformKey\":\"bill_print_flag\",\"platformKeyInfo\":\"三联打印启用标记\",\"platformValue\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9187, 63, '接口日志', '43.174.32.13/1.9.116.218', '2026-09-30 07:52:55', 0, 'DepotItemController.getDetailList(..)', NULL, 'GET /apis/depotItem/getDetailList', '{\"headerId\":1722,\"mpList\":\"扩展1,扩展2,扩展3\",\"linkType\":\"basic\",\"isReadOnly\":\"1\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"standard\":\"MD-4G111(VF) packing\",\"materialExtendId\":125,\"finishPurchaseNumber\":0,\"anotherDepotName\":\"\",\"preNumber\":10000.000000,\"depotId\":\"\",\"purchaseDecimal\":10.000000,\"imgName\":\"\",\"operNumber\":10000.000000,\"anotherDepotId\":\"\",\"basicNumber\":10000.000000,\"model\":\"MD-4G111(VF)\",\"id\":1527,\"enableSerialNumber\":\"0\",\"stock\":0.000000,\"finishNumber\":0,\"expirationDate\":\"\",\"enableBatchNumber\":\"0\",\"op\":1,\"depotName\":\"\",\"weight\":0,\"imgSmall\":\"\",\"barCode\":\"1001\",\"unit\":\"件\",\"name\":\"MD-4G111(VF) 包装\",\"imgLarge\":\"\"},{\"allPrice\":0,\"finishPurchaseNumber\":0,\"operNumber\":10000.000000,\"taxLastMoney\":0,\"weight\":0,\"taxMoney\":0,\"finishNumber\":0}]}}'); +INSERT INTO `tbl_log` VALUES (9188, 63, '接口日志', '43.152.142.64/1.9.116.218', '2026-09-30 07:52:55', 0, 'DepotHeadController.getBillListByLinkNumber(..)', NULL, 'GET /apis/depotHead/getBillListByLinkNumber', '{\"number\":\"QGD00000001738\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (9189, 63, '接口日志', '43.152.142.57/1.9.116.218', '2026-09-30 07:52:55', 0, 'AccountHeadController.getFinancialBillNoByBillId(..)', NULL, 'GET /apis/accountHead/getFinancialBillNoByBillId', '{\"billId\":1722}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (9190, 63, '接口日志', '43.152.142.43/1.9.116.218', '2026-09-30 07:52:55', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9191, 63, '接口日志', '43.174.53.17/1.9.116.218', '2026-09-30 07:53:09', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"其它\\\",\\\"subType\\\":\\\"请购单\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-30\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"createTimeRange\\\":[\\\"2026-06-29T16:00:00.000Z\\\",\\\"2026-09-29T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"backAmount\":0,\"changeAmount\":0,\"createTime\":1789720084000,\"creator\":63,\"debt\":0,\"defaultNumber\":\"QGD00000001738\",\"deleteFlag\":\"0\",\"deposit\":0,\"discountLastMoney\":0,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1722,\"lastDebt\":0,\"lastDeposit\":0.000000,\"materialCount\":10000.000000,\"materialsList\":\"MD-4G111(VF) 包装 MD-4G111(VF) packing MD-4G111(VF) \",\"number\":\"QGD00000001738\",\"operTime\":1789734467000,\"operTimeStr\":\"2026-09-18 16:27:47\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"请购单\",\"type\":\"其它\",\"userName\":\"admin\"},{\"backAmount\":0,\"changeAmount\":0,\"createTime\":1789717442000,\"creator\":63,\"debt\":0,\"defaultNumber\":\"QGD00000001719\",\"deleteFlag\":\"0\",\"deposit\":0,\"discountLastMoney\":0,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1715,\"lastDebt\":0,\"lastDeposit\":0.000000,\"materialCount\":7.000000,\"materialsList\":\"MD-4G111(VF) 4G模块 MD-4G111(VF) MD-4G111(VF) \",\"number\":\"QGD00000001719\",\"operTime\":1789717427000,\"operTimeStr\":\"2026-09-18 11:43:47\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"请购单\",\"type\":\"其它\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (9192, 63, '接口日志', '43.174.52.68/1.9.116.218', '2026-09-30 07:53:18', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"其它\\\",\\\"subType\\\":\\\"请购单\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-30\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"createTimeRange\\\":[\\\"2026-06-29T16:00:00.000Z\\\",\\\"2026-09-29T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"backAmount\":0,\"changeAmount\":0,\"createTime\":1789720084000,\"creator\":63,\"debt\":0,\"defaultNumber\":\"QGD00000001738\",\"deleteFlag\":\"0\",\"deposit\":0,\"discountLastMoney\":0,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1722,\"lastDebt\":0,\"lastDeposit\":0.000000,\"materialCount\":10000.000000,\"materialsList\":\"MD-4G111(VF) 包装 MD-4G111(VF) packing MD-4G111(VF) \",\"number\":\"QGD00000001738\",\"operTime\":1789734467000,\"operTimeStr\":\"2026-09-18 16:27:47\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"请购单\",\"type\":\"其它\",\"userName\":\"admin\"},{\"backAmount\":0,\"changeAmount\":0,\"createTime\":1789717442000,\"creator\":63,\"debt\":0,\"defaultNumber\":\"QGD00000001719\",\"deleteFlag\":\"0\",\"deposit\":0,\"discountLastMoney\":0,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1715,\"lastDebt\":0,\"lastDeposit\":0.000000,\"materialCount\":7.000000,\"materialsList\":\"MD-4G111(VF) 4G模块 MD-4G111(VF) MD-4G111(VF) \",\"number\":\"QGD00000001719\",\"operTime\":1789717427000,\"operTimeStr\":\"2026-09-18 11:43:47\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"请购单\",\"type\":\"其它\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (9193, 63, '接口日志', '43.152.142.132/1.9.116.218', '2026-09-30 07:57:43', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-04\",\"inbound\":100669.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (9194, 63, '接口日志', '43.152.142.78/1.9.116.218', '2026-09-30 07:57:51', 0, 'RoleController.getList(..)', NULL, 'GET /apis/role/list', '{\"search\":\"{\\\"name\\\":\\\"\\\",\\\"description\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":7,\"rows\":[{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":24,\"name\":\"system admin\",\"type\":\"全部数据\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":23,\"name\":\"system admin\",\"type\":\"全部数据\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":21,\"name\":\"admin\",\"tenantId\":63,\"type\":\"全部数据\"},{\"deleteFlag\":\"0\",\"description\":\"rrr\",\"enabled\":true,\"id\":17,\"name\":\"销售代表\",\"tenantId\":63,\"type\":\"个人数据\"},{\"deleteFlag\":\"0\",\"description\":\"ddd\",\"enabled\":true,\"id\":16,\"name\":\"销售经理\",\"tenantId\":63,\"type\":\"全部数据\"},{\"deleteFlag\":\"0\",\"description\":\"\",\"enabled\":true,\"id\":10,\"name\":\"租户\",\"type\":\"全部数据\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":4,\"name\":\"管理员\",\"type\":\"全部数据\"}]}}'); +INSERT INTO `tbl_log` VALUES (9195, 63, '接口日志', '43.152.142.32/1.9.116.218', '2026-09-30 07:58:02', 0, 'FunctionController.findRoleFunction(..)', NULL, 'GET /apis/function/findRoleFunction', '{\"type\":\"RoleFunctions\",\"keyId\":\"4\"}', '[{\"children\":[{\"titleEn\":\"Sales Management\",\"children\":[{\"titleEn\":\"Sales Orders\",\"checked\":true,\"attributes\":\"销售订单\",\"id\":242,\"title\":\"销售订单\",\"value\":242,\"key\":242},{\"titleEn\":\"Sales Shipments\",\"checked\":true,\"attributes\":\"销售出库\",\"id\":41,\"title\":\"销售出库\",\"value\":41,\"key\":41},{\"titleEn\":\"Delivery Plans\",\"checked\":false,\"attributes\":\"交货计划管理\",\"id\":271,\"title\":\"交货计划管理\",\"value\":271,\"key\":271},{\"titleEn\":\"Shipment Management\",\"checked\":false,\"attributes\":\"发货管理\",\"id\":268,\"title\":\"发货管理\",\"value\":268,\"key\":268},{\"titleEn\":\"Sales Returns\",\"checked\":true,\"attributes\":\"销售退货\",\"id\":200,\"title\":\"销售退货\",\"value\":200,\"key\":200},{\"titleEn\":\"Retail Shipments\",\"checked\":true,\"attributes\":\"零售出库\",\"id\":210,\"title\":\"零售出库\",\"value\":210,\"key\":210},{\"titleEn\":\"Retail Returns\",\"checked\":true,\"attributes\":\"零售退货\",\"id\":211,\"title\":\"零售退货\",\"value\":211,\"key\":211}],\"attributes\":\"销售管理\",\"id\":38,\"title\":\"销售管理\",\"value\":38,\"key\":38},{\"titleEn\":\"Purchase Management\",\"children\":[{\"titleEn\":\"Purchase Requisitions\",\"checked\":true,\"attributes\":\"请购单\",\"id\":261,\"title\":\"请购单\",\"value\":261,\"key\":261},{\"titleEn\":\"Purchase Orders\",\"checked\":true,\"attributes\":\"采购订单\",\"id\":241,\"title\":\"采购订单\",\"value\":241,\"key\":241},{\"titleEn\":\"Purchase Receipts\",\"checked\":true,\"attributes\":\"采购入库\",\"id\":33,\"title\":\"采购入库\",\"value\":33,\"key\":33},{\"titleEn\":\"Purchase Returns\",\"checked\":true,\"attributes\":\"采购退货\",\"id\":199,\"title\":\"采购退货\",\"value\":199,\"key\":199}],\"attributes\":\"采购管理\",\"id\":32,\"title\":\"采购管理\",\"value\":32,\"key\":32},{\"titleEn\":\"Production Management\",\"children\":[{\"titleEn\":\"Production BOMs\",\"checked\":true,\"attributes\":\"生产方案\",\"id\":263,\"title\":\"生产方案\",\"value\":263,\"key\":263},{\"titleEn\":\"Production Orders\",\"checked\":true,\"attributes\":\"生产工单\",\"id\":264,\"title\":\"生产工单\",\"value\":264,\"key\":264},{\"titleEn\":\"Material Requisitions\",\"checked\":true,\"attributes\":\"领料管理\",\"id\":265,\"title\":\"领料管理\",\"value\":265,\"key\":265},{\"titleEn\":\"Production Reports\",\"checked\":true,\"attributes\":\"完工报工\",\"id\":266,\"title\":\"完工报工\",\"value\":266,\"key\":266}],\"attributes\":\"生产管理\",\"id\":262,\"title\":\"生产管理\",\"value\":262,\"key\":262},{\"titleEn\":\"Warehouse Management\",\"children\":[{\"titleEn\":\"Product Inventory\",\"checked\":true,\"attributes\":\"商品库存\",\"id\":246,\"title\":\"商品库存\",\"value\":246,\"key\":246},{\"titleEn\":\"Other Receipts\",\"checked\":true,\"attributes\":\"其它入库\",\"id\":201,\"title\":\"其它入库\",\"value\":201,\"key\":201},{\"titleEn\":\"Other Shipments\",\"checked\":true,\"attributes\":\"其它出库\",\"id\":202,\"title\":\"其它出库\",\"value\":202,\"key\":202},{\"titleEn\":\"Stock Transfers\",\"checked\":true,\"attributes\":\"调拨出库\",\"id\":40,\"title\":\"调拨出库\",\"value\":40,\"key\":40},{\"titleEn\":\"Assembly Orders\",\"checked\":true,\"attributes\":\"组装单\",\"id\":232,\"title\":\"组装单\",\"value\":232,\"key\":232},{\"titleEn\":\"Headquarters Receipts\",\"checked\":true,\"attributes\":\"总部入库\",\"id\":270,\"title\":\"总部入库\",\"value\":270,\"key\":270},{\"titleEn\":\"Disassembly Orders\",\"checked\":true,\"attributes\":\"拆卸单\",\"id\":233,\"title\":\"拆卸单\",\"value\":233,\"key\":233}],\"attributes\":\"仓库管理\",\"id\":239,\"title\":\"仓库管理\",\"value\":239,\"key\":239},{\"titleEn\":\"Finance Management\",\"children\":[{\"titleEn\":\"Income Vouchers\",\"checked\":true,\"attributes\":\"收入单\",\"id\":197,\"title\":\"收入单\",\"value\":197,\"key\":197},{\"titleEn\":\"Expense Vouchers\",\"checked\":true,\"attributes\":\"支出单\",\"id\":203,\"title\":\"支出单\",\"value\":203,\"key\":203},{\"titleEn\":\"Receipt Vouchers\",\"checked\":true,\"attributes\":\"收款单\",\"id\":204,\"title\":\"收款单\",\"value\":204,\"key\":204},{\"titleEn\":\"Payment Vouchers\",\"checked\":true,\"attributes\":\"付款单\",\"id\":205,\"title\":\"付款单\",\"value\":205,\"key\":205},{\"titleEn\":\"Transfer Vouchers\",\"checked\":true,\"attributes\":\"转账单\",\"id\":206,\"title\":\"转账单\",\"value\":206,\"key\":206},{\"titleEn\":\"Advance Receipts\",\"checked\":true,\"attributes\":\"收预付款\",\"id\":212,\"title\":\"收预付款\",\"value\":212,\"key\":212}],\"attributes\":\"财务管理\",\"id\":44,\"title\":\"财务管理\",\"value\":44,\"key\":44},{\"titleEn\":\"Asset Management\",\"children\":[{\"titleEn\":\"Asset Overview\",\"checked\":true,\"attributes\":\"资产汇总\",\"id\":276,\"title\":\"资产汇总\",\"value\":276,\"key\":276},{\"titleEn\":\"Asset Ledger\",\"checked\":true,\"attributes\":\"资产台账\",\"id\":273,\"title\":\"资产台账\",\"value\":273,\"key\":273},{\"titleEn\":\"Device Ledger\",\"checked\":true,\"attributes\":\"设备台账\",\"id\":274,\"title\":\"设备台账\",\"value\":274,\"key\":274},{\"titleEn\":\"Asset Inventory\",\"checked\":true,\"attributes\":\"资产盘点\",\"id\":275,\"title\":\"资产盘点\",\"value\":275,\"key\":275}],\"attributes\":\"资产管理\",\"id\":272,\"title\":\"资产管理\",\"value\":272,\"key\":272},{\"titleEn\":\"Product Management\",\"children\":[{\"titleEn\":\"Product Categories\",\"checked\":true,\"attributes\":\"商品类别\",\"id\":22,\"title\":\"商品类别\",\"value\":22,\"key\":22},{\"titleEn\":\"Product Information\",\"checked\":true,\"attributes\":\"商品信息\",\"id\":23,\"title\":\"商品信息\",\"value\":23,\"key\":23},{\"titleEn\":\"Multiple Units\",\"checked\":true,\"attributes\":\"多单位\",\"id\":220,\"title\":\"多单位\",\"value\":220,\"key\":220},{\"titleEn\":\"Product Attributes\",\"checked\":true,\"attributes\":\"多属性\",\"id\":247,\"title\":\"多属性\",\"value\":247,\"key\":247}],\"attributes\":\"商品管理\",\"id\":21,\"title\":\"商品管理\",\"value\":21,\"key\":21},{\"titleEn\":\"Reports\",\"children\":[{\"titleEn\":\"Account Summary\",\"checked\":true,\"attributes\":\"账户统计\",\"id\":207,\"title\":\"账户统计\",\"value\":207,\"key\":207},{\"titleEn\":\"Retail Summary\",\"checked\":true,\"attributes\":\"零售统计\",\"id\":259,\"title\":\"零售统计\",\"value\":259,\"key\":259},{\"titleEn\":\"Purchase Summary\",\"checked\":true,\"attributes\":\"采购统计\",\"id\":208,\"title\":\"采购统计\",\"value\":208,\"key\":208},{\"titleEn\":\"Sales Summary\",\"checked\":true,\"attributes\":\"销售统计\",\"id\":209,\"title\":\"销售统计\",\"value\":209,\"key\":209},{\"titleEn\":\"Inbound Details\",\"checked\":true,\"attributes\":\"入库明细\",\"id\":226,\"title\":\"入库明细\",\"value\":226,\"key\":226},{\"titleEn\":\"Outbound Details\",\"checked\":true,\"attributes\":\"出库明细\",\"id\":227,\"title\":\"出库明细\",\"value\":227,\"key\":227},{\"titleEn\":\"Transfer Details\",\"checked\":true,\"attributes\":\"调拨明细\",\"id\":248,\"title\":\"调拨明细\",\"value\":248,\"key\":248},{\"titleEn\":\"Inbound Summary\",\"checked\":true,\"attributes\":\"入库汇总\",\"id\":228,\"title\":\"入库汇总\",\"value\":228,\"key\":228},{\"titleEn\":\"Outbound Summary\",\"checked\":true,\"attributes\":\"出库汇总\",\"id\":229,\"title\":\"出库汇总\",\"value\":229,\"key\":229},{\"titleEn\":\"Inventory Transaction Summary\",\"checked\":true,\"attributes\":\"进销存统计\",\"id\":59,\"title\":\"进销存统计\",\"value\":59,\"key\":59},{\"titleEn\":\"Customer Reconciliation\",\"checked\":true,\"attributes\":\"客户对账\",\"id\":235,\"title\":\"客户对账\",\"value\":235,\"key\":235},{\"titleEn\":\"Supplier Reconciliation\",\"checked\":true,\"attributes\":\"供应商对账\",\"id\":237,\"title\":\"供应商对账\",\"value\":237,\"key\":237},{\"titleEn\":\"Stock Alerts\",\"checked\":true,\"attributes\":\"库存预警\",\"id\":244,\"title\":\"库存预警\",\"value\":244,\"key\":244}],\"attributes\":\"报表查询\",\"id\":198,\"title\":\"报表查询\",\"value\":198,\"key\":198},{\"titleEn\":\"Master Data\",\"children\":[{\"titleEn\":\"Suppliers\",\"checked\":true,\"attributes\":\"供应商信息\",\"id\":25,\"title\":\"供应商信息\",\"value\":25,\"key\":25},{\"titleEn\":\"Customers\",\"checked\":true,\"attributes\":\"客户信息\",\"id\":217,\"title\":\"客户信息\",\"value\":217,\"key\":217},{\"titleEn\":\"Members\",\"checked\":true,\"attributes\":\"会员信息\",\"id\":218,\"title\":\"会员信息\",\"value\":218,\"key\":218},{\"titleEn\":\"Customer Categories\",\"checked\":false,\"attributes\":\"客户分类\",\"id\":267,\"title\":\"客户分类\",\"value\":267,\"key\":267},{\"titleEn\":\"Warehouses\",\"checked\":true,\"attributes\":\"仓库信息\",\"id\":26,\"title\":\"仓库信息\",\"value\":26,\"key\":26},{\"titleEn\":\"Income and Expense Items\",\"checked\":true,\"attributes\":\"收支项目\",\"id\":194,\"title\":\"收支项目\",\"value\":194,\"key\":194},{\"titleEn\":\"Settlement Accounts\",\"checked\":true,\"attributes\":\"结算账户\",\"id\":195,\"title\":\"结算账户\",\"value\":195,\"key\":195},{\"titleEn\":\"Operators\",\"checked\":true,\"attributes\":\"操作人员管理\",\"id\":31,\"title\":\"操作人员管理\",\"value\":31,\"key\":31}],\"attributes\":\"基础资料\",\"id\":24,\"title\":\"基础资料\",\"value\":24,\"key\":24},{\"titleEn\":\"System Management\",\"children\":[{\"titleEn\":\"Role Management\",\"checked\":true,\"attributes\":\"角色管理\",\"id\":13,\"title\":\"角色管理\",\"value\":13,\"key\":13},{\"titleEn\":\"User Management\",\"checked\":true,\"attributes\":\"用户管理\",\"id\":14,\"title\":\"用户管理\",\"value\":14,\"key\":14},{\"titleEn\":\"Department Management\",\"checked\":true,\"attributes\":\"部门管理\",\"id\":243,\"title\":\"部门管理\",\"value\":243,\"key\":243},{\"titleEn\":\"Log Management\",\"checked\":true,\"attributes\":\"日志管理\",\"id\":15,\"title\":\"日志管理\",\"value\":15,\"key\":15},{\"titleEn\":\"Product Properties\",\"checked\":true,\"attributes\":\"商品属性\",\"id\":236,\"title\":\"商品属性\",\"value\":236,\"key\":236},{\"titleEn\":\"System Configuration\",\"checked\":true,\"attributes\":\"系统配置\",\"id\":234,\"title\":\"系统配置\",\"value\":234,\"key\":234},{\"titleEn\":\"Resource Menus\",\"checked\":true,\"attributes\":\"菜单管理\",\"id\":16,\"title\":\"菜单管理\",\"value\":16,\"key\":16},{\"titleEn\":\"Plugin Management\",\"checked\":true,\"attributes\":\"插件管理\",\"id\":245,\"title\":\"插件管理\",\"value\":245,\"key\":245},{\"titleEn\":\"Dictionary Management\",\"checked\":true,\"attributes\":\"字典管理\",\"id\":260,\"title\":\"字典管理\",\"value\":260,\"key\":260},{\"titleEn\":\"Platform Configuration\",\"checked\":true,\"attributes\":\"平台配置\",\"id\":258,\"title\":\"平台配置\",\"value\":258,\"key\":258}],\"attributes\":\"系统管理\",\"id\":1,\"title\":\"系统管理\",\"value\":1,\"key\":1},{\"titleEn\":\"Retail Management\",\"checked\":true,\"attributes\":\"零售管理\",\"id\":225,\"title\":\"零售管理\",\"value\":225,\"key\":225}],\"attributes\":\"功能列表\",\"id\":0,\"title\":\"功能列表\",\"value\":0,\"key\":0}]'); +INSERT INTO `tbl_log` VALUES (9196, 63, '接口日志', '43.152.142.105/1.9.116.218', '2026-09-30 07:58:18', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-04\",\"inbound\":100669.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (9197, NULL, '接口日志', '43.174.52.68/1.9.116.218', '2026-09-30 07:58:21', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (9198, NULL, '接口日志', '43.152.142.64/1.9.116.218', '2026-09-30 07:58:21', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (9199, 63, '接口日志', '43.152.157.121/1.9.116.218', '2026-09-30 07:58:22', 0, 'FunctionController.findMenuByPNumber(..)', NULL, 'POST /apis/function/findMenuByPNumber', '{\"jsonObject\":{\"userId\":63,\"pNumber\":0}}', '[{\"component\":\"/layouts/TabLayout\",\"icon\":\"home\",\"id\":0,\"text\":\"首页\",\"url\":\"/dashboard/analysis\",\"textEn\":\"Home\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/SaleOrderList\",\"icon\":\"profile\",\"id\":242,\"text\":\"销售订单\",\"url\":\"/bill/sale_order\",\"textEn\":\"Sales Orders\"},{\"component\":\"/bill/SaleOutList\",\"icon\":\"profile\",\"id\":41,\"text\":\"销售出库\",\"url\":\"/bill/sale_out\",\"textEn\":\"Sales Shipments\"},{\"component\":\"/bill/DeliveryPlanList\",\"icon\":\"profile\",\"id\":271,\"text\":\"交货计划管理\",\"url\":\"/bill/delivery_plan\",\"textEn\":\"Delivery Plans\"},{\"component\":\"/bill/SaleShipmentList\",\"icon\":\"car\",\"id\":268,\"text\":\"发货管理\",\"url\":\"/bill/sale_shipment\",\"textEn\":\"Shipment Management\"},{\"component\":\"/bill/SaleBackList\",\"icon\":\"profile\",\"id\":200,\"text\":\"销售退货\",\"url\":\"/bill/sale_back\",\"textEn\":\"Sales Returns\"},{\"component\":\"/bill/RetailOutList\",\"icon\":\"profile\",\"id\":210,\"text\":\"零售出库\",\"url\":\"/bill/retail_out\",\"textEn\":\"Retail Shipments\"},{\"component\":\"/bill/RetailBackList\",\"icon\":\"profile\",\"id\":211,\"text\":\"零售退货\",\"url\":\"/bill/retail_back\",\"textEn\":\"Retail Returns\"}],\"icon\":\"shopping-cart\",\"id\":38,\"text\":\"销售管理\",\"url\":\"/billB\",\"textEn\":\"Sales Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/PurchaseApplyList\",\"icon\":\"profile\",\"id\":261,\"text\":\"请购单\",\"url\":\"/bill/purchase_apply\",\"textEn\":\"Purchase Requisitions\"},{\"component\":\"/bill/PurchaseOrderList\",\"icon\":\"profile\",\"id\":241,\"text\":\"采购订单\",\"url\":\"/bill/purchase_order\",\"textEn\":\"Purchase Orders\"},{\"component\":\"/bill/PurchaseInList\",\"icon\":\"profile\",\"id\":33,\"text\":\"采购入库\",\"url\":\"/bill/purchase_in\",\"textEn\":\"Purchase Receipts\"},{\"component\":\"/bill/PurchaseBackList\",\"icon\":\"profile\",\"id\":199,\"text\":\"采购退货\",\"url\":\"/bill/purchase_back\",\"textEn\":\"Purchase Returns\"}],\"icon\":\"retweet\",\"id\":32,\"text\":\"采购管理\",\"url\":\"/bill\",\"textEn\":\"Purchase Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/production/PackBomList\",\"icon\":\"profile\",\"id\":263,\"text\":\"生产方案\",\"url\":\"/production/pack_bom\",\"textEn\":\"Production BOMs\"},{\"component\":\"/production/OrderList\",\"icon\":\"profile\",\"id\":264,\"text\":\"生产工单\",\"url\":\"/production/order\",\"textEn\":\"Production Orders\"},{\"component\":\"/production/RequisitionList\",\"icon\":\"profile\",\"id\":265,\"text\":\"领料管理\",\"url\":\"/production/requisition\",\"textEn\":\"Material Requisitions\"},{\"component\":\"/production/ReportList\",\"icon\":\"profile\",\"id\":266,\"text\":\"完工报工\",\"url\":\"/production/report\",\"textEn\":\"Production Reports\"}],\"icon\":\"cluster\",\"id\":262,\"text\":\"生产管理\",\"url\":\"/production\",\"textEn\":\"Production Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/MaterialStock\",\"icon\":\"profile\",\"id\":246,\"text\":\"商品库存\",\"url\":\"/report/material_stock\",\"textEn\":\"Product Inventory\"},{\"component\":\"/bill/OtherInList\",\"icon\":\"profile\",\"id\":201,\"text\":\"其它入库\",\"url\":\"/bill/other_in\",\"textEn\":\"Other Receipts\"},{\"component\":\"/bill/OtherOutList\",\"icon\":\"profile\",\"id\":202,\"text\":\"其它出库\",\"url\":\"/bill/other_out\",\"textEn\":\"Other Shipments\"},{\"component\":\"/bill/HeadquartersInList\",\"icon\":\"profile\",\"id\":270,\"text\":\"总部入库\",\"url\":\"/bill/headquarters_in\",\"textEn\":\"Headquarters Receipts\"}],\"icon\":\"hdd\",\"id\":239,\"text\":\"仓库管理\",\"url\":\"/billD\",\"textEn\":\"Warehouse Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/financial/MoneyInList\",\"icon\":\"profile\",\"id\":204,\"text\":\"收款单\",\"url\":\"/financial/money_in\",\"textEn\":\"Receipt Vouchers\"},{\"component\":\"/financial/MoneyOutList\",\"icon\":\"profile\",\"id\":205,\"text\":\"付款单\",\"url\":\"/financial/money_out\",\"textEn\":\"Payment Vouchers\"}],\"icon\":\"money-collect\",\"id\":44,\"text\":\"财务管理\",\"url\":\"/financial\",\"textEn\":\"Finance Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/asset/AssetDashboard\",\"icon\":\"dashboard\",\"id\":276,\"text\":\"资产汇总\",\"url\":\"/asset\",\"textEn\":\"Asset Overview\"},{\"component\":\"/asset/AssetList\",\"icon\":\"profile\",\"id\":273,\"text\":\"资产台账\",\"url\":\"/asset/ledger\",\"textEn\":\"Asset Ledger\"},{\"component\":\"/asset/DeviceList\",\"icon\":\"tool\",\"id\":274,\"text\":\"设备台账\",\"url\":\"/asset/device\",\"textEn\":\"Device Ledger\"},{\"component\":\"/asset/InventoryList\",\"icon\":\"scan\",\"id\":275,\"text\":\"资产盘点\",\"url\":\"/asset/inventory\",\"textEn\":\"Asset Inventory\"}],\"icon\":\"bank\",\"id\":272,\"text\":\"资产管理\",\"url\":\"/assetManagement\",\"textEn\":\"Asset Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/material/MaterialCategoryList\",\"icon\":\"profile\",\"id\":22,\"text\":\"商品类别\",\"url\":\"/material/material_category\",\"textEn\":\"Product Categories\"},{\"component\":\"/material/MaterialList\",\"icon\":\"profile\",\"id\":23,\"text\":\"商品信息\",\"url\":\"/material/material\",\"textEn\":\"Product Information\"},{\"component\":\"/system/UnitList\",\"icon\":\"profile\",\"id\":220,\"text\":\"多单位\",\"url\":\"/system/unit\",\"textEn\":\"Multiple Units\"},{\"component\":\"/material/MaterialAttributeList\",\"icon\":\"profile\",\"id\":247,\"text\":\"多属性\",\"url\":\"/material/material_attribute\",\"textEn\":\"Product Attributes\"}],\"icon\":\"shopping\",\"id\":21,\"text\":\"商品管理\",\"url\":\"/material\",\"textEn\":\"Product Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/AccountReport\",\"icon\":\"profile\",\"id\":207,\"text\":\"账户统计\",\"url\":\"/report/account_report\",\"textEn\":\"Account Summary\"},{\"component\":\"/report/RetailOutReport\",\"icon\":\"profile\",\"id\":259,\"text\":\"零售统计\",\"url\":\"/report/retail_out_report\",\"textEn\":\"Retail Summary\"},{\"component\":\"/report/BuyInReport\",\"icon\":\"profile\",\"id\":208,\"text\":\"采购统计\",\"url\":\"/report/buy_in_report\",\"textEn\":\"Purchase Summary\"},{\"component\":\"/report/SaleOutReport\",\"icon\":\"profile\",\"id\":209,\"text\":\"销售统计\",\"url\":\"/report/sale_out_report\",\"textEn\":\"Sales Summary\"},{\"component\":\"/report/InDetail\",\"icon\":\"profile\",\"id\":226,\"text\":\"入库明细\",\"url\":\"/report/in_detail\",\"textEn\":\"Inbound Details\"},{\"component\":\"/report/OutDetail\",\"icon\":\"profile\",\"id\":227,\"text\":\"出库明细\",\"url\":\"/report/out_detail\",\"textEn\":\"Outbound Details\"},{\"component\":\"/report/InMaterialCount\",\"icon\":\"profile\",\"id\":228,\"text\":\"入库汇总\",\"url\":\"/report/in_material_count\",\"textEn\":\"Inbound Summary\"},{\"component\":\"/report/OutMaterialCount\",\"icon\":\"profile\",\"id\":229,\"text\":\"出库汇总\",\"url\":\"/report/out_material_count\",\"textEn\":\"Outbound Summary\"},{\"component\":\"/report/InOutStockReport\",\"icon\":\"profile\",\"id\":59,\"text\":\"进销存统计\",\"url\":\"/report/in_out_stock_report\",\"textEn\":\"Inventory Transaction Summary\"},{\"component\":\"/report/CustomerAccount\",\"icon\":\"profile\",\"id\":235,\"text\":\"客户对账\",\"url\":\"/report/customer_account\",\"textEn\":\"Customer Reconciliation\"},{\"component\":\"/report/VendorAccount\",\"icon\":\"profile\",\"id\":237,\"text\":\"供应商对账\",\"url\":\"/report/vendor_account\",\"textEn\":\"Supplier Reconciliation\"},{\"component\":\"/report/StockWarningReport\",\"icon\":\"profile\",\"id\":244,\"text\":\"库存预警\",\"url\":\"/report/stock_warning_report\",\"textEn\":\"Stock Alerts\"}],\"icon\":\"pie-chart\",\"id\":198,\"text\":\"报表查询\",\"url\":\"/report\",\"textEn\":\"Reports\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/VendorList\",\"icon\":\"profile\",\"id\":25,\"text\":\"供应商信息\",\"url\":\"/system/vendor\",\"textEn\":\"Suppliers\"},{\"component\":\"/system/CustomerList\",\"icon\":\"profile\",\"id\":217,\"text\":\"客户信息\",\"url\":\"/system/customer\",\"textEn\":\"Customers\"},{\"component\":\"/system/MemberList\",\"icon\":\"profile\",\"id\":218,\"text\":\"会员信息\",\"url\":\"/system/member\",\"textEn\":\"Members\"},{\"component\":\"/system/CustomerCategoryList\",\"icon\":\"bars\",\"id\":267,\"text\":\"客户分类\",\"url\":\"/system/customerCategory\",\"textEn\":\"Customer Categories\"},{\"component\":\"/system/DepotList\",\"icon\":\"profile\",\"id\":26,\"text\":\"仓库信息\",\"url\":\"/system/depot\",\"textEn\":\"Warehouses\"},{\"component\":\"/system/InOutItemList\",\"icon\":\"profile\",\"id\":194,\"text\":\"收支项目\",\"url\":\"/system/in_out_item\",\"textEn\":\"Income and Expense Items\"},{\"component\":\"/system/AccountList\",\"icon\":\"profile\",\"id\":195,\"text\":\"结算账户\",\"url\":\"/system/account\",\"textEn\":\"Settlement Accounts\"},{\"component\":\"/system/PersonList\",\"icon\":\"profile\",\"id\":31,\"text\":\"操作人员管理\",\"url\":\"/system/person\",\"textEn\":\"Operators\"}],\"icon\":\"appstore\",\"id\":24,\"text\":\"基础资料\",\"url\":\"/systemA\",\"textEn\":\"Master Data\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/RoleList\",\"icon\":\"profile\",\"id\":13,\"text\":\"角色管理\",\"url\":\"/system/role\",\"textEn\":\"Role Management\"},{\"component\":\"/system/UserList\",\"icon\":\"profile\",\"id\":14,\"text\":\"用户管理\",\"url\":\"/system/user\",\"textEn\":\"User Management\"},{\"component\":\"/system/OrganizationList\",\"icon\":\"profile\",\"id\":243,\"text\":\"部门管理\",\"url\":\"/system/organization\",\"textEn\":\"Department Management\"},{\"component\":\"/system/LogList\",\"icon\":\"profile\",\"id\":15,\"text\":\"日志管理\",\"url\":\"/system/log\",\"textEn\":\"Log Management\"},{\"component\":\"/material/MaterialPropertyList\",\"icon\":\"profile\",\"id\":236,\"text\":\"商品属性\",\"url\":\"/material/material_property\",\"textEn\":\"Product Properties\"},{\"component\":\"/system/SystemConfigList\",\"icon\":\"profile\",\"id\":234,\"text\":\"系统配置\",\"url\":\"/system/system_config\",\"textEn\":\"System Configuration\"},{\"component\":\"/system/FunctionList\",\"icon\":\"profile\",\"id\":16,\"text\":\"菜单管理\",\"url\":\"/system/function\",\"textEn\":\"Resource Menus\"},{\"component\":\"/system/PluginList\",\"icon\":\"profile\",\"id\":245,\"text\":\"插件管理\",\"url\":\"/system/plugin\",\"textEn\":\"Plugin Management\"},{\"component\":\"/system/DictList\",\"icon\":\"profile\",\"id\":260,\"text\":\"字典管理\",\"url\":\"/system/dict\",\"textEn\":\"Dictionary Management\"},{\"component\":\"/system/PlatformConfigList\",\"icon\":\"profile\",\"id\":258,\"text\":\"平台配置\",\"url\":\"/system/platform_config\",\"textEn\":\"Platform Configuration\"}],\"icon\":\"setting\",\"id\":1,\"text\":\"系统管理\",\"url\":\"/system\",\"textEn\":\"System Management\"}]'); +INSERT INTO `tbl_log` VALUES (9200, 63, '接口日志', '43.174.53.17/1.9.116.218', '2026-09-30 07:58:22', 0, 'UserController.getUserBtnByCurrentUser(..)', NULL, 'GET /apis/user/getUserBtnByCurrentUser', '{}', '{\"code\":200,\"data\":{\"userBtn\":[{\"btnStr\":\"8,1\",\"url\":\"/system/role\"},{\"btnStr\":\"1\",\"url\":\"/system/user\"},{\"btnStr\":\"1\",\"url\":\"/system/organization\"},{\"btnStr\":\"1\",\"url\":\"/material/material_property\"},{\"btnStr\":\"1\",\"url\":\"/system/system_config\"},{\"btnStr\":\"1\",\"url\":\"/system/function\"},{\"btnStr\":\"1\",\"url\":\"/system/plugin\"},{\"btnStr\":\"1\",\"url\":\"/material/material_category\"},{\"btnStr\":\"1,3\",\"url\":\"/material/material\"},{\"btnStr\":\"1\",\"url\":\"/system/unit\"},{\"btnStr\":\"1\",\"url\":\"/material/material_attribute\"},{\"btnStr\":\"1,3\",\"url\":\"/system/vendor\"},{\"btnStr\":\"1,3\",\"url\":\"/system/customer\"},{\"btnStr\":\"1,3\",\"url\":\"/system/member\"},{\"btnStr\":\"1\",\"url\":\"/system/depot\"},{\"btnStr\":\"1\",\"url\":\"/system/in_out_item\"},{\"btnStr\":\"1\",\"url\":\"/system/account\"},{\"btnStr\":\"1\",\"url\":\"/system/person\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_apply\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_out\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/delivery_plan\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/sale_shipment\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_out\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/order\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/requisition\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/report\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/giro\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/advance_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/allocation_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/assemble\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/headquarters_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/disassemble\"}]}}'); +INSERT INTO `tbl_log` VALUES (9201, 63, '接口日志', '43.174.54.14/1.9.116.218', '2026-09-30 07:58:22', 0, 'MsgController.getList(..)', NULL, 'GET /apis/msg/list', '{\"search\":\"{\\\"name\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9202, 63, '接口日志', '43.174.32.34/1.9.116.218', '2026-09-30 07:58:22', 0, 'MsgController.getMsgByStatus(..)', NULL, 'GET /apis/msg/getMsgByStatus', '{\"status\":\"1\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (9203, 63, '接口日志', '43.174.32.23/1.9.116.218', '2026-09-30 07:58:22', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-04\",\"inbound\":100669.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (9204, 63, '接口日志', '43.174.53.30/1.9.116.218', '2026-09-30 07:58:35', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-04\",\"inbound\":100669.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (9205, 63, '接口日志', '43.152.142.109/1.9.116.218', '2026-09-30 07:58:36', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-04\",\"inbound\":100669.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (9206, 63, '接口日志', '43.152.142.132/1.9.116.218', '2026-09-30 07:58:36', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-04\",\"inbound\":100669.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (9207, 63, '接口日志', '43.152.142.139/1.9.116.218', '2026-09-30 07:58:36', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-04\",\"inbound\":100669.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (9208, 63, '接口日志', '43.152.142.112/1.9.116.218', '2026-09-30 07:58:36', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-04\",\"inbound\":100669.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (9209, 63, '接口日志', '43.174.32.18/1.9.116.218', '2026-09-30 07:58:37', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-04\",\"inbound\":100669.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (9210, 63, '接口日志', '43.152.142.86/1.9.116.218', '2026-09-30 07:58:37', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-04\",\"inbound\":100669.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (9211, 63, '接口日志', '43.152.142.141/1.9.116.218', '2026-09-30 07:58:38', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-04\",\"inbound\":100669.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (9212, 63, '接口日志', '43.174.53.14/1.9.116.218', '2026-09-30 07:58:38', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-04\",\"inbound\":100669.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (9213, 63, '接口日志', '43.174.54.50/1.9.116.218', '2026-09-30 07:58:39', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-04\",\"inbound\":100669.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (9214, 63, '接口日志', '43.152.142.57/1.9.116.218', '2026-09-30 07:58:39', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-04\",\"inbound\":100669.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (9215, 63, '接口日志', '43.152.142.40/1.9.116.218', '2026-09-30 07:58:40', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-04\",\"inbound\":100669.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (9216, 63, '接口日志', '43.152.142.29/1.9.116.218', '2026-09-30 07:58:41', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-04\",\"inbound\":100669.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (9217, 63, '接口日志', '43.152.142.43/1.9.116.218', '2026-09-30 07:58:41', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-04\",\"inbound\":100669.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (9218, 63, '接口日志', '43.174.32.13/1.9.116.218', '2026-09-30 07:58:43', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-04\",\"inbound\":100669.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (9219, NULL, '接口日志', '43.152.142.78/1.9.116.218', '2026-09-30 07:58:51', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (9220, NULL, '接口日志', '43.152.142.32/1.9.116.218', '2026-09-30 07:58:52', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (9221, 63, '接口日志', '43.152.157.121/1.9.116.218', '2026-09-30 07:58:52', 0, 'FunctionController.findMenuByPNumber(..)', NULL, 'POST /apis/function/findMenuByPNumber', '{\"jsonObject\":{\"userId\":63,\"pNumber\":0}}', '[{\"component\":\"/layouts/TabLayout\",\"icon\":\"home\",\"id\":0,\"text\":\"首页\",\"url\":\"/dashboard/analysis\",\"textEn\":\"Home\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/SaleOrderList\",\"icon\":\"profile\",\"id\":242,\"text\":\"销售订单\",\"url\":\"/bill/sale_order\",\"textEn\":\"Sales Orders\"},{\"component\":\"/bill/SaleOutList\",\"icon\":\"profile\",\"id\":41,\"text\":\"销售出库\",\"url\":\"/bill/sale_out\",\"textEn\":\"Sales Shipments\"},{\"component\":\"/bill/DeliveryPlanList\",\"icon\":\"profile\",\"id\":271,\"text\":\"交货计划管理\",\"url\":\"/bill/delivery_plan\",\"textEn\":\"Delivery Plans\"},{\"component\":\"/bill/SaleShipmentList\",\"icon\":\"car\",\"id\":268,\"text\":\"发货管理\",\"url\":\"/bill/sale_shipment\",\"textEn\":\"Shipment Management\"},{\"component\":\"/bill/SaleBackList\",\"icon\":\"profile\",\"id\":200,\"text\":\"销售退货\",\"url\":\"/bill/sale_back\",\"textEn\":\"Sales Returns\"},{\"component\":\"/bill/RetailOutList\",\"icon\":\"profile\",\"id\":210,\"text\":\"零售出库\",\"url\":\"/bill/retail_out\",\"textEn\":\"Retail Shipments\"},{\"component\":\"/bill/RetailBackList\",\"icon\":\"profile\",\"id\":211,\"text\":\"零售退货\",\"url\":\"/bill/retail_back\",\"textEn\":\"Retail Returns\"}],\"icon\":\"shopping-cart\",\"id\":38,\"text\":\"销售管理\",\"url\":\"/billB\",\"textEn\":\"Sales Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/PurchaseApplyList\",\"icon\":\"profile\",\"id\":261,\"text\":\"请购单\",\"url\":\"/bill/purchase_apply\",\"textEn\":\"Purchase Requisitions\"},{\"component\":\"/bill/PurchaseOrderList\",\"icon\":\"profile\",\"id\":241,\"text\":\"采购订单\",\"url\":\"/bill/purchase_order\",\"textEn\":\"Purchase Orders\"},{\"component\":\"/bill/PurchaseInList\",\"icon\":\"profile\",\"id\":33,\"text\":\"采购入库\",\"url\":\"/bill/purchase_in\",\"textEn\":\"Purchase Receipts\"},{\"component\":\"/bill/PurchaseBackList\",\"icon\":\"profile\",\"id\":199,\"text\":\"采购退货\",\"url\":\"/bill/purchase_back\",\"textEn\":\"Purchase Returns\"}],\"icon\":\"retweet\",\"id\":32,\"text\":\"采购管理\",\"url\":\"/bill\",\"textEn\":\"Purchase Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/production/PackBomList\",\"icon\":\"profile\",\"id\":263,\"text\":\"生产方案\",\"url\":\"/production/pack_bom\",\"textEn\":\"Production BOMs\"},{\"component\":\"/production/OrderList\",\"icon\":\"profile\",\"id\":264,\"text\":\"生产工单\",\"url\":\"/production/order\",\"textEn\":\"Production Orders\"},{\"component\":\"/production/RequisitionList\",\"icon\":\"profile\",\"id\":265,\"text\":\"领料管理\",\"url\":\"/production/requisition\",\"textEn\":\"Material Requisitions\"},{\"component\":\"/production/ReportList\",\"icon\":\"profile\",\"id\":266,\"text\":\"完工报工\",\"url\":\"/production/report\",\"textEn\":\"Production Reports\"}],\"icon\":\"cluster\",\"id\":262,\"text\":\"生产管理\",\"url\":\"/production\",\"textEn\":\"Production Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/MaterialStock\",\"icon\":\"profile\",\"id\":246,\"text\":\"商品库存\",\"url\":\"/report/material_stock\",\"textEn\":\"Product Inventory\"},{\"component\":\"/bill/OtherInList\",\"icon\":\"profile\",\"id\":201,\"text\":\"其它入库\",\"url\":\"/bill/other_in\",\"textEn\":\"Other Receipts\"},{\"component\":\"/bill/OtherOutList\",\"icon\":\"profile\",\"id\":202,\"text\":\"其它出库\",\"url\":\"/bill/other_out\",\"textEn\":\"Other Shipments\"},{\"component\":\"/bill/HeadquartersInList\",\"icon\":\"profile\",\"id\":270,\"text\":\"总部入库\",\"url\":\"/bill/headquarters_in\",\"textEn\":\"Headquarters Receipts\"}],\"icon\":\"hdd\",\"id\":239,\"text\":\"仓库管理\",\"url\":\"/billD\",\"textEn\":\"Warehouse Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/financial/MoneyInList\",\"icon\":\"profile\",\"id\":204,\"text\":\"收款单\",\"url\":\"/financial/money_in\",\"textEn\":\"Receipt Vouchers\"},{\"component\":\"/financial/MoneyOutList\",\"icon\":\"profile\",\"id\":205,\"text\":\"付款单\",\"url\":\"/financial/money_out\",\"textEn\":\"Payment Vouchers\"}],\"icon\":\"money-collect\",\"id\":44,\"text\":\"财务管理\",\"url\":\"/financial\",\"textEn\":\"Finance Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/asset/AssetDashboard\",\"icon\":\"dashboard\",\"id\":276,\"text\":\"资产汇总\",\"url\":\"/asset\",\"textEn\":\"Asset Overview\"},{\"component\":\"/asset/AssetList\",\"icon\":\"profile\",\"id\":273,\"text\":\"资产台账\",\"url\":\"/asset/ledger\",\"textEn\":\"Asset Ledger\"},{\"component\":\"/asset/DeviceList\",\"icon\":\"tool\",\"id\":274,\"text\":\"设备台账\",\"url\":\"/asset/device\",\"textEn\":\"Device Ledger\"},{\"component\":\"/asset/InventoryList\",\"icon\":\"scan\",\"id\":275,\"text\":\"资产盘点\",\"url\":\"/asset/inventory\",\"textEn\":\"Asset Inventory\"}],\"icon\":\"bank\",\"id\":272,\"text\":\"资产管理\",\"url\":\"/assetManagement\",\"textEn\":\"Asset Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/material/MaterialCategoryList\",\"icon\":\"profile\",\"id\":22,\"text\":\"商品类别\",\"url\":\"/material/material_category\",\"textEn\":\"Product Categories\"},{\"component\":\"/material/MaterialList\",\"icon\":\"profile\",\"id\":23,\"text\":\"商品信息\",\"url\":\"/material/material\",\"textEn\":\"Product Information\"},{\"component\":\"/system/UnitList\",\"icon\":\"profile\",\"id\":220,\"text\":\"多单位\",\"url\":\"/system/unit\",\"textEn\":\"Multiple Units\"},{\"component\":\"/material/MaterialAttributeList\",\"icon\":\"profile\",\"id\":247,\"text\":\"多属性\",\"url\":\"/material/material_attribute\",\"textEn\":\"Product Attributes\"}],\"icon\":\"shopping\",\"id\":21,\"text\":\"商品管理\",\"url\":\"/material\",\"textEn\":\"Product Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/AccountReport\",\"icon\":\"profile\",\"id\":207,\"text\":\"账户统计\",\"url\":\"/report/account_report\",\"textEn\":\"Account Summary\"},{\"component\":\"/report/RetailOutReport\",\"icon\":\"profile\",\"id\":259,\"text\":\"零售统计\",\"url\":\"/report/retail_out_report\",\"textEn\":\"Retail Summary\"},{\"component\":\"/report/BuyInReport\",\"icon\":\"profile\",\"id\":208,\"text\":\"采购统计\",\"url\":\"/report/buy_in_report\",\"textEn\":\"Purchase Summary\"},{\"component\":\"/report/SaleOutReport\",\"icon\":\"profile\",\"id\":209,\"text\":\"销售统计\",\"url\":\"/report/sale_out_report\",\"textEn\":\"Sales Summary\"},{\"component\":\"/report/InDetail\",\"icon\":\"profile\",\"id\":226,\"text\":\"入库明细\",\"url\":\"/report/in_detail\",\"textEn\":\"Inbound Details\"},{\"component\":\"/report/OutDetail\",\"icon\":\"profile\",\"id\":227,\"text\":\"出库明细\",\"url\":\"/report/out_detail\",\"textEn\":\"Outbound Details\"},{\"component\":\"/report/InMaterialCount\",\"icon\":\"profile\",\"id\":228,\"text\":\"入库汇总\",\"url\":\"/report/in_material_count\",\"textEn\":\"Inbound Summary\"},{\"component\":\"/report/OutMaterialCount\",\"icon\":\"profile\",\"id\":229,\"text\":\"出库汇总\",\"url\":\"/report/out_material_count\",\"textEn\":\"Outbound Summary\"},{\"component\":\"/report/InOutStockReport\",\"icon\":\"profile\",\"id\":59,\"text\":\"进销存统计\",\"url\":\"/report/in_out_stock_report\",\"textEn\":\"Inventory Transaction Summary\"},{\"component\":\"/report/CustomerAccount\",\"icon\":\"profile\",\"id\":235,\"text\":\"客户对账\",\"url\":\"/report/customer_account\",\"textEn\":\"Customer Reconciliation\"},{\"component\":\"/report/VendorAccount\",\"icon\":\"profile\",\"id\":237,\"text\":\"供应商对账\",\"url\":\"/report/vendor_account\",\"textEn\":\"Supplier Reconciliation\"},{\"component\":\"/report/StockWarningReport\",\"icon\":\"profile\",\"id\":244,\"text\":\"库存预警\",\"url\":\"/report/stock_warning_report\",\"textEn\":\"Stock Alerts\"}],\"icon\":\"pie-chart\",\"id\":198,\"text\":\"报表查询\",\"url\":\"/report\",\"textEn\":\"Reports\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/VendorList\",\"icon\":\"profile\",\"id\":25,\"text\":\"供应商信息\",\"url\":\"/system/vendor\",\"textEn\":\"Suppliers\"},{\"component\":\"/system/CustomerList\",\"icon\":\"profile\",\"id\":217,\"text\":\"客户信息\",\"url\":\"/system/customer\",\"textEn\":\"Customers\"},{\"component\":\"/system/MemberList\",\"icon\":\"profile\",\"id\":218,\"text\":\"会员信息\",\"url\":\"/system/member\",\"textEn\":\"Members\"},{\"component\":\"/system/CustomerCategoryList\",\"icon\":\"bars\",\"id\":267,\"text\":\"客户分类\",\"url\":\"/system/customerCategory\",\"textEn\":\"Customer Categories\"},{\"component\":\"/system/DepotList\",\"icon\":\"profile\",\"id\":26,\"text\":\"仓库信息\",\"url\":\"/system/depot\",\"textEn\":\"Warehouses\"},{\"component\":\"/system/InOutItemList\",\"icon\":\"profile\",\"id\":194,\"text\":\"收支项目\",\"url\":\"/system/in_out_item\",\"textEn\":\"Income and Expense Items\"},{\"component\":\"/system/AccountList\",\"icon\":\"profile\",\"id\":195,\"text\":\"结算账户\",\"url\":\"/system/account\",\"textEn\":\"Settlement Accounts\"},{\"component\":\"/system/PersonList\",\"icon\":\"profile\",\"id\":31,\"text\":\"操作人员管理\",\"url\":\"/system/person\",\"textEn\":\"Operators\"}],\"icon\":\"appstore\",\"id\":24,\"text\":\"基础资料\",\"url\":\"/systemA\",\"textEn\":\"Master Data\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/RoleList\",\"icon\":\"profile\",\"id\":13,\"text\":\"角色管理\",\"url\":\"/system/role\",\"textEn\":\"Role Management\"},{\"component\":\"/system/UserList\",\"icon\":\"profile\",\"id\":14,\"text\":\"用户管理\",\"url\":\"/system/user\",\"textEn\":\"User Management\"},{\"component\":\"/system/OrganizationList\",\"icon\":\"profile\",\"id\":243,\"text\":\"部门管理\",\"url\":\"/system/organization\",\"textEn\":\"Department Management\"},{\"component\":\"/system/LogList\",\"icon\":\"profile\",\"id\":15,\"text\":\"日志管理\",\"url\":\"/system/log\",\"textEn\":\"Log Management\"},{\"component\":\"/material/MaterialPropertyList\",\"icon\":\"profile\",\"id\":236,\"text\":\"商品属性\",\"url\":\"/material/material_property\",\"textEn\":\"Product Properties\"},{\"component\":\"/system/SystemConfigList\",\"icon\":\"profile\",\"id\":234,\"text\":\"系统配置\",\"url\":\"/system/system_config\",\"textEn\":\"System Configuration\"},{\"component\":\"/system/FunctionList\",\"icon\":\"profile\",\"id\":16,\"text\":\"菜单管理\",\"url\":\"/system/function\",\"textEn\":\"Resource Menus\"},{\"component\":\"/system/PluginList\",\"icon\":\"profile\",\"id\":245,\"text\":\"插件管理\",\"url\":\"/system/plugin\",\"textEn\":\"Plugin Management\"},{\"component\":\"/system/DictList\",\"icon\":\"profile\",\"id\":260,\"text\":\"字典管理\",\"url\":\"/system/dict\",\"textEn\":\"Dictionary Management\"},{\"component\":\"/system/PlatformConfigList\",\"icon\":\"profile\",\"id\":258,\"text\":\"平台配置\",\"url\":\"/system/platform_config\",\"textEn\":\"Platform Configuration\"}],\"icon\":\"setting\",\"id\":1,\"text\":\"系统管理\",\"url\":\"/system\",\"textEn\":\"System Management\"}]'); +INSERT INTO `tbl_log` VALUES (9222, 63, '接口日志', '43.152.142.105/1.9.116.218', '2026-09-30 07:58:52', 0, 'UserController.getUserBtnByCurrentUser(..)', NULL, 'GET /apis/user/getUserBtnByCurrentUser', '{}', '{\"code\":200,\"data\":{\"userBtn\":[{\"btnStr\":\"8,1\",\"url\":\"/system/role\"},{\"btnStr\":\"1\",\"url\":\"/system/user\"},{\"btnStr\":\"1\",\"url\":\"/system/organization\"},{\"btnStr\":\"1\",\"url\":\"/material/material_property\"},{\"btnStr\":\"1\",\"url\":\"/system/system_config\"},{\"btnStr\":\"1\",\"url\":\"/system/function\"},{\"btnStr\":\"1\",\"url\":\"/system/plugin\"},{\"btnStr\":\"1\",\"url\":\"/material/material_category\"},{\"btnStr\":\"1,3\",\"url\":\"/material/material\"},{\"btnStr\":\"1\",\"url\":\"/system/unit\"},{\"btnStr\":\"1\",\"url\":\"/material/material_attribute\"},{\"btnStr\":\"1,3\",\"url\":\"/system/vendor\"},{\"btnStr\":\"1,3\",\"url\":\"/system/customer\"},{\"btnStr\":\"1,3\",\"url\":\"/system/member\"},{\"btnStr\":\"1\",\"url\":\"/system/depot\"},{\"btnStr\":\"1\",\"url\":\"/system/in_out_item\"},{\"btnStr\":\"1\",\"url\":\"/system/account\"},{\"btnStr\":\"1\",\"url\":\"/system/person\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_apply\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_out\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/delivery_plan\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/sale_shipment\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_out\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/order\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/requisition\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/report\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/giro\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/advance_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/allocation_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/assemble\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/headquarters_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/disassemble\"}]}}'); +INSERT INTO `tbl_log` VALUES (9223, 63, '接口日志', '43.152.142.32/1.9.116.218', '2026-09-30 07:58:52', 0, 'MsgController.getMsgByStatus(..)', NULL, 'GET /apis/msg/getMsgByStatus', '{\"status\":\"1\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (9224, 63, '接口日志', '43.152.142.29/1.9.116.218', '2026-09-30 07:58:52', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-04\",\"inbound\":100669.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (9225, 63, '接口日志', '43.152.142.141/1.9.116.218', '2026-09-30 07:58:52', 0, 'MsgController.getList(..)', NULL, 'GET /apis/msg/list', '{\"search\":\"{\\\"name\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9226, 63, '接口日志', '43.152.142.132/1.9.116.218', '2026-09-30 08:00:05', 0, 'MsgController.getMsgByStatus(..)', NULL, 'GET /apis/msg/getMsgByStatus', '{\"status\":\"1\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (9227, 63, '接口日志', '43.152.142.64/1.9.116.218', '2026-09-30 08:00:21', 0, 'AssetController.dashboard()', NULL, 'GET /apis/asset/dashboard', '{}', '{\"code\":200,\"data\":{\"summary\":{\"activeCount\":259,\"deviceCount\":10,\"assetQuantity\":289.000000,\"assetCount\":255,\"assetValue\":17260.000000,\"openInventoryCount\":2,\"managedCount\":265},\"statusDistribution\":[{\"code\":\"IN_USE\",\"value\":259},{\"code\":\"REPAIR\",\"value\":3},{\"code\":\"SCRAPPED\",\"value\":3}],\"departmentDistribution\":[{\"name\":\"Production\",\"value\":56},{\"name\":\"未指定\",\"value\":54},{\"name\":\"Laboratory\",\"value\":48},{\"name\":\"Technical & Technologies\",\"value\":29},{\"name\":\"Engineering\",\"value\":18},{\"name\":\"Not Specified\",\"value\":11},{\"name\":\"Human Resources\",\"value\":6},{\"name\":\"Quality\",\"value\":6}],\"deviceCategoryDistribution\":[{\"name\":\"检测设备\",\"value\":2},{\"name\":\"贴装设备\",\"value\":2},{\"name\":\"动力设备\",\"value\":1},{\"name\":\"印刷设备\",\"value\":1},{\"name\":\"工装设备\",\"value\":1},{\"name\":\"服务器\",\"value\":1},{\"name\":\"焊接设备\",\"value\":1},{\"name\":\"物流设备\",\"value\":1}],\"message\":\"成功\",\"categoryDistribution\":[{\"code\":\"HARDWARE\",\"name\":\"硬件资产\",\"value\":198.00},{\"code\":\"SOFTWARE\",\"name\":\"软件资产\",\"value\":67.00},{\"code\":\"SIM_CARD\",\"name\":\"SIM卡\",\"value\":24.00}],\"recentInventories\":[{\"inventoryNo\":\"PD20260921190840893\",\"inventoryUserName\":\"admin\",\"planName\":\"2026年09月资产设备专项盘点\",\"id\":6,\"totalCount\":1,\"inventoriedCount\":1,\"status\":\"CLOSED\",\"updatedAt\":\"2026-09-21 19:17:28\"},{\"inventoryNo\":\"PD20260921170623856\",\"inventoryUserName\":\"张三\",\"planName\":\"2026年09月资产设备专项盘点\",\"id\":4,\"totalCount\":8,\"inventoriedCount\":8,\"status\":\"CLOSED\",\"updatedAt\":\"2026-09-21 19:16:33\"},{\"inventoryNo\":\"PD20260921190800418\",\"inventoryUserName\":\"张三\",\"planName\":\"2026年09月资产设备专项盘点\",\"id\":5,\"totalCount\":2,\"inventoriedCount\":0,\"status\":\"ACCEPTED\",\"updatedAt\":\"2026-09-21 19:08:13\"},{\"inventoryNo\":\"PD20260918131230171\",\"inventoryUserName\":\"张伟\",\"planName\":\"2026年09月资产设备专项盘点\",\"id\":1,\"totalCount\":3,\"inventoriedCount\":1,\"status\":\"IN_PROGRESS\",\"updatedAt\":\"2026-09-21 14:35:59\"}],\"updatedAt\":\"2026-09-30\"}}'); +INSERT INTO `tbl_log` VALUES (9228, 63, '接口日志', '43.174.53.17/1.9.116.218', '2026-09-30 08:00:27', 0, 'AssetController.categoryOptions()', NULL, 'GET /apis/asset/category/options', '{}', '{\"code\":200,\"data\":{\"rows\":[{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"尚未归入具体种类的资产\",\"updateTime\":1790613193000,\"categoryCode\":\"UNCATEGORIZED\",\"id\":4,\"sort\":10,\"categoryName\":\"未分类\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System 硬件台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"HARDWARE\",\"id\":5,\"sort\":20,\"categoryName\":\"硬件资产\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System 软件台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"SOFTWARE\",\"id\":6,\"sort\":30,\"categoryName\":\"软件资产\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System SIM 卡台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"SIM_CARD\",\"id\":7,\"sort\":40,\"categoryName\":\"SIM卡\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_01BF8DA563A0\",\"id\":11,\"sort\":100,\"categoryName\":\"生产设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_7129859760C3\",\"id\":12,\"sort\":100,\"categoryName\":\"检测设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_9F38069B30A1\",\"id\":13,\"sort\":100,\"categoryName\":\"动力设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_75F489029B11\",\"id\":14,\"sort\":100,\"categoryName\":\"IT设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_3DDFE01CA0B8\",\"id\":15,\"sort\":100,\"categoryName\":\"物流设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_B5D44F2B039A\",\"id\":16,\"sort\":100,\"categoryName\":\"工装设备\",\"enabled\":true}],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9229, 63, '接口日志', '43.152.142.112/1.9.116.218', '2026-09-30 08:00:27', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":255,\"rows\":[{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019200694297052\",\"assetName\":\"SIM卡 896019200694297052\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"6\",\"externalSource\":\"SIM\",\"id\":270,\"keeper\":\"UITM Dungun\",\"location\":\"SMT (???)\",\"originalValue\":0.000000,\"quantity\":1.000000,\"source\":\"SAS\",\"specification\":\"183.171.146.98\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019190221500578\",\"assetName\":\"SIM卡 896019190221500578\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"5\",\"externalSource\":\"SIM\",\"id\":269,\"keeper\":\"SMT\",\"location\":\"UITM Dungun\",\"originalValue\":0.000000,\"purchaseDate\":1608062400000,\"quantity\":1.000000,\"remark\":\"启用日期: 2020-12-16\",\"source\":\"SAS\",\"specification\":\"183.171.14.125\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019190221500576\",\"assetName\":\"SIM卡 896019190221500576\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"1\",\"externalSource\":\"SIM\",\"id\":268,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1608062400000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2020-12-16\",\"source\":\"SAS\",\"specification\":\"183.171.144.65\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607778\",\"assetName\":\"SIM卡 896019210381607778\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"2\",\"externalSource\":\"SIM\",\"id\":267,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1711051200000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2024-03-22\",\"source\":\"SAS\",\"specification\":\"183.171.15.60\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607781\",\"assetName\":\"SIM卡 896019210381607781\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"9\",\"externalSource\":\"SIM\",\"id\":266,\"keeper\":\"SMT\",\"location\":\"SMT (RnD) Modem RnD\",\"originalValue\":0.000000,\"purchaseDate\":1711051200000,\"quantity\":1.000000,\"remark\":\"设备序列号: 21070014;电表序列号: 320910015;启用日期: 2024-03-22\",\"source\":\"SAS\",\"specification\":\"183.171.5.142 / KM08-LTE Modem / 21070014\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607777\",\"assetName\":\"SIM卡 896019210381607777\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"3\",\"externalSource\":\"SIM\",\"id\":265,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1720987200000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2024-07-15\",\"source\":\"SAS\",\"specification\":\"183.171.40.182\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607782\",\"assetName\":\"SIM卡 896019210381607782\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"4\",\"externalSource\":\"SIM\",\"id\":264,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1720987200000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2024-07-15\",\"source\":\"SAS\",\"specification\":\"183.171.40.117\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607784\",\"assetName\":\"SIM卡 896019210381607784\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"7\",\"externalSource\":\"SIM\",\"id\":263,\"keeper\":\"SMT\",\"location\":\"SMT (Modem-Production)\",\"originalValue\":0.000000,\"purchaseDate\":1727553600000,\"quantity\":1.000000,\"remark\":\"设备序列号: 20041004;启用日期: 2024-09-29\",\"source\":\"SAS\",\"specification\":\"183.171.50.5 / KM08-LTE Modem / 20041004\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607783\",\"assetName\":\"SIM卡 896019210381607783\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"8\",\"externalSource\":\"SIM\",\"id\":262,\"keeper\":\"SMT\",\"location\":\"SMT (RnD) Modem Store\",\"originalValue\":0.000000,\"purchaseDate\":1727553600000,\"quantity\":1.000000,\"remark\":\"设备序列号: 2403005;启用日期: 2024-09-29\",\"source\":\"SAS\",\"specification\":\"183.171.50.6 / KM08-LTE Modem / 2403005\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607785\",\"assetName\":\"SIM卡 896019210381607785\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"10\",\"externalSource\":\"SIM\",\"id\":261,\"keeper\":\"SMT\",\"location\":\"SMT (RnD) Alyaa\",\"originalValue\":0.000000,\"purchaseDate\":1766433600000,\"quantity\":1.000000,\"remark\":\"设备序列号: 21070011;电表序列号: 320910014;启用日期: 2025-12-23\",\"source\":\"SAS\",\"specification\":\"183.171.151.171 / KM08-LTE Modem / 21070011\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000}]}}'); +INSERT INTO `tbl_log` VALUES (9230, 63, '接口日志', '43.152.142.40/1.9.116.218', '2026-09-30 08:00:32', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":255,\"rows\":[{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-383\",\"assetName\":\"Epson Epson LQ-310\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"383\",\"externalSource\":\"HARDWARE\",\"id\":20,\"keeper\":\"Hab\",\"location\":\"Admin Office\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: R9DY417590\",\"source\":\"SAS\",\"specification\":\"Printer / Epson / Epson LQ-310\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Ad\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-384\",\"assetName\":\"H3C H3C UniServer R3950 G6\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"384\",\"externalSource\":\"HARDWARE\",\"id\":19,\"keeper\":\"Haslim\",\"location\":\"Server Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 210235A4V0H259000004\",\"source\":\"SAS\",\"specification\":\"Server / H3C / H3C UniServer R3950 G6\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Technical & Technologies\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-385\",\"assetName\":\"TP-Link Omada SG3452\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"385\",\"externalSource\":\"HARDWARE\",\"id\":18,\"keeper\":\"Haslim\",\"location\":\"Server Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 225B0AN000371;MAC: 6C-4C-BC-C9-F0-8A\",\"source\":\"SAS\",\"specification\":\"Switch / TP-Link / Omada SG3452\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Technical & Technologies\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-387\",\"assetName\":\"HP HP LaserJet MFP M236sdw\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"387\",\"externalSource\":\"HARDWARE\",\"id\":17,\"location\":\"R&D Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: VNP5F19044\",\"source\":\"SAS\",\"specification\":\"Printer / HP / HP LaserJet MFP M236sdw\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Prod\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-389\",\"assetName\":\"Lenovo ThinkPad T14s 2-in-1\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"389\",\"externalSource\":\"HARDWARE\",\"id\":16,\"keeper\":\"Syed Bakri\",\"location\":\"Admin\",\"originalValue\":0.000000,\"purchaseDate\":1787169600000,\"quantity\":1.000000,\"remark\":\"序列号: PF6EN008\",\"source\":\"SAS\",\"specification\":\"Laptop / Lenovo / ThinkPad T14s 2-in-1 / Win 11 Home / Core Ultra 5 / 16G / 500G SSD\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"GM\"}]}}'); +INSERT INTO `tbl_log` VALUES (9231, 63, '接口日志', '43.174.54.14/1.9.116.218', '2026-09-30 08:00:40', 0, 'AssetDeviceController.list(..)', NULL, 'GET /apis/assetDevice/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":10,\"rows\":[{\"assetId\":8,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"工装设备\",\"deviceCode\":\"TOOL-STENCIL-CLEAN-01\",\"deviceName\":\"全自动钢网清洗机\",\"enabledDate\":1739822400000,\"id\":10,\"keeper\":\"王磊\",\"location\":\"一车间 钢网房\",\"manufacturer\":\"SAWA\",\"model\":\"SC-A1000\",\"nextMaintenanceDate\":1794254400000,\"purchaseDate\":1739131200000,\"remark\":\"水基清洗、漂洗、热风干燥一体化\",\"serialNumber\":\"SAWA-A1000-250210\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetId\":7,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"物流设备\",\"deviceCode\":\"WH-FORKLIFT-01\",\"deviceName\":\"2 吨电动叉车\",\"enabledDate\":1722456000000,\"id\":9,\"keeper\":\"张伟\",\"location\":\"原材料仓充电区\",\"manufacturer\":\"Toyota\",\"model\":\"8FBE20\",\"nextMaintenanceDate\":1792872000000,\"purchaseDate\":1721592000000,\"remark\":\"锂电池版本,配置蓝光安全警示灯\",\"serialNumber\":\"TY-8FBE20-240722\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"仓储物流部\"},{\"assetId\":6,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"服务器\",\"deviceCode\":\"IT-MES-DB-01\",\"deviceName\":\"MES 数据库主服务器\",\"enabledDate\":1737489600000,\"id\":8,\"keeper\":\"赵敏\",\"location\":\"数据中心 A03-U18\",\"manufacturer\":\"Dell\",\"model\":\"PowerEdge R760\",\"nextMaintenanceDate\":1797278400000,\"purchaseDate\":1736884800000,\"remark\":\"双路 CPU、512GB 内存、全闪存 RAID10\",\"serialNumber\":\"CN-R760-25011501\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"信息技术部\"},{\"assetId\":5,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"动力设备\",\"deviceCode\":\"UTIL-AIR-01\",\"deviceName\":\"变频螺杆空压机\",\"enabledDate\":1701374400000,\"id\":7,\"keeper\":\"陈晨\",\"location\":\"动力站 1 号机位\",\"manufacturer\":\"Atlas Copco\",\"model\":\"GA22 VSD+\",\"nextMaintenanceDate\":1790798400000,\"purchaseDate\":1700424000000,\"remark\":\"运行压力 0.72MPa,接入能源管理系统\",\"serialNumber\":\"AC-GA22-2311209\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"设备动力部\"},{\"assetId\":4,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"检测设备\",\"deviceCode\":\"QC-SPI-01\",\"deviceName\":\"在线 3D SPI\",\"enabledDate\":1713384000000,\"id\":6,\"keeper\":\"陈晨\",\"lastInventoryTime\":1789986951000,\"location\":\"一车间 印刷检测区\",\"manufacturer\":\"Koh Young\",\"model\":\"KY8030-3\",\"nextMaintenanceDate\":1793908800000,\"purchaseDate\":1712347200000,\"remark\":\"与印刷机闭环反馈锡膏偏移数据\",\"serialNumber\":\"KY-8030-24040608\",\"status\":\"IN_USE\",\"updateTime\":1789986959000,\"useDepartment\":\"品质部\"},{\"assetId\":3,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"检测设备\",\"deviceCode\":\"QC-AOI-01\",\"deviceName\":\"在线 3D AOI\",\"enabledDate\":1713384000000,\"id\":5,\"keeper\":\"陈晨\",\"lastInventoryTime\":1790003830000,\"location\":\"一车间 AOI 检测区\",\"manufacturer\":\"Koh Young\",\"model\":\"Zenith 2\",\"nextMaintenanceDate\":1793822400000,\"purchaseDate\":1712347200000,\"remark\":\"具备 AI 缺陷复判和 SPC 数据接口\",\"serialNumber\":\"KY-Z2-24040615\",\"status\":\"IN_USE\",\"updateTime\":1790003830000,\"useDepartment\":\"品质部\"},{\"assetId\":2,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"焊接设备\",\"deviceCode\":\"SMT-L01-REFLOW-01\",\"deviceName\":\"十温区氮气回流焊炉\",\"enabledDate\":1712692800000,\"id\":4,\"keeper\":\"王磊\",\"location\":\"一车间 SMT-01 线后段\",\"manufacturer\":\"Heller Industries\",\"model\":\"HELLER 1936MK7\",\"nextMaintenanceDate\":1792440000000,\"purchaseDate\":1710705600000,\"remark\":\"氮气闭环控制,支持双轨独立调宽\",\"serialNumber\":\"HLR1936-2403268\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetId\":1,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"贴装设备\",\"deviceCode\":\"SMT-L01-MOUNTER-B\",\"deviceName\":\"多功能贴片机 B\",\"enabledDate\":1712520000000,\"id\":3,\"keeper\":\"王磊\",\"location\":\"一车间 SMT-01 线 B 工位\",\"manufacturer\":\"Panasonic\",\"model\":\"Panasonic NPM-W2S\",\"nextMaintenanceDate\":1792094400000,\"purchaseDate\":1710705600000,\"remark\":\"负责异形件及高精度元件贴装\",\"serialNumber\":\"NPMW2S24031802\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetId\":1,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"贴装设备\",\"deviceCode\":\"SMT-L01-MOUNTER-A\",\"deviceName\":\"高速模块贴片机 A\",\"enabledDate\":1712520000000,\"id\":2,\"keeper\":\"王磊\",\"location\":\"一车间 SMT-01 线 A 工位\",\"manufacturer\":\"Panasonic\",\"model\":\"Panasonic NPM-D3A\",\"nextMaintenanceDate\":1792008000000,\"purchaseDate\":1710705600000,\"remark\":\"前段高速贴装,配置 16 头轻量贴装头\",\"serialNumber\":\"NPMD3A24031801\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetId\":1,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"印刷设备\",\"deviceCode\":\"SMT-L01-PRINTER-01\",\"deviceName\":\"全自动锡膏印刷机\",\"enabledDate\":1712520000000,\"id\":1,\"keeper\":\"王磊\",\"lastInventoryTime\":1789726083000,\"location\":\"一车间 SMT-01 线前段\",\"manufacturer\":\"ASMPT\",\"model\":\"DEK NeoHorizon 03iX\",\"nextMaintenanceDate\":1791403200000,\"purchaseDate\":1710705600000,\"remark\":\"配置 2D 检测与自动擦网单元\",\"serialNumber\":\"DEK24NH03187\",\"status\":\"IN_USE\",\"updateTime\":1789726082000,\"useDepartment\":\"SMT生产部\"}]}}'); +INSERT INTO `tbl_log` VALUES (9232, 63, '接口日志', '43.152.142.32/1.9.116.218', '2026-09-30 08:01:52', 0, 'AssetInventoryController.operatorOptions()', NULL, 'GET /apis/assetInventory/operatorOptions', '{}', '{\"code\":200,\"data\":{\"rows\":[{\"loginName\":\"admin\",\"name\":\"admin\",\"id\":63},{\"loginName\":\"admin2\",\"name\":\"admin2\",\"id\":149}],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9233, 63, '接口日志', '43.174.54.50/1.9.116.218', '2026-09-30 08:01:52', 0, 'AssetInventoryController.list(..)', NULL, 'GET /apis/assetInventory/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":4,\"rows\":[{\"abnormalCount\":0,\"auditTime\":1790003845000,\"auditUserId\":149,\"completedAt\":1790003836000,\"createTime\":1790003320000,\"creator\":149,\"deadline\":1790258400000,\"deleteFlag\":\"0\",\"id\":6,\"inventoriedCount\":1,\"inventoryNo\":\"PD20260921190840893\",\"inventoryUserId\":63,\"inventoryUserName\":\"admin\",\"normalCount\":1,\"planName\":\"2026年09月资产设备专项盘点\",\"plannedAt\":1790053200000,\"scopeType\":\"DEVICE\",\"source\":\"MANUAL\",\"startedAt\":1790003819000,\"status\":\"CLOSED\",\"totalCount\":1,\"updateTime\":1790003848000,\"updater\":149},{\"abnormalCount\":0,\"createTime\":1790003280000,\"creator\":149,\"deadline\":1790258400000,\"deleteFlag\":\"0\",\"id\":5,\"inventoriedCount\":0,\"inventoryNo\":\"PD20260921190800418\",\"inventoryUserId\":149,\"inventoryUserName\":\"张三\",\"normalCount\":0,\"planName\":\"2026年09月资产设备专项盘点\",\"plannedAt\":1790053200000,\"remark\":\"进行盘点\",\"scopeType\":\"ALL\",\"source\":\"MANUAL\",\"status\":\"ACCEPTED\",\"totalCount\":2,\"updateTime\":1790003293000,\"updater\":149},{\"abnormalCount\":0,\"completedAt\":1790002875000,\"createTime\":1789995983000,\"creator\":63,\"deadline\":1790258400000,\"deleteFlag\":\"0\",\"id\":4,\"inventoriedCount\":8,\"inventoryNo\":\"PD20260921170623856\",\"inventoryUserId\":149,\"inventoryUserName\":\"张三\",\"normalCount\":0,\"planName\":\"2026年09月资产设备专项盘点\",\"plannedAt\":1790053200000,\"remark\":\"进行盘点\",\"scopeType\":\"ASSET\",\"source\":\"MANUAL\",\"startedAt\":1790002559000,\"status\":\"CLOSED\",\"totalCount\":8,\"updateTime\":1790003793000,\"updater\":149},{\"abnormalCount\":0,\"createTime\":1789722750000,\"creator\":63,\"deadline\":1789999200000,\"deleteFlag\":\"0\",\"id\":1,\"inventoriedCount\":1,\"inventoryNo\":\"PD20260918131230171\",\"inventoryUserId\":36,\"inventoryUserName\":\"张伟\",\"normalCount\":0,\"planName\":\"2026年09月资产设备专项盘点\",\"plannedAt\":1789794000000,\"remark\":\"进行盘点\",\"scopeType\":\"DEVICE\",\"source\":\"MANUAL\",\"startedAt\":1789723142000,\"status\":\"IN_PROGRESS\",\"totalCount\":3,\"updateTime\":1789986959000,\"updater\":63}]}}'); +INSERT INTO `tbl_log` VALUES (9234, 63, '接口日志', '43.152.142.40/1.9.116.218', '2026-09-30 08:02:14', 0, 'MsgController.getMsgByStatus(..)', NULL, 'GET /apis/msg/getMsgByStatus', '{\"status\":\"1\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (9235, 63, '接口日志', '43.174.32.13/1.9.116.218', '2026-09-30 08:02:19', 0, 'UnitController.getList(..)', NULL, 'GET /apis/unit/list', '{\"search\":\"{\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":4,\"rows\":[{\"basicUnit\":\"瓶\",\"deleteFlag\":\"0\",\"enabled\":true,\"id\":21,\"name\":\"瓶/(箱=12瓶)\",\"otherUnit\":\"箱\",\"ratio\":12.000,\"tenantId\":63},{\"basicUnit\":\"盒\",\"deleteFlag\":\"0\",\"enabled\":true,\"id\":20,\"name\":\"盒/(箱=8盒)\",\"otherUnit\":\"箱\",\"ratio\":8.000,\"tenantId\":63},{\"basicUnit\":\"个\",\"deleteFlag\":\"0\",\"enabled\":true,\"id\":19,\"name\":\"个/(盒=15个)\",\"otherUnit\":\"盒\",\"ratio\":15.000,\"tenantId\":63},{\"basicUnit\":\"个\",\"deleteFlag\":\"0\",\"enabled\":true,\"id\":15,\"name\":\"个/(箱=12个)\",\"otherUnit\":\"箱\",\"ratio\":12.000,\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (9236, 63, '接口日志', '43.152.142.43/1.9.116.218', '2026-09-30 08:02:30', 0, 'MaterialAttributeController.getList(..)', NULL, 'GET /apis/materialAttribute/list', '{\"search\":\"{\\\"attributeName\\\":\\\"\\\",\\\"attributeValue\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":5,\"rows\":[{\"attributeName\":\"自定义3\",\"deleteFlag\":\"0\",\"id\":5,\"tenantId\":63},{\"attributeName\":\"自定义2\",\"deleteFlag\":\"0\",\"id\":4,\"tenantId\":63},{\"attributeName\":\"自定义1\",\"attributeValue\":\"小米|华为\",\"deleteFlag\":\"0\",\"id\":3,\"tenantId\":63},{\"attributeName\":\"多尺寸\",\"attributeValue\":\"S|M|L|XL|XXL|XXXL\",\"deleteFlag\":\"0\",\"id\":2,\"tenantId\":63},{\"attributeName\":\"多颜色\",\"attributeValue\":\"红色|橙色|黄色|绿色|蓝色|紫色\",\"deleteFlag\":\"0\",\"id\":1,\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (9237, 63, '接口日志', '43.152.142.132/1.9.116.218', '2026-09-30 08:02:35', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (9238, 63, '接口日志', '43.174.53.30/1.9.116.218', '2026-09-30 08:02:35', 0, 'MaterialController.getList(..)', NULL, 'GET /apis/material/list', '{\"search\":\"{\\\"materialParam\\\":\\\"\\\",\\\"standard\\\":\\\"\\\",\\\"model\\\":\\\"\\\",\\\"color\\\":\\\"\\\",\\\"brand\\\":\\\"\\\",\\\"mfrs\\\":\\\"\\\",\\\"otherField1\\\":\\\"\\\",\\\"otherField2\\\":\\\"\\\",\\\"otherField3\\\":\\\"\\\",\\\"weight\\\":\\\"\\\",\\\"expiryNum\\\":\\\"\\\",\\\"position\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"mpList\\\":\\\"扩展1,扩展2,扩展3\\\"}\"}', '{\"code\":200,\"data\":{\"total\":24,\"rows\":[{\"attribute\":\"{}\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"categoryId\":33,\"categoryName\":\"成品\",\"commodityDecimal\":200.000000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":706,\"imgName\":\"\",\"initialStock\":0,\"lowDecimal\":200.000000,\"mBarCode\":\"1002\",\"materialOther\":\"\",\"mfrs\":\"SMT\",\"mnemonic\":\"MD-4G111(VF) 4G\",\"model\":\"MD-4G111(VF) 4G\",\"name\":\"MD-4G111(VF) 4G\",\"purchaseDecimal\":100.000000,\"sku\":\"\",\"standard\":\"MD-4G111(VF) 4G\",\"stock\":0,\"unit\":\"只\",\"wholesaleDecimal\":200.000000},{\"attribute\":\"{}\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"categoryId\":34,\"categoryName\":\"包装\",\"commodityDecimal\":10.000000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":705,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":10.000000,\"mBarCode\":\"1001\",\"materialOther\":\"\",\"mnemonic\":\"MD-4G111(VF) bz\",\"model\":\"MD-4G111(VF)\",\"name\":\"MD-4G111(VF) 包装\",\"purchaseDecimal\":10.000000,\"sku\":\"\",\"standard\":\"MD-4G111(VF) packing\",\"stock\":0.000000,\"unit\":\"件\",\"wholesaleDecimal\":10.000000},{\"attribute\":\"\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryId\":33,\"categoryName\":\"成品\",\"color\":\"\",\"commodityDecimal\":340.000000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":704,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":340.000000,\"mBarCode\":\"3PH-APEC3-WC\",\"materialOther\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mnemonic\":\"\",\"model\":\"3PH APEC3-WC\",\"name\":\"3PH APEC3-WC\",\"otherField1\":\"\",\"otherField2\":\"\",\"otherField3\":\"\",\"position\":\"\",\"purchaseDecimal\":317.500000,\"remark\":\"Excel初始化;条码:3PH-APEC3-WC\",\"standard\":\"3PH APEC3-WC\",\"stock\":7223.000000,\"tenantId\":63,\"unit\":\"件\",\"wholesaleDecimal\":340.000000},{\"attribute\":\"\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryId\":33,\"categoryName\":\"成品\",\"color\":\"\",\"commodityDecimal\":73.500000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":703,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":73.500000,\"mBarCode\":\"1PH-WS79\",\"materialOther\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mnemonic\":\"\",\"model\":\"1PH WS79\",\"name\":\"1PH WS79\",\"otherField1\":\"\",\"otherField2\":\"\",\"otherField3\":\"\",\"position\":\"\",\"purchaseDecimal\":59.500000,\"remark\":\"Excel初始化;条码:1PH-WS79\",\"standard\":\"1PH WS79\",\"stock\":52400.000000,\"tenantId\":63,\"unit\":\"件\",\"wholesaleDecimal\":73.500000},{\"attribute\":\"\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryId\":32,\"categoryName\":\"半成品\",\"color\":\"\",\"commodityDecimal\":24.300000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":702,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":24.300000,\"mBarCode\":\"C.4.T.0.00722\",\"materialOther\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mnemonic\":\"\",\"model\":\"MD-RS178(VA)\",\"name\":\"MD-RS178(VA) RS485分线器\",\"otherField1\":\"\",\"otherField2\":\"\",\"otherField3\":\"\",\"position\":\"\",\"purchaseDecimal\":24.300000,\"remark\":\"Excel初始化;条码:C.4.T.0.00722\",\"standard\":\"MD-RS178(VA)\",\"stock\":1000.000000,\"tenantId\":63,\"unit\":\"件\",\"wholesaleDecimal\":24.300000},{\"attribute\":\"\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryId\":32,\"categoryName\":\"半成品\",\"color\":\"\",\"commodityDecimal\":142.560000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":701,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":142.560000,\"mBarCode\":\"C.4.T.0.0068900002\",\"materialOther\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mnemonic\":\"\",\"model\":\"MD-RS114(VB)\",\"name\":\"MD-RS114(VB) 基于RS485的MODBS TCPMODBS RTUASVII转换模块_(DZG)\",\"otherField1\":\"\",\"otherField2\":\"\",\"otherField3\":\"\",\"position\":\"\",\"purchaseDecimal\":142.560000,\"remark\":\"Excel初始化;条码:C.4.T.0.0068900002\",\"standard\":\"MD-RS114(VB)\",\"stock\":100.000000,\"tenantId\":63,\"unit\":\"件\",\"wholesaleDecimal\":142.560000},{\"attribute\":\"\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryId\":32,\"categoryName\":\"半成品\",\"color\":\"\",\"commodityDecimal\":132.840000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":700,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":132.840000,\"mBarCode\":\"C.4.T.0.00686\",\"materialOther\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mnemonic\":\"\",\"model\":\"TC160(VA)\",\"name\":\"TC160(VA) 通讯模块供电盒\",\"otherField1\":\"\",\"otherField2\":\"\",\"otherField3\":\"\",\"position\":\"\",\"purchaseDecimal\":132.840000,\"remark\":\"Excel初始化;条码:C.4.T.0.00686\",\"standard\":\"TC160(VA)\",\"stock\":50.000000,\"tenantId\":63,\"unit\":\"件\",\"wholesaleDecimal\":132.840000},{\"attribute\":\"\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryId\":32,\"categoryName\":\"半成品\",\"color\":\"\",\"commodityDecimal\":0.100000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":699,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":0.100000,\"mBarCode\":\"C.4.T.0.00654\",\"materialOther\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mnemonic\":\"\",\"model\":\"MD-4G111(VF)\",\"name\":\"MD-4G111(VF) 4G模块\",\"otherField1\":\"\",\"otherField2\":\"\",\"otherField3\":\"\",\"position\":\"\",\"purchaseDecimal\":0.100000,\"remark\":\"Excel初始化;条码:C.4.T.0.00654\",\"standard\":\"MD-4G111(VF)\",\"stock\":76970.000000,\"tenantId\":63,\"unit\":\"件\",\"wholesaleDecimal\":0.100000},{\"attribute\":\"\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryId\":32,\"categoryName\":\"半成品\",\"color\":\"\",\"commodityDecimal\":324.000000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":698,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":324.000000,\"mBarCode\":\"C.4.T.0.00562\",\"materialOther\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mnemonic\":\"\",\"model\":\"MD-4GVIII(VB)\",\"name\":\"MD-4GVIII(VB)\",\"otherField1\":\"\",\"otherField2\":\"\",\"otherField3\":\"\",\"position\":\"\",\"purchaseDecimal\":324.000000,\"remark\":\"Excel初始化;条码:C.4.T.0.00562\",\"standard\":\"MD-4GVIII(VB)\",\"stock\":50.000000,\"tenantId\":63,\"unit\":\"件\",\"wholesaleDecimal\":324.000000},{\"attribute\":\"\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryId\":32,\"categoryName\":\"半成品\",\"color\":\"\",\"commodityDecimal\":129.600000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":697,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":129.600000,\"mBarCode\":\"C.4.T.0.00553\",\"materialOther\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mnemonic\":\"\",\"model\":\"MT-P109(VA)\",\"name\":\"MT-P109(VA)\",\"otherField1\":\"\",\"otherField2\":\"\",\"otherField3\":\"\",\"position\":\"\",\"purchaseDecimal\":129.600000,\"remark\":\"Excel初始化;条码:C.4.T.0.00553\",\"standard\":\"MT-P109(VA)\",\"stock\":500.000000,\"tenantId\":63,\"unit\":\"件\",\"wholesaleDecimal\":129.600000}]}}'); +INSERT INTO `tbl_log` VALUES (9239, 63, '接口日志', '43.152.142.57/1.9.116.218', '2026-09-30 08:08:41', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":255,\"rows\":[{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAB/031PC\",\"assetName\":\"HP\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"221\",\"externalSource\":\"HARDWARE\",\"id\":60,\"keeper\":\"Aqila\",\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Testing / Lab\",\"source\":\"SAS\",\"specification\":\"Monitor / HP\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/N02/CPU020\",\"assetName\":\"HP HP Pro 3330 MT\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"220\",\"externalSource\":\"HARDWARE\",\"id\":59,\"keeper\":\"Aqila\",\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: SGH221S6SH;用途: Testing / Lab\",\"source\":\"SAS\",\"specification\":\"CPU / HP / HP Pro 3330 MT / Win 10 Pro / Core i7-2600 / 8G / 220G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAB/030PC\",\"assetName\":\"HP ProDesk 400 G7\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"219\",\"externalSource\":\"HARDWARE\",\"id\":58,\"keeper\":\"Aqila\",\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 4CE216BDPN;用途: Testing / Lab;原备注: Windows License Key : QRWJ7-2N8MF-TM9WY-HKB42-VFR9C\\n\",\"source\":\"SAS\",\"specification\":\"CPU / HP / ProDesk 400 G7 / Win 11 Pro / Core i5-10500 / 16G / 250G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAB/029CPU\",\"assetName\":\"HP ProDesk 400 G7\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"218\",\"externalSource\":\"HARDWARE\",\"id\":57,\"keeper\":\"Aqila\",\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 4CE219BMSP;用途: Testing / Lab\",\"source\":\"SAS\",\"specification\":\"CPU / HP / ProDesk 400 G7 / Win 11 Pro / Core i5-10500 / 16G / 1TB\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAB/029PC\",\"assetName\":\"HP\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"217\",\"externalSource\":\"HARDWARE\",\"id\":56,\"keeper\":\"Aqila\",\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Testing / Lab\",\"source\":\"SAS\",\"specification\":\"Monitor / HP\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAP19/11112024\",\"assetName\":\"Lenovo ThinkPad X1 Carbon Gen 8\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"216\",\"externalSource\":\"HARDWARE\",\"id\":55,\"keeper\":\"Hasmah\",\"location\":\"Not Specified\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Not Specified;原备注: RETURN TO SUPPLIER DUE THE PROBLEM\",\"source\":\"SAS\",\"specification\":\"Laptop / Lenovo / ThinkPad X1 Carbon Gen 8\",\"status\":\"REPAIR\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Human Resources\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAP18/11112024\",\"assetName\":\"Lenovo ThinkPad X1 Carbon Gen 8\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"215\",\"externalSource\":\"HARDWARE\",\"id\":54,\"keeper\":\"Hasmah\",\"location\":\"Stored with HR\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Stored\",\"source\":\"SAS\",\"specification\":\"Laptop / Lenovo / ThinkPad X1 Carbon Gen 8\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Human Resources\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAP17/11112024\",\"assetName\":\"HP Pro Book 440\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"214\",\"externalSource\":\"HARDWARE\",\"id\":53,\"keeper\":\"Hasmah\",\"location\":\"Stored with HR\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Stored\",\"source\":\"SAS\",\"specification\":\"Laptop / HP / Pro Book 440\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Human Resources\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAP16/11112024\",\"assetName\":\"HP Radeon Intel Core i5\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"213\",\"externalSource\":\"HARDWARE\",\"id\":52,\"keeper\":\"Hasmah\",\"location\":\"Stored with HR\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Stored\",\"source\":\"SAS\",\"specification\":\"Laptop / HP / Radeon Intel Core i5\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Human Resources\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-212\",\"assetName\":\"HP All-in-One 24-dp0209d\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"212\",\"externalSource\":\"HARDWARE\",\"id\":51,\"keeper\":\"Hasmah\",\"location\":\"HR Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 8CC10109F6\",\"source\":\"SAS\",\"specification\":\"All-In-One / HP / All-in-One 24-dp0209d / Win 10 Home / AMD Ryzen 5 4500U / 24G / 500G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Human Resources\"}]}}'); +INSERT INTO `tbl_log` VALUES (9240, 63, '接口日志', '43.174.32.13/1.9.116.218', '2026-09-30 08:08:45', 0, 'AssetController.categoryOptions()', NULL, 'GET /apis/asset/category/options', '{}', '{\"code\":200,\"data\":{\"rows\":[{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"尚未归入具体种类的资产\",\"updateTime\":1790613193000,\"categoryCode\":\"UNCATEGORIZED\",\"id\":4,\"sort\":10,\"categoryName\":\"未分类\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System 硬件台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"HARDWARE\",\"id\":5,\"sort\":20,\"categoryName\":\"硬件资产\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System 软件台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"SOFTWARE\",\"id\":6,\"sort\":30,\"categoryName\":\"软件资产\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System SIM 卡台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"SIM_CARD\",\"id\":7,\"sort\":40,\"categoryName\":\"SIM卡\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_01BF8DA563A0\",\"id\":11,\"sort\":100,\"categoryName\":\"生产设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_7129859760C3\",\"id\":12,\"sort\":100,\"categoryName\":\"检测设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_9F38069B30A1\",\"id\":13,\"sort\":100,\"categoryName\":\"动力设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_75F489029B11\",\"id\":14,\"sort\":100,\"categoryName\":\"IT设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_3DDFE01CA0B8\",\"id\":15,\"sort\":100,\"categoryName\":\"物流设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_B5D44F2B039A\",\"id\":16,\"sort\":100,\"categoryName\":\"工装设备\",\"enabled\":true}],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9241, 63, '接口日志', '43.174.54.14/1.9.116.218', '2026-09-30 08:08:58', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":255,\"rows\":[{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAB/041CPU\",\"assetName\":\"Dell ProDesk 400 G7\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"241\",\"externalSource\":\"HARDWARE\",\"id\":80,\"keeper\":\"X-Hadi\",\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 4CE219BMV4;用途: Testing / Lab\",\"source\":\"SAS\",\"specification\":\"CPU / Dell / ProDesk 400 G7 / Win 11 Pro / Core i5-10500 / 8G / 250G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAB/041PC\",\"assetName\":\"Lenovo\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"240\",\"externalSource\":\"HARDWARE\",\"id\":79,\"keeper\":\"Aqila\",\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Testing / Lab\",\"source\":\"SAS\",\"specification\":\"Monitor / Lenovo\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAB/040CPU\",\"assetName\":\"HP\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"239\",\"externalSource\":\"HARDWARE\",\"id\":78,\"keeper\":\"Aqila\",\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Testing / Lab\",\"source\":\"SAS\",\"specification\":\"CPU / HP\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAB/040PC\",\"assetName\":\"HP\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"238\",\"externalSource\":\"HARDWARE\",\"id\":77,\"keeper\":\"Aqila\",\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Testing / Lab\",\"source\":\"SAS\",\"specification\":\"Monitor / HP\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAB/039CPU\",\"assetName\":\"HP\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"237\",\"externalSource\":\"HARDWARE\",\"id\":76,\"keeper\":\"Aqila\",\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Testing / Lab\",\"source\":\"SAS\",\"specification\":\"CPU / HP\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAB/039PC\",\"assetName\":\"HP\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"236\",\"externalSource\":\"HARDWARE\",\"id\":75,\"keeper\":\"Aqila\",\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Testing / Lab\",\"source\":\"SAS\",\"specification\":\"Monitor / HP\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAB/038CPU\",\"assetName\":\"HP\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"235\",\"externalSource\":\"HARDWARE\",\"id\":74,\"keeper\":\"Aqila\",\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Testing / Lab\",\"source\":\"SAS\",\"specification\":\"CPU / HP\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAB/038PC\",\"assetName\":\"HP\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"234\",\"externalSource\":\"HARDWARE\",\"id\":73,\"keeper\":\"Aqila\",\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Testing / Lab\",\"source\":\"SAS\",\"specification\":\"Monitor / HP\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAB/037CPU\",\"assetName\":\"HP\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"233\",\"externalSource\":\"HARDWARE\",\"id\":72,\"keeper\":\"Aqila\",\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Testing / Lab\",\"source\":\"SAS\",\"specification\":\"CPU / HP\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAB/037PC\",\"assetName\":\"HP\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"232\",\"externalSource\":\"HARDWARE\",\"id\":71,\"keeper\":\"Aqila\",\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Testing / Lab\",\"source\":\"SAS\",\"specification\":\"Monitor / HP\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"}]}}'); +INSERT INTO `tbl_log` VALUES (9242, 63, '接口日志', '43.152.142.57/1.9.116.218', '2026-09-30 08:09:00', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":255,\"rows\":[{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/OFFICE2/051PC\",\"assetName\":\"Lenovo\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"261\",\"externalSource\":\"HARDWARE\",\"id\":100,\"keeper\":\"Not Specified\",\"location\":\"Office 2\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Not Specified\",\"source\":\"SAS\",\"specification\":\"Monitor / Lenovo\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Not Specified\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/OFFICE2/050CPU\",\"assetName\":\"Dell\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"260\",\"externalSource\":\"HARDWARE\",\"id\":99,\"keeper\":\"Not Specified\",\"location\":\"Office 2\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Not Specified\",\"source\":\"SAS\",\"specification\":\"CPU / Dell\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Not Specified\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/OFFICE2/050PC\",\"assetName\":\"Dell\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"259\",\"externalSource\":\"HARDWARE\",\"id\":98,\"keeper\":\"Not Specified\",\"location\":\"Office 2\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Not Specified\",\"source\":\"SAS\",\"specification\":\"Monitor / Dell\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Not Specified\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/OFFICE2/049CPU\",\"assetName\":\"HP HP Pro 3330 MT\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"258\",\"externalSource\":\"HARDWARE\",\"id\":97,\"keeper\":\"Herman\",\"location\":\"Office 2\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: SGH221S6SS;用途: Not Specified\",\"source\":\"SAS\",\"specification\":\"CPU / HP / HP Pro 3330 MT / Win 7 Pro / Core i7-2600 / 6G / 500G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Quality\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/OFFICE2/049PC\",\"assetName\":\"Lenovo\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"257\",\"externalSource\":\"HARDWARE\",\"id\":96,\"keeper\":\"Not Specified\",\"location\":\"Office 2\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Not Specified\",\"source\":\"SAS\",\"specification\":\"Monitor / Lenovo\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Not Specified\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/OFFICE2/048CPU\",\"assetName\":\"HP\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"256\",\"externalSource\":\"HARDWARE\",\"id\":95,\"keeper\":\"Not Specified\",\"location\":\"Office 2\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Not Specified\",\"source\":\"SAS\",\"specification\":\"CPU / HP\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Not Specified\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/OFFICE2/048PC\",\"assetName\":\"Lenovo\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"255\",\"externalSource\":\"HARDWARE\",\"id\":94,\"keeper\":\"Not Specified\",\"location\":\"Office 2\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Not Specified\",\"source\":\"SAS\",\"specification\":\"Monitor / Lenovo\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Not Specified\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-254\",\"assetName\":\"Smartboard NM-G750XS01\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"254\",\"externalSource\":\"HARDWARE\",\"id\":93,\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: HH230216698\",\"source\":\"SAS\",\"specification\":\"Smartboard / Smartboard NM-G750XS01 / Win 10 / Core i5-2450M / 8G / 128G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Meeting Room\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAB/014CPU\",\"assetName\":\"HP ProDesk 400 G7\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"253\",\"externalSource\":\"HARDWARE\",\"id\":92,\"keeper\":\"Aliff\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 4CE219BMV4\",\"source\":\"SAS\",\"specification\":\"CPU / HP / ProDesk 400 G7 / Win 11 Pro / Core i5-10500 / 8G / 1T\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"PTC8320E-04\",\"assetName\":\"HP ProDesk 400 G7\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"252\",\"externalSource\":\"HARDWARE\",\"id\":91,\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 4CE219BMTV\",\"source\":\"SAS\",\"specification\":\"CPU / HP / ProDesk 400 G7 / Win 11 Pro / Core i5-10500 / 16G / 1T\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"}]}}'); +INSERT INTO `tbl_log` VALUES (9243, 63, '接口日志', '43.174.53.30/1.9.116.218', '2026-09-30 08:09:04', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":255,\"rows\":[{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO1/020CPU\",\"assetName\":\"Dell OptiPlex 3080\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"311\",\"externalSource\":\"HARDWARE\",\"id\":150,\"keeper\":\"Halimaton/Syafiq\",\"location\":\"Prod 1\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 8DVSTC3;用途: Packing\",\"source\":\"SAS\",\"specification\":\"CPU / Dell / OptiPlex 3080 / Win 10 Pro / Core i3-10100 / 8G / 1T\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO1/020PC\",\"assetName\":\"Dell\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"310\",\"externalSource\":\"HARDWARE\",\"id\":149,\"keeper\":\"Halimaton/Syafiq\",\"location\":\"Prod 1\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Packing\",\"source\":\"SAS\",\"specification\":\"Monitor / Dell\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO1/019CPU\",\"assetName\":\"Dell OptiPlex 3080\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"309\",\"externalSource\":\"HARDWARE\",\"id\":148,\"keeper\":\"Mazidah\",\"location\":\"Prod 2\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 2H5TTC3;用途: Packing\",\"source\":\"SAS\",\"specification\":\"CPU / Dell / OptiPlex 3080 / Win 11 Pro / Core i3-10100 / 8G / 500G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO1/019PC\",\"assetName\":\"Dell\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"308\",\"externalSource\":\"HARDWARE\",\"id\":147,\"keeper\":\"Halimaton/Syafiq\",\"location\":\"Prod 1\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Packing\",\"source\":\"SAS\",\"specification\":\"Monitor / Dell\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO1/018CPU\",\"assetName\":\"Dell OptiPlex 7050\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"307\",\"externalSource\":\"HARDWARE\",\"id\":146,\"keeper\":\"Halimaton/Syafiq\",\"location\":\"Prod 1\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: J26QLN2;用途: Packing\",\"source\":\"SAS\",\"specification\":\"CPU / Dell / OptiPlex 7050 / Win 10 Pro / Core i7-6700 / 8G / 500G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO1/018PC\",\"assetName\":\"Dell\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"306\",\"externalSource\":\"HARDWARE\",\"id\":145,\"keeper\":\"Halimaton/Syafiq\",\"location\":\"Prod 1\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Packing\",\"source\":\"SAS\",\"specification\":\"Monitor / Dell\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO1/017CPU\",\"assetName\":\"Dell OptiPlex 7050\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"305\",\"externalSource\":\"HARDWARE\",\"id\":144,\"keeper\":\"Halimaton/Syafiq\",\"location\":\"Prod 1\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: FBNPLN2;用途: Packing\",\"source\":\"SAS\",\"specification\":\"CPU / Dell / OptiPlex 7050 / Win 10 Pro / Core i7-6700 / 8G / 500GB\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO1/017PC\",\"assetName\":\"Dell\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"304\",\"externalSource\":\"HARDWARE\",\"id\":143,\"keeper\":\"Halimaton/Syafiq\",\"location\":\"Prod 1\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Packing\",\"source\":\"SAS\",\"specification\":\"Monitor / Dell\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO2/016CPU\",\"assetName\":\"Dell OptiPlex 7050\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"303\",\"externalSource\":\"HARDWARE\",\"id\":142,\"keeper\":\"Halimaton/Syafiq\",\"location\":\"Prod 2 / Line 4\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: CF7V7N2;用途: RF\",\"source\":\"SAS\",\"specification\":\"CPU / Dell / OptiPlex 7050 / Win 10 Pro / Core i7-6700 / 8G / 500G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO2/016PC\",\"assetName\":\"Lenovo\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"302\",\"externalSource\":\"HARDWARE\",\"id\":141,\"keeper\":\"Halimaton/Syafiq\",\"location\":\"Prod 2 / Line 4\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: RF\",\"source\":\"SAS\",\"specification\":\"Monitor / Lenovo\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"}]}}'); +INSERT INTO `tbl_log` VALUES (9244, 63, '接口日志', '43.174.54.50/1.9.116.218', '2026-09-30 08:09:05', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":255,\"rows\":[{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-361\",\"assetName\":\"Lenovo Lenovo Thinkcentre M7\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"361\",\"externalSource\":\"HARDWARE\",\"id\":200,\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: PC2DX5Q0\",\"source\":\"SAS\",\"specification\":\"CPU / Lenovo / Lenovo Thinkcentre M7 / Win 11 Pro / Core i5-10500 / 16G / 512G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-360\",\"assetName\":\"Lenovo Lenovo Thinkcentre M7\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"360\",\"externalSource\":\"HARDWARE\",\"id\":199,\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: PC1PQXP5\",\"source\":\"SAS\",\"specification\":\"CPU / Lenovo / Lenovo Thinkcentre M7 / Win 11 Pro / Core i5-10500 / 16G / 512G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-359\",\"assetName\":\"Lenovo Lenovo Thinkcentre M7\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"359\",\"externalSource\":\"HARDWARE\",\"id\":198,\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: PC25J5KE\",\"source\":\"SAS\",\"specification\":\"CPU / Lenovo / Lenovo Thinkcentre M7 / Win 11 Pro / Core i5-10500 / 16G / 512G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-358\",\"assetName\":\"Lenovo Lenovo Thinkcentre M7\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"358\",\"externalSource\":\"HARDWARE\",\"id\":197,\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: PC1WY69D\",\"source\":\"SAS\",\"specification\":\"CPU / Lenovo / Lenovo Thinkcentre M7 / Win 11 Pro / Core i5-10500 / 16G / 512G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-357\",\"assetName\":\"Lenovo Lenovo Thinkcentre M7\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"357\",\"externalSource\":\"HARDWARE\",\"id\":196,\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: PC25J5KB\",\"source\":\"SAS\",\"specification\":\"CPU / Lenovo / Lenovo Thinkcentre M7 / Win 11 Pro / Core i5-10500 / 16G / 512G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-356\",\"assetName\":\"Lenovo Lenovo Thinkcentre M7\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"356\",\"externalSource\":\"HARDWARE\",\"id\":195,\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: PC2DX5Q3\",\"source\":\"SAS\",\"specification\":\"CPU / Lenovo / Lenovo Thinkcentre M7 / Win 11 Pro / Core i5-10500 / 16G / 512G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-355\",\"assetName\":\"Lenovo Lenovo Thinkcentre M7\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"355\",\"externalSource\":\"HARDWARE\",\"id\":194,\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: PC25J5K8\",\"source\":\"SAS\",\"specification\":\"CPU / Lenovo / Lenovo Thinkcentre M7 / Win 11 Pro / Core i5-10500 / 16G / 512G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-354\",\"assetName\":\"Lenovo Lenovo Thinkcentre M7\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"354\",\"externalSource\":\"HARDWARE\",\"id\":193,\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: PC1PPJ3J\",\"source\":\"SAS\",\"specification\":\"CPU / Lenovo / Lenovo Thinkcentre M7 / Win 11 Pro / Core i5-10500 / 16G / 512G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"Production14\",\"assetName\":\"Dell OptiPlex 3080\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"353\",\"externalSource\":\"HARDWARE\",\"id\":192,\"location\":\"R&D Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 9DVSTC3\",\"source\":\"SAS\",\"specification\":\"CPU / Dell / OptiPlex 3080 / Win 10 Pro / Core i3-10100 / 8G / 1TB\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production 2\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/N02/CPU002\",\"assetName\":\"Dell OptiPlex 3020\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"352\",\"externalSource\":\"HARDWARE\",\"id\":191,\"keeper\":\"Herman\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 7CTDR42\",\"source\":\"SAS\",\"specification\":\"CPU / Dell / OptiPlex 3020 / Core i3-4160 / 6G / 500G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Quality\"}]}}'); +INSERT INTO `tbl_log` VALUES (9245, 63, '接口日志', '43.152.142.141/1.9.116.218', '2026-09-30 08:09:06', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":255,\"rows\":[{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381702566\",\"assetName\":\"SIM卡 896019210381702566\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"26\",\"externalSource\":\"SIM\",\"id\":250,\"keeper\":\"SMT\",\"location\":\"GT3.1 (Nur)\",\"originalValue\":0.000000,\"purchaseDate\":1780430400000,\"quantity\":1.000000,\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"source\":\"SAS\",\"specification\":\"183.171.11.123 / Lora Gateway\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381702565\",\"assetName\":\"SIM卡 896019210381702565\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"27\",\"externalSource\":\"SIM\",\"id\":249,\"keeper\":\"SMT\",\"location\":\"Menicon Malaysia\",\"originalValue\":0.000000,\"purchaseDate\":1780430400000,\"quantity\":1.000000,\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"source\":\"SAS\",\"specification\":\"183.171.12.136 / Lora Gateway\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381702564\",\"assetName\":\"SIM卡 896019210381702564\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"28\",\"externalSource\":\"SIM\",\"id\":248,\"keeper\":\"SMT\",\"location\":\"First Solar Malaysia\",\"originalValue\":0.000000,\"purchaseDate\":1780430400000,\"quantity\":1.000000,\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"source\":\"SAS\",\"specification\":\"183.171.10.11 / 4G Modem\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381702563\",\"assetName\":\"SIM卡 896019210381702563\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"29\",\"externalSource\":\"SIM\",\"id\":247,\"keeper\":\"SMT\",\"location\":\"First Solar Malaysia\",\"originalValue\":0.000000,\"purchaseDate\":1780430400000,\"quantity\":1.000000,\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"source\":\"SAS\",\"specification\":\"183.171.11.141 / 4G Modem\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-2\",\"assetName\":\"MS Office 2019 Home & Business\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"2\",\"externalSource\":\"SOFTWARE\",\"id\":246,\"originalValue\":8700.000000,\"purchaseDate\":1694980800000,\"quantity\":15.000000,\"remark\":\"供应商: Amimo;发票号: INV230902\",\"source\":\"SAS\",\"specification\":\"Amimo\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-3\",\"assetName\":\"MS Office 2019 Home & Business\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"3\",\"externalSource\":\"SOFTWARE\",\"id\":245,\"originalValue\":1160.000000,\"purchaseDate\":1704916800000,\"quantity\":2.000000,\"remark\":\"供应商: Amimo;发票号: INV240101\",\"source\":\"SAS\",\"specification\":\"Amimo\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-4\",\"assetName\":\"MS Office 2019 Pro\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"4\",\"externalSource\":\"SOFTWARE\",\"id\":244,\"originalValue\":0.000000,\"purchaseDate\":1727380800000,\"quantity\":1.000000,\"remark\":\"供应商: Amimo;发票号: INV240901;原备注: Price bundled with PC purchase.\",\"source\":\"SAS\",\"specification\":\"Amimo\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-5\",\"assetName\":\"MS Office 2019 Pro Plus\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"5\",\"externalSource\":\"SOFTWARE\",\"id\":243,\"originalValue\":580.000000,\"purchaseDate\":1712088000000,\"quantity\":1.000000,\"remark\":\"供应商: Amimo;发票号: INV240402\",\"source\":\"SAS\",\"specification\":\"Amimo\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-6\",\"assetName\":\"MS Office 2019 Pro Plus\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"6\",\"externalSource\":\"SOFTWARE\",\"id\":242,\"originalValue\":2320.000000,\"purchaseDate\":1736798400000,\"quantity\":4.000000,\"remark\":\"供应商: Amimo;发票号: QUO250101\",\"source\":\"SAS\",\"specification\":\"Amimo\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-7\",\"assetName\":\"MS Office 2021 Home & Business\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"7\",\"externalSource\":\"SOFTWARE\",\"id\":241,\"originalValue\":750.000000,\"purchaseDate\":1707768000000,\"quantity\":1.000000,\"remark\":\"供应商: Amimo;发票号: INV240201\",\"source\":\"SAS\",\"specification\":\"Amimo\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000}]}}'); +INSERT INTO `tbl_log` VALUES (9246, 63, '接口日志', '43.174.53.17/1.9.116.218', '2026-09-30 08:09:08', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":255,\"rows\":[{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019200694297052\",\"assetName\":\"SIM卡 896019200694297052\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"6\",\"externalSource\":\"SIM\",\"id\":270,\"keeper\":\"UITM Dungun\",\"location\":\"SMT (???)\",\"originalValue\":0.000000,\"quantity\":1.000000,\"source\":\"SAS\",\"specification\":\"183.171.146.98\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019190221500578\",\"assetName\":\"SIM卡 896019190221500578\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"5\",\"externalSource\":\"SIM\",\"id\":269,\"keeper\":\"SMT\",\"location\":\"UITM Dungun\",\"originalValue\":0.000000,\"purchaseDate\":1608062400000,\"quantity\":1.000000,\"remark\":\"启用日期: 2020-12-16\",\"source\":\"SAS\",\"specification\":\"183.171.14.125\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019190221500576\",\"assetName\":\"SIM卡 896019190221500576\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"1\",\"externalSource\":\"SIM\",\"id\":268,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1608062400000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2020-12-16\",\"source\":\"SAS\",\"specification\":\"183.171.144.65\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607778\",\"assetName\":\"SIM卡 896019210381607778\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"2\",\"externalSource\":\"SIM\",\"id\":267,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1711051200000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2024-03-22\",\"source\":\"SAS\",\"specification\":\"183.171.15.60\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607781\",\"assetName\":\"SIM卡 896019210381607781\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"9\",\"externalSource\":\"SIM\",\"id\":266,\"keeper\":\"SMT\",\"location\":\"SMT (RnD) Modem RnD\",\"originalValue\":0.000000,\"purchaseDate\":1711051200000,\"quantity\":1.000000,\"remark\":\"设备序列号: 21070014;电表序列号: 320910015;启用日期: 2024-03-22\",\"source\":\"SAS\",\"specification\":\"183.171.5.142 / KM08-LTE Modem / 21070014\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607777\",\"assetName\":\"SIM卡 896019210381607777\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"3\",\"externalSource\":\"SIM\",\"id\":265,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1720987200000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2024-07-15\",\"source\":\"SAS\",\"specification\":\"183.171.40.182\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607782\",\"assetName\":\"SIM卡 896019210381607782\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"4\",\"externalSource\":\"SIM\",\"id\":264,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1720987200000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2024-07-15\",\"source\":\"SAS\",\"specification\":\"183.171.40.117\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607784\",\"assetName\":\"SIM卡 896019210381607784\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"7\",\"externalSource\":\"SIM\",\"id\":263,\"keeper\":\"SMT\",\"location\":\"SMT (Modem-Production)\",\"originalValue\":0.000000,\"purchaseDate\":1727553600000,\"quantity\":1.000000,\"remark\":\"设备序列号: 20041004;启用日期: 2024-09-29\",\"source\":\"SAS\",\"specification\":\"183.171.50.5 / KM08-LTE Modem / 20041004\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607783\",\"assetName\":\"SIM卡 896019210381607783\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"8\",\"externalSource\":\"SIM\",\"id\":262,\"keeper\":\"SMT\",\"location\":\"SMT (RnD) Modem Store\",\"originalValue\":0.000000,\"purchaseDate\":1727553600000,\"quantity\":1.000000,\"remark\":\"设备序列号: 2403005;启用日期: 2024-09-29\",\"source\":\"SAS\",\"specification\":\"183.171.50.6 / KM08-LTE Modem / 2403005\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607785\",\"assetName\":\"SIM卡 896019210381607785\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"10\",\"externalSource\":\"SIM\",\"id\":261,\"keeper\":\"SMT\",\"location\":\"SMT (RnD) Alyaa\",\"originalValue\":0.000000,\"purchaseDate\":1766433600000,\"quantity\":1.000000,\"remark\":\"设备序列号: 21070011;电表序列号: 320910014;启用日期: 2025-12-23\",\"source\":\"SAS\",\"specification\":\"183.171.151.171 / KM08-LTE Modem / 21070011\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000}]}}'); +INSERT INTO `tbl_log` VALUES (9247, 63, '接口日志', '43.174.52.68/1.9.116.218', '2026-09-30 08:09:15', 0, 'AssetController.categoryOptions()', NULL, 'GET /apis/asset/category/options', '{}', '{\"code\":200,\"data\":{\"rows\":[{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"尚未归入具体种类的资产\",\"updateTime\":1790613193000,\"categoryCode\":\"UNCATEGORIZED\",\"id\":4,\"sort\":10,\"categoryName\":\"未分类\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System 硬件台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"HARDWARE\",\"id\":5,\"sort\":20,\"categoryName\":\"硬件资产\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System 软件台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"SOFTWARE\",\"id\":6,\"sort\":30,\"categoryName\":\"软件资产\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System SIM 卡台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"SIM_CARD\",\"id\":7,\"sort\":40,\"categoryName\":\"SIM卡\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_01BF8DA563A0\",\"id\":11,\"sort\":100,\"categoryName\":\"生产设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_7129859760C3\",\"id\":12,\"sort\":100,\"categoryName\":\"检测设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_9F38069B30A1\",\"id\":13,\"sort\":100,\"categoryName\":\"动力设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_75F489029B11\",\"id\":14,\"sort\":100,\"categoryName\":\"IT设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_3DDFE01CA0B8\",\"id\":15,\"sort\":100,\"categoryName\":\"物流设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_B5D44F2B039A\",\"id\":16,\"sort\":100,\"categoryName\":\"工装设备\",\"enabled\":true}],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9248, 63, '接口日志', '43.152.142.64/1.9.116.218', '2026-09-30 08:09:27', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":255,\"rows\":[{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607786\",\"assetName\":\"SIM卡 896019210381607786\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"11\",\"externalSource\":\"SIM\",\"id\":260,\"keeper\":\"SMT\",\"location\":\"SMT (RnD) Alyaa\",\"originalValue\":0.000000,\"purchaseDate\":1766433600000,\"quantity\":1.000000,\"remark\":\"设备序列号: 21070013;启用日期: 2025-12-23\",\"source\":\"SAS\",\"specification\":\"183.171.208.37 / KM08-LTE Modem / 21070013\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381702562\",\"assetName\":\"SIM卡 896019210381702562\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"12\",\"externalSource\":\"SIM\",\"id\":259,\"keeper\":\"SMT\",\"location\":\"Loan to Hanif/Adha (22-May-2026); \",\"originalValue\":0.000000,\"purchaseDate\":1766433600000,\"quantity\":1.000000,\"remark\":\"启用日期: 2025-12-23\",\"source\":\"SAS\",\"specification\":\"183.171.144.61\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607780\",\"assetName\":\"SIM卡 896019210381607780\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"14\",\"externalSource\":\"SIM\",\"id\":258,\"keeper\":\"SMT\",\"location\":\"POC AEON\",\"originalValue\":0.000000,\"purchaseDate\":1766433600000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Months;启用日期: 2025-12-23\",\"source\":\"SAS\",\"specification\":\"183.171.208.37\",\"status\":\"SCRAPPED\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019190221500577\",\"assetName\":\"SIM卡 896019190221500577\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"15\",\"externalSource\":\"SIM\",\"id\":257,\"keeper\":\"SMT\",\"location\":\"Kompleks Pertama\",\"originalValue\":0.000000,\"purchaseDate\":1766433600000,\"quantity\":1.000000,\"remark\":\"启用日期: 2025-12-23\",\"source\":\"SAS\",\"specification\":\"183.171.144.61\",\"status\":\"SCRAPPED\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607779\",\"assetName\":\"SIM卡 896019210381607779\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"13\",\"externalSource\":\"SIM\",\"id\":256,\"keeper\":\"SMT\",\"location\":\"POC AEON\",\"originalValue\":0.000000,\"purchaseDate\":1766433600000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Months;启用日期: 2025-12-23\",\"source\":\"SAS\",\"specification\":\"183.171.151.171\",\"status\":\"SCRAPPED\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381702569\",\"assetName\":\"SIM卡 896019210381702569\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"18\",\"externalSource\":\"SIM\",\"id\":255,\"keeper\":\"SMT\",\"location\":\"With Amir\",\"originalValue\":0.000000,\"purchaseDate\":1780430400000,\"quantity\":1.000000,\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"source\":\"SAS\",\"specification\":\"183.171.11.200\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381702570\",\"assetName\":\"SIM卡 896019210381702570\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"19\",\"externalSource\":\"SIM\",\"id\":254,\"keeper\":\"SMT\",\"location\":\"With Amir\",\"originalValue\":0.000000,\"purchaseDate\":1780430400000,\"quantity\":1.000000,\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"source\":\"SAS\",\"specification\":\"183.171.214.141\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381702571\",\"assetName\":\"SIM卡 896019210381702571\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"23\",\"externalSource\":\"SIM\",\"id\":253,\"keeper\":\"SMT\",\"location\":\"R&D room, SMT\",\"originalValue\":0.000000,\"purchaseDate\":1780430400000,\"quantity\":1.000000,\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"source\":\"SAS\",\"specification\":\"183.171.9.45\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381702568\",\"assetName\":\"SIM卡 896019210381702568\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"24\",\"externalSource\":\"SIM\",\"id\":252,\"keeper\":\"SMT\",\"location\":\"Molnlycke Health Care\",\"originalValue\":0.000000,\"purchaseDate\":1780430400000,\"quantity\":1.000000,\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"source\":\"SAS\",\"specification\":\"183.171.214.217 / 4G Modem\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381702567\",\"assetName\":\"SIM卡 896019210381702567\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"25\",\"externalSource\":\"SIM\",\"id\":251,\"keeper\":\"SMT\",\"location\":\"Molnlycke Health Care\",\"originalValue\":0.000000,\"purchaseDate\":1780430400000,\"quantity\":1.000000,\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"source\":\"SAS\",\"specification\":\"183.171.12.143 / 4G Modem\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000}]}}'); +INSERT INTO `tbl_log` VALUES (9249, 63, '接口日志', '43.152.142.78/1.9.116.218', '2026-09-30 08:09:35', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":255,\"rows\":[{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381702566\",\"assetName\":\"SIM卡 896019210381702566\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"26\",\"externalSource\":\"SIM\",\"id\":250,\"keeper\":\"SMT\",\"location\":\"GT3.1 (Nur)\",\"originalValue\":0.000000,\"purchaseDate\":1780430400000,\"quantity\":1.000000,\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"source\":\"SAS\",\"specification\":\"183.171.11.123 / Lora Gateway\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381702565\",\"assetName\":\"SIM卡 896019210381702565\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"27\",\"externalSource\":\"SIM\",\"id\":249,\"keeper\":\"SMT\",\"location\":\"Menicon Malaysia\",\"originalValue\":0.000000,\"purchaseDate\":1780430400000,\"quantity\":1.000000,\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"source\":\"SAS\",\"specification\":\"183.171.12.136 / Lora Gateway\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381702564\",\"assetName\":\"SIM卡 896019210381702564\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"28\",\"externalSource\":\"SIM\",\"id\":248,\"keeper\":\"SMT\",\"location\":\"First Solar Malaysia\",\"originalValue\":0.000000,\"purchaseDate\":1780430400000,\"quantity\":1.000000,\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"source\":\"SAS\",\"specification\":\"183.171.10.11 / 4G Modem\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381702563\",\"assetName\":\"SIM卡 896019210381702563\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"29\",\"externalSource\":\"SIM\",\"id\":247,\"keeper\":\"SMT\",\"location\":\"First Solar Malaysia\",\"originalValue\":0.000000,\"purchaseDate\":1780430400000,\"quantity\":1.000000,\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"source\":\"SAS\",\"specification\":\"183.171.11.141 / 4G Modem\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-2\",\"assetName\":\"MS Office 2019 Home & Business\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"2\",\"externalSource\":\"SOFTWARE\",\"id\":246,\"originalValue\":8700.000000,\"purchaseDate\":1694980800000,\"quantity\":15.000000,\"remark\":\"供应商: Amimo;发票号: INV230902\",\"source\":\"SAS\",\"specification\":\"Amimo\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-3\",\"assetName\":\"MS Office 2019 Home & Business\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"3\",\"externalSource\":\"SOFTWARE\",\"id\":245,\"originalValue\":1160.000000,\"purchaseDate\":1704916800000,\"quantity\":2.000000,\"remark\":\"供应商: Amimo;发票号: INV240101\",\"source\":\"SAS\",\"specification\":\"Amimo\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-4\",\"assetName\":\"MS Office 2019 Pro\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"4\",\"externalSource\":\"SOFTWARE\",\"id\":244,\"originalValue\":0.000000,\"purchaseDate\":1727380800000,\"quantity\":1.000000,\"remark\":\"供应商: Amimo;发票号: INV240901;原备注: Price bundled with PC purchase.\",\"source\":\"SAS\",\"specification\":\"Amimo\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-5\",\"assetName\":\"MS Office 2019 Pro Plus\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"5\",\"externalSource\":\"SOFTWARE\",\"id\":243,\"originalValue\":580.000000,\"purchaseDate\":1712088000000,\"quantity\":1.000000,\"remark\":\"供应商: Amimo;发票号: INV240402\",\"source\":\"SAS\",\"specification\":\"Amimo\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-6\",\"assetName\":\"MS Office 2019 Pro Plus\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"6\",\"externalSource\":\"SOFTWARE\",\"id\":242,\"originalValue\":2320.000000,\"purchaseDate\":1736798400000,\"quantity\":4.000000,\"remark\":\"供应商: Amimo;发票号: QUO250101\",\"source\":\"SAS\",\"specification\":\"Amimo\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-7\",\"assetName\":\"MS Office 2021 Home & Business\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"7\",\"externalSource\":\"SOFTWARE\",\"id\":241,\"originalValue\":750.000000,\"purchaseDate\":1707768000000,\"quantity\":1.000000,\"remark\":\"供应商: Amimo;发票号: INV240201\",\"source\":\"SAS\",\"specification\":\"Amimo\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000}]}}'); +INSERT INTO `tbl_log` VALUES (9250, 63, '接口日志', '43.174.32.34/1.9.116.218', '2026-09-30 08:09:42', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":255,\"rows\":[{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-8\",\"assetName\":\"MS Office 2021 Pro\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"8\",\"externalSource\":\"SOFTWARE\",\"id\":240,\"originalValue\":0.000000,\"purchaseDate\":1712088000000,\"quantity\":2.000000,\"remark\":\"供应商: Amimo;发票号: INV240401;原备注: Price bundled with PC purchase.\",\"source\":\"SAS\",\"specification\":\"Amimo\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-9\",\"assetName\":\"MS Office 2021 Pro\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"9\",\"externalSource\":\"SOFTWARE\",\"id\":239,\"originalValue\":0.000000,\"purchaseDate\":1718913600000,\"quantity\":1.000000,\"remark\":\"供应商: Amimo;发票号: INV240601;原备注: Price bundled with PC purchase.\",\"source\":\"SAS\",\"specification\":\"Amimo\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000,\"useDepartment\":\"HR\"},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-10\",\"assetName\":\"MS Office Home & Business\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"10\",\"externalSource\":\"SOFTWARE\",\"id\":238,\"originalValue\":0.000000,\"purchaseDate\":1768939200000,\"quantity\":10.000000,\"remark\":\"供应商: Amimo;许可证: Smt@123;发票号: INV260101;原备注: Bundled with 10 unit of PC purchase for Lab.\",\"source\":\"SAS\",\"specification\":\"Amimo\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-11\",\"assetName\":\"MS Office Home & Business\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"11\",\"externalSource\":\"SOFTWARE\",\"id\":237,\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"供应商: Amimo;原备注: Bundled with 1 unit of Laptop\",\"source\":\"SAS\",\"specification\":\"Amimo\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000,\"useDepartment\":\"Tech & Technology\"},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-12\",\"assetName\":\"MS Office Home & Business 2010\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"12\",\"externalSource\":\"SOFTWARE\",\"id\":236,\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"许可证: BX27V-J9QMG-3VVWY-7JTYT-94CXB\",\"source\":\"SAS\",\"specification\":\"CD\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-13\",\"assetName\":\"MS Office Home & Business 2010\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"13\",\"externalSource\":\"SOFTWARE\",\"id\":235,\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"许可证: GTTC2-XH8PW-3WJFH-76VFQ-PHYX9\",\"source\":\"SAS\",\"specification\":\"CD\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-14\",\"assetName\":\"MS Office Home & Business 2010\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"14\",\"externalSource\":\"SOFTWARE\",\"id\":234,\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"许可证: WY8KV-GQ39X-2WQF2-V8R93-RY6CT\",\"source\":\"SAS\",\"specification\":\"CD\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-15\",\"assetName\":\"MS Office Home & Business 2010\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"15\",\"externalSource\":\"SOFTWARE\",\"id\":233,\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"许可证: YBDDT-C4QPP-J6T63-DQMB8-9XB29;原备注: Written: Burnny / Asus\",\"source\":\"SAS\",\"specification\":\"CD\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-16\",\"assetName\":\"MS Office Home & Business 2010\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"16\",\"externalSource\":\"SOFTWARE\",\"id\":232,\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"许可证: XG2WV-YRDV4-VQWQ2-XQQ26-XJ3FF;原备注: Written: SGH109RCWK\",\"source\":\"SAS\",\"specification\":\"CD\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-1\",\"assetName\":\"Linux 6.8.0-45\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"1\",\"externalSource\":\"SOFTWARE\",\"id\":231,\"originalValue\":0.000000,\"purchaseDate\":1728849600000,\"quantity\":2.000000,\"remark\":\"供应商: Amimo;发票号: INV240902;原备注: For server\",\"source\":\"SAS\",\"specification\":\"Amimo\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000}]}}'); +INSERT INTO `tbl_log` VALUES (9251, 63, '接口日志', '43.152.142.105/1.9.116.218', '2026-09-30 08:09:52', 0, 'AssetController.categoryOptions()', NULL, 'GET /apis/asset/category/options', '{}', '{\"code\":200,\"data\":{\"rows\":[{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"尚未归入具体种类的资产\",\"updateTime\":1790613193000,\"categoryCode\":\"UNCATEGORIZED\",\"id\":4,\"sort\":10,\"categoryName\":\"未分类\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System 硬件台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"HARDWARE\",\"id\":5,\"sort\":20,\"categoryName\":\"硬件资产\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System 软件台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"SOFTWARE\",\"id\":6,\"sort\":30,\"categoryName\":\"软件资产\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System SIM 卡台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"SIM_CARD\",\"id\":7,\"sort\":40,\"categoryName\":\"SIM卡\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_01BF8DA563A0\",\"id\":11,\"sort\":100,\"categoryName\":\"生产设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_7129859760C3\",\"id\":12,\"sort\":100,\"categoryName\":\"检测设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_9F38069B30A1\",\"id\":13,\"sort\":100,\"categoryName\":\"动力设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_75F489029B11\",\"id\":14,\"sort\":100,\"categoryName\":\"IT设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_3DDFE01CA0B8\",\"id\":15,\"sort\":100,\"categoryName\":\"物流设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_B5D44F2B039A\",\"id\":16,\"sort\":100,\"categoryName\":\"工装设备\",\"enabled\":true}],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9252, 63, '接口日志', '43.174.32.23/1.9.116.218', '2026-09-30 08:10:20', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":255,\"rows\":[{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-33\",\"assetName\":\"Ubuntu 24.04.1 LTS\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"33\",\"externalSource\":\"SOFTWARE\",\"id\":230,\"originalValue\":0.000000,\"purchaseDate\":1728849600000,\"quantity\":2.000000,\"remark\":\"供应商: Amimo;发票号: INV240902;原备注: For server\",\"source\":\"SAS\",\"specification\":\"Amimo\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-32\",\"assetName\":\"MS Windows 2000 Server Client Access License\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"32\",\"externalSource\":\"SOFTWARE\",\"id\":229,\"originalValue\":0.000000,\"quantity\":5.000000,\"remark\":\"许可证: 13925763;原备注: Authorization Number: 13880917ZZS0307\",\"source\":\"SAS\",\"specification\":\"Cert\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-31\",\"assetName\":\"MS Windows 2000 Server\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"31\",\"externalSource\":\"SOFTWARE\",\"id\":228,\"originalValue\":0.000000,\"quantity\":1.000000,\"source\":\"SAS\",\"specification\":\"Cert\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613749000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-30\",\"assetName\":\"MS SQL Server 2017 Standard\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"30\",\"externalSource\":\"SOFTWARE\",\"id\":227,\"originalValue\":3750.000000,\"purchaseDate\":1634846400000,\"quantity\":1.000000,\"remark\":\"供应商: Amimo;许可证: PHDV4-3VJWD-N7JVP-FGPKY-XBV89;发票号: INV211001;原备注: 4 Core License Key: 4TQHY-D7R86-VGBFG-PW7GV-8G2FY\",\"source\":\"SAS\",\"specification\":\"Amimo / CD\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613749000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-29\",\"assetName\":\"MS Office Home & Student 2010\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"29\",\"externalSource\":\"SOFTWARE\",\"id\":226,\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"许可证: GRQJ3-2TM6Q-BRFY4-DFJYQ-2BQKM\",\"source\":\"SAS\",\"specification\":\"CD\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613749000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-28\",\"assetName\":\"MS Office Home & Student 2010\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"28\",\"externalSource\":\"SOFTWARE\",\"id\":225,\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"许可证: TQ8C3-67C72-7B33C-BM4GF-33VB2\",\"source\":\"SAS\",\"specification\":\"CD\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613749000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-27\",\"assetName\":\"MS Office Home & Student\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"27\",\"externalSource\":\"SOFTWARE\",\"id\":224,\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"原备注: Bundled with HP Laptop 14s-cf3022TX (SN 5CG03082BJ)\",\"source\":\"SAS\",\"specification\":\"Sticker\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613749000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-17\",\"assetName\":\"MS Office Home & Business 2010\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"17\",\"externalSource\":\"SOFTWARE\",\"id\":223,\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"许可证: H7F93-PMMX8-8MHMT-4CY7W-W9QHM;原备注: Written: Khairul Bariyyah PC14\",\"source\":\"SAS\",\"specification\":\"Cert\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613749000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-25\",\"assetName\":\"MS Office Home & Student\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"25\",\"externalSource\":\"SOFTWARE\",\"id\":222,\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"原备注: Bundled with HP Laptop - 14s-cf3022tx (5CG03082JK) {Adha}\",\"source\":\"SAS\",\"specification\":\"Sticker\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613749000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-24\",\"assetName\":\"MS Office Home & Student\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"24\",\"externalSource\":\"SOFTWARE\",\"id\":221,\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"原备注: Bundled with HP Laptop 14s-cf2036TX (SN 5CG011D1W7); written off - spoilt\",\"source\":\"SAS\",\"specification\":\"Sticker\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613749000,\"useDepartment\":\"Account\"}]}}'); +INSERT INTO `tbl_log` VALUES (9253, 63, '接口日志', '43.152.142.40/1.9.116.218', '2026-09-30 08:10:22', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":255,\"rows\":[{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-371\",\"assetName\":\"Dell OptiPlex 790\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"371\",\"externalSource\":\"HARDWARE\",\"id\":210,\"location\":\"R&D Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: CJN5F2S\",\"source\":\"SAS\",\"specification\":\"CPU / Dell / OptiPlex 790 / Win 7 Pro / Core i5-2400 / 4G / 480G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/OFFICE2/062CPU,SMT/N04/CPU004\",\"assetName\":\"Dell Vostro 230\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"370\",\"externalSource\":\"HARDWARE\",\"id\":209,\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 846R72S\",\"source\":\"SAS\",\"specification\":\"CPU / Dell / Vostro 230 / Win 7 Pro / Core 2 Duo E7500 / 4G / 500G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production 2\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-369\",\"assetName\":\"TP-Link TP-Link TL-MR6400\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"369\",\"externalSource\":\"HARDWARE\",\"id\":208,\"location\":\"R&D Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 22082D8000244;MAC: 60-32-B1-BD-FB-FA;用途: Testing\",\"source\":\"SAS\",\"specification\":\"Router / TP-Link / TP-Link TL-MR6400\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Technical & Technologies\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAP21/112004\",\"assetName\":\"HP HP 14s-cf3022tx\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"368\",\"externalSource\":\"HARDWARE\",\"id\":207,\"keeper\":\"Hazif\",\"location\":\"Store Office\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 5CG03082BJ;原备注: Bundled with Office Home & Student\",\"source\":\"SAS\",\"specification\":\"Laptop / HP / HP 14s-cf3022tx / Win 11 Home / Core i5-1035G1 / 8G / 500G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Store\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/STORE/054CPU\",\"assetName\":\"HP ProDesk 400 G7\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"367\",\"externalSource\":\"HARDWARE\",\"id\":206,\"keeper\":\"Wan Rosli\",\"location\":\"Store Office\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 4CE216BDQ2\",\"source\":\"SAS\",\"specification\":\"CPU / HP / ProDesk 400 G7 / Win 11 Pro / Core i5-10500 / 8G / 250G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Store\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/STORE/053CPU\",\"assetName\":\"Dell OptiPlex 3080\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"366\",\"externalSource\":\"HARDWARE\",\"id\":205,\"keeper\":\"Vacant\",\"location\":\"Store Office\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 7DVSTC3\",\"source\":\"SAS\",\"specification\":\"CPU / Dell / OptiPlex 3080 / Win 11 Pro / Core i3-10100 / 8G / 250G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Store\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAP4/11112024\",\"assetName\":\"Lenovo ThinkPad X1 Carbon Gen 8\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"365\",\"externalSource\":\"HARDWARE\",\"id\":204,\"keeper\":\"x-Azam\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: PF1VB7YC\",\"source\":\"SAS\",\"specification\":\"Laptop / Lenovo / ThinkPad X1 Carbon Gen 8 / Win 11 Pro / Core i7-10510U / 16G / 512G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Engineering\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-364\",\"assetName\":\"Lenovo Lenovo Thinkpad E14\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"364\",\"externalSource\":\"HARDWARE\",\"id\":203,\"keeper\":\"Aziman\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: PF-62CZQH\",\"source\":\"SAS\",\"specification\":\"Laptop / Lenovo / Lenovo Thinkpad E14 / Win 11 Pro / Core Ultra 5 225U / 16G / 512G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Technical & Technologies\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-363\",\"assetName\":\"Lenovo Lenovo Thinkcentre M7\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"363\",\"externalSource\":\"HARDWARE\",\"id\":202,\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: PC2DX5PF\",\"source\":\"SAS\",\"specification\":\"CPU / Lenovo / Lenovo Thinkcentre M7 / Win 11 Pro / Core i5-10500 / 16G / 512G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-362\",\"assetName\":\"Lenovo Lenovo Thinkcentre M7\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"362\",\"externalSource\":\"HARDWARE\",\"id\":201,\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: PC1PQXP6\",\"source\":\"SAS\",\"specification\":\"CPU / Lenovo / Lenovo Thinkcentre M7 / Win 11 Pro / Core i5-10500 / 16G / 512G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"}]}}'); +INSERT INTO `tbl_log` VALUES (9254, 63, '接口日志', '43.174.32.18/1.9.116.218', '2026-09-30 08:10:24', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":255,\"rows\":[{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-361\",\"assetName\":\"Lenovo Lenovo Thinkcentre M7\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"361\",\"externalSource\":\"HARDWARE\",\"id\":200,\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: PC2DX5Q0\",\"source\":\"SAS\",\"specification\":\"CPU / Lenovo / Lenovo Thinkcentre M7 / Win 11 Pro / Core i5-10500 / 16G / 512G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-360\",\"assetName\":\"Lenovo Lenovo Thinkcentre M7\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"360\",\"externalSource\":\"HARDWARE\",\"id\":199,\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: PC1PQXP5\",\"source\":\"SAS\",\"specification\":\"CPU / Lenovo / Lenovo Thinkcentre M7 / Win 11 Pro / Core i5-10500 / 16G / 512G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-359\",\"assetName\":\"Lenovo Lenovo Thinkcentre M7\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"359\",\"externalSource\":\"HARDWARE\",\"id\":198,\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: PC25J5KE\",\"source\":\"SAS\",\"specification\":\"CPU / Lenovo / Lenovo Thinkcentre M7 / Win 11 Pro / Core i5-10500 / 16G / 512G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-358\",\"assetName\":\"Lenovo Lenovo Thinkcentre M7\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"358\",\"externalSource\":\"HARDWARE\",\"id\":197,\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: PC1WY69D\",\"source\":\"SAS\",\"specification\":\"CPU / Lenovo / Lenovo Thinkcentre M7 / Win 11 Pro / Core i5-10500 / 16G / 512G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-357\",\"assetName\":\"Lenovo Lenovo Thinkcentre M7\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"357\",\"externalSource\":\"HARDWARE\",\"id\":196,\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: PC25J5KB\",\"source\":\"SAS\",\"specification\":\"CPU / Lenovo / Lenovo Thinkcentre M7 / Win 11 Pro / Core i5-10500 / 16G / 512G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-356\",\"assetName\":\"Lenovo Lenovo Thinkcentre M7\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"356\",\"externalSource\":\"HARDWARE\",\"id\":195,\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: PC2DX5Q3\",\"source\":\"SAS\",\"specification\":\"CPU / Lenovo / Lenovo Thinkcentre M7 / Win 11 Pro / Core i5-10500 / 16G / 512G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-355\",\"assetName\":\"Lenovo Lenovo Thinkcentre M7\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"355\",\"externalSource\":\"HARDWARE\",\"id\":194,\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: PC25J5K8\",\"source\":\"SAS\",\"specification\":\"CPU / Lenovo / Lenovo Thinkcentre M7 / Win 11 Pro / Core i5-10500 / 16G / 512G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-354\",\"assetName\":\"Lenovo Lenovo Thinkcentre M7\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"354\",\"externalSource\":\"HARDWARE\",\"id\":193,\"location\":\"Laboratory\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: PC1PPJ3J\",\"source\":\"SAS\",\"specification\":\"CPU / Lenovo / Lenovo Thinkcentre M7 / Win 11 Pro / Core i5-10500 / 16G / 512G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"Production14\",\"assetName\":\"Dell OptiPlex 3080\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"353\",\"externalSource\":\"HARDWARE\",\"id\":192,\"location\":\"R&D Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 9DVSTC3\",\"source\":\"SAS\",\"specification\":\"CPU / Dell / OptiPlex 3080 / Win 10 Pro / Core i3-10100 / 8G / 1TB\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production 2\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/N02/CPU002\",\"assetName\":\"Dell OptiPlex 3020\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"352\",\"externalSource\":\"HARDWARE\",\"id\":191,\"keeper\":\"Herman\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 7CTDR42\",\"source\":\"SAS\",\"specification\":\"CPU / Dell / OptiPlex 3020 / Core i3-4160 / 6G / 500G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Quality\"}]}}'); +INSERT INTO `tbl_log` VALUES (9255, 63, '接口日志', '43.174.54.14/1.9.116.218', '2026-09-30 08:10:26', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":255,\"rows\":[{\"assetCategory\":\"硬件资产\",\"assetCode\":\"No Code\",\"assetName\":\"D-Link DGS-1210-24\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"341\",\"externalSource\":\"HARDWARE\",\"id\":180,\"keeper\":\"Daniel\",\"location\":\"R&D Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: QB1A1A7002042;MAC: F0-7D-68-BB-F5-D0;用途: Network Switch\",\"source\":\"SAS\",\"specification\":\"Switch / D-Link / DGS-1210-24\",\"status\":\"REPAIR\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Technical & Technologies\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"No Code\",\"assetName\":\"D-link DGS-1210-24\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"340\",\"externalSource\":\"HARDWARE\",\"id\":179,\"keeper\":\"Daniel\",\"location\":\"Server Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: QB1A1A8000282;MAC: F0-7D-68-C2-91-07;用途: Network Switch\",\"source\":\"SAS\",\"specification\":\"Switch / D-link / DGS-1210-24\",\"status\":\"REPAIR\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Technical & Technologies\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-339\",\"assetName\":\"TP-Link TP-Link AC1300\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"339\",\"externalSource\":\"HARDWARE\",\"id\":178,\"location\":\"CEO Room\",\"originalValue\":0.000000,\"purchaseDate\":1612555200000,\"quantity\":1.000000,\"remark\":\"序列号: 22085K6A00203;MAC: 84-D8-1B-42-07-74;用途: Wifi Router\",\"source\":\"SAS\",\"specification\":\"Router / TP-Link / TP-Link AC1300\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Technical & Technologies\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-338\",\"assetName\":\"TP-Link TP-Link AC1300\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"338\",\"externalSource\":\"HARDWARE\",\"id\":177,\"location\":\"Engineering\",\"originalValue\":0.000000,\"purchaseDate\":1612555200000,\"quantity\":1.000000,\"remark\":\"序列号: 22085K6B00203;MAC: 84-D8-1B-42-04-80;用途: Wifi Router\",\"source\":\"SAS\",\"specification\":\"Router / TP-Link / TP-Link AC1300\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Technical & Technologies\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/OFFICE2/069MOD\",\"assetName\":\"TP-Link TP-Link AC1300\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"337\",\"externalSource\":\"HARDWARE\",\"id\":176,\"location\":\"Disccussion Area Level 1\",\"originalValue\":0.000000,\"purchaseDate\":1612555200000,\"quantity\":1.000000,\"remark\":\"序列号: 22085K6C00203;MAC: 84-D8-1B-42-01-30;用途: Wifi Router\",\"source\":\"SAS\",\"specification\":\"Router / TP-Link / TP-Link AC1300\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Technical & Technologies\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-336\",\"assetName\":\"TP-Link TP-Link TL-SG3428\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"336\",\"externalSource\":\"HARDWARE\",\"id\":175,\"location\":\"Production 1\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 2212005R00360 v2.0;MAC: 00-5F-67-77-B1-09;用途: Network Switch\",\"source\":\"SAS\",\"specification\":\"Switch / TP-Link / TP-Link TL-SG3428\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Technical & Technologies\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-335\",\"assetName\":\"TP-Link TP-Link TL-SG3428\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"335\",\"externalSource\":\"HARDWARE\",\"id\":174,\"location\":\"Production 2\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 2236057000952 v2.20;MAC: 40-ED-00-B6-41-03;用途: Network Switch\",\"source\":\"SAS\",\"specification\":\"Switch / TP-Link / TP-Link TL-SG3428\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Technical & Technologies\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/SERVER/066SN\",\"assetName\":\"TP-Link Omada SG3452\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"334\",\"externalSource\":\"HARDWARE\",\"id\":173,\"location\":\"Server Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 22487K4000718;MAC: 7C-F1-7E-FD-1C-07;用途: Network Switch\",\"source\":\"SAS\",\"specification\":\"Switch / TP-Link / Omada SG3452\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Technical & Technologies\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/SERVER/064CPU\",\"assetName\":\"Dell OptiPlex 7010\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"333\",\"externalSource\":\"HARDWARE\",\"id\":172,\"location\":\"Server Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: JNKWG24;用途: Firewall\",\"source\":\"SAS\",\"specification\":\"Server / Dell / OptiPlex 7010 / Core i5-12500 / 16G / 256G M2,2x 1TB\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Technical & Technologies\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/SERVER/065SN\",\"assetName\":\"TP-Link TP-Link T2600G-52TS\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"332\",\"externalSource\":\"HARDWARE\",\"id\":171,\"keeper\":\"Daniel\",\"location\":\"Server Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 2194962000254;MAC: 98-DA-C4-3C-70-1F;用途: Network Switch\",\"source\":\"SAS\",\"specification\":\"Switch / TP-Link / TP-Link T2600G-52TS\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Technical & Technologies\"}]}}'); +INSERT INTO `tbl_log` VALUES (9256, 63, '接口日志', '43.152.142.57/1.9.116.218', '2026-09-30 08:10:33', 0, 'AssetController.categoryOptions()', NULL, 'GET /apis/asset/category/options', '{}', '{\"code\":200,\"data\":{\"rows\":[{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"尚未归入具体种类的资产\",\"updateTime\":1790613193000,\"categoryCode\":\"UNCATEGORIZED\",\"id\":4,\"sort\":10,\"categoryName\":\"未分类\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System 硬件台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"HARDWARE\",\"id\":5,\"sort\":20,\"categoryName\":\"硬件资产\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System 软件台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"SOFTWARE\",\"id\":6,\"sort\":30,\"categoryName\":\"软件资产\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System SIM 卡台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"SIM_CARD\",\"id\":7,\"sort\":40,\"categoryName\":\"SIM卡\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_01BF8DA563A0\",\"id\":11,\"sort\":100,\"categoryName\":\"生产设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_7129859760C3\",\"id\":12,\"sort\":100,\"categoryName\":\"检测设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_9F38069B30A1\",\"id\":13,\"sort\":100,\"categoryName\":\"动力设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_75F489029B11\",\"id\":14,\"sort\":100,\"categoryName\":\"IT设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_3DDFE01CA0B8\",\"id\":15,\"sort\":100,\"categoryName\":\"物流设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_B5D44F2B039A\",\"id\":16,\"sort\":100,\"categoryName\":\"工装设备\",\"enabled\":true}],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9257, 63, '接口日志', '43.152.142.139/1.9.116.218', '2026-09-30 08:10:42', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":255,\"rows\":[{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/SERVER/054PC\",\"assetName\":\"Dell 1707FP\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"331\",\"externalSource\":\"HARDWARE\",\"id\":170,\"keeper\":\"Daniel\",\"location\":\"Server Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Server\",\"source\":\"SAS\",\"specification\":\"Monitor / Dell / 1707FP\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Technical & Technologies\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/NO2/PC058\",\"assetName\":\"Lenovo L24i-40 23.8\\\" FHD\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"330\",\"externalSource\":\"HARDWARE\",\"id\":169,\"keeper\":\"Daniel\",\"location\":\"R&D Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Personal Work\",\"source\":\"SAS\",\"specification\":\"Monitor / Lenovo / L24i-40 23.8\\\" FHD\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Technical & Technologies\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-329\",\"assetName\":\"HP ProDesk 400 G7\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"329\",\"externalSource\":\"HARDWARE\",\"id\":168,\"keeper\":\"Izyanti\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 4CE216BDPM\",\"source\":\"SAS\",\"specification\":\"CPU / HP / ProDesk 400 G7 / Win 10 Pro / Core i5-10500 / 8G / 250G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Quality\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-328\",\"assetName\":\"Dell OptiPlex 7050\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"328\",\"externalSource\":\"HARDWARE\",\"id\":167,\"keeper\":\"Izyanti\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 51NNLN2\",\"source\":\"SAS\",\"specification\":\"CPU / Dell / OptiPlex 7050 / Win 10 Pro / Core i7-6700 / 8G / 500G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Quality\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAP8/11112024\",\"assetName\":\"Lenovo ThinkPad X1 Carbon Gen 8\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"327\",\"externalSource\":\"HARDWARE\",\"id\":166,\"keeper\":\"Izyanti\",\"location\":\"Personal Carry\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: PF1V7QYM;用途: Personal Work\",\"source\":\"SAS\",\"specification\":\"Laptop / Lenovo / ThinkPad X1 Carbon Gen 8 / Win 11 Pro / Core i7-10510U / 16G / 500G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Quality\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-326\",\"assetName\":\"Dell OptiPlex 7070\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"326\",\"externalSource\":\"HARDWARE\",\"id\":165,\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 8D9VY23\",\"source\":\"SAS\",\"specification\":\"CPU / Dell / OptiPlex 7070 / Win 11 Pro / Core i7-9700 / 16G / 500G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-325\",\"assetName\":\"Dell OptiPlex 7070\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"325\",\"externalSource\":\"HARDWARE\",\"id\":164,\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 7PGVY23\",\"source\":\"SAS\",\"specification\":\"CPU / Dell / OptiPlex 7070 / Win 11 Pro / Core i7-9700 / 16G / 500G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/TECH/046CPU\",\"assetName\":\"Dell OptiPlex 3080\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"324\",\"externalSource\":\"HARDWARE\",\"id\":163,\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 1H5TTC3\",\"source\":\"SAS\",\"specification\":\"CPU / Dell / OptiPlex 3080 / Win 11 Pro / Core i3-10100 / 12G / 1T\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Engineering\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO1/028PC\",\"assetName\":\"LG\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"323\",\"externalSource\":\"HARDWARE\",\"id\":162,\"keeper\":\"Halimaton/Syafiq\",\"location\":\"Prod 1\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Packing\",\"source\":\"SAS\",\"specification\":\"Monitor / LG\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO1/027PC\",\"assetName\":\"Dell\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"322\",\"externalSource\":\"HARDWARE\",\"id\":161,\"keeper\":\"Halimaton/Syafiq\",\"location\":\"Prod 1\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Packing\",\"source\":\"SAS\",\"specification\":\"Monitor / Dell\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"}]}}'); +INSERT INTO `tbl_log` VALUES (9258, 63, '接口日志', '43.174.53.17/1.9.116.218', '2026-09-30 08:10:47', 0, 'AssetController.categoryOptions()', NULL, 'GET /apis/asset/category/options', '{}', '{\"code\":200,\"data\":{\"rows\":[{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"尚未归入具体种类的资产\",\"updateTime\":1790613193000,\"categoryCode\":\"UNCATEGORIZED\",\"id\":4,\"sort\":10,\"categoryName\":\"未分类\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System 硬件台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"HARDWARE\",\"id\":5,\"sort\":20,\"categoryName\":\"硬件资产\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System 软件台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"SOFTWARE\",\"id\":6,\"sort\":30,\"categoryName\":\"软件资产\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System SIM 卡台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"SIM_CARD\",\"id\":7,\"sort\":40,\"categoryName\":\"SIM卡\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_01BF8DA563A0\",\"id\":11,\"sort\":100,\"categoryName\":\"生产设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_7129859760C3\",\"id\":12,\"sort\":100,\"categoryName\":\"检测设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_9F38069B30A1\",\"id\":13,\"sort\":100,\"categoryName\":\"动力设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_75F489029B11\",\"id\":14,\"sort\":100,\"categoryName\":\"IT设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_3DDFE01CA0B8\",\"id\":15,\"sort\":100,\"categoryName\":\"物流设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_B5D44F2B039A\",\"id\":16,\"sort\":100,\"categoryName\":\"工装设备\",\"enabled\":true}],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9259, 63, '接口日志', '43.174.52.68/1.9.116.218', '2026-09-30 08:11:11', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":255,\"rows\":[{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO1/026PC\",\"assetName\":\"Dell\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"321\",\"externalSource\":\"HARDWARE\",\"id\":160,\"keeper\":\"Halimaton/Syafiq\",\"location\":\"Prod 1\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Packing\",\"source\":\"SAS\",\"specification\":\"Monitor / Dell\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO1/025PC\",\"assetName\":\"Dell\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"320\",\"externalSource\":\"HARDWARE\",\"id\":159,\"keeper\":\"Halimaton/Syafiq\",\"location\":\"Prod 1\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Packing\",\"source\":\"SAS\",\"specification\":\"Monitor / Dell\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO1/024CPU\",\"assetName\":\"HP ProDesk 400 G7\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"319\",\"externalSource\":\"HARDWARE\",\"id\":158,\"keeper\":\"Herman\",\"location\":\"Prod 1\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 4CE219BMTT;用途: Packing\",\"source\":\"SAS\",\"specification\":\"CPU / HP / ProDesk 400 G7 / Win 11 Pro / Core i5-10500 / 8G / 1T\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO1/024PC\",\"assetName\":\"HP\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"318\",\"externalSource\":\"HARDWARE\",\"id\":157,\"keeper\":\"Halimaton/Syafiq\",\"location\":\"Prod 1\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Packing\",\"source\":\"SAS\",\"specification\":\"Monitor / HP\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO1/023CPU\",\"assetName\":\"Dell OptiPlex 3020\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"317\",\"externalSource\":\"HARDWARE\",\"id\":156,\"keeper\":\"Halimaton/Syafiq\",\"location\":\"Prod 1\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: GJZ9YC2;用途: Packing\",\"source\":\"SAS\",\"specification\":\"CPU / Dell / OptiPlex 3020 / Win 10 Pro / Core i3-4160 / 8G / 240G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO1/023PC\",\"assetName\":\"HP\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"316\",\"externalSource\":\"HARDWARE\",\"id\":155,\"keeper\":\"Halimaton/Syafiq\",\"location\":\"Prod 1\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Packing\",\"source\":\"SAS\",\"specification\":\"Monitor / HP\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO1/022CPU\",\"assetName\":\"Dell OptiPlex 7050\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"315\",\"externalSource\":\"HARDWARE\",\"id\":154,\"keeper\":\"Hana\",\"location\":\"Prod 1\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: C7YQ7N2;用途: Packing\",\"source\":\"SAS\",\"specification\":\"CPU / Dell / OptiPlex 7050 / Win 10 Pro / Core i7-6700 / 8G / 500G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO1/022PC\",\"assetName\":\"Dell\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"314\",\"externalSource\":\"HARDWARE\",\"id\":153,\"keeper\":\"Halimaton/Syafiq\",\"location\":\"Prod 1\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Packing\",\"source\":\"SAS\",\"specification\":\"Monitor / Dell\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO1/021CPU\",\"assetName\":\"Dell OptiPlex 5040\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"313\",\"externalSource\":\"HARDWARE\",\"id\":152,\"keeper\":\"Halimaton/Syafiq\",\"location\":\"Prod 1\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 7RCBHJ2;用途: Packing\",\"source\":\"SAS\",\"specification\":\"CPU / Dell / OptiPlex 5040 / Win 10 Pro / Core i5-6500 / 8G / 500G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO1/021PC\",\"assetName\":\"Dell\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"312\",\"externalSource\":\"HARDWARE\",\"id\":151,\"keeper\":\"Halimaton/Syafiq\",\"location\":\"Prod 1\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Packing\",\"source\":\"SAS\",\"specification\":\"Monitor / Dell\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"}]}}'); +INSERT INTO `tbl_log` VALUES (9260, 63, '接口日志', '43.174.53.30/1.9.116.218', '2026-09-30 08:11:17', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":255,\"rows\":[{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO1/020CPU\",\"assetName\":\"Dell OptiPlex 3080\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"311\",\"externalSource\":\"HARDWARE\",\"id\":150,\"keeper\":\"Halimaton/Syafiq\",\"location\":\"Prod 1\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 8DVSTC3;用途: Packing\",\"source\":\"SAS\",\"specification\":\"CPU / Dell / OptiPlex 3080 / Win 10 Pro / Core i3-10100 / 8G / 1T\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO1/020PC\",\"assetName\":\"Dell\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"310\",\"externalSource\":\"HARDWARE\",\"id\":149,\"keeper\":\"Halimaton/Syafiq\",\"location\":\"Prod 1\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Packing\",\"source\":\"SAS\",\"specification\":\"Monitor / Dell\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO1/019CPU\",\"assetName\":\"Dell OptiPlex 3080\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"309\",\"externalSource\":\"HARDWARE\",\"id\":148,\"keeper\":\"Mazidah\",\"location\":\"Prod 2\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 2H5TTC3;用途: Packing\",\"source\":\"SAS\",\"specification\":\"CPU / Dell / OptiPlex 3080 / Win 11 Pro / Core i3-10100 / 8G / 500G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO1/019PC\",\"assetName\":\"Dell\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"308\",\"externalSource\":\"HARDWARE\",\"id\":147,\"keeper\":\"Halimaton/Syafiq\",\"location\":\"Prod 1\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Packing\",\"source\":\"SAS\",\"specification\":\"Monitor / Dell\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO1/018CPU\",\"assetName\":\"Dell OptiPlex 7050\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"307\",\"externalSource\":\"HARDWARE\",\"id\":146,\"keeper\":\"Halimaton/Syafiq\",\"location\":\"Prod 1\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: J26QLN2;用途: Packing\",\"source\":\"SAS\",\"specification\":\"CPU / Dell / OptiPlex 7050 / Win 10 Pro / Core i7-6700 / 8G / 500G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO1/018PC\",\"assetName\":\"Dell\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"306\",\"externalSource\":\"HARDWARE\",\"id\":145,\"keeper\":\"Halimaton/Syafiq\",\"location\":\"Prod 1\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Packing\",\"source\":\"SAS\",\"specification\":\"Monitor / Dell\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO1/017CPU\",\"assetName\":\"Dell OptiPlex 7050\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"305\",\"externalSource\":\"HARDWARE\",\"id\":144,\"keeper\":\"Halimaton/Syafiq\",\"location\":\"Prod 1\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: FBNPLN2;用途: Packing\",\"source\":\"SAS\",\"specification\":\"CPU / Dell / OptiPlex 7050 / Win 10 Pro / Core i7-6700 / 8G / 500GB\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO1/017PC\",\"assetName\":\"Dell\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"304\",\"externalSource\":\"HARDWARE\",\"id\":143,\"keeper\":\"Halimaton/Syafiq\",\"location\":\"Prod 1\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Packing\",\"source\":\"SAS\",\"specification\":\"Monitor / Dell\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO2/016CPU\",\"assetName\":\"Dell OptiPlex 7050\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"303\",\"externalSource\":\"HARDWARE\",\"id\":142,\"keeper\":\"Halimaton/Syafiq\",\"location\":\"Prod 2 / Line 4\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: CF7V7N2;用途: RF\",\"source\":\"SAS\",\"specification\":\"CPU / Dell / OptiPlex 7050 / Win 10 Pro / Core i7-6700 / 8G / 500G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO2/016PC\",\"assetName\":\"Lenovo\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"302\",\"externalSource\":\"HARDWARE\",\"id\":141,\"keeper\":\"Halimaton/Syafiq\",\"location\":\"Prod 2 / Line 4\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: RF\",\"source\":\"SAS\",\"specification\":\"Monitor / Lenovo\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"}]}}'); +INSERT INTO `tbl_log` VALUES (9261, 63, '接口日志', '43.152.142.86/1.9.116.218', '2026-09-30 08:11:23', 0, 'AssetController.categoryOptions()', NULL, 'GET /apis/asset/category/options', '{}', '{\"code\":200,\"data\":{\"rows\":[{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"尚未归入具体种类的资产\",\"updateTime\":1790613193000,\"categoryCode\":\"UNCATEGORIZED\",\"id\":4,\"sort\":10,\"categoryName\":\"未分类\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System 硬件台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"HARDWARE\",\"id\":5,\"sort\":20,\"categoryName\":\"硬件资产\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System 软件台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"SOFTWARE\",\"id\":6,\"sort\":30,\"categoryName\":\"软件资产\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System SIM 卡台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"SIM_CARD\",\"id\":7,\"sort\":40,\"categoryName\":\"SIM卡\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_01BF8DA563A0\",\"id\":11,\"sort\":100,\"categoryName\":\"生产设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_7129859760C3\",\"id\":12,\"sort\":100,\"categoryName\":\"检测设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_9F38069B30A1\",\"id\":13,\"sort\":100,\"categoryName\":\"动力设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_75F489029B11\",\"id\":14,\"sort\":100,\"categoryName\":\"IT设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_3DDFE01CA0B8\",\"id\":15,\"sort\":100,\"categoryName\":\"物流设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_B5D44F2B039A\",\"id\":16,\"sort\":100,\"categoryName\":\"工装设备\",\"enabled\":true}],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9262, 63, '接口日志', '43.152.142.32/1.9.116.218', '2026-09-30 08:11:55', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":255,\"rows\":[{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO2/015CPU\",\"assetName\":\"Dell OptiPlex 7050\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"301\",\"externalSource\":\"HARDWARE\",\"id\":140,\"keeper\":\"Halimaton/Syafiq\",\"location\":\"Prod 2 / Line 4\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 8L2YTK2;用途: RF\",\"source\":\"SAS\",\"specification\":\"CPU / Dell / OptiPlex 7050 / Win 10 Pro / Core i7-6700 / 8G / 500G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO2/015PC\",\"assetName\":\"Dell\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"300\",\"externalSource\":\"HARDWARE\",\"id\":139,\"keeper\":\"Halimaton/Syafiq\",\"location\":\"Prod 2 / Line 4\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: RF\",\"source\":\"SAS\",\"specification\":\"Monitor / Dell\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO2/014CPU\",\"assetName\":\"Dell Vostro 230\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"299\",\"externalSource\":\"HARDWARE\",\"id\":138,\"keeper\":\"Halimaton/Syafiq\",\"location\":\"Prod 2 / Line 4\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 1VBK92S;用途: RF\",\"source\":\"SAS\",\"specification\":\"CPU / Dell / Vostro 230 / Win 7 Pro / Core 2 Duo E7500 / 4G / 500G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production 2\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO2/014PC\",\"assetName\":\"Dell\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"298\",\"externalSource\":\"HARDWARE\",\"id\":137,\"keeper\":\"Halimaton/Syafiq\",\"location\":\"Prod 2 / Line 4\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: RF\",\"source\":\"SAS\",\"specification\":\"Monitor / Dell\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO2/013PC\",\"assetName\":\"Dell\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"297\",\"externalSource\":\"HARDWARE\",\"id\":136,\"keeper\":\"Halimaton/Syafiq\",\"location\":\"Prod 2 / Line 4\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: RF\",\"source\":\"SAS\",\"specification\":\"Monitor / Dell\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO2/012CPU\",\"assetName\":\"Dell OptiPlex 7050\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"296\",\"externalSource\":\"HARDWARE\",\"id\":135,\"keeper\":\"Halimaton/Syafiq\",\"location\":\"Prod 2 / Line 3\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 3WRV9P2;用途: RF\",\"source\":\"SAS\",\"specification\":\"CPU / Dell / OptiPlex 7050 / Win 10 Pro / Core i7-6700 / 8G / 500G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO2/012PC\",\"assetName\":\"Lenovo\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"295\",\"externalSource\":\"HARDWARE\",\"id\":134,\"keeper\":\"Halimaton/Syafiq\",\"location\":\"Prod 2 / Line 3\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: RF\",\"source\":\"SAS\",\"specification\":\"Monitor / Lenovo\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO2/011CPU\",\"assetName\":\"Dell OptiPlex 3080\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"294\",\"externalSource\":\"HARDWARE\",\"id\":133,\"keeper\":\"Ma\",\"location\":\"Prod 2 / Line 3\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: JG5TTC3;用途: RF\",\"source\":\"SAS\",\"specification\":\"CPU / Dell / OptiPlex 3080 / Win 11 Pro / Core i3-10100 / 12G / 1TB\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO2/011PC\",\"assetName\":\"HP\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"293\",\"externalSource\":\"HARDWARE\",\"id\":132,\"keeper\":\"Halimaton/Syafiq\",\"location\":\"Prod 2 / Line 3\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: RF\",\"source\":\"SAS\",\"specification\":\"Monitor / HP\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO2/010CPU\",\"assetName\":\"Dell OptiPlex 7050\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"292\",\"externalSource\":\"HARDWARE\",\"id\":131,\"keeper\":\"Halimaton/Syafiq\",\"location\":\"Prod 2 / Line 3\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: GT8YPM2;用途: RF\",\"source\":\"SAS\",\"specification\":\"CPU / Dell / OptiPlex 7050 / Win 10 Pro / Core i7-6700 / 8G / 500G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"}]}}'); +INSERT INTO `tbl_log` VALUES (9263, 63, '接口日志', '43.174.32.23/1.9.116.218', '2026-09-30 08:12:04', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":255,\"rows\":[{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO2/010PC\",\"assetName\":\"Dell\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"291\",\"externalSource\":\"HARDWARE\",\"id\":130,\"keeper\":\"Halimaton/Syafiq\",\"location\":\"Prod 2 / Line 3\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: RF\",\"source\":\"SAS\",\"specification\":\"Monitor / Dell\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO2/009CPU\",\"assetName\":\"Dell OptiPlex 7050\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"290\",\"externalSource\":\"HARDWARE\",\"id\":129,\"keeper\":\"Mazidah\",\"location\":\"Prod 2 / Line 3\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: BB4W9P2;用途: RF;原备注: 3-Aug: Ram upgraded from 8Gb to 16Gb\",\"source\":\"SAS\",\"specification\":\"CPU / Dell / OptiPlex 7050 / Win 10 Pro / Core i7-6700 / 16G / 500G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO2/009PC\",\"assetName\":\"Lenovo\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"289\",\"externalSource\":\"HARDWARE\",\"id\":128,\"keeper\":\"Halimaton/Syafiq\",\"location\":\"Prod 2 / Line 3\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: RF\",\"source\":\"SAS\",\"specification\":\"Monitor / Lenovo\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO2/008CPU\",\"assetName\":\"Dell OptiPlex 7050\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"288\",\"externalSource\":\"HARDWARE\",\"id\":127,\"keeper\":\"Mazidah\",\"location\":\"Prod 2 / Line 3\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 1P12LQ2;用途: RF;原备注: 3-Aug : Ram upgraded from 8Gb to 16Gb\",\"source\":\"SAS\",\"specification\":\"CPU / Dell / OptiPlex 7050 / Win 10 Pro / Core i7-6700 / 16G / 500G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO2/008PC\",\"assetName\":\"Dell\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"287\",\"externalSource\":\"HARDWARE\",\"id\":126,\"keeper\":\"Halimaton/Syafiq\",\"location\":\"Prod 2 / Line 3\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: RF\",\"source\":\"SAS\",\"specification\":\"Monitor / Dell\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO2/007CPU,SMT/PRO2/013CPU\",\"assetName\":\"HP HP Pro 3330 MT\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"286\",\"externalSource\":\"HARDWARE\",\"id\":125,\"keeper\":\"Halimaton/Syafiq\",\"location\":\"Prod 2 / Line 2\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: SGH221S6RS;用途: RF\",\"source\":\"SAS\",\"specification\":\"CPU / HP / HP Pro 3330 MT / Core i7-2600\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO2/007PC\",\"assetName\":\"Dell\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"285\",\"externalSource\":\"HARDWARE\",\"id\":124,\"keeper\":\"Halimaton/Syafiq\",\"location\":\"Prod 2 / Line 2\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: RF\",\"source\":\"SAS\",\"specification\":\"Monitor / Dell\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO2/006CPU\",\"assetName\":\"Dell OptiPlex 7050\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"284\",\"externalSource\":\"HARDWARE\",\"id\":123,\"keeper\":\"Halimaton/Syafiq\",\"location\":\"Prod 2 / Line 2\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 18TR7N2;用途: RF\",\"source\":\"SAS\",\"specification\":\"CPU / Dell / OptiPlex 7050 / Win 10 Pro / Core i7-6700 / 8G / 500G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO2/006PC\",\"assetName\":\"Dell\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"283\",\"externalSource\":\"HARDWARE\",\"id\":122,\"keeper\":\"Halimaton/Syafiq\",\"location\":\"Prod 2 / Line 2\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: RF\",\"source\":\"SAS\",\"specification\":\"Monitor / Dell\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO2/005CPU\",\"assetName\":\"Dell OPtiPlex 3020\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"282\",\"externalSource\":\"HARDWARE\",\"id\":121,\"keeper\":\"Halimaton/Syafiq\",\"location\":\"Prod 2 / Line 2\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: FNL9YC2;用途: RF\",\"source\":\"SAS\",\"specification\":\"CPU / Dell / OPtiPlex 3020 / Win 10 Pro / Core i3-4160 / 8G / 256G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"}]}}'); +INSERT INTO `tbl_log` VALUES (9264, 63, '接口日志', '43.152.142.105/1.9.116.218', '2026-09-30 08:12:24', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":255,\"rows\":[{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO2/005PC\",\"assetName\":\"HP\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"281\",\"externalSource\":\"HARDWARE\",\"id\":120,\"keeper\":\"Halimaton/Syafiq\",\"location\":\"Prod 2 / Line 2\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: RF\",\"source\":\"SAS\",\"specification\":\"Monitor / HP\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO2/004CPU\",\"assetName\":\"Dell OptiPlex 7050\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"280\",\"externalSource\":\"HARDWARE\",\"id\":119,\"keeper\":\"Halimaton/Syafiq\",\"location\":\"Prod 2 / Line 2\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: B8MS9P2;用途: RF\",\"source\":\"SAS\",\"specification\":\"CPU / Dell / OptiPlex 7050 / Win 10 Pro / Core i7-6700 / 4G / 500G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO2/004PC\",\"assetName\":\"Dell\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"279\",\"externalSource\":\"HARDWARE\",\"id\":118,\"keeper\":\"Halimaton/Syafiq\",\"location\":\"Prod 2 / Line 2\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: RF\",\"source\":\"SAS\",\"specification\":\"Monitor / Dell\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO2/003CPU\",\"assetName\":\"Dell OptiPlex 7050\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"278\",\"externalSource\":\"HARDWARE\",\"id\":117,\"keeper\":\"Halimaton/Syafiq\",\"location\":\"Prod 2 / Line 1\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 18TR7N2 / 1R22GL2;用途: RF\",\"source\":\"SAS\",\"specification\":\"CPU / Dell / OptiPlex 7050 / Win 10 Pro / Core i7-6700 / 8G / 500G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO2/003PC\",\"assetName\":\"Dell\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"277\",\"externalSource\":\"HARDWARE\",\"id\":116,\"keeper\":\"Halimaton/Syafiq\",\"location\":\"Prod 2 / Line 1\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: RF\",\"source\":\"SAS\",\"specification\":\"Monitor / Dell\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO2/002CPU\",\"assetName\":\"Dell OptiPlex 3080\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"276\",\"externalSource\":\"HARDWARE\",\"id\":115,\"keeper\":\"Halimaton/Syafiq\",\"location\":\"Prod 2 / Line 1\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: CDVSTC3;用途: RF\",\"source\":\"SAS\",\"specification\":\"CPU / Dell / OptiPlex 3080 / Core i3-10100 / 1T\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO2/002PC\",\"assetName\":\"Dell\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"275\",\"externalSource\":\"HARDWARE\",\"id\":114,\"keeper\":\"Halimaton/Syafiq\",\"location\":\"Prod 2 / Line 1\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: RF\",\"source\":\"SAS\",\"specification\":\"Monitor / Dell\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-274\",\"assetName\":\"Dell OptiPlex 3080\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"274\",\"externalSource\":\"HARDWARE\",\"id\":113,\"keeper\":\"Halimaton/Syafiq\",\"location\":\"Production 1\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 3H5TTC3;用途: RF\",\"source\":\"SAS\",\"specification\":\"CPU / Dell / OptiPlex 3080 / Win 10 Pro / Core i3-10100 / 8G / 480G, 1T\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO2/001CPU\",\"assetName\":\"Dell OptiPlex 7050\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"273\",\"externalSource\":\"HARDWARE\",\"id\":112,\"keeper\":\"Halimaton\",\"location\":\"Prod 2\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: FBHMLN2\",\"source\":\"SAS\",\"specification\":\"CPU / Dell / OptiPlex 7050 / Core i7-6700 / 8G / 500G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production 2\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/PRO2/001PC\",\"assetName\":\"Dell\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"272\",\"externalSource\":\"HARDWARE\",\"id\":111,\"keeper\":\"Halimaton/Syafiq\",\"location\":\"Prod 2 / Line 1\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: RF\",\"source\":\"SAS\",\"specification\":\"Monitor / Dell\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"}]}}'); +INSERT INTO `tbl_log` VALUES (9265, 63, '接口日志', '43.174.53.17/1.9.116.218', '2026-09-30 08:13:19', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":255,\"rows\":[{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAP14/11112024,SMT/LAP14/112004\",\"assetName\":\"Lenovo ThinkPad X1 Carbon Gen 8\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"271\",\"externalSource\":\"HARDWARE\",\"id\":110,\"keeper\":\"Hana\",\"location\":\"Personal Carry\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: PF267MWG;用途: Sticker/Print\",\"source\":\"SAS\",\"specification\":\"Laptop / Lenovo / ThinkPad X1 Carbon Gen 8 / Win 11 Pro / Core i5-8265U / 16G / 500G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAP10/11112024\",\"assetName\":\"Lenovo ThinkPad X1 Carbon Gen 8\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"270\",\"externalSource\":\"HARDWARE\",\"id\":109,\"keeper\":\"Halimaton\",\"location\":\"Personal Carry\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: PF1VB811;用途: Personal Work\",\"source\":\"SAS\",\"specification\":\"Laptop / Lenovo / ThinkPad X1 Carbon Gen 8 / Win 11 Pro / Core i7-10510U / 16G / 500G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAP7/11112024\",\"assetName\":\"Lenovo ThinkPad X1 Carbon Gen 8\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"269\",\"externalSource\":\"HARDWARE\",\"id\":108,\"keeper\":\"Mazidah\",\"location\":\"Personal Carry\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: PF2685GY;用途: Personal Work\",\"source\":\"SAS\",\"specification\":\"Laptop / Lenovo / ThinkPad X1 Carbon Gen 8 / Win 11 Pro / Core i7-8565U / 16G / 500G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAP12/11112024\",\"assetName\":\"HP Pro Book 440 G8\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"268\",\"externalSource\":\"HARDWARE\",\"id\":107,\"keeper\":\"Syafiq\",\"location\":\"Personal Carry\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 5CD14257QY;用途: Personal Work\",\"source\":\"SAS\",\"specification\":\"Laptop / HP / Pro Book 440 G8 / Win 11 Pro / Core i5-1135G7 / 8G / 240G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAP1/11112024\",\"assetName\":\"Acer Acer Spin 3\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"267\",\"externalSource\":\"HARDWARE\",\"id\":106,\"keeper\":\"Arif\",\"location\":\"Personal Carry\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: NXA9VSM00414307CD96600;用途: Personal Work\",\"source\":\"SAS\",\"specification\":\"Laptop / Acer / Acer Spin 3 / Win 11 Home / Core i7-1165G7 / 16G / 500G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Operation\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/STORE/054PC\",\"assetName\":\"HP\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"266\",\"externalSource\":\"HARDWARE\",\"id\":105,\"keeper\":\"Not Specified\",\"location\":\"Store Office\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Not Specified\",\"source\":\"SAS\",\"specification\":\"Monitor / HP\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Not Specified\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/STORE/053PC\",\"assetName\":\"Lenovo\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"265\",\"externalSource\":\"HARDWARE\",\"id\":104,\"keeper\":\"Not Specified\",\"location\":\"Store Office\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Not Specified\",\"source\":\"SAS\",\"specification\":\"Monitor / Lenovo\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Not Specified\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/OFFICE2/052CPU\",\"assetName\":\"CPU 硬件资产 264\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"264\",\"externalSource\":\"HARDWARE\",\"id\":103,\"keeper\":\"Not Specified\",\"location\":\"Office 2\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Not Specified\",\"source\":\"SAS\",\"specification\":\"CPU\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Not Specified\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/OFFICE2/052PC\",\"assetName\":\"LG\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"263\",\"externalSource\":\"HARDWARE\",\"id\":102,\"keeper\":\"Not Specified\",\"location\":\"Office 2\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Not Specified\",\"source\":\"SAS\",\"specification\":\"Monitor / LG\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Not Specified\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/OFFICE2/051CPU\",\"assetName\":\"HP\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"262\",\"externalSource\":\"HARDWARE\",\"id\":101,\"keeper\":\"Not Specified\",\"location\":\"Office 2\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Not Specified\",\"source\":\"SAS\",\"specification\":\"CPU / HP\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Not Specified\"}]}}'); +INSERT INTO `tbl_log` VALUES (9266, NULL, '接口日志', '43.152.142.29/1.9.116.218', '2026-09-30 08:17:25', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (9267, NULL, '接口日志', '43.152.142.110/1.9.116.218', '2026-09-30 08:17:25', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (9268, 63, '接口日志', '43.152.142.29/1.9.116.218', '2026-09-30 08:17:26', 0, 'FunctionController.findMenuByPNumber(..)', NULL, 'POST /apis/function/findMenuByPNumber', '{\"jsonObject\":{\"userId\":63,\"pNumber\":0}}', '[{\"component\":\"/layouts/TabLayout\",\"icon\":\"home\",\"id\":0,\"text\":\"首页\",\"url\":\"/dashboard/analysis\",\"textEn\":\"Home\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/SaleOrderList\",\"icon\":\"profile\",\"id\":242,\"text\":\"销售订单\",\"url\":\"/bill/sale_order\",\"textEn\":\"Sales Orders\"},{\"component\":\"/bill/SaleOutList\",\"icon\":\"profile\",\"id\":41,\"text\":\"销售出库\",\"url\":\"/bill/sale_out\",\"textEn\":\"Sales Shipments\"},{\"component\":\"/bill/DeliveryPlanList\",\"icon\":\"profile\",\"id\":271,\"text\":\"交货计划管理\",\"url\":\"/bill/delivery_plan\",\"textEn\":\"Delivery Plans\"},{\"component\":\"/bill/SaleShipmentList\",\"icon\":\"car\",\"id\":268,\"text\":\"发货管理\",\"url\":\"/bill/sale_shipment\",\"textEn\":\"Shipment Management\"},{\"component\":\"/bill/SaleBackList\",\"icon\":\"profile\",\"id\":200,\"text\":\"销售退货\",\"url\":\"/bill/sale_back\",\"textEn\":\"Sales Returns\"},{\"component\":\"/bill/RetailOutList\",\"icon\":\"profile\",\"id\":210,\"text\":\"零售出库\",\"url\":\"/bill/retail_out\",\"textEn\":\"Retail Shipments\"},{\"component\":\"/bill/RetailBackList\",\"icon\":\"profile\",\"id\":211,\"text\":\"零售退货\",\"url\":\"/bill/retail_back\",\"textEn\":\"Retail Returns\"}],\"icon\":\"shopping-cart\",\"id\":38,\"text\":\"销售管理\",\"url\":\"/billB\",\"textEn\":\"Sales Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/PurchaseApplyList\",\"icon\":\"profile\",\"id\":261,\"text\":\"请购单\",\"url\":\"/bill/purchase_apply\",\"textEn\":\"Purchase Requisitions\"},{\"component\":\"/bill/PurchaseOrderList\",\"icon\":\"profile\",\"id\":241,\"text\":\"采购订单\",\"url\":\"/bill/purchase_order\",\"textEn\":\"Purchase Orders\"},{\"component\":\"/bill/PurchaseInList\",\"icon\":\"profile\",\"id\":33,\"text\":\"采购入库\",\"url\":\"/bill/purchase_in\",\"textEn\":\"Purchase Receipts\"},{\"component\":\"/bill/PurchaseBackList\",\"icon\":\"profile\",\"id\":199,\"text\":\"采购退货\",\"url\":\"/bill/purchase_back\",\"textEn\":\"Purchase Returns\"}],\"icon\":\"retweet\",\"id\":32,\"text\":\"采购管理\",\"url\":\"/bill\",\"textEn\":\"Purchase Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/production/PackBomList\",\"icon\":\"profile\",\"id\":263,\"text\":\"生产方案\",\"url\":\"/production/pack_bom\",\"textEn\":\"Production BOMs\"},{\"component\":\"/production/OrderList\",\"icon\":\"profile\",\"id\":264,\"text\":\"生产工单\",\"url\":\"/production/order\",\"textEn\":\"Production Orders\"},{\"component\":\"/production/RequisitionList\",\"icon\":\"profile\",\"id\":265,\"text\":\"领料管理\",\"url\":\"/production/requisition\",\"textEn\":\"Material Requisitions\"},{\"component\":\"/production/ReportList\",\"icon\":\"profile\",\"id\":266,\"text\":\"完工报工\",\"url\":\"/production/report\",\"textEn\":\"Production Reports\"}],\"icon\":\"cluster\",\"id\":262,\"text\":\"生产管理\",\"url\":\"/production\",\"textEn\":\"Production Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/MaterialStock\",\"icon\":\"profile\",\"id\":246,\"text\":\"商品库存\",\"url\":\"/report/material_stock\",\"textEn\":\"Product Inventory\"},{\"component\":\"/bill/OtherInList\",\"icon\":\"profile\",\"id\":201,\"text\":\"其它入库\",\"url\":\"/bill/other_in\",\"textEn\":\"Other Receipts\"},{\"component\":\"/bill/OtherOutList\",\"icon\":\"profile\",\"id\":202,\"text\":\"其它出库\",\"url\":\"/bill/other_out\",\"textEn\":\"Other Shipments\"},{\"component\":\"/bill/HeadquartersInList\",\"icon\":\"profile\",\"id\":270,\"text\":\"总部入库\",\"url\":\"/bill/headquarters_in\",\"textEn\":\"Headquarters Receipts\"}],\"icon\":\"hdd\",\"id\":239,\"text\":\"仓库管理\",\"url\":\"/billD\",\"textEn\":\"Warehouse Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/financial/MoneyInList\",\"icon\":\"profile\",\"id\":204,\"text\":\"收款单\",\"url\":\"/financial/money_in\",\"textEn\":\"Receipt Vouchers\"},{\"component\":\"/financial/MoneyOutList\",\"icon\":\"profile\",\"id\":205,\"text\":\"付款单\",\"url\":\"/financial/money_out\",\"textEn\":\"Payment Vouchers\"}],\"icon\":\"money-collect\",\"id\":44,\"text\":\"财务管理\",\"url\":\"/financial\",\"textEn\":\"Finance Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/asset/AssetDashboard\",\"icon\":\"dashboard\",\"id\":276,\"text\":\"资产汇总\",\"url\":\"/asset\",\"textEn\":\"Asset Overview\"},{\"component\":\"/asset/AssetList\",\"icon\":\"profile\",\"id\":273,\"text\":\"资产台账\",\"url\":\"/asset/ledger\",\"textEn\":\"Asset Ledger\"},{\"component\":\"/asset/DeviceList\",\"icon\":\"tool\",\"id\":274,\"text\":\"设备台账\",\"url\":\"/asset/device\",\"textEn\":\"Device Ledger\"},{\"component\":\"/asset/InventoryList\",\"icon\":\"scan\",\"id\":275,\"text\":\"资产盘点\",\"url\":\"/asset/inventory\",\"textEn\":\"Asset Inventory\"}],\"icon\":\"bank\",\"id\":272,\"text\":\"资产管理\",\"url\":\"/assetManagement\",\"textEn\":\"Asset Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/material/MaterialCategoryList\",\"icon\":\"profile\",\"id\":22,\"text\":\"商品类别\",\"url\":\"/material/material_category\",\"textEn\":\"Product Categories\"},{\"component\":\"/material/MaterialList\",\"icon\":\"profile\",\"id\":23,\"text\":\"商品信息\",\"url\":\"/material/material\",\"textEn\":\"Product Information\"},{\"component\":\"/system/UnitList\",\"icon\":\"profile\",\"id\":220,\"text\":\"多单位\",\"url\":\"/system/unit\",\"textEn\":\"Multiple Units\"},{\"component\":\"/material/MaterialAttributeList\",\"icon\":\"profile\",\"id\":247,\"text\":\"多属性\",\"url\":\"/material/material_attribute\",\"textEn\":\"Product Attributes\"}],\"icon\":\"shopping\",\"id\":21,\"text\":\"商品管理\",\"url\":\"/material\",\"textEn\":\"Product Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/AccountReport\",\"icon\":\"profile\",\"id\":207,\"text\":\"账户统计\",\"url\":\"/report/account_report\",\"textEn\":\"Account Summary\"},{\"component\":\"/report/RetailOutReport\",\"icon\":\"profile\",\"id\":259,\"text\":\"零售统计\",\"url\":\"/report/retail_out_report\",\"textEn\":\"Retail Summary\"},{\"component\":\"/report/BuyInReport\",\"icon\":\"profile\",\"id\":208,\"text\":\"采购统计\",\"url\":\"/report/buy_in_report\",\"textEn\":\"Purchase Summary\"},{\"component\":\"/report/SaleOutReport\",\"icon\":\"profile\",\"id\":209,\"text\":\"销售统计\",\"url\":\"/report/sale_out_report\",\"textEn\":\"Sales Summary\"},{\"component\":\"/report/InDetail\",\"icon\":\"profile\",\"id\":226,\"text\":\"入库明细\",\"url\":\"/report/in_detail\",\"textEn\":\"Inbound Details\"},{\"component\":\"/report/OutDetail\",\"icon\":\"profile\",\"id\":227,\"text\":\"出库明细\",\"url\":\"/report/out_detail\",\"textEn\":\"Outbound Details\"},{\"component\":\"/report/InMaterialCount\",\"icon\":\"profile\",\"id\":228,\"text\":\"入库汇总\",\"url\":\"/report/in_material_count\",\"textEn\":\"Inbound Summary\"},{\"component\":\"/report/OutMaterialCount\",\"icon\":\"profile\",\"id\":229,\"text\":\"出库汇总\",\"url\":\"/report/out_material_count\",\"textEn\":\"Outbound Summary\"},{\"component\":\"/report/InOutStockReport\",\"icon\":\"profile\",\"id\":59,\"text\":\"进销存统计\",\"url\":\"/report/in_out_stock_report\",\"textEn\":\"Inventory Transaction Summary\"},{\"component\":\"/report/CustomerAccount\",\"icon\":\"profile\",\"id\":235,\"text\":\"客户对账\",\"url\":\"/report/customer_account\",\"textEn\":\"Customer Reconciliation\"},{\"component\":\"/report/VendorAccount\",\"icon\":\"profile\",\"id\":237,\"text\":\"供应商对账\",\"url\":\"/report/vendor_account\",\"textEn\":\"Supplier Reconciliation\"},{\"component\":\"/report/StockWarningReport\",\"icon\":\"profile\",\"id\":244,\"text\":\"库存预警\",\"url\":\"/report/stock_warning_report\",\"textEn\":\"Stock Alerts\"}],\"icon\":\"pie-chart\",\"id\":198,\"text\":\"报表查询\",\"url\":\"/report\",\"textEn\":\"Reports\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/VendorList\",\"icon\":\"profile\",\"id\":25,\"text\":\"供应商信息\",\"url\":\"/system/vendor\",\"textEn\":\"Suppliers\"},{\"component\":\"/system/CustomerList\",\"icon\":\"profile\",\"id\":217,\"text\":\"客户信息\",\"url\":\"/system/customer\",\"textEn\":\"Customers\"},{\"component\":\"/system/MemberList\",\"icon\":\"profile\",\"id\":218,\"text\":\"会员信息\",\"url\":\"/system/member\",\"textEn\":\"Members\"},{\"component\":\"/system/CustomerCategoryList\",\"icon\":\"bars\",\"id\":267,\"text\":\"客户分类\",\"url\":\"/system/customerCategory\",\"textEn\":\"Customer Categories\"},{\"component\":\"/system/DepotList\",\"icon\":\"profile\",\"id\":26,\"text\":\"仓库信息\",\"url\":\"/system/depot\",\"textEn\":\"Warehouses\"},{\"component\":\"/system/InOutItemList\",\"icon\":\"profile\",\"id\":194,\"text\":\"收支项目\",\"url\":\"/system/in_out_item\",\"textEn\":\"Income and Expense Items\"},{\"component\":\"/system/AccountList\",\"icon\":\"profile\",\"id\":195,\"text\":\"结算账户\",\"url\":\"/system/account\",\"textEn\":\"Settlement Accounts\"},{\"component\":\"/system/PersonList\",\"icon\":\"profile\",\"id\":31,\"text\":\"操作人员管理\",\"url\":\"/system/person\",\"textEn\":\"Operators\"}],\"icon\":\"appstore\",\"id\":24,\"text\":\"基础资料\",\"url\":\"/systemA\",\"textEn\":\"Master Data\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/RoleList\",\"icon\":\"profile\",\"id\":13,\"text\":\"角色管理\",\"url\":\"/system/role\",\"textEn\":\"Role Management\"},{\"component\":\"/system/UserList\",\"icon\":\"profile\",\"id\":14,\"text\":\"用户管理\",\"url\":\"/system/user\",\"textEn\":\"User Management\"},{\"component\":\"/system/OrganizationList\",\"icon\":\"profile\",\"id\":243,\"text\":\"部门管理\",\"url\":\"/system/organization\",\"textEn\":\"Department Management\"},{\"component\":\"/system/LogList\",\"icon\":\"profile\",\"id\":15,\"text\":\"日志管理\",\"url\":\"/system/log\",\"textEn\":\"Log Management\"},{\"component\":\"/material/MaterialPropertyList\",\"icon\":\"profile\",\"id\":236,\"text\":\"商品属性\",\"url\":\"/material/material_property\",\"textEn\":\"Product Properties\"},{\"component\":\"/system/SystemConfigList\",\"icon\":\"profile\",\"id\":234,\"text\":\"系统配置\",\"url\":\"/system/system_config\",\"textEn\":\"System Configuration\"},{\"component\":\"/system/FunctionList\",\"icon\":\"profile\",\"id\":16,\"text\":\"菜单管理\",\"url\":\"/system/function\",\"textEn\":\"Resource Menus\"},{\"component\":\"/system/PluginList\",\"icon\":\"profile\",\"id\":245,\"text\":\"插件管理\",\"url\":\"/system/plugin\",\"textEn\":\"Plugin Management\"},{\"component\":\"/system/DictList\",\"icon\":\"profile\",\"id\":260,\"text\":\"字典管理\",\"url\":\"/system/dict\",\"textEn\":\"Dictionary Management\"},{\"component\":\"/system/PlatformConfigList\",\"icon\":\"profile\",\"id\":258,\"text\":\"平台配置\",\"url\":\"/system/platform_config\",\"textEn\":\"Platform Configuration\"}],\"icon\":\"setting\",\"id\":1,\"text\":\"系统管理\",\"url\":\"/system\",\"textEn\":\"System Management\"}]'); +INSERT INTO `tbl_log` VALUES (9269, 63, '接口日志', '43.152.142.118/1.9.116.218', '2026-09-30 08:17:26', 0, 'UserController.getUserBtnByCurrentUser(..)', NULL, 'GET /apis/user/getUserBtnByCurrentUser', '{}', '{\"code\":200,\"data\":{\"userBtn\":[{\"btnStr\":\"8,1\",\"url\":\"/system/role\"},{\"btnStr\":\"1\",\"url\":\"/system/user\"},{\"btnStr\":\"1\",\"url\":\"/system/organization\"},{\"btnStr\":\"1\",\"url\":\"/material/material_property\"},{\"btnStr\":\"1\",\"url\":\"/system/system_config\"},{\"btnStr\":\"1\",\"url\":\"/system/function\"},{\"btnStr\":\"1\",\"url\":\"/system/plugin\"},{\"btnStr\":\"1\",\"url\":\"/material/material_category\"},{\"btnStr\":\"1,3\",\"url\":\"/material/material\"},{\"btnStr\":\"1\",\"url\":\"/system/unit\"},{\"btnStr\":\"1\",\"url\":\"/material/material_attribute\"},{\"btnStr\":\"1,3\",\"url\":\"/system/vendor\"},{\"btnStr\":\"1,3\",\"url\":\"/system/customer\"},{\"btnStr\":\"1,3\",\"url\":\"/system/member\"},{\"btnStr\":\"1\",\"url\":\"/system/depot\"},{\"btnStr\":\"1\",\"url\":\"/system/in_out_item\"},{\"btnStr\":\"1\",\"url\":\"/system/account\"},{\"btnStr\":\"1\",\"url\":\"/system/person\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_apply\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_out\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/delivery_plan\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/sale_shipment\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_out\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/order\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/requisition\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/report\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/giro\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/advance_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/allocation_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/assemble\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/headquarters_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/disassemble\"}]}}'); +INSERT INTO `tbl_log` VALUES (9270, 63, '接口日志', '43.174.51.49/1.9.116.218', '2026-09-30 08:17:26', 0, 'MsgController.getList(..)', NULL, 'GET /apis/msg/list', '{\"search\":\"{\\\"name\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9271, 63, '接口日志', '43.152.142.108/1.9.116.218', '2026-09-30 08:17:26', 0, 'MsgController.getMsgByStatus(..)', NULL, 'GET /apis/msg/getMsgByStatus', '{\"status\":\"1\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (9272, 63, '接口日志', '43.152.142.68/1.9.116.218', '2026-09-30 08:17:26', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-04\",\"inbound\":100669.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (9273, 63, '接口日志', '43.174.32.33/1.9.116.218', '2026-09-30 08:17:36', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (9274, 63, '接口日志', '43.152.142.142/1.9.116.218', '2026-09-30 08:17:36', 0, 'DepotItemController.findDetailByDepotIdsAndMaterialId(..)', NULL, 'GET /apis/depotItem/findDetailByDepotIdsAndMaterialId', '{\"pageSize\":10,\"currentPage\":1,\"depotIds\":\"\",\"number\":\"\",\"beginTime\":\"\",\"endTime\":\"\",\"stockPriceFlag\":true}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9275, 63, '接口日志', '43.174.53.19/1.9.116.218', '2026-09-30 08:17:36', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9276, 63, '接口日志', '43.152.142.132/1.9.116.218', '2026-09-30 08:17:36', 0, 'DepotItemController.findDetailByDepotIdsAndMaterialId(..)', NULL, 'GET /apis/depotItem/findDetailByDepotIdsAndMaterialId', '{\"pageSize\":10,\"currentPage\":1,\"depotIds\":\"\",\"number\":\"\",\"beginTime\":\"\",\"endTime\":\"\",\"stockPriceFlag\":false}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9277, 63, '接口日志', '43.174.53.48/1.9.116.218', '2026-09-30 08:17:36', 0, 'MaterialController.getListWithStock(..)', NULL, 'GET /apis/material/getListWithStock', '{\"currentPage\":1,\"pageSize\":10,\"position\":\"\",\"materialParam\":\"\",\"zeroStock\":0,\"column\":\"createTime\",\"order\":\"desc\"}', '{\"code\":200,\"data\":{\"currentStockPrice\":107372523.170000000000,\"moveAvgPriceFlag\":false,\"total\":22,\"showStockPrice\":true,\"currentWeight\":0E-12,\"currentStock\":519203.000000,\"rows\":[{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"成品\",\"color\":\"\",\"currentStock\":7223.000000,\"currentStockMovePrice\":2293302.500000000000,\"currentStockPrice\":2293302.500000000000,\"currentUnitPrice\":317.500000,\"currentWeight\":0E-12,\"id\":704,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"3PH-APEC3-WC\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"3PH APEC3-WC\",\"name\":\"3PH APEC3-WC\",\"position\":\"\",\"purchaseDecimal\":317.500000,\"standard\":\"3PH APEC3-WC\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"成品\",\"color\":\"\",\"currentStock\":52400.000000,\"currentStockMovePrice\":3117800.000000000000,\"currentStockPrice\":3117800.000000000000,\"currentUnitPrice\":59.500000,\"currentWeight\":0E-12,\"id\":703,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"1PH-WS79\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"1PH WS79\",\"name\":\"1PH WS79\",\"position\":\"\",\"purchaseDecimal\":59.500000,\"standard\":\"1PH WS79\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":1000.000000,\"currentStockMovePrice\":24300.000000000000,\"currentStockPrice\":24300.000000000000,\"currentUnitPrice\":24.300000,\"currentWeight\":0E-12,\"id\":702,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00722\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-RS178(VA)\",\"name\":\"MD-RS178(VA) RS485分线器\",\"position\":\"\",\"purchaseDecimal\":24.300000,\"standard\":\"MD-RS178(VA)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":100.000000,\"currentStockMovePrice\":14256.000000000000,\"currentStockPrice\":14256.000000000000,\"currentUnitPrice\":142.560000,\"currentWeight\":0E-12,\"id\":701,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.0068900002\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-RS114(VB)\",\"name\":\"MD-RS114(VB) 基于RS485的MODBS TCPMODBS RTUASVII转换模块_(DZG)\",\"position\":\"\",\"purchaseDecimal\":142.560000,\"standard\":\"MD-RS114(VB)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":50.000000,\"currentStockMovePrice\":6642.000000000000,\"currentStockPrice\":6642.000000000000,\"currentUnitPrice\":132.840000,\"currentWeight\":0E-12,\"id\":700,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00686\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"TC160(VA)\",\"name\":\"TC160(VA) 通讯模块供电盒\",\"position\":\"\",\"purchaseDecimal\":132.840000,\"standard\":\"TC160(VA)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":76970.000000,\"currentStockMovePrice\":7697.000000000000,\"currentStockPrice\":7697.000000000000,\"currentUnitPrice\":0.100000,\"currentWeight\":0E-12,\"id\":699,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00654\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-4G111(VF)\",\"name\":\"MD-4G111(VF) 4G模块\",\"position\":\"\",\"purchaseDecimal\":0.100000,\"standard\":\"MD-4G111(VF)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":50.000000,\"currentStockMovePrice\":16200.000000000000,\"currentStockPrice\":16200.000000000000,\"currentUnitPrice\":324.000000,\"currentWeight\":0E-12,\"id\":698,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00562\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-4GVIII(VB)\",\"name\":\"MD-4GVIII(VB)\",\"position\":\"\",\"purchaseDecimal\":324.000000,\"standard\":\"MD-4GVIII(VB)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":500.000000,\"currentStockMovePrice\":64800.000000000000,\"currentStockPrice\":64800.000000000000,\"currentUnitPrice\":129.600000,\"currentWeight\":0E-12,\"id\":697,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00553\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MT-P109(VA)\",\"name\":\"MT-P109(VA)\",\"position\":\"\",\"purchaseDecimal\":129.600000,\"standard\":\"MT-P109(VA)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":54656.000000,\"currentStockMovePrice\":5465.600000000000,\"currentStockPrice\":5465.600000000000,\"currentUnitPrice\":0.100000,\"currentWeight\":0E-12,\"id\":696,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00547\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MT-3NSXL(VC)\",\"name\":\"MT-3NSXL(VC)RF通讯模块\",\"position\":\"\",\"purchaseDecimal\":0.100000,\"standard\":\"MT-3NSXL(VC)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":100.000000,\"currentStockMovePrice\":100375.200000000000,\"currentStockPrice\":100375.200000000000,\"currentUnitPrice\":1003.752000,\"currentWeight\":0E-12,\"id\":695,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00422\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-LR63(VB)\",\"name\":\"MD-LR63(VB)\",\"position\":\"\",\"purchaseDecimal\":1003.752000,\"standard\":\"MD-LR63(VB)\",\"unitName\":\"件\"}]}}'); +INSERT INTO `tbl_log` VALUES (9278, 63, '接口日志', '43.174.32.13/1.9.116.218', '2026-09-30 08:17:50', 0, 'MaterialController.getListWithStock(..)', NULL, 'GET /apis/material/getListWithStock', '{\"currentPage\":2,\"pageSize\":10,\"position\":\"\",\"materialParam\":\"\",\"zeroStock\":0,\"column\":\"createTime\",\"order\":\"desc\"}', '{\"code\":200,\"data\":{\"currentStockPrice\":107372523.170000000000,\"moveAvgPriceFlag\":false,\"total\":22,\"showStockPrice\":true,\"currentWeight\":0E-12,\"currentStock\":519203.000000,\"rows\":[{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":200.000000,\"currentStockMovePrice\":66938.400000000000,\"currentStockPrice\":66938.400000000000,\"currentUnitPrice\":334.692000,\"currentWeight\":0E-12,\"id\":694,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00421\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-LR62(VB)\",\"name\":\"MD-LR62(VB)\",\"position\":\"\",\"purchaseDecimal\":334.692000,\"standard\":\"MD-LR62(VB)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":34473.000000,\"currentStockMovePrice\":27476359.920000000000,\"currentStockPrice\":27476359.920000000000,\"currentUnitPrice\":797.040000,\"currentWeight\":0E-12,\"id\":693,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.3.T.0.00038\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DTSD1226-T46(VJ)\",\"name\":\"三相四线多功能电能表T46(VJ)\",\"position\":\"\",\"purchaseDecimal\":797.040000,\"standard\":\"DTSD1226-T46(VJ)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":500.000000,\"currentStockMovePrice\":275400.000000000000,\"currentStockPrice\":275400.000000000000,\"currentUnitPrice\":550.800000,\"currentWeight\":0E-12,\"id\":692,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.3.T.0.00036\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DTSD1226-T46(VH)\",\"name\":\"三相四线多功能电能表T46(VH)\",\"position\":\"\",\"purchaseDecimal\":550.800000,\"standard\":\"DTSD1226-T46(VH)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":14460.000000,\"currentStockMovePrice\":7027560.000000000000,\"currentStockPrice\":7027560.000000000000,\"currentUnitPrice\":486.000000,\"currentWeight\":0E-12,\"id\":691,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.3.T.0.00030\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DTSD1226-T46(VC)\",\"name\":\"三相四线多功能电能表T46(VC)\",\"position\":\"\",\"purchaseDecimal\":486.000000,\"standard\":\"DTSD1226-T46(VC)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":13070.000000,\"currentStockMovePrice\":6775488.000000000000,\"currentStockPrice\":6775488.000000000000,\"currentUnitPrice\":518.400000,\"currentWeight\":0E-12,\"id\":690,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.3.S.0.00030\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DTSD1226-SXVI(VK)\",\"name\":\"三相四线多功能电能表SXVI(VK)-新\",\"position\":\"\",\"purchaseDecimal\":518.400000,\"standard\":\"DTSD1226-SXVI(VK)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":120.000000,\"currentStockMovePrice\":82814.400000000000,\"currentStockPrice\":82814.400000000000,\"currentUnitPrice\":690.120000,\"currentWeight\":0E-12,\"id\":689,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.3.S.0.00026\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DTSD1226-SXVI(VH)\",\"name\":\"三相四线多功能电能表SXVI(VH)-新\",\"position\":\"\",\"purchaseDecimal\":690.120000,\"standard\":\"DTSD1226-SXVI(VH)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":400.000000,\"currentStockMovePrice\":245592.000000000000,\"currentStockPrice\":245592.000000000000,\"currentUnitPrice\":613.980000,\"currentWeight\":0E-12,\"id\":688,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.3.S.0.00020\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DTSD1226-SXVI(VG)\",\"name\":\"三相四线多功能电能表SXVI(VG)-新\",\"position\":\"\",\"purchaseDecimal\":613.980000,\"standard\":\"DTSD1226-SXVI(VG)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":48041.000000,\"currentStockMovePrice\":23153359.950000000000,\"currentStockPrice\":23153359.950000000000,\"currentUnitPrice\":481.950000,\"currentWeight\":0E-12,\"id\":687,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.3.C.2.00025\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DTSD1226-CXVI(VA)\",\"name\":\"三相四线多功能电能表CXVI(VA)-新\",\"position\":\"\",\"purchaseDecimal\":481.950000,\"standard\":\"DTSD1226-CXVI(VA)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":42490.000000,\"currentStockMovePrice\":17139616.200000000000,\"currentStockPrice\":17139616.200000000000,\"currentUnitPrice\":403.380000,\"currentWeight\":0E-12,\"id\":686,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.1.T.0.0004500005\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DDSD1226-T49(VH)\",\"name\":\"单相多功能电能表T49(VH)_(马来市场)\",\"position\":\"\",\"purchaseDecimal\":403.380000,\"standard\":\"DDSD1226-T49(VH)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":40000.000000,\"currentStockMovePrice\":8748000.000000000000,\"currentStockPrice\":8748000.000000000000,\"currentUnitPrice\":218.700000,\"currentWeight\":0E-12,\"id\":685,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.1.T.0.00032\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DDSD1226-T49(VB)\",\"name\":\"单相多功能电能表T49(VB)\",\"position\":\"\",\"purchaseDecimal\":218.700000,\"standard\":\"DDSD1226-T49(VB)\",\"unitName\":\"件\"}]}}'); +INSERT INTO `tbl_log` VALUES (9279, 63, '接口日志', '43.174.54.27/1.9.116.218', '2026-09-30 08:17:57', 0, 'DepotItemController.findDetailByDepotIdsAndMaterialId(..)', NULL, 'GET /apis/depotItem/findDetailByDepotIdsAndMaterialId', '{\"pageSize\":10,\"currentPage\":1,\"depotIds\":\"\",\"number\":\"\",\"beginTime\":\"\",\"endTime\":\"\",\"stockPriceFlag\":false,\"mId\":688}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"unitPrice\":613.980000,\"number\":\"SM2503280024\",\"materialName\":\"三相四线多功能电能表SXVI(VG)-新\",\"depotName\":\"半成品仓库\",\"allPrice\":245592.000000000000,\"basicNumber\":400.000000,\"type\":\"总部入库入库\",\"barCode\":\"C.3.S.0.00020\",\"operTime\":\"2025-03-28 00:00:00\"}],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9280, 63, '接口日志', '43.152.142.83/1.9.116.218', '2026-09-30 08:17:59', 0, 'DepotHeadController.getDetailByNumber(..)', NULL, 'GET /apis/depotHead/getDetailByNumber', '{\"number\":\"SM2503280024\"}', '{\"code\":200,\"data\":{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountNumber\":\"\",\"address\":\"\",\"backAmount\":0.000000,\"bankName\":\"\",\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"contacts\":\"\",\"createTime\":1743105600000,\"creator\":63,\"creatorName\":\"admin\",\"debt\":245592.000000,\"defaultNumber\":\"SM2503280024\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"depotHeadType\":\"总部入库入库\",\"discount\":100.000000,\"discountLastMoney\":245592.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"hasBackFlag\":false,\"id\":1276,\"lastDebt\":245592.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":400.000000,\"materialsList\":\"DTSD1226-SXVI(VG)\",\"number\":\"SM2503280024\",\"operTime\":1743105600000,\"operTimeStr\":\"2025-03-28 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"phoneNum\":\"\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"taxNum\":\"\",\"telephone\":\"\",\"tenantId\":63,\"totalPrice\":245592.000000,\"type\":\"入库\"}}'); +INSERT INTO `tbl_log` VALUES (9281, 63, '接口日志', '43.152.142.43/1.9.116.218', '2026-09-30 08:17:59', 0, 'DepotHeadController.getDetailByNumber(..)', NULL, 'GET /apis/depotHead/getDetailByNumber', '{\"number\":\"SM2503280024\"}', '{\"code\":200,\"data\":{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountNumber\":\"\",\"address\":\"\",\"backAmount\":0.000000,\"bankName\":\"\",\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"contacts\":\"\",\"createTime\":1743105600000,\"creator\":63,\"creatorName\":\"admin\",\"debt\":245592.000000,\"defaultNumber\":\"SM2503280024\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"depotHeadType\":\"总部入库入库\",\"discount\":100.000000,\"discountLastMoney\":245592.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"hasBackFlag\":false,\"id\":1276,\"lastDebt\":245592.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":400.000000,\"materialsList\":\"DTSD1226-SXVI(VG)\",\"number\":\"SM2503280024\",\"operTime\":1743105600000,\"operTimeStr\":\"2025-03-28 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"phoneNum\":\"\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"taxNum\":\"\",\"telephone\":\"\",\"tenantId\":63,\"totalPrice\":245592.000000,\"type\":\"入库\"}}'); +INSERT INTO `tbl_log` VALUES (9282, 63, '接口日志', '43.174.52.68/1.9.116.218', '2026-09-30 08:17:59', 0, 'AccountHeadController.getFinancialBillNoByBillId(..)', NULL, 'GET /apis/accountHead/getFinancialBillNoByBillId', '{\"billId\":1276}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (9283, 63, '接口日志', '43.174.53.14/1.9.116.218', '2026-09-30 08:17:59', 0, 'DepotItemController.getDetailList(..)', NULL, 'GET /apis/depotItem/getDetailList', '{\"headerId\":1276,\"mpList\":\"扩展1,扩展2,扩展3\",\"linkType\":\"basic\",\"isReadOnly\":\"1\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"standard\":\"DTSD1226-SXVI(VG)\",\"materialExtendId\":108,\"finishPurchaseNumber\":0,\"anotherDepotName\":\"\",\"color\":\"\",\"preNumber\":400.000000,\"depotId\":25,\"remark\":\"来源单据:SH2503280021\",\"purchaseDecimal\":613.980000,\"imgName\":\"\",\"operNumber\":400.000000,\"anotherDepotId\":\"\",\"basicNumber\":400.000000,\"taxLastMoney\":245592.000000,\"model\":\"DTSD1226-SXVI(VG)\",\"id\":1080,\"enableSerialNumber\":\"0\",\"stock\":400.000000,\"brand\":\"\",\"finishNumber\":0,\"expirationDate\":\"\",\"enableBatchNumber\":\"0\",\"unitPrice\":613.980000,\"op\":1,\"otherField1\":\"\",\"depotName\":\"半成品仓库\",\"mfrs\":\"浙江瑞银电子有限公司\",\"weight\":0,\"otherField3\":\"\",\"otherField2\":\"\",\"taxMoney\":0.000000,\"imgSmall\":\"\",\"barCode\":\"C.3.S.0.00020\",\"taxUnitPrice\":613.980000,\"taxRate\":0.000000,\"unit\":\"件\",\"allPrice\":245592.000000,\"name\":\"三相四线多功能电能表SXVI(VG)-新\",\"imgLarge\":\"\",\"position\":\"\"},{\"allPrice\":245592.000000,\"finishPurchaseNumber\":0,\"operNumber\":400.000000,\"taxLastMoney\":245592.000000,\"weight\":0,\"taxMoney\":0.000000,\"finishNumber\":0}]}}'); +INSERT INTO `tbl_log` VALUES (9284, 63, '接口日志', '43.152.142.86/1.9.116.218', '2026-09-30 08:17:59', 0, 'DepotHeadController.getBillListByLinkNumber(..)', NULL, 'GET /apis/depotHead/getBillListByLinkNumber', '{\"number\":\"SM2503280024\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (9285, 63, '接口日志', '43.152.142.31/1.9.116.218', '2026-09-30 08:17:59', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_print_flag\"}', '{\"code\":200,\"data\":{\"id\":4,\"platformKey\":\"bill_print_flag\",\"platformKeyInfo\":\"三联打印启用标记\",\"platformValue\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9286, 63, '接口日志', '43.174.32.19/1.9.116.218', '2026-09-30 08:17:59', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9287, NULL, '接口日志', '43.152.142.62/1.9.116.218', '2026-09-30 08:18:05', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (9288, NULL, '接口日志', '43.152.142.139/1.9.116.218', '2026-09-30 08:18:05', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (9289, 63, '接口日志', '43.152.157.88/1.9.116.218', '2026-09-30 08:18:05', 0, 'FunctionController.findMenuByPNumber(..)', NULL, 'POST /apis/function/findMenuByPNumber', '{\"jsonObject\":{\"userId\":63,\"pNumber\":0}}', '[{\"component\":\"/layouts/TabLayout\",\"icon\":\"home\",\"id\":0,\"text\":\"首页\",\"url\":\"/dashboard/analysis\",\"textEn\":\"Home\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/SaleOrderList\",\"icon\":\"profile\",\"id\":242,\"text\":\"销售订单\",\"url\":\"/bill/sale_order\",\"textEn\":\"Sales Orders\"},{\"component\":\"/bill/SaleOutList\",\"icon\":\"profile\",\"id\":41,\"text\":\"销售出库\",\"url\":\"/bill/sale_out\",\"textEn\":\"Sales Shipments\"},{\"component\":\"/bill/DeliveryPlanList\",\"icon\":\"profile\",\"id\":271,\"text\":\"交货计划管理\",\"url\":\"/bill/delivery_plan\",\"textEn\":\"Delivery Plans\"},{\"component\":\"/bill/SaleShipmentList\",\"icon\":\"car\",\"id\":268,\"text\":\"发货管理\",\"url\":\"/bill/sale_shipment\",\"textEn\":\"Shipment Management\"},{\"component\":\"/bill/SaleBackList\",\"icon\":\"profile\",\"id\":200,\"text\":\"销售退货\",\"url\":\"/bill/sale_back\",\"textEn\":\"Sales Returns\"},{\"component\":\"/bill/RetailOutList\",\"icon\":\"profile\",\"id\":210,\"text\":\"零售出库\",\"url\":\"/bill/retail_out\",\"textEn\":\"Retail Shipments\"},{\"component\":\"/bill/RetailBackList\",\"icon\":\"profile\",\"id\":211,\"text\":\"零售退货\",\"url\":\"/bill/retail_back\",\"textEn\":\"Retail Returns\"}],\"icon\":\"shopping-cart\",\"id\":38,\"text\":\"销售管理\",\"url\":\"/billB\",\"textEn\":\"Sales Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/PurchaseApplyList\",\"icon\":\"profile\",\"id\":261,\"text\":\"请购单\",\"url\":\"/bill/purchase_apply\",\"textEn\":\"Purchase Requisitions\"},{\"component\":\"/bill/PurchaseOrderList\",\"icon\":\"profile\",\"id\":241,\"text\":\"采购订单\",\"url\":\"/bill/purchase_order\",\"textEn\":\"Purchase Orders\"},{\"component\":\"/bill/PurchaseInList\",\"icon\":\"profile\",\"id\":33,\"text\":\"采购入库\",\"url\":\"/bill/purchase_in\",\"textEn\":\"Purchase Receipts\"},{\"component\":\"/bill/PurchaseBackList\",\"icon\":\"profile\",\"id\":199,\"text\":\"采购退货\",\"url\":\"/bill/purchase_back\",\"textEn\":\"Purchase Returns\"}],\"icon\":\"retweet\",\"id\":32,\"text\":\"采购管理\",\"url\":\"/bill\",\"textEn\":\"Purchase Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/production/PackBomList\",\"icon\":\"profile\",\"id\":263,\"text\":\"生产方案\",\"url\":\"/production/pack_bom\",\"textEn\":\"Production BOMs\"},{\"component\":\"/production/OrderList\",\"icon\":\"profile\",\"id\":264,\"text\":\"生产工单\",\"url\":\"/production/order\",\"textEn\":\"Production Orders\"},{\"component\":\"/production/RequisitionList\",\"icon\":\"profile\",\"id\":265,\"text\":\"领料管理\",\"url\":\"/production/requisition\",\"textEn\":\"Material Requisitions\"},{\"component\":\"/production/ReportList\",\"icon\":\"profile\",\"id\":266,\"text\":\"完工报工\",\"url\":\"/production/report\",\"textEn\":\"Production Reports\"}],\"icon\":\"cluster\",\"id\":262,\"text\":\"生产管理\",\"url\":\"/production\",\"textEn\":\"Production Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/MaterialStock\",\"icon\":\"profile\",\"id\":246,\"text\":\"商品库存\",\"url\":\"/report/material_stock\",\"textEn\":\"Product Inventory\"},{\"component\":\"/bill/OtherInList\",\"icon\":\"profile\",\"id\":201,\"text\":\"其它入库\",\"url\":\"/bill/other_in\",\"textEn\":\"Other Receipts\"},{\"component\":\"/bill/OtherOutList\",\"icon\":\"profile\",\"id\":202,\"text\":\"其它出库\",\"url\":\"/bill/other_out\",\"textEn\":\"Other Shipments\"},{\"component\":\"/bill/HeadquartersInList\",\"icon\":\"profile\",\"id\":270,\"text\":\"总部入库\",\"url\":\"/bill/headquarters_in\",\"textEn\":\"Headquarters Receipts\"}],\"icon\":\"hdd\",\"id\":239,\"text\":\"仓库管理\",\"url\":\"/billD\",\"textEn\":\"Warehouse Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/financial/MoneyInList\",\"icon\":\"profile\",\"id\":204,\"text\":\"收款单\",\"url\":\"/financial/money_in\",\"textEn\":\"Receipt Vouchers\"},{\"component\":\"/financial/MoneyOutList\",\"icon\":\"profile\",\"id\":205,\"text\":\"付款单\",\"url\":\"/financial/money_out\",\"textEn\":\"Payment Vouchers\"}],\"icon\":\"money-collect\",\"id\":44,\"text\":\"财务管理\",\"url\":\"/financial\",\"textEn\":\"Finance Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/asset/AssetDashboard\",\"icon\":\"dashboard\",\"id\":276,\"text\":\"资产汇总\",\"url\":\"/asset\",\"textEn\":\"Asset Overview\"},{\"component\":\"/asset/AssetList\",\"icon\":\"profile\",\"id\":273,\"text\":\"资产台账\",\"url\":\"/asset/ledger\",\"textEn\":\"Asset Ledger\"},{\"component\":\"/asset/DeviceList\",\"icon\":\"tool\",\"id\":274,\"text\":\"设备台账\",\"url\":\"/asset/device\",\"textEn\":\"Device Ledger\"},{\"component\":\"/asset/InventoryList\",\"icon\":\"scan\",\"id\":275,\"text\":\"资产盘点\",\"url\":\"/asset/inventory\",\"textEn\":\"Asset Inventory\"}],\"icon\":\"bank\",\"id\":272,\"text\":\"资产管理\",\"url\":\"/assetManagement\",\"textEn\":\"Asset Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/material/MaterialCategoryList\",\"icon\":\"profile\",\"id\":22,\"text\":\"商品类别\",\"url\":\"/material/material_category\",\"textEn\":\"Product Categories\"},{\"component\":\"/material/MaterialList\",\"icon\":\"profile\",\"id\":23,\"text\":\"商品信息\",\"url\":\"/material/material\",\"textEn\":\"Product Information\"},{\"component\":\"/system/UnitList\",\"icon\":\"profile\",\"id\":220,\"text\":\"多单位\",\"url\":\"/system/unit\",\"textEn\":\"Multiple Units\"},{\"component\":\"/material/MaterialAttributeList\",\"icon\":\"profile\",\"id\":247,\"text\":\"多属性\",\"url\":\"/material/material_attribute\",\"textEn\":\"Product Attributes\"}],\"icon\":\"shopping\",\"id\":21,\"text\":\"商品管理\",\"url\":\"/material\",\"textEn\":\"Product Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/AccountReport\",\"icon\":\"profile\",\"id\":207,\"text\":\"账户统计\",\"url\":\"/report/account_report\",\"textEn\":\"Account Summary\"},{\"component\":\"/report/RetailOutReport\",\"icon\":\"profile\",\"id\":259,\"text\":\"零售统计\",\"url\":\"/report/retail_out_report\",\"textEn\":\"Retail Summary\"},{\"component\":\"/report/BuyInReport\",\"icon\":\"profile\",\"id\":208,\"text\":\"采购统计\",\"url\":\"/report/buy_in_report\",\"textEn\":\"Purchase Summary\"},{\"component\":\"/report/SaleOutReport\",\"icon\":\"profile\",\"id\":209,\"text\":\"销售统计\",\"url\":\"/report/sale_out_report\",\"textEn\":\"Sales Summary\"},{\"component\":\"/report/InDetail\",\"icon\":\"profile\",\"id\":226,\"text\":\"入库明细\",\"url\":\"/report/in_detail\",\"textEn\":\"Inbound Details\"},{\"component\":\"/report/OutDetail\",\"icon\":\"profile\",\"id\":227,\"text\":\"出库明细\",\"url\":\"/report/out_detail\",\"textEn\":\"Outbound Details\"},{\"component\":\"/report/InMaterialCount\",\"icon\":\"profile\",\"id\":228,\"text\":\"入库汇总\",\"url\":\"/report/in_material_count\",\"textEn\":\"Inbound Summary\"},{\"component\":\"/report/OutMaterialCount\",\"icon\":\"profile\",\"id\":229,\"text\":\"出库汇总\",\"url\":\"/report/out_material_count\",\"textEn\":\"Outbound Summary\"},{\"component\":\"/report/InOutStockReport\",\"icon\":\"profile\",\"id\":59,\"text\":\"进销存统计\",\"url\":\"/report/in_out_stock_report\",\"textEn\":\"Inventory Transaction Summary\"},{\"component\":\"/report/CustomerAccount\",\"icon\":\"profile\",\"id\":235,\"text\":\"客户对账\",\"url\":\"/report/customer_account\",\"textEn\":\"Customer Reconciliation\"},{\"component\":\"/report/VendorAccount\",\"icon\":\"profile\",\"id\":237,\"text\":\"供应商对账\",\"url\":\"/report/vendor_account\",\"textEn\":\"Supplier Reconciliation\"},{\"component\":\"/report/StockWarningReport\",\"icon\":\"profile\",\"id\":244,\"text\":\"库存预警\",\"url\":\"/report/stock_warning_report\",\"textEn\":\"Stock Alerts\"}],\"icon\":\"pie-chart\",\"id\":198,\"text\":\"报表查询\",\"url\":\"/report\",\"textEn\":\"Reports\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/VendorList\",\"icon\":\"profile\",\"id\":25,\"text\":\"供应商信息\",\"url\":\"/system/vendor\",\"textEn\":\"Suppliers\"},{\"component\":\"/system/CustomerList\",\"icon\":\"profile\",\"id\":217,\"text\":\"客户信息\",\"url\":\"/system/customer\",\"textEn\":\"Customers\"},{\"component\":\"/system/MemberList\",\"icon\":\"profile\",\"id\":218,\"text\":\"会员信息\",\"url\":\"/system/member\",\"textEn\":\"Members\"},{\"component\":\"/system/CustomerCategoryList\",\"icon\":\"bars\",\"id\":267,\"text\":\"客户分类\",\"url\":\"/system/customerCategory\",\"textEn\":\"Customer Categories\"},{\"component\":\"/system/DepotList\",\"icon\":\"profile\",\"id\":26,\"text\":\"仓库信息\",\"url\":\"/system/depot\",\"textEn\":\"Warehouses\"},{\"component\":\"/system/InOutItemList\",\"icon\":\"profile\",\"id\":194,\"text\":\"收支项目\",\"url\":\"/system/in_out_item\",\"textEn\":\"Income and Expense Items\"},{\"component\":\"/system/AccountList\",\"icon\":\"profile\",\"id\":195,\"text\":\"结算账户\",\"url\":\"/system/account\",\"textEn\":\"Settlement Accounts\"},{\"component\":\"/system/PersonList\",\"icon\":\"profile\",\"id\":31,\"text\":\"操作人员管理\",\"url\":\"/system/person\",\"textEn\":\"Operators\"}],\"icon\":\"appstore\",\"id\":24,\"text\":\"基础资料\",\"url\":\"/systemA\",\"textEn\":\"Master Data\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/RoleList\",\"icon\":\"profile\",\"id\":13,\"text\":\"角色管理\",\"url\":\"/system/role\",\"textEn\":\"Role Management\"},{\"component\":\"/system/UserList\",\"icon\":\"profile\",\"id\":14,\"text\":\"用户管理\",\"url\":\"/system/user\",\"textEn\":\"User Management\"},{\"component\":\"/system/OrganizationList\",\"icon\":\"profile\",\"id\":243,\"text\":\"部门管理\",\"url\":\"/system/organization\",\"textEn\":\"Department Management\"},{\"component\":\"/system/LogList\",\"icon\":\"profile\",\"id\":15,\"text\":\"日志管理\",\"url\":\"/system/log\",\"textEn\":\"Log Management\"},{\"component\":\"/material/MaterialPropertyList\",\"icon\":\"profile\",\"id\":236,\"text\":\"商品属性\",\"url\":\"/material/material_property\",\"textEn\":\"Product Properties\"},{\"component\":\"/system/SystemConfigList\",\"icon\":\"profile\",\"id\":234,\"text\":\"系统配置\",\"url\":\"/system/system_config\",\"textEn\":\"System Configuration\"},{\"component\":\"/system/FunctionList\",\"icon\":\"profile\",\"id\":16,\"text\":\"菜单管理\",\"url\":\"/system/function\",\"textEn\":\"Resource Menus\"},{\"component\":\"/system/PluginList\",\"icon\":\"profile\",\"id\":245,\"text\":\"插件管理\",\"url\":\"/system/plugin\",\"textEn\":\"Plugin Management\"},{\"component\":\"/system/DictList\",\"icon\":\"profile\",\"id\":260,\"text\":\"字典管理\",\"url\":\"/system/dict\",\"textEn\":\"Dictionary Management\"},{\"component\":\"/system/PlatformConfigList\",\"icon\":\"profile\",\"id\":258,\"text\":\"平台配置\",\"url\":\"/system/platform_config\",\"textEn\":\"Platform Configuration\"}],\"icon\":\"setting\",\"id\":1,\"text\":\"系统管理\",\"url\":\"/system\",\"textEn\":\"System Management\"}]'); +INSERT INTO `tbl_log` VALUES (9290, 63, '接口日志', '43.152.142.33/1.9.116.218', '2026-09-30 08:18:05', 0, 'UserController.getUserBtnByCurrentUser(..)', NULL, 'GET /apis/user/getUserBtnByCurrentUser', '{}', '{\"code\":200,\"data\":{\"userBtn\":[{\"btnStr\":\"8,1\",\"url\":\"/system/role\"},{\"btnStr\":\"1\",\"url\":\"/system/user\"},{\"btnStr\":\"1\",\"url\":\"/system/organization\"},{\"btnStr\":\"1\",\"url\":\"/material/material_property\"},{\"btnStr\":\"1\",\"url\":\"/system/system_config\"},{\"btnStr\":\"1\",\"url\":\"/system/function\"},{\"btnStr\":\"1\",\"url\":\"/system/plugin\"},{\"btnStr\":\"1\",\"url\":\"/material/material_category\"},{\"btnStr\":\"1,3\",\"url\":\"/material/material\"},{\"btnStr\":\"1\",\"url\":\"/system/unit\"},{\"btnStr\":\"1\",\"url\":\"/material/material_attribute\"},{\"btnStr\":\"1,3\",\"url\":\"/system/vendor\"},{\"btnStr\":\"1,3\",\"url\":\"/system/customer\"},{\"btnStr\":\"1,3\",\"url\":\"/system/member\"},{\"btnStr\":\"1\",\"url\":\"/system/depot\"},{\"btnStr\":\"1\",\"url\":\"/system/in_out_item\"},{\"btnStr\":\"1\",\"url\":\"/system/account\"},{\"btnStr\":\"1\",\"url\":\"/system/person\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_apply\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_out\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/delivery_plan\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/sale_shipment\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_out\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/order\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/requisition\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/report\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/giro\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/advance_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/allocation_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/assemble\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/headquarters_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/disassemble\"}]}}'); +INSERT INTO `tbl_log` VALUES (9291, 63, '接口日志', '43.152.142.118/1.9.116.218', '2026-09-30 08:18:06', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9292, 63, '接口日志', '43.152.142.40/1.9.116.218', '2026-09-30 08:18:06', 0, 'MsgController.getList(..)', NULL, 'GET /apis/msg/list', '{\"search\":\"{\\\"name\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9293, 63, '接口日志', '43.174.51.49/1.9.116.218', '2026-09-30 08:18:06', 0, 'MaterialController.getListWithStock(..)', NULL, 'GET /apis/material/getListWithStock', '{\"currentPage\":1,\"pageSize\":10,\"position\":\"\",\"materialParam\":\"\",\"zeroStock\":0,\"column\":\"createTime\",\"order\":\"desc\"}', '{\"code\":200,\"data\":{\"currentStockPrice\":107372523.170000000000,\"moveAvgPriceFlag\":false,\"total\":22,\"showStockPrice\":true,\"currentWeight\":0E-12,\"currentStock\":519203.000000,\"rows\":[{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"成品\",\"color\":\"\",\"currentStock\":7223.000000,\"currentStockMovePrice\":2293302.500000000000,\"currentStockPrice\":2293302.500000000000,\"currentUnitPrice\":317.500000,\"currentWeight\":0E-12,\"id\":704,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"3PH-APEC3-WC\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"3PH APEC3-WC\",\"name\":\"3PH APEC3-WC\",\"position\":\"\",\"purchaseDecimal\":317.500000,\"standard\":\"3PH APEC3-WC\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"成品\",\"color\":\"\",\"currentStock\":52400.000000,\"currentStockMovePrice\":3117800.000000000000,\"currentStockPrice\":3117800.000000000000,\"currentUnitPrice\":59.500000,\"currentWeight\":0E-12,\"id\":703,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"1PH-WS79\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"1PH WS79\",\"name\":\"1PH WS79\",\"position\":\"\",\"purchaseDecimal\":59.500000,\"standard\":\"1PH WS79\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":1000.000000,\"currentStockMovePrice\":24300.000000000000,\"currentStockPrice\":24300.000000000000,\"currentUnitPrice\":24.300000,\"currentWeight\":0E-12,\"id\":702,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00722\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-RS178(VA)\",\"name\":\"MD-RS178(VA) RS485分线器\",\"position\":\"\",\"purchaseDecimal\":24.300000,\"standard\":\"MD-RS178(VA)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":100.000000,\"currentStockMovePrice\":14256.000000000000,\"currentStockPrice\":14256.000000000000,\"currentUnitPrice\":142.560000,\"currentWeight\":0E-12,\"id\":701,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.0068900002\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-RS114(VB)\",\"name\":\"MD-RS114(VB) 基于RS485的MODBS TCPMODBS RTUASVII转换模块_(DZG)\",\"position\":\"\",\"purchaseDecimal\":142.560000,\"standard\":\"MD-RS114(VB)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":50.000000,\"currentStockMovePrice\":6642.000000000000,\"currentStockPrice\":6642.000000000000,\"currentUnitPrice\":132.840000,\"currentWeight\":0E-12,\"id\":700,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00686\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"TC160(VA)\",\"name\":\"TC160(VA) 通讯模块供电盒\",\"position\":\"\",\"purchaseDecimal\":132.840000,\"standard\":\"TC160(VA)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":76970.000000,\"currentStockMovePrice\":7697.000000000000,\"currentStockPrice\":7697.000000000000,\"currentUnitPrice\":0.100000,\"currentWeight\":0E-12,\"id\":699,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00654\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-4G111(VF)\",\"name\":\"MD-4G111(VF) 4G模块\",\"position\":\"\",\"purchaseDecimal\":0.100000,\"standard\":\"MD-4G111(VF)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":50.000000,\"currentStockMovePrice\":16200.000000000000,\"currentStockPrice\":16200.000000000000,\"currentUnitPrice\":324.000000,\"currentWeight\":0E-12,\"id\":698,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00562\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-4GVIII(VB)\",\"name\":\"MD-4GVIII(VB)\",\"position\":\"\",\"purchaseDecimal\":324.000000,\"standard\":\"MD-4GVIII(VB)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":500.000000,\"currentStockMovePrice\":64800.000000000000,\"currentStockPrice\":64800.000000000000,\"currentUnitPrice\":129.600000,\"currentWeight\":0E-12,\"id\":697,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00553\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MT-P109(VA)\",\"name\":\"MT-P109(VA)\",\"position\":\"\",\"purchaseDecimal\":129.600000,\"standard\":\"MT-P109(VA)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":54656.000000,\"currentStockMovePrice\":5465.600000000000,\"currentStockPrice\":5465.600000000000,\"currentUnitPrice\":0.100000,\"currentWeight\":0E-12,\"id\":696,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00547\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MT-3NSXL(VC)\",\"name\":\"MT-3NSXL(VC)RF通讯模块\",\"position\":\"\",\"purchaseDecimal\":0.100000,\"standard\":\"MT-3NSXL(VC)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":100.000000,\"currentStockMovePrice\":100375.200000000000,\"currentStockPrice\":100375.200000000000,\"currentUnitPrice\":1003.752000,\"currentWeight\":0E-12,\"id\":695,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00422\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-LR63(VB)\",\"name\":\"MD-LR63(VB)\",\"position\":\"\",\"purchaseDecimal\":1003.752000,\"standard\":\"MD-LR63(VB)\",\"unitName\":\"件\"}]}}'); +INSERT INTO `tbl_log` VALUES (9294, 63, '接口日志', '43.152.142.68/1.9.116.218', '2026-09-30 08:18:06', 0, 'DepotItemController.findDetailByDepotIdsAndMaterialId(..)', NULL, 'GET /apis/depotItem/findDetailByDepotIdsAndMaterialId', '{\"pageSize\":10,\"currentPage\":1,\"depotIds\":\"\",\"number\":\"\",\"beginTime\":\"\",\"endTime\":\"\",\"stockPriceFlag\":false}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9295, 63, '接口日志', '43.152.142.110/1.9.116.218', '2026-09-30 08:18:06', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (9296, 63, '接口日志', '43.152.142.108/1.9.116.218', '2026-09-30 08:18:06', 0, 'MsgController.getMsgByStatus(..)', NULL, 'GET /apis/msg/getMsgByStatus', '{\"status\":\"1\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (9297, 63, '接口日志', '43.174.32.33/1.9.116.218', '2026-09-30 08:18:06', 0, 'DepotItemController.findDetailByDepotIdsAndMaterialId(..)', NULL, 'GET /apis/depotItem/findDetailByDepotIdsAndMaterialId', '{\"pageSize\":10,\"currentPage\":1,\"depotIds\":\"\",\"number\":\"\",\"beginTime\":\"\",\"endTime\":\"\",\"stockPriceFlag\":true}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9298, 63, '接口日志', '43.152.142.142/1.9.116.218', '2026-09-30 08:18:09', 0, 'MaterialController.getListWithStock(..)', NULL, 'GET /apis/material/getListWithStock', '{\"currentPage\":2,\"pageSize\":10,\"position\":\"\",\"materialParam\":\"\",\"zeroStock\":0,\"column\":\"createTime\",\"order\":\"desc\"}', '{\"code\":200,\"data\":{\"currentStockPrice\":107372523.170000000000,\"moveAvgPriceFlag\":false,\"total\":22,\"showStockPrice\":true,\"currentWeight\":0E-12,\"currentStock\":519203.000000,\"rows\":[{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":200.000000,\"currentStockMovePrice\":66938.400000000000,\"currentStockPrice\":66938.400000000000,\"currentUnitPrice\":334.692000,\"currentWeight\":0E-12,\"id\":694,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00421\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-LR62(VB)\",\"name\":\"MD-LR62(VB)\",\"position\":\"\",\"purchaseDecimal\":334.692000,\"standard\":\"MD-LR62(VB)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":34473.000000,\"currentStockMovePrice\":27476359.920000000000,\"currentStockPrice\":27476359.920000000000,\"currentUnitPrice\":797.040000,\"currentWeight\":0E-12,\"id\":693,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.3.T.0.00038\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DTSD1226-T46(VJ)\",\"name\":\"三相四线多功能电能表T46(VJ)\",\"position\":\"\",\"purchaseDecimal\":797.040000,\"standard\":\"DTSD1226-T46(VJ)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":500.000000,\"currentStockMovePrice\":275400.000000000000,\"currentStockPrice\":275400.000000000000,\"currentUnitPrice\":550.800000,\"currentWeight\":0E-12,\"id\":692,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.3.T.0.00036\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DTSD1226-T46(VH)\",\"name\":\"三相四线多功能电能表T46(VH)\",\"position\":\"\",\"purchaseDecimal\":550.800000,\"standard\":\"DTSD1226-T46(VH)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":14460.000000,\"currentStockMovePrice\":7027560.000000000000,\"currentStockPrice\":7027560.000000000000,\"currentUnitPrice\":486.000000,\"currentWeight\":0E-12,\"id\":691,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.3.T.0.00030\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DTSD1226-T46(VC)\",\"name\":\"三相四线多功能电能表T46(VC)\",\"position\":\"\",\"purchaseDecimal\":486.000000,\"standard\":\"DTSD1226-T46(VC)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":13070.000000,\"currentStockMovePrice\":6775488.000000000000,\"currentStockPrice\":6775488.000000000000,\"currentUnitPrice\":518.400000,\"currentWeight\":0E-12,\"id\":690,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.3.S.0.00030\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DTSD1226-SXVI(VK)\",\"name\":\"三相四线多功能电能表SXVI(VK)-新\",\"position\":\"\",\"purchaseDecimal\":518.400000,\"standard\":\"DTSD1226-SXVI(VK)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":120.000000,\"currentStockMovePrice\":82814.400000000000,\"currentStockPrice\":82814.400000000000,\"currentUnitPrice\":690.120000,\"currentWeight\":0E-12,\"id\":689,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.3.S.0.00026\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DTSD1226-SXVI(VH)\",\"name\":\"三相四线多功能电能表SXVI(VH)-新\",\"position\":\"\",\"purchaseDecimal\":690.120000,\"standard\":\"DTSD1226-SXVI(VH)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":400.000000,\"currentStockMovePrice\":245592.000000000000,\"currentStockPrice\":245592.000000000000,\"currentUnitPrice\":613.980000,\"currentWeight\":0E-12,\"id\":688,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.3.S.0.00020\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DTSD1226-SXVI(VG)\",\"name\":\"三相四线多功能电能表SXVI(VG)-新\",\"position\":\"\",\"purchaseDecimal\":613.980000,\"standard\":\"DTSD1226-SXVI(VG)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":48041.000000,\"currentStockMovePrice\":23153359.950000000000,\"currentStockPrice\":23153359.950000000000,\"currentUnitPrice\":481.950000,\"currentWeight\":0E-12,\"id\":687,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.3.C.2.00025\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DTSD1226-CXVI(VA)\",\"name\":\"三相四线多功能电能表CXVI(VA)-新\",\"position\":\"\",\"purchaseDecimal\":481.950000,\"standard\":\"DTSD1226-CXVI(VA)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":42490.000000,\"currentStockMovePrice\":17139616.200000000000,\"currentStockPrice\":17139616.200000000000,\"currentUnitPrice\":403.380000,\"currentWeight\":0E-12,\"id\":686,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.1.T.0.0004500005\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DDSD1226-T49(VH)\",\"name\":\"单相多功能电能表T49(VH)_(马来市场)\",\"position\":\"\",\"purchaseDecimal\":403.380000,\"standard\":\"DDSD1226-T49(VH)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":40000.000000,\"currentStockMovePrice\":8748000.000000000000,\"currentStockPrice\":8748000.000000000000,\"currentUnitPrice\":218.700000,\"currentWeight\":0E-12,\"id\":685,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.1.T.0.00032\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DDSD1226-T49(VB)\",\"name\":\"单相多功能电能表T49(VB)\",\"position\":\"\",\"purchaseDecimal\":218.700000,\"standard\":\"DDSD1226-T49(VB)\",\"unitName\":\"件\"}]}}'); +INSERT INTO `tbl_log` VALUES (9299, 63, '接口日志', '43.152.142.132/1.9.116.218', '2026-09-30 08:18:13', 0, 'MaterialController.getMaterialDepotStock(..)', NULL, 'GET /apis/material/getMaterialDepotStock', '{\"depotIds\":\"\",\"mId\":689}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"allPrice\":82814.400000000000,\"currentNumber\":120.000000,\"currentUnitPrice\":690.120000,\"depotId\":25,\"depotName\":\"半成品仓库\",\"id\":139,\"materialId\":689,\"purchaseDecimal\":690.120000,\"unitPrice\":690.120000}]}}'); +INSERT INTO `tbl_log` VALUES (9300, 63, '接口日志', '43.174.53.19/1.9.116.218', '2026-09-30 08:18:27', 0, 'MaterialController.getListWithStock(..)', NULL, 'GET /apis/material/getListWithStock', '{\"currentPage\":3,\"pageSize\":10,\"position\":\"\",\"materialParam\":\"\",\"zeroStock\":0,\"column\":\"createTime\",\"order\":\"desc\"}', '{\"code\":200,\"data\":{\"currentStockPrice\":107372523.170000000000,\"moveAvgPriceFlag\":false,\"total\":22,\"showStockPrice\":true,\"currentWeight\":0E-12,\"currentStock\":519203.000000,\"rows\":[{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":112400.000000,\"currentStockMovePrice\":9013356.000000000000,\"currentStockPrice\":9013356.000000000000,\"currentUnitPrice\":80.190000,\"currentWeight\":0E-12,\"id\":684,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.1.C.2.00023\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DDS1226-C8(VG)\",\"name\":\"单相有功电能表C8(VG)\",\"position\":\"\",\"purchaseDecimal\":80.190000,\"standard\":\"DDS1226-C8(VG)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":20000.000000,\"currentStockMovePrice\":1717200.000000000000,\"currentStockPrice\":1717200.000000000000,\"currentUnitPrice\":85.860000,\"currentWeight\":0E-12,\"id\":683,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.1.C.2.00021\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DDS1226-C8(VD)\",\"name\":\"单相有功电能表C8(VD)\",\"position\":\"\",\"purchaseDecimal\":85.860000,\"standard\":\"DDS1226-C8(VD)\",\"unitName\":\"件\"}]}}'); +INSERT INTO `tbl_log` VALUES (9301, 63, '接口日志', '43.152.157.88/1.9.116.218', '2026-09-30 08:18:29', 0, 'SupplierController.findBySelectSup(..)', NULL, 'POST /apis/supplier/findBySelect_sup', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司\",\"id\":89}]'); +INSERT INTO `tbl_log` VALUES (9302, 63, '接口日志', '43.152.142.132/1.9.116.218', '2026-09-30 08:18:29', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (9303, 63, '接口日志', '43.174.54.50/1.9.116.218', '2026-09-30 08:18:29', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9304, 63, '接口日志', '43.174.53.14/1.9.116.218', '2026-09-30 08:18:29', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9305, 63, '接口日志', '43.152.142.83/1.9.116.218', '2026-09-30 08:18:29', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"入库\\\",\\\"subType\\\":\\\"其它\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-30\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"createTimeRange\\\":[\\\"2026-06-29T16:00:00.000Z\\\",\\\"2026-09-29T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9306, 63, '接口日志', '43.152.142.86/1.9.116.218', '2026-09-30 08:18:29', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (9307, 63, '接口日志', '43.152.142.68/1.9.116.218', '2026-09-30 08:18:29', 0, 'DepotHeadController.waitBillCount(..)', NULL, 'GET /apis/depotHead/waitBillCount', '{\"search\":\"{\\\"type\\\":\\\"入库\\\",\\\"subType\\\":\\\"采购,销售退货\\\",\\\"status\\\":\\\"1,3\\\"}\"}', '{\"code\":200,\"data\":{\"total\":47,\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9308, 63, '接口日志', '43.152.157.88/1.9.116.218', '2026-09-30 08:18:35', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (9309, 63, '接口日志', '43.174.52.68/1.9.116.218', '2026-09-30 08:18:35', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9310, 63, '接口日志', '43.174.32.13/1.9.116.218', '2026-09-30 08:18:35', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (9311, 63, '接口日志', '43.174.51.49/1.9.116.218', '2026-09-30 08:18:35', 0, 'DepotHeadController.waitBillCount(..)', NULL, 'GET /apis/depotHead/waitBillCount', '{\"search\":\"{\\\"type\\\":\\\"出库\\\",\\\"subType\\\":\\\"销售,采购退货\\\",\\\"status\\\":\\\"1,3\\\"}\"}', '{\"code\":200,\"data\":{\"total\":167,\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9312, 63, '接口日志', '43.152.142.108/1.9.116.218', '2026-09-30 08:18:35', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"出库\\\",\\\"subType\\\":\\\"其它\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-30\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"createTimeRange\\\":[\\\"2026-06-29T16:00:00.000Z\\\",\\\"2026-09-29T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9313, 63, '接口日志', '43.152.142.142/1.9.116.218', '2026-09-30 08:18:35', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (9314, 63, '接口日志', '43.152.142.43/1.9.116.218', '2026-09-30 08:18:35', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9315, 63, '接口日志', '43.152.157.88/1.9.116.218', '2026-09-30 08:18:37', 0, 'SupplierController.findBySelectSup(..)', NULL, 'POST /apis/supplier/findBySelect_sup', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司\",\"id\":89}]'); +INSERT INTO `tbl_log` VALUES (9316, 63, '接口日志', '43.174.32.19/1.9.116.218', '2026-09-30 08:18:37', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (9317, 63, '接口日志', '43.174.32.33/1.9.116.218', '2026-09-30 08:18:37', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (9318, 63, '接口日志', '43.152.142.31/1.9.116.218', '2026-09-30 08:18:37', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9319, 63, '接口日志', '43.152.142.62/1.9.116.218', '2026-09-30 08:18:37', 0, 'DepotHeadController.waitBillCount(..)', NULL, 'GET /apis/depotHead/waitBillCount', '{\"search\":\"{\\\"type\\\":\\\"入库\\\",\\\"subType\\\":\\\"采购,销售退货\\\",\\\"status\\\":\\\"1,3\\\"}\"}', '{\"code\":200,\"data\":{\"total\":47,\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9320, 63, '接口日志', '43.152.142.40/1.9.116.218', '2026-09-30 08:18:37', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9321, 63, '接口日志', '43.152.142.33/1.9.116.218', '2026-09-30 08:18:37', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"入库\\\",\\\"subType\\\":\\\"总部入库\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-30\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"createTimeRange\\\":[\\\"2026-06-29T16:00:00.000Z\\\",\\\"2026-09-29T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":41,\"rows\":[{\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789718802000,\"creator\":63,\"debt\":595000.000000,\"defaultNumber\":\"SM2609180001\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discountLastMoney\":595000.000000,\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1721,\"lastDebt\":595000.000000,\"materialCount\":10000.000000,\"materialsList\":\"1PH WS79\",\"number\":\"SM2609180001\",\"operTime\":1789733163000,\"operTimeStr\":\"2026-09-18 16:06:03\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"totalPrice\":595000.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1786046400000,\"creator\":63,\"debt\":183.600000,\"defaultNumber\":\"SM2608070007\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":183.600000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1423,\"lastDebt\":183.600000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":1836.000000,\"materialsList\":\"MT-3NSXL(VC)\",\"number\":\"SM2608070007\",\"operTime\":1786046400000,\"operTimeStr\":\"2026-08-07 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":183.600000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1786046400000,\"creator\":63,\"debt\":2077650.000000,\"defaultNumber\":\"SM2608070002\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":2077650.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1422,\"lastDebt\":2077650.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":9500.000000,\"materialsList\":\"DDSD1226-T49(VB)\",\"number\":\"SM2608070002\",\"operTime\":1786046400000,\"operTimeStr\":\"2026-08-07 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":2077650.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1785960000000,\"creator\":63,\"debt\":91854.000000,\"defaultNumber\":\"SM2608060005\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":91854.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1421,\"lastDebt\":91854.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":420.000000,\"materialsList\":\"DDSD1226-T49(VB)\",\"number\":\"SM2608060005\",\"operTime\":1785960000000,\"operTimeStr\":\"2026-08-06 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":91854.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1785960000000,\"creator\":63,\"debt\":816.000000,\"defaultNumber\":\"SM2608060004\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":816.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1420,\"lastDebt\":816.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":8160.000000,\"materialsList\":\"MT-3NSXL(VC)\",\"number\":\"SM2608060004\",\"operTime\":1785960000000,\"operTimeStr\":\"2026-08-06 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":816.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1784836800000,\"creator\":63,\"debt\":91854.000000,\"defaultNumber\":\"SM2607240005\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":91854.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1419,\"lastDebt\":91854.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":420.000000,\"materialsList\":\"DDSD1226-T49(VB)\",\"number\":\"SM2607240005\",\"operTime\":1784836800000,\"operTimeStr\":\"2026-07-24 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":91854.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1784750400000,\"creator\":63,\"debt\":551124.000000,\"defaultNumber\":\"SM2607230004\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":551124.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1418,\"lastDebt\":551124.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":2520.000000,\"materialsList\":\"DDSD1226-T49(VB)\",\"number\":\"SM2607230004\",\"operTime\":1784750400000,\"operTimeStr\":\"2026-07-23 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":551124.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1784750400000,\"creator\":63,\"debt\":1285956.000000,\"defaultNumber\":\"SM2607230002\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":1285956.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1417,\"lastDebt\":1285956.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":5880.000000,\"materialsList\":\"DDSD1226-T49(VB)\",\"number\":\"SM2607230002\",\"operTime\":1784750400000,\"operTimeStr\":\"2026-07-23 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":1285956.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1784664000000,\"creator\":63,\"debt\":1020.000000,\"defaultNumber\":\"SM2607220006\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":1020.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1416,\"lastDebt\":1020.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":10200.000000,\"materialsList\":\"MT-3NSXL(VC)\",\"number\":\"SM2607220006\",\"operTime\":1784664000000,\"operTimeStr\":\"2026-07-22 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":1020.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1784664000000,\"creator\":63,\"debt\":275562.000000,\"defaultNumber\":\"SM2607220004\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":275562.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1415,\"lastDebt\":275562.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":1260.000000,\"materialsList\":\"DDSD1226-T49(VB)\",\"number\":\"SM2607220004\",\"operTime\":1784664000000,\"operTimeStr\":\"2026-07-22 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":275562.000000,\"type\":\"入库\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (9322, 63, '接口日志', '43.152.157.88/1.9.116.218', '2026-09-30 08:18:40', 0, 'SupplierController.findBySelectSup(..)', NULL, 'POST /apis/supplier/findBySelect_sup', '{\"jsonObject\":{\"limit\":1,\"organId\":89}}', '[{\"supplier\":\"浙江瑞银电子有限公司\",\"id\":89}]'); +INSERT INTO `tbl_log` VALUES (9323, 63, '接口日志', '43.152.142.118/1.9.116.218', '2026-09-30 08:18:40', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (9324, 63, '接口日志', '43.152.142.139/1.9.116.218', '2026-09-30 08:18:40', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9325, 63, '接口日志', '43.174.53.48/1.9.116.218', '2026-09-30 08:18:40', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_print_flag\"}', '{\"code\":200,\"data\":{\"id\":4,\"platformKey\":\"bill_print_flag\",\"platformKeyInfo\":\"三联打印启用标记\",\"platformValue\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9326, 63, '接口日志', '43.174.53.19/1.9.116.218', '2026-09-30 08:18:40', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9327, 63, '接口日志', '43.174.54.27/1.9.116.218', '2026-09-30 08:18:40', 0, 'SystemConfigController.fileSizeLimit(..)', NULL, 'GET /apis/systemConfig/fileSizeLimit', '{}', '{\"code\":200,\"data\":10485760}'); +INSERT INTO `tbl_log` VALUES (9328, 63, '接口日志', '43.152.142.110/1.9.116.218', '2026-09-30 08:18:40', 0, 'HeadquartersInboundController.details(..)', NULL, 'GET /apis/headquartersInbound/details', '{\"headerId\":1420}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"id\":747,\"depotId\":\"25\",\"depotName\":\"半成品仓库\",\"barCode\":\"C.4.T.0.00547\",\"materialCode\":\"C.4.T.0.00547\",\"name\":\"MT-3NSXL(VC)RF通讯模块\",\"materialName\":\"MT-3NSXL(VC)RF通讯模块\",\"standard\":\"MT-3NSXL(VC)\",\"specification\":\"MT-3NSXL(VC)\",\"operNumber\":8160.000000,\"qtyPriceAmount\":8160.000000,\"unitPrice\":0.100000,\"finallyPrice\":0.100000,\"totalNetMoney\":816.000000,\"allPrice\":816.000000,\"totalMoney\":816.000000,\"itemJson\":\"{\\\"出货量\\\": 8160.0, \\\"价税合计\\\": 816.0, \\\"商品单价\\\": 0.1, \\\"成品名称\\\": \\\"MT-3NSXL(VC)RF通讯模块\\\", \\\"未税金额\\\": 816.0, \\\"规格型号\\\": \\\"MT-3NSXL(VC)\\\", \\\"成品物料代码\\\": \\\"C.4.T.0.00547\\\"}\",\"sourceDocNo\":\"SH2608060003\"}]}}'); +INSERT INTO `tbl_log` VALUES (9329, 63, '接口日志', '43.174.54.50/1.9.116.218', '2026-09-30 08:19:09', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"入库\\\",\\\"subType\\\":\\\"总部入库\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-30\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"createTimeRange\\\":[\\\"2026-06-29T16:00:00.000Z\\\",\\\"2026-09-29T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":41,\"rows\":[{\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789718802000,\"creator\":63,\"debt\":595000.000000,\"defaultNumber\":\"SM2609180001\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discountLastMoney\":595000.000000,\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1721,\"lastDebt\":595000.000000,\"materialCount\":10000.000000,\"materialsList\":\"1PH WS79\",\"number\":\"SM2609180001\",\"operTime\":1789733163000,\"operTimeStr\":\"2026-09-18 16:06:03\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"totalPrice\":595000.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1786046400000,\"creator\":63,\"debt\":183.600000,\"defaultNumber\":\"SM2608070007\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":183.600000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1423,\"lastDebt\":183.600000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":1836.000000,\"materialsList\":\"MT-3NSXL(VC)\",\"number\":\"SM2608070007\",\"operTime\":1786046400000,\"operTimeStr\":\"2026-08-07 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":183.600000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1786046400000,\"creator\":63,\"debt\":2077650.000000,\"defaultNumber\":\"SM2608070002\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":2077650.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1422,\"lastDebt\":2077650.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":9500.000000,\"materialsList\":\"DDSD1226-T49(VB)\",\"number\":\"SM2608070002\",\"operTime\":1786046400000,\"operTimeStr\":\"2026-08-07 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":2077650.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1785960000000,\"creator\":63,\"debt\":91854.000000,\"defaultNumber\":\"SM2608060005\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":91854.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1421,\"lastDebt\":91854.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":420.000000,\"materialsList\":\"DDSD1226-T49(VB)\",\"number\":\"SM2608060005\",\"operTime\":1785960000000,\"operTimeStr\":\"2026-08-06 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":91854.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1785960000000,\"creator\":63,\"debt\":816.000000,\"defaultNumber\":\"SM2608060004\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":816.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1420,\"lastDebt\":816.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":8160.000000,\"materialsList\":\"MT-3NSXL(VC)\",\"number\":\"SM2608060004\",\"operTime\":1785960000000,\"operTimeStr\":\"2026-08-06 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":816.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1784836800000,\"creator\":63,\"debt\":91854.000000,\"defaultNumber\":\"SM2607240005\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":91854.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1419,\"lastDebt\":91854.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":420.000000,\"materialsList\":\"DDSD1226-T49(VB)\",\"number\":\"SM2607240005\",\"operTime\":1784836800000,\"operTimeStr\":\"2026-07-24 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":91854.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1784750400000,\"creator\":63,\"debt\":551124.000000,\"defaultNumber\":\"SM2607230004\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":551124.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1418,\"lastDebt\":551124.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":2520.000000,\"materialsList\":\"DDSD1226-T49(VB)\",\"number\":\"SM2607230004\",\"operTime\":1784750400000,\"operTimeStr\":\"2026-07-23 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":551124.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1784750400000,\"creator\":63,\"debt\":1285956.000000,\"defaultNumber\":\"SM2607230002\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":1285956.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1417,\"lastDebt\":1285956.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":5880.000000,\"materialsList\":\"DDSD1226-T49(VB)\",\"number\":\"SM2607230002\",\"operTime\":1784750400000,\"operTimeStr\":\"2026-07-23 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":1285956.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1784664000000,\"creator\":63,\"debt\":1020.000000,\"defaultNumber\":\"SM2607220006\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":1020.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1416,\"lastDebt\":1020.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":10200.000000,\"materialsList\":\"MT-3NSXL(VC)\",\"number\":\"SM2607220006\",\"operTime\":1784664000000,\"operTimeStr\":\"2026-07-22 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":1020.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1784664000000,\"creator\":63,\"debt\":275562.000000,\"defaultNumber\":\"SM2607220004\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":275562.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1415,\"lastDebt\":275562.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":1260.000000,\"materialsList\":\"DDSD1226-T49(VB)\",\"number\":\"SM2607220004\",\"operTime\":1784664000000,\"operTimeStr\":\"2026-07-22 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":275562.000000,\"type\":\"入库\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (9330, 63, '接口日志', '43.152.157.88/1.9.116.218', '2026-09-30 08:19:18', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (9331, 63, '接口日志', '43.152.157.88/1.9.116.218', '2026-09-30 08:19:18', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (9332, 63, '接口日志', '43.152.142.132/1.9.116.218', '2026-09-30 08:19:18', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (9333, 63, '接口日志', '43.152.142.86/1.9.116.218', '2026-09-30 08:19:18', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (9334, 63, '接口日志', '43.152.142.68/1.9.116.218', '2026-09-30 08:19:18', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9335, 63, '接口日志', '43.174.53.14/1.9.116.218', '2026-09-30 08:19:18', 0, 'PersonController.getPersonByType(..)', NULL, 'GET /apis/person/getPersonByType', '{\"type\":\"财务员\"}', '{\"code\":200,\"data\":{\"personList\":[{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":43,\"name\":\"Juwairiah\",\"type\":\"财务员\"}]}}'); +INSERT INTO `tbl_log` VALUES (9336, 63, '接口日志', '43.152.142.43/1.9.116.218', '2026-09-30 08:19:18', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (9337, 63, '接口日志', '43.152.142.83/1.9.116.218', '2026-09-30 08:19:18', 0, 'CustomerCategoryController.getTreeList(..)', NULL, 'GET /apis/customerCategory/treeList', '{}', '{\"code\":200,\"data\":{\"data\":[],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9338, 63, '接口日志', '43.174.52.68/1.9.116.218', '2026-09-30 08:19:18', 0, 'AccountHeadController.getList(..)', NULL, 'GET /apis/accountHead/list', '{\"search\":\"{\\\"billNo\\\":\\\"\\\",\\\"searchMaterial\\\":\\\"\\\",\\\"type\\\":\\\"收款\\\",\\\"remark\\\":\\\"\\\",\\\"number\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-30\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"createTimeRange\\\":[\\\"2026-06-29T16:00:00.000Z\\\",\\\"2026-09-29T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":11,\"rows\":[{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2110-25\",\"billTime\":1784836800000,\"billTimeStr\":\"2026-07-24 00:00:00\",\"changeAmount\":1122000.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":105,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2110\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2110-25\",\"sourceTime\":\"2026-06-23 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":1122000.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2108-18\",\"billTime\":1784145600000,\"billTimeStr\":\"2026-07-16 00:00:00\",\"changeAmount\":1122000.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":103,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2108\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2108-18\",\"sourceTime\":\"2026-06-16 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":1122000.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2107-14\",\"billTime\":1783281600000,\"billTimeStr\":\"2026-07-06 00:00:00\",\"changeAmount\":1122000.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":102,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2107\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2107-14\",\"sourceTime\":\"2026-06-06 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":1122000.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2102-11\",\"billTime\":1782763200000,\"billTimeStr\":\"2026-06-30 00:00:00\",\"changeAmount\":1122000.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":101,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2102\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2102-11\",\"sourceTime\":\"2026-05-26 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":1122000.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2129-11\",\"billTime\":1786564800000,\"billTimeStr\":\"2026-08-13 00:00:00\",\"changeAmount\":1122000.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":99,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2129\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2129-11\",\"sourceTime\":\"2026-01-01 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":1122000.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2133-65\",\"billTime\":1786651200000,\"billTimeStr\":\"2026-08-14 00:00:00\",\"changeAmount\":80850.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":98,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2133\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2133-65\",\"sourceTime\":\"2026-07-16 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2131-47\",\"billTime\":1783886400000,\"billTimeStr\":\"2026-07-13 00:00:00\",\"changeAmount\":80850.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":97,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2131\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2131-47\",\"sourceTime\":\"2026-07-13 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2130-44\",\"billTime\":1786046400000,\"billTimeStr\":\"2026-08-07 00:00:00\",\"changeAmount\":242550.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":96,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2130\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2130-44\",\"sourceTime\":\"2026-07-09 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":242550.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2122-26\",\"billTime\":1785441600000,\"billTimeStr\":\"2026-07-31 00:00:00\",\"changeAmount\":161700.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":95,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2122\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2122-26\",\"sourceTime\":\"2026-07-01 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":161700.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2113-15\",\"billTime\":1785182400000,\"billTimeStr\":\"2026-07-28 00:00:00\",\"changeAmount\":161700.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":94,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2113\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2113-15\",\"sourceTime\":\"2026-06-28 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":161700.000000,\"type\":\"收款\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (9339, 63, '接口日志', '43.174.32.13/1.9.116.218', '2026-09-30 08:19:18', 0, 'DepotHeadController.getNeedCount(..)', NULL, 'GET /apis/depotHead/getNeedCount', '{\"type\":\"customer\"}', '{\"code\":200,\"data\":{\"needCount\":1}}'); +INSERT INTO `tbl_log` VALUES (9340, NULL, '接口日志', '43.152.142.142/1.9.116.218', '2026-09-30 08:19:22', 0, 'UserController.logout(..)', NULL, 'GET /apis/user/logout', '{}', '{\"code\":400}'); +INSERT INTO `tbl_log` VALUES (9341, NULL, '接口日志', '43.174.51.49/1.9.116.218', '2026-09-30 08:19:22', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (9342, NULL, '接口日志', '43.152.142.108/1.9.116.218', '2026-09-30 08:19:22', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (9343, NULL, '接口日志', '43.152.142.40/1.9.116.218', '2026-09-30 08:19:23', 0, 'UserController.randomImage(..)', NULL, 'GET /apis/user/randomImage', '{}', '{\"code\":200,\"data\":{\"base64\":\"data:image/jpg;base64,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\",\"uuid\":\"faf29452b6d2406184c55769a33589b6\"}}'); +INSERT INTO `tbl_log` VALUES (9344, NULL, '接口日志', '43.152.142.62/1.9.116.218', '2026-09-30 08:19:23', 0, 'PlatformConfigController.getPlatformCheckcodeFlag(..)', NULL, 'GET /apis/platformConfig/getPlatform/checkcodeFlag', '{}', '\"1\"'); +INSERT INTO `tbl_log` VALUES (9345, NULL, '接口日志', '125.94.247.76/125.118.93.243', '2026-09-30 11:38:59', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (9346, NULL, '接口日志', '222.79.116.201/125.118.93.243', '2026-09-30 11:39:00', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (9347, NULL, '接口日志', '183.131.72.24/183.128.210.126', '2026-09-30 13:24:45', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (9348, NULL, '接口日志', '60.163.165.218/183.128.210.126', '2026-09-30 13:24:45', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (9349, 63, '接口日志', '60.163.165.27/183.128.210.126', '2026-09-30 13:24:47', 0, 'FunctionController.findMenuByPNumber(..)', NULL, 'POST /apis/function/findMenuByPNumber', '{\"jsonObject\":{\"userId\":63,\"pNumber\":0}}', '[{\"component\":\"/layouts/TabLayout\",\"icon\":\"home\",\"id\":0,\"text\":\"首页\",\"url\":\"/dashboard/analysis\",\"textEn\":\"Home\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/SaleOrderList\",\"icon\":\"profile\",\"id\":242,\"text\":\"销售订单\",\"url\":\"/bill/sale_order\",\"textEn\":\"Sales Orders\"},{\"component\":\"/bill/SaleOutList\",\"icon\":\"profile\",\"id\":41,\"text\":\"销售出库\",\"url\":\"/bill/sale_out\",\"textEn\":\"Sales Shipments\"},{\"component\":\"/bill/DeliveryPlanList\",\"icon\":\"profile\",\"id\":271,\"text\":\"交货计划管理\",\"url\":\"/bill/delivery_plan\",\"textEn\":\"Delivery Plans\"},{\"component\":\"/bill/SaleShipmentList\",\"icon\":\"car\",\"id\":268,\"text\":\"发货管理\",\"url\":\"/bill/sale_shipment\",\"textEn\":\"Shipment Management\"},{\"component\":\"/bill/SaleBackList\",\"icon\":\"profile\",\"id\":200,\"text\":\"销售退货\",\"url\":\"/bill/sale_back\",\"textEn\":\"Sales Returns\"},{\"component\":\"/bill/RetailOutList\",\"icon\":\"profile\",\"id\":210,\"text\":\"零售出库\",\"url\":\"/bill/retail_out\",\"textEn\":\"Retail Shipments\"},{\"component\":\"/bill/RetailBackList\",\"icon\":\"profile\",\"id\":211,\"text\":\"零售退货\",\"url\":\"/bill/retail_back\",\"textEn\":\"Retail Returns\"}],\"icon\":\"shopping-cart\",\"id\":38,\"text\":\"销售管理\",\"url\":\"/billB\",\"textEn\":\"Sales Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/PurchaseApplyList\",\"icon\":\"profile\",\"id\":261,\"text\":\"请购单\",\"url\":\"/bill/purchase_apply\",\"textEn\":\"Purchase Requisitions\"},{\"component\":\"/bill/PurchaseOrderList\",\"icon\":\"profile\",\"id\":241,\"text\":\"采购订单\",\"url\":\"/bill/purchase_order\",\"textEn\":\"Purchase Orders\"},{\"component\":\"/bill/PurchaseInList\",\"icon\":\"profile\",\"id\":33,\"text\":\"采购入库\",\"url\":\"/bill/purchase_in\",\"textEn\":\"Purchase Receipts\"},{\"component\":\"/bill/PurchaseBackList\",\"icon\":\"profile\",\"id\":199,\"text\":\"采购退货\",\"url\":\"/bill/purchase_back\",\"textEn\":\"Purchase Returns\"}],\"icon\":\"retweet\",\"id\":32,\"text\":\"采购管理\",\"url\":\"/bill\",\"textEn\":\"Purchase Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/production/PackBomList\",\"icon\":\"profile\",\"id\":263,\"text\":\"生产方案\",\"url\":\"/production/pack_bom\",\"textEn\":\"Production BOMs\"},{\"component\":\"/production/OrderList\",\"icon\":\"profile\",\"id\":264,\"text\":\"生产工单\",\"url\":\"/production/order\",\"textEn\":\"Production Orders\"},{\"component\":\"/production/RequisitionList\",\"icon\":\"profile\",\"id\":265,\"text\":\"领料管理\",\"url\":\"/production/requisition\",\"textEn\":\"Material Requisitions\"},{\"component\":\"/production/ReportList\",\"icon\":\"profile\",\"id\":266,\"text\":\"完工报工\",\"url\":\"/production/report\",\"textEn\":\"Production Reports\"}],\"icon\":\"cluster\",\"id\":262,\"text\":\"生产管理\",\"url\":\"/production\",\"textEn\":\"Production Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/MaterialStock\",\"icon\":\"profile\",\"id\":246,\"text\":\"商品库存\",\"url\":\"/report/material_stock\",\"textEn\":\"Product Inventory\"},{\"component\":\"/bill/OtherInList\",\"icon\":\"profile\",\"id\":201,\"text\":\"其它入库\",\"url\":\"/bill/other_in\",\"textEn\":\"Other Receipts\"},{\"component\":\"/bill/OtherOutList\",\"icon\":\"profile\",\"id\":202,\"text\":\"其它出库\",\"url\":\"/bill/other_out\",\"textEn\":\"Other Shipments\"},{\"component\":\"/bill/HeadquartersInList\",\"icon\":\"profile\",\"id\":270,\"text\":\"总部入库\",\"url\":\"/bill/headquarters_in\",\"textEn\":\"Headquarters Receipts\"}],\"icon\":\"hdd\",\"id\":239,\"text\":\"仓库管理\",\"url\":\"/billD\",\"textEn\":\"Warehouse Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/financial/MoneyInList\",\"icon\":\"profile\",\"id\":204,\"text\":\"收款单\",\"url\":\"/financial/money_in\",\"textEn\":\"Receipt Vouchers\"},{\"component\":\"/financial/MoneyOutList\",\"icon\":\"profile\",\"id\":205,\"text\":\"付款单\",\"url\":\"/financial/money_out\",\"textEn\":\"Payment Vouchers\"}],\"icon\":\"money-collect\",\"id\":44,\"text\":\"财务管理\",\"url\":\"/financial\",\"textEn\":\"Finance Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/asset/AssetDashboard\",\"icon\":\"dashboard\",\"id\":276,\"text\":\"资产汇总\",\"url\":\"/asset\",\"textEn\":\"Asset Overview\"},{\"component\":\"/asset/AssetList\",\"icon\":\"profile\",\"id\":273,\"text\":\"资产台账\",\"url\":\"/asset/ledger\",\"textEn\":\"Asset Ledger\"},{\"component\":\"/asset/DeviceList\",\"icon\":\"tool\",\"id\":274,\"text\":\"设备台账\",\"url\":\"/asset/device\",\"textEn\":\"Device Ledger\"},{\"component\":\"/asset/InventoryList\",\"icon\":\"scan\",\"id\":275,\"text\":\"资产盘点\",\"url\":\"/asset/inventory\",\"textEn\":\"Asset Inventory\"}],\"icon\":\"bank\",\"id\":272,\"text\":\"资产管理\",\"url\":\"/assetManagement\",\"textEn\":\"Asset Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/material/MaterialCategoryList\",\"icon\":\"profile\",\"id\":22,\"text\":\"商品类别\",\"url\":\"/material/material_category\",\"textEn\":\"Product Categories\"},{\"component\":\"/material/MaterialList\",\"icon\":\"profile\",\"id\":23,\"text\":\"商品信息\",\"url\":\"/material/material\",\"textEn\":\"Product Information\"},{\"component\":\"/system/UnitList\",\"icon\":\"profile\",\"id\":220,\"text\":\"多单位\",\"url\":\"/system/unit\",\"textEn\":\"Multiple Units\"},{\"component\":\"/material/MaterialAttributeList\",\"icon\":\"profile\",\"id\":247,\"text\":\"多属性\",\"url\":\"/material/material_attribute\",\"textEn\":\"Product Attributes\"}],\"icon\":\"shopping\",\"id\":21,\"text\":\"商品管理\",\"url\":\"/material\",\"textEn\":\"Product Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/AccountReport\",\"icon\":\"profile\",\"id\":207,\"text\":\"账户统计\",\"url\":\"/report/account_report\",\"textEn\":\"Account Summary\"},{\"component\":\"/report/RetailOutReport\",\"icon\":\"profile\",\"id\":259,\"text\":\"零售统计\",\"url\":\"/report/retail_out_report\",\"textEn\":\"Retail Summary\"},{\"component\":\"/report/BuyInReport\",\"icon\":\"profile\",\"id\":208,\"text\":\"采购统计\",\"url\":\"/report/buy_in_report\",\"textEn\":\"Purchase Summary\"},{\"component\":\"/report/SaleOutReport\",\"icon\":\"profile\",\"id\":209,\"text\":\"销售统计\",\"url\":\"/report/sale_out_report\",\"textEn\":\"Sales Summary\"},{\"component\":\"/report/InDetail\",\"icon\":\"profile\",\"id\":226,\"text\":\"入库明细\",\"url\":\"/report/in_detail\",\"textEn\":\"Inbound Details\"},{\"component\":\"/report/OutDetail\",\"icon\":\"profile\",\"id\":227,\"text\":\"出库明细\",\"url\":\"/report/out_detail\",\"textEn\":\"Outbound Details\"},{\"component\":\"/report/InMaterialCount\",\"icon\":\"profile\",\"id\":228,\"text\":\"入库汇总\",\"url\":\"/report/in_material_count\",\"textEn\":\"Inbound Summary\"},{\"component\":\"/report/OutMaterialCount\",\"icon\":\"profile\",\"id\":229,\"text\":\"出库汇总\",\"url\":\"/report/out_material_count\",\"textEn\":\"Outbound Summary\"},{\"component\":\"/report/InOutStockReport\",\"icon\":\"profile\",\"id\":59,\"text\":\"进销存统计\",\"url\":\"/report/in_out_stock_report\",\"textEn\":\"Inventory Transaction Summary\"},{\"component\":\"/report/CustomerAccount\",\"icon\":\"profile\",\"id\":235,\"text\":\"客户对账\",\"url\":\"/report/customer_account\",\"textEn\":\"Customer Reconciliation\"},{\"component\":\"/report/VendorAccount\",\"icon\":\"profile\",\"id\":237,\"text\":\"供应商对账\",\"url\":\"/report/vendor_account\",\"textEn\":\"Supplier Reconciliation\"},{\"component\":\"/report/StockWarningReport\",\"icon\":\"profile\",\"id\":244,\"text\":\"库存预警\",\"url\":\"/report/stock_warning_report\",\"textEn\":\"Stock Alerts\"}],\"icon\":\"pie-chart\",\"id\":198,\"text\":\"报表查询\",\"url\":\"/report\",\"textEn\":\"Reports\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/VendorList\",\"icon\":\"profile\",\"id\":25,\"text\":\"供应商信息\",\"url\":\"/system/vendor\",\"textEn\":\"Suppliers\"},{\"component\":\"/system/CustomerList\",\"icon\":\"profile\",\"id\":217,\"text\":\"客户信息\",\"url\":\"/system/customer\",\"textEn\":\"Customers\"},{\"component\":\"/system/MemberList\",\"icon\":\"profile\",\"id\":218,\"text\":\"会员信息\",\"url\":\"/system/member\",\"textEn\":\"Members\"},{\"component\":\"/system/CustomerCategoryList\",\"icon\":\"bars\",\"id\":267,\"text\":\"客户分类\",\"url\":\"/system/customerCategory\",\"textEn\":\"Customer Categories\"},{\"component\":\"/system/DepotList\",\"icon\":\"profile\",\"id\":26,\"text\":\"仓库信息\",\"url\":\"/system/depot\",\"textEn\":\"Warehouses\"},{\"component\":\"/system/InOutItemList\",\"icon\":\"profile\",\"id\":194,\"text\":\"收支项目\",\"url\":\"/system/in_out_item\",\"textEn\":\"Income and Expense Items\"},{\"component\":\"/system/AccountList\",\"icon\":\"profile\",\"id\":195,\"text\":\"结算账户\",\"url\":\"/system/account\",\"textEn\":\"Settlement Accounts\"},{\"component\":\"/system/PersonList\",\"icon\":\"profile\",\"id\":31,\"text\":\"操作人员管理\",\"url\":\"/system/person\",\"textEn\":\"Operators\"}],\"icon\":\"appstore\",\"id\":24,\"text\":\"基础资料\",\"url\":\"/systemA\",\"textEn\":\"Master Data\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/RoleList\",\"icon\":\"profile\",\"id\":13,\"text\":\"角色管理\",\"url\":\"/system/role\",\"textEn\":\"Role Management\"},{\"component\":\"/system/UserList\",\"icon\":\"profile\",\"id\":14,\"text\":\"用户管理\",\"url\":\"/system/user\",\"textEn\":\"User Management\"},{\"component\":\"/system/OrganizationList\",\"icon\":\"profile\",\"id\":243,\"text\":\"部门管理\",\"url\":\"/system/organization\",\"textEn\":\"Department Management\"},{\"component\":\"/system/LogList\",\"icon\":\"profile\",\"id\":15,\"text\":\"日志管理\",\"url\":\"/system/log\",\"textEn\":\"Log Management\"},{\"component\":\"/material/MaterialPropertyList\",\"icon\":\"profile\",\"id\":236,\"text\":\"商品属性\",\"url\":\"/material/material_property\",\"textEn\":\"Product Properties\"},{\"component\":\"/system/SystemConfigList\",\"icon\":\"profile\",\"id\":234,\"text\":\"系统配置\",\"url\":\"/system/system_config\",\"textEn\":\"System Configuration\"},{\"component\":\"/system/FunctionList\",\"icon\":\"profile\",\"id\":16,\"text\":\"菜单管理\",\"url\":\"/system/function\",\"textEn\":\"Resource Menus\"},{\"component\":\"/system/PluginList\",\"icon\":\"profile\",\"id\":245,\"text\":\"插件管理\",\"url\":\"/system/plugin\",\"textEn\":\"Plugin Management\"},{\"component\":\"/system/DictList\",\"icon\":\"profile\",\"id\":260,\"text\":\"字典管理\",\"url\":\"/system/dict\",\"textEn\":\"Dictionary Management\"},{\"component\":\"/system/PlatformConfigList\",\"icon\":\"profile\",\"id\":258,\"text\":\"平台配置\",\"url\":\"/system/platform_config\",\"textEn\":\"Platform Configuration\"}],\"icon\":\"setting\",\"id\":1,\"text\":\"系统管理\",\"url\":\"/system\",\"textEn\":\"System Management\"}]'); +INSERT INTO `tbl_log` VALUES (9350, 63, '接口日志', '60.163.165.87/183.128.210.126', '2026-09-30 13:24:48', 0, 'UserController.getUserBtnByCurrentUser(..)', NULL, 'GET /apis/user/getUserBtnByCurrentUser', '{}', '{\"code\":200,\"data\":{\"userBtn\":[{\"btnStr\":\"8,1\",\"url\":\"/system/role\"},{\"btnStr\":\"1\",\"url\":\"/system/user\"},{\"btnStr\":\"1\",\"url\":\"/system/organization\"},{\"btnStr\":\"1\",\"url\":\"/material/material_property\"},{\"btnStr\":\"1\",\"url\":\"/system/system_config\"},{\"btnStr\":\"1\",\"url\":\"/system/function\"},{\"btnStr\":\"1\",\"url\":\"/system/plugin\"},{\"btnStr\":\"1\",\"url\":\"/material/material_category\"},{\"btnStr\":\"1,3\",\"url\":\"/material/material\"},{\"btnStr\":\"1\",\"url\":\"/system/unit\"},{\"btnStr\":\"1\",\"url\":\"/material/material_attribute\"},{\"btnStr\":\"1,3\",\"url\":\"/system/vendor\"},{\"btnStr\":\"1,3\",\"url\":\"/system/customer\"},{\"btnStr\":\"1,3\",\"url\":\"/system/member\"},{\"btnStr\":\"1\",\"url\":\"/system/depot\"},{\"btnStr\":\"1\",\"url\":\"/system/in_out_item\"},{\"btnStr\":\"1\",\"url\":\"/system/account\"},{\"btnStr\":\"1\",\"url\":\"/system/person\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_apply\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_out\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/delivery_plan\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/sale_shipment\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_out\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/order\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/requisition\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/report\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/giro\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/advance_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/allocation_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/assemble\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/headquarters_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/disassemble\"}]}}'); +INSERT INTO `tbl_log` VALUES (9351, 63, '接口日志', '60.163.165.87/183.128.210.126', '2026-09-30 13:24:49', 0, 'MsgController.getMsgByStatus(..)', NULL, 'GET /apis/msg/getMsgByStatus', '{\"status\":\"1\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (9352, 63, '接口日志', '60.163.165.98/183.128.210.126', '2026-09-30 13:24:49', 0, 'MsgController.getList(..)', NULL, 'GET /apis/msg/list', '{\"search\":\"{\\\"name\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9353, 63, '接口日志', '60.163.165.157/183.128.210.126', '2026-09-30 13:24:49', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-04\",\"inbound\":100669.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (9354, 63, '接口日志', '183.131.72.180/183.128.210.126', '2026-09-30 13:28:31', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9355, 63, '接口日志', '60.163.165.98/183.128.210.126', '2026-09-30 13:28:31', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (9356, 63, '接口日志', '183.131.72.24/183.128.210.126', '2026-09-30 13:28:31', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (9357, 63, '接口日志', '60.163.165.229/183.128.210.126', '2026-09-30 13:28:31', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9358, 63, '接口日志', '60.163.165.218/183.128.210.126', '2026-09-30 13:28:31', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (9359, 63, '接口日志', '183.131.72.35/183.128.210.126', '2026-09-30 13:28:31', 0, 'PersonController.getPersonByNumType(..)', NULL, 'GET /apis/person/getPersonByNumType', '{\"typeNum\":\"1\"}', '[]'); +INSERT INTO `tbl_log` VALUES (9360, 63, '接口日志', '60.163.165.27/183.128.210.126', '2026-09-30 13:28:31', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"其它\\\",\\\"subType\\\":\\\"销售订单\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-06-30\\\",\\\"endTime\\\":\\\"2026-09-30\\\",\\\"createTimeRange\\\":[\\\"2026-06-29T16:00:00.000Z\\\",\\\"2026-09-29T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":5,\"rows\":[{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789718483000,\"creator\":63,\"debt\":808500.000000,\"defaultNumber\":\"XSDD00000001726\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":808500.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1719,\"lastDebt\":808500.000000,\"lastDeposit\":0.000000,\"materialCount\":10000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD00000001726\",\"operTime\":1789732682000,\"operTimeStr\":\"2026-09-18 15:58:02\",\"organId\":90,\"organName\":\"TNB\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"totalPrice\":735000.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789726236000,\"creator\":63,\"debt\":340000000.000000,\"defaultNumber\":\"XSDD00000001724\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":340000000.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1718,\"lastDebt\":340000000.000000,\"lastDeposit\":0.000000,\"materialCount\":1000000.000000,\"materialsList\":\"3PH APEC3-WC 3PH APEC3-WC 3PH APEC3-WC \",\"number\":\"XSDD00000001724\",\"operTime\":1789725706000,\"operTimeStr\":\"2026-09-18 14:01:46\",\"organId\":90,\"organName\":\"TNB\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"0\",\"subType\":\"销售订单\",\"totalPrice\":340000000.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1785355200000,\"creator\":63,\"debt\":242550.000000,\"defaultNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":242550.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1580,\"lastDebt\":242550.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":3000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303475-1PH-WS79-ADD1\",\"operTime\":1785355200000,\"operTimeStr\":\"2026-07-30 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303475\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":242550.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1785355200000,\"creator\":63,\"debt\":323400.000000,\"defaultNumber\":\"XSDD-42303447-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":323400.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1574,\"lastDebt\":323400.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":4000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303447-1PH-WS79-ADD1\",\"operTime\":1785355200000,\"operTimeStr\":\"2026-07-30 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303447\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":323400.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1782936000000,\"creator\":63,\"debt\":323400.000000,\"defaultNumber\":\"XSDD-42303429-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":323400.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1569,\"lastDebt\":323400.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":4000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303429-1PH-WS79-ADD1\",\"operTime\":1782936000000,\"operTimeStr\":\"2026-07-02 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303429\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":323400.000000,\"type\":\"其它\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (9361, 63, '接口日志', '120.226.176.193/183.128.210.126', '2026-09-30 13:28:32', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9362, 63, '接口日志', '60.163.165.157/183.128.210.126', '2026-09-30 13:28:33', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (9363, NULL, '接口日志', '43.152.142.128/1.9.116.218', '2026-10-02 07:39:23', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (9364, NULL, '接口日志', '43.152.142.109/1.9.116.218', '2026-10-02 07:39:23', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (9365, NULL, '接口日志', '43.152.142.32/1.9.116.218', '2026-10-02 07:39:25', 0, 'PlatformConfigController.getPlatformCheckcodeFlag(..)', NULL, 'GET /apis/platformConfig/getPlatform/checkcodeFlag', '{}', '\"1\"'); +INSERT INTO `tbl_log` VALUES (9366, NULL, '接口日志', '43.174.54.14/1.9.116.218', '2026-10-02 07:39:25', 0, 'UserController.randomImage(..)', NULL, 'GET /apis/user/randomImage', '{}', '{\"code\":200,\"data\":{\"base64\":\"data:image/jpg;base64,/9j/4AAQSkZJRgABAgAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAAjAGkDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3kB2lbE4IWTlQo4G37v5kNUMUb2qtGskly0agjzJfnIJ5yMAduCe+RwKjWeOKd5ZBFK3mGFZosNJjlthAGeOOBn1IHNfPXjnxTH4z+JOpaJq/iBtD8KaWxhuVUEPc+XIqsNq7vMcycrkEKoLbchgQD6QzFcfdk3eW/PlyEYYdjg/oaYqTbI0Nwxljj+ZjGNrkjGSPqM4BFeLfDrwh8PZ/EqXng3xbqlxc2g3XVrMTH50JBAGPLjJAfy2yMgFRwCVI9taZY4lkkBQMVXB5ILEADj3IFADJrgwxIWVfNbGE3YDHjIBOBn0Bxn25wwC6edSo8mL77hzuJPA24zxxuzjvtPPIr5K8O2Fj4v8AEl//AMJ74guLK6t2EYhuJVtypLtvAZwVjCOf9WF/jJAAU11vwthk0340XugeGtYl1PwwizNcksPLlj2AAlTwxEhRN6j5gMj5SaAPoNRNayP5t8jBm83MsZ+WNQA3O4Adjnpkk454vblDBdw3EEgZ5IH/AOsVBdW5mCvGYknTOyV4t5TIwccjBr5/+L3ii78U31z4Q0CeMafo1q93qckcyLFOUVSFUDJIQ4G3P3jyBs3UBc+gI1nScb7hZN4OU2hdoHde/pnJPXt0M0b+ZEj7WXcAdrDBHsfevHf2ct3/AAgt5+6BX+05syZGVPlQcY9+f++a9E8ReKbHw/4Tutf1G1nl0+OONikSqzusjKoG0kDOW5GcY7npQBsXwkaylESM8m35FV9hJ7cgjj156VC87RxT3V07R2oXGwI29BxkkjnOd3IyMAEEck+Uy/tH+FQY/J0zWSN43h4Yh8vtiTr0/wA816R4X8TW3irwxZa3YxTLFdhxGsybDuVmU7tpYKCUPc9R34oA1ESQzTFg8ZLKQyyblYDtg/dPHOB36k9LFIpLKCVKkjOD1H5UtAFa9UtGF+zGYEEfLt3ISMZAbjoT/gcmvnbTtH0XQvj7rsfjmOxa3uFuLyza7XbbyvIwdT8+E+6ZF+Y7Q6kAkgGvouQxR3MTlG8yU+UGX6FufyOPTPuawPFvhHQvFNura/plvcx2h3xyNJIrKv8AHymD0zxkgkCgDw6/TSLv9oDw1/wg8drCN1u92mnSqsQKlmmCsp2EeSBkLweQRuJFfR80nl3MXmS+XGflXLKA7HopyM57jB9c9s4/hvwP4a8I+YdD0iC0kkyGmy0khBxld7ktt+UHbnGRnGa1ZFiv4UkiaOXaMhX5Vgy9GHbKnrjIz6EggHzL4NGheMfFuu3HxJ1AQ38AItrTUryWGKP533x7mYMuxioCbs4LcHkjb+Gl6uj/ABuu/D/hW+nv/DEiy+Zh3eFCI1LSLg7eJFEYc5ypAycg16d4p+HvhPX9XW6v/DgmvXi8qOVJXiWUohKqwRgOAMZOD8qgZA42/C/g7RvB1pdxaJp0Nr9pcSOodnJIUAKXbLFQdxHpuPHJyATeJ59VTwpq82kCWHUYLaZ7bEKyvI6oSuxcnJJwACD9K+ddH1LX/DHgvxHaXfw+1+e91eCY3+sXZmAXKON5UxYAUO5JLZJLZOMAfUAKziORJG2qxOBxngjBH49PUVS1DToNQsJLC6k82weOSK6R5SpaNkIILDnGG9j0OcjkA8I+AXiS90+L+yE8N3s9hc3crzavCsjRwnylIRlVCCcoMZYY8z8/cdb1SPw5pt5rWoXZGn2kLyumEDMR91VzjLEkqBkZO0dckweGvCeg+FNNSy0S2aG3kkMuRM772IXLEknqI19Bx78ya3pGn+JUuNF1S0knspY18+NpHRXUMGUgo3BDKODgn1wMEA+a/wC05fjH45+1eJtdsdD0S1+7FNdpH5UZP3Ig5G+RsfM+MDGTwESvp3Q303+x7KLRJIJtJigWG2lt5xKm1Pk2hsnOMYzk9Dn34z/hTHw8NwYl8NuQv3mN3cgDIyMEvgj6Hjj8Oy8P6PYaBodvpmmWTWVnBu8uB5C5TcxY8lmzkknqetAFq1SIPM8Yc7nyXY8PkZBHYjBxn/ZA7CrNRkMcP5cZkB2g56KSM849ADj1H41JQBEbeEo6eWoV23NtGMt68d/frUtFFACOiyIyOoZWGCpGQRTBBCFKiJApQIQFGNo6D6cnj3oooAeqqihVAVQMAAYAFLRRQAxYYkk8xYkD4I3BRnBOTz9eaVI0jACIq4UKNoxwOg+lFFADqKKKAEdFkRkdQyMMMrDII9DQiLGioihUUYVVGAB6CiigBaKKKAP/2Q==\",\"uuid\":\"5b8f2e7bcf01474aa1cc475fd82eb510\"}}'); +INSERT INTO `tbl_log` VALUES (9367, 63, '用户', '43.174.32.33/1.9.116.218', '2026-10-02 07:39:41', 0, '登录admin', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (9368, NULL, '接口日志', '43.174.32.33/1.9.116.218', '2026-10-02 07:39:41', 0, 'UserController.login(..)', NULL, 'POST /apis/user/login', '{\"userParam\":{\"code\":\"684z\",\"loginName\":\"admin\",\"password\":\"******\",\"uuid\":\"5b8f2e7bcf01474aa1cc475fd82eb510\"}}', '{\"code\":200,\"data\":{\"pwdSimple\":\"******\",\"user\":{\"deleteFlag\":\"0\",\"description\":\"\",\"email\":\"666666@qq.com\",\"id\":63,\"ismanager\":1,\"isystem\":1,\"leaderFlag\":\"0\",\"loginName\":\"admin\",\"password\":\"******\",\"phonenum\":\"1123123123132\",\"position\":\"主管\",\"status\":0,\"tenantId\":63,\"username\":\"admin\"},\"msgTip\":\"user can login\",\"token\":\"******\"}}'); +INSERT INTO `tbl_log` VALUES (9369, 63, '接口日志', '43.152.156.79/1.9.116.218', '2026-10-02 07:39:42', 0, 'FunctionController.findMenuByPNumber(..)', NULL, 'POST /apis/function/findMenuByPNumber', '{\"jsonObject\":{\"userId\":63,\"pNumber\":0}}', '[{\"component\":\"/layouts/TabLayout\",\"icon\":\"home\",\"id\":0,\"text\":\"首页\",\"url\":\"/dashboard/analysis\",\"textEn\":\"Home\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/SaleOrderList\",\"icon\":\"profile\",\"id\":242,\"text\":\"销售订单\",\"url\":\"/bill/sale_order\",\"textEn\":\"Sales Orders\"},{\"component\":\"/bill/SaleOutList\",\"icon\":\"profile\",\"id\":41,\"text\":\"销售出库\",\"url\":\"/bill/sale_out\",\"textEn\":\"Sales Shipments\"},{\"component\":\"/bill/DeliveryPlanList\",\"icon\":\"profile\",\"id\":271,\"text\":\"交货计划管理\",\"url\":\"/bill/delivery_plan\",\"textEn\":\"Delivery Plans\"},{\"component\":\"/bill/SaleShipmentList\",\"icon\":\"car\",\"id\":268,\"text\":\"发货管理\",\"url\":\"/bill/sale_shipment\",\"textEn\":\"Shipment Management\"},{\"component\":\"/bill/SaleBackList\",\"icon\":\"profile\",\"id\":200,\"text\":\"销售退货\",\"url\":\"/bill/sale_back\",\"textEn\":\"Sales Returns\"},{\"component\":\"/bill/RetailOutList\",\"icon\":\"profile\",\"id\":210,\"text\":\"零售出库\",\"url\":\"/bill/retail_out\",\"textEn\":\"Retail Shipments\"},{\"component\":\"/bill/RetailBackList\",\"icon\":\"profile\",\"id\":211,\"text\":\"零售退货\",\"url\":\"/bill/retail_back\",\"textEn\":\"Retail Returns\"}],\"icon\":\"shopping-cart\",\"id\":38,\"text\":\"销售管理\",\"url\":\"/billB\",\"textEn\":\"Sales Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/PurchaseApplyList\",\"icon\":\"profile\",\"id\":261,\"text\":\"请购单\",\"url\":\"/bill/purchase_apply\",\"textEn\":\"Purchase Requisitions\"},{\"component\":\"/bill/PurchaseOrderList\",\"icon\":\"profile\",\"id\":241,\"text\":\"采购订单\",\"url\":\"/bill/purchase_order\",\"textEn\":\"Purchase Orders\"},{\"component\":\"/bill/PurchaseInList\",\"icon\":\"profile\",\"id\":33,\"text\":\"采购入库\",\"url\":\"/bill/purchase_in\",\"textEn\":\"Purchase Receipts\"},{\"component\":\"/bill/PurchaseBackList\",\"icon\":\"profile\",\"id\":199,\"text\":\"采购退货\",\"url\":\"/bill/purchase_back\",\"textEn\":\"Purchase Returns\"}],\"icon\":\"retweet\",\"id\":32,\"text\":\"采购管理\",\"url\":\"/bill\",\"textEn\":\"Purchase Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/production/PackBomList\",\"icon\":\"profile\",\"id\":263,\"text\":\"生产方案\",\"url\":\"/production/pack_bom\",\"textEn\":\"Production BOMs\"},{\"component\":\"/production/OrderList\",\"icon\":\"profile\",\"id\":264,\"text\":\"生产工单\",\"url\":\"/production/order\",\"textEn\":\"Production Orders\"},{\"component\":\"/production/RequisitionList\",\"icon\":\"profile\",\"id\":265,\"text\":\"领料管理\",\"url\":\"/production/requisition\",\"textEn\":\"Material Requisitions\"},{\"component\":\"/production/ReportList\",\"icon\":\"profile\",\"id\":266,\"text\":\"完工报工\",\"url\":\"/production/report\",\"textEn\":\"Production Reports\"}],\"icon\":\"cluster\",\"id\":262,\"text\":\"生产管理\",\"url\":\"/production\",\"textEn\":\"Production Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/MaterialStock\",\"icon\":\"profile\",\"id\":246,\"text\":\"商品库存\",\"url\":\"/report/material_stock\",\"textEn\":\"Product Inventory\"},{\"component\":\"/bill/OtherInList\",\"icon\":\"profile\",\"id\":201,\"text\":\"其它入库\",\"url\":\"/bill/other_in\",\"textEn\":\"Other Receipts\"},{\"component\":\"/bill/OtherOutList\",\"icon\":\"profile\",\"id\":202,\"text\":\"其它出库\",\"url\":\"/bill/other_out\",\"textEn\":\"Other Shipments\"},{\"component\":\"/bill/HeadquartersInList\",\"icon\":\"profile\",\"id\":270,\"text\":\"总部入库\",\"url\":\"/bill/headquarters_in\",\"textEn\":\"Headquarters Receipts\"}],\"icon\":\"hdd\",\"id\":239,\"text\":\"仓库管理\",\"url\":\"/billD\",\"textEn\":\"Warehouse Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/financial/MoneyInList\",\"icon\":\"profile\",\"id\":204,\"text\":\"收款单\",\"url\":\"/financial/money_in\",\"textEn\":\"Receipt Vouchers\"},{\"component\":\"/financial/MoneyOutList\",\"icon\":\"profile\",\"id\":205,\"text\":\"付款单\",\"url\":\"/financial/money_out\",\"textEn\":\"Payment Vouchers\"}],\"icon\":\"money-collect\",\"id\":44,\"text\":\"财务管理\",\"url\":\"/financial\",\"textEn\":\"Finance Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/asset/AssetDashboard\",\"icon\":\"dashboard\",\"id\":276,\"text\":\"资产汇总\",\"url\":\"/asset\",\"textEn\":\"Asset Overview\"},{\"component\":\"/asset/AssetList\",\"icon\":\"profile\",\"id\":273,\"text\":\"资产台账\",\"url\":\"/asset/ledger\",\"textEn\":\"Asset Ledger\"},{\"component\":\"/asset/DeviceList\",\"icon\":\"tool\",\"id\":274,\"text\":\"设备台账\",\"url\":\"/asset/device\",\"textEn\":\"Device Ledger\"},{\"component\":\"/asset/InventoryList\",\"icon\":\"scan\",\"id\":275,\"text\":\"资产盘点\",\"url\":\"/asset/inventory\",\"textEn\":\"Asset Inventory\"}],\"icon\":\"bank\",\"id\":272,\"text\":\"资产管理\",\"url\":\"/assetManagement\",\"textEn\":\"Asset Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/material/MaterialCategoryList\",\"icon\":\"profile\",\"id\":22,\"text\":\"商品类别\",\"url\":\"/material/material_category\",\"textEn\":\"Product Categories\"},{\"component\":\"/material/MaterialList\",\"icon\":\"profile\",\"id\":23,\"text\":\"商品信息\",\"url\":\"/material/material\",\"textEn\":\"Product Information\"},{\"component\":\"/system/UnitList\",\"icon\":\"profile\",\"id\":220,\"text\":\"多单位\",\"url\":\"/system/unit\",\"textEn\":\"Multiple Units\"},{\"component\":\"/material/MaterialAttributeList\",\"icon\":\"profile\",\"id\":247,\"text\":\"多属性\",\"url\":\"/material/material_attribute\",\"textEn\":\"Product Attributes\"}],\"icon\":\"shopping\",\"id\":21,\"text\":\"商品管理\",\"url\":\"/material\",\"textEn\":\"Product Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/AccountReport\",\"icon\":\"profile\",\"id\":207,\"text\":\"账户统计\",\"url\":\"/report/account_report\",\"textEn\":\"Account Summary\"},{\"component\":\"/report/RetailOutReport\",\"icon\":\"profile\",\"id\":259,\"text\":\"零售统计\",\"url\":\"/report/retail_out_report\",\"textEn\":\"Retail Summary\"},{\"component\":\"/report/BuyInReport\",\"icon\":\"profile\",\"id\":208,\"text\":\"采购统计\",\"url\":\"/report/buy_in_report\",\"textEn\":\"Purchase Summary\"},{\"component\":\"/report/SaleOutReport\",\"icon\":\"profile\",\"id\":209,\"text\":\"销售统计\",\"url\":\"/report/sale_out_report\",\"textEn\":\"Sales Summary\"},{\"component\":\"/report/InDetail\",\"icon\":\"profile\",\"id\":226,\"text\":\"入库明细\",\"url\":\"/report/in_detail\",\"textEn\":\"Inbound Details\"},{\"component\":\"/report/OutDetail\",\"icon\":\"profile\",\"id\":227,\"text\":\"出库明细\",\"url\":\"/report/out_detail\",\"textEn\":\"Outbound Details\"},{\"component\":\"/report/InMaterialCount\",\"icon\":\"profile\",\"id\":228,\"text\":\"入库汇总\",\"url\":\"/report/in_material_count\",\"textEn\":\"Inbound Summary\"},{\"component\":\"/report/OutMaterialCount\",\"icon\":\"profile\",\"id\":229,\"text\":\"出库汇总\",\"url\":\"/report/out_material_count\",\"textEn\":\"Outbound Summary\"},{\"component\":\"/report/InOutStockReport\",\"icon\":\"profile\",\"id\":59,\"text\":\"进销存统计\",\"url\":\"/report/in_out_stock_report\",\"textEn\":\"Inventory Transaction Summary\"},{\"component\":\"/report/CustomerAccount\",\"icon\":\"profile\",\"id\":235,\"text\":\"客户对账\",\"url\":\"/report/customer_account\",\"textEn\":\"Customer Reconciliation\"},{\"component\":\"/report/VendorAccount\",\"icon\":\"profile\",\"id\":237,\"text\":\"供应商对账\",\"url\":\"/report/vendor_account\",\"textEn\":\"Supplier Reconciliation\"},{\"component\":\"/report/StockWarningReport\",\"icon\":\"profile\",\"id\":244,\"text\":\"库存预警\",\"url\":\"/report/stock_warning_report\",\"textEn\":\"Stock Alerts\"}],\"icon\":\"pie-chart\",\"id\":198,\"text\":\"报表查询\",\"url\":\"/report\",\"textEn\":\"Reports\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/VendorList\",\"icon\":\"profile\",\"id\":25,\"text\":\"供应商信息\",\"url\":\"/system/vendor\",\"textEn\":\"Suppliers\"},{\"component\":\"/system/CustomerList\",\"icon\":\"profile\",\"id\":217,\"text\":\"客户信息\",\"url\":\"/system/customer\",\"textEn\":\"Customers\"},{\"component\":\"/system/MemberList\",\"icon\":\"profile\",\"id\":218,\"text\":\"会员信息\",\"url\":\"/system/member\",\"textEn\":\"Members\"},{\"component\":\"/system/CustomerCategoryList\",\"icon\":\"bars\",\"id\":267,\"text\":\"客户分类\",\"url\":\"/system/customerCategory\",\"textEn\":\"Customer Categories\"},{\"component\":\"/system/DepotList\",\"icon\":\"profile\",\"id\":26,\"text\":\"仓库信息\",\"url\":\"/system/depot\",\"textEn\":\"Warehouses\"},{\"component\":\"/system/InOutItemList\",\"icon\":\"profile\",\"id\":194,\"text\":\"收支项目\",\"url\":\"/system/in_out_item\",\"textEn\":\"Income and Expense Items\"},{\"component\":\"/system/AccountList\",\"icon\":\"profile\",\"id\":195,\"text\":\"结算账户\",\"url\":\"/system/account\",\"textEn\":\"Settlement Accounts\"},{\"component\":\"/system/PersonList\",\"icon\":\"profile\",\"id\":31,\"text\":\"操作人员管理\",\"url\":\"/system/person\",\"textEn\":\"Operators\"}],\"icon\":\"appstore\",\"id\":24,\"text\":\"基础资料\",\"url\":\"/systemA\",\"textEn\":\"Master Data\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/RoleList\",\"icon\":\"profile\",\"id\":13,\"text\":\"角色管理\",\"url\":\"/system/role\",\"textEn\":\"Role Management\"},{\"component\":\"/system/UserList\",\"icon\":\"profile\",\"id\":14,\"text\":\"用户管理\",\"url\":\"/system/user\",\"textEn\":\"User Management\"},{\"component\":\"/system/OrganizationList\",\"icon\":\"profile\",\"id\":243,\"text\":\"部门管理\",\"url\":\"/system/organization\",\"textEn\":\"Department Management\"},{\"component\":\"/system/LogList\",\"icon\":\"profile\",\"id\":15,\"text\":\"日志管理\",\"url\":\"/system/log\",\"textEn\":\"Log Management\"},{\"component\":\"/material/MaterialPropertyList\",\"icon\":\"profile\",\"id\":236,\"text\":\"商品属性\",\"url\":\"/material/material_property\",\"textEn\":\"Product Properties\"},{\"component\":\"/system/SystemConfigList\",\"icon\":\"profile\",\"id\":234,\"text\":\"系统配置\",\"url\":\"/system/system_config\",\"textEn\":\"System Configuration\"},{\"component\":\"/system/FunctionList\",\"icon\":\"profile\",\"id\":16,\"text\":\"菜单管理\",\"url\":\"/system/function\",\"textEn\":\"Resource Menus\"},{\"component\":\"/system/PluginList\",\"icon\":\"profile\",\"id\":245,\"text\":\"插件管理\",\"url\":\"/system/plugin\",\"textEn\":\"Plugin Management\"},{\"component\":\"/system/DictList\",\"icon\":\"profile\",\"id\":260,\"text\":\"字典管理\",\"url\":\"/system/dict\",\"textEn\":\"Dictionary Management\"},{\"component\":\"/system/PlatformConfigList\",\"icon\":\"profile\",\"id\":258,\"text\":\"平台配置\",\"url\":\"/system/platform_config\",\"textEn\":\"Platform Configuration\"}],\"icon\":\"setting\",\"id\":1,\"text\":\"系统管理\",\"url\":\"/system\",\"textEn\":\"System Management\"}]'); +INSERT INTO `tbl_log` VALUES (9370, 63, '接口日志', '43.152.142.64/1.9.116.218', '2026-10-02 07:39:42', 0, 'MaterialPropertyController.getAllList(..)', NULL, 'GET /apis/materialProperty/getAllList', '{}', '{\"code\":200,\"data\":[{\"anotherName\":\"扩展1\",\"id\":1,\"nativeName\":\"扩展1\"},{\"anotherName\":\"扩展2\",\"id\":2,\"nativeName\":\"扩展2\"},{\"anotherName\":\"扩展3\",\"id\":3,\"nativeName\":\"扩展3\"}]}'); +INSERT INTO `tbl_log` VALUES (9371, 63, '接口日志', '43.152.142.105/1.9.116.218', '2026-10-02 07:39:42', 0, 'UserController.getUserBtnByCurrentUser(..)', NULL, 'GET /apis/user/getUserBtnByCurrentUser', '{}', '{\"code\":200,\"data\":{\"userBtn\":[{\"btnStr\":\"8,1\",\"url\":\"/system/role\"},{\"btnStr\":\"1\",\"url\":\"/system/user\"},{\"btnStr\":\"1\",\"url\":\"/system/organization\"},{\"btnStr\":\"1\",\"url\":\"/material/material_property\"},{\"btnStr\":\"1\",\"url\":\"/system/system_config\"},{\"btnStr\":\"1\",\"url\":\"/system/function\"},{\"btnStr\":\"1\",\"url\":\"/system/plugin\"},{\"btnStr\":\"1\",\"url\":\"/material/material_category\"},{\"btnStr\":\"1,3\",\"url\":\"/material/material\"},{\"btnStr\":\"1\",\"url\":\"/system/unit\"},{\"btnStr\":\"1\",\"url\":\"/material/material_attribute\"},{\"btnStr\":\"1,3\",\"url\":\"/system/vendor\"},{\"btnStr\":\"1,3\",\"url\":\"/system/customer\"},{\"btnStr\":\"1,3\",\"url\":\"/system/member\"},{\"btnStr\":\"1\",\"url\":\"/system/depot\"},{\"btnStr\":\"1\",\"url\":\"/system/in_out_item\"},{\"btnStr\":\"1\",\"url\":\"/system/account\"},{\"btnStr\":\"1\",\"url\":\"/system/person\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_apply\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_out\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/delivery_plan\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/sale_shipment\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_out\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/order\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/requisition\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/report\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/giro\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/advance_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/allocation_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/assemble\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/headquarters_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/disassemble\"}]}}'); +INSERT INTO `tbl_log` VALUES (9372, 63, '接口日志', '43.174.32.18/1.9.116.218', '2026-10-02 07:39:42', 0, 'MsgController.getList(..)', NULL, 'GET /apis/msg/list', '{\"search\":\"{\\\"name\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9373, 63, '接口日志', '43.152.142.133/1.9.116.218', '2026-10-02 07:39:42', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0},{\"month\":\"2026-10\",\"inbound\":0,\"ordered\":0,\"shipped\":0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (9374, 63, '接口日志', '43.174.53.30/1.9.116.218', '2026-10-02 07:39:42', 0, 'MsgController.getMsgByStatus(..)', NULL, 'GET /apis/msg/getMsgByStatus', '{\"status\":\"1\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (9375, 63, '接口日志', '43.152.156.79/1.9.116.218', '2026-10-02 07:39:45', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (9376, 63, '接口日志', '43.174.53.17/1.9.116.218', '2026-10-02 07:39:45', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (9377, 63, '接口日志', '43.174.54.44/1.9.116.218', '2026-10-02 07:39:45', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (9378, 63, '接口日志', '43.152.142.84/1.9.116.218', '2026-10-02 07:39:45', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9379, 63, '接口日志', '43.152.142.41/1.9.116.218', '2026-10-02 07:39:45', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (9380, 63, '接口日志', '43.152.142.112/1.9.116.218', '2026-10-02 07:39:45', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9381, 63, '接口日志', '43.174.52.31/1.9.116.218', '2026-10-02 07:39:45', 0, 'PersonController.getPersonByNumType(..)', NULL, 'GET /apis/person/getPersonByNumType', '{\"typeNum\":\"1\"}', '[]'); +INSERT INTO `tbl_log` VALUES (9382, 63, '接口日志', '43.152.142.141/1.9.116.218', '2026-10-02 07:39:45', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"出库\\\",\\\"subType\\\":\\\"销售\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-07-02\\\",\\\"endTime\\\":\\\"2026-10-02\\\",\\\"createTimeRange\\\":[\\\"2026-07-01T16:00:00.000Z\\\",\\\"2026-10-01T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":32,\"rows\":[{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789718584000,\"creator\":63,\"debt\":808500.000000,\"defaultNumber\":\"XSCK00000001728\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":808500.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1720,\"lastDebt\":808500.000000,\"lastDeposit\":0.000000,\"linkNumber\":\"XSDD00000001726\",\"materialCount\":10000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK00000001728\",\"operTime\":1789732981000,\"operTimeStr\":\"2026-09-18 16:03:01\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"totalPrice\":735000.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1786305600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-87\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1671,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303506-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-87\",\"operTime\":1786305600000,\"operTimeStr\":\"2026-08-10 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1786305600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2159-86\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1670,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303506-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2159-86\",\"operTime\":1786305600000,\"operTimeStr\":\"2026-08-10 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2159\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785873600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-DO_2158-85\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1669,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-DO_2158-85\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:DO_2158\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785873600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-84\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1668,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-84\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785873600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-DO_2157-83\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1667,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-DO_2157-83\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:DO_2157\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785268800000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2150-69\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1665,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303480-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2150-69\",\"operTime\":1785268800000,\"operTimeStr\":\"2026-07-29 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2150\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784750400000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2142-68\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1664,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303480-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2142-68\",\"operTime\":1784750400000,\"operTimeStr\":\"2026-07-23 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2142\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784145600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-67\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1663,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-67\",\"operTime\":1784145600000,\"operTimeStr\":\"2026-07-16 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784145600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2134-66\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1662,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2134-66\",\"operTime\":1784145600000,\"operTimeStr\":\"2026-07-16 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2134\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (9383, 63, '接口日志', '43.174.55.40/1.9.116.218', '2026-10-02 07:39:45', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9384, 63, '接口日志', '43.152.142.128/1.9.116.218', '2026-10-02 07:39:56', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9385, 63, '接口日志', '43.152.156.79/1.9.116.218', '2026-10-02 07:39:56', 0, 'SupplierController.findBySelectRetail(..)', NULL, 'POST /apis/supplier/findBySelect_retail', '{\"jsonObject\":{\"limit\":1}}', '[]'); +INSERT INTO `tbl_log` VALUES (9386, 63, '接口日志', '43.174.32.23/1.9.116.218', '2026-10-02 07:39:56', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (9387, 63, '接口日志', '43.152.142.78/1.9.116.218', '2026-10-02 07:39:56', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"出库\\\",\\\"subType\\\":\\\"零售\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-07-02\\\",\\\"endTime\\\":\\\"2026-10-02\\\",\\\"createTimeRange\\\":[\\\"2026-07-01T16:00:00.000Z\\\",\\\"2026-10-01T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9388, 63, '接口日志', '43.174.32.34/1.9.116.218', '2026-10-02 07:39:56', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (9389, 63, '接口日志', '43.152.142.29/1.9.116.218', '2026-10-02 07:39:56', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9390, 63, '接口日志', '43.152.142.109/1.9.116.218', '2026-10-02 07:39:56', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (9391, 63, '接口日志', '43.174.32.12/1.9.116.218', '2026-10-02 07:39:56', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9392, 63, '接口日志', '43.152.142.32/1.9.116.218', '2026-10-02 07:39:58', 0, 'AssetInventoryController.operatorOptions()', NULL, 'GET /apis/assetInventory/operatorOptions', '{}', '{\"code\":200,\"data\":{\"rows\":[{\"loginName\":\"admin\",\"name\":\"admin\",\"id\":63},{\"loginName\":\"admin2\",\"name\":\"admin2\",\"id\":149}],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9393, 63, '接口日志', '43.174.54.14/1.9.116.218', '2026-10-02 07:39:58', 0, 'AssetInventoryController.list(..)', NULL, 'GET /apis/assetInventory/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":4,\"rows\":[{\"abnormalCount\":0,\"auditTime\":1790003845000,\"auditUserId\":149,\"completedAt\":1790003836000,\"createTime\":1790003320000,\"creator\":149,\"deadline\":1790258400000,\"deleteFlag\":\"0\",\"id\":6,\"inventoriedCount\":1,\"inventoryNo\":\"PD20260921190840893\",\"inventoryUserId\":63,\"inventoryUserName\":\"admin\",\"normalCount\":1,\"planName\":\"2026年09月资产设备专项盘点\",\"plannedAt\":1790053200000,\"scopeType\":\"DEVICE\",\"source\":\"MANUAL\",\"startedAt\":1790003819000,\"status\":\"CLOSED\",\"totalCount\":1,\"updateTime\":1790003848000,\"updater\":149},{\"abnormalCount\":0,\"createTime\":1790003280000,\"creator\":149,\"deadline\":1790258400000,\"deleteFlag\":\"0\",\"id\":5,\"inventoriedCount\":0,\"inventoryNo\":\"PD20260921190800418\",\"inventoryUserId\":149,\"inventoryUserName\":\"张三\",\"normalCount\":0,\"planName\":\"2026年09月资产设备专项盘点\",\"plannedAt\":1790053200000,\"remark\":\"进行盘点\",\"scopeType\":\"ALL\",\"source\":\"MANUAL\",\"status\":\"ACCEPTED\",\"totalCount\":2,\"updateTime\":1790003293000,\"updater\":149},{\"abnormalCount\":0,\"completedAt\":1790002875000,\"createTime\":1789995983000,\"creator\":63,\"deadline\":1790258400000,\"deleteFlag\":\"0\",\"id\":4,\"inventoriedCount\":8,\"inventoryNo\":\"PD20260921170623856\",\"inventoryUserId\":149,\"inventoryUserName\":\"张三\",\"normalCount\":0,\"planName\":\"2026年09月资产设备专项盘点\",\"plannedAt\":1790053200000,\"remark\":\"进行盘点\",\"scopeType\":\"ASSET\",\"source\":\"MANUAL\",\"startedAt\":1790002559000,\"status\":\"CLOSED\",\"totalCount\":8,\"updateTime\":1790003793000,\"updater\":149},{\"abnormalCount\":0,\"createTime\":1789722750000,\"creator\":63,\"deadline\":1789999200000,\"deleteFlag\":\"0\",\"id\":1,\"inventoriedCount\":1,\"inventoryNo\":\"PD20260918131230171\",\"inventoryUserId\":36,\"inventoryUserName\":\"张伟\",\"normalCount\":0,\"planName\":\"2026年09月资产设备专项盘点\",\"plannedAt\":1789794000000,\"remark\":\"进行盘点\",\"scopeType\":\"DEVICE\",\"source\":\"MANUAL\",\"startedAt\":1789723142000,\"status\":\"IN_PROGRESS\",\"totalCount\":3,\"updateTime\":1789986959000,\"updater\":63}]}}'); +INSERT INTO `tbl_log` VALUES (9394, 63, '接口日志', '43.152.142.64/1.9.116.218', '2026-10-02 07:40:00', 0, 'AssetController.categoryOptions()', NULL, 'GET /apis/asset/category/options', '{}', '{\"code\":200,\"data\":{\"rows\":[{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"尚未归入具体种类的资产\",\"updateTime\":1790613193000,\"categoryCode\":\"UNCATEGORIZED\",\"id\":4,\"sort\":10,\"categoryName\":\"未分类\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System 硬件台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"HARDWARE\",\"id\":5,\"sort\":20,\"categoryName\":\"硬件资产\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System 软件台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"SOFTWARE\",\"id\":6,\"sort\":30,\"categoryName\":\"软件资产\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System SIM 卡台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"SIM_CARD\",\"id\":7,\"sort\":40,\"categoryName\":\"SIM卡\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_01BF8DA563A0\",\"id\":11,\"sort\":100,\"categoryName\":\"生产设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_7129859760C3\",\"id\":12,\"sort\":100,\"categoryName\":\"检测设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_9F38069B30A1\",\"id\":13,\"sort\":100,\"categoryName\":\"动力设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_75F489029B11\",\"id\":14,\"sort\":100,\"categoryName\":\"IT设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_3DDFE01CA0B8\",\"id\":15,\"sort\":100,\"categoryName\":\"物流设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_B5D44F2B039A\",\"id\":16,\"sort\":100,\"categoryName\":\"工装设备\",\"enabled\":true}],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9395, 63, '接口日志', '43.152.142.105/1.9.116.218', '2026-10-02 07:40:00', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":255,\"rows\":[{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019200694297052\",\"assetName\":\"SIM卡 896019200694297052\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"6\",\"externalSource\":\"SIM\",\"id\":270,\"keeper\":\"UITM Dungun\",\"location\":\"SMT (???)\",\"originalValue\":0.000000,\"quantity\":1.000000,\"source\":\"SAS\",\"specification\":\"183.171.146.98\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019190221500578\",\"assetName\":\"SIM卡 896019190221500578\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"5\",\"externalSource\":\"SIM\",\"id\":269,\"keeper\":\"SMT\",\"location\":\"UITM Dungun\",\"originalValue\":0.000000,\"purchaseDate\":1608062400000,\"quantity\":1.000000,\"remark\":\"启用日期: 2020-12-16\",\"source\":\"SAS\",\"specification\":\"183.171.14.125\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019190221500576\",\"assetName\":\"SIM卡 896019190221500576\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"1\",\"externalSource\":\"SIM\",\"id\":268,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1608062400000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2020-12-16\",\"source\":\"SAS\",\"specification\":\"183.171.144.65\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607778\",\"assetName\":\"SIM卡 896019210381607778\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"2\",\"externalSource\":\"SIM\",\"id\":267,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1711051200000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2024-03-22\",\"source\":\"SAS\",\"specification\":\"183.171.15.60\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607781\",\"assetName\":\"SIM卡 896019210381607781\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"9\",\"externalSource\":\"SIM\",\"id\":266,\"keeper\":\"SMT\",\"location\":\"SMT (RnD) Modem RnD\",\"originalValue\":0.000000,\"purchaseDate\":1711051200000,\"quantity\":1.000000,\"remark\":\"设备序列号: 21070014;电表序列号: 320910015;启用日期: 2024-03-22\",\"source\":\"SAS\",\"specification\":\"183.171.5.142 / KM08-LTE Modem / 21070014\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607777\",\"assetName\":\"SIM卡 896019210381607777\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"3\",\"externalSource\":\"SIM\",\"id\":265,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1720987200000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2024-07-15\",\"source\":\"SAS\",\"specification\":\"183.171.40.182\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607782\",\"assetName\":\"SIM卡 896019210381607782\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"4\",\"externalSource\":\"SIM\",\"id\":264,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1720987200000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2024-07-15\",\"source\":\"SAS\",\"specification\":\"183.171.40.117\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607784\",\"assetName\":\"SIM卡 896019210381607784\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"7\",\"externalSource\":\"SIM\",\"id\":263,\"keeper\":\"SMT\",\"location\":\"SMT (Modem-Production)\",\"originalValue\":0.000000,\"purchaseDate\":1727553600000,\"quantity\":1.000000,\"remark\":\"设备序列号: 20041004;启用日期: 2024-09-29\",\"source\":\"SAS\",\"specification\":\"183.171.50.5 / KM08-LTE Modem / 20041004\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607783\",\"assetName\":\"SIM卡 896019210381607783\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"8\",\"externalSource\":\"SIM\",\"id\":262,\"keeper\":\"SMT\",\"location\":\"SMT (RnD) Modem Store\",\"originalValue\":0.000000,\"purchaseDate\":1727553600000,\"quantity\":1.000000,\"remark\":\"设备序列号: 2403005;启用日期: 2024-09-29\",\"source\":\"SAS\",\"specification\":\"183.171.50.6 / KM08-LTE Modem / 2403005\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607785\",\"assetName\":\"SIM卡 896019210381607785\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"10\",\"externalSource\":\"SIM\",\"id\":261,\"keeper\":\"SMT\",\"location\":\"SMT (RnD) Alyaa\",\"originalValue\":0.000000,\"purchaseDate\":1766433600000,\"quantity\":1.000000,\"remark\":\"设备序列号: 21070011;电表序列号: 320910014;启用日期: 2025-12-23\",\"source\":\"SAS\",\"specification\":\"183.171.151.171 / KM08-LTE Modem / 21070011\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000}]}}'); +INSERT INTO `tbl_log` VALUES (9396, NULL, '接口日志', '43.152.142.31/1.9.116.218', '2026-10-06 06:00:50', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (9397, NULL, '接口日志', '43.152.142.62/1.9.116.218', '2026-10-06 06:00:50', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (9398, NULL, '接口日志', '43.152.142.40/1.9.116.218', '2026-10-06 06:00:53', 0, 'PlatformConfigController.getPlatformCheckcodeFlag(..)', NULL, 'GET /apis/platformConfig/getPlatform/checkcodeFlag', '{}', '\"1\"'); +INSERT INTO `tbl_log` VALUES (9399, NULL, '接口日志', '43.174.32.13/1.9.116.218', '2026-10-06 06:00:53', 0, 'UserController.randomImage(..)', NULL, 'GET /apis/user/randomImage', '{}', '{\"code\":200,\"data\":{\"base64\":\"data:image/jpg;base64,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\",\"uuid\":\"378a9538c1c14c73b21fb36d581b305a\"}}'); +INSERT INTO `tbl_log` VALUES (9400, 63, '用户', '43.152.142.45/1.9.116.218', '2026-10-06 06:01:18', 0, '登录admin', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (9401, NULL, '接口日志', '43.152.142.45/1.9.116.218', '2026-10-06 06:01:18', 0, 'UserController.login(..)', NULL, 'POST /apis/user/login', '{\"userParam\":{\"code\":\"5ra6\",\"loginName\":\"admin\",\"password\":\"******\",\"uuid\":\"378a9538c1c14c73b21fb36d581b305a\"}}', '{\"code\":200,\"data\":{\"pwdSimple\":\"******\",\"user\":{\"deleteFlag\":\"0\",\"description\":\"\",\"email\":\"666666@qq.com\",\"id\":63,\"ismanager\":1,\"isystem\":1,\"leaderFlag\":\"0\",\"loginName\":\"admin\",\"password\":\"******\",\"phonenum\":\"1123123123132\",\"position\":\"主管\",\"status\":0,\"tenantId\":63,\"username\":\"admin\"},\"msgTip\":\"user can login\",\"token\":\"******\"}}'); +INSERT INTO `tbl_log` VALUES (9402, 63, '接口日志', '43.152.142.45/1.9.116.218', '2026-10-06 06:01:18', 0, 'FunctionController.findMenuByPNumber(..)', NULL, 'POST /apis/function/findMenuByPNumber', '{\"jsonObject\":{\"userId\":63,\"pNumber\":0}}', '[{\"component\":\"/layouts/TabLayout\",\"icon\":\"home\",\"id\":0,\"text\":\"首页\",\"url\":\"/dashboard/analysis\",\"textEn\":\"Home\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/SaleOrderList\",\"icon\":\"profile\",\"id\":242,\"text\":\"销售订单\",\"url\":\"/bill/sale_order\",\"textEn\":\"Sales Orders\"},{\"component\":\"/bill/SaleOutList\",\"icon\":\"profile\",\"id\":41,\"text\":\"销售出库\",\"url\":\"/bill/sale_out\",\"textEn\":\"Sales Shipments\"},{\"component\":\"/bill/DeliveryPlanList\",\"icon\":\"profile\",\"id\":271,\"text\":\"交货计划管理\",\"url\":\"/bill/delivery_plan\",\"textEn\":\"Delivery Plans\"},{\"component\":\"/bill/SaleShipmentList\",\"icon\":\"car\",\"id\":268,\"text\":\"发货管理\",\"url\":\"/bill/sale_shipment\",\"textEn\":\"Shipment Management\"},{\"component\":\"/bill/SaleBackList\",\"icon\":\"profile\",\"id\":200,\"text\":\"销售退货\",\"url\":\"/bill/sale_back\",\"textEn\":\"Sales Returns\"},{\"component\":\"/bill/RetailOutList\",\"icon\":\"profile\",\"id\":210,\"text\":\"零售出库\",\"url\":\"/bill/retail_out\",\"textEn\":\"Retail Shipments\"},{\"component\":\"/bill/RetailBackList\",\"icon\":\"profile\",\"id\":211,\"text\":\"零售退货\",\"url\":\"/bill/retail_back\",\"textEn\":\"Retail Returns\"}],\"icon\":\"shopping-cart\",\"id\":38,\"text\":\"销售管理\",\"url\":\"/billB\",\"textEn\":\"Sales Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/PurchaseApplyList\",\"icon\":\"profile\",\"id\":261,\"text\":\"请购单\",\"url\":\"/bill/purchase_apply\",\"textEn\":\"Purchase Requisitions\"},{\"component\":\"/bill/PurchaseOrderList\",\"icon\":\"profile\",\"id\":241,\"text\":\"采购订单\",\"url\":\"/bill/purchase_order\",\"textEn\":\"Purchase Orders\"},{\"component\":\"/bill/PurchaseInList\",\"icon\":\"profile\",\"id\":33,\"text\":\"采购入库\",\"url\":\"/bill/purchase_in\",\"textEn\":\"Purchase Receipts\"},{\"component\":\"/bill/PurchaseBackList\",\"icon\":\"profile\",\"id\":199,\"text\":\"采购退货\",\"url\":\"/bill/purchase_back\",\"textEn\":\"Purchase Returns\"}],\"icon\":\"retweet\",\"id\":32,\"text\":\"采购管理\",\"url\":\"/bill\",\"textEn\":\"Purchase Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/production/PackBomList\",\"icon\":\"profile\",\"id\":263,\"text\":\"生产方案\",\"url\":\"/production/pack_bom\",\"textEn\":\"Production BOMs\"},{\"component\":\"/production/OrderList\",\"icon\":\"profile\",\"id\":264,\"text\":\"生产工单\",\"url\":\"/production/order\",\"textEn\":\"Production Orders\"},{\"component\":\"/production/RequisitionList\",\"icon\":\"profile\",\"id\":265,\"text\":\"领料管理\",\"url\":\"/production/requisition\",\"textEn\":\"Material Requisitions\"},{\"component\":\"/production/ReportList\",\"icon\":\"profile\",\"id\":266,\"text\":\"完工报工\",\"url\":\"/production/report\",\"textEn\":\"Production Reports\"}],\"icon\":\"cluster\",\"id\":262,\"text\":\"生产管理\",\"url\":\"/production\",\"textEn\":\"Production Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/MaterialStock\",\"icon\":\"profile\",\"id\":246,\"text\":\"商品库存\",\"url\":\"/report/material_stock\",\"textEn\":\"Product Inventory\"},{\"component\":\"/bill/OtherInList\",\"icon\":\"profile\",\"id\":201,\"text\":\"其它入库\",\"url\":\"/bill/other_in\",\"textEn\":\"Other Receipts\"},{\"component\":\"/bill/OtherOutList\",\"icon\":\"profile\",\"id\":202,\"text\":\"其它出库\",\"url\":\"/bill/other_out\",\"textEn\":\"Other Shipments\"},{\"component\":\"/bill/HeadquartersInList\",\"icon\":\"profile\",\"id\":270,\"text\":\"总部入库\",\"url\":\"/bill/headquarters_in\",\"textEn\":\"Headquarters Receipts\"}],\"icon\":\"hdd\",\"id\":239,\"text\":\"仓库管理\",\"url\":\"/billD\",\"textEn\":\"Warehouse Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/financial/MoneyInList\",\"icon\":\"profile\",\"id\":204,\"text\":\"收款单\",\"url\":\"/financial/money_in\",\"textEn\":\"Receipt Vouchers\"},{\"component\":\"/financial/MoneyOutList\",\"icon\":\"profile\",\"id\":205,\"text\":\"付款单\",\"url\":\"/financial/money_out\",\"textEn\":\"Payment Vouchers\"}],\"icon\":\"money-collect\",\"id\":44,\"text\":\"财务管理\",\"url\":\"/financial\",\"textEn\":\"Finance Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/asset/AssetDashboard\",\"icon\":\"dashboard\",\"id\":276,\"text\":\"资产汇总\",\"url\":\"/asset\",\"textEn\":\"Asset Overview\"},{\"component\":\"/asset/AssetList\",\"icon\":\"profile\",\"id\":273,\"text\":\"资产台账\",\"url\":\"/asset/ledger\",\"textEn\":\"Asset Ledger\"},{\"component\":\"/asset/DeviceList\",\"icon\":\"tool\",\"id\":274,\"text\":\"设备台账\",\"url\":\"/asset/device\",\"textEn\":\"Device Ledger\"},{\"component\":\"/asset/InventoryList\",\"icon\":\"scan\",\"id\":275,\"text\":\"资产盘点\",\"url\":\"/asset/inventory\",\"textEn\":\"Asset Inventory\"}],\"icon\":\"bank\",\"id\":272,\"text\":\"资产管理\",\"url\":\"/assetManagement\",\"textEn\":\"Asset Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/material/MaterialCategoryList\",\"icon\":\"profile\",\"id\":22,\"text\":\"商品类别\",\"url\":\"/material/material_category\",\"textEn\":\"Product Categories\"},{\"component\":\"/material/MaterialList\",\"icon\":\"profile\",\"id\":23,\"text\":\"商品信息\",\"url\":\"/material/material\",\"textEn\":\"Product Information\"},{\"component\":\"/system/UnitList\",\"icon\":\"profile\",\"id\":220,\"text\":\"多单位\",\"url\":\"/system/unit\",\"textEn\":\"Multiple Units\"},{\"component\":\"/material/MaterialAttributeList\",\"icon\":\"profile\",\"id\":247,\"text\":\"多属性\",\"url\":\"/material/material_attribute\",\"textEn\":\"Product Attributes\"}],\"icon\":\"shopping\",\"id\":21,\"text\":\"商品管理\",\"url\":\"/material\",\"textEn\":\"Product Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/AccountReport\",\"icon\":\"profile\",\"id\":207,\"text\":\"账户统计\",\"url\":\"/report/account_report\",\"textEn\":\"Account Summary\"},{\"component\":\"/report/RetailOutReport\",\"icon\":\"profile\",\"id\":259,\"text\":\"零售统计\",\"url\":\"/report/retail_out_report\",\"textEn\":\"Retail Summary\"},{\"component\":\"/report/BuyInReport\",\"icon\":\"profile\",\"id\":208,\"text\":\"采购统计\",\"url\":\"/report/buy_in_report\",\"textEn\":\"Purchase Summary\"},{\"component\":\"/report/SaleOutReport\",\"icon\":\"profile\",\"id\":209,\"text\":\"销售统计\",\"url\":\"/report/sale_out_report\",\"textEn\":\"Sales Summary\"},{\"component\":\"/report/InDetail\",\"icon\":\"profile\",\"id\":226,\"text\":\"入库明细\",\"url\":\"/report/in_detail\",\"textEn\":\"Inbound Details\"},{\"component\":\"/report/OutDetail\",\"icon\":\"profile\",\"id\":227,\"text\":\"出库明细\",\"url\":\"/report/out_detail\",\"textEn\":\"Outbound Details\"},{\"component\":\"/report/InMaterialCount\",\"icon\":\"profile\",\"id\":228,\"text\":\"入库汇总\",\"url\":\"/report/in_material_count\",\"textEn\":\"Inbound Summary\"},{\"component\":\"/report/OutMaterialCount\",\"icon\":\"profile\",\"id\":229,\"text\":\"出库汇总\",\"url\":\"/report/out_material_count\",\"textEn\":\"Outbound Summary\"},{\"component\":\"/report/InOutStockReport\",\"icon\":\"profile\",\"id\":59,\"text\":\"进销存统计\",\"url\":\"/report/in_out_stock_report\",\"textEn\":\"Inventory Transaction Summary\"},{\"component\":\"/report/CustomerAccount\",\"icon\":\"profile\",\"id\":235,\"text\":\"客户对账\",\"url\":\"/report/customer_account\",\"textEn\":\"Customer Reconciliation\"},{\"component\":\"/report/VendorAccount\",\"icon\":\"profile\",\"id\":237,\"text\":\"供应商对账\",\"url\":\"/report/vendor_account\",\"textEn\":\"Supplier Reconciliation\"},{\"component\":\"/report/StockWarningReport\",\"icon\":\"profile\",\"id\":244,\"text\":\"库存预警\",\"url\":\"/report/stock_warning_report\",\"textEn\":\"Stock Alerts\"}],\"icon\":\"pie-chart\",\"id\":198,\"text\":\"报表查询\",\"url\":\"/report\",\"textEn\":\"Reports\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/VendorList\",\"icon\":\"profile\",\"id\":25,\"text\":\"供应商信息\",\"url\":\"/system/vendor\",\"textEn\":\"Suppliers\"},{\"component\":\"/system/CustomerList\",\"icon\":\"profile\",\"id\":217,\"text\":\"客户信息\",\"url\":\"/system/customer\",\"textEn\":\"Customers\"},{\"component\":\"/system/MemberList\",\"icon\":\"profile\",\"id\":218,\"text\":\"会员信息\",\"url\":\"/system/member\",\"textEn\":\"Members\"},{\"component\":\"/system/CustomerCategoryList\",\"icon\":\"bars\",\"id\":267,\"text\":\"客户分类\",\"url\":\"/system/customerCategory\",\"textEn\":\"Customer Categories\"},{\"component\":\"/system/DepotList\",\"icon\":\"profile\",\"id\":26,\"text\":\"仓库信息\",\"url\":\"/system/depot\",\"textEn\":\"Warehouses\"},{\"component\":\"/system/InOutItemList\",\"icon\":\"profile\",\"id\":194,\"text\":\"收支项目\",\"url\":\"/system/in_out_item\",\"textEn\":\"Income and Expense Items\"},{\"component\":\"/system/AccountList\",\"icon\":\"profile\",\"id\":195,\"text\":\"结算账户\",\"url\":\"/system/account\",\"textEn\":\"Settlement Accounts\"},{\"component\":\"/system/PersonList\",\"icon\":\"profile\",\"id\":31,\"text\":\"操作人员管理\",\"url\":\"/system/person\",\"textEn\":\"Operators\"}],\"icon\":\"appstore\",\"id\":24,\"text\":\"基础资料\",\"url\":\"/systemA\",\"textEn\":\"Master Data\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/RoleList\",\"icon\":\"profile\",\"id\":13,\"text\":\"角色管理\",\"url\":\"/system/role\",\"textEn\":\"Role Management\"},{\"component\":\"/system/UserList\",\"icon\":\"profile\",\"id\":14,\"text\":\"用户管理\",\"url\":\"/system/user\",\"textEn\":\"User Management\"},{\"component\":\"/system/OrganizationList\",\"icon\":\"profile\",\"id\":243,\"text\":\"部门管理\",\"url\":\"/system/organization\",\"textEn\":\"Department Management\"},{\"component\":\"/system/LogList\",\"icon\":\"profile\",\"id\":15,\"text\":\"日志管理\",\"url\":\"/system/log\",\"textEn\":\"Log Management\"},{\"component\":\"/material/MaterialPropertyList\",\"icon\":\"profile\",\"id\":236,\"text\":\"商品属性\",\"url\":\"/material/material_property\",\"textEn\":\"Product Properties\"},{\"component\":\"/system/SystemConfigList\",\"icon\":\"profile\",\"id\":234,\"text\":\"系统配置\",\"url\":\"/system/system_config\",\"textEn\":\"System Configuration\"},{\"component\":\"/system/FunctionList\",\"icon\":\"profile\",\"id\":16,\"text\":\"菜单管理\",\"url\":\"/system/function\",\"textEn\":\"Resource Menus\"},{\"component\":\"/system/PluginList\",\"icon\":\"profile\",\"id\":245,\"text\":\"插件管理\",\"url\":\"/system/plugin\",\"textEn\":\"Plugin Management\"},{\"component\":\"/system/DictList\",\"icon\":\"profile\",\"id\":260,\"text\":\"字典管理\",\"url\":\"/system/dict\",\"textEn\":\"Dictionary Management\"},{\"component\":\"/system/PlatformConfigList\",\"icon\":\"profile\",\"id\":258,\"text\":\"平台配置\",\"url\":\"/system/platform_config\",\"textEn\":\"Platform Configuration\"}],\"icon\":\"setting\",\"id\":1,\"text\":\"系统管理\",\"url\":\"/system\",\"textEn\":\"System Management\"}]'); +INSERT INTO `tbl_log` VALUES (9403, 63, '接口日志', '43.174.54.27/1.9.116.218', '2026-10-06 06:01:18', 0, 'MaterialPropertyController.getAllList(..)', NULL, 'GET /apis/materialProperty/getAllList', '{}', '{\"code\":200,\"data\":[{\"anotherName\":\"扩展1\",\"id\":1,\"nativeName\":\"扩展1\"},{\"anotherName\":\"扩展2\",\"id\":2,\"nativeName\":\"扩展2\"},{\"anotherName\":\"扩展3\",\"id\":3,\"nativeName\":\"扩展3\"}]}'); +INSERT INTO `tbl_log` VALUES (9404, 63, '接口日志', '43.152.142.132/1.9.116.218', '2026-10-06 06:01:18', 0, 'UserController.getUserBtnByCurrentUser(..)', NULL, 'GET /apis/user/getUserBtnByCurrentUser', '{}', '{\"code\":200,\"data\":{\"userBtn\":[{\"btnStr\":\"8,1\",\"url\":\"/system/role\"},{\"btnStr\":\"1\",\"url\":\"/system/user\"},{\"btnStr\":\"1\",\"url\":\"/system/organization\"},{\"btnStr\":\"1\",\"url\":\"/material/material_property\"},{\"btnStr\":\"1\",\"url\":\"/system/system_config\"},{\"btnStr\":\"1\",\"url\":\"/system/function\"},{\"btnStr\":\"1\",\"url\":\"/system/plugin\"},{\"btnStr\":\"1\",\"url\":\"/material/material_category\"},{\"btnStr\":\"1,3\",\"url\":\"/material/material\"},{\"btnStr\":\"1\",\"url\":\"/system/unit\"},{\"btnStr\":\"1\",\"url\":\"/material/material_attribute\"},{\"btnStr\":\"1,3\",\"url\":\"/system/vendor\"},{\"btnStr\":\"1,3\",\"url\":\"/system/customer\"},{\"btnStr\":\"1,3\",\"url\":\"/system/member\"},{\"btnStr\":\"1\",\"url\":\"/system/depot\"},{\"btnStr\":\"1\",\"url\":\"/system/in_out_item\"},{\"btnStr\":\"1\",\"url\":\"/system/account\"},{\"btnStr\":\"1\",\"url\":\"/system/person\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_apply\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_out\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/delivery_plan\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/sale_shipment\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_out\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/order\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/requisition\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/report\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/giro\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/advance_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/allocation_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/assemble\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/headquarters_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/disassemble\"}]}}'); +INSERT INTO `tbl_log` VALUES (9405, 63, '接口日志', '43.152.142.31/1.9.116.218', '2026-10-06 06:01:18', 0, 'MsgController.getMsgByStatus(..)', NULL, 'GET /apis/msg/getMsgByStatus', '{\"status\":\"1\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (9406, 63, '接口日志', '43.152.142.86/1.9.116.218', '2026-10-06 06:01:18', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0},{\"month\":\"2026-10\",\"inbound\":0,\"ordered\":0,\"shipped\":0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (9407, 63, '接口日志', '43.152.142.43/1.9.116.218', '2026-10-06 06:01:18', 0, 'MsgController.getList(..)', NULL, 'GET /apis/msg/list', '{\"search\":\"{\\\"name\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9408, 63, '接口日志', '43.152.142.118/1.9.116.218', '2026-10-06 06:01:30', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9409, 63, '接口日志', '43.152.142.83/1.9.116.218', '2026-10-06 06:01:30', 0, 'ProductionOrderController.getList(..)', NULL, 'GET /apis/productionOrder/list', '{\"search\":\"{\\\"orderNumber\\\":\\\"\\\",\\\"sourceNumber\\\":\\\"\\\",\\\"productMaterialParam\\\":\\\"\\\",\\\"beginTime\\\":\\\"\\\",\\\"endTime\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"auditBy\":63,\"auditByName\":\"admin\",\"auditTime\":1789719775000,\"bomId\":18,\"bomName\":\"v1.0\",\"createTime\":1789719619000,\"creator\":63,\"creatorName\":\"admin\",\"deleteFlag\":\"0\",\"finishedQuantity\":0.000000,\"id\":11,\"orderNumber\":\"GD20260918122018493\",\"orderQuantity\":10000.000000,\"outputMaterialExtendId\":123,\"outputMaterialId\":703,\"outputMaterialName\":\"1PH WS79\",\"outputQuantity\":10000.000000,\"planEndDate\":1790280000000,\"planStartDate\":1789675200000,\"priority\":\"0\",\"productMaterialExtendId\":123,\"productMaterialId\":703,\"releaseBy\":63,\"releaseTime\":1789719775000,\"remark\":\"\",\"sourceId\":1719,\"sourceNumber\":\"XSDD00000001726\",\"sourceType\":\"销售订单\",\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (9410, 63, '接口日志', '43.152.142.139/1.9.116.218', '2026-10-06 06:01:32', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9411, 63, '接口日志', '43.174.51.49/1.9.116.218', '2026-10-06 06:01:32', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9412, 63, '接口日志', '43.152.142.33/1.9.116.218', '2026-10-06 06:01:32', 0, 'ProductionRequisitionController.getList(..)', NULL, 'GET /apis/productionRequisition/list', '{\"search\":\"{\\\"requisitionNumber\\\":\\\"\\\",\\\"orderNumber\\\":\\\"\\\",\\\"beginTime\\\":\\\"\\\",\\\"endTime\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"confirmBy\":63,\"confirmByName\":\"admin\",\"confirmTime\":1790242827000,\"createTime\":1789720317000,\"creator\":63,\"creatorName\":\"admin\",\"deleteFlag\":\"0\",\"depotId\":25,\"depotName\":\"半成品仓库\",\"id\":9,\"itemCount\":1,\"materialsList\":\"MD-4G111(VF) 包装\",\"orderId\":11,\"orderNumber\":\"GD20260918122018493\",\"requisitionNumber\":\"LL20260918123156921\",\"status\":\"1\"},{\"createTime\":1789719809000,\"creator\":63,\"creatorName\":\"admin\",\"deleteFlag\":\"0\",\"depotId\":25,\"depotName\":\"半成品仓库\",\"id\":8,\"itemCount\":1,\"materialsList\":\"MD-4G111(VF) 包装\",\"orderId\":11,\"orderNumber\":\"GD20260918122018493\",\"remark\":\"11\",\"requisitionNumber\":\"LL20260918122329111\",\"status\":\"2\"}]}}'); +INSERT INTO `tbl_log` VALUES (9413, 63, '接口日志', '43.174.32.19/1.9.116.218', '2026-10-06 06:02:42', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9414, 63, '接口日志', '43.152.142.68/1.9.116.218', '2026-10-06 06:02:42', 0, 'ProductionReportController.getList(..)', NULL, 'GET /apis/productionReport/list', '{\"search\":\"{\\\"reportNumber\\\":\\\"\\\",\\\"orderNumber\\\":\\\"\\\",\\\"beginTime\\\":\\\"\\\",\\\"endTime\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9415, 63, '接口日志', '43.174.52.68/1.9.116.218', '2026-10-06 06:02:45', 0, 'PackBomController.getList(..)', NULL, 'GET /apis/packBom/list', '{\"search\":\"{\\\"bomNumber\\\":\\\"\\\",\\\"bomName\\\":\\\"\\\",\\\"productMaterialParam\\\":\\\"\\\",\\\"outputMaterialParam\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"bomName\":\"v1.0\",\"bomNumber\":\"BOM00000001735\",\"createTime\":1789719259000,\"creator\":63,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"itemCount\":1,\"outputMaterialExtendId\":123,\"outputMaterialId\":703,\"outputMaterialName\":\"1PH WS79\",\"outputNumber\":1.000000,\"productMaterialExtendId\":123,\"productMaterialId\":703,\"version\":\"v1.0\"}]}}'); +INSERT INTO `tbl_log` VALUES (9416, 63, '接口日志', '43.152.142.108/1.9.116.218', '2026-10-06 06:03:04', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9417, 63, '接口日志', '43.152.142.118/1.9.116.218', '2026-10-06 06:03:04', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9418, 63, '接口日志', '43.152.157.88/1.9.116.218', '2026-10-06 06:03:05', 0, 'SupplierController.findBySelectSup(..)', NULL, 'POST /apis/supplier/findBySelect_sup', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司\",\"id\":89}]'); +INSERT INTO `tbl_log` VALUES (9419, 63, '接口日志', '43.174.53.48/1.9.116.218', '2026-10-06 06:03:05', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (9420, 63, '接口日志', '43.152.142.40/1.9.116.218', '2026-10-06 06:03:05', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (9421, 63, '接口日志', '43.152.142.139/1.9.116.218', '2026-10-06 06:03:05', 0, 'DepotHeadController.waitBillCount(..)', NULL, 'GET /apis/depotHead/waitBillCount', '{\"search\":\"{\\\"type\\\":\\\"入库\\\",\\\"subType\\\":\\\"采购,销售退货\\\",\\\"status\\\":\\\"1,3\\\"}\"}', '{\"code\":200,\"data\":{\"total\":47,\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9422, 63, '接口日志', '43.174.54.27/1.9.116.218', '2026-10-06 06:03:05', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"入库\\\",\\\"subType\\\":\\\"总部入库\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-07-06\\\",\\\"endTime\\\":\\\"2026-10-06\\\",\\\"createTimeRange\\\":[\\\"2026-07-05T16:00:00.000Z\\\",\\\"2026-10-05T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":33,\"rows\":[{\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789718802000,\"creator\":63,\"debt\":595000.000000,\"defaultNumber\":\"SM2609180001\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discountLastMoney\":595000.000000,\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1721,\"lastDebt\":595000.000000,\"materialCount\":10000.000000,\"materialsList\":\"1PH WS79\",\"number\":\"SM2609180001\",\"operTime\":1789733163000,\"operTimeStr\":\"2026-09-18 16:06:03\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"totalPrice\":595000.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1786046400000,\"creator\":63,\"debt\":183.600000,\"defaultNumber\":\"SM2608070007\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":183.600000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1423,\"lastDebt\":183.600000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":1836.000000,\"materialsList\":\"MT-3NSXL(VC)\",\"number\":\"SM2608070007\",\"operTime\":1786046400000,\"operTimeStr\":\"2026-08-07 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":183.600000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1786046400000,\"creator\":63,\"debt\":2077650.000000,\"defaultNumber\":\"SM2608070002\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":2077650.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1422,\"lastDebt\":2077650.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":9500.000000,\"materialsList\":\"DDSD1226-T49(VB)\",\"number\":\"SM2608070002\",\"operTime\":1786046400000,\"operTimeStr\":\"2026-08-07 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":2077650.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1785960000000,\"creator\":63,\"debt\":91854.000000,\"defaultNumber\":\"SM2608060005\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":91854.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1421,\"lastDebt\":91854.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":420.000000,\"materialsList\":\"DDSD1226-T49(VB)\",\"number\":\"SM2608060005\",\"operTime\":1785960000000,\"operTimeStr\":\"2026-08-06 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":91854.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1785960000000,\"creator\":63,\"debt\":816.000000,\"defaultNumber\":\"SM2608060004\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":816.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1420,\"lastDebt\":816.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":8160.000000,\"materialsList\":\"MT-3NSXL(VC)\",\"number\":\"SM2608060004\",\"operTime\":1785960000000,\"operTimeStr\":\"2026-08-06 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":816.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1784836800000,\"creator\":63,\"debt\":91854.000000,\"defaultNumber\":\"SM2607240005\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":91854.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1419,\"lastDebt\":91854.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":420.000000,\"materialsList\":\"DDSD1226-T49(VB)\",\"number\":\"SM2607240005\",\"operTime\":1784836800000,\"operTimeStr\":\"2026-07-24 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":91854.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1784750400000,\"creator\":63,\"debt\":551124.000000,\"defaultNumber\":\"SM2607230004\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":551124.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1418,\"lastDebt\":551124.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":2520.000000,\"materialsList\":\"DDSD1226-T49(VB)\",\"number\":\"SM2607230004\",\"operTime\":1784750400000,\"operTimeStr\":\"2026-07-23 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":551124.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1784750400000,\"creator\":63,\"debt\":1285956.000000,\"defaultNumber\":\"SM2607230002\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":1285956.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1417,\"lastDebt\":1285956.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":5880.000000,\"materialsList\":\"DDSD1226-T49(VB)\",\"number\":\"SM2607230002\",\"operTime\":1784750400000,\"operTimeStr\":\"2026-07-23 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":1285956.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1784664000000,\"creator\":63,\"debt\":1020.000000,\"defaultNumber\":\"SM2607220006\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":1020.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1416,\"lastDebt\":1020.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":10200.000000,\"materialsList\":\"MT-3NSXL(VC)\",\"number\":\"SM2607220006\",\"operTime\":1784664000000,\"operTimeStr\":\"2026-07-22 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":1020.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1784664000000,\"creator\":63,\"debt\":275562.000000,\"defaultNumber\":\"SM2607220004\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":275562.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1415,\"lastDebt\":275562.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":1260.000000,\"materialsList\":\"DDSD1226-T49(VB)\",\"number\":\"SM2607220004\",\"operTime\":1784664000000,\"operTimeStr\":\"2026-07-22 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":275562.000000,\"type\":\"入库\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (9423, 63, '接口日志', '43.152.157.88/1.9.116.218', '2026-10-06 06:03:05', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (9424, 63, '接口日志', '43.152.142.31/1.9.116.218', '2026-10-06 06:03:05', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9425, 63, '接口日志', '43.174.32.33/1.9.116.218', '2026-10-06 06:03:05', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9426, 63, '接口日志', '43.152.142.68/1.9.116.218', '2026-10-06 06:03:05', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (9427, 63, '接口日志', '43.174.51.49/1.9.116.218', '2026-10-06 06:03:05', 0, 'DepotHeadController.waitBillCount(..)', NULL, 'GET /apis/depotHead/waitBillCount', '{\"search\":\"{\\\"type\\\":\\\"出库\\\",\\\"subType\\\":\\\"销售,采购退货\\\",\\\"status\\\":\\\"1,3\\\"}\"}', '{\"code\":200,\"data\":{\"total\":167,\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9428, 63, '接口日志', '43.174.53.19/1.9.116.218', '2026-10-06 06:03:05', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (9429, 63, '接口日志', '43.152.142.62/1.9.116.218', '2026-10-06 06:03:05', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"出库\\\",\\\"subType\\\":\\\"其它\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-07-06\\\",\\\"endTime\\\":\\\"2026-10-06\\\",\\\"createTimeRange\\\":[\\\"2026-07-05T16:00:00.000Z\\\",\\\"2026-10-05T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9430, 63, '接口日志', '43.152.157.88/1.9.116.218', '2026-10-06 06:03:08', 0, 'SupplierController.findBySelectSup(..)', NULL, 'POST /apis/supplier/findBySelect_sup', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司\",\"id\":89}]'); +INSERT INTO `tbl_log` VALUES (9431, 63, '接口日志', '43.174.53.14/1.9.116.218', '2026-10-06 06:03:08', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9432, 63, '接口日志', '43.152.142.132/1.9.116.218', '2026-10-06 06:03:08', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9433, 63, '接口日志', '43.174.32.13/1.9.116.218', '2026-10-06 06:03:08', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"入库\\\",\\\"subType\\\":\\\"其它\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-07-06\\\",\\\"endTime\\\":\\\"2026-10-06\\\",\\\"createTimeRange\\\":[\\\"2026-07-05T16:00:00.000Z\\\",\\\"2026-10-05T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9434, 63, '接口日志', '43.152.142.110/1.9.116.218', '2026-10-06 06:03:08', 0, 'DepotHeadController.waitBillCount(..)', NULL, 'GET /apis/depotHead/waitBillCount', '{\"search\":\"{\\\"type\\\":\\\"入库\\\",\\\"subType\\\":\\\"采购,销售退货\\\",\\\"status\\\":\\\"1,3\\\"}\"}', '{\"code\":200,\"data\":{\"total\":47,\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9435, 63, '接口日志', '43.152.142.86/1.9.116.218', '2026-10-06 06:03:08', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (9436, 63, '接口日志', '43.152.142.142/1.9.116.218', '2026-10-06 06:03:08', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (9437, 63, '接口日志', '43.174.32.19/1.9.116.218', '2026-10-06 06:03:09', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9438, 63, '接口日志', '43.152.142.83/1.9.116.218', '2026-10-06 06:03:09', 0, 'MaterialController.getListWithStock(..)', NULL, 'GET /apis/material/getListWithStock', '{\"currentPage\":1,\"pageSize\":10,\"position\":\"\",\"materialParam\":\"\",\"zeroStock\":0,\"column\":\"createTime\",\"order\":\"desc\"}', '{\"code\":200,\"data\":{\"currentStockPrice\":107372523.170000000000,\"moveAvgPriceFlag\":false,\"total\":22,\"showStockPrice\":true,\"currentWeight\":0E-12,\"currentStock\":519203.000000,\"rows\":[{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"成品\",\"color\":\"\",\"currentStock\":7223.000000,\"currentStockMovePrice\":2293302.500000000000,\"currentStockPrice\":2293302.500000000000,\"currentUnitPrice\":317.500000,\"currentWeight\":0E-12,\"id\":704,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"3PH-APEC3-WC\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"3PH APEC3-WC\",\"name\":\"3PH APEC3-WC\",\"position\":\"\",\"purchaseDecimal\":317.500000,\"standard\":\"3PH APEC3-WC\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"成品\",\"color\":\"\",\"currentStock\":52400.000000,\"currentStockMovePrice\":3117800.000000000000,\"currentStockPrice\":3117800.000000000000,\"currentUnitPrice\":59.500000,\"currentWeight\":0E-12,\"id\":703,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"1PH-WS79\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"1PH WS79\",\"name\":\"1PH WS79\",\"position\":\"\",\"purchaseDecimal\":59.500000,\"standard\":\"1PH WS79\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":1000.000000,\"currentStockMovePrice\":24300.000000000000,\"currentStockPrice\":24300.000000000000,\"currentUnitPrice\":24.300000,\"currentWeight\":0E-12,\"id\":702,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00722\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-RS178(VA)\",\"name\":\"MD-RS178(VA) RS485分线器\",\"position\":\"\",\"purchaseDecimal\":24.300000,\"standard\":\"MD-RS178(VA)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":100.000000,\"currentStockMovePrice\":14256.000000000000,\"currentStockPrice\":14256.000000000000,\"currentUnitPrice\":142.560000,\"currentWeight\":0E-12,\"id\":701,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.0068900002\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-RS114(VB)\",\"name\":\"MD-RS114(VB) 基于RS485的MODBS TCPMODBS RTUASVII转换模块_(DZG)\",\"position\":\"\",\"purchaseDecimal\":142.560000,\"standard\":\"MD-RS114(VB)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":50.000000,\"currentStockMovePrice\":6642.000000000000,\"currentStockPrice\":6642.000000000000,\"currentUnitPrice\":132.840000,\"currentWeight\":0E-12,\"id\":700,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00686\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"TC160(VA)\",\"name\":\"TC160(VA) 通讯模块供电盒\",\"position\":\"\",\"purchaseDecimal\":132.840000,\"standard\":\"TC160(VA)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":76970.000000,\"currentStockMovePrice\":7697.000000000000,\"currentStockPrice\":7697.000000000000,\"currentUnitPrice\":0.100000,\"currentWeight\":0E-12,\"id\":699,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00654\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-4G111(VF)\",\"name\":\"MD-4G111(VF) 4G模块\",\"position\":\"\",\"purchaseDecimal\":0.100000,\"standard\":\"MD-4G111(VF)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":50.000000,\"currentStockMovePrice\":16200.000000000000,\"currentStockPrice\":16200.000000000000,\"currentUnitPrice\":324.000000,\"currentWeight\":0E-12,\"id\":698,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00562\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-4GVIII(VB)\",\"name\":\"MD-4GVIII(VB)\",\"position\":\"\",\"purchaseDecimal\":324.000000,\"standard\":\"MD-4GVIII(VB)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":500.000000,\"currentStockMovePrice\":64800.000000000000,\"currentStockPrice\":64800.000000000000,\"currentUnitPrice\":129.600000,\"currentWeight\":0E-12,\"id\":697,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00553\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MT-P109(VA)\",\"name\":\"MT-P109(VA)\",\"position\":\"\",\"purchaseDecimal\":129.600000,\"standard\":\"MT-P109(VA)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":54656.000000,\"currentStockMovePrice\":5465.600000000000,\"currentStockPrice\":5465.600000000000,\"currentUnitPrice\":0.100000,\"currentWeight\":0E-12,\"id\":696,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00547\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MT-3NSXL(VC)\",\"name\":\"MT-3NSXL(VC)RF通讯模块\",\"position\":\"\",\"purchaseDecimal\":0.100000,\"standard\":\"MT-3NSXL(VC)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":100.000000,\"currentStockMovePrice\":100375.200000000000,\"currentStockPrice\":100375.200000000000,\"currentUnitPrice\":1003.752000,\"currentWeight\":0E-12,\"id\":695,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00422\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-LR63(VB)\",\"name\":\"MD-LR63(VB)\",\"position\":\"\",\"purchaseDecimal\":1003.752000,\"standard\":\"MD-LR63(VB)\",\"unitName\":\"件\"}]}}'); +INSERT INTO `tbl_log` VALUES (9439, 63, '接口日志', '43.152.142.43/1.9.116.218', '2026-10-06 06:03:09', 0, 'DepotItemController.findDetailByDepotIdsAndMaterialId(..)', NULL, 'GET /apis/depotItem/findDetailByDepotIdsAndMaterialId', '{\"pageSize\":10,\"currentPage\":1,\"depotIds\":\"\",\"number\":\"\",\"beginTime\":\"\",\"endTime\":\"\",\"stockPriceFlag\":true}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9440, 63, '接口日志', '43.152.142.33/1.9.116.218', '2026-10-06 06:03:09', 0, 'DepotItemController.findDetailByDepotIdsAndMaterialId(..)', NULL, 'GET /apis/depotItem/findDetailByDepotIdsAndMaterialId', '{\"pageSize\":10,\"currentPage\":1,\"depotIds\":\"\",\"number\":\"\",\"beginTime\":\"\",\"endTime\":\"\",\"stockPriceFlag\":false}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9441, 63, '接口日志', '43.174.54.50/1.9.116.218', '2026-10-06 06:03:09', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (9442, 63, '接口日志', '43.174.52.68/1.9.116.218', '2026-10-06 06:03:17', 0, 'AssetController.dashboard()', NULL, 'GET /apis/asset/dashboard', '{}', '{\"code\":200,\"data\":{\"summary\":{\"activeCount\":259,\"deviceCount\":10,\"assetQuantity\":289.000000,\"assetCount\":255,\"assetValue\":17260.000000,\"openInventoryCount\":2,\"managedCount\":265},\"statusDistribution\":[{\"code\":\"IN_USE\",\"value\":259},{\"code\":\"REPAIR\",\"value\":3},{\"code\":\"SCRAPPED\",\"value\":3}],\"departmentDistribution\":[{\"name\":\"Production\",\"value\":56},{\"name\":\"未指定\",\"value\":54},{\"name\":\"Laboratory\",\"value\":48},{\"name\":\"Technical & Technologies\",\"value\":29},{\"name\":\"Engineering\",\"value\":18},{\"name\":\"Not Specified\",\"value\":11},{\"name\":\"Human Resources\",\"value\":6},{\"name\":\"Quality\",\"value\":6}],\"deviceCategoryDistribution\":[{\"name\":\"检测设备\",\"value\":2},{\"name\":\"贴装设备\",\"value\":2},{\"name\":\"动力设备\",\"value\":1},{\"name\":\"印刷设备\",\"value\":1},{\"name\":\"工装设备\",\"value\":1},{\"name\":\"服务器\",\"value\":1},{\"name\":\"焊接设备\",\"value\":1},{\"name\":\"物流设备\",\"value\":1}],\"message\":\"成功\",\"categoryDistribution\":[{\"code\":\"HARDWARE\",\"name\":\"硬件资产\",\"value\":198.00},{\"code\":\"SOFTWARE\",\"name\":\"软件资产\",\"value\":67.00},{\"code\":\"SIM_CARD\",\"name\":\"SIM卡\",\"value\":24.00}],\"recentInventories\":[{\"inventoryNo\":\"PD20260921190840893\",\"inventoryUserName\":\"admin\",\"planName\":\"2026年09月资产设备专项盘点\",\"id\":6,\"totalCount\":1,\"inventoriedCount\":1,\"status\":\"CLOSED\",\"updatedAt\":\"2026-09-21 19:17:28\"},{\"inventoryNo\":\"PD20260921170623856\",\"inventoryUserName\":\"张三\",\"planName\":\"2026年09月资产设备专项盘点\",\"id\":4,\"totalCount\":8,\"inventoriedCount\":8,\"status\":\"CLOSED\",\"updatedAt\":\"2026-09-21 19:16:33\"},{\"inventoryNo\":\"PD20260921190800418\",\"inventoryUserName\":\"张三\",\"planName\":\"2026年09月资产设备专项盘点\",\"id\":5,\"totalCount\":2,\"inventoriedCount\":0,\"status\":\"ACCEPTED\",\"updatedAt\":\"2026-09-21 19:08:13\"},{\"inventoryNo\":\"PD20260918131230171\",\"inventoryUserName\":\"张伟\",\"planName\":\"2026年09月资产设备专项盘点\",\"id\":1,\"totalCount\":3,\"inventoriedCount\":1,\"status\":\"IN_PROGRESS\",\"updatedAt\":\"2026-09-21 14:35:59\"}],\"updatedAt\":\"2026-10-06\"}}'); +INSERT INTO `tbl_log` VALUES (9443, 63, '接口日志', '43.174.54.27/1.9.116.218', '2026-10-06 06:03:26', 0, 'DepotItemController.findDetailByDepotIdsAndMaterialId(..)', NULL, 'GET /apis/depotItem/findDetailByDepotIdsAndMaterialId', '{\"pageSize\":10,\"currentPage\":1,\"depotIds\":\"\",\"number\":\"\",\"beginTime\":\"\",\"endTime\":\"\",\"stockPriceFlag\":false,\"mId\":704}', '{\"code\":200,\"data\":{\"total\":69,\"rows\":[{\"unitPrice\":317.500000,\"number\":\"CGRK-260606-01-21\",\"materialName\":\"3PH APEC3-WC\",\"depotName\":\"成品仓库\",\"allPrice\":839470.000000000000,\"basicNumber\":2644.000000,\"type\":\"采购入库\",\"barCode\":\"3PH-APEC3-WC\",\"operTime\":\"2026-06-27 00:00:00\"},{\"unitPrice\":340.000000,\"number\":\"XSCK-3PH-APEC3-WC-OV-28\",\"materialName\":\"3PH APEC3-WC\",\"depotName\":\"成品仓库\",\"allPrice\":-50660.000000000000,\"basicNumber\":-149.000000,\"type\":\"销售出库\",\"barCode\":\"3PH-APEC3-WC\",\"operTime\":\"2026-06-23 00:00:00\"},{\"unitPrice\":340.000000,\"number\":\"XSCK-INV_2110-25\",\"materialName\":\"3PH APEC3-WC\",\"depotName\":\"成品仓库\",\"allPrice\":-340000.000000000000,\"basicNumber\":-1000.000000,\"type\":\"销售出库\",\"barCode\":\"3PH-APEC3-WC\",\"operTime\":\"2026-06-23 00:00:00\"},{\"unitPrice\":340.000000,\"number\":\"XSCK-3PH-APEC3-WC-OV-26\",\"materialName\":\"3PH APEC3-WC\",\"depotName\":\"成品仓库\",\"allPrice\":-340000.000000000000,\"basicNumber\":-1000.000000,\"type\":\"销售出库\",\"barCode\":\"3PH-APEC3-WC\",\"operTime\":\"2026-06-23 00:00:00\"},{\"unitPrice\":340.000000,\"number\":\"XSCK-3PH-APEC3-WC-OV-27\",\"materialName\":\"3PH APEC3-WC\",\"depotName\":\"成品仓库\",\"allPrice\":-289340.000000000000,\"basicNumber\":-851.000000,\"type\":\"销售出库\",\"barCode\":\"3PH-APEC3-WC\",\"operTime\":\"2026-06-23 00:00:00\"},{\"unitPrice\":317.500000,\"number\":\"CGRK-260529-01-17\",\"materialName\":\"3PH APEC3-WC\",\"depotName\":\"成品仓库\",\"allPrice\":1066800.000000000000,\"basicNumber\":3360.000000,\"type\":\"采购入库\",\"barCode\":\"3PH-APEC3-WC\",\"operTime\":\"2026-06-18 00:00:00\"},{\"unitPrice\":340.000000,\"number\":\"XSCK-3PH-APEC3-WC-OV-21\",\"materialName\":\"3PH APEC3-WC\",\"depotName\":\"成品仓库\",\"allPrice\":-250240.000000000000,\"basicNumber\":-736.000000,\"type\":\"销售出库\",\"barCode\":\"3PH-APEC3-WC\",\"operTime\":\"2026-06-16 00:00:00\"},{\"unitPrice\":340.000000,\"number\":\"XSCK-3PH-APEC3-WC-OV-22\",\"materialName\":\"3PH APEC3-WC\",\"depotName\":\"成品仓库\",\"allPrice\":-89760.000000000000,\"basicNumber\":-264.000000,\"type\":\"销售出库\",\"barCode\":\"3PH-APEC3-WC\",\"operTime\":\"2026-06-16 00:00:00\"},{\"unitPrice\":340.000000,\"number\":\"XSCK-3PH-APEC3-WC-OV-20\",\"materialName\":\"3PH APEC3-WC\",\"depotName\":\"成品仓库\",\"allPrice\":-340000.000000000000,\"basicNumber\":-1000.000000,\"type\":\"销售出库\",\"barCode\":\"3PH-APEC3-WC\",\"operTime\":\"2026-06-16 00:00:00\"},{\"unitPrice\":340.000000,\"number\":\"XSCK-3PH-APEC3-WC-OV-19\",\"materialName\":\"3PH APEC3-WC\",\"depotName\":\"成品仓库\",\"allPrice\":-95200.000000000000,\"basicNumber\":-280.000000,\"type\":\"销售出库\",\"barCode\":\"3PH-APEC3-WC\",\"operTime\":\"2026-06-16 00:00:00\"}],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9444, 63, '接口日志', '43.152.142.118/1.9.116.218', '2026-10-06 06:03:42', 0, 'DepotHeadController.getDetailByNumber(..)', NULL, 'GET /apis/depotHead/getDetailByNumber', '{\"number\":\"XSCK-3PH-APEC3-WC-OV-20\"}', '{\"code\":200,\"data\":{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountNumber\":\"\",\"address\":\"\",\"backAmount\":0.000000,\"bankName\":\"\",\"billType\":\"销售\",\"changeAmount\":0.000000,\"contacts\":\"\",\"createTime\":1781553600000,\"creator\":63,\"creatorName\":\"admin\",\"debt\":374000.000000,\"defaultNumber\":\"XSCK-3PH-APEC3-WC-OV-20\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"depotHeadType\":\"销售出库\",\"discount\":100.000000,\"discountLastMoney\":374000.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"hasBackFlag\":false,\"id\":1703,\"lastDebt\":374000.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42260527-3PH-APEC3-WC-OV\",\"materialCount\":1000.000000,\"materialsList\":\"3PH APEC3-WC 3PH APEC3-WC 3PH APEC3-WC \",\"number\":\"XSCK-3PH-APEC3-WC-OV-20\",\"operTime\":1781553600000,\"operTimeStr\":\"2026-06-16 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"phoneNum\":\"\",\"remark\":\"Stock Status:3PH APEC3 WC(OV)-12,749;客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"taxNum\":\"\",\"telephone\":\"\",\"tenantId\":63,\"totalPrice\":374000.000000,\"type\":\"出库\"}}'); +INSERT INTO `tbl_log` VALUES (9445, 63, '接口日志', '43.152.142.108/1.9.116.218', '2026-10-06 06:03:42', 0, 'DepotHeadController.getDetailByNumber(..)', NULL, 'GET /apis/depotHead/getDetailByNumber', '{\"number\":\"XSCK-3PH-APEC3-WC-OV-20\"}', '{\"code\":200,\"data\":{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountNumber\":\"\",\"address\":\"\",\"backAmount\":0.000000,\"bankName\":\"\",\"billType\":\"销售\",\"changeAmount\":0.000000,\"contacts\":\"\",\"createTime\":1781553600000,\"creator\":63,\"creatorName\":\"admin\",\"debt\":374000.000000,\"defaultNumber\":\"XSCK-3PH-APEC3-WC-OV-20\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"depotHeadType\":\"销售出库\",\"discount\":100.000000,\"discountLastMoney\":374000.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"hasBackFlag\":false,\"id\":1703,\"lastDebt\":374000.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42260527-3PH-APEC3-WC-OV\",\"materialCount\":1000.000000,\"materialsList\":\"3PH APEC3-WC 3PH APEC3-WC 3PH APEC3-WC \",\"number\":\"XSCK-3PH-APEC3-WC-OV-20\",\"operTime\":1781553600000,\"operTimeStr\":\"2026-06-16 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"phoneNum\":\"\",\"remark\":\"Stock Status:3PH APEC3 WC(OV)-12,749;客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"taxNum\":\"\",\"telephone\":\"\",\"tenantId\":63,\"totalPrice\":374000.000000,\"type\":\"出库\"}}'); +INSERT INTO `tbl_log` VALUES (9446, 63, '接口日志', '43.152.142.31/1.9.116.218', '2026-10-06 06:03:42', 0, 'AccountHeadController.getFinancialBillNoByBillId(..)', NULL, 'GET /apis/accountHead/getFinancialBillNoByBillId', '{\"billId\":1703}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (9447, 63, '接口日志', '43.152.142.139/1.9.116.218', '2026-10-06 06:03:42', 0, 'DepotHeadController.getBillListByLinkNumber(..)', NULL, 'GET /apis/depotHead/getBillListByLinkNumber', '{\"number\":\"XSCK-3PH-APEC3-WC-OV-20\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (9448, 63, '接口日志', '43.152.142.40/1.9.116.218', '2026-10-06 06:03:42', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_print_flag\"}', '{\"code\":200,\"data\":{\"id\":4,\"platformKey\":\"bill_print_flag\",\"platformKeyInfo\":\"三联打印启用标记\",\"platformValue\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9449, 63, '接口日志', '43.152.142.62/1.9.116.218', '2026-10-06 06:03:42', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9450, 63, '接口日志', '43.174.53.48/1.9.116.218', '2026-10-06 06:03:42', 0, 'DepotItemController.getDetailList(..)', NULL, 'GET /apis/depotItem/getDetailList', '{\"headerId\":1703,\"mpList\":\"扩展1,扩展2,扩展3\",\"linkType\":\"basic\",\"isReadOnly\":\"1\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"standard\":\"3PH APEC3-WC\",\"materialExtendId\":124,\"finishPurchaseNumber\":0,\"anotherDepotName\":\"\",\"color\":\"\",\"preNumber\":1000.000000,\"depotId\":26,\"remark\":\"\",\"purchaseDecimal\":317.500000,\"imgName\":\"\",\"operNumber\":1000.000000,\"anotherDepotId\":\"\",\"basicNumber\":1000.000000,\"taxLastMoney\":374000.000000,\"model\":\"3PH APEC3-WC\",\"id\":1508,\"enableSerialNumber\":\"0\",\"stock\":7223.000000,\"brand\":\"\",\"finishNumber\":0,\"expirationDate\":\"\",\"enableBatchNumber\":\"0\",\"unitPrice\":340.000000,\"op\":1,\"otherField1\":\"\",\"depotName\":\"成品仓库\",\"mfrs\":\"浙江瑞银电子有限公司\",\"weight\":0,\"otherField3\":\"\",\"otherField2\":\"\",\"taxMoney\":34000.000000,\"imgSmall\":\"\",\"barCode\":\"3PH-APEC3-WC\",\"taxUnitPrice\":374.000000,\"taxRate\":10.000000,\"unit\":\"件\",\"allPrice\":340000.000000,\"name\":\"3PH APEC3-WC\",\"imgLarge\":\"\",\"position\":\"\"},{\"allPrice\":340000.000000,\"finishPurchaseNumber\":0,\"operNumber\":1000.000000,\"taxLastMoney\":374000.000000,\"weight\":0,\"taxMoney\":34000.000000,\"finishNumber\":0}]}}'); +INSERT INTO `tbl_log` VALUES (9451, 63, '接口日志', '43.174.32.33/1.9.116.218', '2026-10-06 06:07:28', 0, 'AssetInventoryController.operatorOptions()', NULL, 'GET /apis/assetInventory/operatorOptions', '{}', '{\"code\":200,\"data\":{\"rows\":[{\"loginName\":\"admin\",\"name\":\"admin\",\"id\":63},{\"loginName\":\"admin2\",\"name\":\"admin2\",\"id\":149}],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9452, 63, '接口日志', '43.174.51.49/1.9.116.218', '2026-10-06 06:07:28', 0, 'AssetInventoryController.list(..)', NULL, 'GET /apis/assetInventory/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":4,\"rows\":[{\"abnormalCount\":0,\"auditTime\":1790003845000,\"auditUserId\":149,\"completedAt\":1790003836000,\"createTime\":1790003320000,\"creator\":149,\"deadline\":1790258400000,\"deleteFlag\":\"0\",\"id\":6,\"inventoriedCount\":1,\"inventoryNo\":\"PD20260921190840893\",\"inventoryUserId\":63,\"inventoryUserName\":\"admin\",\"normalCount\":1,\"planName\":\"2026年09月资产设备专项盘点\",\"plannedAt\":1790053200000,\"scopeType\":\"DEVICE\",\"source\":\"MANUAL\",\"startedAt\":1790003819000,\"status\":\"CLOSED\",\"totalCount\":1,\"updateTime\":1790003848000,\"updater\":149},{\"abnormalCount\":0,\"createTime\":1790003280000,\"creator\":149,\"deadline\":1790258400000,\"deleteFlag\":\"0\",\"id\":5,\"inventoriedCount\":0,\"inventoryNo\":\"PD20260921190800418\",\"inventoryUserId\":149,\"inventoryUserName\":\"张三\",\"normalCount\":0,\"planName\":\"2026年09月资产设备专项盘点\",\"plannedAt\":1790053200000,\"remark\":\"进行盘点\",\"scopeType\":\"ALL\",\"source\":\"MANUAL\",\"status\":\"ACCEPTED\",\"totalCount\":2,\"updateTime\":1790003293000,\"updater\":149},{\"abnormalCount\":0,\"completedAt\":1790002875000,\"createTime\":1789995983000,\"creator\":63,\"deadline\":1790258400000,\"deleteFlag\":\"0\",\"id\":4,\"inventoriedCount\":8,\"inventoryNo\":\"PD20260921170623856\",\"inventoryUserId\":149,\"inventoryUserName\":\"张三\",\"normalCount\":0,\"planName\":\"2026年09月资产设备专项盘点\",\"plannedAt\":1790053200000,\"remark\":\"进行盘点\",\"scopeType\":\"ASSET\",\"source\":\"MANUAL\",\"startedAt\":1790002559000,\"status\":\"CLOSED\",\"totalCount\":8,\"updateTime\":1790003793000,\"updater\":149},{\"abnormalCount\":0,\"createTime\":1789722750000,\"creator\":63,\"deadline\":1789999200000,\"deleteFlag\":\"0\",\"id\":1,\"inventoriedCount\":1,\"inventoryNo\":\"PD20260918131230171\",\"inventoryUserId\":36,\"inventoryUserName\":\"张伟\",\"normalCount\":0,\"planName\":\"2026年09月资产设备专项盘点\",\"plannedAt\":1789794000000,\"remark\":\"进行盘点\",\"scopeType\":\"DEVICE\",\"source\":\"MANUAL\",\"startedAt\":1789723142000,\"status\":\"IN_PROGRESS\",\"totalCount\":3,\"updateTime\":1789986959000,\"updater\":63}]}}'); +INSERT INTO `tbl_log` VALUES (9453, NULL, '接口日志', '43.152.142.45/1.9.116.218', '2026-10-06 06:20:12', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (9454, NULL, '接口日志', '43.152.142.62/1.9.116.218', '2026-10-06 06:20:12', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (9455, 63, '接口日志', '43.152.142.45/1.9.116.218', '2026-10-06 06:20:13', 0, 'FunctionController.findMenuByPNumber(..)', NULL, 'POST /apis/function/findMenuByPNumber', '{\"jsonObject\":{\"userId\":63,\"pNumber\":0}}', '[{\"component\":\"/layouts/TabLayout\",\"icon\":\"home\",\"id\":0,\"text\":\"首页\",\"url\":\"/dashboard/analysis\",\"textEn\":\"Home\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/SaleOrderList\",\"icon\":\"profile\",\"id\":242,\"text\":\"销售订单\",\"url\":\"/bill/sale_order\",\"textEn\":\"Sales Orders\"},{\"component\":\"/bill/SaleOutList\",\"icon\":\"profile\",\"id\":41,\"text\":\"销售出库\",\"url\":\"/bill/sale_out\",\"textEn\":\"Sales Shipments\"},{\"component\":\"/bill/DeliveryPlanList\",\"icon\":\"profile\",\"id\":271,\"text\":\"交货计划管理\",\"url\":\"/bill/delivery_plan\",\"textEn\":\"Delivery Plans\"},{\"component\":\"/bill/SaleShipmentList\",\"icon\":\"car\",\"id\":268,\"text\":\"发货管理\",\"url\":\"/bill/sale_shipment\",\"textEn\":\"Shipment Management\"},{\"component\":\"/bill/SaleBackList\",\"icon\":\"profile\",\"id\":200,\"text\":\"销售退货\",\"url\":\"/bill/sale_back\",\"textEn\":\"Sales Returns\"},{\"component\":\"/bill/RetailOutList\",\"icon\":\"profile\",\"id\":210,\"text\":\"零售出库\",\"url\":\"/bill/retail_out\",\"textEn\":\"Retail Shipments\"},{\"component\":\"/bill/RetailBackList\",\"icon\":\"profile\",\"id\":211,\"text\":\"零售退货\",\"url\":\"/bill/retail_back\",\"textEn\":\"Retail Returns\"}],\"icon\":\"shopping-cart\",\"id\":38,\"text\":\"销售管理\",\"url\":\"/billB\",\"textEn\":\"Sales Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/PurchaseApplyList\",\"icon\":\"profile\",\"id\":261,\"text\":\"请购单\",\"url\":\"/bill/purchase_apply\",\"textEn\":\"Purchase Requisitions\"},{\"component\":\"/bill/PurchaseOrderList\",\"icon\":\"profile\",\"id\":241,\"text\":\"采购订单\",\"url\":\"/bill/purchase_order\",\"textEn\":\"Purchase Orders\"},{\"component\":\"/bill/PurchaseInList\",\"icon\":\"profile\",\"id\":33,\"text\":\"采购入库\",\"url\":\"/bill/purchase_in\",\"textEn\":\"Purchase Receipts\"},{\"component\":\"/bill/PurchaseBackList\",\"icon\":\"profile\",\"id\":199,\"text\":\"采购退货\",\"url\":\"/bill/purchase_back\",\"textEn\":\"Purchase Returns\"}],\"icon\":\"retweet\",\"id\":32,\"text\":\"采购管理\",\"url\":\"/bill\",\"textEn\":\"Purchase Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/production/PackBomList\",\"icon\":\"profile\",\"id\":263,\"text\":\"生产方案\",\"url\":\"/production/pack_bom\",\"textEn\":\"Production BOMs\"},{\"component\":\"/production/OrderList\",\"icon\":\"profile\",\"id\":264,\"text\":\"生产工单\",\"url\":\"/production/order\",\"textEn\":\"Production Orders\"},{\"component\":\"/production/RequisitionList\",\"icon\":\"profile\",\"id\":265,\"text\":\"领料管理\",\"url\":\"/production/requisition\",\"textEn\":\"Material Requisitions\"},{\"component\":\"/production/ReportList\",\"icon\":\"profile\",\"id\":266,\"text\":\"完工报工\",\"url\":\"/production/report\",\"textEn\":\"Production Reports\"}],\"icon\":\"cluster\",\"id\":262,\"text\":\"生产管理\",\"url\":\"/production\",\"textEn\":\"Production Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/MaterialStock\",\"icon\":\"profile\",\"id\":246,\"text\":\"商品库存\",\"url\":\"/report/material_stock\",\"textEn\":\"Product Inventory\"},{\"component\":\"/bill/OtherInList\",\"icon\":\"profile\",\"id\":201,\"text\":\"其它入库\",\"url\":\"/bill/other_in\",\"textEn\":\"Other Receipts\"},{\"component\":\"/bill/OtherOutList\",\"icon\":\"profile\",\"id\":202,\"text\":\"其它出库\",\"url\":\"/bill/other_out\",\"textEn\":\"Other Shipments\"},{\"component\":\"/bill/HeadquartersInList\",\"icon\":\"profile\",\"id\":270,\"text\":\"总部入库\",\"url\":\"/bill/headquarters_in\",\"textEn\":\"Headquarters Receipts\"}],\"icon\":\"hdd\",\"id\":239,\"text\":\"仓库管理\",\"url\":\"/billD\",\"textEn\":\"Warehouse Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/financial/MoneyInList\",\"icon\":\"profile\",\"id\":204,\"text\":\"收款单\",\"url\":\"/financial/money_in\",\"textEn\":\"Receipt Vouchers\"},{\"component\":\"/financial/MoneyOutList\",\"icon\":\"profile\",\"id\":205,\"text\":\"付款单\",\"url\":\"/financial/money_out\",\"textEn\":\"Payment Vouchers\"}],\"icon\":\"money-collect\",\"id\":44,\"text\":\"财务管理\",\"url\":\"/financial\",\"textEn\":\"Finance Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/asset/AssetDashboard\",\"icon\":\"dashboard\",\"id\":276,\"text\":\"资产汇总\",\"url\":\"/asset\",\"textEn\":\"Asset Overview\"},{\"component\":\"/asset/AssetList\",\"icon\":\"profile\",\"id\":273,\"text\":\"资产台账\",\"url\":\"/asset/ledger\",\"textEn\":\"Asset Ledger\"},{\"component\":\"/asset/DeviceList\",\"icon\":\"tool\",\"id\":274,\"text\":\"设备台账\",\"url\":\"/asset/device\",\"textEn\":\"Device Ledger\"},{\"component\":\"/asset/InventoryList\",\"icon\":\"scan\",\"id\":275,\"text\":\"资产盘点\",\"url\":\"/asset/inventory\",\"textEn\":\"Asset Inventory\"}],\"icon\":\"bank\",\"id\":272,\"text\":\"资产管理\",\"url\":\"/assetManagement\",\"textEn\":\"Asset Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/material/MaterialCategoryList\",\"icon\":\"profile\",\"id\":22,\"text\":\"商品类别\",\"url\":\"/material/material_category\",\"textEn\":\"Product Categories\"},{\"component\":\"/material/MaterialList\",\"icon\":\"profile\",\"id\":23,\"text\":\"商品信息\",\"url\":\"/material/material\",\"textEn\":\"Product Information\"},{\"component\":\"/system/UnitList\",\"icon\":\"profile\",\"id\":220,\"text\":\"多单位\",\"url\":\"/system/unit\",\"textEn\":\"Multiple Units\"},{\"component\":\"/material/MaterialAttributeList\",\"icon\":\"profile\",\"id\":247,\"text\":\"多属性\",\"url\":\"/material/material_attribute\",\"textEn\":\"Product Attributes\"}],\"icon\":\"shopping\",\"id\":21,\"text\":\"商品管理\",\"url\":\"/material\",\"textEn\":\"Product Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/AccountReport\",\"icon\":\"profile\",\"id\":207,\"text\":\"账户统计\",\"url\":\"/report/account_report\",\"textEn\":\"Account Summary\"},{\"component\":\"/report/RetailOutReport\",\"icon\":\"profile\",\"id\":259,\"text\":\"零售统计\",\"url\":\"/report/retail_out_report\",\"textEn\":\"Retail Summary\"},{\"component\":\"/report/BuyInReport\",\"icon\":\"profile\",\"id\":208,\"text\":\"采购统计\",\"url\":\"/report/buy_in_report\",\"textEn\":\"Purchase Summary\"},{\"component\":\"/report/SaleOutReport\",\"icon\":\"profile\",\"id\":209,\"text\":\"销售统计\",\"url\":\"/report/sale_out_report\",\"textEn\":\"Sales Summary\"},{\"component\":\"/report/InDetail\",\"icon\":\"profile\",\"id\":226,\"text\":\"入库明细\",\"url\":\"/report/in_detail\",\"textEn\":\"Inbound Details\"},{\"component\":\"/report/OutDetail\",\"icon\":\"profile\",\"id\":227,\"text\":\"出库明细\",\"url\":\"/report/out_detail\",\"textEn\":\"Outbound Details\"},{\"component\":\"/report/InMaterialCount\",\"icon\":\"profile\",\"id\":228,\"text\":\"入库汇总\",\"url\":\"/report/in_material_count\",\"textEn\":\"Inbound Summary\"},{\"component\":\"/report/OutMaterialCount\",\"icon\":\"profile\",\"id\":229,\"text\":\"出库汇总\",\"url\":\"/report/out_material_count\",\"textEn\":\"Outbound Summary\"},{\"component\":\"/report/InOutStockReport\",\"icon\":\"profile\",\"id\":59,\"text\":\"进销存统计\",\"url\":\"/report/in_out_stock_report\",\"textEn\":\"Inventory Transaction Summary\"},{\"component\":\"/report/CustomerAccount\",\"icon\":\"profile\",\"id\":235,\"text\":\"客户对账\",\"url\":\"/report/customer_account\",\"textEn\":\"Customer Reconciliation\"},{\"component\":\"/report/VendorAccount\",\"icon\":\"profile\",\"id\":237,\"text\":\"供应商对账\",\"url\":\"/report/vendor_account\",\"textEn\":\"Supplier Reconciliation\"},{\"component\":\"/report/StockWarningReport\",\"icon\":\"profile\",\"id\":244,\"text\":\"库存预警\",\"url\":\"/report/stock_warning_report\",\"textEn\":\"Stock Alerts\"}],\"icon\":\"pie-chart\",\"id\":198,\"text\":\"报表查询\",\"url\":\"/report\",\"textEn\":\"Reports\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/VendorList\",\"icon\":\"profile\",\"id\":25,\"text\":\"供应商信息\",\"url\":\"/system/vendor\",\"textEn\":\"Suppliers\"},{\"component\":\"/system/CustomerList\",\"icon\":\"profile\",\"id\":217,\"text\":\"客户信息\",\"url\":\"/system/customer\",\"textEn\":\"Customers\"},{\"component\":\"/system/MemberList\",\"icon\":\"profile\",\"id\":218,\"text\":\"会员信息\",\"url\":\"/system/member\",\"textEn\":\"Members\"},{\"component\":\"/system/CustomerCategoryList\",\"icon\":\"bars\",\"id\":267,\"text\":\"客户分类\",\"url\":\"/system/customerCategory\",\"textEn\":\"Customer Categories\"},{\"component\":\"/system/DepotList\",\"icon\":\"profile\",\"id\":26,\"text\":\"仓库信息\",\"url\":\"/system/depot\",\"textEn\":\"Warehouses\"},{\"component\":\"/system/InOutItemList\",\"icon\":\"profile\",\"id\":194,\"text\":\"收支项目\",\"url\":\"/system/in_out_item\",\"textEn\":\"Income and Expense Items\"},{\"component\":\"/system/AccountList\",\"icon\":\"profile\",\"id\":195,\"text\":\"结算账户\",\"url\":\"/system/account\",\"textEn\":\"Settlement Accounts\"},{\"component\":\"/system/PersonList\",\"icon\":\"profile\",\"id\":31,\"text\":\"操作人员管理\",\"url\":\"/system/person\",\"textEn\":\"Operators\"}],\"icon\":\"appstore\",\"id\":24,\"text\":\"基础资料\",\"url\":\"/systemA\",\"textEn\":\"Master Data\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/RoleList\",\"icon\":\"profile\",\"id\":13,\"text\":\"角色管理\",\"url\":\"/system/role\",\"textEn\":\"Role Management\"},{\"component\":\"/system/UserList\",\"icon\":\"profile\",\"id\":14,\"text\":\"用户管理\",\"url\":\"/system/user\",\"textEn\":\"User Management\"},{\"component\":\"/system/OrganizationList\",\"icon\":\"profile\",\"id\":243,\"text\":\"部门管理\",\"url\":\"/system/organization\",\"textEn\":\"Department Management\"},{\"component\":\"/system/LogList\",\"icon\":\"profile\",\"id\":15,\"text\":\"日志管理\",\"url\":\"/system/log\",\"textEn\":\"Log Management\"},{\"component\":\"/material/MaterialPropertyList\",\"icon\":\"profile\",\"id\":236,\"text\":\"商品属性\",\"url\":\"/material/material_property\",\"textEn\":\"Product Properties\"},{\"component\":\"/system/SystemConfigList\",\"icon\":\"profile\",\"id\":234,\"text\":\"系统配置\",\"url\":\"/system/system_config\",\"textEn\":\"System Configuration\"},{\"component\":\"/system/FunctionList\",\"icon\":\"profile\",\"id\":16,\"text\":\"菜单管理\",\"url\":\"/system/function\",\"textEn\":\"Resource Menus\"},{\"component\":\"/system/PluginList\",\"icon\":\"profile\",\"id\":245,\"text\":\"插件管理\",\"url\":\"/system/plugin\",\"textEn\":\"Plugin Management\"},{\"component\":\"/system/DictList\",\"icon\":\"profile\",\"id\":260,\"text\":\"字典管理\",\"url\":\"/system/dict\",\"textEn\":\"Dictionary Management\"},{\"component\":\"/system/PlatformConfigList\",\"icon\":\"profile\",\"id\":258,\"text\":\"平台配置\",\"url\":\"/system/platform_config\",\"textEn\":\"Platform Configuration\"}],\"icon\":\"setting\",\"id\":1,\"text\":\"系统管理\",\"url\":\"/system\",\"textEn\":\"System Management\"}]'); +INSERT INTO `tbl_log` VALUES (9456, 63, '接口日志', '43.152.142.108/1.9.116.218', '2026-10-06 06:20:13', 0, 'UserController.getUserBtnByCurrentUser(..)', NULL, 'GET /apis/user/getUserBtnByCurrentUser', '{}', '{\"code\":200,\"data\":{\"userBtn\":[{\"btnStr\":\"8,1\",\"url\":\"/system/role\"},{\"btnStr\":\"1\",\"url\":\"/system/user\"},{\"btnStr\":\"1\",\"url\":\"/system/organization\"},{\"btnStr\":\"1\",\"url\":\"/material/material_property\"},{\"btnStr\":\"1\",\"url\":\"/system/system_config\"},{\"btnStr\":\"1\",\"url\":\"/system/function\"},{\"btnStr\":\"1\",\"url\":\"/system/plugin\"},{\"btnStr\":\"1\",\"url\":\"/material/material_category\"},{\"btnStr\":\"1,3\",\"url\":\"/material/material\"},{\"btnStr\":\"1\",\"url\":\"/system/unit\"},{\"btnStr\":\"1\",\"url\":\"/material/material_attribute\"},{\"btnStr\":\"1,3\",\"url\":\"/system/vendor\"},{\"btnStr\":\"1,3\",\"url\":\"/system/customer\"},{\"btnStr\":\"1,3\",\"url\":\"/system/member\"},{\"btnStr\":\"1\",\"url\":\"/system/depot\"},{\"btnStr\":\"1\",\"url\":\"/system/in_out_item\"},{\"btnStr\":\"1\",\"url\":\"/system/account\"},{\"btnStr\":\"1\",\"url\":\"/system/person\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_apply\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_out\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/delivery_plan\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/sale_shipment\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_out\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/order\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/requisition\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/report\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/giro\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/advance_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/allocation_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/assemble\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/headquarters_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/disassemble\"}]}}'); +INSERT INTO `tbl_log` VALUES (9457, 63, '接口日志', '43.152.142.31/1.9.116.218', '2026-10-06 06:20:14', 0, 'MsgController.getList(..)', NULL, 'GET /apis/msg/list', '{\"search\":\"{\\\"name\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9458, 63, '接口日志', '43.152.142.34/1.9.116.218', '2026-10-06 06:20:14', 0, 'MsgController.getMsgByStatus(..)', NULL, 'GET /apis/msg/getMsgByStatus', '{\"status\":\"1\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (9459, 63, '接口日志', '43.174.54.44/1.9.116.218', '2026-10-06 06:20:14', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0},{\"month\":\"2026-10\",\"inbound\":0,\"ordered\":0,\"shipped\":0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (9460, 63, '接口日志', '43.168.32.240/1.9.116.218', '2026-10-06 06:20:20', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (9461, 63, '接口日志', '43.174.52.31/1.9.116.218', '2026-10-06 06:20:20', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (9462, 63, '接口日志', '43.152.142.84/1.9.116.218', '2026-10-06 06:20:20', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9463, 63, '接口日志', '43.152.142.128/1.9.116.218', '2026-10-06 06:20:20', 0, 'PersonController.getPersonByNumType(..)', NULL, 'GET /apis/person/getPersonByNumType', '{\"typeNum\":\"1\"}', '[]'); +INSERT INTO `tbl_log` VALUES (9464, 63, '接口日志', '43.174.53.11/1.9.116.218', '2026-10-06 06:20:20', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (9465, 63, '接口日志', '43.152.142.110/1.9.116.218', '2026-10-06 06:20:20', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (9466, 63, '接口日志', '43.152.142.41/1.9.116.218', '2026-10-06 06:20:20', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"其它\\\",\\\"subType\\\":\\\"销售订单\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-07-06\\\",\\\"endTime\\\":\\\"2026-10-06\\\",\\\"createTimeRange\\\":[\\\"2026-07-05T16:00:00.000Z\\\",\\\"2026-10-05T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":4,\"rows\":[{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789718483000,\"creator\":63,\"debt\":808500.000000,\"defaultNumber\":\"XSDD00000001726\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":808500.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1719,\"lastDebt\":808500.000000,\"lastDeposit\":0.000000,\"materialCount\":10000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD00000001726\",\"operTime\":1789732682000,\"operTimeStr\":\"2026-09-18 15:58:02\",\"organId\":90,\"organName\":\"TNB\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"totalPrice\":735000.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789726236000,\"creator\":63,\"debt\":340000000.000000,\"defaultNumber\":\"XSDD00000001724\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":340000000.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1718,\"lastDebt\":340000000.000000,\"lastDeposit\":0.000000,\"materialCount\":1000000.000000,\"materialsList\":\"3PH APEC3-WC 3PH APEC3-WC 3PH APEC3-WC \",\"number\":\"XSDD00000001724\",\"operTime\":1789725706000,\"operTimeStr\":\"2026-09-18 14:01:46\",\"organId\":90,\"organName\":\"TNB\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"0\",\"subType\":\"销售订单\",\"totalPrice\":340000000.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1785355200000,\"creator\":63,\"debt\":242550.000000,\"defaultNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":242550.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1580,\"lastDebt\":242550.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":3000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303475-1PH-WS79-ADD1\",\"operTime\":1785355200000,\"operTimeStr\":\"2026-07-30 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303475\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":242550.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1785355200000,\"creator\":63,\"debt\":323400.000000,\"defaultNumber\":\"XSDD-42303447-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":323400.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1574,\"lastDebt\":323400.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":4000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303447-1PH-WS79-ADD1\",\"operTime\":1785355200000,\"operTimeStr\":\"2026-07-30 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303447\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":323400.000000,\"type\":\"其它\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (9467, 63, '接口日志', '43.174.53.19/1.9.116.218', '2026-10-06 06:20:20', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9468, 63, '接口日志', '43.152.142.133/1.9.116.218', '2026-10-06 06:20:20', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9469, 63, '接口日志', '43.168.32.240/1.9.116.218', '2026-10-06 06:20:36', 0, 'SupplierController.findBySelectSup(..)', NULL, 'POST /apis/supplier/findBySelect_sup', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司\",\"id\":89}]'); +INSERT INTO `tbl_log` VALUES (9470, 63, '接口日志', '43.174.55.40/1.9.116.218', '2026-10-06 06:20:36', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9471, 63, '接口日志', '43.152.142.68/1.9.116.218', '2026-10-06 06:20:36', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (9472, 63, '接口日志', '43.174.32.19/1.9.116.218', '2026-10-06 06:20:36', 0, 'AccountHeadController.getList(..)', NULL, 'GET /apis/accountHead/list', '{\"search\":\"{\\\"billNo\\\":\\\"\\\",\\\"searchMaterial\\\":\\\"\\\",\\\"type\\\":\\\"付款\\\",\\\"remark\\\":\\\"\\\",\\\"number\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-07-06\\\",\\\"endTime\\\":\\\"2026-10-06\\\",\\\"createTimeRange\\\":[\\\"2026-07-05T16:00:00.000Z\\\",\\\"2026-10-05T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":3,\"rows\":[{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"FK-PV-008186-87-3PH-APEC3-WC-OV-25\",\"billTime\":1786651200000,\"billTimeStr\":\"2026-08-14 00:00:00\",\"changeAmount\":947751.900000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":104,\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"remark\":\"Stock Status供应商付款;PV:PV 008186/87\",\"source\":\"0\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":947751.900000,\"type\":\"付款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"FK-PV-008145-45---ZHEJIANG-METRONIX-3PH-APEC3-WC-O\",\"billTime\":1785700800000,\"billTimeStr\":\"2026-08-03 00:00:00\",\"changeAmount\":954860.058400,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":100,\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"remark\":\"Stock Status供应商付款;PV:PV 008145/45 - ZHEJIANG & METRONIX\",\"source\":\"0\",\"sourceNumber\":\"CGRK-260415-01-11\",\"sourceTime\":\"2026-04-29 00:00:00\",\"sourceType\":\"采购入库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":954860.058400,\"type\":\"付款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"FK-PV-008186-87-1PH-WS79-ADD1-11\",\"billTime\":1786651200000,\"billTimeStr\":\"2026-08-14 00:00:00\",\"changeAmount\":236946.640000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":92,\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"remark\":\"Stock Status供应商付款;PV:PV 008186/87\",\"source\":\"0\",\"sourceNumber\":\"CGRK-260414-01-11\",\"sourceTime\":\"2026-04-29 00:00:00\",\"sourceType\":\"采购入库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":236946.640000,\"type\":\"付款\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (9473, 63, '接口日志', '43.152.142.45/1.9.116.218', '2026-10-06 06:20:36', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (9474, 63, '接口日志', '43.152.142.142/1.9.116.218', '2026-10-06 06:20:36', 0, 'PersonController.getPersonByType(..)', NULL, 'GET /apis/person/getPersonByType', '{\"type\":\"财务员\"}', '{\"code\":200,\"data\":{\"personList\":[{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":43,\"name\":\"Juwairiah\",\"type\":\"财务员\"}]}}'); +INSERT INTO `tbl_log` VALUES (9475, 63, '接口日志', '43.174.32.12/1.9.116.218', '2026-10-06 06:20:36', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (9476, 63, '接口日志', '43.174.32.33/1.9.116.218', '2026-10-06 06:20:36', 0, 'DepotHeadController.getNeedCount(..)', NULL, 'GET /apis/depotHead/getNeedCount', '{\"type\":\"vendor\"}', '{\"code\":200,\"data\":{\"needCount\":1}}'); +INSERT INTO `tbl_log` VALUES (9477, 63, '接口日志', '43.152.142.140/1.9.116.218', '2026-10-06 06:20:39', 0, 'AssetInventoryController.operatorOptions()', NULL, 'GET /apis/assetInventory/operatorOptions', '{}', '{\"code\":200,\"data\":{\"rows\":[{\"loginName\":\"admin\",\"name\":\"admin\",\"id\":63},{\"loginName\":\"admin2\",\"name\":\"admin2\",\"id\":149}],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9478, 63, '接口日志', '43.174.32.14/1.9.116.218', '2026-10-06 06:20:39', 0, 'AssetInventoryController.list(..)', NULL, 'GET /apis/assetInventory/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":4,\"rows\":[{\"abnormalCount\":0,\"auditTime\":1790003845000,\"auditUserId\":149,\"completedAt\":1790003836000,\"createTime\":1790003320000,\"creator\":149,\"deadline\":1790258400000,\"deleteFlag\":\"0\",\"id\":6,\"inventoriedCount\":1,\"inventoryNo\":\"PD20260921190840893\",\"inventoryUserId\":63,\"inventoryUserName\":\"admin\",\"normalCount\":1,\"planName\":\"2026年09月资产设备专项盘点\",\"plannedAt\":1790053200000,\"scopeType\":\"DEVICE\",\"source\":\"MANUAL\",\"startedAt\":1790003819000,\"status\":\"CLOSED\",\"totalCount\":1,\"updateTime\":1790003848000,\"updater\":149},{\"abnormalCount\":0,\"createTime\":1790003280000,\"creator\":149,\"deadline\":1790258400000,\"deleteFlag\":\"0\",\"id\":5,\"inventoriedCount\":0,\"inventoryNo\":\"PD20260921190800418\",\"inventoryUserId\":149,\"inventoryUserName\":\"张三\",\"normalCount\":0,\"planName\":\"2026年09月资产设备专项盘点\",\"plannedAt\":1790053200000,\"remark\":\"进行盘点\",\"scopeType\":\"ALL\",\"source\":\"MANUAL\",\"status\":\"ACCEPTED\",\"totalCount\":2,\"updateTime\":1790003293000,\"updater\":149},{\"abnormalCount\":0,\"completedAt\":1790002875000,\"createTime\":1789995983000,\"creator\":63,\"deadline\":1790258400000,\"deleteFlag\":\"0\",\"id\":4,\"inventoriedCount\":8,\"inventoryNo\":\"PD20260921170623856\",\"inventoryUserId\":149,\"inventoryUserName\":\"张三\",\"normalCount\":0,\"planName\":\"2026年09月资产设备专项盘点\",\"plannedAt\":1790053200000,\"remark\":\"进行盘点\",\"scopeType\":\"ASSET\",\"source\":\"MANUAL\",\"startedAt\":1790002559000,\"status\":\"CLOSED\",\"totalCount\":8,\"updateTime\":1790003793000,\"updater\":149},{\"abnormalCount\":0,\"createTime\":1789722750000,\"creator\":63,\"deadline\":1789999200000,\"deleteFlag\":\"0\",\"id\":1,\"inventoriedCount\":1,\"inventoryNo\":\"PD20260918131230171\",\"inventoryUserId\":36,\"inventoryUserName\":\"张伟\",\"normalCount\":0,\"planName\":\"2026年09月资产设备专项盘点\",\"plannedAt\":1789794000000,\"remark\":\"进行盘点\",\"scopeType\":\"DEVICE\",\"source\":\"MANUAL\",\"startedAt\":1789723142000,\"status\":\"IN_PROGRESS\",\"totalCount\":3,\"updateTime\":1789986959000,\"updater\":63}]}}'); +INSERT INTO `tbl_log` VALUES (9479, 63, '接口日志', '43.174.53.48/1.9.116.218', '2026-10-06 06:20:40', 0, 'AssetDeviceController.list(..)', NULL, 'GET /apis/assetDevice/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":10,\"rows\":[{\"assetId\":8,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"工装设备\",\"deviceCode\":\"TOOL-STENCIL-CLEAN-01\",\"deviceName\":\"全自动钢网清洗机\",\"enabledDate\":1739822400000,\"id\":10,\"keeper\":\"王磊\",\"location\":\"一车间 钢网房\",\"manufacturer\":\"SAWA\",\"model\":\"SC-A1000\",\"nextMaintenanceDate\":1794254400000,\"purchaseDate\":1739131200000,\"remark\":\"水基清洗、漂洗、热风干燥一体化\",\"serialNumber\":\"SAWA-A1000-250210\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetId\":7,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"物流设备\",\"deviceCode\":\"WH-FORKLIFT-01\",\"deviceName\":\"2 吨电动叉车\",\"enabledDate\":1722456000000,\"id\":9,\"keeper\":\"张伟\",\"location\":\"原材料仓充电区\",\"manufacturer\":\"Toyota\",\"model\":\"8FBE20\",\"nextMaintenanceDate\":1792872000000,\"purchaseDate\":1721592000000,\"remark\":\"锂电池版本,配置蓝光安全警示灯\",\"serialNumber\":\"TY-8FBE20-240722\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"仓储物流部\"},{\"assetId\":6,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"服务器\",\"deviceCode\":\"IT-MES-DB-01\",\"deviceName\":\"MES 数据库主服务器\",\"enabledDate\":1737489600000,\"id\":8,\"keeper\":\"赵敏\",\"location\":\"数据中心 A03-U18\",\"manufacturer\":\"Dell\",\"model\":\"PowerEdge R760\",\"nextMaintenanceDate\":1797278400000,\"purchaseDate\":1736884800000,\"remark\":\"双路 CPU、512GB 内存、全闪存 RAID10\",\"serialNumber\":\"CN-R760-25011501\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"信息技术部\"},{\"assetId\":5,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"动力设备\",\"deviceCode\":\"UTIL-AIR-01\",\"deviceName\":\"变频螺杆空压机\",\"enabledDate\":1701374400000,\"id\":7,\"keeper\":\"陈晨\",\"location\":\"动力站 1 号机位\",\"manufacturer\":\"Atlas Copco\",\"model\":\"GA22 VSD+\",\"nextMaintenanceDate\":1790798400000,\"purchaseDate\":1700424000000,\"remark\":\"运行压力 0.72MPa,接入能源管理系统\",\"serialNumber\":\"AC-GA22-2311209\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"设备动力部\"},{\"assetId\":4,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"检测设备\",\"deviceCode\":\"QC-SPI-01\",\"deviceName\":\"在线 3D SPI\",\"enabledDate\":1713384000000,\"id\":6,\"keeper\":\"陈晨\",\"lastInventoryTime\":1789986951000,\"location\":\"一车间 印刷检测区\",\"manufacturer\":\"Koh Young\",\"model\":\"KY8030-3\",\"nextMaintenanceDate\":1793908800000,\"purchaseDate\":1712347200000,\"remark\":\"与印刷机闭环反馈锡膏偏移数据\",\"serialNumber\":\"KY-8030-24040608\",\"status\":\"IN_USE\",\"updateTime\":1789986959000,\"useDepartment\":\"品质部\"},{\"assetId\":3,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"检测设备\",\"deviceCode\":\"QC-AOI-01\",\"deviceName\":\"在线 3D AOI\",\"enabledDate\":1713384000000,\"id\":5,\"keeper\":\"陈晨\",\"lastInventoryTime\":1790003830000,\"location\":\"一车间 AOI 检测区\",\"manufacturer\":\"Koh Young\",\"model\":\"Zenith 2\",\"nextMaintenanceDate\":1793822400000,\"purchaseDate\":1712347200000,\"remark\":\"具备 AI 缺陷复判和 SPC 数据接口\",\"serialNumber\":\"KY-Z2-24040615\",\"status\":\"IN_USE\",\"updateTime\":1790003830000,\"useDepartment\":\"品质部\"},{\"assetId\":2,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"焊接设备\",\"deviceCode\":\"SMT-L01-REFLOW-01\",\"deviceName\":\"十温区氮气回流焊炉\",\"enabledDate\":1712692800000,\"id\":4,\"keeper\":\"王磊\",\"location\":\"一车间 SMT-01 线后段\",\"manufacturer\":\"Heller Industries\",\"model\":\"HELLER 1936MK7\",\"nextMaintenanceDate\":1792440000000,\"purchaseDate\":1710705600000,\"remark\":\"氮气闭环控制,支持双轨独立调宽\",\"serialNumber\":\"HLR1936-2403268\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetId\":1,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"贴装设备\",\"deviceCode\":\"SMT-L01-MOUNTER-B\",\"deviceName\":\"多功能贴片机 B\",\"enabledDate\":1712520000000,\"id\":3,\"keeper\":\"王磊\",\"location\":\"一车间 SMT-01 线 B 工位\",\"manufacturer\":\"Panasonic\",\"model\":\"Panasonic NPM-W2S\",\"nextMaintenanceDate\":1792094400000,\"purchaseDate\":1710705600000,\"remark\":\"负责异形件及高精度元件贴装\",\"serialNumber\":\"NPMW2S24031802\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetId\":1,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"贴装设备\",\"deviceCode\":\"SMT-L01-MOUNTER-A\",\"deviceName\":\"高速模块贴片机 A\",\"enabledDate\":1712520000000,\"id\":2,\"keeper\":\"王磊\",\"location\":\"一车间 SMT-01 线 A 工位\",\"manufacturer\":\"Panasonic\",\"model\":\"Panasonic NPM-D3A\",\"nextMaintenanceDate\":1792008000000,\"purchaseDate\":1710705600000,\"remark\":\"前段高速贴装,配置 16 头轻量贴装头\",\"serialNumber\":\"NPMD3A24031801\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetId\":1,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"印刷设备\",\"deviceCode\":\"SMT-L01-PRINTER-01\",\"deviceName\":\"全自动锡膏印刷机\",\"enabledDate\":1712520000000,\"id\":1,\"keeper\":\"王磊\",\"lastInventoryTime\":1789726083000,\"location\":\"一车间 SMT-01 线前段\",\"manufacturer\":\"ASMPT\",\"model\":\"DEK NeoHorizon 03iX\",\"nextMaintenanceDate\":1791403200000,\"purchaseDate\":1710705600000,\"remark\":\"配置 2D 检测与自动擦网单元\",\"serialNumber\":\"DEK24NH03187\",\"status\":\"IN_USE\",\"updateTime\":1789726082000,\"useDepartment\":\"SMT生产部\"}]}}'); +INSERT INTO `tbl_log` VALUES (9480, 63, '接口日志', '43.152.142.62/1.9.116.218', '2026-10-06 06:20:41', 0, 'AssetController.categoryOptions()', NULL, 'GET /apis/asset/category/options', '{}', '{\"code\":200,\"data\":{\"rows\":[{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"尚未归入具体种类的资产\",\"updateTime\":1790613193000,\"categoryCode\":\"UNCATEGORIZED\",\"id\":4,\"sort\":10,\"categoryName\":\"未分类\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System 硬件台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"HARDWARE\",\"id\":5,\"sort\":20,\"categoryName\":\"硬件资产\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System 软件台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"SOFTWARE\",\"id\":6,\"sort\":30,\"categoryName\":\"软件资产\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System SIM 卡台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"SIM_CARD\",\"id\":7,\"sort\":40,\"categoryName\":\"SIM卡\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_01BF8DA563A0\",\"id\":11,\"sort\":100,\"categoryName\":\"生产设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_7129859760C3\",\"id\":12,\"sort\":100,\"categoryName\":\"检测设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_9F38069B30A1\",\"id\":13,\"sort\":100,\"categoryName\":\"动力设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_75F489029B11\",\"id\":14,\"sort\":100,\"categoryName\":\"IT设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_3DDFE01CA0B8\",\"id\":15,\"sort\":100,\"categoryName\":\"物流设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_B5D44F2B039A\",\"id\":16,\"sort\":100,\"categoryName\":\"工装设备\",\"enabled\":true}],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9481, 63, '接口日志', '43.174.53.16/1.9.116.218', '2026-10-06 06:20:41', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":255,\"rows\":[{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019200694297052\",\"assetName\":\"SIM卡 896019200694297052\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"6\",\"externalSource\":\"SIM\",\"id\":270,\"keeper\":\"UITM Dungun\",\"location\":\"SMT (???)\",\"originalValue\":0.000000,\"quantity\":1.000000,\"source\":\"SAS\",\"specification\":\"183.171.146.98\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019190221500578\",\"assetName\":\"SIM卡 896019190221500578\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"5\",\"externalSource\":\"SIM\",\"id\":269,\"keeper\":\"SMT\",\"location\":\"UITM Dungun\",\"originalValue\":0.000000,\"purchaseDate\":1608062400000,\"quantity\":1.000000,\"remark\":\"启用日期: 2020-12-16\",\"source\":\"SAS\",\"specification\":\"183.171.14.125\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019190221500576\",\"assetName\":\"SIM卡 896019190221500576\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"1\",\"externalSource\":\"SIM\",\"id\":268,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1608062400000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2020-12-16\",\"source\":\"SAS\",\"specification\":\"183.171.144.65\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607778\",\"assetName\":\"SIM卡 896019210381607778\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"2\",\"externalSource\":\"SIM\",\"id\":267,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1711051200000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2024-03-22\",\"source\":\"SAS\",\"specification\":\"183.171.15.60\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607781\",\"assetName\":\"SIM卡 896019210381607781\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"9\",\"externalSource\":\"SIM\",\"id\":266,\"keeper\":\"SMT\",\"location\":\"SMT (RnD) Modem RnD\",\"originalValue\":0.000000,\"purchaseDate\":1711051200000,\"quantity\":1.000000,\"remark\":\"设备序列号: 21070014;电表序列号: 320910015;启用日期: 2024-03-22\",\"source\":\"SAS\",\"specification\":\"183.171.5.142 / KM08-LTE Modem / 21070014\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607777\",\"assetName\":\"SIM卡 896019210381607777\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"3\",\"externalSource\":\"SIM\",\"id\":265,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1720987200000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2024-07-15\",\"source\":\"SAS\",\"specification\":\"183.171.40.182\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607782\",\"assetName\":\"SIM卡 896019210381607782\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"4\",\"externalSource\":\"SIM\",\"id\":264,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1720987200000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2024-07-15\",\"source\":\"SAS\",\"specification\":\"183.171.40.117\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607784\",\"assetName\":\"SIM卡 896019210381607784\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"7\",\"externalSource\":\"SIM\",\"id\":263,\"keeper\":\"SMT\",\"location\":\"SMT (Modem-Production)\",\"originalValue\":0.000000,\"purchaseDate\":1727553600000,\"quantity\":1.000000,\"remark\":\"设备序列号: 20041004;启用日期: 2024-09-29\",\"source\":\"SAS\",\"specification\":\"183.171.50.5 / KM08-LTE Modem / 20041004\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607783\",\"assetName\":\"SIM卡 896019210381607783\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"8\",\"externalSource\":\"SIM\",\"id\":262,\"keeper\":\"SMT\",\"location\":\"SMT (RnD) Modem Store\",\"originalValue\":0.000000,\"purchaseDate\":1727553600000,\"quantity\":1.000000,\"remark\":\"设备序列号: 2403005;启用日期: 2024-09-29\",\"source\":\"SAS\",\"specification\":\"183.171.50.6 / KM08-LTE Modem / 2403005\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607785\",\"assetName\":\"SIM卡 896019210381607785\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"10\",\"externalSource\":\"SIM\",\"id\":261,\"keeper\":\"SMT\",\"location\":\"SMT (RnD) Alyaa\",\"originalValue\":0.000000,\"purchaseDate\":1766433600000,\"quantity\":1.000000,\"remark\":\"设备序列号: 21070011;电表序列号: 320910014;启用日期: 2025-12-23\",\"source\":\"SAS\",\"specification\":\"183.171.151.171 / KM08-LTE Modem / 21070011\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000}]}}'); +INSERT INTO `tbl_log` VALUES (9482, 63, '接口日志', '43.174.54.44/1.9.116.218', '2026-10-06 06:20:49', 0, 'AssetInventoryController.operatorOptions()', NULL, 'GET /apis/assetInventory/operatorOptions', '{}', '{\"code\":200,\"data\":{\"rows\":[{\"loginName\":\"admin\",\"name\":\"admin\",\"id\":63},{\"loginName\":\"admin2\",\"name\":\"admin2\",\"id\":149}],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9483, 63, '接口日志', '43.152.142.108/1.9.116.218', '2026-10-06 06:20:49', 0, 'AssetDeviceController.options()', NULL, 'GET /apis/assetDevice/options', '{}', '{\"code\":200,\"data\":{\"rows\":[{\"creator\":63,\"purchaseDate\":\"2025-01-15\",\"assetCode\":\"FA-IT-2025-006\",\"serialNumber\":\"CN-R760-25011501\",\"keeper\":\"赵敏\",\"enabledDate\":\"2025-01-22\",\"remark\":\"双路 CPU、512GB 内存、全闪存 RAID10\",\"updateTime\":1789718123000,\"deviceCode\":\"IT-MES-DB-01\",\"deviceName\":\"MES 数据库主服务器\",\"manufacturer\":\"Dell\",\"deleteFlag\":\"0\",\"useDepartment\":\"信息技术部\",\"deviceCategory\":\"服务器\",\"createTime\":1789718123000,\"assetId\":6,\"nextMaintenanceDate\":\"2026-12-15\",\"location\":\"数据中心 A03-U18\",\"model\":\"PowerEdge R760\",\"id\":8,\"status\":\"IN_USE\"},{\"creator\":63,\"lastInventoryTime\":\"2026-09-21\",\"purchaseDate\":\"2024-04-06\",\"assetCode\":\"FA-QC-2024-003\",\"serialNumber\":\"KY-Z2-24040615\",\"keeper\":\"陈晨\",\"enabledDate\":\"2024-04-18\",\"remark\":\"具备 AI 缺陷复判和 SPC 数据接口\",\"updateTime\":1790003830000,\"deviceCode\":\"QC-AOI-01\",\"deviceName\":\"在线 3D AOI\",\"manufacturer\":\"Koh Young\",\"deleteFlag\":\"0\",\"useDepartment\":\"品质部\",\"deviceCategory\":\"检测设备\",\"createTime\":1789718123000,\"assetId\":3,\"nextMaintenanceDate\":\"2026-11-05\",\"location\":\"一车间 AOI 检测区\",\"model\":\"Zenith 2\",\"id\":5,\"status\":\"IN_USE\"},{\"creator\":63,\"lastInventoryTime\":\"2026-09-21\",\"purchaseDate\":\"2024-04-06\",\"assetCode\":\"FA-QC-2024-004\",\"serialNumber\":\"KY-8030-24040608\",\"keeper\":\"陈晨\",\"enabledDate\":\"2024-04-18\",\"remark\":\"与印刷机闭环反馈锡膏偏移数据\",\"updateTime\":1789986959000,\"deviceCode\":\"QC-SPI-01\",\"deviceName\":\"在线 3D SPI\",\"manufacturer\":\"Koh Young\",\"deleteFlag\":\"0\",\"useDepartment\":\"品质部\",\"deviceCategory\":\"检测设备\",\"createTime\":1789718123000,\"assetId\":4,\"nextMaintenanceDate\":\"2026-11-06\",\"location\":\"一车间 印刷检测区\",\"model\":\"KY8030-3\",\"id\":6,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2024-03-18\",\"assetCode\":\"FA-SMT-2024-001\",\"serialNumber\":\"NPMD3A24031801\",\"keeper\":\"王磊\",\"enabledDate\":\"2024-04-08\",\"remark\":\"前段高速贴装,配置 16 头轻量贴装头\",\"updateTime\":1789718123000,\"deviceCode\":\"SMT-L01-MOUNTER-A\",\"deviceName\":\"高速模块贴片机 A\",\"manufacturer\":\"Panasonic\",\"deleteFlag\":\"0\",\"useDepartment\":\"SMT生产部\",\"deviceCategory\":\"贴装设备\",\"createTime\":1789718123000,\"assetId\":1,\"nextMaintenanceDate\":\"2026-10-15\",\"location\":\"一车间 SMT-01 线 A 工位\",\"model\":\"Panasonic NPM-D3A\",\"id\":2,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2024-03-18\",\"assetCode\":\"FA-SMT-2024-001\",\"serialNumber\":\"NPMW2S24031802\",\"keeper\":\"王磊\",\"enabledDate\":\"2024-04-08\",\"remark\":\"负责异形件及高精度元件贴装\",\"updateTime\":1789718123000,\"deviceCode\":\"SMT-L01-MOUNTER-B\",\"deviceName\":\"多功能贴片机 B\",\"manufacturer\":\"Panasonic\",\"deleteFlag\":\"0\",\"useDepartment\":\"SMT生产部\",\"deviceCategory\":\"贴装设备\",\"createTime\":1789718123000,\"assetId\":1,\"nextMaintenanceDate\":\"2026-10-16\",\"location\":\"一车间 SMT-01 线 B 工位\",\"model\":\"Panasonic NPM-W2S\",\"id\":3,\"status\":\"IN_USE\"},{\"creator\":63,\"lastInventoryTime\":\"2026-09-18\",\"purchaseDate\":\"2024-03-18\",\"assetCode\":\"FA-SMT-2024-001\",\"serialNumber\":\"DEK24NH03187\",\"keeper\":\"王磊\",\"enabledDate\":\"2024-04-08\",\"remark\":\"配置 2D 检测与自动擦网单元\",\"updateTime\":1789726082000,\"deviceCode\":\"SMT-L01-PRINTER-01\",\"deviceName\":\"全自动锡膏印刷机\",\"manufacturer\":\"ASMPT\",\"deleteFlag\":\"0\",\"useDepartment\":\"SMT生产部\",\"deviceCategory\":\"印刷设备\",\"createTime\":1789718123000,\"assetId\":1,\"nextMaintenanceDate\":\"2026-10-08\",\"location\":\"一车间 SMT-01 线前段\",\"model\":\"DEK NeoHorizon 03iX\",\"id\":1,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2024-03-18\",\"assetCode\":\"FA-SMT-2024-002\",\"serialNumber\":\"HLR1936-2403268\",\"keeper\":\"王磊\",\"enabledDate\":\"2024-04-10\",\"remark\":\"氮气闭环控制,支持双轨独立调宽\",\"updateTime\":1789718123000,\"deviceCode\":\"SMT-L01-REFLOW-01\",\"deviceName\":\"十温区氮气回流焊炉\",\"manufacturer\":\"Heller Industries\",\"deleteFlag\":\"0\",\"useDepartment\":\"SMT生产部\",\"deviceCategory\":\"焊接设备\",\"createTime\":1789718123000,\"assetId\":2,\"nextMaintenanceDate\":\"2026-10-20\",\"location\":\"一车间 SMT-01 线后段\",\"model\":\"HELLER 1936MK7\",\"id\":4,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2025-02-10\",\"assetCode\":\"FA-TOOL-2025-008\",\"serialNumber\":\"SAWA-A1000-250210\",\"keeper\":\"王磊\",\"enabledDate\":\"2025-02-18\",\"remark\":\"水基清洗、漂洗、热风干燥一体化\",\"updateTime\":1789718123000,\"deviceCode\":\"TOOL-STENCIL-CLEAN-01\",\"deviceName\":\"全自动钢网清洗机\",\"manufacturer\":\"SAWA\",\"deleteFlag\":\"0\",\"useDepartment\":\"SMT生产部\",\"deviceCategory\":\"工装设备\",\"createTime\":1789718123000,\"assetId\":8,\"nextMaintenanceDate\":\"2026-11-10\",\"location\":\"一车间 钢网房\",\"model\":\"SC-A1000\",\"id\":10,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2023-11-20\",\"assetCode\":\"FA-UTIL-2023-005\",\"serialNumber\":\"AC-GA22-2311209\",\"keeper\":\"陈晨\",\"enabledDate\":\"2023-12-01\",\"remark\":\"运行压力 0.72MPa,接入能源管理系统\",\"updateTime\":1789718123000,\"deviceCode\":\"UTIL-AIR-01\",\"deviceName\":\"变频螺杆空压机\",\"manufacturer\":\"Atlas Copco\",\"deleteFlag\":\"0\",\"useDepartment\":\"设备动力部\",\"deviceCategory\":\"动力设备\",\"createTime\":1789718123000,\"assetId\":5,\"nextMaintenanceDate\":\"2026-10-01\",\"location\":\"动力站 1 号机位\",\"model\":\"GA22 VSD+\",\"id\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2024-07-22\",\"assetCode\":\"FA-WH-2024-007\",\"serialNumber\":\"TY-8FBE20-240722\",\"keeper\":\"张伟\",\"enabledDate\":\"2024-08-01\",\"remark\":\"锂电池版本,配置蓝光安全警示灯\",\"updateTime\":1789718123000,\"deviceCode\":\"WH-FORKLIFT-01\",\"deviceName\":\"2 吨电动叉车\",\"manufacturer\":\"Toyota\",\"deleteFlag\":\"0\",\"useDepartment\":\"仓储物流部\",\"deviceCategory\":\"物流设备\",\"createTime\":1789718123000,\"assetId\":7,\"nextMaintenanceDate\":\"2026-10-25\",\"location\":\"原材料仓充电区\",\"model\":\"8FBE20\",\"id\":9,\"status\":\"IN_USE\"}],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9484, 63, '接口日志', '43.152.142.31/1.9.116.218', '2026-10-06 06:20:49', 0, 'AssetController.options()', NULL, 'GET /apis/asset/options', '{}', '{\"code\":200,\"data\":{\"rows\":[{\"creator\":63,\"assetCode\":\"SIM-896019200694297052\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"UITM Dungun\",\"externalId\":\"6\",\"originalValue\":0.000000,\"specification\":\"183.171.146.98\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019200694297052\",\"location\":\"SMT (???)\",\"id\":270,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2020-12-16\",\"assetCode\":\"SIM-896019190221500578\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"5\",\"originalValue\":0.000000,\"specification\":\"183.171.14.125\",\"remark\":\"启用日期: 2020-12-16\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019190221500578\",\"location\":\"UITM Dungun\",\"id\":269,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2020-12-16\",\"assetCode\":\"SIM-896019190221500576\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"1\",\"originalValue\":0.000000,\"specification\":\"183.171.144.65\",\"remark\":\"使用期限: 2 Years;启用日期: 2020-12-16\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019190221500576\",\"location\":\"Genting\",\"id\":268,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2024-03-22\",\"assetCode\":\"SIM-896019210381607778\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"2\",\"originalValue\":0.000000,\"specification\":\"183.171.15.60\",\"remark\":\"使用期限: 2 Years;启用日期: 2024-03-22\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381607778\",\"location\":\"Genting\",\"id\":267,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2024-03-22\",\"assetCode\":\"SIM-896019210381607781\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"9\",\"originalValue\":0.000000,\"specification\":\"183.171.5.142 / KM08-LTE Modem / 21070014\",\"remark\":\"设备序列号: 21070014;电表序列号: 320910015;启用日期: 2024-03-22\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381607781\",\"location\":\"SMT (RnD) Modem RnD\",\"id\":266,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2024-07-15\",\"assetCode\":\"SIM-896019210381607777\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"3\",\"originalValue\":0.000000,\"specification\":\"183.171.40.182\",\"remark\":\"使用期限: 2 Years;启用日期: 2024-07-15\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381607777\",\"location\":\"Genting\",\"id\":265,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2024-07-15\",\"assetCode\":\"SIM-896019210381607782\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"4\",\"originalValue\":0.000000,\"specification\":\"183.171.40.117\",\"remark\":\"使用期限: 2 Years;启用日期: 2024-07-15\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381607782\",\"location\":\"Genting\",\"id\":264,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2024-09-29\",\"assetCode\":\"SIM-896019210381607784\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"7\",\"originalValue\":0.000000,\"specification\":\"183.171.50.5 / KM08-LTE Modem / 20041004\",\"remark\":\"设备序列号: 20041004;启用日期: 2024-09-29\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381607784\",\"location\":\"SMT (Modem-Production)\",\"id\":263,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2024-09-29\",\"assetCode\":\"SIM-896019210381607783\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"8\",\"originalValue\":0.000000,\"specification\":\"183.171.50.6 / KM08-LTE Modem / 2403005\",\"remark\":\"设备序列号: 2403005;启用日期: 2024-09-29\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381607783\",\"location\":\"SMT (RnD) Modem Store\",\"id\":262,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2025-12-23\",\"assetCode\":\"SIM-896019210381607785\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"10\",\"originalValue\":0.000000,\"specification\":\"183.171.151.171 / KM08-LTE Modem / 21070011\",\"remark\":\"设备序列号: 21070011;电表序列号: 320910014;启用日期: 2025-12-23\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381607785\",\"location\":\"SMT (RnD) Alyaa\",\"id\":261,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2025-12-23\",\"assetCode\":\"SIM-896019210381607786\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"11\",\"originalValue\":0.000000,\"specification\":\"183.171.208.37 / KM08-LTE Modem / 21070013\",\"remark\":\"设备序列号: 21070013;启用日期: 2025-12-23\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381607786\",\"location\":\"SMT (RnD) Alyaa\",\"id\":260,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2025-12-23\",\"assetCode\":\"SIM-896019210381702562\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"12\",\"originalValue\":0.000000,\"specification\":\"183.171.144.61\",\"remark\":\"启用日期: 2025-12-23\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381702562\",\"location\":\"Loan to Hanif/Adha (22-May-2026); \",\"id\":259,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2025-12-23\",\"assetCode\":\"SIM-896019210381607780\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"14\",\"originalValue\":0.000000,\"specification\":\"183.171.208.37\",\"remark\":\"使用期限: 2 Months;启用日期: 2025-12-23\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381607780\",\"location\":\"POC AEON\",\"id\":258,\"categoryId\":7,\"status\":\"SCRAPPED\"},{\"creator\":63,\"purchaseDate\":\"2025-12-23\",\"assetCode\":\"SIM-896019190221500577\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"15\",\"originalValue\":0.000000,\"specification\":\"183.171.144.61\",\"remark\":\"启用日期: 2025-12-23\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019190221500577\",\"location\":\"Kompleks Pertama\",\"id\":257,\"categoryId\":7,\"status\":\"SCRAPPED\"},{\"creator\":63,\"purchaseDate\":\"2025-12-23\",\"assetCode\":\"SIM-896019210381607779\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"13\",\"originalValue\":0.000000,\"specification\":\"183.171.151.171\",\"remark\":\"使用期限: 2 Months;启用日期: 2025-12-23\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381607779\",\"location\":\"POC AEON\",\"id\":256,\"categoryId\":7,\"status\":\"SCRAPPED\"},{\"creator\":63,\"purchaseDate\":\"2026-06-03\",\"assetCode\":\"SIM-896019210381702569\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"18\",\"originalValue\":0.000000,\"specification\":\"183.171.11.200\",\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381702569\",\"location\":\"With Amir\",\"id\":255,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2026-06-03\",\"assetCode\":\"SIM-896019210381702570\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"19\",\"originalValue\":0.000000,\"specification\":\"183.171.214.141\",\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381702570\",\"location\":\"With Amir\",\"id\":254,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2026-06-03\",\"assetCode\":\"SIM-896019210381702571\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"23\",\"originalValue\":0.000000,\"specification\":\"183.171.9.45\",\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381702571\",\"location\":\"R&D room, SMT\",\"id\":253,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2026-06-03\",\"assetCode\":\"SIM-896019210381702568\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"24\",\"originalValue\":0.000000,\"specification\":\"183.171.214.217 / 4G Modem\",\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381702568\",\"location\":\"Molnlycke Health Care\",\"id\":252,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2026-06-03\",\"assetCode\":\"SIM-896019210381702567\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"25\",\"originalValue\":0.000000,\"specification\":\"183.171.12.143 / 4G Modem\",\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381702567\",\"location\":\"Molnlycke Health Care\",\"id\":251,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2026-06-03\",\"assetCode\":\"SIM-896019210381702566\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"26\",\"originalValue\":0.000000,\"specification\":\"183.171.11.123 / Lora Gateway\",\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381702566\",\"location\":\"GT3.1 (Nur)\",\"id\":250,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2026-06-03\",\"assetCode\":\"SIM-896019210381702565\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"27\",\"originalValue\":0.000000,\"specification\":\"183.171.12.136 / Lora Gateway\",\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381702565\",\"location\":\"Menicon Malaysia\",\"id\":249,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2026-06-03\",\"assetCode\":\"SIM-896019210381702564\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"28\",\"originalValue\":0.000000,\"specification\":\"183.171.10.11 / 4G Modem\",\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381702564\",\"location\":\"First Solar Malaysia\",\"id\":248,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2026-06-03\",\"assetCode\":\"SIM-896019210381702563\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"29\",\"originalValue\":0.000000,\"specification\":\"183.171.11.141 / 4G Modem\",\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381702563\",\"location\":\"First Solar Malaysia\",\"id\":247,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2023-09-18\",\"assetCode\":\"SAS-SW-2\",\"quantity\":15.000000,\"assetCategory\":\"软件资产\",\"externalId\":\"2\",\"originalValue\":8700.000000,\"specification\":\"Amimo\",\"remark\":\"供应商: Amimo;发票号: INV230902\",\"updateTime\":1790613750000,\"categoryCode\":\"SOFTWARE\",\"source\":\"SAS\",\"externalSource\":\"SOFTWARE\",\"deleteFlag\":\"0\",\"unit\":\"套\",\"createTime\":1790613750000,\"assetName\":\"MS Office 2019 Home & Business\",\"id\":246,\"categoryId\":6,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2024-01-11\",\"assetCode\":\"SAS-SW-3\",\"quantity\":2.000000,\"assetCategory\":\"软件资产\",\"externalId\":\"3\",\"originalValue\":1160.000000,\"specification\":\"Amimo\",\"remark\":\"供应商: Amimo;发票号: INV240101\",\"updateTime\":1790613750000,\"categoryCode\":\"SOFTWARE\",\"source\":\"SAS\",\"externalSource\":\"SOFTWARE\",\"deleteFlag\":\"0\",\"unit\":\"套\",\"createTime\":1790613750000,\"assetName\":\"MS Office 2019 Home & Business\",\"id\":245,\"categoryId\":6,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2024-09-27\",\"assetCode\":\"SAS-SW-4\",\"quantity\":1.000000,\"assetCategory\":\"软件资产\",\"externalId\":\"4\",\"originalValue\":0.000000,\"specification\":\"Amimo\",\"remark\":\"供应商: Amimo;发票号: INV240901;原备注: Price bundled with PC purchase.\",\"updateTime\":1790613750000,\"categoryCode\":\"SOFTWARE\",\"source\":\"SAS\",\"externalSource\":\"SOFTWARE\",\"deleteFlag\":\"0\",\"unit\":\"套\",\"createTime\":1790613750000,\"assetName\":\"MS Office 2019 Pro\",\"id\":244,\"categoryId\":6,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2024-04-03\",\"assetCode\":\"SAS-SW-5\",\"quantity\":1.000000,\"assetCategory\":\"软件资产\",\"externalId\":\"5\",\"originalValue\":580.000000,\"specification\":\"Amimo\",\"remark\":\"供应商: Amimo;发票号: INV240402\",\"updateTime\":1790613750000,\"categoryCode\":\"SOFTWARE\",\"source\":\"SAS\",\"externalSource\":\"SOFTWARE\",\"deleteFlag\":\"0\",\"unit\":\"套\",\"createTime\":1790613750000,\"assetName\":\"MS Office 2019 Pro Plus\",\"id\":243,\"categoryId\":6,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2025-01-14\",\"assetCode\":\"SAS-SW-6\",\"quantity\":4.000000,\"assetCategory\":\"软件资产\",\"externalId\":\"6\",\"originalValue\":2320.000000,\"specification\":\"Amimo\",\"remark\":\"供应商: Amimo;发票号: QUO250101\",\"updateTime\":1790613750000,\"categoryCode\":\"SOFTWARE\",\"source\":\"SAS\",\"externalSource\":\"SOFTWARE\",\"deleteFlag\":\"0\",\"unit\":\"套\",\"createTime\":1790613750000,\"assetName\":\"MS Office 2019 Pro Plus\",\"id\":242,\"categoryId\":6,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2024-02-13\",\"assetCode\":\"SAS-SW-7\",\"quantity\":1.000000,\"assetCategory\":\"软件资产\",\"externalId\":\"7\",\"originalValue\":750.000000,\"specification\":\"Amimo\",\"remark\":\"供应商: Amimo;发票号: INV240201\",\"updateTime\":1790613750000,\"categoryCode\":\"SOFTWARE\",\"source\":\"SAS\",\"externalSource\":\"SOFTWARE\",\"deleteFlag\":\"0\",\"unit\":\"套\",\"createTime\":1790613750000,\"assetName\":\"MS Office 2021 Home & Business\",\"id\":241,\"categoryId\":6,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2024-04-03\",\"assetCode\":\"SAS-SW-8\",\"quantity\":2.000000,\"assetCategory\":\"软件资产\",\"externalId\":\"8\",\"originalValue\":0.000000,\"specification\":\"Amimo\",\"remark\":\"供应商: Amimo;发票号: INV240401;原备注: Price bundled with PC purchase.\",\"updateTime\":1790613750000,\"categoryCode\":\"SOFTWARE\",\"source\":\"SAS\",\"externalSource\":\"SOFTWARE\",\"deleteFlag\":\"0\",\"unit\":\"套\",\"createTime\":1790613750000,\"assetName\":\"MS Office 2021 Pro\",\"id\":240,\"categoryId\":6,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2024-06-21\",\"assetCode\":\"SAS-SW-9\",\"quantity\":1.000000,\"assetCategory\":\"软件资产\",\"externalId\":\"9\",\"originalValue\":0.000000,\"specification\":\"Amimo\",\"remark\":\"供应商: Amimo;发票号: INV240601;原备注: Price bundled with PC purchase.\",\"updateTime\":1790613750000,\"categoryCode\":\"SOFTWARE\",\"source\":\"SAS\",\"externalSource\":\"SOFTWARE\",\"deleteFlag\":\"0\",\"useDepartment\":\"HR\",\"unit\":\"套\",\"createTime\":1790613750000,\"assetName\":\"MS Office 2021 Pro\",\"id\":239,\"categoryId\":6,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2026-01-21\",\"assetCode\":\"SAS-SW-10\",\"quantity\":10.000000,\"assetCategory\":\"软件资产\",\"externalId\":\"10\",\"originalValue\":0.000000,\"specification\":\"Amimo\",\"remark\":\"供应商: Amimo;许可证: Smt@123;发票号: INV260101;原备注: Bundled with 10 unit of PC purchase for Lab.\",\"updateTime\":1790613750000,\"categoryCode\":\"SOFTWARE\",\"source\":\"SAS\",\"externalSource\":\"SOFTWARE\",\"deleteFlag\":\"0\",\"useDepartment\":\"Laboratory\",\"unit\":\"套\",\"createTime\":1790613750000,\"assetName\":\"MS Office Home & Business\",\"id\":238,\"categoryId\":6,\"status\":\"IN_USE\"},{\"creator\":63,\"assetCode\":\"SAS-SW-11\",\"quantity\":1.000000,\"assetCategory\":\"软件资产\",\"externalId\":\"11\",\"originalValue\":0.000000,\"specification\":\"Amimo\",\"remark\":\"供应商: Amimo;原备注: Bundled with 1 unit of Laptop\",\"updateTime\":1790613750000,\"categoryCode\":\"SOFTWARE\",\"source\":\"SAS\",\"externalSource\":\"SOFTWARE\",\"deleteFlag\":\"0\",\"useDepartment\":\"Tech & Technology\",\"unit\":\"套\",\"createTime\":1790613750000,\"assetName\":\"MS Office Home & Business\",\"id\":237,\"categoryId\":6,\"status\":\"IN_USE\"},{\"creator\":63,\"assetCode\":\"SAS-SW-12\",\"quantity\":1.000000,\"assetCategory\":\"软件资产\",\"externalId\":\"12\",\"originalValue\":0.000000,\"specification\":\"CD\",\"remark\":\"许可证: BX27V-J9QMG-3VVWY-7JTYT-94CXB\",\"updateTime\":1790613750000,\"categoryCode\":\"SOFTWARE\",\"source\":\"SAS\",\"externalSource\":\"SOFTWARE\",\"deleteFlag\":\"0\",\"unit\":\"套\",\"createTime\":1790613750000,\"assetName\":\"MS Office Home & Business 2010\",\"id\":236,\"categoryId\":6,\"status\":\"IN_USE\"},{\"creator\":63,\"assetCode\":\"SAS-SW-13\",\"quantity\":1.000000,\"assetCategory\":\"软件资产\",\"externalId\":\"13\",\"originalValue\":0.000000,\"specification\":\"CD\",\"remark\":\"许可证: GTTC2-XH8PW-3WJFH-76VFQ-PHYX9\",\"updateTime\":1790613750000,\"categoryCode\":\"SOFTWARE\",\"source\":\"SAS\",\"externalSource\":\"SOFTWARE\",\"deleteFlag\":\"0\",\"unit\":\"套\",\"createTime\":1790613750000,\"assetName\":\"MS Office Home & Business 2010\",\"id\":235,\"categoryId\":6,\"status\":\"IN_USE\"},{\"creator\":63,\"assetCode\":\"SAS-SW-14\",\"quantity\":1.000000,\"assetCategory\":\"软件资产\",\"externalId\":\"14\",\"originalValue\":0.000000,\"specification\":\"CD\",\"remark\":\"许可证: WY8KV-GQ39X-2WQF2-V8R93-RY6CT\",\"updateTime\":1790613750000,\"categoryCode\":\"SOFTWARE\",\"source\":\"SAS\",\"externalSource\":\"SOFTWARE\",\"deleteFlag\":\"0\",\"unit\":\"套\",\"createTime\":1790613750000,\"assetName\":\"MS Office Home & Business 2010\",\"id\":234,\"categoryId\":6,\"status\":\"IN_USE\"},{\"creator\":63,\"assetCode\":\"SAS-SW-15\",\"quantity\":1.000000,\"assetCategory\":\"软件资产\",\"externalId\":\"15\",\"originalValue\":0.000000,\"specification\":\"CD\",\"remark\":\"许可证: YBDDT-C4QPP-J6T63-DQMB8-9XB29;原备注: Written: Burnny / Asus\",\"updateTime\":1790613750000,\"categoryCode\":\"SOFTWARE\",\"source\":\"SAS\",\"externalSource\":\"SOFTWARE\",\"deleteFlag\":\"0\",\"unit\":\"套\",\"createTime\":1790613750000,\"assetName\":\"MS Office Home & Business 2010\",\"id\":233,\"categoryId\":6,\"status\":\"IN_USE\"},{\"creator\":63,\"assetCode\":\"SAS-SW-16\",\"quantity\":1.000000,\"assetCategory\":\"软件资产\",\"externalId\":\"16\",\"originalValue\":0.000000,\"specification\":\"CD\",\"remark\":\"许可证: XG2WV-YRDV4-VQWQ2-XQQ26-XJ3FF;原备注: Written: SGH109RCWK\",\"updateTime\":1790613750000,\"categoryCode\":\"SOFTWARE\",\"source\":\"SAS\",\"externalSource\":\"SOFTWARE\",\"deleteFlag\":\"0\",\"unit\":\"套\",\"createTime\":1790613750000,\"assetName\":\"MS Office Home & Business 2010\",\"id\":232,\"categoryId\":6,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2024-10-14\",\"assetCode\":\"SAS-SW-1\",\"quantity\":2.000000,\"assetCategory\":\"软件资产\",\"externalId\":\"1\",\"originalValue\":0.000000,\"specification\":\"Amimo\",\"remark\":\"供应商: Amimo;发票号: INV240902;原备注: For server\",\"updateTime\":1790613750000,\"categoryCode\":\"SOFTWARE\",\"source\":\"SAS\",\"externalSource\":\"SOFTWARE\",\"deleteFlag\":\"0\",\"unit\":\"套\",\"createTime\":1790613750000,\"assetName\":\"Linux 6.8.0-45\",\"id\":231,\"categoryId\":6,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2024-10-14\",\"assetCode\":\"SAS-SW-33\",\"quantity\":2.000000,\"assetCategory\":\"软件资产\",\"externalId\":\"33\",\"originalValue\":0.000000,\"specification\":\"Amimo\",\"remark\":\"供应商: Ami...[已截断]'); +INSERT INTO `tbl_log` VALUES (9485, 63, '接口日志', '43.152.142.34/1.9.116.218', '2026-10-06 06:21:12', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (9486, 63, '接口日志', '43.152.142.128/1.9.116.218', '2026-10-06 06:21:14', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (9487, 63, '接口日志', '43.174.53.11/1.9.116.218', '2026-10-06 06:21:14', 0, 'MaterialController.getList(..)', NULL, 'GET /apis/material/list', '{\"search\":\"{\\\"materialParam\\\":\\\"\\\",\\\"standard\\\":\\\"\\\",\\\"model\\\":\\\"\\\",\\\"color\\\":\\\"\\\",\\\"brand\\\":\\\"\\\",\\\"mfrs\\\":\\\"\\\",\\\"otherField1\\\":\\\"\\\",\\\"otherField2\\\":\\\"\\\",\\\"otherField3\\\":\\\"\\\",\\\"weight\\\":\\\"\\\",\\\"expiryNum\\\":\\\"\\\",\\\"position\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"mpList\\\":\\\"扩展1,扩展2,扩展3\\\"}\"}', '{\"code\":200,\"data\":{\"total\":24,\"rows\":[{\"attribute\":\"{}\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"categoryId\":33,\"categoryName\":\"成品\",\"commodityDecimal\":200.000000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":706,\"imgName\":\"\",\"initialStock\":0,\"lowDecimal\":200.000000,\"mBarCode\":\"1002\",\"materialOther\":\"\",\"mfrs\":\"SMT\",\"mnemonic\":\"MD-4G111(VF) 4G\",\"model\":\"MD-4G111(VF) 4G\",\"name\":\"MD-4G111(VF) 4G\",\"purchaseDecimal\":100.000000,\"sku\":\"\",\"standard\":\"MD-4G111(VF) 4G\",\"stock\":0,\"unit\":\"只\",\"wholesaleDecimal\":200.000000},{\"attribute\":\"{}\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"categoryId\":34,\"categoryName\":\"包装\",\"commodityDecimal\":10.000000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":705,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":10.000000,\"mBarCode\":\"1001\",\"materialOther\":\"\",\"mnemonic\":\"MD-4G111(VF) bz\",\"model\":\"MD-4G111(VF)\",\"name\":\"MD-4G111(VF) 包装\",\"purchaseDecimal\":10.000000,\"sku\":\"\",\"standard\":\"MD-4G111(VF) packing\",\"stock\":0.000000,\"unit\":\"件\",\"wholesaleDecimal\":10.000000},{\"attribute\":\"\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryId\":33,\"categoryName\":\"成品\",\"color\":\"\",\"commodityDecimal\":340.000000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":704,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":340.000000,\"mBarCode\":\"3PH-APEC3-WC\",\"materialOther\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mnemonic\":\"\",\"model\":\"3PH APEC3-WC\",\"name\":\"3PH APEC3-WC\",\"otherField1\":\"\",\"otherField2\":\"\",\"otherField3\":\"\",\"position\":\"\",\"purchaseDecimal\":317.500000,\"remark\":\"Excel初始化;条码:3PH-APEC3-WC\",\"standard\":\"3PH APEC3-WC\",\"stock\":7223.000000,\"tenantId\":63,\"unit\":\"件\",\"wholesaleDecimal\":340.000000},{\"attribute\":\"\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryId\":33,\"categoryName\":\"成品\",\"color\":\"\",\"commodityDecimal\":73.500000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":703,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":73.500000,\"mBarCode\":\"1PH-WS79\",\"materialOther\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mnemonic\":\"\",\"model\":\"1PH WS79\",\"name\":\"1PH WS79\",\"otherField1\":\"\",\"otherField2\":\"\",\"otherField3\":\"\",\"position\":\"\",\"purchaseDecimal\":59.500000,\"remark\":\"Excel初始化;条码:1PH-WS79\",\"standard\":\"1PH WS79\",\"stock\":52400.000000,\"tenantId\":63,\"unit\":\"件\",\"wholesaleDecimal\":73.500000},{\"attribute\":\"\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryId\":32,\"categoryName\":\"半成品\",\"color\":\"\",\"commodityDecimal\":24.300000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":702,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":24.300000,\"mBarCode\":\"C.4.T.0.00722\",\"materialOther\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mnemonic\":\"\",\"model\":\"MD-RS178(VA)\",\"name\":\"MD-RS178(VA) RS485分线器\",\"otherField1\":\"\",\"otherField2\":\"\",\"otherField3\":\"\",\"position\":\"\",\"purchaseDecimal\":24.300000,\"remark\":\"Excel初始化;条码:C.4.T.0.00722\",\"standard\":\"MD-RS178(VA)\",\"stock\":1000.000000,\"tenantId\":63,\"unit\":\"件\",\"wholesaleDecimal\":24.300000},{\"attribute\":\"\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryId\":32,\"categoryName\":\"半成品\",\"color\":\"\",\"commodityDecimal\":142.560000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":701,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":142.560000,\"mBarCode\":\"C.4.T.0.0068900002\",\"materialOther\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mnemonic\":\"\",\"model\":\"MD-RS114(VB)\",\"name\":\"MD-RS114(VB) 基于RS485的MODBS TCPMODBS RTUASVII转换模块_(DZG)\",\"otherField1\":\"\",\"otherField2\":\"\",\"otherField3\":\"\",\"position\":\"\",\"purchaseDecimal\":142.560000,\"remark\":\"Excel初始化;条码:C.4.T.0.0068900002\",\"standard\":\"MD-RS114(VB)\",\"stock\":100.000000,\"tenantId\":63,\"unit\":\"件\",\"wholesaleDecimal\":142.560000},{\"attribute\":\"\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryId\":32,\"categoryName\":\"半成品\",\"color\":\"\",\"commodityDecimal\":132.840000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":700,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":132.840000,\"mBarCode\":\"C.4.T.0.00686\",\"materialOther\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mnemonic\":\"\",\"model\":\"TC160(VA)\",\"name\":\"TC160(VA) 通讯模块供电盒\",\"otherField1\":\"\",\"otherField2\":\"\",\"otherField3\":\"\",\"position\":\"\",\"purchaseDecimal\":132.840000,\"remark\":\"Excel初始化;条码:C.4.T.0.00686\",\"standard\":\"TC160(VA)\",\"stock\":50.000000,\"tenantId\":63,\"unit\":\"件\",\"wholesaleDecimal\":132.840000},{\"attribute\":\"\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryId\":32,\"categoryName\":\"半成品\",\"color\":\"\",\"commodityDecimal\":0.100000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":699,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":0.100000,\"mBarCode\":\"C.4.T.0.00654\",\"materialOther\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mnemonic\":\"\",\"model\":\"MD-4G111(VF)\",\"name\":\"MD-4G111(VF) 4G模块\",\"otherField1\":\"\",\"otherField2\":\"\",\"otherField3\":\"\",\"position\":\"\",\"purchaseDecimal\":0.100000,\"remark\":\"Excel初始化;条码:C.4.T.0.00654\",\"standard\":\"MD-4G111(VF)\",\"stock\":76970.000000,\"tenantId\":63,\"unit\":\"件\",\"wholesaleDecimal\":0.100000},{\"attribute\":\"\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryId\":32,\"categoryName\":\"半成品\",\"color\":\"\",\"commodityDecimal\":324.000000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":698,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":324.000000,\"mBarCode\":\"C.4.T.0.00562\",\"materialOther\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mnemonic\":\"\",\"model\":\"MD-4GVIII(VB)\",\"name\":\"MD-4GVIII(VB)\",\"otherField1\":\"\",\"otherField2\":\"\",\"otherField3\":\"\",\"position\":\"\",\"purchaseDecimal\":324.000000,\"remark\":\"Excel初始化;条码:C.4.T.0.00562\",\"standard\":\"MD-4GVIII(VB)\",\"stock\":50.000000,\"tenantId\":63,\"unit\":\"件\",\"wholesaleDecimal\":324.000000},{\"attribute\":\"\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryId\":32,\"categoryName\":\"半成品\",\"color\":\"\",\"commodityDecimal\":129.600000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":697,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":129.600000,\"mBarCode\":\"C.4.T.0.00553\",\"materialOther\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mnemonic\":\"\",\"model\":\"MT-P109(VA)\",\"name\":\"MT-P109(VA)\",\"otherField1\":\"\",\"otherField2\":\"\",\"otherField3\":\"\",\"position\":\"\",\"purchaseDecimal\":129.600000,\"remark\":\"Excel初始化;条码:C.4.T.0.00553\",\"standard\":\"MT-P109(VA)\",\"stock\":500.000000,\"tenantId\":63,\"unit\":\"件\",\"wholesaleDecimal\":129.600000}]}}'); +INSERT INTO `tbl_log` VALUES (9488, 63, '接口日志', '43.152.142.140/1.9.116.218', '2026-10-06 06:21:29', 0, 'UnitController.getList(..)', NULL, 'GET /apis/unit/list', '{\"search\":\"{\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":4,\"rows\":[{\"basicUnit\":\"瓶\",\"deleteFlag\":\"0\",\"enabled\":true,\"id\":21,\"name\":\"瓶/(箱=12瓶)\",\"otherUnit\":\"箱\",\"ratio\":12.000,\"tenantId\":63},{\"basicUnit\":\"盒\",\"deleteFlag\":\"0\",\"enabled\":true,\"id\":20,\"name\":\"盒/(箱=8盒)\",\"otherUnit\":\"箱\",\"ratio\":8.000,\"tenantId\":63},{\"basicUnit\":\"个\",\"deleteFlag\":\"0\",\"enabled\":true,\"id\":19,\"name\":\"个/(盒=15个)\",\"otherUnit\":\"盒\",\"ratio\":15.000,\"tenantId\":63},{\"basicUnit\":\"个\",\"deleteFlag\":\"0\",\"enabled\":true,\"id\":15,\"name\":\"个/(箱=12个)\",\"otherUnit\":\"箱\",\"ratio\":12.000,\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (9489, 63, '接口日志', '43.152.142.34/1.9.116.218', '2026-10-06 06:21:30', 0, 'MaterialAttributeController.getList(..)', NULL, 'GET /apis/materialAttribute/list', '{\"search\":\"{\\\"attributeName\\\":\\\"\\\",\\\"attributeValue\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":5,\"rows\":[{\"attributeName\":\"自定义3\",\"deleteFlag\":\"0\",\"id\":5,\"tenantId\":63},{\"attributeName\":\"自定义2\",\"deleteFlag\":\"0\",\"id\":4,\"tenantId\":63},{\"attributeName\":\"自定义1\",\"attributeValue\":\"小米|华为\",\"deleteFlag\":\"0\",\"id\":3,\"tenantId\":63},{\"attributeName\":\"多尺寸\",\"attributeValue\":\"S|M|L|XL|XXL|XXXL\",\"deleteFlag\":\"0\",\"id\":2,\"tenantId\":63},{\"attributeName\":\"多颜色\",\"attributeValue\":\"红色|橙色|黄色|绿色|蓝色|紫色\",\"deleteFlag\":\"0\",\"id\":1,\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (9490, 63, '接口日志', '43.152.142.128/1.9.116.218', '2026-10-06 06:21:34', 0, 'AccountController.getStatistics(..)', NULL, 'GET /apis/account/getStatistics', '{\"name\":\"\",\"serialNo\":\"\"}', '{\"code\":200,\"data\":{\"allCurrentAmount\":\"4375818.53\",\"allMonthAmount\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9491, 63, '接口日志', '43.152.142.62/1.9.116.218', '2026-10-06 06:21:34', 0, 'AccountController.listWithBalance(..)', NULL, 'GET /apis/account/listWithBalance', '{\"name\":\"\",\"serialNo\":\"\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63,\"thisMonthAmount\":\"0\"},{\"currentAmount\":4375618.532800,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63,\"thisMonthAmount\":\"0\"}]}}'); +INSERT INTO `tbl_log` VALUES (9492, 63, '接口日志', '43.174.53.11/1.9.116.218', '2026-10-06 06:21:36', 0, 'DepotItemController.findStockWarningCount(..)', NULL, 'GET /apis/depotItem/findStockWarningCount', '{\"currentPage\":1,\"pageSize\":10,\"materialParam\":\"\",\"mpList\":\"扩展1,扩展2,扩展3\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9493, 63, '接口日志', '43.174.32.12/1.9.116.218', '2026-10-06 06:21:36', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9494, 63, '接口日志', '43.174.55.40/1.9.116.218', '2026-10-06 06:21:36', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (9495, 63, '接口日志', '43.152.142.41/1.9.116.218', '2026-10-06 06:21:52', 0, 'DepotItemController.findStockWarningCount(..)', NULL, 'GET /apis/depotItem/findStockWarningCount', '{\"currentPage\":1,\"pageSize\":10,\"materialParam\":\"\",\"mpList\":\"扩展1,扩展2,扩展3\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9496, 63, '接口日志', '43.152.142.84/1.9.116.218', '2026-10-06 06:22:06', 0, 'DepotItemController.findStockWarningCount(..)', NULL, 'GET /apis/depotItem/findStockWarningCount', '{\"currentPage\":1,\"pageSize\":10,\"materialParam\":\"\",\"mpList\":\"扩展1,扩展2,扩展3\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9497, 63, '接口日志', '43.174.52.31/1.9.116.218', '2026-10-06 06:22:31', 0, 'DepotItemController.findStockWarningCount(..)', NULL, 'GET /apis/depotItem/findStockWarningCount', '{\"currentPage\":1,\"pageSize\":10,\"materialParam\":\"\",\"mpList\":\"扩展1,扩展2,扩展3\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9498, 63, '接口日志', '43.174.53.19/1.9.116.218', '2026-10-06 06:22:43', 0, 'DepotItemController.findStockWarningCount(..)', NULL, 'GET /apis/depotItem/findStockWarningCount', '{\"currentPage\":1,\"pageSize\":10,\"materialParam\":\"\",\"mpList\":\"扩展1,扩展2,扩展3\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9499, 63, '接口日志', '43.168.32.240/1.9.116.218', '2026-10-06 06:22:45', 0, 'SupplierController.findBySelectOrgan(..)', NULL, 'POST /apis/supplier/findBySelect_organ', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司[供应商]\",\"id\":89},{\"supplier\":\"TNB[客户]\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (9500, 63, '接口日志', '43.152.142.45/1.9.116.218', '2026-10-06 06:22:45', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9501, 63, '接口日志', '43.152.142.62/1.9.116.218', '2026-10-06 06:22:45', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (9502, 63, '接口日志', '43.152.142.84/1.9.116.218', '2026-10-06 06:22:45', 0, 'OrganizationController.getAllOrganizationTreeByUser(..)', NULL, 'GET /apis/organization/getAllOrganizationTreeByUser', '{}', '[{\"children\":[{\"children\":[{\"children\":[],\"checked\":false,\"attributes\":\"12\",\"id\":14,\"state\":\"open\",\"title\":\"部门2\",\"value\":14,\"key\":14}],\"checked\":false,\"attributes\":\"jg1\",\"id\":13,\"state\":\"open\",\"title\":\"部门1\",\"value\":13,\"key\":13}],\"checked\":false,\"attributes\":\"001\",\"id\":12,\"state\":\"open\",\"title\":\"测试部门\",\"value\":12,\"key\":12}]'); +INSERT INTO `tbl_log` VALUES (9503, 63, '接口日志', '43.174.53.11/1.9.116.218', '2026-10-06 06:22:45', 0, 'DepotHeadController.findInOutMaterialCount(..)', NULL, 'GET /apis/depotHead/findInOutMaterialCount', '{\"currentPage\":1,\"pageSize\":10,\"materialParam\":\"\",\"beginTime\":\"2026-07-06\",\"endTime\":\"2026-10-06\",\"type\":\"出库\",\"column\":\"createTime\",\"order\":\"desc\"}', '{\"code\":200,\"data\":{\"total\":2,\"priceSumTotal\":2940000.000000,\"numSumTotal\":50000.000000,\"rows\":[{\"barCode\":\"1001\",\"categoryName\":\"包装\",\"mName\":\"MD-4G111(VF) 包装\",\"materialId\":705,\"materialUnit\":\"件\",\"model\":\"MD-4G111(VF)\",\"numSum\":10000.000000,\"priceSum\":0.000000,\"standard\":\"MD-4G111(VF) packing\"},{\"barCode\":\"1PH-WS79\",\"brand\":\"\",\"categoryName\":\"成品\",\"color\":\"\",\"mName\":\"1PH WS79\",\"materialId\":703,\"materialUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"1PH WS79\",\"numSum\":40000.000000,\"priceSum\":2940000.000000,\"standard\":\"1PH WS79\"}]}}'); +INSERT INTO `tbl_log` VALUES (9504, 63, '接口日志', '43.168.32.240/1.9.116.218', '2026-10-06 06:22:46', 0, 'SupplierController.findBySelectOrgan(..)', NULL, 'POST /apis/supplier/findBySelect_organ', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司[供应商]\",\"id\":89},{\"supplier\":\"TNB[客户]\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (9505, 63, '接口日志', '43.152.142.34/1.9.116.218', '2026-10-06 06:22:46', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9506, 63, '接口日志', '43.152.142.108/1.9.116.218', '2026-10-06 06:22:46', 0, 'DepotHeadController.findInOutMaterialCount(..)', NULL, 'GET /apis/depotHead/findInOutMaterialCount', '{\"currentPage\":1,\"pageSize\":10,\"materialParam\":\"\",\"beginTime\":\"2026-07-06\",\"endTime\":\"2026-10-06\",\"type\":\"入库\",\"column\":\"createTime\",\"order\":\"desc\"}', '{\"code\":200,\"data\":{\"total\":7,\"priceSumTotal\":15130522.700000,\"numSumTotal\":102117.000000,\"rows\":[{\"barCode\":\"1001\",\"categoryName\":\"包装\",\"mName\":\"MD-4G111(VF) 包装\",\"materialId\":705,\"materialUnit\":\"件\",\"model\":\"MD-4G111(VF)\",\"numSum\":10000.000000,\"priceSum\":100000.000000,\"standard\":\"MD-4G111(VF) packing\"},{\"barCode\":\"1PH-WS79\",\"brand\":\"\",\"categoryName\":\"成品\",\"color\":\"\",\"mName\":\"1PH WS79\",\"materialId\":703,\"materialUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"1PH WS79\",\"numSum\":10000.000000,\"priceSum\":595000.000000,\"standard\":\"1PH WS79\"},{\"barCode\":\"C.4.T.0.00654\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"mName\":\"MD-4G111(VF) 4G模块\",\"materialId\":699,\"materialUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-4G111(VF)\",\"numSum\":7.000000,\"priceSum\":0.700000,\"standard\":\"MD-4G111(VF)\"},{\"barCode\":\"C.4.T.0.00547\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"mName\":\"MT-3NSXL(VC)RF通讯模块\",\"materialId\":696,\"materialUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MT-3NSXL(VC)\",\"numSum\":37520.000000,\"priceSum\":3752.000000,\"standard\":\"MT-3NSXL(VC)\"},{\"barCode\":\"C.3.T.0.00030\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"mName\":\"三相四线多功能电能表T46(VC)\",\"materialId\":691,\"materialUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DTSD1226-T46(VC)\",\"numSum\":10890.000000,\"priceSum\":5292540.000000,\"standard\":\"DTSD1226-T46(VC)\"},{\"barCode\":\"C.3.C.2.00025\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"mName\":\"三相四线多功能电能表CXVI(VA)-新\",\"materialId\":687,\"materialUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DTSD1226-CXVI(VA)\",\"numSum\":6720.000000,\"priceSum\":3238704.000000,\"standard\":\"DTSD1226-CXVI(VA)\"},{\"barCode\":\"C.1.T.0.00032\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"mName\":\"单相多功能电能表T49(VB)\",\"materialId\":685,\"materialUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DDSD1226-T49(VB)\",\"numSum\":26980.000000,\"priceSum\":5900526.000000,\"standard\":\"DDSD1226-T49(VB)\"}]}}'); +INSERT INTO `tbl_log` VALUES (9507, 63, '接口日志', '43.152.142.110/1.9.116.218', '2026-10-06 06:22:46', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (9508, 63, '接口日志', '43.174.32.33/1.9.116.218', '2026-10-06 06:22:46', 0, 'OrganizationController.getAllOrganizationTreeByUser(..)', NULL, 'GET /apis/organization/getAllOrganizationTreeByUser', '{}', '[{\"children\":[{\"children\":[{\"children\":[],\"checked\":false,\"attributes\":\"12\",\"id\":14,\"state\":\"open\",\"title\":\"部门2\",\"value\":14,\"key\":14}],\"checked\":false,\"attributes\":\"jg1\",\"id\":13,\"state\":\"open\",\"title\":\"部门1\",\"value\":13,\"key\":13}],\"checked\":false,\"attributes\":\"001\",\"id\":12,\"state\":\"open\",\"title\":\"测试部门\",\"value\":12,\"key\":12}]'); +INSERT INTO `tbl_log` VALUES (9509, 63, '接口日志', '43.168.32.240/1.9.116.218', '2026-10-06 06:22:47', 0, 'SupplierController.findBySelectOrgan(..)', NULL, 'POST /apis/supplier/findBySelect_organ', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司[供应商]\",\"id\":89},{\"supplier\":\"TNB[客户]\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (9510, 63, '接口日志', '43.152.142.68/1.9.116.218', '2026-10-06 06:22:48', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (9511, 63, '接口日志', '43.174.32.12/1.9.116.218', '2026-10-06 06:22:48', 0, 'OrganizationController.getAllOrganizationTreeByUser(..)', NULL, 'GET /apis/organization/getAllOrganizationTreeByUser', '{}', '[{\"children\":[{\"children\":[{\"children\":[],\"checked\":false,\"attributes\":\"12\",\"id\":14,\"state\":\"open\",\"title\":\"部门2\",\"value\":14,\"key\":14}],\"checked\":false,\"attributes\":\"jg1\",\"id\":13,\"state\":\"open\",\"title\":\"部门1\",\"value\":13,\"key\":13}],\"checked\":false,\"attributes\":\"001\",\"id\":12,\"state\":\"open\",\"title\":\"测试部门\",\"value\":12,\"key\":12}]'); +INSERT INTO `tbl_log` VALUES (9512, 63, '接口日志', '43.174.55.40/1.9.116.218', '2026-10-06 06:22:48', 0, 'DepotHeadController.findInOutDetail(..)', NULL, 'GET /apis/depotHead/findInOutDetail', '{\"currentPage\":1,\"pageSize\":10,\"number\":\"\",\"materialParam\":\"\",\"beginTime\":\"2026-07-06\",\"endTime\":\"2026-10-06\",\"type\":\"出库\",\"remark\":\"\",\"column\":\"createTime\",\"order\":\"desc\"}', '{\"code\":200,\"data\":{\"total\":33,\"operNumberTotal\":50000.000000,\"rows\":[{\"allPrice\":0.000000,\"barCode\":\"1001\",\"dname\":\"半成品仓库\",\"mUnit\":\"件\",\"mname\":\"MD-4G111(VF) 包装\",\"model\":\"MD-4G111(VF)\",\"newRemark\":\"\",\"newType\":\"生产领料出库\",\"number\":\"LL20260924134027104\",\"operNumber\":10000.000000,\"operTime\":\"2026-09-24\",\"sku\":\"\",\"standard\":\"MD-4G111(VF) packing\",\"taxLastMoney\":0.000000,\"taxMoney\":0.000000,\"taxRate\":0.000000,\"unitPrice\":0.000000},{\"allPrice\":735000.000000,\"barCode\":\"1PH-WS79\",\"brand\":\"\",\"color\":\"\",\"dname\":\"半成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"1PH WS79\",\"model\":\"1PH WS79\",\"newRemark\":\"\",\"newType\":\"销售出库\",\"number\":\"XSCK00000001728\",\"operNumber\":10000.000000,\"operTime\":\"2026-09-18\",\"sname\":\"TNB\",\"standard\":\"1PH WS79\",\"taxLastMoney\":808500.000000,\"taxMoney\":73500.000000,\"taxRate\":10.000000,\"unitPrice\":73.500000},{\"allPrice\":73500.000000,\"barCode\":\"1PH-WS79\",\"brand\":\"\",\"color\":\"\",\"dname\":\"成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"1PH WS79\",\"model\":\"1PH WS79\",\"newRemark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2159 \",\"newType\":\"销售出库\",\"number\":\"XSCK-INV_2159-86\",\"operNumber\":1000.000000,\"operTime\":\"2026-08-10\",\"sname\":\"TNB\",\"standard\":\"1PH WS79\",\"taxLastMoney\":80850.000000,\"taxMoney\":7350.000000,\"taxRate\":10.000000,\"unitPrice\":73.500000},{\"allPrice\":73500.000000,\"barCode\":\"1PH-WS79\",\"brand\":\"\",\"color\":\"\",\"dname\":\"成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"1PH WS79\",\"model\":\"1PH WS79\",\"newRemark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写 \",\"newType\":\"销售出库\",\"number\":\"XSCK-1PH-WS79-ADD1-87\",\"operNumber\":1000.000000,\"operTime\":\"2026-08-10\",\"sname\":\"TNB\",\"standard\":\"1PH WS79\",\"taxLastMoney\":80850.000000,\"taxMoney\":7350.000000,\"taxRate\":10.000000,\"unitPrice\":73.500000},{\"allPrice\":73500.000000,\"barCode\":\"1PH-WS79\",\"brand\":\"\",\"color\":\"\",\"dname\":\"成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"1PH WS79\",\"model\":\"1PH WS79\",\"newRemark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:DO_2158 \",\"newType\":\"销售出库\",\"number\":\"XSCK-DO_2158-85\",\"operNumber\":1000.000000,\"operTime\":\"2026-08-05\",\"sname\":\"TNB\",\"standard\":\"1PH WS79\",\"taxLastMoney\":80850.000000,\"taxMoney\":7350.000000,\"taxRate\":10.000000,\"unitPrice\":73.500000},{\"allPrice\":73500.000000,\"barCode\":\"1PH-WS79\",\"brand\":\"\",\"color\":\"\",\"dname\":\"成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"1PH WS79\",\"model\":\"1PH WS79\",\"newRemark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:DO_2157 \",\"newType\":\"销售出库\",\"number\":\"XSCK-DO_2157-83\",\"operNumber\":1000.000000,\"operTime\":\"2026-08-05\",\"sname\":\"TNB\",\"standard\":\"1PH WS79\",\"taxLastMoney\":80850.000000,\"taxMoney\":7350.000000,\"taxRate\":10.000000,\"unitPrice\":73.500000},{\"allPrice\":73500.000000,\"barCode\":\"1PH-WS79\",\"brand\":\"\",\"color\":\"\",\"dname\":\"成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"1PH WS79\",\"model\":\"1PH WS79\",\"newRemark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写 \",\"newType\":\"销售出库\",\"number\":\"XSCK-1PH-WS79-ADD1-84\",\"operNumber\":1000.000000,\"operTime\":\"2026-08-05\",\"sname\":\"TNB\",\"standard\":\"1PH WS79\",\"taxLastMoney\":80850.000000,\"taxMoney\":7350.000000,\"taxRate\":10.000000,\"unitPrice\":73.500000},{\"allPrice\":73500.000000,\"barCode\":\"1PH-WS79\",\"brand\":\"\",\"color\":\"\",\"dname\":\"成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"1PH WS79\",\"model\":\"1PH WS79\",\"newRemark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2150 \",\"newType\":\"销售出库\",\"number\":\"XSCK-INV_2150-69\",\"operNumber\":1000.000000,\"operTime\":\"2026-07-29\",\"sname\":\"TNB\",\"standard\":\"1PH WS79\",\"taxLastMoney\":80850.000000,\"taxMoney\":7350.000000,\"taxRate\":10.000000,\"unitPrice\":73.500000},{\"allPrice\":73500.000000,\"barCode\":\"1PH-WS79\",\"brand\":\"\",\"color\":\"\",\"dname\":\"成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"1PH WS79\",\"model\":\"1PH WS79\",\"newRemark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:do_2148 \",\"newType\":\"销售出库\",\"number\":\"XSCK-do_2148-60\",\"operNumber\":1000.000000,\"operTime\":\"2026-07-27\",\"sname\":\"TNB\",\"standard\":\"1PH WS79\",\"taxLastMoney\":80850.000000,\"taxMoney\":7350.000000,\"taxRate\":10.000000,\"unitPrice\":73.500000},{\"allPrice\":73500.000000,\"barCode\":\"1PH-WS79\",\"brand\":\"\",\"color\":\"\",\"dname\":\"成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"1PH WS79\",\"model\":\"1PH WS79\",\"newRemark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:do_2147 \",\"newType\":\"销售出库\",\"number\":\"XSCK-do_2147-59\",\"operNumber\":1000.000000,\"operTime\":\"2026-07-27\",\"sname\":\"TNB\",\"standard\":\"1PH WS79\",\"taxLastMoney\":80850.000000,\"taxMoney\":7350.000000,\"taxRate\":10.000000,\"unitPrice\":73.500000}],\"allPriceTotal\":2940000.000000}}'); +INSERT INTO `tbl_log` VALUES (9513, 63, '接口日志', '43.152.142.41/1.9.116.218', '2026-10-06 06:22:48', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9514, 63, '接口日志', '43.174.32.19/1.9.116.218', '2026-10-06 06:22:48', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (9515, 63, '接口日志', '43.168.32.240/1.9.116.218', '2026-10-06 06:22:49', 0, 'SupplierController.findBySelectOrgan(..)', NULL, 'POST /apis/supplier/findBySelect_organ', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司[供应商]\",\"id\":89},{\"supplier\":\"TNB[客户]\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (9516, 63, '接口日志', '43.152.142.142/1.9.116.218', '2026-10-06 06:22:49', 0, 'DepotHeadController.findInOutDetail(..)', NULL, 'GET /apis/depotHead/findInOutDetail', '{\"currentPage\":1,\"pageSize\":10,\"number\":\"\",\"materialParam\":\"\",\"beginTime\":\"2026-07-06\",\"endTime\":\"2026-10-06\",\"type\":\"入库\",\"remark\":\"\",\"column\":\"createTime\",\"order\":\"desc\"}', '{\"code\":200,\"data\":{\"total\":35,\"operNumberTotal\":102117.000000,\"rows\":[{\"allPrice\":100000.000000,\"barCode\":\"1001\",\"dname\":\"半成品仓库\",\"mUnit\":\"件\",\"mname\":\"MD-4G111(VF) 包装\",\"model\":\"MD-4G111(VF)\",\"newRemark\":\"\",\"newType\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operNumber\":10000.000000,\"operTime\":\"2026-09-18\",\"sname\":\"浙江瑞银电子有限公司\",\"standard\":\"MD-4G111(VF) packing\",\"taxLastMoney\":100000.000000,\"taxMoney\":0.000000,\"taxRate\":0.000000,\"unitPrice\":10.000000},{\"allPrice\":595000.000000,\"barCode\":\"1PH-WS79\",\"brand\":\"\",\"color\":\"\",\"dname\":\"半成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"1PH WS79\",\"model\":\"1PH WS79\",\"newRemark\":\"\",\"newType\":\"总部入库入库\",\"number\":\"SM2609180001\",\"operNumber\":10000.000000,\"operTime\":\"2026-09-18\",\"sname\":\"浙江瑞银电子有限公司\",\"standard\":\"1PH WS79\",\"taxLastMoney\":595000.000000,\"taxMoney\":0.000000,\"taxRate\":0.000000,\"unitPrice\":59.500000},{\"allPrice\":0.700000,\"barCode\":\"C.4.T.0.00654\",\"brand\":\"\",\"color\":\"\",\"dname\":\"半成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"MD-4G111(VF) 4G模块\",\"model\":\"MD-4G111(VF)\",\"newRemark\":\"\",\"newType\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operNumber\":7.000000,\"operTime\":\"2026-09-18\",\"sname\":\"浙江瑞银电子有限公司\",\"standard\":\"MD-4G111(VF)\",\"taxLastMoney\":0.700000,\"taxMoney\":0.000000,\"taxRate\":0.000000,\"unitPrice\":0.100000},{\"allPrice\":183.600000,\"barCode\":\"C.4.T.0.00547\",\"brand\":\"\",\"color\":\"\",\"dname\":\"半成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"MT-3NSXL(VC)RF通讯模块\",\"model\":\"MT-3NSXL(VC)\",\"newRemark\":\"SMT出库单详情初始化;已审核;价税合计计入应付 来源单据:SH2608060003\",\"newType\":\"总部入库入库\",\"number\":\"SM2608070007\",\"operNumber\":1836.000000,\"operTime\":\"2026-08-07\",\"sname\":\"浙江瑞银电子有限公司\",\"standard\":\"MT-3NSXL(VC)\",\"taxLastMoney\":183.600000,\"taxMoney\":0.000000,\"taxRate\":0.000000,\"unitPrice\":0.100000},{\"allPrice\":2077650.000000,\"barCode\":\"C.1.T.0.00032\",\"brand\":\"\",\"color\":\"\",\"dname\":\"半成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"单相多功能电能表T49(VB)\",\"model\":\"DDSD1226-T49(VB)\",\"newRemark\":\"SMT出库单详情初始化;已审核;价税合计计入应付 来源单据:SH2608060001\",\"newType\":\"总部入库入库\",\"number\":\"SM2608070002\",\"operNumber\":9500.000000,\"operTime\":\"2026-08-07\",\"sname\":\"浙江瑞银电子有限公司\",\"standard\":\"DDSD1226-T49(VB)\",\"taxLastMoney\":2077650.000000,\"taxMoney\":0.000000,\"taxRate\":0.000000,\"unitPrice\":218.700000},{\"allPrice\":91854.000000,\"barCode\":\"C.1.T.0.00032\",\"brand\":\"\",\"color\":\"\",\"dname\":\"半成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"单相多功能电能表T49(VB)\",\"model\":\"DDSD1226-T49(VB)\",\"newRemark\":\"SMT出库单详情初始化;已审核;价税合计计入应付 来源单据:SH2608060001\",\"newType\":\"总部入库入库\",\"number\":\"SM2608060005\",\"operNumber\":420.000000,\"operTime\":\"2026-08-06\",\"sname\":\"浙江瑞银电子有限公司\",\"standard\":\"DDSD1226-T49(VB)\",\"taxLastMoney\":91854.000000,\"taxMoney\":0.000000,\"taxRate\":0.000000,\"unitPrice\":218.700000},{\"allPrice\":816.000000,\"barCode\":\"C.4.T.0.00547\",\"brand\":\"\",\"color\":\"\",\"dname\":\"半成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"MT-3NSXL(VC)RF通讯模块\",\"model\":\"MT-3NSXL(VC)\",\"newRemark\":\"SMT出库单详情初始化;已审核;价税合计计入应付 来源单据:SH2608060003\",\"newType\":\"总部入库入库\",\"number\":\"SM2608060004\",\"operNumber\":8160.000000,\"operTime\":\"2026-08-06\",\"sname\":\"浙江瑞银电子有限公司\",\"standard\":\"MT-3NSXL(VC)\",\"taxLastMoney\":816.000000,\"taxMoney\":0.000000,\"taxRate\":0.000000,\"unitPrice\":0.100000},{\"allPrice\":91854.000000,\"barCode\":\"C.1.T.0.00032\",\"brand\":\"\",\"color\":\"\",\"dname\":\"半成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"单相多功能电能表T49(VB)\",\"model\":\"DDSD1226-T49(VB)\",\"newRemark\":\"SMT出库单详情初始化;已审核;价税合计计入应付 来源单据:SH2607220001\",\"newType\":\"总部入库入库\",\"number\":\"SM2607240005\",\"operNumber\":420.000000,\"operTime\":\"2026-07-24\",\"sname\":\"浙江瑞银电子有限公司\",\"standard\":\"DDSD1226-T49(VB)\",\"taxLastMoney\":91854.000000,\"taxMoney\":0.000000,\"taxRate\":0.000000,\"unitPrice\":218.700000},{\"allPrice\":551124.000000,\"barCode\":\"C.1.T.0.00032\",\"brand\":\"\",\"color\":\"\",\"dname\":\"半成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"单相多功能电能表T49(VB)\",\"model\":\"DDSD1226-T49(VB)\",\"newRemark\":\"SMT出库单详情初始化;已审核;价税合计计入应付 来源单据:SH2607220001\",\"newType\":\"总部入库入库\",\"number\":\"SM2607230004\",\"operNumber\":2520.000000,\"operTime\":\"2026-07-23\",\"sname\":\"浙江瑞银电子有限公司\",\"standard\":\"DDSD1226-T49(VB)\",\"taxLastMoney\":551124.000000,\"taxMoney\":0.000000,\"taxRate\":0.000000,\"unitPrice\":218.700000},{\"allPrice\":1285956.000000,\"barCode\":\"C.1.T.0.00032\",\"brand\":\"\",\"color\":\"\",\"dname\":\"半成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"单相多功能电能表T49(VB)\",\"model\":\"DDSD1226-T49(VB)\",\"newRemark\":\"SMT出库单详情初始化;已审核;价税合计计入应付 来源单据:SH2607220001\",\"newType\":\"总部入库入库\",\"number\":\"SM2607230002\",\"operNumber\":5880.000000,\"operTime\":\"2026-07-23\",\"sname\":\"浙江瑞银电子有限公司\",\"standard\":\"DDSD1226-T49(VB)\",\"taxLastMoney\":1285956.000000,\"taxMoney\":0.000000,\"taxRate\":0.000000,\"unitPrice\":218.700000}],\"allPriceTotal\":15130522.700000}}'); +INSERT INTO `tbl_log` VALUES (9517, 63, '接口日志', '43.152.142.31/1.9.116.218', '2026-10-06 06:22:49', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (9518, 63, '接口日志', '43.174.53.16/1.9.116.218', '2026-10-06 06:22:49', 0, 'OrganizationController.getAllOrganizationTreeByUser(..)', NULL, 'GET /apis/organization/getAllOrganizationTreeByUser', '{}', '[{\"children\":[{\"children\":[{\"children\":[],\"checked\":false,\"attributes\":\"12\",\"id\":14,\"state\":\"open\",\"title\":\"部门2\",\"value\":14,\"key\":14}],\"checked\":false,\"attributes\":\"jg1\",\"id\":13,\"state\":\"open\",\"title\":\"部门1\",\"value\":13,\"key\":13}],\"checked\":false,\"attributes\":\"001\",\"id\":12,\"state\":\"open\",\"title\":\"测试部门\",\"value\":12,\"key\":12}]'); +INSERT INTO `tbl_log` VALUES (9519, 63, '接口日志', '43.152.142.140/1.9.116.218', '2026-10-06 06:22:49', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (9520, 63, '接口日志', '43.174.54.44/1.9.116.218', '2026-10-06 06:22:49', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9521, 63, '接口日志', '43.152.142.128/1.9.116.218', '2026-10-06 06:22:53', 0, 'DepotItemController.findDetailByDepotIdsAndMaterialId(..)', NULL, 'GET /apis/depotItem/findDetailByDepotIdsAndMaterialId', '{\"pageSize\":10,\"currentPage\":1,\"depotIds\":\"\",\"number\":\"\",\"beginTime\":\"\",\"endTime\":\"\",\"stockPriceFlag\":true}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9522, 63, '接口日志', '43.174.52.31/1.9.116.218', '2026-10-06 06:22:53', 0, 'DepotItemController.findDetailByDepotIdsAndMaterialId(..)', NULL, 'GET /apis/depotItem/findDetailByDepotIdsAndMaterialId', '{\"pageSize\":10,\"currentPage\":1,\"depotIds\":\"\",\"number\":\"\",\"beginTime\":\"\",\"endTime\":\"\",\"stockPriceFlag\":false}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9523, 63, '接口日志', '43.174.53.48/1.9.116.218', '2026-10-06 06:22:53', 0, 'MaterialController.getListWithStock(..)', NULL, 'GET /apis/material/getListWithStock', '{\"currentPage\":1,\"pageSize\":10,\"position\":\"\",\"materialParam\":\"\",\"zeroStock\":0,\"column\":\"createTime\",\"order\":\"desc\"}', '{\"code\":200,\"data\":{\"currentStockPrice\":107372523.170000000000,\"moveAvgPriceFlag\":false,\"total\":22,\"showStockPrice\":true,\"currentWeight\":0E-12,\"currentStock\":519203.000000,\"rows\":[{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"成品\",\"color\":\"\",\"currentStock\":7223.000000,\"currentStockMovePrice\":2293302.500000000000,\"currentStockPrice\":2293302.500000000000,\"currentUnitPrice\":317.500000,\"currentWeight\":0E-12,\"id\":704,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"3PH-APEC3-WC\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"3PH APEC3-WC\",\"name\":\"3PH APEC3-WC\",\"position\":\"\",\"purchaseDecimal\":317.500000,\"standard\":\"3PH APEC3-WC\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"成品\",\"color\":\"\",\"currentStock\":52400.000000,\"currentStockMovePrice\":3117800.000000000000,\"currentStockPrice\":3117800.000000000000,\"currentUnitPrice\":59.500000,\"currentWeight\":0E-12,\"id\":703,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"1PH-WS79\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"1PH WS79\",\"name\":\"1PH WS79\",\"position\":\"\",\"purchaseDecimal\":59.500000,\"standard\":\"1PH WS79\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":1000.000000,\"currentStockMovePrice\":24300.000000000000,\"currentStockPrice\":24300.000000000000,\"currentUnitPrice\":24.300000,\"currentWeight\":0E-12,\"id\":702,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00722\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-RS178(VA)\",\"name\":\"MD-RS178(VA) RS485分线器\",\"position\":\"\",\"purchaseDecimal\":24.300000,\"standard\":\"MD-RS178(VA)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":100.000000,\"currentStockMovePrice\":14256.000000000000,\"currentStockPrice\":14256.000000000000,\"currentUnitPrice\":142.560000,\"currentWeight\":0E-12,\"id\":701,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.0068900002\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-RS114(VB)\",\"name\":\"MD-RS114(VB) 基于RS485的MODBS TCPMODBS RTUASVII转换模块_(DZG)\",\"position\":\"\",\"purchaseDecimal\":142.560000,\"standard\":\"MD-RS114(VB)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":50.000000,\"currentStockMovePrice\":6642.000000000000,\"currentStockPrice\":6642.000000000000,\"currentUnitPrice\":132.840000,\"currentWeight\":0E-12,\"id\":700,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00686\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"TC160(VA)\",\"name\":\"TC160(VA) 通讯模块供电盒\",\"position\":\"\",\"purchaseDecimal\":132.840000,\"standard\":\"TC160(VA)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":76970.000000,\"currentStockMovePrice\":7697.000000000000,\"currentStockPrice\":7697.000000000000,\"currentUnitPrice\":0.100000,\"currentWeight\":0E-12,\"id\":699,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00654\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-4G111(VF)\",\"name\":\"MD-4G111(VF) 4G模块\",\"position\":\"\",\"purchaseDecimal\":0.100000,\"standard\":\"MD-4G111(VF)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":50.000000,\"currentStockMovePrice\":16200.000000000000,\"currentStockPrice\":16200.000000000000,\"currentUnitPrice\":324.000000,\"currentWeight\":0E-12,\"id\":698,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00562\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-4GVIII(VB)\",\"name\":\"MD-4GVIII(VB)\",\"position\":\"\",\"purchaseDecimal\":324.000000,\"standard\":\"MD-4GVIII(VB)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":500.000000,\"currentStockMovePrice\":64800.000000000000,\"currentStockPrice\":64800.000000000000,\"currentUnitPrice\":129.600000,\"currentWeight\":0E-12,\"id\":697,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00553\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MT-P109(VA)\",\"name\":\"MT-P109(VA)\",\"position\":\"\",\"purchaseDecimal\":129.600000,\"standard\":\"MT-P109(VA)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":54656.000000,\"currentStockMovePrice\":5465.600000000000,\"currentStockPrice\":5465.600000000000,\"currentUnitPrice\":0.100000,\"currentWeight\":0E-12,\"id\":696,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00547\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MT-3NSXL(VC)\",\"name\":\"MT-3NSXL(VC)RF通讯模块\",\"position\":\"\",\"purchaseDecimal\":0.100000,\"standard\":\"MT-3NSXL(VC)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":100.000000,\"currentStockMovePrice\":100375.200000000000,\"currentStockPrice\":100375.200000000000,\"currentUnitPrice\":1003.752000,\"currentWeight\":0E-12,\"id\":695,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00422\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-LR63(VB)\",\"name\":\"MD-LR63(VB)\",\"position\":\"\",\"purchaseDecimal\":1003.752000,\"standard\":\"MD-LR63(VB)\",\"unitName\":\"件\"}]}}'); +INSERT INTO `tbl_log` VALUES (9524, 63, '接口日志', '43.174.32.14/1.9.116.218', '2026-10-06 06:22:53', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9525, 63, '接口日志', '43.152.142.133/1.9.116.218', '2026-10-06 06:22:53', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (9526, 63, '接口日志', '43.168.32.240/1.9.116.218', '2026-10-06 06:22:56', 0, 'SupplierController.findBySelectSup(..)', NULL, 'POST /apis/supplier/findBySelect_sup', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司\",\"id\":89}]'); +INSERT INTO `tbl_log` VALUES (9527, 63, '接口日志', '43.152.142.45/1.9.116.218', '2026-10-06 06:22:56', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9528, 63, '接口日志', '43.152.142.84/1.9.116.218', '2026-10-06 06:22:56', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (9529, 63, '接口日志', '43.174.53.11/1.9.116.218', '2026-10-06 06:22:56', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (9530, 63, '接口日志', '43.152.142.62/1.9.116.218', '2026-10-06 06:22:56', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9531, 63, '接口日志', '43.174.53.19/1.9.116.218', '2026-10-06 06:22:56', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"入库\\\",\\\"subType\\\":\\\"总部入库\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-07-06\\\",\\\"endTime\\\":\\\"2026-10-06\\\",\\\"createTimeRange\\\":[\\\"2026-07-05T16:00:00.000Z\\\",\\\"2026-10-05T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":33,\"rows\":[{\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789718802000,\"creator\":63,\"debt\":595000.000000,\"defaultNumber\":\"SM2609180001\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discountLastMoney\":595000.000000,\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1721,\"lastDebt\":595000.000000,\"materialCount\":10000.000000,\"materialsList\":\"1PH WS79\",\"number\":\"SM2609180001\",\"operTime\":1789733163000,\"operTimeStr\":\"2026-09-18 16:06:03\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"totalPrice\":595000.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1786046400000,\"creator\":63,\"debt\":183.600000,\"defaultNumber\":\"SM2608070007\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":183.600000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1423,\"lastDebt\":183.600000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":1836.000000,\"materialsList\":\"MT-3NSXL(VC)\",\"number\":\"SM2608070007\",\"operTime\":1786046400000,\"operTimeStr\":\"2026-08-07 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":183.600000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1786046400000,\"creator\":63,\"debt\":2077650.000000,\"defaultNumber\":\"SM2608070002\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":2077650.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1422,\"lastDebt\":2077650.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":9500.000000,\"materialsList\":\"DDSD1226-T49(VB)\",\"number\":\"SM2608070002\",\"operTime\":1786046400000,\"operTimeStr\":\"2026-08-07 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":2077650.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1785960000000,\"creator\":63,\"debt\":91854.000000,\"defaultNumber\":\"SM2608060005\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":91854.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1421,\"lastDebt\":91854.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":420.000000,\"materialsList\":\"DDSD1226-T49(VB)\",\"number\":\"SM2608060005\",\"operTime\":1785960000000,\"operTimeStr\":\"2026-08-06 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":91854.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1785960000000,\"creator\":63,\"debt\":816.000000,\"defaultNumber\":\"SM2608060004\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":816.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1420,\"lastDebt\":816.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":8160.000000,\"materialsList\":\"MT-3NSXL(VC)\",\"number\":\"SM2608060004\",\"operTime\":1785960000000,\"operTimeStr\":\"2026-08-06 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":816.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1784836800000,\"creator\":63,\"debt\":91854.000000,\"defaultNumber\":\"SM2607240005\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":91854.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1419,\"lastDebt\":91854.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":420.000000,\"materialsList\":\"DDSD1226-T49(VB)\",\"number\":\"SM2607240005\",\"operTime\":1784836800000,\"operTimeStr\":\"2026-07-24 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":91854.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1784750400000,\"creator\":63,\"debt\":551124.000000,\"defaultNumber\":\"SM2607230004\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":551124.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1418,\"lastDebt\":551124.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":2520.000000,\"materialsList\":\"DDSD1226-T49(VB)\",\"number\":\"SM2607230004\",\"operTime\":1784750400000,\"operTimeStr\":\"2026-07-23 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":551124.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1784750400000,\"creator\":63,\"debt\":1285956.000000,\"defaultNumber\":\"SM2607230002\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":1285956.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1417,\"lastDebt\":1285956.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":5880.000000,\"materialsList\":\"DDSD1226-T49(VB)\",\"number\":\"SM2607230002\",\"operTime\":1784750400000,\"operTimeStr\":\"2026-07-23 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":1285956.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1784664000000,\"creator\":63,\"debt\":1020.000000,\"defaultNumber\":\"SM2607220006\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":1020.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1416,\"lastDebt\":1020.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":10200.000000,\"materialsList\":\"MT-3NSXL(VC)\",\"number\":\"SM2607220006\",\"operTime\":1784664000000,\"operTimeStr\":\"2026-07-22 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":1020.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1784664000000,\"creator\":63,\"debt\":275562.000000,\"defaultNumber\":\"SM2607220004\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":275562.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1415,\"lastDebt\":275562.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":1260.000000,\"materialsList\":\"DDSD1226-T49(VB)\",\"number\":\"SM2607220004\",\"operTime\":1784664000000,\"operTimeStr\":\"2026-07-22 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":275562.000000,\"type\":\"入库\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (9532, 63, '接口日志', '43.152.142.108/1.9.116.218', '2026-10-06 06:22:56', 0, 'DepotHeadController.waitBillCount(..)', NULL, 'GET /apis/depotHead/waitBillCount', '{\"search\":\"{\\\"type\\\":\\\"入库\\\",\\\"subType\\\":\\\"采购,销售退货\\\",\\\"status\\\":\\\"1,3\\\"}\"}', '{\"code\":200,\"data\":{\"total\":47,\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9533, 63, '接口日志', '43.152.142.110/1.9.116.218', '2026-10-06 06:23:47', 0, 'MsgController.getMsgByStatus(..)', NULL, 'GET /apis/msg/getMsgByStatus', '{\"status\":\"1\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (9534, 63, '接口日志', '43.174.54.44/1.9.116.218', '2026-10-06 06:23:58', 0, 'AssetController.dashboard()', NULL, 'GET /apis/asset/dashboard', '{}', '{\"code\":200,\"data\":{\"summary\":{\"activeCount\":259,\"deviceCount\":10,\"assetQuantity\":289.000000,\"assetCount\":255,\"assetValue\":17260.000000,\"openInventoryCount\":2,\"managedCount\":265},\"statusDistribution\":[{\"code\":\"IN_USE\",\"value\":259},{\"code\":\"REPAIR\",\"value\":3},{\"code\":\"SCRAPPED\",\"value\":3}],\"departmentDistribution\":[{\"name\":\"Production\",\"value\":56},{\"name\":\"未指定\",\"value\":54},{\"name\":\"Laboratory\",\"value\":48},{\"name\":\"Technical & Technologies\",\"value\":29},{\"name\":\"Engineering\",\"value\":18},{\"name\":\"Not Specified\",\"value\":11},{\"name\":\"Human Resources\",\"value\":6},{\"name\":\"Quality\",\"value\":6}],\"deviceCategoryDistribution\":[{\"name\":\"检测设备\",\"value\":2},{\"name\":\"贴装设备\",\"value\":2},{\"name\":\"动力设备\",\"value\":1},{\"name\":\"印刷设备\",\"value\":1},{\"name\":\"工装设备\",\"value\":1},{\"name\":\"服务器\",\"value\":1},{\"name\":\"焊接设备\",\"value\":1},{\"name\":\"物流设备\",\"value\":1}],\"message\":\"成功\",\"categoryDistribution\":[{\"code\":\"HARDWARE\",\"name\":\"硬件资产\",\"value\":198.00},{\"code\":\"SOFTWARE\",\"name\":\"软件资产\",\"value\":67.00},{\"code\":\"SIM_CARD\",\"name\":\"SIM卡\",\"value\":24.00}],\"recentInventories\":[{\"inventoryNo\":\"PD20260921190840893\",\"inventoryUserName\":\"admin\",\"planName\":\"2026年09月资产设备专项盘点\",\"id\":6,\"totalCount\":1,\"inventoriedCount\":1,\"status\":\"CLOSED\",\"updatedAt\":\"2026-09-21 19:17:28\"},{\"inventoryNo\":\"PD20260921170623856\",\"inventoryUserName\":\"张三\",\"planName\":\"2026年09月资产设备专项盘点\",\"id\":4,\"totalCount\":8,\"inventoriedCount\":8,\"status\":\"CLOSED\",\"updatedAt\":\"2026-09-21 19:16:33\"},{\"inventoryNo\":\"PD20260921190800418\",\"inventoryUserName\":\"张三\",\"planName\":\"2026年09月资产设备专项盘点\",\"id\":5,\"totalCount\":2,\"inventoriedCount\":0,\"status\":\"ACCEPTED\",\"updatedAt\":\"2026-09-21 19:08:13\"},{\"inventoryNo\":\"PD20260918131230171\",\"inventoryUserName\":\"张伟\",\"planName\":\"2026年09月资产设备专项盘点\",\"id\":1,\"totalCount\":3,\"inventoriedCount\":1,\"status\":\"IN_PROGRESS\",\"updatedAt\":\"2026-09-21 14:35:59\"}],\"updatedAt\":\"2026-10-06\"}}'); +INSERT INTO `tbl_log` VALUES (9535, 63, '接口日志', '43.174.52.31/1.9.116.218', '2026-10-06 06:24:17', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":255,\"rows\":[{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-383\",\"assetName\":\"Epson Epson LQ-310\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"383\",\"externalSource\":\"HARDWARE\",\"id\":20,\"keeper\":\"Hab\",\"location\":\"Admin Office\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: R9DY417590\",\"source\":\"SAS\",\"specification\":\"Printer / Epson / Epson LQ-310\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Ad\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-384\",\"assetName\":\"H3C H3C UniServer R3950 G6\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"384\",\"externalSource\":\"HARDWARE\",\"id\":19,\"keeper\":\"Haslim\",\"location\":\"Server Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 210235A4V0H259000004\",\"source\":\"SAS\",\"specification\":\"Server / H3C / H3C UniServer R3950 G6\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Technical & Technologies\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-385\",\"assetName\":\"TP-Link Omada SG3452\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"385\",\"externalSource\":\"HARDWARE\",\"id\":18,\"keeper\":\"Haslim\",\"location\":\"Server Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 225B0AN000371;MAC: 6C-4C-BC-C9-F0-8A\",\"source\":\"SAS\",\"specification\":\"Switch / TP-Link / Omada SG3452\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Technical & Technologies\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-387\",\"assetName\":\"HP HP LaserJet MFP M236sdw\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"387\",\"externalSource\":\"HARDWARE\",\"id\":17,\"location\":\"R&D Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: VNP5F19044\",\"source\":\"SAS\",\"specification\":\"Printer / HP / HP LaserJet MFP M236sdw\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Prod\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-389\",\"assetName\":\"Lenovo ThinkPad T14s 2-in-1\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"389\",\"externalSource\":\"HARDWARE\",\"id\":16,\"keeper\":\"Syed Bakri\",\"location\":\"Admin\",\"originalValue\":0.000000,\"purchaseDate\":1787169600000,\"quantity\":1.000000,\"remark\":\"序列号: PF6EN008\",\"source\":\"SAS\",\"specification\":\"Laptop / Lenovo / ThinkPad T14s 2-in-1 / Win 11 Home / Core Ultra 5 / 16G / 500G SSD\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"GM\"}]}}'); +INSERT INTO `tbl_log` VALUES (9536, 63, '接口日志', '43.152.142.62/1.9.116.218', '2026-10-06 06:24:19', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":255,\"rows\":[{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/TECH/047CPU\",\"assetName\":\"HP\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"201\",\"externalSource\":\"HARDWARE\",\"id\":40,\"keeper\":\"Azam\",\"location\":\"Tech Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Not Specified\",\"source\":\"SAS\",\"specification\":\"CPU / HP\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Engineering\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/TECH/047PC\",\"assetName\":\"HP\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"200\",\"externalSource\":\"HARDWARE\",\"id\":39,\"keeper\":\"Azam\",\"location\":\"Tech Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Not Specified\",\"source\":\"SAS\",\"specification\":\"Monitor / HP\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Engineering\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/TECH/046CPU\",\"assetName\":\"Dell OptiPlex 3080\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"199\",\"externalSource\":\"HARDWARE\",\"id\":38,\"keeper\":\"Ariffin\",\"location\":\"Tech Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: LH5TTC3;用途: Not Specified\",\"source\":\"SAS\",\"specification\":\"CPU / Dell / OptiPlex 3080 / Core i3-10100\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Engineering\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/TECH/046PC\",\"assetName\":\"Dell\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"198\",\"externalSource\":\"HARDWARE\",\"id\":37,\"keeper\":\"Azam\",\"location\":\"Tech Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Not Specified\",\"source\":\"SAS\",\"specification\":\"Monitor / Dell\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Engineering\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/TECH/045CPU\",\"assetName\":\"Cooto\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"197\",\"externalSource\":\"HARDWARE\",\"id\":36,\"keeper\":\"Azam\",\"location\":\"Tech Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Not Specified\",\"source\":\"SAS\",\"specification\":\"CPU / Cooto\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Engineering\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/TECH/045PC\",\"assetName\":\"Dell\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"196\",\"externalSource\":\"HARDWARE\",\"id\":35,\"keeper\":\"Azam\",\"location\":\"Tech Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Not Specified\",\"source\":\"SAS\",\"specification\":\"Monitor / Dell\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Engineering\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/TECH/044CPU\",\"assetName\":\"HP ProDesk 400 G7\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"195\",\"externalSource\":\"HARDWARE\",\"id\":34,\"keeper\":\"Azam\",\"location\":\"Tech Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 4CE216BFHW;用途: Not Specified\",\"source\":\"SAS\",\"specification\":\"CPU / HP / ProDesk 400 G7 / Win 11 Pro / Core i5-10500 / 8G / 240G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Engineering\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/TECH/044PC\",\"assetName\":\"HP\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"194\",\"externalSource\":\"HARDWARE\",\"id\":33,\"keeper\":\"Azam\",\"location\":\"Tech Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Not Specified\",\"source\":\"SAS\",\"specification\":\"Monitor / HP\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Engineering\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/TECH/043CPU\",\"assetName\":\"HP\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"193\",\"externalSource\":\"HARDWARE\",\"id\":32,\"keeper\":\"Azam\",\"location\":\"Tech Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Not Specified\",\"source\":\"SAS\",\"specification\":\"CPU / HP\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Engineering\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/TECH/043PC\",\"assetName\":\"Lenovo\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"192\",\"externalSource\":\"HARDWARE\",\"id\":31,\"keeper\":\"Azam\",\"location\":\"Tech Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"用途: Not Specified\",\"source\":\"SAS\",\"specification\":\"Monitor / Lenovo\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Engineering\"}]}}'); +INSERT INTO `tbl_log` VALUES (9537, 63, '接口日志', '43.152.142.68/1.9.116.218', '2026-10-06 06:24:44', 0, 'AssetController.categoryOptions()', NULL, 'GET /apis/asset/category/options', '{}', '{\"code\":200,\"data\":{\"rows\":[{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"尚未归入具体种类的资产\",\"updateTime\":1790613193000,\"categoryCode\":\"UNCATEGORIZED\",\"id\":4,\"sort\":10,\"categoryName\":\"未分类\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System 硬件台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"HARDWARE\",\"id\":5,\"sort\":20,\"categoryName\":\"硬件资产\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System 软件台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"SOFTWARE\",\"id\":6,\"sort\":30,\"categoryName\":\"软件资产\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System SIM 卡台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"SIM_CARD\",\"id\":7,\"sort\":40,\"categoryName\":\"SIM卡\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_01BF8DA563A0\",\"id\":11,\"sort\":100,\"categoryName\":\"生产设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_7129859760C3\",\"id\":12,\"sort\":100,\"categoryName\":\"检测设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_9F38069B30A1\",\"id\":13,\"sort\":100,\"categoryName\":\"动力设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_75F489029B11\",\"id\":14,\"sort\":100,\"categoryName\":\"IT设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_3DDFE01CA0B8\",\"id\":15,\"sort\":100,\"categoryName\":\"物流设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_B5D44F2B039A\",\"id\":16,\"sort\":100,\"categoryName\":\"工装设备\",\"enabled\":true}],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9538, 63, '接口日志', '43.174.32.12/1.9.116.218', '2026-10-06 06:24:50', 0, 'AssetController.options()', NULL, 'GET /apis/asset/options', '{}', '{\"code\":200,\"data\":{\"rows\":[{\"creator\":63,\"assetCode\":\"SIM-896019200694297052\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"UITM Dungun\",\"externalId\":\"6\",\"originalValue\":0.000000,\"specification\":\"183.171.146.98\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019200694297052\",\"location\":\"SMT (???)\",\"id\":270,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2020-12-16\",\"assetCode\":\"SIM-896019190221500578\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"5\",\"originalValue\":0.000000,\"specification\":\"183.171.14.125\",\"remark\":\"启用日期: 2020-12-16\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019190221500578\",\"location\":\"UITM Dungun\",\"id\":269,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2020-12-16\",\"assetCode\":\"SIM-896019190221500576\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"1\",\"originalValue\":0.000000,\"specification\":\"183.171.144.65\",\"remark\":\"使用期限: 2 Years;启用日期: 2020-12-16\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019190221500576\",\"location\":\"Genting\",\"id\":268,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2024-03-22\",\"assetCode\":\"SIM-896019210381607778\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"2\",\"originalValue\":0.000000,\"specification\":\"183.171.15.60\",\"remark\":\"使用期限: 2 Years;启用日期: 2024-03-22\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381607778\",\"location\":\"Genting\",\"id\":267,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2024-03-22\",\"assetCode\":\"SIM-896019210381607781\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"9\",\"originalValue\":0.000000,\"specification\":\"183.171.5.142 / KM08-LTE Modem / 21070014\",\"remark\":\"设备序列号: 21070014;电表序列号: 320910015;启用日期: 2024-03-22\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381607781\",\"location\":\"SMT (RnD) Modem RnD\",\"id\":266,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2024-07-15\",\"assetCode\":\"SIM-896019210381607777\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"3\",\"originalValue\":0.000000,\"specification\":\"183.171.40.182\",\"remark\":\"使用期限: 2 Years;启用日期: 2024-07-15\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381607777\",\"location\":\"Genting\",\"id\":265,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2024-07-15\",\"assetCode\":\"SIM-896019210381607782\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"4\",\"originalValue\":0.000000,\"specification\":\"183.171.40.117\",\"remark\":\"使用期限: 2 Years;启用日期: 2024-07-15\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381607782\",\"location\":\"Genting\",\"id\":264,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2024-09-29\",\"assetCode\":\"SIM-896019210381607784\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"7\",\"originalValue\":0.000000,\"specification\":\"183.171.50.5 / KM08-LTE Modem / 20041004\",\"remark\":\"设备序列号: 20041004;启用日期: 2024-09-29\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381607784\",\"location\":\"SMT (Modem-Production)\",\"id\":263,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2024-09-29\",\"assetCode\":\"SIM-896019210381607783\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"8\",\"originalValue\":0.000000,\"specification\":\"183.171.50.6 / KM08-LTE Modem / 2403005\",\"remark\":\"设备序列号: 2403005;启用日期: 2024-09-29\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381607783\",\"location\":\"SMT (RnD) Modem Store\",\"id\":262,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2025-12-23\",\"assetCode\":\"SIM-896019210381607785\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"10\",\"originalValue\":0.000000,\"specification\":\"183.171.151.171 / KM08-LTE Modem / 21070011\",\"remark\":\"设备序列号: 21070011;电表序列号: 320910014;启用日期: 2025-12-23\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381607785\",\"location\":\"SMT (RnD) Alyaa\",\"id\":261,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2025-12-23\",\"assetCode\":\"SIM-896019210381607786\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"11\",\"originalValue\":0.000000,\"specification\":\"183.171.208.37 / KM08-LTE Modem / 21070013\",\"remark\":\"设备序列号: 21070013;启用日期: 2025-12-23\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381607786\",\"location\":\"SMT (RnD) Alyaa\",\"id\":260,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2025-12-23\",\"assetCode\":\"SIM-896019210381702562\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"12\",\"originalValue\":0.000000,\"specification\":\"183.171.144.61\",\"remark\":\"启用日期: 2025-12-23\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381702562\",\"location\":\"Loan to Hanif/Adha (22-May-2026); \",\"id\":259,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2025-12-23\",\"assetCode\":\"SIM-896019210381607780\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"14\",\"originalValue\":0.000000,\"specification\":\"183.171.208.37\",\"remark\":\"使用期限: 2 Months;启用日期: 2025-12-23\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381607780\",\"location\":\"POC AEON\",\"id\":258,\"categoryId\":7,\"status\":\"SCRAPPED\"},{\"creator\":63,\"purchaseDate\":\"2025-12-23\",\"assetCode\":\"SIM-896019190221500577\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"15\",\"originalValue\":0.000000,\"specification\":\"183.171.144.61\",\"remark\":\"启用日期: 2025-12-23\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019190221500577\",\"location\":\"Kompleks Pertama\",\"id\":257,\"categoryId\":7,\"status\":\"SCRAPPED\"},{\"creator\":63,\"purchaseDate\":\"2025-12-23\",\"assetCode\":\"SIM-896019210381607779\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"13\",\"originalValue\":0.000000,\"specification\":\"183.171.151.171\",\"remark\":\"使用期限: 2 Months;启用日期: 2025-12-23\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381607779\",\"location\":\"POC AEON\",\"id\":256,\"categoryId\":7,\"status\":\"SCRAPPED\"},{\"creator\":63,\"purchaseDate\":\"2026-06-03\",\"assetCode\":\"SIM-896019210381702569\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"18\",\"originalValue\":0.000000,\"specification\":\"183.171.11.200\",\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381702569\",\"location\":\"With Amir\",\"id\":255,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2026-06-03\",\"assetCode\":\"SIM-896019210381702570\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"19\",\"originalValue\":0.000000,\"specification\":\"183.171.214.141\",\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381702570\",\"location\":\"With Amir\",\"id\":254,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2026-06-03\",\"assetCode\":\"SIM-896019210381702571\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"23\",\"originalValue\":0.000000,\"specification\":\"183.171.9.45\",\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381702571\",\"location\":\"R&D room, SMT\",\"id\":253,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2026-06-03\",\"assetCode\":\"SIM-896019210381702568\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"24\",\"originalValue\":0.000000,\"specification\":\"183.171.214.217 / 4G Modem\",\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381702568\",\"location\":\"Molnlycke Health Care\",\"id\":252,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2026-06-03\",\"assetCode\":\"SIM-896019210381702567\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"25\",\"originalValue\":0.000000,\"specification\":\"183.171.12.143 / 4G Modem\",\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381702567\",\"location\":\"Molnlycke Health Care\",\"id\":251,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2026-06-03\",\"assetCode\":\"SIM-896019210381702566\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"26\",\"originalValue\":0.000000,\"specification\":\"183.171.11.123 / Lora Gateway\",\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381702566\",\"location\":\"GT3.1 (Nur)\",\"id\":250,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2026-06-03\",\"assetCode\":\"SIM-896019210381702565\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"27\",\"originalValue\":0.000000,\"specification\":\"183.171.12.136 / Lora Gateway\",\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381702565\",\"location\":\"Menicon Malaysia\",\"id\":249,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2026-06-03\",\"assetCode\":\"SIM-896019210381702564\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"28\",\"originalValue\":0.000000,\"specification\":\"183.171.10.11 / 4G Modem\",\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381702564\",\"location\":\"First Solar Malaysia\",\"id\":248,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2026-06-03\",\"assetCode\":\"SIM-896019210381702563\",\"quantity\":1.000000,\"assetCategory\":\"SIM卡\",\"keeper\":\"SMT\",\"externalId\":\"29\",\"originalValue\":0.000000,\"specification\":\"183.171.11.141 / 4G Modem\",\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"updateTime\":1790613750000,\"categoryCode\":\"SIM_CARD\",\"source\":\"SAS\",\"externalSource\":\"SIM\",\"deleteFlag\":\"0\",\"unit\":\"张\",\"createTime\":1790613750000,\"assetName\":\"SIM卡 896019210381702563\",\"location\":\"First Solar Malaysia\",\"id\":247,\"categoryId\":7,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2023-09-18\",\"assetCode\":\"SAS-SW-2\",\"quantity\":15.000000,\"assetCategory\":\"软件资产\",\"externalId\":\"2\",\"originalValue\":8700.000000,\"specification\":\"Amimo\",\"remark\":\"供应商: Amimo;发票号: INV230902\",\"updateTime\":1790613750000,\"categoryCode\":\"SOFTWARE\",\"source\":\"SAS\",\"externalSource\":\"SOFTWARE\",\"deleteFlag\":\"0\",\"unit\":\"套\",\"createTime\":1790613750000,\"assetName\":\"MS Office 2019 Home & Business\",\"id\":246,\"categoryId\":6,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2024-01-11\",\"assetCode\":\"SAS-SW-3\",\"quantity\":2.000000,\"assetCategory\":\"软件资产\",\"externalId\":\"3\",\"originalValue\":1160.000000,\"specification\":\"Amimo\",\"remark\":\"供应商: Amimo;发票号: INV240101\",\"updateTime\":1790613750000,\"categoryCode\":\"SOFTWARE\",\"source\":\"SAS\",\"externalSource\":\"SOFTWARE\",\"deleteFlag\":\"0\",\"unit\":\"套\",\"createTime\":1790613750000,\"assetName\":\"MS Office 2019 Home & Business\",\"id\":245,\"categoryId\":6,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2024-09-27\",\"assetCode\":\"SAS-SW-4\",\"quantity\":1.000000,\"assetCategory\":\"软件资产\",\"externalId\":\"4\",\"originalValue\":0.000000,\"specification\":\"Amimo\",\"remark\":\"供应商: Amimo;发票号: INV240901;原备注: Price bundled with PC purchase.\",\"updateTime\":1790613750000,\"categoryCode\":\"SOFTWARE\",\"source\":\"SAS\",\"externalSource\":\"SOFTWARE\",\"deleteFlag\":\"0\",\"unit\":\"套\",\"createTime\":1790613750000,\"assetName\":\"MS Office 2019 Pro\",\"id\":244,\"categoryId\":6,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2024-04-03\",\"assetCode\":\"SAS-SW-5\",\"quantity\":1.000000,\"assetCategory\":\"软件资产\",\"externalId\":\"5\",\"originalValue\":580.000000,\"specification\":\"Amimo\",\"remark\":\"供应商: Amimo;发票号: INV240402\",\"updateTime\":1790613750000,\"categoryCode\":\"SOFTWARE\",\"source\":\"SAS\",\"externalSource\":\"SOFTWARE\",\"deleteFlag\":\"0\",\"unit\":\"套\",\"createTime\":1790613750000,\"assetName\":\"MS Office 2019 Pro Plus\",\"id\":243,\"categoryId\":6,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2025-01-14\",\"assetCode\":\"SAS-SW-6\",\"quantity\":4.000000,\"assetCategory\":\"软件资产\",\"externalId\":\"6\",\"originalValue\":2320.000000,\"specification\":\"Amimo\",\"remark\":\"供应商: Amimo;发票号: QUO250101\",\"updateTime\":1790613750000,\"categoryCode\":\"SOFTWARE\",\"source\":\"SAS\",\"externalSource\":\"SOFTWARE\",\"deleteFlag\":\"0\",\"unit\":\"套\",\"createTime\":1790613750000,\"assetName\":\"MS Office 2019 Pro Plus\",\"id\":242,\"categoryId\":6,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2024-02-13\",\"assetCode\":\"SAS-SW-7\",\"quantity\":1.000000,\"assetCategory\":\"软件资产\",\"externalId\":\"7\",\"originalValue\":750.000000,\"specification\":\"Amimo\",\"remark\":\"供应商: Amimo;发票号: INV240201\",\"updateTime\":1790613750000,\"categoryCode\":\"SOFTWARE\",\"source\":\"SAS\",\"externalSource\":\"SOFTWARE\",\"deleteFlag\":\"0\",\"unit\":\"套\",\"createTime\":1790613750000,\"assetName\":\"MS Office 2021 Home & Business\",\"id\":241,\"categoryId\":6,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2024-04-03\",\"assetCode\":\"SAS-SW-8\",\"quantity\":2.000000,\"assetCategory\":\"软件资产\",\"externalId\":\"8\",\"originalValue\":0.000000,\"specification\":\"Amimo\",\"remark\":\"供应商: Amimo;发票号: INV240401;原备注: Price bundled with PC purchase.\",\"updateTime\":1790613750000,\"categoryCode\":\"SOFTWARE\",\"source\":\"SAS\",\"externalSource\":\"SOFTWARE\",\"deleteFlag\":\"0\",\"unit\":\"套\",\"createTime\":1790613750000,\"assetName\":\"MS Office 2021 Pro\",\"id\":240,\"categoryId\":6,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2024-06-21\",\"assetCode\":\"SAS-SW-9\",\"quantity\":1.000000,\"assetCategory\":\"软件资产\",\"externalId\":\"9\",\"originalValue\":0.000000,\"specification\":\"Amimo\",\"remark\":\"供应商: Amimo;发票号: INV240601;原备注: Price bundled with PC purchase.\",\"updateTime\":1790613750000,\"categoryCode\":\"SOFTWARE\",\"source\":\"SAS\",\"externalSource\":\"SOFTWARE\",\"deleteFlag\":\"0\",\"useDepartment\":\"HR\",\"unit\":\"套\",\"createTime\":1790613750000,\"assetName\":\"MS Office 2021 Pro\",\"id\":239,\"categoryId\":6,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2026-01-21\",\"assetCode\":\"SAS-SW-10\",\"quantity\":10.000000,\"assetCategory\":\"软件资产\",\"externalId\":\"10\",\"originalValue\":0.000000,\"specification\":\"Amimo\",\"remark\":\"供应商: Amimo;许可证: Smt@123;发票号: INV260101;原备注: Bundled with 10 unit of PC purchase for Lab.\",\"updateTime\":1790613750000,\"categoryCode\":\"SOFTWARE\",\"source\":\"SAS\",\"externalSource\":\"SOFTWARE\",\"deleteFlag\":\"0\",\"useDepartment\":\"Laboratory\",\"unit\":\"套\",\"createTime\":1790613750000,\"assetName\":\"MS Office Home & Business\",\"id\":238,\"categoryId\":6,\"status\":\"IN_USE\"},{\"creator\":63,\"assetCode\":\"SAS-SW-11\",\"quantity\":1.000000,\"assetCategory\":\"软件资产\",\"externalId\":\"11\",\"originalValue\":0.000000,\"specification\":\"Amimo\",\"remark\":\"供应商: Amimo;原备注: Bundled with 1 unit of Laptop\",\"updateTime\":1790613750000,\"categoryCode\":\"SOFTWARE\",\"source\":\"SAS\",\"externalSource\":\"SOFTWARE\",\"deleteFlag\":\"0\",\"useDepartment\":\"Tech & Technology\",\"unit\":\"套\",\"createTime\":1790613750000,\"assetName\":\"MS Office Home & Business\",\"id\":237,\"categoryId\":6,\"status\":\"IN_USE\"},{\"creator\":63,\"assetCode\":\"SAS-SW-12\",\"quantity\":1.000000,\"assetCategory\":\"软件资产\",\"externalId\":\"12\",\"originalValue\":0.000000,\"specification\":\"CD\",\"remark\":\"许可证: BX27V-J9QMG-3VVWY-7JTYT-94CXB\",\"updateTime\":1790613750000,\"categoryCode\":\"SOFTWARE\",\"source\":\"SAS\",\"externalSource\":\"SOFTWARE\",\"deleteFlag\":\"0\",\"unit\":\"套\",\"createTime\":1790613750000,\"assetName\":\"MS Office Home & Business 2010\",\"id\":236,\"categoryId\":6,\"status\":\"IN_USE\"},{\"creator\":63,\"assetCode\":\"SAS-SW-13\",\"quantity\":1.000000,\"assetCategory\":\"软件资产\",\"externalId\":\"13\",\"originalValue\":0.000000,\"specification\":\"CD\",\"remark\":\"许可证: GTTC2-XH8PW-3WJFH-76VFQ-PHYX9\",\"updateTime\":1790613750000,\"categoryCode\":\"SOFTWARE\",\"source\":\"SAS\",\"externalSource\":\"SOFTWARE\",\"deleteFlag\":\"0\",\"unit\":\"套\",\"createTime\":1790613750000,\"assetName\":\"MS Office Home & Business 2010\",\"id\":235,\"categoryId\":6,\"status\":\"IN_USE\"},{\"creator\":63,\"assetCode\":\"SAS-SW-14\",\"quantity\":1.000000,\"assetCategory\":\"软件资产\",\"externalId\":\"14\",\"originalValue\":0.000000,\"specification\":\"CD\",\"remark\":\"许可证: WY8KV-GQ39X-2WQF2-V8R93-RY6CT\",\"updateTime\":1790613750000,\"categoryCode\":\"SOFTWARE\",\"source\":\"SAS\",\"externalSource\":\"SOFTWARE\",\"deleteFlag\":\"0\",\"unit\":\"套\",\"createTime\":1790613750000,\"assetName\":\"MS Office Home & Business 2010\",\"id\":234,\"categoryId\":6,\"status\":\"IN_USE\"},{\"creator\":63,\"assetCode\":\"SAS-SW-15\",\"quantity\":1.000000,\"assetCategory\":\"软件资产\",\"externalId\":\"15\",\"originalValue\":0.000000,\"specification\":\"CD\",\"remark\":\"许可证: YBDDT-C4QPP-J6T63-DQMB8-9XB29;原备注: Written: Burnny / Asus\",\"updateTime\":1790613750000,\"categoryCode\":\"SOFTWARE\",\"source\":\"SAS\",\"externalSource\":\"SOFTWARE\",\"deleteFlag\":\"0\",\"unit\":\"套\",\"createTime\":1790613750000,\"assetName\":\"MS Office Home & Business 2010\",\"id\":233,\"categoryId\":6,\"status\":\"IN_USE\"},{\"creator\":63,\"assetCode\":\"SAS-SW-16\",\"quantity\":1.000000,\"assetCategory\":\"软件资产\",\"externalId\":\"16\",\"originalValue\":0.000000,\"specification\":\"CD\",\"remark\":\"许可证: XG2WV-YRDV4-VQWQ2-XQQ26-XJ3FF;原备注: Written: SGH109RCWK\",\"updateTime\":1790613750000,\"categoryCode\":\"SOFTWARE\",\"source\":\"SAS\",\"externalSource\":\"SOFTWARE\",\"deleteFlag\":\"0\",\"unit\":\"套\",\"createTime\":1790613750000,\"assetName\":\"MS Office Home & Business 2010\",\"id\":232,\"categoryId\":6,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2024-10-14\",\"assetCode\":\"SAS-SW-1\",\"quantity\":2.000000,\"assetCategory\":\"软件资产\",\"externalId\":\"1\",\"originalValue\":0.000000,\"specification\":\"Amimo\",\"remark\":\"供应商: Amimo;发票号: INV240902;原备注: For server\",\"updateTime\":1790613750000,\"categoryCode\":\"SOFTWARE\",\"source\":\"SAS\",\"externalSource\":\"SOFTWARE\",\"deleteFlag\":\"0\",\"unit\":\"套\",\"createTime\":1790613750000,\"assetName\":\"Linux 6.8.0-45\",\"id\":231,\"categoryId\":6,\"status\":\"IN_USE\"},{\"creator\":63,\"purchaseDate\":\"2024-10-14\",\"assetCode\":\"SAS-SW-33\",\"quantity\":2.000000,\"assetCategory\":\"软件资产\",\"externalId\":\"33\",\"originalValue\":0.000000,\"specification\":\"Amimo\",\"remark\":\"供应商: Ami...[已截断]'); +INSERT INTO `tbl_log` VALUES (9539, 63, '接口日志', '43.168.32.240/1.9.116.218', '2026-10-06 06:25:00', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (9540, 63, '接口日志', '43.152.142.62/1.9.116.218', '2026-10-06 06:25:00', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9541, 63, '接口日志', '43.152.142.133/1.9.116.218', '2026-10-06 06:25:00', 0, 'OrganizationController.getAllOrganizationTreeByUser(..)', NULL, 'GET /apis/organization/getAllOrganizationTreeByUser', '{}', '[{\"children\":[{\"children\":[{\"children\":[],\"checked\":false,\"attributes\":\"12\",\"id\":14,\"state\":\"open\",\"title\":\"部门2\",\"value\":14,\"key\":14}],\"checked\":false,\"attributes\":\"jg1\",\"id\":13,\"state\":\"open\",\"title\":\"部门1\",\"value\":13,\"key\":13}],\"checked\":false,\"attributes\":\"001\",\"id\":12,\"state\":\"open\",\"title\":\"测试部门\",\"value\":12,\"key\":12}]'); +INSERT INTO `tbl_log` VALUES (9542, 63, '接口日志', '43.174.53.19/1.9.116.218', '2026-10-06 06:25:00', 0, 'DepotItemController.saleOut(..)', NULL, 'GET /apis/depotItem/saleOut', '{\"currentPage\":1,\"pageSize\":10,\"beginTime\":\"2026-07-06\",\"endTime\":\"2026-10-06\",\"materialParam\":\"\",\"mpList\":\"扩展1,扩展2,扩展3\"}', '{\"code\":200,\"data\":{\"total\":1,\"realityPriceTotal\":2940000.000000,\"rows\":[{\"outInSumPrice\":2940000.000000,\"otherField1\":\"\",\"materialMfrs\":\"浙江瑞银电子有限公司\",\"materialModel\":\"1PH WS79\",\"materialStandard\":\"1PH WS79\",\"materialColor\":\"\",\"materialBrand\":\"\",\"otherField3\":\"\",\"otherField2\":\"\",\"materialUnit\":\"件\",\"outSum\":40000.000000,\"barCode\":\"1PH-WS79\",\"materialName\":\"1PH WS79\",\"outSumPrice\":2940000.000000,\"inSum\":0.000000,\"inSumPrice\":0.000000}]}}'); +INSERT INTO `tbl_log` VALUES (9543, 63, '接口日志', '43.174.54.44/1.9.116.218', '2026-10-06 06:25:00', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (9544, 63, '接口日志', '43.168.32.240/1.9.116.218', '2026-10-06 06:25:02', 0, 'SupplierController.findBySelectSup(..)', NULL, 'POST /apis/supplier/findBySelect_sup', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司\",\"id\":89}]'); +INSERT INTO `tbl_log` VALUES (9545, 63, '接口日志', '43.152.142.110/1.9.116.218', '2026-10-06 06:25:02', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9546, 63, '接口日志', '43.152.142.140/1.9.116.218', '2026-10-06 06:25:02', 0, 'OrganizationController.getAllOrganizationTreeByUser(..)', NULL, 'GET /apis/organization/getAllOrganizationTreeByUser', '{}', '[{\"children\":[{\"children\":[{\"children\":[],\"checked\":false,\"attributes\":\"12\",\"id\":14,\"state\":\"open\",\"title\":\"部门2\",\"value\":14,\"key\":14}],\"checked\":false,\"attributes\":\"jg1\",\"id\":13,\"state\":\"open\",\"title\":\"部门1\",\"value\":13,\"key\":13}],\"checked\":false,\"attributes\":\"001\",\"id\":12,\"state\":\"open\",\"title\":\"测试部门\",\"value\":12,\"key\":12}]'); +INSERT INTO `tbl_log` VALUES (9547, 63, '接口日志', '43.174.32.14/1.9.116.218', '2026-10-06 06:25:02', 0, 'DepotItemController.buyIn(..)', NULL, 'GET /apis/depotItem/buyIn', '{\"currentPage\":1,\"pageSize\":10,\"beginTime\":\"2026-07-06\",\"endTime\":\"2026-10-06\",\"materialParam\":\"\",\"mpList\":\"扩展1,扩展2,扩展3\"}', '{\"code\":200,\"data\":{\"total\":2,\"realityPriceTotal\":100000.700000,\"rows\":[{\"materialModel\":\"MD-4G111(VF)\",\"materialStandard\":\"MD-4G111(VF) packing\",\"materialUnit\":\"件\",\"outSum\":0.000000,\"barCode\":\"1001\",\"materialName\":\"MD-4G111(VF) 包装\",\"inOutSumPrice\":100000.000000,\"outSumPrice\":0.000000,\"inSum\":10000.000000,\"inSumPrice\":100000.000000},{\"otherField1\":\"\",\"materialMfrs\":\"浙江瑞银电子有限公司\",\"materialModel\":\"MD-4G111(VF)\",\"materialStandard\":\"MD-4G111(VF)\",\"materialColor\":\"\",\"materialBrand\":\"\",\"otherField3\":\"\",\"otherField2\":\"\",\"materialUnit\":\"件\",\"outSum\":0.000000,\"barCode\":\"C.4.T.0.00654\",\"materialName\":\"MD-4G111(VF) 4G模块\",\"inOutSumPrice\":0.700000,\"outSumPrice\":0.000000,\"inSum\":7.000000,\"inSumPrice\":0.700000}]}}'); +INSERT INTO `tbl_log` VALUES (9548, 63, '接口日志', '43.174.32.12/1.9.116.218', '2026-10-06 06:25:02', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (9549, 63, '接口日志', '43.152.142.84/1.9.116.218', '2026-10-06 06:25:08', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9550, 63, '接口日志', '43.152.142.108/1.9.116.218', '2026-10-06 06:25:08', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (9551, 63, '接口日志', '43.152.142.41/1.9.116.218', '2026-10-06 06:25:08', 0, 'DepotItemController.getInOutStock(..)', NULL, 'GET /apis/depotItem/getInOutStock', '{\"currentPage\":1,\"pageSize\":10,\"beginTime\":\"2026-09-06\",\"endTime\":\"2026-10-06\",\"materialParam\":\"\",\"mpList\":\"扩展1,扩展2,扩展3\"}', '{\"code\":200,\"data\":{\"total\":23,\"rows\":[{\"unitPrice\":10.000000,\"materialModel\":\"MD-4G111(VF)\",\"unitName\":\"件\",\"thisSum\":0.000000,\"materialStandard\":\"MD-4G111(VF) packing\",\"outSum\":10000.000000,\"barCode\":\"1001\",\"bigUnitStock\":\"\",\"prevSum\":0.000000,\"imgName\":\"\",\"materialName\":\"MD-4G111(VF) 包装\",\"id\":705,\"inSum\":10000.000000,\"thisAllPrice\":0E-12},{\"unitPrice\":317.500000,\"materialMfrs\":\"浙江瑞银电子有限公司\",\"otherField1\":\"\",\"materialModel\":\"3PH APEC3-WC\",\"unitName\":\"件\",\"thisSum\":7372.000000,\"materialStandard\":\"3PH APEC3-WC\",\"materialColor\":\"\",\"materialBrand\":\"\",\"otherField3\":\"\",\"otherField2\":\"\",\"outSum\":0.000000,\"barCode\":\"3PH-APEC3-WC\",\"bigUnitStock\":\"\",\"prevSum\":7372.000000,\"imgName\":\"\",\"materialName\":\"3PH APEC3-WC\",\"id\":704,\"inSum\":0,\"thisAllPrice\":2340610.000000000000},{\"unitPrice\":59.500000,\"materialMfrs\":\"浙江瑞银电子有限公司\",\"otherField1\":\"\",\"materialModel\":\"1PH WS79\",\"unitName\":\"件\",\"thisSum\":52400.000000,\"materialStandard\":\"1PH WS79\",\"materialColor\":\"\",\"materialBrand\":\"\",\"otherField3\":\"\",\"otherField2\":\"\",\"outSum\":10000.000000,\"barCode\":\"1PH-WS79\",\"bigUnitStock\":\"\",\"prevSum\":52400.000000,\"imgName\":\"\",\"materialName\":\"1PH WS79\",\"id\":703,\"inSum\":10000.000000,\"thisAllPrice\":3117800.000000000000},{\"unitPrice\":24.300000,\"materialMfrs\":\"浙江瑞银电子有限公司\",\"otherField1\":\"\",\"materialModel\":\"MD-RS178(VA)\",\"unitName\":\"件\",\"thisSum\":1000.000000,\"materialStandard\":\"MD-RS178(VA)\",\"materialColor\":\"\",\"materialBrand\":\"\",\"otherField3\":\"\",\"otherField2\":\"\",\"outSum\":0.000000,\"barCode\":\"C.4.T.0.00722\",\"bigUnitStock\":\"\",\"prevSum\":1000.000000,\"imgName\":\"\",\"materialName\":\"MD-RS178(VA) RS485分线器\",\"id\":702,\"inSum\":0,\"thisAllPrice\":24300.000000000000},{\"unitPrice\":142.560000,\"materialMfrs\":\"浙江瑞银电子有限公司\",\"otherField1\":\"\",\"materialModel\":\"MD-RS114(VB)\",\"unitName\":\"件\",\"thisSum\":100.000000,\"materialStandard\":\"MD-RS114(VB)\",\"materialColor\":\"\",\"materialBrand\":\"\",\"otherField3\":\"\",\"otherField2\":\"\",\"outSum\":0.000000,\"barCode\":\"C.4.T.0.0068900002\",\"bigUnitStock\":\"\",\"prevSum\":100.000000,\"imgName\":\"\",\"materialName\":\"MD-RS114(VB) 基于RS485的MODBS TCPMODBS RTUASVII转换模块_(DZG)\",\"id\":701,\"inSum\":0,\"thisAllPrice\":14256.000000000000},{\"unitPrice\":132.840000,\"materialMfrs\":\"浙江瑞银电子有限公司\",\"otherField1\":\"\",\"materialModel\":\"TC160(VA)\",\"unitName\":\"件\",\"thisSum\":50.000000,\"materialStandard\":\"TC160(VA)\",\"materialColor\":\"\",\"materialBrand\":\"\",\"otherField3\":\"\",\"otherField2\":\"\",\"outSum\":0.000000,\"barCode\":\"C.4.T.0.00686\",\"bigUnitStock\":\"\",\"prevSum\":50.000000,\"imgName\":\"\",\"materialName\":\"TC160(VA) 通讯模块供电盒\",\"id\":700,\"inSum\":0,\"thisAllPrice\":6642.000000000000},{\"unitPrice\":0.100000,\"materialMfrs\":\"浙江瑞银电子有限公司\",\"otherField1\":\"\",\"materialModel\":\"MD-4G111(VF)\",\"unitName\":\"件\",\"thisSum\":76970.000000,\"materialStandard\":\"MD-4G111(VF)\",\"materialColor\":\"\",\"materialBrand\":\"\",\"otherField3\":\"\",\"otherField2\":\"\",\"outSum\":0.000000,\"barCode\":\"C.4.T.0.00654\",\"bigUnitStock\":\"\",\"prevSum\":76963.000000,\"imgName\":\"\",\"materialName\":\"MD-4G111(VF) 4G模块\",\"id\":699,\"inSum\":7.000000,\"thisAllPrice\":7697.000000000000},{\"unitPrice\":324.000000,\"materialMfrs\":\"浙江瑞银电子有限公司\",\"otherField1\":\"\",\"materialModel\":\"MD-4GVIII(VB)\",\"unitName\":\"件\",\"thisSum\":50.000000,\"materialStandard\":\"MD-4GVIII(VB)\",\"materialColor\":\"\",\"materialBrand\":\"\",\"otherField3\":\"\",\"otherField2\":\"\",\"outSum\":0.000000,\"barCode\":\"C.4.T.0.00562\",\"bigUnitStock\":\"\",\"prevSum\":50.000000,\"imgName\":\"\",\"materialName\":\"MD-4GVIII(VB)\",\"id\":698,\"inSum\":0,\"thisAllPrice\":16200.000000000000},{\"unitPrice\":129.600000,\"materialMfrs\":\"浙江瑞银电子有限公司\",\"otherField1\":\"\",\"materialModel\":\"MT-P109(VA)\",\"unitName\":\"件\",\"thisSum\":500.000000,\"materialStandard\":\"MT-P109(VA)\",\"materialColor\":\"\",\"materialBrand\":\"\",\"otherField3\":\"\",\"otherField2\":\"\",\"outSum\":0.000000,\"barCode\":\"C.4.T.0.00553\",\"bigUnitStock\":\"\",\"prevSum\":500.000000,\"imgName\":\"\",\"materialName\":\"MT-P109(VA)\",\"id\":697,\"inSum\":0,\"thisAllPrice\":64800.000000000000},{\"unitPrice\":0.100000,\"materialMfrs\":\"浙江瑞银电子有限公司\",\"otherField1\":\"\",\"materialModel\":\"MT-3NSXL(VC)\",\"unitName\":\"件\",\"thisSum\":54656.000000,\"materialStandard\":\"MT-3NSXL(VC)\",\"materialColor\":\"\",\"materialBrand\":\"\",\"otherField3\":\"\",\"otherField2\":\"\",\"outSum\":0.000000,\"barCode\":\"C.4.T.0.00547\",\"bigUnitStock\":\"\",\"prevSum\":54656.000000,\"imgName\":\"\",\"materialName\":\"MT-3NSXL(VC)RF通讯模块\",\"id\":696,\"inSum\":0,\"thisAllPrice\":5465.600000000000}]}}'); +INSERT INTO `tbl_log` VALUES (9552, 63, '接口日志', '43.174.55.40/1.9.116.218', '2026-10-06 06:25:08', 0, 'DepotItemController.getInOutStockCountMoney(..)', NULL, 'GET /apis/depotItem/getInOutStockCountMoney', '{\"endTime\":\"2026-10-06\",\"materialParam\":\"\"}', '{\"code\":200,\"data\":{\"showStockPrice\":true,\"totalStock\":519352.000000,\"totalCount\":107419830.670000000000}}'); +INSERT INTO `tbl_log` VALUES (9553, 63, '接口日志', '43.168.32.240/1.9.116.218', '2026-10-06 06:25:13', 0, 'SupplierController.findBySelectSup(..)', NULL, 'POST /apis/supplier/findBySelect_sup', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司\",\"id\":89}]'); +INSERT INTO `tbl_log` VALUES (9554, 63, '接口日志', '43.152.142.31/1.9.116.218', '2026-10-06 06:25:13', 0, 'DepotHeadController.getStatementAccount(..)', NULL, 'GET /apis/depotHead/getStatementAccount', '{\"currentPage\":1,\"pageSize\":10,\"beginTime\":\"2026-07-06\",\"endTime\":\"2026-10-06\",\"hasDebt\":1,\"supplierType\":\"供应商\"}', '{\"code\":200,\"data\":{\"total\":1,\"firstMoney\":103509293.334800,\"lastMoney\":116500257.436400,\"rows\":[{\"allNeed\":116500257.436400,\"backMoney\":2139558.598400,\"beginNeed\":0.000000,\"contacts\":\"\",\"debtMoney\":15130522.700000,\"email\":\"\",\"id\":89,\"phoneNum\":\"\",\"preBackMoney\":10686582.135200,\"preDebtMoney\":114195875.470000,\"preNeed\":103509293.334800,\"preReturnDebtMoney\":0.000000,\"returnDebtMoney\":0.000000,\"supplier\":\"浙江瑞银电子有限公司\",\"telephone\":\"\"}]}}'); +INSERT INTO `tbl_log` VALUES (9555, 63, '接口日志', '43.168.32.240/1.9.116.218', '2026-10-06 06:25:16', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (9556, 63, '接口日志', '43.168.32.240/1.9.116.218', '2026-10-06 06:25:16', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (9557, 63, '接口日志', '43.174.32.19/1.9.116.218', '2026-10-06 06:25:16', 0, 'DepotHeadController.getStatementAccount(..)', NULL, 'GET /apis/depotHead/getStatementAccount', '{\"currentPage\":1,\"pageSize\":10,\"beginTime\":\"2026-07-06\",\"endTime\":\"2026-10-06\",\"hasDebt\":1,\"supplierType\":\"客户\"}', '{\"code\":200,\"data\":{\"total\":1,\"firstMoney\":13532266.000000,\"lastMoney\":12430066.000000,\"rows\":[{\"allNeed\":12430066.000000,\"backMoney\":4336200.000000,\"beginNeed\":0.000000,\"contacts\":\"\",\"debtMoney\":3234000.000000,\"email\":\"\",\"id\":90,\"phoneNum\":\"\",\"preBackMoney\":10677700.000000,\"preDebtMoney\":24209966.000000,\"preNeed\":13532266.000000,\"preReturnDebtMoney\":0.000000,\"returnDebtMoney\":0.000000,\"supplier\":\"TNB\",\"telephone\":\"\"}]}}'); +INSERT INTO `tbl_log` VALUES (9558, 63, '接口日志', '43.174.52.31/1.9.116.218', '2026-10-06 06:25:16', 0, 'CustomerCategoryController.getTreeList(..)', NULL, 'GET /apis/customerCategory/treeList', '{}', '{\"code\":200,\"data\":{\"data\":[],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9559, 63, '接口日志', '43.152.142.142/1.9.116.218', '2026-10-06 06:25:22', 0, 'AccountController.findAccountInOutList(..)', NULL, 'GET /apis/account/findAccountInOutList', '{\"currentPage\":1,\"pageSize\":10,\"accountId\":17,\"initialAmount\":100,\"number\":\"\",\"beginTime\":\"\",\"endTime\":\"\"}', '{\"code\":200,\"data\":{\"total\":100,\"rows\":[{\"aList\":\"\",\"accountId\":17,\"amList\":\"\",\"balance\":4375618.532800,\"changeAmount\":-236946.640000,\"fromType\":\"financial\",\"number\":\"FK-PV-008186-87-1PH-WS79-ADD1-11\",\"operTime\":\"2026-08-14 00:00:00\",\"remark\":\"Stock Status供应商付款;PV:PV 008186/87\",\"supplierName\":\"浙江瑞银电子有限公司\",\"type\":\"付款\"},{\"aList\":\"\",\"accountId\":17,\"amList\":\"\",\"balance\":4375618.532800,\"changeAmount\":-947751.900000,\"fromType\":\"financial\",\"number\":\"FK-PV-008186-87-3PH-APEC3-WC-OV-25\",\"operTime\":\"2026-08-14 00:00:00\",\"remark\":\"Stock Status供应商付款;PV:PV 008186/87\",\"supplierName\":\"浙江瑞银电子有限公司\",\"type\":\"付款\"},{\"aList\":\"\",\"accountId\":17,\"amList\":\"\",\"balance\":4375618.532800,\"changeAmount\":-947751.900000,\"fromType\":\"financial\",\"number\":\"FK-PV-008186-87-3PH-APEC3-WC-OV-25\",\"operTime\":\"2026-08-14 00:00:00\",\"remark\":\"Stock Status供应商付款;PV:PV 008186/87\",\"supplierName\":\"浙江瑞银电子有限公司\",\"type\":\"付款\"},{\"aList\":\"\",\"accountId\":17,\"amList\":\"\",\"balance\":4375618.532800,\"changeAmount\":80850.000000,\"fromType\":\"financial\",\"number\":\"SK-INV_2133-65\",\"operTime\":\"2026-08-14 00:00:00\",\"remark\":\"Stock Status客户收款;发票:INV_2133\",\"supplierName\":\"TNB\",\"type\":\"收款\"},{\"aList\":\"\",\"accountId\":17,\"amList\":\"\",\"balance\":4375618.532800,\"changeAmount\":-236946.640000,\"fromType\":\"financial\",\"number\":\"FK-PV-008186-87-1PH-WS79-ADD1-11\",\"operTime\":\"2026-08-14 00:00:00\",\"remark\":\"Stock Status供应商付款;PV:PV 008186/87\",\"supplierName\":\"浙江瑞银电子有限公司\",\"type\":\"付款\"},{\"aList\":\"\",\"accountId\":17,\"amList\":\"\",\"balance\":4375618.532800,\"changeAmount\":80850.000000,\"fromType\":\"financial\",\"number\":\"SK-INV_2133-65\",\"operTime\":\"2026-08-14 00:00:00\",\"remark\":\"Stock Status客户收款;发票:INV_2133\",\"supplierName\":\"TNB\",\"type\":\"收款\"},{\"aList\":\"\",\"accountId\":17,\"amList\":\"\",\"balance\":6583315.612800,\"changeAmount\":1122000.000000,\"fromType\":\"financial\",\"number\":\"SK-INV_2129-11\",\"operTime\":\"2026-08-13 00:00:00\",\"remark\":\"Stock Status客户收款;发票:INV_2129\",\"supplierName\":\"TNB\",\"type\":\"收款\"},{\"aList\":\"\",\"accountId\":17,\"amList\":\"\",\"balance\":6583315.612800,\"changeAmount\":1122000.000000,\"fromType\":\"financial\",\"number\":\"SK-INV_2129-11\",\"operTime\":\"2026-08-13 00:00:00\",\"remark\":\"Stock Status客户收款;发票:INV_2129\",\"supplierName\":\"TNB\",\"type\":\"收款\"},{\"aList\":\"\",\"accountId\":17,\"amList\":\"\",\"balance\":4339315.612800,\"changeAmount\":242550.000000,\"fromType\":\"financial\",\"number\":\"SK-INV_2130-44\",\"operTime\":\"2026-08-07 00:00:00\",\"remark\":\"Stock Status客户收款;发票:INV_2130\",\"supplierName\":\"TNB\",\"type\":\"收款\"},{\"aList\":\"\",\"accountId\":17,\"amList\":\"\",\"balance\":4339315.612800,\"changeAmount\":242550.000000,\"fromType\":\"financial\",\"number\":\"SK-INV_2130-44\",\"operTime\":\"2026-08-07 00:00:00\",\"remark\":\"Stock Status客户收款;发票:INV_2130\",\"supplierName\":\"TNB\",\"type\":\"收款\"}]}}'); +INSERT INTO `tbl_log` VALUES (9560, 63, '接口日志', '43.152.142.34/1.9.116.218', '2026-10-06 06:29:07', 0, 'MaterialController.getMaterialDepotStock(..)', NULL, 'GET /apis/material/getMaterialDepotStock', '{\"depotIds\":\"\",\"mId\":695}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"allPrice\":100375.200000000000,\"currentNumber\":100.000000,\"currentUnitPrice\":1003.752000,\"depotId\":25,\"depotName\":\"半成品仓库\",\"id\":134,\"materialId\":695,\"purchaseDecimal\":1003.752000,\"unitPrice\":1003.752000}]}}'); +INSERT INTO `tbl_log` VALUES (9561, 63, '接口日志', '43.168.32.240/1.9.116.218', '2026-10-06 06:29:16', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (9562, 63, '接口日志', '43.152.142.128/1.9.116.218', '2026-10-06 06:29:16', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (9563, 63, '接口日志', '43.174.53.16/1.9.116.218', '2026-10-06 06:29:16', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9564, 63, '接口日志', '43.152.142.45/1.9.116.218', '2026-10-06 06:29:16', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9565, 63, '接口日志', '43.174.52.31/1.9.116.218', '2026-10-06 06:29:16', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (9566, 63, '接口日志', '43.152.142.110/1.9.116.218', '2026-10-06 06:29:16', 0, 'DepotHeadController.waitBillCount(..)', NULL, 'GET /apis/depotHead/waitBillCount', '{\"search\":\"{\\\"type\\\":\\\"出库\\\",\\\"subType\\\":\\\"销售,采购退货\\\",\\\"status\\\":\\\"1,3\\\"}\"}', '{\"code\":200,\"data\":{\"total\":167,\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9567, 63, '接口日志', '43.152.142.108/1.9.116.218', '2026-10-06 06:29:16', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"出库\\\",\\\"subType\\\":\\\"其它\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-07-06\\\",\\\"endTime\\\":\\\"2026-10-06\\\",\\\"createTimeRange\\\":[\\\"2026-07-05T16:00:00.000Z\\\",\\\"2026-10-05T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9568, 63, '接口日志', '43.168.32.240/1.9.116.218', '2026-10-06 06:29:17', 0, 'SupplierController.findBySelectSup(..)', NULL, 'POST /apis/supplier/findBySelect_sup', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司\",\"id\":89}]'); +INSERT INTO `tbl_log` VALUES (9569, 63, '接口日志', '43.152.142.68/1.9.116.218', '2026-10-06 06:29:17', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9570, 63, '接口日志', '43.174.32.12/1.9.116.218', '2026-10-06 06:29:17', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (9571, 63, '接口日志', '43.174.32.14/1.9.116.218', '2026-10-06 06:29:17', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9572, 63, '接口日志', '43.152.142.62/1.9.116.218', '2026-10-06 06:29:17', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (9573, 63, '接口日志', '43.152.142.142/1.9.116.218', '2026-10-06 06:29:17', 0, 'DepotHeadController.waitBillCount(..)', NULL, 'GET /apis/depotHead/waitBillCount', '{\"search\":\"{\\\"type\\\":\\\"入库\\\",\\\"subType\\\":\\\"采购,销售退货\\\",\\\"status\\\":\\\"1,3\\\"}\"}', '{\"code\":200,\"data\":{\"total\":47,\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9574, 63, '接口日志', '43.174.53.48/1.9.116.218', '2026-10-06 06:29:17', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"入库\\\",\\\"subType\\\":\\\"其它\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-07-06\\\",\\\"endTime\\\":\\\"2026-10-06\\\",\\\"createTimeRange\\\":[\\\"2026-07-05T16:00:00.000Z\\\",\\\"2026-10-05T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9575, 63, '接口日志', '43.174.32.33/1.9.116.218', '2026-10-06 06:29:27', 0, 'MaterialController.getListWithStock(..)', NULL, 'GET /apis/material/getListWithStock', '{\"currentPage\":1,\"pageSize\":10,\"position\":\"\",\"materialParam\":\"\",\"zeroStock\":0,\"column\":\"currentStock\",\"order\":\"asc\"}', '{\"code\":200,\"data\":{\"currentStockPrice\":107372523.170000000000,\"moveAvgPriceFlag\":false,\"total\":22,\"showStockPrice\":true,\"currentWeight\":0E-12,\"currentStock\":519203.000000,\"rows\":[{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":50.000000,\"currentStockMovePrice\":6642.000000000000,\"currentStockPrice\":6642.000000000000,\"currentUnitPrice\":132.840000,\"currentWeight\":0E-12,\"id\":700,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00686\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"TC160(VA)\",\"name\":\"TC160(VA) 通讯模块供电盒\",\"position\":\"\",\"purchaseDecimal\":132.840000,\"standard\":\"TC160(VA)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":50.000000,\"currentStockMovePrice\":16200.000000000000,\"currentStockPrice\":16200.000000000000,\"currentUnitPrice\":324.000000,\"currentWeight\":0E-12,\"id\":698,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00562\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-4GVIII(VB)\",\"name\":\"MD-4GVIII(VB)\",\"position\":\"\",\"purchaseDecimal\":324.000000,\"standard\":\"MD-4GVIII(VB)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":100.000000,\"currentStockMovePrice\":14256.000000000000,\"currentStockPrice\":14256.000000000000,\"currentUnitPrice\":142.560000,\"currentWeight\":0E-12,\"id\":701,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.0068900002\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-RS114(VB)\",\"name\":\"MD-RS114(VB) 基于RS485的MODBS TCPMODBS RTUASVII转换模块_(DZG)\",\"position\":\"\",\"purchaseDecimal\":142.560000,\"standard\":\"MD-RS114(VB)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":100.000000,\"currentStockMovePrice\":100375.200000000000,\"currentStockPrice\":100375.200000000000,\"currentUnitPrice\":1003.752000,\"currentWeight\":0E-12,\"id\":695,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00422\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-LR63(VB)\",\"name\":\"MD-LR63(VB)\",\"position\":\"\",\"purchaseDecimal\":1003.752000,\"standard\":\"MD-LR63(VB)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":120.000000,\"currentStockMovePrice\":82814.400000000000,\"currentStockPrice\":82814.400000000000,\"currentUnitPrice\":690.120000,\"currentWeight\":0E-12,\"id\":689,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.3.S.0.00026\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DTSD1226-SXVI(VH)\",\"name\":\"三相四线多功能电能表SXVI(VH)-新\",\"position\":\"\",\"purchaseDecimal\":690.120000,\"standard\":\"DTSD1226-SXVI(VH)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":200.000000,\"currentStockMovePrice\":66938.400000000000,\"currentStockPrice\":66938.400000000000,\"currentUnitPrice\":334.692000,\"currentWeight\":0E-12,\"id\":694,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00421\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-LR62(VB)\",\"name\":\"MD-LR62(VB)\",\"position\":\"\",\"purchaseDecimal\":334.692000,\"standard\":\"MD-LR62(VB)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":400.000000,\"currentStockMovePrice\":245592.000000000000,\"currentStockPrice\":245592.000000000000,\"currentUnitPrice\":613.980000,\"currentWeight\":0E-12,\"id\":688,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.3.S.0.00020\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DTSD1226-SXVI(VG)\",\"name\":\"三相四线多功能电能表SXVI(VG)-新\",\"position\":\"\",\"purchaseDecimal\":613.980000,\"standard\":\"DTSD1226-SXVI(VG)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":500.000000,\"currentStockMovePrice\":64800.000000000000,\"currentStockPrice\":64800.000000000000,\"currentUnitPrice\":129.600000,\"currentWeight\":0E-12,\"id\":697,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00553\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MT-P109(VA)\",\"name\":\"MT-P109(VA)\",\"position\":\"\",\"purchaseDecimal\":129.600000,\"standard\":\"MT-P109(VA)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":500.000000,\"currentStockMovePrice\":275400.000000000000,\"currentStockPrice\":275400.000000000000,\"currentUnitPrice\":550.800000,\"currentWeight\":0E-12,\"id\":692,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.3.T.0.00036\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DTSD1226-T46(VH)\",\"name\":\"三相四线多功能电能表T46(VH)\",\"position\":\"\",\"purchaseDecimal\":550.800000,\"standard\":\"DTSD1226-T46(VH)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":1000.000000,\"currentStockMovePrice\":24300.000000000000,\"currentStockPrice\":24300.000000000000,\"currentUnitPrice\":24.300000,\"currentWeight\":0E-12,\"id\":702,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00722\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-RS178(VA)\",\"name\":\"MD-RS178(VA) RS485分线器\",\"position\":\"\",\"purchaseDecimal\":24.300000,\"standard\":\"MD-RS178(VA)\",\"unitName\":\"件\"}]}}'); +INSERT INTO `tbl_log` VALUES (9576, NULL, '接口日志', '43.152.142.41/1.9.116.218', '2026-10-06 06:29:30', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (9577, NULL, '接口日志', '43.174.53.19/1.9.116.218', '2026-10-06 06:29:30', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (9578, 63, '接口日志', '43.168.32.240/1.9.116.218', '2026-10-06 06:29:31', 0, 'FunctionController.findMenuByPNumber(..)', NULL, 'POST /apis/function/findMenuByPNumber', '{\"jsonObject\":{\"userId\":63,\"pNumber\":0}}', '[{\"component\":\"/layouts/TabLayout\",\"icon\":\"home\",\"id\":0,\"text\":\"首页\",\"url\":\"/dashboard/analysis\",\"textEn\":\"Home\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/SaleOrderList\",\"icon\":\"profile\",\"id\":242,\"text\":\"销售订单\",\"url\":\"/bill/sale_order\",\"textEn\":\"Sales Orders\"},{\"component\":\"/bill/SaleOutList\",\"icon\":\"profile\",\"id\":41,\"text\":\"销售出库\",\"url\":\"/bill/sale_out\",\"textEn\":\"Sales Shipments\"},{\"component\":\"/bill/DeliveryPlanList\",\"icon\":\"profile\",\"id\":271,\"text\":\"交货计划管理\",\"url\":\"/bill/delivery_plan\",\"textEn\":\"Delivery Plans\"},{\"component\":\"/bill/SaleShipmentList\",\"icon\":\"car\",\"id\":268,\"text\":\"发货管理\",\"url\":\"/bill/sale_shipment\",\"textEn\":\"Shipment Management\"},{\"component\":\"/bill/SaleBackList\",\"icon\":\"profile\",\"id\":200,\"text\":\"销售退货\",\"url\":\"/bill/sale_back\",\"textEn\":\"Sales Returns\"},{\"component\":\"/bill/RetailOutList\",\"icon\":\"profile\",\"id\":210,\"text\":\"零售出库\",\"url\":\"/bill/retail_out\",\"textEn\":\"Retail Shipments\"},{\"component\":\"/bill/RetailBackList\",\"icon\":\"profile\",\"id\":211,\"text\":\"零售退货\",\"url\":\"/bill/retail_back\",\"textEn\":\"Retail Returns\"}],\"icon\":\"shopping-cart\",\"id\":38,\"text\":\"销售管理\",\"url\":\"/billB\",\"textEn\":\"Sales Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/PurchaseApplyList\",\"icon\":\"profile\",\"id\":261,\"text\":\"请购单\",\"url\":\"/bill/purchase_apply\",\"textEn\":\"Purchase Requisitions\"},{\"component\":\"/bill/PurchaseOrderList\",\"icon\":\"profile\",\"id\":241,\"text\":\"采购订单\",\"url\":\"/bill/purchase_order\",\"textEn\":\"Purchase Orders\"},{\"component\":\"/bill/PurchaseInList\",\"icon\":\"profile\",\"id\":33,\"text\":\"采购入库\",\"url\":\"/bill/purchase_in\",\"textEn\":\"Purchase Receipts\"},{\"component\":\"/bill/PurchaseBackList\",\"icon\":\"profile\",\"id\":199,\"text\":\"采购退货\",\"url\":\"/bill/purchase_back\",\"textEn\":\"Purchase Returns\"}],\"icon\":\"retweet\",\"id\":32,\"text\":\"采购管理\",\"url\":\"/bill\",\"textEn\":\"Purchase Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/production/PackBomList\",\"icon\":\"profile\",\"id\":263,\"text\":\"生产方案\",\"url\":\"/production/pack_bom\",\"textEn\":\"Production BOMs\"},{\"component\":\"/production/OrderList\",\"icon\":\"profile\",\"id\":264,\"text\":\"生产工单\",\"url\":\"/production/order\",\"textEn\":\"Production Orders\"},{\"component\":\"/production/RequisitionList\",\"icon\":\"profile\",\"id\":265,\"text\":\"领料管理\",\"url\":\"/production/requisition\",\"textEn\":\"Material Requisitions\"},{\"component\":\"/production/ReportList\",\"icon\":\"profile\",\"id\":266,\"text\":\"完工报工\",\"url\":\"/production/report\",\"textEn\":\"Production Reports\"}],\"icon\":\"cluster\",\"id\":262,\"text\":\"生产管理\",\"url\":\"/production\",\"textEn\":\"Production Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/MaterialStock\",\"icon\":\"profile\",\"id\":246,\"text\":\"商品库存\",\"url\":\"/report/material_stock\",\"textEn\":\"Product Inventory\"},{\"component\":\"/bill/OtherInList\",\"icon\":\"profile\",\"id\":201,\"text\":\"其它入库\",\"url\":\"/bill/other_in\",\"textEn\":\"Other Receipts\"},{\"component\":\"/bill/OtherOutList\",\"icon\":\"profile\",\"id\":202,\"text\":\"其它出库\",\"url\":\"/bill/other_out\",\"textEn\":\"Other Shipments\"},{\"component\":\"/bill/HeadquartersInList\",\"icon\":\"profile\",\"id\":270,\"text\":\"总部入库\",\"url\":\"/bill/headquarters_in\",\"textEn\":\"Headquarters Receipts\"}],\"icon\":\"hdd\",\"id\":239,\"text\":\"仓库管理\",\"url\":\"/billD\",\"textEn\":\"Warehouse Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/financial/MoneyInList\",\"icon\":\"profile\",\"id\":204,\"text\":\"收款单\",\"url\":\"/financial/money_in\",\"textEn\":\"Receipt Vouchers\"},{\"component\":\"/financial/MoneyOutList\",\"icon\":\"profile\",\"id\":205,\"text\":\"付款单\",\"url\":\"/financial/money_out\",\"textEn\":\"Payment Vouchers\"}],\"icon\":\"money-collect\",\"id\":44,\"text\":\"财务管理\",\"url\":\"/financial\",\"textEn\":\"Finance Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/asset/AssetDashboard\",\"icon\":\"dashboard\",\"id\":276,\"text\":\"资产汇总\",\"url\":\"/asset\",\"textEn\":\"Asset Overview\"},{\"component\":\"/asset/AssetList\",\"icon\":\"profile\",\"id\":273,\"text\":\"资产台账\",\"url\":\"/asset/ledger\",\"textEn\":\"Asset Ledger\"},{\"component\":\"/asset/DeviceList\",\"icon\":\"tool\",\"id\":274,\"text\":\"设备台账\",\"url\":\"/asset/device\",\"textEn\":\"Device Ledger\"},{\"component\":\"/asset/InventoryList\",\"icon\":\"scan\",\"id\":275,\"text\":\"资产盘点\",\"url\":\"/asset/inventory\",\"textEn\":\"Asset Inventory\"}],\"icon\":\"bank\",\"id\":272,\"text\":\"资产管理\",\"url\":\"/assetManagement\",\"textEn\":\"Asset Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/material/MaterialCategoryList\",\"icon\":\"profile\",\"id\":22,\"text\":\"商品类别\",\"url\":\"/material/material_category\",\"textEn\":\"Product Categories\"},{\"component\":\"/material/MaterialList\",\"icon\":\"profile\",\"id\":23,\"text\":\"商品信息\",\"url\":\"/material/material\",\"textEn\":\"Product Information\"},{\"component\":\"/system/UnitList\",\"icon\":\"profile\",\"id\":220,\"text\":\"多单位\",\"url\":\"/system/unit\",\"textEn\":\"Multiple Units\"},{\"component\":\"/material/MaterialAttributeList\",\"icon\":\"profile\",\"id\":247,\"text\":\"多属性\",\"url\":\"/material/material_attribute\",\"textEn\":\"Product Attributes\"}],\"icon\":\"shopping\",\"id\":21,\"text\":\"商品管理\",\"url\":\"/material\",\"textEn\":\"Product Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/AccountReport\",\"icon\":\"profile\",\"id\":207,\"text\":\"账户统计\",\"url\":\"/report/account_report\",\"textEn\":\"Account Summary\"},{\"component\":\"/report/RetailOutReport\",\"icon\":\"profile\",\"id\":259,\"text\":\"零售统计\",\"url\":\"/report/retail_out_report\",\"textEn\":\"Retail Summary\"},{\"component\":\"/report/BuyInReport\",\"icon\":\"profile\",\"id\":208,\"text\":\"采购统计\",\"url\":\"/report/buy_in_report\",\"textEn\":\"Purchase Summary\"},{\"component\":\"/report/SaleOutReport\",\"icon\":\"profile\",\"id\":209,\"text\":\"销售统计\",\"url\":\"/report/sale_out_report\",\"textEn\":\"Sales Summary\"},{\"component\":\"/report/InDetail\",\"icon\":\"profile\",\"id\":226,\"text\":\"入库明细\",\"url\":\"/report/in_detail\",\"textEn\":\"Inbound Details\"},{\"component\":\"/report/OutDetail\",\"icon\":\"profile\",\"id\":227,\"text\":\"出库明细\",\"url\":\"/report/out_detail\",\"textEn\":\"Outbound Details\"},{\"component\":\"/report/InMaterialCount\",\"icon\":\"profile\",\"id\":228,\"text\":\"入库汇总\",\"url\":\"/report/in_material_count\",\"textEn\":\"Inbound Summary\"},{\"component\":\"/report/OutMaterialCount\",\"icon\":\"profile\",\"id\":229,\"text\":\"出库汇总\",\"url\":\"/report/out_material_count\",\"textEn\":\"Outbound Summary\"},{\"component\":\"/report/InOutStockReport\",\"icon\":\"profile\",\"id\":59,\"text\":\"进销存统计\",\"url\":\"/report/in_out_stock_report\",\"textEn\":\"Inventory Transaction Summary\"},{\"component\":\"/report/CustomerAccount\",\"icon\":\"profile\",\"id\":235,\"text\":\"客户对账\",\"url\":\"/report/customer_account\",\"textEn\":\"Customer Reconciliation\"},{\"component\":\"/report/VendorAccount\",\"icon\":\"profile\",\"id\":237,\"text\":\"供应商对账\",\"url\":\"/report/vendor_account\",\"textEn\":\"Supplier Reconciliation\"},{\"component\":\"/report/StockWarningReport\",\"icon\":\"profile\",\"id\":244,\"text\":\"库存预警\",\"url\":\"/report/stock_warning_report\",\"textEn\":\"Stock Alerts\"}],\"icon\":\"pie-chart\",\"id\":198,\"text\":\"报表查询\",\"url\":\"/report\",\"textEn\":\"Reports\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/VendorList\",\"icon\":\"profile\",\"id\":25,\"text\":\"供应商信息\",\"url\":\"/system/vendor\",\"textEn\":\"Suppliers\"},{\"component\":\"/system/CustomerList\",\"icon\":\"profile\",\"id\":217,\"text\":\"客户信息\",\"url\":\"/system/customer\",\"textEn\":\"Customers\"},{\"component\":\"/system/MemberList\",\"icon\":\"profile\",\"id\":218,\"text\":\"会员信息\",\"url\":\"/system/member\",\"textEn\":\"Members\"},{\"component\":\"/system/CustomerCategoryList\",\"icon\":\"bars\",\"id\":267,\"text\":\"客户分类\",\"url\":\"/system/customerCategory\",\"textEn\":\"Customer Categories\"},{\"component\":\"/system/DepotList\",\"icon\":\"profile\",\"id\":26,\"text\":\"仓库信息\",\"url\":\"/system/depot\",\"textEn\":\"Warehouses\"},{\"component\":\"/system/InOutItemList\",\"icon\":\"profile\",\"id\":194,\"text\":\"收支项目\",\"url\":\"/system/in_out_item\",\"textEn\":\"Income and Expense Items\"},{\"component\":\"/system/AccountList\",\"icon\":\"profile\",\"id\":195,\"text\":\"结算账户\",\"url\":\"/system/account\",\"textEn\":\"Settlement Accounts\"},{\"component\":\"/system/PersonList\",\"icon\":\"profile\",\"id\":31,\"text\":\"操作人员管理\",\"url\":\"/system/person\",\"textEn\":\"Operators\"}],\"icon\":\"appstore\",\"id\":24,\"text\":\"基础资料\",\"url\":\"/systemA\",\"textEn\":\"Master Data\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/RoleList\",\"icon\":\"profile\",\"id\":13,\"text\":\"角色管理\",\"url\":\"/system/role\",\"textEn\":\"Role Management\"},{\"component\":\"/system/UserList\",\"icon\":\"profile\",\"id\":14,\"text\":\"用户管理\",\"url\":\"/system/user\",\"textEn\":\"User Management\"},{\"component\":\"/system/OrganizationList\",\"icon\":\"profile\",\"id\":243,\"text\":\"部门管理\",\"url\":\"/system/organization\",\"textEn\":\"Department Management\"},{\"component\":\"/system/LogList\",\"icon\":\"profile\",\"id\":15,\"text\":\"日志管理\",\"url\":\"/system/log\",\"textEn\":\"Log Management\"},{\"component\":\"/material/MaterialPropertyList\",\"icon\":\"profile\",\"id\":236,\"text\":\"商品属性\",\"url\":\"/material/material_property\",\"textEn\":\"Product Properties\"},{\"component\":\"/system/SystemConfigList\",\"icon\":\"profile\",\"id\":234,\"text\":\"系统配置\",\"url\":\"/system/system_config\",\"textEn\":\"System Configuration\"},{\"component\":\"/system/FunctionList\",\"icon\":\"profile\",\"id\":16,\"text\":\"菜单管理\",\"url\":\"/system/function\",\"textEn\":\"Resource Menus\"},{\"component\":\"/system/PluginList\",\"icon\":\"profile\",\"id\":245,\"text\":\"插件管理\",\"url\":\"/system/plugin\",\"textEn\":\"Plugin Management\"},{\"component\":\"/system/DictList\",\"icon\":\"profile\",\"id\":260,\"text\":\"字典管理\",\"url\":\"/system/dict\",\"textEn\":\"Dictionary Management\"},{\"component\":\"/system/PlatformConfigList\",\"icon\":\"profile\",\"id\":258,\"text\":\"平台配置\",\"url\":\"/system/platform_config\",\"textEn\":\"Platform Configuration\"}],\"icon\":\"setting\",\"id\":1,\"text\":\"系统管理\",\"url\":\"/system\",\"textEn\":\"System Management\"}]'); +INSERT INTO `tbl_log` VALUES (9579, 63, '接口日志', '43.152.142.133/1.9.116.218', '2026-10-06 06:29:31', 0, 'UserController.getUserBtnByCurrentUser(..)', NULL, 'GET /apis/user/getUserBtnByCurrentUser', '{}', '{\"code\":200,\"data\":{\"userBtn\":[{\"btnStr\":\"8,1\",\"url\":\"/system/role\"},{\"btnStr\":\"1\",\"url\":\"/system/user\"},{\"btnStr\":\"1\",\"url\":\"/system/organization\"},{\"btnStr\":\"1\",\"url\":\"/material/material_property\"},{\"btnStr\":\"1\",\"url\":\"/system/system_config\"},{\"btnStr\":\"1\",\"url\":\"/system/function\"},{\"btnStr\":\"1\",\"url\":\"/system/plugin\"},{\"btnStr\":\"1\",\"url\":\"/material/material_category\"},{\"btnStr\":\"1,3\",\"url\":\"/material/material\"},{\"btnStr\":\"1\",\"url\":\"/system/unit\"},{\"btnStr\":\"1\",\"url\":\"/material/material_attribute\"},{\"btnStr\":\"1,3\",\"url\":\"/system/vendor\"},{\"btnStr\":\"1,3\",\"url\":\"/system/customer\"},{\"btnStr\":\"1,3\",\"url\":\"/system/member\"},{\"btnStr\":\"1\",\"url\":\"/system/depot\"},{\"btnStr\":\"1\",\"url\":\"/system/in_out_item\"},{\"btnStr\":\"1\",\"url\":\"/system/account\"},{\"btnStr\":\"1\",\"url\":\"/system/person\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_apply\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_out\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/delivery_plan\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/sale_shipment\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_out\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/order\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/requisition\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/report\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/giro\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/advance_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/allocation_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/assemble\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/headquarters_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/disassemble\"}]}}'); +INSERT INTO `tbl_log` VALUES (9580, 63, '接口日志', '43.152.142.34/1.9.116.218', '2026-10-06 06:29:32', 0, 'MaterialController.getListWithStock(..)', NULL, 'GET /apis/material/getListWithStock', '{\"currentPage\":1,\"pageSize\":10,\"position\":\"\",\"materialParam\":\"\",\"zeroStock\":0,\"column\":\"createTime\",\"order\":\"desc\"}', '{\"code\":200,\"data\":{\"currentStockPrice\":107372523.170000000000,\"moveAvgPriceFlag\":false,\"total\":22,\"showStockPrice\":true,\"currentWeight\":0E-12,\"currentStock\":519203.000000,\"rows\":[{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"成品\",\"color\":\"\",\"currentStock\":7223.000000,\"currentStockMovePrice\":2293302.500000000000,\"currentStockPrice\":2293302.500000000000,\"currentUnitPrice\":317.500000,\"currentWeight\":0E-12,\"id\":704,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"3PH-APEC3-WC\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"3PH APEC3-WC\",\"name\":\"3PH APEC3-WC\",\"position\":\"\",\"purchaseDecimal\":317.500000,\"standard\":\"3PH APEC3-WC\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"成品\",\"color\":\"\",\"currentStock\":52400.000000,\"currentStockMovePrice\":3117800.000000000000,\"currentStockPrice\":3117800.000000000000,\"currentUnitPrice\":59.500000,\"currentWeight\":0E-12,\"id\":703,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"1PH-WS79\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"1PH WS79\",\"name\":\"1PH WS79\",\"position\":\"\",\"purchaseDecimal\":59.500000,\"standard\":\"1PH WS79\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":1000.000000,\"currentStockMovePrice\":24300.000000000000,\"currentStockPrice\":24300.000000000000,\"currentUnitPrice\":24.300000,\"currentWeight\":0E-12,\"id\":702,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00722\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-RS178(VA)\",\"name\":\"MD-RS178(VA) RS485分线器\",\"position\":\"\",\"purchaseDecimal\":24.300000,\"standard\":\"MD-RS178(VA)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":100.000000,\"currentStockMovePrice\":14256.000000000000,\"currentStockPrice\":14256.000000000000,\"currentUnitPrice\":142.560000,\"currentWeight\":0E-12,\"id\":701,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.0068900002\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-RS114(VB)\",\"name\":\"MD-RS114(VB) 基于RS485的MODBS TCPMODBS RTUASVII转换模块_(DZG)\",\"position\":\"\",\"purchaseDecimal\":142.560000,\"standard\":\"MD-RS114(VB)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":50.000000,\"currentStockMovePrice\":6642.000000000000,\"currentStockPrice\":6642.000000000000,\"currentUnitPrice\":132.840000,\"currentWeight\":0E-12,\"id\":700,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00686\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"TC160(VA)\",\"name\":\"TC160(VA) 通讯模块供电盒\",\"position\":\"\",\"purchaseDecimal\":132.840000,\"standard\":\"TC160(VA)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":76970.000000,\"currentStockMovePrice\":7697.000000000000,\"currentStockPrice\":7697.000000000000,\"currentUnitPrice\":0.100000,\"currentWeight\":0E-12,\"id\":699,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00654\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-4G111(VF)\",\"name\":\"MD-4G111(VF) 4G模块\",\"position\":\"\",\"purchaseDecimal\":0.100000,\"standard\":\"MD-4G111(VF)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":50.000000,\"currentStockMovePrice\":16200.000000000000,\"currentStockPrice\":16200.000000000000,\"currentUnitPrice\":324.000000,\"currentWeight\":0E-12,\"id\":698,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00562\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-4GVIII(VB)\",\"name\":\"MD-4GVIII(VB)\",\"position\":\"\",\"purchaseDecimal\":324.000000,\"standard\":\"MD-4GVIII(VB)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":500.000000,\"currentStockMovePrice\":64800.000000000000,\"currentStockPrice\":64800.000000000000,\"currentUnitPrice\":129.600000,\"currentWeight\":0E-12,\"id\":697,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00553\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MT-P109(VA)\",\"name\":\"MT-P109(VA)\",\"position\":\"\",\"purchaseDecimal\":129.600000,\"standard\":\"MT-P109(VA)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":54656.000000,\"currentStockMovePrice\":5465.600000000000,\"currentStockPrice\":5465.600000000000,\"currentUnitPrice\":0.100000,\"currentWeight\":0E-12,\"id\":696,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00547\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MT-3NSXL(VC)\",\"name\":\"MT-3NSXL(VC)RF通讯模块\",\"position\":\"\",\"purchaseDecimal\":0.100000,\"standard\":\"MT-3NSXL(VC)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":100.000000,\"currentStockMovePrice\":100375.200000000000,\"currentStockPrice\":100375.200000000000,\"currentUnitPrice\":1003.752000,\"currentWeight\":0E-12,\"id\":695,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00422\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-LR63(VB)\",\"name\":\"MD-LR63(VB)\",\"position\":\"\",\"purchaseDecimal\":1003.752000,\"standard\":\"MD-LR63(VB)\",\"unitName\":\"件\"}]}}'); +INSERT INTO `tbl_log` VALUES (9581, 63, '接口日志', '43.174.54.44/1.9.116.218', '2026-10-06 06:29:32', 0, 'MsgController.getList(..)', NULL, 'GET /apis/msg/list', '{\"search\":\"{\\\"name\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9582, 63, '接口日志', '43.152.142.84/1.9.116.218', '2026-10-06 06:29:32', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (9583, 63, '接口日志', '43.174.53.11/1.9.116.218', '2026-10-06 06:29:32', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9584, 63, '接口日志', '43.174.32.19/1.9.116.218', '2026-10-06 06:29:32', 0, 'DepotItemController.findDetailByDepotIdsAndMaterialId(..)', NULL, 'GET /apis/depotItem/findDetailByDepotIdsAndMaterialId', '{\"pageSize\":10,\"currentPage\":1,\"depotIds\":\"\",\"number\":\"\",\"beginTime\":\"\",\"endTime\":\"\",\"stockPriceFlag\":true}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9585, 63, '接口日志', '43.152.142.140/1.9.116.218', '2026-10-06 06:29:32', 0, 'MsgController.getMsgByStatus(..)', NULL, 'GET /apis/msg/getMsgByStatus', '{\"status\":\"1\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (9586, 63, '接口日志', '43.174.55.40/1.9.116.218', '2026-10-06 06:29:32', 0, 'DepotItemController.findDetailByDepotIdsAndMaterialId(..)', NULL, 'GET /apis/depotItem/findDetailByDepotIdsAndMaterialId', '{\"pageSize\":10,\"currentPage\":1,\"depotIds\":\"\",\"number\":\"\",\"beginTime\":\"\",\"endTime\":\"\",\"stockPriceFlag\":false}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9587, 63, '接口日志', '43.152.142.45/1.9.116.218', '2026-10-06 06:29:41', 0, 'MaterialController.getListWithStock(..)', NULL, 'GET /apis/material/getListWithStock', '{\"currentPage\":2,\"pageSize\":10,\"position\":\"\",\"materialParam\":\"\",\"zeroStock\":0,\"column\":\"createTime\",\"order\":\"desc\"}', '{\"code\":200,\"data\":{\"currentStockPrice\":107372523.170000000000,\"moveAvgPriceFlag\":false,\"total\":22,\"showStockPrice\":true,\"currentWeight\":0E-12,\"currentStock\":519203.000000,\"rows\":[{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":200.000000,\"currentStockMovePrice\":66938.400000000000,\"currentStockPrice\":66938.400000000000,\"currentUnitPrice\":334.692000,\"currentWeight\":0E-12,\"id\":694,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00421\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-LR62(VB)\",\"name\":\"MD-LR62(VB)\",\"position\":\"\",\"purchaseDecimal\":334.692000,\"standard\":\"MD-LR62(VB)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":34473.000000,\"currentStockMovePrice\":27476359.920000000000,\"currentStockPrice\":27476359.920000000000,\"currentUnitPrice\":797.040000,\"currentWeight\":0E-12,\"id\":693,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.3.T.0.00038\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DTSD1226-T46(VJ)\",\"name\":\"三相四线多功能电能表T46(VJ)\",\"position\":\"\",\"purchaseDecimal\":797.040000,\"standard\":\"DTSD1226-T46(VJ)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":500.000000,\"currentStockMovePrice\":275400.000000000000,\"currentStockPrice\":275400.000000000000,\"currentUnitPrice\":550.800000,\"currentWeight\":0E-12,\"id\":692,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.3.T.0.00036\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DTSD1226-T46(VH)\",\"name\":\"三相四线多功能电能表T46(VH)\",\"position\":\"\",\"purchaseDecimal\":550.800000,\"standard\":\"DTSD1226-T46(VH)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":14460.000000,\"currentStockMovePrice\":7027560.000000000000,\"currentStockPrice\":7027560.000000000000,\"currentUnitPrice\":486.000000,\"currentWeight\":0E-12,\"id\":691,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.3.T.0.00030\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DTSD1226-T46(VC)\",\"name\":\"三相四线多功能电能表T46(VC)\",\"position\":\"\",\"purchaseDecimal\":486.000000,\"standard\":\"DTSD1226-T46(VC)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":13070.000000,\"currentStockMovePrice\":6775488.000000000000,\"currentStockPrice\":6775488.000000000000,\"currentUnitPrice\":518.400000,\"currentWeight\":0E-12,\"id\":690,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.3.S.0.00030\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DTSD1226-SXVI(VK)\",\"name\":\"三相四线多功能电能表SXVI(VK)-新\",\"position\":\"\",\"purchaseDecimal\":518.400000,\"standard\":\"DTSD1226-SXVI(VK)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":120.000000,\"currentStockMovePrice\":82814.400000000000,\"currentStockPrice\":82814.400000000000,\"currentUnitPrice\":690.120000,\"currentWeight\":0E-12,\"id\":689,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.3.S.0.00026\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DTSD1226-SXVI(VH)\",\"name\":\"三相四线多功能电能表SXVI(VH)-新\",\"position\":\"\",\"purchaseDecimal\":690.120000,\"standard\":\"DTSD1226-SXVI(VH)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":400.000000,\"currentStockMovePrice\":245592.000000000000,\"currentStockPrice\":245592.000000000000,\"currentUnitPrice\":613.980000,\"currentWeight\":0E-12,\"id\":688,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.3.S.0.00020\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DTSD1226-SXVI(VG)\",\"name\":\"三相四线多功能电能表SXVI(VG)-新\",\"position\":\"\",\"purchaseDecimal\":613.980000,\"standard\":\"DTSD1226-SXVI(VG)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":48041.000000,\"currentStockMovePrice\":23153359.950000000000,\"currentStockPrice\":23153359.950000000000,\"currentUnitPrice\":481.950000,\"currentWeight\":0E-12,\"id\":687,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.3.C.2.00025\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DTSD1226-CXVI(VA)\",\"name\":\"三相四线多功能电能表CXVI(VA)-新\",\"position\":\"\",\"purchaseDecimal\":481.950000,\"standard\":\"DTSD1226-CXVI(VA)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":42490.000000,\"currentStockMovePrice\":17139616.200000000000,\"currentStockPrice\":17139616.200000000000,\"currentUnitPrice\":403.380000,\"currentWeight\":0E-12,\"id\":686,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.1.T.0.0004500005\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DDSD1226-T49(VH)\",\"name\":\"单相多功能电能表T49(VH)_(马来市场)\",\"position\":\"\",\"purchaseDecimal\":403.380000,\"standard\":\"DDSD1226-T49(VH)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":40000.000000,\"currentStockMovePrice\":8748000.000000000000,\"currentStockPrice\":8748000.000000000000,\"currentUnitPrice\":218.700000,\"currentWeight\":0E-12,\"id\":685,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.1.T.0.00032\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DDSD1226-T49(VB)\",\"name\":\"单相多功能电能表T49(VB)\",\"position\":\"\",\"purchaseDecimal\":218.700000,\"standard\":\"DDSD1226-T49(VB)\",\"unitName\":\"件\"}]}}'); +INSERT INTO `tbl_log` VALUES (9588, 63, '接口日志', '43.174.52.31/1.9.116.218', '2026-10-06 06:30:57', 0, 'MaterialController.getListWithStock(..)', NULL, 'GET /apis/material/getListWithStock', '{\"currentPage\":2,\"pageSize\":10,\"position\":\"\",\"materialParam\":\"\",\"zeroStock\":0,\"column\":\"currentStockPrice\",\"order\":\"asc\"}', '{\"code\":200,\"data\":{\"currentStockPrice\":107372523.170000000000,\"moveAvgPriceFlag\":false,\"total\":22,\"showStockPrice\":true,\"currentWeight\":0E-12,\"currentStock\":519203.000000,\"rows\":[{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":400.000000,\"currentStockMovePrice\":245592.000000000000,\"currentStockPrice\":245592.000000000000,\"currentUnitPrice\":613.980000,\"currentWeight\":0E-12,\"id\":688,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.3.S.0.00020\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DTSD1226-SXVI(VG)\",\"name\":\"三相四线多功能电能表SXVI(VG)-新\",\"position\":\"\",\"purchaseDecimal\":613.980000,\"standard\":\"DTSD1226-SXVI(VG)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":500.000000,\"currentStockMovePrice\":275400.000000000000,\"currentStockPrice\":275400.000000000000,\"currentUnitPrice\":550.800000,\"currentWeight\":0E-12,\"id\":692,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.3.T.0.00036\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DTSD1226-T46(VH)\",\"name\":\"三相四线多功能电能表T46(VH)\",\"position\":\"\",\"purchaseDecimal\":550.800000,\"standard\":\"DTSD1226-T46(VH)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":20000.000000,\"currentStockMovePrice\":1717200.000000000000,\"currentStockPrice\":1717200.000000000000,\"currentUnitPrice\":85.860000,\"currentWeight\":0E-12,\"id\":683,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.1.C.2.00021\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DDS1226-C8(VD)\",\"name\":\"单相有功电能表C8(VD)\",\"position\":\"\",\"purchaseDecimal\":85.860000,\"standard\":\"DDS1226-C8(VD)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"成品\",\"color\":\"\",\"currentStock\":7223.000000,\"currentStockMovePrice\":2293302.500000000000,\"currentStockPrice\":2293302.500000000000,\"currentUnitPrice\":317.500000,\"currentWeight\":0E-12,\"id\":704,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"3PH-APEC3-WC\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"3PH APEC3-WC\",\"name\":\"3PH APEC3-WC\",\"position\":\"\",\"purchaseDecimal\":317.500000,\"standard\":\"3PH APEC3-WC\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"成品\",\"color\":\"\",\"currentStock\":52400.000000,\"currentStockMovePrice\":3117800.000000000000,\"currentStockPrice\":3117800.000000000000,\"currentUnitPrice\":59.500000,\"currentWeight\":0E-12,\"id\":703,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"1PH-WS79\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"1PH WS79\",\"name\":\"1PH WS79\",\"position\":\"\",\"purchaseDecimal\":59.500000,\"standard\":\"1PH WS79\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":13070.000000,\"currentStockMovePrice\":6775488.000000000000,\"currentStockPrice\":6775488.000000000000,\"currentUnitPrice\":518.400000,\"currentWeight\":0E-12,\"id\":690,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.3.S.0.00030\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DTSD1226-SXVI(VK)\",\"name\":\"三相四线多功能电能表SXVI(VK)-新\",\"position\":\"\",\"purchaseDecimal\":518.400000,\"standard\":\"DTSD1226-SXVI(VK)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":14460.000000,\"currentStockMovePrice\":7027560.000000000000,\"currentStockPrice\":7027560.000000000000,\"currentUnitPrice\":486.000000,\"currentWeight\":0E-12,\"id\":691,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.3.T.0.00030\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DTSD1226-T46(VC)\",\"name\":\"三相四线多功能电能表T46(VC)\",\"position\":\"\",\"purchaseDecimal\":486.000000,\"standard\":\"DTSD1226-T46(VC)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":40000.000000,\"currentStockMovePrice\":8748000.000000000000,\"currentStockPrice\":8748000.000000000000,\"currentUnitPrice\":218.700000,\"currentWeight\":0E-12,\"id\":685,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.1.T.0.00032\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DDSD1226-T49(VB)\",\"name\":\"单相多功能电能表T49(VB)\",\"position\":\"\",\"purchaseDecimal\":218.700000,\"standard\":\"DDSD1226-T49(VB)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":112400.000000,\"currentStockMovePrice\":9013356.000000000000,\"currentStockPrice\":9013356.000000000000,\"currentUnitPrice\":80.190000,\"currentWeight\":0E-12,\"id\":684,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.1.C.2.00023\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DDS1226-C8(VG)\",\"name\":\"单相有功电能表C8(VG)\",\"position\":\"\",\"purchaseDecimal\":80.190000,\"standard\":\"DDS1226-C8(VG)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":42490.000000,\"currentStockMovePrice\":17139616.200000000000,\"currentStockPrice\":17139616.200000000000,\"currentUnitPrice\":403.380000,\"currentWeight\":0E-12,\"id\":686,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.1.T.0.0004500005\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DDSD1226-T49(VH)\",\"name\":\"单相多功能电能表T49(VH)_(马来市场)\",\"position\":\"\",\"purchaseDecimal\":403.380000,\"standard\":\"DDSD1226-T49(VH)\",\"unitName\":\"件\"}]}}'); +INSERT INTO `tbl_log` VALUES (9589, NULL, '接口日志', '43.152.142.68/1.9.116.218', '2026-10-06 06:31:00', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (9590, NULL, '接口日志', '43.152.142.110/1.9.116.218', '2026-10-06 06:31:00', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (9591, 63, '接口日志', '43.168.32.240/1.9.116.218', '2026-10-06 06:31:00', 0, 'FunctionController.findMenuByPNumber(..)', NULL, 'POST /apis/function/findMenuByPNumber', '{\"jsonObject\":{\"userId\":63,\"pNumber\":0}}', '[{\"component\":\"/layouts/TabLayout\",\"icon\":\"home\",\"id\":0,\"text\":\"首页\",\"url\":\"/dashboard/analysis\",\"textEn\":\"Home\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/SaleOrderList\",\"icon\":\"profile\",\"id\":242,\"text\":\"销售订单\",\"url\":\"/bill/sale_order\",\"textEn\":\"Sales Orders\"},{\"component\":\"/bill/SaleOutList\",\"icon\":\"profile\",\"id\":41,\"text\":\"销售出库\",\"url\":\"/bill/sale_out\",\"textEn\":\"Sales Shipments\"},{\"component\":\"/bill/DeliveryPlanList\",\"icon\":\"profile\",\"id\":271,\"text\":\"交货计划管理\",\"url\":\"/bill/delivery_plan\",\"textEn\":\"Delivery Plans\"},{\"component\":\"/bill/SaleShipmentList\",\"icon\":\"car\",\"id\":268,\"text\":\"发货管理\",\"url\":\"/bill/sale_shipment\",\"textEn\":\"Shipment Management\"},{\"component\":\"/bill/SaleBackList\",\"icon\":\"profile\",\"id\":200,\"text\":\"销售退货\",\"url\":\"/bill/sale_back\",\"textEn\":\"Sales Returns\"},{\"component\":\"/bill/RetailOutList\",\"icon\":\"profile\",\"id\":210,\"text\":\"零售出库\",\"url\":\"/bill/retail_out\",\"textEn\":\"Retail Shipments\"},{\"component\":\"/bill/RetailBackList\",\"icon\":\"profile\",\"id\":211,\"text\":\"零售退货\",\"url\":\"/bill/retail_back\",\"textEn\":\"Retail Returns\"}],\"icon\":\"shopping-cart\",\"id\":38,\"text\":\"销售管理\",\"url\":\"/billB\",\"textEn\":\"Sales Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/PurchaseApplyList\",\"icon\":\"profile\",\"id\":261,\"text\":\"请购单\",\"url\":\"/bill/purchase_apply\",\"textEn\":\"Purchase Requisitions\"},{\"component\":\"/bill/PurchaseOrderList\",\"icon\":\"profile\",\"id\":241,\"text\":\"采购订单\",\"url\":\"/bill/purchase_order\",\"textEn\":\"Purchase Orders\"},{\"component\":\"/bill/PurchaseInList\",\"icon\":\"profile\",\"id\":33,\"text\":\"采购入库\",\"url\":\"/bill/purchase_in\",\"textEn\":\"Purchase Receipts\"},{\"component\":\"/bill/PurchaseBackList\",\"icon\":\"profile\",\"id\":199,\"text\":\"采购退货\",\"url\":\"/bill/purchase_back\",\"textEn\":\"Purchase Returns\"}],\"icon\":\"retweet\",\"id\":32,\"text\":\"采购管理\",\"url\":\"/bill\",\"textEn\":\"Purchase Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/production/PackBomList\",\"icon\":\"profile\",\"id\":263,\"text\":\"生产方案\",\"url\":\"/production/pack_bom\",\"textEn\":\"Production BOMs\"},{\"component\":\"/production/OrderList\",\"icon\":\"profile\",\"id\":264,\"text\":\"生产工单\",\"url\":\"/production/order\",\"textEn\":\"Production Orders\"},{\"component\":\"/production/RequisitionList\",\"icon\":\"profile\",\"id\":265,\"text\":\"领料管理\",\"url\":\"/production/requisition\",\"textEn\":\"Material Requisitions\"},{\"component\":\"/production/ReportList\",\"icon\":\"profile\",\"id\":266,\"text\":\"完工报工\",\"url\":\"/production/report\",\"textEn\":\"Production Reports\"}],\"icon\":\"cluster\",\"id\":262,\"text\":\"生产管理\",\"url\":\"/production\",\"textEn\":\"Production Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/MaterialStock\",\"icon\":\"profile\",\"id\":246,\"text\":\"商品库存\",\"url\":\"/report/material_stock\",\"textEn\":\"Product Inventory\"},{\"component\":\"/bill/OtherInList\",\"icon\":\"profile\",\"id\":201,\"text\":\"其它入库\",\"url\":\"/bill/other_in\",\"textEn\":\"Other Receipts\"},{\"component\":\"/bill/OtherOutList\",\"icon\":\"profile\",\"id\":202,\"text\":\"其它出库\",\"url\":\"/bill/other_out\",\"textEn\":\"Other Shipments\"},{\"component\":\"/bill/HeadquartersInList\",\"icon\":\"profile\",\"id\":270,\"text\":\"总部入库\",\"url\":\"/bill/headquarters_in\",\"textEn\":\"Headquarters Receipts\"}],\"icon\":\"hdd\",\"id\":239,\"text\":\"仓库管理\",\"url\":\"/billD\",\"textEn\":\"Warehouse Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/financial/MoneyInList\",\"icon\":\"profile\",\"id\":204,\"text\":\"收款单\",\"url\":\"/financial/money_in\",\"textEn\":\"Receipt Vouchers\"},{\"component\":\"/financial/MoneyOutList\",\"icon\":\"profile\",\"id\":205,\"text\":\"付款单\",\"url\":\"/financial/money_out\",\"textEn\":\"Payment Vouchers\"}],\"icon\":\"money-collect\",\"id\":44,\"text\":\"财务管理\",\"url\":\"/financial\",\"textEn\":\"Finance Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/asset/AssetDashboard\",\"icon\":\"dashboard\",\"id\":276,\"text\":\"资产汇总\",\"url\":\"/asset\",\"textEn\":\"Asset Overview\"},{\"component\":\"/asset/AssetList\",\"icon\":\"profile\",\"id\":273,\"text\":\"资产台账\",\"url\":\"/asset/ledger\",\"textEn\":\"Asset Ledger\"},{\"component\":\"/asset/DeviceList\",\"icon\":\"tool\",\"id\":274,\"text\":\"设备台账\",\"url\":\"/asset/device\",\"textEn\":\"Device Ledger\"},{\"component\":\"/asset/InventoryList\",\"icon\":\"scan\",\"id\":275,\"text\":\"资产盘点\",\"url\":\"/asset/inventory\",\"textEn\":\"Asset Inventory\"}],\"icon\":\"bank\",\"id\":272,\"text\":\"资产管理\",\"url\":\"/assetManagement\",\"textEn\":\"Asset Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/material/MaterialCategoryList\",\"icon\":\"profile\",\"id\":22,\"text\":\"商品类别\",\"url\":\"/material/material_category\",\"textEn\":\"Product Categories\"},{\"component\":\"/material/MaterialList\",\"icon\":\"profile\",\"id\":23,\"text\":\"商品信息\",\"url\":\"/material/material\",\"textEn\":\"Product Information\"},{\"component\":\"/system/UnitList\",\"icon\":\"profile\",\"id\":220,\"text\":\"多单位\",\"url\":\"/system/unit\",\"textEn\":\"Multiple Units\"},{\"component\":\"/material/MaterialAttributeList\",\"icon\":\"profile\",\"id\":247,\"text\":\"多属性\",\"url\":\"/material/material_attribute\",\"textEn\":\"Product Attributes\"}],\"icon\":\"shopping\",\"id\":21,\"text\":\"商品管理\",\"url\":\"/material\",\"textEn\":\"Product Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/AccountReport\",\"icon\":\"profile\",\"id\":207,\"text\":\"账户统计\",\"url\":\"/report/account_report\",\"textEn\":\"Account Summary\"},{\"component\":\"/report/RetailOutReport\",\"icon\":\"profile\",\"id\":259,\"text\":\"零售统计\",\"url\":\"/report/retail_out_report\",\"textEn\":\"Retail Summary\"},{\"component\":\"/report/BuyInReport\",\"icon\":\"profile\",\"id\":208,\"text\":\"采购统计\",\"url\":\"/report/buy_in_report\",\"textEn\":\"Purchase Summary\"},{\"component\":\"/report/SaleOutReport\",\"icon\":\"profile\",\"id\":209,\"text\":\"销售统计\",\"url\":\"/report/sale_out_report\",\"textEn\":\"Sales Summary\"},{\"component\":\"/report/InDetail\",\"icon\":\"profile\",\"id\":226,\"text\":\"入库明细\",\"url\":\"/report/in_detail\",\"textEn\":\"Inbound Details\"},{\"component\":\"/report/OutDetail\",\"icon\":\"profile\",\"id\":227,\"text\":\"出库明细\",\"url\":\"/report/out_detail\",\"textEn\":\"Outbound Details\"},{\"component\":\"/report/InMaterialCount\",\"icon\":\"profile\",\"id\":228,\"text\":\"入库汇总\",\"url\":\"/report/in_material_count\",\"textEn\":\"Inbound Summary\"},{\"component\":\"/report/OutMaterialCount\",\"icon\":\"profile\",\"id\":229,\"text\":\"出库汇总\",\"url\":\"/report/out_material_count\",\"textEn\":\"Outbound Summary\"},{\"component\":\"/report/InOutStockReport\",\"icon\":\"profile\",\"id\":59,\"text\":\"进销存统计\",\"url\":\"/report/in_out_stock_report\",\"textEn\":\"Inventory Transaction Summary\"},{\"component\":\"/report/CustomerAccount\",\"icon\":\"profile\",\"id\":235,\"text\":\"客户对账\",\"url\":\"/report/customer_account\",\"textEn\":\"Customer Reconciliation\"},{\"component\":\"/report/VendorAccount\",\"icon\":\"profile\",\"id\":237,\"text\":\"供应商对账\",\"url\":\"/report/vendor_account\",\"textEn\":\"Supplier Reconciliation\"},{\"component\":\"/report/StockWarningReport\",\"icon\":\"profile\",\"id\":244,\"text\":\"库存预警\",\"url\":\"/report/stock_warning_report\",\"textEn\":\"Stock Alerts\"}],\"icon\":\"pie-chart\",\"id\":198,\"text\":\"报表查询\",\"url\":\"/report\",\"textEn\":\"Reports\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/VendorList\",\"icon\":\"profile\",\"id\":25,\"text\":\"供应商信息\",\"url\":\"/system/vendor\",\"textEn\":\"Suppliers\"},{\"component\":\"/system/CustomerList\",\"icon\":\"profile\",\"id\":217,\"text\":\"客户信息\",\"url\":\"/system/customer\",\"textEn\":\"Customers\"},{\"component\":\"/system/MemberList\",\"icon\":\"profile\",\"id\":218,\"text\":\"会员信息\",\"url\":\"/system/member\",\"textEn\":\"Members\"},{\"component\":\"/system/CustomerCategoryList\",\"icon\":\"bars\",\"id\":267,\"text\":\"客户分类\",\"url\":\"/system/customerCategory\",\"textEn\":\"Customer Categories\"},{\"component\":\"/system/DepotList\",\"icon\":\"profile\",\"id\":26,\"text\":\"仓库信息\",\"url\":\"/system/depot\",\"textEn\":\"Warehouses\"},{\"component\":\"/system/InOutItemList\",\"icon\":\"profile\",\"id\":194,\"text\":\"收支项目\",\"url\":\"/system/in_out_item\",\"textEn\":\"Income and Expense Items\"},{\"component\":\"/system/AccountList\",\"icon\":\"profile\",\"id\":195,\"text\":\"结算账户\",\"url\":\"/system/account\",\"textEn\":\"Settlement Accounts\"},{\"component\":\"/system/PersonList\",\"icon\":\"profile\",\"id\":31,\"text\":\"操作人员管理\",\"url\":\"/system/person\",\"textEn\":\"Operators\"}],\"icon\":\"appstore\",\"id\":24,\"text\":\"基础资料\",\"url\":\"/systemA\",\"textEn\":\"Master Data\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/RoleList\",\"icon\":\"profile\",\"id\":13,\"text\":\"角色管理\",\"url\":\"/system/role\",\"textEn\":\"Role Management\"},{\"component\":\"/system/UserList\",\"icon\":\"profile\",\"id\":14,\"text\":\"用户管理\",\"url\":\"/system/user\",\"textEn\":\"User Management\"},{\"component\":\"/system/OrganizationList\",\"icon\":\"profile\",\"id\":243,\"text\":\"部门管理\",\"url\":\"/system/organization\",\"textEn\":\"Department Management\"},{\"component\":\"/system/LogList\",\"icon\":\"profile\",\"id\":15,\"text\":\"日志管理\",\"url\":\"/system/log\",\"textEn\":\"Log Management\"},{\"component\":\"/material/MaterialPropertyList\",\"icon\":\"profile\",\"id\":236,\"text\":\"商品属性\",\"url\":\"/material/material_property\",\"textEn\":\"Product Properties\"},{\"component\":\"/system/SystemConfigList\",\"icon\":\"profile\",\"id\":234,\"text\":\"系统配置\",\"url\":\"/system/system_config\",\"textEn\":\"System Configuration\"},{\"component\":\"/system/FunctionList\",\"icon\":\"profile\",\"id\":16,\"text\":\"菜单管理\",\"url\":\"/system/function\",\"textEn\":\"Resource Menus\"},{\"component\":\"/system/PluginList\",\"icon\":\"profile\",\"id\":245,\"text\":\"插件管理\",\"url\":\"/system/plugin\",\"textEn\":\"Plugin Management\"},{\"component\":\"/system/DictList\",\"icon\":\"profile\",\"id\":260,\"text\":\"字典管理\",\"url\":\"/system/dict\",\"textEn\":\"Dictionary Management\"},{\"component\":\"/system/PlatformConfigList\",\"icon\":\"profile\",\"id\":258,\"text\":\"平台配置\",\"url\":\"/system/platform_config\",\"textEn\":\"Platform Configuration\"}],\"icon\":\"setting\",\"id\":1,\"text\":\"系统管理\",\"url\":\"/system\",\"textEn\":\"System Management\"}]'); +INSERT INTO `tbl_log` VALUES (9592, 63, '接口日志', '43.174.32.19/1.9.116.218', '2026-10-06 06:31:00', 0, 'UserController.getUserBtnByCurrentUser(..)', NULL, 'GET /apis/user/getUserBtnByCurrentUser', '{}', '{\"code\":200,\"data\":{\"userBtn\":[{\"btnStr\":\"8,1\",\"url\":\"/system/role\"},{\"btnStr\":\"1\",\"url\":\"/system/user\"},{\"btnStr\":\"1\",\"url\":\"/system/organization\"},{\"btnStr\":\"1\",\"url\":\"/material/material_property\"},{\"btnStr\":\"1\",\"url\":\"/system/system_config\"},{\"btnStr\":\"1\",\"url\":\"/system/function\"},{\"btnStr\":\"1\",\"url\":\"/system/plugin\"},{\"btnStr\":\"1\",\"url\":\"/material/material_category\"},{\"btnStr\":\"1,3\",\"url\":\"/material/material\"},{\"btnStr\":\"1\",\"url\":\"/system/unit\"},{\"btnStr\":\"1\",\"url\":\"/material/material_attribute\"},{\"btnStr\":\"1,3\",\"url\":\"/system/vendor\"},{\"btnStr\":\"1,3\",\"url\":\"/system/customer\"},{\"btnStr\":\"1,3\",\"url\":\"/system/member\"},{\"btnStr\":\"1\",\"url\":\"/system/depot\"},{\"btnStr\":\"1\",\"url\":\"/system/in_out_item\"},{\"btnStr\":\"1\",\"url\":\"/system/account\"},{\"btnStr\":\"1\",\"url\":\"/system/person\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_apply\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_out\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/delivery_plan\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/sale_shipment\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_out\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/order\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/requisition\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/report\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/giro\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/advance_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/allocation_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/assemble\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/headquarters_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/disassemble\"}]}}'); +INSERT INTO `tbl_log` VALUES (9593, 63, '接口日志', '43.152.142.108/1.9.116.218', '2026-10-06 06:31:01', 0, 'MsgController.getList(..)', NULL, 'GET /apis/msg/list', '{\"search\":\"{\\\"name\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9594, 63, '接口日志', '43.174.32.33/1.9.116.218', '2026-10-06 06:31:01', 0, 'MaterialController.getListWithStock(..)', NULL, 'GET /apis/material/getListWithStock', '{\"currentPage\":1,\"pageSize\":10,\"position\":\"\",\"materialParam\":\"\",\"zeroStock\":0,\"column\":\"createTime\",\"order\":\"desc\"}', '{\"code\":200,\"data\":{\"currentStockPrice\":107372523.170000000000,\"moveAvgPriceFlag\":false,\"total\":22,\"showStockPrice\":true,\"currentWeight\":0E-12,\"currentStock\":519203.000000,\"rows\":[{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"成品\",\"color\":\"\",\"currentStock\":7223.000000,\"currentStockMovePrice\":2293302.500000000000,\"currentStockPrice\":2293302.500000000000,\"currentUnitPrice\":317.500000,\"currentWeight\":0E-12,\"id\":704,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"3PH-APEC3-WC\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"3PH APEC3-WC\",\"name\":\"3PH APEC3-WC\",\"position\":\"\",\"purchaseDecimal\":317.500000,\"standard\":\"3PH APEC3-WC\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"成品\",\"color\":\"\",\"currentStock\":52400.000000,\"currentStockMovePrice\":3117800.000000000000,\"currentStockPrice\":3117800.000000000000,\"currentUnitPrice\":59.500000,\"currentWeight\":0E-12,\"id\":703,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"1PH-WS79\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"1PH WS79\",\"name\":\"1PH WS79\",\"position\":\"\",\"purchaseDecimal\":59.500000,\"standard\":\"1PH WS79\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":1000.000000,\"currentStockMovePrice\":24300.000000000000,\"currentStockPrice\":24300.000000000000,\"currentUnitPrice\":24.300000,\"currentWeight\":0E-12,\"id\":702,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00722\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-RS178(VA)\",\"name\":\"MD-RS178(VA) RS485分线器\",\"position\":\"\",\"purchaseDecimal\":24.300000,\"standard\":\"MD-RS178(VA)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":100.000000,\"currentStockMovePrice\":14256.000000000000,\"currentStockPrice\":14256.000000000000,\"currentUnitPrice\":142.560000,\"currentWeight\":0E-12,\"id\":701,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.0068900002\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-RS114(VB)\",\"name\":\"MD-RS114(VB) 基于RS485的MODBS TCPMODBS RTUASVII转换模块_(DZG)\",\"position\":\"\",\"purchaseDecimal\":142.560000,\"standard\":\"MD-RS114(VB)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":50.000000,\"currentStockMovePrice\":6642.000000000000,\"currentStockPrice\":6642.000000000000,\"currentUnitPrice\":132.840000,\"currentWeight\":0E-12,\"id\":700,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00686\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"TC160(VA)\",\"name\":\"TC160(VA) 通讯模块供电盒\",\"position\":\"\",\"purchaseDecimal\":132.840000,\"standard\":\"TC160(VA)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":76970.000000,\"currentStockMovePrice\":7697.000000000000,\"currentStockPrice\":7697.000000000000,\"currentUnitPrice\":0.100000,\"currentWeight\":0E-12,\"id\":699,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00654\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-4G111(VF)\",\"name\":\"MD-4G111(VF) 4G模块\",\"position\":\"\",\"purchaseDecimal\":0.100000,\"standard\":\"MD-4G111(VF)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":50.000000,\"currentStockMovePrice\":16200.000000000000,\"currentStockPrice\":16200.000000000000,\"currentUnitPrice\":324.000000,\"currentWeight\":0E-12,\"id\":698,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00562\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-4GVIII(VB)\",\"name\":\"MD-4GVIII(VB)\",\"position\":\"\",\"purchaseDecimal\":324.000000,\"standard\":\"MD-4GVIII(VB)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":500.000000,\"currentStockMovePrice\":64800.000000000000,\"currentStockPrice\":64800.000000000000,\"currentUnitPrice\":129.600000,\"currentWeight\":0E-12,\"id\":697,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00553\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MT-P109(VA)\",\"name\":\"MT-P109(VA)\",\"position\":\"\",\"purchaseDecimal\":129.600000,\"standard\":\"MT-P109(VA)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":54656.000000,\"currentStockMovePrice\":5465.600000000000,\"currentStockPrice\":5465.600000000000,\"currentUnitPrice\":0.100000,\"currentWeight\":0E-12,\"id\":696,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00547\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MT-3NSXL(VC)\",\"name\":\"MT-3NSXL(VC)RF通讯模块\",\"position\":\"\",\"purchaseDecimal\":0.100000,\"standard\":\"MT-3NSXL(VC)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":100.000000,\"currentStockMovePrice\":100375.200000000000,\"currentStockPrice\":100375.200000000000,\"currentUnitPrice\":1003.752000,\"currentWeight\":0E-12,\"id\":695,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00422\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-LR63(VB)\",\"name\":\"MD-LR63(VB)\",\"position\":\"\",\"purchaseDecimal\":1003.752000,\"standard\":\"MD-LR63(VB)\",\"unitName\":\"件\"}]}}'); +INSERT INTO `tbl_log` VALUES (9595, 63, '接口日志', '43.152.142.31/1.9.116.218', '2026-10-06 06:31:01', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9596, 63, '接口日志', '43.174.55.40/1.9.116.218', '2026-10-06 06:31:01', 0, 'DepotItemController.findDetailByDepotIdsAndMaterialId(..)', NULL, 'GET /apis/depotItem/findDetailByDepotIdsAndMaterialId', '{\"pageSize\":10,\"currentPage\":1,\"depotIds\":\"\",\"number\":\"\",\"beginTime\":\"\",\"endTime\":\"\",\"stockPriceFlag\":true}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9597, 63, '接口日志', '43.174.53.19/1.9.116.218', '2026-10-06 06:31:01', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (9598, 63, '接口日志', '43.174.54.44/1.9.116.218', '2026-10-06 06:31:01', 0, 'DepotItemController.findDetailByDepotIdsAndMaterialId(..)', NULL, 'GET /apis/depotItem/findDetailByDepotIdsAndMaterialId', '{\"pageSize\":10,\"currentPage\":1,\"depotIds\":\"\",\"number\":\"\",\"beginTime\":\"\",\"endTime\":\"\",\"stockPriceFlag\":false}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9599, 63, '接口日志', '43.174.53.16/1.9.116.218', '2026-10-06 06:31:01', 0, 'MsgController.getMsgByStatus(..)', NULL, 'GET /apis/msg/getMsgByStatus', '{\"status\":\"1\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (9600, 63, '接口日志', '43.152.142.142/1.9.116.218', '2026-10-06 06:31:17', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (9601, 63, '接口日志', '43.174.32.14/1.9.116.218', '2026-10-06 06:31:17', 0, 'DepotItemController.findStockWarningCount(..)', NULL, 'GET /apis/depotItem/findStockWarningCount', '{\"currentPage\":1,\"pageSize\":10,\"materialParam\":\"\",\"mpList\":\"扩展1,扩展2,扩展3\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9602, 63, '接口日志', '43.152.142.84/1.9.116.218', '2026-10-06 06:31:17', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9603, 63, '接口日志', '43.174.32.12/1.9.116.218', '2026-10-06 06:31:27', 0, 'DepotItemController.findStockWarningCount(..)', NULL, 'GET /apis/depotItem/findStockWarningCount', '{\"currentPage\":1,\"pageSize\":10,\"materialParam\":\"\",\"mpList\":\"扩展1,扩展2,扩展3\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9604, 63, '接口日志', '43.174.53.48/1.9.116.218', '2026-10-06 06:31:28', 0, 'DepotItemController.findStockWarningCount(..)', NULL, 'GET /apis/depotItem/findStockWarningCount', '{\"currentPage\":1,\"pageSize\":10,\"materialParam\":\"\",\"mpList\":\"扩展1,扩展2,扩展3\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9605, 63, '接口日志', '43.152.142.62/1.9.116.218', '2026-10-06 06:31:31', 0, 'DepotItemController.findStockWarningCount(..)', NULL, 'GET /apis/depotItem/findStockWarningCount', '{\"currentPage\":1,\"pageSize\":10,\"materialParam\":\"\",\"mpList\":\"扩展1,扩展2,扩展3\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9606, 63, '接口日志', '43.168.32.240/1.9.116.218', '2026-10-06 06:32:05', 0, 'SupplierController.findBySelectSup(..)', NULL, 'POST /apis/supplier/findBySelect_sup', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司\",\"id\":89}]'); +INSERT INTO `tbl_log` VALUES (9607, 63, '接口日志', '43.152.142.128/1.9.116.218', '2026-10-06 06:32:05', 0, 'DepotHeadController.getStatementAccount(..)', NULL, 'GET /apis/depotHead/getStatementAccount', '{\"currentPage\":1,\"pageSize\":10,\"beginTime\":\"2026-07-06\",\"endTime\":\"2026-10-06\",\"hasDebt\":1,\"supplierType\":\"供应商\"}', '{\"code\":200,\"data\":{\"total\":1,\"firstMoney\":103509293.334800,\"lastMoney\":116500257.436400,\"rows\":[{\"allNeed\":116500257.436400,\"backMoney\":2139558.598400,\"beginNeed\":0.000000,\"contacts\":\"\",\"debtMoney\":15130522.700000,\"email\":\"\",\"id\":89,\"phoneNum\":\"\",\"preBackMoney\":10686582.135200,\"preDebtMoney\":114195875.470000,\"preNeed\":103509293.334800,\"preReturnDebtMoney\":0.000000,\"returnDebtMoney\":0.000000,\"supplier\":\"浙江瑞银电子有限公司\",\"telephone\":\"\"}]}}'); +INSERT INTO `tbl_log` VALUES (9608, 63, '接口日志', '43.168.32.240/1.9.116.218', '2026-10-06 06:32:06', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (9609, 63, '接口日志', '43.168.32.240/1.9.116.218', '2026-10-06 06:32:06', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (9610, 63, '接口日志', '43.152.142.84/1.9.116.218', '2026-10-06 06:32:06', 0, 'DepotHeadController.getStatementAccount(..)', NULL, 'GET /apis/depotHead/getStatementAccount', '{\"currentPage\":1,\"pageSize\":10,\"beginTime\":\"2026-07-06\",\"endTime\":\"2026-10-06\",\"hasDebt\":1,\"supplierType\":\"客户\"}', '{\"code\":200,\"data\":{\"total\":1,\"firstMoney\":13532266.000000,\"lastMoney\":12430066.000000,\"rows\":[{\"allNeed\":12430066.000000,\"backMoney\":4336200.000000,\"beginNeed\":0.000000,\"contacts\":\"\",\"debtMoney\":3234000.000000,\"email\":\"\",\"id\":90,\"phoneNum\":\"\",\"preBackMoney\":10677700.000000,\"preDebtMoney\":24209966.000000,\"preNeed\":13532266.000000,\"preReturnDebtMoney\":0.000000,\"returnDebtMoney\":0.000000,\"supplier\":\"TNB\",\"telephone\":\"\"}]}}'); +INSERT INTO `tbl_log` VALUES (9611, 63, '接口日志', '43.174.53.16/1.9.116.218', '2026-10-06 06:32:06', 0, 'CustomerCategoryController.getTreeList(..)', NULL, 'GET /apis/customerCategory/treeList', '{}', '{\"code\":200,\"data\":{\"data\":[],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9612, 63, '接口日志', '43.152.142.41/1.9.116.218', '2026-10-06 06:32:07', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9613, 63, '接口日志', '43.174.32.33/1.9.116.218', '2026-10-06 06:32:07', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (9614, 63, '接口日志', '43.174.32.12/1.9.116.218', '2026-10-06 06:32:07', 0, 'DepotItemController.getInOutStock(..)', NULL, 'GET /apis/depotItem/getInOutStock', '{\"currentPage\":1,\"pageSize\":10,\"beginTime\":\"2026-09-06\",\"endTime\":\"2026-10-06\",\"materialParam\":\"\",\"mpList\":\"扩展1,扩展2,扩展3\"}', '{\"code\":200,\"data\":{\"total\":23,\"rows\":[{\"unitPrice\":10.000000,\"materialModel\":\"MD-4G111(VF)\",\"unitName\":\"件\",\"thisSum\":0.000000,\"materialStandard\":\"MD-4G111(VF) packing\",\"outSum\":10000.000000,\"barCode\":\"1001\",\"bigUnitStock\":\"\",\"prevSum\":0.000000,\"imgName\":\"\",\"materialName\":\"MD-4G111(VF) 包装\",\"id\":705,\"inSum\":10000.000000,\"thisAllPrice\":0E-12},{\"unitPrice\":317.500000,\"materialMfrs\":\"浙江瑞银电子有限公司\",\"otherField1\":\"\",\"materialModel\":\"3PH APEC3-WC\",\"unitName\":\"件\",\"thisSum\":7372.000000,\"materialStandard\":\"3PH APEC3-WC\",\"materialColor\":\"\",\"materialBrand\":\"\",\"otherField3\":\"\",\"otherField2\":\"\",\"outSum\":0.000000,\"barCode\":\"3PH-APEC3-WC\",\"bigUnitStock\":\"\",\"prevSum\":7372.000000,\"imgName\":\"\",\"materialName\":\"3PH APEC3-WC\",\"id\":704,\"inSum\":0,\"thisAllPrice\":2340610.000000000000},{\"unitPrice\":59.500000,\"materialMfrs\":\"浙江瑞银电子有限公司\",\"otherField1\":\"\",\"materialModel\":\"1PH WS79\",\"unitName\":\"件\",\"thisSum\":52400.000000,\"materialStandard\":\"1PH WS79\",\"materialColor\":\"\",\"materialBrand\":\"\",\"otherField3\":\"\",\"otherField2\":\"\",\"outSum\":10000.000000,\"barCode\":\"1PH-WS79\",\"bigUnitStock\":\"\",\"prevSum\":52400.000000,\"imgName\":\"\",\"materialName\":\"1PH WS79\",\"id\":703,\"inSum\":10000.000000,\"thisAllPrice\":3117800.000000000000},{\"unitPrice\":24.300000,\"materialMfrs\":\"浙江瑞银电子有限公司\",\"otherField1\":\"\",\"materialModel\":\"MD-RS178(VA)\",\"unitName\":\"件\",\"thisSum\":1000.000000,\"materialStandard\":\"MD-RS178(VA)\",\"materialColor\":\"\",\"materialBrand\":\"\",\"otherField3\":\"\",\"otherField2\":\"\",\"outSum\":0.000000,\"barCode\":\"C.4.T.0.00722\",\"bigUnitStock\":\"\",\"prevSum\":1000.000000,\"imgName\":\"\",\"materialName\":\"MD-RS178(VA) RS485分线器\",\"id\":702,\"inSum\":0,\"thisAllPrice\":24300.000000000000},{\"unitPrice\":142.560000,\"materialMfrs\":\"浙江瑞银电子有限公司\",\"otherField1\":\"\",\"materialModel\":\"MD-RS114(VB)\",\"unitName\":\"件\",\"thisSum\":100.000000,\"materialStandard\":\"MD-RS114(VB)\",\"materialColor\":\"\",\"materialBrand\":\"\",\"otherField3\":\"\",\"otherField2\":\"\",\"outSum\":0.000000,\"barCode\":\"C.4.T.0.0068900002\",\"bigUnitStock\":\"\",\"prevSum\":100.000000,\"imgName\":\"\",\"materialName\":\"MD-RS114(VB) 基于RS485的MODBS TCPMODBS RTUASVII转换模块_(DZG)\",\"id\":701,\"inSum\":0,\"thisAllPrice\":14256.000000000000},{\"unitPrice\":132.840000,\"materialMfrs\":\"浙江瑞银电子有限公司\",\"otherField1\":\"\",\"materialModel\":\"TC160(VA)\",\"unitName\":\"件\",\"thisSum\":50.000000,\"materialStandard\":\"TC160(VA)\",\"materialColor\":\"\",\"materialBrand\":\"\",\"otherField3\":\"\",\"otherField2\":\"\",\"outSum\":0.000000,\"barCode\":\"C.4.T.0.00686\",\"bigUnitStock\":\"\",\"prevSum\":50.000000,\"imgName\":\"\",\"materialName\":\"TC160(VA) 通讯模块供电盒\",\"id\":700,\"inSum\":0,\"thisAllPrice\":6642.000000000000},{\"unitPrice\":0.100000,\"materialMfrs\":\"浙江瑞银电子有限公司\",\"otherField1\":\"\",\"materialModel\":\"MD-4G111(VF)\",\"unitName\":\"件\",\"thisSum\":76970.000000,\"materialStandard\":\"MD-4G111(VF)\",\"materialColor\":\"\",\"materialBrand\":\"\",\"otherField3\":\"\",\"otherField2\":\"\",\"outSum\":0.000000,\"barCode\":\"C.4.T.0.00654\",\"bigUnitStock\":\"\",\"prevSum\":76963.000000,\"imgName\":\"\",\"materialName\":\"MD-4G111(VF) 4G模块\",\"id\":699,\"inSum\":7.000000,\"thisAllPrice\":7697.000000000000},{\"unitPrice\":324.000000,\"materialMfrs\":\"浙江瑞银电子有限公司\",\"otherField1\":\"\",\"materialModel\":\"MD-4GVIII(VB)\",\"unitName\":\"件\",\"thisSum\":50.000000,\"materialStandard\":\"MD-4GVIII(VB)\",\"materialColor\":\"\",\"materialBrand\":\"\",\"otherField3\":\"\",\"otherField2\":\"\",\"outSum\":0.000000,\"barCode\":\"C.4.T.0.00562\",\"bigUnitStock\":\"\",\"prevSum\":50.000000,\"imgName\":\"\",\"materialName\":\"MD-4GVIII(VB)\",\"id\":698,\"inSum\":0,\"thisAllPrice\":16200.000000000000},{\"unitPrice\":129.600000,\"materialMfrs\":\"浙江瑞银电子有限公司\",\"otherField1\":\"\",\"materialModel\":\"MT-P109(VA)\",\"unitName\":\"件\",\"thisSum\":500.000000,\"materialStandard\":\"MT-P109(VA)\",\"materialColor\":\"\",\"materialBrand\":\"\",\"otherField3\":\"\",\"otherField2\":\"\",\"outSum\":0.000000,\"barCode\":\"C.4.T.0.00553\",\"bigUnitStock\":\"\",\"prevSum\":500.000000,\"imgName\":\"\",\"materialName\":\"MT-P109(VA)\",\"id\":697,\"inSum\":0,\"thisAllPrice\":64800.000000000000},{\"unitPrice\":0.100000,\"materialMfrs\":\"浙江瑞银电子有限公司\",\"otherField1\":\"\",\"materialModel\":\"MT-3NSXL(VC)\",\"unitName\":\"件\",\"thisSum\":54656.000000,\"materialStandard\":\"MT-3NSXL(VC)\",\"materialColor\":\"\",\"materialBrand\":\"\",\"otherField3\":\"\",\"otherField2\":\"\",\"outSum\":0.000000,\"barCode\":\"C.4.T.0.00547\",\"bigUnitStock\":\"\",\"prevSum\":54656.000000,\"imgName\":\"\",\"materialName\":\"MT-3NSXL(VC)RF通讯模块\",\"id\":696,\"inSum\":0,\"thisAllPrice\":5465.600000000000}]}}'); +INSERT INTO `tbl_log` VALUES (9615, 63, '接口日志', '43.152.142.34/1.9.116.218', '2026-10-06 06:32:07', 0, 'DepotItemController.getInOutStockCountMoney(..)', NULL, 'GET /apis/depotItem/getInOutStockCountMoney', '{\"endTime\":\"2026-10-06\",\"materialParam\":\"\"}', '{\"code\":200,\"data\":{\"showStockPrice\":true,\"totalStock\":519352.000000,\"totalCount\":107419830.670000000000}}'); +INSERT INTO `tbl_log` VALUES (9616, 63, '接口日志', '43.168.32.240/1.9.116.218', '2026-10-06 06:32:08', 0, 'SupplierController.findBySelectOrgan(..)', NULL, 'POST /apis/supplier/findBySelect_organ', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司[供应商]\",\"id\":89},{\"supplier\":\"TNB[客户]\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (9617, 63, '接口日志', '43.174.53.48/1.9.116.218', '2026-10-06 06:32:08', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (9618, 63, '接口日志', '43.174.54.44/1.9.116.218', '2026-10-06 06:32:08', 0, 'OrganizationController.getAllOrganizationTreeByUser(..)', NULL, 'GET /apis/organization/getAllOrganizationTreeByUser', '{}', '[{\"children\":[{\"children\":[{\"children\":[],\"checked\":false,\"attributes\":\"12\",\"id\":14,\"state\":\"open\",\"title\":\"部门2\",\"value\":14,\"key\":14}],\"checked\":false,\"attributes\":\"jg1\",\"id\":13,\"state\":\"open\",\"title\":\"部门1\",\"value\":13,\"key\":13}],\"checked\":false,\"attributes\":\"001\",\"id\":12,\"state\":\"open\",\"title\":\"测试部门\",\"value\":12,\"key\":12}]'); +INSERT INTO `tbl_log` VALUES (9619, 63, '接口日志', '43.152.142.128/1.9.116.218', '2026-10-06 06:32:08', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9620, 63, '接口日志', '43.152.142.133/1.9.116.218', '2026-10-06 06:32:08', 0, 'DepotHeadController.findInOutMaterialCount(..)', NULL, 'GET /apis/depotHead/findInOutMaterialCount', '{\"currentPage\":1,\"pageSize\":10,\"materialParam\":\"\",\"beginTime\":\"2026-07-06\",\"endTime\":\"2026-10-06\",\"type\":\"出库\",\"column\":\"createTime\",\"order\":\"desc\"}', '{\"code\":200,\"data\":{\"total\":2,\"priceSumTotal\":2940000.000000,\"numSumTotal\":50000.000000,\"rows\":[{\"barCode\":\"1001\",\"categoryName\":\"包装\",\"mName\":\"MD-4G111(VF) 包装\",\"materialId\":705,\"materialUnit\":\"件\",\"model\":\"MD-4G111(VF)\",\"numSum\":10000.000000,\"priceSum\":0.000000,\"standard\":\"MD-4G111(VF) packing\"},{\"barCode\":\"1PH-WS79\",\"brand\":\"\",\"categoryName\":\"成品\",\"color\":\"\",\"mName\":\"1PH WS79\",\"materialId\":703,\"materialUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"1PH WS79\",\"numSum\":40000.000000,\"priceSum\":2940000.000000,\"standard\":\"1PH WS79\"}]}}'); +INSERT INTO `tbl_log` VALUES (9621, 63, '接口日志', '43.152.142.31/1.9.116.218', '2026-10-06 06:32:42', 0, 'DepotHeadController.findInOutMaterialCount(..)', NULL, 'GET /apis/depotHead/findInOutMaterialCount', '{\"currentPage\":1,\"pageSize\":10,\"materialParam\":\"\",\"beginTime\":\"2026-07-06\",\"endTime\":\"2026-10-06\",\"type\":\"出库\",\"column\":\"createTime\",\"order\":\"desc\"}', '{\"code\":200,\"data\":{\"total\":2,\"priceSumTotal\":2940000.000000,\"numSumTotal\":50000.000000,\"rows\":[{\"barCode\":\"1001\",\"categoryName\":\"包装\",\"mName\":\"MD-4G111(VF) 包装\",\"materialId\":705,\"materialUnit\":\"件\",\"model\":\"MD-4G111(VF)\",\"numSum\":10000.000000,\"priceSum\":0.000000,\"standard\":\"MD-4G111(VF) packing\"},{\"barCode\":\"1PH-WS79\",\"brand\":\"\",\"categoryName\":\"成品\",\"color\":\"\",\"mName\":\"1PH WS79\",\"materialId\":703,\"materialUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"1PH WS79\",\"numSum\":40000.000000,\"priceSum\":2940000.000000,\"standard\":\"1PH WS79\"}]}}'); +INSERT INTO `tbl_log` VALUES (9622, 63, '接口日志', '43.168.32.240/1.9.116.218', '2026-10-06 06:32:47', 0, 'SupplierController.findBySelectOrgan(..)', NULL, 'POST /apis/supplier/findBySelect_organ', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司[供应商]\",\"id\":89},{\"supplier\":\"TNB[客户]\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (9623, 63, '接口日志', '43.152.142.62/1.9.116.218', '2026-10-06 06:32:47', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (9624, 63, '接口日志', '43.152.142.110/1.9.116.218', '2026-10-06 06:32:47', 0, 'OrganizationController.getAllOrganizationTreeByUser(..)', NULL, 'GET /apis/organization/getAllOrganizationTreeByUser', '{}', '[{\"children\":[{\"children\":[{\"children\":[],\"checked\":false,\"attributes\":\"12\",\"id\":14,\"state\":\"open\",\"title\":\"部门2\",\"value\":14,\"key\":14}],\"checked\":false,\"attributes\":\"jg1\",\"id\":13,\"state\":\"open\",\"title\":\"部门1\",\"value\":13,\"key\":13}],\"checked\":false,\"attributes\":\"001\",\"id\":12,\"state\":\"open\",\"title\":\"测试部门\",\"value\":12,\"key\":12}]'); +INSERT INTO `tbl_log` VALUES (9625, 63, '接口日志', '43.152.142.140/1.9.116.218', '2026-10-06 06:32:47', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9626, 63, '接口日志', '43.152.142.142/1.9.116.218', '2026-10-06 06:32:47', 0, 'DepotHeadController.findInOutMaterialCount(..)', NULL, 'GET /apis/depotHead/findInOutMaterialCount', '{\"currentPage\":1,\"pageSize\":10,\"materialParam\":\"\",\"beginTime\":\"2026-07-06\",\"endTime\":\"2026-10-06\",\"type\":\"入库\",\"column\":\"createTime\",\"order\":\"desc\"}', '{\"code\":200,\"data\":{\"total\":7,\"priceSumTotal\":15130522.700000,\"numSumTotal\":102117.000000,\"rows\":[{\"barCode\":\"1001\",\"categoryName\":\"包装\",\"mName\":\"MD-4G111(VF) 包装\",\"materialId\":705,\"materialUnit\":\"件\",\"model\":\"MD-4G111(VF)\",\"numSum\":10000.000000,\"priceSum\":100000.000000,\"standard\":\"MD-4G111(VF) packing\"},{\"barCode\":\"1PH-WS79\",\"brand\":\"\",\"categoryName\":\"成品\",\"color\":\"\",\"mName\":\"1PH WS79\",\"materialId\":703,\"materialUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"1PH WS79\",\"numSum\":10000.000000,\"priceSum\":595000.000000,\"standard\":\"1PH WS79\"},{\"barCode\":\"C.4.T.0.00654\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"mName\":\"MD-4G111(VF) 4G模块\",\"materialId\":699,\"materialUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-4G111(VF)\",\"numSum\":7.000000,\"priceSum\":0.700000,\"standard\":\"MD-4G111(VF)\"},{\"barCode\":\"C.4.T.0.00547\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"mName\":\"MT-3NSXL(VC)RF通讯模块\",\"materialId\":696,\"materialUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MT-3NSXL(VC)\",\"numSum\":37520.000000,\"priceSum\":3752.000000,\"standard\":\"MT-3NSXL(VC)\"},{\"barCode\":\"C.3.T.0.00030\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"mName\":\"三相四线多功能电能表T46(VC)\",\"materialId\":691,\"materialUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DTSD1226-T46(VC)\",\"numSum\":10890.000000,\"priceSum\":5292540.000000,\"standard\":\"DTSD1226-T46(VC)\"},{\"barCode\":\"C.3.C.2.00025\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"mName\":\"三相四线多功能电能表CXVI(VA)-新\",\"materialId\":687,\"materialUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DTSD1226-CXVI(VA)\",\"numSum\":6720.000000,\"priceSum\":3238704.000000,\"standard\":\"DTSD1226-CXVI(VA)\"},{\"barCode\":\"C.1.T.0.00032\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"mName\":\"单相多功能电能表T49(VB)\",\"materialId\":685,\"materialUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DDSD1226-T49(VB)\",\"numSum\":26980.000000,\"priceSum\":5900526.000000,\"standard\":\"DDSD1226-T49(VB)\"}]}}'); +INSERT INTO `tbl_log` VALUES (9627, 63, '接口日志', '43.174.53.11/1.9.116.218', '2026-10-06 06:32:49', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9628, 63, '接口日志', '43.174.53.19/1.9.116.218', '2026-10-06 06:32:49', 0, 'OrganizationController.getAllOrganizationTreeByUser(..)', NULL, 'GET /apis/organization/getAllOrganizationTreeByUser', '{}', '[{\"children\":[{\"children\":[{\"children\":[],\"checked\":false,\"attributes\":\"12\",\"id\":14,\"state\":\"open\",\"title\":\"部门2\",\"value\":14,\"key\":14}],\"checked\":false,\"attributes\":\"jg1\",\"id\":13,\"state\":\"open\",\"title\":\"部门1\",\"value\":13,\"key\":13}],\"checked\":false,\"attributes\":\"001\",\"id\":12,\"state\":\"open\",\"title\":\"测试部门\",\"value\":12,\"key\":12}]'); +INSERT INTO `tbl_log` VALUES (9629, 63, '接口日志', '43.152.142.68/1.9.116.218', '2026-10-06 06:32:49', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (9630, 63, '接口日志', '43.152.142.108/1.9.116.218', '2026-10-06 06:32:49', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (9631, 63, '接口日志', '43.174.32.19/1.9.116.218', '2026-10-06 06:32:49', 0, 'DepotHeadController.findInOutDetail(..)', NULL, 'GET /apis/depotHead/findInOutDetail', '{\"currentPage\":1,\"pageSize\":10,\"number\":\"\",\"materialParam\":\"\",\"beginTime\":\"2026-07-06\",\"endTime\":\"2026-10-06\",\"type\":\"出库\",\"remark\":\"\",\"column\":\"createTime\",\"order\":\"desc\"}', '{\"code\":200,\"data\":{\"total\":33,\"operNumberTotal\":50000.000000,\"rows\":[{\"allPrice\":0.000000,\"barCode\":\"1001\",\"dname\":\"半成品仓库\",\"mUnit\":\"件\",\"mname\":\"MD-4G111(VF) 包装\",\"model\":\"MD-4G111(VF)\",\"newRemark\":\"\",\"newType\":\"生产领料出库\",\"number\":\"LL20260924134027104\",\"operNumber\":10000.000000,\"operTime\":\"2026-09-24\",\"sku\":\"\",\"standard\":\"MD-4G111(VF) packing\",\"taxLastMoney\":0.000000,\"taxMoney\":0.000000,\"taxRate\":0.000000,\"unitPrice\":0.000000},{\"allPrice\":735000.000000,\"barCode\":\"1PH-WS79\",\"brand\":\"\",\"color\":\"\",\"dname\":\"半成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"1PH WS79\",\"model\":\"1PH WS79\",\"newRemark\":\"\",\"newType\":\"销售出库\",\"number\":\"XSCK00000001728\",\"operNumber\":10000.000000,\"operTime\":\"2026-09-18\",\"sname\":\"TNB\",\"standard\":\"1PH WS79\",\"taxLastMoney\":808500.000000,\"taxMoney\":73500.000000,\"taxRate\":10.000000,\"unitPrice\":73.500000},{\"allPrice\":73500.000000,\"barCode\":\"1PH-WS79\",\"brand\":\"\",\"color\":\"\",\"dname\":\"成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"1PH WS79\",\"model\":\"1PH WS79\",\"newRemark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2159 \",\"newType\":\"销售出库\",\"number\":\"XSCK-INV_2159-86\",\"operNumber\":1000.000000,\"operTime\":\"2026-08-10\",\"sname\":\"TNB\",\"standard\":\"1PH WS79\",\"taxLastMoney\":80850.000000,\"taxMoney\":7350.000000,\"taxRate\":10.000000,\"unitPrice\":73.500000},{\"allPrice\":73500.000000,\"barCode\":\"1PH-WS79\",\"brand\":\"\",\"color\":\"\",\"dname\":\"成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"1PH WS79\",\"model\":\"1PH WS79\",\"newRemark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写 \",\"newType\":\"销售出库\",\"number\":\"XSCK-1PH-WS79-ADD1-87\",\"operNumber\":1000.000000,\"operTime\":\"2026-08-10\",\"sname\":\"TNB\",\"standard\":\"1PH WS79\",\"taxLastMoney\":80850.000000,\"taxMoney\":7350.000000,\"taxRate\":10.000000,\"unitPrice\":73.500000},{\"allPrice\":73500.000000,\"barCode\":\"1PH-WS79\",\"brand\":\"\",\"color\":\"\",\"dname\":\"成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"1PH WS79\",\"model\":\"1PH WS79\",\"newRemark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:DO_2158 \",\"newType\":\"销售出库\",\"number\":\"XSCK-DO_2158-85\",\"operNumber\":1000.000000,\"operTime\":\"2026-08-05\",\"sname\":\"TNB\",\"standard\":\"1PH WS79\",\"taxLastMoney\":80850.000000,\"taxMoney\":7350.000000,\"taxRate\":10.000000,\"unitPrice\":73.500000},{\"allPrice\":73500.000000,\"barCode\":\"1PH-WS79\",\"brand\":\"\",\"color\":\"\",\"dname\":\"成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"1PH WS79\",\"model\":\"1PH WS79\",\"newRemark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:DO_2157 \",\"newType\":\"销售出库\",\"number\":\"XSCK-DO_2157-83\",\"operNumber\":1000.000000,\"operTime\":\"2026-08-05\",\"sname\":\"TNB\",\"standard\":\"1PH WS79\",\"taxLastMoney\":80850.000000,\"taxMoney\":7350.000000,\"taxRate\":10.000000,\"unitPrice\":73.500000},{\"allPrice\":73500.000000,\"barCode\":\"1PH-WS79\",\"brand\":\"\",\"color\":\"\",\"dname\":\"成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"1PH WS79\",\"model\":\"1PH WS79\",\"newRemark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写 \",\"newType\":\"销售出库\",\"number\":\"XSCK-1PH-WS79-ADD1-84\",\"operNumber\":1000.000000,\"operTime\":\"2026-08-05\",\"sname\":\"TNB\",\"standard\":\"1PH WS79\",\"taxLastMoney\":80850.000000,\"taxMoney\":7350.000000,\"taxRate\":10.000000,\"unitPrice\":73.500000},{\"allPrice\":73500.000000,\"barCode\":\"1PH-WS79\",\"brand\":\"\",\"color\":\"\",\"dname\":\"成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"1PH WS79\",\"model\":\"1PH WS79\",\"newRemark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2150 \",\"newType\":\"销售出库\",\"number\":\"XSCK-INV_2150-69\",\"operNumber\":1000.000000,\"operTime\":\"2026-07-29\",\"sname\":\"TNB\",\"standard\":\"1PH WS79\",\"taxLastMoney\":80850.000000,\"taxMoney\":7350.000000,\"taxRate\":10.000000,\"unitPrice\":73.500000},{\"allPrice\":73500.000000,\"barCode\":\"1PH-WS79\",\"brand\":\"\",\"color\":\"\",\"dname\":\"成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"1PH WS79\",\"model\":\"1PH WS79\",\"newRemark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:do_2148 \",\"newType\":\"销售出库\",\"number\":\"XSCK-do_2148-60\",\"operNumber\":1000.000000,\"operTime\":\"2026-07-27\",\"sname\":\"TNB\",\"standard\":\"1PH WS79\",\"taxLastMoney\":80850.000000,\"taxMoney\":7350.000000,\"taxRate\":10.000000,\"unitPrice\":73.500000},{\"allPrice\":73500.000000,\"barCode\":\"1PH-WS79\",\"brand\":\"\",\"color\":\"\",\"dname\":\"成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"1PH WS79\",\"model\":\"1PH WS79\",\"newRemark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:do_2147 \",\"newType\":\"销售出库\",\"number\":\"XSCK-do_2147-59\",\"operNumber\":1000.000000,\"operTime\":\"2026-07-27\",\"sname\":\"TNB\",\"standard\":\"1PH WS79\",\"taxLastMoney\":80850.000000,\"taxMoney\":7350.000000,\"taxRate\":10.000000,\"unitPrice\":73.500000}],\"allPriceTotal\":2940000.000000}}'); +INSERT INTO `tbl_log` VALUES (9632, 63, '接口日志', '43.168.32.240/1.9.116.218', '2026-10-06 06:32:49', 0, 'SupplierController.findBySelectOrgan(..)', NULL, 'POST /apis/supplier/findBySelect_organ', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司[供应商]\",\"id\":89},{\"supplier\":\"TNB[客户]\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (9633, 63, '接口日志', '43.168.32.240/1.9.116.218', '2026-10-06 06:32:50', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (9634, 63, '接口日志', '43.174.55.40/1.9.116.218', '2026-10-06 06:32:50', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (9635, 63, '接口日志', '43.152.142.45/1.9.116.218', '2026-10-06 06:32:50', 0, 'DepotItemController.saleOut(..)', NULL, 'GET /apis/depotItem/saleOut', '{\"currentPage\":1,\"pageSize\":10,\"beginTime\":\"2026-07-06\",\"endTime\":\"2026-10-06\",\"materialParam\":\"\",\"mpList\":\"扩展1,扩展2,扩展3\"}', '{\"code\":200,\"data\":{\"total\":1,\"realityPriceTotal\":2940000.000000,\"rows\":[{\"outInSumPrice\":2940000.000000,\"otherField1\":\"\",\"materialMfrs\":\"浙江瑞银电子有限公司\",\"materialModel\":\"1PH WS79\",\"materialStandard\":\"1PH WS79\",\"materialColor\":\"\",\"materialBrand\":\"\",\"otherField3\":\"\",\"otherField2\":\"\",\"materialUnit\":\"件\",\"outSum\":40000.000000,\"barCode\":\"1PH-WS79\",\"materialName\":\"1PH WS79\",\"outSumPrice\":2940000.000000,\"inSum\":0.000000,\"inSumPrice\":0.000000}]}}'); +INSERT INTO `tbl_log` VALUES (9636, 63, '接口日志', '43.174.52.31/1.9.116.218', '2026-10-06 06:32:50', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9637, 63, '接口日志', '43.174.32.14/1.9.116.218', '2026-10-06 06:32:50', 0, 'OrganizationController.getAllOrganizationTreeByUser(..)', NULL, 'GET /apis/organization/getAllOrganizationTreeByUser', '{}', '[{\"children\":[{\"children\":[{\"children\":[],\"checked\":false,\"attributes\":\"12\",\"id\":14,\"state\":\"open\",\"title\":\"部门2\",\"value\":14,\"key\":14}],\"checked\":false,\"attributes\":\"jg1\",\"id\":13,\"state\":\"open\",\"title\":\"部门1\",\"value\":13,\"key\":13}],\"checked\":false,\"attributes\":\"001\",\"id\":12,\"state\":\"open\",\"title\":\"测试部门\",\"value\":12,\"key\":12}]'); +INSERT INTO `tbl_log` VALUES (9638, 63, '接口日志', '43.168.32.240/1.9.116.218', '2026-10-06 06:32:51', 0, 'SupplierController.findBySelectRetail(..)', NULL, 'POST /apis/supplier/findBySelect_retail', '{\"jsonObject\":{\"limit\":1}}', '[]'); +INSERT INTO `tbl_log` VALUES (9639, 63, '接口日志', '43.174.53.16/1.9.116.218', '2026-10-06 06:32:51', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9640, 63, '接口日志', '43.152.142.84/1.9.116.218', '2026-10-06 06:32:51', 0, 'DepotItemController.retailOut(..)', NULL, 'GET /apis/depotItem/retailOut', '{\"currentPage\":1,\"pageSize\":10,\"beginTime\":\"2026-07-06\",\"endTime\":\"2026-10-06\",\"materialParam\":\"\",\"mpList\":\"扩展1,扩展2,扩展3\"}', '{\"code\":200,\"data\":{\"total\":0,\"realityPriceTotal\":0.000000,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9641, 63, '接口日志', '43.174.32.33/1.9.116.218', '2026-10-06 06:32:51', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (9642, 63, '接口日志', '43.152.142.41/1.9.116.218', '2026-10-06 06:32:51', 0, 'OrganizationController.getAllOrganizationTreeByUser(..)', NULL, 'GET /apis/organization/getAllOrganizationTreeByUser', '{}', '[{\"children\":[{\"children\":[{\"children\":[],\"checked\":false,\"attributes\":\"12\",\"id\":14,\"state\":\"open\",\"title\":\"部门2\",\"value\":14,\"key\":14}],\"checked\":false,\"attributes\":\"jg1\",\"id\":13,\"state\":\"open\",\"title\":\"部门1\",\"value\":13,\"key\":13}],\"checked\":false,\"attributes\":\"001\",\"id\":12,\"state\":\"open\",\"title\":\"测试部门\",\"value\":12,\"key\":12}]'); +INSERT INTO `tbl_log` VALUES (9643, 63, '接口日志', '43.152.142.34/1.9.116.218', '2026-10-06 06:32:52', 0, 'AccountController.getStatistics(..)', NULL, 'GET /apis/account/getStatistics', '{\"name\":\"\",\"serialNo\":\"\"}', '{\"code\":200,\"data\":{\"allCurrentAmount\":\"4375818.53\",\"allMonthAmount\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9644, 63, '接口日志', '43.174.32.12/1.9.116.218', '2026-10-06 06:32:52', 0, 'AccountController.listWithBalance(..)', NULL, 'GET /apis/account/listWithBalance', '{\"name\":\"\",\"serialNo\":\"\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63,\"thisMonthAmount\":\"0\"},{\"currentAmount\":4375618.532800,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63,\"thisMonthAmount\":\"0\"}]}}'); +INSERT INTO `tbl_log` VALUES (9645, 63, '接口日志', '43.174.54.44/1.9.116.218', '2026-10-06 06:32:55', 0, 'AssetInventoryController.list(..)', NULL, 'GET /apis/assetInventory/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":4,\"rows\":[{\"abnormalCount\":0,\"auditTime\":1790003845000,\"auditUserId\":149,\"completedAt\":1790003836000,\"createTime\":1790003320000,\"creator\":149,\"deadline\":1790258400000,\"deleteFlag\":\"0\",\"id\":6,\"inventoriedCount\":1,\"inventoryNo\":\"PD20260921190840893\",\"inventoryUserId\":63,\"inventoryUserName\":\"admin\",\"normalCount\":1,\"planName\":\"2026年09月资产设备专项盘点\",\"plannedAt\":1790053200000,\"scopeType\":\"DEVICE\",\"source\":\"MANUAL\",\"startedAt\":1790003819000,\"status\":\"CLOSED\",\"totalCount\":1,\"updateTime\":1790003848000,\"updater\":149},{\"abnormalCount\":0,\"createTime\":1790003280000,\"creator\":149,\"deadline\":1790258400000,\"deleteFlag\":\"0\",\"id\":5,\"inventoriedCount\":0,\"inventoryNo\":\"PD20260921190800418\",\"inventoryUserId\":149,\"inventoryUserName\":\"张三\",\"normalCount\":0,\"planName\":\"2026年09月资产设备专项盘点\",\"plannedAt\":1790053200000,\"remark\":\"进行盘点\",\"scopeType\":\"ALL\",\"source\":\"MANUAL\",\"status\":\"ACCEPTED\",\"totalCount\":2,\"updateTime\":1790003293000,\"updater\":149},{\"abnormalCount\":0,\"completedAt\":1790002875000,\"createTime\":1789995983000,\"creator\":63,\"deadline\":1790258400000,\"deleteFlag\":\"0\",\"id\":4,\"inventoriedCount\":8,\"inventoryNo\":\"PD20260921170623856\",\"inventoryUserId\":149,\"inventoryUserName\":\"张三\",\"normalCount\":0,\"planName\":\"2026年09月资产设备专项盘点\",\"plannedAt\":1790053200000,\"remark\":\"进行盘点\",\"scopeType\":\"ASSET\",\"source\":\"MANUAL\",\"startedAt\":1790002559000,\"status\":\"CLOSED\",\"totalCount\":8,\"updateTime\":1790003793000,\"updater\":149},{\"abnormalCount\":0,\"createTime\":1789722750000,\"creator\":63,\"deadline\":1789999200000,\"deleteFlag\":\"0\",\"id\":1,\"inventoriedCount\":1,\"inventoryNo\":\"PD20260918131230171\",\"inventoryUserId\":36,\"inventoryUserName\":\"张伟\",\"normalCount\":0,\"planName\":\"2026年09月资产设备专项盘点\",\"plannedAt\":1789794000000,\"remark\":\"进行盘点\",\"scopeType\":\"DEVICE\",\"source\":\"MANUAL\",\"startedAt\":1789723142000,\"status\":\"IN_PROGRESS\",\"totalCount\":3,\"updateTime\":1789986959000,\"updater\":63}]}}'); +INSERT INTO `tbl_log` VALUES (9646, 63, '接口日志', '43.174.53.48/1.9.116.218', '2026-10-06 06:32:55', 0, 'AssetInventoryController.operatorOptions()', NULL, 'GET /apis/assetInventory/operatorOptions', '{}', '{\"code\":200,\"data\":{\"rows\":[{\"loginName\":\"admin\",\"name\":\"admin\",\"id\":63},{\"loginName\":\"admin2\",\"name\":\"admin2\",\"id\":149}],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9647, 63, '接口日志', '43.152.142.133/1.9.116.218', '2026-10-06 06:32:56', 0, 'AssetDeviceController.list(..)', NULL, 'GET /apis/assetDevice/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":10,\"rows\":[{\"assetId\":8,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"工装设备\",\"deviceCode\":\"TOOL-STENCIL-CLEAN-01\",\"deviceName\":\"全自动钢网清洗机\",\"enabledDate\":1739822400000,\"id\":10,\"keeper\":\"王磊\",\"location\":\"一车间 钢网房\",\"manufacturer\":\"SAWA\",\"model\":\"SC-A1000\",\"nextMaintenanceDate\":1794254400000,\"purchaseDate\":1739131200000,\"remark\":\"水基清洗、漂洗、热风干燥一体化\",\"serialNumber\":\"SAWA-A1000-250210\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetId\":7,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"物流设备\",\"deviceCode\":\"WH-FORKLIFT-01\",\"deviceName\":\"2 吨电动叉车\",\"enabledDate\":1722456000000,\"id\":9,\"keeper\":\"张伟\",\"location\":\"原材料仓充电区\",\"manufacturer\":\"Toyota\",\"model\":\"8FBE20\",\"nextMaintenanceDate\":1792872000000,\"purchaseDate\":1721592000000,\"remark\":\"锂电池版本,配置蓝光安全警示灯\",\"serialNumber\":\"TY-8FBE20-240722\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"仓储物流部\"},{\"assetId\":6,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"服务器\",\"deviceCode\":\"IT-MES-DB-01\",\"deviceName\":\"MES 数据库主服务器\",\"enabledDate\":1737489600000,\"id\":8,\"keeper\":\"赵敏\",\"location\":\"数据中心 A03-U18\",\"manufacturer\":\"Dell\",\"model\":\"PowerEdge R760\",\"nextMaintenanceDate\":1797278400000,\"purchaseDate\":1736884800000,\"remark\":\"双路 CPU、512GB 内存、全闪存 RAID10\",\"serialNumber\":\"CN-R760-25011501\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"信息技术部\"},{\"assetId\":5,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"动力设备\",\"deviceCode\":\"UTIL-AIR-01\",\"deviceName\":\"变频螺杆空压机\",\"enabledDate\":1701374400000,\"id\":7,\"keeper\":\"陈晨\",\"location\":\"动力站 1 号机位\",\"manufacturer\":\"Atlas Copco\",\"model\":\"GA22 VSD+\",\"nextMaintenanceDate\":1790798400000,\"purchaseDate\":1700424000000,\"remark\":\"运行压力 0.72MPa,接入能源管理系统\",\"serialNumber\":\"AC-GA22-2311209\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"设备动力部\"},{\"assetId\":4,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"检测设备\",\"deviceCode\":\"QC-SPI-01\",\"deviceName\":\"在线 3D SPI\",\"enabledDate\":1713384000000,\"id\":6,\"keeper\":\"陈晨\",\"lastInventoryTime\":1789986951000,\"location\":\"一车间 印刷检测区\",\"manufacturer\":\"Koh Young\",\"model\":\"KY8030-3\",\"nextMaintenanceDate\":1793908800000,\"purchaseDate\":1712347200000,\"remark\":\"与印刷机闭环反馈锡膏偏移数据\",\"serialNumber\":\"KY-8030-24040608\",\"status\":\"IN_USE\",\"updateTime\":1789986959000,\"useDepartment\":\"品质部\"},{\"assetId\":3,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"检测设备\",\"deviceCode\":\"QC-AOI-01\",\"deviceName\":\"在线 3D AOI\",\"enabledDate\":1713384000000,\"id\":5,\"keeper\":\"陈晨\",\"lastInventoryTime\":1790003830000,\"location\":\"一车间 AOI 检测区\",\"manufacturer\":\"Koh Young\",\"model\":\"Zenith 2\",\"nextMaintenanceDate\":1793822400000,\"purchaseDate\":1712347200000,\"remark\":\"具备 AI 缺陷复判和 SPC 数据接口\",\"serialNumber\":\"KY-Z2-24040615\",\"status\":\"IN_USE\",\"updateTime\":1790003830000,\"useDepartment\":\"品质部\"},{\"assetId\":2,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"焊接设备\",\"deviceCode\":\"SMT-L01-REFLOW-01\",\"deviceName\":\"十温区氮气回流焊炉\",\"enabledDate\":1712692800000,\"id\":4,\"keeper\":\"王磊\",\"location\":\"一车间 SMT-01 线后段\",\"manufacturer\":\"Heller Industries\",\"model\":\"HELLER 1936MK7\",\"nextMaintenanceDate\":1792440000000,\"purchaseDate\":1710705600000,\"remark\":\"氮气闭环控制,支持双轨独立调宽\",\"serialNumber\":\"HLR1936-2403268\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetId\":1,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"贴装设备\",\"deviceCode\":\"SMT-L01-MOUNTER-B\",\"deviceName\":\"多功能贴片机 B\",\"enabledDate\":1712520000000,\"id\":3,\"keeper\":\"王磊\",\"location\":\"一车间 SMT-01 线 B 工位\",\"manufacturer\":\"Panasonic\",\"model\":\"Panasonic NPM-W2S\",\"nextMaintenanceDate\":1792094400000,\"purchaseDate\":1710705600000,\"remark\":\"负责异形件及高精度元件贴装\",\"serialNumber\":\"NPMW2S24031802\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetId\":1,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"贴装设备\",\"deviceCode\":\"SMT-L01-MOUNTER-A\",\"deviceName\":\"高速模块贴片机 A\",\"enabledDate\":1712520000000,\"id\":2,\"keeper\":\"王磊\",\"location\":\"一车间 SMT-01 线 A 工位\",\"manufacturer\":\"Panasonic\",\"model\":\"Panasonic NPM-D3A\",\"nextMaintenanceDate\":1792008000000,\"purchaseDate\":1710705600000,\"remark\":\"前段高速贴装,配置 16 头轻量贴装头\",\"serialNumber\":\"NPMD3A24031801\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetId\":1,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"印刷设备\",\"deviceCode\":\"SMT-L01-PRINTER-01\",\"deviceName\":\"全自动锡膏印刷机\",\"enabledDate\":1712520000000,\"id\":1,\"keeper\":\"王磊\",\"lastInventoryTime\":1789726083000,\"location\":\"一车间 SMT-01 线前段\",\"manufacturer\":\"ASMPT\",\"model\":\"DEK NeoHorizon 03iX\",\"nextMaintenanceDate\":1791403200000,\"purchaseDate\":1710705600000,\"remark\":\"配置 2D 检测与自动擦网单元\",\"serialNumber\":\"DEK24NH03187\",\"status\":\"IN_USE\",\"updateTime\":1789726082000,\"useDepartment\":\"SMT生产部\"}]}}'); +INSERT INTO `tbl_log` VALUES (9648, 63, '接口日志', '43.152.142.128/1.9.116.218', '2026-10-06 06:32:57', 0, 'AssetController.categoryOptions()', NULL, 'GET /apis/asset/category/options', '{}', '{\"code\":200,\"data\":{\"rows\":[{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"尚未归入具体种类的资产\",\"updateTime\":1790613193000,\"categoryCode\":\"UNCATEGORIZED\",\"id\":4,\"sort\":10,\"categoryName\":\"未分类\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System 硬件台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"HARDWARE\",\"id\":5,\"sort\":20,\"categoryName\":\"硬件资产\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System 软件台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"SOFTWARE\",\"id\":6,\"sort\":30,\"categoryName\":\"软件资产\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System SIM 卡台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"SIM_CARD\",\"id\":7,\"sort\":40,\"categoryName\":\"SIM卡\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_01BF8DA563A0\",\"id\":11,\"sort\":100,\"categoryName\":\"生产设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_7129859760C3\",\"id\":12,\"sort\":100,\"categoryName\":\"检测设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_9F38069B30A1\",\"id\":13,\"sort\":100,\"categoryName\":\"动力设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_75F489029B11\",\"id\":14,\"sort\":100,\"categoryName\":\"IT设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_3DDFE01CA0B8\",\"id\":15,\"sort\":100,\"categoryName\":\"物流设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_B5D44F2B039A\",\"id\":16,\"sort\":100,\"categoryName\":\"工装设备\",\"enabled\":true}],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9649, 63, '接口日志', '43.152.142.31/1.9.116.218', '2026-10-06 06:32:57', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":255,\"rows\":[{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019200694297052\",\"assetName\":\"SIM卡 896019200694297052\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"6\",\"externalSource\":\"SIM\",\"id\":270,\"keeper\":\"UITM Dungun\",\"location\":\"SMT (???)\",\"originalValue\":0.000000,\"quantity\":1.000000,\"source\":\"SAS\",\"specification\":\"183.171.146.98\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019190221500578\",\"assetName\":\"SIM卡 896019190221500578\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"5\",\"externalSource\":\"SIM\",\"id\":269,\"keeper\":\"SMT\",\"location\":\"UITM Dungun\",\"originalValue\":0.000000,\"purchaseDate\":1608062400000,\"quantity\":1.000000,\"remark\":\"启用日期: 2020-12-16\",\"source\":\"SAS\",\"specification\":\"183.171.14.125\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019190221500576\",\"assetName\":\"SIM卡 896019190221500576\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"1\",\"externalSource\":\"SIM\",\"id\":268,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1608062400000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2020-12-16\",\"source\":\"SAS\",\"specification\":\"183.171.144.65\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607778\",\"assetName\":\"SIM卡 896019210381607778\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"2\",\"externalSource\":\"SIM\",\"id\":267,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1711051200000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2024-03-22\",\"source\":\"SAS\",\"specification\":\"183.171.15.60\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607781\",\"assetName\":\"SIM卡 896019210381607781\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"9\",\"externalSource\":\"SIM\",\"id\":266,\"keeper\":\"SMT\",\"location\":\"SMT (RnD) Modem RnD\",\"originalValue\":0.000000,\"purchaseDate\":1711051200000,\"quantity\":1.000000,\"remark\":\"设备序列号: 21070014;电表序列号: 320910015;启用日期: 2024-03-22\",\"source\":\"SAS\",\"specification\":\"183.171.5.142 / KM08-LTE Modem / 21070014\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607777\",\"assetName\":\"SIM卡 896019210381607777\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"3\",\"externalSource\":\"SIM\",\"id\":265,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1720987200000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2024-07-15\",\"source\":\"SAS\",\"specification\":\"183.171.40.182\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607782\",\"assetName\":\"SIM卡 896019210381607782\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"4\",\"externalSource\":\"SIM\",\"id\":264,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1720987200000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2024-07-15\",\"source\":\"SAS\",\"specification\":\"183.171.40.117\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607784\",\"assetName\":\"SIM卡 896019210381607784\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"7\",\"externalSource\":\"SIM\",\"id\":263,\"keeper\":\"SMT\",\"location\":\"SMT (Modem-Production)\",\"originalValue\":0.000000,\"purchaseDate\":1727553600000,\"quantity\":1.000000,\"remark\":\"设备序列号: 20041004;启用日期: 2024-09-29\",\"source\":\"SAS\",\"specification\":\"183.171.50.5 / KM08-LTE Modem / 20041004\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607783\",\"assetName\":\"SIM卡 896019210381607783\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"8\",\"externalSource\":\"SIM\",\"id\":262,\"keeper\":\"SMT\",\"location\":\"SMT (RnD) Modem Store\",\"originalValue\":0.000000,\"purchaseDate\":1727553600000,\"quantity\":1.000000,\"remark\":\"设备序列号: 2403005;启用日期: 2024-09-29\",\"source\":\"SAS\",\"specification\":\"183.171.50.6 / KM08-LTE Modem / 2403005\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607785\",\"assetName\":\"SIM卡 896019210381607785\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"10\",\"externalSource\":\"SIM\",\"id\":261,\"keeper\":\"SMT\",\"location\":\"SMT (RnD) Alyaa\",\"originalValue\":0.000000,\"purchaseDate\":1766433600000,\"quantity\":1.000000,\"remark\":\"设备序列号: 21070011;电表序列号: 320910014;启用日期: 2025-12-23\",\"source\":\"SAS\",\"specification\":\"183.171.151.171 / KM08-LTE Modem / 21070011\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000}]}}'); +INSERT INTO `tbl_log` VALUES (9650, 63, '接口日志', '43.152.142.142/1.9.116.218', '2026-10-06 06:32:58', 0, 'AssetController.dashboard()', NULL, 'GET /apis/asset/dashboard', '{}', '{\"code\":200,\"data\":{\"summary\":{\"activeCount\":259,\"deviceCount\":10,\"assetQuantity\":289.000000,\"assetCount\":255,\"assetValue\":17260.000000,\"openInventoryCount\":2,\"managedCount\":265},\"statusDistribution\":[{\"code\":\"IN_USE\",\"value\":259},{\"code\":\"REPAIR\",\"value\":3},{\"code\":\"SCRAPPED\",\"value\":3}],\"departmentDistribution\":[{\"name\":\"Production\",\"value\":56},{\"name\":\"未指定\",\"value\":54},{\"name\":\"Laboratory\",\"value\":48},{\"name\":\"Technical & Technologies\",\"value\":29},{\"name\":\"Engineering\",\"value\":18},{\"name\":\"Not Specified\",\"value\":11},{\"name\":\"Human Resources\",\"value\":6},{\"name\":\"Quality\",\"value\":6}],\"deviceCategoryDistribution\":[{\"name\":\"检测设备\",\"value\":2},{\"name\":\"贴装设备\",\"value\":2},{\"name\":\"动力设备\",\"value\":1},{\"name\":\"印刷设备\",\"value\":1},{\"name\":\"工装设备\",\"value\":1},{\"name\":\"服务器\",\"value\":1},{\"name\":\"焊接设备\",\"value\":1},{\"name\":\"物流设备\",\"value\":1}],\"message\":\"成功\",\"categoryDistribution\":[{\"code\":\"HARDWARE\",\"name\":\"硬件资产\",\"value\":198.00},{\"code\":\"SOFTWARE\",\"name\":\"软件资产\",\"value\":67.00},{\"code\":\"SIM_CARD\",\"name\":\"SIM卡\",\"value\":24.00}],\"recentInventories\":[{\"inventoryNo\":\"PD20260921190840893\",\"inventoryUserName\":\"admin\",\"planName\":\"2026年09月资产设备专项盘点\",\"id\":6,\"totalCount\":1,\"inventoriedCount\":1,\"status\":\"CLOSED\",\"updatedAt\":\"2026-09-21 19:17:28\"},{\"inventoryNo\":\"PD20260921170623856\",\"inventoryUserName\":\"张三\",\"planName\":\"2026年09月资产设备专项盘点\",\"id\":4,\"totalCount\":8,\"inventoriedCount\":8,\"status\":\"CLOSED\",\"updatedAt\":\"2026-09-21 19:16:33\"},{\"inventoryNo\":\"PD20260921190800418\",\"inventoryUserName\":\"张三\",\"planName\":\"2026年09月资产设备专项盘点\",\"id\":5,\"totalCount\":2,\"inventoriedCount\":0,\"status\":\"ACCEPTED\",\"updatedAt\":\"2026-09-21 19:08:13\"},{\"inventoryNo\":\"PD20260918131230171\",\"inventoryUserName\":\"张伟\",\"planName\":\"2026年09月资产设备专项盘点\",\"id\":1,\"totalCount\":3,\"inventoriedCount\":1,\"status\":\"IN_PROGRESS\",\"updatedAt\":\"2026-09-21 14:35:59\"}],\"updatedAt\":\"2026-10-06\"}}'); +INSERT INTO `tbl_log` VALUES (9651, 63, '接口日志', '43.152.142.110/1.9.116.218', '2026-10-06 06:33:52', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{\\\"categoryId\\\":12}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9652, 63, '接口日志', '43.152.142.68/1.9.116.218', '2026-10-06 06:33:54', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{\\\"categoryId\\\":15}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9653, 63, '接口日志', '43.152.142.31/1.9.116.218', '2026-10-06 06:33:57', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{\\\"categoryId\\\":14}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9654, 63, '接口日志', '43.152.142.45/1.9.116.218', '2026-10-06 06:33:59', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{\\\"categoryId\\\":5}\"}', '{\"code\":200,\"data\":{\"total\":198,\"rows\":[{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-374\",\"assetName\":\"N/A Server\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"374\",\"externalSource\":\"HARDWARE\",\"id\":213,\"location\":\"Server Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: N/A\",\"source\":\"SAS\",\"specification\":\"Server / N/A / Server / Ubuntu 24.04.1 LTS / 8TB,1TB M2,512MB M2\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Technical & Technologies\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-373\",\"assetName\":\"N/A Server\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"373\",\"externalSource\":\"HARDWARE\",\"id\":212,\"location\":\"Server Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: N/A;用途: Seafile\",\"source\":\"SAS\",\"specification\":\"Server / N/A / Server / Linux CentOS / 8TB\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Technical & Technologies\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-372\",\"assetName\":\"Hisense Hisense S02BDS7AA21E\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"372\",\"externalSource\":\"HARDWARE\",\"id\":211,\"location\":\"Meeting Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 3TB86B2303620 194VK21652\",\"source\":\"SAS\",\"specification\":\"Smartboard / Hisense / Hisense S02BDS7AA21E / Win 11 Pro / Core i7-10700 / 16G / 512G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Admin\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-371\",\"assetName\":\"Dell OptiPlex 790\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"371\",\"externalSource\":\"HARDWARE\",\"id\":210,\"location\":\"R&D Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: CJN5F2S\",\"source\":\"SAS\",\"specification\":\"CPU / Dell / OptiPlex 790 / Win 7 Pro / Core i5-2400 / 4G / 480G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/OFFICE2/062CPU,SMT/N04/CPU004\",\"assetName\":\"Dell Vostro 230\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"370\",\"externalSource\":\"HARDWARE\",\"id\":209,\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 846R72S\",\"source\":\"SAS\",\"specification\":\"CPU / Dell / Vostro 230 / Win 7 Pro / Core 2 Duo E7500 / 4G / 500G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Production 2\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SAS-HW-369\",\"assetName\":\"TP-Link TP-Link TL-MR6400\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"369\",\"externalSource\":\"HARDWARE\",\"id\":208,\"location\":\"R&D Room\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 22082D8000244;MAC: 60-32-B1-BD-FB-FA;用途: Testing\",\"source\":\"SAS\",\"specification\":\"Router / TP-Link / TP-Link TL-MR6400\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Technical & Technologies\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAP21/112004\",\"assetName\":\"HP HP 14s-cf3022tx\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"368\",\"externalSource\":\"HARDWARE\",\"id\":207,\"keeper\":\"Hazif\",\"location\":\"Store Office\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 5CG03082BJ;原备注: Bundled with Office Home & Student\",\"source\":\"SAS\",\"specification\":\"Laptop / HP / HP 14s-cf3022tx / Win 11 Home / Core i5-1035G1 / 8G / 500G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Store\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/STORE/054CPU\",\"assetName\":\"HP ProDesk 400 G7\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"367\",\"externalSource\":\"HARDWARE\",\"id\":206,\"keeper\":\"Wan Rosli\",\"location\":\"Store Office\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 4CE216BDQ2\",\"source\":\"SAS\",\"specification\":\"CPU / HP / ProDesk 400 G7 / Win 11 Pro / Core i5-10500 / 8G / 250G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Store\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/STORE/053CPU\",\"assetName\":\"Dell OptiPlex 3080\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"366\",\"externalSource\":\"HARDWARE\",\"id\":205,\"keeper\":\"Vacant\",\"location\":\"Store Office\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: 7DVSTC3\",\"source\":\"SAS\",\"specification\":\"CPU / Dell / OptiPlex 3080 / Win 11 Pro / Core i3-10100 / 8G / 250G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Store\"},{\"assetCategory\":\"硬件资产\",\"assetCode\":\"SMT/LAP4/11112024\",\"assetName\":\"Lenovo ThinkPad X1 Carbon Gen 8\",\"categoryCode\":\"HARDWARE\",\"categoryId\":5,\"createTime\":1790613749000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"365\",\"externalSource\":\"HARDWARE\",\"id\":204,\"keeper\":\"x-Azam\",\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"序列号: PF1VB7YC\",\"source\":\"SAS\",\"specification\":\"Laptop / Lenovo / ThinkPad X1 Carbon Gen 8 / Win 11 Pro / Core i7-10510U / 16G / 512G\",\"status\":\"IN_USE\",\"unit\":\"台\",\"updateTime\":1790613749000,\"useDepartment\":\"Engineering\"}]}}'); +INSERT INTO `tbl_log` VALUES (9655, 63, '接口日志', '43.174.53.48/1.9.116.218', '2026-10-06 06:34:01', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{\\\"categoryId\\\":6}\"}', '{\"code\":200,\"data\":{\"total\":33,\"rows\":[{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-2\",\"assetName\":\"MS Office 2019 Home & Business\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"2\",\"externalSource\":\"SOFTWARE\",\"id\":246,\"originalValue\":8700.000000,\"purchaseDate\":1694980800000,\"quantity\":15.000000,\"remark\":\"供应商: Amimo;发票号: INV230902\",\"source\":\"SAS\",\"specification\":\"Amimo\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-3\",\"assetName\":\"MS Office 2019 Home & Business\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"3\",\"externalSource\":\"SOFTWARE\",\"id\":245,\"originalValue\":1160.000000,\"purchaseDate\":1704916800000,\"quantity\":2.000000,\"remark\":\"供应商: Amimo;发票号: INV240101\",\"source\":\"SAS\",\"specification\":\"Amimo\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-4\",\"assetName\":\"MS Office 2019 Pro\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"4\",\"externalSource\":\"SOFTWARE\",\"id\":244,\"originalValue\":0.000000,\"purchaseDate\":1727380800000,\"quantity\":1.000000,\"remark\":\"供应商: Amimo;发票号: INV240901;原备注: Price bundled with PC purchase.\",\"source\":\"SAS\",\"specification\":\"Amimo\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-5\",\"assetName\":\"MS Office 2019 Pro Plus\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"5\",\"externalSource\":\"SOFTWARE\",\"id\":243,\"originalValue\":580.000000,\"purchaseDate\":1712088000000,\"quantity\":1.000000,\"remark\":\"供应商: Amimo;发票号: INV240402\",\"source\":\"SAS\",\"specification\":\"Amimo\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-6\",\"assetName\":\"MS Office 2019 Pro Plus\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"6\",\"externalSource\":\"SOFTWARE\",\"id\":242,\"originalValue\":2320.000000,\"purchaseDate\":1736798400000,\"quantity\":4.000000,\"remark\":\"供应商: Amimo;发票号: QUO250101\",\"source\":\"SAS\",\"specification\":\"Amimo\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-7\",\"assetName\":\"MS Office 2021 Home & Business\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"7\",\"externalSource\":\"SOFTWARE\",\"id\":241,\"originalValue\":750.000000,\"purchaseDate\":1707768000000,\"quantity\":1.000000,\"remark\":\"供应商: Amimo;发票号: INV240201\",\"source\":\"SAS\",\"specification\":\"Amimo\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-8\",\"assetName\":\"MS Office 2021 Pro\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"8\",\"externalSource\":\"SOFTWARE\",\"id\":240,\"originalValue\":0.000000,\"purchaseDate\":1712088000000,\"quantity\":2.000000,\"remark\":\"供应商: Amimo;发票号: INV240401;原备注: Price bundled with PC purchase.\",\"source\":\"SAS\",\"specification\":\"Amimo\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-9\",\"assetName\":\"MS Office 2021 Pro\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"9\",\"externalSource\":\"SOFTWARE\",\"id\":239,\"originalValue\":0.000000,\"purchaseDate\":1718913600000,\"quantity\":1.000000,\"remark\":\"供应商: Amimo;发票号: INV240601;原备注: Price bundled with PC purchase.\",\"source\":\"SAS\",\"specification\":\"Amimo\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000,\"useDepartment\":\"HR\"},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-10\",\"assetName\":\"MS Office Home & Business\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"10\",\"externalSource\":\"SOFTWARE\",\"id\":238,\"originalValue\":0.000000,\"purchaseDate\":1768939200000,\"quantity\":10.000000,\"remark\":\"供应商: Amimo;许可证: Smt@123;发票号: INV260101;原备注: Bundled with 10 unit of PC purchase for Lab.\",\"source\":\"SAS\",\"specification\":\"Amimo\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000,\"useDepartment\":\"Laboratory\"},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-11\",\"assetName\":\"MS Office Home & Business\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"11\",\"externalSource\":\"SOFTWARE\",\"id\":237,\"originalValue\":0.000000,\"quantity\":1.000000,\"remark\":\"供应商: Amimo;原备注: Bundled with 1 unit of Laptop\",\"source\":\"SAS\",\"specification\":\"Amimo\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000,\"useDepartment\":\"Tech & Technology\"}]}}'); +INSERT INTO `tbl_log` VALUES (9656, 63, '接口日志', '43.152.142.41/1.9.116.218', '2026-10-06 06:34:03', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{\\\"categoryId\\\":7}\"}', '{\"code\":200,\"data\":{\"total\":24,\"rows\":[{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019200694297052\",\"assetName\":\"SIM卡 896019200694297052\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"6\",\"externalSource\":\"SIM\",\"id\":270,\"keeper\":\"UITM Dungun\",\"location\":\"SMT (???)\",\"originalValue\":0.000000,\"quantity\":1.000000,\"source\":\"SAS\",\"specification\":\"183.171.146.98\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019190221500578\",\"assetName\":\"SIM卡 896019190221500578\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"5\",\"externalSource\":\"SIM\",\"id\":269,\"keeper\":\"SMT\",\"location\":\"UITM Dungun\",\"originalValue\":0.000000,\"purchaseDate\":1608062400000,\"quantity\":1.000000,\"remark\":\"启用日期: 2020-12-16\",\"source\":\"SAS\",\"specification\":\"183.171.14.125\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019190221500576\",\"assetName\":\"SIM卡 896019190221500576\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"1\",\"externalSource\":\"SIM\",\"id\":268,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1608062400000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2020-12-16\",\"source\":\"SAS\",\"specification\":\"183.171.144.65\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607778\",\"assetName\":\"SIM卡 896019210381607778\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"2\",\"externalSource\":\"SIM\",\"id\":267,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1711051200000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2024-03-22\",\"source\":\"SAS\",\"specification\":\"183.171.15.60\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607781\",\"assetName\":\"SIM卡 896019210381607781\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"9\",\"externalSource\":\"SIM\",\"id\":266,\"keeper\":\"SMT\",\"location\":\"SMT (RnD) Modem RnD\",\"originalValue\":0.000000,\"purchaseDate\":1711051200000,\"quantity\":1.000000,\"remark\":\"设备序列号: 21070014;电表序列号: 320910015;启用日期: 2024-03-22\",\"source\":\"SAS\",\"specification\":\"183.171.5.142 / KM08-LTE Modem / 21070014\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607777\",\"assetName\":\"SIM卡 896019210381607777\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"3\",\"externalSource\":\"SIM\",\"id\":265,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1720987200000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2024-07-15\",\"source\":\"SAS\",\"specification\":\"183.171.40.182\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607782\",\"assetName\":\"SIM卡 896019210381607782\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"4\",\"externalSource\":\"SIM\",\"id\":264,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1720987200000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2024-07-15\",\"source\":\"SAS\",\"specification\":\"183.171.40.117\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607784\",\"assetName\":\"SIM卡 896019210381607784\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"7\",\"externalSource\":\"SIM\",\"id\":263,\"keeper\":\"SMT\",\"location\":\"SMT (Modem-Production)\",\"originalValue\":0.000000,\"purchaseDate\":1727553600000,\"quantity\":1.000000,\"remark\":\"设备序列号: 20041004;启用日期: 2024-09-29\",\"source\":\"SAS\",\"specification\":\"183.171.50.5 / KM08-LTE Modem / 20041004\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607783\",\"assetName\":\"SIM卡 896019210381607783\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"8\",\"externalSource\":\"SIM\",\"id\":262,\"keeper\":\"SMT\",\"location\":\"SMT (RnD) Modem Store\",\"originalValue\":0.000000,\"purchaseDate\":1727553600000,\"quantity\":1.000000,\"remark\":\"设备序列号: 2403005;启用日期: 2024-09-29\",\"source\":\"SAS\",\"specification\":\"183.171.50.6 / KM08-LTE Modem / 2403005\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607785\",\"assetName\":\"SIM卡 896019210381607785\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"10\",\"externalSource\":\"SIM\",\"id\":261,\"keeper\":\"SMT\",\"location\":\"SMT (RnD) Alyaa\",\"originalValue\":0.000000,\"purchaseDate\":1766433600000,\"quantity\":1.000000,\"remark\":\"设备序列号: 21070011;电表序列号: 320910014;启用日期: 2025-12-23\",\"source\":\"SAS\",\"specification\":\"183.171.151.171 / KM08-LTE Modem / 21070011\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000}]}}'); +INSERT INTO `tbl_log` VALUES (9657, 63, '接口日志', '43.174.52.31/1.9.116.218', '2026-10-06 06:34:09', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":255,\"rows\":[{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019200694297052\",\"assetName\":\"SIM卡 896019200694297052\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"6\",\"externalSource\":\"SIM\",\"id\":270,\"keeper\":\"UITM Dungun\",\"location\":\"SMT (???)\",\"originalValue\":0.000000,\"quantity\":1.000000,\"source\":\"SAS\",\"specification\":\"183.171.146.98\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019190221500578\",\"assetName\":\"SIM卡 896019190221500578\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"5\",\"externalSource\":\"SIM\",\"id\":269,\"keeper\":\"SMT\",\"location\":\"UITM Dungun\",\"originalValue\":0.000000,\"purchaseDate\":1608062400000,\"quantity\":1.000000,\"remark\":\"启用日期: 2020-12-16\",\"source\":\"SAS\",\"specification\":\"183.171.14.125\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019190221500576\",\"assetName\":\"SIM卡 896019190221500576\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"1\",\"externalSource\":\"SIM\",\"id\":268,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1608062400000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2020-12-16\",\"source\":\"SAS\",\"specification\":\"183.171.144.65\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607778\",\"assetName\":\"SIM卡 896019210381607778\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"2\",\"externalSource\":\"SIM\",\"id\":267,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1711051200000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2024-03-22\",\"source\":\"SAS\",\"specification\":\"183.171.15.60\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607781\",\"assetName\":\"SIM卡 896019210381607781\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"9\",\"externalSource\":\"SIM\",\"id\":266,\"keeper\":\"SMT\",\"location\":\"SMT (RnD) Modem RnD\",\"originalValue\":0.000000,\"purchaseDate\":1711051200000,\"quantity\":1.000000,\"remark\":\"设备序列号: 21070014;电表序列号: 320910015;启用日期: 2024-03-22\",\"source\":\"SAS\",\"specification\":\"183.171.5.142 / KM08-LTE Modem / 21070014\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607777\",\"assetName\":\"SIM卡 896019210381607777\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"3\",\"externalSource\":\"SIM\",\"id\":265,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1720987200000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2024-07-15\",\"source\":\"SAS\",\"specification\":\"183.171.40.182\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607782\",\"assetName\":\"SIM卡 896019210381607782\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"4\",\"externalSource\":\"SIM\",\"id\":264,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1720987200000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2024-07-15\",\"source\":\"SAS\",\"specification\":\"183.171.40.117\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607784\",\"assetName\":\"SIM卡 896019210381607784\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"7\",\"externalSource\":\"SIM\",\"id\":263,\"keeper\":\"SMT\",\"location\":\"SMT (Modem-Production)\",\"originalValue\":0.000000,\"purchaseDate\":1727553600000,\"quantity\":1.000000,\"remark\":\"设备序列号: 20041004;启用日期: 2024-09-29\",\"source\":\"SAS\",\"specification\":\"183.171.50.5 / KM08-LTE Modem / 20041004\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607783\",\"assetName\":\"SIM卡 896019210381607783\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"8\",\"externalSource\":\"SIM\",\"id\":262,\"keeper\":\"SMT\",\"location\":\"SMT (RnD) Modem Store\",\"originalValue\":0.000000,\"purchaseDate\":1727553600000,\"quantity\":1.000000,\"remark\":\"设备序列号: 2403005;启用日期: 2024-09-29\",\"source\":\"SAS\",\"specification\":\"183.171.50.6 / KM08-LTE Modem / 2403005\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607785\",\"assetName\":\"SIM卡 896019210381607785\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"10\",\"externalSource\":\"SIM\",\"id\":261,\"keeper\":\"SMT\",\"location\":\"SMT (RnD) Alyaa\",\"originalValue\":0.000000,\"purchaseDate\":1766433600000,\"quantity\":1.000000,\"remark\":\"设备序列号: 21070011;电表序列号: 320910014;启用日期: 2025-12-23\",\"source\":\"SAS\",\"specification\":\"183.171.151.171 / KM08-LTE Modem / 21070011\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000}]}}'); +INSERT INTO `tbl_log` VALUES (9658, 63, '接口日志', '43.152.142.34/1.9.116.218', '2026-10-06 06:34:12', 0, 'AssetController.categoryOptions()', NULL, 'GET /apis/asset/category/options', '{}', '{\"code\":200,\"data\":{\"rows\":[{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"尚未归入具体种类的资产\",\"updateTime\":1790613193000,\"categoryCode\":\"UNCATEGORIZED\",\"id\":4,\"sort\":10,\"categoryName\":\"未分类\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System 硬件台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"HARDWARE\",\"id\":5,\"sort\":20,\"categoryName\":\"硬件资产\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System 软件台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"SOFTWARE\",\"id\":6,\"sort\":30,\"categoryName\":\"软件资产\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System SIM 卡台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"SIM_CARD\",\"id\":7,\"sort\":40,\"categoryName\":\"SIM卡\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_01BF8DA563A0\",\"id\":11,\"sort\":100,\"categoryName\":\"生产设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_7129859760C3\",\"id\":12,\"sort\":100,\"categoryName\":\"检测设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_9F38069B30A1\",\"id\":13,\"sort\":100,\"categoryName\":\"动力设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_75F489029B11\",\"id\":14,\"sort\":100,\"categoryName\":\"IT设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_3DDFE01CA0B8\",\"id\":15,\"sort\":100,\"categoryName\":\"物流设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_B5D44F2B039A\",\"id\":16,\"sort\":100,\"categoryName\":\"工装设备\",\"enabled\":true}],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9659, 63, '接口日志', '43.152.142.108/1.9.116.218', '2026-10-06 06:34:36', 0, 'AssetController.categoryList(..)', NULL, 'GET /apis/asset/category/list', '{}', '{\"code\":200,\"data\":{\"rows\":[{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"尚未归入具体种类的资产\",\"updateTime\":1790613193000,\"categoryCode\":\"UNCATEGORIZED\",\"id\":4,\"sort\":10,\"categoryName\":\"未分类\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System 硬件台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"HARDWARE\",\"id\":5,\"sort\":20,\"categoryName\":\"硬件资产\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System 软件台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"SOFTWARE\",\"id\":6,\"sort\":30,\"categoryName\":\"软件资产\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System SIM 卡台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"SIM_CARD\",\"id\":7,\"sort\":40,\"categoryName\":\"SIM卡\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_01BF8DA563A0\",\"id\":11,\"sort\":100,\"categoryName\":\"生产设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_7129859760C3\",\"id\":12,\"sort\":100,\"categoryName\":\"检测设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_9F38069B30A1\",\"id\":13,\"sort\":100,\"categoryName\":\"动力设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_75F489029B11\",\"id\":14,\"sort\":100,\"categoryName\":\"IT设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_3DDFE01CA0B8\",\"id\":15,\"sort\":100,\"categoryName\":\"物流设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_B5D44F2B039A\",\"id\":16,\"sort\":100,\"categoryName\":\"工装设备\",\"enabled\":true}],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9660, 63, '接口日志', '43.152.142.128/1.9.116.218', '2026-10-06 06:34:58', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":255,\"rows\":[{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019200694297052\",\"assetName\":\"SIM卡 896019200694297052\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"6\",\"externalSource\":\"SIM\",\"id\":270,\"keeper\":\"UITM Dungun\",\"location\":\"SMT (???)\",\"originalValue\":0.000000,\"quantity\":1.000000,\"source\":\"SAS\",\"specification\":\"183.171.146.98\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019190221500578\",\"assetName\":\"SIM卡 896019190221500578\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"5\",\"externalSource\":\"SIM\",\"id\":269,\"keeper\":\"SMT\",\"location\":\"UITM Dungun\",\"originalValue\":0.000000,\"purchaseDate\":1608062400000,\"quantity\":1.000000,\"remark\":\"启用日期: 2020-12-16\",\"source\":\"SAS\",\"specification\":\"183.171.14.125\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019190221500576\",\"assetName\":\"SIM卡 896019190221500576\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"1\",\"externalSource\":\"SIM\",\"id\":268,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1608062400000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2020-12-16\",\"source\":\"SAS\",\"specification\":\"183.171.144.65\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607778\",\"assetName\":\"SIM卡 896019210381607778\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"2\",\"externalSource\":\"SIM\",\"id\":267,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1711051200000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2024-03-22\",\"source\":\"SAS\",\"specification\":\"183.171.15.60\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607781\",\"assetName\":\"SIM卡 896019210381607781\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"9\",\"externalSource\":\"SIM\",\"id\":266,\"keeper\":\"SMT\",\"location\":\"SMT (RnD) Modem RnD\",\"originalValue\":0.000000,\"purchaseDate\":1711051200000,\"quantity\":1.000000,\"remark\":\"设备序列号: 21070014;电表序列号: 320910015;启用日期: 2024-03-22\",\"source\":\"SAS\",\"specification\":\"183.171.5.142 / KM08-LTE Modem / 21070014\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607777\",\"assetName\":\"SIM卡 896019210381607777\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"3\",\"externalSource\":\"SIM\",\"id\":265,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1720987200000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2024-07-15\",\"source\":\"SAS\",\"specification\":\"183.171.40.182\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607782\",\"assetName\":\"SIM卡 896019210381607782\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"4\",\"externalSource\":\"SIM\",\"id\":264,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1720987200000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2024-07-15\",\"source\":\"SAS\",\"specification\":\"183.171.40.117\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607784\",\"assetName\":\"SIM卡 896019210381607784\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"7\",\"externalSource\":\"SIM\",\"id\":263,\"keeper\":\"SMT\",\"location\":\"SMT (Modem-Production)\",\"originalValue\":0.000000,\"purchaseDate\":1727553600000,\"quantity\":1.000000,\"remark\":\"设备序列号: 20041004;启用日期: 2024-09-29\",\"source\":\"SAS\",\"specification\":\"183.171.50.5 / KM08-LTE Modem / 20041004\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607783\",\"assetName\":\"SIM卡 896019210381607783\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"8\",\"externalSource\":\"SIM\",\"id\":262,\"keeper\":\"SMT\",\"location\":\"SMT (RnD) Modem Store\",\"originalValue\":0.000000,\"purchaseDate\":1727553600000,\"quantity\":1.000000,\"remark\":\"设备序列号: 2403005;启用日期: 2024-09-29\",\"source\":\"SAS\",\"specification\":\"183.171.50.6 / KM08-LTE Modem / 2403005\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607785\",\"assetName\":\"SIM卡 896019210381607785\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"10\",\"externalSource\":\"SIM\",\"id\":261,\"keeper\":\"SMT\",\"location\":\"SMT (RnD) Alyaa\",\"originalValue\":0.000000,\"purchaseDate\":1766433600000,\"quantity\":1.000000,\"remark\":\"设备序列号: 21070011;电表序列号: 320910014;启用日期: 2025-12-23\",\"source\":\"SAS\",\"specification\":\"183.171.151.171 / KM08-LTE Modem / 21070011\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000}]}}'); +INSERT INTO `tbl_log` VALUES (9661, 63, '接口日志', '43.174.32.12/1.9.116.218', '2026-10-06 06:34:58', 0, 'AssetController.categoryOptions()', NULL, 'GET /apis/asset/category/options', '{}', '{\"code\":200,\"data\":{\"rows\":[{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"尚未归入具体种类的资产\",\"updateTime\":1790613193000,\"categoryCode\":\"UNCATEGORIZED\",\"id\":4,\"sort\":10,\"categoryName\":\"未分类\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System 硬件台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"HARDWARE\",\"id\":5,\"sort\":20,\"categoryName\":\"硬件资产\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System 软件台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"SOFTWARE\",\"id\":6,\"sort\":30,\"categoryName\":\"软件资产\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System SIM 卡台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"SIM_CARD\",\"id\":7,\"sort\":40,\"categoryName\":\"SIM卡\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_01BF8DA563A0\",\"id\":11,\"sort\":100,\"categoryName\":\"生产设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_7129859760C3\",\"id\":12,\"sort\":100,\"categoryName\":\"检测设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_9F38069B30A1\",\"id\":13,\"sort\":100,\"categoryName\":\"动力设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_75F489029B11\",\"id\":14,\"sort\":100,\"categoryName\":\"IT设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_3DDFE01CA0B8\",\"id\":15,\"sort\":100,\"categoryName\":\"物流设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_B5D44F2B039A\",\"id\":16,\"sort\":100,\"categoryName\":\"工装设备\",\"enabled\":true}],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9662, 63, '接口日志', '43.152.142.68/1.9.116.218', '2026-10-06 06:35:52', 0, 'AssetController.categoryOptions()', NULL, 'GET /apis/asset/category/options', '{}', '{\"code\":200,\"data\":{\"rows\":[{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"尚未归入具体种类的资产\",\"updateTime\":1790613193000,\"categoryCode\":\"UNCATEGORIZED\",\"id\":4,\"sort\":10,\"categoryName\":\"未分类\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System 硬件台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"HARDWARE\",\"id\":5,\"sort\":20,\"categoryName\":\"硬件资产\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System 软件台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"SOFTWARE\",\"id\":6,\"sort\":30,\"categoryName\":\"软件资产\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System SIM 卡台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"SIM_CARD\",\"id\":7,\"sort\":40,\"categoryName\":\"SIM卡\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_01BF8DA563A0\",\"id\":11,\"sort\":100,\"categoryName\":\"生产设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_7129859760C3\",\"id\":12,\"sort\":100,\"categoryName\":\"检测设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_9F38069B30A1\",\"id\":13,\"sort\":100,\"categoryName\":\"动力设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_75F489029B11\",\"id\":14,\"sort\":100,\"categoryName\":\"IT设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_3DDFE01CA0B8\",\"id\":15,\"sort\":100,\"categoryName\":\"物流设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_B5D44F2B039A\",\"id\":16,\"sort\":100,\"categoryName\":\"工装设备\",\"enabled\":true}],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9663, 63, '接口日志', '43.174.53.19/1.9.116.218', '2026-10-06 06:36:24', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":255,\"rows\":[{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607786\",\"assetName\":\"SIM卡 896019210381607786\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"11\",\"externalSource\":\"SIM\",\"id\":260,\"keeper\":\"SMT\",\"location\":\"SMT (RnD) Alyaa\",\"originalValue\":0.000000,\"purchaseDate\":1766433600000,\"quantity\":1.000000,\"remark\":\"设备序列号: 21070013;启用日期: 2025-12-23\",\"source\":\"SAS\",\"specification\":\"183.171.208.37 / KM08-LTE Modem / 21070013\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381702562\",\"assetName\":\"SIM卡 896019210381702562\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"12\",\"externalSource\":\"SIM\",\"id\":259,\"keeper\":\"SMT\",\"location\":\"Loan to Hanif/Adha (22-May-2026); \",\"originalValue\":0.000000,\"purchaseDate\":1766433600000,\"quantity\":1.000000,\"remark\":\"启用日期: 2025-12-23\",\"source\":\"SAS\",\"specification\":\"183.171.144.61\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607780\",\"assetName\":\"SIM卡 896019210381607780\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"14\",\"externalSource\":\"SIM\",\"id\":258,\"keeper\":\"SMT\",\"location\":\"POC AEON\",\"originalValue\":0.000000,\"purchaseDate\":1766433600000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Months;启用日期: 2025-12-23\",\"source\":\"SAS\",\"specification\":\"183.171.208.37\",\"status\":\"SCRAPPED\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019190221500577\",\"assetName\":\"SIM卡 896019190221500577\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"15\",\"externalSource\":\"SIM\",\"id\":257,\"keeper\":\"SMT\",\"location\":\"Kompleks Pertama\",\"originalValue\":0.000000,\"purchaseDate\":1766433600000,\"quantity\":1.000000,\"remark\":\"启用日期: 2025-12-23\",\"source\":\"SAS\",\"specification\":\"183.171.144.61\",\"status\":\"SCRAPPED\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607779\",\"assetName\":\"SIM卡 896019210381607779\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"13\",\"externalSource\":\"SIM\",\"id\":256,\"keeper\":\"SMT\",\"location\":\"POC AEON\",\"originalValue\":0.000000,\"purchaseDate\":1766433600000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Months;启用日期: 2025-12-23\",\"source\":\"SAS\",\"specification\":\"183.171.151.171\",\"status\":\"SCRAPPED\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381702569\",\"assetName\":\"SIM卡 896019210381702569\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"18\",\"externalSource\":\"SIM\",\"id\":255,\"keeper\":\"SMT\",\"location\":\"With Amir\",\"originalValue\":0.000000,\"purchaseDate\":1780430400000,\"quantity\":1.000000,\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"source\":\"SAS\",\"specification\":\"183.171.11.200\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381702570\",\"assetName\":\"SIM卡 896019210381702570\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"19\",\"externalSource\":\"SIM\",\"id\":254,\"keeper\":\"SMT\",\"location\":\"With Amir\",\"originalValue\":0.000000,\"purchaseDate\":1780430400000,\"quantity\":1.000000,\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"source\":\"SAS\",\"specification\":\"183.171.214.141\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381702571\",\"assetName\":\"SIM卡 896019210381702571\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"23\",\"externalSource\":\"SIM\",\"id\":253,\"keeper\":\"SMT\",\"location\":\"R&D room, SMT\",\"originalValue\":0.000000,\"purchaseDate\":1780430400000,\"quantity\":1.000000,\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"source\":\"SAS\",\"specification\":\"183.171.9.45\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381702568\",\"assetName\":\"SIM卡 896019210381702568\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"24\",\"externalSource\":\"SIM\",\"id\":252,\"keeper\":\"SMT\",\"location\":\"Molnlycke Health Care\",\"originalValue\":0.000000,\"purchaseDate\":1780430400000,\"quantity\":1.000000,\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"source\":\"SAS\",\"specification\":\"183.171.214.217 / 4G Modem\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381702567\",\"assetName\":\"SIM卡 896019210381702567\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"25\",\"externalSource\":\"SIM\",\"id\":251,\"keeper\":\"SMT\",\"location\":\"Molnlycke Health Care\",\"originalValue\":0.000000,\"purchaseDate\":1780430400000,\"quantity\":1.000000,\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"source\":\"SAS\",\"specification\":\"183.171.12.143 / 4G Modem\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000}]}}'); +INSERT INTO `tbl_log` VALUES (9664, 63, '接口日志', '43.174.54.44/1.9.116.218', '2026-10-06 06:36:25', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":255,\"rows\":[{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019200694297052\",\"assetName\":\"SIM卡 896019200694297052\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"6\",\"externalSource\":\"SIM\",\"id\":270,\"keeper\":\"UITM Dungun\",\"location\":\"SMT (???)\",\"originalValue\":0.000000,\"quantity\":1.000000,\"source\":\"SAS\",\"specification\":\"183.171.146.98\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019190221500578\",\"assetName\":\"SIM卡 896019190221500578\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"5\",\"externalSource\":\"SIM\",\"id\":269,\"keeper\":\"SMT\",\"location\":\"UITM Dungun\",\"originalValue\":0.000000,\"purchaseDate\":1608062400000,\"quantity\":1.000000,\"remark\":\"启用日期: 2020-12-16\",\"source\":\"SAS\",\"specification\":\"183.171.14.125\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019190221500576\",\"assetName\":\"SIM卡 896019190221500576\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"1\",\"externalSource\":\"SIM\",\"id\":268,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1608062400000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2020-12-16\",\"source\":\"SAS\",\"specification\":\"183.171.144.65\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607778\",\"assetName\":\"SIM卡 896019210381607778\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"2\",\"externalSource\":\"SIM\",\"id\":267,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1711051200000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2024-03-22\",\"source\":\"SAS\",\"specification\":\"183.171.15.60\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607781\",\"assetName\":\"SIM卡 896019210381607781\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"9\",\"externalSource\":\"SIM\",\"id\":266,\"keeper\":\"SMT\",\"location\":\"SMT (RnD) Modem RnD\",\"originalValue\":0.000000,\"purchaseDate\":1711051200000,\"quantity\":1.000000,\"remark\":\"设备序列号: 21070014;电表序列号: 320910015;启用日期: 2024-03-22\",\"source\":\"SAS\",\"specification\":\"183.171.5.142 / KM08-LTE Modem / 21070014\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607777\",\"assetName\":\"SIM卡 896019210381607777\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"3\",\"externalSource\":\"SIM\",\"id\":265,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1720987200000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2024-07-15\",\"source\":\"SAS\",\"specification\":\"183.171.40.182\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607782\",\"assetName\":\"SIM卡 896019210381607782\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"4\",\"externalSource\":\"SIM\",\"id\":264,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1720987200000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2024-07-15\",\"source\":\"SAS\",\"specification\":\"183.171.40.117\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607784\",\"assetName\":\"SIM卡 896019210381607784\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"7\",\"externalSource\":\"SIM\",\"id\":263,\"keeper\":\"SMT\",\"location\":\"SMT (Modem-Production)\",\"originalValue\":0.000000,\"purchaseDate\":1727553600000,\"quantity\":1.000000,\"remark\":\"设备序列号: 20041004;启用日期: 2024-09-29\",\"source\":\"SAS\",\"specification\":\"183.171.50.5 / KM08-LTE Modem / 20041004\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607783\",\"assetName\":\"SIM卡 896019210381607783\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"8\",\"externalSource\":\"SIM\",\"id\":262,\"keeper\":\"SMT\",\"location\":\"SMT (RnD) Modem Store\",\"originalValue\":0.000000,\"purchaseDate\":1727553600000,\"quantity\":1.000000,\"remark\":\"设备序列号: 2403005;启用日期: 2024-09-29\",\"source\":\"SAS\",\"specification\":\"183.171.50.6 / KM08-LTE Modem / 2403005\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607785\",\"assetName\":\"SIM卡 896019210381607785\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"10\",\"externalSource\":\"SIM\",\"id\":261,\"keeper\":\"SMT\",\"location\":\"SMT (RnD) Alyaa\",\"originalValue\":0.000000,\"purchaseDate\":1766433600000,\"quantity\":1.000000,\"remark\":\"设备序列号: 21070011;电表序列号: 320910014;启用日期: 2025-12-23\",\"source\":\"SAS\",\"specification\":\"183.171.151.171 / KM08-LTE Modem / 21070011\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000}]}}'); +INSERT INTO `tbl_log` VALUES (9665, 63, '接口日志', '43.152.142.34/1.9.116.218', '2026-10-06 06:36:45', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":255,\"rows\":[{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381702566\",\"assetName\":\"SIM卡 896019210381702566\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"26\",\"externalSource\":\"SIM\",\"id\":250,\"keeper\":\"SMT\",\"location\":\"GT3.1 (Nur)\",\"originalValue\":0.000000,\"purchaseDate\":1780430400000,\"quantity\":1.000000,\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"source\":\"SAS\",\"specification\":\"183.171.11.123 / Lora Gateway\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381702565\",\"assetName\":\"SIM卡 896019210381702565\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"27\",\"externalSource\":\"SIM\",\"id\":249,\"keeper\":\"SMT\",\"location\":\"Menicon Malaysia\",\"originalValue\":0.000000,\"purchaseDate\":1780430400000,\"quantity\":1.000000,\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"source\":\"SAS\",\"specification\":\"183.171.12.136 / Lora Gateway\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381702564\",\"assetName\":\"SIM卡 896019210381702564\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"28\",\"externalSource\":\"SIM\",\"id\":248,\"keeper\":\"SMT\",\"location\":\"First Solar Malaysia\",\"originalValue\":0.000000,\"purchaseDate\":1780430400000,\"quantity\":1.000000,\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"source\":\"SAS\",\"specification\":\"183.171.10.11 / 4G Modem\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381702563\",\"assetName\":\"SIM卡 896019210381702563\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"29\",\"externalSource\":\"SIM\",\"id\":247,\"keeper\":\"SMT\",\"location\":\"First Solar Malaysia\",\"originalValue\":0.000000,\"purchaseDate\":1780430400000,\"quantity\":1.000000,\"remark\":\"使用期限: 12 months;启用日期: 2026-06-03\",\"source\":\"SAS\",\"specification\":\"183.171.11.141 / 4G Modem\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-2\",\"assetName\":\"MS Office 2019 Home & Business\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"2\",\"externalSource\":\"SOFTWARE\",\"id\":246,\"originalValue\":8700.000000,\"purchaseDate\":1694980800000,\"quantity\":15.000000,\"remark\":\"供应商: Amimo;发票号: INV230902\",\"source\":\"SAS\",\"specification\":\"Amimo\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-3\",\"assetName\":\"MS Office 2019 Home & Business\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"3\",\"externalSource\":\"SOFTWARE\",\"id\":245,\"originalValue\":1160.000000,\"purchaseDate\":1704916800000,\"quantity\":2.000000,\"remark\":\"供应商: Amimo;发票号: INV240101\",\"source\":\"SAS\",\"specification\":\"Amimo\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-4\",\"assetName\":\"MS Office 2019 Pro\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"4\",\"externalSource\":\"SOFTWARE\",\"id\":244,\"originalValue\":0.000000,\"purchaseDate\":1727380800000,\"quantity\":1.000000,\"remark\":\"供应商: Amimo;发票号: INV240901;原备注: Price bundled with PC purchase.\",\"source\":\"SAS\",\"specification\":\"Amimo\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-5\",\"assetName\":\"MS Office 2019 Pro Plus\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"5\",\"externalSource\":\"SOFTWARE\",\"id\":243,\"originalValue\":580.000000,\"purchaseDate\":1712088000000,\"quantity\":1.000000,\"remark\":\"供应商: Amimo;发票号: INV240402\",\"source\":\"SAS\",\"specification\":\"Amimo\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-6\",\"assetName\":\"MS Office 2019 Pro Plus\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"6\",\"externalSource\":\"SOFTWARE\",\"id\":242,\"originalValue\":2320.000000,\"purchaseDate\":1736798400000,\"quantity\":4.000000,\"remark\":\"供应商: Amimo;发票号: QUO250101\",\"source\":\"SAS\",\"specification\":\"Amimo\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000},{\"assetCategory\":\"软件资产\",\"assetCode\":\"SAS-SW-7\",\"assetName\":\"MS Office 2021 Home & Business\",\"categoryCode\":\"SOFTWARE\",\"categoryId\":6,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"7\",\"externalSource\":\"SOFTWARE\",\"id\":241,\"originalValue\":750.000000,\"purchaseDate\":1707768000000,\"quantity\":1.000000,\"remark\":\"供应商: Amimo;发票号: INV240201\",\"source\":\"SAS\",\"specification\":\"Amimo\",\"status\":\"IN_USE\",\"unit\":\"套\",\"updateTime\":1790613750000}]}}'); +INSERT INTO `tbl_log` VALUES (9666, 63, '接口日志', '43.168.32.240/1.9.116.218', '2026-10-06 06:36:51', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (9667, 63, '接口日志', '43.168.32.240/1.9.116.218', '2026-10-06 06:36:51', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (9668, 63, '接口日志', '43.152.142.31/1.9.116.218', '2026-10-06 06:36:51', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (9669, 63, '接口日志', '43.152.142.41/1.9.116.218', '2026-10-06 06:36:51', 0, 'PersonController.getPersonByType(..)', NULL, 'GET /apis/person/getPersonByType', '{\"type\":\"财务员\"}', '{\"code\":200,\"data\":{\"personList\":[{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":43,\"name\":\"Juwairiah\",\"type\":\"财务员\"}]}}'); +INSERT INTO `tbl_log` VALUES (9670, 63, '接口日志', '43.152.142.140/1.9.116.218', '2026-10-06 06:36:51', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (9671, 63, '接口日志', '43.174.55.40/1.9.116.218', '2026-10-06 06:36:51', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (9672, 63, '接口日志', '43.174.53.16/1.9.116.218', '2026-10-06 06:36:51', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9673, 63, '接口日志', '43.152.142.62/1.9.116.218', '2026-10-06 06:36:51', 0, 'CustomerCategoryController.getTreeList(..)', NULL, 'GET /apis/customerCategory/treeList', '{}', '{\"code\":200,\"data\":{\"data\":[],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9674, 63, '接口日志', '43.152.142.110/1.9.116.218', '2026-10-06 06:36:51', 0, 'AccountHeadController.getList(..)', NULL, 'GET /apis/accountHead/list', '{\"search\":\"{\\\"billNo\\\":\\\"\\\",\\\"searchMaterial\\\":\\\"\\\",\\\"type\\\":\\\"收款\\\",\\\"remark\\\":\\\"\\\",\\\"number\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-07-06\\\",\\\"endTime\\\":\\\"2026-10-06\\\",\\\"createTimeRange\\\":[\\\"2026-07-05T16:00:00.000Z\\\",\\\"2026-10-05T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":10,\"rows\":[{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2110-25\",\"billTime\":1784836800000,\"billTimeStr\":\"2026-07-24 00:00:00\",\"changeAmount\":1122000.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":105,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2110\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2110-25\",\"sourceTime\":\"2026-06-23 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":1122000.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2108-18\",\"billTime\":1784145600000,\"billTimeStr\":\"2026-07-16 00:00:00\",\"changeAmount\":1122000.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":103,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2108\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2108-18\",\"sourceTime\":\"2026-06-16 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":1122000.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2107-14\",\"billTime\":1783281600000,\"billTimeStr\":\"2026-07-06 00:00:00\",\"changeAmount\":1122000.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":102,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2107\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2107-14\",\"sourceTime\":\"2026-06-06 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":1122000.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2129-11\",\"billTime\":1786564800000,\"billTimeStr\":\"2026-08-13 00:00:00\",\"changeAmount\":1122000.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":99,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2129\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2129-11\",\"sourceTime\":\"2026-01-01 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":1122000.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2133-65\",\"billTime\":1786651200000,\"billTimeStr\":\"2026-08-14 00:00:00\",\"changeAmount\":80850.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":98,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2133\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2133-65\",\"sourceTime\":\"2026-07-16 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2131-47\",\"billTime\":1783886400000,\"billTimeStr\":\"2026-07-13 00:00:00\",\"changeAmount\":80850.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":97,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2131\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2131-47\",\"sourceTime\":\"2026-07-13 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2130-44\",\"billTime\":1786046400000,\"billTimeStr\":\"2026-08-07 00:00:00\",\"changeAmount\":242550.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":96,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2130\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2130-44\",\"sourceTime\":\"2026-07-09 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":242550.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2122-26\",\"billTime\":1785441600000,\"billTimeStr\":\"2026-07-31 00:00:00\",\"changeAmount\":161700.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":95,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2122\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2122-26\",\"sourceTime\":\"2026-07-01 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":161700.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2113-15\",\"billTime\":1785182400000,\"billTimeStr\":\"2026-07-28 00:00:00\",\"changeAmount\":161700.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":94,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2113\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2113-15\",\"sourceTime\":\"2026-06-28 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":161700.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2111-11\",\"billTime\":1785096000000,\"billTimeStr\":\"2026-07-27 00:00:00\",\"changeAmount\":242550.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":93,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2111\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2111-11\",\"sourceTime\":\"2026-06-26 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":242550.000000,\"type\":\"收款\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (9675, 63, '接口日志', '43.152.142.45/1.9.116.218', '2026-10-06 06:36:51', 0, 'DepotHeadController.getNeedCount(..)', NULL, 'GET /apis/depotHead/getNeedCount', '{\"type\":\"customer\"}', '{\"code\":200,\"data\":{\"needCount\":1}}'); +INSERT INTO `tbl_log` VALUES (9676, 63, '接口日志', '43.168.32.240/1.9.116.218', '2026-10-06 06:36:52', 0, 'SupplierController.findBySelectSup(..)', NULL, 'POST /apis/supplier/findBySelect_sup', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司\",\"id\":89}]'); +INSERT INTO `tbl_log` VALUES (9677, 63, '接口日志', '43.174.53.19/1.9.116.218', '2026-10-06 06:36:52', 0, 'PersonController.getPersonByType(..)', NULL, 'GET /apis/person/getPersonByType', '{\"type\":\"财务员\"}', '{\"code\":200,\"data\":{\"personList\":[{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":43,\"name\":\"Juwairiah\",\"type\":\"财务员\"}]}}'); +INSERT INTO `tbl_log` VALUES (9678, 63, '接口日志', '43.152.142.108/1.9.116.218', '2026-10-06 06:36:52', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9679, 63, '接口日志', '43.174.53.11/1.9.116.218', '2026-10-06 06:36:52', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (9680, 63, '接口日志', '43.152.142.84/1.9.116.218', '2026-10-06 06:36:52', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (9681, 63, '接口日志', '43.152.142.128/1.9.116.218', '2026-10-06 06:36:52', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (9682, 63, '接口日志', '43.174.32.14/1.9.116.218', '2026-10-06 06:36:52', 0, 'AccountHeadController.getList(..)', NULL, 'GET /apis/accountHead/list', '{\"search\":\"{\\\"billNo\\\":\\\"\\\",\\\"searchMaterial\\\":\\\"\\\",\\\"type\\\":\\\"付款\\\",\\\"remark\\\":\\\"\\\",\\\"number\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-07-06\\\",\\\"endTime\\\":\\\"2026-10-06\\\",\\\"createTimeRange\\\":[\\\"2026-07-05T16:00:00.000Z\\\",\\\"2026-10-05T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":3,\"rows\":[{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"FK-PV-008186-87-3PH-APEC3-WC-OV-25\",\"billTime\":1786651200000,\"billTimeStr\":\"2026-08-14 00:00:00\",\"changeAmount\":947751.900000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":104,\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"remark\":\"Stock Status供应商付款;PV:PV 008186/87\",\"source\":\"0\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":947751.900000,\"type\":\"付款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"FK-PV-008145-45---ZHEJIANG-METRONIX-3PH-APEC3-WC-O\",\"billTime\":1785700800000,\"billTimeStr\":\"2026-08-03 00:00:00\",\"changeAmount\":954860.058400,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":100,\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"remark\":\"Stock Status供应商付款;PV:PV 008145/45 - ZHEJIANG & METRONIX\",\"source\":\"0\",\"sourceNumber\":\"CGRK-260415-01-11\",\"sourceTime\":\"2026-04-29 00:00:00\",\"sourceType\":\"采购入库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":954860.058400,\"type\":\"付款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"FK-PV-008186-87-1PH-WS79-ADD1-11\",\"billTime\":1786651200000,\"billTimeStr\":\"2026-08-14 00:00:00\",\"changeAmount\":236946.640000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":92,\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"remark\":\"Stock Status供应商付款;PV:PV 008186/87\",\"source\":\"0\",\"sourceNumber\":\"CGRK-260414-01-11\",\"sourceTime\":\"2026-04-29 00:00:00\",\"sourceType\":\"采购入库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":236946.640000,\"type\":\"付款\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (9683, 63, '接口日志', '43.174.53.48/1.9.116.218', '2026-10-06 06:36:52', 0, 'DepotHeadController.getNeedCount(..)', NULL, 'GET /apis/depotHead/getNeedCount', '{\"type\":\"vendor\"}', '{\"code\":200,\"data\":{\"needCount\":1}}'); +INSERT INTO `tbl_log` VALUES (9684, 63, '接口日志', '43.174.52.31/1.9.116.218', '2026-10-06 06:36:54', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9685, 63, '接口日志', '43.174.32.33/1.9.116.218', '2026-10-06 06:36:54', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (9686, 63, '接口日志', '43.152.142.133/1.9.116.218', '2026-10-06 06:36:54', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9687, 63, '接口日志', '43.152.142.68/1.9.116.218', '2026-10-06 06:36:54', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (9688, 63, '接口日志', '43.152.142.142/1.9.116.218', '2026-10-06 06:36:54', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"其它\\\",\\\"subType\\\":\\\"请购单\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-07-06\\\",\\\"endTime\\\":\\\"2026-10-06\\\",\\\"createTimeRange\\\":[\\\"2026-07-05T16:00:00.000Z\\\",\\\"2026-10-05T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"backAmount\":0,\"changeAmount\":0,\"createTime\":1789720084000,\"creator\":63,\"debt\":0,\"defaultNumber\":\"QGD00000001738\",\"deleteFlag\":\"0\",\"deposit\":0,\"discountLastMoney\":0,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1722,\"lastDebt\":0,\"lastDeposit\":0.000000,\"materialCount\":10000.000000,\"materialsList\":\"MD-4G111(VF) 包装 MD-4G111(VF) packing MD-4G111(VF) \",\"number\":\"QGD00000001738\",\"operTime\":1789734467000,\"operTimeStr\":\"2026-09-18 16:27:47\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"请购单\",\"type\":\"其它\",\"userName\":\"admin\"},{\"backAmount\":0,\"changeAmount\":0,\"createTime\":1789717442000,\"creator\":63,\"debt\":0,\"defaultNumber\":\"QGD00000001719\",\"deleteFlag\":\"0\",\"deposit\":0,\"discountLastMoney\":0,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1715,\"lastDebt\":0,\"lastDeposit\":0.000000,\"materialCount\":7.000000,\"materialsList\":\"MD-4G111(VF) 4G模块 MD-4G111(VF) MD-4G111(VF) \",\"number\":\"QGD00000001719\",\"operTime\":1789717427000,\"operTimeStr\":\"2026-09-18 11:43:47\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"请购单\",\"type\":\"其它\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (9689, 63, '接口日志', '43.168.32.240/1.9.116.218', '2026-10-06 06:36:55', 0, 'SupplierController.findBySelectSup(..)', NULL, 'POST /apis/supplier/findBySelect_sup', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司\",\"id\":89}]'); +INSERT INTO `tbl_log` VALUES (9690, 63, '接口日志', '43.174.54.44/1.9.116.218', '2026-10-06 06:36:55', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (9691, 63, '接口日志', '43.152.142.41/1.9.116.218', '2026-10-06 06:36:55', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (9692, 63, '接口日志', '43.152.142.34/1.9.116.218', '2026-10-06 06:36:55', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (9693, 63, '接口日志', '43.174.55.40/1.9.116.218', '2026-10-06 06:36:55', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9694, 63, '接口日志', '43.174.32.19/1.9.116.218', '2026-10-06 06:36:55', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9695, 63, '接口日志', '43.174.32.12/1.9.116.218', '2026-10-06 06:36:55', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"出库\\\",\\\"subType\\\":\\\"采购退货\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-07-06\\\",\\\"endTime\\\":\\\"2026-10-06\\\",\\\"createTimeRange\\\":[\\\"2026-07-05T16:00:00.000Z\\\",\\\"2026-10-05T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9696, 63, '接口日志', '43.168.32.240/1.9.116.218', '2026-10-06 06:36:56', 0, 'SupplierController.findBySelectSup(..)', NULL, 'POST /apis/supplier/findBySelect_sup', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司\",\"id\":89}]'); +INSERT INTO `tbl_log` VALUES (9697, 63, '接口日志', '43.152.142.140/1.9.116.218', '2026-10-06 06:36:56', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9698, 63, '接口日志', '43.152.142.31/1.9.116.218', '2026-10-06 06:36:56', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (9699, 63, '接口日志', '43.152.142.110/1.9.116.218', '2026-10-06 06:36:56', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (9700, 63, '接口日志', '43.174.53.16/1.9.116.218', '2026-10-06 06:36:56', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"入库\\\",\\\"subType\\\":\\\"采购\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-07-06\\\",\\\"endTime\\\":\\\"2026-10-06\\\",\\\"createTimeRange\\\":[\\\"2026-07-05T16:00:00.000Z\\\",\\\"2026-10-05T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789720142000,\"creator\":63,\"debt\":100000.000000,\"defaultNumber\":\"CGRK00000001740\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":100000.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1724,\"lastDebt\":100000.000000,\"lastDeposit\":0.000000,\"linkNumber\":\"CGDD00000001739\",\"materialCount\":10000.000000,\"materialsList\":\"MD-4G111(VF) 包装 MD-4G111(VF) packing MD-4G111(VF) \",\"number\":\"CGRK00000001740\",\"operTime\":1789734542000,\"operTimeStr\":\"2026-09-18 16:29:02\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"采购\",\"totalPrice\":100000.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789717476000,\"creator\":63,\"debt\":0.700000,\"defaultNumber\":\"CGRK00000001721\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":0.700000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1717,\"lastDebt\":0.700000,\"lastDeposit\":0.000000,\"linkNumber\":\"CGDD00000001720\",\"materialCount\":7.000000,\"materialsList\":\"MD-4G111(VF) 4G模块 MD-4G111(VF) MD-4G111(VF) \",\"number\":\"CGRK00000001721\",\"operTime\":1789717474000,\"operTimeStr\":\"2026-09-18 11:44:34\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"采购\",\"totalPrice\":0.700000,\"type\":\"入库\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (9701, 63, '接口日志', '43.152.142.62/1.9.116.218', '2026-10-06 06:36:56', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9702, 63, '接口日志', '43.152.142.45/1.9.116.218', '2026-10-06 06:36:56', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (9703, 63, '接口日志', '43.152.142.108/1.9.116.218', '2026-10-06 06:36:56', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9704, 63, '接口日志', '43.168.32.240/1.9.116.218', '2026-10-06 06:36:57', 0, 'SupplierController.findBySelectSup(..)', NULL, 'POST /apis/supplier/findBySelect_sup', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司\",\"id\":89}]'); +INSERT INTO `tbl_log` VALUES (9705, 63, '接口日志', '43.174.53.19/1.9.116.218', '2026-10-06 06:36:57', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9706, 63, '接口日志', '43.174.53.48/1.9.116.218', '2026-10-06 06:36:57', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (9707, 63, '接口日志', '43.152.142.128/1.9.116.218', '2026-10-06 06:36:57', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9708, 63, '接口日志', '43.174.32.14/1.9.116.218', '2026-10-06 06:36:57', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"其它\\\",\\\"subType\\\":\\\"采购订单\\\",\\\"linkApply\\\":\\\"\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-07-06\\\",\\\"endTime\\\":\\\"2026-10-06\\\",\\\"createTimeRange\\\":[\\\"2026-07-05T16:00:00.000Z\\\",\\\"2026-10-05T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789720113000,\"creator\":63,\"debt\":100000.000000,\"defaultNumber\":\"CGDD00000001739\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":100000.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1723,\"lastDebt\":100000.000000,\"lastDeposit\":0.000000,\"linkApply\":\"QGD00000001738\",\"materialCount\":10000.000000,\"materialsList\":\"MD-4G111(VF) 包装 MD-4G111(VF) packing MD-4G111(VF) \",\"number\":\"CGDD00000001739\",\"operTime\":1789734505000,\"operTimeStr\":\"2026-09-18 16:28:25\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"采购订单\",\"totalPrice\":100000.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789717459000,\"creator\":63,\"debt\":0.700000,\"defaultNumber\":\"CGDD00000001720\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":0.700000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1716,\"lastDebt\":0.700000,\"lastDeposit\":0.000000,\"linkApply\":\"QGD00000001719\",\"materialCount\":7.000000,\"materialsList\":\"MD-4G111(VF) 4G模块 MD-4G111(VF) MD-4G111(VF) \",\"number\":\"CGDD00000001720\",\"operTime\":1789717452000,\"operTimeStr\":\"2026-09-18 11:44:12\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"采购订单\",\"totalPrice\":0.700000,\"type\":\"其它\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (9709, 63, '接口日志', '43.152.142.84/1.9.116.218', '2026-10-06 06:36:57', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (9710, 63, '接口日志', '43.174.53.11/1.9.116.218', '2026-10-06 06:36:57', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (9711, 63, '接口日志', '43.168.32.240/1.9.116.218', '2026-10-06 06:37:21', 0, 'SupplierController.findBySelectSup(..)', NULL, 'POST /apis/supplier/findBySelect_sup', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司\",\"id\":89}]'); +INSERT INTO `tbl_log` VALUES (9712, 63, '接口日志', '43.174.32.33/1.9.116.218', '2026-10-06 06:37:21', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (9713, 63, '接口日志', '43.152.142.68/1.9.116.218', '2026-10-06 06:37:21', 0, 'OrganizationController.getAllOrganizationTreeByUser(..)', NULL, 'GET /apis/organization/getAllOrganizationTreeByUser', '{}', '[{\"children\":[{\"children\":[{\"children\":[],\"checked\":false,\"attributes\":\"12\",\"id\":14,\"state\":\"open\",\"title\":\"部门2\",\"value\":14,\"key\":14}],\"checked\":false,\"attributes\":\"jg1\",\"id\":13,\"state\":\"open\",\"title\":\"部门1\",\"value\":13,\"key\":13}],\"checked\":false,\"attributes\":\"001\",\"id\":12,\"state\":\"open\",\"title\":\"测试部门\",\"value\":12,\"key\":12}]'); +INSERT INTO `tbl_log` VALUES (9714, 63, '接口日志', '43.152.142.133/1.9.116.218', '2026-10-06 06:37:21', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9715, 63, '接口日志', '43.152.142.142/1.9.116.218', '2026-10-06 06:37:21', 0, 'DepotItemController.buyIn(..)', NULL, 'GET /apis/depotItem/buyIn', '{\"currentPage\":1,\"pageSize\":10,\"beginTime\":\"2026-07-06\",\"endTime\":\"2026-10-06\",\"materialParam\":\"\",\"mpList\":\"扩展1,扩展2,扩展3\"}', '{\"code\":200,\"data\":{\"total\":2,\"realityPriceTotal\":100000.700000,\"rows\":[{\"materialModel\":\"MD-4G111(VF)\",\"materialStandard\":\"MD-4G111(VF) packing\",\"materialUnit\":\"件\",\"outSum\":0.000000,\"barCode\":\"1001\",\"materialName\":\"MD-4G111(VF) 包装\",\"inOutSumPrice\":100000.000000,\"outSumPrice\":0.000000,\"inSum\":10000.000000,\"inSumPrice\":100000.000000},{\"otherField1\":\"\",\"materialMfrs\":\"浙江瑞银电子有限公司\",\"materialModel\":\"MD-4G111(VF)\",\"materialStandard\":\"MD-4G111(VF)\",\"materialColor\":\"\",\"materialBrand\":\"\",\"otherField3\":\"\",\"otherField2\":\"\",\"materialUnit\":\"件\",\"outSum\":0.000000,\"barCode\":\"C.4.T.0.00654\",\"materialName\":\"MD-4G111(VF) 4G模块\",\"inOutSumPrice\":0.700000,\"outSumPrice\":0.000000,\"inSum\":7.000000,\"inSumPrice\":0.700000}]}}'); +INSERT INTO `tbl_log` VALUES (9716, 63, '接口日志', '43.168.32.240/1.9.116.218', '2026-10-06 06:37:25', 0, 'SupplierController.findBySelectSup(..)', NULL, 'POST /apis/supplier/findBySelect_sup', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司\",\"id\":89}]'); +INSERT INTO `tbl_log` VALUES (9717, 63, '接口日志', '43.174.32.19/1.9.116.218', '2026-10-06 06:37:25', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9718, 63, '接口日志', '43.174.54.44/1.9.116.218', '2026-10-06 06:37:25', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (9719, 63, '接口日志', '43.174.32.12/1.9.116.218', '2026-10-06 06:37:25', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9720, 63, '接口日志', '43.152.142.41/1.9.116.218', '2026-10-06 06:37:25', 0, 'DepotHeadController.waitBillCount(..)', NULL, 'GET /apis/depotHead/waitBillCount', '{\"search\":\"{\\\"type\\\":\\\"入库\\\",\\\"subType\\\":\\\"采购,销售退货\\\",\\\"status\\\":\\\"1,3\\\"}\"}', '{\"code\":200,\"data\":{\"total\":47,\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9721, 63, '接口日志', '43.174.52.31/1.9.116.218', '2026-10-06 06:37:25', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"入库\\\",\\\"subType\\\":\\\"其它\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-07-06\\\",\\\"endTime\\\":\\\"2026-10-06\\\",\\\"createTimeRange\\\":[\\\"2026-07-05T16:00:00.000Z\\\",\\\"2026-10-05T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9722, 63, '接口日志', '43.152.142.34/1.9.116.218', '2026-10-06 06:37:25', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (9723, 63, '接口日志', '43.168.32.240/1.9.116.218', '2026-10-06 06:37:26', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (9724, 63, '接口日志', '43.152.142.128/1.9.116.218', '2026-10-06 06:37:26', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9725, 63, '接口日志', '43.174.53.16/1.9.116.218', '2026-10-06 06:37:26', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (9726, 63, '接口日志', '43.174.32.12/1.9.116.218', '2026-10-06 06:37:26', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (9727, 63, '接口日志', '43.174.52.31/1.9.116.218', '2026-10-06 06:37:26', 0, 'DepotHeadController.waitBillCount(..)', NULL, 'GET /apis/depotHead/waitBillCount', '{\"search\":\"{\\\"type\\\":\\\"出库\\\",\\\"subType\\\":\\\"销售,采购退货\\\",\\\"status\\\":\\\"1,3\\\"}\"}', '{\"code\":200,\"data\":{\"total\":167,\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9728, 63, '接口日志', '43.152.142.45/1.9.116.218', '2026-10-06 06:37:26', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9729, 63, '接口日志', '43.174.32.33/1.9.116.218', '2026-10-06 06:37:26', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"出库\\\",\\\"subType\\\":\\\"其它\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-07-06\\\",\\\"endTime\\\":\\\"2026-10-06\\\",\\\"createTimeRange\\\":[\\\"2026-07-05T16:00:00.000Z\\\",\\\"2026-10-05T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9730, 63, '接口日志', '43.168.32.240/1.9.116.218', '2026-10-06 06:37:28', 0, 'SupplierController.findBySelectSup(..)', NULL, 'POST /apis/supplier/findBySelect_sup', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司\",\"id\":89}]'); +INSERT INTO `tbl_log` VALUES (9731, 63, '接口日志', '43.152.142.34/1.9.116.218', '2026-10-06 06:37:28', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9732, 63, '接口日志', '43.174.53.48/1.9.116.218', '2026-10-06 06:37:28', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (9733, 63, '接口日志', '43.152.142.68/1.9.116.218', '2026-10-06 06:37:28', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9734, 63, '接口日志', '43.174.53.11/1.9.116.218', '2026-10-06 06:37:28', 0, 'DepotHeadController.waitBillCount(..)', NULL, 'GET /apis/depotHead/waitBillCount', '{\"search\":\"{\\\"type\\\":\\\"入库\\\",\\\"subType\\\":\\\"采购,销售退货\\\",\\\"status\\\":\\\"1,3\\\"}\"}', '{\"code\":200,\"data\":{\"total\":47,\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9735, 63, '接口日志', '43.174.32.14/1.9.116.218', '2026-10-06 06:37:28', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"入库\\\",\\\"subType\\\":\\\"总部入库\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-07-06\\\",\\\"endTime\\\":\\\"2026-10-06\\\",\\\"createTimeRange\\\":[\\\"2026-07-05T16:00:00.000Z\\\",\\\"2026-10-05T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":33,\"rows\":[{\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789718802000,\"creator\":63,\"debt\":595000.000000,\"defaultNumber\":\"SM2609180001\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discountLastMoney\":595000.000000,\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1721,\"lastDebt\":595000.000000,\"materialCount\":10000.000000,\"materialsList\":\"1PH WS79\",\"number\":\"SM2609180001\",\"operTime\":1789733163000,\"operTimeStr\":\"2026-09-18 16:06:03\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"totalPrice\":595000.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1786046400000,\"creator\":63,\"debt\":183.600000,\"defaultNumber\":\"SM2608070007\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":183.600000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1423,\"lastDebt\":183.600000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":1836.000000,\"materialsList\":\"MT-3NSXL(VC)\",\"number\":\"SM2608070007\",\"operTime\":1786046400000,\"operTimeStr\":\"2026-08-07 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":183.600000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1786046400000,\"creator\":63,\"debt\":2077650.000000,\"defaultNumber\":\"SM2608070002\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":2077650.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1422,\"lastDebt\":2077650.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":9500.000000,\"materialsList\":\"DDSD1226-T49(VB)\",\"number\":\"SM2608070002\",\"operTime\":1786046400000,\"operTimeStr\":\"2026-08-07 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":2077650.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1785960000000,\"creator\":63,\"debt\":91854.000000,\"defaultNumber\":\"SM2608060005\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":91854.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1421,\"lastDebt\":91854.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":420.000000,\"materialsList\":\"DDSD1226-T49(VB)\",\"number\":\"SM2608060005\",\"operTime\":1785960000000,\"operTimeStr\":\"2026-08-06 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":91854.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1785960000000,\"creator\":63,\"debt\":816.000000,\"defaultNumber\":\"SM2608060004\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":816.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1420,\"lastDebt\":816.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":8160.000000,\"materialsList\":\"MT-3NSXL(VC)\",\"number\":\"SM2608060004\",\"operTime\":1785960000000,\"operTimeStr\":\"2026-08-06 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":816.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1784836800000,\"creator\":63,\"debt\":91854.000000,\"defaultNumber\":\"SM2607240005\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":91854.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1419,\"lastDebt\":91854.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":420.000000,\"materialsList\":\"DDSD1226-T49(VB)\",\"number\":\"SM2607240005\",\"operTime\":1784836800000,\"operTimeStr\":\"2026-07-24 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":91854.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1784750400000,\"creator\":63,\"debt\":551124.000000,\"defaultNumber\":\"SM2607230004\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":551124.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1418,\"lastDebt\":551124.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":2520.000000,\"materialsList\":\"DDSD1226-T49(VB)\",\"number\":\"SM2607230004\",\"operTime\":1784750400000,\"operTimeStr\":\"2026-07-23 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":551124.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1784750400000,\"creator\":63,\"debt\":1285956.000000,\"defaultNumber\":\"SM2607230002\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":1285956.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1417,\"lastDebt\":1285956.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":5880.000000,\"materialsList\":\"DDSD1226-T49(VB)\",\"number\":\"SM2607230002\",\"operTime\":1784750400000,\"operTimeStr\":\"2026-07-23 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":1285956.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1784664000000,\"creator\":63,\"debt\":1020.000000,\"defaultNumber\":\"SM2607220006\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":1020.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1416,\"lastDebt\":1020.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":10200.000000,\"materialsList\":\"MT-3NSXL(VC)\",\"number\":\"SM2607220006\",\"operTime\":1784664000000,\"operTimeStr\":\"2026-07-22 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":1020.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1784664000000,\"creator\":63,\"debt\":275562.000000,\"defaultNumber\":\"SM2607220004\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":275562.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1415,\"lastDebt\":275562.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":1260.000000,\"materialsList\":\"DDSD1226-T49(VB)\",\"number\":\"SM2607220004\",\"operTime\":1784664000000,\"operTimeStr\":\"2026-07-22 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":275562.000000,\"type\":\"入库\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (9736, 63, '接口日志', '43.152.142.133/1.9.116.218', '2026-10-06 06:37:28', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (9737, 63, '接口日志', '43.152.142.41/1.9.116.218', '2026-10-06 06:37:33', 0, 'PackBomController.getList(..)', NULL, 'GET /apis/packBom/list', '{\"search\":\"{\\\"bomNumber\\\":\\\"\\\",\\\"bomName\\\":\\\"\\\",\\\"productMaterialParam\\\":\\\"\\\",\\\"outputMaterialParam\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"bomName\":\"v1.0\",\"bomNumber\":\"BOM00000001735\",\"createTime\":1789719259000,\"creator\":63,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"itemCount\":1,\"outputMaterialExtendId\":123,\"outputMaterialId\":703,\"outputMaterialName\":\"1PH WS79\",\"outputNumber\":1.000000,\"productMaterialExtendId\":123,\"productMaterialId\":703,\"version\":\"v1.0\"}]}}'); +INSERT INTO `tbl_log` VALUES (9738, 63, '接口日志', '43.152.142.108/1.9.116.218', '2026-10-06 06:37:49', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9739, 63, '接口日志', '43.174.53.19/1.9.116.218', '2026-10-06 06:37:49', 0, 'ProductionOrderController.getList(..)', NULL, 'GET /apis/productionOrder/list', '{\"search\":\"{\\\"orderNumber\\\":\\\"\\\",\\\"sourceNumber\\\":\\\"\\\",\\\"productMaterialParam\\\":\\\"\\\",\\\"beginTime\\\":\\\"\\\",\\\"endTime\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"auditBy\":63,\"auditByName\":\"admin\",\"auditTime\":1789719775000,\"bomId\":18,\"bomName\":\"v1.0\",\"createTime\":1789719619000,\"creator\":63,\"creatorName\":\"admin\",\"deleteFlag\":\"0\",\"finishedQuantity\":0.000000,\"id\":11,\"orderNumber\":\"GD20260918122018493\",\"orderQuantity\":10000.000000,\"outputMaterialExtendId\":123,\"outputMaterialId\":703,\"outputMaterialName\":\"1PH WS79\",\"outputQuantity\":10000.000000,\"planEndDate\":1790280000000,\"planStartDate\":1789675200000,\"priority\":\"0\",\"productMaterialExtendId\":123,\"productMaterialId\":703,\"releaseBy\":63,\"releaseTime\":1789719775000,\"remark\":\"\",\"sourceId\":1719,\"sourceNumber\":\"XSDD00000001726\",\"sourceType\":\"销售订单\",\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (9740, 63, '接口日志', '43.174.54.44/1.9.116.218', '2026-10-06 06:37:50', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9741, 63, '接口日志', '43.152.142.142/1.9.116.218', '2026-10-06 06:37:50', 0, 'ProductionRequisitionController.getList(..)', NULL, 'GET /apis/productionRequisition/list', '{\"search\":\"{\\\"requisitionNumber\\\":\\\"\\\",\\\"orderNumber\\\":\\\"\\\",\\\"beginTime\\\":\\\"\\\",\\\"endTime\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"confirmBy\":63,\"confirmByName\":\"admin\",\"confirmTime\":1790242827000,\"createTime\":1789720317000,\"creator\":63,\"creatorName\":\"admin\",\"deleteFlag\":\"0\",\"depotId\":25,\"depotName\":\"半成品仓库\",\"id\":9,\"itemCount\":1,\"materialsList\":\"MD-4G111(VF) 包装\",\"orderId\":11,\"orderNumber\":\"GD20260918122018493\",\"requisitionNumber\":\"LL20260918123156921\",\"status\":\"1\"},{\"createTime\":1789719809000,\"creator\":63,\"creatorName\":\"admin\",\"deleteFlag\":\"0\",\"depotId\":25,\"depotName\":\"半成品仓库\",\"id\":8,\"itemCount\":1,\"materialsList\":\"MD-4G111(VF) 包装\",\"orderId\":11,\"orderNumber\":\"GD20260918122018493\",\"remark\":\"11\",\"requisitionNumber\":\"LL20260918122329111\",\"status\":\"2\"}]}}'); +INSERT INTO `tbl_log` VALUES (9742, 63, '接口日志', '43.174.55.40/1.9.116.218', '2026-10-06 06:37:50', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9743, 63, '接口日志', '43.152.142.110/1.9.116.218', '2026-10-06 06:37:51', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9744, 63, '接口日志', '43.152.142.62/1.9.116.218', '2026-10-06 06:37:51', 0, 'ProductionReportController.getList(..)', NULL, 'GET /apis/productionReport/list', '{\"search\":\"{\\\"reportNumber\\\":\\\"\\\",\\\"orderNumber\\\":\\\"\\\",\\\"beginTime\\\":\\\"\\\",\\\"endTime\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9745, NULL, '接口日志', '43.174.32.19/1.9.116.218', '2026-10-06 06:38:14', 0, 'UserController.logout(..)', NULL, 'GET /apis/user/logout', '{}', '{\"code\":400}'); +INSERT INTO `tbl_log` VALUES (9746, NULL, '接口日志', '43.152.142.31/1.9.116.218', '2026-10-06 06:38:15', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (9747, NULL, '接口日志', '43.152.142.140/1.9.116.218', '2026-10-06 06:38:15', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (9748, NULL, '接口日志', '43.152.142.128/1.9.116.218', '2026-10-06 06:38:16', 0, 'UserController.randomImage(..)', NULL, 'GET /apis/user/randomImage', '{}', '{\"code\":200,\"data\":{\"base64\":\"data:image/jpg;base64,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\",\"uuid\":\"72db5edee6af4a8a94c1ce1b905a8432\"}}'); +INSERT INTO `tbl_log` VALUES (9749, NULL, '接口日志', '43.174.32.33/1.9.116.218', '2026-10-06 06:38:16', 0, 'PlatformConfigController.getPlatformCheckcodeFlag(..)', NULL, 'GET /apis/platformConfig/getPlatform/checkcodeFlag', '{}', '\"1\"'); +INSERT INTO `tbl_log` VALUES (9750, NULL, '接口日志', '43.174.54.44/1.9.116.218', '2026-10-06 07:06:03', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (9751, NULL, '接口日志', '43.152.142.33/1.9.116.218', '2026-10-06 07:06:03', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (9752, NULL, '接口日志', '43.174.32.14/1.9.116.218', '2026-10-06 07:06:03', 0, 'PlatformConfigController.getPlatformCheckcodeFlag(..)', NULL, 'GET /apis/platformConfig/getPlatform/checkcodeFlag', '{}', '\"1\"'); +INSERT INTO `tbl_log` VALUES (9753, NULL, '接口日志', '43.152.142.83/1.9.116.218', '2026-10-06 07:06:03', 0, 'UserController.randomImage(..)', NULL, 'GET /apis/user/randomImage', '{}', '{\"code\":200,\"data\":{\"base64\":\"data:image/jpg;base64,/9j/4AAQSkZJRgABAgAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAAjAGkDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3pTMLhgwUxFQUIHIPcHnn2x7/AIsWYyhIZY3SWSLe6q2fL6DG4d+Tgj+6fSmxSRwL5ZjZGaVvkXLn5mbDHGcA8nngdK80+IHgHwrq+sSan4x8Y3lnHKxaytXvY4YolWONXEayBskldxK4+8BjuQD02d47S0LymVo4yCSMlgM98ckDv7DnNEl1Cm0vI0YCiQgoRlTxzkcAZBPpxnAr54+Flvf2PxZvdJ8J6tean4QgaQ3Uu4pDtaPCk9vMDqqhlALBCRhc49+VJbN5fMmSOB5FKME4UDGd5JyS3IyfTrkgUAaDsVRmClyBkKMZPtzxVddy+RFGJo8guS/zgAEZVjk8/Nxg9u4GD8w3nijTviV4o1C98Y+KJ9J8LW0oW0sIlbzHyH8siNQ43ABi8hDYLBRgMMemfCrQfBel3l9rHg7xPfX1kIvs99bXORhyytHIV2IQABINxUj5mwRtbIB6o8swXiMK3mhRwWBXIyeOnGevQ+3JkllWGMyMHIHZELH8gCazw8lrLarcXEty6h1Z0UIpc4KhuQAcHAB6k15BrHwN8B6F4eutbv8AU9eitbaAzOrTwK544QZjA3E4UDPJIFAHt0cjSO5HlmMHCsr5JI4IIxxg8dTUSmZjNBukWRTuWZoxtIJJAHPOAMHoe/Gc18+fs3aHcHWdV19mC2y25skU9ZHLI7Y5/hATPH8Yr3DxPraeGfDcupXdlqF/DAAbj7Aq+YijrIQWX5RjnBOAc9ASADWjkmMrpJBtUZKurhgR2z0IPtgj3pGllS62GFjCVXEi4OGyc5Gc+nb1zXB2nxV8G3vg+98TC+mhSB/LeCQKLtHJJSNVyc7tpYclcbskBWC63g3xXZ+NrFtTsNG1KzsBMfLmuY441mf+Jl2sWOCCpPQ5I55AAOlMiS3JgDSLJFh8jgH29x/9fHKnFioTtgfKQuzTSDdt5wcYycngYUVNQA0hEYvt+Y4UkLknnj8OT+tee+I7r4X+M7g2/iLU9Nkn0m4mtvLur5rRo5MqJAAWQsMqBu5HBwetehKm13bcx3Y+UnIB9v8AP9a4TUPhZ4K1/WJdR1LQFjv7hmlnQTyIJOcbsI4XdwCcd2Ock5oA8g8CywaZ8dprDwlPPJoDysJVjkaWIAIQGLDG5FlfarHkggZO85+mB5xePIjCbDvAJJDcYwfT736VgaH4X0PwvY3FhpeixW0HyszwKS8q7mI3OSXZkJPckcbcZAG7CnlRxJDbpFFjJThSnfAAyDz15/OgD5u+FejeFvD3i3xLpHjxNKS/tNkVv/aYAhZQzb2TzQFOf3RUkbipyON1T+A7SxX9o25XwhN5mh28crTPDLhGj8oK3oGXz2XAAI4BHABr2nxB8PfC/iuS3l13TBezW6GOOZpXRwhOdpZCCwHbOcZPckm1oPhnSPCVqLXQtGgtYZHCyNEcyMvJDOzfM2CxABJwDx6UAavkxTyPJLbYba0OXwd6H6E5B9/evGf2gvEsy2mn+DtNRpbzVCslxHHGWd4w+IkHHO6QE8HOUx0bn2eJWgsoEjg27VRfL352DgHnvgfnisC88A+GtU8Q23iC90yR9TtXjNvI11KBF5Zym1A+wLkZxjHJJGSaAF8G6EPBngrStCaTzJreBjI5JMfmEl3+baMLuZsZAOMdTWoZ7G3tTJdPEY4YWjuLmR1ZYwoywkc9BjJJOBxzjIqW0mWaVnxOkjr80bZZEKkqcH7uc9gecA4rH8QeHNH1mxurbWNPmfT2ZWmWK4aNJFRQVZgjKcLz8vIyucZC4APlLWrEXd9rms6Jp1+3gqPVFD+U5SM8tswSmF4ZtuVOwSKpyWG7640N9G1XRtL1PRRAbMQKLRoxwkYG3ZgHggZXB+6QeODVDT/BugWfhN9AOjWtro1ypE9k5LlpGYcmTcSTnbtP3hhcEYAEuheA/Dnhq2uLbSLCS2guCDJH9qldScYyAzHBwcEjGRweKAOgWVZIUljBdXAIxxwe/P50+qMNtam5TyY4ojblsxIqggtwG46ZAPHfI7ir1ACMqupVlDKRggjIIpsUUcEYjijWNB0VBgD8KKKAH0jKrjDKGGQcEZ5ByP1oooAERURURQqqMBQMACloooARVVBhVCjJOAMck5NII1EjSAfMwCk+wzj+ZoooAdRRRQAjIrjDqGGQcEZ5ByD+dN8qPzvO8tfN27d+Pmx1xn0oooAfRRRQB//Z\",\"uuid\":\"997cbcf74aab44d59845f2f554d5cd60\"}}'); +INSERT INTO `tbl_log` VALUES (9754, 63, '用户', '43.174.55.40/1.9.116.218', '2026-10-06 07:06:44', 0, '登录admin', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (9755, NULL, '接口日志', '43.174.55.40/1.9.116.218', '2026-10-06 07:06:44', 0, 'UserController.login(..)', NULL, 'POST /apis/user/login', '{\"userParam\":{\"code\":\"367x\",\"loginName\":\"admin\",\"password\":\"******\",\"uuid\":\"997cbcf74aab44d59845f2f554d5cd60\"}}', '{\"code\":200,\"data\":{\"pwdSimple\":\"******\",\"user\":{\"deleteFlag\":\"0\",\"description\":\"\",\"email\":\"666666@qq.com\",\"id\":63,\"ismanager\":1,\"isystem\":1,\"leaderFlag\":\"0\",\"loginName\":\"admin\",\"password\":\"******\",\"phonenum\":\"1123123123132\",\"position\":\"主管\",\"status\":0,\"tenantId\":63,\"username\":\"admin\"},\"msgTip\":\"user can login\",\"token\":\"******\"}}'); +INSERT INTO `tbl_log` VALUES (9756, 63, '接口日志', '43.168.32.214/1.9.116.218', '2026-10-06 07:06:44', 0, 'FunctionController.findMenuByPNumber(..)', NULL, 'POST /apis/function/findMenuByPNumber', '{\"jsonObject\":{\"userId\":63,\"pNumber\":0}}', '[{\"component\":\"/layouts/TabLayout\",\"icon\":\"home\",\"id\":0,\"text\":\"首页\",\"url\":\"/dashboard/analysis\",\"textEn\":\"Home\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/SaleOrderList\",\"icon\":\"profile\",\"id\":242,\"text\":\"销售订单\",\"url\":\"/bill/sale_order\",\"textEn\":\"Sales Orders\"},{\"component\":\"/bill/SaleOutList\",\"icon\":\"profile\",\"id\":41,\"text\":\"销售出库\",\"url\":\"/bill/sale_out\",\"textEn\":\"Sales Shipments\"},{\"component\":\"/bill/DeliveryPlanList\",\"icon\":\"profile\",\"id\":271,\"text\":\"交货计划管理\",\"url\":\"/bill/delivery_plan\",\"textEn\":\"Delivery Plans\"},{\"component\":\"/bill/SaleShipmentList\",\"icon\":\"car\",\"id\":268,\"text\":\"发货管理\",\"url\":\"/bill/sale_shipment\",\"textEn\":\"Shipment Management\"},{\"component\":\"/bill/SaleBackList\",\"icon\":\"profile\",\"id\":200,\"text\":\"销售退货\",\"url\":\"/bill/sale_back\",\"textEn\":\"Sales Returns\"},{\"component\":\"/bill/RetailOutList\",\"icon\":\"profile\",\"id\":210,\"text\":\"零售出库\",\"url\":\"/bill/retail_out\",\"textEn\":\"Retail Shipments\"},{\"component\":\"/bill/RetailBackList\",\"icon\":\"profile\",\"id\":211,\"text\":\"零售退货\",\"url\":\"/bill/retail_back\",\"textEn\":\"Retail Returns\"}],\"icon\":\"shopping-cart\",\"id\":38,\"text\":\"销售管理\",\"url\":\"/billB\",\"textEn\":\"Sales Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/PurchaseApplyList\",\"icon\":\"profile\",\"id\":261,\"text\":\"请购单\",\"url\":\"/bill/purchase_apply\",\"textEn\":\"Purchase Requisitions\"},{\"component\":\"/bill/PurchaseOrderList\",\"icon\":\"profile\",\"id\":241,\"text\":\"采购订单\",\"url\":\"/bill/purchase_order\",\"textEn\":\"Purchase Orders\"},{\"component\":\"/bill/PurchaseInList\",\"icon\":\"profile\",\"id\":33,\"text\":\"采购入库\",\"url\":\"/bill/purchase_in\",\"textEn\":\"Purchase Receipts\"},{\"component\":\"/bill/PurchaseBackList\",\"icon\":\"profile\",\"id\":199,\"text\":\"采购退货\",\"url\":\"/bill/purchase_back\",\"textEn\":\"Purchase Returns\"}],\"icon\":\"retweet\",\"id\":32,\"text\":\"采购管理\",\"url\":\"/bill\",\"textEn\":\"Purchase Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/production/PackBomList\",\"icon\":\"profile\",\"id\":263,\"text\":\"生产方案\",\"url\":\"/production/pack_bom\",\"textEn\":\"Production BOMs\"},{\"component\":\"/production/OrderList\",\"icon\":\"profile\",\"id\":264,\"text\":\"生产工单\",\"url\":\"/production/order\",\"textEn\":\"Production Orders\"},{\"component\":\"/production/RequisitionList\",\"icon\":\"profile\",\"id\":265,\"text\":\"领料管理\",\"url\":\"/production/requisition\",\"textEn\":\"Material Requisitions\"},{\"component\":\"/production/ReportList\",\"icon\":\"profile\",\"id\":266,\"text\":\"完工报工\",\"url\":\"/production/report\",\"textEn\":\"Production Reports\"}],\"icon\":\"cluster\",\"id\":262,\"text\":\"生产管理\",\"url\":\"/production\",\"textEn\":\"Production Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/MaterialStock\",\"icon\":\"profile\",\"id\":246,\"text\":\"商品库存\",\"url\":\"/report/material_stock\",\"textEn\":\"Product Inventory\"},{\"component\":\"/bill/OtherInList\",\"icon\":\"profile\",\"id\":201,\"text\":\"其它入库\",\"url\":\"/bill/other_in\",\"textEn\":\"Other Receipts\"},{\"component\":\"/bill/OtherOutList\",\"icon\":\"profile\",\"id\":202,\"text\":\"其它出库\",\"url\":\"/bill/other_out\",\"textEn\":\"Other Shipments\"},{\"component\":\"/bill/HeadquartersInList\",\"icon\":\"profile\",\"id\":270,\"text\":\"总部入库\",\"url\":\"/bill/headquarters_in\",\"textEn\":\"Headquarters Receipts\"}],\"icon\":\"hdd\",\"id\":239,\"text\":\"仓库管理\",\"url\":\"/billD\",\"textEn\":\"Warehouse Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/financial/MoneyInList\",\"icon\":\"profile\",\"id\":204,\"text\":\"收款单\",\"url\":\"/financial/money_in\",\"textEn\":\"Receipt Vouchers\"},{\"component\":\"/financial/MoneyOutList\",\"icon\":\"profile\",\"id\":205,\"text\":\"付款单\",\"url\":\"/financial/money_out\",\"textEn\":\"Payment Vouchers\"}],\"icon\":\"money-collect\",\"id\":44,\"text\":\"财务管理\",\"url\":\"/financial\",\"textEn\":\"Finance Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/asset/AssetDashboard\",\"icon\":\"dashboard\",\"id\":276,\"text\":\"资产汇总\",\"url\":\"/asset\",\"textEn\":\"Asset Overview\"},{\"component\":\"/asset/AssetList\",\"icon\":\"profile\",\"id\":273,\"text\":\"资产台账\",\"url\":\"/asset/ledger\",\"textEn\":\"Asset Ledger\"},{\"component\":\"/asset/DeviceList\",\"icon\":\"tool\",\"id\":274,\"text\":\"设备台账\",\"url\":\"/asset/device\",\"textEn\":\"Device Ledger\"},{\"component\":\"/asset/InventoryList\",\"icon\":\"scan\",\"id\":275,\"text\":\"资产盘点\",\"url\":\"/asset/inventory\",\"textEn\":\"Asset Inventory\"}],\"icon\":\"bank\",\"id\":272,\"text\":\"资产管理\",\"url\":\"/assetManagement\",\"textEn\":\"Asset Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/material/MaterialCategoryList\",\"icon\":\"profile\",\"id\":22,\"text\":\"商品类别\",\"url\":\"/material/material_category\",\"textEn\":\"Product Categories\"},{\"component\":\"/material/MaterialList\",\"icon\":\"profile\",\"id\":23,\"text\":\"商品信息\",\"url\":\"/material/material\",\"textEn\":\"Product Information\"},{\"component\":\"/system/UnitList\",\"icon\":\"profile\",\"id\":220,\"text\":\"多单位\",\"url\":\"/system/unit\",\"textEn\":\"Multiple Units\"},{\"component\":\"/material/MaterialAttributeList\",\"icon\":\"profile\",\"id\":247,\"text\":\"多属性\",\"url\":\"/material/material_attribute\",\"textEn\":\"Product Attributes\"}],\"icon\":\"shopping\",\"id\":21,\"text\":\"商品管理\",\"url\":\"/material\",\"textEn\":\"Product Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/AccountReport\",\"icon\":\"profile\",\"id\":207,\"text\":\"账户统计\",\"url\":\"/report/account_report\",\"textEn\":\"Account Summary\"},{\"component\":\"/report/RetailOutReport\",\"icon\":\"profile\",\"id\":259,\"text\":\"零售统计\",\"url\":\"/report/retail_out_report\",\"textEn\":\"Retail Summary\"},{\"component\":\"/report/BuyInReport\",\"icon\":\"profile\",\"id\":208,\"text\":\"采购统计\",\"url\":\"/report/buy_in_report\",\"textEn\":\"Purchase Summary\"},{\"component\":\"/report/SaleOutReport\",\"icon\":\"profile\",\"id\":209,\"text\":\"销售统计\",\"url\":\"/report/sale_out_report\",\"textEn\":\"Sales Summary\"},{\"component\":\"/report/InDetail\",\"icon\":\"profile\",\"id\":226,\"text\":\"入库明细\",\"url\":\"/report/in_detail\",\"textEn\":\"Inbound Details\"},{\"component\":\"/report/OutDetail\",\"icon\":\"profile\",\"id\":227,\"text\":\"出库明细\",\"url\":\"/report/out_detail\",\"textEn\":\"Outbound Details\"},{\"component\":\"/report/InMaterialCount\",\"icon\":\"profile\",\"id\":228,\"text\":\"入库汇总\",\"url\":\"/report/in_material_count\",\"textEn\":\"Inbound Summary\"},{\"component\":\"/report/OutMaterialCount\",\"icon\":\"profile\",\"id\":229,\"text\":\"出库汇总\",\"url\":\"/report/out_material_count\",\"textEn\":\"Outbound Summary\"},{\"component\":\"/report/InOutStockReport\",\"icon\":\"profile\",\"id\":59,\"text\":\"进销存统计\",\"url\":\"/report/in_out_stock_report\",\"textEn\":\"Inventory Transaction Summary\"},{\"component\":\"/report/CustomerAccount\",\"icon\":\"profile\",\"id\":235,\"text\":\"客户对账\",\"url\":\"/report/customer_account\",\"textEn\":\"Customer Reconciliation\"},{\"component\":\"/report/VendorAccount\",\"icon\":\"profile\",\"id\":237,\"text\":\"供应商对账\",\"url\":\"/report/vendor_account\",\"textEn\":\"Supplier Reconciliation\"},{\"component\":\"/report/StockWarningReport\",\"icon\":\"profile\",\"id\":244,\"text\":\"库存预警\",\"url\":\"/report/stock_warning_report\",\"textEn\":\"Stock Alerts\"}],\"icon\":\"pie-chart\",\"id\":198,\"text\":\"报表查询\",\"url\":\"/report\",\"textEn\":\"Reports\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/VendorList\",\"icon\":\"profile\",\"id\":25,\"text\":\"供应商信息\",\"url\":\"/system/vendor\",\"textEn\":\"Suppliers\"},{\"component\":\"/system/CustomerList\",\"icon\":\"profile\",\"id\":217,\"text\":\"客户信息\",\"url\":\"/system/customer\",\"textEn\":\"Customers\"},{\"component\":\"/system/MemberList\",\"icon\":\"profile\",\"id\":218,\"text\":\"会员信息\",\"url\":\"/system/member\",\"textEn\":\"Members\"},{\"component\":\"/system/CustomerCategoryList\",\"icon\":\"bars\",\"id\":267,\"text\":\"客户分类\",\"url\":\"/system/customerCategory\",\"textEn\":\"Customer Categories\"},{\"component\":\"/system/DepotList\",\"icon\":\"profile\",\"id\":26,\"text\":\"仓库信息\",\"url\":\"/system/depot\",\"textEn\":\"Warehouses\"},{\"component\":\"/system/InOutItemList\",\"icon\":\"profile\",\"id\":194,\"text\":\"收支项目\",\"url\":\"/system/in_out_item\",\"textEn\":\"Income and Expense Items\"},{\"component\":\"/system/AccountList\",\"icon\":\"profile\",\"id\":195,\"text\":\"结算账户\",\"url\":\"/system/account\",\"textEn\":\"Settlement Accounts\"},{\"component\":\"/system/PersonList\",\"icon\":\"profile\",\"id\":31,\"text\":\"操作人员管理\",\"url\":\"/system/person\",\"textEn\":\"Operators\"}],\"icon\":\"appstore\",\"id\":24,\"text\":\"基础资料\",\"url\":\"/systemA\",\"textEn\":\"Master Data\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/RoleList\",\"icon\":\"profile\",\"id\":13,\"text\":\"角色管理\",\"url\":\"/system/role\",\"textEn\":\"Role Management\"},{\"component\":\"/system/UserList\",\"icon\":\"profile\",\"id\":14,\"text\":\"用户管理\",\"url\":\"/system/user\",\"textEn\":\"User Management\"},{\"component\":\"/system/OrganizationList\",\"icon\":\"profile\",\"id\":243,\"text\":\"部门管理\",\"url\":\"/system/organization\",\"textEn\":\"Department Management\"},{\"component\":\"/system/LogList\",\"icon\":\"profile\",\"id\":15,\"text\":\"日志管理\",\"url\":\"/system/log\",\"textEn\":\"Log Management\"},{\"component\":\"/material/MaterialPropertyList\",\"icon\":\"profile\",\"id\":236,\"text\":\"商品属性\",\"url\":\"/material/material_property\",\"textEn\":\"Product Properties\"},{\"component\":\"/system/SystemConfigList\",\"icon\":\"profile\",\"id\":234,\"text\":\"系统配置\",\"url\":\"/system/system_config\",\"textEn\":\"System Configuration\"},{\"component\":\"/system/FunctionList\",\"icon\":\"profile\",\"id\":16,\"text\":\"菜单管理\",\"url\":\"/system/function\",\"textEn\":\"Resource Menus\"},{\"component\":\"/system/PluginList\",\"icon\":\"profile\",\"id\":245,\"text\":\"插件管理\",\"url\":\"/system/plugin\",\"textEn\":\"Plugin Management\"},{\"component\":\"/system/DictList\",\"icon\":\"profile\",\"id\":260,\"text\":\"字典管理\",\"url\":\"/system/dict\",\"textEn\":\"Dictionary Management\"},{\"component\":\"/system/PlatformConfigList\",\"icon\":\"profile\",\"id\":258,\"text\":\"平台配置\",\"url\":\"/system/platform_config\",\"textEn\":\"Platform Configuration\"}],\"icon\":\"setting\",\"id\":1,\"text\":\"系统管理\",\"url\":\"/system\",\"textEn\":\"System Management\"}]'); +INSERT INTO `tbl_log` VALUES (9757, 63, '接口日志', '43.174.32.12/1.9.116.218', '2026-10-06 07:06:44', 0, 'MaterialPropertyController.getAllList(..)', NULL, 'GET /apis/materialProperty/getAllList', '{}', '{\"code\":200,\"data\":[{\"anotherName\":\"扩展1\",\"id\":1,\"nativeName\":\"扩展1\"},{\"anotherName\":\"扩展2\",\"id\":2,\"nativeName\":\"扩展2\"},{\"anotherName\":\"扩展3\",\"id\":3,\"nativeName\":\"扩展3\"}]}'); +INSERT INTO `tbl_log` VALUES (9758, 63, '接口日志', '43.174.32.19/1.9.116.218', '2026-10-06 07:06:44', 0, 'UserController.getUserBtnByCurrentUser(..)', NULL, 'GET /apis/user/getUserBtnByCurrentUser', '{}', '{\"code\":200,\"data\":{\"userBtn\":[{\"btnStr\":\"8,1\",\"url\":\"/system/role\"},{\"btnStr\":\"1\",\"url\":\"/system/user\"},{\"btnStr\":\"1\",\"url\":\"/system/organization\"},{\"btnStr\":\"1\",\"url\":\"/material/material_property\"},{\"btnStr\":\"1\",\"url\":\"/system/system_config\"},{\"btnStr\":\"1\",\"url\":\"/system/function\"},{\"btnStr\":\"1\",\"url\":\"/system/plugin\"},{\"btnStr\":\"1\",\"url\":\"/material/material_category\"},{\"btnStr\":\"1,3\",\"url\":\"/material/material\"},{\"btnStr\":\"1\",\"url\":\"/system/unit\"},{\"btnStr\":\"1\",\"url\":\"/material/material_attribute\"},{\"btnStr\":\"1,3\",\"url\":\"/system/vendor\"},{\"btnStr\":\"1,3\",\"url\":\"/system/customer\"},{\"btnStr\":\"1,3\",\"url\":\"/system/member\"},{\"btnStr\":\"1\",\"url\":\"/system/depot\"},{\"btnStr\":\"1\",\"url\":\"/system/in_out_item\"},{\"btnStr\":\"1\",\"url\":\"/system/account\"},{\"btnStr\":\"1\",\"url\":\"/system/person\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_apply\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_out\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/delivery_plan\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/sale_shipment\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_out\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/order\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/requisition\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/report\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/giro\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/advance_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/allocation_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/assemble\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/headquarters_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/disassemble\"}]}}'); +INSERT INTO `tbl_log` VALUES (9759, 63, '接口日志', '43.152.142.68/1.9.116.218', '2026-10-06 07:06:45', 0, 'MsgController.getList(..)', NULL, 'GET /apis/msg/list', '{\"search\":\"{\\\"name\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9760, 63, '接口日志', '43.152.142.133/1.9.116.218', '2026-10-06 07:06:45', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0},{\"month\":\"2026-10\",\"inbound\":0,\"ordered\":0,\"shipped\":0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (9761, 63, '接口日志', '43.174.53.11/1.9.116.218', '2026-10-06 07:06:45', 0, 'MsgController.getMsgByStatus(..)', NULL, 'GET /apis/msg/getMsgByStatus', '{\"status\":\"1\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (9762, 63, '接口日志', '43.152.142.62/1.9.116.218', '2026-10-06 07:07:15', 0, 'DeliveryPlanController.getList(..)', NULL, 'GET /apis/deliveryPlan/list', '{\"search\":\"{\\\"planNumber\\\":\\\"\\\",\\\"sourceBillNumber\\\":\\\"\\\",\\\"saleOrderNumber\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"createTime\":1789720385000,\"creator\":63,\"creatorName\":\"admin\",\"customerId\":90,\"customerName\":\"TNB\",\"deleteFlag\":\"0\",\"id\":7,\"materialsList\":\"1PH WS79\",\"planNumber\":\"JH00000001741\",\"planQuantity\":10000.000000,\"saleOrderNumber\":\"XSDD00000001726\",\"shippedQuantity\":0.000000,\"sourceBillId\":1720,\"sourceBillNumber\":\"XSCK00000001728\",\"sourceType\":\"sale\",\"status\":\"2\"},{\"createTime\":1789717298000,\"creator\":63,\"creatorName\":\"admin\",\"customerId\":90,\"customerName\":\"TNB\",\"deleteFlag\":\"0\",\"id\":6,\"materialsList\":\"3PH APEC3-WC\",\"planNumber\":\"JH00000001717\",\"planQuantity\":149.000000,\"saleOrderNumber\":\"XSDD-42260529-3PH-APEC3-WC-OV\",\"shippedQuantity\":0.000000,\"sourceBillId\":1714,\"sourceBillNumber\":\"XSCK-3PH-APEC3-WC-OV-28\",\"sourceType\":\"sale\",\"status\":\"2\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (9763, 63, '接口日志', '43.174.53.48/1.9.116.218', '2026-10-06 07:07:25', 0, 'DeliveryPlanController.getDetail(..)', NULL, 'GET /apis/deliveryPlan/detail', '{\"id\":7}', '{\"code\":200,\"data\":{\"rows\":[{\"barCode\":\"1PH-WS79\",\"deleteFlag\":\"0\",\"depotId\":25,\"id\":6,\"materialExtendId\":123,\"materialId\":703,\"materialName\":\"1PH WS79\",\"model\":\"1PH WS79\",\"planId\":7,\"planQuantity\":10000.000000,\"shippedQuantity\":0.000000,\"sourceItemId\":1525,\"standard\":\"1PH WS79\",\"unit\":\"件\"}],\"info\":{\"createTime\":1789720385000,\"creator\":63,\"customerId\":90,\"deleteFlag\":\"0\",\"id\":7,\"planNumber\":\"JH00000001741\",\"saleOrderNumber\":\"XSDD00000001726\",\"sourceBillId\":1720,\"sourceBillNumber\":\"XSCK00000001728\",\"sourceType\":\"sale\",\"status\":\"2\"}}}'); +INSERT INTO `tbl_log` VALUES (9764, 63, '接口日志', '43.174.51.49/1.9.116.218', '2026-10-06 07:07:31', 0, 'MaterialController.getListWithStock(..)', NULL, 'GET /apis/material/getListWithStock', '{\"currentPage\":1,\"pageSize\":10,\"position\":\"\",\"materialParam\":\"\",\"zeroStock\":0,\"column\":\"createTime\",\"order\":\"desc\"}', '{\"code\":200,\"data\":{\"currentStockPrice\":107372523.170000000000,\"moveAvgPriceFlag\":false,\"total\":22,\"showStockPrice\":true,\"currentWeight\":0E-12,\"currentStock\":519203.000000,\"rows\":[{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"成品\",\"color\":\"\",\"currentStock\":7223.000000,\"currentStockMovePrice\":2293302.500000000000,\"currentStockPrice\":2293302.500000000000,\"currentUnitPrice\":317.500000,\"currentWeight\":0E-12,\"id\":704,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"3PH-APEC3-WC\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"3PH APEC3-WC\",\"name\":\"3PH APEC3-WC\",\"position\":\"\",\"purchaseDecimal\":317.500000,\"standard\":\"3PH APEC3-WC\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"成品\",\"color\":\"\",\"currentStock\":52400.000000,\"currentStockMovePrice\":3117800.000000000000,\"currentStockPrice\":3117800.000000000000,\"currentUnitPrice\":59.500000,\"currentWeight\":0E-12,\"id\":703,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"1PH-WS79\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"1PH WS79\",\"name\":\"1PH WS79\",\"position\":\"\",\"purchaseDecimal\":59.500000,\"standard\":\"1PH WS79\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":1000.000000,\"currentStockMovePrice\":24300.000000000000,\"currentStockPrice\":24300.000000000000,\"currentUnitPrice\":24.300000,\"currentWeight\":0E-12,\"id\":702,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00722\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-RS178(VA)\",\"name\":\"MD-RS178(VA) RS485分线器\",\"position\":\"\",\"purchaseDecimal\":24.300000,\"standard\":\"MD-RS178(VA)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":100.000000,\"currentStockMovePrice\":14256.000000000000,\"currentStockPrice\":14256.000000000000,\"currentUnitPrice\":142.560000,\"currentWeight\":0E-12,\"id\":701,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.0068900002\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-RS114(VB)\",\"name\":\"MD-RS114(VB) 基于RS485的MODBS TCPMODBS RTUASVII转换模块_(DZG)\",\"position\":\"\",\"purchaseDecimal\":142.560000,\"standard\":\"MD-RS114(VB)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":50.000000,\"currentStockMovePrice\":6642.000000000000,\"currentStockPrice\":6642.000000000000,\"currentUnitPrice\":132.840000,\"currentWeight\":0E-12,\"id\":700,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00686\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"TC160(VA)\",\"name\":\"TC160(VA) 通讯模块供电盒\",\"position\":\"\",\"purchaseDecimal\":132.840000,\"standard\":\"TC160(VA)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":76970.000000,\"currentStockMovePrice\":7697.000000000000,\"currentStockPrice\":7697.000000000000,\"currentUnitPrice\":0.100000,\"currentWeight\":0E-12,\"id\":699,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00654\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-4G111(VF)\",\"name\":\"MD-4G111(VF) 4G模块\",\"position\":\"\",\"purchaseDecimal\":0.100000,\"standard\":\"MD-4G111(VF)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":50.000000,\"currentStockMovePrice\":16200.000000000000,\"currentStockPrice\":16200.000000000000,\"currentUnitPrice\":324.000000,\"currentWeight\":0E-12,\"id\":698,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00562\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-4GVIII(VB)\",\"name\":\"MD-4GVIII(VB)\",\"position\":\"\",\"purchaseDecimal\":324.000000,\"standard\":\"MD-4GVIII(VB)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":500.000000,\"currentStockMovePrice\":64800.000000000000,\"currentStockPrice\":64800.000000000000,\"currentUnitPrice\":129.600000,\"currentWeight\":0E-12,\"id\":697,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00553\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MT-P109(VA)\",\"name\":\"MT-P109(VA)\",\"position\":\"\",\"purchaseDecimal\":129.600000,\"standard\":\"MT-P109(VA)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":54656.000000,\"currentStockMovePrice\":5465.600000000000,\"currentStockPrice\":5465.600000000000,\"currentUnitPrice\":0.100000,\"currentWeight\":0E-12,\"id\":696,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00547\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MT-3NSXL(VC)\",\"name\":\"MT-3NSXL(VC)RF通讯模块\",\"position\":\"\",\"purchaseDecimal\":0.100000,\"standard\":\"MT-3NSXL(VC)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":100.000000,\"currentStockMovePrice\":100375.200000000000,\"currentStockPrice\":100375.200000000000,\"currentUnitPrice\":1003.752000,\"currentWeight\":0E-12,\"id\":695,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00422\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-LR63(VB)\",\"name\":\"MD-LR63(VB)\",\"position\":\"\",\"purchaseDecimal\":1003.752000,\"standard\":\"MD-LR63(VB)\",\"unitName\":\"件\"}]}}'); +INSERT INTO `tbl_log` VALUES (9765, 63, '接口日志', '43.152.142.45/1.9.116.218', '2026-10-06 07:07:31', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9766, 63, '接口日志', '43.174.32.33/1.9.116.218', '2026-10-06 07:07:31', 0, 'DepotItemController.findDetailByDepotIdsAndMaterialId(..)', NULL, 'GET /apis/depotItem/findDetailByDepotIdsAndMaterialId', '{\"pageSize\":10,\"currentPage\":1,\"depotIds\":\"\",\"number\":\"\",\"beginTime\":\"\",\"endTime\":\"\",\"stockPriceFlag\":false}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9767, 63, '接口日志', '43.152.142.31/1.9.116.218', '2026-10-06 07:07:31', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (9768, 63, '接口日志', '43.174.32.14/1.9.116.218', '2026-10-06 07:07:31', 0, 'DepotItemController.findDetailByDepotIdsAndMaterialId(..)', NULL, 'GET /apis/depotItem/findDetailByDepotIdsAndMaterialId', '{\"pageSize\":10,\"currentPage\":1,\"depotIds\":\"\",\"number\":\"\",\"beginTime\":\"\",\"endTime\":\"\",\"stockPriceFlag\":true}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9769, 63, '接口日志', '43.174.53.11/1.9.116.218', '2026-10-06 07:07:52', 0, 'MaterialController.getListWithStock(..)', NULL, 'GET /apis/material/getListWithStock', '{\"currentPage\":2,\"pageSize\":10,\"position\":\"\",\"materialParam\":\"\",\"zeroStock\":0,\"column\":\"createTime\",\"order\":\"desc\"}', '{\"code\":200,\"data\":{\"currentStockPrice\":107372523.170000000000,\"moveAvgPriceFlag\":false,\"total\":22,\"showStockPrice\":true,\"currentWeight\":0E-12,\"currentStock\":519203.000000,\"rows\":[{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":200.000000,\"currentStockMovePrice\":66938.400000000000,\"currentStockPrice\":66938.400000000000,\"currentUnitPrice\":334.692000,\"currentWeight\":0E-12,\"id\":694,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00421\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-LR62(VB)\",\"name\":\"MD-LR62(VB)\",\"position\":\"\",\"purchaseDecimal\":334.692000,\"standard\":\"MD-LR62(VB)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":34473.000000,\"currentStockMovePrice\":27476359.920000000000,\"currentStockPrice\":27476359.920000000000,\"currentUnitPrice\":797.040000,\"currentWeight\":0E-12,\"id\":693,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.3.T.0.00038\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DTSD1226-T46(VJ)\",\"name\":\"三相四线多功能电能表T46(VJ)\",\"position\":\"\",\"purchaseDecimal\":797.040000,\"standard\":\"DTSD1226-T46(VJ)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":500.000000,\"currentStockMovePrice\":275400.000000000000,\"currentStockPrice\":275400.000000000000,\"currentUnitPrice\":550.800000,\"currentWeight\":0E-12,\"id\":692,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.3.T.0.00036\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DTSD1226-T46(VH)\",\"name\":\"三相四线多功能电能表T46(VH)\",\"position\":\"\",\"purchaseDecimal\":550.800000,\"standard\":\"DTSD1226-T46(VH)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":14460.000000,\"currentStockMovePrice\":7027560.000000000000,\"currentStockPrice\":7027560.000000000000,\"currentUnitPrice\":486.000000,\"currentWeight\":0E-12,\"id\":691,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.3.T.0.00030\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DTSD1226-T46(VC)\",\"name\":\"三相四线多功能电能表T46(VC)\",\"position\":\"\",\"purchaseDecimal\":486.000000,\"standard\":\"DTSD1226-T46(VC)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":13070.000000,\"currentStockMovePrice\":6775488.000000000000,\"currentStockPrice\":6775488.000000000000,\"currentUnitPrice\":518.400000,\"currentWeight\":0E-12,\"id\":690,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.3.S.0.00030\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DTSD1226-SXVI(VK)\",\"name\":\"三相四线多功能电能表SXVI(VK)-新\",\"position\":\"\",\"purchaseDecimal\":518.400000,\"standard\":\"DTSD1226-SXVI(VK)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":120.000000,\"currentStockMovePrice\":82814.400000000000,\"currentStockPrice\":82814.400000000000,\"currentUnitPrice\":690.120000,\"currentWeight\":0E-12,\"id\":689,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.3.S.0.00026\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DTSD1226-SXVI(VH)\",\"name\":\"三相四线多功能电能表SXVI(VH)-新\",\"position\":\"\",\"purchaseDecimal\":690.120000,\"standard\":\"DTSD1226-SXVI(VH)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":400.000000,\"currentStockMovePrice\":245592.000000000000,\"currentStockPrice\":245592.000000000000,\"currentUnitPrice\":613.980000,\"currentWeight\":0E-12,\"id\":688,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.3.S.0.00020\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DTSD1226-SXVI(VG)\",\"name\":\"三相四线多功能电能表SXVI(VG)-新\",\"position\":\"\",\"purchaseDecimal\":613.980000,\"standard\":\"DTSD1226-SXVI(VG)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":48041.000000,\"currentStockMovePrice\":23153359.950000000000,\"currentStockPrice\":23153359.950000000000,\"currentUnitPrice\":481.950000,\"currentWeight\":0E-12,\"id\":687,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.3.C.2.00025\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DTSD1226-CXVI(VA)\",\"name\":\"三相四线多功能电能表CXVI(VA)-新\",\"position\":\"\",\"purchaseDecimal\":481.950000,\"standard\":\"DTSD1226-CXVI(VA)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":42490.000000,\"currentStockMovePrice\":17139616.200000000000,\"currentStockPrice\":17139616.200000000000,\"currentUnitPrice\":403.380000,\"currentWeight\":0E-12,\"id\":686,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.1.T.0.0004500005\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DDSD1226-T49(VH)\",\"name\":\"单相多功能电能表T49(VH)_(马来市场)\",\"position\":\"\",\"purchaseDecimal\":403.380000,\"standard\":\"DDSD1226-T49(VH)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":40000.000000,\"currentStockMovePrice\":8748000.000000000000,\"currentStockPrice\":8748000.000000000000,\"currentUnitPrice\":218.700000,\"currentWeight\":0E-12,\"id\":685,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.1.T.0.00032\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DDSD1226-T49(VB)\",\"name\":\"单相多功能电能表T49(VB)\",\"position\":\"\",\"purchaseDecimal\":218.700000,\"standard\":\"DDSD1226-T49(VB)\",\"unitName\":\"件\"}]}}'); +INSERT INTO `tbl_log` VALUES (9770, 63, '接口日志', '43.152.142.68/1.9.116.218', '2026-10-06 07:07:54', 0, 'MaterialController.getListWithStock(..)', NULL, 'GET /apis/material/getListWithStock', '{\"currentPage\":3,\"pageSize\":10,\"position\":\"\",\"materialParam\":\"\",\"zeroStock\":0,\"column\":\"createTime\",\"order\":\"desc\"}', '{\"code\":200,\"data\":{\"currentStockPrice\":107372523.170000000000,\"moveAvgPriceFlag\":false,\"total\":22,\"showStockPrice\":true,\"currentWeight\":0E-12,\"currentStock\":519203.000000,\"rows\":[{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":112400.000000,\"currentStockMovePrice\":9013356.000000000000,\"currentStockPrice\":9013356.000000000000,\"currentUnitPrice\":80.190000,\"currentWeight\":0E-12,\"id\":684,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.1.C.2.00023\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DDS1226-C8(VG)\",\"name\":\"单相有功电能表C8(VG)\",\"position\":\"\",\"purchaseDecimal\":80.190000,\"standard\":\"DDS1226-C8(VG)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":20000.000000,\"currentStockMovePrice\":1717200.000000000000,\"currentStockPrice\":1717200.000000000000,\"currentUnitPrice\":85.860000,\"currentWeight\":0E-12,\"id\":683,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.1.C.2.00021\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DDS1226-C8(VD)\",\"name\":\"单相有功电能表C8(VD)\",\"position\":\"\",\"purchaseDecimal\":85.860000,\"standard\":\"DDS1226-C8(VD)\",\"unitName\":\"件\"}]}}'); +INSERT INTO `tbl_log` VALUES (9771, 63, '接口日志', '43.174.32.19/1.9.116.218', '2026-10-06 07:07:56', 0, 'MaterialController.getListWithStock(..)', NULL, 'GET /apis/material/getListWithStock', '{\"currentPage\":1,\"pageSize\":10,\"position\":\"\",\"materialParam\":\"\",\"zeroStock\":0,\"column\":\"createTime\",\"order\":\"desc\"}', '{\"code\":200,\"data\":{\"currentStockPrice\":107372523.170000000000,\"moveAvgPriceFlag\":false,\"total\":22,\"showStockPrice\":true,\"currentWeight\":0E-12,\"currentStock\":519203.000000,\"rows\":[{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"成品\",\"color\":\"\",\"currentStock\":7223.000000,\"currentStockMovePrice\":2293302.500000000000,\"currentStockPrice\":2293302.500000000000,\"currentUnitPrice\":317.500000,\"currentWeight\":0E-12,\"id\":704,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"3PH-APEC3-WC\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"3PH APEC3-WC\",\"name\":\"3PH APEC3-WC\",\"position\":\"\",\"purchaseDecimal\":317.500000,\"standard\":\"3PH APEC3-WC\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"成品\",\"color\":\"\",\"currentStock\":52400.000000,\"currentStockMovePrice\":3117800.000000000000,\"currentStockPrice\":3117800.000000000000,\"currentUnitPrice\":59.500000,\"currentWeight\":0E-12,\"id\":703,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"1PH-WS79\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"1PH WS79\",\"name\":\"1PH WS79\",\"position\":\"\",\"purchaseDecimal\":59.500000,\"standard\":\"1PH WS79\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":1000.000000,\"currentStockMovePrice\":24300.000000000000,\"currentStockPrice\":24300.000000000000,\"currentUnitPrice\":24.300000,\"currentWeight\":0E-12,\"id\":702,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00722\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-RS178(VA)\",\"name\":\"MD-RS178(VA) RS485分线器\",\"position\":\"\",\"purchaseDecimal\":24.300000,\"standard\":\"MD-RS178(VA)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":100.000000,\"currentStockMovePrice\":14256.000000000000,\"currentStockPrice\":14256.000000000000,\"currentUnitPrice\":142.560000,\"currentWeight\":0E-12,\"id\":701,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.0068900002\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-RS114(VB)\",\"name\":\"MD-RS114(VB) 基于RS485的MODBS TCPMODBS RTUASVII转换模块_(DZG)\",\"position\":\"\",\"purchaseDecimal\":142.560000,\"standard\":\"MD-RS114(VB)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":50.000000,\"currentStockMovePrice\":6642.000000000000,\"currentStockPrice\":6642.000000000000,\"currentUnitPrice\":132.840000,\"currentWeight\":0E-12,\"id\":700,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00686\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"TC160(VA)\",\"name\":\"TC160(VA) 通讯模块供电盒\",\"position\":\"\",\"purchaseDecimal\":132.840000,\"standard\":\"TC160(VA)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":76970.000000,\"currentStockMovePrice\":7697.000000000000,\"currentStockPrice\":7697.000000000000,\"currentUnitPrice\":0.100000,\"currentWeight\":0E-12,\"id\":699,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00654\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-4G111(VF)\",\"name\":\"MD-4G111(VF) 4G模块\",\"position\":\"\",\"purchaseDecimal\":0.100000,\"standard\":\"MD-4G111(VF)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":50.000000,\"currentStockMovePrice\":16200.000000000000,\"currentStockPrice\":16200.000000000000,\"currentUnitPrice\":324.000000,\"currentWeight\":0E-12,\"id\":698,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00562\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-4GVIII(VB)\",\"name\":\"MD-4GVIII(VB)\",\"position\":\"\",\"purchaseDecimal\":324.000000,\"standard\":\"MD-4GVIII(VB)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":500.000000,\"currentStockMovePrice\":64800.000000000000,\"currentStockPrice\":64800.000000000000,\"currentUnitPrice\":129.600000,\"currentWeight\":0E-12,\"id\":697,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00553\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MT-P109(VA)\",\"name\":\"MT-P109(VA)\",\"position\":\"\",\"purchaseDecimal\":129.600000,\"standard\":\"MT-P109(VA)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":54656.000000,\"currentStockMovePrice\":5465.600000000000,\"currentStockPrice\":5465.600000000000,\"currentUnitPrice\":0.100000,\"currentWeight\":0E-12,\"id\":696,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00547\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MT-3NSXL(VC)\",\"name\":\"MT-3NSXL(VC)RF通讯模块\",\"position\":\"\",\"purchaseDecimal\":0.100000,\"standard\":\"MT-3NSXL(VC)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":100.000000,\"currentStockMovePrice\":100375.200000000000,\"currentStockPrice\":100375.200000000000,\"currentUnitPrice\":1003.752000,\"currentWeight\":0E-12,\"id\":695,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00422\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-LR63(VB)\",\"name\":\"MD-LR63(VB)\",\"position\":\"\",\"purchaseDecimal\":1003.752000,\"standard\":\"MD-LR63(VB)\",\"unitName\":\"件\"}]}}'); +INSERT INTO `tbl_log` VALUES (9772, 63, '接口日志', '43.152.142.118/1.9.116.218', '2026-10-06 07:09:13', 0, 'MaterialController.getListWithStock(..)', NULL, 'GET /apis/material/getListWithStock', '{\"currentPage\":1,\"pageSize\":10,\"depotIds\":\"26,25\",\"position\":\"\",\"materialParam\":\"\",\"zeroStock\":0,\"column\":\"createTime\",\"order\":\"desc\"}', '{\"code\":200,\"data\":{\"currentStockPrice\":107372523.170000000000,\"moveAvgPriceFlag\":false,\"total\":22,\"showStockPrice\":true,\"currentWeight\":0E-12,\"currentStock\":519203.000000,\"rows\":[{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"成品\",\"color\":\"\",\"currentStock\":7223.000000,\"currentStockMovePrice\":2293302.500000000000,\"currentStockPrice\":2293302.500000000000,\"currentUnitPrice\":317.500000,\"currentWeight\":0E-12,\"id\":704,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"3PH-APEC3-WC\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"3PH APEC3-WC\",\"name\":\"3PH APEC3-WC\",\"position\":\"\",\"purchaseDecimal\":317.500000,\"standard\":\"3PH APEC3-WC\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"成品\",\"color\":\"\",\"currentStock\":52400.000000,\"currentStockMovePrice\":3117800.000000000000,\"currentStockPrice\":3117800.000000000000,\"currentUnitPrice\":59.500000,\"currentWeight\":0E-12,\"id\":703,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"1PH-WS79\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"1PH WS79\",\"name\":\"1PH WS79\",\"position\":\"\",\"purchaseDecimal\":59.500000,\"standard\":\"1PH WS79\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":1000.000000,\"currentStockMovePrice\":24300.000000000000,\"currentStockPrice\":24300.000000000000,\"currentUnitPrice\":24.300000,\"currentWeight\":0E-12,\"id\":702,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00722\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-RS178(VA)\",\"name\":\"MD-RS178(VA) RS485分线器\",\"position\":\"\",\"purchaseDecimal\":24.300000,\"standard\":\"MD-RS178(VA)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":100.000000,\"currentStockMovePrice\":14256.000000000000,\"currentStockPrice\":14256.000000000000,\"currentUnitPrice\":142.560000,\"currentWeight\":0E-12,\"id\":701,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.0068900002\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-RS114(VB)\",\"name\":\"MD-RS114(VB) 基于RS485的MODBS TCPMODBS RTUASVII转换模块_(DZG)\",\"position\":\"\",\"purchaseDecimal\":142.560000,\"standard\":\"MD-RS114(VB)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":50.000000,\"currentStockMovePrice\":6642.000000000000,\"currentStockPrice\":6642.000000000000,\"currentUnitPrice\":132.840000,\"currentWeight\":0E-12,\"id\":700,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00686\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"TC160(VA)\",\"name\":\"TC160(VA) 通讯模块供电盒\",\"position\":\"\",\"purchaseDecimal\":132.840000,\"standard\":\"TC160(VA)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":76970.000000,\"currentStockMovePrice\":7697.000000000000,\"currentStockPrice\":7697.000000000000,\"currentUnitPrice\":0.100000,\"currentWeight\":0E-12,\"id\":699,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00654\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-4G111(VF)\",\"name\":\"MD-4G111(VF) 4G模块\",\"position\":\"\",\"purchaseDecimal\":0.100000,\"standard\":\"MD-4G111(VF)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":50.000000,\"currentStockMovePrice\":16200.000000000000,\"currentStockPrice\":16200.000000000000,\"currentUnitPrice\":324.000000,\"currentWeight\":0E-12,\"id\":698,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00562\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-4GVIII(VB)\",\"name\":\"MD-4GVIII(VB)\",\"position\":\"\",\"purchaseDecimal\":324.000000,\"standard\":\"MD-4GVIII(VB)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":500.000000,\"currentStockMovePrice\":64800.000000000000,\"currentStockPrice\":64800.000000000000,\"currentUnitPrice\":129.600000,\"currentWeight\":0E-12,\"id\":697,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00553\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MT-P109(VA)\",\"name\":\"MT-P109(VA)\",\"position\":\"\",\"purchaseDecimal\":129.600000,\"standard\":\"MT-P109(VA)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":54656.000000,\"currentStockMovePrice\":5465.600000000000,\"currentStockPrice\":5465.600000000000,\"currentUnitPrice\":0.100000,\"currentWeight\":0E-12,\"id\":696,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00547\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MT-3NSXL(VC)\",\"name\":\"MT-3NSXL(VC)RF通讯模块\",\"position\":\"\",\"purchaseDecimal\":0.100000,\"standard\":\"MT-3NSXL(VC)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":100.000000,\"currentStockMovePrice\":100375.200000000000,\"currentStockPrice\":100375.200000000000,\"currentUnitPrice\":1003.752000,\"currentWeight\":0E-12,\"id\":695,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00422\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-LR63(VB)\",\"name\":\"MD-LR63(VB)\",\"position\":\"\",\"purchaseDecimal\":1003.752000,\"standard\":\"MD-LR63(VB)\",\"unitName\":\"件\"}]}}'); +INSERT INTO `tbl_log` VALUES (9773, 63, '接口日志', '43.152.142.33/1.9.116.218', '2026-10-06 07:10:04', 0, 'PlatformConfigController.getList(..)', NULL, 'GET /apis/platformConfig/list', '{\"search\":\"{\\\"platformKey\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":21,\"rows\":[{\"id\":1,\"platformKey\":\"platform_name\",\"platformKeyInfo\":\"平台名称\",\"platformValue\":\"SMT\"},{\"id\":3,\"platformKey\":\"platform_url\",\"platformKeyInfo\":\"官方网站\",\"platformValue\":\"http://www.gyjerp.com/\"},{\"id\":4,\"platformKey\":\"bill_print_flag\",\"platformKeyInfo\":\"三联打印启用标记\",\"platformValue\":\"0\"},{\"id\":5,\"platformKey\":\"bill_print_url\",\"platformKeyInfo\":\"三联打印地址\",\"platformValue\":\"\"},{\"id\":6,\"platformKey\":\"pay_fee_url\",\"platformKeyInfo\":\"租户续费地址\",\"platformValue\":\"\"},{\"id\":7,\"platformKey\":\"register_flag\",\"platformKeyInfo\":\"注册启用标记\",\"platformValue\":\"0\"},{\"id\":9,\"platformKey\":\"send_workflow_url\",\"platformKeyInfo\":\"发起流程地址\",\"platformValue\":\"\"},{\"id\":10,\"platformKey\":\"weixinUrl\",\"platformKeyInfo\":\"微信url\",\"platformValue\":\"\"},{\"id\":11,\"platformKey\":\"weixinAppid\",\"platformKeyInfo\":\"微信appid\",\"platformValue\":\"\"},{\"id\":12,\"platformKey\":\"weixinSecret\",\"platformKeyInfo\":\"微信secret\",\"platformValue\":\"\"}]}}'); +INSERT INTO `tbl_log` VALUES (9774, 63, '接口日志', '43.152.142.140/1.9.116.218', '2026-10-06 07:10:06', 0, 'SysDictDataController.dictType(..)', NULL, 'GET /apis/dict/data/type/sys_normal_disable', '{\"dictType\":\"sys_normal_disable\"}', '{\"msg\":\"操作成功\",\"code\":0,\"data\":[{\"createBy\":\"admin\",\"createTime\":1775241094000,\"dictCode\":11,\"dictLabel\":\"正常\",\"dictSort\":1,\"dictType\":\"sys_normal_disable\",\"dictValue\":\"0\",\"isDefault\":\"N\",\"listClass\":\"green\",\"params\":{},\"remark\":\"正常状态\",\"status\":\"0\"},{\"createBy\":\"admin\",\"createTime\":1775241123000,\"dictCode\":12,\"dictLabel\":\"停用\",\"dictSort\":2,\"dictType\":\"sys_normal_disable\",\"dictValue\":\"1\",\"isDefault\":\"N\",\"listClass\":\"red\",\"params\":{},\"remark\":\"停用状态\",\"status\":\"0\"}]}'); +INSERT INTO `tbl_log` VALUES (9775, 63, '接口日志', '43.174.32.19/1.9.116.218', '2026-10-06 07:10:06', 0, 'SysDictTypeController.list(..)', NULL, 'GET /apis/dict/type/list', '{\"search\":\"{\\\"dictName\\\":\\\"\\\",\\\"dictType\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"createBy\":\"admin\",\"createTime\":1639589778000,\"dictId\":1,\"dictName\":\"用户性别\",\"dictType\":\"sys_user_sex\",\"params\":{},\"remark\":\"用户性别列表\",\"status\":\"0\",\"updateBy\":\"admin\",\"updateTime\":1775132441000},{\"createBy\":\"admin\",\"createTime\":1775241057000,\"dictId\":12,\"dictName\":\"系统开关\",\"dictType\":\"sys_normal_disable\",\"params\":{},\"remark\":\"系统开关列表\",\"status\":\"0\",\"updateBy\":\"admin\",\"updateTime\":1775324469000}]}}'); +INSERT INTO `tbl_log` VALUES (9776, 63, '接口日志', '43.174.53.11/1.9.116.218', '2026-10-06 07:10:06', 0, 'SysDictDataController.dictType(..)', NULL, 'GET /apis/dict/data/type/sys_normal_disable', '{\"dictType\":\"sys_normal_disable\"}', '{\"msg\":\"操作成功\",\"code\":0,\"data\":[{\"createBy\":\"admin\",\"createTime\":1775241094000,\"dictCode\":11,\"dictLabel\":\"正常\",\"dictSort\":1,\"dictType\":\"sys_normal_disable\",\"dictValue\":\"0\",\"isDefault\":\"N\",\"listClass\":\"green\",\"params\":{},\"remark\":\"正常状态\",\"status\":\"0\"},{\"createBy\":\"admin\",\"createTime\":1775241123000,\"dictCode\":12,\"dictLabel\":\"停用\",\"dictSort\":2,\"dictType\":\"sys_normal_disable\",\"dictValue\":\"1\",\"isDefault\":\"N\",\"listClass\":\"red\",\"params\":{},\"remark\":\"停用状态\",\"status\":\"0\"}]}'); +INSERT INTO `tbl_log` VALUES (9777, 63, '接口日志', '43.152.142.45/1.9.116.218', '2026-10-06 07:10:06', 0, 'SysDictDataController.dictType(..)', NULL, 'GET /apis/dict/data/type/sys_normal_disable', '{\"dictType\":\"sys_normal_disable\"}', '{\"msg\":\"操作成功\",\"code\":0,\"data\":[{\"createBy\":\"admin\",\"createTime\":1775241094000,\"dictCode\":11,\"dictLabel\":\"正常\",\"dictSort\":1,\"dictType\":\"sys_normal_disable\",\"dictValue\":\"0\",\"isDefault\":\"N\",\"listClass\":\"green\",\"params\":{},\"remark\":\"正常状态\",\"status\":\"0\"},{\"createBy\":\"admin\",\"createTime\":1775241123000,\"dictCode\":12,\"dictLabel\":\"停用\",\"dictSort\":2,\"dictType\":\"sys_normal_disable\",\"dictValue\":\"1\",\"isDefault\":\"N\",\"listClass\":\"red\",\"params\":{},\"remark\":\"停用状态\",\"status\":\"0\"}]}'); +INSERT INTO `tbl_log` VALUES (9778, 63, '接口日志', '43.152.142.31/1.9.116.218', '2026-10-06 07:10:08', 0, 'FunctionController.getList(..)', NULL, 'GET /apis/function/list', '{\"search\":\"{\\\"name\\\":\\\"\\\",\\\"nameEn\\\":\\\"\\\",\\\"type\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":79,\"rows\":[{\"component\":\"/layouts/TabLayout\",\"deleteFlag\":\"0\",\"enabled\":true,\"icon\":\"shopping-cart\",\"id\":38,\"name\":\"销售管理\",\"nameEn\":\"Sales Management\",\"number\":\"0603\",\"parentNumber\":\"0\",\"pushBtn\":\"\",\"sort\":\"0001\",\"state\":false,\"type\":\"电脑版\",\"url\":\"/billB\"},{\"component\":\"/layouts/TabLayout\",\"deleteFlag\":\"0\",\"enabled\":true,\"icon\":\"retweet\",\"id\":32,\"name\":\"采购管理\",\"nameEn\":\"Purchase Management\",\"number\":\"0502\",\"parentNumber\":\"0\",\"pushBtn\":\"\",\"sort\":\"0002\",\"state\":false,\"type\":\"电脑版\",\"url\":\"/bill\"},{\"component\":\"/layouts/TabLayout\",\"deleteFlag\":\"0\",\"enabled\":true,\"icon\":\"cluster\",\"id\":262,\"name\":\"生产管理\",\"nameEn\":\"Production Management\",\"number\":\"0901\",\"parentNumber\":\"0\",\"pushBtn\":\"\",\"sort\":\"0003\",\"state\":false,\"type\":\"电脑版\",\"url\":\"/production\"},{\"component\":\"/layouts/TabLayout\",\"deleteFlag\":\"0\",\"enabled\":true,\"icon\":\"hdd\",\"id\":239,\"name\":\"仓库管理\",\"nameEn\":\"Warehouse Management\",\"number\":\"0801\",\"parentNumber\":\"0\",\"pushBtn\":\"\",\"sort\":\"0004\",\"state\":false,\"type\":\"电脑版\",\"url\":\"/billD\"},{\"component\":\"/layouts/TabLayout\",\"deleteFlag\":\"0\",\"enabled\":true,\"icon\":\"money-collect\",\"id\":44,\"name\":\"财务管理\",\"nameEn\":\"Finance Management\",\"number\":\"0704\",\"parentNumber\":\"0\",\"pushBtn\":\"\",\"sort\":\"0005\",\"state\":false,\"type\":\"电脑版\",\"url\":\"/financial\"},{\"component\":\"/layouts/TabLayout\",\"deleteFlag\":\"0\",\"enabled\":true,\"icon\":\"bank\",\"id\":272,\"name\":\"资产管理\",\"nameEn\":\"Asset Management\",\"number\":\"0902\",\"parentNumber\":\"0\",\"pushBtn\":\"\",\"sort\":\"0006\",\"state\":false,\"type\":\"电脑版\",\"url\":\"/assetManagement\"},{\"component\":\"/layouts/TabLayout\",\"deleteFlag\":\"0\",\"enabled\":true,\"icon\":\"shopping\",\"id\":21,\"name\":\"商品管理\",\"nameEn\":\"Product Management\",\"number\":\"0101\",\"parentNumber\":\"0\",\"sort\":\"0007\",\"state\":false,\"type\":\"电脑版\",\"url\":\"/material\"},{\"component\":\"/layouts/TabLayout\",\"deleteFlag\":\"0\",\"enabled\":true,\"icon\":\"pie-chart\",\"id\":198,\"name\":\"报表查询\",\"nameEn\":\"Reports\",\"number\":\"0301\",\"parentNumber\":\"0\",\"sort\":\"0008\",\"state\":false,\"type\":\"电脑版\",\"url\":\"/report\"},{\"component\":\"/layouts/TabLayout\",\"deleteFlag\":\"0\",\"enabled\":true,\"icon\":\"appstore\",\"id\":24,\"name\":\"基础资料\",\"nameEn\":\"Master Data\",\"number\":\"0102\",\"parentNumber\":\"0\",\"sort\":\"0009\",\"state\":false,\"type\":\"电脑版\",\"url\":\"/systemA\"},{\"component\":\"/layouts/TabLayout\",\"deleteFlag\":\"0\",\"enabled\":true,\"icon\":\"setting\",\"id\":1,\"name\":\"系统管理\",\"nameEn\":\"System Management\",\"number\":\"0001\",\"parentNumber\":\"0\",\"pushBtn\":\"\",\"sort\":\"0010\",\"state\":true,\"type\":\"电脑版\",\"url\":\"/system\"}]}}'); +INSERT INTO `tbl_log` VALUES (9779, 63, '接口日志', '43.152.142.62/1.9.116.218', '2026-10-06 07:10:09', 0, 'PluginController.checkByTag(..)', NULL, 'GET /apis/plugin/checkByPluginId', '{\"pluginIds\":\"workflow\"}', '{\"code\":200,\"data\":false}'); +INSERT INTO `tbl_log` VALUES (9780, 63, '接口日志', '43.174.32.33/1.9.116.218', '2026-10-06 07:10:09', 0, 'PluginController.checkByTag(..)', NULL, 'GET /apis/plugin/checkByPluginId', '{\"pluginIds\":\"stock-check\"}', '{\"code\":200,\"data\":false}'); +INSERT INTO `tbl_log` VALUES (9781, 63, '接口日志', '43.152.142.110/1.9.116.218', '2026-10-06 07:10:09', 0, 'SystemConfigController.getList(..)', NULL, 'GET /apis/systemConfig/list', '{\"search\":\"{\\\"companyName\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}]}}'); +INSERT INTO `tbl_log` VALUES (9782, 63, '接口日志', '43.174.53.48/1.9.116.218', '2026-10-06 07:10:25', 0, 'MaterialPropertyController.getList(..)', NULL, 'GET /apis/materialProperty/list', '{\"search\":\"{\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":3,\"rows\":[{\"anotherName\":\"扩展1\",\"id\":1,\"nativeName\":\"扩展1\"},{\"anotherName\":\"扩展2\",\"id\":2,\"nativeName\":\"扩展2\"},{\"anotherName\":\"扩展3\",\"id\":3,\"nativeName\":\"扩展3\"}]}}'); +INSERT INTO `tbl_log` VALUES (9783, 63, '接口日志', '43.152.142.110/1.9.116.218', '2026-10-06 07:12:05', 0, 'OrganizationController.getOrganizationTree(..)', NULL, 'GET /apis/organization/getOrganizationTree', '{}', '[{\"children\":[{\"children\":[{\"children\":[],\"checked\":false,\"attributes\":\"12\",\"id\":14,\"state\":\"open\",\"title\":\"部门2\",\"value\":14,\"key\":14}],\"checked\":false,\"attributes\":\"jg1\",\"id\":13,\"state\":\"open\",\"title\":\"部门1\",\"value\":13,\"key\":13}],\"checked\":false,\"attributes\":\"001\",\"id\":12,\"state\":\"open\",\"title\":\"测试部门\",\"value\":12,\"key\":12}]'); +INSERT INTO `tbl_log` VALUES (9784, 63, '接口日志', '43.174.53.48/1.9.116.218', '2026-10-06 07:12:21', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0},{\"month\":\"2026-10\",\"inbound\":0,\"ordered\":0,\"shipped\":0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (9785, 63, '接口日志', '43.152.142.118/1.9.116.218', '2026-10-06 07:12:56', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0},{\"month\":\"2026-10\",\"inbound\":0,\"ordered\":0,\"shipped\":0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (9786, 63, '接口日志', '43.152.142.110/1.9.116.218', '2026-10-06 07:12:57', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0},{\"month\":\"2026-10\",\"inbound\":0,\"ordered\":0,\"shipped\":0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (9787, 63, '接口日志', '43.174.32.12/1.9.116.218', '2026-10-06 07:12:57', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0},{\"month\":\"2026-10\",\"inbound\":0,\"ordered\":0,\"shipped\":0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (9788, 63, '接口日志', '43.152.142.133/1.9.116.218', '2026-10-06 07:12:58', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0},{\"month\":\"2026-10\",\"inbound\":0,\"ordered\":0,\"shipped\":0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (9789, 63, '接口日志', '43.152.142.142/1.9.116.218', '2026-10-06 07:12:58', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0},{\"month\":\"2026-10\",\"inbound\":0,\"ordered\":0,\"shipped\":0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (9790, 63, '接口日志', '43.174.32.19/1.9.116.218', '2026-10-06 07:12:59', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0},{\"month\":\"2026-10\",\"inbound\":0,\"ordered\":0,\"shipped\":0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (9791, 63, '接口日志', '43.174.53.16/1.9.116.218', '2026-10-06 07:13:00', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0},{\"month\":\"2026-10\",\"inbound\":0,\"ordered\":0,\"shipped\":0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (9792, 63, '接口日志', '43.174.51.49/1.9.116.218', '2026-10-06 07:13:00', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0},{\"month\":\"2026-10\",\"inbound\":0,\"ordered\":0,\"shipped\":0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (9793, 63, '接口日志', '43.152.142.140/1.9.116.218', '2026-10-06 07:13:03', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9794, 63, '接口日志', '43.152.142.83/1.9.116.218', '2026-10-06 07:13:03', 0, 'PersonController.getPersonByNumType(..)', NULL, 'GET /apis/person/getPersonByNumType', '{\"typeNum\":\"1\"}', '[]'); +INSERT INTO `tbl_log` VALUES (9795, 63, '接口日志', '43.152.142.45/1.9.116.218', '2026-10-06 07:13:03', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (9796, 63, '接口日志', '43.152.142.108/1.9.116.218', '2026-10-06 07:13:03', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9797, 63, '接口日志', '43.152.142.31/1.9.116.218', '2026-10-06 07:13:03', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (9798, 63, '接口日志', '43.152.142.68/1.9.116.218', '2026-10-06 07:13:03', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (9799, 63, '接口日志', '43.168.32.214/1.9.116.218', '2026-10-06 07:13:03', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (9800, 63, '接口日志', '43.152.142.33/1.9.116.218', '2026-10-06 07:13:03', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9801, 63, '接口日志', '43.174.55.40/1.9.116.218', '2026-10-06 07:13:03', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"其它\\\",\\\"subType\\\":\\\"销售订单\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-07-06\\\",\\\"endTime\\\":\\\"2026-10-06\\\",\\\"createTimeRange\\\":[\\\"2026-07-05T16:00:00.000Z\\\",\\\"2026-10-05T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":4,\"rows\":[{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789718483000,\"creator\":63,\"debt\":808500.000000,\"defaultNumber\":\"XSDD00000001726\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":808500.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1719,\"lastDebt\":808500.000000,\"lastDeposit\":0.000000,\"materialCount\":10000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD00000001726\",\"operTime\":1789732682000,\"operTimeStr\":\"2026-09-18 15:58:02\",\"organId\":90,\"organName\":\"TNB\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"totalPrice\":735000.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789726236000,\"creator\":63,\"debt\":340000000.000000,\"defaultNumber\":\"XSDD00000001724\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":340000000.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1718,\"lastDebt\":340000000.000000,\"lastDeposit\":0.000000,\"materialCount\":1000000.000000,\"materialsList\":\"3PH APEC3-WC 3PH APEC3-WC 3PH APEC3-WC \",\"number\":\"XSDD00000001724\",\"operTime\":1789725706000,\"operTimeStr\":\"2026-09-18 14:01:46\",\"organId\":90,\"organName\":\"TNB\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"0\",\"subType\":\"销售订单\",\"totalPrice\":340000000.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1785355200000,\"creator\":63,\"debt\":242550.000000,\"defaultNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":242550.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1580,\"lastDebt\":242550.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":3000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303475-1PH-WS79-ADD1\",\"operTime\":1785355200000,\"operTimeStr\":\"2026-07-30 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303475\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":242550.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1785355200000,\"creator\":63,\"debt\":323400.000000,\"defaultNumber\":\"XSDD-42303447-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":323400.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1574,\"lastDebt\":323400.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":4000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303447-1PH-WS79-ADD1\",\"operTime\":1785355200000,\"operTimeStr\":\"2026-07-30 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303447\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":323400.000000,\"type\":\"其它\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (9802, 63, '接口日志', '43.152.142.62/1.9.116.218', '2026-10-06 07:13:05', 0, 'SaleShipmentController.getList(..)', NULL, 'GET /apis/saleShipment/list', '{\"search\":\"{\\\"shipmentNumber\\\":\\\"\\\",\\\"saleOutNumber\\\":\\\"\\\",\\\"saleOrderNumber\\\":\\\"\\\",\\\"logisticsNo\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"actualQuantity\":10000.000000,\"approveBy\":63,\"approveByName\":\"admin\",\"approveRemark\":\"审批通过\",\"approveTime\":1789720647000,\"confirmBy\":63,\"confirmByName\":\"admin\",\"confirmTime\":1789720682000,\"createTime\":1789720588000,\"creator\":63,\"creatorName\":\"admin\",\"customerId\":90,\"customerName\":\"TNB\",\"deleteFlag\":\"0\",\"deliveryPlanId\":7,\"deliveryPlanNumber\":\"JH00000001741\",\"differenceQuantity\":0.000000,\"id\":17,\"materialsList\":\"1PH WS79\",\"planQuantity\":10000.000000,\"plannedShipTime\":1789734921000,\"saleOrderNumber\":\"XSDD00000001726\",\"saleOutId\":1720,\"saleOutNumber\":\"XSCK00000001728\",\"shipBy\":63,\"shipByName\":\"admin\",\"shipTime\":1789720682000,\"shipmentNumber\":\"FHTZ00000001742\",\"sourceType\":\"sale\",\"status\":\"2\"},{\"actualQuantity\":149.000000,\"approveBy\":63,\"approveByName\":\"admin\",\"approveRemark\":\"审批通过\",\"approveTime\":1789717350000,\"confirmBy\":63,\"confirmByName\":\"admin\",\"confirmTime\":1789717357000,\"createTime\":1789717342000,\"creator\":63,\"creatorName\":\"admin\",\"customerId\":90,\"customerName\":\"TNB\",\"deleteFlag\":\"0\",\"deliveryPlanId\":6,\"deliveryPlanNumber\":\"JH00000001717\",\"differenceQuantity\":0.000000,\"id\":16,\"logisticsCompany\":\"FEXD\",\"logisticsNo\":\"FD10000001\",\"materialsList\":\"3PH APEC3-WC\",\"planQuantity\":149.000000,\"plannedShipTime\":1789717304000,\"receiver\":\"Hank\",\"receiverAddress\":\"5433 Grand Ave\",\"receiverPhone\":\"60001-1111\",\"saleOrderNumber\":\"XSDD-42260529-3PH-APEC3-WC-OV\",\"saleOutId\":1714,\"saleOutNumber\":\"XSCK-3PH-APEC3-WC-OV-28\",\"shipBy\":63,\"shipByName\":\"admin\",\"shipTime\":1789717357000,\"shipmentNumber\":\"FHTZ00000001718\",\"sourceType\":\"sale\",\"status\":\"2\"}]}}'); +INSERT INTO `tbl_log` VALUES (9803, 63, '接口日志', '43.174.53.11/1.9.116.218', '2026-10-06 07:13:05', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9804, 63, '接口日志', '43.174.32.33/1.9.116.218', '2026-10-06 07:13:05', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (9805, 63, '接口日志', '43.174.53.19/1.9.116.218', '2026-10-06 07:13:05', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (9806, 63, '接口日志', '43.152.142.41/1.9.116.218', '2026-10-06 07:13:05', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"出库\\\",\\\"subType\\\":\\\"零售\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-07-06\\\",\\\"endTime\\\":\\\"2026-10-06\\\",\\\"createTimeRange\\\":[\\\"2026-07-05T16:00:00.000Z\\\",\\\"2026-10-05T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9807, 63, '接口日志', '43.174.32.14/1.9.116.218', '2026-10-06 07:13:05', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9808, 63, '接口日志', '43.168.32.214/1.9.116.218', '2026-10-06 07:13:05', 0, 'SupplierController.findBySelectRetail(..)', NULL, 'POST /apis/supplier/findBySelect_retail', '{\"jsonObject\":{\"limit\":1}}', '[]'); +INSERT INTO `tbl_log` VALUES (9809, 63, '接口日志', '43.152.142.108/1.9.116.218', '2026-10-06 07:13:05', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9810, 63, '接口日志', '43.174.54.27/1.9.116.218', '2026-10-06 07:13:05', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (9811, 63, '接口日志', '43.168.32.214/1.9.116.218', '2026-10-06 07:13:06', 0, 'SupplierController.findBySelectRetail(..)', NULL, 'POST /apis/supplier/findBySelect_retail', '{\"jsonObject\":{\"limit\":1}}', '[]'); +INSERT INTO `tbl_log` VALUES (9812, 63, '接口日志', '43.152.142.133/1.9.116.218', '2026-10-06 07:13:06', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (9813, 63, '接口日志', '43.152.142.83/1.9.116.218', '2026-10-06 07:13:06', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9814, 63, '接口日志', '43.174.51.49/1.9.116.218', '2026-10-06 07:13:06', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9815, 63, '接口日志', '43.174.53.48/1.9.116.218', '2026-10-06 07:13:06', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (9816, 63, '接口日志', '43.152.142.142/1.9.116.218', '2026-10-06 07:13:06', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"入库\\\",\\\"subType\\\":\\\"零售退货\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-07-06\\\",\\\"endTime\\\":\\\"2026-10-06\\\",\\\"createTimeRange\\\":[\\\"2026-07-05T16:00:00.000Z\\\",\\\"2026-10-05T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9817, 63, '接口日志', '43.174.53.11/1.9.116.218', '2026-10-06 07:13:06', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (9818, 63, '接口日志', '43.168.32.214/1.9.116.218', '2026-10-06 07:13:09', 0, 'SupplierController.findBySelectSup(..)', NULL, 'POST /apis/supplier/findBySelect_sup', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司\",\"id\":89}]'); +INSERT INTO `tbl_log` VALUES (9819, 63, '接口日志', '43.174.53.16/1.9.116.218', '2026-10-06 07:13:09', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9820, 63, '接口日志', '43.152.142.68/1.9.116.218', '2026-10-06 07:13:09', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9821, 63, '接口日志', '43.152.142.33/1.9.116.218', '2026-10-06 07:13:09', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (9822, 63, '接口日志', '43.152.142.118/1.9.116.218', '2026-10-06 07:13:09', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (9823, 63, '接口日志', '43.152.142.31/1.9.116.218', '2026-10-06 07:13:09', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"出库\\\",\\\"subType\\\":\\\"采购退货\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-07-06\\\",\\\"endTime\\\":\\\"2026-10-06\\\",\\\"createTimeRange\\\":[\\\"2026-07-05T16:00:00.000Z\\\",\\\"2026-10-05T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9824, 63, '接口日志', '43.152.142.41/1.9.116.218', '2026-10-06 07:13:09', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (9825, 63, '接口日志', '43.174.53.19/1.9.116.218', '2026-10-06 07:13:16', 0, 'PersonController.getList(..)', NULL, 'GET /apis/person/list', '{\"search\":\"{\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":11,\"rows\":[{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":44,\"name\":\"Neezam\",\"type\":\"CEO\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":43,\"name\":\"Juwairiah\",\"type\":\"财务员\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":31,\"name\":\"Arif\",\"sort\":\"1\",\"tenantId\":63,\"type\":\"商务主管\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":36,\"name\":\"张伟\",\"sort\":\"10\",\"tenantId\":63,\"type\":\"资产管理员\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":32,\"name\":\"Hafiz\",\"sort\":\"2\",\"tenantId\":63,\"type\":\"技术主管\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":37,\"name\":\"陈晨\",\"sort\":\"20\",\"tenantId\":63,\"type\":\"设备工程师\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":33,\"name\":\"Aziman\",\"sort\":\"3\",\"tenantId\":63,\"type\":\"软件工程师\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":38,\"name\":\"王磊\",\"sort\":\"30\",\"tenantId\":63,\"type\":\"生产主管\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":34,\"name\":\"Lim\",\"sort\":\"4\",\"tenantId\":63,\"type\":\"IT\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":39,\"name\":\"赵敏\",\"sort\":\"40\",\"tenantId\":63,\"type\":\"IT运维工程师\"}]}}'); +INSERT INTO `tbl_log` VALUES (9826, 63, '接口日志', '43.174.32.33/1.9.116.218', '2026-10-06 07:13:16', 0, 'SysDictDataController.dictType(..)', NULL, 'GET /apis/dict/data/type/person_type', '{\"dictType\":\"person_type\"}', '{\"msg\":\"操作成功\",\"code\":0,\"data\":[{\"createBy\":\"admin\",\"createTime\":1789644159000,\"dictCode\":13,\"dictLabel\":\"采购员\",\"dictSort\":3,\"dictType\":\"person_type\",\"dictValue\":\"采购员\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"},{\"createBy\":\"admin\",\"createTime\":1789724265000,\"dictCode\":14,\"dictLabel\":\"CEO\",\"dictSort\":4,\"dictType\":\"person_type\",\"dictValue\":\"CEO\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"},{\"createBy\":\"admin\",\"createTime\":1789724275000,\"dictCode\":15,\"dictLabel\":\"IT\",\"dictSort\":5,\"dictType\":\"person_type\",\"dictValue\":\"IT\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}]}'); +INSERT INTO `tbl_log` VALUES (9827, 63, '接口日志', '43.174.32.19/1.9.116.218', '2026-10-06 07:13:16', 0, 'SysDictDataController.dictType(..)', NULL, 'GET /apis/dict/data/type/person_type', '{\"dictType\":\"person_type\"}', '{\"msg\":\"操作成功\",\"code\":0,\"data\":[{\"createBy\":\"admin\",\"createTime\":1789644159000,\"dictCode\":13,\"dictLabel\":\"采购员\",\"dictSort\":3,\"dictType\":\"person_type\",\"dictValue\":\"采购员\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"},{\"createBy\":\"admin\",\"createTime\":1789724265000,\"dictCode\":14,\"dictLabel\":\"CEO\",\"dictSort\":4,\"dictType\":\"person_type\",\"dictValue\":\"CEO\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"},{\"createBy\":\"admin\",\"createTime\":1789724275000,\"dictCode\":15,\"dictLabel\":\"IT\",\"dictSort\":5,\"dictType\":\"person_type\",\"dictValue\":\"IT\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}]}'); +INSERT INTO `tbl_log` VALUES (9828, 63, '接口日志', '43.174.32.14/1.9.116.218', '2026-10-06 07:13:50', 0, 'AccountController.getList(..)', NULL, 'GET /apis/account/list', '{\"search\":\"{\\\"name\\\":\\\"\\\",\\\"serialNo\\\":\\\"\\\",\\\"remark\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63,\"thisMonthAmount\":\"0\"},{\"currentAmount\":4375618.532800,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63,\"thisMonthAmount\":\"0\"}]}}'); +INSERT INTO `tbl_log` VALUES (9829, 63, '接口日志', '43.152.142.45/1.9.116.218', '2026-10-06 07:13:55', 0, 'InOutItemController.getList(..)', NULL, 'GET /apis/inOutItem/list', '{\"search\":\"{\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"\\\",\\\"remark\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":3,\"rows\":[{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":23,\"name\":\"利息收入\",\"remark\":\"收入\",\"tenantId\":63,\"type\":\"收入\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":22,\"name\":\"房租收入\",\"remark\":\"\",\"tenantId\":63,\"type\":\"收入\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":21,\"name\":\"快递费\",\"remark\":\"\",\"tenantId\":63,\"type\":\"支出\"}]}}'); +INSERT INTO `tbl_log` VALUES (9830, NULL, '接口日志', '43.174.32.12/1.9.116.218', '2026-10-06 07:14:01', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (9831, NULL, '接口日志', '43.152.142.62/1.9.116.218', '2026-10-06 07:14:01', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (9832, 63, '接口日志', '43.168.32.214/1.9.116.218', '2026-10-06 07:14:02', 0, 'FunctionController.findMenuByPNumber(..)', NULL, 'POST /apis/function/findMenuByPNumber', '{\"jsonObject\":{\"userId\":63,\"pNumber\":0}}', '[{\"component\":\"/layouts/TabLayout\",\"icon\":\"home\",\"id\":0,\"text\":\"首页\",\"url\":\"/dashboard/analysis\",\"textEn\":\"Home\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/SaleOrderList\",\"icon\":\"profile\",\"id\":242,\"text\":\"销售订单\",\"url\":\"/bill/sale_order\",\"textEn\":\"Sales Orders\"},{\"component\":\"/bill/SaleOutList\",\"icon\":\"profile\",\"id\":41,\"text\":\"销售出库\",\"url\":\"/bill/sale_out\",\"textEn\":\"Sales Shipments\"},{\"component\":\"/bill/DeliveryPlanList\",\"icon\":\"profile\",\"id\":271,\"text\":\"交货计划管理\",\"url\":\"/bill/delivery_plan\",\"textEn\":\"Delivery Plans\"},{\"component\":\"/bill/SaleShipmentList\",\"icon\":\"car\",\"id\":268,\"text\":\"发货管理\",\"url\":\"/bill/sale_shipment\",\"textEn\":\"Shipment Management\"},{\"component\":\"/bill/SaleBackList\",\"icon\":\"profile\",\"id\":200,\"text\":\"销售退货\",\"url\":\"/bill/sale_back\",\"textEn\":\"Sales Returns\"},{\"component\":\"/bill/RetailOutList\",\"icon\":\"profile\",\"id\":210,\"text\":\"零售出库\",\"url\":\"/bill/retail_out\",\"textEn\":\"Retail Shipments\"},{\"component\":\"/bill/RetailBackList\",\"icon\":\"profile\",\"id\":211,\"text\":\"零售退货\",\"url\":\"/bill/retail_back\",\"textEn\":\"Retail Returns\"}],\"icon\":\"shopping-cart\",\"id\":38,\"text\":\"销售管理\",\"url\":\"/billB\",\"textEn\":\"Sales Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/PurchaseApplyList\",\"icon\":\"profile\",\"id\":261,\"text\":\"请购单\",\"url\":\"/bill/purchase_apply\",\"textEn\":\"Purchase Requisitions\"},{\"component\":\"/bill/PurchaseOrderList\",\"icon\":\"profile\",\"id\":241,\"text\":\"采购订单\",\"url\":\"/bill/purchase_order\",\"textEn\":\"Purchase Orders\"},{\"component\":\"/bill/PurchaseInList\",\"icon\":\"profile\",\"id\":33,\"text\":\"采购入库\",\"url\":\"/bill/purchase_in\",\"textEn\":\"Purchase Receipts\"},{\"component\":\"/bill/PurchaseBackList\",\"icon\":\"profile\",\"id\":199,\"text\":\"采购退货\",\"url\":\"/bill/purchase_back\",\"textEn\":\"Purchase Returns\"}],\"icon\":\"retweet\",\"id\":32,\"text\":\"采购管理\",\"url\":\"/bill\",\"textEn\":\"Purchase Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/production/PackBomList\",\"icon\":\"profile\",\"id\":263,\"text\":\"生产方案\",\"url\":\"/production/pack_bom\",\"textEn\":\"Production BOMs\"},{\"component\":\"/production/OrderList\",\"icon\":\"profile\",\"id\":264,\"text\":\"生产工单\",\"url\":\"/production/order\",\"textEn\":\"Production Orders\"},{\"component\":\"/production/RequisitionList\",\"icon\":\"profile\",\"id\":265,\"text\":\"领料管理\",\"url\":\"/production/requisition\",\"textEn\":\"Material Requisitions\"},{\"component\":\"/production/ReportList\",\"icon\":\"profile\",\"id\":266,\"text\":\"完工报工\",\"url\":\"/production/report\",\"textEn\":\"Production Reports\"}],\"icon\":\"cluster\",\"id\":262,\"text\":\"生产管理\",\"url\":\"/production\",\"textEn\":\"Production Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/MaterialStock\",\"icon\":\"profile\",\"id\":246,\"text\":\"商品库存\",\"url\":\"/report/material_stock\",\"textEn\":\"Product Inventory\"},{\"component\":\"/bill/OtherInList\",\"icon\":\"profile\",\"id\":201,\"text\":\"其它入库\",\"url\":\"/bill/other_in\",\"textEn\":\"Other Receipts\"},{\"component\":\"/bill/OtherOutList\",\"icon\":\"profile\",\"id\":202,\"text\":\"其它出库\",\"url\":\"/bill/other_out\",\"textEn\":\"Other Shipments\"},{\"component\":\"/bill/HeadquartersInList\",\"icon\":\"profile\",\"id\":270,\"text\":\"总部入库\",\"url\":\"/bill/headquarters_in\",\"textEn\":\"Headquarters Receipts\"}],\"icon\":\"hdd\",\"id\":239,\"text\":\"仓库管理\",\"url\":\"/billD\",\"textEn\":\"Warehouse Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/financial/MoneyInList\",\"icon\":\"profile\",\"id\":204,\"text\":\"收款单\",\"url\":\"/financial/money_in\",\"textEn\":\"Receipt Vouchers\"},{\"component\":\"/financial/MoneyOutList\",\"icon\":\"profile\",\"id\":205,\"text\":\"付款单\",\"url\":\"/financial/money_out\",\"textEn\":\"Payment Vouchers\"}],\"icon\":\"money-collect\",\"id\":44,\"text\":\"财务管理\",\"url\":\"/financial\",\"textEn\":\"Finance Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/asset/AssetDashboard\",\"icon\":\"dashboard\",\"id\":276,\"text\":\"资产汇总\",\"url\":\"/asset\",\"textEn\":\"Asset Overview\"},{\"component\":\"/asset/AssetList\",\"icon\":\"profile\",\"id\":273,\"text\":\"资产台账\",\"url\":\"/asset/ledger\",\"textEn\":\"Asset Ledger\"},{\"component\":\"/asset/DeviceList\",\"icon\":\"tool\",\"id\":274,\"text\":\"设备台账\",\"url\":\"/asset/device\",\"textEn\":\"Device Ledger\"},{\"component\":\"/asset/InventoryList\",\"icon\":\"scan\",\"id\":275,\"text\":\"资产盘点\",\"url\":\"/asset/inventory\",\"textEn\":\"Asset Inventory\"}],\"icon\":\"bank\",\"id\":272,\"text\":\"资产管理\",\"url\":\"/assetManagement\",\"textEn\":\"Asset Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/material/MaterialCategoryList\",\"icon\":\"profile\",\"id\":22,\"text\":\"商品类别\",\"url\":\"/material/material_category\",\"textEn\":\"Product Categories\"},{\"component\":\"/material/MaterialList\",\"icon\":\"profile\",\"id\":23,\"text\":\"商品信息\",\"url\":\"/material/material\",\"textEn\":\"Product Information\"},{\"component\":\"/system/UnitList\",\"icon\":\"profile\",\"id\":220,\"text\":\"多单位\",\"url\":\"/system/unit\",\"textEn\":\"Multiple Units\"},{\"component\":\"/material/MaterialAttributeList\",\"icon\":\"profile\",\"id\":247,\"text\":\"多属性\",\"url\":\"/material/material_attribute\",\"textEn\":\"Product Attributes\"}],\"icon\":\"shopping\",\"id\":21,\"text\":\"商品管理\",\"url\":\"/material\",\"textEn\":\"Product Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/AccountReport\",\"icon\":\"profile\",\"id\":207,\"text\":\"账户统计\",\"url\":\"/report/account_report\",\"textEn\":\"Account Summary\"},{\"component\":\"/report/RetailOutReport\",\"icon\":\"profile\",\"id\":259,\"text\":\"零售统计\",\"url\":\"/report/retail_out_report\",\"textEn\":\"Retail Summary\"},{\"component\":\"/report/BuyInReport\",\"icon\":\"profile\",\"id\":208,\"text\":\"采购统计\",\"url\":\"/report/buy_in_report\",\"textEn\":\"Purchase Summary\"},{\"component\":\"/report/SaleOutReport\",\"icon\":\"profile\",\"id\":209,\"text\":\"销售统计\",\"url\":\"/report/sale_out_report\",\"textEn\":\"Sales Summary\"},{\"component\":\"/report/InDetail\",\"icon\":\"profile\",\"id\":226,\"text\":\"入库明细\",\"url\":\"/report/in_detail\",\"textEn\":\"Inbound Details\"},{\"component\":\"/report/OutDetail\",\"icon\":\"profile\",\"id\":227,\"text\":\"出库明细\",\"url\":\"/report/out_detail\",\"textEn\":\"Outbound Details\"},{\"component\":\"/report/InMaterialCount\",\"icon\":\"profile\",\"id\":228,\"text\":\"入库汇总\",\"url\":\"/report/in_material_count\",\"textEn\":\"Inbound Summary\"},{\"component\":\"/report/OutMaterialCount\",\"icon\":\"profile\",\"id\":229,\"text\":\"出库汇总\",\"url\":\"/report/out_material_count\",\"textEn\":\"Outbound Summary\"},{\"component\":\"/report/InOutStockReport\",\"icon\":\"profile\",\"id\":59,\"text\":\"进销存统计\",\"url\":\"/report/in_out_stock_report\",\"textEn\":\"Inventory Transaction Summary\"},{\"component\":\"/report/CustomerAccount\",\"icon\":\"profile\",\"id\":235,\"text\":\"客户对账\",\"url\":\"/report/customer_account\",\"textEn\":\"Customer Reconciliation\"},{\"component\":\"/report/VendorAccount\",\"icon\":\"profile\",\"id\":237,\"text\":\"供应商对账\",\"url\":\"/report/vendor_account\",\"textEn\":\"Supplier Reconciliation\"},{\"component\":\"/report/StockWarningReport\",\"icon\":\"profile\",\"id\":244,\"text\":\"库存预警\",\"url\":\"/report/stock_warning_report\",\"textEn\":\"Stock Alerts\"}],\"icon\":\"pie-chart\",\"id\":198,\"text\":\"报表查询\",\"url\":\"/report\",\"textEn\":\"Reports\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/VendorList\",\"icon\":\"profile\",\"id\":25,\"text\":\"供应商信息\",\"url\":\"/system/vendor\",\"textEn\":\"Suppliers\"},{\"component\":\"/system/CustomerList\",\"icon\":\"profile\",\"id\":217,\"text\":\"客户信息\",\"url\":\"/system/customer\",\"textEn\":\"Customers\"},{\"component\":\"/system/MemberList\",\"icon\":\"profile\",\"id\":218,\"text\":\"会员信息\",\"url\":\"/system/member\",\"textEn\":\"Members\"},{\"component\":\"/system/CustomerCategoryList\",\"icon\":\"bars\",\"id\":267,\"text\":\"客户分类\",\"url\":\"/system/customerCategory\",\"textEn\":\"Customer Categories\"},{\"component\":\"/system/DepotList\",\"icon\":\"profile\",\"id\":26,\"text\":\"仓库信息\",\"url\":\"/system/depot\",\"textEn\":\"Warehouses\"},{\"component\":\"/system/InOutItemList\",\"icon\":\"profile\",\"id\":194,\"text\":\"收支项目\",\"url\":\"/system/in_out_item\",\"textEn\":\"Income and Expense Items\"},{\"component\":\"/system/AccountList\",\"icon\":\"profile\",\"id\":195,\"text\":\"结算账户\",\"url\":\"/system/account\",\"textEn\":\"Settlement Accounts\"},{\"component\":\"/system/PersonList\",\"icon\":\"profile\",\"id\":31,\"text\":\"操作人员管理\",\"url\":\"/system/person\",\"textEn\":\"Operators\"}],\"icon\":\"appstore\",\"id\":24,\"text\":\"基础资料\",\"url\":\"/systemA\",\"textEn\":\"Master Data\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/RoleList\",\"icon\":\"profile\",\"id\":13,\"text\":\"角色管理\",\"url\":\"/system/role\",\"textEn\":\"Role Management\"},{\"component\":\"/system/UserList\",\"icon\":\"profile\",\"id\":14,\"text\":\"用户管理\",\"url\":\"/system/user\",\"textEn\":\"User Management\"},{\"component\":\"/system/OrganizationList\",\"icon\":\"profile\",\"id\":243,\"text\":\"部门管理\",\"url\":\"/system/organization\",\"textEn\":\"Department Management\"},{\"component\":\"/system/LogList\",\"icon\":\"profile\",\"id\":15,\"text\":\"日志管理\",\"url\":\"/system/log\",\"textEn\":\"Log Management\"},{\"component\":\"/material/MaterialPropertyList\",\"icon\":\"profile\",\"id\":236,\"text\":\"商品属性\",\"url\":\"/material/material_property\",\"textEn\":\"Product Properties\"},{\"component\":\"/system/SystemConfigList\",\"icon\":\"profile\",\"id\":234,\"text\":\"系统配置\",\"url\":\"/system/system_config\",\"textEn\":\"System Configuration\"},{\"component\":\"/system/FunctionList\",\"icon\":\"profile\",\"id\":16,\"text\":\"菜单管理\",\"url\":\"/system/function\",\"textEn\":\"Resource Menus\"},{\"component\":\"/system/PluginList\",\"icon\":\"profile\",\"id\":245,\"text\":\"插件管理\",\"url\":\"/system/plugin\",\"textEn\":\"Plugin Management\"},{\"component\":\"/system/DictList\",\"icon\":\"profile\",\"id\":260,\"text\":\"字典管理\",\"url\":\"/system/dict\",\"textEn\":\"Dictionary Management\"},{\"component\":\"/system/PlatformConfigList\",\"icon\":\"profile\",\"id\":258,\"text\":\"平台配置\",\"url\":\"/system/platform_config\",\"textEn\":\"Platform Configuration\"}],\"icon\":\"setting\",\"id\":1,\"text\":\"系统管理\",\"url\":\"/system\",\"textEn\":\"System Management\"}]'); +INSERT INTO `tbl_log` VALUES (9833, 63, '接口日志', '43.152.142.110/1.9.116.218', '2026-10-06 07:14:02', 0, 'UserController.getUserBtnByCurrentUser(..)', NULL, 'GET /apis/user/getUserBtnByCurrentUser', '{}', '{\"code\":200,\"data\":{\"userBtn\":[{\"btnStr\":\"8,1\",\"url\":\"/system/role\"},{\"btnStr\":\"1\",\"url\":\"/system/user\"},{\"btnStr\":\"1\",\"url\":\"/system/organization\"},{\"btnStr\":\"1\",\"url\":\"/material/material_property\"},{\"btnStr\":\"1\",\"url\":\"/system/system_config\"},{\"btnStr\":\"1\",\"url\":\"/system/function\"},{\"btnStr\":\"1\",\"url\":\"/system/plugin\"},{\"btnStr\":\"1\",\"url\":\"/material/material_category\"},{\"btnStr\":\"1,3\",\"url\":\"/material/material\"},{\"btnStr\":\"1\",\"url\":\"/system/unit\"},{\"btnStr\":\"1\",\"url\":\"/material/material_attribute\"},{\"btnStr\":\"1,3\",\"url\":\"/system/vendor\"},{\"btnStr\":\"1,3\",\"url\":\"/system/customer\"},{\"btnStr\":\"1,3\",\"url\":\"/system/member\"},{\"btnStr\":\"1\",\"url\":\"/system/depot\"},{\"btnStr\":\"1\",\"url\":\"/system/in_out_item\"},{\"btnStr\":\"1\",\"url\":\"/system/account\"},{\"btnStr\":\"1\",\"url\":\"/system/person\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_apply\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_out\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/delivery_plan\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/sale_shipment\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_out\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/order\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/requisition\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/report\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/giro\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/advance_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/allocation_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/assemble\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/headquarters_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/disassemble\"}]}}'); +INSERT INTO `tbl_log` VALUES (9834, 63, '接口日志', '43.174.55.40/1.9.116.218', '2026-10-06 07:14:02', 0, 'MsgController.getList(..)', NULL, 'GET /apis/msg/list', '{\"search\":\"{\\\"name\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9835, 63, '接口日志', '43.152.142.108/1.9.116.218', '2026-10-06 07:14:02', 0, 'MsgController.getMsgByStatus(..)', NULL, 'GET /apis/msg/getMsgByStatus', '{\"status\":\"1\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (9836, 63, '接口日志', '43.174.54.27/1.9.116.218', '2026-10-06 07:14:02', 0, 'InOutItemController.getList(..)', NULL, 'GET /apis/inOutItem/list', '{\"search\":\"{\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"\\\",\\\"remark\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":3,\"rows\":[{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":23,\"name\":\"利息收入\",\"remark\":\"收入\",\"tenantId\":63,\"type\":\"收入\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":22,\"name\":\"房租收入\",\"remark\":\"\",\"tenantId\":63,\"type\":\"收入\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":21,\"name\":\"快递费\",\"remark\":\"\",\"tenantId\":63,\"type\":\"支出\"}]}}'); +INSERT INTO `tbl_log` VALUES (9837, 63, '接口日志', '43.174.51.49/1.9.116.218', '2026-10-06 07:14:07', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9838, 63, '接口日志', '43.152.142.142/1.9.116.218', '2026-10-06 07:14:07', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (9839, 63, '接口日志', '43.174.53.11/1.9.116.218', '2026-10-06 07:14:07', 0, 'DepotController.getList(..)', NULL, 'GET /apis/depot/list', '{\"search\":\"{\\\"name\\\":\\\"\\\",\\\"remark\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"address\":\"\",\"deleteFlag\":\"0\",\"enabled\":true,\"id\":25,\"isDefault\":true,\"name\":\"半成品仓库\",\"remark\":\"总部入库物料\",\"sort\":\"1\",\"tenantId\":63,\"truckage\":0.000000,\"type\":0,\"warehousing\":0.000000},{\"address\":\"\",\"deleteFlag\":\"0\",\"enabled\":true,\"id\":26,\"isDefault\":false,\"name\":\"成品仓库\",\"remark\":\"Stock Status成品\",\"sort\":\"2\",\"tenantId\":63,\"truckage\":0.000000,\"type\":0,\"warehousing\":0.000000}]}}'); +INSERT INTO `tbl_log` VALUES (9840, 63, '接口日志', '43.174.32.19/1.9.116.218', '2026-10-06 07:14:09', 0, 'CustomerCategoryController.getTreeList(..)', NULL, 'GET /apis/customerCategory/treeList', '{}', '{\"code\":200,\"data\":{\"data\":[],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9841, 63, '接口日志', '43.152.142.62/1.9.116.218', '2026-10-06 07:14:27', 0, 'SupplierController.getList(..)', NULL, 'GET /apis/supplier/list', '{\"search\":\"{\\\"supplier\\\":\\\"\\\",\\\"type\\\":\\\"会员\\\",\\\"telephone\\\":\\\"\\\",\\\"phonenum\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9842, 63, '接口日志', '43.152.142.110/1.9.116.218', '2026-10-06 07:14:29', 0, 'CustomerCategoryController.getTreeList(..)', NULL, 'GET /apis/customerCategory/treeList', '{}', '{\"code\":200,\"data\":{\"data\":[],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9843, 63, '接口日志', '43.152.142.33/1.9.116.218', '2026-10-06 07:14:29', 0, 'SupplierController.getList(..)', NULL, 'GET /apis/supplier/list', '{\"search\":\"{\\\"supplier\\\":\\\"\\\",\\\"type\\\":\\\"客户\\\",\\\"contacts\\\":\\\"\\\",\\\"telephone\\\":\\\"\\\",\\\"phonenum\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"accountNumber\":\"\",\"address\":\"\",\"advanceIn\":0.000000,\"allNeedGet\":12430066.000000,\"allNeedPay\":0.000000,\"bankName\":\"\",\"beginNeedGet\":0.000000,\"beginNeedPay\":0.000000,\"contacts\":\"\",\"creator\":63,\"deleteFlag\":\"0\",\"description\":\"Stock Status客户\",\"email\":\"\",\"enabled\":true,\"fax\":\"\",\"id\":90,\"isystem\":1,\"phoneNum\":\"\",\"sort\":\"2\",\"supplier\":\"TNB\",\"taxNum\":\"\",\"taxRate\":10.000000,\"telephone\":\"\",\"tenantId\":63,\"type\":\"客户\"}]}}'); +INSERT INTO `tbl_log` VALUES (9844, 63, '接口日志', '43.152.142.108/1.9.116.218', '2026-10-06 07:14:29', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9845, 63, '接口日志', '43.152.142.133/1.9.116.218', '2026-10-06 07:14:37', 0, 'CustomerContactController.getListByCustomerId(..)', NULL, 'GET /apis/customerContact/listByCustomerId', '{\"customerId\":90}', '{\"code\":200,\"data\":{\"data\":[],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9846, 63, '接口日志', '43.152.142.45/1.9.116.218', '2026-10-06 07:14:42', 0, 'SupplierController.getList(..)', NULL, 'GET /apis/supplier/list', '{\"search\":\"{\\\"supplier\\\":\\\"\\\",\\\"type\\\":\\\"供应商\\\",\\\"contacts\\\":\\\"\\\",\\\"telephone\\\":\\\"\\\",\\\"phonenum\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"accountNumber\":\"\",\"address\":\"\",\"advanceIn\":0.000000,\"allNeedGet\":0.000000,\"allNeedPay\":116500257.436400,\"bankName\":\"\",\"beginNeedGet\":0.000000,\"beginNeedPay\":0.000000,\"contacts\":\"\",\"creator\":63,\"deleteFlag\":\"0\",\"description\":\"Excel初始化默认供应商\",\"email\":\"\",\"enabled\":true,\"fax\":\"\",\"id\":89,\"isystem\":1,\"phoneNum\":\"\",\"sort\":\"1\",\"supplier\":\"浙江瑞银电子有限公司\",\"taxNum\":\"\",\"taxRate\":0.000000,\"telephone\":\"\",\"tenantId\":63,\"type\":\"供应商\"}]}}'); +INSERT INTO `tbl_log` VALUES (9847, 63, '接口日志', '43.174.53.19/1.9.116.218', '2026-10-06 07:15:05', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9848, 63, '接口日志', '43.174.54.27/1.9.116.218', '2026-10-06 07:15:05', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (9849, 63, '接口日志', '43.152.142.140/1.9.116.218', '2026-10-06 07:15:05', 0, 'DepotItemController.findStockWarningCount(..)', NULL, 'GET /apis/depotItem/findStockWarningCount', '{\"currentPage\":1,\"pageSize\":10,\"materialParam\":\"\",\"mpList\":\"扩展1,扩展2,扩展3\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9850, 63, '接口日志', '43.152.142.142/1.9.116.218', '2026-10-06 07:15:07', 0, 'DepotItemController.findStockWarningCount(..)', NULL, 'GET /apis/depotItem/findStockWarningCount', '{\"currentPage\":1,\"pageSize\":10,\"materialParam\":\"\",\"mpList\":\"扩展1,扩展2,扩展3\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9851, 63, '接口日志', '43.168.32.214/1.9.116.218', '2026-10-06 07:15:37', 0, 'SystemConfigController.exportExcelByParam(..)', NULL, 'POST /apis/systemConfig/exportExcelByParam', '{\"jsonObject\":{\"head\":\"仓库,条码,名称,规格,型号,颜色,品牌,制造商,扩展1,扩展2,扩展3,单位,库存,最低安全库存,最高安全库存,建议入库量,建议出库量\",\"tip\":\"库存预警查询\",\"title\":\"库存预警\",\"list\":[]}}', NULL); +INSERT INTO `tbl_log` VALUES (9852, 63, '接口日志', '43.174.32.12/1.9.116.218', '2026-10-06 07:16:06', 0, 'DepotItemController.findStockWarningCount(..)', NULL, 'GET /apis/depotItem/findStockWarningCount', '{\"currentPage\":1,\"pageSize\":10,\"materialParam\":\"\",\"mpList\":\"扩展1,扩展2,扩展3\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9853, 63, '接口日志', '43.152.142.33/1.9.116.218', '2026-10-06 07:16:07', 0, 'DepotItemController.findStockWarningCount(..)', NULL, 'GET /apis/depotItem/findStockWarningCount', '{\"currentPage\":1,\"pageSize\":10,\"materialParam\":\"\",\"mpList\":\"扩展1,扩展2,扩展3\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9854, 63, '接口日志', '43.174.51.49/1.9.116.218', '2026-10-06 07:16:08', 0, 'DepotItemController.findStockWarningCount(..)', NULL, 'GET /apis/depotItem/findStockWarningCount', '{\"currentPage\":1,\"pageSize\":10,\"materialParam\":\"\",\"mpList\":\"扩展1,扩展2,扩展3\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9855, 63, '接口日志', '43.152.142.118/1.9.116.218', '2026-10-06 07:16:20', 0, 'DepotItemController.findStockWarningCount(..)', NULL, 'GET /apis/depotItem/findStockWarningCount', '{\"currentPage\":1,\"pageSize\":10,\"materialParam\":\"\",\"mpList\":\"扩展1,扩展2,扩展3\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9856, 63, '接口日志', '43.168.32.214/1.9.116.218', '2026-10-06 07:16:23', 0, 'SupplierController.findBySelectSup(..)', NULL, 'POST /apis/supplier/findBySelect_sup', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司\",\"id\":89}]'); +INSERT INTO `tbl_log` VALUES (9857, 63, '接口日志', '43.152.142.45/1.9.116.218', '2026-10-06 07:16:23', 0, 'DepotHeadController.getStatementAccount(..)', NULL, 'GET /apis/depotHead/getStatementAccount', '{\"currentPage\":1,\"pageSize\":10,\"beginTime\":\"2026-07-06\",\"endTime\":\"2026-10-06\",\"hasDebt\":1,\"supplierType\":\"供应商\"}', '{\"code\":200,\"data\":{\"total\":1,\"firstMoney\":103509293.334800,\"lastMoney\":116500257.436400,\"rows\":[{\"allNeed\":116500257.436400,\"backMoney\":2139558.598400,\"beginNeed\":0.000000,\"contacts\":\"\",\"debtMoney\":15130522.700000,\"email\":\"\",\"id\":89,\"phoneNum\":\"\",\"preBackMoney\":10686582.135200,\"preDebtMoney\":114195875.470000,\"preNeed\":103509293.334800,\"preReturnDebtMoney\":0.000000,\"returnDebtMoney\":0.000000,\"supplier\":\"浙江瑞银电子有限公司\",\"telephone\":\"\"}]}}'); +INSERT INTO `tbl_log` VALUES (9858, 63, '接口日志', '43.168.32.214/1.9.116.218', '2026-10-06 07:16:26', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (9859, 63, '接口日志', '43.168.32.214/1.9.116.218', '2026-10-06 07:16:26', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (9860, 63, '接口日志', '43.174.32.12/1.9.116.218', '2026-10-06 07:16:26', 0, 'CustomerCategoryController.getTreeList(..)', NULL, 'GET /apis/customerCategory/treeList', '{}', '{\"code\":200,\"data\":{\"data\":[],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9861, 63, '接口日志', '43.174.55.40/1.9.116.218', '2026-10-06 07:16:26', 0, 'DepotHeadController.getStatementAccount(..)', NULL, 'GET /apis/depotHead/getStatementAccount', '{\"currentPage\":1,\"pageSize\":10,\"beginTime\":\"2026-07-06\",\"endTime\":\"2026-10-06\",\"hasDebt\":1,\"supplierType\":\"客户\"}', '{\"code\":200,\"data\":{\"total\":1,\"firstMoney\":13532266.000000,\"lastMoney\":12430066.000000,\"rows\":[{\"allNeed\":12430066.000000,\"backMoney\":4336200.000000,\"beginNeed\":0.000000,\"contacts\":\"\",\"debtMoney\":3234000.000000,\"email\":\"\",\"id\":90,\"phoneNum\":\"\",\"preBackMoney\":10677700.000000,\"preDebtMoney\":24209966.000000,\"preNeed\":13532266.000000,\"preReturnDebtMoney\":0.000000,\"returnDebtMoney\":0.000000,\"supplier\":\"TNB\",\"telephone\":\"\"}]}}'); +INSERT INTO `tbl_log` VALUES (9862, 63, '接口日志', '43.152.142.140/1.9.116.218', '2026-10-06 07:16:28', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (9863, 63, '接口日志', '43.152.142.62/1.9.116.218', '2026-10-06 07:16:28', 0, 'DepotHeadController.debtList(..)', NULL, 'GET /apis/depotHead/debtList', '{\"search\":\"{\\\"organId\\\":90,\\\"materialParam\\\":\\\"\\\",\\\"number\\\":\\\"\\\",\\\"type\\\":\\\"出库\\\",\\\"subType\\\":\\\"销售\\\",\\\"status\\\":\\\"\\\",\\\"mpList\\\":\\\"扩展1,扩展2,扩展3\\\",\\\"beginTime\\\":\\\"2026-07-06\\\",\\\"endTime\\\":\\\"2026-10-06\\\"}\",\"currentPage\":1,\"pageSize\":10001}', '{\"code\":200,\"data\":{\"total\":29,\"rows\":[{\"fileName\":\"\",\"totalPrice\":735000.000000,\"discount\":0.000000,\"discountLastMoney\":808500.000000,\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"出库\",\"operTimeStr\":\"2026-09-18 16:03:01\",\"deleteFlag\":\"0\",\"number\":\"XSCK00000001728\",\"payType\":\"现付\",\"accountIdList\":\"\",\"needDebt\":808500.000000,\"id\":1720,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-09-18\",\"creator\":63,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"defaultNumber\":\"XSCK00000001728\",\"linkNumber\":\"XSDD00000001726\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"accountId\":17,\"organName\":\"TNB\",\"lastDebt\":808500.000000,\"otherMoney\":0.000000,\"createTime\":1789718584000,\"deposit\":0,\"organId\":90,\"purchaseStatus\":\"0\",\"subType\":\"销售\",\"debt\":808500.000000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":80850.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"出库\",\"operTimeStr\":\"2026-08-10 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"XSCK-1PH-WS79-ADD1-87\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":80850.000000,\"id\":1671,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-08-10\",\"creator\":63,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-87\",\"linkNumber\":\"XSDD-42303506-1PH-WS79-ADD1\",\"backAmount\":0.000000,\"billType\":\"销售\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"organName\":\"TNB\",\"lastDebt\":80850.000000,\"otherMoney\":0.000000,\"createTime\":1786305600000,\"tenantId\":63,\"deposit\":0.000000,\"organId\":90,\"subType\":\"销售\",\"debt\":80850.000000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":80850.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2159\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"出库\",\"operTimeStr\":\"2026-08-10 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"XSCK-INV_2159-86\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":80850.000000,\"id\":1670,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-08-10\",\"creator\":63,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"defaultNumber\":\"XSCK-INV_2159-86\",\"linkNumber\":\"XSDD-42303506-1PH-WS79-ADD1\",\"backAmount\":0.000000,\"billType\":\"销售\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"organName\":\"TNB\",\"lastDebt\":80850.000000,\"otherMoney\":0.000000,\"createTime\":1786305600000,\"tenantId\":63,\"deposit\":0.000000,\"organId\":90,\"subType\":\"销售\",\"debt\":80850.000000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":80850.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:DO_2158\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"出库\",\"operTimeStr\":\"2026-08-05 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"XSCK-DO_2158-85\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":80850.000000,\"id\":1669,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-08-05\",\"creator\":63,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"defaultNumber\":\"XSCK-DO_2158-85\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"backAmount\":0.000000,\"billType\":\"销售\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"organName\":\"TNB\",\"lastDebt\":80850.000000,\"otherMoney\":0.000000,\"createTime\":1785873600000,\"tenantId\":63,\"deposit\":0.000000,\"organId\":90,\"subType\":\"销售\",\"debt\":80850.000000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":80850.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"出库\",\"operTimeStr\":\"2026-08-05 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"XSCK-1PH-WS79-ADD1-84\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":80850.000000,\"id\":1668,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-08-05\",\"creator\":63,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-84\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"backAmount\":0.000000,\"billType\":\"销售\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"organName\":\"TNB\",\"lastDebt\":80850.000000,\"otherMoney\":0.000000,\"createTime\":1785873600000,\"tenantId\":63,\"deposit\":0.000000,\"organId\":90,\"subType\":\"销售\",\"debt\":80850.000000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":80850.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:DO_2157\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"出库\",\"operTimeStr\":\"2026-08-05 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"XSCK-DO_2157-83\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":80850.000000,\"id\":1667,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-08-05\",\"creator\":63,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"defaultNumber\":\"XSCK-DO_2157-83\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"backAmount\":0.000000,\"billType\":\"销售\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"organName\":\"TNB\",\"lastDebt\":80850.000000,\"otherMoney\":0.000000,\"createTime\":1785873600000,\"tenantId\":63,\"deposit\":0.000000,\"organId\":90,\"subType\":\"销售\",\"debt\":80850.000000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":80850.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2150\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"出库\",\"operTimeStr\":\"2026-07-29 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"XSCK-INV_2150-69\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":80850.000000,\"id\":1665,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-07-29\",\"creator\":63,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"defaultNumber\":\"XSCK-INV_2150-69\",\"linkNumber\":\"XSDD-42303480-1PH-WS79-ADD1\",\"backAmount\":0.000000,\"billType\":\"销售\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"organName\":\"TNB\",\"lastDebt\":80850.000000,\"otherMoney\":0.000000,\"createTime\":1785268800000,\"tenantId\":63,\"deposit\":0.000000,\"organId\":90,\"subType\":\"销售\",\"debt\":80850.000000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":80850.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:do_2148\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"出库\",\"operTimeStr\":\"2026-07-27 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"XSCK-do_2148-60\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":80850.000000,\"id\":1655,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-07-27\",\"creator\":63,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"defaultNumber\":\"XSCK-do_2148-60\",\"linkNumber\":\"XSDD-42303465-1PH-WS79-ADD1\",\"backAmount\":0.000000,\"billType\":\"销售\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"organName\":\"TNB\",\"lastDebt\":80850.000000,\"otherMoney\":0.000000,\"createTime\":1785096000000,\"tenantId\":63,\"deposit\":0.000000,\"organId\":90,\"subType\":\"销售\",\"debt\":80850.000000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":80850.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"出库\",\"operTimeStr\":\"2026-07-27 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"XSCK-1PH-WS79-ADD1-61\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":80850.000000,\"id\":1656,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-07-27\",\"creator\":63,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-61\",\"linkNumber\":\"XSDD-42303465-1PH-WS79-ADD1\",\"backAmount\":0.000000,\"billType\":\"销售\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"organName\":\"TNB\",\"lastDebt\":80850.000000,\"otherMoney\":0.000000,\"createTime\":1785096000000,\"tenantId\":63,\"deposit\":0.000000,\"organId\":90,\"subType\":\"销售\",\"debt\":80850.000000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":80850.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:do_2147\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"出库\",\"operTimeStr\":\"2026-07-27 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"XSCK-do_2147-59\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":80850.000000,\"id\":1654,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-07-27\",\"creator\":63,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"defaultNumber\":\"XSCK-do_2147-59\",\"linkNumber\":\"XSDD-42303465-1PH-WS79-ADD1\",\"backAmount\":0.000000,\"billType\":\"销售\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"organName\":\"TNB\",\"lastDebt\":80850.000000,\"otherMoney\":0.000000,\"createTime\":1785096000000,\"tenantId\":63,\"deposit\":0.000000,\"organId\":90,\"subType\":\"销售\",\"debt\":80850.000000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":80850.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"出库\",\"operTimeStr\":\"2026-07-27 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"XSCK-1PH-WS79-ADD1-58\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":80850.000000,\"id\":1653,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-07-27\",\"creator\":63,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-58\",\"linkNumber\":\"XSDD-42303461-1PH-WS79-ADD1\",\"backAmount\":0.000000,\"billType\":\"销售\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"organName\":\"TNB\",\"lastDebt\":80850.000000,\"otherMoney\":0.000000,\"createTime\":1785096000000,\"tenantId\":63,\"deposit\":0.000000,\"organId\":90,\"subType\":\"销售\",\"debt\":80850.000000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":77616.000000,\"discount\":100.000000,\"discountLastMoney\":77616.000000,\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"出库\",\"operTimeStr\":\"2026-07-27 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"XSCK-1PH-WS79-ADD1-56\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":77616.000000,\"id\":1651,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-07-27\",\"creator\":63,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-56\",\"linkNumber\":\"XSDD-42303461-1PH-WS79-ADD1\",\"backAmount\":0.000000,\"billType\":\"销售\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"organName\":\"TNB\",\"lastDebt\":77616.000000,\"otherMoney\":0.000000,\"createTime\":1785096000000,\"tenantId\":63,\"deposit\":0.000000,\"organId\":90,\"subType\":\"销售\",\"debt\":77616.000000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":3234.000000,\"discount\":100.000000,\"discountLastMoney\":3234.000000,\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:do_2145\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"出库\",\"operTimeStr\":\"2026-07-27 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"XSCK-do_2145-55\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":3234.000000,\"id\":1649,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-07-27\",\"creator\":63,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"defaultNumber\":\"XSCK-do_2145-55\",\"linkNumber\":\"XSDD-42303461-1PH-WS79-ADD1\",\"backAmount\":0.000000,\"billType\":\"销售\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"organName\":\"TNB\",\"lastDebt\":3234.000000,\"otherMoney\":0.000000,\"createTime\":1785096000000,\"tenantId\":63,\"deposit\":0.000000,\"organId\":90,\"subType\":\"销售\",\"debt\":3234.000000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":80850.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"出库\",\"operTimeStr\":\"2026-07-27 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"XSCK-1PH-WS79-ADD1-54\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":80850.000000,\"id\":1648,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-07-27\",\"creator\":63,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-54\",\"linkNumber\":\"XSDD-42303456-1PH-WS79-ADD1\",\"backAmount\":0.000000,\"billType\":\"销售\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"organName\":\"TNB\",\"lastDebt\":80850.000000,\"otherMoney\":0.000000,\"createTime\":1785096000000,\"tenantId\":63,\"deposit\":0.000000,\"organId\":90,\"subType\":\"销售\",\"debt\":80850.000000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":80850.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:do_2146\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"出库\",\"operTimeStr\":\"2026-07-27 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"XSCK-do_2146-57\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":80850.000000,\"id\":1652,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-07-27\",\"creator\":63,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"defaultNumber\":\"XSCK-do_2146-57\",\"linkNumber\":\"XSDD-42303461-1PH-WS79-ADD1\",\"backAmount\":0.000000,\"billType\":\"销售\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"organName\":\"TNB\",\"lastDebt\":80850.000000,\"otherMoney\":0.000000,\"createTime\":1785096000000,\"tenantId\":63,\"deposit\":0.000000,\"organId\":90,\"subType\":\"销售\",\"debt\":80850.000000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":80850.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:do_2144\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"出库\",\"operTimeStr\":\"2026-07-27 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"XSCK-do_2144-53\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":80850.000000,\"id\":1647,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-07-27\",\"creator\":63,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"defaultNumber\":\"XSCK-do_2144-53\",\"linkNumber\":\"XSDD-42303456-1PH-WS79-ADD1\",\"backAmount\":0.000000,\"billType\":\"销售\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"organName\":\"TNB\",\"lastDebt\":80850.000000,\"otherMoney\":0.000000,\"createTime\":1785096000000,\"tenantId\":63,\"deposit\":0.000000,\"organId\":90,\"subType\":\"销售\",\"debt\":80850.000000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":80850.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:do_2143\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"出库\",\"operTimeStr\":\"2026-07-27 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"XSCK-do_2143-52\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":80850.000000,\"id\":1646,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-07-27\",\"creator\":63,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"defaultNumber\":\"XSCK-do_2143-52\",\"linkNumber\":\"XSDD-42303456-1PH-WS79-ADD1\",\"backAmount\":0.000000,\"billType\":\"销售\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"organName\":\"TNB\",\"lastDebt\":80850.000000,\"otherMoney\":0.000000,\"createTime\":1785096000000,\"tenantId\":63,\"deposit\":0.000000,\"organId\":90,\"subType\":\"销售\",\"debt\":80850.000000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":80850.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2138\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"出库\",\"operTimeStr\":\"2026-07-23 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"XSCK-INV_2138-49\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":80850.000000,\"id\":1643,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-07-23\",\"creator\":63,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"defaultNumber\":\"XSCK-INV_2138-49\",\"linkNumber\":\"XSDD-42303452-1PH-WS79-ADD1\",\"backAmount\":0.000000,\"billType\":\"销售\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"organName\":\"TNB\",\"lastDebt\":80850.000000,\"otherMoney\":0.000000,\"createTime\":1784750400000,\"tenantId\":63,\"deposit\":0.000000,\"organId\":90,\"subType\":\"销售\",\"debt\":80850.000000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":80850.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2140\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"出库\",\"operTimeStr\":\"2026-07-23 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"XSCK-INV_2140-62\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":80850.000000,\"id\":1657,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-07-23\",\"creator\":63,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"defaultNumber\":\"XSCK-INV_2140-62\",\"linkNumber\":\"XSDD-42303470-1PH-WS79-ADD1\",\"backAmount\":0.000000,\"billType\":\"销售\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"organName\":\"TNB\",\"lastDebt\":80850.000000,\"otherMoney\":0.000000,\"createTime\":1784750400000,\"tenantId\":63,\"deposit\":0.000000,\"organId\":90,\"subType\":\"销售\",\"debt\":80850.000000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":80850.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2141\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"出库\",\"operTimeStr\":\"2026-07-23 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"XSCK-INV_2141-63\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":80850.000000,\"id\":1658,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-07-23\",\"creator\":63,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"defaultNumber\":\"XSCK-INV_2141-63\",\"linkNumber\":\"XSDD-42303470-1PH-WS79-ADD1\",\"backAmount\":0.000000,\"billType\":\"销售\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"organName\":\"TNB\",\"lastDebt\":80850.000000,\"otherMoney\":0.000000,\"createTime\":1784750400000,\"tenantId\":63,\"deposit\":0.000000,\"organId\":90,\"subType\":\"销售\",\"debt\":80850.000000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":80850.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"出库\",\"operTimeStr\":\"2026-07-23 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"XSCK-1PH-WS79-ADD1-64\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":80850.000000,\"id\":1659,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-07-23\",\"creator\":63,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-64\",\"linkNumber\":\"XSDD-42303470-1PH-WS79-ADD1\",\"backAmount\":0.000000,\"billType\":\"销售\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"organName\":\"TNB\",\"lastDebt\":80850.000000,\"otherMoney\":0.000000,\"createTime\":1784750400000,\"tenantId\":63,\"deposit\":0.000000,\"organId\":90,\"subType\":\"销售\",\"debt\":80850.000000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":80850.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2142\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"出库\",\"operTimeStr\":\"2026-07-23 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"XSCK-INV_2142-68\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":80850.000000,\"id\":1664,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-07-23\",\"creator\":63,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"defaultNumber\":\"XSCK-INV_2142-68\",\"linkNumber\":\"XSDD-42303480-1PH-WS79-ADD1\",\"backAmount\":0.000000,\"billType\":\"销售\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"organName\":\"TNB\",\"lastDebt\":80850.000000,\"otherMoney\":0.000000,\"createTime\":1784750400000,\"tenantId\":63,\"deposit\":0.000000,\"organId\":90,\"subType\":\"销售\",\"debt\":80850.000000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":80850.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2139\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"出库\",\"operTimeStr\":\"2026-07-22 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"XSCK-INV_2139-50\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":80850.000000,\"id\":1644,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-07-22\",\"creator\":63,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"defaultNumber\":\"XSCK-INV_2139-50\",\"linkNumber\":\"XSDD-42303452-1PH-WS79-ADD1\",\"backAmount\":0.000000,\"billType\":\"销售\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"or...[已截断]'); +INSERT INTO `tbl_log` VALUES (9864, 63, '接口日志', '43.152.142.41/1.9.116.218', '2026-10-06 07:16:28', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9865, 63, '接口日志', '43.174.32.33/1.9.116.218', '2026-10-06 07:16:28', 0, 'PersonController.getPersonByType(..)', NULL, 'GET /apis/person/getPersonByType', '{\"type\":\"财务员\"}', '{\"code\":200,\"data\":{\"personList\":[{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":43,\"name\":\"Juwairiah\",\"type\":\"财务员\"}]}}'); +INSERT INTO `tbl_log` VALUES (9866, 63, '接口日志', '43.174.54.27/1.9.116.218', '2026-10-06 07:16:28', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (9867, 63, '接口日志', '43.152.142.133/1.9.116.218', '2026-10-06 07:16:28', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (9868, 63, '接口日志', '43.152.142.142/1.9.116.218', '2026-10-06 07:16:32', 0, 'DepotHeadController.getDetailByNumber(..)', NULL, 'GET /apis/depotHead/getDetailByNumber', '{\"number\":\"XSCK-1PH-WS79-ADD1-87\"}', '{\"code\":200,\"data\":{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountNumber\":\"\",\"address\":\"\",\"backAmount\":0.000000,\"bankName\":\"\",\"billType\":\"销售\",\"changeAmount\":0.000000,\"contacts\":\"\",\"createTime\":1786305600000,\"creator\":63,\"creatorName\":\"admin\",\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-87\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"depotHeadType\":\"销售出库\",\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"hasBackFlag\":false,\"id\":1671,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303506-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-87\",\"operTime\":1786305600000,\"operTimeStr\":\"2026-08-10 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"phoneNum\":\"\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"taxNum\":\"\",\"telephone\":\"\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\"}}'); +INSERT INTO `tbl_log` VALUES (9869, 63, '接口日志', '43.152.142.110/1.9.116.218', '2026-10-06 07:16:32', 0, 'DepotHeadController.getDetailByNumber(..)', NULL, 'GET /apis/depotHead/getDetailByNumber', '{\"number\":\"XSCK-1PH-WS79-ADD1-87\"}', '{\"code\":200,\"data\":{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountNumber\":\"\",\"address\":\"\",\"backAmount\":0.000000,\"bankName\":\"\",\"billType\":\"销售\",\"changeAmount\":0.000000,\"contacts\":\"\",\"createTime\":1786305600000,\"creator\":63,\"creatorName\":\"admin\",\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-87\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"depotHeadType\":\"销售出库\",\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"hasBackFlag\":false,\"id\":1671,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303506-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-87\",\"operTime\":1786305600000,\"operTimeStr\":\"2026-08-10 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"phoneNum\":\"\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"taxNum\":\"\",\"telephone\":\"\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\"}}'); +INSERT INTO `tbl_log` VALUES (9870, 63, '接口日志', '43.174.53.19/1.9.116.218', '2026-10-06 07:16:32', 0, 'AccountHeadController.getFinancialBillNoByBillId(..)', NULL, 'GET /apis/accountHead/getFinancialBillNoByBillId', '{\"billId\":1671}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (9871, 63, '接口日志', '43.152.142.83/1.9.116.218', '2026-10-06 07:16:32', 0, 'DepotItemController.getDetailList(..)', NULL, 'GET /apis/depotItem/getDetailList', '{\"headerId\":1671,\"mpList\":\"扩展1,扩展2,扩展3\",\"linkType\":\"basic\",\"isReadOnly\":\"1\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"standard\":\"1PH WS79\",\"materialExtendId\":123,\"finishPurchaseNumber\":0,\"anotherDepotName\":\"\",\"color\":\"\",\"preNumber\":1000.000000,\"depotId\":26,\"remark\":\"\",\"purchaseDecimal\":59.500000,\"imgName\":\"\",\"operNumber\":1000.000000,\"anotherDepotId\":\"\",\"basicNumber\":1000.000000,\"taxLastMoney\":80850.000000,\"model\":\"1PH WS79\",\"id\":1476,\"enableSerialNumber\":\"0\",\"stock\":52400.000000,\"brand\":\"\",\"finishNumber\":0,\"expirationDate\":\"\",\"enableBatchNumber\":\"0\",\"unitPrice\":73.500000,\"op\":1,\"otherField1\":\"\",\"depotName\":\"成品仓库\",\"mfrs\":\"浙江瑞银电子有限公司\",\"weight\":0,\"otherField3\":\"\",\"otherField2\":\"\",\"taxMoney\":7350.000000,\"imgSmall\":\"\",\"barCode\":\"1PH-WS79\",\"taxUnitPrice\":80.850000,\"taxRate\":10.000000,\"unit\":\"件\",\"allPrice\":73500.000000,\"name\":\"1PH WS79\",\"imgLarge\":\"\",\"position\":\"\"},{\"allPrice\":73500.000000,\"finishPurchaseNumber\":0,\"operNumber\":1000.000000,\"taxLastMoney\":80850.000000,\"weight\":0,\"taxMoney\":7350.000000,\"finishNumber\":0}]}}'); +INSERT INTO `tbl_log` VALUES (9872, 63, '接口日志', '43.174.32.19/1.9.116.218', '2026-10-06 07:16:32', 0, 'DepotHeadController.getBillListByLinkNumber(..)', NULL, 'GET /apis/depotHead/getBillListByLinkNumber', '{\"number\":\"XSCK-1PH-WS79-ADD1-87\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (9873, 63, '接口日志', '43.174.53.48/1.9.116.218', '2026-10-06 07:16:32', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_print_flag\"}', '{\"code\":200,\"data\":{\"id\":4,\"platformKey\":\"bill_print_flag\",\"platformKeyInfo\":\"三联打印启用标记\",\"platformValue\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9874, 63, '接口日志', '43.152.142.108/1.9.116.218', '2026-10-06 07:16:32', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9875, 63, '接口日志', '43.152.142.68/1.9.116.218', '2026-10-06 07:16:37', 0, 'DepotHeadController.getDetailByNumber(..)', NULL, 'GET /apis/depotHead/getDetailByNumber', '{\"number\":\"XSDD-42303506-1PH-WS79-ADD1\"}', '{\"code\":200,\"data\":{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountNumber\":\"\",\"address\":\"\",\"backAmount\":0.000000,\"bankName\":\"\",\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"contacts\":\"\",\"createTime\":1767211200000,\"creator\":63,\"creatorName\":\"admin\",\"debt\":161700.000000,\"defaultNumber\":\"XSDD-42303506-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"depotHeadType\":\"销售订单其它\",\"discount\":100.000000,\"discountLastMoney\":161700.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"hasBackFlag\":false,\"id\":1583,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":2000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303506-1PH-WS79-ADD1\",\"operTime\":1767211200000,\"operTimeStr\":\"2026-01-01 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"phoneNum\":\"\",\"remark\":\"Stock Status客户PO:42303506\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"taxNum\":\"\",\"telephone\":\"\",\"tenantId\":63,\"totalPrice\":161700.000000,\"type\":\"其它\"}}'); +INSERT INTO `tbl_log` VALUES (9876, 63, '接口日志', '43.174.53.11/1.9.116.218', '2026-10-06 07:16:37', 0, 'DepotHeadController.getDetailByNumber(..)', NULL, 'GET /apis/depotHead/getDetailByNumber', '{\"number\":\"XSDD-42303506-1PH-WS79-ADD1\"}', '{\"code\":200,\"data\":{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountNumber\":\"\",\"address\":\"\",\"backAmount\":0.000000,\"bankName\":\"\",\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"contacts\":\"\",\"createTime\":1767211200000,\"creator\":63,\"creatorName\":\"admin\",\"debt\":161700.000000,\"defaultNumber\":\"XSDD-42303506-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"depotHeadType\":\"销售订单其它\",\"discount\":100.000000,\"discountLastMoney\":161700.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"hasBackFlag\":false,\"id\":1583,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":2000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303506-1PH-WS79-ADD1\",\"operTime\":1767211200000,\"operTimeStr\":\"2026-01-01 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"phoneNum\":\"\",\"remark\":\"Stock Status客户PO:42303506\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"taxNum\":\"\",\"telephone\":\"\",\"tenantId\":63,\"totalPrice\":161700.000000,\"type\":\"其它\"}}'); +INSERT INTO `tbl_log` VALUES (9877, 63, '接口日志', '43.152.142.33/1.9.116.218', '2026-10-06 07:16:37', 0, 'AccountHeadController.getFinancialBillNoByBillId(..)', NULL, 'GET /apis/accountHead/getFinancialBillNoByBillId', '{\"billId\":1583}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (9878, 63, '接口日志', '43.152.142.31/1.9.116.218', '2026-10-06 07:16:37', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9879, 63, '接口日志', '43.174.51.49/1.9.116.218', '2026-10-06 07:16:37', 0, 'DepotHeadController.getBillListByLinkNumber(..)', NULL, 'GET /apis/depotHead/getBillListByLinkNumber', '{\"number\":\"XSDD-42303506-1PH-WS79-ADD1\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (9880, 63, '接口日志', '43.174.32.14/1.9.116.218', '2026-10-06 07:16:37', 0, 'DepotItemController.getDetailList(..)', NULL, 'GET /apis/depotItem/getDetailList', '{\"headerId\":1583,\"mpList\":\"扩展1,扩展2,扩展3\",\"linkType\":\"basic\",\"isReadOnly\":\"1\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"standard\":\"1PH WS79\",\"materialExtendId\":123,\"finishPurchaseNumber\":0,\"anotherDepotName\":\"\",\"color\":\"\",\"preNumber\":2000.000000,\"depotId\":26,\"remark\":\"\",\"purchaseDecimal\":59.500000,\"imgName\":\"\",\"operNumber\":2000.000000,\"anotherDepotId\":\"\",\"basicNumber\":2000.000000,\"taxLastMoney\":161700.000000,\"model\":\"1PH WS79\",\"id\":1388,\"enableSerialNumber\":\"0\",\"stock\":52400.000000,\"brand\":\"\",\"finishNumber\":0,\"expirationDate\":\"\",\"enableBatchNumber\":\"0\",\"unitPrice\":73.500000,\"op\":1,\"otherField1\":\"\",\"depotName\":\"成品仓库\",\"mfrs\":\"浙江瑞银电子有限公司\",\"weight\":0,\"otherField3\":\"\",\"otherField2\":\"\",\"taxMoney\":14700.000000,\"imgSmall\":\"\",\"barCode\":\"1PH-WS79\",\"taxUnitPrice\":80.850000,\"taxRate\":10.000000,\"unit\":\"件\",\"allPrice\":147000.000000,\"name\":\"1PH WS79\",\"imgLarge\":\"\",\"position\":\"\"},{\"allPrice\":147000.000000,\"finishPurchaseNumber\":0,\"operNumber\":2000.000000,\"taxLastMoney\":161700.000000,\"weight\":0,\"taxMoney\":14700.000000,\"finishNumber\":0}]}}'); +INSERT INTO `tbl_log` VALUES (9881, 63, '接口日志', '43.174.53.16/1.9.116.218', '2026-10-06 07:16:37', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_print_flag\"}', '{\"code\":200,\"data\":{\"id\":4,\"platformKey\":\"bill_print_flag\",\"platformKeyInfo\":\"三联打印启用标记\",\"platformValue\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9882, 63, '接口日志', '43.174.32.12/1.9.116.218', '2026-10-06 07:16:54', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (9883, 63, '接口日志', '43.152.142.118/1.9.116.218', '2026-10-06 07:16:54', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9884, 63, '接口日志', '43.174.55.40/1.9.116.218', '2026-10-06 07:16:54', 0, 'DepotItemController.getInOutStockCountMoney(..)', NULL, 'GET /apis/depotItem/getInOutStockCountMoney', '{\"endTime\":\"2026-10-06\",\"materialParam\":\"\"}', '{\"code\":200,\"data\":{\"showStockPrice\":true,\"totalStock\":519352.000000,\"totalCount\":107419830.670000000000}}'); +INSERT INTO `tbl_log` VALUES (9885, 63, '接口日志', '43.152.142.45/1.9.116.218', '2026-10-06 07:16:54', 0, 'DepotItemController.getInOutStock(..)', NULL, 'GET /apis/depotItem/getInOutStock', '{\"currentPage\":1,\"pageSize\":10,\"beginTime\":\"2026-09-06\",\"endTime\":\"2026-10-06\",\"materialParam\":\"\",\"mpList\":\"扩展1,扩展2,扩展3\"}', '{\"code\":200,\"data\":{\"total\":23,\"rows\":[{\"unitPrice\":10.000000,\"materialModel\":\"MD-4G111(VF)\",\"unitName\":\"件\",\"thisSum\":0.000000,\"materialStandard\":\"MD-4G111(VF) packing\",\"outSum\":10000.000000,\"barCode\":\"1001\",\"bigUnitStock\":\"\",\"prevSum\":0.000000,\"imgName\":\"\",\"materialName\":\"MD-4G111(VF) 包装\",\"id\":705,\"inSum\":10000.000000,\"thisAllPrice\":0E-12},{\"unitPrice\":317.500000,\"materialMfrs\":\"浙江瑞银电子有限公司\",\"otherField1\":\"\",\"materialModel\":\"3PH APEC3-WC\",\"unitName\":\"件\",\"thisSum\":7372.000000,\"materialStandard\":\"3PH APEC3-WC\",\"materialColor\":\"\",\"materialBrand\":\"\",\"otherField3\":\"\",\"otherField2\":\"\",\"outSum\":0.000000,\"barCode\":\"3PH-APEC3-WC\",\"bigUnitStock\":\"\",\"prevSum\":7372.000000,\"imgName\":\"\",\"materialName\":\"3PH APEC3-WC\",\"id\":704,\"inSum\":0,\"thisAllPrice\":2340610.000000000000},{\"unitPrice\":59.500000,\"materialMfrs\":\"浙江瑞银电子有限公司\",\"otherField1\":\"\",\"materialModel\":\"1PH WS79\",\"unitName\":\"件\",\"thisSum\":52400.000000,\"materialStandard\":\"1PH WS79\",\"materialColor\":\"\",\"materialBrand\":\"\",\"otherField3\":\"\",\"otherField2\":\"\",\"outSum\":10000.000000,\"barCode\":\"1PH-WS79\",\"bigUnitStock\":\"\",\"prevSum\":52400.000000,\"imgName\":\"\",\"materialName\":\"1PH WS79\",\"id\":703,\"inSum\":10000.000000,\"thisAllPrice\":3117800.000000000000},{\"unitPrice\":24.300000,\"materialMfrs\":\"浙江瑞银电子有限公司\",\"otherField1\":\"\",\"materialModel\":\"MD-RS178(VA)\",\"unitName\":\"件\",\"thisSum\":1000.000000,\"materialStandard\":\"MD-RS178(VA)\",\"materialColor\":\"\",\"materialBrand\":\"\",\"otherField3\":\"\",\"otherField2\":\"\",\"outSum\":0.000000,\"barCode\":\"C.4.T.0.00722\",\"bigUnitStock\":\"\",\"prevSum\":1000.000000,\"imgName\":\"\",\"materialName\":\"MD-RS178(VA) RS485分线器\",\"id\":702,\"inSum\":0,\"thisAllPrice\":24300.000000000000},{\"unitPrice\":142.560000,\"materialMfrs\":\"浙江瑞银电子有限公司\",\"otherField1\":\"\",\"materialModel\":\"MD-RS114(VB)\",\"unitName\":\"件\",\"thisSum\":100.000000,\"materialStandard\":\"MD-RS114(VB)\",\"materialColor\":\"\",\"materialBrand\":\"\",\"otherField3\":\"\",\"otherField2\":\"\",\"outSum\":0.000000,\"barCode\":\"C.4.T.0.0068900002\",\"bigUnitStock\":\"\",\"prevSum\":100.000000,\"imgName\":\"\",\"materialName\":\"MD-RS114(VB) 基于RS485的MODBS TCPMODBS RTUASVII转换模块_(DZG)\",\"id\":701,\"inSum\":0,\"thisAllPrice\":14256.000000000000},{\"unitPrice\":132.840000,\"materialMfrs\":\"浙江瑞银电子有限公司\",\"otherField1\":\"\",\"materialModel\":\"TC160(VA)\",\"unitName\":\"件\",\"thisSum\":50.000000,\"materialStandard\":\"TC160(VA)\",\"materialColor\":\"\",\"materialBrand\":\"\",\"otherField3\":\"\",\"otherField2\":\"\",\"outSum\":0.000000,\"barCode\":\"C.4.T.0.00686\",\"bigUnitStock\":\"\",\"prevSum\":50.000000,\"imgName\":\"\",\"materialName\":\"TC160(VA) 通讯模块供电盒\",\"id\":700,\"inSum\":0,\"thisAllPrice\":6642.000000000000},{\"unitPrice\":0.100000,\"materialMfrs\":\"浙江瑞银电子有限公司\",\"otherField1\":\"\",\"materialModel\":\"MD-4G111(VF)\",\"unitName\":\"件\",\"thisSum\":76970.000000,\"materialStandard\":\"MD-4G111(VF)\",\"materialColor\":\"\",\"materialBrand\":\"\",\"otherField3\":\"\",\"otherField2\":\"\",\"outSum\":0.000000,\"barCode\":\"C.4.T.0.00654\",\"bigUnitStock\":\"\",\"prevSum\":76963.000000,\"imgName\":\"\",\"materialName\":\"MD-4G111(VF) 4G模块\",\"id\":699,\"inSum\":7.000000,\"thisAllPrice\":7697.000000000000},{\"unitPrice\":324.000000,\"materialMfrs\":\"浙江瑞银电子有限公司\",\"otherField1\":\"\",\"materialModel\":\"MD-4GVIII(VB)\",\"unitName\":\"件\",\"thisSum\":50.000000,\"materialStandard\":\"MD-4GVIII(VB)\",\"materialColor\":\"\",\"materialBrand\":\"\",\"otherField3\":\"\",\"otherField2\":\"\",\"outSum\":0.000000,\"barCode\":\"C.4.T.0.00562\",\"bigUnitStock\":\"\",\"prevSum\":50.000000,\"imgName\":\"\",\"materialName\":\"MD-4GVIII(VB)\",\"id\":698,\"inSum\":0,\"thisAllPrice\":16200.000000000000},{\"unitPrice\":129.600000,\"materialMfrs\":\"浙江瑞银电子有限公司\",\"otherField1\":\"\",\"materialModel\":\"MT-P109(VA)\",\"unitName\":\"件\",\"thisSum\":500.000000,\"materialStandard\":\"MT-P109(VA)\",\"materialColor\":\"\",\"materialBrand\":\"\",\"otherField3\":\"\",\"otherField2\":\"\",\"outSum\":0.000000,\"barCode\":\"C.4.T.0.00553\",\"bigUnitStock\":\"\",\"prevSum\":500.000000,\"imgName\":\"\",\"materialName\":\"MT-P109(VA)\",\"id\":697,\"inSum\":0,\"thisAllPrice\":64800.000000000000},{\"unitPrice\":0.100000,\"materialMfrs\":\"浙江瑞银电子有限公司\",\"otherField1\":\"\",\"materialModel\":\"MT-3NSXL(VC)\",\"unitName\":\"件\",\"thisSum\":54656.000000,\"materialStandard\":\"MT-3NSXL(VC)\",\"materialColor\":\"\",\"materialBrand\":\"\",\"otherField3\":\"\",\"otherField2\":\"\",\"outSum\":0.000000,\"barCode\":\"C.4.T.0.00547\",\"bigUnitStock\":\"\",\"prevSum\":54656.000000,\"imgName\":\"\",\"materialName\":\"MT-3NSXL(VC)RF通讯模块\",\"id\":696,\"inSum\":0,\"thisAllPrice\":5465.600000000000}]}}'); +INSERT INTO `tbl_log` VALUES (9886, 63, '接口日志', '43.152.142.41/1.9.116.218', '2026-10-06 07:16:56', 0, 'DepotItemController.getMaterialDepotStockByParam(..)', NULL, 'GET /apis/depotItem/getMaterialDepotStockByParam', '{\"depotIds\":\"\",\"mId\":698,\"unitPrice\":324,\"beginTime\":\"2026-09-06\",\"endTime\":\"2026-10-06\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"unitPrice\":324,\"depotName\":\"半成品仓库\",\"allPrice\":16200.000000,\"depotId\":25,\"currentNumber\":50.000000}],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9887, 63, '接口日志', '43.152.142.62/1.9.116.218', '2026-10-06 07:17:02', 0, 'DepotItemController.getMaterialDepotStockByParam(..)', NULL, 'GET /apis/depotItem/getMaterialDepotStockByParam', '{\"depotIds\":\"\",\"mId\":696,\"unitPrice\":0.1,\"beginTime\":\"2026-09-06\",\"endTime\":\"2026-10-06\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"unitPrice\":0.1,\"depotName\":\"半成品仓库\",\"allPrice\":5465.6000000,\"depotId\":25,\"currentNumber\":54656.000000}],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9888, 63, '接口日志', '43.168.32.214/1.9.116.218', '2026-10-06 07:17:06', 0, 'SupplierController.findBySelectOrgan(..)', NULL, 'POST /apis/supplier/findBySelect_organ', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司[供应商]\",\"id\":89},{\"supplier\":\"TNB[客户]\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (9889, 63, '接口日志', '43.174.32.33/1.9.116.218', '2026-10-06 07:17:06', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9890, 63, '接口日志', '43.174.54.27/1.9.116.218', '2026-10-06 07:17:06', 0, 'DepotHeadController.findInOutMaterialCount(..)', NULL, 'GET /apis/depotHead/findInOutMaterialCount', '{\"currentPage\":1,\"pageSize\":10,\"materialParam\":\"\",\"beginTime\":\"2026-07-06\",\"endTime\":\"2026-10-06\",\"type\":\"出库\",\"column\":\"createTime\",\"order\":\"desc\"}', '{\"code\":200,\"data\":{\"total\":2,\"priceSumTotal\":2940000.000000,\"numSumTotal\":50000.000000,\"rows\":[{\"barCode\":\"1001\",\"categoryName\":\"包装\",\"mName\":\"MD-4G111(VF) 包装\",\"materialId\":705,\"materialUnit\":\"件\",\"model\":\"MD-4G111(VF)\",\"numSum\":10000.000000,\"priceSum\":0.000000,\"standard\":\"MD-4G111(VF) packing\"},{\"barCode\":\"1PH-WS79\",\"brand\":\"\",\"categoryName\":\"成品\",\"color\":\"\",\"mName\":\"1PH WS79\",\"materialId\":703,\"materialUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"1PH WS79\",\"numSum\":40000.000000,\"priceSum\":2940000.000000,\"standard\":\"1PH WS79\"}]}}'); +INSERT INTO `tbl_log` VALUES (9891, 63, '接口日志', '43.152.142.140/1.9.116.218', '2026-10-06 07:17:06', 0, 'OrganizationController.getAllOrganizationTreeByUser(..)', NULL, 'GET /apis/organization/getAllOrganizationTreeByUser', '{}', '[{\"children\":[{\"children\":[{\"children\":[],\"checked\":false,\"attributes\":\"12\",\"id\":14,\"state\":\"open\",\"title\":\"部门2\",\"value\":14,\"key\":14}],\"checked\":false,\"attributes\":\"jg1\",\"id\":13,\"state\":\"open\",\"title\":\"部门1\",\"value\":13,\"key\":13}],\"checked\":false,\"attributes\":\"001\",\"id\":12,\"state\":\"open\",\"title\":\"测试部门\",\"value\":12,\"key\":12}]'); +INSERT INTO `tbl_log` VALUES (9892, 63, '接口日志', '43.152.142.133/1.9.116.218', '2026-10-06 07:17:06', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (9893, 63, '接口日志', '43.168.32.214/1.9.116.218', '2026-10-06 07:17:11', 0, 'SupplierController.findBySelectOrgan(..)', NULL, 'POST /apis/supplier/findBySelect_organ', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司[供应商]\",\"id\":89},{\"supplier\":\"TNB[客户]\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (9894, 63, '接口日志', '43.152.142.108/1.9.116.218', '2026-10-06 07:17:11', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (9895, 63, '接口日志', '43.152.142.142/1.9.116.218', '2026-10-06 07:17:11', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9896, 63, '接口日志', '43.152.142.110/1.9.116.218', '2026-10-06 07:17:11', 0, 'OrganizationController.getAllOrganizationTreeByUser(..)', NULL, 'GET /apis/organization/getAllOrganizationTreeByUser', '{}', '[{\"children\":[{\"children\":[{\"children\":[],\"checked\":false,\"attributes\":\"12\",\"id\":14,\"state\":\"open\",\"title\":\"部门2\",\"value\":14,\"key\":14}],\"checked\":false,\"attributes\":\"jg1\",\"id\":13,\"state\":\"open\",\"title\":\"部门1\",\"value\":13,\"key\":13}],\"checked\":false,\"attributes\":\"001\",\"id\":12,\"state\":\"open\",\"title\":\"测试部门\",\"value\":12,\"key\":12}]'); +INSERT INTO `tbl_log` VALUES (9897, 63, '接口日志', '43.174.32.19/1.9.116.218', '2026-10-06 07:17:11', 0, 'DepotHeadController.findInOutMaterialCount(..)', NULL, 'GET /apis/depotHead/findInOutMaterialCount', '{\"currentPage\":1,\"pageSize\":10,\"materialParam\":\"\",\"beginTime\":\"2026-07-06\",\"endTime\":\"2026-10-06\",\"type\":\"入库\",\"column\":\"createTime\",\"order\":\"desc\"}', '{\"code\":200,\"data\":{\"total\":7,\"priceSumTotal\":15130522.700000,\"numSumTotal\":102117.000000,\"rows\":[{\"barCode\":\"1001\",\"categoryName\":\"包装\",\"mName\":\"MD-4G111(VF) 包装\",\"materialId\":705,\"materialUnit\":\"件\",\"model\":\"MD-4G111(VF)\",\"numSum\":10000.000000,\"priceSum\":100000.000000,\"standard\":\"MD-4G111(VF) packing\"},{\"barCode\":\"1PH-WS79\",\"brand\":\"\",\"categoryName\":\"成品\",\"color\":\"\",\"mName\":\"1PH WS79\",\"materialId\":703,\"materialUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"1PH WS79\",\"numSum\":10000.000000,\"priceSum\":595000.000000,\"standard\":\"1PH WS79\"},{\"barCode\":\"C.4.T.0.00654\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"mName\":\"MD-4G111(VF) 4G模块\",\"materialId\":699,\"materialUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-4G111(VF)\",\"numSum\":7.000000,\"priceSum\":0.700000,\"standard\":\"MD-4G111(VF)\"},{\"barCode\":\"C.4.T.0.00547\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"mName\":\"MT-3NSXL(VC)RF通讯模块\",\"materialId\":696,\"materialUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MT-3NSXL(VC)\",\"numSum\":37520.000000,\"priceSum\":3752.000000,\"standard\":\"MT-3NSXL(VC)\"},{\"barCode\":\"C.3.T.0.00030\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"mName\":\"三相四线多功能电能表T46(VC)\",\"materialId\":691,\"materialUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DTSD1226-T46(VC)\",\"numSum\":10890.000000,\"priceSum\":5292540.000000,\"standard\":\"DTSD1226-T46(VC)\"},{\"barCode\":\"C.3.C.2.00025\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"mName\":\"三相四线多功能电能表CXVI(VA)-新\",\"materialId\":687,\"materialUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DTSD1226-CXVI(VA)\",\"numSum\":6720.000000,\"priceSum\":3238704.000000,\"standard\":\"DTSD1226-CXVI(VA)\"},{\"barCode\":\"C.1.T.0.00032\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"mName\":\"单相多功能电能表T49(VB)\",\"materialId\":685,\"materialUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"DDSD1226-T49(VB)\",\"numSum\":26980.000000,\"priceSum\":5900526.000000,\"standard\":\"DDSD1226-T49(VB)\"}]}}'); +INSERT INTO `tbl_log` VALUES (9898, 63, '接口日志', '43.174.32.33/1.9.116.218', '2026-10-06 07:17:14', 0, 'AccountController.getStatistics(..)', NULL, 'GET /apis/account/getStatistics', '{\"name\":\"\",\"serialNo\":\"\"}', '{\"code\":200,\"data\":{\"allCurrentAmount\":\"4375818.53\",\"allMonthAmount\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9899, 63, '接口日志', '43.152.142.68/1.9.116.218', '2026-10-06 07:17:14', 0, 'AccountController.listWithBalance(..)', NULL, 'GET /apis/account/listWithBalance', '{\"name\":\"\",\"serialNo\":\"\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63,\"thisMonthAmount\":\"0\"},{\"currentAmount\":4375618.532800,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63,\"thisMonthAmount\":\"0\"}]}}'); +INSERT INTO `tbl_log` VALUES (9900, NULL, '接口日志', '43.152.142.31/1.9.116.218', '2026-10-06 07:17:58', 0, 'UserController.logout(..)', NULL, 'GET /apis/user/logout', '{}', '{\"code\":400}'); +INSERT INTO `tbl_log` VALUES (9901, NULL, '接口日志', '43.174.54.27/1.9.116.218', '2026-10-06 07:17:58', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (9902, NULL, '接口日志', '43.152.142.118/1.9.116.218', '2026-10-06 07:17:58', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (9903, NULL, '接口日志', '43.152.142.108/1.9.116.218', '2026-10-06 07:17:59', 0, 'PlatformConfigController.getPlatformCheckcodeFlag(..)', NULL, 'GET /apis/platformConfig/getPlatform/checkcodeFlag', '{}', '\"1\"'); +INSERT INTO `tbl_log` VALUES (9904, NULL, '接口日志', '43.152.142.41/1.9.116.218', '2026-10-06 07:17:59', 0, 'UserController.randomImage(..)', NULL, 'GET /apis/user/randomImage', '{}', '{\"code\":200,\"data\":{\"base64\":\"data:image/jpg;base64,/9j/4AAQSkZJRgABAgAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAAjAGkDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3tbiBp2gWaMzKMtGGG4D3HXuKit4QDMVe4DmQlvMYnvnCg5AXBxx29xxIYk+1rNsYuEKht3AGQcYz1Prjt9K+Y/8AhcSn4wjxH9r1v/hGwCBp/mcgGDZ/q9+z/WAN19+tAH02yvMUeK4KxlD9wA7s4wQTnpz9arStJBbb726Cb3UMUQhVBUArkcgZyQ2RgkemDmeHfFuna74Usddt4riGxuFYKZIgChRymCqlsAlTjkjHfNdA0YZ0clsrnGGIHPqOh/GgCNhsCmSR1WEb2kZgA3BB3fz6AdKZdtMltJLHGWeI70RHILgDkHg9eRjB7dD084vvjp4QtNR1bS7yHUI5rHzoyJrcbLiRCV8tcEkFjnG4KPXFdP4K8aWXjzRJdX0q3uIFjuBbSJd4HKhWbG1iOj8HjJHIoA6CKEBzPb3DMkxVjvcyKRyfl54zntxwOKhllkuboQQieGSBw7McBSCHAyP4lOBwMdRyCDi7Hv2DzNu/vt6H3/8Arfzrxi1/Z8tdRga78U+JdUv9ZmAMk8Ug2ghQApMgZnwQRuyuRjgYoA9kkSZ2KrJsQr95cblOfcEEEfljvniJWJu5oUdjkbnfeCYiQAAF7cAnnj65rw/4KajqmnfEDxB4LudQkvbDTVm8ppCwKtFKsXyjcQFKn7pzjAxjnPonxE8QN4e8A6pq0ObueND9lkCgpG0jeUD0KnaHzhhhun0AOvmUyxIxlktzkHIK5yeMHOQev502FIpbRBDLL5YYEMXYtw2SCW56jBB9xXz34F+D1j498Fr4h1fV9VGp3vmeVNuRkXaTGu4NlnwUyeV4IA6ZrtPgr4zvvGnha607VpHub3S5Yla4fIMsTZKEsDkyAo2TgZAXJJJNAHqiS5uJYmK7l2sAAchTwM++Q36VLTDJiZY9jHcpbcBwMY4J9ef0NPoAq4uxIpQgp5p3ibAO3tsK+noRk+orwK+v7PTP2sZLy/u4LS1jxvmnkEaLmxAGWPAySB+NfQjuybdsbPlgDtx8o9Tkjj6c1zPij4f+GvF2o2l3rWki8liQw7xO8RVOWGdpBbB4A7bjQBo2epwSxG8tdRjvdNlDyx3MQE0YAPzKHRucYYDjjpk4xVy5Ty4ESEStOm54c7m+YA8Mx4AOSOT34qnpOg6P4c0200jS7f7JbRM7QIGZsMcljuYnJ+ZuCTx7DjTQsghieZGl25Y4wXwMEgZ45I/OgLHzv8O9MsNS/aK8TtfWqXBtLm9ubfeCRHKLkAPjpkBjjPQ4I5Ar6D+xpbiV7KKGGWWXzpdqBRM2ACXIGckADd14HUDBwdI8GaFpeu6nrmnaebLWL4SebM0zOSJGDlipdl5dc8AdMVvDzp4bi3cvHIFKCdV2qSR1UbieMj8aBBDJ9okEkM8pj+VyrRYUqVOApIHqCeTjGOK+fviN8XrmfWH8P+Cr+OKAzFJdR3qoZ2BVhHI5wi5YkyAr2KkAFn+gYRBp8KwvNGn3iu4hSVH89q4GfauBi+CXw/jupEk0bzBJl4kN1OCgGARkScjJGO/PegCh8LvDnhbwnpMy6Xr2kap4glgMl9dW10kphjGMiNRk7FO3qBuOCcfKo77xMulXOg6nba3bxT6Wlm814soJUIoJz8oLZ+UkFeQVBHOKy9B8AeFfB+pG80HTo7O+nj8kl7mV98e5WYAMx5+UHp29K6IxR3y3cNx5VxayKYXt5IsjGCGDA/eDA9CMYx1zkgz51uvCPhvw3puoG3+LzHQCxeXStOuFea5RvlMe1JdrOV2ruK47kBRW9+z9pF1p3hjVNdxP/wATGcW0MZXYpEasRIGbIbLsUHGAQeucDtoPg34AttTikTw8h8sCRVkluHUsD33OUYf7JBz34rsJNllHDaWqvb20aiJI7e0JEYC8YwMBQMAADr6gEUAWYmSdUKzMxgcq2GX5iARhscd8447dOlWKiiMqbIpA0jCMbpsAKzdDxnIPfpj3qWgAooooAjlginAEi5x0IJBH4j8D9QD2pYo0hiSKMYRFCqM9AOlFFAD6aqKpYqoBY5YgdTjGT+AH5UUUAOpFVURURQqqMAAYAFFFAC0x40k27hkqwZTnBB/z+hIoooAfRRRQAUUUUAf/2Q==\",\"uuid\":\"7b7a0bcb4a3b47ac8abc4e7ad12a8dc2\"}}'); +INSERT INTO `tbl_log` VALUES (9905, NULL, '接口日志', '43.168.32.214/1.9.116.218', '2026-10-06 07:19:33', 0, 'UserController.login(..)', NULL, 'POST /apis/user/login', '{\"userParam\":{\"code\":\"tr29\",\"loginName\":\"aaaaaaa\",\"password\":\"******\",\"uuid\":\"7b7a0bcb4a3b47ac8abc4e7ad12a8dc2\"}}', '{\"code\":200,\"data\":{\"msgTip\":\"user is not exist\"}}'); +INSERT INTO `tbl_log` VALUES (9906, NULL, '接口日志', '43.174.32.12/1.9.116.218', '2026-10-06 07:19:33', 0, 'UserController.randomImage(..)', NULL, 'GET /apis/user/randomImage', '{}', '{\"code\":200,\"data\":{\"base64\":\"data:image/jpg;base64,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\",\"uuid\":\"32220f98a22d4febae2cee8d9a1d7034\"}}'); +INSERT INTO `tbl_log` VALUES (9907, NULL, '接口日志', '43.174.52.68/1.9.116.218', '2026-10-07 13:04:22', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (9908, NULL, '接口日志', '43.152.142.68/1.9.116.218', '2026-10-07 13:04:22', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (9909, NULL, '接口日志', '43.152.142.132/1.9.116.218', '2026-10-07 13:04:24', 0, 'UserController.randomImage(..)', NULL, 'GET /apis/user/randomImage', '{}', '{\"code\":200,\"data\":{\"base64\":\"data:image/jpg;base64,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\",\"uuid\":\"75f7daef7f8444cfbdd1420d494cf42d\"}}'); +INSERT INTO `tbl_log` VALUES (9910, NULL, '接口日志', '43.152.142.142/1.9.116.218', '2026-10-07 13:04:24', 0, 'PlatformConfigController.getPlatformCheckcodeFlag(..)', NULL, 'GET /apis/platformConfig/getPlatform/checkcodeFlag', '{}', '\"1\"'); +INSERT INTO `tbl_log` VALUES (9911, 63, '用户', '43.152.142.105/1.9.116.218', '2026-10-07 13:04:42', 0, '登录admin', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (9912, NULL, '接口日志', '43.152.142.105/1.9.116.218', '2026-10-07 13:04:42', 0, 'UserController.login(..)', NULL, 'POST /apis/user/login', '{\"userParam\":{\"code\":\"mnfu\",\"loginName\":\"admin\",\"password\":\"******\",\"uuid\":\"75f7daef7f8444cfbdd1420d494cf42d\"}}', '{\"code\":200,\"data\":{\"pwdSimple\":\"******\",\"user\":{\"deleteFlag\":\"0\",\"description\":\"\",\"email\":\"666666@qq.com\",\"id\":63,\"ismanager\":1,\"isystem\":1,\"leaderFlag\":\"0\",\"loginName\":\"admin\",\"password\":\"******\",\"phonenum\":\"1123123123132\",\"position\":\"主管\",\"status\":0,\"tenantId\":63,\"username\":\"admin\"},\"msgTip\":\"user can login\",\"token\":\"******\"}}'); +INSERT INTO `tbl_log` VALUES (9913, 63, '接口日志', '43.174.53.19/1.9.116.218', '2026-10-07 13:04:42', 0, 'MaterialPropertyController.getAllList(..)', NULL, 'GET /apis/materialProperty/getAllList', '{}', '{\"code\":200,\"data\":[{\"anotherName\":\"扩展1\",\"id\":1,\"nativeName\":\"扩展1\"},{\"anotherName\":\"扩展2\",\"id\":2,\"nativeName\":\"扩展2\"},{\"anotherName\":\"扩展3\",\"id\":3,\"nativeName\":\"扩展3\"}]}'); +INSERT INTO `tbl_log` VALUES (9914, 63, '接口日志', '43.152.157.88/1.9.116.218', '2026-10-07 13:04:42', 0, 'FunctionController.findMenuByPNumber(..)', NULL, 'POST /apis/function/findMenuByPNumber', '{\"jsonObject\":{\"userId\":63,\"pNumber\":0}}', '[{\"component\":\"/layouts/TabLayout\",\"icon\":\"home\",\"id\":0,\"text\":\"首页\",\"url\":\"/dashboard/analysis\",\"textEn\":\"Home\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/SaleOrderList\",\"icon\":\"profile\",\"id\":242,\"text\":\"销售订单\",\"url\":\"/bill/sale_order\",\"textEn\":\"Sales Orders\"},{\"component\":\"/bill/SaleOutList\",\"icon\":\"profile\",\"id\":41,\"text\":\"销售出库\",\"url\":\"/bill/sale_out\",\"textEn\":\"Sales Shipments\"},{\"component\":\"/bill/DeliveryPlanList\",\"icon\":\"profile\",\"id\":271,\"text\":\"交货计划管理\",\"url\":\"/bill/delivery_plan\",\"textEn\":\"Delivery Plans\"},{\"component\":\"/bill/SaleShipmentList\",\"icon\":\"car\",\"id\":268,\"text\":\"发货管理\",\"url\":\"/bill/sale_shipment\",\"textEn\":\"Shipment Management\"},{\"component\":\"/bill/SaleBackList\",\"icon\":\"profile\",\"id\":200,\"text\":\"销售退货\",\"url\":\"/bill/sale_back\",\"textEn\":\"Sales Returns\"},{\"component\":\"/bill/RetailOutList\",\"icon\":\"profile\",\"id\":210,\"text\":\"零售出库\",\"url\":\"/bill/retail_out\",\"textEn\":\"Retail Shipments\"},{\"component\":\"/bill/RetailBackList\",\"icon\":\"profile\",\"id\":211,\"text\":\"零售退货\",\"url\":\"/bill/retail_back\",\"textEn\":\"Retail Returns\"}],\"icon\":\"shopping-cart\",\"id\":38,\"text\":\"销售管理\",\"url\":\"/billB\",\"textEn\":\"Sales Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/PurchaseApplyList\",\"icon\":\"profile\",\"id\":261,\"text\":\"请购单\",\"url\":\"/bill/purchase_apply\",\"textEn\":\"Purchase Requisitions\"},{\"component\":\"/bill/PurchaseOrderList\",\"icon\":\"profile\",\"id\":241,\"text\":\"采购订单\",\"url\":\"/bill/purchase_order\",\"textEn\":\"Purchase Orders\"},{\"component\":\"/bill/PurchaseInList\",\"icon\":\"profile\",\"id\":33,\"text\":\"采购入库\",\"url\":\"/bill/purchase_in\",\"textEn\":\"Purchase Receipts\"},{\"component\":\"/bill/PurchaseBackList\",\"icon\":\"profile\",\"id\":199,\"text\":\"采购退货\",\"url\":\"/bill/purchase_back\",\"textEn\":\"Purchase Returns\"}],\"icon\":\"retweet\",\"id\":32,\"text\":\"采购管理\",\"url\":\"/bill\",\"textEn\":\"Purchase Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/production/PackBomList\",\"icon\":\"profile\",\"id\":263,\"text\":\"生产方案\",\"url\":\"/production/pack_bom\",\"textEn\":\"Production BOMs\"},{\"component\":\"/production/OrderList\",\"icon\":\"profile\",\"id\":264,\"text\":\"生产工单\",\"url\":\"/production/order\",\"textEn\":\"Production Orders\"},{\"component\":\"/production/RequisitionList\",\"icon\":\"profile\",\"id\":265,\"text\":\"领料管理\",\"url\":\"/production/requisition\",\"textEn\":\"Material Requisitions\"},{\"component\":\"/production/ReportList\",\"icon\":\"profile\",\"id\":266,\"text\":\"完工报工\",\"url\":\"/production/report\",\"textEn\":\"Production Reports\"}],\"icon\":\"cluster\",\"id\":262,\"text\":\"生产管理\",\"url\":\"/production\",\"textEn\":\"Production Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/MaterialStock\",\"icon\":\"profile\",\"id\":246,\"text\":\"商品库存\",\"url\":\"/report/material_stock\",\"textEn\":\"Product Inventory\"},{\"component\":\"/bill/OtherInList\",\"icon\":\"profile\",\"id\":201,\"text\":\"其它入库\",\"url\":\"/bill/other_in\",\"textEn\":\"Other Receipts\"},{\"component\":\"/bill/OtherOutList\",\"icon\":\"profile\",\"id\":202,\"text\":\"其它出库\",\"url\":\"/bill/other_out\",\"textEn\":\"Other Shipments\"},{\"component\":\"/bill/HeadquartersInList\",\"icon\":\"profile\",\"id\":270,\"text\":\"总部入库\",\"url\":\"/bill/headquarters_in\",\"textEn\":\"Headquarters Receipts\"}],\"icon\":\"hdd\",\"id\":239,\"text\":\"仓库管理\",\"url\":\"/billD\",\"textEn\":\"Warehouse Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/financial/MoneyInList\",\"icon\":\"profile\",\"id\":204,\"text\":\"收款单\",\"url\":\"/financial/money_in\",\"textEn\":\"Receipt Vouchers\"},{\"component\":\"/financial/MoneyOutList\",\"icon\":\"profile\",\"id\":205,\"text\":\"付款单\",\"url\":\"/financial/money_out\",\"textEn\":\"Payment Vouchers\"}],\"icon\":\"money-collect\",\"id\":44,\"text\":\"财务管理\",\"url\":\"/financial\",\"textEn\":\"Finance Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/asset/AssetDashboard\",\"icon\":\"dashboard\",\"id\":276,\"text\":\"资产汇总\",\"url\":\"/asset\",\"textEn\":\"Asset Overview\"},{\"component\":\"/asset/AssetList\",\"icon\":\"profile\",\"id\":273,\"text\":\"资产台账\",\"url\":\"/asset/ledger\",\"textEn\":\"Asset Ledger\"},{\"component\":\"/asset/DeviceList\",\"icon\":\"tool\",\"id\":274,\"text\":\"设备台账\",\"url\":\"/asset/device\",\"textEn\":\"Device Ledger\"},{\"component\":\"/asset/InventoryList\",\"icon\":\"scan\",\"id\":275,\"text\":\"资产盘点\",\"url\":\"/asset/inventory\",\"textEn\":\"Asset Inventory\"}],\"icon\":\"bank\",\"id\":272,\"text\":\"资产管理\",\"url\":\"/assetManagement\",\"textEn\":\"Asset Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/material/MaterialCategoryList\",\"icon\":\"profile\",\"id\":22,\"text\":\"商品类别\",\"url\":\"/material/material_category\",\"textEn\":\"Product Categories\"},{\"component\":\"/material/MaterialList\",\"icon\":\"profile\",\"id\":23,\"text\":\"商品信息\",\"url\":\"/material/material\",\"textEn\":\"Product Information\"},{\"component\":\"/system/UnitList\",\"icon\":\"profile\",\"id\":220,\"text\":\"多单位\",\"url\":\"/system/unit\",\"textEn\":\"Multiple Units\"},{\"component\":\"/material/MaterialAttributeList\",\"icon\":\"profile\",\"id\":247,\"text\":\"多属性\",\"url\":\"/material/material_attribute\",\"textEn\":\"Product Attributes\"}],\"icon\":\"shopping\",\"id\":21,\"text\":\"商品管理\",\"url\":\"/material\",\"textEn\":\"Product Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/AccountReport\",\"icon\":\"profile\",\"id\":207,\"text\":\"账户统计\",\"url\":\"/report/account_report\",\"textEn\":\"Account Summary\"},{\"component\":\"/report/RetailOutReport\",\"icon\":\"profile\",\"id\":259,\"text\":\"零售统计\",\"url\":\"/report/retail_out_report\",\"textEn\":\"Retail Summary\"},{\"component\":\"/report/BuyInReport\",\"icon\":\"profile\",\"id\":208,\"text\":\"采购统计\",\"url\":\"/report/buy_in_report\",\"textEn\":\"Purchase Summary\"},{\"component\":\"/report/SaleOutReport\",\"icon\":\"profile\",\"id\":209,\"text\":\"销售统计\",\"url\":\"/report/sale_out_report\",\"textEn\":\"Sales Summary\"},{\"component\":\"/report/InDetail\",\"icon\":\"profile\",\"id\":226,\"text\":\"入库明细\",\"url\":\"/report/in_detail\",\"textEn\":\"Inbound Details\"},{\"component\":\"/report/OutDetail\",\"icon\":\"profile\",\"id\":227,\"text\":\"出库明细\",\"url\":\"/report/out_detail\",\"textEn\":\"Outbound Details\"},{\"component\":\"/report/InMaterialCount\",\"icon\":\"profile\",\"id\":228,\"text\":\"入库汇总\",\"url\":\"/report/in_material_count\",\"textEn\":\"Inbound Summary\"},{\"component\":\"/report/OutMaterialCount\",\"icon\":\"profile\",\"id\":229,\"text\":\"出库汇总\",\"url\":\"/report/out_material_count\",\"textEn\":\"Outbound Summary\"},{\"component\":\"/report/InOutStockReport\",\"icon\":\"profile\",\"id\":59,\"text\":\"进销存统计\",\"url\":\"/report/in_out_stock_report\",\"textEn\":\"Inventory Transaction Summary\"},{\"component\":\"/report/CustomerAccount\",\"icon\":\"profile\",\"id\":235,\"text\":\"客户对账\",\"url\":\"/report/customer_account\",\"textEn\":\"Customer Reconciliation\"},{\"component\":\"/report/VendorAccount\",\"icon\":\"profile\",\"id\":237,\"text\":\"供应商对账\",\"url\":\"/report/vendor_account\",\"textEn\":\"Supplier Reconciliation\"},{\"component\":\"/report/StockWarningReport\",\"icon\":\"profile\",\"id\":244,\"text\":\"库存预警\",\"url\":\"/report/stock_warning_report\",\"textEn\":\"Stock Alerts\"}],\"icon\":\"pie-chart\",\"id\":198,\"text\":\"报表查询\",\"url\":\"/report\",\"textEn\":\"Reports\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/VendorList\",\"icon\":\"profile\",\"id\":25,\"text\":\"供应商信息\",\"url\":\"/system/vendor\",\"textEn\":\"Suppliers\"},{\"component\":\"/system/CustomerList\",\"icon\":\"profile\",\"id\":217,\"text\":\"客户信息\",\"url\":\"/system/customer\",\"textEn\":\"Customers\"},{\"component\":\"/system/MemberList\",\"icon\":\"profile\",\"id\":218,\"text\":\"会员信息\",\"url\":\"/system/member\",\"textEn\":\"Members\"},{\"component\":\"/system/CustomerCategoryList\",\"icon\":\"bars\",\"id\":267,\"text\":\"客户分类\",\"url\":\"/system/customerCategory\",\"textEn\":\"Customer Categories\"},{\"component\":\"/system/DepotList\",\"icon\":\"profile\",\"id\":26,\"text\":\"仓库信息\",\"url\":\"/system/depot\",\"textEn\":\"Warehouses\"},{\"component\":\"/system/InOutItemList\",\"icon\":\"profile\",\"id\":194,\"text\":\"收支项目\",\"url\":\"/system/in_out_item\",\"textEn\":\"Income and Expense Items\"},{\"component\":\"/system/AccountList\",\"icon\":\"profile\",\"id\":195,\"text\":\"结算账户\",\"url\":\"/system/account\",\"textEn\":\"Settlement Accounts\"},{\"component\":\"/system/PersonList\",\"icon\":\"profile\",\"id\":31,\"text\":\"操作人员管理\",\"url\":\"/system/person\",\"textEn\":\"Operators\"}],\"icon\":\"appstore\",\"id\":24,\"text\":\"基础资料\",\"url\":\"/systemA\",\"textEn\":\"Master Data\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/RoleList\",\"icon\":\"profile\",\"id\":13,\"text\":\"角色管理\",\"url\":\"/system/role\",\"textEn\":\"Role Management\"},{\"component\":\"/system/UserList\",\"icon\":\"profile\",\"id\":14,\"text\":\"用户管理\",\"url\":\"/system/user\",\"textEn\":\"User Management\"},{\"component\":\"/system/OrganizationList\",\"icon\":\"profile\",\"id\":243,\"text\":\"部门管理\",\"url\":\"/system/organization\",\"textEn\":\"Department Management\"},{\"component\":\"/system/LogList\",\"icon\":\"profile\",\"id\":15,\"text\":\"日志管理\",\"url\":\"/system/log\",\"textEn\":\"Log Management\"},{\"component\":\"/material/MaterialPropertyList\",\"icon\":\"profile\",\"id\":236,\"text\":\"商品属性\",\"url\":\"/material/material_property\",\"textEn\":\"Product Properties\"},{\"component\":\"/system/SystemConfigList\",\"icon\":\"profile\",\"id\":234,\"text\":\"系统配置\",\"url\":\"/system/system_config\",\"textEn\":\"System Configuration\"},{\"component\":\"/system/FunctionList\",\"icon\":\"profile\",\"id\":16,\"text\":\"菜单管理\",\"url\":\"/system/function\",\"textEn\":\"Resource Menus\"},{\"component\":\"/system/PluginList\",\"icon\":\"profile\",\"id\":245,\"text\":\"插件管理\",\"url\":\"/system/plugin\",\"textEn\":\"Plugin Management\"},{\"component\":\"/system/DictList\",\"icon\":\"profile\",\"id\":260,\"text\":\"字典管理\",\"url\":\"/system/dict\",\"textEn\":\"Dictionary Management\"},{\"component\":\"/system/PlatformConfigList\",\"icon\":\"profile\",\"id\":258,\"text\":\"平台配置\",\"url\":\"/system/platform_config\",\"textEn\":\"Platform Configuration\"}],\"icon\":\"setting\",\"id\":1,\"text\":\"系统管理\",\"url\":\"/system\",\"textEn\":\"System Management\"}]'); +INSERT INTO `tbl_log` VALUES (9915, 63, '接口日志', '43.152.142.139/1.9.116.218', '2026-10-07 13:04:42', 0, 'UserController.getUserBtnByCurrentUser(..)', NULL, 'GET /apis/user/getUserBtnByCurrentUser', '{}', '{\"code\":200,\"data\":{\"userBtn\":[{\"btnStr\":\"8,1\",\"url\":\"/system/role\"},{\"btnStr\":\"1\",\"url\":\"/system/user\"},{\"btnStr\":\"1\",\"url\":\"/system/organization\"},{\"btnStr\":\"1\",\"url\":\"/material/material_property\"},{\"btnStr\":\"1\",\"url\":\"/system/system_config\"},{\"btnStr\":\"1\",\"url\":\"/system/function\"},{\"btnStr\":\"1\",\"url\":\"/system/plugin\"},{\"btnStr\":\"1\",\"url\":\"/material/material_category\"},{\"btnStr\":\"1,3\",\"url\":\"/material/material\"},{\"btnStr\":\"1\",\"url\":\"/system/unit\"},{\"btnStr\":\"1\",\"url\":\"/material/material_attribute\"},{\"btnStr\":\"1,3\",\"url\":\"/system/vendor\"},{\"btnStr\":\"1,3\",\"url\":\"/system/customer\"},{\"btnStr\":\"1,3\",\"url\":\"/system/member\"},{\"btnStr\":\"1\",\"url\":\"/system/depot\"},{\"btnStr\":\"1\",\"url\":\"/system/in_out_item\"},{\"btnStr\":\"1\",\"url\":\"/system/account\"},{\"btnStr\":\"1\",\"url\":\"/system/person\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_apply\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_out\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/delivery_plan\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/sale_shipment\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_out\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/order\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/requisition\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/report\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/giro\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/advance_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/allocation_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/assemble\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/headquarters_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/disassemble\"}]}}'); +INSERT INTO `tbl_log` VALUES (9916, 63, '接口日志', '43.174.53.48/1.9.116.218', '2026-10-07 13:04:42', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0},{\"month\":\"2026-10\",\"inbound\":0,\"ordered\":0,\"shipped\":0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (9917, 63, '接口日志', '43.152.142.83/1.9.116.218', '2026-10-07 13:04:42', 0, 'MsgController.getMsgByStatus(..)', NULL, 'GET /apis/msg/getMsgByStatus', '{\"status\":\"1\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (9918, 63, '接口日志', '43.152.142.40/1.9.116.218', '2026-10-07 13:04:43', 0, 'MsgController.getList(..)', NULL, 'GET /apis/msg/list', '{\"search\":\"{\\\"name\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9919, 63, '接口日志', '43.152.142.62/1.9.116.218', '2026-10-07 13:05:41', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9920, 63, '接口日志', '43.152.142.33/1.9.116.218', '2026-10-07 13:05:41', 0, 'CustomerCategoryController.getTreeList(..)', NULL, 'GET /apis/customerCategory/treeList', '{}', '{\"code\":200,\"data\":{\"data\":[],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9921, 63, '接口日志', '43.174.54.50/1.9.116.218', '2026-10-07 13:05:41', 0, 'SupplierController.getList(..)', NULL, 'GET /apis/supplier/list', '{\"search\":\"{\\\"supplier\\\":\\\"\\\",\\\"type\\\":\\\"客户\\\",\\\"contacts\\\":\\\"\\\",\\\"telephone\\\":\\\"\\\",\\\"phonenum\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"accountNumber\":\"\",\"address\":\"\",\"advanceIn\":0.000000,\"allNeedGet\":12430066.000000,\"allNeedPay\":0.000000,\"bankName\":\"\",\"beginNeedGet\":0.000000,\"beginNeedPay\":0.000000,\"contacts\":\"\",\"creator\":63,\"deleteFlag\":\"0\",\"description\":\"Stock Status客户\",\"email\":\"\",\"enabled\":true,\"fax\":\"\",\"id\":90,\"isystem\":1,\"phoneNum\":\"\",\"sort\":\"2\",\"supplier\":\"TNB\",\"taxNum\":\"\",\"taxRate\":10.000000,\"telephone\":\"\",\"tenantId\":63,\"type\":\"客户\"}]}}'); +INSERT INTO `tbl_log` VALUES (9922, 63, '接口日志', '43.174.32.33/1.9.116.218', '2026-10-07 13:05:54', 0, 'SupplierController.getList(..)', NULL, 'GET /apis/supplier/list', '{\"search\":\"{\\\"supplier\\\":\\\"\\\",\\\"type\\\":\\\"会员\\\",\\\"telephone\\\":\\\"\\\",\\\"phonenum\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9923, 63, '接口日志', '43.152.142.31/1.9.116.218', '2026-10-07 13:05:55', 0, 'SupplierController.getList(..)', NULL, 'GET /apis/supplier/list', '{\"search\":\"{\\\"supplier\\\":\\\"\\\",\\\"type\\\":\\\"供应商\\\",\\\"contacts\\\":\\\"\\\",\\\"telephone\\\":\\\"\\\",\\\"phonenum\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"accountNumber\":\"\",\"address\":\"\",\"advanceIn\":0.000000,\"allNeedGet\":0.000000,\"allNeedPay\":116500257.436400,\"bankName\":\"\",\"beginNeedGet\":0.000000,\"beginNeedPay\":0.000000,\"contacts\":\"\",\"creator\":63,\"deleteFlag\":\"0\",\"description\":\"Excel初始化默认供应商\",\"email\":\"\",\"enabled\":true,\"fax\":\"\",\"id\":89,\"isystem\":1,\"phoneNum\":\"\",\"sort\":\"1\",\"supplier\":\"浙江瑞银电子有限公司\",\"taxNum\":\"\",\"taxRate\":0.000000,\"telephone\":\"\",\"tenantId\":63,\"type\":\"供应商\"}]}}'); +INSERT INTO `tbl_log` VALUES (9924, 63, '接口日志', '43.174.52.68/1.9.116.218', '2026-10-07 13:06:03', 0, 'AccountController.getList(..)', NULL, 'GET /apis/account/list', '{\"search\":\"{\\\"name\\\":\\\"\\\",\\\"serialNo\\\":\\\"\\\",\\\"remark\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63,\"thisMonthAmount\":\"0\"},{\"currentAmount\":4375618.532800,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63,\"thisMonthAmount\":\"0\"}]}}'); +INSERT INTO `tbl_log` VALUES (9925, 63, '接口日志', '43.152.142.83/1.9.116.218', '2026-10-07 13:06:04', 0, 'SysDictDataController.dictType(..)', NULL, 'GET /apis/dict/data/type/person_type', '{\"dictType\":\"person_type\"}', '{\"msg\":\"操作成功\",\"code\":0,\"data\":[{\"createBy\":\"admin\",\"createTime\":1789644159000,\"dictCode\":13,\"dictLabel\":\"采购员\",\"dictSort\":3,\"dictType\":\"person_type\",\"dictValue\":\"采购员\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"},{\"createBy\":\"admin\",\"createTime\":1789724265000,\"dictCode\":14,\"dictLabel\":\"CEO\",\"dictSort\":4,\"dictType\":\"person_type\",\"dictValue\":\"CEO\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"},{\"createBy\":\"admin\",\"createTime\":1789724275000,\"dictCode\":15,\"dictLabel\":\"IT\",\"dictSort\":5,\"dictType\":\"person_type\",\"dictValue\":\"IT\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}]}'); +INSERT INTO `tbl_log` VALUES (9926, 63, '接口日志', '43.152.142.142/1.9.116.218', '2026-10-07 13:06:04', 0, 'PersonController.getList(..)', NULL, 'GET /apis/person/list', '{\"search\":\"{\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":11,\"rows\":[{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":44,\"name\":\"Neezam\",\"type\":\"CEO\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":43,\"name\":\"Juwairiah\",\"type\":\"财务员\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":31,\"name\":\"Arif\",\"sort\":\"1\",\"tenantId\":63,\"type\":\"商务主管\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":36,\"name\":\"张伟\",\"sort\":\"10\",\"tenantId\":63,\"type\":\"资产管理员\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":32,\"name\":\"Hafiz\",\"sort\":\"2\",\"tenantId\":63,\"type\":\"技术主管\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":37,\"name\":\"陈晨\",\"sort\":\"20\",\"tenantId\":63,\"type\":\"设备工程师\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":33,\"name\":\"Aziman\",\"sort\":\"3\",\"tenantId\":63,\"type\":\"软件工程师\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":38,\"name\":\"王磊\",\"sort\":\"30\",\"tenantId\":63,\"type\":\"生产主管\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":34,\"name\":\"Lim\",\"sort\":\"4\",\"tenantId\":63,\"type\":\"IT\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":39,\"name\":\"赵敏\",\"sort\":\"40\",\"tenantId\":63,\"type\":\"IT运维工程师\"}]}}'); +INSERT INTO `tbl_log` VALUES (9927, 63, '接口日志', '43.174.51.49/1.9.116.218', '2026-10-07 13:06:04', 0, 'SysDictDataController.dictType(..)', NULL, 'GET /apis/dict/data/type/person_type', '{\"dictType\":\"person_type\"}', '{\"msg\":\"操作成功\",\"code\":0,\"data\":[{\"createBy\":\"admin\",\"createTime\":1789644159000,\"dictCode\":13,\"dictLabel\":\"采购员\",\"dictSort\":3,\"dictType\":\"person_type\",\"dictValue\":\"采购员\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"},{\"createBy\":\"admin\",\"createTime\":1789724265000,\"dictCode\":14,\"dictLabel\":\"CEO\",\"dictSort\":4,\"dictType\":\"person_type\",\"dictValue\":\"CEO\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"},{\"createBy\":\"admin\",\"createTime\":1789724275000,\"dictCode\":15,\"dictLabel\":\"IT\",\"dictSort\":5,\"dictType\":\"person_type\",\"dictValue\":\"IT\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}]}'); +INSERT INTO `tbl_log` VALUES (9928, 63, '接口日志', '43.152.157.88/1.9.116.218', '2026-10-07 13:06:11', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (9929, 63, '接口日志', '43.174.54.27/1.9.116.218', '2026-10-07 13:06:11', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9930, 63, '接口日志', '43.174.32.19/1.9.116.218', '2026-10-07 13:06:12', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (9931, 63, '接口日志', '43.174.53.48/1.9.116.218', '2026-10-07 13:06:12', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (9932, 63, '接口日志', '43.152.142.108/1.9.116.218', '2026-10-07 13:06:12', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9933, 63, '接口日志', '43.174.53.14/1.9.116.218', '2026-10-07 13:06:12', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (9934, 63, '接口日志', '43.152.142.139/1.9.116.218', '2026-10-07 13:06:12', 0, 'PersonController.getPersonByNumType(..)', NULL, 'GET /apis/person/getPersonByNumType', '{\"typeNum\":\"1\"}', '[]'); +INSERT INTO `tbl_log` VALUES (9935, 63, '接口日志', '43.152.142.110/1.9.116.218', '2026-10-07 13:06:12', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"其它\\\",\\\"subType\\\":\\\"销售订单\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-07-07\\\",\\\"endTime\\\":\\\"2026-10-07\\\",\\\"createTimeRange\\\":[\\\"2026-07-06T16:00:00.000Z\\\",\\\"2026-10-06T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":4,\"rows\":[{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789718483000,\"creator\":63,\"debt\":808500.000000,\"defaultNumber\":\"XSDD00000001726\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":808500.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1719,\"lastDebt\":808500.000000,\"lastDeposit\":0.000000,\"materialCount\":10000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD00000001726\",\"operTime\":1789732682000,\"operTimeStr\":\"2026-09-18 15:58:02\",\"organId\":90,\"organName\":\"TNB\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"totalPrice\":735000.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789726236000,\"creator\":63,\"debt\":340000000.000000,\"defaultNumber\":\"XSDD00000001724\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":340000000.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1718,\"lastDebt\":340000000.000000,\"lastDeposit\":0.000000,\"materialCount\":1000000.000000,\"materialsList\":\"3PH APEC3-WC 3PH APEC3-WC 3PH APEC3-WC \",\"number\":\"XSDD00000001724\",\"operTime\":1789725706000,\"operTimeStr\":\"2026-09-18 14:01:46\",\"organId\":90,\"organName\":\"TNB\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"0\",\"subType\":\"销售订单\",\"totalPrice\":340000000.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1785355200000,\"creator\":63,\"debt\":242550.000000,\"defaultNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":242550.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1580,\"lastDebt\":242550.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":3000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303475-1PH-WS79-ADD1\",\"operTime\":1785355200000,\"operTimeStr\":\"2026-07-30 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303475\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":242550.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1785355200000,\"creator\":63,\"debt\":323400.000000,\"defaultNumber\":\"XSDD-42303447-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":323400.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1574,\"lastDebt\":323400.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":4000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303447-1PH-WS79-ADD1\",\"operTime\":1785355200000,\"operTimeStr\":\"2026-07-30 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303447\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":323400.000000,\"type\":\"其它\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (9936, 63, '接口日志', '43.152.142.43/1.9.116.218', '2026-10-07 13:06:12', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9937, 63, '接口日志', '43.152.157.88/1.9.116.218', '2026-10-07 13:06:13', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (9938, 63, '接口日志', '43.152.142.40/1.9.116.218', '2026-10-07 13:06:13', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9939, 63, '接口日志', '43.174.53.19/1.9.116.218', '2026-10-07 13:06:13', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9940, 63, '接口日志', '43.152.142.68/1.9.116.218', '2026-10-07 13:06:13', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (9941, 63, '接口日志', '43.174.54.50/1.9.116.218', '2026-10-07 13:06:13', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (9942, 63, '接口日志', '43.152.142.118/1.9.116.218', '2026-10-07 13:06:13', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (9943, 63, '接口日志', '43.152.142.86/1.9.116.218', '2026-10-07 13:06:13', 0, 'PersonController.getPersonByNumType(..)', NULL, 'GET /apis/person/getPersonByNumType', '{\"typeNum\":\"1\"}', '[]'); +INSERT INTO `tbl_log` VALUES (9944, 63, '接口日志', '43.174.32.13/1.9.116.218', '2026-10-07 13:06:13', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9945, 63, '接口日志', '43.152.142.132/1.9.116.218', '2026-10-07 13:06:13', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"出库\\\",\\\"subType\\\":\\\"销售\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-07-07\\\",\\\"endTime\\\":\\\"2026-10-07\\\",\\\"createTimeRange\\\":[\\\"2026-07-06T16:00:00.000Z\\\",\\\"2026-10-06T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":32,\"rows\":[{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789718584000,\"creator\":63,\"debt\":808500.000000,\"defaultNumber\":\"XSCK00000001728\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":808500.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1720,\"lastDebt\":808500.000000,\"lastDeposit\":0.000000,\"linkNumber\":\"XSDD00000001726\",\"materialCount\":10000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK00000001728\",\"operTime\":1789732981000,\"operTimeStr\":\"2026-09-18 16:03:01\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"totalPrice\":735000.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1786305600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-87\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1671,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303506-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-87\",\"operTime\":1786305600000,\"operTimeStr\":\"2026-08-10 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1786305600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2159-86\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1670,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303506-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2159-86\",\"operTime\":1786305600000,\"operTimeStr\":\"2026-08-10 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2159\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785873600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-DO_2158-85\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1669,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-DO_2158-85\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:DO_2158\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785873600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-84\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1668,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-84\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785873600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-DO_2157-83\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1667,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-DO_2157-83\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:DO_2157\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785268800000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2150-69\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1665,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303480-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2150-69\",\"operTime\":1785268800000,\"operTimeStr\":\"2026-07-29 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2150\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784750400000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2142-68\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1664,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303480-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2142-68\",\"operTime\":1784750400000,\"operTimeStr\":\"2026-07-23 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2142\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784145600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-67\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1663,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-67\",\"operTime\":1784145600000,\"operTimeStr\":\"2026-07-16 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784145600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2134-66\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1662,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2134-66\",\"operTime\":1784145600000,\"operTimeStr\":\"2026-07-16 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2134\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (9946, 63, '接口日志', '43.152.142.62/1.9.116.218', '2026-10-07 13:06:13', 0, 'DeliveryPlanController.getList(..)', NULL, 'GET /apis/deliveryPlan/list', '{\"search\":\"{\\\"planNumber\\\":\\\"\\\",\\\"sourceBillNumber\\\":\\\"\\\",\\\"saleOrderNumber\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"createTime\":1789720385000,\"creator\":63,\"creatorName\":\"admin\",\"customerId\":90,\"customerName\":\"TNB\",\"deleteFlag\":\"0\",\"id\":7,\"materialsList\":\"1PH WS79\",\"planNumber\":\"JH00000001741\",\"planQuantity\":10000.000000,\"saleOrderNumber\":\"XSDD00000001726\",\"shippedQuantity\":0.000000,\"sourceBillId\":1720,\"sourceBillNumber\":\"XSCK00000001728\",\"sourceType\":\"sale\",\"status\":\"2\"},{\"createTime\":1789717298000,\"creator\":63,\"creatorName\":\"admin\",\"customerId\":90,\"customerName\":\"TNB\",\"deleteFlag\":\"0\",\"id\":6,\"materialsList\":\"3PH APEC3-WC\",\"planNumber\":\"JH00000001717\",\"planQuantity\":149.000000,\"saleOrderNumber\":\"XSDD-42260529-3PH-APEC3-WC-OV\",\"shippedQuantity\":0.000000,\"sourceBillId\":1714,\"sourceBillNumber\":\"XSCK-3PH-APEC3-WC-OV-28\",\"sourceType\":\"sale\",\"status\":\"2\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (9947, 63, '接口日志', '43.152.142.33/1.9.116.218', '2026-10-07 13:06:28', 0, 'DeliveryPlanController.getDetail(..)', NULL, 'GET /apis/deliveryPlan/detail', '{\"id\":7}', '{\"code\":200,\"data\":{\"rows\":[{\"barCode\":\"1PH-WS79\",\"deleteFlag\":\"0\",\"depotId\":25,\"id\":6,\"materialExtendId\":123,\"materialId\":703,\"materialName\":\"1PH WS79\",\"model\":\"1PH WS79\",\"planId\":7,\"planQuantity\":10000.000000,\"shippedQuantity\":0.000000,\"sourceItemId\":1525,\"standard\":\"1PH WS79\",\"unit\":\"件\"}],\"info\":{\"createTime\":1789720385000,\"creator\":63,\"customerId\":90,\"deleteFlag\":\"0\",\"id\":7,\"planNumber\":\"JH00000001741\",\"saleOrderNumber\":\"XSDD00000001726\",\"sourceBillId\":1720,\"sourceBillNumber\":\"XSCK00000001728\",\"sourceType\":\"sale\",\"status\":\"2\"}}}'); +INSERT INTO `tbl_log` VALUES (9948, 63, '接口日志', '43.174.32.33/1.9.116.218', '2026-10-07 13:06:36', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0},{\"month\":\"2026-10\",\"inbound\":0,\"ordered\":0,\"shipped\":0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (9949, 63, '接口日志', '43.152.157.88/1.9.116.218', '2026-10-07 13:07:34', 0, 'SupplierController.findBySelectRetail(..)', NULL, 'POST /apis/supplier/findBySelect_retail', '{\"jsonObject\":{\"limit\":1}}', '[]'); +INSERT INTO `tbl_log` VALUES (9950, 63, '接口日志', '43.174.52.68/1.9.116.218', '2026-10-07 13:07:34', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9951, 63, '接口日志', '43.174.51.49/1.9.116.218', '2026-10-07 13:07:34', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (9952, 63, '接口日志', '43.152.142.83/1.9.116.218', '2026-10-07 13:07:34', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (9953, 63, '接口日志', '43.152.142.142/1.9.116.218', '2026-10-07 13:07:34', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (9954, 63, '接口日志', '43.152.142.31/1.9.116.218', '2026-10-07 13:07:34', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9955, 63, '接口日志', '43.174.54.27/1.9.116.218', '2026-10-07 13:07:34', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"入库\\\",\\\"subType\\\":\\\"零售退货\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-07-07\\\",\\\"endTime\\\":\\\"2026-10-07\\\",\\\"createTimeRange\\\":[\\\"2026-07-06T16:00:00.000Z\\\",\\\"2026-10-06T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9956, 63, '接口日志', '43.152.157.88/1.9.116.218', '2026-10-07 13:07:36', 0, 'SupplierController.findBySelectRetail(..)', NULL, 'POST /apis/supplier/findBySelect_retail', '{\"jsonObject\":{\"limit\":1}}', '[]'); +INSERT INTO `tbl_log` VALUES (9957, 63, '接口日志', '43.152.142.83/1.9.116.218', '2026-10-07 13:07:36', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9958, 63, '接口日志', '43.174.32.33/1.9.116.218', '2026-10-07 13:07:36', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"出库\\\",\\\"subType\\\":\\\"零售\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-07-07\\\",\\\"endTime\\\":\\\"2026-10-07\\\",\\\"createTimeRange\\\":[\\\"2026-07-06T16:00:00.000Z\\\",\\\"2026-10-06T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9959, 63, '接口日志', '43.152.142.110/1.9.116.218', '2026-10-07 13:07:36', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9960, 63, '接口日志', '43.152.142.43/1.9.116.218', '2026-10-07 13:07:36', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (9961, 63, '接口日志', '43.174.51.49/1.9.116.218', '2026-10-07 13:07:36', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (9962, 63, '接口日志', '43.152.142.62/1.9.116.218', '2026-10-07 13:07:36', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (9963, 63, '接口日志', '43.152.142.118/1.9.116.218', '2026-10-07 13:07:36', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9964, 63, '接口日志', '43.174.53.19/1.9.116.218', '2026-10-07 13:07:38', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0},{\"month\":\"2026-10\",\"inbound\":0,\"ordered\":0,\"shipped\":0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (9965, 63, '接口日志', '43.152.142.132/1.9.116.218', '2026-10-07 13:07:40', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0},{\"month\":\"2026-10\",\"inbound\":0,\"ordered\":0,\"shipped\":0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (9966, 63, '接口日志', '43.174.53.48/1.9.116.218', '2026-10-07 13:07:40', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0},{\"month\":\"2026-10\",\"inbound\":0,\"ordered\":0,\"shipped\":0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (9967, 63, '接口日志', '43.174.52.68/1.9.116.218', '2026-10-07 13:07:43', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0},{\"month\":\"2026-10\",\"inbound\":0,\"ordered\":0,\"shipped\":0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (9968, NULL, '接口日志', '43.174.32.19/1.9.116.218', '2026-10-07 13:08:13', 0, 'UserController.logout(..)', NULL, 'GET /apis/user/logout', '{}', '{\"code\":400}'); +INSERT INTO `tbl_log` VALUES (9969, NULL, '接口日志', '43.152.142.142/1.9.116.218', '2026-10-07 13:08:13', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (9970, NULL, '接口日志', '43.174.54.27/1.9.116.218', '2026-10-07 13:08:13', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (9971, NULL, '接口日志', '43.174.54.50/1.9.116.218', '2026-10-07 13:08:14', 0, 'PlatformConfigController.getPlatformCheckcodeFlag(..)', NULL, 'GET /apis/platformConfig/getPlatform/checkcodeFlag', '{}', '\"1\"'); +INSERT INTO `tbl_log` VALUES (9972, NULL, '接口日志', '43.152.142.108/1.9.116.218', '2026-10-07 13:08:14', 0, 'UserController.randomImage(..)', NULL, 'GET /apis/user/randomImage', '{}', '{\"code\":200,\"data\":{\"base64\":\"data:image/jpg;base64,/9j/4AAQSkZJRgABAgAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAAjAGkDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3xZVeZ4wCSgGT2ye316H8RTI5WknnX5NkZC8ZznGTn8COlNE7TSuIDGyxuEcknOf4h07ZB79xx1rgfEXxg8L+GvFV34e1G3u47mAo8k5hBhLGNXXlSXzjaB8vXHQc0AeisocYOeoPBI6HPao5JEikQsceYwTlgADyRwT+HHPT048x8O/Gnw94k16PSdO+02c9yWMR1NQqPIdoWMMsjYJ+YgYAOAo5Iz6Ubp/KQrbSGQttaPK5TgnkgkDgcc9x0zQA5LoSxPJFFI4BG3gDeCAcjJHHP6GlikkkkLbNsXzLhwQwYMRn3B6jp+OePLtR+P8A4T0vVruxZb7UEhk2rc2MKGJ/UAtINwHTcOD24wT2fhzxRpPjTQItU0cG9ihkCutxHskilChiORt3jcOQduTw1AG3cwTTXELRzGJUDZKk5JOAOOh43dehx7gypPHIwCtyRuAIx3wfyPUdu9EBBiBCuuSSVkPIOeR/+rj04rj/AAT8RdD8fx6hHpdjfRx2pRZ1uoUAbzd+OFZsjKnP1+uADqBJdR3hH2WR4XOCyyqQp9cHBAI647g8dylzcRyWUxMz20ZAUXHAwScfUYPBzjFc34d+JOkeJfF+peGbW01CG/04SmZp0QR/u5BGwBVyTyw7dK3vEFhd6hol/Bp1yba/ltJobeYNt2O6EK24AsuGwcrzx3oBl8CVZIxuVowhDM33i3GDxx/ez+FNhY+ZLGzs5VsgmMrgHnGejY56e2eeT4lH+z5p13b3Z1XXtTk1mR2b7XhSsrnBLlCCzDLDJ388k7au/s/+Ldc8Q6frFjq1496li0TxXFxIzzfvN+VLHO5fkyM8jJHIxgA9gaWRbhYzGNrHhgWPGOc/Lgc46nn9KmpoD72LMpQ42gLgj1yc8/pTqAI/NAdlKONpAztJBz3GP19PpzXz9JFb3n7W6iWOKeLckihlDLuWxDKw9wQCD2IBr3ee1gN1LMgZbsxgqUVd2Bn7pYYyc4PtjpxWRb+CdA/4SoeK30hYdaHCzC4kOF8vyxlAdgOzjABHv3oA8e+JdnbWn7Qvg/7Nbww+a9i8nloF3t9pZcnHU4VRn0A9K+gJLZGgljjAjLksSmV+b1O0g/rzWLqvgnw7rfiGy1/UdP8AO1Ox8v7PP50i7Njl1+UMFOGJPINbEIuBdTb44lhJypX7xPTn14xzxjGOetAHzRo2lnwyjat4E+KGiWsV60iS2+oyrG6ornZuR1O44DHcUQ8/KPnxXoXwK8Y3vijStZt722s47y2uUuJruCBYjdGYsSzogA3/ACY3dxjIyCT0N78IfAWqXc103h20VnAANvNLEgYfKR5cbKoxgdMZOc88nqPD+hWHh3SIrDT7K1tIlwWS2j2qzYAySclmwACzEk4yaALvKNLHBHtbiTLfcYknIHoeOeO+ea+cP2e/Eei6Hfa9Dq2p29g9xFC0LXMwijYIXDDLELu+dcDrjOO9fRdmHewVftLscsBLxuwGOAcj72ODkdc1yF38LfCGqeKZdbutHtZ7ky750zIqGThgxQNtYkbdwIw2STySCAeXfCLU7W9+OninULZzLaXaXckMoUjKvdRlSQcEZyO2eee9e8yXsFlaX00d0si2i7pFnnCrEAMsS56DGeWJHBGRg45nQ/CXhrwlr11f6To7xalJCyzmPcBIrHcREm7YOY920AccD7pWuvvLS01fS7izuVE1ndwtFIoYgPG64IyDnkHqDQB83eOvizqPjnWD4c8O30WlaFOpglubqRYfPXqzO55RMAgKvzMCQQSwQevfDfw74S0Lw/cab4a1e01G5ZF+33tpco8juQ20naTsA+baO2D1OSarfBj4ciRwmhozqUVkOoTjbk/7+ckHgHrgdOtdJ4U8G+G/Ccdy/h2w+yrd7fO/fSPu2bsAh2OCNzcce/SgDYhuo3WIRzxyrtXe7OAw3D5SVA6n8KtVnyMwlHnRXEkQZt7KOFKuGT5RyevUenzD00KACkKqxUlQSpyCR0PT+poooAWofslt9p+0fZ4vP/567Bu6Y69enFFFAE1FFFABTBDEszTCJBKwwzhRuI+v4CiigBzKroVZQysMEEZBFCqqIFVQqqMAAYAFFFACeXH83yL8zBjx1Ixg/XgflTqKKACiiigD/9k=\",\"uuid\":\"8c59a024d5c0455fa16e653a9ab0698a\"}}'); +INSERT INTO `tbl_log` VALUES (9973, NULL, '接口日志', '43.146.68.49/16.216.88.112', '2026-10-08 01:19:07', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (9974, NULL, '接口日志', '43.146.64.21/16.216.88.112', '2026-10-08 01:19:08', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (9975, NULL, '接口日志', '43.168.154.68/16.216.88.68', '2026-10-08 01:19:16', 0, 'UserController.randomImage(..)', NULL, 'GET /apis/user/randomImage', '{}', '{\"code\":200,\"data\":{\"base64\":\"data:image/jpg;base64,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\",\"uuid\":\"55c62f91979f43b0885405fdbd2a24b3\"}}'); +INSERT INTO `tbl_log` VALUES (9976, NULL, '接口日志', '43.146.65.48/16.216.88.173', '2026-10-08 01:19:16', 0, 'PlatformConfigController.getPlatformCheckcodeFlag(..)', NULL, 'GET /apis/platformConfig/getPlatform/checkcodeFlag', '{}', '\"1\"'); +INSERT INTO `tbl_log` VALUES (9977, NULL, '接口日志', '183.131.72.172/60.177.158.246', '2026-10-08 05:34:13', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (9978, NULL, '接口日志', '183.131.211.145/60.177.158.246', '2026-10-08 05:34:14', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (9979, NULL, '接口日志', '43.174.32.13/1.9.116.218', '2026-10-09 06:39:45', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (9980, NULL, '接口日志', '43.174.32.34/1.9.116.218', '2026-10-09 06:39:45', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (9981, NULL, '接口日志', '43.152.142.40/1.9.116.218', '2026-10-09 06:39:48', 0, 'PlatformConfigController.getPlatformCheckcodeFlag(..)', NULL, 'GET /apis/platformConfig/getPlatform/checkcodeFlag', '{}', '\"1\"'); +INSERT INTO `tbl_log` VALUES (9982, NULL, '接口日志', '43.174.32.34/1.9.116.218', '2026-10-09 06:39:48', 0, 'UserController.randomImage(..)', NULL, 'GET /apis/user/randomImage', '{}', '{\"code\":200,\"data\":{\"base64\":\"data:image/jpg;base64,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\",\"uuid\":\"6319c63fd6d6479fa1d46d6a31e9d810\"}}'); +INSERT INTO `tbl_log` VALUES (9983, 63, '用户', '43.152.142.41/1.9.116.218', '2026-10-09 06:40:57', 0, '登录admin', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (9984, NULL, '接口日志', '43.152.142.41/1.9.116.218', '2026-10-09 06:40:57', 0, 'UserController.login(..)', NULL, 'POST /apis/user/login', '{\"userParam\":{\"code\":\"erdb\",\"loginName\":\"admin\",\"password\":\"******\",\"uuid\":\"6319c63fd6d6479fa1d46d6a31e9d810\"}}', '{\"code\":200,\"data\":{\"pwdSimple\":\"******\",\"user\":{\"deleteFlag\":\"0\",\"description\":\"\",\"email\":\"666666@qq.com\",\"id\":63,\"ismanager\":1,\"isystem\":1,\"leaderFlag\":\"0\",\"loginName\":\"admin\",\"password\":\"******\",\"phonenum\":\"1123123123132\",\"position\":\"主管\",\"status\":0,\"tenantId\":63,\"username\":\"admin\"},\"msgTip\":\"user can login\",\"token\":\"******\"}}'); +INSERT INTO `tbl_log` VALUES (9985, 63, '接口日志', '43.152.157.121/1.9.116.218', '2026-10-09 06:40:57', 0, 'FunctionController.findMenuByPNumber(..)', NULL, 'POST /apis/function/findMenuByPNumber', '{\"jsonObject\":{\"userId\":63,\"pNumber\":0}}', '[{\"component\":\"/layouts/TabLayout\",\"icon\":\"home\",\"id\":0,\"text\":\"首页\",\"url\":\"/dashboard/analysis\",\"textEn\":\"Home\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/SaleOrderList\",\"icon\":\"profile\",\"id\":242,\"text\":\"销售订单\",\"url\":\"/bill/sale_order\",\"textEn\":\"Sales Orders\"},{\"component\":\"/bill/SaleOutList\",\"icon\":\"profile\",\"id\":41,\"text\":\"销售出库\",\"url\":\"/bill/sale_out\",\"textEn\":\"Sales Shipments\"},{\"component\":\"/bill/DeliveryPlanList\",\"icon\":\"profile\",\"id\":271,\"text\":\"交货计划管理\",\"url\":\"/bill/delivery_plan\",\"textEn\":\"Delivery Plans\"},{\"component\":\"/bill/SaleShipmentList\",\"icon\":\"car\",\"id\":268,\"text\":\"发货管理\",\"url\":\"/bill/sale_shipment\",\"textEn\":\"Shipment Management\"},{\"component\":\"/bill/SaleBackList\",\"icon\":\"profile\",\"id\":200,\"text\":\"销售退货\",\"url\":\"/bill/sale_back\",\"textEn\":\"Sales Returns\"},{\"component\":\"/bill/RetailOutList\",\"icon\":\"profile\",\"id\":210,\"text\":\"零售出库\",\"url\":\"/bill/retail_out\",\"textEn\":\"Retail Shipments\"},{\"component\":\"/bill/RetailBackList\",\"icon\":\"profile\",\"id\":211,\"text\":\"零售退货\",\"url\":\"/bill/retail_back\",\"textEn\":\"Retail Returns\"}],\"icon\":\"shopping-cart\",\"id\":38,\"text\":\"销售管理\",\"url\":\"/billB\",\"textEn\":\"Sales Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/PurchaseApplyList\",\"icon\":\"profile\",\"id\":261,\"text\":\"请购单\",\"url\":\"/bill/purchase_apply\",\"textEn\":\"Purchase Requisitions\"},{\"component\":\"/bill/PurchaseOrderList\",\"icon\":\"profile\",\"id\":241,\"text\":\"采购订单\",\"url\":\"/bill/purchase_order\",\"textEn\":\"Purchase Orders\"},{\"component\":\"/bill/PurchaseInList\",\"icon\":\"profile\",\"id\":33,\"text\":\"采购入库\",\"url\":\"/bill/purchase_in\",\"textEn\":\"Purchase Receipts\"},{\"component\":\"/bill/PurchaseBackList\",\"icon\":\"profile\",\"id\":199,\"text\":\"采购退货\",\"url\":\"/bill/purchase_back\",\"textEn\":\"Purchase Returns\"}],\"icon\":\"retweet\",\"id\":32,\"text\":\"采购管理\",\"url\":\"/bill\",\"textEn\":\"Purchase Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/production/PackBomList\",\"icon\":\"profile\",\"id\":263,\"text\":\"生产方案\",\"url\":\"/production/pack_bom\",\"textEn\":\"Production BOMs\"},{\"component\":\"/production/OrderList\",\"icon\":\"profile\",\"id\":264,\"text\":\"生产工单\",\"url\":\"/production/order\",\"textEn\":\"Production Orders\"},{\"component\":\"/production/RequisitionList\",\"icon\":\"profile\",\"id\":265,\"text\":\"领料管理\",\"url\":\"/production/requisition\",\"textEn\":\"Material Requisitions\"},{\"component\":\"/production/ReportList\",\"icon\":\"profile\",\"id\":266,\"text\":\"完工报工\",\"url\":\"/production/report\",\"textEn\":\"Production Reports\"}],\"icon\":\"cluster\",\"id\":262,\"text\":\"生产管理\",\"url\":\"/production\",\"textEn\":\"Production Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/MaterialStock\",\"icon\":\"profile\",\"id\":246,\"text\":\"商品库存\",\"url\":\"/report/material_stock\",\"textEn\":\"Product Inventory\"},{\"component\":\"/bill/OtherInList\",\"icon\":\"profile\",\"id\":201,\"text\":\"其它入库\",\"url\":\"/bill/other_in\",\"textEn\":\"Other Receipts\"},{\"component\":\"/bill/OtherOutList\",\"icon\":\"profile\",\"id\":202,\"text\":\"其它出库\",\"url\":\"/bill/other_out\",\"textEn\":\"Other Shipments\"},{\"component\":\"/bill/HeadquartersInList\",\"icon\":\"profile\",\"id\":270,\"text\":\"总部入库\",\"url\":\"/bill/headquarters_in\",\"textEn\":\"Headquarters Receipts\"}],\"icon\":\"hdd\",\"id\":239,\"text\":\"仓库管理\",\"url\":\"/billD\",\"textEn\":\"Warehouse Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/financial/MoneyInList\",\"icon\":\"profile\",\"id\":204,\"text\":\"收款单\",\"url\":\"/financial/money_in\",\"textEn\":\"Receipt Vouchers\"},{\"component\":\"/financial/MoneyOutList\",\"icon\":\"profile\",\"id\":205,\"text\":\"付款单\",\"url\":\"/financial/money_out\",\"textEn\":\"Payment Vouchers\"}],\"icon\":\"money-collect\",\"id\":44,\"text\":\"财务管理\",\"url\":\"/financial\",\"textEn\":\"Finance Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/asset/AssetDashboard\",\"icon\":\"dashboard\",\"id\":276,\"text\":\"资产汇总\",\"url\":\"/asset\",\"textEn\":\"Asset Overview\"},{\"component\":\"/asset/AssetList\",\"icon\":\"profile\",\"id\":273,\"text\":\"资产台账\",\"url\":\"/asset/ledger\",\"textEn\":\"Asset Ledger\"},{\"component\":\"/asset/DeviceList\",\"icon\":\"tool\",\"id\":274,\"text\":\"设备台账\",\"url\":\"/asset/device\",\"textEn\":\"Device Ledger\"},{\"component\":\"/asset/InventoryList\",\"icon\":\"scan\",\"id\":275,\"text\":\"资产盘点\",\"url\":\"/asset/inventory\",\"textEn\":\"Asset Inventory\"}],\"icon\":\"bank\",\"id\":272,\"text\":\"资产管理\",\"url\":\"/assetManagement\",\"textEn\":\"Asset Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/material/MaterialCategoryList\",\"icon\":\"profile\",\"id\":22,\"text\":\"商品类别\",\"url\":\"/material/material_category\",\"textEn\":\"Product Categories\"},{\"component\":\"/material/MaterialList\",\"icon\":\"profile\",\"id\":23,\"text\":\"商品信息\",\"url\":\"/material/material\",\"textEn\":\"Product Information\"},{\"component\":\"/system/UnitList\",\"icon\":\"profile\",\"id\":220,\"text\":\"多单位\",\"url\":\"/system/unit\",\"textEn\":\"Multiple Units\"},{\"component\":\"/material/MaterialAttributeList\",\"icon\":\"profile\",\"id\":247,\"text\":\"多属性\",\"url\":\"/material/material_attribute\",\"textEn\":\"Product Attributes\"}],\"icon\":\"shopping\",\"id\":21,\"text\":\"商品管理\",\"url\":\"/material\",\"textEn\":\"Product Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/AccountReport\",\"icon\":\"profile\",\"id\":207,\"text\":\"账户统计\",\"url\":\"/report/account_report\",\"textEn\":\"Account Summary\"},{\"component\":\"/report/RetailOutReport\",\"icon\":\"profile\",\"id\":259,\"text\":\"零售统计\",\"url\":\"/report/retail_out_report\",\"textEn\":\"Retail Summary\"},{\"component\":\"/report/BuyInReport\",\"icon\":\"profile\",\"id\":208,\"text\":\"采购统计\",\"url\":\"/report/buy_in_report\",\"textEn\":\"Purchase Summary\"},{\"component\":\"/report/SaleOutReport\",\"icon\":\"profile\",\"id\":209,\"text\":\"销售统计\",\"url\":\"/report/sale_out_report\",\"textEn\":\"Sales Summary\"},{\"component\":\"/report/InDetail\",\"icon\":\"profile\",\"id\":226,\"text\":\"入库明细\",\"url\":\"/report/in_detail\",\"textEn\":\"Inbound Details\"},{\"component\":\"/report/OutDetail\",\"icon\":\"profile\",\"id\":227,\"text\":\"出库明细\",\"url\":\"/report/out_detail\",\"textEn\":\"Outbound Details\"},{\"component\":\"/report/InMaterialCount\",\"icon\":\"profile\",\"id\":228,\"text\":\"入库汇总\",\"url\":\"/report/in_material_count\",\"textEn\":\"Inbound Summary\"},{\"component\":\"/report/OutMaterialCount\",\"icon\":\"profile\",\"id\":229,\"text\":\"出库汇总\",\"url\":\"/report/out_material_count\",\"textEn\":\"Outbound Summary\"},{\"component\":\"/report/InOutStockReport\",\"icon\":\"profile\",\"id\":59,\"text\":\"进销存统计\",\"url\":\"/report/in_out_stock_report\",\"textEn\":\"Inventory Transaction Summary\"},{\"component\":\"/report/CustomerAccount\",\"icon\":\"profile\",\"id\":235,\"text\":\"客户对账\",\"url\":\"/report/customer_account\",\"textEn\":\"Customer Reconciliation\"},{\"component\":\"/report/VendorAccount\",\"icon\":\"profile\",\"id\":237,\"text\":\"供应商对账\",\"url\":\"/report/vendor_account\",\"textEn\":\"Supplier Reconciliation\"},{\"component\":\"/report/StockWarningReport\",\"icon\":\"profile\",\"id\":244,\"text\":\"库存预警\",\"url\":\"/report/stock_warning_report\",\"textEn\":\"Stock Alerts\"}],\"icon\":\"pie-chart\",\"id\":198,\"text\":\"报表查询\",\"url\":\"/report\",\"textEn\":\"Reports\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/VendorList\",\"icon\":\"profile\",\"id\":25,\"text\":\"供应商信息\",\"url\":\"/system/vendor\",\"textEn\":\"Suppliers\"},{\"component\":\"/system/CustomerList\",\"icon\":\"profile\",\"id\":217,\"text\":\"客户信息\",\"url\":\"/system/customer\",\"textEn\":\"Customers\"},{\"component\":\"/system/MemberList\",\"icon\":\"profile\",\"id\":218,\"text\":\"会员信息\",\"url\":\"/system/member\",\"textEn\":\"Members\"},{\"component\":\"/system/CustomerCategoryList\",\"icon\":\"bars\",\"id\":267,\"text\":\"客户分类\",\"url\":\"/system/customerCategory\",\"textEn\":\"Customer Categories\"},{\"component\":\"/system/DepotList\",\"icon\":\"profile\",\"id\":26,\"text\":\"仓库信息\",\"url\":\"/system/depot\",\"textEn\":\"Warehouses\"},{\"component\":\"/system/InOutItemList\",\"icon\":\"profile\",\"id\":194,\"text\":\"收支项目\",\"url\":\"/system/in_out_item\",\"textEn\":\"Income and Expense Items\"},{\"component\":\"/system/AccountList\",\"icon\":\"profile\",\"id\":195,\"text\":\"结算账户\",\"url\":\"/system/account\",\"textEn\":\"Settlement Accounts\"},{\"component\":\"/system/PersonList\",\"icon\":\"profile\",\"id\":31,\"text\":\"操作人员管理\",\"url\":\"/system/person\",\"textEn\":\"Operators\"}],\"icon\":\"appstore\",\"id\":24,\"text\":\"基础资料\",\"url\":\"/systemA\",\"textEn\":\"Master Data\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/RoleList\",\"icon\":\"profile\",\"id\":13,\"text\":\"角色管理\",\"url\":\"/system/role\",\"textEn\":\"Role Management\"},{\"component\":\"/system/UserList\",\"icon\":\"profile\",\"id\":14,\"text\":\"用户管理\",\"url\":\"/system/user\",\"textEn\":\"User Management\"},{\"component\":\"/system/OrganizationList\",\"icon\":\"profile\",\"id\":243,\"text\":\"部门管理\",\"url\":\"/system/organization\",\"textEn\":\"Department Management\"},{\"component\":\"/system/LogList\",\"icon\":\"profile\",\"id\":15,\"text\":\"日志管理\",\"url\":\"/system/log\",\"textEn\":\"Log Management\"},{\"component\":\"/material/MaterialPropertyList\",\"icon\":\"profile\",\"id\":236,\"text\":\"商品属性\",\"url\":\"/material/material_property\",\"textEn\":\"Product Properties\"},{\"component\":\"/system/SystemConfigList\",\"icon\":\"profile\",\"id\":234,\"text\":\"系统配置\",\"url\":\"/system/system_config\",\"textEn\":\"System Configuration\"},{\"component\":\"/system/FunctionList\",\"icon\":\"profile\",\"id\":16,\"text\":\"菜单管理\",\"url\":\"/system/function\",\"textEn\":\"Resource Menus\"},{\"component\":\"/system/PluginList\",\"icon\":\"profile\",\"id\":245,\"text\":\"插件管理\",\"url\":\"/system/plugin\",\"textEn\":\"Plugin Management\"},{\"component\":\"/system/DictList\",\"icon\":\"profile\",\"id\":260,\"text\":\"字典管理\",\"url\":\"/system/dict\",\"textEn\":\"Dictionary Management\"},{\"component\":\"/system/PlatformConfigList\",\"icon\":\"profile\",\"id\":258,\"text\":\"平台配置\",\"url\":\"/system/platform_config\",\"textEn\":\"Platform Configuration\"}],\"icon\":\"setting\",\"id\":1,\"text\":\"系统管理\",\"url\":\"/system\",\"textEn\":\"System Management\"}]'); +INSERT INTO `tbl_log` VALUES (9986, 63, '接口日志', '43.174.53.30/1.9.116.218', '2026-10-09 06:40:57', 0, 'MaterialPropertyController.getAllList(..)', NULL, 'GET /apis/materialProperty/getAllList', '{}', '{\"code\":200,\"data\":[{\"anotherName\":\"扩展1\",\"id\":1,\"nativeName\":\"扩展1\"},{\"anotherName\":\"扩展2\",\"id\":2,\"nativeName\":\"扩展2\"},{\"anotherName\":\"扩展3\",\"id\":3,\"nativeName\":\"扩展3\"}]}'); +INSERT INTO `tbl_log` VALUES (9987, 63, '接口日志', '43.152.142.132/1.9.116.218', '2026-10-09 06:40:57', 0, 'UserController.getUserBtnByCurrentUser(..)', NULL, 'GET /apis/user/getUserBtnByCurrentUser', '{}', '{\"code\":200,\"data\":{\"userBtn\":[{\"btnStr\":\"8,1\",\"url\":\"/system/role\"},{\"btnStr\":\"1\",\"url\":\"/system/user\"},{\"btnStr\":\"1\",\"url\":\"/system/organization\"},{\"btnStr\":\"1\",\"url\":\"/material/material_property\"},{\"btnStr\":\"1\",\"url\":\"/system/system_config\"},{\"btnStr\":\"1\",\"url\":\"/system/function\"},{\"btnStr\":\"1\",\"url\":\"/system/plugin\"},{\"btnStr\":\"1\",\"url\":\"/material/material_category\"},{\"btnStr\":\"1,3\",\"url\":\"/material/material\"},{\"btnStr\":\"1\",\"url\":\"/system/unit\"},{\"btnStr\":\"1\",\"url\":\"/material/material_attribute\"},{\"btnStr\":\"1,3\",\"url\":\"/system/vendor\"},{\"btnStr\":\"1,3\",\"url\":\"/system/customer\"},{\"btnStr\":\"1,3\",\"url\":\"/system/member\"},{\"btnStr\":\"1\",\"url\":\"/system/depot\"},{\"btnStr\":\"1\",\"url\":\"/system/in_out_item\"},{\"btnStr\":\"1\",\"url\":\"/system/account\"},{\"btnStr\":\"1\",\"url\":\"/system/person\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_apply\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_out\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/delivery_plan\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/sale_shipment\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_out\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/order\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/requisition\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/report\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/giro\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/advance_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/allocation_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/assemble\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/headquarters_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/disassemble\"}]}}'); +INSERT INTO `tbl_log` VALUES (9988, 63, '接口日志', '43.152.142.132/1.9.116.218', '2026-10-09 06:40:57', 0, 'MsgController.getMsgByStatus(..)', NULL, 'GET /apis/msg/getMsgByStatus', '{\"status\":\"1\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (9989, 63, '接口日志', '43.152.142.43/1.9.116.218', '2026-10-09 06:40:57', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0},{\"month\":\"2026-10\",\"inbound\":0,\"ordered\":0,\"shipped\":0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (9990, 63, '接口日志', '43.174.54.14/1.9.116.218', '2026-10-09 06:40:57', 0, 'MsgController.getList(..)', NULL, 'GET /apis/msg/list', '{\"search\":\"{\\\"name\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (9991, 63, '接口日志', '43.174.53.14/1.9.116.218', '2026-10-09 06:48:45', 0, 'OrganizationController.getOrganizationTree(..)', NULL, 'GET /apis/organization/getOrganizationTree', '{}', '[{\"children\":[{\"children\":[{\"children\":[],\"checked\":false,\"attributes\":\"12\",\"id\":14,\"state\":\"open\",\"title\":\"部门2\",\"value\":14,\"key\":14}],\"checked\":false,\"attributes\":\"jg1\",\"id\":13,\"state\":\"open\",\"title\":\"部门1\",\"value\":13,\"key\":13}],\"checked\":false,\"attributes\":\"001\",\"id\":12,\"state\":\"open\",\"title\":\"测试部门\",\"value\":12,\"key\":12}]'); +INSERT INTO `tbl_log` VALUES (9992, 63, '接口日志', '43.174.54.50/1.9.116.218', '2026-10-09 06:48:47', 0, 'UserController.getList(..)', NULL, 'GET /apis/user/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"id\":149,\"isystem\":0,\"leaderFlag\":\"0\",\"leaderFlagStr\":\"否\",\"loginName\":\"admin2\",\"orgAbr\":\"部门1\",\"orgaId\":13,\"orgaUserRelId\":20,\"password\":\"******\",\"roleId\":23,\"roleName\":\"system admin\",\"status\":0,\"userType\":\"普通用户\",\"username\":\"admin2\"},{\"description\":\"\",\"email\":\"666666@qq.com\",\"id\":63,\"isystem\":1,\"leaderFlag\":\"0\",\"leaderFlagStr\":\"否\",\"loginName\":\"admin\",\"orgAbr\":\"测试部门\",\"orgaId\":12,\"orgaUserRelId\":11,\"password\":\"******\",\"phonenum\":\"1123123123132\",\"position\":\"主管\",\"roleId\":21,\"roleName\":\"admin\",\"status\":0,\"tenantId\":63,\"userBlngOrgaDsplSeq\":\"15\",\"userType\":\"系统管理员\",\"username\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (9993, 63, '接口日志', '43.174.53.14/1.9.116.218', '2026-10-09 06:48:47', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (9994, 63, '接口日志', '43.174.32.23/1.9.116.218', '2026-10-09 06:48:54', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (9995, 63, '接口日志', '43.174.53.30/1.9.116.218', '2026-10-09 06:48:54', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (9996, 63, '接口日志', '43.174.32.34/1.9.116.218', '2026-10-09 06:48:54', 0, 'DepotItemController.findDetailByDepotIdsAndMaterialId(..)', NULL, 'GET /apis/depotItem/findDetailByDepotIdsAndMaterialId', '{\"pageSize\":10,\"currentPage\":1,\"depotIds\":\"\",\"number\":\"\",\"beginTime\":\"\",\"endTime\":\"\",\"stockPriceFlag\":true}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9997, 63, '接口日志', '43.152.142.141/1.9.116.218', '2026-10-09 06:48:54', 0, 'MaterialController.getListWithStock(..)', NULL, 'GET /apis/material/getListWithStock', '{\"currentPage\":1,\"pageSize\":10,\"position\":\"\",\"materialParam\":\"\",\"zeroStock\":0,\"column\":\"createTime\",\"order\":\"desc\"}', '{\"code\":200,\"data\":{\"currentStockPrice\":107372523.170000000000,\"moveAvgPriceFlag\":false,\"total\":22,\"showStockPrice\":true,\"currentWeight\":0E-12,\"currentStock\":519203.000000,\"rows\":[{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"成品\",\"color\":\"\",\"currentStock\":7223.000000,\"currentStockMovePrice\":2293302.500000000000,\"currentStockPrice\":2293302.500000000000,\"currentUnitPrice\":317.500000,\"currentWeight\":0E-12,\"id\":704,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"3PH-APEC3-WC\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"3PH APEC3-WC\",\"name\":\"3PH APEC3-WC\",\"position\":\"\",\"purchaseDecimal\":317.500000,\"standard\":\"3PH APEC3-WC\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"成品\",\"color\":\"\",\"currentStock\":52400.000000,\"currentStockMovePrice\":3117800.000000000000,\"currentStockPrice\":3117800.000000000000,\"currentUnitPrice\":59.500000,\"currentWeight\":0E-12,\"id\":703,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"1PH-WS79\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"1PH WS79\",\"name\":\"1PH WS79\",\"position\":\"\",\"purchaseDecimal\":59.500000,\"standard\":\"1PH WS79\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":1000.000000,\"currentStockMovePrice\":24300.000000000000,\"currentStockPrice\":24300.000000000000,\"currentUnitPrice\":24.300000,\"currentWeight\":0E-12,\"id\":702,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00722\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-RS178(VA)\",\"name\":\"MD-RS178(VA) RS485分线器\",\"position\":\"\",\"purchaseDecimal\":24.300000,\"standard\":\"MD-RS178(VA)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":100.000000,\"currentStockMovePrice\":14256.000000000000,\"currentStockPrice\":14256.000000000000,\"currentUnitPrice\":142.560000,\"currentWeight\":0E-12,\"id\":701,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.0068900002\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-RS114(VB)\",\"name\":\"MD-RS114(VB) 基于RS485的MODBS TCPMODBS RTUASVII转换模块_(DZG)\",\"position\":\"\",\"purchaseDecimal\":142.560000,\"standard\":\"MD-RS114(VB)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":50.000000,\"currentStockMovePrice\":6642.000000000000,\"currentStockPrice\":6642.000000000000,\"currentUnitPrice\":132.840000,\"currentWeight\":0E-12,\"id\":700,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00686\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"TC160(VA)\",\"name\":\"TC160(VA) 通讯模块供电盒\",\"position\":\"\",\"purchaseDecimal\":132.840000,\"standard\":\"TC160(VA)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":76970.000000,\"currentStockMovePrice\":7697.000000000000,\"currentStockPrice\":7697.000000000000,\"currentUnitPrice\":0.100000,\"currentWeight\":0E-12,\"id\":699,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00654\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-4G111(VF)\",\"name\":\"MD-4G111(VF) 4G模块\",\"position\":\"\",\"purchaseDecimal\":0.100000,\"standard\":\"MD-4G111(VF)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":50.000000,\"currentStockMovePrice\":16200.000000000000,\"currentStockPrice\":16200.000000000000,\"currentUnitPrice\":324.000000,\"currentWeight\":0E-12,\"id\":698,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00562\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-4GVIII(VB)\",\"name\":\"MD-4GVIII(VB)\",\"position\":\"\",\"purchaseDecimal\":324.000000,\"standard\":\"MD-4GVIII(VB)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":500.000000,\"currentStockMovePrice\":64800.000000000000,\"currentStockPrice\":64800.000000000000,\"currentUnitPrice\":129.600000,\"currentWeight\":0E-12,\"id\":697,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00553\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MT-P109(VA)\",\"name\":\"MT-P109(VA)\",\"position\":\"\",\"purchaseDecimal\":129.600000,\"standard\":\"MT-P109(VA)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":54656.000000,\"currentStockMovePrice\":5465.600000000000,\"currentStockPrice\":5465.600000000000,\"currentUnitPrice\":0.100000,\"currentWeight\":0E-12,\"id\":696,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00547\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MT-3NSXL(VC)\",\"name\":\"MT-3NSXL(VC)RF通讯模块\",\"position\":\"\",\"purchaseDecimal\":0.100000,\"standard\":\"MT-3NSXL(VC)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":100.000000,\"currentStockMovePrice\":100375.200000000000,\"currentStockPrice\":100375.200000000000,\"currentUnitPrice\":1003.752000,\"currentWeight\":0E-12,\"id\":695,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00422\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-LR63(VB)\",\"name\":\"MD-LR63(VB)\",\"position\":\"\",\"purchaseDecimal\":1003.752000,\"standard\":\"MD-LR63(VB)\",\"unitName\":\"件\"}]}}'); +INSERT INTO `tbl_log` VALUES (9998, 63, '接口日志', '43.152.142.57/1.9.116.218', '2026-10-09 06:48:54', 0, 'DepotItemController.findDetailByDepotIdsAndMaterialId(..)', NULL, 'GET /apis/depotItem/findDetailByDepotIdsAndMaterialId', '{\"pageSize\":10,\"currentPage\":1,\"depotIds\":\"\",\"number\":\"\",\"beginTime\":\"\",\"endTime\":\"\",\"stockPriceFlag\":false}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (9999, 63, '接口日志', '43.152.142.132/1.9.116.218', '2026-10-09 06:49:08', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (10000, 63, '接口日志', '43.152.142.40/1.9.116.218', '2026-10-09 06:49:08', 0, 'ProductionOrderController.getList(..)', NULL, 'GET /apis/productionOrder/list', '{\"search\":\"{\\\"orderNumber\\\":\\\"\\\",\\\"sourceNumber\\\":\\\"\\\",\\\"productMaterialParam\\\":\\\"\\\",\\\"beginTime\\\":\\\"\\\",\\\"endTime\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"auditBy\":63,\"auditByName\":\"admin\",\"auditTime\":1789719775000,\"bomId\":18,\"bomName\":\"v1.0\",\"createTime\":1789719619000,\"creator\":63,\"creatorName\":\"admin\",\"deleteFlag\":\"0\",\"finishedQuantity\":0.000000,\"id\":11,\"orderNumber\":\"GD20260918122018493\",\"orderQuantity\":10000.000000,\"outputMaterialExtendId\":123,\"outputMaterialId\":703,\"outputMaterialName\":\"1PH WS79\",\"outputQuantity\":10000.000000,\"planEndDate\":1790280000000,\"planStartDate\":1789675200000,\"priority\":\"0\",\"productMaterialExtendId\":123,\"productMaterialId\":703,\"releaseBy\":63,\"releaseTime\":1789719775000,\"remark\":\"\",\"sourceId\":1719,\"sourceNumber\":\"XSDD00000001726\",\"sourceType\":\"销售订单\",\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (10001, 63, '接口日志', '43.152.142.32/1.9.116.218', '2026-10-09 06:49:09', 0, 'PackBomController.getList(..)', NULL, 'GET /apis/packBom/list', '{\"search\":\"{\\\"bomNumber\\\":\\\"\\\",\\\"bomName\\\":\\\"\\\",\\\"productMaterialParam\\\":\\\"\\\",\\\"outputMaterialParam\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"bomName\":\"v1.0\",\"bomNumber\":\"BOM00000001735\",\"createTime\":1789719259000,\"creator\":63,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"itemCount\":1,\"outputMaterialExtendId\":123,\"outputMaterialId\":703,\"outputMaterialName\":\"1PH WS79\",\"outputNumber\":1.000000,\"productMaterialExtendId\":123,\"productMaterialId\":703,\"version\":\"v1.0\"}]}}'); +INSERT INTO `tbl_log` VALUES (10002, 63, '接口日志', '43.152.142.64/1.9.116.218', '2026-10-09 06:49:25', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (10003, 63, '接口日志', '43.152.142.86/1.9.116.218', '2026-10-09 06:49:25', 0, 'ProductionRequisitionController.getList(..)', NULL, 'GET /apis/productionRequisition/list', '{\"search\":\"{\\\"requisitionNumber\\\":\\\"\\\",\\\"orderNumber\\\":\\\"\\\",\\\"beginTime\\\":\\\"\\\",\\\"endTime\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"confirmBy\":63,\"confirmByName\":\"admin\",\"confirmTime\":1790242827000,\"createTime\":1789720317000,\"creator\":63,\"creatorName\":\"admin\",\"deleteFlag\":\"0\",\"depotId\":25,\"depotName\":\"半成品仓库\",\"id\":9,\"itemCount\":1,\"materialsList\":\"MD-4G111(VF) 包装\",\"orderId\":11,\"orderNumber\":\"GD20260918122018493\",\"requisitionNumber\":\"LL20260918123156921\",\"status\":\"1\"},{\"createTime\":1789719809000,\"creator\":63,\"creatorName\":\"admin\",\"deleteFlag\":\"0\",\"depotId\":25,\"depotName\":\"半成品仓库\",\"id\":8,\"itemCount\":1,\"materialsList\":\"MD-4G111(VF) 包装\",\"orderId\":11,\"orderNumber\":\"GD20260918122018493\",\"remark\":\"11\",\"requisitionNumber\":\"LL20260918122329111\",\"status\":\"2\"}]}}'); +INSERT INTO `tbl_log` VALUES (10004, 63, '接口日志', '43.152.142.29/1.9.116.218', '2026-10-09 06:49:25', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (10005, 63, '接口日志', '43.152.142.139/1.9.116.218', '2026-10-09 06:49:37', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0},{\"month\":\"2026-10\",\"inbound\":0,\"ordered\":0,\"shipped\":0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (10006, NULL, '接口日志', '43.174.53.17/1.9.116.218', '2026-10-09 08:17:23', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (10007, NULL, '接口日志', '43.174.32.13/1.9.116.218', '2026-10-09 08:17:23', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (10008, 63, '接口日志', '43.152.157.121/1.9.116.218', '2026-10-09 08:17:24', 0, 'FunctionController.findMenuByPNumber(..)', NULL, 'POST /apis/function/findMenuByPNumber', '{\"jsonObject\":{\"userId\":63,\"pNumber\":0}}', '[{\"component\":\"/layouts/TabLayout\",\"icon\":\"home\",\"id\":0,\"text\":\"首页\",\"url\":\"/dashboard/analysis\",\"textEn\":\"Home\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/SaleOrderList\",\"icon\":\"profile\",\"id\":242,\"text\":\"销售订单\",\"url\":\"/bill/sale_order\",\"textEn\":\"Sales Orders\"},{\"component\":\"/bill/SaleOutList\",\"icon\":\"profile\",\"id\":41,\"text\":\"销售出库\",\"url\":\"/bill/sale_out\",\"textEn\":\"Sales Shipments\"},{\"component\":\"/bill/DeliveryPlanList\",\"icon\":\"profile\",\"id\":271,\"text\":\"交货计划管理\",\"url\":\"/bill/delivery_plan\",\"textEn\":\"Delivery Plans\"},{\"component\":\"/bill/SaleShipmentList\",\"icon\":\"car\",\"id\":268,\"text\":\"发货管理\",\"url\":\"/bill/sale_shipment\",\"textEn\":\"Shipment Management\"},{\"component\":\"/bill/SaleBackList\",\"icon\":\"profile\",\"id\":200,\"text\":\"销售退货\",\"url\":\"/bill/sale_back\",\"textEn\":\"Sales Returns\"},{\"component\":\"/bill/RetailOutList\",\"icon\":\"profile\",\"id\":210,\"text\":\"零售出库\",\"url\":\"/bill/retail_out\",\"textEn\":\"Retail Shipments\"},{\"component\":\"/bill/RetailBackList\",\"icon\":\"profile\",\"id\":211,\"text\":\"零售退货\",\"url\":\"/bill/retail_back\",\"textEn\":\"Retail Returns\"}],\"icon\":\"shopping-cart\",\"id\":38,\"text\":\"销售管理\",\"url\":\"/billB\",\"textEn\":\"Sales Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/PurchaseApplyList\",\"icon\":\"profile\",\"id\":261,\"text\":\"请购单\",\"url\":\"/bill/purchase_apply\",\"textEn\":\"Purchase Requisitions\"},{\"component\":\"/bill/PurchaseOrderList\",\"icon\":\"profile\",\"id\":241,\"text\":\"采购订单\",\"url\":\"/bill/purchase_order\",\"textEn\":\"Purchase Orders\"},{\"component\":\"/bill/PurchaseInList\",\"icon\":\"profile\",\"id\":33,\"text\":\"采购入库\",\"url\":\"/bill/purchase_in\",\"textEn\":\"Purchase Receipts\"},{\"component\":\"/bill/PurchaseBackList\",\"icon\":\"profile\",\"id\":199,\"text\":\"采购退货\",\"url\":\"/bill/purchase_back\",\"textEn\":\"Purchase Returns\"}],\"icon\":\"retweet\",\"id\":32,\"text\":\"采购管理\",\"url\":\"/bill\",\"textEn\":\"Purchase Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/production/PackBomList\",\"icon\":\"profile\",\"id\":263,\"text\":\"生产方案\",\"url\":\"/production/pack_bom\",\"textEn\":\"Production BOMs\"},{\"component\":\"/production/OrderList\",\"icon\":\"profile\",\"id\":264,\"text\":\"生产工单\",\"url\":\"/production/order\",\"textEn\":\"Production Orders\"},{\"component\":\"/production/RequisitionList\",\"icon\":\"profile\",\"id\":265,\"text\":\"领料管理\",\"url\":\"/production/requisition\",\"textEn\":\"Material Requisitions\"},{\"component\":\"/production/ReportList\",\"icon\":\"profile\",\"id\":266,\"text\":\"完工报工\",\"url\":\"/production/report\",\"textEn\":\"Production Reports\"}],\"icon\":\"cluster\",\"id\":262,\"text\":\"生产管理\",\"url\":\"/production\",\"textEn\":\"Production Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/MaterialStock\",\"icon\":\"profile\",\"id\":246,\"text\":\"商品库存\",\"url\":\"/report/material_stock\",\"textEn\":\"Product Inventory\"},{\"component\":\"/bill/OtherInList\",\"icon\":\"profile\",\"id\":201,\"text\":\"其它入库\",\"url\":\"/bill/other_in\",\"textEn\":\"Other Receipts\"},{\"component\":\"/bill/OtherOutList\",\"icon\":\"profile\",\"id\":202,\"text\":\"其它出库\",\"url\":\"/bill/other_out\",\"textEn\":\"Other Shipments\"},{\"component\":\"/bill/HeadquartersInList\",\"icon\":\"profile\",\"id\":270,\"text\":\"总部入库\",\"url\":\"/bill/headquarters_in\",\"textEn\":\"Headquarters Receipts\"}],\"icon\":\"hdd\",\"id\":239,\"text\":\"仓库管理\",\"url\":\"/billD\",\"textEn\":\"Warehouse Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/financial/MoneyInList\",\"icon\":\"profile\",\"id\":204,\"text\":\"收款单\",\"url\":\"/financial/money_in\",\"textEn\":\"Receipt Vouchers\"},{\"component\":\"/financial/MoneyOutList\",\"icon\":\"profile\",\"id\":205,\"text\":\"付款单\",\"url\":\"/financial/money_out\",\"textEn\":\"Payment Vouchers\"}],\"icon\":\"money-collect\",\"id\":44,\"text\":\"财务管理\",\"url\":\"/financial\",\"textEn\":\"Finance Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/asset/AssetDashboard\",\"icon\":\"dashboard\",\"id\":276,\"text\":\"资产汇总\",\"url\":\"/asset\",\"textEn\":\"Asset Overview\"},{\"component\":\"/asset/AssetList\",\"icon\":\"profile\",\"id\":273,\"text\":\"资产台账\",\"url\":\"/asset/ledger\",\"textEn\":\"Asset Ledger\"},{\"component\":\"/asset/DeviceList\",\"icon\":\"tool\",\"id\":274,\"text\":\"设备台账\",\"url\":\"/asset/device\",\"textEn\":\"Device Ledger\"},{\"component\":\"/asset/InventoryList\",\"icon\":\"scan\",\"id\":275,\"text\":\"资产盘点\",\"url\":\"/asset/inventory\",\"textEn\":\"Asset Inventory\"}],\"icon\":\"bank\",\"id\":272,\"text\":\"资产管理\",\"url\":\"/assetManagement\",\"textEn\":\"Asset Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/material/MaterialCategoryList\",\"icon\":\"profile\",\"id\":22,\"text\":\"商品类别\",\"url\":\"/material/material_category\",\"textEn\":\"Product Categories\"},{\"component\":\"/material/MaterialList\",\"icon\":\"profile\",\"id\":23,\"text\":\"商品信息\",\"url\":\"/material/material\",\"textEn\":\"Product Information\"},{\"component\":\"/system/UnitList\",\"icon\":\"profile\",\"id\":220,\"text\":\"多单位\",\"url\":\"/system/unit\",\"textEn\":\"Multiple Units\"},{\"component\":\"/material/MaterialAttributeList\",\"icon\":\"profile\",\"id\":247,\"text\":\"多属性\",\"url\":\"/material/material_attribute\",\"textEn\":\"Product Attributes\"}],\"icon\":\"shopping\",\"id\":21,\"text\":\"商品管理\",\"url\":\"/material\",\"textEn\":\"Product Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/AccountReport\",\"icon\":\"profile\",\"id\":207,\"text\":\"账户统计\",\"url\":\"/report/account_report\",\"textEn\":\"Account Summary\"},{\"component\":\"/report/RetailOutReport\",\"icon\":\"profile\",\"id\":259,\"text\":\"零售统计\",\"url\":\"/report/retail_out_report\",\"textEn\":\"Retail Summary\"},{\"component\":\"/report/BuyInReport\",\"icon\":\"profile\",\"id\":208,\"text\":\"采购统计\",\"url\":\"/report/buy_in_report\",\"textEn\":\"Purchase Summary\"},{\"component\":\"/report/SaleOutReport\",\"icon\":\"profile\",\"id\":209,\"text\":\"销售统计\",\"url\":\"/report/sale_out_report\",\"textEn\":\"Sales Summary\"},{\"component\":\"/report/InDetail\",\"icon\":\"profile\",\"id\":226,\"text\":\"入库明细\",\"url\":\"/report/in_detail\",\"textEn\":\"Inbound Details\"},{\"component\":\"/report/OutDetail\",\"icon\":\"profile\",\"id\":227,\"text\":\"出库明细\",\"url\":\"/report/out_detail\",\"textEn\":\"Outbound Details\"},{\"component\":\"/report/InMaterialCount\",\"icon\":\"profile\",\"id\":228,\"text\":\"入库汇总\",\"url\":\"/report/in_material_count\",\"textEn\":\"Inbound Summary\"},{\"component\":\"/report/OutMaterialCount\",\"icon\":\"profile\",\"id\":229,\"text\":\"出库汇总\",\"url\":\"/report/out_material_count\",\"textEn\":\"Outbound Summary\"},{\"component\":\"/report/InOutStockReport\",\"icon\":\"profile\",\"id\":59,\"text\":\"进销存统计\",\"url\":\"/report/in_out_stock_report\",\"textEn\":\"Inventory Transaction Summary\"},{\"component\":\"/report/CustomerAccount\",\"icon\":\"profile\",\"id\":235,\"text\":\"客户对账\",\"url\":\"/report/customer_account\",\"textEn\":\"Customer Reconciliation\"},{\"component\":\"/report/VendorAccount\",\"icon\":\"profile\",\"id\":237,\"text\":\"供应商对账\",\"url\":\"/report/vendor_account\",\"textEn\":\"Supplier Reconciliation\"},{\"component\":\"/report/StockWarningReport\",\"icon\":\"profile\",\"id\":244,\"text\":\"库存预警\",\"url\":\"/report/stock_warning_report\",\"textEn\":\"Stock Alerts\"}],\"icon\":\"pie-chart\",\"id\":198,\"text\":\"报表查询\",\"url\":\"/report\",\"textEn\":\"Reports\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/VendorList\",\"icon\":\"profile\",\"id\":25,\"text\":\"供应商信息\",\"url\":\"/system/vendor\",\"textEn\":\"Suppliers\"},{\"component\":\"/system/CustomerList\",\"icon\":\"profile\",\"id\":217,\"text\":\"客户信息\",\"url\":\"/system/customer\",\"textEn\":\"Customers\"},{\"component\":\"/system/MemberList\",\"icon\":\"profile\",\"id\":218,\"text\":\"会员信息\",\"url\":\"/system/member\",\"textEn\":\"Members\"},{\"component\":\"/system/CustomerCategoryList\",\"icon\":\"bars\",\"id\":267,\"text\":\"客户分类\",\"url\":\"/system/customerCategory\",\"textEn\":\"Customer Categories\"},{\"component\":\"/system/DepotList\",\"icon\":\"profile\",\"id\":26,\"text\":\"仓库信息\",\"url\":\"/system/depot\",\"textEn\":\"Warehouses\"},{\"component\":\"/system/InOutItemList\",\"icon\":\"profile\",\"id\":194,\"text\":\"收支项目\",\"url\":\"/system/in_out_item\",\"textEn\":\"Income and Expense Items\"},{\"component\":\"/system/AccountList\",\"icon\":\"profile\",\"id\":195,\"text\":\"结算账户\",\"url\":\"/system/account\",\"textEn\":\"Settlement Accounts\"},{\"component\":\"/system/PersonList\",\"icon\":\"profile\",\"id\":31,\"text\":\"操作人员管理\",\"url\":\"/system/person\",\"textEn\":\"Operators\"}],\"icon\":\"appstore\",\"id\":24,\"text\":\"基础资料\",\"url\":\"/systemA\",\"textEn\":\"Master Data\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/RoleList\",\"icon\":\"profile\",\"id\":13,\"text\":\"角色管理\",\"url\":\"/system/role\",\"textEn\":\"Role Management\"},{\"component\":\"/system/UserList\",\"icon\":\"profile\",\"id\":14,\"text\":\"用户管理\",\"url\":\"/system/user\",\"textEn\":\"User Management\"},{\"component\":\"/system/OrganizationList\",\"icon\":\"profile\",\"id\":243,\"text\":\"部门管理\",\"url\":\"/system/organization\",\"textEn\":\"Department Management\"},{\"component\":\"/system/LogList\",\"icon\":\"profile\",\"id\":15,\"text\":\"日志管理\",\"url\":\"/system/log\",\"textEn\":\"Log Management\"},{\"component\":\"/material/MaterialPropertyList\",\"icon\":\"profile\",\"id\":236,\"text\":\"商品属性\",\"url\":\"/material/material_property\",\"textEn\":\"Product Properties\"},{\"component\":\"/system/SystemConfigList\",\"icon\":\"profile\",\"id\":234,\"text\":\"系统配置\",\"url\":\"/system/system_config\",\"textEn\":\"System Configuration\"},{\"component\":\"/system/FunctionList\",\"icon\":\"profile\",\"id\":16,\"text\":\"菜单管理\",\"url\":\"/system/function\",\"textEn\":\"Resource Menus\"},{\"component\":\"/system/PluginList\",\"icon\":\"profile\",\"id\":245,\"text\":\"插件管理\",\"url\":\"/system/plugin\",\"textEn\":\"Plugin Management\"},{\"component\":\"/system/DictList\",\"icon\":\"profile\",\"id\":260,\"text\":\"字典管理\",\"url\":\"/system/dict\",\"textEn\":\"Dictionary Management\"},{\"component\":\"/system/PlatformConfigList\",\"icon\":\"profile\",\"id\":258,\"text\":\"平台配置\",\"url\":\"/system/platform_config\",\"textEn\":\"Platform Configuration\"}],\"icon\":\"setting\",\"id\":1,\"text\":\"系统管理\",\"url\":\"/system\",\"textEn\":\"System Management\"}]'); +INSERT INTO `tbl_log` VALUES (10009, 63, '接口日志', '43.152.142.43/1.9.116.218', '2026-10-09 08:17:24', 0, 'UserController.getUserBtnByCurrentUser(..)', NULL, 'GET /apis/user/getUserBtnByCurrentUser', '{}', '{\"code\":200,\"data\":{\"userBtn\":[{\"btnStr\":\"8,1\",\"url\":\"/system/role\"},{\"btnStr\":\"1\",\"url\":\"/system/user\"},{\"btnStr\":\"1\",\"url\":\"/system/organization\"},{\"btnStr\":\"1\",\"url\":\"/material/material_property\"},{\"btnStr\":\"1\",\"url\":\"/system/system_config\"},{\"btnStr\":\"1\",\"url\":\"/system/function\"},{\"btnStr\":\"1\",\"url\":\"/system/plugin\"},{\"btnStr\":\"1\",\"url\":\"/material/material_category\"},{\"btnStr\":\"1,3\",\"url\":\"/material/material\"},{\"btnStr\":\"1\",\"url\":\"/system/unit\"},{\"btnStr\":\"1\",\"url\":\"/material/material_attribute\"},{\"btnStr\":\"1,3\",\"url\":\"/system/vendor\"},{\"btnStr\":\"1,3\",\"url\":\"/system/customer\"},{\"btnStr\":\"1,3\",\"url\":\"/system/member\"},{\"btnStr\":\"1\",\"url\":\"/system/depot\"},{\"btnStr\":\"1\",\"url\":\"/system/in_out_item\"},{\"btnStr\":\"1\",\"url\":\"/system/account\"},{\"btnStr\":\"1\",\"url\":\"/system/person\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_apply\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_out\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/delivery_plan\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/sale_shipment\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_out\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/order\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/requisition\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/report\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/giro\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/advance_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/allocation_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/assemble\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/headquarters_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/disassemble\"}]}}'); +INSERT INTO `tbl_log` VALUES (10010, 63, '接口日志', '43.152.142.78/1.9.116.218', '2026-10-09 08:17:24', 0, 'MsgController.getMsgByStatus(..)', NULL, 'GET /apis/msg/getMsgByStatus', '{\"status\":\"1\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (10011, 63, '接口日志', '43.174.32.18/1.9.116.218', '2026-10-09 08:17:24', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0},{\"month\":\"2026-10\",\"inbound\":0,\"ordered\":0,\"shipped\":0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (10012, 63, '接口日志', '43.152.142.109/1.9.116.218', '2026-10-09 08:17:24', 0, 'MsgController.getList(..)', NULL, 'GET /apis/msg/list', '{\"search\":\"{\\\"name\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (10013, 63, '接口日志', '43.174.52.68/1.9.116.218', '2026-10-09 08:18:04', 0, 'RoleController.getList(..)', NULL, 'GET /apis/role/list', '{\"search\":\"{\\\"name\\\":\\\"\\\",\\\"description\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":7,\"rows\":[{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":24,\"name\":\"system admin\",\"type\":\"全部数据\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":23,\"name\":\"system admin\",\"type\":\"全部数据\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":21,\"name\":\"admin\",\"tenantId\":63,\"type\":\"全部数据\"},{\"deleteFlag\":\"0\",\"description\":\"rrr\",\"enabled\":true,\"id\":17,\"name\":\"销售代表\",\"tenantId\":63,\"type\":\"个人数据\"},{\"deleteFlag\":\"0\",\"description\":\"ddd\",\"enabled\":true,\"id\":16,\"name\":\"销售经理\",\"tenantId\":63,\"type\":\"全部数据\"},{\"deleteFlag\":\"0\",\"description\":\"\",\"enabled\":true,\"id\":10,\"name\":\"租户\",\"type\":\"全部数据\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":4,\"name\":\"管理员\",\"type\":\"全部数据\"}]}}'); +INSERT INTO `tbl_log` VALUES (10014, 63, '接口日志', '43.174.54.50/1.9.116.218', '2026-10-09 08:18:17', 0, 'AccountController.listWithBalance(..)', NULL, 'GET /apis/account/listWithBalance', '{\"name\":\"\",\"serialNo\":\"\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63,\"thisMonthAmount\":\"0\"},{\"currentAmount\":4375618.532800,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63,\"thisMonthAmount\":\"0\"}]}}'); +INSERT INTO `tbl_log` VALUES (10015, 63, '接口日志', '43.152.142.105/1.9.116.218', '2026-10-09 08:18:17', 0, 'AccountController.getStatistics(..)', NULL, 'GET /apis/account/getStatistics', '{\"name\":\"\",\"serialNo\":\"\"}', '{\"code\":200,\"data\":{\"allCurrentAmount\":\"4375818.53\",\"allMonthAmount\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (10016, 63, '接口日志', '43.152.157.121/1.9.116.218', '2026-10-09 08:18:22', 0, 'SupplierController.findBySelectSup(..)', NULL, 'POST /apis/supplier/findBySelect_sup', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司\",\"id\":89}]'); +INSERT INTO `tbl_log` VALUES (10017, 63, '接口日志', '43.152.142.141/1.9.116.218', '2026-10-09 08:18:22', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (10018, 63, '接口日志', '43.174.32.34/1.9.116.218', '2026-10-09 08:18:22', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (10019, 63, '接口日志', '43.174.53.14/1.9.116.218', '2026-10-09 08:18:22', 0, 'DepotItemController.buyIn(..)', NULL, 'GET /apis/depotItem/buyIn', '{\"currentPage\":1,\"pageSize\":10,\"beginTime\":\"2026-07-09\",\"endTime\":\"2026-10-09\",\"materialParam\":\"\",\"mpList\":\"扩展1,扩展2,扩展3\"}', '{\"code\":200,\"data\":{\"total\":2,\"realityPriceTotal\":100000.700000,\"rows\":[{\"materialModel\":\"MD-4G111(VF)\",\"materialStandard\":\"MD-4G111(VF) packing\",\"materialUnit\":\"件\",\"outSum\":0.000000,\"barCode\":\"1001\",\"materialName\":\"MD-4G111(VF) 包装\",\"inOutSumPrice\":100000.000000,\"outSumPrice\":0.000000,\"inSum\":10000.000000,\"inSumPrice\":100000.000000},{\"otherField1\":\"\",\"materialMfrs\":\"浙江瑞银电子有限公司\",\"materialModel\":\"MD-4G111(VF)\",\"materialStandard\":\"MD-4G111(VF)\",\"materialColor\":\"\",\"materialBrand\":\"\",\"otherField3\":\"\",\"otherField2\":\"\",\"materialUnit\":\"件\",\"outSum\":0.000000,\"barCode\":\"C.4.T.0.00654\",\"materialName\":\"MD-4G111(VF) 4G模块\",\"inOutSumPrice\":0.700000,\"outSumPrice\":0.000000,\"inSum\":7.000000,\"inSumPrice\":0.700000}]}}'); +INSERT INTO `tbl_log` VALUES (10020, 63, '接口日志', '43.174.32.23/1.9.116.218', '2026-10-09 08:18:23', 0, 'OrganizationController.getAllOrganizationTreeByUser(..)', NULL, 'GET /apis/organization/getAllOrganizationTreeByUser', '{}', '[{\"children\":[{\"children\":[{\"children\":[],\"checked\":false,\"attributes\":\"12\",\"id\":14,\"state\":\"open\",\"title\":\"部门2\",\"value\":14,\"key\":14}],\"checked\":false,\"attributes\":\"jg1\",\"id\":13,\"state\":\"open\",\"title\":\"部门1\",\"value\":13,\"key\":13}],\"checked\":false,\"attributes\":\"001\",\"id\":12,\"state\":\"open\",\"title\":\"测试部门\",\"value\":12,\"key\":12}]'); +INSERT INTO `tbl_log` VALUES (10021, 63, '接口日志', '43.152.157.121/1.9.116.218', '2026-10-09 08:18:30', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (10022, 63, '接口日志', '43.174.53.30/1.9.116.218', '2026-10-09 08:18:30', 0, 'OrganizationController.getAllOrganizationTreeByUser(..)', NULL, 'GET /apis/organization/getAllOrganizationTreeByUser', '{}', '[{\"children\":[{\"children\":[{\"children\":[],\"checked\":false,\"attributes\":\"12\",\"id\":14,\"state\":\"open\",\"title\":\"部门2\",\"value\":14,\"key\":14}],\"checked\":false,\"attributes\":\"jg1\",\"id\":13,\"state\":\"open\",\"title\":\"部门1\",\"value\":13,\"key\":13}],\"checked\":false,\"attributes\":\"001\",\"id\":12,\"state\":\"open\",\"title\":\"测试部门\",\"value\":12,\"key\":12}]'); +INSERT INTO `tbl_log` VALUES (10023, 63, '接口日志', '43.152.142.40/1.9.116.218', '2026-10-09 08:18:30', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (10024, 63, '接口日志', '43.152.142.57/1.9.116.218', '2026-10-09 08:18:30', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (10025, 63, '接口日志', '43.152.142.132/1.9.116.218', '2026-10-09 08:18:30', 0, 'DepotItemController.saleOut(..)', NULL, 'GET /apis/depotItem/saleOut', '{\"currentPage\":1,\"pageSize\":10,\"beginTime\":\"2026-07-09\",\"endTime\":\"2026-10-09\",\"materialParam\":\"\",\"mpList\":\"扩展1,扩展2,扩展3\"}', '{\"code\":200,\"data\":{\"total\":1,\"realityPriceTotal\":2940000.000000,\"rows\":[{\"outInSumPrice\":2940000.000000,\"otherField1\":\"\",\"materialMfrs\":\"浙江瑞银电子有限公司\",\"materialModel\":\"1PH WS79\",\"materialStandard\":\"1PH WS79\",\"materialColor\":\"\",\"materialBrand\":\"\",\"otherField3\":\"\",\"otherField2\":\"\",\"materialUnit\":\"件\",\"outSum\":40000.000000,\"barCode\":\"1PH-WS79\",\"materialName\":\"1PH WS79\",\"outSumPrice\":2940000.000000,\"inSum\":0.000000,\"inSumPrice\":0.000000}]}}'); +INSERT INTO `tbl_log` VALUES (10026, 63, '接口日志', '43.174.53.30/1.9.116.218', '2026-10-09 08:18:32', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (10027, 63, '接口日志', '43.152.157.121/1.9.116.218', '2026-10-09 08:18:32', 0, 'SupplierController.findBySelectOrgan(..)', NULL, 'POST /apis/supplier/findBySelect_organ', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司[供应商]\",\"id\":89},{\"supplier\":\"TNB[客户]\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (10028, 63, '接口日志', '43.152.142.141/1.9.116.218', '2026-10-09 08:18:32', 0, 'DepotHeadController.findInOutDetail(..)', NULL, 'GET /apis/depotHead/findInOutDetail', '{\"currentPage\":1,\"pageSize\":10,\"number\":\"\",\"materialParam\":\"\",\"beginTime\":\"2026-07-09\",\"endTime\":\"2026-10-09\",\"type\":\"入库\",\"remark\":\"\",\"column\":\"createTime\",\"order\":\"desc\"}', '{\"code\":200,\"data\":{\"total\":35,\"operNumberTotal\":102117.000000,\"rows\":[{\"allPrice\":100000.000000,\"barCode\":\"1001\",\"dname\":\"半成品仓库\",\"mUnit\":\"件\",\"mname\":\"MD-4G111(VF) 包装\",\"model\":\"MD-4G111(VF)\",\"newRemark\":\"\",\"newType\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operNumber\":10000.000000,\"operTime\":\"2026-09-18\",\"sname\":\"浙江瑞银电子有限公司\",\"standard\":\"MD-4G111(VF) packing\",\"taxLastMoney\":100000.000000,\"taxMoney\":0.000000,\"taxRate\":0.000000,\"unitPrice\":10.000000},{\"allPrice\":595000.000000,\"barCode\":\"1PH-WS79\",\"brand\":\"\",\"color\":\"\",\"dname\":\"半成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"1PH WS79\",\"model\":\"1PH WS79\",\"newRemark\":\"\",\"newType\":\"总部入库入库\",\"number\":\"SM2609180001\",\"operNumber\":10000.000000,\"operTime\":\"2026-09-18\",\"sname\":\"浙江瑞银电子有限公司\",\"standard\":\"1PH WS79\",\"taxLastMoney\":595000.000000,\"taxMoney\":0.000000,\"taxRate\":0.000000,\"unitPrice\":59.500000},{\"allPrice\":0.700000,\"barCode\":\"C.4.T.0.00654\",\"brand\":\"\",\"color\":\"\",\"dname\":\"半成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"MD-4G111(VF) 4G模块\",\"model\":\"MD-4G111(VF)\",\"newRemark\":\"\",\"newType\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operNumber\":7.000000,\"operTime\":\"2026-09-18\",\"sname\":\"浙江瑞银电子有限公司\",\"standard\":\"MD-4G111(VF)\",\"taxLastMoney\":0.700000,\"taxMoney\":0.000000,\"taxRate\":0.000000,\"unitPrice\":0.100000},{\"allPrice\":183.600000,\"barCode\":\"C.4.T.0.00547\",\"brand\":\"\",\"color\":\"\",\"dname\":\"半成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"MT-3NSXL(VC)RF通讯模块\",\"model\":\"MT-3NSXL(VC)\",\"newRemark\":\"SMT出库单详情初始化;已审核;价税合计计入应付 来源单据:SH2608060003\",\"newType\":\"总部入库入库\",\"number\":\"SM2608070007\",\"operNumber\":1836.000000,\"operTime\":\"2026-08-07\",\"sname\":\"浙江瑞银电子有限公司\",\"standard\":\"MT-3NSXL(VC)\",\"taxLastMoney\":183.600000,\"taxMoney\":0.000000,\"taxRate\":0.000000,\"unitPrice\":0.100000},{\"allPrice\":2077650.000000,\"barCode\":\"C.1.T.0.00032\",\"brand\":\"\",\"color\":\"\",\"dname\":\"半成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"单相多功能电能表T49(VB)\",\"model\":\"DDSD1226-T49(VB)\",\"newRemark\":\"SMT出库单详情初始化;已审核;价税合计计入应付 来源单据:SH2608060001\",\"newType\":\"总部入库入库\",\"number\":\"SM2608070002\",\"operNumber\":9500.000000,\"operTime\":\"2026-08-07\",\"sname\":\"浙江瑞银电子有限公司\",\"standard\":\"DDSD1226-T49(VB)\",\"taxLastMoney\":2077650.000000,\"taxMoney\":0.000000,\"taxRate\":0.000000,\"unitPrice\":218.700000},{\"allPrice\":91854.000000,\"barCode\":\"C.1.T.0.00032\",\"brand\":\"\",\"color\":\"\",\"dname\":\"半成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"单相多功能电能表T49(VB)\",\"model\":\"DDSD1226-T49(VB)\",\"newRemark\":\"SMT出库单详情初始化;已审核;价税合计计入应付 来源单据:SH2608060001\",\"newType\":\"总部入库入库\",\"number\":\"SM2608060005\",\"operNumber\":420.000000,\"operTime\":\"2026-08-06\",\"sname\":\"浙江瑞银电子有限公司\",\"standard\":\"DDSD1226-T49(VB)\",\"taxLastMoney\":91854.000000,\"taxMoney\":0.000000,\"taxRate\":0.000000,\"unitPrice\":218.700000},{\"allPrice\":816.000000,\"barCode\":\"C.4.T.0.00547\",\"brand\":\"\",\"color\":\"\",\"dname\":\"半成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"MT-3NSXL(VC)RF通讯模块\",\"model\":\"MT-3NSXL(VC)\",\"newRemark\":\"SMT出库单详情初始化;已审核;价税合计计入应付 来源单据:SH2608060003\",\"newType\":\"总部入库入库\",\"number\":\"SM2608060004\",\"operNumber\":8160.000000,\"operTime\":\"2026-08-06\",\"sname\":\"浙江瑞银电子有限公司\",\"standard\":\"MT-3NSXL(VC)\",\"taxLastMoney\":816.000000,\"taxMoney\":0.000000,\"taxRate\":0.000000,\"unitPrice\":0.100000},{\"allPrice\":91854.000000,\"barCode\":\"C.1.T.0.00032\",\"brand\":\"\",\"color\":\"\",\"dname\":\"半成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"单相多功能电能表T49(VB)\",\"model\":\"DDSD1226-T49(VB)\",\"newRemark\":\"SMT出库单详情初始化;已审核;价税合计计入应付 来源单据:SH2607220001\",\"newType\":\"总部入库入库\",\"number\":\"SM2607240005\",\"operNumber\":420.000000,\"operTime\":\"2026-07-24\",\"sname\":\"浙江瑞银电子有限公司\",\"standard\":\"DDSD1226-T49(VB)\",\"taxLastMoney\":91854.000000,\"taxMoney\":0.000000,\"taxRate\":0.000000,\"unitPrice\":218.700000},{\"allPrice\":551124.000000,\"barCode\":\"C.1.T.0.00032\",\"brand\":\"\",\"color\":\"\",\"dname\":\"半成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"单相多功能电能表T49(VB)\",\"model\":\"DDSD1226-T49(VB)\",\"newRemark\":\"SMT出库单详情初始化;已审核;价税合计计入应付 来源单据:SH2607220001\",\"newType\":\"总部入库入库\",\"number\":\"SM2607230004\",\"operNumber\":2520.000000,\"operTime\":\"2026-07-23\",\"sname\":\"浙江瑞银电子有限公司\",\"standard\":\"DDSD1226-T49(VB)\",\"taxLastMoney\":551124.000000,\"taxMoney\":0.000000,\"taxRate\":0.000000,\"unitPrice\":218.700000},{\"allPrice\":1285956.000000,\"barCode\":\"C.1.T.0.00032\",\"brand\":\"\",\"color\":\"\",\"dname\":\"半成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"单相多功能电能表T49(VB)\",\"model\":\"DDSD1226-T49(VB)\",\"newRemark\":\"SMT出库单详情初始化;已审核;价税合计计入应付 来源单据:SH2607220001\",\"newType\":\"总部入库入库\",\"number\":\"SM2607230002\",\"operNumber\":5880.000000,\"operTime\":\"2026-07-23\",\"sname\":\"浙江瑞银电子有限公司\",\"standard\":\"DDSD1226-T49(VB)\",\"taxLastMoney\":1285956.000000,\"taxMoney\":0.000000,\"taxRate\":0.000000,\"unitPrice\":218.700000}],\"allPriceTotal\":15130522.700000}}'); +INSERT INTO `tbl_log` VALUES (10029, 63, '接口日志', '43.152.142.57/1.9.116.218', '2026-10-09 08:18:32', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (10030, 63, '接口日志', '43.174.32.23/1.9.116.218', '2026-10-09 08:18:32', 0, 'OrganizationController.getAllOrganizationTreeByUser(..)', NULL, 'GET /apis/organization/getAllOrganizationTreeByUser', '{}', '[{\"children\":[{\"children\":[{\"children\":[],\"checked\":false,\"attributes\":\"12\",\"id\":14,\"state\":\"open\",\"title\":\"部门2\",\"value\":14,\"key\":14}],\"checked\":false,\"attributes\":\"jg1\",\"id\":13,\"state\":\"open\",\"title\":\"部门1\",\"value\":13,\"key\":13}],\"checked\":false,\"attributes\":\"001\",\"id\":12,\"state\":\"open\",\"title\":\"测试部门\",\"value\":12,\"key\":12}]'); +INSERT INTO `tbl_log` VALUES (10031, 63, '接口日志', '43.174.32.13/1.9.116.218', '2026-10-09 08:18:32', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (10032, 63, '接口日志', '43.152.142.139/1.9.116.218', '2026-10-09 08:18:54', 0, 'DepotHeadController.findInOutDetail(..)', NULL, 'GET /apis/depotHead/findInOutDetail', '{\"currentPage\":1,\"pageSize\":10,\"number\":\"\",\"materialParam\":\"\",\"beginTime\":\"2026-07-09\",\"endTime\":\"2026-10-09\",\"type\":\"入库\",\"remark\":\"\",\"column\":\"operNumber\",\"order\":\"asc\"}', '{\"code\":200,\"data\":{\"total\":35,\"operNumberTotal\":102117.000000,\"rows\":[{\"allPrice\":0.700000,\"barCode\":\"C.4.T.0.00654\",\"brand\":\"\",\"color\":\"\",\"dname\":\"半成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"MD-4G111(VF) 4G模块\",\"model\":\"MD-4G111(VF)\",\"newRemark\":\"\",\"newType\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operNumber\":7.000000,\"operTime\":\"2026-09-18\",\"sname\":\"浙江瑞银电子有限公司\",\"standard\":\"MD-4G111(VF)\",\"taxLastMoney\":0.700000,\"taxMoney\":0.000000,\"taxRate\":0.000000,\"unitPrice\":0.100000},{\"allPrice\":102060.000000,\"barCode\":\"C.3.T.0.00030\",\"brand\":\"\",\"color\":\"\",\"dname\":\"半成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"三相四线多功能电能表T46(VC)\",\"model\":\"DTSD1226-T46(VC)\",\"newRemark\":\"SMT出库单详情初始化;已审核;价税合计计入应付 来源单据:SH2607160020\",\"newType\":\"总部入库入库\",\"number\":\"SM2607180014\",\"operNumber\":210.000000,\"operTime\":\"2026-07-18\",\"sname\":\"浙江瑞银电子有限公司\",\"standard\":\"DTSD1226-T46(VC)\",\"taxLastMoney\":102060.000000,\"taxMoney\":0.000000,\"taxRate\":0.000000,\"unitPrice\":486.000000},{\"allPrice\":102060.000000,\"barCode\":\"C.3.T.0.00030\",\"brand\":\"\",\"color\":\"\",\"dname\":\"半成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"三相四线多功能电能表T46(VC)\",\"model\":\"DTSD1226-T46(VC)\",\"newRemark\":\"SMT出库单详情初始化;已审核;价税合计计入应付 来源单据:SH2607160020\",\"newType\":\"总部入库入库\",\"number\":\"SM2607180009\",\"operNumber\":210.000000,\"operTime\":\"2026-07-18\",\"sname\":\"浙江瑞银电子有限公司\",\"standard\":\"DTSD1226-T46(VC)\",\"taxLastMoney\":102060.000000,\"taxMoney\":0.000000,\"taxRate\":0.000000,\"unitPrice\":486.000000},{\"allPrice\":102060.000000,\"barCode\":\"C.3.T.0.00030\",\"brand\":\"\",\"color\":\"\",\"dname\":\"半成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"三相四线多功能电能表T46(VC)\",\"model\":\"DTSD1226-T46(VC)\",\"newRemark\":\"SMT出库单详情初始化;已审核;价税合计计入应付 来源单据:SH2607160020\",\"newType\":\"总部入库入库\",\"number\":\"SM2607180010\",\"operNumber\":210.000000,\"operTime\":\"2026-07-18\",\"sname\":\"浙江瑞银电子有限公司\",\"standard\":\"DTSD1226-T46(VC)\",\"taxLastMoney\":102060.000000,\"taxMoney\":0.000000,\"taxRate\":0.000000,\"unitPrice\":486.000000},{\"allPrice\":56862.000000,\"barCode\":\"C.1.T.0.00032\",\"brand\":\"\",\"color\":\"\",\"dname\":\"半成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"单相多功能电能表T49(VB)\",\"model\":\"DDSD1226-T49(VB)\",\"newRemark\":\"SMT出库单详情初始化;已审核;价税合计计入应付 来源单据:SH2607130001\",\"newType\":\"总部入库入库\",\"number\":\"SM2607130030\",\"operNumber\":260.000000,\"operTime\":\"2026-07-13\",\"sname\":\"浙江瑞银电子有限公司\",\"standard\":\"DDSD1226-T49(VB)\",\"taxLastMoney\":56862.000000,\"taxMoney\":0.000000,\"taxRate\":0.000000,\"unitPrice\":218.700000},{\"allPrice\":161935.200000,\"barCode\":\"C.3.C.2.00025\",\"brand\":\"\",\"color\":\"\",\"dname\":\"半成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"三相四线多功能电能表CXVI(VA)-新\",\"model\":\"DTSD1226-CXVI(VA)\",\"newRemark\":\"SMT出库单详情初始化;已审核;价税合计计入应付 来源单据:SH2607160019\",\"newType\":\"总部入库入库\",\"number\":\"SM2607170005\",\"operNumber\":336.000000,\"operTime\":\"2026-07-17\",\"sname\":\"浙江瑞银电子有限公司\",\"standard\":\"DTSD1226-CXVI(VA)\",\"taxLastMoney\":161935.200000,\"taxMoney\":0.000000,\"taxRate\":0.000000,\"unitPrice\":481.950000},{\"allPrice\":91854.000000,\"barCode\":\"C.1.T.0.00032\",\"brand\":\"\",\"color\":\"\",\"dname\":\"半成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"单相多功能电能表T49(VB)\",\"model\":\"DDSD1226-T49(VB)\",\"newRemark\":\"SMT出库单详情初始化;已审核;价税合计计入应付 来源单据:SH2607220001\",\"newType\":\"总部入库入库\",\"number\":\"SM2607240005\",\"operNumber\":420.000000,\"operTime\":\"2026-07-24\",\"sname\":\"浙江瑞银电子有限公司\",\"standard\":\"DDSD1226-T49(VB)\",\"taxLastMoney\":91854.000000,\"taxMoney\":0.000000,\"taxRate\":0.000000,\"unitPrice\":218.700000},{\"allPrice\":91854.000000,\"barCode\":\"C.1.T.0.00032\",\"brand\":\"\",\"color\":\"\",\"dname\":\"半成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"单相多功能电能表T49(VB)\",\"model\":\"DDSD1226-T49(VB)\",\"newRemark\":\"SMT出库单详情初始化;已审核;价税合计计入应付 来源单据:SH2608060001\",\"newType\":\"总部入库入库\",\"number\":\"SM2608060005\",\"operNumber\":420.000000,\"operTime\":\"2026-08-06\",\"sname\":\"浙江瑞银电子有限公司\",\"standard\":\"DDSD1226-T49(VB)\",\"taxLastMoney\":91854.000000,\"taxMoney\":0.000000,\"taxRate\":0.000000,\"unitPrice\":218.700000},{\"allPrice\":291600.000000,\"barCode\":\"C.3.T.0.00030\",\"brand\":\"\",\"color\":\"\",\"dname\":\"半成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"三相四线多功能电能表T46(VC)\",\"model\":\"DTSD1226-T46(VC)\",\"newRemark\":\"SMT出库单详情初始化;已审核;价税合计计入应付 来源单据:SH2607160020\",\"newType\":\"总部入库入库\",\"number\":\"SM2607200002\",\"operNumber\":600.000000,\"operTime\":\"2026-07-20\",\"sname\":\"浙江瑞银电子有限公司\",\"standard\":\"DTSD1226-T46(VC)\",\"taxLastMoney\":291600.000000,\"taxMoney\":0.000000,\"taxRate\":0.000000,\"unitPrice\":486.000000},{\"allPrice\":306180.000000,\"barCode\":\"C.3.T.0.00030\",\"brand\":\"\",\"color\":\"\",\"dname\":\"半成品仓库\",\"mUnit\":\"件\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mname\":\"三相四线多功能电能表T46(VC)\",\"model\":\"DTSD1226-T46(VC)\",\"newRemark\":\"SMT出库单详情初始化;已审核;价税合计计入应付 来源单据:SH2607130003\",\"newType\":\"总部入库入库\",\"number\":\"SM2607130031\",\"operNumber\":630.000000,\"operTime\":\"2026-07-13\",\"sname\":\"浙江瑞银电子有限公司\",\"standard\":\"DTSD1226-T46(VC)\",\"taxLastMoney\":306180.000000,\"taxMoney\":0.000000,\"taxRate\":0.000000,\"unitPrice\":486.000000}],\"allPriceTotal\":15130522.700000}}'); +INSERT INTO `tbl_log` VALUES (10033, 63, '接口日志', '43.174.53.14/1.9.116.218', '2026-10-09 08:19:08', 0, 'AssetController.dashboard()', NULL, 'GET /apis/asset/dashboard', '{}', '{\"code\":200,\"data\":{\"summary\":{\"activeCount\":259,\"deviceCount\":10,\"assetQuantity\":289.000000,\"assetCount\":255,\"assetValue\":17260.000000,\"openInventoryCount\":2,\"managedCount\":265},\"statusDistribution\":[{\"code\":\"IN_USE\",\"value\":259},{\"code\":\"REPAIR\",\"value\":3},{\"code\":\"SCRAPPED\",\"value\":3}],\"departmentDistribution\":[{\"name\":\"Production\",\"value\":56},{\"name\":\"未指定\",\"value\":54},{\"name\":\"Laboratory\",\"value\":48},{\"name\":\"Technical & Technologies\",\"value\":29},{\"name\":\"Engineering\",\"value\":18},{\"name\":\"Not Specified\",\"value\":11},{\"name\":\"Human Resources\",\"value\":6},{\"name\":\"Quality\",\"value\":6}],\"deviceCategoryDistribution\":[{\"name\":\"检测设备\",\"value\":2},{\"name\":\"贴装设备\",\"value\":2},{\"name\":\"动力设备\",\"value\":1},{\"name\":\"印刷设备\",\"value\":1},{\"name\":\"工装设备\",\"value\":1},{\"name\":\"服务器\",\"value\":1},{\"name\":\"焊接设备\",\"value\":1},{\"name\":\"物流设备\",\"value\":1}],\"message\":\"成功\",\"categoryDistribution\":[{\"code\":\"HARDWARE\",\"name\":\"硬件资产\",\"value\":198.00},{\"code\":\"SOFTWARE\",\"name\":\"软件资产\",\"value\":67.00},{\"code\":\"SIM_CARD\",\"name\":\"SIM卡\",\"value\":24.00}],\"recentInventories\":[{\"inventoryNo\":\"PD20260921190840893\",\"inventoryUserName\":\"admin\",\"planName\":\"2026年09月资产设备专项盘点\",\"id\":6,\"totalCount\":1,\"inventoriedCount\":1,\"status\":\"CLOSED\",\"updatedAt\":\"2026-09-21 19:17:28\"},{\"inventoryNo\":\"PD20260921170623856\",\"inventoryUserName\":\"张三\",\"planName\":\"2026年09月资产设备专项盘点\",\"id\":4,\"totalCount\":8,\"inventoriedCount\":8,\"status\":\"CLOSED\",\"updatedAt\":\"2026-09-21 19:16:33\"},{\"inventoryNo\":\"PD20260921190800418\",\"inventoryUserName\":\"张三\",\"planName\":\"2026年09月资产设备专项盘点\",\"id\":5,\"totalCount\":2,\"inventoriedCount\":0,\"status\":\"ACCEPTED\",\"updatedAt\":\"2026-09-21 19:08:13\"},{\"inventoryNo\":\"PD20260918131230171\",\"inventoryUserName\":\"张伟\",\"planName\":\"2026年09月资产设备专项盘点\",\"id\":1,\"totalCount\":3,\"inventoriedCount\":1,\"status\":\"IN_PROGRESS\",\"updatedAt\":\"2026-09-21 14:35:59\"}],\"updatedAt\":\"2026-10-09\"}}'); +INSERT INTO `tbl_log` VALUES (10034, 63, '接口日志', '43.174.53.17/1.9.116.218', '2026-10-09 08:19:16', 0, 'AssetController.categoryOptions()', NULL, 'GET /apis/asset/category/options', '{}', '{\"code\":200,\"data\":{\"rows\":[{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"尚未归入具体种类的资产\",\"updateTime\":1790613193000,\"categoryCode\":\"UNCATEGORIZED\",\"id\":4,\"sort\":10,\"categoryName\":\"未分类\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System 硬件台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"HARDWARE\",\"id\":5,\"sort\":20,\"categoryName\":\"硬件资产\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System 软件台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"SOFTWARE\",\"id\":6,\"sort\":30,\"categoryName\":\"软件资产\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System SIM 卡台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"SIM_CARD\",\"id\":7,\"sort\":40,\"categoryName\":\"SIM卡\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_01BF8DA563A0\",\"id\":11,\"sort\":100,\"categoryName\":\"生产设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_7129859760C3\",\"id\":12,\"sort\":100,\"categoryName\":\"检测设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_9F38069B30A1\",\"id\":13,\"sort\":100,\"categoryName\":\"动力设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_75F489029B11\",\"id\":14,\"sort\":100,\"categoryName\":\"IT设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_3DDFE01CA0B8\",\"id\":15,\"sort\":100,\"categoryName\":\"物流设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_B5D44F2B039A\",\"id\":16,\"sort\":100,\"categoryName\":\"工装设备\",\"enabled\":true}],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (10035, 63, '接口日志', '43.152.142.32/1.9.116.218', '2026-10-09 08:19:16', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":255,\"rows\":[{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019200694297052\",\"assetName\":\"SIM卡 896019200694297052\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"6\",\"externalSource\":\"SIM\",\"id\":270,\"keeper\":\"UITM Dungun\",\"location\":\"SMT (???)\",\"originalValue\":0.000000,\"quantity\":1.000000,\"source\":\"SAS\",\"specification\":\"183.171.146.98\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019190221500578\",\"assetName\":\"SIM卡 896019190221500578\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"5\",\"externalSource\":\"SIM\",\"id\":269,\"keeper\":\"SMT\",\"location\":\"UITM Dungun\",\"originalValue\":0.000000,\"purchaseDate\":1608062400000,\"quantity\":1.000000,\"remark\":\"启用日期: 2020-12-16\",\"source\":\"SAS\",\"specification\":\"183.171.14.125\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019190221500576\",\"assetName\":\"SIM卡 896019190221500576\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"1\",\"externalSource\":\"SIM\",\"id\":268,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1608062400000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2020-12-16\",\"source\":\"SAS\",\"specification\":\"183.171.144.65\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607778\",\"assetName\":\"SIM卡 896019210381607778\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"2\",\"externalSource\":\"SIM\",\"id\":267,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1711051200000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2024-03-22\",\"source\":\"SAS\",\"specification\":\"183.171.15.60\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607781\",\"assetName\":\"SIM卡 896019210381607781\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"9\",\"externalSource\":\"SIM\",\"id\":266,\"keeper\":\"SMT\",\"location\":\"SMT (RnD) Modem RnD\",\"originalValue\":0.000000,\"purchaseDate\":1711051200000,\"quantity\":1.000000,\"remark\":\"设备序列号: 21070014;电表序列号: 320910015;启用日期: 2024-03-22\",\"source\":\"SAS\",\"specification\":\"183.171.5.142 / KM08-LTE Modem / 21070014\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607777\",\"assetName\":\"SIM卡 896019210381607777\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"3\",\"externalSource\":\"SIM\",\"id\":265,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1720987200000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2024-07-15\",\"source\":\"SAS\",\"specification\":\"183.171.40.182\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607782\",\"assetName\":\"SIM卡 896019210381607782\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"4\",\"externalSource\":\"SIM\",\"id\":264,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1720987200000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2024-07-15\",\"source\":\"SAS\",\"specification\":\"183.171.40.117\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607784\",\"assetName\":\"SIM卡 896019210381607784\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"7\",\"externalSource\":\"SIM\",\"id\":263,\"keeper\":\"SMT\",\"location\":\"SMT (Modem-Production)\",\"originalValue\":0.000000,\"purchaseDate\":1727553600000,\"quantity\":1.000000,\"remark\":\"设备序列号: 20041004;启用日期: 2024-09-29\",\"source\":\"SAS\",\"specification\":\"183.171.50.5 / KM08-LTE Modem / 20041004\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607783\",\"assetName\":\"SIM卡 896019210381607783\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"8\",\"externalSource\":\"SIM\",\"id\":262,\"keeper\":\"SMT\",\"location\":\"SMT (RnD) Modem Store\",\"originalValue\":0.000000,\"purchaseDate\":1727553600000,\"quantity\":1.000000,\"remark\":\"设备序列号: 2403005;启用日期: 2024-09-29\",\"source\":\"SAS\",\"specification\":\"183.171.50.6 / KM08-LTE Modem / 2403005\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607785\",\"assetName\":\"SIM卡 896019210381607785\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"10\",\"externalSource\":\"SIM\",\"id\":261,\"keeper\":\"SMT\",\"location\":\"SMT (RnD) Alyaa\",\"originalValue\":0.000000,\"purchaseDate\":1766433600000,\"quantity\":1.000000,\"remark\":\"设备序列号: 21070011;电表序列号: 320910014;启用日期: 2025-12-23\",\"source\":\"SAS\",\"specification\":\"183.171.151.171 / KM08-LTE Modem / 21070011\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000}]}}'); +INSERT INTO `tbl_log` VALUES (10036, 63, '接口日志', '43.174.54.50/1.9.116.218', '2026-10-09 08:19:23', 0, 'AssetInventoryController.operatorOptions()', NULL, 'GET /apis/assetInventory/operatorOptions', '{}', '{\"code\":200,\"data\":{\"rows\":[{\"loginName\":\"admin\",\"name\":\"admin\",\"id\":63},{\"loginName\":\"admin2\",\"name\":\"admin2\",\"id\":149}],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (10037, 63, '接口日志', '43.152.142.132/1.9.116.218', '2026-10-09 08:19:23', 0, 'AssetInventoryController.list(..)', NULL, 'GET /apis/assetInventory/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":4,\"rows\":[{\"abnormalCount\":0,\"auditTime\":1790003845000,\"auditUserId\":149,\"completedAt\":1790003836000,\"createTime\":1790003320000,\"creator\":149,\"deadline\":1790258400000,\"deleteFlag\":\"0\",\"id\":6,\"inventoriedCount\":1,\"inventoryNo\":\"PD20260921190840893\",\"inventoryUserId\":63,\"inventoryUserName\":\"admin\",\"normalCount\":1,\"planName\":\"2026年09月资产设备专项盘点\",\"plannedAt\":1790053200000,\"scopeType\":\"DEVICE\",\"source\":\"MANUAL\",\"startedAt\":1790003819000,\"status\":\"CLOSED\",\"totalCount\":1,\"updateTime\":1790003848000,\"updater\":149},{\"abnormalCount\":0,\"createTime\":1790003280000,\"creator\":149,\"deadline\":1790258400000,\"deleteFlag\":\"0\",\"id\":5,\"inventoriedCount\":0,\"inventoryNo\":\"PD20260921190800418\",\"inventoryUserId\":149,\"inventoryUserName\":\"张三\",\"normalCount\":0,\"planName\":\"2026年09月资产设备专项盘点\",\"plannedAt\":1790053200000,\"remark\":\"进行盘点\",\"scopeType\":\"ALL\",\"source\":\"MANUAL\",\"status\":\"ACCEPTED\",\"totalCount\":2,\"updateTime\":1790003293000,\"updater\":149},{\"abnormalCount\":0,\"completedAt\":1790002875000,\"createTime\":1789995983000,\"creator\":63,\"deadline\":1790258400000,\"deleteFlag\":\"0\",\"id\":4,\"inventoriedCount\":8,\"inventoryNo\":\"PD20260921170623856\",\"inventoryUserId\":149,\"inventoryUserName\":\"张三\",\"normalCount\":0,\"planName\":\"2026年09月资产设备专项盘点\",\"plannedAt\":1790053200000,\"remark\":\"进行盘点\",\"scopeType\":\"ASSET\",\"source\":\"MANUAL\",\"startedAt\":1790002559000,\"status\":\"CLOSED\",\"totalCount\":8,\"updateTime\":1790003793000,\"updater\":149},{\"abnormalCount\":0,\"createTime\":1789722750000,\"creator\":63,\"deadline\":1789999200000,\"deleteFlag\":\"0\",\"id\":1,\"inventoriedCount\":1,\"inventoryNo\":\"PD20260918131230171\",\"inventoryUserId\":36,\"inventoryUserName\":\"张伟\",\"normalCount\":0,\"planName\":\"2026年09月资产设备专项盘点\",\"plannedAt\":1789794000000,\"remark\":\"进行盘点\",\"scopeType\":\"DEVICE\",\"source\":\"MANUAL\",\"startedAt\":1789723142000,\"status\":\"IN_PROGRESS\",\"totalCount\":3,\"updateTime\":1789986959000,\"updater\":63}]}}'); +INSERT INTO `tbl_log` VALUES (10038, 63, '接口日志', '43.152.142.109/1.9.116.218', '2026-10-09 08:19:29', 0, 'AssetInventoryController.details(..)', NULL, 'GET /apis/assetInventory/details', '{\"inventoryId\":5,\"keyword\":\"\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"actualQuantity\":0.000000,\"bookDepartment\":\"SMT生产部\",\"bookLocation\":\"一车间 钢网房\",\"bookQuantity\":1.000000,\"createTime\":1790003280000,\"id\":14,\"imageUrls\":[],\"inventoryId\":5,\"inventoryStatus\":\"PENDING\",\"model\":\"SAWA SC-A1000\",\"targetCode\":\"FA-TOOL-2025-008\",\"targetId\":8,\"targetName\":\"全自动钢网清洗机\",\"targetType\":\"ASSET\",\"updateTime\":1790003280000},{\"actualQuantity\":0.000000,\"bookDepartment\":\"信息技术部\",\"bookLocation\":\"数据中心 A03-U18\",\"bookQuantity\":1.000000,\"createTime\":1790003280000,\"id\":15,\"imageUrls\":[],\"inventoryId\":5,\"inventoryStatus\":\"PENDING\",\"model\":\"PowerEdge R760\",\"targetCode\":\"IT-MES-DB-01\",\"targetId\":8,\"targetName\":\"MES 数据库主服务器\",\"targetType\":\"DEVICE\",\"updateTime\":1790003280000}]}}'); +INSERT INTO `tbl_log` VALUES (10039, 63, '接口日志', '43.152.142.64/1.9.116.218', '2026-10-09 08:19:34', 0, 'AssetInventoryController.details(..)', NULL, 'GET /apis/assetInventory/details', '{\"inventoryId\":6,\"keyword\":\"\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"actualDepartment\":\"品质部\",\"actualLocation\":\"一车间 AOI 检测区\",\"actualQuantity\":1.000000,\"bookDepartment\":\"品质部\",\"bookLocation\":\"一车间 AOI 检测区\",\"bookQuantity\":1.000000,\"createTime\":1790003320000,\"id\":16,\"imageUrls\":[],\"inventoryId\":6,\"inventoryStatus\":\"NORMAL\",\"inventoryTime\":1790003830000,\"inventoryUserId\":149,\"inventoryUserName\":\"张三\",\"model\":\"Zenith 2\",\"remark\":\"111\",\"targetCode\":\"QC-AOI-01\",\"targetId\":5,\"targetName\":\"在线 3D AOI\",\"targetType\":\"DEVICE\",\"updateTime\":1790003830000}]}}'); +INSERT INTO `tbl_log` VALUES (10040, 63, '接口日志', '43.152.142.141/1.9.116.218', '2026-10-09 08:19:50', 0, 'AssetInventoryController.details(..)', NULL, 'GET /apis/assetInventory/details', '{\"inventoryId\":1,\"keyword\":\"\"}', '{\"code\":200,\"data\":{\"total\":3,\"rows\":[{\"actualQuantity\":0.000000,\"bookDepartment\":\"SMT生产部\",\"bookLocation\":\"一车间 SMT-01 线 A 工位\",\"bookQuantity\":1.000000,\"createTime\":1789722750000,\"id\":2,\"imageGroupId\":\"01f08d9e8b2c43cfa2fb59a67ac6a954\",\"imageUrls\":[\"/apis/systemConfig/static/asset-inventory/图片1_1789973064775.png\"],\"inventoryId\":1,\"inventoryStatus\":\"PENDING\",\"model\":\"Panasonic NPM-D3A\",\"targetCode\":\"SMT-L01-MOUNTER-A\",\"targetId\":2,\"targetName\":\"高速模块贴片机 A\",\"targetType\":\"DEVICE\",\"updateTime\":1789987464000},{\"actualQuantity\":0.000000,\"bookDepartment\":\"SMT生产部\",\"bookLocation\":\"一车间 SMT-01 线 B 工位\",\"bookQuantity\":1.000000,\"createTime\":1789722750000,\"id\":3,\"imageUrls\":[],\"inventoryId\":1,\"inventoryStatus\":\"PENDING\",\"model\":\"Panasonic NPM-W2S\",\"targetCode\":\"SMT-L01-MOUNTER-B\",\"targetId\":3,\"targetName\":\"多功能贴片机 B\",\"targetType\":\"DEVICE\",\"updateTime\":1789722750000},{\"actualLocation\":\"一车间 印刷检测区-A区\",\"actualQuantity\":1.000000,\"bookDepartment\":\"品质部\",\"bookLocation\":\"一车间 印刷检测区\",\"bookQuantity\":1.000000,\"createTime\":1789722750000,\"id\":1,\"imageUrls\":[],\"inventoryId\":1,\"inventoryStatus\":\"INVENTORIED\",\"inventoryTime\":1789986951000,\"inventoryUserId\":63,\"inventoryUserName\":\"admin\",\"model\":\"KY8030-3\",\"remark\":\"111\",\"targetCode\":\"QC-SPI-01\",\"targetId\":6,\"targetName\":\"在线 3D SPI\",\"targetType\":\"DEVICE\",\"updateTime\":1789986959000}]}}'); +INSERT INTO `tbl_log` VALUES (10041, NULL, '接口日志', '43.174.52.68/1.9.116.218', '2026-10-09 08:19:50', 0, 'SystemConfigController.view(..)', NULL, 'GET /apis/systemConfig/static/asset-inventory/%E5%9B%BE%E7%89%871_1789973064775.png', '{}', NULL); +INSERT INTO `tbl_log` VALUES (10042, 63, '接口日志', '43.152.157.121/1.9.116.218', '2026-10-09 08:20:07', 0, 'SupplierController.findBySelectSup(..)', NULL, 'POST /apis/supplier/findBySelect_sup', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司\",\"id\":89}]'); +INSERT INTO `tbl_log` VALUES (10043, 63, '接口日志', '43.152.142.139/1.9.116.218', '2026-10-09 08:20:07', 0, 'AccountHeadController.getList(..)', NULL, 'GET /apis/accountHead/list', '{\"search\":\"{\\\"billNo\\\":\\\"\\\",\\\"searchMaterial\\\":\\\"\\\",\\\"type\\\":\\\"付款\\\",\\\"remark\\\":\\\"\\\",\\\"number\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-07-09\\\",\\\"endTime\\\":\\\"2026-10-09\\\",\\\"createTimeRange\\\":[\\\"2026-07-08T16:00:00.000Z\\\",\\\"2026-10-08T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":3,\"rows\":[{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"FK-PV-008186-87-3PH-APEC3-WC-OV-25\",\"billTime\":1786651200000,\"billTimeStr\":\"2026-08-14 00:00:00\",\"changeAmount\":947751.900000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":104,\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"remark\":\"Stock Status供应商付款;PV:PV 008186/87\",\"source\":\"0\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":947751.900000,\"type\":\"付款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"FK-PV-008145-45---ZHEJIANG-METRONIX-3PH-APEC3-WC-O\",\"billTime\":1785700800000,\"billTimeStr\":\"2026-08-03 00:00:00\",\"changeAmount\":954860.058400,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":100,\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"remark\":\"Stock Status供应商付款;PV:PV 008145/45 - ZHEJIANG & METRONIX\",\"source\":\"0\",\"sourceNumber\":\"CGRK-260415-01-11\",\"sourceTime\":\"2026-04-29 00:00:00\",\"sourceType\":\"采购入库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":954860.058400,\"type\":\"付款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"FK-PV-008186-87-1PH-WS79-ADD1-11\",\"billTime\":1786651200000,\"billTimeStr\":\"2026-08-14 00:00:00\",\"changeAmount\":236946.640000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":92,\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"remark\":\"Stock Status供应商付款;PV:PV 008186/87\",\"source\":\"0\",\"sourceNumber\":\"CGRK-260414-01-11\",\"sourceTime\":\"2026-04-29 00:00:00\",\"sourceType\":\"采购入库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":236946.640000,\"type\":\"付款\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (10044, 63, '接口日志', '43.152.142.57/1.9.116.218', '2026-10-09 08:20:07', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (10045, 63, '接口日志', '43.152.142.109/1.9.116.218', '2026-10-09 08:20:07', 0, 'PersonController.getPersonByType(..)', NULL, 'GET /apis/person/getPersonByType', '{\"type\":\"财务员\"}', '{\"code\":200,\"data\":{\"personList\":[{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":43,\"name\":\"Juwairiah\",\"type\":\"财务员\"}]}}'); +INSERT INTO `tbl_log` VALUES (10046, 63, '接口日志', '43.174.32.23/1.9.116.218', '2026-10-09 08:20:07', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (10047, 63, '接口日志', '43.174.54.14/1.9.116.218', '2026-10-09 08:20:07', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (10048, 63, '接口日志', '43.174.54.50/1.9.116.218', '2026-10-09 08:20:07', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (10049, 63, '接口日志', '43.152.142.32/1.9.116.218', '2026-10-09 08:20:07', 0, 'DepotHeadController.getNeedCount(..)', NULL, 'GET /apis/depotHead/getNeedCount', '{\"type\":\"vendor\"}', '{\"code\":200,\"data\":{\"needCount\":1}}'); +INSERT INTO `tbl_log` VALUES (10050, 63, '接口日志', '43.152.142.64/1.9.116.218', '2026-10-09 08:20:10', 0, 'PackBomController.getList(..)', NULL, 'GET /apis/packBom/list', '{\"search\":\"{\\\"bomNumber\\\":\\\"\\\",\\\"bomName\\\":\\\"\\\",\\\"productMaterialParam\\\":\\\"\\\",\\\"outputMaterialParam\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"bomName\":\"v1.0\",\"bomNumber\":\"BOM00000001735\",\"createTime\":1789719259000,\"creator\":63,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"itemCount\":1,\"outputMaterialExtendId\":123,\"outputMaterialId\":703,\"outputMaterialName\":\"1PH WS79\",\"outputNumber\":1.000000,\"productMaterialExtendId\":123,\"productMaterialId\":703,\"version\":\"v1.0\"}]}}'); +INSERT INTO `tbl_log` VALUES (10051, 63, '接口日志', '43.152.142.112/1.9.116.218', '2026-10-09 08:20:11', 0, 'ProductionOrderController.getList(..)', NULL, 'GET /apis/productionOrder/list', '{\"search\":\"{\\\"orderNumber\\\":\\\"\\\",\\\"sourceNumber\\\":\\\"\\\",\\\"productMaterialParam\\\":\\\"\\\",\\\"beginTime\\\":\\\"\\\",\\\"endTime\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"auditBy\":63,\"auditByName\":\"admin\",\"auditTime\":1789719775000,\"bomId\":18,\"bomName\":\"v1.0\",\"createTime\":1789719619000,\"creator\":63,\"creatorName\":\"admin\",\"deleteFlag\":\"0\",\"finishedQuantity\":0.000000,\"id\":11,\"orderNumber\":\"GD20260918122018493\",\"orderQuantity\":10000.000000,\"outputMaterialExtendId\":123,\"outputMaterialId\":703,\"outputMaterialName\":\"1PH WS79\",\"outputQuantity\":10000.000000,\"planEndDate\":1790280000000,\"planStartDate\":1789675200000,\"priority\":\"0\",\"productMaterialExtendId\":123,\"productMaterialId\":703,\"releaseBy\":63,\"releaseTime\":1789719775000,\"remark\":\"\",\"sourceId\":1719,\"sourceNumber\":\"XSDD00000001726\",\"sourceType\":\"销售订单\",\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (10052, 63, '接口日志', '43.152.142.29/1.9.116.218', '2026-10-09 08:20:11', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (10053, 63, '接口日志', '43.174.53.14/1.9.116.218', '2026-10-09 08:20:15', 0, 'ProductionOrderController.getOrderDetail(..)', NULL, 'GET /apis/productionOrder/getOrderDetail', '{\"id\":11}', '{\"code\":200,\"data\":{\"logs\":[{\"createTime\":1789719619000,\"id\":53,\"operationDesc\":\"创建生产工单,数量:10000\",\"operationType\":\"创建工单\",\"operator\":63,\"orderId\":11,\"orderNumber\":\"GD20260918122018493\"},{\"createTime\":1789719775000,\"id\":54,\"operationDesc\":\"工单审批通过并下达\",\"operationType\":\"审批下达\",\"operator\":63,\"orderId\":11,\"orderNumber\":\"GD20260918122018493\"},{\"createTime\":1789719809000,\"id\":55,\"operationDesc\":\"生成领料单[LL20260918122329111]\",\"operationType\":\"生成领料单\",\"operator\":63,\"orderId\":11,\"orderNumber\":\"GD20260918122018493\"},{\"createTime\":1789720311000,\"id\":56,\"operationDesc\":\"领料单[LL20260918122329111]被驳回:11\",\"operationType\":\"领料驳回\",\"operator\":63,\"orderId\":11,\"orderNumber\":\"GD20260918122018493\"},{\"createTime\":1789720317000,\"id\":57,\"operationDesc\":\"生成领料单[LL20260918123156921]\",\"operationType\":\"生成领料单\",\"operator\":63,\"orderId\":11,\"orderNumber\":\"GD20260918122018493\"},{\"createTime\":1790242827000,\"id\":58,\"operationDesc\":\"领料单[LL20260918123156921]确认发料,出库单号[LL20260924134027104]\",\"operationType\":\"领料发料\",\"operator\":63,\"orderId\":11,\"orderNumber\":\"GD20260918122018493\"}],\"order\":{\"sourceId\":1719,\"orderNumber\":\"GD20260918122018493\",\"outputQuantity\":10000.000000,\"releaseTime\":1789719775000,\"auditBy\":\"admin\",\"productMaterialExtendId\":123,\"outputBarCode\":\"1PH-WS79\",\"outputMaterialId\":703,\"finishedQuantity\":0.000000,\"remark\":\"\",\"orderQuantity\":10000.000000,\"deleteFlag\":\"0\",\"productMaterialId\":703,\"outputMaterialName\":\"1PH WS79\",\"id\":11,\"planEndDate\":\"2026-09-25\",\"bomId\":18,\"creator\":63,\"releaseBy\":\"admin\",\"priority\":\"0\",\"sourceNumber\":\"XSDD00000001726\",\"auditTime\":1789719775000,\"createTime\":\"2026-09-18 12:20:19\",\"sourceType\":\"销售订单\",\"outputMaterialExtendId\":123,\"planStartDate\":\"2026-09-18\",\"status\":\"1\"}}}'); +INSERT INTO `tbl_log` VALUES (10054, 63, '接口日志', '43.152.157.121/1.9.116.218', '2026-10-09 08:20:47', 0, 'SupplierController.findBySelectSup(..)', NULL, 'POST /apis/supplier/findBySelect_sup', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司\",\"id\":89}]'); +INSERT INTO `tbl_log` VALUES (10055, 63, '接口日志', '43.152.142.132/1.9.116.218', '2026-10-09 08:20:47', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (10056, 63, '接口日志', '43.174.53.17/1.9.116.218', '2026-10-09 08:20:47', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (10057, 63, '接口日志', '43.174.32.34/1.9.116.218', '2026-10-09 08:20:47', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (10058, 63, '接口日志', '43.174.32.18/1.9.116.218', '2026-10-09 08:20:47', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (10059, 63, '接口日志', '43.152.142.105/1.9.116.218', '2026-10-09 08:20:47', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"其它\\\",\\\"subType\\\":\\\"采购订单\\\",\\\"linkApply\\\":\\\"\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-07-09\\\",\\\"endTime\\\":\\\"2026-10-09\\\",\\\"createTimeRange\\\":[\\\"2026-07-08T16:00:00.000Z\\\",\\\"2026-10-08T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789720113000,\"creator\":63,\"debt\":100000.000000,\"defaultNumber\":\"CGDD00000001739\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":100000.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1723,\"lastDebt\":100000.000000,\"lastDeposit\":0.000000,\"linkApply\":\"QGD00000001738\",\"materialCount\":10000.000000,\"materialsList\":\"MD-4G111(VF) 包装 MD-4G111(VF) packing MD-4G111(VF) \",\"number\":\"CGDD00000001739\",\"operTime\":1789734505000,\"operTimeStr\":\"2026-09-18 16:28:25\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"采购订单\",\"totalPrice\":100000.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789717459000,\"creator\":63,\"debt\":0.700000,\"defaultNumber\":\"CGDD00000001720\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":0.700000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1716,\"lastDebt\":0.700000,\"lastDeposit\":0.000000,\"linkApply\":\"QGD00000001719\",\"materialCount\":7.000000,\"materialsList\":\"MD-4G111(VF) 4G模块 MD-4G111(VF) MD-4G111(VF) \",\"number\":\"CGDD00000001720\",\"operTime\":1789717452000,\"operTimeStr\":\"2026-09-18 11:44:12\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"采购订单\",\"totalPrice\":0.700000,\"type\":\"其它\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (10060, 63, '接口日志', '43.174.53.30/1.9.116.218', '2026-10-09 08:20:47', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (10061, 63, '接口日志', '43.152.157.121/1.9.116.218', '2026-10-09 08:20:49', 0, 'SupplierController.findBySelectSup(..)', NULL, 'POST /apis/supplier/findBySelect_sup', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司\",\"id\":89}]'); +INSERT INTO `tbl_log` VALUES (10062, 63, '接口日志', '43.174.53.17/1.9.116.218', '2026-10-09 08:20:49', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (10063, 63, '接口日志', '43.174.32.23/1.9.116.218', '2026-10-09 08:20:49', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (10064, 63, '接口日志', '43.174.54.14/1.9.116.218', '2026-10-09 08:20:49', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (10065, 63, '接口日志', '43.152.142.112/1.9.116.218', '2026-10-09 08:20:49', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (10066, 63, '接口日志', '43.152.142.105/1.9.116.218', '2026-10-09 08:20:49', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (10067, 63, '接口日志', '43.174.53.30/1.9.116.218', '2026-10-09 08:20:49', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"入库\\\",\\\"subType\\\":\\\"采购\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-07-09\\\",\\\"endTime\\\":\\\"2026-10-09\\\",\\\"createTimeRange\\\":[\\\"2026-07-08T16:00:00.000Z\\\",\\\"2026-10-08T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789720142000,\"creator\":63,\"debt\":100000.000000,\"defaultNumber\":\"CGRK00000001740\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":100000.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1724,\"lastDebt\":100000.000000,\"lastDeposit\":0.000000,\"linkNumber\":\"CGDD00000001739\",\"materialCount\":10000.000000,\"materialsList\":\"MD-4G111(VF) 包装 MD-4G111(VF) packing MD-4G111(VF) \",\"number\":\"CGRK00000001740\",\"operTime\":1789734542000,\"operTimeStr\":\"2026-09-18 16:29:02\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"采购\",\"totalPrice\":100000.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789717476000,\"creator\":63,\"debt\":0.700000,\"defaultNumber\":\"CGRK00000001721\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":0.700000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1717,\"lastDebt\":0.700000,\"lastDeposit\":0.000000,\"linkNumber\":\"CGDD00000001720\",\"materialCount\":7.000000,\"materialsList\":\"MD-4G111(VF) 4G模块 MD-4G111(VF) MD-4G111(VF) \",\"number\":\"CGRK00000001721\",\"operTime\":1789717474000,\"operTimeStr\":\"2026-09-18 11:44:34\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"采购\",\"totalPrice\":0.700000,\"type\":\"入库\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (10068, 63, '接口日志', '43.152.142.132/1.9.116.218', '2026-10-09 08:20:49', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (10069, 63, '接口日志', '43.152.157.121/1.9.116.218', '2026-10-09 08:20:50', 0, 'SupplierController.findBySelectSup(..)', NULL, 'POST /apis/supplier/findBySelect_sup', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司\",\"id\":89}]'); +INSERT INTO `tbl_log` VALUES (10070, 63, '接口日志', '43.174.54.50/1.9.116.218', '2026-10-09 08:20:50', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (10071, 63, '接口日志', '43.174.32.13/1.9.116.218', '2026-10-09 08:20:50', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (10072, 63, '接口日志', '43.152.142.141/1.9.116.218', '2026-10-09 08:20:50', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (10073, 63, '接口日志', '43.152.142.40/1.9.116.218', '2026-10-09 08:20:50', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (10074, 63, '接口日志', '43.152.142.43/1.9.116.218', '2026-10-09 08:20:50', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"出库\\\",\\\"subType\\\":\\\"采购退货\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-07-09\\\",\\\"endTime\\\":\\\"2026-10-09\\\",\\\"createTimeRange\\\":[\\\"2026-07-08T16:00:00.000Z\\\",\\\"2026-10-08T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (10075, 63, '接口日志', '43.152.142.109/1.9.116.218', '2026-10-09 08:20:50', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (10076, 63, '接口日志', '43.152.142.57/1.9.116.218', '2026-10-09 08:20:52', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (10077, 63, '接口日志', '43.152.142.29/1.9.116.218', '2026-10-09 08:20:52', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (10078, 63, '接口日志', '43.152.142.78/1.9.116.218', '2026-10-09 08:20:52', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (10079, 63, '接口日志', '43.152.142.64/1.9.116.218', '2026-10-09 08:20:52', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (10080, 63, '接口日志', '43.174.32.34/1.9.116.218', '2026-10-09 08:20:52', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"其它\\\",\\\"subType\\\":\\\"请购单\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-07-09\\\",\\\"endTime\\\":\\\"2026-10-09\\\",\\\"createTimeRange\\\":[\\\"2026-07-08T16:00:00.000Z\\\",\\\"2026-10-08T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"backAmount\":0,\"changeAmount\":0,\"createTime\":1789720084000,\"creator\":63,\"debt\":0,\"defaultNumber\":\"QGD00000001738\",\"deleteFlag\":\"0\",\"deposit\":0,\"discountLastMoney\":0,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1722,\"lastDebt\":0,\"lastDeposit\":0.000000,\"materialCount\":10000.000000,\"materialsList\":\"MD-4G111(VF) 包装 MD-4G111(VF) packing MD-4G111(VF) \",\"number\":\"QGD00000001738\",\"operTime\":1789734467000,\"operTimeStr\":\"2026-09-18 16:27:47\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"请购单\",\"type\":\"其它\",\"userName\":\"admin\"},{\"backAmount\":0,\"changeAmount\":0,\"createTime\":1789717442000,\"creator\":63,\"debt\":0,\"defaultNumber\":\"QGD00000001719\",\"deleteFlag\":\"0\",\"deposit\":0,\"discountLastMoney\":0,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1715,\"lastDebt\":0,\"lastDeposit\":0.000000,\"materialCount\":7.000000,\"materialsList\":\"MD-4G111(VF) 4G模块 MD-4G111(VF) MD-4G111(VF) \",\"number\":\"QGD00000001719\",\"operTime\":1789717427000,\"operTimeStr\":\"2026-09-18 11:43:47\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"请购单\",\"type\":\"其它\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (10081, 63, '接口日志', '43.174.53.14/1.9.116.218', '2026-10-09 08:20:57', 0, 'PersonController.getPersonByNumType(..)', NULL, 'GET /apis/person/getPersonByNumType', '{\"typeNum\":\"1\"}', '[]'); +INSERT INTO `tbl_log` VALUES (10082, 63, '接口日志', '43.152.142.139/1.9.116.218', '2026-10-09 08:20:57', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (10083, 63, '接口日志', '43.174.32.18/1.9.116.218', '2026-10-09 08:20:57', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (10084, 63, '接口日志', '43.152.157.121/1.9.116.218', '2026-10-09 08:20:57', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (10085, 63, '接口日志', '43.174.54.14/1.9.116.218', '2026-10-09 08:20:57', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"出库\\\",\\\"subType\\\":\\\"销售\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-07-09\\\",\\\"endTime\\\":\\\"2026-10-09\\\",\\\"createTimeRange\\\":[\\\"2026-07-08T16:00:00.000Z\\\",\\\"2026-10-08T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":32,\"rows\":[{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789718584000,\"creator\":63,\"debt\":808500.000000,\"defaultNumber\":\"XSCK00000001728\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":808500.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1720,\"lastDebt\":808500.000000,\"lastDeposit\":0.000000,\"linkNumber\":\"XSDD00000001726\",\"materialCount\":10000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK00000001728\",\"operTime\":1789732981000,\"operTimeStr\":\"2026-09-18 16:03:01\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"totalPrice\":735000.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1786305600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-87\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1671,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303506-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-87\",\"operTime\":1786305600000,\"operTimeStr\":\"2026-08-10 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1786305600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2159-86\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1670,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303506-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2159-86\",\"operTime\":1786305600000,\"operTimeStr\":\"2026-08-10 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2159\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785873600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-DO_2158-85\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1669,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-DO_2158-85\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:DO_2158\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785873600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-84\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1668,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-84\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785873600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-DO_2157-83\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1667,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-DO_2157-83\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:DO_2157\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785268800000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2150-69\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1665,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303480-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2150-69\",\"operTime\":1785268800000,\"operTimeStr\":\"2026-07-29 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2150\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784750400000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2142-68\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1664,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303480-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2142-68\",\"operTime\":1784750400000,\"operTimeStr\":\"2026-07-23 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2142\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784145600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-67\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1663,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-67\",\"operTime\":1784145600000,\"operTimeStr\":\"2026-07-16 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784145600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2134-66\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1662,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2134-66\",\"operTime\":1784145600000,\"operTimeStr\":\"2026-07-16 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2134\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (10086, 63, '接口日志', '43.152.142.32/1.9.116.218', '2026-10-09 08:20:57', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (10087, 63, '接口日志', '43.174.52.68/1.9.116.218', '2026-10-09 08:20:57', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (10088, 63, '接口日志', '43.152.142.86/1.9.116.218', '2026-10-09 08:20:57', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (10089, 63, '接口日志', '43.152.142.112/1.9.116.218', '2026-10-09 08:20:57', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (10090, 63, '接口日志', '43.174.53.17/1.9.116.218', '2026-10-09 08:21:00', 0, 'DepotHeadController.getDetailByNumber(..)', NULL, 'GET /apis/depotHead/getDetailByNumber', '{\"number\":\"XSCK-INV_2134-66\"}', '{\"code\":200,\"data\":{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountNumber\":\"\",\"address\":\"\",\"backAmount\":0.000000,\"bankName\":\"\",\"billType\":\"销售\",\"changeAmount\":0.000000,\"contacts\":\"\",\"createTime\":1784145600000,\"creator\":63,\"creatorName\":\"admin\",\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2134-66\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"depotHeadType\":\"销售出库\",\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"hasBackFlag\":false,\"id\":1662,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2134-66\",\"operTime\":1784145600000,\"operTimeStr\":\"2026-07-16 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"phoneNum\":\"\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2134\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"taxNum\":\"\",\"telephone\":\"\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\"}}'); +INSERT INTO `tbl_log` VALUES (10091, 63, '接口日志', '43.152.142.132/1.9.116.218', '2026-10-09 08:21:00', 0, 'AccountHeadController.getFinancialBillNoByBillId(..)', NULL, 'GET /apis/accountHead/getFinancialBillNoByBillId', '{\"billId\":1662}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (10092, 63, '接口日志', '43.152.142.105/1.9.116.218', '2026-10-09 08:21:00', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (10093, 63, '接口日志', '43.152.142.141/1.9.116.218', '2026-10-09 08:21:00', 0, 'DepotHeadController.getBillListByLinkNumber(..)', NULL, 'GET /apis/depotHead/getBillListByLinkNumber', '{\"number\":\"XSCK-INV_2134-66\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (10094, 63, '接口日志', '43.174.53.30/1.9.116.218', '2026-10-09 08:21:00', 0, 'DepotItemController.getDetailList(..)', NULL, 'GET /apis/depotItem/getDetailList', '{\"headerId\":1662,\"mpList\":\"扩展1,扩展2,扩展3\",\"linkType\":\"basic\",\"isReadOnly\":\"1\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"standard\":\"1PH WS79\",\"materialExtendId\":123,\"finishPurchaseNumber\":0,\"anotherDepotName\":\"\",\"color\":\"\",\"preNumber\":1000.000000,\"depotId\":26,\"remark\":\"\",\"purchaseDecimal\":59.500000,\"imgName\":\"\",\"operNumber\":1000.000000,\"anotherDepotId\":\"\",\"basicNumber\":1000.000000,\"taxLastMoney\":80850.000000,\"model\":\"1PH WS79\",\"id\":1467,\"enableSerialNumber\":\"0\",\"stock\":52400.000000,\"brand\":\"\",\"finishNumber\":0,\"expirationDate\":\"\",\"enableBatchNumber\":\"0\",\"unitPrice\":73.500000,\"op\":1,\"otherField1\":\"\",\"depotName\":\"成品仓库\",\"mfrs\":\"浙江瑞银电子有限公司\",\"weight\":0,\"otherField3\":\"\",\"otherField2\":\"\",\"taxMoney\":7350.000000,\"imgSmall\":\"\",\"barCode\":\"1PH-WS79\",\"taxUnitPrice\":80.850000,\"taxRate\":10.000000,\"unit\":\"件\",\"allPrice\":73500.000000,\"name\":\"1PH WS79\",\"imgLarge\":\"\",\"position\":\"\"},{\"allPrice\":73500.000000,\"finishPurchaseNumber\":0,\"operNumber\":1000.000000,\"taxLastMoney\":80850.000000,\"weight\":0,\"taxMoney\":7350.000000,\"finishNumber\":0}]}}'); +INSERT INTO `tbl_log` VALUES (10095, 63, '接口日志', '43.174.32.23/1.9.116.218', '2026-10-09 08:21:00', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_print_flag\"}', '{\"code\":200,\"data\":{\"id\":4,\"platformKey\":\"bill_print_flag\",\"platformKeyInfo\":\"三联打印启用标记\",\"platformValue\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (10096, 63, '接口日志', '43.174.32.13/1.9.116.218', '2026-10-09 08:21:03', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"出库\\\",\\\"subType\\\":\\\"销售\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-07-09\\\",\\\"endTime\\\":\\\"2026-10-09\\\",\\\"createTimeRange\\\":[\\\"2026-07-08T16:00:00.000Z\\\",\\\"2026-10-08T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":32,\"rows\":[{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789718584000,\"creator\":63,\"debt\":808500.000000,\"defaultNumber\":\"XSCK00000001728\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":808500.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1720,\"lastDebt\":808500.000000,\"lastDeposit\":0.000000,\"linkNumber\":\"XSDD00000001726\",\"materialCount\":10000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK00000001728\",\"operTime\":1789732981000,\"operTimeStr\":\"2026-09-18 16:03:01\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"totalPrice\":735000.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1786305600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-87\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1671,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303506-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-87\",\"operTime\":1786305600000,\"operTimeStr\":\"2026-08-10 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1786305600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2159-86\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1670,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303506-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2159-86\",\"operTime\":1786305600000,\"operTimeStr\":\"2026-08-10 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2159\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785873600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-DO_2158-85\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1669,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-DO_2158-85\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:DO_2158\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785873600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-84\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1668,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-84\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785873600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-DO_2157-83\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1667,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-DO_2157-83\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:DO_2157\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785268800000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2150-69\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1665,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303480-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2150-69\",\"operTime\":1785268800000,\"operTimeStr\":\"2026-07-29 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2150\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784750400000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2142-68\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1664,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303480-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2142-68\",\"operTime\":1784750400000,\"operTimeStr\":\"2026-07-23 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2142\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784145600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-67\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1663,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-67\",\"operTime\":1784145600000,\"operTimeStr\":\"2026-07-16 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784145600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2134-66\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1662,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2134-66\",\"operTime\":1784145600000,\"operTimeStr\":\"2026-07-16 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2134\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (10097, 63, '接口日志', '43.152.142.109/1.9.116.218', '2026-10-09 08:21:14', 0, 'DepotHeadController.getDetailByNumber(..)', NULL, 'GET /apis/depotHead/getDetailByNumber', '{\"number\":\"XSCK-DO_2158-85\"}', '{\"code\":200,\"data\":{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountNumber\":\"\",\"address\":\"\",\"backAmount\":0.000000,\"bankName\":\"\",\"billType\":\"销售\",\"changeAmount\":0.000000,\"contacts\":\"\",\"createTime\":1785873600000,\"creator\":63,\"creatorName\":\"admin\",\"debt\":80850.000000,\"defaultNumber\":\"XSCK-DO_2158-85\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"depotHeadType\":\"销售出库\",\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"hasBackFlag\":false,\"id\":1669,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-DO_2158-85\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"phoneNum\":\"\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:DO_2158\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"taxNum\":\"\",\"telephone\":\"\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\"}}'); +INSERT INTO `tbl_log` VALUES (10098, 63, '接口日志', '43.174.54.50/1.9.116.218', '2026-10-09 08:21:14', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (10099, 63, '接口日志', '43.152.142.64/1.9.116.218', '2026-10-09 08:21:14', 0, 'AccountHeadController.getFinancialBillNoByBillId(..)', NULL, 'GET /apis/accountHead/getFinancialBillNoByBillId', '{\"billId\":1669}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (10100, 63, '接口日志', '43.152.142.43/1.9.116.218', '2026-10-09 08:21:14', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_print_flag\"}', '{\"code\":200,\"data\":{\"id\":4,\"platformKey\":\"bill_print_flag\",\"platformKeyInfo\":\"三联打印启用标记\",\"platformValue\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (10101, 63, '接口日志', '43.174.32.34/1.9.116.218', '2026-10-09 08:21:14', 0, 'DepotItemController.getDetailList(..)', NULL, 'GET /apis/depotItem/getDetailList', '{\"headerId\":1669,\"mpList\":\"扩展1,扩展2,扩展3\",\"linkType\":\"basic\",\"isReadOnly\":\"1\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"standard\":\"1PH WS79\",\"materialExtendId\":123,\"finishPurchaseNumber\":0,\"anotherDepotName\":\"\",\"color\":\"\",\"preNumber\":1000.000000,\"depotId\":26,\"remark\":\"\",\"purchaseDecimal\":59.500000,\"imgName\":\"\",\"operNumber\":1000.000000,\"anotherDepotId\":\"\",\"basicNumber\":1000.000000,\"taxLastMoney\":80850.000000,\"model\":\"1PH WS79\",\"id\":1474,\"enableSerialNumber\":\"0\",\"stock\":52400.000000,\"brand\":\"\",\"finishNumber\":0,\"expirationDate\":\"\",\"enableBatchNumber\":\"0\",\"unitPrice\":73.500000,\"op\":1,\"otherField1\":\"\",\"depotName\":\"成品仓库\",\"mfrs\":\"浙江瑞银电子有限公司\",\"weight\":0,\"otherField3\":\"\",\"otherField2\":\"\",\"taxMoney\":7350.000000,\"imgSmall\":\"\",\"barCode\":\"1PH-WS79\",\"taxUnitPrice\":80.850000,\"taxRate\":10.000000,\"unit\":\"件\",\"allPrice\":73500.000000,\"name\":\"1PH WS79\",\"imgLarge\":\"\",\"position\":\"\"},{\"allPrice\":73500.000000,\"finishPurchaseNumber\":0,\"operNumber\":1000.000000,\"taxLastMoney\":80850.000000,\"weight\":0,\"taxMoney\":7350.000000,\"finishNumber\":0}]}}'); +INSERT INTO `tbl_log` VALUES (10102, 63, '接口日志', '43.152.142.40/1.9.116.218', '2026-10-09 08:21:14', 0, 'DepotHeadController.getBillListByLinkNumber(..)', NULL, 'GET /apis/depotHead/getBillListByLinkNumber', '{\"number\":\"XSCK-DO_2158-85\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (10103, 63, '接口日志', '43.152.142.57/1.9.116.218', '2026-10-09 08:21:19', 0, 'DepotHeadController.getDetailByNumber(..)', NULL, 'GET /apis/depotHead/getDetailByNumber', '{\"number\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\"}', '{\"code\":200,\"data\":{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountNumber\":\"\",\"address\":\"\",\"backAmount\":0.000000,\"bankName\":\"\",\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"contacts\":\"\",\"createTime\":1767211200000,\"creator\":63,\"creatorName\":\"admin\",\"debt\":242550.000000,\"defaultNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"depotHeadType\":\"销售订单其它\",\"discount\":100.000000,\"discountLastMoney\":242550.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"hasBackFlag\":false,\"id\":1582,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":3000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"operTime\":1767211200000,\"operTimeStr\":\"2026-01-01 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"phoneNum\":\"\",\"remark\":\"Stock Status客户PO:blom tukar po date\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"taxNum\":\"\",\"telephone\":\"\",\"tenantId\":63,\"totalPrice\":242550.000000,\"type\":\"其它\"}}'); +INSERT INTO `tbl_log` VALUES (10104, 63, '接口日志', '43.152.142.78/1.9.116.218', '2026-10-09 08:21:19', 0, 'DepotHeadController.getDetailByNumber(..)', NULL, 'GET /apis/depotHead/getDetailByNumber', '{\"number\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\"}', '{\"code\":200,\"data\":{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountNumber\":\"\",\"address\":\"\",\"backAmount\":0.000000,\"bankName\":\"\",\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"contacts\":\"\",\"createTime\":1767211200000,\"creator\":63,\"creatorName\":\"admin\",\"debt\":242550.000000,\"defaultNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"depotHeadType\":\"销售订单其它\",\"discount\":100.000000,\"discountLastMoney\":242550.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"hasBackFlag\":false,\"id\":1582,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":3000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"operTime\":1767211200000,\"operTimeStr\":\"2026-01-01 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"phoneNum\":\"\",\"remark\":\"Stock Status客户PO:blom tukar po date\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"taxNum\":\"\",\"telephone\":\"\",\"tenantId\":63,\"totalPrice\":242550.000000,\"type\":\"其它\"}}'); +INSERT INTO `tbl_log` VALUES (10105, 63, '接口日志', '43.174.52.68/1.9.116.218', '2026-10-09 08:21:19', 0, 'AccountHeadController.getFinancialBillNoByBillId(..)', NULL, 'GET /apis/accountHead/getFinancialBillNoByBillId', '{\"billId\":1582}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (10106, 63, '接口日志', '43.152.142.86/1.9.116.218', '2026-10-09 08:21:19', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (10107, 63, '接口日志', '43.152.142.32/1.9.116.218', '2026-10-09 08:21:19', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_print_flag\"}', '{\"code\":200,\"data\":{\"id\":4,\"platformKey\":\"bill_print_flag\",\"platformKeyInfo\":\"三联打印启用标记\",\"platformValue\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (10108, 63, '接口日志', '43.152.142.29/1.9.116.218', '2026-10-09 08:21:19', 0, 'DepotItemController.getDetailList(..)', NULL, 'GET /apis/depotItem/getDetailList', '{\"headerId\":1582,\"mpList\":\"扩展1,扩展2,扩展3\",\"linkType\":\"basic\",\"isReadOnly\":\"1\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"standard\":\"1PH WS79\",\"materialExtendId\":123,\"finishPurchaseNumber\":0,\"anotherDepotName\":\"\",\"color\":\"\",\"preNumber\":3000.000000,\"depotId\":26,\"remark\":\"\",\"purchaseDecimal\":59.500000,\"imgName\":\"\",\"operNumber\":3000.000000,\"anotherDepotId\":\"\",\"basicNumber\":3000.000000,\"taxLastMoney\":242550.000000,\"model\":\"1PH WS79\",\"id\":1387,\"enableSerialNumber\":\"0\",\"stock\":52400.000000,\"brand\":\"\",\"finishNumber\":0,\"expirationDate\":\"\",\"enableBatchNumber\":\"0\",\"unitPrice\":73.500000,\"op\":1,\"otherField1\":\"\",\"depotName\":\"成品仓库\",\"mfrs\":\"浙江瑞银电子有限公司\",\"weight\":0,\"otherField3\":\"\",\"otherField2\":\"\",\"taxMoney\":22050.000000,\"imgSmall\":\"\",\"barCode\":\"1PH-WS79\",\"taxUnitPrice\":80.850000,\"taxRate\":10.000000,\"unit\":\"件\",\"allPrice\":220500.000000,\"name\":\"1PH WS79\",\"imgLarge\":\"\",\"position\":\"\"},{\"allPrice\":220500.000000,\"finishPurchaseNumber\":0,\"operNumber\":3000.000000,\"taxLastMoney\":242550.000000,\"weight\":0,\"taxMoney\":22050.000000,\"finishNumber\":0}]}}'); +INSERT INTO `tbl_log` VALUES (10109, 63, '接口日志', '43.174.32.18/1.9.116.218', '2026-10-09 08:21:19', 0, 'DepotHeadController.getBillListByLinkNumber(..)', NULL, 'GET /apis/depotHead/getBillListByLinkNumber', '{\"number\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (10110, 63, '接口日志', '43.174.53.14/1.9.116.218', '2026-10-09 08:21:23', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"出库\\\",\\\"subType\\\":\\\"销售\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-07-09\\\",\\\"endTime\\\":\\\"2026-10-09\\\",\\\"createTimeRange\\\":[\\\"2026-07-08T16:00:00.000Z\\\",\\\"2026-10-08T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":32,\"rows\":[{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789718584000,\"creator\":63,\"debt\":808500.000000,\"defaultNumber\":\"XSCK00000001728\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":808500.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1720,\"lastDebt\":808500.000000,\"lastDeposit\":0.000000,\"linkNumber\":\"XSDD00000001726\",\"materialCount\":10000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK00000001728\",\"operTime\":1789732981000,\"operTimeStr\":\"2026-09-18 16:03:01\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"totalPrice\":735000.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1786305600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-87\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1671,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303506-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-87\",\"operTime\":1786305600000,\"operTimeStr\":\"2026-08-10 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1786305600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2159-86\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1670,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303506-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2159-86\",\"operTime\":1786305600000,\"operTimeStr\":\"2026-08-10 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2159\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785873600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-DO_2158-85\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1669,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-DO_2158-85\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:DO_2158\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785873600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-84\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1668,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-84\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785873600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-DO_2157-83\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1667,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-DO_2157-83\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:DO_2157\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785268800000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2150-69\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1665,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303480-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2150-69\",\"operTime\":1785268800000,\"operTimeStr\":\"2026-07-29 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2150\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784750400000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2142-68\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1664,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303480-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2142-68\",\"operTime\":1784750400000,\"operTimeStr\":\"2026-07-23 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2142\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784145600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-67\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1663,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-67\",\"operTime\":1784145600000,\"operTimeStr\":\"2026-07-16 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784145600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2134-66\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1662,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2134-66\",\"operTime\":1784145600000,\"operTimeStr\":\"2026-07-16 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2134\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (10111, 63, '接口日志', '43.152.157.121/1.9.116.218', '2026-10-09 08:21:29', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (10112, 63, '接口日志', '43.174.53.30/1.9.116.218', '2026-10-09 08:21:29', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (10113, 63, '接口日志', '43.174.53.17/1.9.116.218', '2026-10-09 08:21:29', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (10114, 63, '接口日志', '43.152.142.105/1.9.116.218', '2026-10-09 08:21:29', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (10115, 63, '接口日志', '43.152.142.112/1.9.116.218', '2026-10-09 08:21:29', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (10116, 63, '接口日志', '43.174.54.14/1.9.116.218', '2026-10-09 08:21:29', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"其它\\\",\\\"subType\\\":\\\"销售订单\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-07-09\\\",\\\"endTime\\\":\\\"2026-10-09\\\",\\\"createTimeRange\\\":[\\\"2026-07-08T16:00:00.000Z\\\",\\\"2026-10-08T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":4,\"rows\":[{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789718483000,\"creator\":63,\"debt\":808500.000000,\"defaultNumber\":\"XSDD00000001726\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":808500.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1719,\"lastDebt\":808500.000000,\"lastDeposit\":0.000000,\"materialCount\":10000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD00000001726\",\"operTime\":1789732682000,\"operTimeStr\":\"2026-09-18 15:58:02\",\"organId\":90,\"organName\":\"TNB\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"totalPrice\":735000.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789726236000,\"creator\":63,\"debt\":340000000.000000,\"defaultNumber\":\"XSDD00000001724\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":340000000.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1718,\"lastDebt\":340000000.000000,\"lastDeposit\":0.000000,\"materialCount\":1000000.000000,\"materialsList\":\"3PH APEC3-WC 3PH APEC3-WC 3PH APEC3-WC \",\"number\":\"XSDD00000001724\",\"operTime\":1789725706000,\"operTimeStr\":\"2026-09-18 14:01:46\",\"organId\":90,\"organName\":\"TNB\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"0\",\"subType\":\"销售订单\",\"totalPrice\":340000000.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1785355200000,\"creator\":63,\"debt\":242550.000000,\"defaultNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":242550.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1580,\"lastDebt\":242550.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":3000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303475-1PH-WS79-ADD1\",\"operTime\":1785355200000,\"operTimeStr\":\"2026-07-30 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303475\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":242550.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1785355200000,\"creator\":63,\"debt\":323400.000000,\"defaultNumber\":\"XSDD-42303447-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":323400.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1574,\"lastDebt\":323400.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":4000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303447-1PH-WS79-ADD1\",\"operTime\":1785355200000,\"operTimeStr\":\"2026-07-30 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303447\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":323400.000000,\"type\":\"其它\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (10117, 63, '接口日志', '43.152.142.132/1.9.116.218', '2026-10-09 08:21:29', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (10118, 63, '接口日志', '43.152.142.139/1.9.116.218', '2026-10-09 08:21:29', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (10119, 63, '接口日志', '43.174.32.23/1.9.116.218', '2026-10-09 08:21:29', 0, 'PersonController.getPersonByNumType(..)', NULL, 'GET /apis/person/getPersonByNumType', '{\"typeNum\":\"1\"}', '[]'); +INSERT INTO `tbl_log` VALUES (10120, 63, '接口日志', '43.152.142.141/1.9.116.218', '2026-10-09 08:21:34', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0},{\"month\":\"2026-10\",\"inbound\":0,\"ordered\":0,\"shipped\":0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (10121, 63, '接口日志', '43.152.157.121/1.9.116.218', '2026-10-09 08:21:59', 0, 'SupplierController.findBySelectSup(..)', NULL, 'POST /apis/supplier/findBySelect_sup', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司\",\"id\":89}]'); +INSERT INTO `tbl_log` VALUES (10122, 63, '接口日志', '43.174.32.13/1.9.116.218', '2026-10-09 08:21:59', 0, 'DepotHeadController.getStatementAccount(..)', NULL, 'GET /apis/depotHead/getStatementAccount', '{\"currentPage\":1,\"pageSize\":10,\"beginTime\":\"2026-07-09\",\"endTime\":\"2026-10-09\",\"hasDebt\":1,\"supplierType\":\"供应商\"}', '{\"code\":200,\"data\":{\"total\":1,\"firstMoney\":103509293.334800,\"lastMoney\":116500257.436400,\"rows\":[{\"allNeed\":116500257.436400,\"backMoney\":2139558.598400,\"beginNeed\":0.000000,\"contacts\":\"\",\"debtMoney\":15130522.700000,\"email\":\"\",\"id\":89,\"phoneNum\":\"\",\"preBackMoney\":10686582.135200,\"preDebtMoney\":114195875.470000,\"preNeed\":103509293.334800,\"preReturnDebtMoney\":0.000000,\"returnDebtMoney\":0.000000,\"supplier\":\"浙江瑞银电子有限公司\",\"telephone\":\"\"}]}}'); +INSERT INTO `tbl_log` VALUES (10123, 63, '接口日志', '43.174.32.23/1.9.116.218', '2026-10-09 08:22:34', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (10124, 63, '接口日志', '43.174.53.30/1.9.116.218', '2026-10-09 08:22:34', 0, 'PersonController.getPersonByType(..)', NULL, 'GET /apis/person/getPersonByType', '{\"type\":\"财务员\"}', '{\"code\":200,\"data\":{\"personList\":[{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":43,\"name\":\"Juwairiah\",\"type\":\"财务员\"}]}}'); +INSERT INTO `tbl_log` VALUES (10125, 63, '接口日志', '43.152.142.141/1.9.116.218', '2026-10-09 08:22:34', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (10126, 63, '接口日志', '43.174.32.18/1.9.116.218', '2026-10-09 08:22:34', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (10127, 63, '接口日志', '43.152.142.40/1.9.116.218', '2026-10-09 08:22:34', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (10128, 63, '接口日志', '43.152.142.64/1.9.116.218', '2026-10-09 08:22:34', 0, 'DepotHeadController.debtList(..)', NULL, 'GET /apis/depotHead/debtList', '{\"search\":\"{\\\"organId\\\":89,\\\"materialParam\\\":\\\"\\\",\\\"number\\\":\\\"\\\",\\\"type\\\":\\\"入库\\\",\\\"subType\\\":\\\"采购\\\",\\\"status\\\":\\\"\\\",\\\"mpList\\\":\\\"扩展1,扩展2,扩展3\\\",\\\"beginTime\\\":\\\"2026-07-09\\\",\\\"endTime\\\":\\\"2026-10-09\\\"}\",\"currentPage\":1,\"pageSize\":10001}', '{\"code\":200,\"data\":{\"total\":35,\"rows\":[{\"fileName\":\"\",\"totalPrice\":100000.000000,\"discount\":0.000000,\"discountLastMoney\":100000.000000,\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"入库\",\"operTimeStr\":\"2026-09-18 16:29:02\",\"deleteFlag\":\"0\",\"number\":\"CGRK00000001740\",\"payType\":\"现付\",\"accountIdList\":\"\",\"needDebt\":100000.000000,\"id\":1724,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"operTime\":\"2026-09-18\",\"creator\":63,\"materialsList\":\"MD-4G111(VF) 包装 MD-4G111(VF) packing MD-4G111(VF) \",\"defaultNumber\":\"CGRK00000001740\",\"linkNumber\":\"CGDD00000001739\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"accountId\":17,\"organName\":\"浙江瑞银电子有限公司\",\"lastDebt\":100000.000000,\"otherMoney\":0.000000,\"createTime\":1789720142000,\"deposit\":0,\"organId\":89,\"purchaseStatus\":\"0\",\"subType\":\"采购\",\"debt\":100000.000000,\"status\":\"1\"},{\"totalPrice\":595000.000000,\"discountLastMoney\":595000.000000,\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"入库\",\"operTimeStr\":\"2026-09-18 16:06:03\",\"deleteFlag\":\"0\",\"number\":\"SM2609180001\",\"payType\":\"现付\",\"needDebt\":595000.000000,\"id\":1721,\"finishDebt\":0.000000,\"operTime\":\"2026-09-18\",\"creator\":63,\"materialsList\":\"1PH WS79\",\"defaultNumber\":\"SM2609180001\",\"userName\":\"admin\",\"organName\":\"浙江瑞银电子有限公司\",\"lastDebt\":595000.000000,\"otherMoney\":0.000000,\"createTime\":1789718802000,\"deposit\":0.000000,\"organId\":89,\"purchaseStatus\":\"0\",\"subType\":\"总部入库\",\"debt\":595000.000000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":0.700000,\"discount\":0.000000,\"discountLastMoney\":0.700000,\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"入库\",\"operTimeStr\":\"2026-09-18 11:44:34\",\"deleteFlag\":\"0\",\"number\":\"CGRK00000001721\",\"payType\":\"现付\",\"accountIdList\":\"\",\"needDebt\":0.700000,\"id\":1717,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"operTime\":\"2026-09-18\",\"creator\":63,\"materialsList\":\"MD-4G111(VF) 4G模块 MD-4G111(VF) MD-4G111(VF) \",\"defaultNumber\":\"CGRK00000001721\",\"linkNumber\":\"CGDD00000001720\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"accountId\":17,\"organName\":\"浙江瑞银电子有限公司\",\"lastDebt\":0.700000,\"otherMoney\":0.000000,\"createTime\":1789717476000,\"deposit\":0,\"organId\":89,\"purchaseStatus\":\"0\",\"subType\":\"采购\",\"debt\":0.700000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":183.600000,\"discount\":100.000000,\"discountLastMoney\":183.600000,\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"入库\",\"operTimeStr\":\"2026-08-07 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"SM2608070007\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":183.600000,\"id\":1423,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-08-07\",\"creator\":63,\"materialsList\":\"MT-3NSXL(VC)\",\"defaultNumber\":\"SM2608070007\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"organName\":\"浙江瑞银电子有限公司\",\"lastDebt\":183.600000,\"otherMoney\":0.000000,\"createTime\":1786046400000,\"tenantId\":63,\"deposit\":0.000000,\"organId\":89,\"subType\":\"总部入库\",\"debt\":183.600000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":2077650.000000,\"discount\":100.000000,\"discountLastMoney\":2077650.000000,\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"入库\",\"operTimeStr\":\"2026-08-07 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"SM2608070002\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":2077650.000000,\"id\":1422,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-08-07\",\"creator\":63,\"materialsList\":\"DDSD1226-T49(VB)\",\"defaultNumber\":\"SM2608070002\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"organName\":\"浙江瑞银电子有限公司\",\"lastDebt\":2077650.000000,\"otherMoney\":0.000000,\"createTime\":1786046400000,\"tenantId\":63,\"deposit\":0.000000,\"organId\":89,\"subType\":\"总部入库\",\"debt\":2077650.000000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":91854.000000,\"discount\":100.000000,\"discountLastMoney\":91854.000000,\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"入库\",\"operTimeStr\":\"2026-08-06 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"SM2608060005\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":91854.000000,\"id\":1421,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-08-06\",\"creator\":63,\"materialsList\":\"DDSD1226-T49(VB)\",\"defaultNumber\":\"SM2608060005\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"organName\":\"浙江瑞银电子有限公司\",\"lastDebt\":91854.000000,\"otherMoney\":0.000000,\"createTime\":1785960000000,\"tenantId\":63,\"deposit\":0.000000,\"organId\":89,\"subType\":\"总部入库\",\"debt\":91854.000000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":816.000000,\"discount\":100.000000,\"discountLastMoney\":816.000000,\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"入库\",\"operTimeStr\":\"2026-08-06 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"SM2608060004\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":816.000000,\"id\":1420,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-08-06\",\"creator\":63,\"materialsList\":\"MT-3NSXL(VC)\",\"defaultNumber\":\"SM2608060004\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"organName\":\"浙江瑞银电子有限公司\",\"lastDebt\":816.000000,\"otherMoney\":0.000000,\"createTime\":1785960000000,\"tenantId\":63,\"deposit\":0.000000,\"organId\":89,\"subType\":\"总部入库\",\"debt\":816.000000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":91854.000000,\"discount\":100.000000,\"discountLastMoney\":91854.000000,\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"入库\",\"operTimeStr\":\"2026-07-24 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"SM2607240005\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":91854.000000,\"id\":1419,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-07-24\",\"creator\":63,\"materialsList\":\"DDSD1226-T49(VB)\",\"defaultNumber\":\"SM2607240005\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"organName\":\"浙江瑞银电子有限公司\",\"lastDebt\":91854.000000,\"otherMoney\":0.000000,\"createTime\":1784836800000,\"tenantId\":63,\"deposit\":0.000000,\"organId\":89,\"subType\":\"总部入库\",\"debt\":91854.000000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":551124.000000,\"discount\":100.000000,\"discountLastMoney\":551124.000000,\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"入库\",\"operTimeStr\":\"2026-07-23 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"SM2607230004\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":551124.000000,\"id\":1418,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-07-23\",\"creator\":63,\"materialsList\":\"DDSD1226-T49(VB)\",\"defaultNumber\":\"SM2607230004\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"organName\":\"浙江瑞银电子有限公司\",\"lastDebt\":551124.000000,\"otherMoney\":0.000000,\"createTime\":1784750400000,\"tenantId\":63,\"deposit\":0.000000,\"organId\":89,\"subType\":\"总部入库\",\"debt\":551124.000000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":1285956.000000,\"discount\":100.000000,\"discountLastMoney\":1285956.000000,\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"入库\",\"operTimeStr\":\"2026-07-23 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"SM2607230002\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":1285956.000000,\"id\":1417,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-07-23\",\"creator\":63,\"materialsList\":\"DDSD1226-T49(VB)\",\"defaultNumber\":\"SM2607230002\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"organName\":\"浙江瑞银电子有限公司\",\"lastDebt\":1285956.000000,\"otherMoney\":0.000000,\"createTime\":1784750400000,\"tenantId\":63,\"deposit\":0.000000,\"organId\":89,\"subType\":\"总部入库\",\"debt\":1285956.000000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":1020.000000,\"discount\":100.000000,\"discountLastMoney\":1020.000000,\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"入库\",\"operTimeStr\":\"2026-07-22 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"SM2607220006\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":1020.000000,\"id\":1416,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-07-22\",\"creator\":63,\"materialsList\":\"MT-3NSXL(VC)\",\"defaultNumber\":\"SM2607220006\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"organName\":\"浙江瑞银电子有限公司\",\"lastDebt\":1020.000000,\"otherMoney\":0.000000,\"createTime\":1784664000000,\"tenantId\":63,\"deposit\":0.000000,\"organId\":89,\"subType\":\"总部入库\",\"debt\":1020.000000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":275562.000000,\"discount\":100.000000,\"discountLastMoney\":275562.000000,\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"入库\",\"operTimeStr\":\"2026-07-22 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"SM2607220004\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":275562.000000,\"id\":1415,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-07-22\",\"creator\":63,\"materialsList\":\"DDSD1226-T49(VB)\",\"defaultNumber\":\"SM2607220004\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"organName\":\"浙江瑞银电子有限公司\",\"lastDebt\":275562.000000,\"otherMoney\":0.000000,\"createTime\":1784664000000,\"tenantId\":63,\"deposit\":0.000000,\"organId\":89,\"subType\":\"总部入库\",\"debt\":275562.000000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":291600.000000,\"discount\":100.000000,\"discountLastMoney\":291600.000000,\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"入库\",\"operTimeStr\":\"2026-07-20 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"SM2607200002\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":291600.000000,\"id\":1414,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-07-20\",\"creator\":63,\"materialsList\":\"DTSD1226-T46(VC)\",\"defaultNumber\":\"SM2607200002\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"organName\":\"浙江瑞银电子有限公司\",\"lastDebt\":291600.000000,\"otherMoney\":0.000000,\"createTime\":1784491200000,\"tenantId\":63,\"deposit\":0.000000,\"organId\":89,\"subType\":\"总部入库\",\"debt\":291600.000000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":510300.000000,\"discount\":100.000000,\"discountLastMoney\":510300.000000,\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"入库\",\"operTimeStr\":\"2026-07-18 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"SM2607180007\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":510300.000000,\"id\":1409,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-07-18\",\"creator\":63,\"materialsList\":\"DTSD1226-T46(VC)\",\"defaultNumber\":\"SM2607180007\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"organName\":\"浙江瑞银电子有限公司\",\"lastDebt\":510300.000000,\"otherMoney\":0.000000,\"createTime\":1784318400000,\"tenantId\":63,\"deposit\":0.000000,\"organId\":89,\"subType\":\"总部入库\",\"debt\":510300.000000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":102060.000000,\"discount\":100.000000,\"discountLastMoney\":102060.000000,\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"入库\",\"operTimeStr\":\"2026-07-18 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"SM2607180014\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":102060.000000,\"id\":1413,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-07-18\",\"creator\":63,\"materialsList\":\"DTSD1226-T46(VC)\",\"defaultNumber\":\"SM2607180014\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"organName\":\"浙江瑞银电子有限公司\",\"lastDebt\":102060.000000,\"otherMoney\":0.000000,\"createTime\":1784318400000,\"tenantId\":63,\"deposit\":0.000000,\"organId\":89,\"subType\":\"总部入库\",\"debt\":102060.000000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":1020600.000000,\"discount\":100.000000,\"discountLastMoney\":1020600.000000,\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"入库\",\"operTimeStr\":\"2026-07-18 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"SM2607180013\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":1020600.000000,\"id\":1412,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-07-18\",\"creator\":63,\"materialsList\":\"DTSD1226-T46(VC)\",\"defaultNumber\":\"SM2607180013\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"organName\":\"浙江瑞银电子有限公司\",\"lastDebt\":1020600.000000,\"otherMoney\":0.000000,\"createTime\":1784318400000,\"tenantId\":63,\"deposit\":0.000000,\"organId\":89,\"subType\":\"总部入库\",\"debt\":1020600.000000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":102060.000000,\"discount\":100.000000,\"discountLastMoney\":102060.000000,\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"入库\",\"operTimeStr\":\"2026-07-18 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"SM2607180010\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":102060.000000,\"id\":1411,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-07-18\",\"creator\":63,\"materialsList\":\"DTSD1226-T46(VC)\",\"defaultNumber\":\"SM2607180010\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"organName\":\"浙江瑞银电子有限公司\",\"lastDebt\":102060.000000,\"otherMoney\":0.000000,\"createTime\":1784318400000,\"tenantId\":63,\"deposit\":0.000000,\"organId\":89,\"subType\":\"总部入库\",\"debt\":102060.000000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":102060.000000,\"discount\":100.000000,\"discountLastMoney\":102060.000000,\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"入库\",\"operTimeStr\":\"2026-07-18 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"SM2607180009\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":102060.000000,\"id\":1410,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-07-18\",\"creator\":63,\"materialsList\":\"DTSD1226-T46(VC)\",\"defaultNumber\":\"SM2607180009\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"organName\":\"浙江瑞银电子有限公司\",\"lastDebt\":102060.000000,\"otherMoney\":0.000000,\"createTime\":1784318400000,\"tenantId\":63,\"deposit\":0.000000,\"organId\":89,\"subType\":\"总部入库\",\"debt\":102060.000000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":161935.200000,\"discount\":100.000000,\"discountLastMoney\":161935.200000,\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"入库\",\"operTimeStr\":\"2026-07-17 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"SM2607170005\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":161935.200000,\"id\":1408,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-07-17\",\"creator\":63,\"materialsList\":\"DTSD1226-CXVI(VA)\",\"defaultNumber\":\"SM2607170005\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"organName\":\"浙江瑞银电子有限公司\",\"lastDebt\":161935.200000,\"otherMoney\":0.000000,\"createTime\":1784232000000,\"tenantId\":63,\"deposit\":0.000000,\"organId\":89,\"subType\":\"总部入库\",\"debt\":161935.200000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":385.200000,\"discount\":100.000000,\"discountLastMoney\":385.200000,\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"入库\",\"operTimeStr\":\"2026-07-16 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"SM2607160006\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":385.200000,\"id\":1407,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-07-16\",\"creator\":63,\"materialsList\":\"MT-3NSXL(VC)\",\"defaultNumber\":\"SM2607160006\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"organName\":\"浙江瑞银电子有限公司\",\"lastDebt\":385.200000,\"otherMoney\":0.000000,\"createTime\":1784145600000,\"tenantId\":63,\"deposit\":0.000000,\"organId\":89,\"subType\":\"总部入库\",\"debt\":385.200000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":1457416.800000,\"discount\":100.000000,\"discountLastMoney\":1457416.800000,\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"入库\",\"operTimeStr\":\"2026-07-16 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"SM2607160005\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":1457416.800000,\"id\":1406,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-07-16\",\"creator\":63,\"materialsList\":\"DTSD1226-CXVI(VA)\",\"defaultNumber\":\"SM2607160005\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"organName\":\"浙江瑞银电子有限公司\",\"lastDebt\":1457416.800000,\"otherMoney\":0.000000,\"createTime\":1784145600000,\"tenantId\":63,\"deposit\":0.000000,\"organId\":89,\"subType\":\"总部入库\",\"debt\":1457416.800000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":408240.000000,\"discount\":100.000000,\"discountLastMoney\":408240.000000,\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"入库\",\"operTimeStr\":\"2026-07-15 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"SM2607150003\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":408240.000000,\"id\":1405,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-07-15\",\"creator\":63,\"materialsList\":\"DTSD1226-T46(VC)\",\"defaultNumber\":\"SM2607150003\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"organName\":\"浙江瑞银电子有限公司\",\"lastDebt\":408240.000000,\"otherMoney\":0.000000,\"createTime\":1784059200000,\"tenantId\":63,\"deposit\":0.000000,\"organId\":89,\"subType\":\"总部入库\",\"debt\":408240.000000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":1619352.000000,\"discount\":100.000000,\"discountLastMoney\":1619352.000000,\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"入库\",\"operTimeStr\":\"2026-07-14 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"SM2607140007\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":1619352.000000,\"id\":1401,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-07-14\",\"creator\":63,\"materialsList\":\"DTSD1226-CXVI(VA)\",\"defaultNumber\":\"SM2607140007\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"organName\":\"浙江瑞银电子有限公司\",\"lastDebt\":1619352.000000,\"otherMoney\":0.000000,\"createTime\":1783972800000,\"tenantId\":63,\"deposit\":0.000000,\"organId\":89,\"subType\":\"总部入库\",\"debt\":1619352.000000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":816480.000000,\"discount\":100.000000,\"discountLastMoney\":816480.000000,\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"入库\",\"operTimeStr\":\"2026-07-14 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"SM2607140010\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":816480.000000,\"id\":1402,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-07-14\",\"creator\":63,\"materialsList\":\"DTSD1226-T46(VC)\",\"defaultNumber\":\"SM2607140010\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"organName\":\"浙江瑞银电子有限公司\",\"lastDebt\":816480.000000,\"otherMoney\":0.000000,\"createTime\":1783972800000,\"tenantId\":63,\"deposit\":0.000000,\"organId\":89,\"subType\":\"总部入库\",\"debt\":816480.000000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":1224720.000000,\"discount\":100.000000,\"discountLastMoney\":1224720.000000,\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"source\":\"0\",\"changeAmount\":0.000000,\"type\":\"入库\",\"operTimeStr\":\"2026-07-14 00:00:00\",\"deleteFlag\":\"0\",\"number\":\"SM2607140011\",\"linkApply\":\"\",\"payType\":\"记账\",\"accountIdList\":\"\",\"needDebt\":1224720.000000,\"id\":1403,\"finishDebt\":0.000000,\"lastDeposit\":0.000000,\"salesMan\":\"\",\"operTime\":\"2026-07-14\",\"creator\":63,\"materialsList\":\"DTSD1226-T46(VC)\",\"defaultNumber\":\"SM2607140011\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"discountMoney\":0.000000,\"userName\":\"admin\",\"accountMoneyList\":\"\",\"organName\":\"浙江瑞银电子有限公司\",\"lastDebt\":1224720.000000,\"otherMoney\":0.000000,\"createTime\":1783972800000,\"tenantId\":63,\"deposit\":0.000000,\"organId\":89,\"subType\":\"总部入库\",\"debt\":1224720.000000,\"status\":\"1\"},{\"fileName\":\"\",\"totalPrice\":510.000000,\"discount\":100.000000,\"discountLastMoney\":510.000000,...[已截断]'); +INSERT INTO `tbl_log` VALUES (10129, 63, '接口日志', '43.152.142.32/1.9.116.218', '2026-10-09 08:22:51', 0, 'AccountHeadController.getList(..)', NULL, 'GET /apis/accountHead/list', '{\"search\":\"{\\\"billNo\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-07-09\\\",\\\"endTime\\\":\\\"2026-10-09\\\",\\\"searchMaterial\\\":\\\"\\\",\\\"type\\\":\\\"付款\\\",\\\"organId\\\":89,\\\"creator\\\":\\\"\\\",\\\"handsPersonId\\\":\\\"\\\",\\\"accountId\\\":\\\"\\\",\\\"status\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"number\\\":\\\"\\\",\\\"createTimeRange\\\":[\\\"2026-07-08T16:00:00.000Z\\\",\\\"2026-10-08T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":3,\"rows\":[{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"FK-PV-008186-87-3PH-APEC3-WC-OV-25\",\"billTime\":1786651200000,\"billTimeStr\":\"2026-08-14 00:00:00\",\"changeAmount\":947751.900000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":104,\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"remark\":\"Stock Status供应商付款;PV:PV 008186/87\",\"source\":\"0\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":947751.900000,\"type\":\"付款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"FK-PV-008145-45---ZHEJIANG-METRONIX-3PH-APEC3-WC-O\",\"billTime\":1785700800000,\"billTimeStr\":\"2026-08-03 00:00:00\",\"changeAmount\":954860.058400,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":100,\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"remark\":\"Stock Status供应商付款;PV:PV 008145/45 - ZHEJIANG & METRONIX\",\"source\":\"0\",\"sourceNumber\":\"CGRK-260415-01-11\",\"sourceTime\":\"2026-04-29 00:00:00\",\"sourceType\":\"采购入库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":954860.058400,\"type\":\"付款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"FK-PV-008186-87-1PH-WS79-ADD1-11\",\"billTime\":1786651200000,\"billTimeStr\":\"2026-08-14 00:00:00\",\"changeAmount\":236946.640000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":92,\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"remark\":\"Stock Status供应商付款;PV:PV 008186/87\",\"source\":\"0\",\"sourceNumber\":\"CGRK-260414-01-11\",\"sourceTime\":\"2026-04-29 00:00:00\",\"sourceType\":\"采购入库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":236946.640000,\"type\":\"付款\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (10130, 63, '接口日志', '43.152.142.43/1.9.116.218', '2026-10-09 08:23:09', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0},{\"month\":\"2026-10\",\"inbound\":0,\"ordered\":0,\"shipped\":0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (10131, 63, '接口日志', '43.174.32.18/1.9.116.218', '2026-10-09 08:23:23', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (10132, 63, '接口日志', '43.174.32.13/1.9.116.218', '2026-10-09 08:23:23', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (10133, 63, '接口日志', '43.152.142.29/1.9.116.218', '2026-10-09 08:23:23', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (10134, 63, '接口日志', '43.152.157.121/1.9.116.218', '2026-10-09 08:23:23', 0, 'SupplierController.findBySelectSup(..)', NULL, 'POST /apis/supplier/findBySelect_sup', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司\",\"id\":89}]'); +INSERT INTO `tbl_log` VALUES (10135, 63, '接口日志', '43.152.142.132/1.9.116.218', '2026-10-09 08:23:23', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (10136, 63, '接口日志', '43.152.142.43/1.9.116.218', '2026-10-09 08:23:23', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"入库\\\",\\\"subType\\\":\\\"总部入库\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-07-09\\\",\\\"endTime\\\":\\\"2026-10-09\\\",\\\"createTimeRange\\\":[\\\"2026-07-08T16:00:00.000Z\\\",\\\"2026-10-08T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":33,\"rows\":[{\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789718802000,\"creator\":63,\"debt\":595000.000000,\"defaultNumber\":\"SM2609180001\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discountLastMoney\":595000.000000,\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1721,\"lastDebt\":595000.000000,\"materialCount\":10000.000000,\"materialsList\":\"1PH WS79\",\"number\":\"SM2609180001\",\"operTime\":1789733163000,\"operTimeStr\":\"2026-09-18 16:06:03\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"totalPrice\":595000.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1786046400000,\"creator\":63,\"debt\":183.600000,\"defaultNumber\":\"SM2608070007\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":183.600000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1423,\"lastDebt\":183.600000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":1836.000000,\"materialsList\":\"MT-3NSXL(VC)\",\"number\":\"SM2608070007\",\"operTime\":1786046400000,\"operTimeStr\":\"2026-08-07 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":183.600000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1786046400000,\"creator\":63,\"debt\":2077650.000000,\"defaultNumber\":\"SM2608070002\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":2077650.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1422,\"lastDebt\":2077650.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":9500.000000,\"materialsList\":\"DDSD1226-T49(VB)\",\"number\":\"SM2608070002\",\"operTime\":1786046400000,\"operTimeStr\":\"2026-08-07 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":2077650.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1785960000000,\"creator\":63,\"debt\":91854.000000,\"defaultNumber\":\"SM2608060005\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":91854.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1421,\"lastDebt\":91854.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":420.000000,\"materialsList\":\"DDSD1226-T49(VB)\",\"number\":\"SM2608060005\",\"operTime\":1785960000000,\"operTimeStr\":\"2026-08-06 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":91854.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1785960000000,\"creator\":63,\"debt\":816.000000,\"defaultNumber\":\"SM2608060004\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":816.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1420,\"lastDebt\":816.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":8160.000000,\"materialsList\":\"MT-3NSXL(VC)\",\"number\":\"SM2608060004\",\"operTime\":1785960000000,\"operTimeStr\":\"2026-08-06 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":816.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1784836800000,\"creator\":63,\"debt\":91854.000000,\"defaultNumber\":\"SM2607240005\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":91854.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1419,\"lastDebt\":91854.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":420.000000,\"materialsList\":\"DDSD1226-T49(VB)\",\"number\":\"SM2607240005\",\"operTime\":1784836800000,\"operTimeStr\":\"2026-07-24 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":91854.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1784750400000,\"creator\":63,\"debt\":551124.000000,\"defaultNumber\":\"SM2607230004\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":551124.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1418,\"lastDebt\":551124.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":2520.000000,\"materialsList\":\"DDSD1226-T49(VB)\",\"number\":\"SM2607230004\",\"operTime\":1784750400000,\"operTimeStr\":\"2026-07-23 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":551124.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1784750400000,\"creator\":63,\"debt\":1285956.000000,\"defaultNumber\":\"SM2607230002\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":1285956.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1417,\"lastDebt\":1285956.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":5880.000000,\"materialsList\":\"DDSD1226-T49(VB)\",\"number\":\"SM2607230002\",\"operTime\":1784750400000,\"operTimeStr\":\"2026-07-23 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":1285956.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1784664000000,\"creator\":63,\"debt\":1020.000000,\"defaultNumber\":\"SM2607220006\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":1020.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1416,\"lastDebt\":1020.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":10200.000000,\"materialsList\":\"MT-3NSXL(VC)\",\"number\":\"SM2607220006\",\"operTime\":1784664000000,\"operTimeStr\":\"2026-07-22 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":1020.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"总部入库\",\"changeAmount\":0.000000,\"createTime\":1784664000000,\"creator\":63,\"debt\":275562.000000,\"defaultNumber\":\"SM2607220004\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":275562.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1415,\"lastDebt\":275562.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":1260.000000,\"materialsList\":\"DDSD1226-T49(VB)\",\"number\":\"SM2607220004\",\"operTime\":1784664000000,\"operTimeStr\":\"2026-07-22 00:00:00\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"SMT出库单详情初始化;已审核;价税合计计入应付\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"总部入库\",\"tenantId\":63,\"totalPrice\":275562.000000,\"type\":\"入库\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (10137, 63, '接口日志', '43.174.54.14/1.9.116.218', '2026-10-09 08:23:23', 0, 'DepotHeadController.waitBillCount(..)', NULL, 'GET /apis/depotHead/waitBillCount', '{\"search\":\"{\\\"type\\\":\\\"入库\\\",\\\"subType\\\":\\\"采购,销售退货\\\",\\\"status\\\":\\\"1,3\\\"}\"}', '{\"code\":200,\"data\":{\"total\":47,\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (10138, 63, '接口日志', '43.152.157.121/1.9.116.218', '2026-10-09 08:23:24', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (10139, 63, '接口日志', '43.152.142.32/1.9.116.218', '2026-10-09 08:23:24', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (10140, 63, '接口日志', '43.174.32.23/1.9.116.218', '2026-10-09 08:23:24', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (10141, 63, '接口日志', '43.152.142.40/1.9.116.218', '2026-10-09 08:23:24', 0, 'DepotHeadController.waitBillCount(..)', NULL, 'GET /apis/depotHead/waitBillCount', '{\"search\":\"{\\\"type\\\":\\\"出库\\\",\\\"subType\\\":\\\"销售,采购退货\\\",\\\"status\\\":\\\"1,3\\\"}\"}', '{\"code\":200,\"data\":{\"total\":167,\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (10142, 63, '接口日志', '43.152.142.105/1.9.116.218', '2026-10-09 08:23:24', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (10143, 63, '接口日志', '43.174.54.50/1.9.116.218', '2026-10-09 08:23:24', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"出库\\\",\\\"subType\\\":\\\"其它\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-07-09\\\",\\\"endTime\\\":\\\"2026-10-09\\\",\\\"createTimeRange\\\":[\\\"2026-07-08T16:00:00.000Z\\\",\\\"2026-10-08T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (10144, 63, '接口日志', '43.174.32.34/1.9.116.218', '2026-10-09 08:23:24', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (10145, 63, '接口日志', '43.152.142.141/1.9.116.218', '2026-10-09 08:23:26', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (10146, 63, '接口日志', '43.152.142.64/1.9.116.218', '2026-10-09 08:23:26', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"入库\\\",\\\"subType\\\":\\\"其它\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-07-09\\\",\\\"endTime\\\":\\\"2026-10-09\\\",\\\"createTimeRange\\\":[\\\"2026-07-08T16:00:00.000Z\\\",\\\"2026-10-08T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (10147, 63, '接口日志', '43.152.157.121/1.9.116.218', '2026-10-09 08:23:26', 0, 'SupplierController.findBySelectSup(..)', NULL, 'POST /apis/supplier/findBySelect_sup', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司\",\"id\":89}]'); +INSERT INTO `tbl_log` VALUES (10148, 63, '接口日志', '43.152.142.112/1.9.116.218', '2026-10-09 08:23:26', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (10149, 63, '接口日志', '43.152.142.139/1.9.116.218', '2026-10-09 08:23:26', 0, 'DepotHeadController.waitBillCount(..)', NULL, 'GET /apis/depotHead/waitBillCount', '{\"search\":\"{\\\"type\\\":\\\"入库\\\",\\\"subType\\\":\\\"采购,销售退货\\\",\\\"status\\\":\\\"1,3\\\"}\"}', '{\"code\":200,\"data\":{\"total\":47,\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (10150, 63, '接口日志', '43.152.142.86/1.9.116.218', '2026-10-09 08:23:26', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (10151, 63, '接口日志', '43.152.142.78/1.9.116.218', '2026-10-09 08:23:26', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (10152, 63, '接口日志', '43.174.53.30/1.9.116.218', '2026-10-09 08:23:53', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"type\\\":\\\"出库\\\",\\\"subType\\\":\\\"其它\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (10153, 63, '接口日志', '43.174.53.14/1.9.116.218', '2026-10-09 08:23:53', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"type\\\":\\\"出库\\\",\\\"subType\\\":\\\"其它\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (10154, 63, '接口日志', '43.174.52.68/1.9.116.218', '2026-10-09 08:24:00', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0},{\"month\":\"2026-10\",\"inbound\":0,\"ordered\":0,\"shipped\":0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (10155, 63, '接口日志', '43.152.142.109/1.9.116.218', '2026-10-09 08:24:23', 0, 'DeliveryPlanController.getList(..)', NULL, 'GET /apis/deliveryPlan/list', '{\"search\":\"{\\\"planNumber\\\":\\\"\\\",\\\"sourceBillNumber\\\":\\\"\\\",\\\"saleOrderNumber\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"createTime\":1789720385000,\"creator\":63,\"creatorName\":\"admin\",\"customerId\":90,\"customerName\":\"TNB\",\"deleteFlag\":\"0\",\"id\":7,\"materialsList\":\"1PH WS79\",\"planNumber\":\"JH00000001741\",\"planQuantity\":10000.000000,\"saleOrderNumber\":\"XSDD00000001726\",\"shippedQuantity\":0.000000,\"sourceBillId\":1720,\"sourceBillNumber\":\"XSCK00000001728\",\"sourceType\":\"sale\",\"status\":\"2\"},{\"createTime\":1789717298000,\"creator\":63,\"creatorName\":\"admin\",\"customerId\":90,\"customerName\":\"TNB\",\"deleteFlag\":\"0\",\"id\":6,\"materialsList\":\"3PH APEC3-WC\",\"planNumber\":\"JH00000001717\",\"planQuantity\":149.000000,\"saleOrderNumber\":\"XSDD-42260529-3PH-APEC3-WC-OV\",\"shippedQuantity\":0.000000,\"sourceBillId\":1714,\"sourceBillNumber\":\"XSCK-3PH-APEC3-WC-OV-28\",\"sourceType\":\"sale\",\"status\":\"2\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (10156, 63, '接口日志', '43.152.157.121/1.9.116.218', '2026-10-09 08:24:28', 0, 'SupplierController.findBySelectRetail(..)', NULL, 'POST /apis/supplier/findBySelect_retail', '{\"jsonObject\":{\"limit\":1}}', '[]'); +INSERT INTO `tbl_log` VALUES (10157, 63, '接口日志', '43.174.53.30/1.9.116.218', '2026-10-09 08:24:28', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (10158, 63, '接口日志', '43.152.142.78/1.9.116.218', '2026-10-09 08:24:28', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (10159, 63, '接口日志', '43.152.142.57/1.9.116.218', '2026-10-09 08:24:28', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"出库\\\",\\\"subType\\\":\\\"零售\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-07-09\\\",\\\"endTime\\\":\\\"2026-10-09\\\",\\\"createTimeRange\\\":[\\\"2026-07-08T16:00:00.000Z\\\",\\\"2026-10-08T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (10160, 63, '接口日志', '43.152.142.105/1.9.116.218', '2026-10-09 08:24:28', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (10161, 63, '接口日志', '43.152.142.86/1.9.116.218', '2026-10-09 08:24:28', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (10162, 63, '接口日志', '43.152.142.132/1.9.116.218', '2026-10-09 08:24:28', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (10163, 63, '接口日志', '43.152.142.29/1.9.116.218', '2026-10-09 08:24:28', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (10164, 63, '接口日志', '43.152.142.109/1.9.116.218', '2026-10-09 08:24:57', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (10165, 63, '接口日志', '43.174.54.50/1.9.116.218', '2026-10-09 08:24:57', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (10166, 63, '接口日志', '43.174.32.34/1.9.116.218', '2026-10-09 08:24:57', 0, 'DepotItemController.findDetailByDepotIdsAndMaterialId(..)', NULL, 'GET /apis/depotItem/findDetailByDepotIdsAndMaterialId', '{\"pageSize\":10,\"currentPage\":1,\"depotIds\":\"\",\"number\":\"\",\"beginTime\":\"\",\"endTime\":\"\",\"stockPriceFlag\":false}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (10167, 63, '接口日志', '43.152.142.139/1.9.116.218', '2026-10-09 08:24:57', 0, 'MaterialController.getListWithStock(..)', NULL, 'GET /apis/material/getListWithStock', '{\"currentPage\":1,\"pageSize\":10,\"position\":\"\",\"materialParam\":\"\",\"zeroStock\":0,\"column\":\"createTime\",\"order\":\"desc\"}', '{\"code\":200,\"data\":{\"currentStockPrice\":107372523.170000000000,\"moveAvgPriceFlag\":false,\"total\":22,\"showStockPrice\":true,\"currentWeight\":0E-12,\"currentStock\":519203.000000,\"rows\":[{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"成品\",\"color\":\"\",\"currentStock\":7223.000000,\"currentStockMovePrice\":2293302.500000000000,\"currentStockPrice\":2293302.500000000000,\"currentUnitPrice\":317.500000,\"currentWeight\":0E-12,\"id\":704,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"3PH-APEC3-WC\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"3PH APEC3-WC\",\"name\":\"3PH APEC3-WC\",\"position\":\"\",\"purchaseDecimal\":317.500000,\"standard\":\"3PH APEC3-WC\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"成品\",\"color\":\"\",\"currentStock\":52400.000000,\"currentStockMovePrice\":3117800.000000000000,\"currentStockPrice\":3117800.000000000000,\"currentUnitPrice\":59.500000,\"currentWeight\":0E-12,\"id\":703,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"1PH-WS79\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"1PH WS79\",\"name\":\"1PH WS79\",\"position\":\"\",\"purchaseDecimal\":59.500000,\"standard\":\"1PH WS79\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":1000.000000,\"currentStockMovePrice\":24300.000000000000,\"currentStockPrice\":24300.000000000000,\"currentUnitPrice\":24.300000,\"currentWeight\":0E-12,\"id\":702,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00722\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-RS178(VA)\",\"name\":\"MD-RS178(VA) RS485分线器\",\"position\":\"\",\"purchaseDecimal\":24.300000,\"standard\":\"MD-RS178(VA)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":100.000000,\"currentStockMovePrice\":14256.000000000000,\"currentStockPrice\":14256.000000000000,\"currentUnitPrice\":142.560000,\"currentWeight\":0E-12,\"id\":701,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.0068900002\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-RS114(VB)\",\"name\":\"MD-RS114(VB) 基于RS485的MODBS TCPMODBS RTUASVII转换模块_(DZG)\",\"position\":\"\",\"purchaseDecimal\":142.560000,\"standard\":\"MD-RS114(VB)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":50.000000,\"currentStockMovePrice\":6642.000000000000,\"currentStockPrice\":6642.000000000000,\"currentUnitPrice\":132.840000,\"currentWeight\":0E-12,\"id\":700,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00686\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"TC160(VA)\",\"name\":\"TC160(VA) 通讯模块供电盒\",\"position\":\"\",\"purchaseDecimal\":132.840000,\"standard\":\"TC160(VA)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":76970.000000,\"currentStockMovePrice\":7697.000000000000,\"currentStockPrice\":7697.000000000000,\"currentUnitPrice\":0.100000,\"currentWeight\":0E-12,\"id\":699,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00654\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-4G111(VF)\",\"name\":\"MD-4G111(VF) 4G模块\",\"position\":\"\",\"purchaseDecimal\":0.100000,\"standard\":\"MD-4G111(VF)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":50.000000,\"currentStockMovePrice\":16200.000000000000,\"currentStockPrice\":16200.000000000000,\"currentUnitPrice\":324.000000,\"currentWeight\":0E-12,\"id\":698,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00562\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-4GVIII(VB)\",\"name\":\"MD-4GVIII(VB)\",\"position\":\"\",\"purchaseDecimal\":324.000000,\"standard\":\"MD-4GVIII(VB)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":500.000000,\"currentStockMovePrice\":64800.000000000000,\"currentStockPrice\":64800.000000000000,\"currentUnitPrice\":129.600000,\"currentWeight\":0E-12,\"id\":697,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00553\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MT-P109(VA)\",\"name\":\"MT-P109(VA)\",\"position\":\"\",\"purchaseDecimal\":129.600000,\"standard\":\"MT-P109(VA)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":54656.000000,\"currentStockMovePrice\":5465.600000000000,\"currentStockPrice\":5465.600000000000,\"currentUnitPrice\":0.100000,\"currentWeight\":0E-12,\"id\":696,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00547\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MT-3NSXL(VC)\",\"name\":\"MT-3NSXL(VC)RF通讯模块\",\"position\":\"\",\"purchaseDecimal\":0.100000,\"standard\":\"MT-3NSXL(VC)\",\"unitName\":\"件\"},{\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryName\":\"半成品\",\"color\":\"\",\"currentStock\":100.000000,\"currentStockMovePrice\":100375.200000000000,\"currentStockPrice\":100375.200000000000,\"currentUnitPrice\":1003.752000,\"currentWeight\":0E-12,\"id\":695,\"imgName\":\"\",\"initialStock\":0.000000,\"mBarCode\":\"C.4.T.0.00422\",\"mfrs\":\"浙江瑞银电子有限公司\",\"model\":\"MD-LR63(VB)\",\"name\":\"MD-LR63(VB)\",\"position\":\"\",\"purchaseDecimal\":1003.752000,\"standard\":\"MD-LR63(VB)\",\"unitName\":\"件\"}]}}'); +INSERT INTO `tbl_log` VALUES (10168, 63, '接口日志', '43.174.53.14/1.9.116.218', '2026-10-09 08:24:57', 0, 'DepotItemController.findDetailByDepotIdsAndMaterialId(..)', NULL, 'GET /apis/depotItem/findDetailByDepotIdsAndMaterialId', '{\"pageSize\":10,\"currentPage\":1,\"depotIds\":\"\",\"number\":\"\",\"beginTime\":\"\",\"endTime\":\"\",\"stockPriceFlag\":true}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (10169, 63, '接口日志', '43.152.157.121/1.9.116.218', '2026-10-09 08:25:13', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (10170, 63, '接口日志', '43.152.142.64/1.9.116.218', '2026-10-09 08:25:13', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (10171, 63, '接口日志', '43.152.142.43/1.9.116.218', '2026-10-09 08:25:13', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (10172, 63, '接口日志', '43.152.142.141/1.9.116.218', '2026-10-09 08:25:13', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (10173, 63, '接口日志', '43.152.142.40/1.9.116.218', '2026-10-09 08:25:13', 0, 'AccountHeadController.getList(..)', NULL, 'GET /apis/accountHead/list', '{\"search\":\"{\\\"billNo\\\":\\\"\\\",\\\"searchMaterial\\\":\\\"\\\",\\\"type\\\":\\\"收款\\\",\\\"remark\\\":\\\"\\\",\\\"number\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-07-09\\\",\\\"endTime\\\":\\\"2026-10-09\\\",\\\"createTimeRange\\\":[\\\"2026-07-08T16:00:00.000Z\\\",\\\"2026-10-08T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":9,\"rows\":[{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2110-25\",\"billTime\":1784836800000,\"billTimeStr\":\"2026-07-24 00:00:00\",\"changeAmount\":1122000.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":105,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2110\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2110-25\",\"sourceTime\":\"2026-06-23 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":1122000.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2108-18\",\"billTime\":1784145600000,\"billTimeStr\":\"2026-07-16 00:00:00\",\"changeAmount\":1122000.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":103,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2108\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2108-18\",\"sourceTime\":\"2026-06-16 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":1122000.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2129-11\",\"billTime\":1786564800000,\"billTimeStr\":\"2026-08-13 00:00:00\",\"changeAmount\":1122000.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":99,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2129\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2129-11\",\"sourceTime\":\"2026-01-01 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":1122000.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2133-65\",\"billTime\":1786651200000,\"billTimeStr\":\"2026-08-14 00:00:00\",\"changeAmount\":80850.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":98,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2133\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2133-65\",\"sourceTime\":\"2026-07-16 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2131-47\",\"billTime\":1783886400000,\"billTimeStr\":\"2026-07-13 00:00:00\",\"changeAmount\":80850.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":97,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2131\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2131-47\",\"sourceTime\":\"2026-07-13 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2130-44\",\"billTime\":1786046400000,\"billTimeStr\":\"2026-08-07 00:00:00\",\"changeAmount\":242550.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":96,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2130\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2130-44\",\"sourceTime\":\"2026-07-09 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":242550.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2122-26\",\"billTime\":1785441600000,\"billTimeStr\":\"2026-07-31 00:00:00\",\"changeAmount\":161700.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":95,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2122\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2122-26\",\"sourceTime\":\"2026-07-01 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":161700.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2113-15\",\"billTime\":1785182400000,\"billTimeStr\":\"2026-07-28 00:00:00\",\"changeAmount\":161700.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":94,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2113\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2113-15\",\"sourceTime\":\"2026-06-28 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":161700.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2111-11\",\"billTime\":1785096000000,\"billTimeStr\":\"2026-07-27 00:00:00\",\"changeAmount\":242550.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":93,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2111\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2111-11\",\"sourceTime\":\"2026-06-26 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":242550.000000,\"type\":\"收款\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (10174, 63, '接口日志', '43.152.157.121/1.9.116.218', '2026-10-09 08:25:13', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (10175, 63, '接口日志', '43.174.32.13/1.9.116.218', '2026-10-09 08:25:13', 0, 'PersonController.getPersonByType(..)', NULL, 'GET /apis/person/getPersonByType', '{\"type\":\"财务员\"}', '{\"code\":200,\"data\":{\"personList\":[{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":43,\"name\":\"Juwairiah\",\"type\":\"财务员\"}]}}'); +INSERT INTO `tbl_log` VALUES (10176, 63, '接口日志', '43.174.54.14/1.9.116.218', '2026-10-09 08:25:13', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (10177, 63, '接口日志', '43.174.53.17/1.9.116.218', '2026-10-09 08:25:13', 0, 'CustomerCategoryController.getTreeList(..)', NULL, 'GET /apis/customerCategory/treeList', '{}', '{\"code\":200,\"data\":{\"data\":[],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (10178, 63, '接口日志', '43.152.142.112/1.9.116.218', '2026-10-09 08:25:13', 0, 'DepotHeadController.getNeedCount(..)', NULL, 'GET /apis/depotHead/getNeedCount', '{\"type\":\"customer\"}', '{\"code\":200,\"data\":{\"needCount\":1}}'); +INSERT INTO `tbl_log` VALUES (10179, 63, '接口日志', '43.152.142.32/1.9.116.218', '2026-10-09 08:25:37', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (10180, 63, '接口日志', '43.174.32.34/1.9.116.218', '2026-10-09 08:25:40', 0, 'MaterialCategoryController.findById(..)', NULL, 'GET /apis/materialCategory/findById', '{\"id\":34}', '{\"code\":200,\"data\":{\"name\":\"包装\",\"id\":34,\"serialNo\":\"010\"}}'); +INSERT INTO `tbl_log` VALUES (10181, 63, '接口日志', '43.152.142.43/1.9.116.218', '2026-10-09 08:25:40', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{\"id\":34}', '[{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (10182, 63, '接口日志', '43.174.54.50/1.9.116.218', '2026-10-09 08:25:43', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{\"id\":34}', '[{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (10183, 63, '接口日志', '43.174.32.18/1.9.116.218', '2026-10-09 08:25:43', 0, 'MaterialCategoryController.findById(..)', NULL, 'GET /apis/materialCategory/findById', '{\"id\":34}', '{\"code\":200,\"data\":{\"name\":\"包装\",\"id\":34,\"serialNo\":\"010\"}}'); +INSERT INTO `tbl_log` VALUES (10184, 63, '接口日志', '43.174.53.17/1.9.116.218', '2026-10-09 08:25:50', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{\"id\":32}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (10185, 63, '接口日志', '43.152.142.132/1.9.116.218', '2026-10-09 08:25:50', 0, 'MaterialCategoryController.findById(..)', NULL, 'GET /apis/materialCategory/findById', '{\"id\":32}', '{\"code\":200,\"data\":{\"name\":\"半成品\",\"remark\":\"总部入库条码商品\",\"id\":32,\"sort\":\"1\",\"serialNo\":\"001\"}}'); +INSERT INTO `tbl_log` VALUES (10186, 63, '接口日志', '43.174.32.23/1.9.116.218', '2026-10-09 08:25:51', 0, 'MaterialCategoryController.findById(..)', NULL, 'GET /apis/materialCategory/findById', '{\"id\":33}', '{\"code\":200,\"data\":{\"name\":\"成品\",\"remark\":\"Stock Status成品\",\"id\":33,\"sort\":\"2\",\"serialNo\":\"002\"}}'); +INSERT INTO `tbl_log` VALUES (10187, 63, '接口日志', '43.174.52.68/1.9.116.218', '2026-10-09 08:25:51', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{\"id\":33}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32}]'); +INSERT INTO `tbl_log` VALUES (10188, 63, '接口日志', '43.174.54.14/1.9.116.218', '2026-10-09 08:25:52', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{\"id\":34}', '[{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (10189, 63, '接口日志', '43.152.142.139/1.9.116.218', '2026-10-09 08:25:52', 0, 'MaterialCategoryController.findById(..)', NULL, 'GET /apis/materialCategory/findById', '{\"id\":34}', '{\"code\":200,\"data\":{\"name\":\"包装\",\"id\":34,\"serialNo\":\"010\"}}'); +INSERT INTO `tbl_log` VALUES (10190, 63, '接口日志', '43.152.142.109/1.9.116.218', '2026-10-09 08:25:54', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (10191, 63, '接口日志', '43.152.142.29/1.9.116.218', '2026-10-09 08:25:54', 0, 'MaterialController.getList(..)', NULL, 'GET /apis/material/list', '{\"search\":\"{\\\"materialParam\\\":\\\"\\\",\\\"standard\\\":\\\"\\\",\\\"model\\\":\\\"\\\",\\\"color\\\":\\\"\\\",\\\"brand\\\":\\\"\\\",\\\"mfrs\\\":\\\"\\\",\\\"otherField1\\\":\\\"\\\",\\\"otherField2\\\":\\\"\\\",\\\"otherField3\\\":\\\"\\\",\\\"weight\\\":\\\"\\\",\\\"expiryNum\\\":\\\"\\\",\\\"position\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"mpList\\\":\\\"扩展1,扩展2,扩展3\\\"}\"}', '{\"code\":200,\"data\":{\"total\":24,\"rows\":[{\"attribute\":\"{}\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"categoryId\":33,\"categoryName\":\"成品\",\"commodityDecimal\":200.000000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":706,\"imgName\":\"\",\"initialStock\":0,\"lowDecimal\":200.000000,\"mBarCode\":\"1002\",\"materialOther\":\"\",\"mfrs\":\"SMT\",\"mnemonic\":\"MD-4G111(VF) 4G\",\"model\":\"MD-4G111(VF) 4G\",\"name\":\"MD-4G111(VF) 4G\",\"purchaseDecimal\":100.000000,\"sku\":\"\",\"standard\":\"MD-4G111(VF) 4G\",\"stock\":0,\"unit\":\"只\",\"wholesaleDecimal\":200.000000},{\"attribute\":\"{}\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"categoryId\":34,\"categoryName\":\"包装\",\"commodityDecimal\":10.000000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":705,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":10.000000,\"mBarCode\":\"1001\",\"materialOther\":\"\",\"mnemonic\":\"MD-4G111(VF) bz\",\"model\":\"MD-4G111(VF)\",\"name\":\"MD-4G111(VF) 包装\",\"purchaseDecimal\":10.000000,\"sku\":\"\",\"standard\":\"MD-4G111(VF) packing\",\"stock\":0.000000,\"unit\":\"件\",\"wholesaleDecimal\":10.000000},{\"attribute\":\"\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryId\":33,\"categoryName\":\"成品\",\"color\":\"\",\"commodityDecimal\":340.000000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":704,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":340.000000,\"mBarCode\":\"3PH-APEC3-WC\",\"materialOther\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mnemonic\":\"\",\"model\":\"3PH APEC3-WC\",\"name\":\"3PH APEC3-WC\",\"otherField1\":\"\",\"otherField2\":\"\",\"otherField3\":\"\",\"position\":\"\",\"purchaseDecimal\":317.500000,\"remark\":\"Excel初始化;条码:3PH-APEC3-WC\",\"standard\":\"3PH APEC3-WC\",\"stock\":7223.000000,\"tenantId\":63,\"unit\":\"件\",\"wholesaleDecimal\":340.000000},{\"attribute\":\"\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryId\":33,\"categoryName\":\"成品\",\"color\":\"\",\"commodityDecimal\":73.500000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":703,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":73.500000,\"mBarCode\":\"1PH-WS79\",\"materialOther\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mnemonic\":\"\",\"model\":\"1PH WS79\",\"name\":\"1PH WS79\",\"otherField1\":\"\",\"otherField2\":\"\",\"otherField3\":\"\",\"position\":\"\",\"purchaseDecimal\":59.500000,\"remark\":\"Excel初始化;条码:1PH-WS79\",\"standard\":\"1PH WS79\",\"stock\":52400.000000,\"tenantId\":63,\"unit\":\"件\",\"wholesaleDecimal\":73.500000},{\"attribute\":\"\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryId\":32,\"categoryName\":\"半成品\",\"color\":\"\",\"commodityDecimal\":24.300000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":702,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":24.300000,\"mBarCode\":\"C.4.T.0.00722\",\"materialOther\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mnemonic\":\"\",\"model\":\"MD-RS178(VA)\",\"name\":\"MD-RS178(VA) RS485分线器\",\"otherField1\":\"\",\"otherField2\":\"\",\"otherField3\":\"\",\"position\":\"\",\"purchaseDecimal\":24.300000,\"remark\":\"Excel初始化;条码:C.4.T.0.00722\",\"standard\":\"MD-RS178(VA)\",\"stock\":1000.000000,\"tenantId\":63,\"unit\":\"件\",\"wholesaleDecimal\":24.300000},{\"attribute\":\"\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryId\":32,\"categoryName\":\"半成品\",\"color\":\"\",\"commodityDecimal\":142.560000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":701,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":142.560000,\"mBarCode\":\"C.4.T.0.0068900002\",\"materialOther\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mnemonic\":\"\",\"model\":\"MD-RS114(VB)\",\"name\":\"MD-RS114(VB) 基于RS485的MODBS TCPMODBS RTUASVII转换模块_(DZG)\",\"otherField1\":\"\",\"otherField2\":\"\",\"otherField3\":\"\",\"position\":\"\",\"purchaseDecimal\":142.560000,\"remark\":\"Excel初始化;条码:C.4.T.0.0068900002\",\"standard\":\"MD-RS114(VB)\",\"stock\":100.000000,\"tenantId\":63,\"unit\":\"件\",\"wholesaleDecimal\":142.560000},{\"attribute\":\"\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryId\":32,\"categoryName\":\"半成品\",\"color\":\"\",\"commodityDecimal\":132.840000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":700,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":132.840000,\"mBarCode\":\"C.4.T.0.00686\",\"materialOther\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mnemonic\":\"\",\"model\":\"TC160(VA)\",\"name\":\"TC160(VA) 通讯模块供电盒\",\"otherField1\":\"\",\"otherField2\":\"\",\"otherField3\":\"\",\"position\":\"\",\"purchaseDecimal\":132.840000,\"remark\":\"Excel初始化;条码:C.4.T.0.00686\",\"standard\":\"TC160(VA)\",\"stock\":50.000000,\"tenantId\":63,\"unit\":\"件\",\"wholesaleDecimal\":132.840000},{\"attribute\":\"\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryId\":32,\"categoryName\":\"半成品\",\"color\":\"\",\"commodityDecimal\":0.100000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":699,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":0.100000,\"mBarCode\":\"C.4.T.0.00654\",\"materialOther\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mnemonic\":\"\",\"model\":\"MD-4G111(VF)\",\"name\":\"MD-4G111(VF) 4G模块\",\"otherField1\":\"\",\"otherField2\":\"\",\"otherField3\":\"\",\"position\":\"\",\"purchaseDecimal\":0.100000,\"remark\":\"Excel初始化;条码:C.4.T.0.00654\",\"standard\":\"MD-4G111(VF)\",\"stock\":76970.000000,\"tenantId\":63,\"unit\":\"件\",\"wholesaleDecimal\":0.100000},{\"attribute\":\"\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryId\":32,\"categoryName\":\"半成品\",\"color\":\"\",\"commodityDecimal\":324.000000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":698,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":324.000000,\"mBarCode\":\"C.4.T.0.00562\",\"materialOther\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mnemonic\":\"\",\"model\":\"MD-4GVIII(VB)\",\"name\":\"MD-4GVIII(VB)\",\"otherField1\":\"\",\"otherField2\":\"\",\"otherField3\":\"\",\"position\":\"\",\"purchaseDecimal\":324.000000,\"remark\":\"Excel初始化;条码:C.4.T.0.00562\",\"standard\":\"MD-4GVIII(VB)\",\"stock\":50.000000,\"tenantId\":63,\"unit\":\"件\",\"wholesaleDecimal\":324.000000},{\"attribute\":\"\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryId\":32,\"categoryName\":\"半成品\",\"color\":\"\",\"commodityDecimal\":129.600000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":697,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":129.600000,\"mBarCode\":\"C.4.T.0.00553\",\"materialOther\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mnemonic\":\"\",\"model\":\"MT-P109(VA)\",\"name\":\"MT-P109(VA)\",\"otherField1\":\"\",\"otherField2\":\"\",\"otherField3\":\"\",\"position\":\"\",\"purchaseDecimal\":129.600000,\"remark\":\"Excel初始化;条码:C.4.T.0.00553\",\"standard\":\"MT-P109(VA)\",\"stock\":500.000000,\"tenantId\":63,\"unit\":\"件\",\"wholesaleDecimal\":129.600000}]}}'); +INSERT INTO `tbl_log` VALUES (10192, 63, '接口日志', '43.174.53.14/1.9.116.218', '2026-10-09 08:26:41', 0, 'UnitController.getList(..)', NULL, 'GET /apis/unit/list', '{\"search\":\"{\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":4,\"rows\":[{\"basicUnit\":\"瓶\",\"deleteFlag\":\"0\",\"enabled\":true,\"id\":21,\"name\":\"瓶/(箱=12瓶)\",\"otherUnit\":\"箱\",\"ratio\":12.000,\"tenantId\":63},{\"basicUnit\":\"盒\",\"deleteFlag\":\"0\",\"enabled\":true,\"id\":20,\"name\":\"盒/(箱=8盒)\",\"otherUnit\":\"箱\",\"ratio\":8.000,\"tenantId\":63},{\"basicUnit\":\"个\",\"deleteFlag\":\"0\",\"enabled\":true,\"id\":19,\"name\":\"个/(盒=15个)\",\"otherUnit\":\"盒\",\"ratio\":15.000,\"tenantId\":63},{\"basicUnit\":\"个\",\"deleteFlag\":\"0\",\"enabled\":true,\"id\":15,\"name\":\"个/(箱=12个)\",\"otherUnit\":\"箱\",\"ratio\":12.000,\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (10193, NULL, '接口日志', '43.152.142.105/1.9.116.218', '2026-10-09 08:26:55', 0, 'UserController.logout(..)', NULL, 'GET /apis/user/logout', '{}', '{\"code\":400}'); +INSERT INTO `tbl_log` VALUES (10194, NULL, '接口日志', '43.152.142.78/1.9.116.218', '2026-10-09 08:26:55', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (10195, NULL, '接口日志', '43.152.142.29/1.9.116.218', '2026-10-09 08:26:55', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (10196, NULL, '接口日志', '43.174.32.23/1.9.116.218', '2026-10-09 08:26:56', 0, 'UserController.randomImage(..)', NULL, 'GET /apis/user/randomImage', '{}', '{\"code\":200,\"data\":{\"base64\":\"data:image/jpg;base64,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\",\"uuid\":\"b1bf45b929624d5e8badea90e264fd33\"}}'); +INSERT INTO `tbl_log` VALUES (10197, NULL, '接口日志', '43.152.142.139/1.9.116.218', '2026-10-09 08:26:56', 0, 'PlatformConfigController.getPlatformCheckcodeFlag(..)', NULL, 'GET /apis/platformConfig/getPlatform/checkcodeFlag', '{}', '\"1\"'); +INSERT INTO `tbl_log` VALUES (10198, NULL, '接口日志', '125.94.248.228/125.121.53.131', '2026-10-12 10:46:05', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (10199, NULL, '接口日志', '222.79.117.16/125.121.53.131', '2026-10-12 10:46:06', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (10200, NULL, '接口日志', '43.174.53.11/1.9.116.218', '2026-10-13 05:06:18', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (10201, NULL, '接口日志', '43.174.53.16/1.9.116.218', '2026-10-13 05:06:18', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (10202, NULL, '接口日志', '43.152.142.29/1.9.116.218', '2026-10-13 05:06:22', 0, 'PlatformConfigController.getPlatformCheckcodeFlag(..)', NULL, 'GET /apis/platformConfig/getPlatform/checkcodeFlag', '{}', '\"1\"'); +INSERT INTO `tbl_log` VALUES (10203, NULL, '接口日志', '43.152.142.64/1.9.116.218', '2026-10-13 05:06:22', 0, 'UserController.randomImage(..)', NULL, 'GET /apis/user/randomImage', '{}', '{\"code\":200,\"data\":{\"base64\":\"data:image/jpg;base64,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\",\"uuid\":\"f979851ba62847c989d28480b992d399\"}}'); +INSERT INTO `tbl_log` VALUES (10204, 63, '用户', '43.152.142.132/1.9.116.218', '2026-10-13 05:08:07', 0, '登录admin', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (10205, NULL, '接口日志', '43.152.142.132/1.9.116.218', '2026-10-13 05:08:07', 0, 'UserController.login(..)', NULL, 'POST /apis/user/login', '{\"userParam\":{\"code\":\"8xbh\",\"loginName\":\"admin\",\"password\":\"******\",\"uuid\":\"f979851ba62847c989d28480b992d399\"}}', '{\"code\":200,\"data\":{\"pwdSimple\":\"******\",\"user\":{\"deleteFlag\":\"0\",\"description\":\"\",\"email\":\"666666@qq.com\",\"id\":63,\"ismanager\":1,\"isystem\":1,\"leaderFlag\":\"0\",\"loginName\":\"admin\",\"password\":\"******\",\"phonenum\":\"1123123123132\",\"position\":\"主管\",\"status\":0,\"tenantId\":63,\"username\":\"admin\"},\"msgTip\":\"user can login\",\"token\":\"******\"}}'); +INSERT INTO `tbl_log` VALUES (10206, 63, '接口日志', '43.152.142.132/1.9.116.218', '2026-10-13 05:08:07', 0, 'MaterialPropertyController.getAllList(..)', NULL, 'GET /apis/materialProperty/getAllList', '{}', '{\"code\":200,\"data\":[{\"anotherName\":\"扩展1\",\"id\":1,\"nativeName\":\"扩展1\"},{\"anotherName\":\"扩展2\",\"id\":2,\"nativeName\":\"扩展2\"},{\"anotherName\":\"扩展3\",\"id\":3,\"nativeName\":\"扩展3\"}]}'); +INSERT INTO `tbl_log` VALUES (10207, 63, '接口日志', '43.152.142.29/1.9.116.218', '2026-10-13 05:08:07', 0, 'FunctionController.findMenuByPNumber(..)', NULL, 'POST /apis/function/findMenuByPNumber', '{\"jsonObject\":{\"userId\":63,\"pNumber\":0}}', '[{\"component\":\"/layouts/TabLayout\",\"icon\":\"home\",\"id\":0,\"text\":\"首页\",\"url\":\"/dashboard/analysis\",\"textEn\":\"Home\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/SaleOrderList\",\"icon\":\"profile\",\"id\":242,\"text\":\"销售订单\",\"url\":\"/bill/sale_order\",\"textEn\":\"Sales Orders\"},{\"component\":\"/bill/SaleOutList\",\"icon\":\"profile\",\"id\":41,\"text\":\"销售出库\",\"url\":\"/bill/sale_out\",\"textEn\":\"Sales Shipments\"},{\"component\":\"/bill/DeliveryPlanList\",\"icon\":\"profile\",\"id\":271,\"text\":\"交货计划管理\",\"url\":\"/bill/delivery_plan\",\"textEn\":\"Delivery Plans\"},{\"component\":\"/bill/SaleShipmentList\",\"icon\":\"car\",\"id\":268,\"text\":\"发货管理\",\"url\":\"/bill/sale_shipment\",\"textEn\":\"Shipment Management\"},{\"component\":\"/bill/SaleBackList\",\"icon\":\"profile\",\"id\":200,\"text\":\"销售退货\",\"url\":\"/bill/sale_back\",\"textEn\":\"Sales Returns\"},{\"component\":\"/bill/RetailOutList\",\"icon\":\"profile\",\"id\":210,\"text\":\"零售出库\",\"url\":\"/bill/retail_out\",\"textEn\":\"Retail Shipments\"},{\"component\":\"/bill/RetailBackList\",\"icon\":\"profile\",\"id\":211,\"text\":\"零售退货\",\"url\":\"/bill/retail_back\",\"textEn\":\"Retail Returns\"}],\"icon\":\"shopping-cart\",\"id\":38,\"text\":\"销售管理\",\"url\":\"/billB\",\"textEn\":\"Sales Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/PurchaseApplyList\",\"icon\":\"profile\",\"id\":261,\"text\":\"请购单\",\"url\":\"/bill/purchase_apply\",\"textEn\":\"Purchase Requisitions\"},{\"component\":\"/bill/PurchaseOrderList\",\"icon\":\"profile\",\"id\":241,\"text\":\"采购订单\",\"url\":\"/bill/purchase_order\",\"textEn\":\"Purchase Orders\"},{\"component\":\"/bill/PurchaseInList\",\"icon\":\"profile\",\"id\":33,\"text\":\"采购入库\",\"url\":\"/bill/purchase_in\",\"textEn\":\"Purchase Receipts\"},{\"component\":\"/bill/PurchaseBackList\",\"icon\":\"profile\",\"id\":199,\"text\":\"采购退货\",\"url\":\"/bill/purchase_back\",\"textEn\":\"Purchase Returns\"}],\"icon\":\"retweet\",\"id\":32,\"text\":\"采购管理\",\"url\":\"/bill\",\"textEn\":\"Purchase Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/production/PackBomList\",\"icon\":\"profile\",\"id\":263,\"text\":\"生产方案\",\"url\":\"/production/pack_bom\",\"textEn\":\"Production BOMs\"},{\"component\":\"/production/OrderList\",\"icon\":\"profile\",\"id\":264,\"text\":\"生产工单\",\"url\":\"/production/order\",\"textEn\":\"Production Orders\"},{\"component\":\"/production/RequisitionList\",\"icon\":\"profile\",\"id\":265,\"text\":\"领料管理\",\"url\":\"/production/requisition\",\"textEn\":\"Material Requisitions\"},{\"component\":\"/production/ReportList\",\"icon\":\"profile\",\"id\":266,\"text\":\"完工报工\",\"url\":\"/production/report\",\"textEn\":\"Production Reports\"}],\"icon\":\"cluster\",\"id\":262,\"text\":\"生产管理\",\"url\":\"/production\",\"textEn\":\"Production Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/MaterialStock\",\"icon\":\"profile\",\"id\":246,\"text\":\"商品库存\",\"url\":\"/report/material_stock\",\"textEn\":\"Product Inventory\"},{\"component\":\"/bill/OtherInList\",\"icon\":\"profile\",\"id\":201,\"text\":\"其它入库\",\"url\":\"/bill/other_in\",\"textEn\":\"Other Receipts\"},{\"component\":\"/bill/OtherOutList\",\"icon\":\"profile\",\"id\":202,\"text\":\"其它出库\",\"url\":\"/bill/other_out\",\"textEn\":\"Other Shipments\"},{\"component\":\"/bill/HeadquartersInList\",\"icon\":\"profile\",\"id\":270,\"text\":\"总部入库\",\"url\":\"/bill/headquarters_in\",\"textEn\":\"Headquarters Receipts\"}],\"icon\":\"hdd\",\"id\":239,\"text\":\"仓库管理\",\"url\":\"/billD\",\"textEn\":\"Warehouse Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/financial/MoneyInList\",\"icon\":\"profile\",\"id\":204,\"text\":\"收款单\",\"url\":\"/financial/money_in\",\"textEn\":\"Receipt Vouchers\"},{\"component\":\"/financial/MoneyOutList\",\"icon\":\"profile\",\"id\":205,\"text\":\"付款单\",\"url\":\"/financial/money_out\",\"textEn\":\"Payment Vouchers\"}],\"icon\":\"money-collect\",\"id\":44,\"text\":\"财务管理\",\"url\":\"/financial\",\"textEn\":\"Finance Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/asset/AssetDashboard\",\"icon\":\"dashboard\",\"id\":276,\"text\":\"资产汇总\",\"url\":\"/asset\",\"textEn\":\"Asset Overview\"},{\"component\":\"/asset/AssetList\",\"icon\":\"profile\",\"id\":273,\"text\":\"资产台账\",\"url\":\"/asset/ledger\",\"textEn\":\"Asset Ledger\"},{\"component\":\"/asset/DeviceList\",\"icon\":\"tool\",\"id\":274,\"text\":\"设备台账\",\"url\":\"/asset/device\",\"textEn\":\"Device Ledger\"},{\"component\":\"/asset/InventoryList\",\"icon\":\"scan\",\"id\":275,\"text\":\"资产盘点\",\"url\":\"/asset/inventory\",\"textEn\":\"Asset Inventory\"}],\"icon\":\"bank\",\"id\":272,\"text\":\"资产管理\",\"url\":\"/assetManagement\",\"textEn\":\"Asset Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/material/MaterialCategoryList\",\"icon\":\"profile\",\"id\":22,\"text\":\"商品类别\",\"url\":\"/material/material_category\",\"textEn\":\"Product Categories\"},{\"component\":\"/material/MaterialList\",\"icon\":\"profile\",\"id\":23,\"text\":\"商品信息\",\"url\":\"/material/material\",\"textEn\":\"Product Information\"},{\"component\":\"/system/UnitList\",\"icon\":\"profile\",\"id\":220,\"text\":\"多单位\",\"url\":\"/system/unit\",\"textEn\":\"Multiple Units\"},{\"component\":\"/material/MaterialAttributeList\",\"icon\":\"profile\",\"id\":247,\"text\":\"多属性\",\"url\":\"/material/material_attribute\",\"textEn\":\"Product Attributes\"}],\"icon\":\"shopping\",\"id\":21,\"text\":\"商品管理\",\"url\":\"/material\",\"textEn\":\"Product Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/AccountReport\",\"icon\":\"profile\",\"id\":207,\"text\":\"账户统计\",\"url\":\"/report/account_report\",\"textEn\":\"Account Summary\"},{\"component\":\"/report/RetailOutReport\",\"icon\":\"profile\",\"id\":259,\"text\":\"零售统计\",\"url\":\"/report/retail_out_report\",\"textEn\":\"Retail Summary\"},{\"component\":\"/report/BuyInReport\",\"icon\":\"profile\",\"id\":208,\"text\":\"采购统计\",\"url\":\"/report/buy_in_report\",\"textEn\":\"Purchase Summary\"},{\"component\":\"/report/SaleOutReport\",\"icon\":\"profile\",\"id\":209,\"text\":\"销售统计\",\"url\":\"/report/sale_out_report\",\"textEn\":\"Sales Summary\"},{\"component\":\"/report/InDetail\",\"icon\":\"profile\",\"id\":226,\"text\":\"入库明细\",\"url\":\"/report/in_detail\",\"textEn\":\"Inbound Details\"},{\"component\":\"/report/OutDetail\",\"icon\":\"profile\",\"id\":227,\"text\":\"出库明细\",\"url\":\"/report/out_detail\",\"textEn\":\"Outbound Details\"},{\"component\":\"/report/InMaterialCount\",\"icon\":\"profile\",\"id\":228,\"text\":\"入库汇总\",\"url\":\"/report/in_material_count\",\"textEn\":\"Inbound Summary\"},{\"component\":\"/report/OutMaterialCount\",\"icon\":\"profile\",\"id\":229,\"text\":\"出库汇总\",\"url\":\"/report/out_material_count\",\"textEn\":\"Outbound Summary\"},{\"component\":\"/report/InOutStockReport\",\"icon\":\"profile\",\"id\":59,\"text\":\"进销存统计\",\"url\":\"/report/in_out_stock_report\",\"textEn\":\"Inventory Transaction Summary\"},{\"component\":\"/report/CustomerAccount\",\"icon\":\"profile\",\"id\":235,\"text\":\"客户对账\",\"url\":\"/report/customer_account\",\"textEn\":\"Customer Reconciliation\"},{\"component\":\"/report/VendorAccount\",\"icon\":\"profile\",\"id\":237,\"text\":\"供应商对账\",\"url\":\"/report/vendor_account\",\"textEn\":\"Supplier Reconciliation\"},{\"component\":\"/report/StockWarningReport\",\"icon\":\"profile\",\"id\":244,\"text\":\"库存预警\",\"url\":\"/report/stock_warning_report\",\"textEn\":\"Stock Alerts\"}],\"icon\":\"pie-chart\",\"id\":198,\"text\":\"报表查询\",\"url\":\"/report\",\"textEn\":\"Reports\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/VendorList\",\"icon\":\"profile\",\"id\":25,\"text\":\"供应商信息\",\"url\":\"/system/vendor\",\"textEn\":\"Suppliers\"},{\"component\":\"/system/CustomerList\",\"icon\":\"profile\",\"id\":217,\"text\":\"客户信息\",\"url\":\"/system/customer\",\"textEn\":\"Customers\"},{\"component\":\"/system/MemberList\",\"icon\":\"profile\",\"id\":218,\"text\":\"会员信息\",\"url\":\"/system/member\",\"textEn\":\"Members\"},{\"component\":\"/system/CustomerCategoryList\",\"icon\":\"bars\",\"id\":267,\"text\":\"客户分类\",\"url\":\"/system/customerCategory\",\"textEn\":\"Customer Categories\"},{\"component\":\"/system/DepotList\",\"icon\":\"profile\",\"id\":26,\"text\":\"仓库信息\",\"url\":\"/system/depot\",\"textEn\":\"Warehouses\"},{\"component\":\"/system/InOutItemList\",\"icon\":\"profile\",\"id\":194,\"text\":\"收支项目\",\"url\":\"/system/in_out_item\",\"textEn\":\"Income and Expense Items\"},{\"component\":\"/system/AccountList\",\"icon\":\"profile\",\"id\":195,\"text\":\"结算账户\",\"url\":\"/system/account\",\"textEn\":\"Settlement Accounts\"},{\"component\":\"/system/PersonList\",\"icon\":\"profile\",\"id\":31,\"text\":\"操作人员管理\",\"url\":\"/system/person\",\"textEn\":\"Operators\"}],\"icon\":\"appstore\",\"id\":24,\"text\":\"基础资料\",\"url\":\"/systemA\",\"textEn\":\"Master Data\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/RoleList\",\"icon\":\"profile\",\"id\":13,\"text\":\"角色管理\",\"url\":\"/system/role\",\"textEn\":\"Role Management\"},{\"component\":\"/system/UserList\",\"icon\":\"profile\",\"id\":14,\"text\":\"用户管理\",\"url\":\"/system/user\",\"textEn\":\"User Management\"},{\"component\":\"/system/OrganizationList\",\"icon\":\"profile\",\"id\":243,\"text\":\"部门管理\",\"url\":\"/system/organization\",\"textEn\":\"Department Management\"},{\"component\":\"/system/LogList\",\"icon\":\"profile\",\"id\":15,\"text\":\"日志管理\",\"url\":\"/system/log\",\"textEn\":\"Log Management\"},{\"component\":\"/material/MaterialPropertyList\",\"icon\":\"profile\",\"id\":236,\"text\":\"商品属性\",\"url\":\"/material/material_property\",\"textEn\":\"Product Properties\"},{\"component\":\"/system/SystemConfigList\",\"icon\":\"profile\",\"id\":234,\"text\":\"系统配置\",\"url\":\"/system/system_config\",\"textEn\":\"System Configuration\"},{\"component\":\"/system/FunctionList\",\"icon\":\"profile\",\"id\":16,\"text\":\"菜单管理\",\"url\":\"/system/function\",\"textEn\":\"Resource Menus\"},{\"component\":\"/system/PluginList\",\"icon\":\"profile\",\"id\":245,\"text\":\"插件管理\",\"url\":\"/system/plugin\",\"textEn\":\"Plugin Management\"},{\"component\":\"/system/DictList\",\"icon\":\"profile\",\"id\":260,\"text\":\"字典管理\",\"url\":\"/system/dict\",\"textEn\":\"Dictionary Management\"},{\"component\":\"/system/PlatformConfigList\",\"icon\":\"profile\",\"id\":258,\"text\":\"平台配置\",\"url\":\"/system/platform_config\",\"textEn\":\"Platform Configuration\"}],\"icon\":\"setting\",\"id\":1,\"text\":\"系统管理\",\"url\":\"/system\",\"textEn\":\"System Management\"}]'); +INSERT INTO `tbl_log` VALUES (10208, 63, '接口日志', '43.174.54.14/1.9.116.218', '2026-10-13 05:08:07', 0, 'UserController.getUserBtnByCurrentUser(..)', NULL, 'GET /apis/user/getUserBtnByCurrentUser', '{}', '{\"code\":200,\"data\":{\"userBtn\":[{\"btnStr\":\"8,1\",\"url\":\"/system/role\"},{\"btnStr\":\"1\",\"url\":\"/system/user\"},{\"btnStr\":\"1\",\"url\":\"/system/organization\"},{\"btnStr\":\"1\",\"url\":\"/material/material_property\"},{\"btnStr\":\"1\",\"url\":\"/system/system_config\"},{\"btnStr\":\"1\",\"url\":\"/system/function\"},{\"btnStr\":\"1\",\"url\":\"/system/plugin\"},{\"btnStr\":\"1\",\"url\":\"/material/material_category\"},{\"btnStr\":\"1,3\",\"url\":\"/material/material\"},{\"btnStr\":\"1\",\"url\":\"/system/unit\"},{\"btnStr\":\"1\",\"url\":\"/material/material_attribute\"},{\"btnStr\":\"1,3\",\"url\":\"/system/vendor\"},{\"btnStr\":\"1,3\",\"url\":\"/system/customer\"},{\"btnStr\":\"1,3\",\"url\":\"/system/member\"},{\"btnStr\":\"1\",\"url\":\"/system/depot\"},{\"btnStr\":\"1\",\"url\":\"/system/in_out_item\"},{\"btnStr\":\"1\",\"url\":\"/system/account\"},{\"btnStr\":\"1\",\"url\":\"/system/person\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_apply\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_out\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/delivery_plan\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/sale_shipment\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_out\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/order\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/requisition\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/report\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/giro\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/advance_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/allocation_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/assemble\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/headquarters_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/disassemble\"}]}}'); +INSERT INTO `tbl_log` VALUES (10209, 63, '接口日志', '43.152.142.34/1.9.116.218', '2026-10-13 05:08:07', 0, 'MsgController.getMsgByStatus(..)', NULL, 'GET /apis/msg/getMsgByStatus', '{\"status\":\"1\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (10210, 63, '接口日志', '43.152.142.109/1.9.116.218', '2026-10-13 05:08:07', 0, 'MsgController.getList(..)', NULL, 'GET /apis/msg/list', '{\"search\":\"{\\\"name\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (10211, 63, '接口日志', '43.174.32.12/1.9.116.218', '2026-10-13 05:08:07', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0},{\"month\":\"2026-10\",\"inbound\":0,\"ordered\":0,\"shipped\":0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (10212, 63, '接口日志', '43.152.142.128/1.9.116.218', '2026-10-13 05:08:24', 0, 'MaterialPropertyController.getList(..)', NULL, 'GET /apis/materialProperty/list', '{\"search\":\"{\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":3,\"rows\":[{\"anotherName\":\"扩展1\",\"id\":1,\"nativeName\":\"扩展1\"},{\"anotherName\":\"扩展2\",\"id\":2,\"nativeName\":\"扩展2\"},{\"anotherName\":\"扩展3\",\"id\":3,\"nativeName\":\"扩展3\"}]}}'); +INSERT INTO `tbl_log` VALUES (10213, 63, '接口日志', '43.152.142.41/1.9.116.218', '2026-10-13 05:08:26', 0, 'OrganizationController.getOrganizationTree(..)', NULL, 'GET /apis/organization/getOrganizationTree', '{}', '[{\"children\":[{\"children\":[{\"children\":[],\"checked\":false,\"attributes\":\"12\",\"id\":14,\"state\":\"open\",\"title\":\"部门2\",\"value\":14,\"key\":14}],\"checked\":false,\"attributes\":\"jg1\",\"id\":13,\"state\":\"open\",\"title\":\"部门1\",\"value\":13,\"key\":13}],\"checked\":false,\"attributes\":\"001\",\"id\":12,\"state\":\"open\",\"title\":\"测试部门\",\"value\":12,\"key\":12}]'); +INSERT INTO `tbl_log` VALUES (10214, 63, '接口日志', '43.174.54.14/1.9.116.218', '2026-10-13 05:08:29', 0, 'SupplierController.getList(..)', NULL, 'GET /apis/supplier/list', '{\"search\":\"{\\\"supplier\\\":\\\"\\\",\\\"type\\\":\\\"供应商\\\",\\\"contacts\\\":\\\"\\\",\\\"telephone\\\":\\\"\\\",\\\"phonenum\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"accountNumber\":\"\",\"address\":\"\",\"advanceIn\":0.000000,\"allNeedGet\":0.000000,\"allNeedPay\":116500257.436400,\"bankName\":\"\",\"beginNeedGet\":0.000000,\"beginNeedPay\":0.000000,\"contacts\":\"\",\"creator\":63,\"deleteFlag\":\"0\",\"description\":\"Excel初始化默认供应商\",\"email\":\"\",\"enabled\":true,\"fax\":\"\",\"id\":89,\"isystem\":1,\"phoneNum\":\"\",\"sort\":\"1\",\"supplier\":\"浙江瑞银电子有限公司\",\"taxNum\":\"\",\"taxRate\":0.000000,\"telephone\":\"\",\"tenantId\":63,\"type\":\"供应商\"}]}}'); +INSERT INTO `tbl_log` VALUES (10215, 63, '接口日志', '43.174.32.14/1.9.116.218', '2026-10-13 05:08:31', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (10216, 63, '接口日志', '43.174.54.44/1.9.116.218', '2026-10-13 05:08:31', 0, 'SupplierController.getList(..)', NULL, 'GET /apis/supplier/list', '{\"search\":\"{\\\"supplier\\\":\\\"\\\",\\\"type\\\":\\\"客户\\\",\\\"contacts\\\":\\\"\\\",\\\"telephone\\\":\\\"\\\",\\\"phonenum\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"accountNumber\":\"\",\"address\":\"\",\"advanceIn\":0.000000,\"allNeedGet\":12430066.000000,\"allNeedPay\":0.000000,\"bankName\":\"\",\"beginNeedGet\":0.000000,\"beginNeedPay\":0.000000,\"contacts\":\"\",\"creator\":63,\"deleteFlag\":\"0\",\"description\":\"Stock Status客户\",\"email\":\"\",\"enabled\":true,\"fax\":\"\",\"id\":90,\"isystem\":1,\"phoneNum\":\"\",\"sort\":\"2\",\"supplier\":\"TNB\",\"taxNum\":\"\",\"taxRate\":10.000000,\"telephone\":\"\",\"tenantId\":63,\"type\":\"客户\"}]}}'); +INSERT INTO `tbl_log` VALUES (10217, 63, '接口日志', '43.152.142.45/1.9.116.218', '2026-10-13 05:08:31', 0, 'CustomerCategoryController.getTreeList(..)', NULL, 'GET /apis/customerCategory/treeList', '{}', '{\"code\":200,\"data\":{\"data\":[],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (10218, 63, '接口日志', '43.152.142.64/1.9.116.218', '2026-10-13 05:08:33', 0, 'SupplierController.getList(..)', NULL, 'GET /apis/supplier/list', '{\"search\":\"{\\\"supplier\\\":\\\"\\\",\\\"type\\\":\\\"会员\\\",\\\"telephone\\\":\\\"\\\",\\\"phonenum\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (10219, 63, '接口日志', '43.174.32.23/1.9.116.218', '2026-10-13 05:08:33', 0, 'CustomerCategoryController.getTreeList(..)', NULL, 'GET /apis/customerCategory/treeList', '{}', '{\"code\":200,\"data\":{\"data\":[],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (10220, 63, '接口日志', '43.174.53.11/1.9.116.218', '2026-10-13 05:08:35', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (10221, 63, '接口日志', '43.174.55.40/1.9.116.218', '2026-10-13 05:08:35', 0, 'DepotController.getList(..)', NULL, 'GET /apis/depot/list', '{\"search\":\"{\\\"name\\\":\\\"\\\",\\\"remark\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"address\":\"\",\"deleteFlag\":\"0\",\"enabled\":true,\"id\":25,\"isDefault\":true,\"name\":\"半成品仓库\",\"remark\":\"总部入库物料\",\"sort\":\"1\",\"tenantId\":63,\"truckage\":0.000000,\"type\":0,\"warehousing\":0.000000},{\"address\":\"\",\"deleteFlag\":\"0\",\"enabled\":true,\"id\":26,\"isDefault\":false,\"name\":\"成品仓库\",\"remark\":\"Stock Status成品\",\"sort\":\"2\",\"tenantId\":63,\"truckage\":0.000000,\"type\":0,\"warehousing\":0.000000}]}}'); +INSERT INTO `tbl_log` VALUES (10222, 63, '接口日志', '43.152.142.133/1.9.116.218', '2026-10-13 05:08:35', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (10223, 63, '接口日志', '43.174.32.34/1.9.116.218', '2026-10-13 05:08:37', 0, 'InOutItemController.getList(..)', NULL, 'GET /apis/inOutItem/list', '{\"search\":\"{\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"\\\",\\\"remark\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":3,\"rows\":[{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":23,\"name\":\"利息收入\",\"remark\":\"收入\",\"tenantId\":63,\"type\":\"收入\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":22,\"name\":\"房租收入\",\"remark\":\"\",\"tenantId\":63,\"type\":\"收入\"},{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":21,\"name\":\"快递费\",\"remark\":\"\",\"tenantId\":63,\"type\":\"支出\"}]}}'); +INSERT INTO `tbl_log` VALUES (10224, 63, '接口日志', '43.152.142.112/1.9.116.218', '2026-10-13 05:08:40', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (10225, 63, '接口日志', '43.174.52.31/1.9.116.218', '2026-10-13 05:08:41', 0, 'MaterialCategoryController.getMaterialCategoryTree(..)', NULL, 'GET /apis/materialCategory/getMaterialCategoryTree', '{}', '[{\"children\":[],\"checked\":false,\"id\":34,\"state\":\"open\",\"title\":\"包装\",\"value\":34,\"key\":34},{\"children\":[],\"checked\":false,\"id\":32,\"state\":\"open\",\"title\":\"半成品\",\"value\":32,\"key\":32},{\"children\":[],\"checked\":false,\"id\":33,\"state\":\"open\",\"title\":\"成品\",\"value\":33,\"key\":33}]'); +INSERT INTO `tbl_log` VALUES (10226, 63, '接口日志', '43.152.142.32/1.9.116.218', '2026-10-13 05:08:41', 0, 'MaterialController.getList(..)', NULL, 'GET /apis/material/list', '{\"search\":\"{\\\"materialParam\\\":\\\"\\\",\\\"standard\\\":\\\"\\\",\\\"model\\\":\\\"\\\",\\\"color\\\":\\\"\\\",\\\"brand\\\":\\\"\\\",\\\"mfrs\\\":\\\"\\\",\\\"otherField1\\\":\\\"\\\",\\\"otherField2\\\":\\\"\\\",\\\"otherField3\\\":\\\"\\\",\\\"weight\\\":\\\"\\\",\\\"expiryNum\\\":\\\"\\\",\\\"position\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"mpList\\\":\\\"扩展1,扩展2,扩展3\\\"}\"}', '{\"code\":200,\"data\":{\"total\":24,\"rows\":[{\"attribute\":\"{}\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"categoryId\":33,\"categoryName\":\"成品\",\"commodityDecimal\":200.000000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":706,\"imgName\":\"\",\"initialStock\":0,\"lowDecimal\":200.000000,\"mBarCode\":\"1002\",\"materialOther\":\"\",\"mfrs\":\"SMT\",\"mnemonic\":\"MD-4G111(VF) 4G\",\"model\":\"MD-4G111(VF) 4G\",\"name\":\"MD-4G111(VF) 4G\",\"purchaseDecimal\":100.000000,\"sku\":\"\",\"standard\":\"MD-4G111(VF) 4G\",\"stock\":0,\"unit\":\"只\",\"wholesaleDecimal\":200.000000},{\"attribute\":\"{}\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"categoryId\":34,\"categoryName\":\"包装\",\"commodityDecimal\":10.000000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":705,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":10.000000,\"mBarCode\":\"1001\",\"materialOther\":\"\",\"mnemonic\":\"MD-4G111(VF) bz\",\"model\":\"MD-4G111(VF)\",\"name\":\"MD-4G111(VF) 包装\",\"purchaseDecimal\":10.000000,\"sku\":\"\",\"standard\":\"MD-4G111(VF) packing\",\"stock\":0.000000,\"unit\":\"件\",\"wholesaleDecimal\":10.000000},{\"attribute\":\"\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryId\":33,\"categoryName\":\"成品\",\"color\":\"\",\"commodityDecimal\":340.000000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":704,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":340.000000,\"mBarCode\":\"3PH-APEC3-WC\",\"materialOther\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mnemonic\":\"\",\"model\":\"3PH APEC3-WC\",\"name\":\"3PH APEC3-WC\",\"otherField1\":\"\",\"otherField2\":\"\",\"otherField3\":\"\",\"position\":\"\",\"purchaseDecimal\":317.500000,\"remark\":\"Excel初始化;条码:3PH-APEC3-WC\",\"standard\":\"3PH APEC3-WC\",\"stock\":7223.000000,\"tenantId\":63,\"unit\":\"件\",\"wholesaleDecimal\":340.000000},{\"attribute\":\"\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryId\":33,\"categoryName\":\"成品\",\"color\":\"\",\"commodityDecimal\":73.500000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":703,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":73.500000,\"mBarCode\":\"1PH-WS79\",\"materialOther\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mnemonic\":\"\",\"model\":\"1PH WS79\",\"name\":\"1PH WS79\",\"otherField1\":\"\",\"otherField2\":\"\",\"otherField3\":\"\",\"position\":\"\",\"purchaseDecimal\":59.500000,\"remark\":\"Excel初始化;条码:1PH-WS79\",\"standard\":\"1PH WS79\",\"stock\":52400.000000,\"tenantId\":63,\"unit\":\"件\",\"wholesaleDecimal\":73.500000},{\"attribute\":\"\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryId\":32,\"categoryName\":\"半成品\",\"color\":\"\",\"commodityDecimal\":24.300000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":702,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":24.300000,\"mBarCode\":\"C.4.T.0.00722\",\"materialOther\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mnemonic\":\"\",\"model\":\"MD-RS178(VA)\",\"name\":\"MD-RS178(VA) RS485分线器\",\"otherField1\":\"\",\"otherField2\":\"\",\"otherField3\":\"\",\"position\":\"\",\"purchaseDecimal\":24.300000,\"remark\":\"Excel初始化;条码:C.4.T.0.00722\",\"standard\":\"MD-RS178(VA)\",\"stock\":1000.000000,\"tenantId\":63,\"unit\":\"件\",\"wholesaleDecimal\":24.300000},{\"attribute\":\"\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryId\":32,\"categoryName\":\"半成品\",\"color\":\"\",\"commodityDecimal\":142.560000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":701,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":142.560000,\"mBarCode\":\"C.4.T.0.0068900002\",\"materialOther\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mnemonic\":\"\",\"model\":\"MD-RS114(VB)\",\"name\":\"MD-RS114(VB) 基于RS485的MODBS TCPMODBS RTUASVII转换模块_(DZG)\",\"otherField1\":\"\",\"otherField2\":\"\",\"otherField3\":\"\",\"position\":\"\",\"purchaseDecimal\":142.560000,\"remark\":\"Excel初始化;条码:C.4.T.0.0068900002\",\"standard\":\"MD-RS114(VB)\",\"stock\":100.000000,\"tenantId\":63,\"unit\":\"件\",\"wholesaleDecimal\":142.560000},{\"attribute\":\"\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryId\":32,\"categoryName\":\"半成品\",\"color\":\"\",\"commodityDecimal\":132.840000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":700,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":132.840000,\"mBarCode\":\"C.4.T.0.00686\",\"materialOther\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mnemonic\":\"\",\"model\":\"TC160(VA)\",\"name\":\"TC160(VA) 通讯模块供电盒\",\"otherField1\":\"\",\"otherField2\":\"\",\"otherField3\":\"\",\"position\":\"\",\"purchaseDecimal\":132.840000,\"remark\":\"Excel初始化;条码:C.4.T.0.00686\",\"standard\":\"TC160(VA)\",\"stock\":50.000000,\"tenantId\":63,\"unit\":\"件\",\"wholesaleDecimal\":132.840000},{\"attribute\":\"\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryId\":32,\"categoryName\":\"半成品\",\"color\":\"\",\"commodityDecimal\":0.100000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":699,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":0.100000,\"mBarCode\":\"C.4.T.0.00654\",\"materialOther\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mnemonic\":\"\",\"model\":\"MD-4G111(VF)\",\"name\":\"MD-4G111(VF) 4G模块\",\"otherField1\":\"\",\"otherField2\":\"\",\"otherField3\":\"\",\"position\":\"\",\"purchaseDecimal\":0.100000,\"remark\":\"Excel初始化;条码:C.4.T.0.00654\",\"standard\":\"MD-4G111(VF)\",\"stock\":76970.000000,\"tenantId\":63,\"unit\":\"件\",\"wholesaleDecimal\":0.100000},{\"attribute\":\"\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryId\":32,\"categoryName\":\"半成品\",\"color\":\"\",\"commodityDecimal\":324.000000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":698,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":324.000000,\"mBarCode\":\"C.4.T.0.00562\",\"materialOther\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mnemonic\":\"\",\"model\":\"MD-4GVIII(VB)\",\"name\":\"MD-4GVIII(VB)\",\"otherField1\":\"\",\"otherField2\":\"\",\"otherField3\":\"\",\"position\":\"\",\"purchaseDecimal\":324.000000,\"remark\":\"Excel初始化;条码:C.4.T.0.00562\",\"standard\":\"MD-4GVIII(VB)\",\"stock\":50.000000,\"tenantId\":63,\"unit\":\"件\",\"wholesaleDecimal\":324.000000},{\"attribute\":\"\",\"bigUnitInitialStock\":\"\",\"bigUnitStock\":\"\",\"brand\":\"\",\"categoryId\":32,\"categoryName\":\"半成品\",\"color\":\"\",\"commodityDecimal\":129.600000,\"deleteFlag\":\"0\",\"enableBatchNumber\":\"0\",\"enableSerialNumber\":\"0\",\"enabled\":true,\"id\":697,\"imgName\":\"\",\"initialStock\":0.000000,\"lowDecimal\":129.600000,\"mBarCode\":\"C.4.T.0.00553\",\"materialOther\":\"\",\"mfrs\":\"浙江瑞银电子有限公司\",\"mnemonic\":\"\",\"model\":\"MT-P109(VA)\",\"name\":\"MT-P109(VA)\",\"otherField1\":\"\",\"otherField2\":\"\",\"otherField3\":\"\",\"position\":\"\",\"purchaseDecimal\":129.600000,\"remark\":\"Excel初始化;条码:C.4.T.0.00553\",\"standard\":\"MT-P109(VA)\",\"stock\":500.000000,\"tenantId\":63,\"unit\":\"件\",\"wholesaleDecimal\":129.600000}]}}'); +INSERT INTO `tbl_log` VALUES (10227, 63, '接口日志', '43.152.142.78/1.9.116.218', '2026-10-13 05:08:50', 0, 'AssetController.dashboard()', NULL, 'GET /apis/asset/dashboard', '{}', '{\"code\":200,\"data\":{\"summary\":{\"activeCount\":259,\"deviceCount\":10,\"assetQuantity\":289.000000,\"assetCount\":255,\"assetValue\":17260.000000,\"openInventoryCount\":2,\"managedCount\":265},\"statusDistribution\":[{\"code\":\"IN_USE\",\"value\":259},{\"code\":\"REPAIR\",\"value\":3},{\"code\":\"SCRAPPED\",\"value\":3}],\"departmentDistribution\":[{\"name\":\"Production\",\"value\":56},{\"name\":\"未指定\",\"value\":54},{\"name\":\"Laboratory\",\"value\":48},{\"name\":\"Technical & Technologies\",\"value\":29},{\"name\":\"Engineering\",\"value\":18},{\"name\":\"Not Specified\",\"value\":11},{\"name\":\"Human Resources\",\"value\":6},{\"name\":\"Quality\",\"value\":6}],\"deviceCategoryDistribution\":[{\"name\":\"检测设备\",\"value\":2},{\"name\":\"贴装设备\",\"value\":2},{\"name\":\"动力设备\",\"value\":1},{\"name\":\"印刷设备\",\"value\":1},{\"name\":\"工装设备\",\"value\":1},{\"name\":\"服务器\",\"value\":1},{\"name\":\"焊接设备\",\"value\":1},{\"name\":\"物流设备\",\"value\":1}],\"message\":\"成功\",\"categoryDistribution\":[{\"code\":\"HARDWARE\",\"name\":\"硬件资产\",\"value\":198.00},{\"code\":\"SOFTWARE\",\"name\":\"软件资产\",\"value\":67.00},{\"code\":\"SIM_CARD\",\"name\":\"SIM卡\",\"value\":24.00}],\"recentInventories\":[{\"inventoryNo\":\"PD20260921190840893\",\"inventoryUserName\":\"admin\",\"planName\":\"2026年09月资产设备专项盘点\",\"id\":6,\"totalCount\":1,\"inventoriedCount\":1,\"status\":\"CLOSED\",\"updatedAt\":\"2026-09-21 19:17:28\"},{\"inventoryNo\":\"PD20260921170623856\",\"inventoryUserName\":\"张三\",\"planName\":\"2026年09月资产设备专项盘点\",\"id\":4,\"totalCount\":8,\"inventoriedCount\":8,\"status\":\"CLOSED\",\"updatedAt\":\"2026-09-21 19:16:33\"},{\"inventoryNo\":\"PD20260921190800418\",\"inventoryUserName\":\"张三\",\"planName\":\"2026年09月资产设备专项盘点\",\"id\":5,\"totalCount\":2,\"inventoriedCount\":0,\"status\":\"ACCEPTED\",\"updatedAt\":\"2026-09-21 19:08:13\"},{\"inventoryNo\":\"PD20260918131230171\",\"inventoryUserName\":\"张伟\",\"planName\":\"2026年09月资产设备专项盘点\",\"id\":1,\"totalCount\":3,\"inventoriedCount\":1,\"status\":\"IN_PROGRESS\",\"updatedAt\":\"2026-09-21 14:35:59\"}],\"updatedAt\":\"2026-10-13\"}}'); +INSERT INTO `tbl_log` VALUES (10228, 63, '接口日志', '43.174.53.16/1.9.116.218', '2026-10-13 05:08:53', 0, 'AssetController.list(..)', NULL, 'GET /apis/asset/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":255,\"rows\":[{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019200694297052\",\"assetName\":\"SIM卡 896019200694297052\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"6\",\"externalSource\":\"SIM\",\"id\":270,\"keeper\":\"UITM Dungun\",\"location\":\"SMT (???)\",\"originalValue\":0.000000,\"quantity\":1.000000,\"source\":\"SAS\",\"specification\":\"183.171.146.98\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019190221500578\",\"assetName\":\"SIM卡 896019190221500578\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"5\",\"externalSource\":\"SIM\",\"id\":269,\"keeper\":\"SMT\",\"location\":\"UITM Dungun\",\"originalValue\":0.000000,\"purchaseDate\":1608062400000,\"quantity\":1.000000,\"remark\":\"启用日期: 2020-12-16\",\"source\":\"SAS\",\"specification\":\"183.171.14.125\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019190221500576\",\"assetName\":\"SIM卡 896019190221500576\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"1\",\"externalSource\":\"SIM\",\"id\":268,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1608062400000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2020-12-16\",\"source\":\"SAS\",\"specification\":\"183.171.144.65\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607778\",\"assetName\":\"SIM卡 896019210381607778\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"2\",\"externalSource\":\"SIM\",\"id\":267,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1711051200000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2024-03-22\",\"source\":\"SAS\",\"specification\":\"183.171.15.60\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607781\",\"assetName\":\"SIM卡 896019210381607781\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"9\",\"externalSource\":\"SIM\",\"id\":266,\"keeper\":\"SMT\",\"location\":\"SMT (RnD) Modem RnD\",\"originalValue\":0.000000,\"purchaseDate\":1711051200000,\"quantity\":1.000000,\"remark\":\"设备序列号: 21070014;电表序列号: 320910015;启用日期: 2024-03-22\",\"source\":\"SAS\",\"specification\":\"183.171.5.142 / KM08-LTE Modem / 21070014\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607777\",\"assetName\":\"SIM卡 896019210381607777\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"3\",\"externalSource\":\"SIM\",\"id\":265,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1720987200000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2024-07-15\",\"source\":\"SAS\",\"specification\":\"183.171.40.182\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607782\",\"assetName\":\"SIM卡 896019210381607782\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"4\",\"externalSource\":\"SIM\",\"id\":264,\"keeper\":\"SMT\",\"location\":\"Genting\",\"originalValue\":0.000000,\"purchaseDate\":1720987200000,\"quantity\":1.000000,\"remark\":\"使用期限: 2 Years;启用日期: 2024-07-15\",\"source\":\"SAS\",\"specification\":\"183.171.40.117\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607784\",\"assetName\":\"SIM卡 896019210381607784\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"7\",\"externalSource\":\"SIM\",\"id\":263,\"keeper\":\"SMT\",\"location\":\"SMT (Modem-Production)\",\"originalValue\":0.000000,\"purchaseDate\":1727553600000,\"quantity\":1.000000,\"remark\":\"设备序列号: 20041004;启用日期: 2024-09-29\",\"source\":\"SAS\",\"specification\":\"183.171.50.5 / KM08-LTE Modem / 20041004\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607783\",\"assetName\":\"SIM卡 896019210381607783\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"8\",\"externalSource\":\"SIM\",\"id\":262,\"keeper\":\"SMT\",\"location\":\"SMT (RnD) Modem Store\",\"originalValue\":0.000000,\"purchaseDate\":1727553600000,\"quantity\":1.000000,\"remark\":\"设备序列号: 2403005;启用日期: 2024-09-29\",\"source\":\"SAS\",\"specification\":\"183.171.50.6 / KM08-LTE Modem / 2403005\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000},{\"assetCategory\":\"SIM卡\",\"assetCode\":\"SIM-896019210381607785\",\"assetName\":\"SIM卡 896019210381607785\",\"categoryCode\":\"SIM_CARD\",\"categoryId\":7,\"createTime\":1790613750000,\"creator\":63,\"deleteFlag\":\"0\",\"externalId\":\"10\",\"externalSource\":\"SIM\",\"id\":261,\"keeper\":\"SMT\",\"location\":\"SMT (RnD) Alyaa\",\"originalValue\":0.000000,\"purchaseDate\":1766433600000,\"quantity\":1.000000,\"remark\":\"设备序列号: 21070011;电表序列号: 320910014;启用日期: 2025-12-23\",\"source\":\"SAS\",\"specification\":\"183.171.151.171 / KM08-LTE Modem / 21070011\",\"status\":\"IN_USE\",\"unit\":\"张\",\"updateTime\":1790613750000}]}}'); +INSERT INTO `tbl_log` VALUES (10229, 63, '接口日志', '43.174.53.30/1.9.116.218', '2026-10-13 05:08:53', 0, 'AssetController.categoryOptions()', NULL, 'GET /apis/asset/category/options', '{}', '{\"code\":200,\"data\":{\"rows\":[{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"尚未归入具体种类的资产\",\"updateTime\":1790613193000,\"categoryCode\":\"UNCATEGORIZED\",\"id\":4,\"sort\":10,\"categoryName\":\"未分类\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System 硬件台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"HARDWARE\",\"id\":5,\"sort\":20,\"categoryName\":\"硬件资产\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System 软件台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"SOFTWARE\",\"id\":6,\"sort\":30,\"categoryName\":\"软件资产\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"从 Smart Asset System SIM 卡台账同步\",\"updateTime\":1790613193000,\"categoryCode\":\"SIM_CARD\",\"id\":7,\"sort\":40,\"categoryName\":\"SIM卡\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_01BF8DA563A0\",\"id\":11,\"sort\":100,\"categoryName\":\"生产设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_7129859760C3\",\"id\":12,\"sort\":100,\"categoryName\":\"检测设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_9F38069B30A1\",\"id\":13,\"sort\":100,\"categoryName\":\"动力设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_75F489029B11\",\"id\":14,\"sort\":100,\"categoryName\":\"IT设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_3DDFE01CA0B8\",\"id\":15,\"sort\":100,\"categoryName\":\"物流设备\",\"enabled\":true},{\"deleteFlag\":\"0\",\"createTime\":1790613193000,\"description\":\"由原资产分类字段自动迁移\",\"updateTime\":1790613193000,\"categoryCode\":\"LEGACY_B5D44F2B039A\",\"id\":16,\"sort\":100,\"categoryName\":\"工装设备\",\"enabled\":true}],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (10230, 63, '接口日志', '43.152.142.29/1.9.116.218', '2026-10-13 05:08:55', 0, 'AssetDeviceController.list(..)', NULL, 'GET /apis/assetDevice/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":10,\"rows\":[{\"assetId\":8,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"工装设备\",\"deviceCode\":\"TOOL-STENCIL-CLEAN-01\",\"deviceName\":\"全自动钢网清洗机\",\"enabledDate\":1739822400000,\"id\":10,\"keeper\":\"王磊\",\"location\":\"一车间 钢网房\",\"manufacturer\":\"SAWA\",\"model\":\"SC-A1000\",\"nextMaintenanceDate\":1794254400000,\"purchaseDate\":1739131200000,\"remark\":\"水基清洗、漂洗、热风干燥一体化\",\"serialNumber\":\"SAWA-A1000-250210\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetId\":7,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"物流设备\",\"deviceCode\":\"WH-FORKLIFT-01\",\"deviceName\":\"2 吨电动叉车\",\"enabledDate\":1722456000000,\"id\":9,\"keeper\":\"张伟\",\"location\":\"原材料仓充电区\",\"manufacturer\":\"Toyota\",\"model\":\"8FBE20\",\"nextMaintenanceDate\":1792872000000,\"purchaseDate\":1721592000000,\"remark\":\"锂电池版本,配置蓝光安全警示灯\",\"serialNumber\":\"TY-8FBE20-240722\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"仓储物流部\"},{\"assetId\":6,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"服务器\",\"deviceCode\":\"IT-MES-DB-01\",\"deviceName\":\"MES 数据库主服务器\",\"enabledDate\":1737489600000,\"id\":8,\"keeper\":\"赵敏\",\"location\":\"数据中心 A03-U18\",\"manufacturer\":\"Dell\",\"model\":\"PowerEdge R760\",\"nextMaintenanceDate\":1797278400000,\"purchaseDate\":1736884800000,\"remark\":\"双路 CPU、512GB 内存、全闪存 RAID10\",\"serialNumber\":\"CN-R760-25011501\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"信息技术部\"},{\"assetId\":5,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"动力设备\",\"deviceCode\":\"UTIL-AIR-01\",\"deviceName\":\"变频螺杆空压机\",\"enabledDate\":1701374400000,\"id\":7,\"keeper\":\"陈晨\",\"location\":\"动力站 1 号机位\",\"manufacturer\":\"Atlas Copco\",\"model\":\"GA22 VSD+\",\"nextMaintenanceDate\":1790798400000,\"purchaseDate\":1700424000000,\"remark\":\"运行压力 0.72MPa,接入能源管理系统\",\"serialNumber\":\"AC-GA22-2311209\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"设备动力部\"},{\"assetId\":4,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"检测设备\",\"deviceCode\":\"QC-SPI-01\",\"deviceName\":\"在线 3D SPI\",\"enabledDate\":1713384000000,\"id\":6,\"keeper\":\"陈晨\",\"lastInventoryTime\":1789986951000,\"location\":\"一车间 印刷检测区\",\"manufacturer\":\"Koh Young\",\"model\":\"KY8030-3\",\"nextMaintenanceDate\":1793908800000,\"purchaseDate\":1712347200000,\"remark\":\"与印刷机闭环反馈锡膏偏移数据\",\"serialNumber\":\"KY-8030-24040608\",\"status\":\"IN_USE\",\"updateTime\":1789986959000,\"useDepartment\":\"品质部\"},{\"assetId\":3,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"检测设备\",\"deviceCode\":\"QC-AOI-01\",\"deviceName\":\"在线 3D AOI\",\"enabledDate\":1713384000000,\"id\":5,\"keeper\":\"陈晨\",\"lastInventoryTime\":1790003830000,\"location\":\"一车间 AOI 检测区\",\"manufacturer\":\"Koh Young\",\"model\":\"Zenith 2\",\"nextMaintenanceDate\":1793822400000,\"purchaseDate\":1712347200000,\"remark\":\"具备 AI 缺陷复判和 SPC 数据接口\",\"serialNumber\":\"KY-Z2-24040615\",\"status\":\"IN_USE\",\"updateTime\":1790003830000,\"useDepartment\":\"品质部\"},{\"assetId\":2,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"焊接设备\",\"deviceCode\":\"SMT-L01-REFLOW-01\",\"deviceName\":\"十温区氮气回流焊炉\",\"enabledDate\":1712692800000,\"id\":4,\"keeper\":\"王磊\",\"location\":\"一车间 SMT-01 线后段\",\"manufacturer\":\"Heller Industries\",\"model\":\"HELLER 1936MK7\",\"nextMaintenanceDate\":1792440000000,\"purchaseDate\":1710705600000,\"remark\":\"氮气闭环控制,支持双轨独立调宽\",\"serialNumber\":\"HLR1936-2403268\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetId\":1,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"贴装设备\",\"deviceCode\":\"SMT-L01-MOUNTER-B\",\"deviceName\":\"多功能贴片机 B\",\"enabledDate\":1712520000000,\"id\":3,\"keeper\":\"王磊\",\"location\":\"一车间 SMT-01 线 B 工位\",\"manufacturer\":\"Panasonic\",\"model\":\"Panasonic NPM-W2S\",\"nextMaintenanceDate\":1792094400000,\"purchaseDate\":1710705600000,\"remark\":\"负责异形件及高精度元件贴装\",\"serialNumber\":\"NPMW2S24031802\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetId\":1,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"贴装设备\",\"deviceCode\":\"SMT-L01-MOUNTER-A\",\"deviceName\":\"高速模块贴片机 A\",\"enabledDate\":1712520000000,\"id\":2,\"keeper\":\"王磊\",\"location\":\"一车间 SMT-01 线 A 工位\",\"manufacturer\":\"Panasonic\",\"model\":\"Panasonic NPM-D3A\",\"nextMaintenanceDate\":1792008000000,\"purchaseDate\":1710705600000,\"remark\":\"前段高速贴装,配置 16 头轻量贴装头\",\"serialNumber\":\"NPMD3A24031801\",\"status\":\"IN_USE\",\"updateTime\":1789718123000,\"useDepartment\":\"SMT生产部\"},{\"assetId\":1,\"createTime\":1789718123000,\"creator\":63,\"deleteFlag\":\"0\",\"deviceCategory\":\"印刷设备\",\"deviceCode\":\"SMT-L01-PRINTER-01\",\"deviceName\":\"全自动锡膏印刷机\",\"enabledDate\":1712520000000,\"id\":1,\"keeper\":\"王磊\",\"lastInventoryTime\":1789726083000,\"location\":\"一车间 SMT-01 线前段\",\"manufacturer\":\"ASMPT\",\"model\":\"DEK NeoHorizon 03iX\",\"nextMaintenanceDate\":1791403200000,\"purchaseDate\":1710705600000,\"remark\":\"配置 2D 检测与自动擦网单元\",\"serialNumber\":\"DEK24NH03187\",\"status\":\"IN_USE\",\"updateTime\":1789726082000,\"useDepartment\":\"SMT生产部\"}]}}'); +INSERT INTO `tbl_log` VALUES (10231, 63, '接口日志', '43.152.142.109/1.9.116.218', '2026-10-13 05:09:13', 0, 'AssetInventoryController.list(..)', NULL, 'GET /apis/assetInventory/list', '{\"search\":\"{}\"}', '{\"code\":200,\"data\":{\"total\":4,\"rows\":[{\"abnormalCount\":0,\"auditTime\":1790003845000,\"auditUserId\":149,\"completedAt\":1790003836000,\"createTime\":1790003320000,\"creator\":149,\"deadline\":1790258400000,\"deleteFlag\":\"0\",\"id\":6,\"inventoriedCount\":1,\"inventoryNo\":\"PD20260921190840893\",\"inventoryUserId\":63,\"inventoryUserName\":\"admin\",\"normalCount\":1,\"planName\":\"2026年09月资产设备专项盘点\",\"plannedAt\":1790053200000,\"scopeType\":\"DEVICE\",\"source\":\"MANUAL\",\"startedAt\":1790003819000,\"status\":\"CLOSED\",\"totalCount\":1,\"updateTime\":1790003848000,\"updater\":149},{\"abnormalCount\":0,\"createTime\":1790003280000,\"creator\":149,\"deadline\":1790258400000,\"deleteFlag\":\"0\",\"id\":5,\"inventoriedCount\":0,\"inventoryNo\":\"PD20260921190800418\",\"inventoryUserId\":149,\"inventoryUserName\":\"张三\",\"normalCount\":0,\"planName\":\"2026年09月资产设备专项盘点\",\"plannedAt\":1790053200000,\"remark\":\"进行盘点\",\"scopeType\":\"ALL\",\"source\":\"MANUAL\",\"status\":\"ACCEPTED\",\"totalCount\":2,\"updateTime\":1790003293000,\"updater\":149},{\"abnormalCount\":0,\"completedAt\":1790002875000,\"createTime\":1789995983000,\"creator\":63,\"deadline\":1790258400000,\"deleteFlag\":\"0\",\"id\":4,\"inventoriedCount\":8,\"inventoryNo\":\"PD20260921170623856\",\"inventoryUserId\":149,\"inventoryUserName\":\"张三\",\"normalCount\":0,\"planName\":\"2026年09月资产设备专项盘点\",\"plannedAt\":1790053200000,\"remark\":\"进行盘点\",\"scopeType\":\"ASSET\",\"source\":\"MANUAL\",\"startedAt\":1790002559000,\"status\":\"CLOSED\",\"totalCount\":8,\"updateTime\":1790003793000,\"updater\":149},{\"abnormalCount\":0,\"createTime\":1789722750000,\"creator\":63,\"deadline\":1789999200000,\"deleteFlag\":\"0\",\"id\":1,\"inventoriedCount\":1,\"inventoryNo\":\"PD20260918131230171\",\"inventoryUserId\":36,\"inventoryUserName\":\"张伟\",\"normalCount\":0,\"planName\":\"2026年09月资产设备专项盘点\",\"plannedAt\":1789794000000,\"remark\":\"进行盘点\",\"scopeType\":\"DEVICE\",\"source\":\"MANUAL\",\"startedAt\":1789723142000,\"status\":\"IN_PROGRESS\",\"totalCount\":3,\"updateTime\":1789986959000,\"updater\":63}]}}'); +INSERT INTO `tbl_log` VALUES (10232, 63, '接口日志', '43.152.142.34/1.9.116.218', '2026-10-13 05:09:13', 0, 'AssetInventoryController.operatorOptions()', NULL, 'GET /apis/assetInventory/operatorOptions', '{}', '{\"code\":200,\"data\":{\"rows\":[{\"loginName\":\"admin\",\"name\":\"admin\",\"id\":63},{\"loginName\":\"admin2\",\"name\":\"admin2\",\"id\":149}],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (10233, 63, '接口日志', '43.152.142.41/1.9.116.218', '2026-10-13 05:09:17', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (10234, 63, '接口日志', '43.174.54.14/1.9.116.218', '2026-10-13 05:09:17', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (10235, 63, '接口日志', '43.152.142.34/1.9.116.218', '2026-10-13 05:09:17', 0, 'PersonController.getPersonByType(..)', NULL, 'GET /apis/person/getPersonByType', '{\"type\":\"财务员\"}', '{\"code\":200,\"data\":{\"personList\":[{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":43,\"name\":\"Juwairiah\",\"type\":\"财务员\"}]}}'); +INSERT INTO `tbl_log` VALUES (10236, 63, '接口日志', '43.174.53.19/1.9.116.218', '2026-10-13 05:09:17', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (10237, 63, '接口日志', '43.152.142.140/1.9.116.218', '2026-10-13 05:09:17', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (10238, 63, '接口日志', '43.174.54.14/1.9.116.218', '2026-10-13 05:09:17', 0, 'AccountHeadController.getList(..)', NULL, 'GET /apis/accountHead/list', '{\"search\":\"{\\\"billNo\\\":\\\"\\\",\\\"searchMaterial\\\":\\\"\\\",\\\"type\\\":\\\"收款\\\",\\\"remark\\\":\\\"\\\",\\\"number\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-07-13\\\",\\\"endTime\\\":\\\"2026-10-13\\\",\\\"createTimeRange\\\":[\\\"2026-07-12T16:00:00.000Z\\\",\\\"2026-10-12T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":9,\"rows\":[{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2110-25\",\"billTime\":1784836800000,\"billTimeStr\":\"2026-07-24 00:00:00\",\"changeAmount\":1122000.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":105,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2110\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2110-25\",\"sourceTime\":\"2026-06-23 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":1122000.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2108-18\",\"billTime\":1784145600000,\"billTimeStr\":\"2026-07-16 00:00:00\",\"changeAmount\":1122000.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":103,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2108\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2108-18\",\"sourceTime\":\"2026-06-16 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":1122000.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2129-11\",\"billTime\":1786564800000,\"billTimeStr\":\"2026-08-13 00:00:00\",\"changeAmount\":1122000.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":99,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2129\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2129-11\",\"sourceTime\":\"2026-01-01 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":1122000.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2133-65\",\"billTime\":1786651200000,\"billTimeStr\":\"2026-08-14 00:00:00\",\"changeAmount\":80850.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":98,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2133\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2133-65\",\"sourceTime\":\"2026-07-16 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2131-47\",\"billTime\":1783886400000,\"billTimeStr\":\"2026-07-13 00:00:00\",\"changeAmount\":80850.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":97,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2131\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2131-47\",\"sourceTime\":\"2026-07-13 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2130-44\",\"billTime\":1786046400000,\"billTimeStr\":\"2026-08-07 00:00:00\",\"changeAmount\":242550.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":96,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2130\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2130-44\",\"sourceTime\":\"2026-07-09 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":242550.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2122-26\",\"billTime\":1785441600000,\"billTimeStr\":\"2026-07-31 00:00:00\",\"changeAmount\":161700.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":95,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2122\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2122-26\",\"sourceTime\":\"2026-07-01 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":161700.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2113-15\",\"billTime\":1785182400000,\"billTimeStr\":\"2026-07-28 00:00:00\",\"changeAmount\":161700.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":94,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2113\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2113-15\",\"sourceTime\":\"2026-06-28 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":161700.000000,\"type\":\"收款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"SK-INV_2111-11\",\"billTime\":1785096000000,\"billTimeStr\":\"2026-07-27 00:00:00\",\"changeAmount\":242550.000000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":93,\"organId\":90,\"organName\":\"TNB\",\"remark\":\"Stock Status客户收款;发票:INV_2111\",\"source\":\"0\",\"sourceNumber\":\"XSCK-INV_2111-11\",\"sourceTime\":\"2026-06-26 00:00:00\",\"sourceType\":\"销售出库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":242550.000000,\"type\":\"收款\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (10239, 63, '接口日志', '43.174.32.34/1.9.116.218', '2026-10-13 05:09:17', 0, 'CustomerCategoryController.getTreeList(..)', NULL, 'GET /apis/customerCategory/treeList', '{}', '{\"code\":200,\"data\":{\"data\":[],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (10240, 63, '接口日志', '43.152.142.45/1.9.116.218', '2026-10-13 05:09:17', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (10241, 63, '接口日志', '43.152.142.128/1.9.116.218', '2026-10-13 05:09:17', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (10242, 63, '接口日志', '43.174.32.23/1.9.116.218', '2026-10-13 05:09:17', 0, 'DepotHeadController.getNeedCount(..)', NULL, 'GET /apis/depotHead/getNeedCount', '{\"type\":\"customer\"}', '{\"code\":200,\"data\":{\"needCount\":1}}'); +INSERT INTO `tbl_log` VALUES (10243, 63, '接口日志', '43.152.156.102/1.9.116.218', '2026-10-13 05:09:19', 0, 'SupplierController.findBySelectSup(..)', NULL, 'POST /apis/supplier/findBySelect_sup', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司\",\"id\":89}]'); +INSERT INTO `tbl_log` VALUES (10244, 63, '接口日志', '43.174.53.11/1.9.116.218', '2026-10-13 05:09:19', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (10245, 63, '接口日志', '43.152.142.64/1.9.116.218', '2026-10-13 05:09:19', 0, 'AccountHeadController.getList(..)', NULL, 'GET /apis/accountHead/list', '{\"search\":\"{\\\"billNo\\\":\\\"\\\",\\\"searchMaterial\\\":\\\"\\\",\\\"type\\\":\\\"付款\\\",\\\"remark\\\":\\\"\\\",\\\"number\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-07-13\\\",\\\"endTime\\\":\\\"2026-10-13\\\",\\\"createTimeRange\\\":[\\\"2026-07-12T16:00:00.000Z\\\",\\\"2026-10-12T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":3,\"rows\":[{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"FK-PV-008186-87-3PH-APEC3-WC-OV-25\",\"billTime\":1786651200000,\"billTimeStr\":\"2026-08-14 00:00:00\",\"changeAmount\":947751.900000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":104,\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"remark\":\"Stock Status供应商付款;PV:PV 008186/87\",\"source\":\"0\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":947751.900000,\"type\":\"付款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"FK-PV-008145-45---ZHEJIANG-METRONIX-3PH-APEC3-WC-O\",\"billTime\":1785700800000,\"billTimeStr\":\"2026-08-03 00:00:00\",\"changeAmount\":954860.058400,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":100,\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"remark\":\"Stock Status供应商付款;PV:PV 008145/45 - ZHEJIANG & METRONIX\",\"source\":\"0\",\"sourceNumber\":\"CGRK-260415-01-11\",\"sourceTime\":\"2026-04-29 00:00:00\",\"sourceType\":\"采购入库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":954860.058400,\"type\":\"付款\",\"userName\":\"admin\"},{\"accountId\":17,\"accountName\":\"瑞银账户1\",\"billNo\":\"FK-PV-008186-87-1PH-WS79-ADD1-11\",\"billTime\":1786651200000,\"billTimeStr\":\"2026-08-14 00:00:00\",\"changeAmount\":236946.640000,\"creator\":63,\"deleteFlag\":\"0\",\"discountMoney\":0.000000,\"fileName\":\"\",\"handsPersonId\":43,\"handsPersonName\":\"Juwairiah\",\"id\":92,\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"remark\":\"Stock Status供应商付款;PV:PV 008186/87\",\"source\":\"0\",\"sourceNumber\":\"CGRK-260414-01-11\",\"sourceTime\":\"2026-04-29 00:00:00\",\"sourceType\":\"采购入库\",\"sourceUser\":\"admin\",\"status\":\"1\",\"tenantId\":63,\"totalPrice\":236946.640000,\"type\":\"付款\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (10246, 63, '接口日志', '43.174.32.14/1.9.116.218', '2026-10-13 05:09:19', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (10247, 63, '接口日志', '43.174.54.44/1.9.116.218', '2026-10-13 05:09:19', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (10248, 63, '接口日志', '43.174.53.16/1.9.116.218', '2026-10-13 05:09:19', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (10249, 63, '接口日志', '43.152.142.112/1.9.116.218', '2026-10-13 05:09:19', 0, 'PersonController.getPersonByType(..)', NULL, 'GET /apis/person/getPersonByType', '{\"type\":\"财务员\"}', '{\"code\":200,\"data\":{\"personList\":[{\"deleteFlag\":\"0\",\"enabled\":true,\"id\":43,\"name\":\"Juwairiah\",\"type\":\"财务员\"}]}}'); +INSERT INTO `tbl_log` VALUES (10250, 63, '接口日志', '43.174.53.30/1.9.116.218', '2026-10-13 05:09:19', 0, 'DepotHeadController.getNeedCount(..)', NULL, 'GET /apis/depotHead/getNeedCount', '{\"type\":\"vendor\"}', '{\"code\":200,\"data\":{\"needCount\":1}}'); +INSERT INTO `tbl_log` VALUES (10251, 63, '接口日志', '43.152.142.84/1.9.116.218', '2026-10-13 05:09:22', 0, 'PackBomController.getList(..)', NULL, 'GET /apis/packBom/list', '{\"search\":\"{\\\"bomNumber\\\":\\\"\\\",\\\"bomName\\\":\\\"\\\",\\\"productMaterialParam\\\":\\\"\\\",\\\"outputMaterialParam\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"bomName\":\"v1.0\",\"bomNumber\":\"BOM00000001735\",\"createTime\":1789719259000,\"creator\":63,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"itemCount\":1,\"outputMaterialExtendId\":123,\"outputMaterialId\":703,\"outputMaterialName\":\"1PH WS79\",\"outputNumber\":1.000000,\"productMaterialExtendId\":123,\"productMaterialId\":703,\"version\":\"v1.0\"}]}}'); +INSERT INTO `tbl_log` VALUES (10252, 63, '接口日志', '43.152.142.32/1.9.116.218', '2026-10-13 05:09:23', 0, 'ProductionOrderController.getList(..)', NULL, 'GET /apis/productionOrder/list', '{\"search\":\"{\\\"orderNumber\\\":\\\"\\\",\\\"sourceNumber\\\":\\\"\\\",\\\"productMaterialParam\\\":\\\"\\\",\\\"beginTime\\\":\\\"\\\",\\\"endTime\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"auditBy\":63,\"auditByName\":\"admin\",\"auditTime\":1789719775000,\"bomId\":18,\"bomName\":\"v1.0\",\"createTime\":1789719619000,\"creator\":63,\"creatorName\":\"admin\",\"deleteFlag\":\"0\",\"finishedQuantity\":0.000000,\"id\":11,\"orderNumber\":\"GD20260918122018493\",\"orderQuantity\":10000.000000,\"outputMaterialExtendId\":123,\"outputMaterialId\":703,\"outputMaterialName\":\"1PH WS79\",\"outputQuantity\":10000.000000,\"planEndDate\":1790280000000,\"planStartDate\":1789675200000,\"priority\":\"0\",\"productMaterialExtendId\":123,\"productMaterialId\":703,\"releaseBy\":63,\"releaseTime\":1789719775000,\"remark\":\"\",\"sourceId\":1719,\"sourceNumber\":\"XSDD00000001726\",\"sourceType\":\"销售订单\",\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (10253, 63, '接口日志', '43.174.52.31/1.9.116.218', '2026-10-13 05:09:23', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (10254, 63, '接口日志', '43.152.142.29/1.9.116.218', '2026-10-13 05:09:24', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (10255, 63, '接口日志', '43.152.142.109/1.9.116.218', '2026-10-13 05:09:24', 0, 'ProductionRequisitionController.getList(..)', NULL, 'GET /apis/productionRequisition/list', '{\"search\":\"{\\\"requisitionNumber\\\":\\\"\\\",\\\"orderNumber\\\":\\\"\\\",\\\"beginTime\\\":\\\"\\\",\\\"endTime\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"confirmBy\":63,\"confirmByName\":\"admin\",\"confirmTime\":1790242827000,\"createTime\":1789720317000,\"creator\":63,\"creatorName\":\"admin\",\"deleteFlag\":\"0\",\"depotId\":25,\"depotName\":\"半成品仓库\",\"id\":9,\"itemCount\":1,\"materialsList\":\"MD-4G111(VF) 包装\",\"orderId\":11,\"orderNumber\":\"GD20260918122018493\",\"requisitionNumber\":\"LL20260918123156921\",\"status\":\"1\"},{\"createTime\":1789719809000,\"creator\":63,\"creatorName\":\"admin\",\"deleteFlag\":\"0\",\"depotId\":25,\"depotName\":\"半成品仓库\",\"id\":8,\"itemCount\":1,\"materialsList\":\"MD-4G111(VF) 包装\",\"orderId\":11,\"orderNumber\":\"GD20260918122018493\",\"remark\":\"11\",\"requisitionNumber\":\"LL20260918122329111\",\"status\":\"2\"}]}}'); +INSERT INTO `tbl_log` VALUES (10256, 63, '接口日志', '43.152.142.78/1.9.116.218', '2026-10-13 05:09:24', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (10257, 63, '接口日志', '43.174.32.12/1.9.116.218', '2026-10-13 05:09:25', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (10258, 63, '接口日志', '43.152.142.133/1.9.116.218', '2026-10-13 05:09:25', 0, 'ProductionReportController.getList(..)', NULL, 'GET /apis/productionReport/list', '{\"search\":\"{\\\"reportNumber\\\":\\\"\\\",\\\"orderNumber\\\":\\\"\\\",\\\"beginTime\\\":\\\"\\\",\\\"endTime\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (10259, 63, '接口日志', '43.174.55.40/1.9.116.218', '2026-10-13 05:09:26', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (10260, 63, '接口日志', '43.174.54.14/1.9.116.218', '2026-10-13 05:09:26', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (10261, 63, '接口日志', '43.152.142.45/1.9.116.218', '2026-10-13 05:09:26', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"其它\\\",\\\"subType\\\":\\\"请购单\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-07-13\\\",\\\"endTime\\\":\\\"2026-10-13\\\",\\\"createTimeRange\\\":[\\\"2026-07-12T16:00:00.000Z\\\",\\\"2026-10-12T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"backAmount\":0,\"changeAmount\":0,\"createTime\":1789720084000,\"creator\":63,\"debt\":0,\"defaultNumber\":\"QGD00000001738\",\"deleteFlag\":\"0\",\"deposit\":0,\"discountLastMoney\":0,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1722,\"lastDebt\":0,\"lastDeposit\":0.000000,\"materialCount\":10000.000000,\"materialsList\":\"MD-4G111(VF) 包装 MD-4G111(VF) packing MD-4G111(VF) \",\"number\":\"QGD00000001738\",\"operTime\":1789734467000,\"operTimeStr\":\"2026-09-18 16:27:47\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"请购单\",\"type\":\"其它\",\"userName\":\"admin\"},{\"backAmount\":0,\"changeAmount\":0,\"createTime\":1789717442000,\"creator\":63,\"debt\":0,\"defaultNumber\":\"QGD00000001719\",\"deleteFlag\":\"0\",\"deposit\":0,\"discountLastMoney\":0,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1715,\"lastDebt\":0,\"lastDeposit\":0.000000,\"materialCount\":7.000000,\"materialsList\":\"MD-4G111(VF) 4G模块 MD-4G111(VF) MD-4G111(VF) \",\"number\":\"QGD00000001719\",\"operTime\":1789717427000,\"operTimeStr\":\"2026-09-18 11:43:47\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"请购单\",\"type\":\"其它\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (10262, 63, '接口日志', '43.152.142.41/1.9.116.218', '2026-10-13 05:09:26', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (10263, 63, '接口日志', '43.152.142.34/1.9.116.218', '2026-10-13 05:09:26', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (10264, 63, '接口日志', '43.152.156.102/1.9.116.218', '2026-10-13 05:09:27', 0, 'SupplierController.findBySelectSup(..)', NULL, 'POST /apis/supplier/findBySelect_sup', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司\",\"id\":89}]'); +INSERT INTO `tbl_log` VALUES (10265, 63, '接口日志', '43.152.142.140/1.9.116.218', '2026-10-13 05:09:27', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (10266, 63, '接口日志', '43.174.53.16/1.9.116.218', '2026-10-13 05:09:27', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (10267, 63, '接口日志', '43.174.54.44/1.9.116.218', '2026-10-13 05:09:27', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"其它\\\",\\\"subType\\\":\\\"采购订单\\\",\\\"linkApply\\\":\\\"\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-07-13\\\",\\\"endTime\\\":\\\"2026-10-13\\\",\\\"createTimeRange\\\":[\\\"2026-07-12T16:00:00.000Z\\\",\\\"2026-10-12T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789720113000,\"creator\":63,\"debt\":100000.000000,\"defaultNumber\":\"CGDD00000001739\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":100000.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1723,\"lastDebt\":100000.000000,\"lastDeposit\":0.000000,\"linkApply\":\"QGD00000001738\",\"materialCount\":10000.000000,\"materialsList\":\"MD-4G111(VF) 包装 MD-4G111(VF) packing MD-4G111(VF) \",\"number\":\"CGDD00000001739\",\"operTime\":1789734505000,\"operTimeStr\":\"2026-09-18 16:28:25\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"采购订单\",\"totalPrice\":100000.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789717459000,\"creator\":63,\"debt\":0.700000,\"defaultNumber\":\"CGDD00000001720\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":0.700000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1716,\"lastDebt\":0.700000,\"lastDeposit\":0.000000,\"linkApply\":\"QGD00000001719\",\"materialCount\":7.000000,\"materialsList\":\"MD-4G111(VF) 4G模块 MD-4G111(VF) MD-4G111(VF) \",\"number\":\"CGDD00000001720\",\"operTime\":1789717452000,\"operTimeStr\":\"2026-09-18 11:44:12\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"采购订单\",\"totalPrice\":0.700000,\"type\":\"其它\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (10268, 63, '接口日志', '43.174.32.23/1.9.116.218', '2026-10-13 05:09:27', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (10269, 63, '接口日志', '43.152.142.128/1.9.116.218', '2026-10-13 05:09:27', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (10270, 63, '接口日志', '43.174.32.34/1.9.116.218', '2026-10-13 05:09:27', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (10271, 63, '接口日志', '43.152.156.102/1.9.116.218', '2026-10-13 05:09:28', 0, 'SupplierController.findBySelectSup(..)', NULL, 'POST /apis/supplier/findBySelect_sup', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"浙江瑞银电子有限公司\",\"id\":89}]'); +INSERT INTO `tbl_log` VALUES (10272, 63, '接口日志', '43.174.53.30/1.9.116.218', '2026-10-13 05:09:28', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (10273, 63, '接口日志', '43.152.142.84/1.9.116.218', '2026-10-13 05:09:28', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (10274, 63, '接口日志', '43.174.53.11/1.9.116.218', '2026-10-13 05:09:28', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"入库\\\",\\\"subType\\\":\\\"采购\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-07-13\\\",\\\"endTime\\\":\\\"2026-10-13\\\",\\\"createTimeRange\\\":[\\\"2026-07-12T16:00:00.000Z\\\",\\\"2026-10-12T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789720142000,\"creator\":63,\"debt\":100000.000000,\"defaultNumber\":\"CGRK00000001740\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":100000.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1724,\"lastDebt\":100000.000000,\"lastDeposit\":0.000000,\"linkNumber\":\"CGDD00000001739\",\"materialCount\":10000.000000,\"materialsList\":\"MD-4G111(VF) 包装 MD-4G111(VF) packing MD-4G111(VF) \",\"number\":\"CGRK00000001740\",\"operTime\":1789734542000,\"operTimeStr\":\"2026-09-18 16:29:02\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"采购\",\"totalPrice\":100000.000000,\"type\":\"入库\",\"userName\":\"admin\"},{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789717476000,\"creator\":63,\"debt\":0.700000,\"defaultNumber\":\"CGRK00000001721\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":0.700000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1717,\"lastDebt\":0.700000,\"lastDeposit\":0.000000,\"linkNumber\":\"CGDD00000001720\",\"materialCount\":7.000000,\"materialsList\":\"MD-4G111(VF) 4G模块 MD-4G111(VF) MD-4G111(VF) \",\"number\":\"CGRK00000001721\",\"operTime\":1789717474000,\"operTimeStr\":\"2026-09-18 11:44:34\",\"organId\":89,\"organName\":\"浙江瑞银电子有限公司\",\"otherMoney\":0.000000,\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"采购\",\"totalPrice\":0.700000,\"type\":\"入库\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (10275, 63, '接口日志', '43.174.32.14/1.9.116.218', '2026-10-13 05:09:28', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (10276, 63, '接口日志', '43.152.142.32/1.9.116.218', '2026-10-13 05:09:28', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (10277, 63, '接口日志', '43.152.142.64/1.9.116.218', '2026-10-13 05:09:28', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (10278, 63, '接口日志', '43.152.142.112/1.9.116.218', '2026-10-13 05:09:28', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (10279, 63, '接口日志', '43.152.156.102/1.9.116.218', '2026-10-13 05:09:31', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (10280, 63, '接口日志', '43.152.142.78/1.9.116.218', '2026-10-13 05:09:31', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (10281, 63, '接口日志', '43.174.52.31/1.9.116.218', '2026-10-13 05:09:31', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (10282, 63, '接口日志', '43.152.142.133/1.9.116.218', '2026-10-13 05:09:31', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (10283, 63, '接口日志', '43.152.142.29/1.9.116.218', '2026-10-13 05:09:31', 0, 'PersonController.getPersonByNumType(..)', NULL, 'GET /apis/person/getPersonByNumType', '{\"typeNum\":\"1\"}', '[]'); +INSERT INTO `tbl_log` VALUES (10284, 63, '接口日志', '43.152.142.109/1.9.116.218', '2026-10-13 05:09:31', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (10285, 63, '接口日志', '43.174.55.40/1.9.116.218', '2026-10-13 05:09:31', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (10286, 63, '接口日志', '43.174.32.12/1.9.116.218', '2026-10-13 05:09:31', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"其它\\\",\\\"subType\\\":\\\"销售订单\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-07-13\\\",\\\"endTime\\\":\\\"2026-10-13\\\",\\\"createTimeRange\\\":[\\\"2026-07-12T16:00:00.000Z\\\",\\\"2026-10-12T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":4,\"rows\":[{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789718483000,\"creator\":63,\"debt\":808500.000000,\"defaultNumber\":\"XSDD00000001726\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":808500.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1719,\"lastDebt\":808500.000000,\"lastDeposit\":0.000000,\"materialCount\":10000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD00000001726\",\"operTime\":1789732682000,\"operTimeStr\":\"2026-09-18 15:58:02\",\"organId\":90,\"organName\":\"TNB\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"totalPrice\":735000.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789726236000,\"creator\":63,\"debt\":340000000.000000,\"defaultNumber\":\"XSDD00000001724\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":340000000.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1718,\"lastDebt\":340000000.000000,\"lastDeposit\":0.000000,\"materialCount\":1000000.000000,\"materialsList\":\"3PH APEC3-WC 3PH APEC3-WC 3PH APEC3-WC \",\"number\":\"XSDD00000001724\",\"operTime\":1789725706000,\"operTimeStr\":\"2026-09-18 14:01:46\",\"organId\":90,\"organName\":\"TNB\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"0\",\"subType\":\"销售订单\",\"totalPrice\":340000000.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1785355200000,\"creator\":63,\"debt\":242550.000000,\"defaultNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":242550.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1580,\"lastDebt\":242550.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":3000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303475-1PH-WS79-ADD1\",\"operTime\":1785355200000,\"operTimeStr\":\"2026-07-30 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303475\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":242550.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1785355200000,\"creator\":63,\"debt\":323400.000000,\"defaultNumber\":\"XSDD-42303447-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":323400.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1574,\"lastDebt\":323400.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":4000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303447-1PH-WS79-ADD1\",\"operTime\":1785355200000,\"operTimeStr\":\"2026-07-30 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303447\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":323400.000000,\"type\":\"其它\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (10287, 63, '接口日志', '43.174.54.14/1.9.116.218', '2026-10-13 05:09:31', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (10288, 63, '接口日志', '43.152.156.102/1.9.116.218', '2026-10-13 05:09:32', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (10289, 63, '接口日志', '43.174.32.34/1.9.116.218', '2026-10-13 05:09:32', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (10290, 63, '接口日志', '43.174.32.23/1.9.116.218', '2026-10-13 05:09:32', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (10291, 63, '接口日志', '43.152.142.34/1.9.116.218', '2026-10-13 05:09:32', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"出库\\\",\\\"subType\\\":\\\"销售\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-07-13\\\",\\\"endTime\\\":\\\"2026-10-13\\\",\\\"createTimeRange\\\":[\\\"2026-07-12T16:00:00.000Z\\\",\\\"2026-10-12T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":29,\"rows\":[{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789718584000,\"creator\":63,\"debt\":808500.000000,\"defaultNumber\":\"XSCK00000001728\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":808500.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1720,\"lastDebt\":808500.000000,\"lastDeposit\":0.000000,\"linkNumber\":\"XSDD00000001726\",\"materialCount\":10000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK00000001728\",\"operTime\":1789732981000,\"operTimeStr\":\"2026-09-18 16:03:01\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"totalPrice\":735000.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1786305600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-87\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1671,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303506-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-87\",\"operTime\":1786305600000,\"operTimeStr\":\"2026-08-10 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1786305600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2159-86\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1670,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303506-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2159-86\",\"operTime\":1786305600000,\"operTimeStr\":\"2026-08-10 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2159\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785873600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-DO_2158-85\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1669,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-DO_2158-85\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:DO_2158\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785873600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-84\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1668,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-84\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785873600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-DO_2157-83\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1667,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-DO_2157-83\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:DO_2157\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785268800000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2150-69\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1665,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303480-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2150-69\",\"operTime\":1785268800000,\"operTimeStr\":\"2026-07-29 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2150\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784750400000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2142-68\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1664,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303480-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2142-68\",\"operTime\":1784750400000,\"operTimeStr\":\"2026-07-23 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2142\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784145600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-67\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1663,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-67\",\"operTime\":1784145600000,\"operTimeStr\":\"2026-07-16 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784145600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2134-66\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1662,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2134-66\",\"operTime\":1784145600000,\"operTimeStr\":\"2026-07-16 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2134\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (10292, 63, '接口日志', '43.152.142.41/1.9.116.218', '2026-10-13 05:09:32', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (10293, 63, '接口日志', '43.152.142.128/1.9.116.218', '2026-10-13 05:09:32', 0, 'PersonController.getPersonByNumType(..)', NULL, 'GET /apis/person/getPersonByNumType', '{\"typeNum\":\"1\"}', '[]'); +INSERT INTO `tbl_log` VALUES (10294, 63, '接口日志', '43.152.142.140/1.9.116.218', '2026-10-13 05:09:32', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (10295, 63, '接口日志', '43.152.142.45/1.9.116.218', '2026-10-13 05:09:32', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (10296, 63, '接口日志', '43.174.53.16/1.9.116.218', '2026-10-13 05:09:32', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (10297, 63, '接口日志', '43.174.54.44/1.9.116.218', '2026-10-13 05:09:34', 0, 'SaleShipmentController.getList(..)', NULL, 'GET /apis/saleShipment/list', '{\"search\":\"{\\\"shipmentNumber\\\":\\\"\\\",\\\"saleOutNumber\\\":\\\"\\\",\\\"saleOrderNumber\\\":\\\"\\\",\\\"logisticsNo\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"actualQuantity\":10000.000000,\"approveBy\":63,\"approveByName\":\"admin\",\"approveRemark\":\"审批通过\",\"approveTime\":1789720647000,\"confirmBy\":63,\"confirmByName\":\"admin\",\"confirmTime\":1789720682000,\"createTime\":1789720588000,\"creator\":63,\"creatorName\":\"admin\",\"customerId\":90,\"customerName\":\"TNB\",\"deleteFlag\":\"0\",\"deliveryPlanId\":7,\"deliveryPlanNumber\":\"JH00000001741\",\"differenceQuantity\":0.000000,\"id\":17,\"materialsList\":\"1PH WS79\",\"planQuantity\":10000.000000,\"plannedShipTime\":1789734921000,\"saleOrderNumber\":\"XSDD00000001726\",\"saleOutId\":1720,\"saleOutNumber\":\"XSCK00000001728\",\"shipBy\":63,\"shipByName\":\"admin\",\"shipTime\":1789720682000,\"shipmentNumber\":\"FHTZ00000001742\",\"sourceType\":\"sale\",\"status\":\"2\"},{\"actualQuantity\":149.000000,\"approveBy\":63,\"approveByName\":\"admin\",\"approveRemark\":\"审批通过\",\"approveTime\":1789717350000,\"confirmBy\":63,\"confirmByName\":\"admin\",\"confirmTime\":1789717357000,\"createTime\":1789717342000,\"creator\":63,\"creatorName\":\"admin\",\"customerId\":90,\"customerName\":\"TNB\",\"deleteFlag\":\"0\",\"deliveryPlanId\":6,\"deliveryPlanNumber\":\"JH00000001717\",\"differenceQuantity\":0.000000,\"id\":16,\"logisticsCompany\":\"FEXD\",\"logisticsNo\":\"FD10000001\",\"materialsList\":\"3PH APEC3-WC\",\"planQuantity\":149.000000,\"plannedShipTime\":1789717304000,\"receiver\":\"Hank\",\"receiverAddress\":\"5433 Grand Ave\",\"receiverPhone\":\"60001-1111\",\"saleOrderNumber\":\"XSDD-42260529-3PH-APEC3-WC-OV\",\"saleOutId\":1714,\"saleOutNumber\":\"XSCK-3PH-APEC3-WC-OV-28\",\"shipBy\":63,\"shipByName\":\"admin\",\"shipTime\":1789717357000,\"shipmentNumber\":\"FHTZ00000001718\",\"sourceType\":\"sale\",\"status\":\"2\"}]}}'); +INSERT INTO `tbl_log` VALUES (10298, 63, '接口日志', '43.174.53.11/1.9.116.218', '2026-10-13 05:09:54', 0, 'SaleShipmentController.getList(..)', NULL, 'GET /apis/saleShipment/list', '{\"search\":\"{\\\"shipmentNumber\\\":\\\"\\\",\\\"saleOutNumber\\\":\\\"\\\",\\\"saleOrderNumber\\\":\\\"\\\",\\\"logisticsNo\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"actualQuantity\":10000.000000,\"approveBy\":63,\"approveByName\":\"admin\",\"approveRemark\":\"审批通过\",\"approveTime\":1789720647000,\"confirmBy\":63,\"confirmByName\":\"admin\",\"confirmTime\":1789720682000,\"createTime\":1789720588000,\"creator\":63,\"creatorName\":\"admin\",\"customerId\":90,\"customerName\":\"TNB\",\"deleteFlag\":\"0\",\"deliveryPlanId\":7,\"deliveryPlanNumber\":\"JH00000001741\",\"differenceQuantity\":0.000000,\"id\":17,\"materialsList\":\"1PH WS79\",\"planQuantity\":10000.000000,\"plannedShipTime\":1789734921000,\"saleOrderNumber\":\"XSDD00000001726\",\"saleOutId\":1720,\"saleOutNumber\":\"XSCK00000001728\",\"shipBy\":63,\"shipByName\":\"admin\",\"shipTime\":1789720682000,\"shipmentNumber\":\"FHTZ00000001742\",\"sourceType\":\"sale\",\"status\":\"2\"},{\"actualQuantity\":149.000000,\"approveBy\":63,\"approveByName\":\"admin\",\"approveRemark\":\"审批通过\",\"approveTime\":1789717350000,\"confirmBy\":63,\"confirmByName\":\"admin\",\"confirmTime\":1789717357000,\"createTime\":1789717342000,\"creator\":63,\"creatorName\":\"admin\",\"customerId\":90,\"customerName\":\"TNB\",\"deleteFlag\":\"0\",\"deliveryPlanId\":6,\"deliveryPlanNumber\":\"JH00000001717\",\"differenceQuantity\":0.000000,\"id\":16,\"logisticsCompany\":\"FEXD\",\"logisticsNo\":\"FD10000001\",\"materialsList\":\"3PH APEC3-WC\",\"planQuantity\":149.000000,\"plannedShipTime\":1789717304000,\"receiver\":\"Hank\",\"receiverAddress\":\"5433 Grand Ave\",\"receiverPhone\":\"60001-1111\",\"saleOrderNumber\":\"XSDD-42260529-3PH-APEC3-WC-OV\",\"saleOutId\":1714,\"saleOutNumber\":\"XSCK-3PH-APEC3-WC-OV-28\",\"shipBy\":63,\"shipByName\":\"admin\",\"shipTime\":1789717357000,\"shipmentNumber\":\"FHTZ00000001718\",\"sourceType\":\"sale\",\"status\":\"2\"}]}}'); +INSERT INTO `tbl_log` VALUES (10299, 63, '接口日志', '43.152.142.64/1.9.116.218', '2026-10-13 05:09:56', 0, 'DeliveryPlanController.getList(..)', NULL, 'GET /apis/deliveryPlan/list', '{\"search\":\"{\\\"planNumber\\\":\\\"\\\",\\\"sourceBillNumber\\\":\\\"\\\",\\\"saleOrderNumber\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"createTime\":1789720385000,\"creator\":63,\"creatorName\":\"admin\",\"customerId\":90,\"customerName\":\"TNB\",\"deleteFlag\":\"0\",\"id\":7,\"materialsList\":\"1PH WS79\",\"planNumber\":\"JH00000001741\",\"planQuantity\":10000.000000,\"saleOrderNumber\":\"XSDD00000001726\",\"shippedQuantity\":0.000000,\"sourceBillId\":1720,\"sourceBillNumber\":\"XSCK00000001728\",\"sourceType\":\"sale\",\"status\":\"2\"},{\"createTime\":1789717298000,\"creator\":63,\"creatorName\":\"admin\",\"customerId\":90,\"customerName\":\"TNB\",\"deleteFlag\":\"0\",\"id\":6,\"materialsList\":\"3PH APEC3-WC\",\"planNumber\":\"JH00000001717\",\"planQuantity\":149.000000,\"saleOrderNumber\":\"XSDD-42260529-3PH-APEC3-WC-OV\",\"shippedQuantity\":0.000000,\"sourceBillId\":1714,\"sourceBillNumber\":\"XSCK-3PH-APEC3-WC-OV-28\",\"sourceType\":\"sale\",\"status\":\"2\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (10300, 63, '接口日志', '43.174.32.14/1.9.116.218', '2026-10-13 05:09:58', 0, 'DeliveryPlanController.getDetail(..)', NULL, 'GET /apis/deliveryPlan/detail', '{\"id\":7}', '{\"code\":200,\"data\":{\"rows\":[{\"barCode\":\"1PH-WS79\",\"deleteFlag\":\"0\",\"depotId\":25,\"id\":6,\"materialExtendId\":123,\"materialId\":703,\"materialName\":\"1PH WS79\",\"model\":\"1PH WS79\",\"planId\":7,\"planQuantity\":10000.000000,\"shippedQuantity\":0.000000,\"sourceItemId\":1525,\"standard\":\"1PH WS79\",\"unit\":\"件\"}],\"info\":{\"createTime\":1789720385000,\"creator\":63,\"customerId\":90,\"deleteFlag\":\"0\",\"id\":7,\"planNumber\":\"JH00000001741\",\"saleOrderNumber\":\"XSDD00000001726\",\"sourceBillId\":1720,\"sourceBillNumber\":\"XSCK00000001728\",\"sourceType\":\"sale\",\"status\":\"2\"}}}'); +INSERT INTO `tbl_log` VALUES (10301, 63, '接口日志', '43.152.142.112/1.9.116.218', '2026-10-13 05:10:03', 0, 'DeliveryPlanController.getDetail(..)', NULL, 'GET /apis/deliveryPlan/detail', '{\"id\":6}', '{\"code\":200,\"data\":{\"rows\":[{\"barCode\":\"3PH-APEC3-WC\",\"deleteFlag\":\"0\",\"depotId\":26,\"id\":5,\"materialExtendId\":124,\"materialId\":704,\"materialName\":\"3PH APEC3-WC\",\"model\":\"3PH APEC3-WC\",\"planId\":6,\"planQuantity\":149.000000,\"remark\":\"\",\"shippedQuantity\":0.000000,\"sourceItemId\":1519,\"standard\":\"3PH APEC3-WC\",\"tenantId\":63,\"unit\":\"件\"}],\"info\":{\"createTime\":1789717298000,\"creator\":63,\"customerId\":90,\"deleteFlag\":\"0\",\"id\":6,\"planNumber\":\"JH00000001717\",\"saleOrderNumber\":\"XSDD-42260529-3PH-APEC3-WC-OV\",\"sourceBillId\":1714,\"sourceBillNumber\":\"XSCK-3PH-APEC3-WC-OV-28\",\"sourceType\":\"sale\",\"status\":\"2\",\"tenantId\":63}}}'); +INSERT INTO `tbl_log` VALUES (10302, 63, '接口日志', '43.174.53.30/1.9.116.218', '2026-10-13 05:10:18', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0},{\"month\":\"2026-10\",\"inbound\":0,\"ordered\":0,\"shipped\":0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (10303, 63, '接口日志', '43.174.52.31/1.9.116.218', '2026-10-13 05:12:16', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0},{\"month\":\"2026-10\",\"inbound\":0,\"ordered\":0,\"shipped\":0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (10304, NULL, '接口日志', '43.152.142.140/1.9.116.218', '2026-10-13 05:12:20', 0, 'UserController.logout(..)', NULL, 'GET /apis/user/logout', '{}', '{\"code\":400}'); +INSERT INTO `tbl_log` VALUES (10305, NULL, '接口日志', '43.152.142.128/1.9.116.218', '2026-10-13 05:12:20', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (10306, NULL, '接口日志', '43.174.32.14/1.9.116.218', '2026-10-13 05:12:20', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (10307, NULL, '接口日志', '43.152.142.84/1.9.116.218', '2026-10-13 05:12:21', 0, 'UserController.randomImage(..)', NULL, 'GET /apis/user/randomImage', '{}', '{\"code\":200,\"data\":{\"base64\":\"data:image/jpg;base64,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\",\"uuid\":\"8cc57d947b4e45ae8d93abff6ec41962\"}}'); +INSERT INTO `tbl_log` VALUES (10308, NULL, '接口日志', '43.174.32.34/1.9.116.218', '2026-10-13 05:12:21', 0, 'PlatformConfigController.getPlatformCheckcodeFlag(..)', NULL, 'GET /apis/platformConfig/getPlatform/checkcodeFlag', '{}', '\"1\"'); +INSERT INTO `tbl_log` VALUES (10309, NULL, '接口日志', '183.131.72.229/122.233.38.5', '2026-10-13 10:42:55', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (10310, NULL, '接口日志', '183.131.72.213/122.233.38.5', '2026-10-13 10:42:56', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (10311, NULL, '接口日志', '183.131.72.11/122.233.38.5', '2026-10-13 10:46:17', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (10312, NULL, '接口日志', '36.249.95.13/122.233.38.5', '2026-10-13 10:46:17', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (10313, NULL, '接口日志', '36.249.95.13/122.233.38.5', '2026-10-13 10:46:20', 0, 'UserController.randomImage(..)', NULL, 'GET /apis/user/randomImage', '{}', '{\"code\":200,\"data\":{\"base64\":\"data:image/jpg;base64,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\",\"uuid\":\"102369273d634942a8f9d183506867fb\"}}'); +INSERT INTO `tbl_log` VALUES (10314, NULL, '接口日志', '36.249.95.13/122.233.38.5', '2026-10-13 10:46:20', 0, 'PlatformConfigController.getPlatformCheckcodeFlag(..)', NULL, 'GET /apis/platformConfig/getPlatform/checkcodeFlag', '{}', '\"1\"'); +INSERT INTO `tbl_log` VALUES (10315, NULL, '接口日志', '36.249.95.13/122.233.38.5', '2026-10-13 10:46:27', 0, 'UserController.randomImage(..)', NULL, 'GET /apis/user/randomImage', '{}', '{\"code\":200,\"data\":{\"base64\":\"data:image/jpg;base64,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\",\"uuid\":\"0685fad9ce0e405ba0f5a539b74db74f\"}}'); +INSERT INTO `tbl_log` VALUES (10316, 63, '用户', '183.131.72.145/122.233.38.5', '2026-10-13 10:46:32', 0, '登录admin', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (10317, NULL, '接口日志', '183.131.72.145/122.233.38.5', '2026-10-13 10:46:32', 0, 'UserController.login(..)', NULL, 'POST /apis/user/login', '{\"userParam\":{\"code\":\"oa57\",\"loginName\":\"admin\",\"password\":\"******\",\"uuid\":\"0685fad9ce0e405ba0f5a539b74db74f\"}}', '{\"code\":200,\"data\":{\"pwdSimple\":\"******\",\"user\":{\"deleteFlag\":\"0\",\"description\":\"\",\"email\":\"666666@qq.com\",\"id\":63,\"ismanager\":1,\"isystem\":1,\"leaderFlag\":\"0\",\"loginName\":\"admin\",\"password\":\"******\",\"phonenum\":\"1123123123132\",\"position\":\"主管\",\"status\":0,\"tenantId\":63,\"username\":\"admin\"},\"msgTip\":\"user can login\",\"token\":\"******\"}}'); +INSERT INTO `tbl_log` VALUES (10318, 63, '接口日志', '36.249.95.13/122.233.38.5', '2026-10-13 10:46:33', 0, 'MaterialPropertyController.getAllList(..)', NULL, 'GET /apis/materialProperty/getAllList', '{}', '{\"code\":200,\"data\":[{\"anotherName\":\"扩展1\",\"id\":1,\"nativeName\":\"扩展1\"},{\"anotherName\":\"扩展2\",\"id\":2,\"nativeName\":\"扩展2\"},{\"anotherName\":\"扩展3\",\"id\":3,\"nativeName\":\"扩展3\"}]}'); +INSERT INTO `tbl_log` VALUES (10319, 63, '接口日志', '183.131.72.203/122.233.38.5', '2026-10-13 10:46:34', 0, 'FunctionController.findMenuByPNumber(..)', NULL, 'POST /apis/function/findMenuByPNumber', '{\"jsonObject\":{\"userId\":63,\"pNumber\":0}}', '[{\"component\":\"/layouts/TabLayout\",\"icon\":\"home\",\"id\":0,\"text\":\"首页\",\"url\":\"/dashboard/analysis\",\"textEn\":\"Home\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/SaleOrderList\",\"icon\":\"profile\",\"id\":242,\"text\":\"销售订单\",\"url\":\"/bill/sale_order\",\"textEn\":\"Sales Orders\"},{\"component\":\"/bill/SaleOutList\",\"icon\":\"profile\",\"id\":41,\"text\":\"销售出库\",\"url\":\"/bill/sale_out\",\"textEn\":\"Sales Shipments\"},{\"component\":\"/bill/DeliveryPlanList\",\"icon\":\"profile\",\"id\":271,\"text\":\"交货计划管理\",\"url\":\"/bill/delivery_plan\",\"textEn\":\"Delivery Plans\"},{\"component\":\"/bill/SaleShipmentList\",\"icon\":\"car\",\"id\":268,\"text\":\"发货管理\",\"url\":\"/bill/sale_shipment\",\"textEn\":\"Shipment Management\"},{\"component\":\"/bill/SaleBackList\",\"icon\":\"profile\",\"id\":200,\"text\":\"销售退货\",\"url\":\"/bill/sale_back\",\"textEn\":\"Sales Returns\"},{\"component\":\"/bill/RetailOutList\",\"icon\":\"profile\",\"id\":210,\"text\":\"零售出库\",\"url\":\"/bill/retail_out\",\"textEn\":\"Retail Shipments\"},{\"component\":\"/bill/RetailBackList\",\"icon\":\"profile\",\"id\":211,\"text\":\"零售退货\",\"url\":\"/bill/retail_back\",\"textEn\":\"Retail Returns\"}],\"icon\":\"shopping-cart\",\"id\":38,\"text\":\"销售管理\",\"url\":\"/billB\",\"textEn\":\"Sales Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/PurchaseApplyList\",\"icon\":\"profile\",\"id\":261,\"text\":\"请购单\",\"url\":\"/bill/purchase_apply\",\"textEn\":\"Purchase Requisitions\"},{\"component\":\"/bill/PurchaseOrderList\",\"icon\":\"profile\",\"id\":241,\"text\":\"采购订单\",\"url\":\"/bill/purchase_order\",\"textEn\":\"Purchase Orders\"},{\"component\":\"/bill/PurchaseInList\",\"icon\":\"profile\",\"id\":33,\"text\":\"采购入库\",\"url\":\"/bill/purchase_in\",\"textEn\":\"Purchase Receipts\"},{\"component\":\"/bill/PurchaseBackList\",\"icon\":\"profile\",\"id\":199,\"text\":\"采购退货\",\"url\":\"/bill/purchase_back\",\"textEn\":\"Purchase Returns\"}],\"icon\":\"retweet\",\"id\":32,\"text\":\"采购管理\",\"url\":\"/bill\",\"textEn\":\"Purchase Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/production/PackBomList\",\"icon\":\"profile\",\"id\":263,\"text\":\"生产方案\",\"url\":\"/production/pack_bom\",\"textEn\":\"Production BOMs\"},{\"component\":\"/production/OrderList\",\"icon\":\"profile\",\"id\":264,\"text\":\"生产工单\",\"url\":\"/production/order\",\"textEn\":\"Production Orders\"},{\"component\":\"/production/RequisitionList\",\"icon\":\"profile\",\"id\":265,\"text\":\"领料管理\",\"url\":\"/production/requisition\",\"textEn\":\"Material Requisitions\"},{\"component\":\"/production/ReportList\",\"icon\":\"profile\",\"id\":266,\"text\":\"完工报工\",\"url\":\"/production/report\",\"textEn\":\"Production Reports\"}],\"icon\":\"cluster\",\"id\":262,\"text\":\"生产管理\",\"url\":\"/production\",\"textEn\":\"Production Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/MaterialStock\",\"icon\":\"profile\",\"id\":246,\"text\":\"商品库存\",\"url\":\"/report/material_stock\",\"textEn\":\"Product Inventory\"},{\"component\":\"/bill/OtherInList\",\"icon\":\"profile\",\"id\":201,\"text\":\"其它入库\",\"url\":\"/bill/other_in\",\"textEn\":\"Other Receipts\"},{\"component\":\"/bill/OtherOutList\",\"icon\":\"profile\",\"id\":202,\"text\":\"其它出库\",\"url\":\"/bill/other_out\",\"textEn\":\"Other Shipments\"},{\"component\":\"/bill/HeadquartersInList\",\"icon\":\"profile\",\"id\":270,\"text\":\"总部入库\",\"url\":\"/bill/headquarters_in\",\"textEn\":\"Headquarters Receipts\"}],\"icon\":\"hdd\",\"id\":239,\"text\":\"仓库管理\",\"url\":\"/billD\",\"textEn\":\"Warehouse Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/financial/MoneyInList\",\"icon\":\"profile\",\"id\":204,\"text\":\"收款单\",\"url\":\"/financial/money_in\",\"textEn\":\"Receipt Vouchers\"},{\"component\":\"/financial/MoneyOutList\",\"icon\":\"profile\",\"id\":205,\"text\":\"付款单\",\"url\":\"/financial/money_out\",\"textEn\":\"Payment Vouchers\"}],\"icon\":\"money-collect\",\"id\":44,\"text\":\"财务管理\",\"url\":\"/financial\",\"textEn\":\"Finance Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/asset/AssetDashboard\",\"icon\":\"dashboard\",\"id\":276,\"text\":\"资产汇总\",\"url\":\"/asset\",\"textEn\":\"Asset Overview\"},{\"component\":\"/asset/AssetList\",\"icon\":\"profile\",\"id\":273,\"text\":\"资产台账\",\"url\":\"/asset/ledger\",\"textEn\":\"Asset Ledger\"},{\"component\":\"/asset/DeviceList\",\"icon\":\"tool\",\"id\":274,\"text\":\"设备台账\",\"url\":\"/asset/device\",\"textEn\":\"Device Ledger\"},{\"component\":\"/asset/InventoryList\",\"icon\":\"scan\",\"id\":275,\"text\":\"资产盘点\",\"url\":\"/asset/inventory\",\"textEn\":\"Asset Inventory\"}],\"icon\":\"bank\",\"id\":272,\"text\":\"资产管理\",\"url\":\"/assetManagement\",\"textEn\":\"Asset Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/material/MaterialCategoryList\",\"icon\":\"profile\",\"id\":22,\"text\":\"商品类别\",\"url\":\"/material/material_category\",\"textEn\":\"Product Categories\"},{\"component\":\"/material/MaterialList\",\"icon\":\"profile\",\"id\":23,\"text\":\"商品信息\",\"url\":\"/material/material\",\"textEn\":\"Product Information\"},{\"component\":\"/system/UnitList\",\"icon\":\"profile\",\"id\":220,\"text\":\"多单位\",\"url\":\"/system/unit\",\"textEn\":\"Multiple Units\"},{\"component\":\"/material/MaterialAttributeList\",\"icon\":\"profile\",\"id\":247,\"text\":\"多属性\",\"url\":\"/material/material_attribute\",\"textEn\":\"Product Attributes\"}],\"icon\":\"shopping\",\"id\":21,\"text\":\"商品管理\",\"url\":\"/material\",\"textEn\":\"Product Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/AccountReport\",\"icon\":\"profile\",\"id\":207,\"text\":\"账户统计\",\"url\":\"/report/account_report\",\"textEn\":\"Account Summary\"},{\"component\":\"/report/RetailOutReport\",\"icon\":\"profile\",\"id\":259,\"text\":\"零售统计\",\"url\":\"/report/retail_out_report\",\"textEn\":\"Retail Summary\"},{\"component\":\"/report/BuyInReport\",\"icon\":\"profile\",\"id\":208,\"text\":\"采购统计\",\"url\":\"/report/buy_in_report\",\"textEn\":\"Purchase Summary\"},{\"component\":\"/report/SaleOutReport\",\"icon\":\"profile\",\"id\":209,\"text\":\"销售统计\",\"url\":\"/report/sale_out_report\",\"textEn\":\"Sales Summary\"},{\"component\":\"/report/InDetail\",\"icon\":\"profile\",\"id\":226,\"text\":\"入库明细\",\"url\":\"/report/in_detail\",\"textEn\":\"Inbound Details\"},{\"component\":\"/report/OutDetail\",\"icon\":\"profile\",\"id\":227,\"text\":\"出库明细\",\"url\":\"/report/out_detail\",\"textEn\":\"Outbound Details\"},{\"component\":\"/report/InMaterialCount\",\"icon\":\"profile\",\"id\":228,\"text\":\"入库汇总\",\"url\":\"/report/in_material_count\",\"textEn\":\"Inbound Summary\"},{\"component\":\"/report/OutMaterialCount\",\"icon\":\"profile\",\"id\":229,\"text\":\"出库汇总\",\"url\":\"/report/out_material_count\",\"textEn\":\"Outbound Summary\"},{\"component\":\"/report/InOutStockReport\",\"icon\":\"profile\",\"id\":59,\"text\":\"进销存统计\",\"url\":\"/report/in_out_stock_report\",\"textEn\":\"Inventory Transaction Summary\"},{\"component\":\"/report/CustomerAccount\",\"icon\":\"profile\",\"id\":235,\"text\":\"客户对账\",\"url\":\"/report/customer_account\",\"textEn\":\"Customer Reconciliation\"},{\"component\":\"/report/VendorAccount\",\"icon\":\"profile\",\"id\":237,\"text\":\"供应商对账\",\"url\":\"/report/vendor_account\",\"textEn\":\"Supplier Reconciliation\"},{\"component\":\"/report/StockWarningReport\",\"icon\":\"profile\",\"id\":244,\"text\":\"库存预警\",\"url\":\"/report/stock_warning_report\",\"textEn\":\"Stock Alerts\"}],\"icon\":\"pie-chart\",\"id\":198,\"text\":\"报表查询\",\"url\":\"/report\",\"textEn\":\"Reports\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/VendorList\",\"icon\":\"profile\",\"id\":25,\"text\":\"供应商信息\",\"url\":\"/system/vendor\",\"textEn\":\"Suppliers\"},{\"component\":\"/system/CustomerList\",\"icon\":\"profile\",\"id\":217,\"text\":\"客户信息\",\"url\":\"/system/customer\",\"textEn\":\"Customers\"},{\"component\":\"/system/MemberList\",\"icon\":\"profile\",\"id\":218,\"text\":\"会员信息\",\"url\":\"/system/member\",\"textEn\":\"Members\"},{\"component\":\"/system/CustomerCategoryList\",\"icon\":\"bars\",\"id\":267,\"text\":\"客户分类\",\"url\":\"/system/customerCategory\",\"textEn\":\"Customer Categories\"},{\"component\":\"/system/DepotList\",\"icon\":\"profile\",\"id\":26,\"text\":\"仓库信息\",\"url\":\"/system/depot\",\"textEn\":\"Warehouses\"},{\"component\":\"/system/InOutItemList\",\"icon\":\"profile\",\"id\":194,\"text\":\"收支项目\",\"url\":\"/system/in_out_item\",\"textEn\":\"Income and Expense Items\"},{\"component\":\"/system/AccountList\",\"icon\":\"profile\",\"id\":195,\"text\":\"结算账户\",\"url\":\"/system/account\",\"textEn\":\"Settlement Accounts\"},{\"component\":\"/system/PersonList\",\"icon\":\"profile\",\"id\":31,\"text\":\"操作人员管理\",\"url\":\"/system/person\",\"textEn\":\"Operators\"}],\"icon\":\"appstore\",\"id\":24,\"text\":\"基础资料\",\"url\":\"/systemA\",\"textEn\":\"Master Data\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/RoleList\",\"icon\":\"profile\",\"id\":13,\"text\":\"角色管理\",\"url\":\"/system/role\",\"textEn\":\"Role Management\"},{\"component\":\"/system/UserList\",\"icon\":\"profile\",\"id\":14,\"text\":\"用户管理\",\"url\":\"/system/user\",\"textEn\":\"User Management\"},{\"component\":\"/system/OrganizationList\",\"icon\":\"profile\",\"id\":243,\"text\":\"部门管理\",\"url\":\"/system/organization\",\"textEn\":\"Department Management\"},{\"component\":\"/system/LogList\",\"icon\":\"profile\",\"id\":15,\"text\":\"日志管理\",\"url\":\"/system/log\",\"textEn\":\"Log Management\"},{\"component\":\"/material/MaterialPropertyList\",\"icon\":\"profile\",\"id\":236,\"text\":\"商品属性\",\"url\":\"/material/material_property\",\"textEn\":\"Product Properties\"},{\"component\":\"/system/SystemConfigList\",\"icon\":\"profile\",\"id\":234,\"text\":\"系统配置\",\"url\":\"/system/system_config\",\"textEn\":\"System Configuration\"},{\"component\":\"/system/FunctionList\",\"icon\":\"profile\",\"id\":16,\"text\":\"菜单管理\",\"url\":\"/system/function\",\"textEn\":\"Resource Menus\"},{\"component\":\"/system/PluginList\",\"icon\":\"profile\",\"id\":245,\"text\":\"插件管理\",\"url\":\"/system/plugin\",\"textEn\":\"Plugin Management\"},{\"component\":\"/system/DictList\",\"icon\":\"profile\",\"id\":260,\"text\":\"字典管理\",\"url\":\"/system/dict\",\"textEn\":\"Dictionary Management\"},{\"component\":\"/system/PlatformConfigList\",\"icon\":\"profile\",\"id\":258,\"text\":\"平台配置\",\"url\":\"/system/platform_config\",\"textEn\":\"Platform Configuration\"}],\"icon\":\"setting\",\"id\":1,\"text\":\"系统管理\",\"url\":\"/system\",\"textEn\":\"System Management\"}]'); +INSERT INTO `tbl_log` VALUES (10320, 63, '接口日志', '36.249.95.13/122.233.38.5', '2026-10-13 10:46:34', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0},{\"month\":\"2026-10\",\"inbound\":0,\"ordered\":0,\"shipped\":0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (10321, 63, '接口日志', '36.249.95.13/122.233.38.5', '2026-10-13 10:46:34', 0, 'MsgController.getMsgByStatus(..)', NULL, 'GET /apis/msg/getMsgByStatus', '{\"status\":\"1\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (10322, 63, '接口日志', '36.249.95.13/122.233.38.5', '2026-10-13 10:46:34', 0, 'UserController.getUserBtnByCurrentUser(..)', NULL, 'GET /apis/user/getUserBtnByCurrentUser', '{}', '{\"code\":200,\"data\":{\"userBtn\":[{\"btnStr\":\"8,1\",\"url\":\"/system/role\"},{\"btnStr\":\"1\",\"url\":\"/system/user\"},{\"btnStr\":\"1\",\"url\":\"/system/organization\"},{\"btnStr\":\"1\",\"url\":\"/material/material_property\"},{\"btnStr\":\"1\",\"url\":\"/system/system_config\"},{\"btnStr\":\"1\",\"url\":\"/system/function\"},{\"btnStr\":\"1\",\"url\":\"/system/plugin\"},{\"btnStr\":\"1\",\"url\":\"/material/material_category\"},{\"btnStr\":\"1,3\",\"url\":\"/material/material\"},{\"btnStr\":\"1\",\"url\":\"/system/unit\"},{\"btnStr\":\"1\",\"url\":\"/material/material_attribute\"},{\"btnStr\":\"1,3\",\"url\":\"/system/vendor\"},{\"btnStr\":\"1,3\",\"url\":\"/system/customer\"},{\"btnStr\":\"1,3\",\"url\":\"/system/member\"},{\"btnStr\":\"1\",\"url\":\"/system/depot\"},{\"btnStr\":\"1\",\"url\":\"/system/in_out_item\"},{\"btnStr\":\"1\",\"url\":\"/system/account\"},{\"btnStr\":\"1\",\"url\":\"/system/person\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_apply\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_out\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/delivery_plan\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/sale_shipment\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_out\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/order\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/requisition\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/report\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/giro\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/advance_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/allocation_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/assemble\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/headquarters_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/disassemble\"}]}}'); +INSERT INTO `tbl_log` VALUES (10323, 63, '接口日志', '36.249.95.13/122.233.38.5', '2026-10-13 10:46:35', 0, 'MsgController.getList(..)', NULL, 'GET /apis/msg/list', '{\"search\":\"{\\\"name\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (10324, 63, '接口日志', '36.249.95.13/122.233.38.5', '2026-10-13 10:46:40', 0, 'SupplierController.getList(..)', NULL, 'GET /apis/supplier/list', '{\"search\":\"{\\\"supplier\\\":\\\"\\\",\\\"type\\\":\\\"供应商\\\",\\\"contacts\\\":\\\"\\\",\\\"telephone\\\":\\\"\\\",\\\"phonenum\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"accountNumber\":\"\",\"address\":\"\",\"advanceIn\":0.000000,\"allNeedGet\":0.000000,\"allNeedPay\":116500257.436400,\"bankName\":\"\",\"beginNeedGet\":0.000000,\"beginNeedPay\":0.000000,\"contacts\":\"\",\"creator\":63,\"deleteFlag\":\"0\",\"description\":\"Excel初始化默认供应商\",\"email\":\"\",\"enabled\":true,\"fax\":\"\",\"id\":89,\"isystem\":1,\"phoneNum\":\"\",\"sort\":\"1\",\"supplier\":\"浙江瑞银电子有限公司\",\"taxNum\":\"\",\"taxRate\":0.000000,\"telephone\":\"\",\"tenantId\":63,\"type\":\"供应商\"}]}}'); +INSERT INTO `tbl_log` VALUES (10325, 63, '接口日志', '36.249.95.13/122.233.38.5', '2026-10-13 10:46:41', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (10326, 63, '接口日志', '36.249.95.13/122.233.38.5', '2026-10-13 10:46:41', 0, 'CustomerCategoryController.getTreeList(..)', NULL, 'GET /apis/customerCategory/treeList', '{}', '{\"code\":200,\"data\":{\"data\":[],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (10327, 63, '接口日志', '36.249.95.13/122.233.38.5', '2026-10-13 10:46:41', 0, 'SupplierController.getList(..)', NULL, 'GET /apis/supplier/list', '{\"search\":\"{\\\"supplier\\\":\\\"\\\",\\\"type\\\":\\\"客户\\\",\\\"contacts\\\":\\\"\\\",\\\"telephone\\\":\\\"\\\",\\\"phonenum\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":1,\"rows\":[{\"accountNumber\":\"\",\"address\":\"\",\"advanceIn\":0.000000,\"allNeedGet\":12430066.000000,\"allNeedPay\":0.000000,\"bankName\":\"\",\"beginNeedGet\":0.000000,\"beginNeedPay\":0.000000,\"contacts\":\"\",\"creator\":63,\"deleteFlag\":\"0\",\"description\":\"Stock Status客户\",\"email\":\"\",\"enabled\":true,\"fax\":\"\",\"id\":90,\"isystem\":1,\"phoneNum\":\"\",\"sort\":\"2\",\"supplier\":\"TNB\",\"taxNum\":\"\",\"taxRate\":10.000000,\"telephone\":\"\",\"tenantId\":63,\"type\":\"客户\"}]}}'); +INSERT INTO `tbl_log` VALUES (10328, 63, '接口日志', '36.249.95.13/122.233.38.5', '2026-10-13 10:46:41', 0, 'SupplierController.getList(..)', NULL, 'GET /apis/supplier/list', '{\"search\":\"{\\\"supplier\\\":\\\"\\\",\\\"type\\\":\\\"会员\\\",\\\"telephone\\\":\\\"\\\",\\\"phonenum\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (10329, 63, '接口日志', '36.249.95.13/122.233.38.5', '2026-10-13 10:46:43', 0, 'CustomerCategoryController.getTreeList(..)', NULL, 'GET /apis/customerCategory/treeList', '{}', '{\"code\":200,\"data\":{\"data\":[],\"message\":\"成功\"}}'); +INSERT INTO `tbl_log` VALUES (10330, 63, '接口日志', '36.249.95.13/122.233.38.5', '2026-10-13 10:46:43', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (10331, 63, '接口日志', '36.249.95.13/122.233.38.5', '2026-10-13 10:46:43', 0, 'DepotController.getList(..)', NULL, 'GET /apis/depot/list', '{\"search\":\"{\\\"name\\\":\\\"\\\",\\\"remark\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"address\":\"\",\"deleteFlag\":\"0\",\"enabled\":true,\"id\":25,\"isDefault\":true,\"name\":\"半成品仓库\",\"remark\":\"总部入库物料\",\"sort\":\"1\",\"tenantId\":63,\"truckage\":0.000000,\"type\":0,\"warehousing\":0.000000},{\"address\":\"\",\"deleteFlag\":\"0\",\"enabled\":true,\"id\":26,\"isDefault\":false,\"name\":\"成品仓库\",\"remark\":\"Stock Status成品\",\"sort\":\"2\",\"tenantId\":63,\"truckage\":0.000000,\"type\":0,\"warehousing\":0.000000}]}}'); +INSERT INTO `tbl_log` VALUES (10332, 63, '接口日志', '36.249.95.13/122.233.38.5', '2026-10-13 10:46:43', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (10333, 63, '接口日志', '36.249.95.13/122.233.38.5', '2026-10-13 10:46:46', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (10334, 63, '接口日志', '36.249.95.13/122.233.38.5', '2026-10-13 10:46:46', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (10335, 63, '接口日志', '36.249.95.13/122.233.38.5', '2026-10-13 10:46:46', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (10336, 63, '接口日志', '36.249.95.13/122.233.38.5', '2026-10-13 10:46:46', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (10337, 63, '接口日志', '36.249.95.13/122.233.38.5', '2026-10-13 10:46:46', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"其它\\\",\\\"subType\\\":\\\"销售订单\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-07-13\\\",\\\"endTime\\\":\\\"2026-10-13\\\",\\\"createTimeRange\\\":[\\\"2026-07-12T16:00:00.000Z\\\",\\\"2026-10-12T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":4,\"rows\":[{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789718483000,\"creator\":63,\"debt\":808500.000000,\"defaultNumber\":\"XSDD00000001726\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":808500.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1719,\"lastDebt\":808500.000000,\"lastDeposit\":0.000000,\"materialCount\":10000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD00000001726\",\"operTime\":1789732682000,\"operTimeStr\":\"2026-09-18 15:58:02\",\"organId\":90,\"organName\":\"TNB\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"totalPrice\":735000.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789726236000,\"creator\":63,\"debt\":340000000.000000,\"defaultNumber\":\"XSDD00000001724\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":340000000.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1718,\"lastDebt\":340000000.000000,\"lastDeposit\":0.000000,\"materialCount\":1000000.000000,\"materialsList\":\"3PH APEC3-WC 3PH APEC3-WC 3PH APEC3-WC \",\"number\":\"XSDD00000001724\",\"operTime\":1789725706000,\"operTimeStr\":\"2026-09-18 14:01:46\",\"organId\":90,\"organName\":\"TNB\",\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"0\",\"subType\":\"销售订单\",\"totalPrice\":340000000.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1785355200000,\"creator\":63,\"debt\":242550.000000,\"defaultNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":242550.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1580,\"lastDebt\":242550.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":3000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303475-1PH-WS79-ADD1\",\"operTime\":1785355200000,\"operTimeStr\":\"2026-07-30 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303475\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":242550.000000,\"type\":\"其它\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售订单\",\"changeAmount\":0.000000,\"createTime\":1785355200000,\"creator\":63,\"debt\":323400.000000,\"defaultNumber\":\"XSDD-42303447-1PH-WS79-ADD1\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":323400.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0.000000,\"hasBackFlag\":false,\"id\":1574,\"lastDebt\":323400.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"materialCount\":4000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSDD-42303447-1PH-WS79-ADD1\",\"operTime\":1785355200000,\"operTimeStr\":\"2026-07-30 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status客户PO:42303447\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"2\",\"subType\":\"销售订单\",\"tenantId\":63,\"totalPrice\":323400.000000,\"type\":\"其它\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (10338, 63, '接口日志', '36.249.95.13/122.233.38.5', '2026-10-13 10:46:46', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (10339, 63, '接口日志', '36.249.95.13/122.233.38.5', '2026-10-13 10:46:46', 0, 'PersonController.getPersonByNumType(..)', NULL, 'GET /apis/person/getPersonByNumType', '{\"typeNum\":\"1\"}', '[]'); +INSERT INTO `tbl_log` VALUES (10340, 63, '接口日志', '36.249.95.13/122.233.38.5', '2026-10-13 10:46:46', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (10341, 63, '接口日志', '183.131.72.126/122.233.38.5', '2026-10-13 10:46:46', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (10342, 63, '接口日志', '36.249.95.13/122.233.38.5', '2026-10-13 10:46:47', 0, 'AccountController.getAccount(..)', NULL, 'GET /apis/account/getAccount', '{}', '{\"code\":200,\"data\":{\"accountList\":[{\"currentAmount\":200.000000,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":18,\"initialAmount\":200.000000,\"isDefault\":false,\"name\":\"SMT账户\",\"remark\":\"bbbb\",\"serialNo\":\"1234131324\",\"tenantId\":63},{\"currentAmount\":2187859.266400,\"deleteFlag\":\"0\",\"enabled\":true,\"id\":17,\"initialAmount\":100.000000,\"isDefault\":true,\"name\":\"瑞银账户1\",\"remark\":\"aabb\",\"serialNo\":\"zzz111\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (10343, 63, '接口日志', '36.249.95.13/122.233.38.5', '2026-10-13 10:46:47', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (10344, 63, '接口日志', '36.249.95.13/122.233.38.5', '2026-10-13 10:46:47', 0, 'PersonController.getPersonByNumType(..)', NULL, 'GET /apis/person/getPersonByNumType', '{\"typeNum\":\"1\"}', '[]'); +INSERT INTO `tbl_log` VALUES (10345, 63, '接口日志', '36.249.95.13/122.233.38.5', '2026-10-13 10:46:47', 0, 'DepotHeadController.getList(..)', NULL, 'GET /apis/depotHead/list', '{\"search\":\"{\\\"number\\\":\\\"\\\",\\\"materialParam\\\":\\\"\\\",\\\"type\\\":\\\"出库\\\",\\\"subType\\\":\\\"销售\\\",\\\"linkNumber\\\":\\\"\\\",\\\"remark\\\":\\\"\\\",\\\"beginTime\\\":\\\"2026-07-13\\\",\\\"endTime\\\":\\\"2026-10-13\\\",\\\"createTimeRange\\\":[\\\"2026-07-12T16:00:00.000Z\\\",\\\"2026-10-12T16:00:00.000Z\\\"]}\"}', '{\"code\":200,\"data\":{\"total\":29,\"rows\":[{\"accountId\":17,\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"accountName\":\"瑞银账户1\",\"backAmount\":0,\"changeAmount\":0.000000,\"createTime\":1789718584000,\"creator\":63,\"debt\":808500.000000,\"defaultNumber\":\"XSCK00000001728\",\"deleteFlag\":\"0\",\"deposit\":0,\"discount\":0.000000,\"discountLastMoney\":808500.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1720,\"lastDebt\":808500.000000,\"lastDeposit\":0.000000,\"linkNumber\":\"XSDD00000001726\",\"materialCount\":10000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK00000001728\",\"operTime\":1789732981000,\"operTimeStr\":\"2026-09-18 16:03:01\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"现付\",\"purchaseStatus\":\"0\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"totalPrice\":735000.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1786305600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-87\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1671,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303506-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-87\",\"operTime\":1786305600000,\"operTimeStr\":\"2026-08-10 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1786305600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2159-86\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1670,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303506-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2159-86\",\"operTime\":1786305600000,\"operTimeStr\":\"2026-08-10 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2159\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785873600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-DO_2158-85\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1669,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-DO_2158-85\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:DO_2158\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785873600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-84\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1668,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-84\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785873600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-DO_2157-83\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1667,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-blom-tukar-po-date-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-DO_2157-83\",\"operTime\":1785873600000,\"operTimeStr\":\"2026-08-05 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:DO_2157\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1785268800000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2150-69\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1665,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303480-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2150-69\",\"operTime\":1785268800000,\"operTimeStr\":\"2026-07-29 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2150\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784750400000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2142-68\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1664,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303480-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2142-68\",\"operTime\":1784750400000,\"operTimeStr\":\"2026-07-23 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2142\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784145600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-1PH-WS79-ADD1-67\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1663,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-1PH-WS79-ADD1-67\",\"operTime\":1784145600000,\"operTimeStr\":\"2026-07-16 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:未填写\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"},{\"accountIdList\":\"\",\"accountMoneyList\":\"\",\"backAmount\":0.000000,\"billType\":\"销售\",\"changeAmount\":0.000000,\"createTime\":1784145600000,\"creator\":63,\"debt\":80850.000000,\"defaultNumber\":\"XSCK-INV_2134-66\",\"deleteFlag\":\"0\",\"deposit\":0.000000,\"discount\":100.000000,\"discountLastMoney\":80850.000000,\"discountMoney\":0.000000,\"fileName\":\"\",\"finishDeposit\":0,\"hasBackFlag\":false,\"id\":1662,\"lastDebt\":80850.000000,\"lastDeposit\":0.000000,\"linkApply\":\"\",\"linkNumber\":\"XSDD-42303475-1PH-WS79-ADD1\",\"materialCount\":1000.000000,\"materialsList\":\"1PH WS79 1PH WS79 1PH WS79 \",\"number\":\"XSCK-INV_2134-66\",\"operTime\":1784145600000,\"operTimeStr\":\"2026-07-16 00:00:00\",\"organId\":90,\"organName\":\"TNB\",\"otherMoney\":0.000000,\"payType\":\"记账\",\"remark\":\"Stock Status:1PH WS79-112,400 (+1);客户发票:INV_2134\",\"salesMan\":\"\",\"source\":\"0\",\"status\":\"1\",\"subType\":\"销售\",\"tenantId\":63,\"totalPrice\":80850.000000,\"type\":\"出库\",\"userName\":\"admin\"}]}}'); +INSERT INTO `tbl_log` VALUES (10346, 63, '接口日志', '36.249.95.13/122.233.38.5', '2026-10-13 10:46:47', 0, 'PlatformConfigController.getInfoByKey(..)', NULL, 'GET /apis/platformConfig/getInfoByKey', '{\"platformKey\":\"bill_excel_url\"}', '{\"code\":200,\"data\":{\"id\":18,\"platformKey\":\"bill_excel_url\",\"platformKeyInfo\":\"单据Excel地址\",\"platformValue\":\"\"}}'); +INSERT INTO `tbl_log` VALUES (10347, 63, '接口日志', '36.249.95.13/122.233.38.5', '2026-10-13 10:46:47', 0, 'UserController.getUserList(..)', NULL, 'GET /apis/user/getUserList', '{}', '[{\"id\":63,\"userName\":\"admin\"},{\"id\":149,\"userName\":\"admin2\"}]'); +INSERT INTO `tbl_log` VALUES (10348, 63, '接口日志', '36.249.95.13/122.233.38.5', '2026-10-13 10:46:47', 0, 'SystemConfigController.getCurrentInfo(..)', NULL, 'GET /apis/systemConfig/getCurrentInfo', '{}', '{\"code\":200,\"data\":{\"auditPrintFlag\":\"1\",\"companyAddress\":\"地址1\",\"companyContacts\":\"小李\",\"companyName\":\"公司test\",\"companyTel\":\"12345678\",\"customerFlag\":\"0\",\"customerStaticPriceFlag\":\"0\",\"deleteFlag\":\"0\",\"depotFlag\":\"0\",\"forceApprovalFlag\":\"1\",\"id\":11,\"inOutManageFlag\":\"0\",\"materialPriceTaxFlag\":\"0\",\"minusStockFlag\":\"0\",\"moveAvgPriceFlag\":\"0\",\"multiAccountFlag\":\"1\",\"multiBillType\":\"\",\"multiLevelApprovalFlag\":\"0\",\"overLinkBillFlag\":\"0\",\"purchaseBySaleFlag\":\"0\",\"saleAgreement\":\"注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。\",\"tenantId\":63,\"updateUnitPriceFlag\":\"1\",\"zeroChangeAmountFlag\":\"0\"}}'); +INSERT INTO `tbl_log` VALUES (10349, 63, '接口日志', '36.249.95.13/122.233.38.5', '2026-10-13 10:46:47', 0, 'DepotController.findDepotByCurrentUser(..)', NULL, 'GET /apis/depot/findDepotByCurrentUser', '{}', '{\"code\":200,\"data\":[{\"depotName\":\"半成品仓库\",\"isDefault\":true,\"id\":25},{\"depotName\":\"成品仓库\",\"isDefault\":false,\"id\":26}]}'); +INSERT INTO `tbl_log` VALUES (10350, 63, '接口日志', '183.131.72.35/122.233.38.5', '2026-10-13 10:46:47', 0, 'SupplierController.findBySelectCus(..)', NULL, 'POST /apis/supplier/findBySelect_cus', '{\"jsonObject\":{\"limit\":1}}', '[{\"supplier\":\"TNB\",\"id\":90}]'); +INSERT INTO `tbl_log` VALUES (10351, 63, '接口日志', '36.249.95.13/122.233.38.5', '2026-10-13 10:46:48', 0, 'DeliveryPlanController.getList(..)', NULL, 'GET /apis/deliveryPlan/list', '{\"search\":\"{\\\"planNumber\\\":\\\"\\\",\\\"sourceBillNumber\\\":\\\"\\\",\\\"saleOrderNumber\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"createTime\":1789720385000,\"creator\":63,\"creatorName\":\"admin\",\"customerId\":90,\"customerName\":\"TNB\",\"deleteFlag\":\"0\",\"id\":7,\"materialsList\":\"1PH WS79\",\"planNumber\":\"JH00000001741\",\"planQuantity\":10000.000000,\"saleOrderNumber\":\"XSDD00000001726\",\"shippedQuantity\":0.000000,\"sourceBillId\":1720,\"sourceBillNumber\":\"XSCK00000001728\",\"sourceType\":\"sale\",\"status\":\"2\"},{\"createTime\":1789717298000,\"creator\":63,\"creatorName\":\"admin\",\"customerId\":90,\"customerName\":\"TNB\",\"deleteFlag\":\"0\",\"id\":6,\"materialsList\":\"3PH APEC3-WC\",\"planNumber\":\"JH00000001717\",\"planQuantity\":149.000000,\"saleOrderNumber\":\"XSDD-42260529-3PH-APEC3-WC-OV\",\"shippedQuantity\":0.000000,\"sourceBillId\":1714,\"sourceBillNumber\":\"XSCK-3PH-APEC3-WC-OV-28\",\"sourceType\":\"sale\",\"status\":\"2\",\"tenantId\":63}]}}'); +INSERT INTO `tbl_log` VALUES (10352, 63, '接口日志', '36.249.95.13/122.233.38.5', '2026-10-13 10:46:49', 0, 'SaleShipmentController.getList(..)', NULL, 'GET /apis/saleShipment/list', '{\"search\":\"{\\\"shipmentNumber\\\":\\\"\\\",\\\"saleOutNumber\\\":\\\"\\\",\\\"saleOrderNumber\\\":\\\"\\\",\\\"logisticsNo\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":2,\"rows\":[{\"actualQuantity\":10000.000000,\"approveBy\":63,\"approveByName\":\"admin\",\"approveRemark\":\"审批通过\",\"approveTime\":1789720647000,\"confirmBy\":63,\"confirmByName\":\"admin\",\"confirmTime\":1789720682000,\"createTime\":1789720588000,\"creator\":63,\"creatorName\":\"admin\",\"customerId\":90,\"customerName\":\"TNB\",\"deleteFlag\":\"0\",\"deliveryPlanId\":7,\"deliveryPlanNumber\":\"JH00000001741\",\"differenceQuantity\":0.000000,\"id\":17,\"materialsList\":\"1PH WS79\",\"planQuantity\":10000.000000,\"plannedShipTime\":1789734921000,\"saleOrderNumber\":\"XSDD00000001726\",\"saleOutId\":1720,\"saleOutNumber\":\"XSCK00000001728\",\"shipBy\":63,\"shipByName\":\"admin\",\"shipTime\":1789720682000,\"shipmentNumber\":\"FHTZ00000001742\",\"sourceType\":\"sale\",\"status\":\"2\"},{\"actualQuantity\":149.000000,\"approveBy\":63,\"approveByName\":\"admin\",\"approveRemark\":\"审批通过\",\"approveTime\":1789717350000,\"confirmBy\":63,\"confirmByName\":\"admin\",\"confirmTime\":1789717357000,\"createTime\":1789717342000,\"creator\":63,\"creatorName\":\"admin\",\"customerId\":90,\"customerName\":\"TNB\",\"deleteFlag\":\"0\",\"deliveryPlanId\":6,\"deliveryPlanNumber\":\"JH00000001717\",\"differenceQuantity\":0.000000,\"id\":16,\"logisticsCompany\":\"FEXD\",\"logisticsNo\":\"FD10000001\",\"materialsList\":\"3PH APEC3-WC\",\"planQuantity\":149.000000,\"plannedShipTime\":1789717304000,\"receiver\":\"Hank\",\"receiverAddress\":\"5433 Grand Ave\",\"receiverPhone\":\"60001-1111\",\"saleOrderNumber\":\"XSDD-42260529-3PH-APEC3-WC-OV\",\"saleOutId\":1714,\"saleOutNumber\":\"XSCK-3PH-APEC3-WC-OV-28\",\"shipBy\":63,\"shipByName\":\"admin\",\"shipTime\":1789717357000,\"shipmentNumber\":\"FHTZ00000001718\",\"sourceType\":\"sale\",\"status\":\"2\"}]}}'); +INSERT INTO `tbl_log` VALUES (10353, NULL, '接口日志', '36.249.95.13/122.233.38.5', '2026-10-13 10:46:58', 0, 'UserController.logout(..)', NULL, 'GET /apis/user/logout', '{}', '{\"code\":400}'); +INSERT INTO `tbl_log` VALUES (10354, NULL, '接口日志', '36.249.95.13/122.233.38.5', '2026-10-13 10:46:58', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (10355, NULL, '接口日志', '36.249.95.13/122.233.38.5', '2026-10-13 10:46:58', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (10356, NULL, '接口日志', '36.249.95.13/122.233.38.5', '2026-10-13 10:46:58', 0, 'UserController.randomImage(..)', NULL, 'GET /apis/user/randomImage', '{}', '{\"code\":200,\"data\":{\"base64\":\"data:image/jpg;base64,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\",\"uuid\":\"667efed9fbba42da9b4615e89d748752\"}}'); +INSERT INTO `tbl_log` VALUES (10357, NULL, '接口日志', '36.249.95.13/122.233.38.5', '2026-10-13 10:46:58', 0, 'PlatformConfigController.getPlatformCheckcodeFlag(..)', NULL, 'GET /apis/platformConfig/getPlatform/checkcodeFlag', '{}', '\"1\"'); +INSERT INTO `tbl_log` VALUES (10358, 63, '用户', '183.131.72.229/122.233.38.5', '2026-10-13 10:47:03', 0, '登录admin', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (10359, NULL, '接口日志', '183.131.72.229/122.233.38.5', '2026-10-13 10:47:03', 0, 'UserController.login(..)', NULL, 'POST /apis/user/login', '{\"userParam\":{\"code\":\"31vr\",\"loginName\":\"admin\",\"password\":\"******\",\"uuid\":\"667efed9fbba42da9b4615e89d748752\"}}', '{\"code\":200,\"data\":{\"pwdSimple\":\"******\",\"user\":{\"deleteFlag\":\"0\",\"description\":\"\",\"email\":\"666666@qq.com\",\"id\":63,\"ismanager\":1,\"isystem\":1,\"leaderFlag\":\"0\",\"loginName\":\"admin\",\"password\":\"******\",\"phonenum\":\"1123123123132\",\"position\":\"主管\",\"status\":0,\"tenantId\":63,\"username\":\"admin\"},\"msgTip\":\"user can login\",\"token\":\"******\"}}'); +INSERT INTO `tbl_log` VALUES (10360, 63, '接口日志', '36.249.95.13/122.233.38.5', '2026-10-13 10:47:03', 0, 'MaterialPropertyController.getAllList(..)', NULL, 'GET /apis/materialProperty/getAllList', '{}', '{\"code\":200,\"data\":[{\"anotherName\":\"扩展1\",\"id\":1,\"nativeName\":\"扩展1\"},{\"anotherName\":\"扩展2\",\"id\":2,\"nativeName\":\"扩展2\"},{\"anotherName\":\"扩展3\",\"id\":3,\"nativeName\":\"扩展3\"}]}'); +INSERT INTO `tbl_log` VALUES (10361, 63, '接口日志', '183.131.72.125/122.233.38.5', '2026-10-13 10:47:04', 0, 'FunctionController.findMenuByPNumber(..)', NULL, 'POST /apis/function/findMenuByPNumber', '{\"jsonObject\":{\"userId\":63,\"pNumber\":0}}', '[{\"component\":\"/layouts/TabLayout\",\"icon\":\"home\",\"id\":0,\"text\":\"首页\",\"url\":\"/dashboard/analysis\",\"textEn\":\"Home\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/SaleOrderList\",\"icon\":\"profile\",\"id\":242,\"text\":\"销售订单\",\"url\":\"/bill/sale_order\",\"textEn\":\"Sales Orders\"},{\"component\":\"/bill/SaleOutList\",\"icon\":\"profile\",\"id\":41,\"text\":\"销售出库\",\"url\":\"/bill/sale_out\",\"textEn\":\"Sales Shipments\"},{\"component\":\"/bill/DeliveryPlanList\",\"icon\":\"profile\",\"id\":271,\"text\":\"交货计划管理\",\"url\":\"/bill/delivery_plan\",\"textEn\":\"Delivery Plans\"},{\"component\":\"/bill/SaleShipmentList\",\"icon\":\"car\",\"id\":268,\"text\":\"发货管理\",\"url\":\"/bill/sale_shipment\",\"textEn\":\"Shipment Management\"},{\"component\":\"/bill/SaleBackList\",\"icon\":\"profile\",\"id\":200,\"text\":\"销售退货\",\"url\":\"/bill/sale_back\",\"textEn\":\"Sales Returns\"},{\"component\":\"/bill/RetailOutList\",\"icon\":\"profile\",\"id\":210,\"text\":\"零售出库\",\"url\":\"/bill/retail_out\",\"textEn\":\"Retail Shipments\"},{\"component\":\"/bill/RetailBackList\",\"icon\":\"profile\",\"id\":211,\"text\":\"零售退货\",\"url\":\"/bill/retail_back\",\"textEn\":\"Retail Returns\"}],\"icon\":\"shopping-cart\",\"id\":38,\"text\":\"销售管理\",\"url\":\"/billB\",\"textEn\":\"Sales Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/PurchaseApplyList\",\"icon\":\"profile\",\"id\":261,\"text\":\"请购单\",\"url\":\"/bill/purchase_apply\",\"textEn\":\"Purchase Requisitions\"},{\"component\":\"/bill/PurchaseOrderList\",\"icon\":\"profile\",\"id\":241,\"text\":\"采购订单\",\"url\":\"/bill/purchase_order\",\"textEn\":\"Purchase Orders\"},{\"component\":\"/bill/PurchaseInList\",\"icon\":\"profile\",\"id\":33,\"text\":\"采购入库\",\"url\":\"/bill/purchase_in\",\"textEn\":\"Purchase Receipts\"},{\"component\":\"/bill/PurchaseBackList\",\"icon\":\"profile\",\"id\":199,\"text\":\"采购退货\",\"url\":\"/bill/purchase_back\",\"textEn\":\"Purchase Returns\"}],\"icon\":\"retweet\",\"id\":32,\"text\":\"采购管理\",\"url\":\"/bill\",\"textEn\":\"Purchase Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/production/PackBomList\",\"icon\":\"profile\",\"id\":263,\"text\":\"生产方案\",\"url\":\"/production/pack_bom\",\"textEn\":\"Production BOMs\"},{\"component\":\"/production/OrderList\",\"icon\":\"profile\",\"id\":264,\"text\":\"生产工单\",\"url\":\"/production/order\",\"textEn\":\"Production Orders\"},{\"component\":\"/production/RequisitionList\",\"icon\":\"profile\",\"id\":265,\"text\":\"领料管理\",\"url\":\"/production/requisition\",\"textEn\":\"Material Requisitions\"},{\"component\":\"/production/ReportList\",\"icon\":\"profile\",\"id\":266,\"text\":\"完工报工\",\"url\":\"/production/report\",\"textEn\":\"Production Reports\"}],\"icon\":\"cluster\",\"id\":262,\"text\":\"生产管理\",\"url\":\"/production\",\"textEn\":\"Production Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/MaterialStock\",\"icon\":\"profile\",\"id\":246,\"text\":\"商品库存\",\"url\":\"/report/material_stock\",\"textEn\":\"Product Inventory\"},{\"component\":\"/bill/OtherInList\",\"icon\":\"profile\",\"id\":201,\"text\":\"其它入库\",\"url\":\"/bill/other_in\",\"textEn\":\"Other Receipts\"},{\"component\":\"/bill/OtherOutList\",\"icon\":\"profile\",\"id\":202,\"text\":\"其它出库\",\"url\":\"/bill/other_out\",\"textEn\":\"Other Shipments\"},{\"component\":\"/bill/HeadquartersInList\",\"icon\":\"profile\",\"id\":270,\"text\":\"总部入库\",\"url\":\"/bill/headquarters_in\",\"textEn\":\"Headquarters Receipts\"}],\"icon\":\"hdd\",\"id\":239,\"text\":\"仓库管理\",\"url\":\"/billD\",\"textEn\":\"Warehouse Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/financial/MoneyInList\",\"icon\":\"profile\",\"id\":204,\"text\":\"收款单\",\"url\":\"/financial/money_in\",\"textEn\":\"Receipt Vouchers\"},{\"component\":\"/financial/MoneyOutList\",\"icon\":\"profile\",\"id\":205,\"text\":\"付款单\",\"url\":\"/financial/money_out\",\"textEn\":\"Payment Vouchers\"}],\"icon\":\"money-collect\",\"id\":44,\"text\":\"财务管理\",\"url\":\"/financial\",\"textEn\":\"Finance Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/asset/AssetDashboard\",\"icon\":\"dashboard\",\"id\":276,\"text\":\"资产汇总\",\"url\":\"/asset\",\"textEn\":\"Asset Overview\"},{\"component\":\"/asset/AssetList\",\"icon\":\"profile\",\"id\":273,\"text\":\"资产台账\",\"url\":\"/asset/ledger\",\"textEn\":\"Asset Ledger\"},{\"component\":\"/asset/DeviceList\",\"icon\":\"tool\",\"id\":274,\"text\":\"设备台账\",\"url\":\"/asset/device\",\"textEn\":\"Device Ledger\"},{\"component\":\"/asset/InventoryList\",\"icon\":\"scan\",\"id\":275,\"text\":\"资产盘点\",\"url\":\"/asset/inventory\",\"textEn\":\"Asset Inventory\"}],\"icon\":\"bank\",\"id\":272,\"text\":\"资产管理\",\"url\":\"/assetManagement\",\"textEn\":\"Asset Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/material/MaterialCategoryList\",\"icon\":\"profile\",\"id\":22,\"text\":\"商品类别\",\"url\":\"/material/material_category\",\"textEn\":\"Product Categories\"},{\"component\":\"/material/MaterialList\",\"icon\":\"profile\",\"id\":23,\"text\":\"商品信息\",\"url\":\"/material/material\",\"textEn\":\"Product Information\"},{\"component\":\"/system/UnitList\",\"icon\":\"profile\",\"id\":220,\"text\":\"多单位\",\"url\":\"/system/unit\",\"textEn\":\"Multiple Units\"},{\"component\":\"/material/MaterialAttributeList\",\"icon\":\"profile\",\"id\":247,\"text\":\"多属性\",\"url\":\"/material/material_attribute\",\"textEn\":\"Product Attributes\"}],\"icon\":\"shopping\",\"id\":21,\"text\":\"商品管理\",\"url\":\"/material\",\"textEn\":\"Product Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/AccountReport\",\"icon\":\"profile\",\"id\":207,\"text\":\"账户统计\",\"url\":\"/report/account_report\",\"textEn\":\"Account Summary\"},{\"component\":\"/report/RetailOutReport\",\"icon\":\"profile\",\"id\":259,\"text\":\"零售统计\",\"url\":\"/report/retail_out_report\",\"textEn\":\"Retail Summary\"},{\"component\":\"/report/BuyInReport\",\"icon\":\"profile\",\"id\":208,\"text\":\"采购统计\",\"url\":\"/report/buy_in_report\",\"textEn\":\"Purchase Summary\"},{\"component\":\"/report/SaleOutReport\",\"icon\":\"profile\",\"id\":209,\"text\":\"销售统计\",\"url\":\"/report/sale_out_report\",\"textEn\":\"Sales Summary\"},{\"component\":\"/report/InDetail\",\"icon\":\"profile\",\"id\":226,\"text\":\"入库明细\",\"url\":\"/report/in_detail\",\"textEn\":\"Inbound Details\"},{\"component\":\"/report/OutDetail\",\"icon\":\"profile\",\"id\":227,\"text\":\"出库明细\",\"url\":\"/report/out_detail\",\"textEn\":\"Outbound Details\"},{\"component\":\"/report/InMaterialCount\",\"icon\":\"profile\",\"id\":228,\"text\":\"入库汇总\",\"url\":\"/report/in_material_count\",\"textEn\":\"Inbound Summary\"},{\"component\":\"/report/OutMaterialCount\",\"icon\":\"profile\",\"id\":229,\"text\":\"出库汇总\",\"url\":\"/report/out_material_count\",\"textEn\":\"Outbound Summary\"},{\"component\":\"/report/InOutStockReport\",\"icon\":\"profile\",\"id\":59,\"text\":\"进销存统计\",\"url\":\"/report/in_out_stock_report\",\"textEn\":\"Inventory Transaction Summary\"},{\"component\":\"/report/CustomerAccount\",\"icon\":\"profile\",\"id\":235,\"text\":\"客户对账\",\"url\":\"/report/customer_account\",\"textEn\":\"Customer Reconciliation\"},{\"component\":\"/report/VendorAccount\",\"icon\":\"profile\",\"id\":237,\"text\":\"供应商对账\",\"url\":\"/report/vendor_account\",\"textEn\":\"Supplier Reconciliation\"},{\"component\":\"/report/StockWarningReport\",\"icon\":\"profile\",\"id\":244,\"text\":\"库存预警\",\"url\":\"/report/stock_warning_report\",\"textEn\":\"Stock Alerts\"}],\"icon\":\"pie-chart\",\"id\":198,\"text\":\"报表查询\",\"url\":\"/report\",\"textEn\":\"Reports\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/VendorList\",\"icon\":\"profile\",\"id\":25,\"text\":\"供应商信息\",\"url\":\"/system/vendor\",\"textEn\":\"Suppliers\"},{\"component\":\"/system/CustomerList\",\"icon\":\"profile\",\"id\":217,\"text\":\"客户信息\",\"url\":\"/system/customer\",\"textEn\":\"Customers\"},{\"component\":\"/system/MemberList\",\"icon\":\"profile\",\"id\":218,\"text\":\"会员信息\",\"url\":\"/system/member\",\"textEn\":\"Members\"},{\"component\":\"/system/CustomerCategoryList\",\"icon\":\"bars\",\"id\":267,\"text\":\"客户分类\",\"url\":\"/system/customerCategory\",\"textEn\":\"Customer Categories\"},{\"component\":\"/system/DepotList\",\"icon\":\"profile\",\"id\":26,\"text\":\"仓库信息\",\"url\":\"/system/depot\",\"textEn\":\"Warehouses\"},{\"component\":\"/system/InOutItemList\",\"icon\":\"profile\",\"id\":194,\"text\":\"收支项目\",\"url\":\"/system/in_out_item\",\"textEn\":\"Income and Expense Items\"},{\"component\":\"/system/AccountList\",\"icon\":\"profile\",\"id\":195,\"text\":\"结算账户\",\"url\":\"/system/account\",\"textEn\":\"Settlement Accounts\"},{\"component\":\"/system/PersonList\",\"icon\":\"profile\",\"id\":31,\"text\":\"操作人员管理\",\"url\":\"/system/person\",\"textEn\":\"Operators\"}],\"icon\":\"appstore\",\"id\":24,\"text\":\"基础资料\",\"url\":\"/systemA\",\"textEn\":\"Master Data\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/RoleList\",\"icon\":\"profile\",\"id\":13,\"text\":\"角色管理\",\"url\":\"/system/role\",\"textEn\":\"Role Management\"},{\"component\":\"/system/UserList\",\"icon\":\"profile\",\"id\":14,\"text\":\"用户管理\",\"url\":\"/system/user\",\"textEn\":\"User Management\"},{\"component\":\"/system/OrganizationList\",\"icon\":\"profile\",\"id\":243,\"text\":\"部门管理\",\"url\":\"/system/organization\",\"textEn\":\"Department Management\"},{\"component\":\"/system/LogList\",\"icon\":\"profile\",\"id\":15,\"text\":\"日志管理\",\"url\":\"/system/log\",\"textEn\":\"Log Management\"},{\"component\":\"/material/MaterialPropertyList\",\"icon\":\"profile\",\"id\":236,\"text\":\"商品属性\",\"url\":\"/material/material_property\",\"textEn\":\"Product Properties\"},{\"component\":\"/system/SystemConfigList\",\"icon\":\"profile\",\"id\":234,\"text\":\"系统配置\",\"url\":\"/system/system_config\",\"textEn\":\"System Configuration\"},{\"component\":\"/system/FunctionList\",\"icon\":\"profile\",\"id\":16,\"text\":\"菜单管理\",\"url\":\"/system/function\",\"textEn\":\"Resource Menus\"},{\"component\":\"/system/PluginList\",\"icon\":\"profile\",\"id\":245,\"text\":\"插件管理\",\"url\":\"/system/plugin\",\"textEn\":\"Plugin Management\"},{\"component\":\"/system/DictList\",\"icon\":\"profile\",\"id\":260,\"text\":\"字典管理\",\"url\":\"/system/dict\",\"textEn\":\"Dictionary Management\"},{\"component\":\"/system/PlatformConfigList\",\"icon\":\"profile\",\"id\":258,\"text\":\"平台配置\",\"url\":\"/system/platform_config\",\"textEn\":\"Platform Configuration\"}],\"icon\":\"setting\",\"id\":1,\"text\":\"系统管理\",\"url\":\"/system\",\"textEn\":\"System Management\"}]'); +INSERT INTO `tbl_log` VALUES (10362, 63, '接口日志', '36.249.95.13/122.233.38.5', '2026-10-13 10:47:04', 0, 'UserController.getUserBtnByCurrentUser(..)', NULL, 'GET /apis/user/getUserBtnByCurrentUser', '{}', '{\"code\":200,\"data\":{\"userBtn\":[{\"btnStr\":\"8,1\",\"url\":\"/system/role\"},{\"btnStr\":\"1\",\"url\":\"/system/user\"},{\"btnStr\":\"1\",\"url\":\"/system/organization\"},{\"btnStr\":\"1\",\"url\":\"/material/material_property\"},{\"btnStr\":\"1\",\"url\":\"/system/system_config\"},{\"btnStr\":\"1\",\"url\":\"/system/function\"},{\"btnStr\":\"1\",\"url\":\"/system/plugin\"},{\"btnStr\":\"1\",\"url\":\"/material/material_category\"},{\"btnStr\":\"1,3\",\"url\":\"/material/material\"},{\"btnStr\":\"1\",\"url\":\"/system/unit\"},{\"btnStr\":\"1\",\"url\":\"/material/material_attribute\"},{\"btnStr\":\"1,3\",\"url\":\"/system/vendor\"},{\"btnStr\":\"1,3\",\"url\":\"/system/customer\"},{\"btnStr\":\"1,3\",\"url\":\"/system/member\"},{\"btnStr\":\"1\",\"url\":\"/system/depot\"},{\"btnStr\":\"1\",\"url\":\"/system/in_out_item\"},{\"btnStr\":\"1\",\"url\":\"/system/account\"},{\"btnStr\":\"1\",\"url\":\"/system/person\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_apply\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_out\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/delivery_plan\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/sale_shipment\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_out\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/order\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/requisition\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/report\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/giro\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/advance_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/allocation_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/assemble\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/headquarters_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/disassemble\"}]}}'); +INSERT INTO `tbl_log` VALUES (10363, 63, '接口日志', '36.249.95.13/122.233.38.5', '2026-10-13 10:47:04', 0, 'MsgController.getList(..)', NULL, 'GET /apis/msg/list', '{\"search\":\"{\\\"name\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (10364, 63, '接口日志', '36.249.95.13/122.233.38.5', '2026-10-13 10:47:04', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0},{\"month\":\"2026-10\",\"inbound\":0,\"ordered\":0,\"shipped\":0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (10365, 63, '接口日志', '36.249.95.13/122.233.38.5', '2026-10-13 10:47:04', 0, 'MsgController.getMsgByStatus(..)', NULL, 'GET /apis/msg/getMsgByStatus', '{\"status\":\"1\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (10366, NULL, '接口日志', '36.249.95.13/122.233.38.5', '2026-10-13 10:47:13', 0, 'UserController.logout(..)', NULL, 'GET /apis/user/logout', '{}', '{\"code\":400}'); +INSERT INTO `tbl_log` VALUES (10367, NULL, '接口日志', '36.249.95.13/122.233.38.5', '2026-10-13 10:47:13', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (10368, NULL, '接口日志', '36.249.95.13/122.233.38.5', '2026-10-13 10:47:14', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (10369, NULL, '接口日志', '36.249.95.13/122.233.38.5', '2026-10-13 10:47:14', 0, 'PlatformConfigController.getPlatformCheckcodeFlag(..)', NULL, 'GET /apis/platformConfig/getPlatform/checkcodeFlag', '{}', '\"1\"'); +INSERT INTO `tbl_log` VALUES (10370, NULL, '接口日志', '36.249.95.13/122.233.38.5', '2026-10-13 10:47:14', 0, 'UserController.randomImage(..)', NULL, 'GET /apis/user/randomImage', '{}', '{\"code\":200,\"data\":{\"base64\":\"data:image/jpg;base64,/9j/4AAQSkZJRgABAgAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAAjAGkDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3gTyO88aQ/PGwC78qrggHIOPqOM9PepHfy9vyMwZgpKjOM9z7f56ZNRXDzCOXarKVwUdAHyO+V6+uQOSOhz04jxr8WPC/grWILDUGvbq+VC7w2OG8kEDHmAuoyRyByQOeMgkA7OCb7VdOyi4RYgNpOPLlBzypGc9vcYHTJzNHbiKCOISynZg72cszeuSeuf8A9WOK8zsfjd4Tv/EWk6dYrqMj37JEqxwBUjlmdRiTcw+ZTnJUMPmyCeRXpZjkl83kwMcKHQAsQDnOTnjnoRxz14NAErlhtCjOWwTjgD8x9PxqNTc+cd6QiLJAw5LY7Hp39O2Opzx4/wDFXXdR1fWNP+GnhVxb31+GN7tkREWIgnYxGSuVUuwGCVIGG34rF/Zl/wCZp/7dP/a1AHu0bLOjwLPK5VVbz1I5JyRgjjIwDjGMEZzmi2e42To6szRuVjaXClxgHJKjGMk9B+Gc0+3gMWc7VBJwiKAuOAvbOQAP17Yx8kXNl4Yvvi14rj8WancafYLe3jRyW6ks8vnkKvCPgYLHO3tQB9bSfaFuFbzF8jIyqoS3pg9eMnOeMY75yGTTM32YiGYBpBu4I249cH/FTj0INec/C/wx4WsNEvrzwfqtxfxX5USm5O5VeLeFXIjRkOXDcjdgKRwQT3Gta+nh7wxda3eWt1cx2qb5Y7OEmQruwWCsRgAfMcngA8nGaAZpzRyM29JD8oyEzgFh7+h5B4PYjBFOj3SRRPKhjkwGKB87TjkHHXrXFW3xK8Oar4FuPGUc9/Bp9hIUni8vEu8FcRlQSp3Fo8EHHzckfNTNP+JuhXngG+8ZQyXxsrFjDNFcoFkMmV2rhcrk71AI4+YbiMZAB2yqVtgLZg3GVMjlgw6/e5PPrzj36VNXPeDPFll400I6tp1le2tqZnjT7XEqGQjBLLtJBXJIznqrDtXQ0AU75kt1+04USkeWDuRSQSOhbuBk46GvAfCl/aaB+0V4im8W3cVtMwn+yz38inZuZGj+flUPk5A5GAdvfFfQ0zxRhXlHRvlO0nBwf17fjjvXkPxYtI5/Edlc3Pw4uPFVq9mqw3VlcTRvGwdyyP5QbK4ZCuQOrYJ5wAcP49vdE1r48eGzoN5a3KGWyinuYcSq0vnHkt0kIQoOp4AXtgfSCLbzRLbJFHLaqoU5+ZRgKVGD14Oc+1fPPhbwHrviTx1pGuN4XXwtoujvERHJCRLL5LBwCpCtI7ZA8wqBgdWYYP0OhkW98rEccCR/u1UjL9O3bb07g7hQB83eDNZ8ZeGfEOo+ItT8A+I9Z1q/DJLcyRyxAISp2hREQOVHsAFACgHNH4Ha9qOka3cWth4fu9RS+ubSKe7g3bbJN7As+FI2kMTyQPkz2yPpgRX1vZE+dE0sW7ZGke2Mr/CCAC3A7Lj0561jeE/Bei+DLO8fQbCNGuUQsyTyN5+xTtJ3swXln6cYIosB1BUEqTng5GDj/wDXXnFnffB7U4GvxJ4Uka6lkmd79YhMzs7Fiwm+cZYnGe2McYrvVtmubeD+0EiaaKQSDyiwUMCcEd+nrXF3Pwj+Hl4rXr6DBJ8gy0Fy8SNtGM4R1QHjkgDnJPegDzT4HvGvxR8U/wBheadCMMwtlLOIm/fAwBi3O7YHxuG7G/3r3e7tF8Q6Bf6deQz2sV5FLayDK7wjAoWB5GcHjr+I6t0DSNI0LTzYaLZxWltGwzFHHs+bYvLHGWYqFyzZJ7mr8jtFcIzOBC42YI6Pnjn35HPfaB15APjqzu9XtvDuqfD7AGo3OtQQpaFIz8/zpKvmdBmRLcZ3Y+XrgnOp4rvrjwjp3jLwLHJ9ktZNbimt7LaJM2xDvnfyei2h5bPH+9X0HP8ADDwOmtv4gn0hFvvtX2xp5LqUL5pfduKl9v3u2MdsVR1j4beD/Eeq3Wq6nZfbZ5lUyX3nSqMqFUA7GCMMDBKgYCnJzzQFje8AaA3hfwHo2jyrIs8FuGnR2VikrkvIuV4IDMwGM8AcnrXSVAom+0hnLBDHyqsCobPPYH6duvA7z0AFRz28NzHsnhjlTOdsihhn8aKKAJKKKKACiiigApFVUGFUKMk4AxyTk/rRRQAKqooVVCqowABgAUtFFADVjVGdlGC53N7nAH8gKY9rbyTLM8ETSrja7ICwxzwaKKAJaKKKAP/Z\",\"uuid\":\"b28799278c624d8a8e6f09a04ffeedcc\"}}'); +INSERT INTO `tbl_log` VALUES (10371, 63, '用户', '60.163.165.238/122.233.38.5', '2026-10-13 10:49:04', 0, '登录admin', NULL, NULL, NULL, NULL); +INSERT INTO `tbl_log` VALUES (10372, NULL, '接口日志', '60.163.165.238/122.233.38.5', '2026-10-13 10:49:04', 0, 'UserController.login(..)', NULL, 'POST /apis/user/login', '{\"userParam\":{\"code\":\"g45w\",\"loginName\":\"admin\",\"password\":\"******\",\"uuid\":\"b28799278c624d8a8e6f09a04ffeedcc\"}}', '{\"code\":200,\"data\":{\"pwdSimple\":\"******\",\"user\":{\"deleteFlag\":\"0\",\"description\":\"\",\"email\":\"666666@qq.com\",\"id\":63,\"ismanager\":1,\"isystem\":1,\"leaderFlag\":\"0\",\"loginName\":\"admin\",\"password\":\"******\",\"phonenum\":\"1123123123132\",\"position\":\"主管\",\"status\":0,\"tenantId\":63,\"username\":\"admin\"},\"msgTip\":\"user can login\",\"token\":\"******\"}}'); +INSERT INTO `tbl_log` VALUES (10373, 63, '接口日志', '36.249.93.184/122.233.38.5', '2026-10-13 10:49:04', 0, 'FunctionController.findMenuByPNumber(..)', NULL, 'POST /apis/function/findMenuByPNumber', '{\"jsonObject\":{\"userId\":63,\"pNumber\":0}}', '[{\"component\":\"/layouts/TabLayout\",\"icon\":\"home\",\"id\":0,\"text\":\"首页\",\"url\":\"/dashboard/analysis\",\"textEn\":\"Home\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/SaleOrderList\",\"icon\":\"profile\",\"id\":242,\"text\":\"销售订单\",\"url\":\"/bill/sale_order\",\"textEn\":\"Sales Orders\"},{\"component\":\"/bill/SaleOutList\",\"icon\":\"profile\",\"id\":41,\"text\":\"销售出库\",\"url\":\"/bill/sale_out\",\"textEn\":\"Sales Shipments\"},{\"component\":\"/bill/DeliveryPlanList\",\"icon\":\"profile\",\"id\":271,\"text\":\"交货计划管理\",\"url\":\"/bill/delivery_plan\",\"textEn\":\"Delivery Plans\"},{\"component\":\"/bill/SaleShipmentList\",\"icon\":\"car\",\"id\":268,\"text\":\"发货管理\",\"url\":\"/bill/sale_shipment\",\"textEn\":\"Shipment Management\"},{\"component\":\"/bill/SaleBackList\",\"icon\":\"profile\",\"id\":200,\"text\":\"销售退货\",\"url\":\"/bill/sale_back\",\"textEn\":\"Sales Returns\"},{\"component\":\"/bill/RetailOutList\",\"icon\":\"profile\",\"id\":210,\"text\":\"零售出库\",\"url\":\"/bill/retail_out\",\"textEn\":\"Retail Shipments\"},{\"component\":\"/bill/RetailBackList\",\"icon\":\"profile\",\"id\":211,\"text\":\"零售退货\",\"url\":\"/bill/retail_back\",\"textEn\":\"Retail Returns\"}],\"icon\":\"shopping-cart\",\"id\":38,\"text\":\"销售管理\",\"url\":\"/billB\",\"textEn\":\"Sales Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/bill/PurchaseApplyList\",\"icon\":\"profile\",\"id\":261,\"text\":\"请购单\",\"url\":\"/bill/purchase_apply\",\"textEn\":\"Purchase Requisitions\"},{\"component\":\"/bill/PurchaseOrderList\",\"icon\":\"profile\",\"id\":241,\"text\":\"采购订单\",\"url\":\"/bill/purchase_order\",\"textEn\":\"Purchase Orders\"},{\"component\":\"/bill/PurchaseInList\",\"icon\":\"profile\",\"id\":33,\"text\":\"采购入库\",\"url\":\"/bill/purchase_in\",\"textEn\":\"Purchase Receipts\"},{\"component\":\"/bill/PurchaseBackList\",\"icon\":\"profile\",\"id\":199,\"text\":\"采购退货\",\"url\":\"/bill/purchase_back\",\"textEn\":\"Purchase Returns\"}],\"icon\":\"retweet\",\"id\":32,\"text\":\"采购管理\",\"url\":\"/bill\",\"textEn\":\"Purchase Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/production/PackBomList\",\"icon\":\"profile\",\"id\":263,\"text\":\"生产方案\",\"url\":\"/production/pack_bom\",\"textEn\":\"Production BOMs\"},{\"component\":\"/production/OrderList\",\"icon\":\"profile\",\"id\":264,\"text\":\"生产工单\",\"url\":\"/production/order\",\"textEn\":\"Production Orders\"},{\"component\":\"/production/RequisitionList\",\"icon\":\"profile\",\"id\":265,\"text\":\"领料管理\",\"url\":\"/production/requisition\",\"textEn\":\"Material Requisitions\"},{\"component\":\"/production/ReportList\",\"icon\":\"profile\",\"id\":266,\"text\":\"完工报工\",\"url\":\"/production/report\",\"textEn\":\"Production Reports\"}],\"icon\":\"cluster\",\"id\":262,\"text\":\"生产管理\",\"url\":\"/production\",\"textEn\":\"Production Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/MaterialStock\",\"icon\":\"profile\",\"id\":246,\"text\":\"商品库存\",\"url\":\"/report/material_stock\",\"textEn\":\"Product Inventory\"},{\"component\":\"/bill/OtherInList\",\"icon\":\"profile\",\"id\":201,\"text\":\"其它入库\",\"url\":\"/bill/other_in\",\"textEn\":\"Other Receipts\"},{\"component\":\"/bill/OtherOutList\",\"icon\":\"profile\",\"id\":202,\"text\":\"其它出库\",\"url\":\"/bill/other_out\",\"textEn\":\"Other Shipments\"},{\"component\":\"/bill/HeadquartersInList\",\"icon\":\"profile\",\"id\":270,\"text\":\"总部入库\",\"url\":\"/bill/headquarters_in\",\"textEn\":\"Headquarters Receipts\"}],\"icon\":\"hdd\",\"id\":239,\"text\":\"仓库管理\",\"url\":\"/billD\",\"textEn\":\"Warehouse Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/financial/MoneyInList\",\"icon\":\"profile\",\"id\":204,\"text\":\"收款单\",\"url\":\"/financial/money_in\",\"textEn\":\"Receipt Vouchers\"},{\"component\":\"/financial/MoneyOutList\",\"icon\":\"profile\",\"id\":205,\"text\":\"付款单\",\"url\":\"/financial/money_out\",\"textEn\":\"Payment Vouchers\"}],\"icon\":\"money-collect\",\"id\":44,\"text\":\"财务管理\",\"url\":\"/financial\",\"textEn\":\"Finance Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/asset/AssetDashboard\",\"icon\":\"dashboard\",\"id\":276,\"text\":\"资产汇总\",\"url\":\"/asset\",\"textEn\":\"Asset Overview\"},{\"component\":\"/asset/AssetList\",\"icon\":\"profile\",\"id\":273,\"text\":\"资产台账\",\"url\":\"/asset/ledger\",\"textEn\":\"Asset Ledger\"},{\"component\":\"/asset/DeviceList\",\"icon\":\"tool\",\"id\":274,\"text\":\"设备台账\",\"url\":\"/asset/device\",\"textEn\":\"Device Ledger\"},{\"component\":\"/asset/InventoryList\",\"icon\":\"scan\",\"id\":275,\"text\":\"资产盘点\",\"url\":\"/asset/inventory\",\"textEn\":\"Asset Inventory\"}],\"icon\":\"bank\",\"id\":272,\"text\":\"资产管理\",\"url\":\"/assetManagement\",\"textEn\":\"Asset Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/material/MaterialCategoryList\",\"icon\":\"profile\",\"id\":22,\"text\":\"商品类别\",\"url\":\"/material/material_category\",\"textEn\":\"Product Categories\"},{\"component\":\"/material/MaterialList\",\"icon\":\"profile\",\"id\":23,\"text\":\"商品信息\",\"url\":\"/material/material\",\"textEn\":\"Product Information\"},{\"component\":\"/system/UnitList\",\"icon\":\"profile\",\"id\":220,\"text\":\"多单位\",\"url\":\"/system/unit\",\"textEn\":\"Multiple Units\"},{\"component\":\"/material/MaterialAttributeList\",\"icon\":\"profile\",\"id\":247,\"text\":\"多属性\",\"url\":\"/material/material_attribute\",\"textEn\":\"Product Attributes\"}],\"icon\":\"shopping\",\"id\":21,\"text\":\"商品管理\",\"url\":\"/material\",\"textEn\":\"Product Management\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/report/AccountReport\",\"icon\":\"profile\",\"id\":207,\"text\":\"账户统计\",\"url\":\"/report/account_report\",\"textEn\":\"Account Summary\"},{\"component\":\"/report/RetailOutReport\",\"icon\":\"profile\",\"id\":259,\"text\":\"零售统计\",\"url\":\"/report/retail_out_report\",\"textEn\":\"Retail Summary\"},{\"component\":\"/report/BuyInReport\",\"icon\":\"profile\",\"id\":208,\"text\":\"采购统计\",\"url\":\"/report/buy_in_report\",\"textEn\":\"Purchase Summary\"},{\"component\":\"/report/SaleOutReport\",\"icon\":\"profile\",\"id\":209,\"text\":\"销售统计\",\"url\":\"/report/sale_out_report\",\"textEn\":\"Sales Summary\"},{\"component\":\"/report/InDetail\",\"icon\":\"profile\",\"id\":226,\"text\":\"入库明细\",\"url\":\"/report/in_detail\",\"textEn\":\"Inbound Details\"},{\"component\":\"/report/OutDetail\",\"icon\":\"profile\",\"id\":227,\"text\":\"出库明细\",\"url\":\"/report/out_detail\",\"textEn\":\"Outbound Details\"},{\"component\":\"/report/InMaterialCount\",\"icon\":\"profile\",\"id\":228,\"text\":\"入库汇总\",\"url\":\"/report/in_material_count\",\"textEn\":\"Inbound Summary\"},{\"component\":\"/report/OutMaterialCount\",\"icon\":\"profile\",\"id\":229,\"text\":\"出库汇总\",\"url\":\"/report/out_material_count\",\"textEn\":\"Outbound Summary\"},{\"component\":\"/report/InOutStockReport\",\"icon\":\"profile\",\"id\":59,\"text\":\"进销存统计\",\"url\":\"/report/in_out_stock_report\",\"textEn\":\"Inventory Transaction Summary\"},{\"component\":\"/report/CustomerAccount\",\"icon\":\"profile\",\"id\":235,\"text\":\"客户对账\",\"url\":\"/report/customer_account\",\"textEn\":\"Customer Reconciliation\"},{\"component\":\"/report/VendorAccount\",\"icon\":\"profile\",\"id\":237,\"text\":\"供应商对账\",\"url\":\"/report/vendor_account\",\"textEn\":\"Supplier Reconciliation\"},{\"component\":\"/report/StockWarningReport\",\"icon\":\"profile\",\"id\":244,\"text\":\"库存预警\",\"url\":\"/report/stock_warning_report\",\"textEn\":\"Stock Alerts\"}],\"icon\":\"pie-chart\",\"id\":198,\"text\":\"报表查询\",\"url\":\"/report\",\"textEn\":\"Reports\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/VendorList\",\"icon\":\"profile\",\"id\":25,\"text\":\"供应商信息\",\"url\":\"/system/vendor\",\"textEn\":\"Suppliers\"},{\"component\":\"/system/CustomerList\",\"icon\":\"profile\",\"id\":217,\"text\":\"客户信息\",\"url\":\"/system/customer\",\"textEn\":\"Customers\"},{\"component\":\"/system/MemberList\",\"icon\":\"profile\",\"id\":218,\"text\":\"会员信息\",\"url\":\"/system/member\",\"textEn\":\"Members\"},{\"component\":\"/system/CustomerCategoryList\",\"icon\":\"bars\",\"id\":267,\"text\":\"客户分类\",\"url\":\"/system/customerCategory\",\"textEn\":\"Customer Categories\"},{\"component\":\"/system/DepotList\",\"icon\":\"profile\",\"id\":26,\"text\":\"仓库信息\",\"url\":\"/system/depot\",\"textEn\":\"Warehouses\"},{\"component\":\"/system/InOutItemList\",\"icon\":\"profile\",\"id\":194,\"text\":\"收支项目\",\"url\":\"/system/in_out_item\",\"textEn\":\"Income and Expense Items\"},{\"component\":\"/system/AccountList\",\"icon\":\"profile\",\"id\":195,\"text\":\"结算账户\",\"url\":\"/system/account\",\"textEn\":\"Settlement Accounts\"},{\"component\":\"/system/PersonList\",\"icon\":\"profile\",\"id\":31,\"text\":\"操作人员管理\",\"url\":\"/system/person\",\"textEn\":\"Operators\"}],\"icon\":\"appstore\",\"id\":24,\"text\":\"基础资料\",\"url\":\"/systemA\",\"textEn\":\"Master Data\"},{\"component\":\"/layouts/TabLayout\",\"children\":[{\"component\":\"/system/RoleList\",\"icon\":\"profile\",\"id\":13,\"text\":\"角色管理\",\"url\":\"/system/role\",\"textEn\":\"Role Management\"},{\"component\":\"/system/UserList\",\"icon\":\"profile\",\"id\":14,\"text\":\"用户管理\",\"url\":\"/system/user\",\"textEn\":\"User Management\"},{\"component\":\"/system/OrganizationList\",\"icon\":\"profile\",\"id\":243,\"text\":\"部门管理\",\"url\":\"/system/organization\",\"textEn\":\"Department Management\"},{\"component\":\"/system/LogList\",\"icon\":\"profile\",\"id\":15,\"text\":\"日志管理\",\"url\":\"/system/log\",\"textEn\":\"Log Management\"},{\"component\":\"/material/MaterialPropertyList\",\"icon\":\"profile\",\"id\":236,\"text\":\"商品属性\",\"url\":\"/material/material_property\",\"textEn\":\"Product Properties\"},{\"component\":\"/system/SystemConfigList\",\"icon\":\"profile\",\"id\":234,\"text\":\"系统配置\",\"url\":\"/system/system_config\",\"textEn\":\"System Configuration\"},{\"component\":\"/system/FunctionList\",\"icon\":\"profile\",\"id\":16,\"text\":\"菜单管理\",\"url\":\"/system/function\",\"textEn\":\"Resource Menus\"},{\"component\":\"/system/PluginList\",\"icon\":\"profile\",\"id\":245,\"text\":\"插件管理\",\"url\":\"/system/plugin\",\"textEn\":\"Plugin Management\"},{\"component\":\"/system/DictList\",\"icon\":\"profile\",\"id\":260,\"text\":\"字典管理\",\"url\":\"/system/dict\",\"textEn\":\"Dictionary Management\"},{\"component\":\"/system/PlatformConfigList\",\"icon\":\"profile\",\"id\":258,\"text\":\"平台配置\",\"url\":\"/system/platform_config\",\"textEn\":\"Platform Configuration\"}],\"icon\":\"setting\",\"id\":1,\"text\":\"系统管理\",\"url\":\"/system\",\"textEn\":\"System Management\"}]'); +INSERT INTO `tbl_log` VALUES (10374, 63, '接口日志', '36.249.95.13/122.233.38.5', '2026-10-13 10:49:05', 0, 'MaterialPropertyController.getAllList(..)', NULL, 'GET /apis/materialProperty/getAllList', '{}', '{\"code\":200,\"data\":[{\"anotherName\":\"扩展1\",\"id\":1,\"nativeName\":\"扩展1\"},{\"anotherName\":\"扩展2\",\"id\":2,\"nativeName\":\"扩展2\"},{\"anotherName\":\"扩展3\",\"id\":3,\"nativeName\":\"扩展3\"}]}'); +INSERT INTO `tbl_log` VALUES (10375, 63, '接口日志', '36.249.93.44/122.233.38.5', '2026-10-13 10:49:05', 0, 'UserController.getUserBtnByCurrentUser(..)', NULL, 'GET /apis/user/getUserBtnByCurrentUser', '{}', '{\"code\":200,\"data\":{\"userBtn\":[{\"btnStr\":\"8,1\",\"url\":\"/system/role\"},{\"btnStr\":\"1\",\"url\":\"/system/user\"},{\"btnStr\":\"1\",\"url\":\"/system/organization\"},{\"btnStr\":\"1\",\"url\":\"/material/material_property\"},{\"btnStr\":\"1\",\"url\":\"/system/system_config\"},{\"btnStr\":\"1\",\"url\":\"/system/function\"},{\"btnStr\":\"1\",\"url\":\"/system/plugin\"},{\"btnStr\":\"1\",\"url\":\"/material/material_category\"},{\"btnStr\":\"1,3\",\"url\":\"/material/material\"},{\"btnStr\":\"1\",\"url\":\"/system/unit\"},{\"btnStr\":\"1\",\"url\":\"/material/material_attribute\"},{\"btnStr\":\"1,3\",\"url\":\"/system/vendor\"},{\"btnStr\":\"1,3\",\"url\":\"/system/customer\"},{\"btnStr\":\"1,3\",\"url\":\"/system/member\"},{\"btnStr\":\"1\",\"url\":\"/system/depot\"},{\"btnStr\":\"1\",\"url\":\"/system/in_out_item\"},{\"btnStr\":\"1\",\"url\":\"/system/account\"},{\"btnStr\":\"1\",\"url\":\"/system/person\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_apply\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/purchase_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_order\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_out\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/delivery_plan\"},{\"btnStr\":\"1,2,7\",\"url\":\"/bill/sale_shipment\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/sale_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/retail_back\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/item_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/money_out\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/order\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/requisition\"},{\"btnStr\":\"1,2,3\",\"url\":\"/production/report\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/giro\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/financial/advance_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/other_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/allocation_out\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/assemble\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/headquarters_in\"},{\"btnStr\":\"1,2,3,7\",\"url\":\"/bill/disassemble\"}]}}'); +INSERT INTO `tbl_log` VALUES (10376, 63, '接口日志', '36.249.93.144/122.233.38.5', '2026-10-13 10:49:05', 0, 'MsgController.getList(..)', NULL, 'GET /apis/msg/list', '{\"search\":\"{\\\"name\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (10377, 63, '接口日志', '36.249.93.42/122.233.38.5', '2026-10-13 10:49:05', 0, 'MsgController.getMsgByStatus(..)', NULL, 'GET /apis/msg/getMsgByStatus', '{\"status\":\"1\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (10378, 63, '接口日志', '36.249.93.154/122.233.38.5', '2026-10-13 10:49:05', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0},{\"month\":\"2026-10\",\"inbound\":0,\"ordered\":0,\"shipped\":0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (10379, 63, '接口日志', '36.249.93.31/122.233.38.5', '2026-10-13 10:49:29', 0, 'MsgController.getMsgByStatus(..)', NULL, 'GET /apis/msg/getMsgByStatus', '{\"status\":\"1\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (10380, 63, '接口日志', '36.249.93.26/122.233.38.5', '2026-10-13 10:49:29', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0},{\"month\":\"2026-10\",\"inbound\":0,\"ordered\":0,\"shipped\":0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (10381, 63, '接口日志', '36.249.93.52/122.233.38.5', '2026-10-13 10:49:29', 0, 'MsgController.getList(..)', NULL, 'GET /apis/msg/list', '{\"search\":\"{\\\"name\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (10382, 63, '接口日志', '36.249.93.184/122.233.38.5', '2026-10-13 10:49:32', 0, 'MsgController.getMsgByStatus(..)', NULL, 'GET /apis/msg/getMsgByStatus', '{\"status\":\"1\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (10383, 63, '接口日志', '36.249.93.30/122.233.38.5', '2026-10-13 10:49:32', 0, 'MsgController.getList(..)', NULL, 'GET /apis/msg/list', '{\"search\":\"{\\\"name\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (10384, 63, '接口日志', '36.249.93.176/122.233.38.5', '2026-10-13 10:49:32', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0},{\"month\":\"2026-10\",\"inbound\":0,\"ordered\":0,\"shipped\":0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (10385, 63, '接口日志', '36.249.93.44/122.233.38.5', '2026-10-13 10:49:35', 0, 'MsgController.getMsgByStatus(..)', NULL, 'GET /apis/msg/getMsgByStatus', '{\"status\":\"1\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (10386, 63, '接口日志', '36.249.93.42/122.233.38.5', '2026-10-13 10:49:36', 0, 'MsgController.getList(..)', NULL, 'GET /apis/msg/list', '{\"search\":\"{\\\"name\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (10387, 63, '接口日志', '36.249.93.151/122.233.38.5', '2026-10-13 10:49:36', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0},{\"month\":\"2026-10\",\"inbound\":0,\"ordered\":0,\"shipped\":0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (10388, 63, '接口日志', '36.249.93.52/122.233.38.5', '2026-10-13 10:49:39', 0, 'MsgController.getMsgByStatus(..)', NULL, 'GET /apis/msg/getMsgByStatus', '{\"status\":\"1\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (10389, 63, '接口日志', '36.249.93.144/122.233.38.5', '2026-10-13 10:49:39', 0, 'MsgController.getList(..)', NULL, 'GET /apis/msg/list', '{\"search\":\"{\\\"name\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (10390, 63, '接口日志', '36.249.93.154/122.233.38.5', '2026-10-13 10:49:39', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0},{\"month\":\"2026-10\",\"inbound\":0,\"ordered\":0,\"shipped\":0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (10391, 63, '接口日志', '36.249.93.31/122.233.38.5', '2026-10-13 10:49:43', 0, 'MsgController.getList(..)', NULL, 'GET /apis/msg/list', '{\"search\":\"{\\\"name\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (10392, 63, '接口日志', '36.249.93.176/122.233.38.5', '2026-10-13 10:49:43', 0, 'MsgController.getMsgByStatus(..)', NULL, 'GET /apis/msg/getMsgByStatus', '{\"status\":\"1\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (10393, 63, '接口日志', '36.249.93.26/122.233.38.5', '2026-10-13 10:49:43', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0},{\"month\":\"2026-10\",\"inbound\":0,\"ordered\":0,\"shipped\":0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (10394, 63, '接口日志', '36.249.93.184/122.233.38.5', '2026-10-13 10:49:50', 0, 'MsgController.getList(..)', NULL, 'GET /apis/msg/list', '{\"search\":\"{\\\"name\\\":\\\"\\\"}\"}', '{\"code\":200,\"data\":{\"total\":0,\"rows\":[]}}'); +INSERT INTO `tbl_log` VALUES (10395, 63, '接口日志', '36.249.93.151/122.233.38.5', '2026-10-13 10:49:50', 0, 'MsgController.getMsgByStatus(..)', NULL, 'GET /apis/msg/getMsgByStatus', '{\"status\":\"1\"}', '{\"code\":200,\"data\":[]}'); +INSERT INTO `tbl_log` VALUES (10396, 63, '接口日志', '36.249.93.30/122.233.38.5', '2026-10-13 10:49:50', 0, 'DashboardController.operationOverview()', NULL, 'GET /apis/dashboard/operationOverview', '{}', '{\"code\":200,\"data\":{\"headquartersInbound\":{\"documentCount\":153,\"quantity\":469573.000000,\"amount\":102732379.970000,\"latestTime\":\"2026-09-18T16:06:03\"},\"purchaseInbound\":{\"documentCount\":47,\"quantity\":276128.000000,\"amount\":26595018.200000,\"latestTime\":\"2026-09-18T16:29:02\"},\"saleOrder\":{\"documentCount\":76,\"quantity\":271749.000000,\"amount\":31849556.000000,\"latestTime\":\"2026-09-18T15:58:02\"},\"shipment\":{\"documentCount\":2,\"quantity\":10149.000000,\"latestTime\":\"2026-09-18T12:38:02\"},\"topProducts\":[{\"materialName\":\"1PH WS79\",\"specification\":\"1PH WS79\",\"quantity\":10000.000000,\"shipmentCount\":1},{\"materialName\":\"3PH APEC3-WC\",\"specification\":\"3PH APEC3-WC\",\"quantity\":149.000000,\"shipmentCount\":1}],\"monthlyTrend\":[{\"month\":\"2026-05\",\"inbound\":127237.0,\"ordered\":3000.0,\"shipped\":0},{\"month\":\"2026-06\",\"inbound\":77140.0,\"ordered\":14149.0,\"shipped\":0},{\"month\":\"2026-07\",\"inbound\":78556.0,\"ordered\":11000.0,\"shipped\":0},{\"month\":\"2026-08\",\"inbound\":19916.0,\"ordered\":0,\"shipped\":0},{\"month\":\"2026-09\",\"inbound\":20007.0,\"ordered\":10000.0,\"shipped\":10149.0},{\"month\":\"2026-10\",\"inbound\":0,\"ordered\":0,\"shipped\":0}],\"recentDocuments\":[{\"stage\":\"采购入库\",\"number\":\"CGRK00000001740\",\"operTime\":\"2026-09-18T16:29:02\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2609180001\",\"operTime\":\"2026-09-18T16:06:03\",\"quantity\":10000.000000,\"status\":\"1\"},{\"stage\":\"销售订单\",\"number\":\"XSDD00000001726\",\"operTime\":\"2026-09-18T15:58:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001742\",\"operTime\":\"2026-09-18T12:38:02\",\"quantity\":10000.000000,\"status\":\"2\"},{\"stage\":\"采购入库\",\"number\":\"CGRK00000001721\",\"operTime\":\"2026-09-18T11:44:34\",\"quantity\":7.000000,\"status\":\"1\"},{\"stage\":\"实际发货\",\"number\":\"FHTZ00000001718\",\"operTime\":\"2026-09-18T11:42:37\",\"quantity\":149.000000,\"status\":\"2\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070002\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":9500.000000,\"status\":\"1\"},{\"stage\":\"总部入库\",\"number\":\"SM2608070007\",\"operTime\":\"2026-08-07T00:00:00\",\"quantity\":1836.000000,\"status\":\"1\"}]}}'); +INSERT INTO `tbl_log` VALUES (10397, NULL, '接口日志', '36.249.93.42/122.233.38.5', '2026-10-13 10:49:53', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (10398, NULL, '接口日志', '36.249.93.154/122.233.38.5', '2026-10-13 10:49:53', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (10399, NULL, '接口日志', '183.131.211.173/125.121.53.131', '2026-10-13 11:35:12', 0, 'PlatformConfigController.getPlatformName(..)', NULL, 'GET /apis/platformConfig/getPlatform/name', '{}', '\"SMT\"'); +INSERT INTO `tbl_log` VALUES (10400, NULL, '接口日志', '36.249.93.42/125.121.53.131', '2026-10-13 11:35:12', 0, 'PlatformConfigController.getPlatformUrl(..)', NULL, 'GET /apis/platformConfig/getPlatform/url', '{}', '\"http://www.gyjerp.com/\"'); +INSERT INTO `tbl_log` VALUES (10401, NULL, '接口日志', '36.249.93.31/125.121.53.131', '2026-10-13 11:35:16', 0, 'PlatformConfigController.getPlatformCheckcodeFlag(..)', NULL, 'GET /apis/platformConfig/getPlatform/checkcodeFlag', '{}', '\"1\"'); +INSERT INTO `tbl_log` VALUES (10402, NULL, '接口日志', '36.249.93.52/125.121.53.131', '2026-10-13 11:35:16', 0, 'UserController.randomImage(..)', NULL, 'GET /apis/user/randomImage', '{}', '{\"code\":200,\"data\":{\"base64\":\"data:image/jpg;base64,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\",\"uuid\":\"6ac1c34fb5d54042957ea6a46e1b13b0\"}}'); + +-- ---------------------------- +-- Table structure for tbl_material +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_material`; +CREATE TABLE `tbl_material` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `category_id` bigint NULL DEFAULT NULL COMMENT '产品类型id', + `name` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '名称', + `mfrs` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '制造商', + `model` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '型号', + `standard` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '规格', + `brand` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '品牌', + `mnemonic` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '助记码', + `color` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '颜色', + `unit` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '单位-单个', + `remark` varchar(500) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '备注', + `img_name` varchar(1000) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '图片名称', + `unit_id` bigint NULL DEFAULT NULL COMMENT '单位Id', + `expiry_num` int NULL DEFAULT NULL COMMENT '保质期天数', + `weight` decimal(24, 6) NULL DEFAULT NULL COMMENT '基础重量(kg)', + `enabled` bit(1) NULL DEFAULT NULL COMMENT '启用 0-禁用 1-启用', + `other_field1` varchar(500) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '自定义1', + `other_field2` varchar(500) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '自定义2', + `other_field3` varchar(500) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '自定义3', + `enable_serial_number` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '是否开启序列号,0否,1是', + `enable_batch_number` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '是否开启批号,0否,1是', + `position` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '仓位货架', + `attribute` varchar(1000) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '多属性信息', + `tenant_id` bigint NULL DEFAULT NULL COMMENT '租户id', + `delete_flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '删除标记,0未删除,1删除', + PRIMARY KEY (`id`) USING BTREE, + INDEX `FK675951272AB6672C`(`category_id`) USING BTREE, + INDEX `UnitId`(`unit_id`) USING BTREE, + INDEX `tenant_id`(`tenant_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 707 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '产品表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_material +-- ---------------------------- +INSERT INTO `tbl_material` VALUES (683, 32, '单相有功电能表C8(VD)', '浙江瑞银电子有限公司', 'DDS1226-C8(VD)', 'DDS1226-C8(VD)', '', '', '', '件', 'Excel初始化;条码:C.1.C.2.00021', '', NULL, NULL, NULL, b'1', '', '', '', '0', '0', '', '', 63, '0'); +INSERT INTO `tbl_material` VALUES (684, 32, '单相有功电能表C8(VG)', '浙江瑞银电子有限公司', 'DDS1226-C8(VG)', 'DDS1226-C8(VG)', '', '', '', '件', 'Excel初始化;条码:C.1.C.2.00023', '', NULL, NULL, NULL, b'1', '', '', '', '0', '0', '', '', 63, '0'); +INSERT INTO `tbl_material` VALUES (685, 32, '单相多功能电能表T49(VB)', '浙江瑞银电子有限公司', 'DDSD1226-T49(VB)', 'DDSD1226-T49(VB)', '', '', '', '件', 'Excel初始化;条码:C.1.T.0.00032', '', NULL, NULL, NULL, b'1', '', '', '', '0', '0', '', '', 63, '0'); +INSERT INTO `tbl_material` VALUES (686, 32, '单相多功能电能表T49(VH)_(马来市场)', '浙江瑞银电子有限公司', 'DDSD1226-T49(VH)', 'DDSD1226-T49(VH)', '', '', '', '件', 'Excel初始化;条码:C.1.T.0.0004500005', '', NULL, NULL, NULL, b'1', '', '', '', '0', '0', '', '', 63, '0'); +INSERT INTO `tbl_material` VALUES (687, 32, '三相四线多功能电能表CXVI(VA)-新', '浙江瑞银电子有限公司', 'DTSD1226-CXVI(VA)', 'DTSD1226-CXVI(VA)', '', '', '', '件', 'Excel初始化;条码:C.3.C.2.00025', '', NULL, NULL, NULL, b'1', '', '', '', '0', '0', '', '', 63, '0'); +INSERT INTO `tbl_material` VALUES (688, 32, '三相四线多功能电能表SXVI(VG)-新', '浙江瑞银电子有限公司', 'DTSD1226-SXVI(VG)', 'DTSD1226-SXVI(VG)', '', '', '', '件', 'Excel初始化;条码:C.3.S.0.00020', '', NULL, NULL, NULL, b'1', '', '', '', '0', '0', '', '', 63, '0'); +INSERT INTO `tbl_material` VALUES (689, 32, '三相四线多功能电能表SXVI(VH)-新', '浙江瑞银电子有限公司', 'DTSD1226-SXVI(VH)', 'DTSD1226-SXVI(VH)', '', '', '', '件', 'Excel初始化;条码:C.3.S.0.00026', '', NULL, NULL, NULL, b'1', '', '', '', '0', '0', '', '', 63, '0'); +INSERT INTO `tbl_material` VALUES (690, 32, '三相四线多功能电能表SXVI(VK)-新', '浙江瑞银电子有限公司', 'DTSD1226-SXVI(VK)', 'DTSD1226-SXVI(VK)', '', '', '', '件', 'Excel初始化;条码:C.3.S.0.00030', '', NULL, NULL, NULL, b'1', '', '', '', '0', '0', '', '', 63, '0'); +INSERT INTO `tbl_material` VALUES (691, 32, '三相四线多功能电能表T46(VC)', '浙江瑞银电子有限公司', 'DTSD1226-T46(VC)', 'DTSD1226-T46(VC)', '', '', '', '件', 'Excel初始化;条码:C.3.T.0.00030', '', NULL, NULL, NULL, b'1', '', '', '', '0', '0', '', '', 63, '0'); +INSERT INTO `tbl_material` VALUES (692, 32, '三相四线多功能电能表T46(VH)', '浙江瑞银电子有限公司', 'DTSD1226-T46(VH)', 'DTSD1226-T46(VH)', '', '', '', '件', 'Excel初始化;条码:C.3.T.0.00036', '', NULL, NULL, NULL, b'1', '', '', '', '0', '0', '', '', 63, '0'); +INSERT INTO `tbl_material` VALUES (693, 32, '三相四线多功能电能表T46(VJ)', '浙江瑞银电子有限公司', 'DTSD1226-T46(VJ)', 'DTSD1226-T46(VJ)', '', '', '', '件', 'Excel初始化;条码:C.3.T.0.00038', '', NULL, NULL, NULL, b'1', '', '', '', '0', '0', '', '', 63, '0'); +INSERT INTO `tbl_material` VALUES (694, 32, 'MD-LR62(VB)', '浙江瑞银电子有限公司', 'MD-LR62(VB)', 'MD-LR62(VB)', '', '', '', '件', 'Excel初始化;条码:C.4.T.0.00421', '', NULL, NULL, NULL, b'1', '', '', '', '0', '0', '', '', 63, '0'); +INSERT INTO `tbl_material` VALUES (695, 32, 'MD-LR63(VB)', '浙江瑞银电子有限公司', 'MD-LR63(VB)', 'MD-LR63(VB)', '', '', '', '件', 'Excel初始化;条码:C.4.T.0.00422', '', NULL, NULL, NULL, b'1', '', '', '', '0', '0', '', '', 63, '0'); +INSERT INTO `tbl_material` VALUES (696, 32, 'MT-3NSXL(VC)RF通讯模块', '浙江瑞银电子有限公司', 'MT-3NSXL(VC)', 'MT-3NSXL(VC)', '', '', '', '件', 'Excel初始化;条码:C.4.T.0.00547', '', NULL, NULL, NULL, b'1', '', '', '', '0', '0', '', '', 63, '0'); +INSERT INTO `tbl_material` VALUES (697, 32, 'MT-P109(VA)', '浙江瑞银电子有限公司', 'MT-P109(VA)', 'MT-P109(VA)', '', '', '', '件', 'Excel初始化;条码:C.4.T.0.00553', '', NULL, NULL, NULL, b'1', '', '', '', '0', '0', '', '', 63, '0'); +INSERT INTO `tbl_material` VALUES (698, 32, 'MD-4GVIII(VB)', '浙江瑞银电子有限公司', 'MD-4GVIII(VB)', 'MD-4GVIII(VB)', '', '', '', '件', 'Excel初始化;条码:C.4.T.0.00562', '', NULL, NULL, NULL, b'1', '', '', '', '0', '0', '', '', 63, '0'); +INSERT INTO `tbl_material` VALUES (699, 32, 'MD-4G111(VF) 4G模块', '浙江瑞银电子有限公司', 'MD-4G111(VF)', 'MD-4G111(VF)', '', '', '', '件', 'Excel初始化;条码:C.4.T.0.00654', '', NULL, NULL, NULL, b'1', '', '', '', '0', '0', '', '', 63, '0'); +INSERT INTO `tbl_material` VALUES (700, 32, 'TC160(VA) 通讯模块供电盒', '浙江瑞银电子有限公司', 'TC160(VA)', 'TC160(VA)', '', '', '', '件', 'Excel初始化;条码:C.4.T.0.00686', '', NULL, NULL, NULL, b'1', '', '', '', '0', '0', '', '', 63, '0'); +INSERT INTO `tbl_material` VALUES (701, 32, 'MD-RS114(VB) 基于RS485的MODBS TCPMODBS RTUASVII转换模块_(DZG)', '浙江瑞银电子有限公司', 'MD-RS114(VB)', 'MD-RS114(VB)', '', '', '', '件', 'Excel初始化;条码:C.4.T.0.0068900002', '', NULL, NULL, NULL, b'1', '', '', '', '0', '0', '', '', 63, '0'); +INSERT INTO `tbl_material` VALUES (702, 32, 'MD-RS178(VA) RS485分线器', '浙江瑞银电子有限公司', 'MD-RS178(VA)', 'MD-RS178(VA)', '', '', '', '件', 'Excel初始化;条码:C.4.T.0.00722', '', NULL, NULL, NULL, b'1', '', '', '', '0', '0', '', '', 63, '0'); +INSERT INTO `tbl_material` VALUES (703, 33, '1PH WS79', '浙江瑞银电子有限公司', '1PH WS79', '1PH WS79', '', '', '', '件', 'Excel初始化;条码:1PH-WS79', '', NULL, NULL, NULL, b'1', '', '', '', '0', '0', '', '', 63, '0'); +INSERT INTO `tbl_material` VALUES (704, 33, '3PH APEC3-WC', '浙江瑞银电子有限公司', '3PH APEC3-WC', '3PH APEC3-WC', '', '', '', '件', 'Excel初始化;条码:3PH-APEC3-WC', '', NULL, NULL, NULL, b'1', '', '', '', '0', '0', '', '', 63, '0'); +INSERT INTO `tbl_material` VALUES (705, 34, 'MD-4G111(VF) 包装', NULL, 'MD-4G111(VF)', 'MD-4G111(VF) packing', NULL, 'MD-4G111(VF) bz', NULL, '件', NULL, '', NULL, NULL, NULL, b'1', NULL, NULL, NULL, '0', '0', NULL, '{}', NULL, '0'); +INSERT INTO `tbl_material` VALUES (706, 33, 'MD-4G111(VF) 4G', 'SMT', 'MD-4G111(VF) 4G', 'MD-4G111(VF) 4G', NULL, 'MD-4G111(VF) 4G', NULL, '只', NULL, '', NULL, NULL, NULL, b'1', NULL, NULL, NULL, '0', '0', NULL, '{}', NULL, '0'); + +-- ---------------------------- +-- Table structure for tbl_material_attribute +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_material_attribute`; +CREATE TABLE `tbl_material_attribute` ( + `id` bigint NOT NULL AUTO_INCREMENT, + `attribute_name` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '属性名', + `attribute_value` varchar(500) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '属性值', + `tenant_id` bigint NULL DEFAULT NULL COMMENT '租户id', + `delete_flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '删除标记,0未删除,1删除', + PRIMARY KEY (`id`) USING BTREE, + INDEX `tenant_id`(`tenant_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '产品属性表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_material_attribute +-- ---------------------------- +INSERT INTO `tbl_material_attribute` VALUES (1, '多颜色', '红色|橙色|黄色|绿色|蓝色|紫色', 63, '0'); +INSERT INTO `tbl_material_attribute` VALUES (2, '多尺寸', 'S|M|L|XL|XXL|XXXL', 63, '0'); +INSERT INTO `tbl_material_attribute` VALUES (3, '自定义1', '小米|华为', 63, '0'); +INSERT INTO `tbl_material_attribute` VALUES (4, '自定义2', NULL, 63, '0'); +INSERT INTO `tbl_material_attribute` VALUES (5, '自定义3', NULL, 63, '0'); +INSERT INTO `tbl_material_attribute` VALUES (6, '测试属性_UPD', '测试值A|测试值B|测试值C', NULL, '1'); + +-- ---------------------------- +-- Table structure for tbl_material_category +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_material_category`; +CREATE TABLE `tbl_material_category` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `name` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '名称', + `category_level` smallint NULL DEFAULT NULL COMMENT '等级', + `parent_id` bigint NULL DEFAULT NULL COMMENT '上级id', + `sort` varchar(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '显示顺序', + `serial_no` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '编号', + `remark` varchar(1024) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '备注', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间', + `tenant_id` bigint NULL DEFAULT NULL COMMENT '租户id', + `delete_flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '删除标记,0未删除,1删除', + PRIMARY KEY (`id`) USING BTREE, + INDEX `FK3EE7F725237A77D8`(`parent_id`) USING BTREE, + INDEX `tenant_id`(`tenant_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 35 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '产品类型表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_material_category +-- ---------------------------- +INSERT INTO `tbl_material_category` VALUES (32, '半成品', 1, NULL, '1', '001', '总部入库条码商品', '2026-09-18 10:06:29', '2026-09-18 10:06:29', 63, '0'); +INSERT INTO `tbl_material_category` VALUES (33, '成品', 1, NULL, '2', '002', 'Stock Status成品', '2026-09-18 10:06:29', '2026-09-18 10:06:29', 63, '0'); +INSERT INTO `tbl_material_category` VALUES (34, '包装', NULL, NULL, NULL, '010', NULL, '2026-09-18 11:46:03', '2026-09-18 11:46:03', NULL, '0'); + +-- ---------------------------- +-- Table structure for tbl_material_current_stock +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_material_current_stock`; +CREATE TABLE `tbl_material_current_stock` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `material_id` bigint NULL DEFAULT NULL COMMENT '产品id', + `depot_id` bigint NULL DEFAULT NULL COMMENT '仓库id', + `current_number` decimal(24, 6) NULL DEFAULT NULL COMMENT '当前库存数量', + `current_unit_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '当前单价', + `tenant_id` bigint NULL DEFAULT NULL COMMENT '租户id', + `delete_flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '删除标记,0未删除,1删除', + PRIMARY KEY (`id`) USING BTREE, + INDEX `material_id`(`material_id`) USING BTREE, + INDEX `depot_id`(`depot_id`) USING BTREE, + INDEX `tenant_id`(`tenant_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 150 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '产品当前库存' ROW_FORMAT = COMPACT; + +-- ---------------------------- +-- Records of tbl_material_current_stock +-- ---------------------------- +INSERT INTO `tbl_material_current_stock` VALUES (125, 698, 25, 50.000000, 324.000000, 63, '0'); +INSERT INTO `tbl_material_current_stock` VALUES (126, 693, 25, 34473.000000, 797.040000, 63, '0'); +INSERT INTO `tbl_material_current_stock` VALUES (127, 699, 25, 76970.000000, 0.100000, 63, '0'); +INSERT INTO `tbl_material_current_stock` VALUES (128, 692, 25, 500.000000, 550.800000, 63, '0'); +INSERT INTO `tbl_material_current_stock` VALUES (129, 688, 25, 400.000000, 613.980000, 63, '0'); +INSERT INTO `tbl_material_current_stock` VALUES (130, 686, 25, 42490.000000, 403.380000, 63, '0'); +INSERT INTO `tbl_material_current_stock` VALUES (131, 697, 25, 500.000000, 129.600000, 63, '0'); +INSERT INTO `tbl_material_current_stock` VALUES (132, 687, 25, 48041.000000, 481.950000, 63, '0'); +INSERT INTO `tbl_material_current_stock` VALUES (133, 694, 25, 200.000000, 334.692000, 63, '0'); +INSERT INTO `tbl_material_current_stock` VALUES (134, 695, 25, 100.000000, 1003.752000, 63, '0'); +INSERT INTO `tbl_material_current_stock` VALUES (135, 702, 25, 1000.000000, 24.300000, 63, '0'); +INSERT INTO `tbl_material_current_stock` VALUES (136, 700, 25, 50.000000, 132.840000, 63, '0'); +INSERT INTO `tbl_material_current_stock` VALUES (137, 690, 25, 13070.000000, 518.400000, 63, '0'); +INSERT INTO `tbl_material_current_stock` VALUES (138, 701, 25, 100.000000, 142.560000, 63, '0'); +INSERT INTO `tbl_material_current_stock` VALUES (139, 689, 25, 120.000000, 690.120000, 63, '0'); +INSERT INTO `tbl_material_current_stock` VALUES (140, 684, 25, 112400.000000, 80.190000, 63, '0'); +INSERT INTO `tbl_material_current_stock` VALUES (141, 683, 25, 20000.000000, 85.860000, 63, '0'); +INSERT INTO `tbl_material_current_stock` VALUES (142, 696, 25, 54656.000000, 0.100000, 63, '0'); +INSERT INTO `tbl_material_current_stock` VALUES (143, 685, 25, 40000.000000, 218.700000, 63, '0'); +INSERT INTO `tbl_material_current_stock` VALUES (144, 691, 25, 14460.000000, 486.000000, 63, '0'); +INSERT INTO `tbl_material_current_stock` VALUES (145, 703, 26, 52400.000000, 59.500000, 63, '0'); +INSERT INTO `tbl_material_current_stock` VALUES (146, 704, 26, 7223.000000, 317.500000, 63, '0'); +INSERT INTO `tbl_material_current_stock` VALUES (147, 705, 25, 0.000000, 0.000000, NULL, '0'); +INSERT INTO `tbl_material_current_stock` VALUES (148, 705, 26, 0.000000, 0.000000, NULL, '0'); +INSERT INTO `tbl_material_current_stock` VALUES (149, 703, 25, 0.000000, 59.500000, NULL, '0'); + +-- ---------------------------- +-- Table structure for tbl_material_extend +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_material_extend`; +CREATE TABLE `tbl_material_extend` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `material_id` bigint NULL DEFAULT NULL COMMENT '商品id', + `bar_code` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '商品条码', + `commodity_unit` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '商品单位', + `sku` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '多属性', + `purchase_decimal` decimal(24, 6) NULL DEFAULT NULL COMMENT '采购价格', + `commodity_decimal` decimal(24, 6) NULL DEFAULT NULL COMMENT '零售价格', + `wholesale_decimal` decimal(24, 6) NULL DEFAULT NULL COMMENT '销售价格', + `low_decimal` decimal(24, 6) NULL DEFAULT NULL COMMENT '最低售价', + `default_flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '1' COMMENT '是否为默认单位,1是,0否', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建日期', + `create_serial` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '创建人编码', + `update_serial` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '更新人编码', + `update_time` bigint NULL DEFAULT NULL COMMENT '更新时间戳', + `tenant_id` bigint NULL DEFAULT NULL COMMENT '租户id', + `delete_Flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '删除标记,0未删除,1删除', + PRIMARY KEY (`id`) USING BTREE, + INDEX `material_id`(`material_id`) USING BTREE, + INDEX `bar_code`(`bar_code`) USING BTREE, + INDEX `tenant_id`(`tenant_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 127 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '产品价格扩展' ROW_FORMAT = COMPACT; + +-- ---------------------------- +-- Records of tbl_material_extend +-- ---------------------------- +INSERT INTO `tbl_material_extend` VALUES (103, 683, 'C.1.C.2.00021', '件', NULL, 85.860000, 85.860000, 85.860000, 85.860000, '1', '2026-09-18 10:06:29', 'admin', 'admin', 1789697189092, 63, '0'); +INSERT INTO `tbl_material_extend` VALUES (104, 684, 'C.1.C.2.00023', '件', NULL, 80.190000, 80.190000, 80.190000, 80.190000, '1', '2026-09-18 10:06:29', 'admin', 'admin', 1789697189092, 63, '0'); +INSERT INTO `tbl_material_extend` VALUES (105, 685, 'C.1.T.0.00032', '件', NULL, 218.700000, 218.700000, 218.700000, 218.700000, '1', '2026-09-18 10:06:29', 'admin', 'admin', 1789697189093, 63, '0'); +INSERT INTO `tbl_material_extend` VALUES (106, 686, 'C.1.T.0.0004500005', '件', NULL, 403.380000, 403.380000, 403.380000, 403.380000, '1', '2026-09-18 10:06:29', 'admin', 'admin', 1789697189093, 63, '0'); +INSERT INTO `tbl_material_extend` VALUES (107, 687, 'C.3.C.2.00025', '件', NULL, 481.950000, 481.950000, 481.950000, 481.950000, '1', '2026-09-18 10:06:29', 'admin', 'admin', 1789697189093, 63, '0'); +INSERT INTO `tbl_material_extend` VALUES (108, 688, 'C.3.S.0.00020', '件', NULL, 613.980000, 613.980000, 613.980000, 613.980000, '1', '2026-09-18 10:06:29', 'admin', 'admin', 1789697189094, 63, '0'); +INSERT INTO `tbl_material_extend` VALUES (109, 689, 'C.3.S.0.00026', '件', NULL, 690.120000, 690.120000, 690.120000, 690.120000, '1', '2026-09-18 10:06:29', 'admin', 'admin', 1789697189094, 63, '0'); +INSERT INTO `tbl_material_extend` VALUES (110, 690, 'C.3.S.0.00030', '件', NULL, 518.400000, 518.400000, 518.400000, 518.400000, '1', '2026-09-18 10:06:29', 'admin', 'admin', 1789697189094, 63, '0'); +INSERT INTO `tbl_material_extend` VALUES (111, 691, 'C.3.T.0.00030', '件', NULL, 486.000000, 486.000000, 486.000000, 486.000000, '1', '2026-09-18 10:06:29', 'admin', 'admin', 1789697189095, 63, '0'); +INSERT INTO `tbl_material_extend` VALUES (112, 692, 'C.3.T.0.00036', '件', NULL, 550.800000, 550.800000, 550.800000, 550.800000, '1', '2026-09-18 10:06:29', 'admin', 'admin', 1789697189095, 63, '0'); +INSERT INTO `tbl_material_extend` VALUES (113, 693, 'C.3.T.0.00038', '件', NULL, 797.040000, 797.040000, 797.040000, 797.040000, '1', '2026-09-18 10:06:29', 'admin', 'admin', 1789697189095, 63, '0'); +INSERT INTO `tbl_material_extend` VALUES (114, 694, 'C.4.T.0.00421', '件', NULL, 334.692000, 334.692000, 334.692000, 334.692000, '1', '2026-09-18 10:06:29', 'admin', 'admin', 1789697189096, 63, '0'); +INSERT INTO `tbl_material_extend` VALUES (115, 695, 'C.4.T.0.00422', '件', NULL, 1003.752000, 1003.752000, 1003.752000, 1003.752000, '1', '2026-09-18 10:06:29', 'admin', 'admin', 1789697189096, 63, '0'); +INSERT INTO `tbl_material_extend` VALUES (116, 696, 'C.4.T.0.00547', '件', NULL, 0.100000, 0.100000, 0.100000, 0.100000, '1', '2026-09-18 10:06:29', 'admin', 'admin', 1789697189097, 63, '0'); +INSERT INTO `tbl_material_extend` VALUES (117, 697, 'C.4.T.0.00553', '件', NULL, 129.600000, 129.600000, 129.600000, 129.600000, '1', '2026-09-18 10:06:29', 'admin', 'admin', 1789697189097, 63, '0'); +INSERT INTO `tbl_material_extend` VALUES (118, 698, 'C.4.T.0.00562', '件', NULL, 324.000000, 324.000000, 324.000000, 324.000000, '1', '2026-09-18 10:06:29', 'admin', 'admin', 1789697189097, 63, '0'); +INSERT INTO `tbl_material_extend` VALUES (119, 699, 'C.4.T.0.00654', '件', NULL, 0.100000, 0.100000, 0.100000, 0.100000, '1', '2026-09-18 10:06:29', 'admin', 'admin', 1789703076524, 63, '0'); +INSERT INTO `tbl_material_extend` VALUES (120, 700, 'C.4.T.0.00686', '件', NULL, 132.840000, 132.840000, 132.840000, 132.840000, '1', '2026-09-18 10:06:29', 'admin', 'admin', 1789697189098, 63, '0'); +INSERT INTO `tbl_material_extend` VALUES (121, 701, 'C.4.T.0.0068900002', '件', NULL, 142.560000, 142.560000, 142.560000, 142.560000, '1', '2026-09-18 10:06:29', 'admin', 'admin', 1789697189098, 63, '0'); +INSERT INTO `tbl_material_extend` VALUES (122, 702, 'C.4.T.0.00722', '件', NULL, 24.300000, 24.300000, 24.300000, 24.300000, '1', '2026-09-18 10:06:29', 'admin', 'admin', 1789697189098, 63, '0'); +INSERT INTO `tbl_material_extend` VALUES (123, 703, '1PH-WS79', '件', NULL, 59.500000, 73.500000, 73.500000, 73.500000, '1', '2026-09-18 10:06:29', 'admin', 'admin', 1789718583926, 63, '0'); +INSERT INTO `tbl_material_extend` VALUES (124, 704, '3PH-APEC3-WC', '件', NULL, 317.500000, 340.000000, 340.000000, 340.000000, '1', '2026-09-18 10:06:29', 'admin', 'admin', 1789711835973, 63, '0'); +INSERT INTO `tbl_material_extend` VALUES (125, 705, '1001', '件', '', 10.000000, 10.000000, 10.000000, 10.000000, '1', '2026-09-18 11:46:34', 'admin', 'admin', 1789720142420, NULL, '0'); +INSERT INTO `tbl_material_extend` VALUES (126, 706, '1002', '只', '', 100.000000, 200.000000, 200.000000, 200.000000, '1', '2026-09-18 11:47:33', 'admin', 'admin', 1789703253942, NULL, '0'); + +-- ---------------------------- +-- Table structure for tbl_material_initial_stock +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_material_initial_stock`; +CREATE TABLE `tbl_material_initial_stock` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `material_id` bigint NULL DEFAULT NULL COMMENT '产品id', + `depot_id` bigint NULL DEFAULT NULL COMMENT '仓库id', + `number` decimal(24, 6) NULL DEFAULT NULL COMMENT '初始库存数量', + `low_safe_stock` decimal(24, 6) NULL DEFAULT NULL COMMENT '最低库存数量', + `high_safe_stock` decimal(24, 6) NULL DEFAULT NULL COMMENT '最高库存数量', + `tenant_id` bigint NULL DEFAULT NULL COMMENT '租户id', + `delete_flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '删除标记,0未删除,1删除', + PRIMARY KEY (`id`) USING BTREE, + INDEX `material_id`(`material_id`) USING BTREE, + INDEX `depot_id`(`depot_id`) USING BTREE, + INDEX `tenant_id`(`tenant_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 102 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '产品初始库存' ROW_FORMAT = COMPACT; + +-- ---------------------------- +-- Records of tbl_material_initial_stock +-- ---------------------------- +INSERT INTO `tbl_material_initial_stock` VALUES (78, 698, 25, 0.000000, 0.000000, 0.000000, 63, '0'); +INSERT INTO `tbl_material_initial_stock` VALUES (79, 693, 25, 0.000000, 0.000000, 0.000000, 63, '0'); +INSERT INTO `tbl_material_initial_stock` VALUES (80, 699, 25, 0.000000, 0.000000, 0.000000, 63, '0'); +INSERT INTO `tbl_material_initial_stock` VALUES (81, 692, 25, 0.000000, 0.000000, 0.000000, 63, '0'); +INSERT INTO `tbl_material_initial_stock` VALUES (82, 688, 25, 0.000000, 0.000000, 0.000000, 63, '0'); +INSERT INTO `tbl_material_initial_stock` VALUES (83, 686, 25, 0.000000, 0.000000, 0.000000, 63, '0'); +INSERT INTO `tbl_material_initial_stock` VALUES (84, 697, 25, 0.000000, 0.000000, 0.000000, 63, '0'); +INSERT INTO `tbl_material_initial_stock` VALUES (85, 687, 25, 0.000000, 0.000000, 0.000000, 63, '0'); +INSERT INTO `tbl_material_initial_stock` VALUES (86, 694, 25, 0.000000, 0.000000, 0.000000, 63, '0'); +INSERT INTO `tbl_material_initial_stock` VALUES (87, 695, 25, 0.000000, 0.000000, 0.000000, 63, '0'); +INSERT INTO `tbl_material_initial_stock` VALUES (88, 702, 25, 0.000000, 0.000000, 0.000000, 63, '0'); +INSERT INTO `tbl_material_initial_stock` VALUES (89, 700, 25, 0.000000, 0.000000, 0.000000, 63, '0'); +INSERT INTO `tbl_material_initial_stock` VALUES (90, 690, 25, 0.000000, 0.000000, 0.000000, 63, '0'); +INSERT INTO `tbl_material_initial_stock` VALUES (91, 701, 25, 0.000000, 0.000000, 0.000000, 63, '0'); +INSERT INTO `tbl_material_initial_stock` VALUES (92, 689, 25, 0.000000, 0.000000, 0.000000, 63, '0'); +INSERT INTO `tbl_material_initial_stock` VALUES (93, 684, 25, 0.000000, 0.000000, 0.000000, 63, '0'); +INSERT INTO `tbl_material_initial_stock` VALUES (94, 683, 25, 0.000000, 0.000000, 0.000000, 63, '0'); +INSERT INTO `tbl_material_initial_stock` VALUES (95, 696, 25, 0.000000, 0.000000, 0.000000, 63, '0'); +INSERT INTO `tbl_material_initial_stock` VALUES (96, 685, 25, 0.000000, 0.000000, 0.000000, 63, '0'); +INSERT INTO `tbl_material_initial_stock` VALUES (97, 691, 25, 0.000000, 0.000000, 0.000000, 63, '0'); +INSERT INTO `tbl_material_initial_stock` VALUES (98, 703, 26, 0.000000, 0.000000, 0.000000, 63, '0'); +INSERT INTO `tbl_material_initial_stock` VALUES (99, 704, 26, 0.000000, 0.000000, 0.000000, 63, '0'); +INSERT INTO `tbl_material_initial_stock` VALUES (100, 705, 25, 0.000000, NULL, NULL, NULL, '0'); +INSERT INTO `tbl_material_initial_stock` VALUES (101, 705, 26, 0.000000, NULL, NULL, NULL, '0'); + +-- ---------------------------- +-- Table structure for tbl_material_property +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_material_property`; +CREATE TABLE `tbl_material_property` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `native_name` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '原始名称', + `enabled` bit(1) NULL DEFAULT NULL COMMENT '是否启用', + `sort` varchar(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '排序', + `another_name` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '别名', + `tenant_id` bigint NULL DEFAULT NULL COMMENT '租户id', + `delete_flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '删除标记,0未删除,1删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '产品扩展字段表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_material_property +-- ---------------------------- + +-- ---------------------------- +-- Table structure for tbl_msg +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_msg`; +CREATE TABLE `tbl_msg` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `msg_title` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '消息标题', + `msg_content` varchar(500) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '消息内容', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `type` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '消息类型', + `user_id` bigint NULL DEFAULT NULL COMMENT '接收人id', + `status` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '状态,1未读 2已读', + `tenant_id` bigint NULL DEFAULT NULL COMMENT '租户id', + `delete_Flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '删除标记,0未删除,1删除', + PRIMARY KEY (`id`) USING BTREE, + INDEX `tenant_id`(`tenant_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '消息表' ROW_FORMAT = COMPACT; + +-- ---------------------------- +-- Records of tbl_msg +-- ---------------------------- + +-- ---------------------------- +-- Table structure for tbl_orga_user_rel +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_orga_user_rel`; +CREATE TABLE `tbl_orga_user_rel` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `orga_id` bigint NULL DEFAULT NULL COMMENT '部门id', + `user_id` bigint NOT NULL COMMENT '用户id', + `user_blng_orga_dspl_seq` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '用户在所属部门中显示顺序', + `delete_flag` char(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '删除标记,0未删除,1删除', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `creator` bigint NULL DEFAULT NULL COMMENT '创建人', + `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间', + `updater` bigint NULL DEFAULT NULL COMMENT '更新人', + `tenant_id` bigint NULL DEFAULT NULL COMMENT '租户id', + PRIMARY KEY (`id`) USING BTREE, + INDEX `orga_id`(`orga_id`) USING BTREE, + INDEX `user_id`(`user_id`) USING BTREE, + INDEX `creator`(`creator`) USING BTREE, + INDEX `tenant_id`(`tenant_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 21 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '部门用户关系表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_orga_user_rel +-- ---------------------------- +INSERT INTO `tbl_orga_user_rel` VALUES (10, 13, 131, '2', '0', '2019-12-28 12:13:15', 63, '2026-09-09 11:42:25', 63, 63); +INSERT INTO `tbl_orga_user_rel` VALUES (11, 12, 63, '15', '0', '2020-09-13 18:42:45', 63, '2021-03-19 00:11:40', 63, 63); +INSERT INTO `tbl_orga_user_rel` VALUES (12, 13, 135, '9', '0', '2021-03-18 22:24:25', 63, '2021-03-19 00:09:23', 63, 63); +INSERT INTO `tbl_orga_user_rel` VALUES (13, 13, 134, '1', '0', '2021-03-18 22:31:39', 63, '2021-03-18 23:59:55', 63, 63); +INSERT INTO `tbl_orga_user_rel` VALUES (14, 22, 133, '22', '0', '2021-03-18 22:31:44', 63, '2021-03-18 22:32:04', 63, 63); +INSERT INTO `tbl_orga_user_rel` VALUES (15, 12, 144, NULL, '0', '2021-03-19 00:00:40', 63, '2021-03-19 00:08:07', 63, 63); +INSERT INTO `tbl_orga_user_rel` VALUES (16, 12, 145, NULL, '0', '2021-03-19 00:03:44', 63, '2021-03-19 00:03:44', 63, 63); +INSERT INTO `tbl_orga_user_rel` VALUES (17, NULL, 146, NULL, '0', '2026-09-09 10:32:59', 63, '2026-09-09 10:32:59', 63, 63); +INSERT INTO `tbl_orga_user_rel` VALUES (18, NULL, 147, NULL, '0', '2026-09-11 08:48:05', 63, '2026-09-11 08:48:05', 63, 63); +INSERT INTO `tbl_orga_user_rel` VALUES (19, NULL, 148, NULL, '0', '2026-09-14 20:09:41', 63, '2026-09-14 20:10:04', 63, NULL); +INSERT INTO `tbl_orga_user_rel` VALUES (20, 13, 149, NULL, '0', '2026-09-30 07:41:49', 63, '2026-09-30 07:41:49', 63, NULL); + +-- ---------------------------- +-- Table structure for tbl_organization +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_organization`; +CREATE TABLE `tbl_organization` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `org_no` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '部门编号', + `org_abr` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '部门简称', + `parent_id` bigint NULL DEFAULT NULL COMMENT '父部门id', + `sort` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '部门显示顺序', + `remark` varchar(500) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '备注', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间', + `tenant_id` bigint NULL DEFAULT NULL COMMENT '租户id', + `delete_flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '删除标记,0未删除,1删除', + PRIMARY KEY (`id`) USING BTREE, + INDEX `tenant_id`(`tenant_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 16 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '部门表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_organization +-- ---------------------------- +INSERT INTO `tbl_organization` VALUES (12, '001', '测试部门', NULL, '2', 'aaaa2', '2019-12-28 12:13:01', '2019-12-28 12:13:01', 63, '0'); +INSERT INTO `tbl_organization` VALUES (13, 'jg1', '部门1', 12, '3', '', '2020-07-21 00:09:57', '2020-07-21 00:10:22', 63, '0'); +INSERT INTO `tbl_organization` VALUES (14, '12', '部门2', 13, '4', '', '2020-07-21 22:45:42', '2021-02-15 22:18:30', 63, '0'); +INSERT INTO `tbl_organization` VALUES (15, 'DEPT_REG', '测试部门_UPD', NULL, NULL, NULL, '2026-09-14 20:12:09', '2026-09-14 20:14:46', NULL, '1'); + +-- ---------------------------- +-- Table structure for tbl_pack_bom +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_pack_bom`; +CREATE TABLE `tbl_pack_bom` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `bom_number` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '方案编号', + `bom_name` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '方案名称', + `product_material_id` bigint NULL DEFAULT NULL COMMENT '待包装产品商品id', + `product_material_extend_id` bigint NULL DEFAULT NULL COMMENT '待包装产品扩展id', + `product_sku` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '待包装产品多属性', + `output_material_id` bigint NULL DEFAULT NULL COMMENT '成品SKU商品id', + `output_material_extend_id` bigint NULL DEFAULT NULL COMMENT '成品扩展id', + `output_sku` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '成品多属性', + `output_number` decimal(24, 6) NULL DEFAULT NULL COMMENT '单位待包装产品产出成品数量', + `version` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT 'V1' COMMENT '版本', + `enabled` bit(1) NULL DEFAULT b'1' COMMENT '启用状态', + `remark` varchar(1000) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '备注', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `creator` bigint NULL DEFAULT NULL COMMENT '创建人', + `tenant_id` bigint NULL DEFAULT NULL COMMENT '租户id', + `delete_flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '删除标记,0未删除,1删除', + PRIMARY KEY (`id`) USING BTREE, + INDEX `product_material_id`(`product_material_id`) USING BTREE, + INDEX `output_material_id`(`output_material_id`) USING BTREE, + INDEX `tenant_id`(`tenant_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 19 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '包装BOM主表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_pack_bom +-- ---------------------------- +INSERT INTO `tbl_pack_bom` VALUES (18, 'BOM00000001735', 'v1.0', 703, 123, NULL, 703, 123, NULL, 1.000000, 'v1.0', b'1', NULL, '2026-09-18 12:14:19', 63, NULL, '0'); + +-- ---------------------------- +-- Table structure for tbl_pack_bom_item +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_pack_bom_item`; +CREATE TABLE `tbl_pack_bom_item` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `bom_id` bigint NOT NULL COMMENT '包装BOM id', + `material_id` bigint NOT NULL COMMENT '包材商品id', + `material_extend_id` bigint NULL DEFAULT NULL COMMENT '商品扩展id', + `material_sku` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '多属性', + `unit` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '单位', + `quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '用量(每产出1单位成品所需包材数量)', + `remark` varchar(500) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '备注', + `tenant_id` bigint NULL DEFAULT NULL COMMENT '租户id', + `delete_flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '删除标记,0未删除,1删除', + PRIMARY KEY (`id`) USING BTREE, + INDEX `bom_id`(`bom_id`) USING BTREE, + INDEX `material_id`(`material_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 27 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '包装BOM包材明细表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_pack_bom_item +-- ---------------------------- +INSERT INTO `tbl_pack_bom_item` VALUES (26, 18, 705, 125, '', '件', 1.000000, '', NULL, '0'); + +-- ---------------------------- +-- Table structure for tbl_person +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_person`; +CREATE TABLE `tbl_person` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `type` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '类型', + `name` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '姓名', + `enabled` bit(1) NULL DEFAULT NULL COMMENT '启用', + `sort` varchar(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '排序', + `tenant_id` bigint NULL DEFAULT NULL COMMENT '租户id', + `delete_flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '删除标记,0未删除,1删除', + PRIMARY KEY (`id`) USING BTREE, + INDEX `tenant_id`(`tenant_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 45 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '经手人表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_person +-- ---------------------------- +INSERT INTO `tbl_person` VALUES (31, '商务主管', 'Arif', b'1', '1', 63, '0'); +INSERT INTO `tbl_person` VALUES (32, '技术主管', 'Hafiz', b'1', '2', 63, '0'); +INSERT INTO `tbl_person` VALUES (33, '软件工程师', 'Aziman', b'1', '3', 63, '0'); +INSERT INTO `tbl_person` VALUES (34, 'IT', 'Lim', b'1', '4', 63, '0'); +INSERT INTO `tbl_person` VALUES (35, '实施', 'Amir', b'1', '5', 63, '0'); +INSERT INTO `tbl_person` VALUES (36, '资产管理员', '张伟', b'1', '10', 63, '0'); +INSERT INTO `tbl_person` VALUES (37, '设备工程师', '陈晨', b'1', '20', 63, '0'); +INSERT INTO `tbl_person` VALUES (38, '生产主管', '王磊', b'1', '30', 63, '0'); +INSERT INTO `tbl_person` VALUES (39, 'IT运维工程师', '赵敏', b'1', '40', 63, '0'); +INSERT INTO `tbl_person` VALUES (43, '财务员', 'Juwairiah', b'1', NULL, NULL, '0'); +INSERT INTO `tbl_person` VALUES (44, 'CEO', 'Neezam', b'1', NULL, NULL, '0'); + +-- ---------------------------- +-- Table structure for tbl_platform_config +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_platform_config`; +CREATE TABLE `tbl_platform_config` ( + `id` bigint NOT NULL AUTO_INCREMENT, + `platform_key` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '关键词', + `platform_key_info` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '关键词名称', + `platform_value` varchar(200) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '值', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 24 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '平台参数' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_platform_config +-- ---------------------------- +INSERT INTO `tbl_platform_config` VALUES (1, 'platform_name', '平台名称', 'SMT'); +INSERT INTO `tbl_platform_config` VALUES (2, 'activation_code', '激活码', ''); +INSERT INTO `tbl_platform_config` VALUES (3, 'platform_url', '官方网站', 'http://www.gyjerp.com/'); +INSERT INTO `tbl_platform_config` VALUES (4, 'bill_print_flag', '三联打印启用标记', '0'); +INSERT INTO `tbl_platform_config` VALUES (5, 'bill_print_url', '三联打印地址', ''); +INSERT INTO `tbl_platform_config` VALUES (6, 'pay_fee_url', '租户续费地址', ''); +INSERT INTO `tbl_platform_config` VALUES (7, 'register_flag', '注册启用标记', '0'); +INSERT INTO `tbl_platform_config` VALUES (8, 'app_activation_code', '手机端激活码', ''); +INSERT INTO `tbl_platform_config` VALUES (9, 'send_workflow_url', '发起流程地址', ''); +INSERT INTO `tbl_platform_config` VALUES (10, 'weixinUrl', '微信url', ''); +INSERT INTO `tbl_platform_config` VALUES (11, 'weixinAppid', '微信appid', ''); +INSERT INTO `tbl_platform_config` VALUES (12, 'weixinSecret', '微信secret', ''); +INSERT INTO `tbl_platform_config` VALUES (13, 'aliOss_endpoint', '阿里OSS-endpoint', ''); +INSERT INTO `tbl_platform_config` VALUES (14, 'aliOss_accessKeyId', '阿里OSS-accessKeyId', ''); +INSERT INTO `tbl_platform_config` VALUES (15, 'aliOss_accessKeySecret', '阿里OSS-accessKeySecret', ''); +INSERT INTO `tbl_platform_config` VALUES (16, 'aliOss_bucketName', '阿里OSS-bucketName', ''); +INSERT INTO `tbl_platform_config` VALUES (17, 'aliOss_linkUrl', '阿里OSS-linkUrl', ''); +INSERT INTO `tbl_platform_config` VALUES (18, 'bill_excel_url', '单据Excel地址', ''); +INSERT INTO `tbl_platform_config` VALUES (19, 'email_from', '邮件发送端-发件人', ''); +INSERT INTO `tbl_platform_config` VALUES (20, 'email_auth_code', '邮件发送端-授权码', ''); +INSERT INTO `tbl_platform_config` VALUES (21, 'email_smtp_host', '邮件发送端-SMTP服务器', ''); +INSERT INTO `tbl_platform_config` VALUES (22, 'checkcode_flag', '验证码启用标记', '1'); +INSERT INTO `tbl_platform_config` VALUES (23, 'app_version', '手机端版本', ''); + +-- ---------------------------- +-- Table structure for tbl_production_order +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_production_order`; +CREATE TABLE `tbl_production_order` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `order_number` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '工单号', + `source_type` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '来源类型(销售订单/手工备货)', + `source_id` bigint NULL DEFAULT NULL COMMENT '来源单据id(销售订单depot_head.id)', + `source_number` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '来源单据号(销售订单号)', + `product_material_id` bigint NULL DEFAULT NULL COMMENT '待包装产品商品id', + `product_material_extend_id` bigint NULL DEFAULT NULL COMMENT '待包装产品扩展id', + `product_sku` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '待包装产品多属性', + `bom_id` bigint NULL DEFAULT NULL COMMENT '包装BOM id', + `output_material_id` bigint NULL DEFAULT NULL COMMENT '成品SKU商品id', + `output_material_extend_id` bigint NULL DEFAULT NULL COMMENT '成品扩展id', + `output_sku` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '成品多属性', + `order_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '工单数量(待包装产品)', + `output_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '预计成品数量', + `finished_quantity` decimal(24, 6) NULL DEFAULT 0.000000 COMMENT '已完工良品数', + `plan_start_date` datetime(0) NULL DEFAULT NULL COMMENT '计划开工日期', + `plan_end_date` datetime(0) NULL DEFAULT NULL COMMENT '计划完工日期', + `actual_start_date` datetime(0) NULL DEFAULT NULL COMMENT '实际开工日期', + `actual_end_date` datetime(0) NULL DEFAULT NULL COMMENT '实际完工日期', + `priority` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '优先级,0普通、1紧急', + `status` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '状态,0已创建、1已下达、2生产中、3已完工、4已关闭', + `audit_by` bigint NULL DEFAULT NULL COMMENT '审批人', + `audit_time` datetime(0) NULL DEFAULT NULL COMMENT '审批时间', + `release_by` bigint NULL DEFAULT NULL COMMENT '下达人', + `release_time` datetime(0) NULL DEFAULT NULL COMMENT '下达时间', + `close_reason` varchar(500) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '关闭原因', + `remark` varchar(1000) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '备注', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `creator` bigint NULL DEFAULT NULL COMMENT '创建人', + `tenant_id` bigint NULL DEFAULT NULL COMMENT '租户id', + `delete_flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '删除标记,0未删除,1删除', + PRIMARY KEY (`id`) USING BTREE, + INDEX `order_number`(`order_number`) USING BTREE, + INDEX `source_number`(`source_number`) USING BTREE, + INDEX `status`(`status`) USING BTREE, + INDEX `tenant_id`(`tenant_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 12 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '生产工单主表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_production_order +-- ---------------------------- +INSERT INTO `tbl_production_order` VALUES (11, 'GD20260918122018493', '销售订单', 1719, 'XSDD00000001726', 703, 123, NULL, 18, 703, 123, NULL, 10000.000000, 10000.000000, 0.000000, '2026-09-18 00:00:00', '2026-09-25 00:00:00', NULL, NULL, '0', '1', 63, '2026-09-18 12:22:55', 63, '2026-09-18 12:22:55', NULL, '', '2026-09-18 12:20:19', 63, NULL, '0'); + +-- ---------------------------- +-- Table structure for tbl_production_order_log +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_production_order_log`; +CREATE TABLE `tbl_production_order_log` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `order_id` bigint NULL DEFAULT NULL COMMENT '工单id', + `order_number` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '工单号', + `operation_type` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '操作类型(创建/修改/审批下达/开工/生成领料/发料/完工/关闭等)', + `operation_desc` varchar(1000) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '操作描述', + `operator` bigint NULL DEFAULT NULL COMMENT '操作人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '操作时间', + `tenant_id` bigint NULL DEFAULT NULL COMMENT '租户id', + PRIMARY KEY (`id`) USING BTREE, + INDEX `order_id`(`order_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 59 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '工单操作日志表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_production_order_log +-- ---------------------------- +INSERT INTO `tbl_production_order_log` VALUES (53, 11, 'GD20260918122018493', '创建工单', '创建生产工单,数量:10000', 63, '2026-09-18 12:20:19', NULL); +INSERT INTO `tbl_production_order_log` VALUES (54, 11, 'GD20260918122018493', '审批下达', '工单审批通过并下达', 63, '2026-09-18 12:22:55', NULL); +INSERT INTO `tbl_production_order_log` VALUES (55, 11, 'GD20260918122018493', '生成领料单', '生成领料单[LL20260918122329111]', 63, '2026-09-18 12:23:29', NULL); +INSERT INTO `tbl_production_order_log` VALUES (56, 11, 'GD20260918122018493', '领料驳回', '领料单[LL20260918122329111]被驳回:11', 63, '2026-09-18 12:31:51', NULL); +INSERT INTO `tbl_production_order_log` VALUES (57, 11, 'GD20260918122018493', '生成领料单', '生成领料单[LL20260918123156921]', 63, '2026-09-18 12:31:57', NULL); +INSERT INTO `tbl_production_order_log` VALUES (58, 11, 'GD20260918122018493', '领料发料', '领料单[LL20260918123156921]确认发料,出库单号[LL20260924134027104]', 63, '2026-09-24 13:40:27', NULL); + +-- ---------------------------- +-- Table structure for tbl_production_report +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_production_report`; +CREATE TABLE `tbl_production_report` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `report_number` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '报告号', + `order_id` bigint NULL DEFAULT NULL COMMENT '工单id', + `order_number` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '工单号', + `finished_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '实际良品数', + `defect_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '不良品数', + `qualified_flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '质检结果,0未检、1合格、2不合格', + `depot_id` bigint NULL DEFAULT NULL COMMENT '入库仓库id', + `in_number` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '生产入库单号', + `audit_status` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '审核状态,0待审核、1已审核、2已驳回', + `audit_by` bigint NULL DEFAULT NULL COMMENT '审核人', + `audit_time` datetime(0) NULL DEFAULT NULL COMMENT '审核时间', + `report_by` bigint NULL DEFAULT NULL COMMENT '报工人', + `report_date` datetime(0) NULL DEFAULT NULL COMMENT '报工日期', + `remark` varchar(1000) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '备注', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `creator` bigint NULL DEFAULT NULL COMMENT '创建人', + `tenant_id` bigint NULL DEFAULT NULL COMMENT '租户id', + `delete_flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '删除标记,0未删除,1删除', + PRIMARY KEY (`id`) USING BTREE, + INDEX `report_number`(`report_number`) USING BTREE, + INDEX `order_id`(`order_id`) USING BTREE, + INDEX `audit_status`(`audit_status`) USING BTREE, + INDEX `tenant_id`(`tenant_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 10 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '完工报告主表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_production_report +-- ---------------------------- + +-- ---------------------------- +-- Table structure for tbl_production_report_item +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_production_report_item`; +CREATE TABLE `tbl_production_report_item` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `report_id` bigint NOT NULL COMMENT '完工报告id', + `material_id` bigint NOT NULL COMMENT '物料商品id', + `material_extend_id` bigint NULL DEFAULT NULL COMMENT '商品扩展id', + `material_sku` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '多属性', + `unit` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '单位', + `consumption_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '实际消耗数量', + `remark` varchar(500) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '备注', + `tenant_id` bigint NULL DEFAULT NULL COMMENT '租户id', + `delete_flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '删除标记,0未删除,1删除', + PRIMARY KEY (`id`) USING BTREE, + INDEX `report_id`(`report_id`) USING BTREE, + INDEX `material_id`(`material_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 23 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '完工报告物料消耗明细表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_production_report_item +-- ---------------------------- + +-- ---------------------------- +-- Table structure for tbl_production_requisition +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_production_requisition`; +CREATE TABLE `tbl_production_requisition` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `requisition_number` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '领料单号', + `order_id` bigint NULL DEFAULT NULL COMMENT '工单id', + `order_number` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '工单号', + `depot_id` bigint NULL DEFAULT NULL COMMENT '发料仓库id', + `status` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '状态,0待确认、1已发料、2已驳回', + `confirm_by` bigint NULL DEFAULT NULL COMMENT '确认人', + `confirm_time` datetime(0) NULL DEFAULT NULL COMMENT '确认时间', + `remark` varchar(1000) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '备注', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `creator` bigint NULL DEFAULT NULL COMMENT '创建人', + `tenant_id` bigint NULL DEFAULT NULL COMMENT '租户id', + `delete_flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '删除标记,0未删除,1删除', + PRIMARY KEY (`id`) USING BTREE, + INDEX `requisition_number`(`requisition_number`) USING BTREE, + INDEX `order_id`(`order_id`) USING BTREE, + INDEX `status`(`status`) USING BTREE, + INDEX `tenant_id`(`tenant_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 10 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '生产领料单主表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_production_requisition +-- ---------------------------- +INSERT INTO `tbl_production_requisition` VALUES (8, 'LL20260918122329111', 11, 'GD20260918122018493', 25, '2', NULL, NULL, '11', '2026-09-18 12:23:29', 63, NULL, '0'); +INSERT INTO `tbl_production_requisition` VALUES (9, 'LL20260918123156921', 11, 'GD20260918122018493', 25, '1', 63, '2026-09-24 13:40:27', NULL, '2026-09-18 12:31:57', 63, NULL, '0'); + +-- ---------------------------- +-- Table structure for tbl_production_requisition_item +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_production_requisition_item`; +CREATE TABLE `tbl_production_requisition_item` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `requisition_id` bigint NOT NULL COMMENT '领料单id', + `depot_id` bigint NULL DEFAULT NULL COMMENT '发料仓库id', + `material_id` bigint NOT NULL COMMENT '物料商品id', + `material_extend_id` bigint NULL DEFAULT NULL COMMENT '商品扩展id', + `material_sku` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '多属性', + `unit` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '单位', + `required_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '申请数量(BOM定额)', + `issued_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '实发数量', + `unit_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '参考单价', + `remark` varchar(500) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '备注', + `tenant_id` bigint NULL DEFAULT NULL COMMENT '租户id', + `delete_flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '删除标记,0未删除,1删除', + PRIMARY KEY (`id`) USING BTREE, + INDEX `requisition_id`(`requisition_id`) USING BTREE, + INDEX `material_id`(`material_id`) USING BTREE, + INDEX `idx_pri_depot_id`(`depot_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 27 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '生产领料单明细表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_production_requisition_item +-- ---------------------------- +INSERT INTO `tbl_production_requisition_item` VALUES (25, 8, 25, 705, 125, '', '件', 10000.000000, 10000.000000, NULL, NULL, NULL, '0'); +INSERT INTO `tbl_production_requisition_item` VALUES (26, 9, 25, 705, 125, '', '件', 10000.000000, 10000.000000, NULL, NULL, NULL, '0'); + +-- ---------------------------- +-- Table structure for tbl_role +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_role`; +CREATE TABLE `tbl_role` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `name` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '名称', + `type` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '类型', + `price_limit` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '价格屏蔽 1-屏蔽采购价 2-屏蔽零售价 3-屏蔽销售价', + `value` varchar(200) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '值', + `description` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '描述', + `enabled` bit(1) NULL DEFAULT NULL COMMENT '启用', + `sort` varchar(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '排序', + `tenant_id` bigint NULL DEFAULT NULL COMMENT '租户id', + `delete_flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '删除标记,0未删除,1删除', + PRIMARY KEY (`id`) USING BTREE, + INDEX `tenant_id`(`tenant_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 25 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '角色表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_role +-- ---------------------------- +INSERT INTO `tbl_role` VALUES (4, '管理员', '全部数据', NULL, NULL, NULL, b'1', NULL, NULL, '0'); +INSERT INTO `tbl_role` VALUES (10, '租户', '全部数据', NULL, NULL, '', b'1', NULL, NULL, '0'); +INSERT INTO `tbl_role` VALUES (16, '销售经理', '全部数据', NULL, NULL, 'ddd', b'1', NULL, 63, '0'); +INSERT INTO `tbl_role` VALUES (17, '销售代表', '个人数据', NULL, NULL, 'rrr', b'1', NULL, 63, '0'); +INSERT INTO `tbl_role` VALUES (21, 'admin', '全部数据', NULL, NULL, NULL, b'1', NULL, 63, '0'); +INSERT INTO `tbl_role` VALUES (22, '测试角色_UPD', '全部数据', NULL, NULL, NULL, b'1', NULL, NULL, '1'); +INSERT INTO `tbl_role` VALUES (23, 'system admin', '全部数据', NULL, NULL, NULL, b'1', NULL, NULL, '0'); +INSERT INTO `tbl_role` VALUES (24, 'system admin', '全部数据', NULL, NULL, NULL, b'1', NULL, NULL, '0'); + +-- ---------------------------- +-- Table structure for tbl_sale_shipment +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_sale_shipment`; +CREATE TABLE `tbl_sale_shipment` ( + `id` bigint NOT NULL AUTO_INCREMENT, + `shipment_number` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '发货通知单号', + `source_type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT 'sale' COMMENT '来源类型:sale销售出库、retail零售出库', + `delivery_plan_id` bigint NULL DEFAULT NULL COMMENT '交货计划id', + `delivery_plan_number` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '交货计划单号', + `sale_out_id` bigint NOT NULL COMMENT '销售出库单id', + `sale_out_number` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '销售出库单号', + `sale_order_number` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '关联销售订单/交货计划单号', + `customer_id` bigint NULL DEFAULT NULL COMMENT '客户id', + `status` varchar(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '0' COMMENT '状态:0待审批、1待发货、2已发货、3部分发货、4已驳回', + `planned_ship_time` datetime(0) NULL DEFAULT NULL COMMENT '计划发货时间', + `logistics_company` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '物流公司', + `logistics_no` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '物流单号', + `receiver` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '收货人', + `receiver_phone` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '收货电话', + `receiver_address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '收货地址', + `notice_remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '发货通知备注', + `approve_by` bigint NULL DEFAULT NULL COMMENT '审批人', + `approve_time` datetime(0) NULL DEFAULT NULL COMMENT '审批时间', + `approve_remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '审批备注', + `ship_by` bigint NULL DEFAULT NULL COMMENT '发货执行人', + `ship_time` datetime(0) NULL DEFAULT NULL COMMENT '发货时间', + `confirm_by` bigint NULL DEFAULT NULL COMMENT '确认人', + `confirm_time` datetime(0) NULL DEFAULT NULL COMMENT '确认时间', + `difference_remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '差异处理说明', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `creator` bigint NULL DEFAULT NULL COMMENT '创建人', + `tenant_id` bigint NULL DEFAULT NULL COMMENT '租户id', + `delete_flag` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '0' COMMENT '删除标记', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `uk_sale_shipment_number`(`shipment_number`) USING BTREE, + INDEX `idx_sale_shipment_sale_out_id`(`sale_out_id`) USING BTREE, + INDEX `idx_sale_shipment_sale_out_number`(`sale_out_number`) USING BTREE, + INDEX `idx_sale_shipment_status`(`status`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 18 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '销售发货通知/发货单' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_sale_shipment +-- ---------------------------- +INSERT INTO `tbl_sale_shipment` VALUES (16, 'FHTZ00000001718', 'sale', 6, 'JH00000001717', 1714, 'XSCK-3PH-APEC3-WC-OV-28', 'XSDD-42260529-3PH-APEC3-WC-OV', 90, '2', '2026-09-18 11:41:44', 'FEXD', 'FD10000001', 'Hank', '60001-1111', '5433 Grand Ave', NULL, 63, '2026-09-18 11:42:30', '审批通过', 63, '2026-09-18 11:42:37', 63, '2026-09-18 11:42:37', NULL, '2026-09-18 11:42:22', 63, NULL, '0'); +INSERT INTO `tbl_sale_shipment` VALUES (17, 'FHTZ00000001742', 'sale', 7, 'JH00000001741', 1720, 'XSCK00000001728', 'XSDD00000001726', 90, '2', '2026-09-18 16:35:21', NULL, NULL, NULL, NULL, NULL, NULL, 63, '2026-09-18 12:37:27', '审批通过', 63, '2026-09-18 12:38:02', 63, '2026-09-18 12:38:02', NULL, '2026-09-18 12:36:28', 63, NULL, '0'); + +-- ---------------------------- +-- Table structure for tbl_sale_shipment_item +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_sale_shipment_item`; +CREATE TABLE `tbl_sale_shipment_item` ( + `id` bigint NOT NULL AUTO_INCREMENT, + `shipment_id` bigint NOT NULL COMMENT '发货通知id', + `delivery_plan_item_id` bigint NULL DEFAULT NULL COMMENT '交货计划明细id', + `sale_out_item_id` bigint NOT NULL COMMENT '销售出库明细id', + `material_id` bigint NULL DEFAULT NULL COMMENT '商品id', + `material_extend_id` bigint NULL DEFAULT NULL COMMENT '商品扩展id', + `bar_code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '条码', + `material_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '商品名称', + `standard` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '规格', + `model` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '型号', + `unit` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '单位', + `batch_number` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '批号', + `sn_list` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '序列号', + `plan_quantity` decimal(24, 6) NULL DEFAULT 0.000000 COMMENT '通知发货数量', + `actual_quantity` decimal(24, 6) NULL DEFAULT 0.000000 COMMENT '实际发货数量', + `shipped_quantity` decimal(24, 6) NULL DEFAULT 0.000000 COMMENT '创建时已通知/已发货数量', + `difference_quantity` decimal(24, 6) NULL DEFAULT 0.000000 COMMENT '差异数量=实际-通知', + `depot_id` bigint NULL DEFAULT NULL COMMENT '出库仓库id', + `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注', + `tenant_id` bigint NULL DEFAULT NULL COMMENT '租户id', + `delete_flag` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '0' COMMENT '删除标记', + PRIMARY KEY (`id`) USING BTREE, + INDEX `idx_sale_shipment_item_shipment_id`(`shipment_id`) USING BTREE, + INDEX `idx_sale_shipment_item_sale_out_item_id`(`sale_out_item_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 16 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '销售发货明细' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_sale_shipment_item +-- ---------------------------- +INSERT INTO `tbl_sale_shipment_item` VALUES (12, 16, 5, 1519, 704, 124, '3PH-APEC3-WC', '3PH APEC3-WC', '3PH APEC3-WC', '3PH APEC3-WC', '件', NULL, NULL, 149.000000, 0.000000, 0.000000, -149.000000, 26, '', 63, '1'); +INSERT INTO `tbl_sale_shipment_item` VALUES (13, 16, 5, 1519, 704, 124, '3PH-APEC3-WC', '3PH APEC3-WC', '3PH APEC3-WC', '3PH APEC3-WC', '件', NULL, NULL, 149.000000, 149.000000, 0.000000, 0.000000, 26, '', 63, '0'); +INSERT INTO `tbl_sale_shipment_item` VALUES (14, 17, 6, 1525, 703, 123, '1PH-WS79', '1PH WS79', '1PH WS79', '1PH WS79', '件', NULL, NULL, 10000.000000, 0.000000, 0.000000, -10000.000000, 25, NULL, NULL, '1'); +INSERT INTO `tbl_sale_shipment_item` VALUES (15, 17, 6, 1525, 703, 123, '1PH-WS79', '1PH WS79', '1PH WS79', '1PH WS79', '件', NULL, NULL, 10000.000000, 10000.000000, 0.000000, 0.000000, 25, NULL, NULL, '0'); + +-- ---------------------------- +-- Table structure for tbl_sequence +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_sequence`; +CREATE TABLE `tbl_sequence` ( + `seq_name` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '序列名称', + `min_value` bigint NOT NULL COMMENT '最小值', + `max_value` bigint NOT NULL COMMENT '最大值', + `current_val` bigint NOT NULL COMMENT '当前值', + `increment_val` int NOT NULL DEFAULT 1 COMMENT '增长步数', + `remark` varchar(500) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '备注', + PRIMARY KEY (`seq_name`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '单据编号表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_sequence +-- ---------------------------- +INSERT INTO `tbl_sequence` VALUES ('depot_number_seq', 1, 999999999999999999, 1748, 1, '单据编号sequence'); + +-- ---------------------------- +-- Table structure for tbl_serial_number +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_serial_number`; +CREATE TABLE `tbl_serial_number` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `material_id` bigint NULL DEFAULT NULL COMMENT '产品表id', + `depot_id` bigint NULL DEFAULT NULL COMMENT '仓库id', + `serial_number` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '序列号', + `is_sell` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '是否卖出,0未卖出,1卖出', + `in_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '入库单价', + `remark` varchar(1024) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '备注', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `creator` bigint NULL DEFAULT NULL COMMENT '创建人', + `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间', + `updater` bigint NULL DEFAULT NULL COMMENT '更新人', + `in_bill_no` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '入库单号', + `out_bill_no` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '出库单号', + `tenant_id` bigint NULL DEFAULT NULL COMMENT '租户id', + `delete_flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '删除标记,0未删除,1删除', + PRIMARY KEY (`id`) USING BTREE, + INDEX `material_id`(`material_id`) USING BTREE, + INDEX `depot_id`(`depot_id`) USING BTREE, + INDEX `tenant_id`(`tenant_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '序列号表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_serial_number +-- ---------------------------- + +-- ---------------------------- +-- Table structure for tbl_smt_inbound_item +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_smt_inbound_item`; +CREATE TABLE `tbl_smt_inbound_item` ( + `id` bigint NOT NULL AUTO_INCREMENT, + `header_id` bigint NOT NULL, + `material_code` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT 'ERP??/????', + `material_name` varchar(200) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '????', + `specification` varchar(200) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '????', + `qty` decimal(24, 6) NOT NULL, + `unit_price` decimal(24, 6) NULL DEFAULT NULL, + `total_net_money` decimal(24, 6) NULL DEFAULT NULL, + `total_money` decimal(24, 6) NULL DEFAULT NULL, + `source_doc_no` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL, + `tenant_id` bigint NULL DEFAULT NULL, + `delete_flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0', + PRIMARY KEY (`id`) USING BTREE, + INDEX `idx_smt_inbound_header`(`header_id`) USING BTREE, + INDEX `idx_smt_inbound_code`(`material_code`) USING BTREE, + INDEX `idx_smt_inbound_tenant`(`tenant_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 768 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = 'SMT?????????' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_smt_inbound_item +-- ---------------------------- +INSERT INTO `tbl_smt_inbound_item` VALUES (615, 1272, 'C.4.T.0.00562', 'MD-4GVIII(VB)', 'MD-4GVIII(VB)', 50.000000, 324.000000, 14336.280000, 16200.000000, 'SH2503070002', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (616, 1273, 'C.3.T.0.00038', '三相四线多功能电能表T46(VJ)', 'DTSD1226-T46(VJ)', 1990.000000, 797.040000, 1403636.810000, 1586109.600000, 'SH2503210018', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (617, 1274, 'C.4.T.0.00654', 'MD-4G111(VF) 4G模块', 'MD-4G111(VF)', 1990.000000, 0.100000, 176.110000, 199.000000, 'SH2503260007', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (618, 1275, 'C.3.T.0.00036', '三相四线多功能电能表T46(VH)', 'DTSD1226-T46(VH)', 500.000000, 550.800000, 275400.000000, 275400.000000, 'SH2503280020', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (619, 1276, 'C.3.S.0.00020', '三相四线多功能电能表SXVI(VG)-新', 'DTSD1226-SXVI(VG)', 400.000000, 613.980000, 245592.000000, 245592.000000, 'SH2503280021', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (620, 1277, 'C.4.T.0.00654', 'MD-4G111(VF) 4G模块', 'MD-4G111(VF)', 8290.000000, 0.100000, 829.000000, 829.000000, 'SH2504010002', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (621, 1278, 'C.1.T.0.0004500005', '单相多功能电能表T49(VH)_(马来市场)', 'DDSD1226-T49(VH)', 8290.000000, 403.380000, 3344020.200000, 3344020.200000, 'SH2503310004', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (622, 1279, 'C.4.T.0.00553', 'MT-P109(VA)', 'MT-P109(VA)', 500.000000, 129.600000, 64800.000000, 64800.000000, 'SH2504010004', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (623, 1280, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 3024.000000, 481.950000, 1457416.800000, 1457416.800000, 'SH2505090009', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (624, 1281, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 336.000000, 481.950000, 161935.200000, 161935.200000, 'SH2505140012', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (625, 1282, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 1640.000000, 481.950000, 790398.000000, 790398.000000, 'SH2505140013', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (626, 1283, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 504.000000, 481.950000, 242902.800000, 242902.800000, 'SH2505220012', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (627, 1284, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 3696.000000, 481.950000, 1781287.200000, 1781287.200000, 'SH2505210003', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (628, 1285, 'C.4.T.0.00421', 'MD-LR62(VB)', 'MD-LR62(VB)', 170.000000, 334.692000, 56897.640000, 56897.640000, 'SH2505230003', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (629, 1286, 'C.4.T.0.00422', 'MD-LR63(VB)', 'MD-LR63(VB)', 100.000000, 1003.752000, 100375.200000, 100375.200000, 'SH2505230002', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (630, 1287, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 336.000000, 481.950000, 161935.200000, 161935.200000, 'SH2505270016', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (631, 1288, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 464.000000, 481.950000, 223624.800000, 223624.800000, 'SH2505280004', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (632, 1289, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 3464.000000, 481.950000, 1669474.800000, 1669474.800000, 'SH2506120013', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (633, 1290, 'C.4.T.0.00722', 'MD-RS178(VA) RS485分线器', 'MD-RS178(VA)', 1000.000000, 24.300000, 24300.000000, 24300.000000, 'SH2506190019', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (634, 1291, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 504.000000, 481.950000, 242902.800000, 242902.800000, 'SH2506200018', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (635, 1292, 'C.4.T.0.00421', 'MD-LR62(VB)', 'MD-LR62(VB)', 30.000000, 334.692000, 10040.760000, 10040.760000, 'SH2506230010', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (636, 1293, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 504.000000, 481.950000, 242902.800000, 242902.800000, 'SH2506240005', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (637, 1294, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 3360.000000, 481.950000, 1619352.000000, 1619352.000000, 'SH2506240004', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (638, 1295, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 5.000000, 481.950000, 2409.750000, 2409.750000, 'SH2507010002', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (639, 1296, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 363.000000, 481.950000, 174947.850000, 174947.850000, 'SH2507010002', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (640, 1297, 'C.4.T.0.00686', 'TC160(VA) 通讯模块供电盒', 'TC160(VA)', 50.000000, 132.840000, 6642.000000, 6642.000000, 'SH2507160005', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (641, 1298, 'C.3.T.0.00038', '三相四线多功能电能表T46(VJ)', 'DTSD1226-T46(VJ)', 4620.000000, 797.040000, 3682324.800000, 3682324.800000, 'SH2508130002', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (642, 1299, 'C.4.T.0.00654', 'MD-4G111(VF) 4G模块', 'MD-4G111(VF)', 4620.000000, 0.100000, 462.000000, 462.000000, 'SH2508130003', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (643, 1300, 'C.4.T.0.00654', 'MD-4G111(VF) 4G模块', 'MD-4G111(VF)', 5270.000000, 0.100000, 527.000000, 527.000000, 'SH2508140009', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (644, 1301, 'C.3.T.0.00038', '三相四线多功能电能表T46(VJ)', 'DTSD1226-T46(VJ)', 5270.000000, 797.040000, 4200400.800000, 4200400.800000, 'SH2508140008', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (645, 1302, 'C.3.T.0.00038', '三相四线多功能电能表T46(VJ)', 'DTSD1226-T46(VJ)', 110.000000, 797.040000, 87674.400000, 87674.400000, 'SH2508200016', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (646, 1303, 'C.3.S.0.00030', '三相四线多功能电能表SXVI(VK)-新', 'DTSD1226-SXVI(VK)', 2100.000000, 518.400000, 1088640.000000, 1088640.000000, 'SH2508200015', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (647, 1304, 'C.4.T.0.00654', 'MD-4G111(VF) 4G模块', 'MD-4G111(VF)', 110.000000, 0.100000, 11.000000, 11.000000, 'SH2508200018', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (648, 1305, 'C.3.S.0.00030', '三相四线多功能电能表SXVI(VK)-新', 'DTSD1226-SXVI(VK)', 2900.000000, 518.400000, 1503360.000000, 1503360.000000, 'SH2509050002', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (649, 1306, 'C.4.T.0.00654', 'MD-4G111(VF) 4G模块', 'MD-4G111(VF)', 10000.000000, 0.100000, 1000.000000, 1000.000000, 'SH2509250002', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (650, 1307, 'C.1.T.0.0004500005', '单相多功能电能表T49(VH)_(马来市场)', 'DDSD1226-T49(VH)', 10000.000000, 403.380000, 4033800.000000, 4033800.000000, 'SH2509250001', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (651, 1308, 'C.4.T.0.0068900002', 'MD-RS114(VB) 基于RS485的MODBS TCPMODBS RTUASVII转换模块_(DZG)', 'MD-RS114(VB)', 100.000000, 142.560000, 14256.000000, 14256.000000, 'SH2510170019', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (652, 1309, 'C.3.S.0.00026', '三相四线多功能电能表SXVI(VH)-新', 'DTSD1226-SXVI(VH)', 120.000000, 690.120000, 82814.400000, 82814.400000, 'SH2510170020', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (653, 1310, 'C.1.T.0.0004500005', '单相多功能电能表T49(VH)_(马来市场)', 'DDSD1226-T49(VH)', 516.000000, 403.380000, 208144.080000, 208144.080000, 'SH2510290008', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (654, 1311, 'C.1.T.0.0004500005', '单相多功能电能表T49(VH)_(马来市场)', 'DDSD1226-T49(VH)', 9484.000000, 403.380000, 3825655.920000, 3825655.920000, 'SH2510290008', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (655, 1312, 'C.4.T.0.00654', 'MD-4G111(VF) 4G模块', 'MD-4G111(VF)', 9990.000000, 0.100000, 999.000000, 999.000000, 'SH2510290009', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (656, 1313, 'C.4.T.0.00654', 'MD-4G111(VF) 4G模块', 'MD-4G111(VF)', 10.000000, 0.100000, 1.000000, 1.000000, 'SH2510290009', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (657, 1314, 'C.3.S.0.00030', '三相四线多功能电能表SXVI(VK)-新', 'DTSD1226-SXVI(VK)', 2970.000000, 518.400000, 1539648.000000, 1539648.000000, 'SH2511140012', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (658, 1315, 'C.1.T.0.0004500005', '单相多功能电能表T49(VH)_(马来市场)', 'DDSD1226-T49(VH)', 4200.000000, 403.380000, 1694196.000000, 1694196.000000, 'SH2511210018', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (659, 1316, 'C.4.T.0.00654', 'MD-4G111(VF) 4G模块', 'MD-4G111(VF)', 4200.000000, 0.100000, 420.000000, 420.000000, 'SH2511210019', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (660, 1317, 'C.3.T.0.00038', '三相四线多功能电能表T46(VJ)', 'DTSD1226-T46(VJ)', 5040.000000, 797.040000, 4017081.600000, 4017081.600000, 'SH2511240013', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (661, 1318, 'C.4.T.0.00654', 'MD-4G111(VF) 4G模块', 'MD-4G111(VF)', 5040.000000, 0.100000, 504.000000, 504.000000, 'SH2511240014', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (662, 1319, 'C.3.S.0.00030', '三相四线多功能电能表SXVI(VK)-新', 'DTSD1226-SXVI(VK)', 30.000000, 518.400000, 15552.000000, 15552.000000, 'SH2511250009', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (663, 1320, 'C.3.T.0.00038', '三相四线多功能电能表T46(VJ)', 'DTSD1226-T46(VJ)', 4960.000000, 797.040000, 3953318.400000, 3953318.400000, 'SH2511280023', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (664, 1321, 'C.4.T.0.00654', 'MD-4G111(VF) 4G模块', 'MD-4G111(VF)', 5040.000000, 0.100000, 504.000000, 504.000000, 'SH2512030005', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (665, 1321, 'C.4.T.0.00654', 'MD-4G111(VF) 4G模块', 'MD-4G111(VF)', 4960.000000, 0.100000, 496.000000, 496.000000, 'SH2512030005', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (666, 1322, 'C.1.T.0.0004500005', '单相多功能电能表T49(VH)_(马来市场)', 'DDSD1226-T49(VH)', 10000.000000, 403.380000, 4033800.000000, 4033800.000000, 'SH2512030004', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (667, 1323, 'C.3.T.0.00038', '三相四线多功能电能表T46(VJ)', 'DTSD1226-T46(VJ)', 5040.000000, 797.040000, 4017081.600000, 4017081.600000, 'SH2512090010', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (668, 1324, 'C.4.T.0.00654', 'MD-4G111(VF) 4G模块', 'MD-4G111(VF)', 5040.000000, 0.100000, 504.000000, 504.000000, 'SH2512090009', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (669, 1325, 'C.3.T.0.00038', '三相四线多功能电能表T46(VJ)', 'DTSD1226-T46(VJ)', 2730.000000, 797.040000, 2175919.200000, 2175919.200000, 'SH2512120024', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (670, 1326, 'C.3.S.0.00030', '三相四线多功能电能表SXVI(VK)-新', 'DTSD1226-SXVI(VK)', 1580.000000, 518.400000, 819072.000000, 819072.000000, 'SH2512120023', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (671, 1327, 'C.4.T.0.00654', 'MD-4G111(VF) 4G模块', 'MD-4G111(VF)', 2730.000000, 0.100000, 273.000000, 273.000000, 'SH2512160015', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (672, 1328, 'C.4.T.0.00654', 'MD-4G111(VF) 4G模块', 'MD-4G111(VF)', 4960.000000, 0.100000, 496.000000, 496.000000, 'SH2512160014', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (673, 1329, 'C.4.T.0.00654', 'MD-4G111(VF) 4G模块', 'MD-4G111(VF)', 4713.000000, 0.100000, 471.300000, 471.300000, 'SH2512290007', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (674, 1330, 'C.3.T.0.00038', '三相四线多功能电能表T46(VJ)', 'DTSD1226-T46(VJ)', 4713.000000, 797.040000, 3756449.520000, 3756449.520000, 'SH2512290006', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (675, 1331, 'C.3.S.0.00030', '三相四线多功能电能表SXVI(VK)-新', 'DTSD1226-SXVI(VK)', 320.000000, 518.400000, 165888.000000, 165888.000000, 'SH2512290008', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (676, 1332, 'C.3.S.0.00030', '三相四线多功能电能表SXVI(VK)-新', 'DTSD1226-SXVI(VK)', 1000.000000, 693.360000, 693360.000000, 693360.000000, 'SH2601040003', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (677, 1333, 'C.3.S.0.00030', '三相四线多功能电能表SXVI(VK)-新', 'DTSD1226-SXVI(VK)', 100.000000, 518.400000, 51840.000000, 51840.000000, 'SH2512290008', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (678, 1334, 'C.3.S.0.00030', '三相四线多功能电能表SXVI(VK)-新', 'DTSD1226-SXVI(VK)', 2000.000000, 518.400000, 1036800.000000, 1036800.000000, 'SH2601200021', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (679, 1335, 'C.3.S.0.00030', '三相四线多功能电能表SXVI(VK)-新', 'DTSD1226-SXVI(VK)', 70.000000, 518.400000, 36288.000000, 36288.000000, 'SH2601200021', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (680, 1336, 'C.1.C.2.00023', '单相有功电能表C8(VG)', 'DDS1226-C8(VG)', 3240.000000, 80.190000, 259815.600000, 259815.600000, 'SH2604100007', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (681, 1337, 'C.1.C.2.00023', '单相有功电能表C8(VG)', 'DDS1226-C8(VG)', 3170.000000, 80.190000, 254202.300000, 254202.300000, 'SH2604100007', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (682, 1338, 'C.1.C.2.00023', '单相有功电能表C8(VG)', 'DDS1226-C8(VG)', 3850.000000, 80.190000, 308731.500000, 308731.500000, 'SH2604100007', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (683, 1339, 'C.1.C.2.00023', '单相有功电能表C8(VG)', 'DDS1226-C8(VG)', 540.000000, 80.190000, 43302.600000, 43302.600000, 'SH2604100007', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (684, 1340, 'C.1.C.2.00023', '单相有功电能表C8(VG)', 'DDS1226-C8(VG)', 540.000000, 80.190000, 43302.600000, 43302.600000, 'SH2604150004', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (685, 1341, 'C.1.C.2.00023', '单相有功电能表C8(VG)', 'DDS1226-C8(VG)', 1080.000000, 80.190000, 86605.200000, 86605.200000, 'SH2604150004', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (686, 1342, 'C.1.C.2.00023', '单相有功电能表C8(VG)', 'DDS1226-C8(VG)', 3780.000000, 80.190000, 303118.200000, 303118.200000, 'SH2604150004', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (687, 1343, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 1680.000000, 481.950000, 809676.000000, 809676.000000, 'SH2604150003', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (688, 1344, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 3696.000000, 481.950000, 1781287.200000, 1781287.200000, 'SH2604150002', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (689, 1345, 'C.1.C.2.00023', '单相有功电能表C8(VG)', 'DDS1226-C8(VG)', 2700.000000, 80.190000, 216513.000000, 216513.000000, 'SH2604160008', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (690, 1346, 'C.1.C.2.00023', '单相有功电能表C8(VG)', 'DDS1226-C8(VG)', 4320.000000, 80.190000, 346420.800000, 346420.800000, 'SH2604160008', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (691, 1347, 'C.1.C.2.00023', '单相有功电能表C8(VG)', 'DDS1226-C8(VG)', 4860.000000, 80.190000, 389723.400000, 389723.400000, 'SH2604160008', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (692, 1348, 'C.1.C.2.00023', '单相有功电能表C8(VG)', 'DDS1226-C8(VG)', 12420.000000, 80.190000, 995959.800000, 995959.800000, 'SH2604210010', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (693, 1349, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 3360.000000, 481.950000, 1619352.000000, 1619352.000000, 'SH2604220010', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (694, 1350, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 3528.000000, 481.950000, 1700319.600000, 1700319.600000, 'SH2604220011', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (695, 1351, 'C.1.C.2.00023', '单相有功电能表C8(VG)', 'DDS1226-C8(VG)', 540.000000, 80.190000, 43302.600000, 43302.600000, 'SH2604210010', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (696, 1352, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 168.000000, 481.950000, 80967.600000, 80967.600000, 'SH2604220011', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (697, 1353, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 168.000000, 481.950000, 80967.600000, 80967.600000, 'SH2604220011', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (698, 1354, 'C.1.C.2.00023', '单相有功电能表C8(VG)', 'DDS1226-C8(VG)', 8960.000000, 80.190000, 718502.400000, 718502.400000, 'SH2604220009', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (699, 1355, 'C.1.C.2.00023', '单相有功电能表C8(VG)', 'DDS1226-C8(VG)', 7570.000000, 80.190000, 607038.300000, 607038.300000, 'SH2604240012', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (700, 1356, 'C.1.C.2.00023', '单相有功电能表C8(VG)', 'DDS1226-C8(VG)', 4310.000000, 80.190000, 345618.900000, 345618.900000, 'SH2604240012', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (701, 1357, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 149.000000, 481.950000, 71810.550000, 71810.550000, 'SH2604240013', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (702, 1358, 'C.1.C.2.00023', '单相有功电能表C8(VG)', 'DDS1226-C8(VG)', 4860.000000, 80.190000, 389723.400000, 389723.400000, 'SH2604300001', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (703, 1359, 'C.1.C.2.00023', '单相有功电能表C8(VG)', 'DDS1226-C8(VG)', 7020.000000, 80.190000, 562933.800000, 562933.800000, 'SH2604300001', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (704, 1360, 'C.1.C.2.00023', '单相有功电能表C8(VG)', 'DDS1226-C8(VG)', 7020.000000, 80.190000, 562933.800000, 562933.800000, 'SH2605080017', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (705, 1361, 'C.1.C.2.00023', '单相有功电能表C8(VG)', 'DDS1226-C8(VG)', 4860.000000, 80.190000, 389723.400000, 389723.400000, 'SH2605080017', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (706, 1362, 'C.1.C.2.00023', '单相有功电能表C8(VG)', 'DDS1226-C8(VG)', 5400.000000, 80.190000, 433026.000000, 433026.000000, 'SH2605140004', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (707, 1363, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 840.000000, 481.950000, 404838.000000, 404838.000000, 'SH2605180007', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (708, 1364, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 168.000000, 481.950000, 80967.600000, 80967.600000, 'SH2605180007', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (709, 1365, 'C.1.C.2.00023', '单相有功电能表C8(VG)', 'DDS1226-C8(VG)', 540.000000, 80.190000, 43302.600000, 43302.600000, 'SH2605180005', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (710, 1366, 'C.1.C.2.00023', '单相有功电能表C8(VG)', 'DDS1226-C8(VG)', 12400.000000, 80.190000, 994356.000000, 994356.000000, 'SH2605180006', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (711, 1367, 'C.1.C.2.00023', '单相有功电能表C8(VG)', 'DDS1226-C8(VG)', 8420.000000, 80.190000, 675199.800000, 675199.800000, 'SH2605180005', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (712, 1368, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 1848.000000, 481.950000, 890643.600000, 890643.600000, 'SH2605190018', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (713, 1369, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 1008.000000, 481.950000, 485805.600000, 485805.600000, 'SH2605190018', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (714, 1370, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 504.000000, 481.950000, 242902.800000, 242902.800000, 'SH2605190018', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (715, 1371, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 3360.000000, 481.950000, 1619352.000000, 1619352.000000, 'SH2605280028', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (716, 1372, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 168.000000, 481.950000, 80967.600000, 80967.600000, 'SH2606040013', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (717, 1373, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 2432.000000, 481.950000, 1172102.400000, 1172102.400000, 'SH2606040013', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (718, 1374, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 44.000000, 481.950000, 21205.800000, 21205.800000, 'SH2606080003', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (719, 1375, 'C.1.C.2.00021', '单相有功电能表C8(VD)', 'DDS1226-C8(VD)', 4320.000000, 85.860000, 370915.200000, 370915.200000, 'SH2606170024', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (720, 1376, 'C.1.C.2.00021', '单相有功电能表C8(VD)', 'DDS1226-C8(VD)', 5940.000000, 85.860000, 510008.400000, 510008.400000, 'SH2606170024', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (721, 1377, 'C.1.C.2.00021', '单相有功电能表C8(VD)', 'DDS1226-C8(VD)', 3780.000000, 85.860000, 324550.800000, 324550.800000, 'SH2606230001', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (722, 1378, 'C.1.C.2.00021', '单相有功电能表C8(VD)', 'DDS1226-C8(VD)', 1080.000000, 85.860000, 92728.800000, 92728.800000, 'SH2606230001', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (723, 1379, 'C.1.C.2.00021', '单相有功电能表C8(VD)', 'DDS1226-C8(VD)', 2215.000000, 85.860000, 190179.900000, 190179.900000, 'SH2606230001', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (724, 1380, 'C.1.C.2.00021', '单相有功电能表C8(VD)', 'DDS1226-C8(VD)', 2160.000000, 85.860000, 185457.600000, 185457.600000, 'SH2606230001', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (725, 1381, 'C.1.C.2.00021', '单相有功电能表C8(VD)', 'DDS1226-C8(VD)', 505.000000, 85.860000, 43359.300000, 43359.300000, 'SH2606230001', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (726, 1382, 'C.4.T.0.00547', 'MT-3NSXL(VC)RF通讯模块', 'MT-3NSXL(VC)', 1224.000000, 0.100000, 122.400000, 122.400000, 'SH2606290012', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (727, 1383, 'C.1.T.0.00032', '单相多功能电能表T49(VB)', 'DDSD1226-T49(VB)', 1260.000000, 218.700000, 275562.000000, 275562.000000, 'SH2606290005', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (728, 1384, 'C.4.T.0.00547', 'MT-3NSXL(VC)RF通讯模块', 'MT-3NSXL(VC)', 8160.000000, 0.100000, 816.000000, 816.000000, 'SH2606290006', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (729, 1385, 'C.1.T.0.00032', '单相多功能电能表T49(VB)', 'DDSD1226-T49(VB)', 6720.000000, 218.700000, 1469664.000000, 1469664.000000, 'SH2606290005', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (730, 1386, 'C.3.T.0.00030', '三相四线多功能电能表T46(VC)', 'DTSD1226-T46(VC)', 1050.000000, 486.000000, 510300.000000, 510300.000000, 'SH2606290011', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (731, 1387, 'C.4.T.0.00547', 'MT-3NSXL(VC)RF通讯模块', 'MT-3NSXL(VC)', 2652.000000, 0.100000, 265.200000, 265.200000, 'SH2607020014', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (732, 1388, 'C.4.T.0.00547', 'MT-3NSXL(VC)RF通讯模块', 'MT-3NSXL(VC)', 5100.000000, 0.100000, 510.000000, 510.000000, 'SH2607020012', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (733, 1389, 'C.1.T.0.00032', '单相多功能电能表T49(VB)', 'DDSD1226-T49(VB)', 2100.000000, 218.700000, 459270.000000, 459270.000000, 'SH2607020011', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (734, 1390, 'C.1.T.0.00032', '单相多功能电能表T49(VB)', 'DDSD1226-T49(VB)', 2940.000000, 218.700000, 642978.000000, 642978.000000, 'SH2607020011', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (735, 1391, 'C.3.T.0.00030', '三相四线多功能电能表T46(VC)', 'DTSD1226-T46(VC)', 2520.000000, 486.000000, 1224720.000000, 1224720.000000, 'SH2607020013', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (736, 1392, 'C.3.T.0.00030', '三相四线多功能电能表T46(VC)', 'DTSD1226-T46(VC)', 840.000000, 486.000000, 408240.000000, 408240.000000, 'SH2607130003', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (737, 1393, 'C.1.T.0.00032', '单相多功能电能表T49(VB)', 'DDSD1226-T49(VB)', 3780.000000, 218.700000, 826686.000000, 826686.000000, 'SH2607130001', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (738, 1394, 'C.1.T.0.00032', '单相多功能电能表T49(VB)', 'DDSD1226-T49(VB)', 2940.000000, 218.700000, 642978.000000, 642978.000000, 'SH2607130001', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (739, 1395, 'C.4.T.0.00547', 'MT-3NSXL(VC)RF通讯模块', 'MT-3NSXL(VC)', 4088.000000, 0.100000, 408.800000, 408.800000, 'SH2607130002', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (740, 1396, 'C.4.T.0.00547', 'MT-3NSXL(VC)RF通讯模块', 'MT-3NSXL(VC)', 2652.000000, 0.100000, 265.200000, 265.200000, 'SH2607130002', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (741, 1397, 'C.4.T.0.00547', 'MT-3NSXL(VC)RF通讯模块', 'MT-3NSXL(VC)', 816.000000, 0.100000, 81.600000, 81.600000, 'SH2607130004', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (742, 1398, 'C.4.T.0.00547', 'MT-3NSXL(VC)RF通讯模块', 'MT-3NSXL(VC)', 816.000000, 0.100000, 81.600000, 81.600000, 'SH2607130004', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (743, 1399, 'C.1.T.0.00032', '单相多功能电能表T49(VB)', 'DDSD1226-T49(VB)', 260.000000, 218.700000, 56862.000000, 56862.000000, 'SH2607130001', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (744, 1400, 'C.3.T.0.00030', '三相四线多功能电能表T46(VC)', 'DTSD1226-T46(VC)', 630.000000, 486.000000, 306180.000000, 306180.000000, 'SH2607130003', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (745, 1401, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 3360.000000, 481.950000, 1619352.000000, 1619352.000000, 'SH2607140004', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (746, 1402, 'C.3.T.0.00030', '三相四线多功能电能表T46(VC)', 'DTSD1226-T46(VC)', 1680.000000, 486.000000, 816480.000000, 816480.000000, 'SH2607140008', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (747, 1403, 'C.3.T.0.00030', '三相四线多功能电能表T46(VC)', 'DTSD1226-T46(VC)', 2520.000000, 486.000000, 1224720.000000, 1224720.000000, 'SH2607140008', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (748, 1404, 'C.4.T.0.00547', 'MT-3NSXL(VC)RF通讯模块', 'MT-3NSXL(VC)', 5100.000000, 0.100000, 510.000000, 510.000000, 'SH2607140009', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (749, 1405, 'C.3.T.0.00030', '三相四线多功能电能表T46(VC)', 'DTSD1226-T46(VC)', 840.000000, 486.000000, 408240.000000, 408240.000000, 'SH2607140008', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (750, 1406, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 3024.000000, 481.950000, 1457416.800000, 1457416.800000, 'SH2607160019', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (751, 1407, 'C.4.T.0.00547', 'MT-3NSXL(VC)RF通讯模块', 'MT-3NSXL(VC)', 3852.000000, 0.100000, 385.200000, 385.200000, 'SH2607160021', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (752, 1408, 'C.3.C.2.00025', '三相四线多功能电能表CXVI(VA)-新', 'DTSD1226-CXVI(VA)', 336.000000, 481.950000, 161935.200000, 161935.200000, 'SH2607160019', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (753, 1409, 'C.3.T.0.00030', '三相四线多功能电能表T46(VC)', 'DTSD1226-T46(VC)', 1050.000000, 486.000000, 510300.000000, 510300.000000, 'SH2607160020', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (754, 1410, 'C.3.T.0.00030', '三相四线多功能电能表T46(VC)', 'DTSD1226-T46(VC)', 210.000000, 486.000000, 102060.000000, 102060.000000, 'SH2607160020', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (755, 1411, 'C.3.T.0.00030', '三相四线多功能电能表T46(VC)', 'DTSD1226-T46(VC)', 210.000000, 486.000000, 102060.000000, 102060.000000, 'SH2607160020', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (756, 1412, 'C.3.T.0.00030', '三相四线多功能电能表T46(VC)', 'DTSD1226-T46(VC)', 2100.000000, 486.000000, 1020600.000000, 1020600.000000, 'SH2607160020', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (757, 1413, 'C.3.T.0.00030', '三相四线多功能电能表T46(VC)', 'DTSD1226-T46(VC)', 210.000000, 486.000000, 102060.000000, 102060.000000, 'SH2607160020', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (758, 1414, 'C.3.T.0.00030', '三相四线多功能电能表T46(VC)', 'DTSD1226-T46(VC)', 600.000000, 486.000000, 291600.000000, 291600.000000, 'SH2607160020', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (759, 1415, 'C.1.T.0.00032', '单相多功能电能表T49(VB)', 'DDSD1226-T49(VB)', 1260.000000, 218.700000, 275562.000000, 275562.000000, 'SH2607220001', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (760, 1416, 'C.4.T.0.00547', 'MT-3NSXL(VC)RF通讯模块', 'MT-3NSXL(VC)', 10200.000000, 0.100000, 1020.000000, 1020.000000, 'SH2607220002', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (761, 1417, 'C.1.T.0.00032', '单相多功能电能表T49(VB)', 'DDSD1226-T49(VB)', 5880.000000, 218.700000, 1285956.000000, 1285956.000000, 'SH2607220001', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (762, 1418, 'C.1.T.0.00032', '单相多功能电能表T49(VB)', 'DDSD1226-T49(VB)', 2520.000000, 218.700000, 551124.000000, 551124.000000, 'SH2607220001', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (763, 1419, 'C.1.T.0.00032', '单相多功能电能表T49(VB)', 'DDSD1226-T49(VB)', 420.000000, 218.700000, 91854.000000, 91854.000000, 'SH2607220001', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (764, 1420, 'C.4.T.0.00547', 'MT-3NSXL(VC)RF通讯模块', 'MT-3NSXL(VC)', 8160.000000, 0.100000, 816.000000, 816.000000, 'SH2608060003', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (765, 1421, 'C.1.T.0.00032', '单相多功能电能表T49(VB)', 'DDSD1226-T49(VB)', 420.000000, 218.700000, 91854.000000, 91854.000000, 'SH2608060001', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (766, 1422, 'C.1.T.0.00032', '单相多功能电能表T49(VB)', 'DDSD1226-T49(VB)', 9500.000000, 218.700000, 2077650.000000, 2077650.000000, 'SH2608060001', 63, '0'); +INSERT INTO `tbl_smt_inbound_item` VALUES (767, 1423, 'C.4.T.0.00547', 'MT-3NSXL(VC)RF通讯模块', 'MT-3NSXL(VC)', 1836.000000, 0.100000, 183.600000, 183.600000, 'SH2608060003', 63, '0'); + +-- ---------------------------- +-- Table structure for tbl_supplier +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_supplier`; +CREATE TABLE `tbl_supplier` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `supplier` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '供应商名称', + `contacts` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '联系人', + `phone_num` varchar(30) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '联系电话', + `email` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '电子邮箱', + `description` varchar(500) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '备注', + `isystem` tinyint NULL DEFAULT NULL COMMENT '是否系统自带 0==系统 1==非系统', + `type` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '类型', + `category_id` bigint NULL DEFAULT NULL, + `enabled` bit(1) NULL DEFAULT NULL COMMENT '启用', + `advance_in` decimal(24, 6) NULL DEFAULT 0.000000 COMMENT '预收款', + `begin_need_get` decimal(24, 6) NULL DEFAULT NULL COMMENT '期初应收', + `begin_need_pay` decimal(24, 6) NULL DEFAULT NULL COMMENT '期初应付', + `all_need_get` decimal(24, 6) NULL DEFAULT NULL COMMENT '累计应收', + `all_need_pay` decimal(24, 6) NULL DEFAULT NULL COMMENT '累计应付', + `fax` varchar(30) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '传真', + `telephone` varchar(30) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '手机', + `address` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '地址', + `tax_num` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '纳税人识别号', + `bank_name` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '开户行', + `account_number` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '账号', + `tax_rate` decimal(24, 6) NULL DEFAULT NULL COMMENT '税率', + `sort` varchar(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '排序', + `creator` bigint NULL DEFAULT NULL COMMENT '操作员', + `tenant_id` bigint NULL DEFAULT NULL COMMENT '租户id', + `delete_flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '删除标记,0未删除,1删除', + PRIMARY KEY (`id`) USING BTREE, + INDEX `type`(`type`) USING BTREE, + INDEX `tenant_id`(`tenant_id`) USING BTREE, + INDEX `idx_category_id`(`category_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 91 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '供应商/客户信息表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_supplier +-- ---------------------------- +INSERT INTO `tbl_supplier` VALUES (89, '浙江瑞银电子有限公司', '', '', '', 'Excel初始化默认供应商', 1, '供应商', NULL, b'1', 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, '', '', '', '', '', '', 0.000000, '1', 63, 63, '0'); +INSERT INTO `tbl_supplier` VALUES (90, 'TNB', '', '', '', 'Stock Status客户', 1, '客户', NULL, b'1', 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, '', '', '', '', '', '', 10.000000, '2', 63, 63, '0'); + +-- ---------------------------- +-- Table structure for tbl_sys_dict_data +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_sys_dict_data`; +CREATE TABLE `tbl_sys_dict_data` ( + `dict_code` bigint NOT NULL AUTO_INCREMENT COMMENT '字典编码', + `dict_sort` int NULL DEFAULT 0 COMMENT '字典排序', + `dict_label` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '字典标签', + `dict_value` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '字典键值', + `dict_type` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '字典类型', + `css_class` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '样式属性(其他样式扩展)', + `list_class` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '表格回显样式', + `is_default` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT 'N' COMMENT '是否默认(Y是 N否)', + `status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '状态(0正常 1停用)', + `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '创建者', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '更新者', + `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间', + `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + `delete_flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '删除标记,0未删除,1删除', + PRIMARY KEY (`dict_code`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 16 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '字典数据表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_sys_dict_data +-- ---------------------------- +INSERT INTO `tbl_sys_dict_data` VALUES (1, 1, '男', '0', 'sys_user_sex', '', 'default', 'Y', '0', 'admin', '2021-12-15 21:36:18', 'admin', '2026-04-04 22:38:19', '性别男', '0'); +INSERT INTO `tbl_sys_dict_data` VALUES (2, 2, '女', '1', 'sys_user_sex', '', 'default', 'N', '0', 'admin', '2021-12-15 21:36:18', 'admin', '2026-04-04 22:38:27', '性别女', '0'); +INSERT INTO `tbl_sys_dict_data` VALUES (11, 1, '正常', '0', 'sys_normal_disable', NULL, 'green', 'N', '0', 'admin', '2026-04-03 22:31:34', 'admin', '2026-04-04 22:35:39', '正常状态', '0'); +INSERT INTO `tbl_sys_dict_data` VALUES (12, 2, '停用', '1', 'sys_normal_disable', NULL, 'red', 'N', '0', 'admin', '2026-04-03 22:32:03', 'admin', '2026-04-04 21:38:10', '停用状态', '0'); +INSERT INTO `tbl_sys_dict_data` VALUES (13, 3, '采购员', '采购员', 'person_type', NULL, 'default', 'N', '0', 'admin', '2026-09-17 15:22:39', '', NULL, NULL, '0'); +INSERT INTO `tbl_sys_dict_data` VALUES (14, 4, 'CEO', 'CEO', 'person_type', NULL, 'default', 'N', '0', 'admin', '2026-09-18 13:37:45', '', NULL, NULL, '0'); +INSERT INTO `tbl_sys_dict_data` VALUES (15, 5, 'IT', 'IT', 'person_type', NULL, 'default', 'N', '0', 'admin', '2026-09-18 13:37:55', '', NULL, NULL, '0'); + +-- ---------------------------- +-- Table structure for tbl_sys_dict_type +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_sys_dict_type`; +CREATE TABLE `tbl_sys_dict_type` ( + `dict_id` bigint NOT NULL AUTO_INCREMENT COMMENT '字典主键', + `dict_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '字典名称', + `dict_type` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '字典类型', + `status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '状态(0正常 1停用)', + `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '创建者', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '更新者', + `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间', + `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + `delete_flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '删除标记,0未删除,1删除', + PRIMARY KEY (`dict_id`) USING BTREE, + UNIQUE INDEX `dict_type`(`dict_type`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 13 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '字典类型表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_sys_dict_type +-- ---------------------------- +INSERT INTO `tbl_sys_dict_type` VALUES (1, '用户性别', 'sys_user_sex', '0', 'admin', '2021-12-15 21:36:18', 'admin', '2026-04-02 16:20:41', '用户性别列表', '0'); +INSERT INTO `tbl_sys_dict_type` VALUES (12, '系统开关', 'sys_normal_disable', '0', 'admin', '2026-04-03 22:30:57', 'admin', '2026-04-04 21:41:09', '系统开关列表', '0'); + +-- ---------------------------- +-- Table structure for tbl_system_config +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_system_config`; +CREATE TABLE `tbl_system_config` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `company_name` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '公司名称', + `company_contacts` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '公司联系人', + `company_address` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '公司地址', + `company_tel` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '公司电话', + `company_fax` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '公司传真', + `company_post_code` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '公司邮编', + `sale_agreement` varchar(500) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '销售协议', + `depot_flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '仓库启用标记,0未启用,1启用', + `customer_flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '客户启用标记,0未启用,1启用', + `minus_stock_flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '负库存启用标记,0未启用,1启用', + `purchase_by_sale_flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '以销定购启用标记,0未启用,1启用', + `multi_level_approval_flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '多级审核启用标记,0未启用,1启用', + `multi_bill_type` varchar(200) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '流程类型,可多选', + `force_approval_flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '强审核启用标记,0未启用,1启用', + `update_unit_price_flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '1' COMMENT '更新单价启用标记,0未启用,1启用', + `over_link_bill_flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '超出关联单据启用标记,0未启用,1启用', + `in_out_manage_flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '出入库管理启用标记,0未启用,1启用', + `multi_account_flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '多账户启用标记,0未启用,1启用', + `move_avg_price_flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '移动平均价启用标记,0未启用,1启用', + `audit_print_flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '先审核后打印启用标记,0未启用,1启用', + `zero_change_amount_flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '零收付款启用标记,0未启用,1启用', + `customer_static_price_flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '客户静态单价启用标记,0未启用,1启用', + `material_price_tax_flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '商品价格含税启用标记,0未启用,1启用', + `tenant_id` bigint NULL DEFAULT NULL COMMENT '租户id', + `delete_flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '删除标记,0未删除,1删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 12 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '系统参数' ROW_FORMAT = COMPACT; + +-- ---------------------------- +-- Records of tbl_system_config +-- ---------------------------- +INSERT INTO `tbl_system_config` VALUES (11, '公司test', '小李', '地址1', '12345678', NULL, NULL, '注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。', '0', '0', '0', '0', '0', '', '1', '1', '0', '0', '1', '0', '1', '0', '0', '0', 63, '0'); + +-- ---------------------------- +-- Table structure for tbl_tenant +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_tenant`; +CREATE TABLE `tbl_tenant` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `tenant_id` bigint NULL DEFAULT NULL COMMENT '用户id', + `login_name` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '登录名', + `user_num_limit` int NULL DEFAULT NULL COMMENT '用户数量限制', + `type` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '租户类型,0免费租户,1付费租户', + `enabled` bit(1) NULL DEFAULT b'1' COMMENT '启用 0-禁用 1-启用', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `expire_time` datetime(0) NULL DEFAULT NULL COMMENT '到期时间', + `remark` varchar(500) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '备注', + `delete_flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '删除标记,0未删除,1删除', + PRIMARY KEY (`id`) USING BTREE, + INDEX `create_time`(`create_time`) USING BTREE, + INDEX `tenant_id`(`tenant_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 14 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '租户' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_tenant +-- ---------------------------- +INSERT INTO `tbl_tenant` VALUES (13, 63, 'admin', 2000, '1', b'1', '2021-02-17 23:19:17', '2099-02-17 23:19:17', NULL, '0'); + +-- ---------------------------- +-- Table structure for tbl_unit +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_unit`; +CREATE TABLE `tbl_unit` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `name` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '名称,支持多单位', + `basic_unit` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '基础单位', + `other_unit` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '副单位', + `other_unit_two` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '副单位2', + `other_unit_three` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '副单位3', + `ratio` decimal(24, 3) NULL DEFAULT NULL COMMENT '比例', + `ratio_two` decimal(24, 3) NULL DEFAULT NULL COMMENT '比例2', + `ratio_three` decimal(24, 3) NULL DEFAULT NULL COMMENT '比例3', + `enabled` bit(1) NULL DEFAULT NULL COMMENT '启用', + `tenant_id` bigint NULL DEFAULT NULL COMMENT '租户id', + `delete_flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '删除标记,0未删除,1删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 23 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '多单位表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_unit +-- ---------------------------- +INSERT INTO `tbl_unit` VALUES (15, '个/(箱=12个)', '个', '箱', NULL, NULL, 12.000, NULL, NULL, b'1', 63, '0'); +INSERT INTO `tbl_unit` VALUES (19, '个/(盒=15个)', '个', '盒', NULL, NULL, 15.000, NULL, NULL, b'1', 63, '0'); +INSERT INTO `tbl_unit` VALUES (20, '盒/(箱=8盒)', '盒', '箱', NULL, NULL, 8.000, NULL, NULL, b'1', 63, '0'); +INSERT INTO `tbl_unit` VALUES (21, '瓶/(箱=12瓶)', '瓶', '箱', NULL, NULL, 12.000, NULL, NULL, b'1', 63, '0'); +INSERT INTO `tbl_unit` VALUES (22, '测试件/(箱=20测试件)', '测试件', '箱', NULL, NULL, 20.000, NULL, NULL, b'1', NULL, '1'); + +-- ---------------------------- +-- Table structure for tbl_user +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_user`; +CREATE TABLE `tbl_user` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `username` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '用户姓名--例如张三', + `login_name` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '登录用户名', + `password` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '登陆密码', + `leader_flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '是否经理,0否,1是', + `position` varchar(200) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '职位', + `department` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '所属部门', + `email` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '电子邮箱', + `phonenum` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '手机号码', + `ismanager` tinyint NOT NULL DEFAULT 1 COMMENT '是否为管理者 0==管理者 1==员工', + `isystem` tinyint NOT NULL DEFAULT 0 COMMENT '是否系统自带数据 ', + `status` tinyint NULL DEFAULT 0 COMMENT '状态,0正常,2封禁', + `description` varchar(500) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '用户描述信息', + `remark` varchar(500) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '备注', + `weixin_open_id` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '微信绑定', + `tenant_id` bigint NULL DEFAULT NULL COMMENT '租户id', + `delete_flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '删除标记,0未删除,1删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 150 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '用户表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_user +-- ---------------------------- +INSERT INTO `tbl_user` VALUES (63, 'admin', 'admin', 'd176a5dbc4504e5492c8a644cd977120', '0', '主管', NULL, '666666@qq.com', '1123123123132', 1, 1, 0, '', NULL, NULL, 63, '0'); +INSERT INTO `tbl_user` VALUES (120, '管理员', 'admin_backup', 'e10adc3949ba59abbe56e057f20f883e', '0', NULL, NULL, NULL, NULL, 1, 1, 0, NULL, NULL, NULL, 0, '1'); +INSERT INTO `tbl_user` VALUES (131, 'test123', 'test123', 'e10adc3949ba59abbe56e057f20f883e', '0', '总监', NULL, '7777777@qq.com', '', 1, 0, 0, '', NULL, NULL, 63, '1'); +INSERT INTO `tbl_user` VALUES (146, '管理员', 'admin_backup', '9d39f3391ff9a640f09db5377a596dd2', '0', NULL, NULL, NULL, NULL, 1, 0, 0, NULL, NULL, NULL, 63, '1'); +INSERT INTO `tbl_user` VALUES (147, '瑞银', 'reallin', '9d39f3391ff9a640f09db5377a596dd2', '0', NULL, NULL, NULL, NULL, 1, 0, 0, NULL, NULL, NULL, 63, '1'); +INSERT INTO `tbl_user` VALUES (148, '测试用户_UPD', 'testuser_reg', '5c428d8875d2948607f3e3fe134d71b4', '0', NULL, NULL, NULL, NULL, 1, 0, 0, NULL, NULL, NULL, NULL, '1'); +INSERT INTO `tbl_user` VALUES (149, 'admin2', 'admin2', 'd176a5dbc4504e5492c8a644cd977120', '0', NULL, NULL, NULL, NULL, 1, 0, 0, NULL, NULL, NULL, NULL, '0'); + +-- ---------------------------- +-- Table structure for tbl_user_business +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_user_business`; +CREATE TABLE `tbl_user_business` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `type` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '类别', + `key_id` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '主id', + `value` text CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL COMMENT '值', + `btn_str` varchar(20000) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '按钮权限', + `tenant_id` bigint NULL DEFAULT NULL COMMENT '租户id', + `delete_flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '删除标记,0未删除,1删除', + PRIMARY KEY (`id`) USING BTREE, + INDEX `type`(`type`) USING BTREE, + INDEX `key_id`(`key_id`) USING BTREE, + INDEX `tenant_id`(`tenant_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 89 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '用户/角色/模块关系表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_user_business +-- ---------------------------- +INSERT INTO `tbl_user_business` VALUES (2, 'RoleFunctions', '4', '[210][225][211][261][32][241][33][199][242][38][41][200][201][239][202][40][232][233][197][44][203][204][205][206][212][246][198][207][259][208][209][226][227][248][228][229][59][235][237][244][22][21][23][220][247][25][24][217][218][26][194][195][31][13][14][243][15][236][234][16][18][245][258][260][1][262][263][264][265][266][270][272][273][274][275][276]', '[{\"funId\":270,\"btnStr\":\"1,2,3,7\"}]', 63, '0'); +INSERT INTO `tbl_user_business` VALUES (5, 'RoleFunctions', '4', '[210][225][211][261][32][241][33][199][242][38][41][200][201][239][202][40][232][233][197][44][203][204][205][206][212][246][198][207][259][208][209][226][227][248][228][229][59][235][237][244][22][21][23][220][247][25][24][217][218][26][194][195][31][13][14][243][15][236][234][16][18][245][258][260][1][270][272][273][274][275][276]', '[{\"funId\":13,\"btnStr\":\"1\"},{\"funId\":14,\"btnStr\":\"1\"},{\"funId\":243,\"btnStr\":\"1\"},{\"funId\":236,\"btnStr\":\"1\"},{\"funId\":234,\"btnStr\":\"1\"},{\"funId\":16,\"btnStr\":\"1\"},{\"funId\":18,\"btnStr\":\"1\"},{\"funId\":245,\"btnStr\":\"1\"},{\"funId\":22,\"btnStr\":\"1\"},{\"funId\":23,\"btnStr\":\"1,3\"},{\"funId\":220,\"btnStr\":\"1\"},{\"funId\":247,\"btnStr\":\"1\"},{\"funId\":25,\"btnStr\":\"1,3\"},{\"funId\":217,\"btnStr\":\"1,3\"},{\"funId\":218,\"btnStr\":\"1,3\"},{\"funId\":26,\"btnStr\":\"1\"},{\"funId\":194,\"btnStr\":\"1\"},{\"funId\":195,\"btnStr\":\"1\"},{\"funId\":31,\"btnStr\":\"1\"},{\"funId\":261,\"btnStr\":\"1,2,7,3\"},{\"funId\":241,\"btnStr\":\"1,2,7,3\"},{\"funId\":33,\"btnStr\":\"1,2,7,3\"},{\"funId\":199,\"btnStr\":\"1,2,7,3\"},{\"funId\":242,\"btnStr\":\"1,2,7,3\"},{\"funId\":41,\"btnStr\":\"1,2,7,3\"},{\"funId\":200,\"btnStr\":\"1,2,7,3\"},{\"funId\":210,\"btnStr\":\"1,2,7,3\"},{\"funId\":211,\"btnStr\":\"1,2,7,3\"},{\"funId\":197,\"btnStr\":\"1,7,2,3\"},{\"funId\":203,\"btnStr\":\"1,7,2,3\"},{\"funId\":204,\"btnStr\":\"1,7,2,3\"},{\"funId\":205,\"btnStr\":\"1,7,2,3\"},{\"funId\":206,\"btnStr\":\"1,2,7,3\"},{\"funId\":212,\"btnStr\":\"1,7,2,3\"},{\"funId\":201,\"btnStr\":\"1,2,7,3\"},{\"funId\":202,\"btnStr\":\"1,2,7,3\"},{\"funId\":40,\"btnStr\":\"1,2,7,3\"},{\"funId\":232,\"btnStr\":\"1,2,7,3\"},{\"funId\":233,\"btnStr\":\"1,2,7,3\"},{\"funId\":270,\"btnStr\":\"1,2,3,7\"}]', NULL, '0'); +INSERT INTO `tbl_user_business` VALUES (6, 'RoleFunctions', '5', '[22][23][25][26][194][195][31][33][200][201][41][199][202]', NULL, NULL, '0'); +INSERT INTO `tbl_user_business` VALUES (7, 'RoleFunctions', '6', '[22][23][220][240][25][217][218][26][194][195][31][59][207][208][209][226][227][228][229][235][237][210][211][241][33][199][242][41][200][201][202][40][232][233][197][203][204][205][206][212]', '[{\"funId\":\"33\",\"btnStr\":\"4\"}]', NULL, '0'); +INSERT INTO `tbl_user_business` VALUES (9, 'RoleFunctions', '7', '[168][13][12][16][14][15][189][18][19][132]', NULL, NULL, '0'); +INSERT INTO `tbl_user_business` VALUES (10, 'RoleFunctions', '8', '[168][13][12][16][14][15][189][18][19][132][22][23][25][26][27][157][158][155][156][125][31][127][126][128][33][34][35][36][37][39][40][41][42][43][46][47][48][49][50][51][52][53][54][55][56][57][192][59][60][61][62][63][65][66][68][69][70][71][73][74][76][77][79][191][81][82][83][85][89][161][86][176][165][160][28][134][91][92][29][94][95][97][104][99][100][101][102][105][107][108][110][111][113][114][116][117][118][120][121][131][135][123][122][20][130][146][147][138][148][149][153][140][145][184][152][143][170][171][169][166][167][163][164][172][173][179][178][181][182][183][186][187][247]', NULL, NULL, '0'); +INSERT INTO `tbl_user_business` VALUES (11, 'RoleFunctions', '9', '[168][13][12][16][14][15][189][18][19][132][22][23][25][26][27][157][158][155][156][125][31][127][126][128][33][34][35][36][37][39][40][41][42][43][46][47][48][49][50][51][52][53][54][55][56][57][192][59][60][61][62][63][65][66][68][69][70][71][73][74][76][77][79][191][81][82][83][85][89][161][86][176][165][160][28][134][91][92][29][94][95][97][104][99][100][101][102][105][107][108][110][111][113][114][116][117][118][120][121][131][135][123][122][20][130][146][147][138][148][149][153][140][145][184][152][143][170][171][169][166][167][163][164][172][173][179][178][181][182][183][186][187][188]', NULL, NULL, '0'); +INSERT INTO `tbl_user_business` VALUES (12, 'UserRole', '1', '[5]', NULL, NULL, '0'); +INSERT INTO `tbl_user_business` VALUES (13, 'UserRole', '2', '[6][7]', NULL, NULL, '0'); +INSERT INTO `tbl_user_business` VALUES (14, 'UserDepot', '2', '[1][2][6][7]', NULL, NULL, '0'); +INSERT INTO `tbl_user_business` VALUES (15, 'UserDepot', '1', '[1][2][5][6][7][10][12][14][15][17]', NULL, NULL, '0'); +INSERT INTO `tbl_user_business` VALUES (16, 'UserRole', '63', '[21]', NULL, 63, '0'); +INSERT INTO `tbl_user_business` VALUES (18, 'UserDepot', '63', '[14][15][18][19][20]', NULL, 63, '0'); +INSERT INTO `tbl_user_business` VALUES (19, 'UserDepot', '5', '[6][45][46][50]', NULL, NULL, '0'); +INSERT INTO `tbl_user_business` VALUES (20, 'UserRole', '5', '[5]', NULL, NULL, '0'); +INSERT INTO `tbl_user_business` VALUES (21, 'UserRole', '64', '[13]', NULL, NULL, '0'); +INSERT INTO `tbl_user_business` VALUES (22, 'UserDepot', '64', '[1]', NULL, NULL, '0'); +INSERT INTO `tbl_user_business` VALUES (23, 'UserRole', '65', '[5]', NULL, NULL, '0'); +INSERT INTO `tbl_user_business` VALUES (24, 'UserDepot', '65', '[1]', NULL, NULL, '0'); +INSERT INTO `tbl_user_business` VALUES (25, 'UserCustomer', '64', '[5][2]', NULL, NULL, '0'); +INSERT INTO `tbl_user_business` VALUES (26, 'UserCustomer', '65', '[6]', NULL, NULL, '0'); +INSERT INTO `tbl_user_business` VALUES (27, 'UserCustomer', '63', '[58][80][82]', NULL, 63, '0'); +INSERT INTO `tbl_user_business` VALUES (28, 'UserDepot', '96', '[7]', NULL, NULL, '0'); +INSERT INTO `tbl_user_business` VALUES (29, 'UserRole', '96', '[6]', NULL, NULL, '0'); +INSERT INTO `tbl_user_business` VALUES (30, 'UserRole', '113', '[10]', NULL, NULL, '0'); +INSERT INTO `tbl_user_business` VALUES (32, 'RoleFunctions', '10', '[210][225][211][261][32][241][33][199][242][38][41][200][201][239][202][40][232][233][197][44][203][204][205][206][212][246][198][207][259][208][209][226][227][248][228][229][59][235][237][244][22][21][23][220][247][25][24][217][218][26][194][195][31][13][14][243][15][236][234][262][263][264][265][266][267]', '[{\"funId\":13,\"btnStr\":\"1\"},{\"funId\":14,\"btnStr\":\"1\"},{\"funId\":243,\"btnStr\":\"1\"},{\"funId\":234,\"btnStr\":\"1\"},{\"funId\":236,\"btnStr\":\"1\"},{\"funId\":22,\"btnStr\":\"1\"},{\"funId\":23,\"btnStr\":\"1,3\"},{\"funId\":220,\"btnStr\":\"1\"},{\"funId\":247,\"btnStr\":\"1\"},{\"funId\":25,\"btnStr\":\"1,3\"},{\"funId\":217,\"btnStr\":\"1,3\"},{\"funId\":218,\"btnStr\":\"1,3\"},{\"funId\":26,\"btnStr\":\"1\"},{\"funId\":194,\"btnStr\":\"1\"},{\"funId\":195,\"btnStr\":\"1\"},{\"funId\":31,\"btnStr\":\"1\"},{\"funId\":261,\"btnStr\":\"1,2,7,3\"},{\"funId\":241,\"btnStr\":\"1,2,7,3\"},{\"funId\":33,\"btnStr\":\"1,2,7,3\"},{\"funId\":199,\"btnStr\":\"1,7,2,3\"},{\"funId\":242,\"btnStr\":\"1,2,7,3\"},{\"funId\":41,\"btnStr\":\"1,2,7,3\"},{\"funId\":200,\"btnStr\":\"1,2,7,3\"},{\"funId\":210,\"btnStr\":\"1,2,7,3\"},{\"funId\":211,\"btnStr\":\"1,2,7,3\"},{\"funId\":197,\"btnStr\":\"1,2,7,3\"},{\"funId\":203,\"btnStr\":\"1,7,2,3\"},{\"funId\":204,\"btnStr\":\"1,7,2,3\"},{\"funId\":205,\"btnStr\":\"1,2,7,3\"},{\"funId\":206,\"btnStr\":\"1,7,2,3\"},{\"funId\":212,\"btnStr\":\"1,2,7,3\"},{\"funId\":201,\"btnStr\":\"1,2,7,3\"},{\"funId\":202,\"btnStr\":\"1,2,7,3\"},{\"funId\":40,\"btnStr\":\"1,2,7,3\"},{\"funId\":232,\"btnStr\":\"1,2,7,3\"},{\"funId\":233,\"btnStr\":\"1,2,7,3\"}]', NULL, '0'); +INSERT INTO `tbl_user_business` VALUES (34, 'UserRole', '115', '[10]', NULL, NULL, '0'); +INSERT INTO `tbl_user_business` VALUES (35, 'UserRole', '117', '[10]', NULL, NULL, '0'); +INSERT INTO `tbl_user_business` VALUES (36, 'UserDepot', '117', '[8][9]', NULL, NULL, '0'); +INSERT INTO `tbl_user_business` VALUES (37, 'UserCustomer', '117', '[52]', NULL, NULL, '0'); +INSERT INTO `tbl_user_business` VALUES (38, 'UserRole', '120', '[4]', NULL, NULL, '0'); +INSERT INTO `tbl_user_business` VALUES (41, 'RoleFunctions', '12', '', NULL, NULL, '0'); +INSERT INTO `tbl_user_business` VALUES (48, 'RoleFunctions', '13', '[59][207][208][209][226][227][228][229][235][237][210][211][241][33][199][242][41][200]', NULL, NULL, '0'); +INSERT INTO `tbl_user_business` VALUES (51, 'UserRole', '74', '[10]', NULL, NULL, '0'); +INSERT INTO `tbl_user_business` VALUES (52, 'UserDepot', '121', '[13]', NULL, NULL, '0'); +INSERT INTO `tbl_user_business` VALUES (54, 'UserDepot', '115', '[13]', NULL, NULL, '0'); +INSERT INTO `tbl_user_business` VALUES (56, 'UserCustomer', '115', '[56]', NULL, NULL, '0'); +INSERT INTO `tbl_user_business` VALUES (57, 'UserCustomer', '121', '[56]', NULL, NULL, '0'); +INSERT INTO `tbl_user_business` VALUES (67, 'UserRole', '131', '[16]', NULL, 63, '0'); +INSERT INTO `tbl_user_business` VALUES (68, 'RoleFunctions', '16', '[210][262][263][264][265][266]', NULL, 63, '0'); +INSERT INTO `tbl_user_business` VALUES (69, 'RoleFunctions', '17', '[210][225][211][241][32][33][199][242][38][41][200][201][239][202][40][232][233][197][44][203][204][205][206][212][262][263][264][265][266]', '[{\"funId\":\"241\",\"btnStr\":\"1,2\"},{\"funId\":\"33\",\"btnStr\":\"1,2\"},{\"funId\":\"199\",\"btnStr\":\"1,2\"},{\"funId\":\"242\",\"btnStr\":\"1,2\"},{\"funId\":\"41\",\"btnStr\":\"1,2\"},{\"funId\":\"200\",\"btnStr\":\"1,2\"},{\"funId\":\"210\",\"btnStr\":\"1,2\"},{\"funId\":\"211\",\"btnStr\":\"1,2\"},{\"funId\":\"197\",\"btnStr\":\"1\"},{\"funId\":\"203\",\"btnStr\":\"1\"},{\"funId\":\"204\",\"btnStr\":\"1\"},{\"funId\":\"205\",\"btnStr\":\"1\"},{\"funId\":\"206\",\"btnStr\":\"1\"},{\"funId\":\"212\",\"btnStr\":\"1\"},{\"funId\":\"201\",\"btnStr\":\"1,2\"},{\"funId\":\"202\",\"btnStr\":\"1,2\"},{\"funId\":\"40\",\"btnStr\":\"1,2\"},{\"funId\":\"232\",\"btnStr\":\"1,2\"},{\"funId\":\"233\",\"btnStr\":\"1,2\"}]', 63, '0'); +INSERT INTO `tbl_user_business` VALUES (83, 'RoleFunctions', '21', '[242][38][41][271][268][200][210][211][261][32][241][33][199][263][262][264][265][266][246][201][202][270][204][205][273][272][274][275][22][21][23][220][247][207][259][208][209][226][227][228][229][59][235][237][244][13][1][14][243][15][236][234][16][245][260][258][25][24][217][218][267][26][194][195][31][276]', '[{\"funId\":13,\"btnStr\":\"8,1\"},{\"funId\":14,\"btnStr\":\"1\"},{\"funId\":243,\"btnStr\":\"1\"},{\"funId\":236,\"btnStr\":\"1\"},{\"funId\":234,\"btnStr\":\"1\"},{\"funId\":16,\"btnStr\":\"1\"},{\"funId\":245,\"btnStr\":\"1\"},{\"funId\":22,\"btnStr\":\"1\"},{\"funId\":23,\"btnStr\":\"1,3\"},{\"funId\":220,\"btnStr\":\"1\"},{\"funId\":247,\"btnStr\":\"1\"},{\"funId\":25,\"btnStr\":\"1,3\"},{\"funId\":217,\"btnStr\":\"1,3\"},{\"funId\":218,\"btnStr\":\"1,3\"},{\"funId\":26,\"btnStr\":\"1\"},{\"funId\":194,\"btnStr\":\"1\"},{\"funId\":195,\"btnStr\":\"1\"},{\"funId\":31,\"btnStr\":\"1\"},{\"funId\":261,\"btnStr\":\"1,2,3,7\"},{\"funId\":241,\"btnStr\":\"1,2,3,7\"},{\"funId\":33,\"btnStr\":\"1,2,3,7\"},{\"funId\":199,\"btnStr\":\"1,2,3,7\"},{\"funId\":242,\"btnStr\":\"1,2,3,7\"},{\"funId\":41,\"btnStr\":\"1,2,3,7\"},{\"funId\":271,\"btnStr\":\"1,2,7\"},{\"funId\":268,\"btnStr\":\"1,2,7\"},{\"funId\":200,\"btnStr\":\"1,2,3,7\"},{\"funId\":210,\"btnStr\":\"1,2,3,7\"},{\"funId\":211,\"btnStr\":\"1,2,3,7\"},{\"funId\":197,\"btnStr\":\"1,2,3,7\"},{\"funId\":203,\"btnStr\":\"1,2,3,7\"},{\"funId\":204,\"btnStr\":\"1,2,3,7\"},{\"funId\":205,\"btnStr\":\"1,2,3,7\"},{\"funId\":264,\"btnStr\":\"1,2,3\"},{\"funId\":265,\"btnStr\":\"1,2,3\"},{\"funId\":266,\"btnStr\":\"1,2,3\"},{\"funId\":206,\"btnStr\":\"1,2,3,7\"},{\"funId\":212,\"btnStr\":\"1,2,3,7\"},{\"funId\":201,\"btnStr\":\"1,2,3,7\"},{\"funId\":202,\"btnStr\":\"1,2,3,7\"},{\"funId\":40,\"btnStr\":\"1,2,3,7\"},{\"funId\":232,\"btnStr\":\"1,2,3,7\"},{\"funId\":270,\"btnStr\":\"1,2,3,7\"},{\"funId\":233,\"btnStr\":\"1,2,3,7\"}]', 63, '0'); +INSERT INTO `tbl_user_business` VALUES (84, 'UserRole', '146', '[21]', NULL, 63, '0'); +INSERT INTO `tbl_user_business` VALUES (85, 'UserRole', '147', '[21]', NULL, 63, '0'); +INSERT INTO `tbl_user_business` VALUES (86, 'UserCustomer', '147', '[80]', NULL, NULL, '0'); +INSERT INTO `tbl_user_business` VALUES (87, 'UserRole', '148', '[4]', NULL, NULL, '0'); +INSERT INTO `tbl_user_business` VALUES (88, 'UserRole', '149', '[23]', NULL, NULL, '0'); + +SET FOREIGN_KEY_CHECKS = 1; diff --git a/smtERP-boot/docs/sql_update_permission_management.sql b/smtERP-boot/docs/sql_update_permission_management.sql new file mode 100644 index 0000000..bc6ad40 --- /dev/null +++ b/smtERP-boot/docs/sql_update_permission_management.sql @@ -0,0 +1,13 @@ +-- 为“角色管理”菜单增加“权限管理”按钮权限(按钮编号 8) +-- 当前项目 Mapper 使用 tbl_function;如部署库仍使用旧表名 jsh_function,请替换表名后执行。 +UPDATE `tbl_function` +SET `push_btn` = CASE + WHEN `push_btn` IS NULL OR `push_btn` = '' THEN '8' + WHEN FIND_IN_SET('8', `push_btn`) = 0 THEN CONCAT(`push_btn`, ',8') + ELSE `push_btn` +END +WHERE `number` = '000102' + AND IFNULL(`delete_flag`, '0') != '1'; + +-- 执行后使用 admin 登录,在“角色管理 -> 分配按钮”中, +-- 给需要管理全部菜单的角色勾选“权限管理”。 diff --git a/smtERP-boot/docs/sql_update_production.sql b/smtERP-boot/docs/sql_update_production.sql new file mode 100644 index 0000000..4ac34a8 --- /dev/null +++ b/smtERP-boot/docs/sql_update_production.sql @@ -0,0 +1,221 @@ +-- ---------------------------- +-- 生产管理模块建表脚本(P0) +-- 执行方式:在 MySQL 8.0 中执行本脚本 +-- ---------------------------- + +-- ---------------------------- +-- 1、包装BOM主表 +-- ---------------------------- +DROP TABLE IF EXISTS `jsh_pack_bom`; +CREATE TABLE `jsh_pack_bom` ( + `id` bigint(0) NOT NULL AUTO_INCREMENT COMMENT '主键', + `bom_number` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '方案编号', + `bom_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '方案名称', + `product_material_id` bigint(0) NULL DEFAULT NULL COMMENT '待包装产品商品id', + `product_material_extend_id` bigint(0) NULL DEFAULT NULL COMMENT '待包装产品扩展id', + `product_sku` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '待包装产品多属性', + `output_material_id` bigint(0) NULL DEFAULT NULL COMMENT '成品SKU商品id', + `output_material_extend_id` bigint(0) NULL DEFAULT NULL COMMENT '成品扩展id', + `output_sku` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '成品多属性', + `output_number` decimal(24, 6) NULL DEFAULT NULL COMMENT '单位待包装产品产出成品数量', + `version` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT 'V1' COMMENT '版本', + `enabled` bit(1) NULL DEFAULT b'1' COMMENT '启用状态', + `remark` varchar(1000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `creator` bigint(0) NULL DEFAULT NULL COMMENT '创建人', + `tenant_id` bigint(0) NULL DEFAULT NULL COMMENT '租户id', + `delete_flag` varchar(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '删除标记,0未删除,1删除', + PRIMARY KEY (`id`) USING BTREE, + INDEX `product_material_id`(`product_material_id`) USING BTREE, + INDEX `output_material_id`(`output_material_id`) USING BTREE, + INDEX `tenant_id`(`tenant_id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '包装BOM主表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- 2、包装BOM包材明细表 +-- ---------------------------- +DROP TABLE IF EXISTS `jsh_pack_bom_item`; +CREATE TABLE `jsh_pack_bom_item` ( + `id` bigint(0) NOT NULL AUTO_INCREMENT COMMENT '主键', + `bom_id` bigint(0) NOT NULL COMMENT '包装BOM id', + `material_id` bigint(0) NOT NULL COMMENT '包材商品id', + `material_extend_id` bigint(0) NULL DEFAULT NULL COMMENT '商品扩展id', + `material_sku` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '多属性', + `unit` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '单位', + `quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '用量(每产出1单位成品所需包材数量)', + `remark` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注', + `tenant_id` bigint(0) NULL DEFAULT NULL COMMENT '租户id', + `delete_flag` varchar(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '删除标记,0未删除,1删除', + PRIMARY KEY (`id`) USING BTREE, + INDEX `bom_id`(`bom_id`) USING BTREE, + INDEX `material_id`(`material_id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '包装BOM包材明细表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- 3、生产工单主表 +-- ---------------------------- +DROP TABLE IF EXISTS `jsh_production_order`; +CREATE TABLE `jsh_production_order` ( + `id` bigint(0) NOT NULL AUTO_INCREMENT COMMENT '主键', + `order_number` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '工单号', + `source_type` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '来源类型(销售订单/手工备货)', + `source_id` bigint(0) NULL DEFAULT NULL COMMENT '来源单据id(销售订单depot_head.id)', + `source_number` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '来源单据号(销售订单号)', + `product_material_id` bigint(0) NULL DEFAULT NULL COMMENT '待包装产品商品id', + `product_material_extend_id` bigint(0) NULL DEFAULT NULL COMMENT '待包装产品扩展id', + `product_sku` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '待包装产品多属性', + `bom_id` bigint(0) NULL DEFAULT NULL COMMENT '包装BOM id', + `output_material_id` bigint(0) NULL DEFAULT NULL COMMENT '成品SKU商品id', + `output_material_extend_id` bigint(0) NULL DEFAULT NULL COMMENT '成品扩展id', + `output_sku` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '成品多属性', + `order_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '工单数量(待包装产品)', + `output_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '预计成品数量', + `finished_quantity` decimal(24, 6) NULL DEFAULT 0.000000 COMMENT '已完工良品数', + `plan_start_date` datetime(0) NULL DEFAULT NULL COMMENT '计划开工日期', + `plan_end_date` datetime(0) NULL DEFAULT NULL COMMENT '计划完工日期', + `actual_start_date` datetime(0) NULL DEFAULT NULL COMMENT '实际开工日期', + `actual_end_date` datetime(0) NULL DEFAULT NULL COMMENT '实际完工日期', + `priority` varchar(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '优先级,0普通、1紧急', + `status` varchar(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '状态,0已创建、1已下达、2生产中、3已完工、4已关闭', + `audit_by` bigint(0) NULL DEFAULT NULL COMMENT '审批人', + `audit_time` datetime(0) NULL DEFAULT NULL COMMENT '审批时间', + `release_by` bigint(0) NULL DEFAULT NULL COMMENT '下达人', + `release_time` datetime(0) NULL DEFAULT NULL COMMENT '下达时间', + `close_reason` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '关闭原因', + `remark` varchar(1000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `creator` bigint(0) NULL DEFAULT NULL COMMENT '创建人', + `tenant_id` bigint(0) NULL DEFAULT NULL COMMENT '租户id', + `delete_flag` varchar(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '删除标记,0未删除,1删除', + PRIMARY KEY (`id`) USING BTREE, + INDEX `order_number`(`order_number`) USING BTREE, + INDEX `source_number`(`source_number`) USING BTREE, + INDEX `status`(`status`) USING BTREE, + INDEX `tenant_id`(`tenant_id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '生产工单主表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- 4、工单操作日志表 +-- ---------------------------- +DROP TABLE IF EXISTS `jsh_production_order_log`; +CREATE TABLE `jsh_production_order_log` ( + `id` bigint(0) NOT NULL AUTO_INCREMENT COMMENT '主键', + `order_id` bigint(0) NULL DEFAULT NULL COMMENT '工单id', + `order_number` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '工单号', + `operation_type` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '操作类型(创建/修改/审批下达/开工/生成领料/发料/完工/关闭等)', + `operation_desc` varchar(1000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '操作描述', + `operator` bigint(0) NULL DEFAULT NULL COMMENT '操作人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '操作时间', + `tenant_id` bigint(0) NULL DEFAULT NULL COMMENT '租户id', + PRIMARY KEY (`id`) USING BTREE, + INDEX `order_id`(`order_id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '工单操作日志表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- 5、生产领料单主表 +-- ---------------------------- +DROP TABLE IF EXISTS `jsh_production_requisition`; +CREATE TABLE `jsh_production_requisition` ( + `id` bigint(0) NOT NULL AUTO_INCREMENT COMMENT '主键', + `requisition_number` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '领料单号', + `order_id` bigint(0) NULL DEFAULT NULL COMMENT '工单id', + `order_number` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '工单号', + `depot_id` bigint(0) NULL DEFAULT NULL COMMENT '发料仓库id', + `status` varchar(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '状态,0待确认、1已发料、2已驳回', + `confirm_by` bigint(0) NULL DEFAULT NULL COMMENT '确认人', + `confirm_time` datetime(0) NULL DEFAULT NULL COMMENT '确认时间', + `remark` varchar(1000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `creator` bigint(0) NULL DEFAULT NULL COMMENT '创建人', + `tenant_id` bigint(0) NULL DEFAULT NULL COMMENT '租户id', + `delete_flag` varchar(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '删除标记,0未删除,1删除', + PRIMARY KEY (`id`) USING BTREE, + INDEX `requisition_number`(`requisition_number`) USING BTREE, + INDEX `order_id`(`order_id`) USING BTREE, + INDEX `status`(`status`) USING BTREE, + INDEX `tenant_id`(`tenant_id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '生产领料单主表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- 6、生产领料单明细表 +-- ---------------------------- +DROP TABLE IF EXISTS `jsh_production_requisition_item`; +CREATE TABLE `jsh_production_requisition_item` ( + `id` bigint(0) NOT NULL AUTO_INCREMENT COMMENT '主键', + `requisition_id` bigint(0) NOT NULL COMMENT '领料单id', + `depot_id` bigint(0) NULL DEFAULT NULL COMMENT '发料仓库id', + `material_id` bigint(0) NOT NULL COMMENT '物料商品id', + `material_extend_id` bigint(0) NULL DEFAULT NULL COMMENT '商品扩展id', + `material_sku` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '多属性', + `unit` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '单位', + `required_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '申请数量(BOM定额)', + `issued_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '实发数量', + `unit_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '参考单价', + `remark` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注', + `tenant_id` bigint(0) NULL DEFAULT NULL COMMENT '租户id', + `delete_flag` varchar(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '删除标记,0未删除,1删除', + PRIMARY KEY (`id`) USING BTREE, + INDEX `requisition_id`(`requisition_id`) USING BTREE, + INDEX `depot_id`(`depot_id`) USING BTREE, + INDEX `material_id`(`material_id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '生产领料单明细表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- 7、完工报告主表 +-- ---------------------------- +DROP TABLE IF EXISTS `jsh_production_report`; +CREATE TABLE `jsh_production_report` ( + `id` bigint(0) NOT NULL AUTO_INCREMENT COMMENT '主键', + `report_number` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '报告号', + `order_id` bigint(0) NULL DEFAULT NULL COMMENT '工单id', + `order_number` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '工单号', + `finished_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '实际良品数', + `defect_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '不良品数', + `qualified_flag` varchar(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '质检结果,0未检、1合格、2不合格', + `depot_id` bigint(0) NULL DEFAULT NULL COMMENT '入库仓库id', + `in_number` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '生产入库单号', + `audit_status` varchar(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '审核状态,0待审核、1已审核、2已驳回', + `audit_by` bigint(0) NULL DEFAULT NULL COMMENT '审核人', + `audit_time` datetime(0) NULL DEFAULT NULL COMMENT '审核时间', + `report_by` bigint(0) NULL DEFAULT NULL COMMENT '报工人', + `report_date` datetime(0) NULL DEFAULT NULL COMMENT '报工日期', + `remark` varchar(1000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `creator` bigint(0) NULL DEFAULT NULL COMMENT '创建人', + `tenant_id` bigint(0) NULL DEFAULT NULL COMMENT '租户id', + `delete_flag` varchar(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '删除标记,0未删除,1删除', + PRIMARY KEY (`id`) USING BTREE, + INDEX `report_number`(`report_number`) USING BTREE, + INDEX `order_id`(`order_id`) USING BTREE, + INDEX `audit_status`(`audit_status`) USING BTREE, + INDEX `tenant_id`(`tenant_id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '完工报告主表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- 8、完工报告物料消耗明细表 +-- ---------------------------- +DROP TABLE IF EXISTS `jsh_production_report_item`; +CREATE TABLE `jsh_production_report_item` ( + `id` bigint(0) NOT NULL AUTO_INCREMENT COMMENT '主键', + `report_id` bigint(0) NOT NULL COMMENT '完工报告id', + `material_id` bigint(0) NOT NULL COMMENT '物料商品id', + `material_extend_id` bigint(0) NULL DEFAULT NULL COMMENT '商品扩展id', + `material_sku` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '多属性', + `unit` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '单位', + `consumption_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '实际消耗数量', + `remark` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注', + `tenant_id` bigint(0) NULL DEFAULT NULL COMMENT '租户id', + `delete_flag` varchar(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '删除标记,0未删除,1删除', + PRIMARY KEY (`id`) USING BTREE, + INDEX `report_id`(`report_id`) USING BTREE, + INDEX `material_id`(`material_id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '完工报告物料消耗明细表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- 9、生产管理菜单(jsh_function) +-- ---------------------------- +INSERT INTO `jsh_function` (`number`, `name`, `parent_number`, `url`, `component`, `state`, `sort`, `enabled`, `type`, `push_btn`, `icon`, `delete_flag`) VALUES ('0901', '生产管理', '0', '/production', '/layouts/TabLayout', b'0', '0480', b'1', '电脑版', '', 'cluster', '0'); +INSERT INTO `jsh_function` (`number`, `name`, `parent_number`, `url`, `component`, `state`, `sort`, `enabled`, `type`, `push_btn`, `icon`, `delete_flag`) VALUES ('090101', '包装方案', '0901', '/production/pack_bom', '/production/PackBomList', b'0', '0481', b'1', '电脑版', '1,2,3', 'profile', '0'); +INSERT INTO `jsh_function` (`number`, `name`, `parent_number`, `url`, `component`, `state`, `sort`, `enabled`, `type`, `push_btn`, `icon`, `delete_flag`) VALUES ('090102', '生产工单', '0901', '/production/order', '/production/OrderList', b'0', '0482', b'1', '电脑版', '1,2,3', 'profile', '0'); +INSERT INTO `jsh_function` (`number`, `name`, `parent_number`, `url`, `component`, `state`, `sort`, `enabled`, `type`, `push_btn`, `icon`, `delete_flag`) VALUES ('090103', '领料管理', '0901', '/production/requisition', '/production/RequisitionList', b'0', '0483', b'1', '电脑版', '1,2,3', 'profile', '0'); +INSERT INTO `jsh_function` (`number`, `name`, `parent_number`, `url`, `component`, `state`, `sort`, `enabled`, `type`, `push_btn`, `icon`, `delete_flag`) VALUES ('090104', '完工报工', '0901', '/production/report', '/production/ReportList', b'0', '0484', b'1', '电脑版', '1,2,3', 'profile', '0'); diff --git a/smtERP-boot/pom.xml b/smtERP-boot/pom.xml new file mode 100644 index 0000000..e444164 --- /dev/null +++ b/smtERP-boot/pom.xml @@ -0,0 +1,219 @@ + + + 4.0.0 + com.reallin + smt-erp + 1.0.0 + smt-erp + smt-erp + + + org.springframework.boot + spring-boot-starter-parent + 2.0.0.RELEASE + + + + UTF-8 + UTF-8 + 11 + 2.28.2 + 1.9.10 + + + + + com.gitee.starblues + springboot-plugin-framework + 2.2.1-RELEASE + + + com.gitee.starblues + springboot-plugin-framework-extension-mybatis + 2.2.1-RELEASE + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-aop + + + org.springframework.boot + spring-boot-starter-test + test + + + com.alibaba + fastjson + 1.2.83 + + + mysql + mysql-connector-java + 8.0.33 + + + + org.apache.httpcomponents + httpclient + 4.5.2 + + + net.sourceforge.jexcelapi + jxl + 2.6.12 + + + org.apache.poi + poi-ooxml + 4.1.2 + + + + org.projectlombok + lombok + 1.18.12 + + + + org.apache.logging.log4j + log4j-to-slf4j + 2.15.0 + compile + + + org.slf4j + jul-to-slf4j + 1.7.25 + compile + + + com.baomidou + mybatis-plus-boot-starter + 3.0.7.1 + + + org.springframework.boot + spring-boot-starter-redis + 1.4.1.RELEASE + + + io.springfox + springfox-swagger2 + 2.7.0 + compile + + + com.github.xiaoymin + swagger-bootstrap-ui + 1.6 + + + com.aliyun.oss + aliyun-sdk-oss + 3.10.1 + + + com.itextpdf + itextpdf + 5.5.13.1 + + + org.apache.commons + commons-io + 1.3.2 + + + com.belerweb + pinyin4j + 2.5.1 + + + com.github.pagehelper + pagehelper-spring-boot-starter + 1.2.13 + + + com.sun.mail + javax.mail + 1.6.2 + + + + + + + org.apache.maven.plugins + maven-surefire-plugin + 3.5.4 + + + org.springframework.boot + spring-boot-maven-plugin + 2.0.3.RELEASE + + + build-info + generate-sources + + build-info + + + + repackage + package + + repackage + + + com.reallin.smt.ErpApplication + JAR + + + + + + org.apache.maven.plugins + maven-assembly-plugin + 2.5.1 + + + make-zip + package + + single + + + + src/main/assembly/assembly.xml + + ./dist + + + + + + org.mybatis.generator + mybatis-generator-maven-plugin + 1.4.0 + + ${basedir}/src/test/resources/generatorConfig.xml + true + true + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.7.0 + + 11 + + + + + diff --git a/smtERP-boot/scripts/sync_sas_assets.ps1 b/smtERP-boot/scripts/sync_sas_assets.ps1 new file mode 100644 index 0000000..7eb5d79 --- /dev/null +++ b/smtERP-boot/scripts/sync_sas_assets.ps1 @@ -0,0 +1,194 @@ +param( + [string]$BaseUrl = 'https://sms.smt.com.my/sas/api', + [string]$DatabaseHost = '127.0.0.1', + [int]$DatabasePort = 3306, + [string]$DatabaseName = 'app072', + [string]$DatabaseUser = 'root', + [string]$MySqlPath = 'D:\Program Files\mysql\MySQL Server 8.0\bin\mysql.exe' +) + +$ErrorActionPreference = 'Stop' +if ([string]::IsNullOrWhiteSpace($env:SAS_USERNAME) -or [string]::IsNullOrWhiteSpace($env:SAS_PASSWORD)) { + throw 'Please set SAS_USERNAME and SAS_PASSWORD.' +} +if ([string]::IsNullOrWhiteSpace($env:MYSQL_PWD)) { + throw 'Please set MYSQL_PWD.' +} + +function ConvertTo-SqlValue($value) { + if ($null -eq $value -or [string]::IsNullOrWhiteSpace([string]$value)) { return 'NULL' } + return "'" + ([string]$value).Replace("'", "''") + "'" +} + +function Limit-Text($value, [int]$length) { + if ($null -eq $value) { return $null } + $text = [string]$value + if ($text.Length -le $length) { return $text } + return $text.Substring(0, $length) +} + +function ConvertTo-IsoDate($value) { + if ($null -eq $value -or [string]::IsNullOrWhiteSpace([string]$value)) { return $null } + return ([DateTime]::Parse([string]$value)).ToString('yyyy-MM-dd') +} + +function Join-Present([object[]]$values, [string]$separator) { + return (($values | Where-Object { $null -ne $_ -and -not [string]::IsNullOrWhiteSpace([string]$_) }) -join $separator) +} + +$loginBody = @{ + username = $env:SAS_USERNAME + password = $env:SAS_PASSWORD +} | ConvertTo-Json +$login = Invoke-RestMethod -Uri "$BaseUrl/auth/login" -Method Post -ContentType 'application/json' -Body $loginBody +if (-not $login.token) { throw 'SAS login did not return a token.' } +$headers = @{ Authorization = "Bearer $($login.token)" } +$hardware = (Invoke-RestMethod -Uri "$BaseUrl/hardware?limit=9999&page=1" -Headers $headers).data +$software = (Invoke-RestMethod -Uri "$BaseUrl/software?limit=9999&page=1" -Headers $headers).data +$simCards = (Invoke-RestMethod -Uri "$BaseUrl/sim?limit=9999&page=1" -Headers $headers).data + +$sql = New-Object System.Text.StringBuilder +[void]$sql.AppendLine('SET NAMES utf8mb4; START TRANSACTION;') +[void]$sql.AppendLine("SET @cat_hardware=(SELECT id FROM tbl_asset_category WHERE category_code='HARDWARE' LIMIT 1);") +[void]$sql.AppendLine("SET @cat_software=(SELECT id FROM tbl_asset_category WHERE category_code='SOFTWARE' LIMIT 1);") +[void]$sql.AppendLine("SET @cat_sim=(SELECT id FROM tbl_asset_category WHERE category_code='SIM_CARD' LIMIT 1);") +[void]$sql.AppendLine("SET @creator=(SELECT id FROM tbl_user WHERE IFNULL(delete_flag,'0')!='1' ORDER BY id LIMIT 1);") + +foreach ($item in $hardware) { + $code = if ([string]::IsNullOrWhiteSpace([string]$item.asset_code)) { "SAS-HW-$($item.id)" } else { [string]$item.asset_code } + $name = Join-Present @($item.brand, $item.model) ' ' + if ([string]::IsNullOrWhiteSpace($name)) { $name = Join-Present @($item.type, "硬件资产 $($item.id)") ' ' } + $specification = Limit-Text (Join-Present @( + $item.type, $item.brand, $item.model, $item.operating_system, $item.cpu, + $item.memory_capacity, $item.storage_capacity + ) ' / ') 150 + $status = switch ([string]$item.status) { + 'Dormant' { 'IDLE' } + 'Spoil' { 'REPAIR' } + 'Dispose' { 'SCRAPPED' } + default { 'IN_USE' } + } + $remark = Limit-Text (Join-Present @( + $(if ($item.serial_number) { "序列号: $($item.serial_number)" }), + $(if ($item.mac_address) { "MAC: $($item.mac_address)" }), + $(if ($item.purpose) { "用途: $($item.purpose)" }), + $(if ($item.remarks) { "原备注: $($item.remarks)" }) + ) ';') 500 + $values = @( + (ConvertTo-SqlValue (Limit-Text $code 64)), + (ConvertTo-SqlValue (Limit-Text $name 150)), + '@cat_hardware', + (ConvertTo-SqlValue '硬件资产'), + (ConvertTo-SqlValue $specification), + (ConvertTo-SqlValue '台'), + '1', '0', + (ConvertTo-SqlValue (ConvertTo-IsoDate $item.date_of_purchase)), + (ConvertTo-SqlValue (Limit-Text $item.department 100)), + (ConvertTo-SqlValue (Limit-Text $item.person_in_charge 100)), + (ConvertTo-SqlValue (Limit-Text $item.location 255)), + (ConvertTo-SqlValue $status), + (ConvertTo-SqlValue 'SAS'), + (ConvertTo-SqlValue 'HARDWARE'), + (ConvertTo-SqlValue ([string]$item.id)), + (ConvertTo-SqlValue $remark), + '@creator', "'0'", 'NOW()', 'NOW()' + ) -join ',' + $statement = "INSERT INTO tbl_asset " + + "(asset_code,asset_name,category_id,asset_category,specification,unit,quantity,original_value,purchase_date,use_department,keeper,location,status,source,external_source,external_id,remark,creator,delete_flag,create_time,update_time) " + + "VALUES($values) ON DUPLICATE KEY UPDATE " + + "asset_code=VALUES(asset_code),asset_name=VALUES(asset_name),category_id=VALUES(category_id)," + + "asset_category=VALUES(asset_category),specification=VALUES(specification),purchase_date=VALUES(purchase_date)," + + "use_department=VALUES(use_department),keeper=VALUES(keeper),location=VALUES(location),status=VALUES(status)," + + "remark=VALUES(remark),updater=@creator,delete_flag='0',update_time=NOW();" + [void]$sql.AppendLine($statement) +} + +foreach ($item in $software) { + $code = "SAS-SW-$($item.id)" + $name = if ([string]::IsNullOrWhiteSpace([string]$item.description)) { "软件资产 $($item.id)" } else { [string]$item.description } + $specification = Limit-Text (Join-Present @($item.vendor, $item.cd_cert) ' / ') 150 + $quantity = if ($null -eq $item.quantity -or [decimal]$item.quantity -le 0) { [decimal]1 } else { [decimal]$item.quantity } + $originalValue = if ($null -eq $item.price) { [decimal]0 } else { [decimal]$item.price * $quantity } + $quantityText = $quantity.ToString([System.Globalization.CultureInfo]::InvariantCulture) + $valueText = $originalValue.ToString([System.Globalization.CultureInfo]::InvariantCulture) + $remark = Limit-Text (Join-Present @( + $(if ($item.vendor) { "供应商: $($item.vendor)" }), + $(if ($item.license_key) { "许可证: $($item.license_key)" }), + $(if ($item.invoice_no) { "发票号: $($item.invoice_no)" }), + $(if ($item.remark) { "原备注: $($item.remark)" }) + ) ';') 500 + $values = @( + (ConvertTo-SqlValue $code), + (ConvertTo-SqlValue (Limit-Text $name 150)), + '@cat_software', + (ConvertTo-SqlValue '软件资产'), + (ConvertTo-SqlValue $specification), + (ConvertTo-SqlValue '套'), + $quantityText, $valueText, + (ConvertTo-SqlValue (ConvertTo-IsoDate $item.invoice_date)), + (ConvertTo-SqlValue (Limit-Text $item.department 100)), + 'NULL', 'NULL', + (ConvertTo-SqlValue 'IN_USE'), + (ConvertTo-SqlValue 'SAS'), + (ConvertTo-SqlValue 'SOFTWARE'), + (ConvertTo-SqlValue ([string]$item.id)), + (ConvertTo-SqlValue $remark), + '@creator', "'0'", 'NOW()', 'NOW()' + ) -join ',' + $statement = "INSERT INTO tbl_asset " + + "(asset_code,asset_name,category_id,asset_category,specification,unit,quantity,original_value,purchase_date,use_department,keeper,location,status,source,external_source,external_id,remark,creator,delete_flag,create_time,update_time) " + + "VALUES($values) ON DUPLICATE KEY UPDATE " + + "asset_name=VALUES(asset_name),category_id=VALUES(category_id),asset_category=VALUES(asset_category)," + + "specification=VALUES(specification),quantity=VALUES(quantity),original_value=VALUES(original_value)," + + "purchase_date=VALUES(purchase_date),use_department=VALUES(use_department),status=VALUES(status)," + + "remark=VALUES(remark),updater=@creator,delete_flag='0',update_time=NOW();" + [void]$sql.AppendLine($statement) +} + +foreach ($item in $simCards) { + $code = if ([string]::IsNullOrWhiteSpace([string]$item.sim_number)) { "SAS-SIM-$($item.id)" } else { "SIM-$($item.sim_number)" } + $name = if ([string]::IsNullOrWhiteSpace([string]$item.sim_number)) { "SIM卡 $($item.id)" } else { "SIM卡 $($item.sim_number)" } + $specification = Limit-Text (Join-Present @($item.ip_address, $item.comm_device, $item.comm_device_serial) ' / ') 150 + $status = if ([string]$item.status -eq 'Eliminated') { 'SCRAPPED' } else { 'IN_USE' } + $remark = Limit-Text (Join-Present @( + $(if ($item.comm_device_serial) { "设备序列号: $($item.comm_device_serial)" }), + $(if ($item.meter_serial) { "电表序列号: $($item.meter_serial)" }), + $(if ($item.duration) { "使用期限: $($item.duration)" }), + $(if ($item.date_activation) { "启用日期: $(ConvertTo-IsoDate $item.date_activation)" }) + ) ';') 500 + $values = @( + (ConvertTo-SqlValue (Limit-Text $code 64)), + (ConvertTo-SqlValue (Limit-Text $name 150)), + '@cat_sim', + (ConvertTo-SqlValue 'SIM卡'), + (ConvertTo-SqlValue $specification), + (ConvertTo-SqlValue '张'), + '1', '0', + (ConvertTo-SqlValue (ConvertTo-IsoDate $item.date_activation)), + 'NULL', + (ConvertTo-SqlValue (Limit-Text $item.owner 100)), + (ConvertTo-SqlValue (Limit-Text $item.location 255)), + (ConvertTo-SqlValue $status), + (ConvertTo-SqlValue 'SAS'), + (ConvertTo-SqlValue 'SIM'), + (ConvertTo-SqlValue ([string]$item.id)), + (ConvertTo-SqlValue $remark), + '@creator', "'0'", 'NOW()', 'NOW()' + ) -join ',' + $statement = "INSERT INTO tbl_asset " + + "(asset_code,asset_name,category_id,asset_category,specification,unit,quantity,original_value,purchase_date,use_department,keeper,location,status,source,external_source,external_id,remark,creator,delete_flag,create_time,update_time) " + + "VALUES($values) ON DUPLICATE KEY UPDATE " + + "asset_code=VALUES(asset_code),asset_name=VALUES(asset_name),category_id=VALUES(category_id)," + + "asset_category=VALUES(asset_category),specification=VALUES(specification),purchase_date=VALUES(purchase_date)," + + "keeper=VALUES(keeper),location=VALUES(location),status=VALUES(status),remark=VALUES(remark)," + + "updater=@creator,delete_flag='0',update_time=NOW();" + [void]$sql.AppendLine($statement) +} + +[void]$sql.AppendLine('COMMIT;') + +$OutputEncoding = New-Object System.Text.UTF8Encoding($false) +$sql.ToString() | & $MySqlPath -h $DatabaseHost -P $DatabasePort -u $DatabaseUser -D $DatabaseName --default-character-set=utf8mb4 +if ($LASTEXITCODE -ne 0) { throw "MySQL synchronization failed with exit code $LASTEXITCODE." } + +Write-Output "SYNCED hardware=$($hardware.Count) software=$($software.Count) sim=$($simCards.Count)" diff --git a/smtERP-boot/src/main/assembly/assembly.xml b/smtERP-boot/src/main/assembly/assembly.xml new file mode 100644 index 0000000..ea40299 --- /dev/null +++ b/smtERP-boot/src/main/assembly/assembly.xml @@ -0,0 +1,66 @@ + + + + bin + + + zip + + + true + + + + ${project.basedir}/target + + *.jar + + /lib + + + ${project.basedir}/src/main/resources + + *.properties + *.yml + *.yaml + *.xml + + /config + + + ${project.basedir}/src/main/bin + /bin + + run-manage.sh + + lf + + + ${project.basedir}/src/main/bin/ + / + + start.bat + restart.sh + start.sh + stop.sh + status.sh + + + + docs + /docs + + + ${project.basedir} + + *.md + *.txt + + / + + + \ No newline at end of file diff --git a/smtERP-boot/src/main/bin/restart.sh b/smtERP-boot/src/main/bin/restart.sh new file mode 100644 index 0000000..70c0be1 --- /dev/null +++ b/smtERP-boot/src/main/bin/restart.sh @@ -0,0 +1 @@ +./bin/run-manage.sh restart \ No newline at end of file diff --git a/smtERP-boot/src/main/bin/run-manage.sh b/smtERP-boot/src/main/bin/run-manage.sh new file mode 100644 index 0000000..a349a38 --- /dev/null +++ b/smtERP-boot/src/main/bin/run-manage.sh @@ -0,0 +1,133 @@ +#!/bin/bash + +SERVER_NAME=jshERP +readonly APP_HOME=${FILE_PATH:-$(dirname $(cd `dirname $0`; pwd))} +#readonly JAVA_HOME="" +readonly CONFIG_HOME="$APP_HOME/config/" +readonly LIB_HOME="$APP_HOME/lib" +readonly LOGS_HOME="$APP_HOME/logs" +readonly PID_FILE="$LOGS_HOME/application.pid" +readonly APP_MAIN_CLASS="jshERP.jar" +readonly LOG_CONFIG="$CONFIG_HOME/logback-spring.xml" +readonly JAVA_RUN="-Dlogs.home=$LOGS_HOME -Dlogging.config=$LOG_CONFIG -Dspring.config.location=file:$CONFIG_HOME -Dspring.pid.file=$PID_FILE -Dspring.pid.fail-on-write-error=true" +readonly JAVA_OPTS="-server -Xms128m -Xmx320m -XX:PermSize=128M -XX:MaxPermSize=256M $JAVA_RUN" +readonly JAVA="java" +PID=0 +if [ ! -x "$LOGS_HOME" ] +then + mkdir $LOGS_HOME +fi +chmod +x -R "$JAVA_HOME/bin/" +functions="/etc/functions.sh" +if test -f $functions ; then + . $functions +else + success() + { + echo " SUCCESS! $@" + } + failure() + { + echo " ERROR! $@" + } + warning() + { + echo "WARNING! $@" + } +fi +function checkpid() { + PID=$(ps -ef | grep $APP_MAIN_CLASS | grep -v 'grep' | awk '{print int($2)}') + if [[ -n "$PID" ]] + then + return 0 + else + return 1 + fi +} +function start() { + checkpid + if [[ $? -eq 0 ]] + then + warning "[$APP_MAIN_CLASS]: already started! (PID=$PID)" + else + echo -n "[$APP_MAIN_CLASS]: Starting ..." + JAVA_CMD="nohup $JAVA $JAVA_OPTS -jar $LIB_HOME/$APP_MAIN_CLASS > /dev/null 2>&1 &" + # echo "Exec cmmand : $JAVA_CMD" + sh -c "$JAVA_CMD" + sleep 3 + checkpid + if [[ $? -eq 0 ]] + then + success "(PID=$PID) " + else + failure " " + fi + fi +} +function stop() { + checkpid + if [[ $? -eq 0 ]]; + then + echo -n "[$APP_MAIN_CLASS]: Shutting down ...(PID=$PID) " + kill -9 $PID + if [[ $? -eq 0 ]]; + then + echo 0 > $PID_FILE + success " " + else + failure " " + fi + else + warning "[$APP_MAIN_CLASS]: is not running ..." + fi +} +function status() { + checkpid + if [[ $? -eq 0 ]] + then + success "[$APP_MAIN_CLASS]: is running! (PID=$PID)" + return 0 + else + failure "[$APP_MAIN_CLASS]: is not running" + return 1 + fi +} +function info() { + echo "System Information:" + echo + echo "****************************" + echo `head -n 1 /etc/issue` + echo `uname -a` + echo + echo "JAVA_HOME=$JAVA_HOME" + echo + echo "JAVA Environment Information:" + echo `$JAVA -version` + echo + echo "APP_HOME=$APP_HOME" + echo "APP_MAIN_CLASS=$APP_MAIN_CLASS" + echo + echo "****************************" +} +case "$1" in + 'start') + start + ;; + 'stop') + stop + ;; + 'restart') + stop + start + ;; + 'status') + status + ;; + 'info') + info + ;; + *) + echo "Usage: $0 {help|start|stop|restart|status|info}" + ;; +esac +exit 0 \ No newline at end of file diff --git a/smtERP-boot/src/main/bin/start.bat b/smtERP-boot/src/main/bin/start.bat new file mode 100644 index 0000000..37b8bb5 --- /dev/null +++ b/smtERP-boot/src/main/bin/start.bat @@ -0,0 +1,6 @@ +@echo off + +title jshERP + +java -Xms1000m -Xmx2000m -jar .\lib\jshERP.jar +pause over \ No newline at end of file diff --git a/smtERP-boot/src/main/bin/start.sh b/smtERP-boot/src/main/bin/start.sh new file mode 100644 index 0000000..d0bf067 --- /dev/null +++ b/smtERP-boot/src/main/bin/start.sh @@ -0,0 +1 @@ +./bin/run-manage.sh start \ No newline at end of file diff --git a/smtERP-boot/src/main/bin/status.sh b/smtERP-boot/src/main/bin/status.sh new file mode 100644 index 0000000..46d6537 --- /dev/null +++ b/smtERP-boot/src/main/bin/status.sh @@ -0,0 +1 @@ +./bin/run-manage.sh status \ No newline at end of file diff --git a/smtERP-boot/src/main/bin/stop.sh b/smtERP-boot/src/main/bin/stop.sh new file mode 100644 index 0000000..8f3414e --- /dev/null +++ b/smtERP-boot/src/main/bin/stop.sh @@ -0,0 +1 @@ +./bin/run-manage.sh stop \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/ErpApplication.java b/smtERP-boot/src/main/java/com/reallin/smt/ErpApplication.java new file mode 100644 index 0000000..73f7d5f --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/ErpApplication.java @@ -0,0 +1,28 @@ +package com.reallin.smt; + +import com.reallin.smt.utils.ComputerInfo; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.web.servlet.ServletComponentScan; +import org.springframework.context.ConfigurableApplicationContext; +import org.springframework.core.env.Environment; +import org.springframework.scheduling.annotation.EnableAsync; +import org.springframework.scheduling.annotation.EnableScheduling; + +import java.io.IOException; + +@SpringBootApplication +@MapperScan("com.reallin.smt.datasource.mappers") +@ServletComponentScan +@EnableScheduling +@EnableAsync +public class ErpApplication{ + public static void main(String[] args) throws IOException { + ConfigurableApplicationContext context = SpringApplication.run(ErpApplication.class, args); + Environment environment = context.getBean(Environment.class); + System.out.println("启动成功,后端服务API地址:http://" + ComputerInfo.getIpAddr() + ":" + + environment.getProperty("server.port") + "/jshERP-boot/doc.html"); + System.out.println("您还需启动前端服务,启动命令:yarn run serve 或 npm run serve,测试用户:admin,密码:123456"); + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/aspect/ApiLogAspect.java b/smtERP-boot/src/main/java/com/reallin/smt/aspect/ApiLogAspect.java new file mode 100644 index 0000000..90ed1e9 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/aspect/ApiLogAspect.java @@ -0,0 +1,164 @@ +package com.reallin.smt.aspect; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.serializer.ValueFilter; +import com.reallin.smt.datasource.entities.Log; +import com.reallin.smt.service.LogService; +import com.reallin.smt.service.UserService; +import com.reallin.smt.utils.Tools; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.reflect.CodeSignature; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; +import org.springframework.validation.BindingResult; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.annotation.Resource; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; +import java.util.Date; +import java.util.LinkedHashMap; +import java.util.Locale; +import java.util.Map; + +/** + * 统一记录 Controller 的 URL、入参和出参。 + */ +@Aspect +@Component +public class ApiLogAspect { + + private static final int MAX_TEXT_LENGTH = 20000; + private static final String MASKED = "******"; + private static final ValueFilter SENSITIVE_VALUE_FILTER = (object, name, value) -> + isSensitive(name) ? MASKED : value; + + @Resource + private LogService logService; + + @Resource + private UserService userService; + + @Around("execution(public * com.reallin.smt.controller..*(..)) && " + + "!within(com.reallin.smt.controller.LogController)") + public Object recordApiLog(ProceedingJoinPoint joinPoint) throws Throwable { + HttpServletRequest request = currentRequest(joinPoint.getArgs()); + Object result = null; + Throwable failure = null; + try { + result = joinPoint.proceed(); + return result; + } catch (Throwable throwable) { + failure = throwable; + throw throwable; + } finally { + if (request != null) { + saveLog(joinPoint, request, result, failure); + } + } + } + + private void saveLog(ProceedingJoinPoint joinPoint, HttpServletRequest request, + Object result, Throwable failure) { + try { + Log log = new Log(); + try { + log.setUserId(userService.getUserId(request)); + } catch (Exception ignored) { + // 登录等匿名接口允许 user_id 为空。 + } + log.setOperation("接口日志"); + log.setContent(joinPoint.getSignature().toShortString()); + log.setClientIp(Tools.getLocalIp(request)); + log.setCreateTime(new Date()); + log.setStatus((byte) (failure == null ? 0 : 1)); + log.setRequestUrl(buildRequestUrl(request)); + log.setRequestParams(toJson(buildArguments(joinPoint))); + log.setResponseParams(failure == null + ? toJson(result) + : limit(failure.getClass().getName() + ": " + failure.getMessage())); + logService.insertApiLog(log); + } catch (Exception e) { + LoggerFactory.getLogger(ApiLogAspect.class).warn("采集接口请求日志失败", e); + } + } + + private HttpServletRequest currentRequest(Object[] arguments) { + for (Object argument : arguments) { + if (argument instanceof HttpServletRequest) { + return (HttpServletRequest) argument; + } + } + ServletRequestAttributes attributes = + (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); + return attributes == null ? null : attributes.getRequest(); + } + + private String buildRequestUrl(HttpServletRequest request) { + return limit(request.getMethod() + " " + request.getRequestURI()); + } + + private Map buildArguments(ProceedingJoinPoint joinPoint) { + String[] names = ((CodeSignature) joinPoint.getSignature()).getParameterNames(); + Object[] values = joinPoint.getArgs(); + Map arguments = new LinkedHashMap<>(); + for (int i = 0; i < values.length; i++) { + Object value = values[i]; + if (value instanceof ServletRequest || value instanceof ServletResponse + || value instanceof BindingResult) { + continue; + } + String name = names != null && names.length > i ? names[i] : "arg" + i; + if (value instanceof MultipartFile) { + MultipartFile file = (MultipartFile) value; + Map fileInfo = new LinkedHashMap<>(); + fileInfo.put("name", file.getOriginalFilename()); + fileInfo.put("size", file.getSize()); + arguments.put(name, fileInfo); + } else { + arguments.put(name, value); + } + } + return arguments; + } + + private String toJson(Object value) { + if (value == null) { + return null; + } + try { + if (value instanceof String) { + String text = ((String) value).trim(); + if ((text.startsWith("{") && text.endsWith("}")) + || (text.startsWith("[") && text.endsWith("]"))) { + return limit(JSON.toJSONString(JSON.parse(text), SENSITIVE_VALUE_FILTER)); + } + } + return limit(JSON.toJSONString(value, SENSITIVE_VALUE_FILTER)); + } catch (Exception e) { + return limit(String.valueOf(value)); + } + } + + private String limit(String value) { + if (value == null || value.length() <= MAX_TEXT_LENGTH) { + return value; + } + return value.substring(0, MAX_TEXT_LENGTH) + "...[已截断]"; + } + + private static boolean isSensitive(String name) { + if (name == null) { + return false; + } + String normalized = name.toLowerCase(Locale.ROOT); + return normalized.contains("password") || normalized.contains("passwd") + || normalized.contains("pwd") || normalized.contains("token") + || normalized.contains("secret") || normalized.contains("authorization"); + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/base/AjaxResult.java b/smtERP-boot/src/main/java/com/reallin/smt/base/AjaxResult.java new file mode 100644 index 0000000..356e2ea --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/base/AjaxResult.java @@ -0,0 +1,228 @@ +package com.reallin.smt.base; + +import com.reallin.smt.utils.StringUtil; + +import java.util.HashMap; +import java.util.Objects; + +/** + * 操作消息提醒 + * + * @author ji-sheng-hua + */ +public class AjaxResult extends HashMap +{ + private static final long serialVersionUID = 1L; + + /** 状态码 */ + public static final String CODE_TAG = "code"; + + /** 返回内容 */ + public static final String MSG_TAG = "msg"; + + /** 数据对象 */ + public static final String DATA_TAG = "data"; + + /** + * 状态类型 + */ + public enum Type + { + /** 成功 */ + SUCCESS(0), + /** 警告 */ + WARN(301), + /** 错误 */ + ERROR(500); + private final int value; + + Type(int value) + { + this.value = value; + } + + public int value() + { + return this.value; + } + } + + /** + * 初始化一个新创建的 AjaxResult 对象,使其表示一个空消息。 + */ + public AjaxResult() + { + } + + /** + * 初始化一个新创建的 AjaxResult 对象 + * + * @param type 状态类型 + * @param msg 返回内容 + */ + public AjaxResult(Type type, String msg) + { + super.put(CODE_TAG, type.value); + super.put(MSG_TAG, msg); + } + + /** + * 初始化一个新创建的 AjaxResult 对象 + * + * @param type 状态类型 + * @param msg 返回内容 + * @param data 数据对象 + */ + public AjaxResult(Type type, String msg, Object data) + { + super.put(CODE_TAG, type.value); + super.put(MSG_TAG, msg); + if (StringUtil.isNotNull(data)) + { + super.put(DATA_TAG, data); + } + } + + /** + * 返回成功消息 + * + * @return 成功消息 + */ + public static AjaxResult success() + { + return AjaxResult.success("操作成功"); + } + + /** + * 返回成功数据 + * + * @return 成功消息 + */ + public static AjaxResult success(Object data) + { + return AjaxResult.success("操作成功", data); + } + + /** + * 返回成功消息 + * + * @param msg 返回内容 + * @return 成功消息 + */ + public static AjaxResult success(String msg) + { + return AjaxResult.success(msg, null); + } + + /** + * 返回成功消息 + * + * @param msg 返回内容 + * @param data 数据对象 + * @return 成功消息 + */ + public static AjaxResult success(String msg, Object data) + { + return new AjaxResult(Type.SUCCESS, msg, data); + } + + /** + * 返回警告消息 + * + * @param msg 返回内容 + * @return 警告消息 + */ + public static AjaxResult warn(String msg) + { + return AjaxResult.warn(msg, null); + } + + /** + * 返回警告消息 + * + * @param msg 返回内容 + * @param data 数据对象 + * @return 警告消息 + */ + public static AjaxResult warn(String msg, Object data) + { + return new AjaxResult(Type.WARN, msg, data); + } + + /** + * 返回错误消息 + * + * @return + */ + public static AjaxResult error() + { + return AjaxResult.error("操作失败"); + } + + /** + * 返回错误消息 + * + * @param msg 返回内容 + * @return 警告消息 + */ + public static AjaxResult error(String msg) + { + return AjaxResult.error(msg, null); + } + + /** + * 返回错误消息 + * + * @param msg 返回内容 + * @param data 数据对象 + * @return 警告消息 + */ + public static AjaxResult error(String msg, Object data) + { + return new AjaxResult(Type.ERROR, msg, data); + } + + /** + * 是否为成功消息 + * + * @return 结果 + */ + public boolean isSuccess() + { + return Objects.equals(Type.SUCCESS.value, this.get(CODE_TAG)); + } + + /** + * 是否为警告消息 + * + * @return 结果 + */ + public boolean isWarn() + { + return Objects.equals(Type.WARN.value, this.get(CODE_TAG)); + } + + /** + * 是否为错误消息 + * + * @return 结果 + */ + public boolean isError() + { + return Objects.equals(Type.ERROR.value, this.get(CODE_TAG)); + } + + /** + * 方便链式调用 + * + * @param key 键 + * @param value 值 + * @return 数据对象 + */ + @Override + public AjaxResult put(String key, Object value) + { + super.put(key, value); + return this; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/base/BaseController.java b/smtERP-boot/src/main/java/com/reallin/smt/base/BaseController.java new file mode 100644 index 0000000..f875634 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/base/BaseController.java @@ -0,0 +1,158 @@ +package com.reallin.smt.base; + +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.reallin.smt.utils.PageUtils; +import com.reallin.smt.utils.ServletUtils; +import com.reallin.smt.utils.SqlUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * web层通用数据处理 + * + * @author ji-sheng-hua + */ +public class BaseController +{ + protected final Logger logger = LoggerFactory.getLogger(this.getClass()); + + /** + * 设置请求分页数据 + */ + protected void startPage() + { + PageUtils.startPage(); + } + + /** + * 设置请求排序数据 + */ + protected void startOrderBy() + { + PageDomain pageDomain = TableSupport.buildPageRequest(); + if (StringUtils.isNotEmpty(pageDomain.getOrderBy())) + { + String orderBy = SqlUtil.escapeOrderBySql(pageDomain.getOrderBy()); + PageHelper.orderBy(orderBy); + } + } + + /** + * 清理分页的线程变量 + */ + protected void clearPage() + { + PageUtils.clearPage(); + } + + /** + * 获取request + */ + public HttpServletRequest getRequest() + { + return ServletUtils.getRequest(); + } + + /** + * 获取response + */ + public HttpServletResponse getResponse() + { + return ServletUtils.getResponse(); + } + + /** + * 获取session + */ + public HttpSession getSession() + { + return getRequest().getSession(); + } + + /** + * 响应请求分页数据 + */ + @SuppressWarnings({ "rawtypes", "unchecked" }) + protected TableDataInfo getDataTable(List list) + { + Map data = new HashMap<>(); + TableDataInfo rspData = new TableDataInfo(); + rspData.setCode(200); + data.put("rows", list); + data.put("total", new PageInfo(list).getTotal()); + rspData.setData(data); + return rspData; + } + + /** + * 响应返回结果 + * + * @param rows 影响行数 + * @return 操作结果 + */ + protected AjaxResult toAjax(int rows) + { + return rows > 0 ? success() : error(); + } + + /** + * 响应返回结果 + * + * @param result 结果 + * @return 操作结果 + */ + protected AjaxResult toAjax(boolean result) + { + return result ? success() : error(); + } + + /** + * 返回成功 + */ + public AjaxResult success() + { + return AjaxResult.success(); + } + + /** + * 返回失败消息 + */ + public AjaxResult error() + { + return AjaxResult.error(); + } + + /** + * 返回成功消息 + */ + public AjaxResult success(String message) + { + return AjaxResult.success(message); + } + + /** + * 返回成功数据 + */ + public static AjaxResult success(Object data) + { + return AjaxResult.success("操作成功", data); + } + + /** + * 返回失败消息 + */ + public AjaxResult error(String message) + { + return AjaxResult.error(message); + } + +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/base/PageDomain.java b/smtERP-boot/src/main/java/com/reallin/smt/base/PageDomain.java new file mode 100644 index 0000000..876e511 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/base/PageDomain.java @@ -0,0 +1,87 @@ +package com.reallin.smt.base; + +import com.reallin.smt.utils.StringUtil; + +/** + * 分页数据 + * + * @author ji-sheng-hua + */ +public class PageDomain +{ + /** 当前记录起始索引 */ + private Integer currentPage; + + /** 每页显示记录数 */ + private Integer pageSize; + + /** 排序列 */ + private String orderByColumn; + + /** 排序的方向desc或者asc */ + private String isAsc = "asc"; + + /** 分页参数合理化 */ + private Boolean reasonable = true; + + public String getOrderBy() + { + if (StringUtil.isEmpty(orderByColumn)) + { + return ""; + } + return StringUtil.toUnderScoreCase(orderByColumn) + " " + isAsc; + } + + public Integer getCurrentPage() { + return currentPage; + } + + public void setCurrentPage(Integer currentPage) { + this.currentPage = currentPage; + } + + public Integer getPageSize() + { + return pageSize; + } + + public void setPageSize(Integer pageSize) + { + this.pageSize = pageSize; + } + + public String getOrderByColumn() + { + return orderByColumn; + } + + public void setOrderByColumn(String orderByColumn) + { + this.orderByColumn = orderByColumn; + } + + public String getIsAsc() + { + return isAsc; + } + + public void setIsAsc(String isAsc) + { + this.isAsc = isAsc; + } + + public Boolean getReasonable() + { + if (StringUtil.isNull(reasonable)) + { + return Boolean.TRUE; + } + return reasonable; + } + + public void setReasonable(Boolean reasonable) + { + this.reasonable = reasonable; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/base/TableDataInfo.java b/smtERP-boot/src/main/java/com/reallin/smt/base/TableDataInfo.java new file mode 100644 index 0000000..1809ee5 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/base/TableDataInfo.java @@ -0,0 +1,44 @@ +package com.reallin.smt.base; + +import java.io.Serializable; + +/** + * 表格分页数据对象 + * + * @author ji-sheng-hua + */ +public class TableDataInfo implements Serializable +{ + private static final long serialVersionUID = 1L; + + /** 消息状态码 */ + private int code; + + /** 消息状态码 */ + private Object data; + + /** + * 表格数据对象 + */ + public TableDataInfo() + { + } + + public int getCode() + { + return code; + } + + public void setCode(int code) + { + this.code = code; + } + + public Object getData() { + return data; + } + + public void setData(Object data) { + this.data = data; + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/base/TableSupport.java b/smtERP-boot/src/main/java/com/reallin/smt/base/TableSupport.java new file mode 100644 index 0000000..cc1bfc7 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/base/TableSupport.java @@ -0,0 +1,56 @@ +package com.reallin.smt.base; + +import com.reallin.smt.utils.Convert; +import com.reallin.smt.utils.ServletUtils; + +/** + * 表格数据处理 + * + * @author ji-sheng-hua + */ +public class TableSupport +{ + /** + * 当前记录起始索引 + */ + public static final String CURRENT_PAGE = "currentPage"; + + /** + * 每页显示记录数 + */ + public static final String PAGE_SIZE = "pageSize"; + + /** + * 排序列 + */ + public static final String ORDER_BY_COLUMN = "orderByColumn"; + + /** + * 排序的方向 "desc" 或者 "asc". + */ + public static final String IS_ASC = "isAsc"; + + /** + * 分页参数合理化 + */ + public static final String REASONABLE = "reasonable"; + + /** + * 封装分页对象 + */ + public static PageDomain getPageDomain() + { + PageDomain pageDomain = new PageDomain(); + pageDomain.setCurrentPage(Convert.toInt(ServletUtils.getParameter(CURRENT_PAGE), 1)); + pageDomain.setPageSize(Convert.toInt(ServletUtils.getParameter(PAGE_SIZE), 10)); + pageDomain.setOrderByColumn(ServletUtils.getParameter(ORDER_BY_COLUMN)); + pageDomain.setIsAsc(ServletUtils.getParameter(IS_ASC)); + pageDomain.setReasonable(ServletUtils.getParameterToBool(REASONABLE)); + return pageDomain; + } + + public static PageDomain buildPageRequest() + { + return getPageDomain(); + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/config/PluginBeanConfig.java b/smtERP-boot/src/main/java/com/reallin/smt/config/PluginBeanConfig.java new file mode 100644 index 0000000..4d06f59 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/config/PluginBeanConfig.java @@ -0,0 +1,24 @@ +package com.reallin.smt.config; + +import com.gitee.starblues.extension.mybatis.SpringBootMybatisExtension; +import com.gitee.starblues.integration.application.AutoPluginApplication; +import com.gitee.starblues.integration.application.PluginApplication; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * @Author: jishenghua + * @Version: 1.0 + * @Create Date Time: 2019-05-30 15:53 + * @Update Date Time: + * @see + */ +@Configuration +public class PluginBeanConfig { + @Bean + public PluginApplication pluginApplication(){ + PluginApplication pluginApplication = new AutoPluginApplication(); + pluginApplication.addExtension(new SpringBootMybatisExtension()); + return pluginApplication; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/config/PluginConfiguration.java b/smtERP-boot/src/main/java/com/reallin/smt/config/PluginConfiguration.java new file mode 100644 index 0000000..92c6d51 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/config/PluginConfiguration.java @@ -0,0 +1,104 @@ +package com.reallin.smt.config; + +import com.gitee.starblues.integration.DefaultIntegrationConfiguration; +import org.pf4j.RuntimeMode; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + + +/** + * @Description: + * @Author: jishenghua + * @Version: 1.0 + * @Create Date Time: 2019-05-25 12:36 + * @Update Date Time: + * @see + */ +@Component +@ConfigurationProperties(prefix = "plugin") +public class PluginConfiguration extends DefaultIntegrationConfiguration { + + /** + * 运行模式 + * 开发环境: development、dev + * 生产/部署 环境: deployment、prod + */ + @Value("${runMode:dev}") + private String runMode; + + @Value("${pluginPath:plugins}") + private String pluginPath; + + @Value("${pluginConfigFilePath:pluginConfigs}") + private String pluginConfigFilePath; + + @Override + public RuntimeMode environment() { + return RuntimeMode.byName(runMode); + } + + @Override + public String pluginPath() { + return pluginPath; + } + + @Override + public String pluginConfigFilePath() { + return pluginConfigFilePath; + } + + @Override + public String uploadTempPath() { + return "temp"; + } + + @Override + public String backupPath() { + return "backupPlugin"; + } + + @Override + public String pluginRestControllerPathPrefix() { + return "/api/plugin"; + } + + @Override + public boolean enablePluginIdRestControllerPathPrefix() { + return true; + } + + public String getRunMode() { + return runMode; + } + + public void setRunMode(String runMode) { + this.runMode = runMode; + } + + + public String getPluginPath() { + return pluginPath; + } + + public void setPluginPath(String pluginPath) { + this.pluginPath = pluginPath; + } + + public String getPluginConfigFilePath() { + return pluginConfigFilePath; + } + + public void setPluginConfigFilePath(String pluginConfigFilePath) { + this.pluginConfigFilePath = pluginConfigFilePath; + } + + @Override + public String toString() { + return "PluginArgConfiguration{" + + "runMode='" + runMode + '\'' + + ", pluginPath='" + pluginPath + '\'' + + ", pluginConfigFilePath='" + pluginConfigFilePath + '\'' + + '}'; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/config/Swagger2Config.java b/smtERP-boot/src/main/java/com/reallin/smt/config/Swagger2Config.java new file mode 100644 index 0000000..b2f06ab --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/config/Swagger2Config.java @@ -0,0 +1,44 @@ +package com.reallin.smt.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import springfox.documentation.builders.ApiInfoBuilder; +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.service.ApiInfo; +import springfox.documentation.service.Contact; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spring.web.plugins.Docket; +import springfox.documentation.swagger2.annotations.EnableSwagger2; + +/** + * 插件集成配置 + * + * @author jishenghua + * @version 1.0 + */ +@Configuration +@EnableSwagger2 +public class Swagger2Config { + + @Bean + public Docket createRestApi() { + return new Docket(DocumentationType.SWAGGER_2) + .apiInfo(this.apiInfo()) + .select() + .apis(RequestHandlerSelectors.any()) + .paths(PathSelectors.any()) + .build(); + } + + private ApiInfo apiInfo() { + return new ApiInfoBuilder() + .title("SMT Restful Api") + .description("SMT接口描述") + .termsOfServiceUrl("http://127.0.0.1") + .contact(new Contact("jishenghua", "", "")) + .version("3.0") + .build(); + } + +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/config/TenantConfig.java b/smtERP-boot/src/main/java/com/reallin/smt/config/TenantConfig.java new file mode 100644 index 0000000..c8f314b --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/config/TenantConfig.java @@ -0,0 +1,38 @@ +package com.reallin.smt.config; + +import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; +import org.mybatis.spring.mapper.MapperScannerConfigurer; +import org.springframework.context.annotation.Bean; +import org.springframework.stereotype.Service; + + +@Service +public class TenantConfig { + + @Bean + public PaginationInterceptor paginationInterceptor() { + return new PaginationInterceptor(); + } + + /** + * 相当于顶部的: + * {@code @MapperScan("com.reallin.smt.datasource.mappers*")} + * 这里可以扩展,比如使用配置文件来配置扫描Mapper的路径 + */ + @Bean + public MapperScannerConfigurer mapperScannerConfigurer() { + MapperScannerConfigurer scannerConfigurer = new MapperScannerConfigurer(); + scannerConfigurer.setBasePackage("com.reallin.smt.datasource.mappers*"); + return scannerConfigurer; + } + + /** + * 性能分析拦截器,不建议生产使用 + */ +// @Bean +// public PerformanceInterceptor performanceInterceptor(){ +// return new PerformanceInterceptor(); +// } + + +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/constants/BusinessConstants.java b/smtERP-boot/src/main/java/com/reallin/smt/constants/BusinessConstants.java new file mode 100644 index 0000000..2d6001c --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/constants/BusinessConstants.java @@ -0,0 +1,288 @@ +package com.reallin.smt.constants; + +/** + * @ClassName:BusinessConstants + * @Description 业务字典类 + * @Author qiankunpingtai + * @Date 2019-3-6 17:58 + * @Version 1.0 + **/ +public class BusinessConstants { + + /** + * 默认的日期格式 + */ + public static final String DEFAULT_DATETIME_FORMAT = "yyyy-MM-dd HH:mm:ss"; + /** + * 一天的初始时间 + */ + public static final String DAY_FIRST_TIME = " 00:00:00"; + /** + * 一天的结束时间 + */ + public static final String DAY_LAST_TIME = " 23:59:59"; + /** + * 默认的分页起始页页码 + */ + public static final Integer DEFAULT_PAGINATION_PAGE_NUMBER = 1; + /** + * 无数据时列表返回的默认数据条数 + */ + public static final Long DEFAULT_LIST_NULL_NUMBER = 0L; + /** + * 默认的分页条数 + */ + public static final Integer DEFAULT_PAGINATION_PAGE_SIZE = 10; + /** + * 单据主表出入库类型 type 入库 出库 其它 + * depothead + * */ + public static final String DEPOTHEAD_TYPE_IN = "入库"; + public static final String DEPOTHEAD_TYPE_OUT = "出库"; + public static final String DEPOTHEAD_TYPE_OTHER = "其它"; + /** + * 付款类型 payType //现付/预付款 + * */ + public static final String PAY_TYPE_PREPAID = "预付款"; + public static final String PAY_TYPE_BY_CASH = "现付"; + /** + * 删除标记 deleteFlag '0'未删除 '1'已删除 + * */ + public static final String DELETE_FLAG_DELETED = "1"; + public static final String DELETE_FLAG_EXISTS = "0"; + /** + * 是否卖出 isSell '0'未卖出 '1'已卖出 + * */ + public static final String IS_SELL_SELLED = "1"; + public static final String IS_SELL_HOLD = "0"; + /** + * 商品是否开启序列号标识enableSerialNumber '0'未启用 '1'启用 + * */ + public static final String ENABLE_SERIAL_NUMBER_ENABLED = "1"; + public static final String ENABLE_SERIAL_NUMBER_NOT_ENABLED = "0"; + /** + * 商品是否开启批号标识enableBatchNumber '0'未启用 '1'启用 + * */ + public static final String ENABLE_BATCH_NUMBER_ENABLED = "1"; + public static final String ENABLE_BATCH_NUMBER_NOT_ENABLED = "0"; + /** + * 单据状态 billsStatus '0'未审核 '1'审核 '2'完成采购|销售 '3'部分采购|销售 + * */ + public static final String BILLS_STATUS_UN_AUDIT = "0"; + public static final String BILLS_STATUS_AUDIT = "1"; + public static final String BILLS_STATUS_SKIPED = "2"; + public static final String BILLS_STATUS_SKIPING = "3"; + /** + * 单据-采购状态 purchaseStatus '0'未采购、'2'完成采购、'3'部分采购 + * */ + public static final String PURCHASE_STATUS_UN_AUDIT = "0"; + public static final String PURCHASE_STATUS_SKIPED = "2"; + public static final String PURCHASE_STATUS_SKIPING = "3"; + /** + * 出入库分类 + * 请购单、采购、采购退货、其它、零售、销售、调拨、盘点复盘等 + * */ + public static final String SUB_TYPE_PURCHASE_APPLY = "请购单"; + public static final String SUB_TYPE_PURCHASE_ORDER = "采购订单"; + public static final String SUB_TYPE_PURCHASE = "采购"; + public static final String SUB_TYPE_PURCHASE_RETURN = "采购退货"; + public static final String SUB_TYPE_OTHER = "其它"; + public static final String SUB_TYPE_RETAIL = "零售"; + public static final String SUB_TYPE_RETAIL_RETURN = "零售退货"; + public static final String SUB_TYPE_SALES_ORDER = "销售订单"; + public static final String SUB_TYPE_SALES = "销售"; + public static final String SUB_TYPE_SALES_RETURN = "销售退货"; + public static final String SUB_TYPE_TRANSFER = "调拨"; + public static final String SUB_TYPE_CHECK_ENTER = "盘点录入"; + public static final String SUB_TYPE_REPLAY = "盘点复盘"; + public static final String SUB_TYPE_ASSEMBLE = "组装单"; + public static final String SUB_TYPE_DISASSEMBLE = "拆卸单"; + /** + * 生产类型分类 + * 生产领料出库 + * */ + public static final String SUB_TYPE_PRODUCE_REQUISITION = "生产领料"; + /** + * 生产工单状态 + * 0已创建、1已下达、2生产中、3已完工、4已关闭 + * */ + public static final String PRODUCTION_ORDER_STATUS_CREATED = "0"; + public static final String PRODUCTION_ORDER_STATUS_RELEASED = "1"; + public static final String PRODUCTION_ORDER_STATUS_PRODUCING = "2"; + public static final String PRODUCTION_ORDER_STATUS_FINISHED = "3"; + public static final String PRODUCTION_ORDER_STATUS_CLOSED = "4"; + /** + * 生产领料单状态 + * 0待确认、1已发料、2已驳回 + * */ + public static final String PRODUCTION_REQUISITION_STATUS_WAIT = "0"; + public static final String PRODUCTION_REQUISITION_STATUS_ISSUED = "1"; + public static final String PRODUCTION_REQUISITION_STATUS_REJECT = "2"; + /** + * 完工报告审核状态 + * 0待审核、1已审核、2已驳回 + * */ + public static final String PRODUCTION_REPORT_AUDIT_WAIT = "0"; + public static final String PRODUCTION_REPORT_AUDIT_PASS = "1"; + public static final String PRODUCTION_REPORT_AUDIT_REJECT = "2"; + /** + * 生产类型分类 + * 生产入库 + * */ + public static final String BILL_TYPE_PRODUCE_IN = "生产入库"; + /** + * 财务单据分类 + * 收款、付款、转账 + * */ + public static final String TYPE_MONEY_IN = "收款"; + public static final String TYPE_MONEY_OUT = "付款"; + public static final String TYPE_GIRO = "转账"; + /** + * 批量插入sql时最大的数据条数 + * */ + public static final int BATCH_INSERT_MAX_NUMBER = 500; + /** + * sequence名称 + * */ + //sequence返回字符串的最小长度 + public static final Long SEQ_TO_STRING_MIN_LENGTH = 10000000000L; + //sequence长度小于基准长度时前追加基础值 + public static final String SEQ_TO_STRING_LESS_INSERT = "0"; + //单据编号 + public static final String DEPOT_NUMBER_SEQ = "depot_number_seq"; + /** + * 商品类别根目录id + * */ + /** + * create by: qiankunpingtai + * create time: 2019/3/14 11:41 + * description: + * 为了使用户可以自己建初始目录,设定根目录的父级目录id为-1 + * + */ + public static final Long MATERIAL_CATEGORY_ROOT_PARENT_ID = -1L; + /** + * 商品类别状态 + * 0系统默认,1启用,2删除 + * */ + public static final String MATERIAL_CATEGORY_STATUS_DEFAULT = "0"; + public static final String MATERIAL_CATEGORY_STATUS_ENABLE = "1"; + public static final String MATERIAL_CATEGORY_STATUS_DELETE = "2"; + /** + * 部门状态 + * 1未营业、2正常营业、3暂停营业、4终止营业,5已除名 + * */ + public static final String ORGANIZATION_STCD_NOT_OPEN = "1"; + public static final String ORGANIZATION_STCD_OPEN = "2"; + public static final String ORGANIZATION_STCD_BUSINESS_SUSPENDED = "3"; + public static final String ORGANIZATION_STCD_BUSINESS_TERMINATED = "4"; + public static final String ORGANIZATION_STCD_REMOVED = "5"; + /** + * 根部门父级编号 + * 根机父级构编号默认为-1 + * */ + public static final String ORGANIZATION_ROOT_PARENT_NO = "-1"; + /** + * 新增用户默认密码 + * */ + public static final String USER_DEFAULT_PASSWORD = "123456"; + /** + * 用户是否系统自带 + * 0、非系统自带,1系统自带 + * */ + public static final byte USER_NOT_SYSTEM = 0; + public static final byte USER_IS_SYSTEM = 1; + /** + * 用户是否为管理者 + * 0、管理者,1员工 + * */ + public static final byte USER_IS_MANAGER = 0; + public static final byte USER_NOT_MANAGER = 1; + /** + * 用户状态 + * 0:正常,2封禁 + * */ + public static final byte USER_STATUS_NORMAL = 0; + public static final byte USER_STATUS_BANNED = 2; + /** + * 日志操作 + * 新增、修改、删除、登录、导入 + * */ + public static final String LOG_OPERATION_TYPE_ADD = "新增"; + public static final String LOG_OPERATION_TYPE_BATCH_ADD = "批量新增"; + public static final String LOG_OPERATION_TYPE_EDIT = "修改"; + public static final String LOG_OPERATION_TYPE_DELETE = "删除"; + public static final String LOG_OPERATION_TYPE_LOGIN = "登录"; + public static final String LOG_OPERATION_TYPE_IMPORT = "导入"; + public static final String LOG_OPERATION_TYPE_ENABLED = "更新状态"; + + /** + * 数据数量单位 + * 条 + * */ + public static final String LOG_DATA_UNIT = "条"; + + /** + * 删除类型 + * 1正常删除 + * 2强制删除 + * */ + public static final String DELETE_TYPE_NORMAL = "1"; + public static final String DELETE_TYPE_FORCE = "2"; + + /** + * 默认管理员账号 + */ + public static final String DEFAULT_MANAGER = "admin"; + + /** + * 权限管理按钮所属菜单地址 + */ + public static final String PERMISSION_MANAGEMENT_URL = "/system/role"; + + /** + * 权限管理按钮编号 + */ + public static final String PERMISSION_MANAGEMENT_BUTTON = "8"; + + public static final String ROLE_TYPE_PRIVATE = "个人数据"; + + public static final String ROLE_TYPE_THIS_ORG = "本部门数据"; + + public static final String ROLE_TYPE_PUBLIC = "全部数据"; + + /** + * 字典管理 cache key + */ + public static final String SYS_DICT_KEY = "sys_dict:"; + + /** + * redis相关 + * */ + //session的生命周期,秒 + public static final Long MAX_SESSION_IN_SECONDS=60*60*24*3L; + + /** + * 验证码 redis key + */ + public static final String CAPTCHA_CODE_KEY = "captcha_codes:"; + /** + * 验证码有效期(分钟) + */ + public static final Integer CAPTCHA_EXPIRATION = 2; + + /** + * 微信登录接口 + */ + public static final String WEIXIN_LOGIN = "/sns/jscode2session"; + + /** + * 微信获取token接口 + */ + public static final String WEIXIN_TOKEN = "/cgi-bin/token"; + + /** + * 微信发送订阅消息接口 + */ + public static final String WEIXIN_MESSAGE_SEND = "/cgi-bin/message/subscribe/send"; +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/constants/ExceptionConstants.java b/smtERP-boot/src/main/java/com/reallin/smt/constants/ExceptionConstants.java new file mode 100644 index 0000000..8714f9a --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/constants/ExceptionConstants.java @@ -0,0 +1,633 @@ +package com.reallin.smt.constants; + +import com.alibaba.fastjson.JSONObject; + +public class ExceptionConstants { + /** + * code 格式 type+五位数字,例如3500000 + * ResourceInfo(value = "inOutItem", type = 35) + * + * */ + + public static final String GLOBAL_RETURNS_CODE = "code"; + public static final String GLOBAL_RETURNS_MESSAGE = "msg"; + public static final String GLOBAL_RETURNS_DATA = "data"; + + /** + * 正常返回/操作成功 + **/ + public static final int SERVICE_SUCCESS_CODE = 200; + public static final String SERVICE_SUCCESS_MSG = "操作成功"; + /** + * 数据查询异常 + */ + public static final int DATA_READ_FAIL_CODE = 300; + public static final String DATA_READ_FAIL_MSG = "数据查询异常"; + /** + * 数据写入异常 + */ + public static final int DATA_WRITE_FAIL_CODE = 301; + public static final String DATA_WRITE_FAIL_MSG = "数据写入异常"; + + /** + * 系统运行时未知错误 + **/ + public static final int SERVICE_SYSTEM_ERROR_CODE = 500; + public static final String SERVICE_SYSTEM_ERROR_MSG = "未知异常"; + /** + * 检测到存在依赖数据,是否强制删除? + **/ + public static final int DELETE_FORCE_CONFIRM_CODE = 601; + public static final String DELETE_FORCE_CONFIRM_MSG = "检测到存在依赖数据,不能删除!"; + + /** + * 文件扩展名必须为xls + **/ + public static final int FILE_EXTENSION_ERROR_CODE = 701; + public static final String FILE_EXTENSION_ERROR_MSG = "文件扩展名必须为xls"; + + /** + * 用户信息 + * type = 5 + * */ + //添加用户信息失败 + public static final int USER_ADD_FAILED_CODE = 500000; + public static final String USER_ADD_FAILED_MSG = "添加用户信息失败"; + //删除用户信息失败 + public static final int USER_DELETE_FAILED_CODE = 500001; + public static final String USER_DELETE_FAILED_MSG = "删除用户信息失败"; + //修改用户信息失败 + public static final int USER_EDIT_FAILED_CODE = 500002; + public static final String USER_EDIT_FAILED_MSG = "修改用户信息失败"; + //登录名已存在 + public static final int USER_LOGIN_NAME_ALREADY_EXISTS_CODE = 500003; + public static final String USER_LOGIN_NAME_ALREADY_EXISTS_MSG = "登录名在本系统已存在"; + //用户录入数量超出限制 + public static final int USER_OVER_LIMIT_FAILED_CODE = 500004; + public static final String USER_OVER_LIMIT_FAILED_MSG = "用户录入数量超出限制,请联系平台管理员"; + //此用户名限制使用 + public static final int USER_NAME_LIMIT_USE_CODE = 500005; + public static final String USER_NAME_LIMIT_USE_MSG = "此用户名限制使用"; + //启用的用户数量超出限制 + public static final int USER_ENABLE_OVER_LIMIT_FAILED_CODE = 500006; + public static final String USER_ENABLE_OVER_LIMIT_FAILED_MSG = "启用的用户数量超出限制,请联系平台管理员"; + //租户不能被删除 + public static final int USER_LIMIT_TENANT_DELETE_CODE = 500008; + public static final String USER_LIMIT_TENANT_DELETE_MSG = "抱歉,租户不能被删除"; + //当前部门已经存在经理 + public static final int USER_LEADER_IS_EXIST_CODE = 500009; + public static final String USER_LEADER_IS_EXIST_MSG = "抱歉,当前部门已经存在经理"; + //验证码错误 + public static final int USER_JCAPTCHA_ERROR_CODE = 500010; + public static final String USER_JCAPTCHA_ERROR_MSG = "验证码错误"; + //验证码已失效 + public static final int USER_JCAPTCHA_EXPIRE_CODE = 500011; + public static final String USER_JCAPTCHA_EXPIRE_MSG = "验证码已失效"; + //验证码不能为空 + public static final int USER_JCAPTCHA_EMPTY_CODE = 500012; + public static final String USER_JCAPTCHA_EMPTY_MSG = "验证码不能为空"; + //当前角色的数据类型是本部门数据,所以必须选择部门 + public static final int USER_ROLE_ORGA_EMPTY_CODE = 500013; + public static final String USER_ROLE_ORGA_EMPTY_MSG = "当前角色的数据类型是本部门数据,所以必须选择部门"; + + /** + * 角色信息 + * type = 10 + * */ + //添加角色信息失败 + public static final int ROLE_ADD_FAILED_CODE = 1000000; + public static final String ROLE_ADD_FAILED_MSG = "添加角色信息失败"; + //删除角色信息失败 + public static final int ROLE_DELETE_FAILED_CODE = 1000001; + public static final String ROLE_DELETE_FAILED_MSG = "删除角色信息失败"; + //修改角色信息失败 + public static final int ROLE_EDIT_FAILED_CODE = 1000002; + public static final String ROLE_EDIT_FAILED_MSG = "修改角色信息失败"; + /** + * 应用信息 + * type = 15 + * */ + //添加角色信息失败 + public static final int APP_ADD_FAILED_CODE = 1500000; + public static final String APP_ADD_FAILED_MSG = "添加应用信息失败"; + //删除角色信息失败 + public static final int APP_DELETE_FAILED_CODE = 1500001; + public static final String APP_DELETE_FAILED_MSG = "删除应用信息失败"; + //修改角色信息失败 + public static final int APP_EDIT_FAILED_CODE = 1500002; + public static final String APP_EDIT_FAILED_MSG = "修改应用信息失败"; + /** + * 仓库信息 + * type = 20 + * */ + //添加仓库信息失败 + public static final int DEPOT_ADD_FAILED_CODE = 2000000; + public static final String DEPOT_ADD_FAILED_MSG = "添加仓库信息失败"; + //删除仓库信息失败 + public static final int DEPOT_DELETE_FAILED_CODE = 2000001; + public static final String DEPOT_DELETE_FAILED_MSG = "删除仓库信息失败"; + //修改仓库信息失败 + public static final int DEPOT_EDIT_FAILED_CODE = 2000002; + public static final String DEPOT_EDIT_FAILED_MSG = "修改仓库信息失败"; + + /** + * 功能模块信息 + * type = 30 + * */ + //添加角色信息失败 + public static final int FUNCTIONS_ADD_FAILED_CODE = 3000000; + public static final String FUNCTIONS_ADD_FAILED_MSG = "添加功能模块信息失败"; + //删除角色信息失败 + public static final int FUNCTIONS_DELETE_FAILED_CODE = 3000001; + public static final String FUNCTIONS_DELETE_FAILED_MSG = "删除功能模块信息失败"; + //修改角色信息失败 + public static final int FUNCTIONS_EDIT_FAILED_CODE = 3000002; + public static final String FUNCTIONS_EDIT_FAILED_MSG = "修改功能模块信息失败"; + /** + * 收支项目信息 + * type = 35 + * */ + //添加收支项目信息失败 + public static final int IN_OUT_ITEM_ADD_FAILED_CODE = 3500000; + public static final String IN_OUT_ITEM_ADD_FAILED_MSG = "添加收支项目信息失败"; + //删除收支项目信息失败 + public static final int IN_OUT_ITEM_DELETE_FAILED_CODE = 3500001; + public static final String IN_OUT_ITEM_DELETE_FAILED_MSG = "删除收支项目信息失败"; + //修改收支项目信息失败 + public static final int IN_OUT_ITEM_EDIT_FAILED_CODE = 3500002; + public static final String IN_OUT_ITEM_EDIT_FAILED_MSG = "修改收支项目信息失败"; + //该收支项目的名称已经存在 + public static final int IN_OUT_ITEM_NAME_EXIST_FAILED_CODE = 3500003; + public static final String IN_OUT_ITEM_NAME_EXIST_FAILED_MSG = "该收支项目的名称已经存在,请修改!"; + /** + * 多单位信息 + * type = 40 + * */ + //添加多单位信息失败 + public static final int UNIT_ADD_FAILED_CODE = 4000000; + public static final String UNIT_ADD_FAILED_MSG = "添加多单位信息失败"; + //删除多单位信息失败 + public static final int UNIT_DELETE_FAILED_CODE = 4000001; + public static final String UNIT_DELETE_FAILED_MSG = "删除多单位信息失败"; + //修改多单位信息失败 + public static final int UNIT_EDIT_FAILED_CODE = 4000002; + public static final String UNIT_EDIT_FAILED_MSG = "修改多单位信息失败"; + /** + * 经手人信息 + * type = 45 + * */ + //添加经手人信息失败 + public static final int PERSON_ADD_FAILED_CODE = 4500000; + public static final String PERSON_ADD_FAILED_MSG = "添加经手人信息失败"; + //删除经手人信息失败 + public static final int PERSON_DELETE_FAILED_CODE = 4500001; + public static final String PERSON_DELETE_FAILED_MSG = "删除经手人信息失败"; + //修改经手人信息失败 + public static final int PERSON_EDIT_FAILED_CODE = 4500002; + public static final String PERSON_EDIT_FAILED_MSG = "修改经手人信息失败"; + /** + * 用户角色模块关系信息 + * type = 50 + * */ + //添加用户角色模块关系信息失败 + public static final int USER_BUSINESS_ADD_FAILED_CODE = 5000000; + public static final String USER_BUSINESS_ADD_FAILED_MSG = "添加用户角色模块关系信息失败"; + //删除用户角色模块关系信息失败 + public static final int USER_BUSINESS_DELETE_FAILED_CODE = 5000001; + public static final String USER_BUSINESS_DELETE_FAILED_MSG = "删除用户角色模块关系信息失败"; + //修改用户角色模块关系信息失败 + public static final int USER_BUSINESS_EDIT_FAILED_CODE = 5000002; + public static final String USER_BUSINESS_EDIT_FAILED_MSG = "修改用户角色模块关系信息失败"; + /** + * 系统参数信息 + * type = 55 + * */ + //添加系统参数信息失败 + public static final int SYSTEM_CONFIG_ADD_FAILED_CODE = 5500000; + public static final String SYSTEM_CONFIG_ADD_FAILED_MSG = "添加系统参数信息失败"; + //删除系统参数信息失败 + public static final int SYSTEM_CONFIG_DELETE_FAILED_CODE = 5500001; + public static final String SYSTEM_CONFIG_DELETE_FAILED_MSG = "删除系统参数信息失败"; + //修改系统参数信息失败 + public static final int SYSTEM_CONFIG_EDIT_FAILED_CODE = 5500002; + public static final String SYSTEM_CONFIG_EDIT_FAILED_MSG = "修改系统参数信息失败"; + /** + * 商品扩展信息 + * type = 60 + * */ + //添加商品扩展信息失败 + public static final int MATERIAL_PROPERTY_ADD_FAILED_CODE = 6000000; + public static final String MATERIAL_PROPERTY_ADD_FAILED_MSG = "添加商品扩展信息失败"; + //删除商品扩展信息失败 + public static final int MATERIAL_PROPERTY_DELETE_FAILED_CODE = 6000001; + public static final String MATERIAL_PROPERTY_DELETE_FAILED_MSG = "删除商品扩展信息失败"; + //修改商品扩展信息失败 + public static final int MATERIAL_PROPERTY_EDIT_FAILED_CODE = 6000002; + public static final String MATERIAL_PROPERTY_EDIT_FAILED_MSG = "修改商品扩展信息失败"; + /** + * 账户信息 + * type = 65 + * */ + //添加账户信息失败 + public static final int ACCOUNT_ADD_FAILED_CODE = 6500000; + public static final String ACCOUNT_ADD_FAILED_MSG = "添加账户信息失败"; + //删除账户信息失败 + public static final int ACCOUNT_DELETE_FAILED_CODE = 6500001; + public static final String ACCOUNT_DELETE_FAILED_MSG = "删除账户信息失败"; + //修改账户信息失败 + public static final int ACCOUNT_EDIT_FAILED_CODE = 6500002; + public static final String ACCOUNT_EDIT_FAILED_MSG = "修改账户信息失败"; + /** + * 供应商信息 + * type = 70 + * */ + //添加供应商信息失败 + public static final int SUPPLIER_ADD_FAILED_CODE = 7000000; + public static final String SUPPLIER_ADD_FAILED_MSG = "添加供应商信息失败"; + //删除供应商信息失败 + public static final int SUPPLIER_DELETE_FAILED_CODE = 7000001; + public static final String SUPPLIER_DELETE_FAILED_MSG = "删除供应商信息失败"; + //修改供应商信息失败 + public static final int SUPPLIER_EDIT_FAILED_CODE = 7000002; + public static final String SUPPLIER_EDIT_FAILED_MSG = "修改供应商信息失败"; + /** + * 商品类别信息 + * type = 75 + * */ + //添加商品类别信息失败 + public static final int MATERIAL_CATEGORY_ADD_FAILED_CODE = 7500000; + public static final String MATERIAL_CATEGORY_ADD_FAILED_MSG = "添加商品类别信息失败"; + //删除商品类别信息失败 + public static final int MATERIAL_CATEGORY_DELETE_FAILED_CODE = 7500001; + public static final String MATERIAL_CATEGORY_DELETE_FAILED_MSG = "删除商品类别信息失败"; + //修改商品类别信息失败 + public static final int MATERIAL_CATEGORY_EDIT_FAILED_CODE = 7500002; + public static final String MATERIAL_CATEGORY_EDIT_FAILED_MSG = "修改商品类别信息失败"; + //商品类别编号已存在 + public static final int MATERIAL_CATEGORY_SERIAL_ALREADY_EXISTS_CODE = 7500003; + public static final String MATERIAL_CATEGORY_SERIAL_ALREADY_EXISTS_MSG = "商品类别编号已存在"; + //根类别不支持修改 + public static final int MATERIAL_CATEGORY_ROOT_NOT_SUPPORT_EDIT_CODE = 7500004; + public static final String MATERIAL_CATEGORY_ROOT_NOT_SUPPORT_EDIT_MSG = "根类别不支持修改"; + //根类别不支持删除 + public static final int MATERIAL_CATEGORY_ROOT_NOT_SUPPORT_DELETE_CODE = 7500005; + public static final String MATERIAL_CATEGORY_ROOT_NOT_SUPPORT_DELETE_MSG = "根类别不支持删除"; + //该类别存在下级不允许删除 + public static final int MATERIAL_CATEGORY_CHILD_NOT_SUPPORT_DELETE_CODE = 7500006; + public static final String MATERIAL_CATEGORY_CHILD_NOT_SUPPORT_DELETE_MSG = "该类别存在下级不允许删除"; + /** + * 商品信息 + * type = 80 + * */ + //商品信息不存在 + public static final int MATERIAL_NOT_EXISTS_CODE = 8000000; + public static final String MATERIAL_NOT_EXISTS_MSG = "商品信息不存在"; + //商品信息不唯一 + public static final int MATERIAL_NOT_ONLY_CODE = 8000001; + public static final String MATERIAL_NOT_ONLY_MSG = "商品信息不唯一"; + //该商品未开启序列号 + public static final int MATERIAL_NOT_ENABLE_SERIAL_NUMBER_CODE = 8000002; + public static final String MATERIAL_NOT_ENABLE_SERIAL_NUMBER_MSG = "该商品未开启序列号功能"; + //商品的序列号不能为空 + public static final int MATERIAL_SERIAL_NUMBERE_EMPTY_CODE = 8000003; + public static final String MATERIAL_SERIAL_NUMBERE_EMPTY_MSG = "抱歉,商品条码:%s的序列号不能为空"; + //商品库存不足 + public static final int MATERIAL_STOCK_NOT_ENOUGH_CODE = 8000004; + public static final String MATERIAL_STOCK_NOT_ENOUGH_MSG = "商品:%s库存不足"; + //商品条码重复 + public static final int MATERIAL_BARCODE_EXISTS_CODE = 8000005; + public static final String MATERIAL_BARCODE_EXISTS_MSG = "商品条码:%s重复"; + //商品-单位匹配不上 + public static final int MATERIAL_UNIT_MATE_CODE = 8000006; + public static final String MATERIAL_UNIT_MATE_MSG = "抱歉,商品条码:%s的单位匹配不上,请完善多单位信息!"; + //商品条码长度应该为4到40位 + public static final int MATERIAL_BARCODE_LENGTH_ERROR_CODE = 8000007; + public static final String MATERIAL_BARCODE_LENGTH_ERROR_MSG = "商品条码:%s的长度应该为4到40位"; + //序列号和批号只能有一项 + public static final int MATERIAL_ENABLE_MUST_ONE_CODE = 8000008; + public static final String MATERIAL_ENABLE_MUST_ONE_MSG = "抱歉,商品条码:%s的序列号和批号不能同时填1"; + //名称为空 + public static final int MATERIAL_NAME_EMPTY_CODE = 8000010; + public static final String MATERIAL_NAME_EMPTY_MSG = "第%s行名称为空"; + //基本单位为空 + public static final int MATERIAL_UNIT_EMPTY_CODE = 8000011; + public static final String MATERIAL_UNIT_EMPTY_MSG = "第%s行基本单位为空"; + //状态格式错误 + public static final int MATERIAL_ENABLED_ERROR_CODE = 8000012; + public static final String MATERIAL_ENABLED_ERROR_MSG = "第%s行状态格式错误"; + //单次导入超出1000条 + public static final int MATERIAL_IMPORT_OVER_LIMIT_CODE = 8000013; + public static final String MATERIAL_IMPORT_OVER_LIMIT_MSG = "抱歉,单次导入不能超出1000条"; + //基础重量格式错误 + public static final int MATERIAL_WEIGHT_NOT_DECIMAL_CODE = 8000014; + public static final String MATERIAL_WEIGHT_NOT_DECIMAL_MSG = "第%s行基础重量格式错误"; + //保质期格式错误 + public static final int MATERIAL_EXPIRY_NUM_NOT_INTEGER_CODE = 8000015; + public static final String MATERIAL_EXPIRY_NUM_NOT_INTEGER_MSG = "第%s行保质期格式错误"; + //比例格式错误 + public static final int MATERIAL_RATIO_NOT_INTEGER_CODE = 8000016; + public static final String MATERIAL_RATIO_NOT_INTEGER_MSG = "第%s行比例格式错误"; + //组装拆卸单不能选择批号或序列号商品 + public static final int MATERIAL_ASSEMBLE_SELECT_ERROR_CODE = 80000017; + public static final String MATERIAL_ASSEMBLE_SELECT_ERROR_MSG = "抱歉,组装拆卸单不能选择批号或序列号商品:%s"; + //调拨单不能选择批号或序列号商品 + public static final int MATERIAL_TRANSFER_SELECT_ERROR_CODE = 80000018; + public static final String MATERIAL_TRANSFER_SELECT_ERROR_MSG = "抱歉,调拨单不能选择批号或序列号商品:%s,建议走其它入库和出库单"; + //盘点业务不能选择批号或序列号商品 + public static final int MATERIAL_STOCK_CHECK_ERROR_CODE = 80000019; + public static final String MATERIAL_STOCK_CHECK_ERROR_MSG = "抱歉,盘点业务不能选择批号或序列号商品:%s,建议走其它入库和出库单"; + //EXCEL中存在重复的商品 + public static final int MATERIAL_EXCEL_IMPORT_EXIST_CODE = 80000020; + public static final String MATERIAL_EXCEL_IMPORT_EXIST_MSG = "抱歉,EXCEL中存在重复的商品,具体信息为:%s"; + //EXCEL中存在重复的条码 + public static final int MATERIAL_EXCEL_IMPORT_BARCODE_EXIST_CODE = 80000021; + public static final String MATERIAL_EXCEL_IMPORT_BARCODE_EXIST_MSG = "抱歉,EXCEL中存在重复的条码,具体条码为:%s"; + //名称长度超出 + public static final int MATERIAL_NAME_OVER_CODE = 8000022; + public static final String MATERIAL_NAME_OVER_MSG = "第%s行名称长度超出100个字符"; + //规格长度超出 + public static final int MATERIAL_STANDARD_OVER_CODE = 8000023; + public static final String MATERIAL_STANDARD_OVER_MSG = "第%s行规格长度超出100个字符"; + //型号长度超出 + public static final int MATERIAL_MODEL_OVER_CODE = 8000024; + public static final String MATERIAL_MODEL_OVER_MSG = "第%s行型号长度超出100个字符"; + //多属性商品不能输入库存,建议进行盘点录入 + public static final int MATERIAL_SKU_BEGIN_STOCK_FAILED_CODE = 8000025; + public static final String MATERIAL_SKU_BEGIN_STOCK_FAILED_MSG = "多属性商品%s不能输入库存,建议进行盘点录入"; + //商品条码不存在,请重新选择 + public static final int MATERIAL_BARCODE_IS_NOT_EXIST_CODE = 8000026; + public static final String MATERIAL_BARCODE_IS_NOT_EXIST_MSG = "商品条码%s不存在,请重新选择"; + //基本条码为空 + public static final int MATERIAL_BARCODE_EMPTY_CODE = 8000027; + public static final String MATERIAL_BARCODE_EMPTY_MSG = "第%s行基本条码为空"; + //EXCEL中有副条码在系统中已存在(除自身商品之外) + public static final int MATERIAL_EXCEL_IMPORT_MANY_BARCODE_EXIST_CODE = 80000028; + public static final String MATERIAL_EXCEL_IMPORT_MANY_BARCODE_EXIST_MSG = "抱歉,EXCEL中有副条码在系统中已存在,具体副条码为:%s"; + //单据中商品库存不足 + public static final int BILL_MATERIAL_STOCK_NOT_ENOUGH_CODE = 80000029; + public static final String BILL_MATERIAL_STOCK_NOT_ENOUGH_MSG = "单据:%s中商品:%s库存不足"; + + /** + * 单据信息 + * type = 85 + * */ + //添加单据信息失败 + public static final int DEPOT_HEAD_ADD_FAILED_CODE = 8500000; + public static final String DEPOT_HEAD_ADD_FAILED_MSG = "添加单据信息失败"; + //删除单据信息失败 + public static final int DEPOT_HEAD_DELETE_FAILED_CODE = 8500001; + public static final String DEPOT_HEAD_DELETE_FAILED_MSG = "删除单据信息失败"; + //修改单据信息失败 + public static final int DEPOT_HEAD_EDIT_FAILED_CODE = 8500002; + public static final String DEPOT_HEAD_EDIT_FAILED_MSG = "修改单据信息失败"; + //单据录入-仓库不能为空 + public static final int DEPOT_HEAD_DEPOT_FAILED_CODE = 8500004; + public static final String DEPOT_HEAD_DEPOT_FAILED_MSG = "仓库不能为空"; + //单据录入-调入仓库不能为空 + public static final int DEPOT_HEAD_ANOTHER_DEPOT_FAILED_CODE = 8500005; + public static final String DEPOT_HEAD_ANOTHER_DEPOT_FAILED_MSG = "调入仓库不能为空"; + //单据录入-明细不能为空 + public static final int DEPOT_HEAD_ROW_FAILED_CODE = 8500006; + public static final String DEPOT_HEAD_ROW_FAILED_MSG = "单据明细不能为空"; + //单据录入-账户不能为空 + public static final int DEPOT_HEAD_ACCOUNT_FAILED_CODE = 8500007; + public static final String DEPOT_HEAD_ACCOUNT_FAILED_MSG = "结算账户不能为空"; + //单据录入-请修改多账户的结算金额 + public static final int DEPOT_HEAD_MANY_ACCOUNT_FAILED_CODE = 8500008; + public static final String DEPOT_HEAD_MANY_ACCOUNT_FAILED_MSG = "请修改多账户的结算金额"; + //单据录入-调入仓库与原仓库不能重复 + public static final int DEPOT_HEAD_ANOTHER_DEPOT_EQUAL_FAILED_CODE = 8500010; + public static final String DEPOT_HEAD_ANOTHER_DEPOT_EQUAL_FAILED_MSG = "调入仓库与原仓库不能重复"; + //单据删除-只有未审核的单据才能删除,请先进行反审核 + public static final int DEPOT_HEAD_UN_AUDIT_DELETE_FAILED_CODE = 8500011; + public static final String DEPOT_HEAD_UN_AUDIT_DELETE_FAILED_MSG = "抱歉,只有未审核的单据才能删除,请先进行反审核"; + //单据审核-只有未审核的单据才能审核 + public static final int DEPOT_HEAD_UN_AUDIT_TO_AUDIT_FAILED_CODE = 8500012; + public static final String DEPOT_HEAD_UN_AUDIT_TO_AUDIT_FAILED_MSG = "抱歉,只有未审核的单据才能审核"; + //单据反审核-只有已审核的单据才能反审核 + public static final int DEPOT_HEAD_AUDIT_TO_UN_AUDIT_FAILED_CODE = 8500013; + public static final String DEPOT_HEAD_AUDIT_TO_UN_AUDIT_FAILED_MSG = "抱歉,只有已审核的单据才能反审核"; + //单据录入-商品条码XXX的数量需要修改下 + public static final int DEPOT_HEAD_NUMBER_NEED_EDIT_FAILED_CODE = 85000014; + public static final String DEPOT_HEAD_NUMBER_NEED_EDIT_FAILED_MSG = "商品条码%s的数量需要修改下"; + //单据录入-商品的批号不能为空 + public static final int DEPOT_HEAD_BATCH_NUMBERE_EMPTY_CODE = 8500015; + public static final String DEPOT_HEAD_BATCH_NUMBERE_EMPTY_MSG = "抱歉,商品条码:%s的批号不能为空"; + //单据录入-会员预付款余额不足 + public static final int DEPOT_HEAD_MEMBER_PAY_LACK_CODE = 8500016; + public static final String DEPOT_HEAD_MEMBER_PAY_LACK_MSG = "抱歉,会员预付款余额不足"; + //单据录入-累计订金超出原订单中的订金 + public static final int DEPOT_HEAD_DEPOSIT_OVER_PRE_CODE = 8500017; + public static final String DEPOT_HEAD_DEPOSIT_OVER_PRE_MSG = "抱歉,累计订金超出原订单中的订金"; + //单据录入-商品条码XXX的单价低于最低售价 + public static final int DEPOT_HEAD_UNIT_PRICE_LOW_CODE = 8500018; + public static final String DEPOT_HEAD_UNIT_PRICE_LOW_MSG = "商品条码%s的单价低于最低售价"; + //单据录入-单据明细中必须要有组合件和普通子件 + public static final int DEPOT_HEAD_CHECK_ASSEMBLE_EMPTY_CODE = 8500020; + public static final String DEPOT_HEAD_CHECK_ASSEMBLE_EMPTY_MSG = "抱歉,单据明细中必须要有组合件和普通子件"; + //单据录入-商品条码XXX的数量与序列号不一致 + public static final int DEPOT_HEAD_SN_NUMBERE_FAILED_CODE = 8500021; + public static final String DEPOT_HEAD_SN_NUMBERE_FAILED_MSG = "抱歉,商品条码:%s的数量与序列号不一致"; + //单据录入-单据编号已经存在 + public static final int DEPOT_HEAD_BILL_NUMBER_EXIST_CODE = 8500022; + public static final String DEPOT_HEAD_BILL_NUMBER_EXIST_MSG = "抱歉,单据编号已经存在"; + //单据录入-单据当前状态下不能修改 + public static final int DEPOT_HEAD_BILL_CANNOT_EDIT_CODE = 8500023; + public static final String DEPOT_HEAD_BILL_CANNOT_EDIT_MSG = "抱歉,单据当前状态下不能修改"; + //单据删除-单据中的序列号已经出库,不能删除 + public static final int DEPOT_HEAD_SERIAL_IS_SELL_CODE = 8500024; + public static final String DEPOT_HEAD_SERIAL_IS_SELL_MSG = "抱歉,单据%s的序列号已经出库,不能删除"; + //单据录入-单据附件不能超过规定数量 + public static final int DEPOT_HEAD_FILE_NUM_LIMIT_CODE = 8500025; + public static final String DEPOT_HEAD_FILE_NUM_LIMIT_MSG = "抱歉,单据附件不能超过%s份"; + //单据录入-完成采购的单据不能进行反审核 + public static final int DEPOT_HEAD_PURCHASE_STATUS_TWO_CODE = 8500026; + public static final String DEPOT_HEAD_PURCHASE_STATUS_TWO_MSG = "抱歉,完成采购的单据不能进行反审核"; + //单据录入-部分采购的单据不能进行反审核 + public static final int DEPOT_HEAD_PURCHASE_STATUS_THREE_CODE = 8500027; + public static final String DEPOT_HEAD_PURCHASE_STATUS_THREE_MSG = "抱歉,部分采购的单据不能进行反审核"; + //单据录入-单据中存在部分状态,需要到新增界面关联单据 + public static final int DEPOT_ITEM_EXIST_PARTIALLY_STATUS_FAILED_CODE = 8500028; + public static final String DEPOT_ITEM_EXIST_PARTIALLY_STATUS_FAILED_MSG = "抱歉,单据:%s是部分%s状态,需要到新增界面关联单据"; + //单据录入-关联请购单号和关联订单号不能同时录入 + public static final int DEPOT_ITEM_EXIST_REPEAT_NO_FAILED_CODE = 8500029; + public static final String DEPOT_ITEM_EXIST_REPEAT_NO_FAILED_MSG = "抱歉,关联请购单号和关联订单号不能同时录入"; + //单据录入-单据最新状态不能进行批量操作 + public static final int DEPOT_ITEM_EXIST_NEW_STATUS_FAILED_CODE = 8500030; + public static final String DEPOT_ITEM_EXIST_NEW_STATUS_FAILED_MSG = "抱歉,单据:%s最新状态不能进行批量操作"; + //单据录入-单据在该状态不能强制结单 + public static final int DEPOT_HEAD_FORCE_CLOSE_FAILED_CODE = 8500031; + public static final String DEPOT_HEAD_FORCE_CLOSE_FAILED_MSG = "抱歉,单据:%s在该状态不能强制结单"; + //单据录入-请勿频繁提交单据 + public static final int DEPOT_HEAD_SUBMIT_REPEAT_FAILED_CODE = 8500032; + public static final String DEPOT_HEAD_SUBMIT_REPEAT_FAILED_MSG = "抱歉,请不要频繁提交单据"; + //单据录入-单据明细中存在重复的序列号 + public static final int DEPOT_HEAD_CHECK_SERIAL_NUMBER_REPEAT_CODE = 8500033; + public static final String DEPOT_HEAD_CHECK_SERIAL_NUMBER_REPEAT_MSG = "抱歉,单据明细中存在重复的序列号:%s"; + //单据录入-序列号已被出库,不允许修改该单据 + public static final int DEPOT_HEAD_SN_NOT_ALLOW_UPDATE_CODE = 8500035; + public static final String DEPOT_HEAD_SN_NOT_ALLOW_UPDATE_MSG = "抱歉,序列号:%s已被出库,不允许修改该单据"; + //单据录入-单据被财务单据关联,不允许单独删除 + public static final int DEPOT_HEAD_FINANCIAL_ASSOCIATED_CODE = 8500036; + public static final String DEPOT_HEAD_FINANCIAL_ASSOCIATED_MSG = "单据:%s被财务单据:%s关联,不允许单独删除"; + + /** + * 单据明细信息 + * type = 90 + * */ + //添加单据明细信息失败 + public static final int DEPOT_ITEM_ADD_FAILED_CODE = 9000000; + public static final String DEPOT_ITEM_ADD_FAILED_MSG = "添加单据明细信息失败"; + //删除单据明细信息失败 + public static final int DEPOT_ITEM_DELETE_FAILED_CODE = 9000001; + public static final String DEPOT_ITEM_DELETE_FAILED_MSG = "删除单据明细信息失败"; + //修改单据明细信息失败 + public static final int DEPOT_ITEM_EDIT_FAILED_CODE = 9000002; + public static final String DEPOT_ITEM_EDIT_FAILED_MSG = "修改单据明细信息失败"; + //单据明细-明细中商品不存在 + public static final int DEPOT_ITEM_BARCODE_IS_NOT_EXIST_CODE = 9000003; + public static final String DEPOT_ITEM_BARCODE_IS_NOT_EXIST_MSG = "抱歉,商品条码:%s在商品管理中不存在"; + //单据明细-明细中仓库不存在 + public static final int DEPOT_ITEM_DEPOTNAME_IS_NOT_EXIST_CODE = 9000004; + public static final String DEPOT_ITEM_DEPOTNAME_IS_NOT_EXIST_MSG = "抱歉,仓库:%s在基础资料-仓库信息中不存在"; + //单据明细-单据中存在序列号,需要到新增界面关联单据 + public static final int DEPOT_ITEM_EXIST_SERIAL_NUMBER_FAILED_CODE = 9000005; + public static final String DEPOT_ITEM_EXIST_SERIAL_NUMBER_FAILED_MSG = "抱歉,单据:%s里面存在序列号,需要到新增界面关联单据"; + //单据明细-单据中存在批号,需要到新增界面关联单据 + public static final int DEPOT_ITEM_EXIST_BATCH_NUMBER_FAILED_CODE = 9000006; + public static final String DEPOT_ITEM_EXIST_BATCH_NUMBER_FAILED_MSG = "抱歉,单据:%s里面存在批号,需要到新增界面关联单据"; + //原关联单据已被修改,请重新关联 + public static final int DEPOT_ITEM_PRE_BILL_IS_CHANGE_CODE = 9000007; + public static final String DEPOT_ITEM_PRE_BILL_IS_CHANGE_MSG = "抱歉,原关联单据已被修改,请重新关联"; + + /** + * 财务信息 + * type = 95 + * */ + //添加财务信息失败 + public static final int ACCOUNT_HEAD_ADD_FAILED_CODE = 9500000; + public static final String ACCOUNT_HEAD_ADD_FAILED_MSG = "添加财务信息失败"; + //删除财务信息失败 + public static final int ACCOUNT_HEAD_DELETE_FAILED_CODE = 9500001; + public static final String ACCOUNT_HEAD_DELETE_FAILED_MSG = "删除财务信息失败"; + //修改财务信息失败 + public static final int ACCOUNT_HEAD_EDIT_FAILED_CODE = 9500002; + public static final String ACCOUNT_HEAD_EDIT_FAILED_MSG = "修改财务信息失败"; + //单据录入-明细不能为空 + public static final int ACCOUNT_HEAD_ROW_FAILED_CODE = 9500003; + public static final String ACCOUNT_HEAD_ROW_FAILED_MSG = "单据明细不能为空"; + //单据删除-只有未审核的单据才能删除,请先进行反审核 + public static final int ACCOUNT_HEAD_UN_AUDIT_DELETE_FAILED_CODE = 9500004; + public static final String ACCOUNT_HEAD_UN_AUDIT_DELETE_FAILED_MSG = "抱歉,只有未审核的单据才能删除,请先进行反审核"; + //财务信息录入-单据编号已经存在 + public static final int ACCOUNT_HEAD_BILL_NO_EXIST_CODE = 9500005; + public static final String ACCOUNT_HEAD_BILL_NO_EXIST_MSG = "抱歉,单据编号已经存在"; + //财务信息录入-付款账户和明细中的账户重复 + public static final int ACCOUNT_HEAD_ACCOUNT_REPEAT_CODE = 9500006; + public static final String ACCOUNT_HEAD_ACCOUNT_REPEAT_MSG = "抱歉,付款账户:%s和明细中的账户重复"; + //财务信息审核-只有未审核的单据才能审核 + public static final int ACCOUNT_HEAD_UN_AUDIT_TO_AUDIT_FAILED_CODE = 9500007; + public static final String ACCOUNT_HEAD_UN_AUDIT_TO_AUDIT_FAILED_MSG = "抱歉,只有未审核的单据才能审核"; + //财务信息反审核-只有已审核的单据才能反审核 + public static final int ACCOUNT_HEAD_AUDIT_TO_UN_AUDIT_FAILED_CODE = 9500008; + public static final String ACCOUNT_HEAD_AUDIT_TO_UN_AUDIT_FAILED_MSG = "抱歉,只有已审核的单据才能反审核"; + /** + * 财务明细信息 + * type = 100 + * */ + //添加财务明细信息失败 + public static final int ACCOUNT_ITEM_ADD_FAILED_CODE = 10000000; + public static final String ACCOUNT_ITEM_ADD_FAILED_MSG = "添加财务明细信息失败"; + //删除财务明细信息失败 + public static final int ACCOUNT_ITEM_DELETE_FAILED_CODE = 10000001; + public static final String ACCOUNT_ITEM_DELETE_FAILED_MSG = "删除财务明细信息失败"; + //修改财务明细信息失败 + public static final int ACCOUNT_ITEM_EDIT_FAILED_CODE = 10000002; + public static final String ACCOUNT_ITEM_EDIT_FAILED_MSG = "修改财务明细信息失败"; + /** + * 序列号 + * type = 105 + * */ + /**序列号已存在*/ + public static final int SERIAL_NUMBERE_ALREADY_EXISTS_CODE = 10500000; + public static final String SERIAL_NUMBERE_ALREADY_EXISTS_MSG = "序列号:%s已存在"; + /**序列号不存在或者已经出库*/ + public static final int SERIAL_NUMBERE_NOT_EXISTS_CODE = 10500001; + public static final String SERIAL_NUMBERE_NOT_EXISTS_MSG = "序列号:%s不存在或者已经出库"; + /** + * 部门信息 + * type = 110 + * */ + //添加部门信息失败 + public static final int ORGANIZATION_ADD_FAILED_CODE = 11000000; + public static final String ORGANIZATION_ADD_FAILED_MSG = "添加部门信息失败"; + //删除部门信息失败 + public static final int ORGANIZATION_DELETE_FAILED_CODE = 11000001; + public static final String ORGANIZATION_DELETE_FAILED_MSG = "删除部门信息失败"; + //修改部门信息失败 + public static final int ORGANIZATION_EDIT_FAILED_CODE = 11000002; + public static final String ORGANIZATION_EDIT_FAILED_MSG = "修改部门信息失败"; + //部门编号已存在 + public static final int ORGANIZATION_NO_ALREADY_EXISTS_CODE = 11000003; + public static final String ORGANIZATION_NO_ALREADY_EXISTS_MSG = "部门编号已存在"; + //根部门不允许删除 + public static final int ORGANIZATION_ROOT_NOT_ALLOWED_DELETE_CODE = 11000004; + public static final String ORGANIZATION_ROOT_NOT_ALLOWED_DELETE_MSG = "根部门不允许删除"; + //根部门不允许修改 + public static final int ORGANIZATION_ROOT_NOT_ALLOWED_EDIT_CODE = 11000005; + public static final String ORGANIZATION_ROOT_NOT_ALLOWED_EDIT_MSG = "根部门不允许修改"; + //该部门存在下级不允许删除 + public static final int ORGANIZATION_CHILD_NOT_ALLOWED_DELETE_CODE = 11000006; + public static final String ORGANIZATION_CHILD_NOT_ALLOWED_DELETE_MSG = "该部门存在下级不允许删除"; + /** + * 部门用户关联关系 + * type = 115 + * */ + //添加部门用户关联关系失败 + public static final int ORGA_USER_REL_ADD_FAILED_CODE = 11500000; + public static final String ORGA_USER_REL_ADD_FAILED_MSG = "添加部门用户关联关系失败"; + //删除部门用户关联关系失败 + public static final int ORGA_USER_REL_DELETE_FAILED_CODE = 11500001; + public static final String ORGA_USER_REL_DELETE_FAILED_MSG = "删除部门用户关联关系失败"; + //修改部门用户关联关系失败 + public static final int ORGA_USER_REL_EDIT_FAILED_CODE = 11500002; + public static final String ORGA_USER_REL_EDIT_FAILED_MSG = "修改部门用户关联关系失败"; + + //进销存统计,如果有权限的仓库数量太多则提示要选择仓库 + public static final int REPORT_TWO_MANY_DEPOT_FAILED_CODE = 510; + public static final String REPORT_TWO_MANY_DEPOT_FAILED_MSG = "请选择仓库,再进行查询"; + + /** + * 生成单据编号 + * type = 120 + * */ + //获取唯一单据编号失败 + public static final int SEQUENCE_ONLY_FAILED_CODE = 12000001; + public static final String SEQUENCE_ONLY_FAILED_MSG = "获取唯一单据编号失败,请稍后重试"; + //获取唯一单据编号操作被中断 + public static final int SEQUENCE_ONLY_BREAK_CODE = 12000002; + public static final String SEQUENCE_ONLY_BREAK_MSG = "获取唯一单据编号操作被中断"; + + /** + * 字典 + * type = 125 + * */ + //字典类型已分配,不能删除 + public static final int DICT_TYPE_ALREADY_USED_CODE = 12500001; + public static final String DICT_TYPE_ALREADY_USED_MSG = "%s已分配,不能删除"; + + //演示用户禁止操作 + public static final int SYSTEM_CONFIG_TEST_USER_CODE = -1; + public static final String SYSTEM_CONFIG_TEST_USER_MSG = "演示用户禁止操作"; + + /** + * 标准正常返回/操作成功返回 + * @return + */ + public static JSONObject standardSuccess () { + JSONObject success = new JSONObject(); + success.put(GLOBAL_RETURNS_CODE, SERVICE_SUCCESS_CODE); + success.put(GLOBAL_RETURNS_MESSAGE, SERVICE_SUCCESS_MSG); + return success; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/controller/AccountController.java b/smtERP-boot/src/main/java/com/reallin/smt/controller/AccountController.java new file mode 100644 index 0000000..86f0494 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/controller/AccountController.java @@ -0,0 +1,304 @@ +package com.reallin.smt.controller; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.base.BaseController; +import com.reallin.smt.base.TableDataInfo; +import com.reallin.smt.constants.BusinessConstants; +import com.reallin.smt.datasource.entities.Account; +import com.reallin.smt.datasource.vo.AccountVo4InOutList; +import com.reallin.smt.datasource.vo.AccountVo4List; +import com.reallin.smt.service.AccountService; +import com.reallin.smt.service.SystemConfigService; +import com.reallin.smt.utils.*; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.math.BigDecimal; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static com.reallin.smt.utils.ResponseJsonUtil.returnJson; +import static com.reallin.smt.utils.ResponseJsonUtil.returnStr; + +/** + * @author jishenghua 75271*8920 + */ +@RestController +@RequestMapping(value = "/account") +@Api(tags = {"账户管理"}) +public class AccountController extends BaseController { + private Logger logger = LoggerFactory.getLogger(AccountController.class); + + @Resource + private AccountService accountService; + + @Resource + private SystemConfigService systemConfigService; + + @GetMapping(value = "/info") + @ApiOperation(value = "根据id获取信息") + public String getList(@RequestParam("id") Long id, + HttpServletRequest request) throws Exception { + Account account = accountService.getAccount(id); + Map objectMap = new HashMap<>(); + if(account != null) { + objectMap.put("info", account); + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } + + @GetMapping(value = "/list") + @ApiOperation(value = "获取信息列表") + public TableDataInfo getList(@RequestParam(value = Constants.SEARCH, required = false) String search, + HttpServletRequest request)throws Exception { + String name = StringUtil.getInfo(search, "name"); + String serialNo = StringUtil.getInfo(search, "serialNo"); + String remark = StringUtil.getInfo(search, "remark"); + List list = accountService.select(name, serialNo, remark); + return getDataTable(list); + } + + @PostMapping(value = "/add") + @ApiOperation(value = "新增") + public String addResource(@RequestBody JSONObject obj, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int insert = accountService.insertAccount(obj, request); + return returnStr(objectMap, insert); + } + + @PutMapping(value = "/update") + @ApiOperation(value = "修改") + public String updateResource(@RequestBody JSONObject obj, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int update = accountService.updateAccount(obj, request); + return returnStr(objectMap, update); + } + + @DeleteMapping(value = "/delete") + @ApiOperation(value = "删除") + public String deleteResource(@RequestParam("id") Long id, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int delete = accountService.deleteAccount(id, request); + return returnStr(objectMap, delete); + } + + @DeleteMapping(value = "/deleteBatch") + @ApiOperation(value = "批量删除") + public String batchDeleteResource(@RequestParam("ids") String ids, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int delete = accountService.batchDeleteAccount(ids, request); + return returnStr(objectMap, delete); + } + + @GetMapping(value = "/checkIsNameExist") + @ApiOperation(value = "检查名称是否存在") + public String checkIsNameExist(@RequestParam Long id, @RequestParam(value ="name", required = false) String name, + HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int exist = accountService.checkIsNameExist(id, name); + if(exist > 0) { + objectMap.put("status", true); + } else { + objectMap.put("status", false); + } + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } + + /** + * 查找结算账户信息-下拉框 + * @param request + * @return + */ + @GetMapping(value = "/findBySelect") + @ApiOperation(value = "查找结算账户信息-下拉框") + public String findBySelect(HttpServletRequest request) throws Exception { + String res = null; + try { + List dataList = accountService.findBySelect(); + //存放数据json数组 + JSONArray dataArray = new JSONArray(); + if (null != dataList) { + for (Account account : dataList) { + JSONObject item = new JSONObject(); + item.put("Id", account.getId()); + //结算账户名称 + item.put("AccountName", account.getName()); + dataArray.add(item); + } + } + res = dataArray.toJSONString(); + } catch(Exception e){ + logger.error(e.getMessage(), e); + res = "获取数据失败"; + } + return res; + } + + /** + * 获取所有结算账户 + * @param request + * @return + */ + @GetMapping(value = "/getAccount") + @ApiOperation(value = "获取所有结算账户") + public BaseResponseInfo getAccount(HttpServletRequest request) throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + Map map = new HashMap(); + try { + List accountList = accountService.getAccount(); + map.put("accountList", accountList); + res.code = 200; + res.data = map; + } catch(Exception e){ + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 账户流水信息 + * @param currentPage + * @param pageSize + * @param accountId + * @param initialAmount + * @param request + * @return + */ + @GetMapping(value = "/findAccountInOutList") + @ApiOperation(value = "账户流水信息") + public BaseResponseInfo findAccountInOutList(@RequestParam("currentPage") Integer currentPage, + @RequestParam("pageSize") Integer pageSize, + @RequestParam("accountId") Long accountId, + @RequestParam("initialAmount") BigDecimal initialAmount, + @RequestParam(value = "number",required = false) String number, + @RequestParam(value = "beginTime",required = false) String beginTime, + @RequestParam(value = "endTime",required = false) String endTime, + HttpServletRequest request) throws Exception{ + BaseResponseInfo res = new BaseResponseInfo(); + Map map = new HashMap(); + try { + Boolean forceFlag = systemConfigService.getForceApprovalFlag(); + beginTime = Tools.parseDayToTime(beginTime, BusinessConstants.DAY_FIRST_TIME); + endTime = Tools.parseDayToTime(endTime,BusinessConstants.DAY_LAST_TIME); + List dataList = accountService.findAccountInOutList(accountId, StringUtil.toNull(number), + beginTime, endTime, forceFlag, (currentPage-1)*pageSize, pageSize); + int total = accountService.findAccountInOutListCount(accountId, StringUtil.toNull(number), + beginTime, endTime, forceFlag); + map.put("total", total); + //存放数据json数组 + JSONArray dataArray = new JSONArray(); + if (null != dataList) { + for (AccountVo4InOutList aEx : dataList) { + String type = aEx.getType().replace("其它", ""); + aEx.setType(type); + String operTime = aEx.getOperTime(); + BigDecimal balance = accountService.getAccountSum(accountId, null, operTime, forceFlag) + .add(accountService.getAccountSumByHead(accountId, null, operTime, forceFlag)) + .add(accountService.getAccountSumByDetail(accountId, null, operTime, forceFlag)) + .add(accountService.getManyAccountSum(accountId, null, operTime, forceFlag)).add(initialAmount); + aEx.setBalance(balance); + aEx.setAccountId(accountId); + dataArray.add(aEx); + } + } + map.put("rows", dataArray); + res.code = 200; + res.data = map; + } catch(Exception e){ + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 更新默认账户 + * @param object + * @param request + * @return + * @throws Exception + */ + @PostMapping(value = "/updateIsDefault") + @ApiOperation(value = "更新默认账户") + public String updateIsDefault(@RequestBody JSONObject object, + HttpServletRequest request) throws Exception{ + Long accountId = object.getLong("id"); + Map objectMap = new HashMap<>(); + int res = accountService.updateIsDefault(accountId); + if(res > 0) { + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } + + /** + * 获取带余额的报表 + * @param request + * @return + */ + @GetMapping(value = "/listWithBalance") + @ApiOperation(value = "获取带余额的报表") + public TableDataInfo listWithBalance(@RequestParam("name") String name, + @RequestParam("serialNo") String serialNo, + HttpServletRequest request) throws Exception { + List list = accountService.listWithBalance(StringUtil.toNull(name), StringUtil.toNull(serialNo)); + return getDataTable(list); + } + + /** + * 结算账户的统计 + * @param request + * @return + */ + @GetMapping(value = "/getStatistics") + @ApiOperation(value = "结算账户的统计") + public BaseResponseInfo getStatistics(@RequestParam("name") String name, + @RequestParam("serialNo") String serialNo, + HttpServletRequest request) throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + try { + Map map = accountService.getStatistics(StringUtil.toNull(name), StringUtil.toNull(serialNo)); + res.code = 200; + res.data = map; + } catch(Exception e){ + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 批量设置状态-启用或者禁用 + * @param jsonObject + * @param request + * @return + */ + @PostMapping(value = "/batchSetStatus") + @ApiOperation(value = "批量设置状态") + public String batchSetStatus(@RequestBody JSONObject jsonObject, + HttpServletRequest request)throws Exception { + Boolean status = jsonObject.getBoolean("status"); + String ids = jsonObject.getString("ids"); + Map objectMap = new HashMap<>(); + int res = accountService.batchSetStatus(status, ids); + if(res > 0) { + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/controller/AccountHeadController.java b/smtERP-boot/src/main/java/com/reallin/smt/controller/AccountHeadController.java new file mode 100644 index 0000000..23d959b --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/controller/AccountHeadController.java @@ -0,0 +1,197 @@ +package com.reallin.smt.controller; + +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.base.BaseController; +import com.reallin.smt.base.TableDataInfo; +import com.reallin.smt.constants.ExceptionConstants; +import com.reallin.smt.datasource.entities.AccountHead; +import com.reallin.smt.datasource.entities.AccountHeadVo4Body; +import com.reallin.smt.datasource.entities.AccountHeadVo4ListEx; +import com.reallin.smt.service.AccountHeadService; +import com.reallin.smt.utils.BaseResponseInfo; +import com.reallin.smt.utils.Constants; +import com.reallin.smt.utils.ErpInfo; +import com.reallin.smt.utils.StringUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static com.reallin.smt.utils.ResponseJsonUtil.returnJson; +import static com.reallin.smt.utils.ResponseJsonUtil.returnStr; + +/** + * @author jishenghua 752*718*920 + */ +@RestController +@RequestMapping(value = "/accountHead") +@Api(tags = {"财务管理"}) +public class AccountHeadController extends BaseController { + private Logger logger = LoggerFactory.getLogger(AccountHeadController.class); + + @Resource + private AccountHeadService accountHeadService; + + @GetMapping(value = "/info") + @ApiOperation(value = "根据id获取信息") + public String getList(@RequestParam("id") Long id, + HttpServletRequest request) throws Exception { + AccountHead accountHead = accountHeadService.getAccountHead(id); + Map objectMap = new HashMap<>(); + if(accountHead != null) { + objectMap.put("info", accountHead); + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } + + @GetMapping(value = "/list") + @ApiOperation(value = "获取信息列表") + public TableDataInfo getList(@RequestParam(value = Constants.SEARCH, required = false) String search, + HttpServletRequest request)throws Exception { + String type = StringUtil.getInfo(search, "type"); + String billNo = StringUtil.getInfo(search, "billNo"); + String beginTime = StringUtil.getInfo(search, "beginTime"); + String endTime = StringUtil.getInfo(search, "endTime"); + Long organId = StringUtil.parseStrLong(StringUtil.getInfo(search, "organId")); + Long creator = StringUtil.parseStrLong(StringUtil.getInfo(search, "creator")); + Long handsPersonId = StringUtil.parseStrLong(StringUtil.getInfo(search, "handsPersonId")); + Long accountId = StringUtil.parseStrLong(StringUtil.getInfo(search, "accountId")); + String status = StringUtil.getInfo(search, "status"); + String remark = StringUtil.getInfo(search, "remark"); + String number = StringUtil.getInfo(search, "number"); + Long inOutItemId = StringUtil.parseStrLong(StringUtil.getInfo(search, "inOutItemId")); + List list = accountHeadService.select(type, billNo, beginTime, endTime, organId, creator, + handsPersonId, accountId, status, remark, number, inOutItemId); + return getDataTable(list); + } + + @DeleteMapping(value = "/delete") + @ApiOperation(value = "删除") + public String deleteResource(@RequestParam("id") Long id, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int delete = accountHeadService.deleteAccountHead(id, request); + return returnStr(objectMap, delete); + } + + @DeleteMapping(value = "/deleteBatch") + @ApiOperation(value = "批量删除") + public String batchDeleteResource(@RequestParam("ids") String ids, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int delete = accountHeadService.batchDeleteAccountHead(ids, request); + return returnStr(objectMap, delete); + } + + /** + * 批量设置状态-审核或者反审核 + * @param jsonObject + * @param request + * @return + */ + @PostMapping(value = "/batchSetStatus") + @ApiOperation(value = "批量设置状态-审核或者反审核") + public String batchSetStatus(@RequestBody JSONObject jsonObject, + HttpServletRequest request) throws Exception{ + Map objectMap = new HashMap<>(); + String status = jsonObject.getString("status"); + String ids = jsonObject.getString("ids"); + int res = accountHeadService.batchSetStatus(status, ids); + if(res > 0) { + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } + + /** + * 新增财务主表及财务子表信息 + * @param body + * @param request + * @return + * @throws Exception + */ + @PostMapping(value = "/addAccountHeadAndDetail") + @ApiOperation(value = "新增财务主表及财务子表信息") + public Object addAccountHeadAndDetail(@RequestBody AccountHeadVo4Body body, HttpServletRequest request) throws Exception{ + JSONObject result = ExceptionConstants.standardSuccess(); + String beanJson = body.getInfo(); + String rows = body.getRows(); + accountHeadService.addAccountHeadAndDetail(beanJson,rows, request); + return result; + } + + /** + * 更新财务主表及财务子表信息 + * @param body + * @param request + * @return + * @throws Exception + */ + @PutMapping(value = "/updateAccountHeadAndDetail") + @ApiOperation(value = "更新财务主表及财务子表信息") + public Object updateAccountHeadAndDetail(@RequestBody AccountHeadVo4Body body, HttpServletRequest request) throws Exception{ + JSONObject result = ExceptionConstants.standardSuccess(); + String beanJson = body.getInfo(); + String rows = body.getRows(); + accountHeadService.updateAccountHeadAndDetail(beanJson,rows,request); + return result; + } + + /** + * 根据编号查询单据信息 + * @param billNo + * @param request + * @return + */ + @GetMapping(value = "/getDetailByNumber") + @ApiOperation(value = "根据编号查询单据信息") + public BaseResponseInfo getDetailByNumber(@RequestParam("billNo") String billNo, + HttpServletRequest request)throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + AccountHeadVo4ListEx ahl = new AccountHeadVo4ListEx(); + try { + List list = accountHeadService.getDetailByNumber(billNo); + if(list.size()>0) { + ahl = list.get(0); + } + res.code = 200; + res.data = ahl; + } catch(Exception e){ + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 根据出入库单据id查询收付款单号 + * @param billId + * @param request + * @return + */ + @GetMapping(value = "/getFinancialBillNoByBillId") + @ApiOperation(value = "根据编号查询单据信息") + public BaseResponseInfo getFinancialBillNoByBillId(@RequestParam("billId") Long billId, + HttpServletRequest request)throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + try { + List list = accountHeadService.getFinancialBillNoByBillId(billId); + res.code = 200; + res.data = list; + } catch(Exception e){ + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/controller/AccountItemController.java b/smtERP-boot/src/main/java/com/reallin/smt/controller/AccountItemController.java new file mode 100644 index 0000000..4d02187 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/controller/AccountItemController.java @@ -0,0 +1,93 @@ +package com.reallin.smt.controller; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.constants.BusinessConstants; +import com.reallin.smt.datasource.vo.AccountItemVo4List; +import com.reallin.smt.service.AccountHeadService; +import com.reallin.smt.service.AccountItemService; +import com.reallin.smt.utils.BaseResponseInfo; +import com.reallin.smt.utils.StringUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + +/** + * @author ji sheng hua 752*718*920 + */ +@RestController +@RequestMapping(value = "/accountItem") +@Api(tags = {"财务明细"}) +public class AccountItemController { + private Logger logger = LoggerFactory.getLogger(AccountItemController.class); + + @Resource + private AccountItemService accountItemService; + + @Resource + private AccountHeadService accountHeadService; + + @GetMapping(value = "/getDetailList") + @ApiOperation(value = "明细列表") + public BaseResponseInfo getDetailList(@RequestParam("headerId") Long headerId, + HttpServletRequest request)throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + try { + String type = null; + List dataList = new ArrayList<>(); + if(headerId != 0) { + dataList = accountItemService.getDetailList(headerId); + type = accountHeadService.getAccountHead(headerId).getType(); + } + JSONObject outer = new JSONObject(); + outer.put("total", dataList.size()); + //存放数据json数组 + JSONArray dataArray = new JSONArray(); + if (null != dataList) { + for (AccountItemVo4List ai : dataList) { + JSONObject item = new JSONObject(); + item.put("accountId", ai.getAccountId()); + item.put("accountName", ai.getAccountName()); + item.put("inOutItemId", ai.getInOutItemId()); + item.put("inOutItemName", ai.getInOutItemName()); + if(StringUtil.isNotEmpty(ai.getBillNumber())) { + item.put("billNumber", ai.getBillNumber()); + } else { + item.put("billNumber", "QiChu"); + } + item.put("needDebt", ai.getNeedDebt()); + item.put("finishDebt", ai.getFinishDebt()); + BigDecimal eachAmount = ai.getEachAmount(); + if(BusinessConstants.TYPE_MONEY_IN.equals(type)) { + item.put("eachAmount", eachAmount); + } else if(BusinessConstants.TYPE_MONEY_OUT.equals(type)) { + item.put("eachAmount", BigDecimal.ZERO.subtract(eachAmount)); + } else { + item.put("eachAmount", (eachAmount.compareTo(BigDecimal.ZERO))==-1 ? BigDecimal.ZERO.subtract(eachAmount): eachAmount); + } + item.put("remark", ai.getRemark()); + dataArray.add(item); + } + } + outer.put("rows", dataArray); + res.code = 200; + res.data = outer; + } catch (Exception e) { + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/controller/AssetController.java b/smtERP-boot/src/main/java/com/reallin/smt/controller/AssetController.java new file mode 100644 index 0000000..220400e --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/controller/AssetController.java @@ -0,0 +1,108 @@ +package com.reallin.smt.controller; + +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.base.BaseController; +import com.reallin.smt.base.TableDataInfo; +import com.reallin.smt.datasource.entities.Asset; +import com.reallin.smt.service.AssetManagementService; +import com.reallin.smt.utils.Constants; +import com.reallin.smt.utils.StringUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static com.reallin.smt.utils.ResponseJsonUtil.returnJson; +import static com.reallin.smt.utils.ResponseJsonUtil.returnStr; + +@RestController +@RequestMapping("/asset") +@Api(tags = "资产台账") +public class AssetController extends BaseController { + @Resource + private AssetManagementService service; + + @GetMapping("/list") + @ApiOperation("资产台账列表") + public TableDataInfo list(@RequestParam(value = Constants.SEARCH, required = false) String search) throws Exception { + List list = service.listAssets(value(search, "keyword"), longValue(search, "categoryId"), value(search, "status")); + return getDataTable(list); + } + + @GetMapping("/dashboard") + @ApiOperation("资产汇总统计") + public String dashboard() throws Exception { + return returnJson(service.assetDashboard(), "成功", 200); + } + + @GetMapping("/options") + public String options() throws Exception { + Map data = new HashMap<>(); + data.put("rows", service.assetOptions()); + return returnJson(data, "成功", 200); + } + + @GetMapping("/category/options") + public String categoryOptions() throws Exception { + Map data = new HashMap<>(); + data.put("rows", service.assetCategoryOptions()); + return returnJson(data, "成功", 200); + } + + @GetMapping("/category/list") + public String categoryList(@RequestParam(value = Constants.SEARCH, required = false) String search) throws Exception { + Map data = new HashMap<>(); + data.put("rows", service.listAssetCategories(value(search, "keyword"))); + return returnJson(data, "成功", 200); + } + + @PostMapping("/category/add") + public String addCategory(@RequestBody JSONObject json) throws Exception { + json.remove("id"); + return returnStr(new HashMap<>(), service.saveAssetCategory(json)); + } + + @PutMapping("/category/update") + public String updateCategory(@RequestBody JSONObject json) throws Exception { + return returnStr(new HashMap<>(), service.saveAssetCategory(json)); + } + + @DeleteMapping("/category/delete") + public String deleteCategory(@RequestParam Long id) throws Exception { + return returnStr(new HashMap<>(), service.deleteAssetCategory(id)); + } + + @PostMapping("/add") + public String add(@RequestBody JSONObject json) throws Exception { + json.remove("id"); + return returnStr(new HashMap<>(), service.saveAsset(json)); + } + + @PutMapping("/update") + public String update(@RequestBody JSONObject json) throws Exception { + return returnStr(new HashMap<>(), service.saveAsset(json)); + } + + @DeleteMapping("/delete") + public String delete(@RequestParam Long id) throws Exception { + return returnStr(new HashMap<>(), service.deleteAsset(id)); + } + + private static String value(String search, String key) { + return StringUtil.getInfo(search, key); + } + + private static Long longValue(String search, String key) { + String value = value(search, key); + if (value == null || value.trim().isEmpty()) return null; + try { + return Long.valueOf(value.trim()); + } catch (NumberFormatException ignored) { + return null; + } + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/controller/AssetDeviceController.java b/smtERP-boot/src/main/java/com/reallin/smt/controller/AssetDeviceController.java new file mode 100644 index 0000000..af77fd3 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/controller/AssetDeviceController.java @@ -0,0 +1,62 @@ +package com.reallin.smt.controller; + +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.base.BaseController; +import com.reallin.smt.base.TableDataInfo; +import com.reallin.smt.datasource.entities.AssetDevice; +import com.reallin.smt.service.AssetManagementService; +import com.reallin.smt.utils.Constants; +import com.reallin.smt.utils.StringUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static com.reallin.smt.utils.ResponseJsonUtil.returnJson; +import static com.reallin.smt.utils.ResponseJsonUtil.returnStr; + +@RestController +@RequestMapping("/assetDevice") +@Api(tags = "设备台账") +public class AssetDeviceController extends BaseController { + @Resource + private AssetManagementService service; + + @GetMapping("/list") + @ApiOperation("设备台账列表") + public TableDataInfo list(@RequestParam(value = Constants.SEARCH, required = false) String search) throws Exception { + List list = service.listDevices(value(search, "keyword"), value(search, "deviceCategory"), value(search, "status")); + return getDataTable(list); + } + + @GetMapping("/options") + public String options() throws Exception { + Map data = new HashMap<>(); + data.put("rows", service.deviceOptions()); + return returnJson(data, "成功", 200); + } + + @PostMapping("/add") + public String add(@RequestBody JSONObject json) throws Exception { + json.remove("id"); + return returnStr(new HashMap<>(), service.saveDevice(json)); + } + + @PutMapping("/update") + public String update(@RequestBody JSONObject json) throws Exception { + return returnStr(new HashMap<>(), service.saveDevice(json)); + } + + @DeleteMapping("/delete") + public String delete(@RequestParam Long id) throws Exception { + return returnStr(new HashMap<>(), service.deleteDevice(id)); + } + + private static String value(String search, String key) { + return StringUtil.getInfo(search, key); + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/controller/AssetInventoryController.java b/smtERP-boot/src/main/java/com/reallin/smt/controller/AssetInventoryController.java new file mode 100644 index 0000000..08039de --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/controller/AssetInventoryController.java @@ -0,0 +1,120 @@ +package com.reallin.smt.controller; + +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.base.BaseController; +import com.reallin.smt.base.TableDataInfo; +import com.reallin.smt.datasource.entities.AssetInventory; +import com.reallin.smt.datasource.entities.AssetInventoryDetail; +import com.reallin.smt.datasource.vo.InventoryOperatorOption; +import com.reallin.smt.service.AssetManagementService; +import com.reallin.smt.utils.Constants; +import com.reallin.smt.utils.StringUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static com.reallin.smt.utils.ResponseJsonUtil.returnJson; +import static com.reallin.smt.utils.ResponseJsonUtil.returnStr; + +@RestController +@RequestMapping("/assetInventory") +@Api(tags = "资产盘点") +public class AssetInventoryController extends BaseController { + @Resource + private AssetManagementService service; + + @GetMapping("/list") + public TableDataInfo list(@RequestParam(value = Constants.SEARCH, required = false) String search) throws Exception { + List list = service.listInventories(value(search, "keyword"), value(search, "status"), + value(search, "scopeType"), value(search, "plannedStart"), value(search, "plannedEnd"), + longValue(search, "inventoryUserId")); + return getDataTable(list); + } + + @GetMapping({"/operatorOptions", "/personOptions"}) + public String operatorOptions() throws Exception { + List rows = service.inventoryOperatorOptions(); + Map data = new HashMap<>(); + data.put("rows", rows); + return returnJson(data, "成功", 200); + } + + @GetMapping("/details") + public TableDataInfo details(@RequestParam Long inventoryId, + @RequestParam(required = false) String inventoryStatus, + @RequestParam(required = false) String keyword) throws Exception { + List list = service.listInventoryDetails(inventoryId, inventoryStatus, keyword); + return getDataTable(list); + } + + @PostMapping("/create") + @ApiOperation("创建盘点任务并生成台账快照") + public String create(@RequestBody JSONObject json) throws Exception { + return inventoryResult(service.createInventory(json, "MANUAL")); + } + + @PostMapping("/start") + public String start(@RequestBody JSONObject json) throws Exception { + return inventoryResult(service.startInventory(json.getLong("id"))); + } + + @PostMapping("/record") + @ApiOperation("登记单条资产或设备盘点结果,也支持按编码扫码盘点") + public String record(@RequestBody JSONObject json) throws Exception { + return inventoryResult(service.recordInventory(json)); + } + + @PostMapping("/submit") + public String submit(@RequestBody JSONObject json) throws Exception { + return inventoryResult(service.submitInventory(json.getLong("id"))); + } + + @PostMapping("/audit") + public String audit(@RequestBody JSONObject json) throws Exception { + Boolean approved = json.getBoolean("approved"); + return inventoryResult(service.auditInventory(json.getLong("id"), approved == null || approved, + json.getString("remark"))); + } + + @PostMapping("/close") + public String close(@RequestBody JSONObject json) throws Exception { + return inventoryResult(service.closeInventory(json.getLong("id"))); + } + + @DeleteMapping("/delete") + public String delete(@RequestParam Long id) throws Exception { + return returnStr(new HashMap<>(), service.deleteInventory(id)); + } + + @PostMapping("/collaboration/create") + @ApiOperation("供协同服务调用:幂等创建盘点任务") + public String collaborationCreate(@RequestBody(required = false) JSONObject json) throws Exception { + return inventoryResult(service.createInventory(json == null ? new JSONObject() : json, "COLLABORATION")); + } + + @PostMapping("/collaboration/record") + @ApiOperation("供协同服务调用:按盘点单和资产/设备编码回传盘点结果") + public String collaborationRecord(@RequestBody JSONObject json) throws Exception { + return inventoryResult(service.recordInventoryFromCollaboration(json)); + } + + private String inventoryResult(AssetInventory inventory) { + Map data = new HashMap<>(); + data.put("inventory", inventory); + return returnJson(data, "成功", 200); + } + + private static String value(String search, String key) { + return StringUtil.getInfo(search, key); + } + + private static Long longValue(String search, String key) { + String value = value(search, key); + return value == null || value.trim().isEmpty() ? null : Long.valueOf(value); + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/controller/CustomerCategoryController.java b/smtERP-boot/src/main/java/com/reallin/smt/controller/CustomerCategoryController.java new file mode 100644 index 0000000..1d7e76f --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/controller/CustomerCategoryController.java @@ -0,0 +1,102 @@ +package com.reallin.smt.controller; + +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.base.BaseController; +import com.reallin.smt.base.TableDataInfo; +import com.reallin.smt.utils.ErpInfo; +import com.reallin.smt.datasource.entities.CustomerCategory; +import com.reallin.smt.service.CustomerCategoryService; +import com.reallin.smt.utils.Constants; +import com.reallin.smt.utils.StringUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static com.reallin.smt.utils.ResponseJsonUtil.returnJson; +import static com.reallin.smt.utils.ResponseJsonUtil.returnStr; + +/** + * 客户分类管理 + */ +@RestController +@RequestMapping(value = "/customerCategory") +@Api(tags = {"客户分类管理"}) +public class CustomerCategoryController extends BaseController { + private Logger logger = LoggerFactory.getLogger(CustomerCategoryController.class); + + @Resource + private CustomerCategoryService customerCategoryService; + + @GetMapping(value = "/info") + @ApiOperation(value = "根据id获取信息") + public String getInfo(@RequestParam("id") Long id, HttpServletRequest request) throws Exception { + CustomerCategory category = customerCategoryService.getCustomerCategory(id); + Map objectMap = new HashMap<>(); + if (category != null) { + objectMap.put("info", category); + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } + + @GetMapping(value = "/list") + @ApiOperation(value = "获取列表") + public TableDataInfo getList(@RequestParam(value = Constants.SEARCH, required = false) String search, + HttpServletRequest request) throws Exception { + String categoryName = StringUtil.getInfo(search, "categoryName"); + String parentId = StringUtil.getInfo(search, "parentId"); + List list = customerCategoryService.select(categoryName, + parentId != null && !parentId.isEmpty() ? Long.parseLong(parentId) : null); + return getDataTable(list); + } + + @GetMapping(value = "/treeList") + @ApiOperation(value = "获取树形列表") + public String getTreeList(HttpServletRequest request) throws Exception { + Map objectMap = new HashMap<>(); + List list = customerCategoryService.getTreeList(); + objectMap.put("data", list); + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } + + @PostMapping(value = "/add") + @ApiOperation(value = "新增") + public String add(@RequestBody JSONObject obj, HttpServletRequest request) throws Exception { + Map objectMap = new HashMap<>(); + int insert = customerCategoryService.insertCustomerCategory(obj, request); + return returnStr(objectMap, insert); + } + + @PutMapping(value = "/update") + @ApiOperation(value = "修改") + public String update(@RequestBody JSONObject obj, HttpServletRequest request) throws Exception { + Map objectMap = new HashMap<>(); + int update = customerCategoryService.updateCustomerCategory(obj, request); + return returnStr(objectMap, update); + } + + @DeleteMapping(value = "/delete") + @ApiOperation(value = "删除") + public String delete(@RequestParam("id") Long id, HttpServletRequest request) throws Exception { + Map objectMap = new HashMap<>(); + int delete = customerCategoryService.deleteCustomerCategory(id, request); + return returnStr(objectMap, delete); + } + + @DeleteMapping(value = "/deleteBatch") + @ApiOperation(value = "批量删除") + public String batchDelete(@RequestParam("ids") String ids, HttpServletRequest request) throws Exception { + Map objectMap = new HashMap<>(); + int delete = customerCategoryService.batchDeleteByIds(ids, request); + return returnStr(objectMap, delete); + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/controller/CustomerContactController.java b/smtERP-boot/src/main/java/com/reallin/smt/controller/CustomerContactController.java new file mode 100644 index 0000000..a6edca9 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/controller/CustomerContactController.java @@ -0,0 +1,111 @@ +package com.reallin.smt.controller; + +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.base.BaseController; +import com.reallin.smt.base.TableDataInfo; +import com.reallin.smt.utils.ErpInfo; +import com.reallin.smt.datasource.entities.CustomerContact; +import com.reallin.smt.service.CustomerContactService; +import com.reallin.smt.utils.Constants; +import com.reallin.smt.utils.StringUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static com.reallin.smt.utils.ResponseJsonUtil.returnJson; +import static com.reallin.smt.utils.ResponseJsonUtil.returnStr; + +/** + * 客户联系人管理 + */ +@RestController +@RequestMapping(value = "/customerContact") +@Api(tags = {"客户联系人管理"}) +public class CustomerContactController extends BaseController { + private Logger logger = LoggerFactory.getLogger(CustomerContactController.class); + + @Resource + private CustomerContactService customerContactService; + + @GetMapping(value = "/info") + @ApiOperation(value = "根据id获取信息") + public String getInfo(@RequestParam("id") Long id, HttpServletRequest request) throws Exception { + CustomerContact contact = customerContactService.getCustomerContact(id); + Map objectMap = new HashMap<>(); + if (contact != null) { + objectMap.put("info", contact); + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } + + @GetMapping(value = "/list") + @ApiOperation(value = "获取列表") + public TableDataInfo getList(@RequestParam(value = Constants.SEARCH, required = false) String search, + HttpServletRequest request) throws Exception { + String customerId = StringUtil.getInfo(search, "customerId"); + String contactName = StringUtil.getInfo(search, "contactName"); + List list = customerContactService.select( + customerId != null && !customerId.isEmpty() ? Long.parseLong(customerId) : null, + contactName); + return getDataTable(list); + } + + @GetMapping(value = "/listByCustomerId") + @ApiOperation(value = "根据客户ID获取联系人列表") + public String getListByCustomerId(@RequestParam("customerId") Long customerId, HttpServletRequest request) throws Exception { + Map objectMap = new HashMap<>(); + List list = customerContactService.selectByCustomerId(customerId); + objectMap.put("data", list); + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } + + @PostMapping(value = "/add") + @ApiOperation(value = "新增") + public String add(@RequestBody JSONObject obj, HttpServletRequest request) throws Exception { + Map objectMap = new HashMap<>(); + int insert = customerContactService.insertCustomerContact(obj, request); + return returnStr(objectMap, insert); + } + + @PutMapping(value = "/update") + @ApiOperation(value = "修改") + public String update(@RequestBody JSONObject obj, HttpServletRequest request) throws Exception { + Map objectMap = new HashMap<>(); + int update = customerContactService.updateCustomerContact(obj, request); + return returnStr(objectMap, update); + } + + @DeleteMapping(value = "/delete") + @ApiOperation(value = "删除") + public String delete(@RequestParam("id") Long id, HttpServletRequest request) throws Exception { + Map objectMap = new HashMap<>(); + int delete = customerContactService.deleteCustomerContact(id, request); + return returnStr(objectMap, delete); + } + + @DeleteMapping(value = "/deleteBatch") + @ApiOperation(value = "批量删除") + public String batchDelete(@RequestParam("ids") String ids, HttpServletRequest request) throws Exception { + Map objectMap = new HashMap<>(); + int delete = customerContactService.batchDeleteByIds(ids, request); + return returnStr(objectMap, delete); + } + + @DeleteMapping(value = "/deleteByCustomerId") + @ApiOperation(value = "根据客户ID删除所有联系人") + public String deleteByCustomerId(@RequestParam("customerId") Long customerId, HttpServletRequest request) throws Exception { + Map objectMap = new HashMap<>(); + int delete = customerContactService.deleteByCustomerId(customerId, request); + return returnStr(objectMap, delete); + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/controller/DashboardController.java b/smtERP-boot/src/main/java/com/reallin/smt/controller/DashboardController.java new file mode 100644 index 0000000..0c5277b --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/controller/DashboardController.java @@ -0,0 +1,29 @@ +package com.reallin.smt.controller; + +import com.reallin.smt.base.BaseController; +import com.reallin.smt.service.DashboardService; +import com.reallin.smt.utils.BaseResponseInfo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +@RestController +@RequestMapping("/dashboard") +@Api(tags = {"首页看板"}) +public class DashboardController extends BaseController { + @Resource + private DashboardService dashboardService; + + @GetMapping("/operationOverview") + @ApiOperation(value = "获取首页业务运营概览") + public BaseResponseInfo operationOverview() { + BaseResponseInfo response = new BaseResponseInfo(); + response.code = 200; + response.data = dashboardService.getOperationOverview(); + return response; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/controller/DeliveryPlanController.java b/smtERP-boot/src/main/java/com/reallin/smt/controller/DeliveryPlanController.java new file mode 100644 index 0000000..c8951cb --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/controller/DeliveryPlanController.java @@ -0,0 +1,93 @@ +package com.reallin.smt.controller; + +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.base.BaseController; +import com.reallin.smt.base.TableDataInfo; +import com.reallin.smt.datasource.entities.DeliveryPlanItem; +import com.reallin.smt.datasource.vo.DeliveryPlanVo4List; +import com.reallin.smt.service.DeliveryPlanService; +import com.reallin.smt.utils.BaseResponseInfo; +import com.reallin.smt.utils.Constants; +import com.reallin.smt.utils.StringUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static com.reallin.smt.utils.ResponseJsonUtil.returnStr; + +@RestController +@RequestMapping(value = "/deliveryPlan") +@Api(tags = {"交货计划管理"}) +public class DeliveryPlanController extends BaseController { + + @Resource + private DeliveryPlanService deliveryPlanService; + + @GetMapping(value = "/list") + @ApiOperation(value = "交货计划列表") + public TableDataInfo getList(@RequestParam(value = Constants.SEARCH, required = false) String search, + HttpServletRequest request) { + String planNumber = StringUtil.getInfo(search, "planNumber"); + String sourceBillNumber = StringUtil.getInfo(search, "sourceBillNumber"); + String saleOrderNumber = StringUtil.getInfo(search, "saleOrderNumber"); + String sourceType = StringUtil.getInfo(search, "sourceType"); + String status = StringUtil.getInfo(search, "status"); + String beginTime = StringUtil.getInfo(search, "beginTime"); + String endTime = StringUtil.getInfo(search, "endTime"); + List list = deliveryPlanService.select(planNumber, sourceBillNumber, saleOrderNumber, + sourceType, status, beginTime, endTime); + return getDataTable(list); + } + + @GetMapping(value = "/detail") + @ApiOperation(value = "交货计划详情") + public BaseResponseInfo getDetail(@RequestParam("id") Long id, HttpServletRequest request) { + BaseResponseInfo res = new BaseResponseInfo(); + res.code = 200; + res.data = deliveryPlanService.getDetail(id); + return res; + } + + @GetMapping(value = "/sourceItems") + @ApiOperation(value = "出库单可计划明细") + public BaseResponseInfo getSourceItems(@RequestParam("sourceBillId") Long sourceBillId, HttpServletRequest request) { + BaseResponseInfo res = new BaseResponseInfo(); + List rows = deliveryPlanService.getSourceItems(sourceBillId); + JSONObject data = new JSONObject(); + data.put("rows", rows); + res.code = 200; + res.data = data; + return res; + } + + @PostMapping(value = "/createFromSourceBill") + @ApiOperation(value = "从销售/零售出库单创建交货计划") + public String createFromSourceBill(@RequestBody JSONObject obj, HttpServletRequest request) throws Exception { + Map objectMap = new HashMap<>(); + int insert = deliveryPlanService.createFromSourceBill(obj, request); + return returnStr(objectMap, insert); + } + + @PostMapping(value = "/batchCreateFromSourceBill") + @ApiOperation(value = "批量从销售/零售出库单创建交货计划") + public String batchCreateFromSourceBill(@RequestBody JSONObject obj, HttpServletRequest request) throws Exception { + Map objectMap = new HashMap<>(); + int insert = deliveryPlanService.batchCreateFromSourceBill(obj, request); + objectMap.put("message", "已生成" + insert + "张交货计划"); + return returnStr(objectMap, insert); + } + + @PostMapping(value = "/adjust") + @ApiOperation(value = "调整交货计划") + public String adjustPlan(@RequestBody JSONObject obj, HttpServletRequest request) throws Exception { + Map objectMap = new HashMap<>(); + int update = deliveryPlanService.adjustPlan(obj, request); + return returnStr(objectMap, update); + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/controller/DepotController.java b/smtERP-boot/src/main/java/com/reallin/smt/controller/DepotController.java new file mode 100644 index 0000000..e032b8b --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/controller/DepotController.java @@ -0,0 +1,305 @@ +package com.reallin.smt.controller; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.base.BaseController; +import com.reallin.smt.base.TableDataInfo; +import com.reallin.smt.datasource.entities.Depot; +import com.reallin.smt.datasource.entities.DepotEx; +import com.reallin.smt.datasource.entities.MaterialInitialStock; +import com.reallin.smt.datasource.entities.User; +import com.reallin.smt.service.DepotService; +import com.reallin.smt.service.MaterialService; +import com.reallin.smt.service.UserBusinessService; +import com.reallin.smt.service.UserService; +import com.reallin.smt.utils.BaseResponseInfo; +import com.reallin.smt.utils.Constants; +import com.reallin.smt.utils.ErpInfo; +import com.reallin.smt.utils.StringUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +import static com.reallin.smt.utils.ResponseJsonUtil.returnJson; +import static com.reallin.smt.utils.ResponseJsonUtil.returnStr; + +/** + * @author ji sheng hua 752*718*920 + */ +@RestController +@RequestMapping(value = "/depot") +@Api(tags = {"仓库管理"}) +public class DepotController extends BaseController { + private Logger logger = LoggerFactory.getLogger(DepotController.class); + + @Resource + private DepotService depotService; + + @Resource + private UserBusinessService userBusinessService; + + @Resource + private MaterialService materialService; + + @Resource + private UserService userService; + + @GetMapping(value = "/info") + @ApiOperation(value = "根据id获取信息") + public String getList(@RequestParam("id") Long id, + HttpServletRequest request) throws Exception { + Depot depot = depotService.getDepot(id); + Map objectMap = new HashMap<>(); + if(depot != null) { + objectMap.put("info", depot); + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } + + @GetMapping(value = "/list") + @ApiOperation(value = "获取信息列表") + public TableDataInfo getList(@RequestParam(value = Constants.SEARCH, required = false) String search, + HttpServletRequest request)throws Exception { + String name = StringUtil.getInfo(search, "name"); + Integer type = StringUtil.parseInteger(StringUtil.getInfo(search, "type")); + String remark = StringUtil.getInfo(search, "remark"); + List list = depotService.select(name, type, remark); + return getDataTable(list); + } + + @PostMapping(value = "/add") + @ApiOperation(value = "新增") + public String addResource(@RequestBody JSONObject obj, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int insert = depotService.insertDepot(obj, request); + return returnStr(objectMap, insert); + } + + @PutMapping(value = "/update") + @ApiOperation(value = "修改") + public String updateResource(@RequestBody JSONObject obj, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int update = depotService.updateDepot(obj, request); + return returnStr(objectMap, update); + } + + @DeleteMapping(value = "/delete") + @ApiOperation(value = "删除") + public String deleteResource(@RequestParam("id") Long id, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int delete = depotService.deleteDepot(id, request); + return returnStr(objectMap, delete); + } + + @DeleteMapping(value = "/deleteBatch") + @ApiOperation(value = "批量删除") + public String batchDeleteResource(@RequestParam("ids") String ids, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int delete = depotService.batchDeleteDepot(ids, request); + return returnStr(objectMap, delete); + } + + @GetMapping(value = "/checkIsNameExist") + @ApiOperation(value = "检查名称是否存在") + public String checkIsNameExist(@RequestParam Long id, @RequestParam(value ="name", required = false) String name, + HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int exist = depotService.checkIsNameExist(id, name); + if(exist > 0) { + objectMap.put("status", true); + } else { + objectMap.put("status", false); + } + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } + + /** + * 仓库列表 + * @param request + * @return + * @throws Exception + */ + @GetMapping(value = "/getAllList") + @ApiOperation(value = "仓库列表") + public BaseResponseInfo getAllList(HttpServletRequest request) throws Exception{ + BaseResponseInfo res = new BaseResponseInfo(); + try { + List depotList = depotService.getAllList(); + res.code = 200; + res.data = depotList; + } catch(Exception e){ + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 用户对应仓库显示 + * @param type + * @param keyId + * @param request + * @return + */ + @GetMapping(value = "/findUserDepot") + @ApiOperation(value = "用户对应仓库显示") + public JSONArray findUserDepot(@RequestParam("UBType") String type, @RequestParam("UBKeyId") String keyId, + HttpServletRequest request) throws Exception{ + JSONArray arr = new JSONArray(); + try { + //获取权限信息 + String ubValue = userBusinessService.getUBValueByTypeAndKeyId(type, keyId); + List dataList = depotService.findUserDepot(); + //开始拼接json数据 + JSONObject outer = new JSONObject(); + outer.put("id", 0); + outer.put("key", 0); + outer.put("value", 0); + outer.put("title", "仓库列表"); + outer.put("attributes", "仓库列表"); + //存放数据json数组 + JSONArray dataArray = new JSONArray(); + if (null != dataList) { + for (Depot depot : dataList) { + JSONObject item = new JSONObject(); + item.put("id", depot.getId()); + item.put("key", depot.getId()); + item.put("value", depot.getId()); + item.put("title", depot.getName()); + item.put("attributes", depot.getName()); + Boolean flag = ubValue.contains("[" + depot.getId().toString() + "]"); + if (flag) { + item.put("checked", true); + } + dataArray.add(item); + } + } + outer.put("children", dataArray); + arr.add(outer); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return arr; + } + + /** + * 获取当前用户拥有权限的仓库列表 + * @param request + * @return + * @throws Exception + */ + @GetMapping(value = "/findDepotByCurrentUser") + @ApiOperation(value = "获取当前用户拥有权限的仓库列表") + public BaseResponseInfo findDepotByCurrentUser(HttpServletRequest request) throws Exception{ + BaseResponseInfo res = new BaseResponseInfo(); + try { + JSONArray arr = depotService.findDepotByCurrentUser(); + res.code = 200; + res.data = arr; + } catch (Exception e) { + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 更新默认仓库 + * @param object + * @param request + * @return + * @throws Exception + */ + @PostMapping(value = "/updateIsDefault") + @ApiOperation(value = "更新默认仓库") + public String updateIsDefault(@RequestBody JSONObject object, + HttpServletRequest request) throws Exception{ + Long depotId = object.getLong("id"); + Map objectMap = new HashMap<>(); + int res = depotService.updateIsDefault(depotId); + if(res > 0) { + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } + + /** + * 仓库列表-带库存 + * @param mId + * @param request + * @return + */ + @GetMapping(value = "/getAllListWithStock") + @ApiOperation(value = "仓库列表-带库存") + public BaseResponseInfo getAllList(@RequestParam("mId") Long mId, + HttpServletRequest request) { + BaseResponseInfo res = new BaseResponseInfo(); + try { + List list = depotService.getAllList(); + List depotList = new ArrayList(); + for(Depot depot: list) { + DepotEx de = new DepotEx(); + if(mId!=0) { + BigDecimal initStock = materialService.getInitStock(mId, depot.getId()); + BigDecimal currentStock = materialService.getCurrentStockByMaterialIdAndDepotId(mId, depot.getId()); + de.setInitStock(initStock); + de.setCurrentStock(currentStock); + MaterialInitialStock materialInitialStock = materialService.getSafeStock(mId, depot.getId()); + de.setLowSafeStock(materialInitialStock.getLowSafeStock()); + de.setHighSafeStock(materialInitialStock.getHighSafeStock()); + } else { + de.setInitStock(BigDecimal.ZERO); + de.setCurrentStock(BigDecimal.ZERO); + } + de.setId(depot.getId()); + de.setName(depot.getName()); + depotList.add(de); + } + res.code = 200; + res.data = depotList; + } catch(Exception e){ + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 批量设置状态-启用或者禁用 + * @param jsonObject + * @param request + * @return + */ + @PostMapping(value = "/batchSetStatus") + @ApiOperation(value = "批量设置状态") + public String batchSetStatus(@RequestBody JSONObject jsonObject, + HttpServletRequest request)throws Exception { + Boolean status = jsonObject.getBoolean("status"); + String ids = jsonObject.getString("ids"); + Map objectMap = new HashMap<>(); + int res = depotService.batchSetStatus(status, ids); + if(res > 0) { + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/controller/DepotHeadController.java b/smtERP-boot/src/main/java/com/reallin/smt/controller/DepotHeadController.java new file mode 100644 index 0000000..9986028 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/controller/DepotHeadController.java @@ -0,0 +1,864 @@ +package com.reallin.smt.controller; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.base.BaseController; +import com.reallin.smt.base.TableDataInfo; +import com.reallin.smt.constants.BusinessConstants; +import com.reallin.smt.constants.ExceptionConstants; +import com.reallin.smt.datasource.entities.DepotHead; +import com.reallin.smt.datasource.entities.DepotHeadVo4Body; +import com.reallin.smt.datasource.vo.DepotHeadVo4InDetail; +import com.reallin.smt.datasource.vo.DepotHeadVo4InOutMCount; +import com.reallin.smt.datasource.vo.DepotHeadVo4List; +import com.reallin.smt.datasource.vo.DepotHeadVo4StatementAccount; +import com.reallin.smt.service.DepotService; +import com.reallin.smt.service.DepotHeadService; +import com.reallin.smt.service.MaterialService; +import com.reallin.smt.service.SystemConfigService; +import com.reallin.smt.service.UserService; +import com.reallin.smt.utils.*; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static com.reallin.smt.utils.ResponseJsonUtil.returnJson; +import static com.reallin.smt.utils.ResponseJsonUtil.returnStr; + +/** + * @author ji-sheng-hua 752*718*920 + */ +@RestController +@RequestMapping(value = "/depotHead") +@Api(tags = {"单据管理"}) +public class DepotHeadController extends BaseController { + private Logger logger = LoggerFactory.getLogger(DepotHeadController.class); + + @Resource + private DepotHeadService depotHeadService; + + @Resource + private DepotService depotService; + + @Resource + private MaterialService materialService; + + @Resource + private SystemConfigService systemConfigService; + + @Resource + private UserService userService; + + @GetMapping(value = "/info") + @ApiOperation(value = "根据id获取信息") + public String getList(@RequestParam("id") Long id, + HttpServletRequest request) throws Exception { + DepotHead depotHead = depotHeadService.getDepotHead(id); + Map objectMap = new HashMap<>(); + if(depotHead != null) { + objectMap.put("info", depotHead); + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } + + @GetMapping(value = "/list") + @ApiOperation(value = "获取信息列表") + public TableDataInfo getList(@RequestParam(value = Constants.SEARCH, required = false) String search, + HttpServletRequest request)throws Exception { + String type = StringUtil.getInfo(search, "type"); + String subType = StringUtil.getInfo(search, "subType"); + String hasDebt = StringUtil.getInfo(search, "hasDebt"); + String hasLastDebt = StringUtil.getInfo(search, "hasLastDebt"); + String status = StringUtil.getInfo(search, "status"); + String purchaseStatus = StringUtil.getInfo(search, "purchaseStatus"); + String number = StringUtil.getInfo(search, "number"); + String linkApply = StringUtil.getInfo(search, "linkApply"); + String linkNumber = StringUtil.getInfo(search, "linkNumber"); + String beginTime = StringUtil.getInfo(search, "beginTime"); + String endTime = StringUtil.getInfo(search, "endTime"); + String materialParam = StringUtil.getInfo(search, "materialParam"); + Long organId = StringUtil.parseStrLong(StringUtil.getInfo(search, "organId")); + Long creator = StringUtil.parseStrLong(StringUtil.getInfo(search, "creator")); + Long depotId = StringUtil.parseStrLong(StringUtil.getInfo(search, "depotId")); + Long accountId = StringUtil.parseStrLong(StringUtil.getInfo(search, "accountId")); + String salesMan = StringUtil.getInfo(search, "salesMan"); + String remark = StringUtil.getInfo(search, "remark"); + List list = depotHeadService.select(type, subType, hasDebt, hasLastDebt, status, purchaseStatus, number, linkApply, linkNumber, + beginTime, endTime, materialParam, organId, creator, depotId, accountId, salesMan, remark); + return getDataTable(list); + } + + @DeleteMapping(value = "/delete") + @ApiOperation(value = "删除") + public String deleteResource(@RequestParam("id") Long id, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int delete = depotHeadService.deleteDepotHead(id, request); + return returnStr(objectMap, delete); + } + + @DeleteMapping(value = "/deleteBatch") + @ApiOperation(value = "批量删除") + public String batchDeleteResource(@RequestParam("ids") String ids, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int delete = depotHeadService.batchDeleteDepotHead(ids, request); + return returnStr(objectMap, delete); + } + + @PostMapping(value = "/forceCloseBatch") + @ApiOperation(value = "强制结单") + public String forceCloseBatch(@RequestBody JSONObject jsonObject, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + String ids = jsonObject.getString("ids"); + int res = depotHeadService.batchForceClose(ids, request); + if(res > 0) { + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } + + @PostMapping(value = "/forceClosePurchaseBatch") + @ApiOperation(value = "强制结单-以销定购") + public String forceClosePurchaseBatch(@RequestBody JSONObject jsonObject, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + String ids = jsonObject.getString("ids"); + int res = depotHeadService.batchForceClosePurchase(ids, request); + if(res > 0) { + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } + + @PostMapping(value = "/batchSetLastDebt") + @ApiOperation(value = "修正最终欠款") + public String batchSetLastDebt(@RequestBody JSONObject jsonObject, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + String ids = jsonObject.getString("ids"); + int res = depotHeadService.batchSetLastDebt(ids, request); + if(res > 0) { + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } + + @PostMapping(value = "/batchSetLastDeposit") + @ApiOperation(value = "修正剩余订金") + public String batchSetLastDeposit(@RequestBody JSONObject jsonObject, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + String ids = jsonObject.getString("ids"); + int res = depotHeadService.batchSetLastDeposit(ids, request); + if(res > 0) { + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } + + /** + * 批量设置状态-审核或者反审核 + * @param jsonObject + * @param request + * @return + */ + @PostMapping(value = "/batchSetStatus") + @ApiOperation(value = "批量设置状态-审核或者反审核") + public String batchSetStatus(@RequestBody JSONObject jsonObject, + HttpServletRequest request) throws Exception{ + Map objectMap = new HashMap<>(); + String status = jsonObject.getString("status"); + String ids = jsonObject.getString("ids"); + int res = depotHeadService.batchSetStatus(status, ids); + if(res > 0) { + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } + + /** + * 入库出库明细接口 + * @param currentPage + * @param pageSize + * @param oId + * @param number + * @param materialParam + * @param depotId + * @param beginTime + * @param endTime + * @param type + * @param request + * @return + */ + @GetMapping(value = "/findInOutDetail") + @ApiOperation(value = "入库出库明细接口") + public BaseResponseInfo findInOutDetail(@RequestParam("currentPage") Integer currentPage, + @RequestParam("pageSize") Integer pageSize, + @RequestParam(value = "organId", required = false) Integer oId, + @RequestParam("number") String number, + @RequestParam("materialParam") String materialParam, + @RequestParam(value = "depotId", required = false) Long depotId, + @RequestParam("beginTime") String beginTime, + @RequestParam("endTime") String endTime, + @RequestParam("type") String type, + @RequestParam(value = "creator", required = false) Long creator, + @RequestParam(value = "categoryId", required = false) Long categoryId, + @RequestParam(value = "organizationId", required = false) Long organizationId, + @RequestParam("remark") String remark, + @RequestParam(value = "column", required = false, defaultValue = "createTime") String column, + @RequestParam(value = "order", required = false, defaultValue = "desc") String order, + HttpServletRequest request)throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + Map map = new HashMap(); + try { + List depotList = new ArrayList<>(); + if(depotId != null) { + depotList.add(depotId); + } else { + //未选择仓库时默认为当前用户有权限的仓库 + JSONArray depotArr = depotService.findDepotByCurrentUser(); + for(Object obj: depotArr) { + JSONObject object = JSONObject.parseObject(obj.toString()); + depotList.add(object.getLong("id")); + } + } + List resList = new ArrayList(); + String [] creatorArray = depotHeadService.getCreatorArray(); + if(creatorArray == null && organizationId != null) { + creatorArray = depotHeadService.getCreatorArrayByOrg(organizationId); + } + String subType = "出库".equals(type)? "销售" : ""; + String [] organArray = depotHeadService.getOrganArray(subType, ""); + List categoryList = new ArrayList<>(); + if(categoryId != null){ + categoryList = materialService.getListByParentId(categoryId); + } + beginTime = Tools.parseDayToTime(beginTime, BusinessConstants.DAY_FIRST_TIME); + endTime = Tools.parseDayToTime(endTime,BusinessConstants.DAY_LAST_TIME); + Boolean forceFlag = systemConfigService.getForceApprovalFlag(); + Boolean inOutManageFlag = systemConfigService.getInOutManageFlag(); + List list = depotHeadService.findInOutDetail(beginTime, endTime, type, creatorArray, organArray, categoryList, forceFlag, inOutManageFlag, + StringUtil.toNull(materialParam), depotList, oId, StringUtil.toNull(number), creator, remark, + StringUtil.safeSqlParse(column), StringUtil.safeSqlParse(order), (currentPage-1)*pageSize, pageSize); + int total = depotHeadService.findInOutDetailCount(beginTime, endTime, type, creatorArray, organArray, categoryList, forceFlag, inOutManageFlag, + StringUtil.toNull(materialParam), depotList, oId, StringUtil.toNull(number), creator, remark); + map.put("total", total); + //存放数据json数组 + if (null != list) { + resList.addAll(list); + } + map.put("rows", resList); + DepotHeadVo4InDetail statistic = depotHeadService.findInOutDetailStatistic(beginTime, endTime, type, creatorArray, organArray, categoryList, forceFlag, inOutManageFlag, + StringUtil.toNull(materialParam), depotList, oId, StringUtil.toNull(number), creator, remark); + map.put("operNumberTotal", statistic.getOperNumber()); + map.put("allPriceTotal", statistic.getAllPrice()); + res.code = 200; + res.data = map; + } catch(Exception e){ + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 入库出库汇总接口 + * @param currentPage + * @param pageSize + * @param oId + * @param materialParam + * @param depotId + * @param beginTime + * @param endTime + * @param type + * @param request + * @return + */ + @GetMapping(value = "/findInOutMaterialCount") + @ApiOperation(value = "入库出库汇总接口") + public BaseResponseInfo findInOutMaterialCount(@RequestParam("currentPage") Integer currentPage, + @RequestParam("pageSize") Integer pageSize, + @RequestParam(value = "organId", required = false) Integer oId, + @RequestParam("materialParam") String materialParam, + @RequestParam(value = "depotId", required = false) Long depotId, + @RequestParam(value = "categoryId", required = false) Long categoryId, + @RequestParam(value = "organizationId", required = false) Long organizationId, + @RequestParam("beginTime") String beginTime, + @RequestParam("endTime") String endTime, + @RequestParam("type") String type, + @RequestParam(value = "column", required = false, defaultValue = "createTime") String column, + @RequestParam(value = "order", required = false, defaultValue = "desc") String order, + HttpServletRequest request)throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + Map map = new HashMap(); + try { + List depotList = new ArrayList<>(); + if(depotId != null) { + depotList.add(depotId); + } else { + //未选择仓库时默认为当前用户有权限的仓库 + JSONArray depotArr = depotService.findDepotByCurrentUser(); + for(Object obj: depotArr) { + JSONObject object = JSONObject.parseObject(obj.toString()); + depotList.add(object.getLong("id")); + } + } + List categoryList = new ArrayList<>(); + if(categoryId != null){ + categoryList = materialService.getListByParentId(categoryId); + } + beginTime = Tools.parseDayToTime(beginTime,BusinessConstants.DAY_FIRST_TIME); + endTime = Tools.parseDayToTime(endTime,BusinessConstants.DAY_LAST_TIME); + Boolean forceFlag = systemConfigService.getForceApprovalFlag(); + Boolean inOutManageFlag = systemConfigService.getInOutManageFlag(); + List list = depotHeadService.findInOutMaterialCount(beginTime, endTime, type, categoryList, forceFlag, inOutManageFlag, + StringUtil.toNull(materialParam), depotList, organizationId, oId, StringUtil.safeSqlParse(column), StringUtil.safeSqlParse(order), + (currentPage-1)*pageSize, pageSize); + int total = depotHeadService.findInOutMaterialCountTotal(beginTime, endTime, type, categoryList, forceFlag, inOutManageFlag, + StringUtil.toNull(materialParam), depotList, organizationId, oId); + map.put("total", total); + map.put("rows", list); + DepotHeadVo4InOutMCount statistic = depotHeadService.findInOutMaterialCountStatistic(beginTime, endTime, type, categoryList, forceFlag, inOutManageFlag, + StringUtil.toNull(materialParam), depotList, organizationId, oId); + map.put("numSumTotal", statistic.getNumSum()); + map.put("priceSumTotal", statistic.getPriceSum()); + res.code = 200; + res.data = map; + } catch(Exception e){ + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 调拨明细统计 + * @param currentPage + * @param pageSize + * @param number + * @param materialParam + * @param depotIdF 调出仓库 + * @param depotId 调入仓库 + * @param beginTime + * @param endTime + * @param subType + * @param request + * @return + */ + @GetMapping(value = "/findAllocationDetail") + @ApiOperation(value = "调拨明细统计") + public BaseResponseInfo findallocationDetail(@RequestParam("currentPage") Integer currentPage, + @RequestParam("pageSize") Integer pageSize, + @RequestParam("number") String number, + @RequestParam("materialParam") String materialParam, + @RequestParam(value = "depotId", required = false) Long depotId, + @RequestParam(value = "depotIdF", required = false) Long depotIdF, + @RequestParam(value = "categoryId", required = false) Long categoryId, + @RequestParam(value = "organizationId", required = false) Long organizationId, + @RequestParam("beginTime") String beginTime, + @RequestParam("endTime") String endTime, + @RequestParam("subType") String subType, + @RequestParam("remark") String remark, + @RequestParam(value = "column", required = false, defaultValue = "createTime") String column, + @RequestParam(value = "order", required = false, defaultValue = "desc") String order, + HttpServletRequest request)throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + Map map = new HashMap(); + try { + List depotList = new ArrayList<>(); + List depotFList = new ArrayList<>(); + if(depotId != null) { + depotList.add(depotId); + } else { + //未选择仓库时默认为当前用户有权限的仓库 + JSONArray depotArr = depotService.findDepotByCurrentUser(); + for(Object obj: depotArr) { + JSONObject object = JSONObject.parseObject(obj.toString()); + depotList.add(object.getLong("id")); + } + } + if(depotIdF != null) { + depotFList.add(depotIdF); + } else { + //未选择仓库时默认为当前用户有权限的仓库 + JSONArray depotArr = depotService.findDepotByCurrentUser(); + for(Object obj: depotArr) { + JSONObject object = JSONObject.parseObject(obj.toString()); + depotFList.add(object.getLong("id")); + } + } + String [] creatorArray = depotHeadService.getCreatorArray(); + if(creatorArray == null && organizationId != null) { + creatorArray = depotHeadService.getCreatorArrayByOrg(organizationId); + } + List categoryList = new ArrayList<>(); + if(categoryId != null){ + categoryList = materialService.getListByParentId(categoryId); + } + beginTime = Tools.parseDayToTime(beginTime, BusinessConstants.DAY_FIRST_TIME); + endTime = Tools.parseDayToTime(endTime,BusinessConstants.DAY_LAST_TIME); + Boolean forceFlag = systemConfigService.getForceApprovalFlag(); + List list = depotHeadService.findAllocationDetail(beginTime, endTime, subType, StringUtil.toNull(number), + creatorArray, categoryList, forceFlag, StringUtil.toNull(materialParam), depotList, depotFList, remark, + StringUtil.safeSqlParse(column), StringUtil.safeSqlParse(order), (currentPage-1)*pageSize, pageSize); + int total = depotHeadService.findAllocationDetailCount(beginTime, endTime, subType, StringUtil.toNull(number), + creatorArray, categoryList, forceFlag, StringUtil.toNull(materialParam), depotList, depotFList, remark); + map.put("rows", list); + map.put("total", total); + DepotHeadVo4InDetail statistic = depotHeadService.findAllocationStatistic(beginTime, endTime, subType, StringUtil.toNull(number), + creatorArray, categoryList, forceFlag, StringUtil.toNull(materialParam), depotList, depotFList, remark); + map.put("operNumberTotal", statistic.getOperNumber()); + map.put("allPriceTotal", statistic.getAllPrice()); + res.code = 200; + res.data = map; + } catch(Exception e){ + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 对账单接口 + * @param currentPage + * @param pageSize + * @param beginTime + * @param endTime + * @param organId + * @param hasDebt 1-有欠款 0-无欠款 + * @param supplierType + * @param request + * @return + */ + @GetMapping(value = "/getStatementAccount") + @ApiOperation(value = "对账单接口") + public BaseResponseInfo getStatementAccount(@RequestParam("currentPage") Integer currentPage, + @RequestParam("pageSize") Integer pageSize, + @RequestParam("beginTime") String beginTime, + @RequestParam("endTime") String endTime, + @RequestParam(value = "organId", required = false) Integer organId, + @RequestParam(value = "hasDebt", required = false) Integer hasDebt, + @RequestParam("supplierType") String supplierType, + @RequestParam(value = "billDirection", required = false) String billDirection, + HttpServletRequest request) throws Exception{ + BaseResponseInfo res = new BaseResponseInfo(); + Map map = new HashMap(); + try { + String type = ""; + String subType = ""; + String typeBack = ""; + String subTypeBack = ""; + String billType = ""; + if (("供应商").equals(supplierType)) { + type = "入库"; + subType = "采购"; + typeBack = "出库"; + subTypeBack = "采购退货"; + billType = "付款"; + } else if (("客户").equals(supplierType)) { + type = "出库"; + subType = "销售"; + typeBack = "入库"; + subTypeBack = "销售退货"; + billType = "收款"; + } else if (("会员").equals(supplierType)) { + if (("付款").equals(billDirection)) { + type = "入库"; + subType = "零售退货"; + billType = "付款"; + } else { + type = "出库"; + subType = "零售"; + billType = "收款"; + } + } + String [] organArray = depotHeadService.getOrganArray(subType, ""); + beginTime = Tools.parseDayToTime(beginTime,BusinessConstants.DAY_FIRST_TIME); + endTime = Tools.parseDayToTime(endTime,BusinessConstants.DAY_LAST_TIME); + List list = depotHeadService.getStatementAccount(beginTime, endTime, organId, organArray, + hasDebt, supplierType, type, subType,typeBack, subTypeBack, billType, (currentPage-1)*pageSize, pageSize); + int total = depotHeadService.getStatementAccountCount(beginTime, endTime, organId, organArray, + hasDebt, supplierType, type, subType,typeBack, subTypeBack, billType); + for(DepotHeadVo4StatementAccount item: list) { + //期初 = 起始期初金额+上期欠款金额-上期退货的欠款金额-上期收付款 + BigDecimal preNeed = item.getBeginNeed().add(item.getPreDebtMoney()).subtract(item.getPreReturnDebtMoney()).subtract(item.getPreBackMoney()); + item.setPreNeed(preNeed); + //实际欠款 = 本期欠款-本期退货的欠款金额 + BigDecimal realDebtMoney = item.getDebtMoney().subtract(item.getReturnDebtMoney()); + item.setDebtMoney(realDebtMoney); + //期末 = 期初+实际欠款-本期收款 + BigDecimal allNeedGet = preNeed.add(realDebtMoney).subtract(item.getBackMoney()); + item.setAllNeed(allNeedGet); + } + map.put("rows", list); + map.put("total", total); + List totalPayList = depotHeadService.getStatementAccountTotalPay(beginTime, endTime, organId, organArray, + hasDebt, supplierType, type, subType, typeBack, subTypeBack, billType); + if(totalPayList.size()>0) { + DepotHeadVo4StatementAccount totalPayItem = totalPayList.get(0); + BigDecimal firstMoney = BigDecimal.ZERO; + BigDecimal lastMoney = BigDecimal.ZERO; + if(totalPayItem!=null) { + //期初 = 起始期初金额+上期欠款金额-上期退货的欠款金额-上期收付款 + firstMoney = totalPayItem.getBeginNeed().add(totalPayItem.getPreDebtMoney()).subtract(totalPayItem.getPreReturnDebtMoney()).subtract(totalPayItem.getPreBackMoney()); + //期末 = 期初+本期欠款-本期退货的欠款金额-本期收款 + lastMoney = firstMoney.add(totalPayItem.getDebtMoney()).subtract(totalPayItem.getReturnDebtMoney()).subtract(totalPayItem.getBackMoney()); + } + map.put("firstMoney", firstMoney); //期初 + map.put("lastMoney", lastMoney); //期末 + } + res.code = 200; + res.data = map; + } catch(Exception e){ + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 获取待收款或付款的条数 + * @param request + * @return + */ + @GetMapping(value = "/getNeedCount") + @ApiOperation(value = "获取待收款或付款的条数") + public BaseResponseInfo getNeedCount(@RequestParam("type") String type, HttpServletRequest request)throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + Map map = new HashMap<>(); + try { + String supplierType = ""; + if (("vendor").equals(type)) { + supplierType = "供应商"; + } else if (("customer").equals(type)) { + supplierType = "客户"; + } + int needCount = depotHeadService.getNeedCount(supplierType); + map.put("needCount", needCount); + res.code = 200; + res.data = map; + } catch(Exception e){ + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 根据编号查询单据信息 + * @param number + * @param request + * @return + */ + @GetMapping(value = "/getDetailByNumber") + @ApiOperation(value = "根据编号查询单据信息") + public BaseResponseInfo getDetailByNumber(@RequestParam("number") String number, + HttpServletRequest request)throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + DepotHeadVo4List dhl = new DepotHeadVo4List(); + try { + List list = depotHeadService.getDetailByNumber(number, request); + if(list.size()>0) { + dhl = list.get(0); + } + res.code = 200; + res.data = dhl; + } catch(Exception e){ + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 根据原单号查询关联的单据列表 + * @param number + * @param request + * @return + */ + @GetMapping(value = "/getBillListByLinkNumber") + @ApiOperation(value = "根据原单号查询关联的单据列表") + public BaseResponseInfo getBillListByLinkNumber(@RequestParam("number") String number, + HttpServletRequest request)throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + DepotHead dh = new DepotHead(); + try { + List list = depotHeadService.getBillListByLinkNumber(number); + res.code = 200; + res.data = list; + } catch(Exception e){ + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 新增单据主表及单据子表信息 + * @param body + * @param request + * @return + * @throws Exception + */ + @PostMapping(value = "/addDepotHeadAndDetail") + @ApiOperation(value = "新增单据主表及单据子表信息") + public Object addDepotHeadAndDetail(@RequestBody DepotHeadVo4Body body, HttpServletRequest request) throws Exception{ + JSONObject result = ExceptionConstants.standardSuccess(); + String beanJson = body.getInfo(); + String rows = body.getRows(); + depotHeadService.addDepotHeadAndDetail(beanJson, rows, request); + return result; + } + + /** + * 更新单据主表及单据子表信息 + * @param body + * @param request + * @return + * @throws Exception + */ + @PutMapping(value = "/updateDepotHeadAndDetail") + @ApiOperation(value = "更新单据主表及单据子表信息") + public Object updateDepotHeadAndDetail(@RequestBody DepotHeadVo4Body body, HttpServletRequest request) throws Exception{ + JSONObject result = ExceptionConstants.standardSuccess(); + String beanJson = body.getInfo(); + String rows = body.getRows(); + depotHeadService.updateDepotHeadAndDetail(beanJson,rows,request); + return result; + } + + /** + * 统计今日采购额、昨日采购额、本月采购额、今年采购额|销售额|零售额 + * @param request + * @return + */ + @GetMapping(value = "/getBuyAndSaleStatistics") + @ApiOperation(value = "统计今日采购额、昨日采购额、本月采购额、今年采购额|销售额|零售额") + public BaseResponseInfo getBuyAndSaleStatistics(HttpServletRequest request) { + BaseResponseInfo res = new BaseResponseInfo(); + try { + Map map = new HashMap<>(); + String today = Tools.getNow() + BusinessConstants.DAY_FIRST_TIME; + String monthFirstDay = Tools.firstDayOfMonth(Tools.getCurrentMonth()) + BusinessConstants.DAY_FIRST_TIME; + String yesterdayBegin = Tools.getYesterday() + BusinessConstants.DAY_FIRST_TIME; + String yesterdayEnd = Tools.getYesterday() + BusinessConstants.DAY_LAST_TIME; + String yearBegin = Tools.getYearBegin() + BusinessConstants.DAY_FIRST_TIME; + String yearEnd = Tools.getYearEnd() + BusinessConstants.DAY_LAST_TIME; + map = depotHeadService.getBuyAndSaleStatistics(today, monthFirstDay, yesterdayBegin, yesterdayEnd, yearBegin, yearEnd, request); + res.code = 200; + res.data = map; + } catch(Exception e){ + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 根据当前用户获取操作员数组,用于控制当前用户的数据权限,限制可以看到的单据范围 + * 注意:该接口提供给部分插件使用,勿删 + * @param request + * @return + */ + @GetMapping(value = "/getCreatorByCurrentUser") + @ApiOperation(value = "根据当前用户获取操作员数组") + public BaseResponseInfo getCreatorByCurrentUser(HttpServletRequest request) { + BaseResponseInfo res = new BaseResponseInfo(); + try { + String creator = depotHeadService.getCreatorByCurrentUser(); + res.code = 200; + res.data = creator; + } catch (Exception e) { + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 查询存在欠款的单据 + * @param search + * @param request + * @return + * @throws Exception + */ + @GetMapping(value = "/debtList") + @ApiOperation(value = "查询存在欠款的单据") + public String debtList(@RequestParam(value = Constants.SEARCH, required = false) String search, + @RequestParam("currentPage") Integer currentPage, + @RequestParam("pageSize") Integer pageSize, + HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + Long organId = StringUtil.parseStrLong(StringUtil.getInfo(search, "organId")); + String materialParam = StringUtil.getInfo(search, "materialParam"); + String number = StringUtil.getInfo(search, "number"); + String beginTime = StringUtil.getInfo(search, "beginTime"); + String endTime = StringUtil.getInfo(search, "endTime"); + String status = StringUtil.getInfo(search, "status"); + String type = StringUtil.getInfo(search, "type"); + String subType = StringUtil.getInfo(search, "subType"); + List list = depotHeadService.debtList(organId, materialParam, number, beginTime, endTime, + status, type, subType, (currentPage-1)*pageSize, pageSize); + int total = depotHeadService.debtListCount(organId, materialParam, number, beginTime, endTime, status, type, subType); + if (list != null) { + objectMap.put("rows", list); + objectMap.put("total", total); + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + objectMap.put("rows", new ArrayList<>()); + objectMap.put("total", 0); + return returnJson(objectMap, "查找不到数据", ErpInfo.OK.code); + } + } + + /** + * 导出存在欠款的单据 + * @param organId + * @param materialParam + * @param number + * @param type + * @param subType + * @param beginTime + * @param endTime + * @param status + * @param mpList + * @param request + * @param response + * @throws Exception + */ + @GetMapping(value = "/debtExport") + @ApiOperation(value = "导出存在欠款的单据") + public void debtExport(@RequestParam(value = "organId", required = false) Long organId, + @RequestParam(value = "materialParam", required = false) String materialParam, + @RequestParam(value = "number", required = false) String number, + @RequestParam(value = "type", required = false) String type, + @RequestParam(value = "subType", required = false) String subType, + @RequestParam(value = "beginTime", required = false) String beginTime, + @RequestParam(value = "endTime", required = false) String endTime, + @RequestParam(value = "status", required = false) String status, + @RequestParam(value = "mpList", required = false) String mpList, + HttpServletRequest request, HttpServletResponse response)throws Exception { + try { + depotHeadService.debtExport(organId, materialParam, number, type, subType, beginTime, endTime, + status, mpList, request, response); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + } + + /** + * 查询等待入库或出库的单据 + * @param search + * @param request + * @return + * @throws Exception + */ + @GetMapping(value = "/waitBillList") + @ApiOperation(value = "查询等待入库或出库的单据") + public String waitBillList(@RequestParam(value = Constants.SEARCH, required = false) String search, + @RequestParam("currentPage") Integer currentPage, + @RequestParam("pageSize") Integer pageSize, + HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + String number = StringUtil.getInfo(search, "number"); + String materialParam = StringUtil.getInfo(search, "materialParam"); + String type = StringUtil.getInfo(search, "type"); + String subType = StringUtil.getInfo(search, "subType"); + String beginTime = StringUtil.getInfo(search, "beginTime"); + String endTime = StringUtil.getInfo(search, "endTime"); + String status = StringUtil.getInfo(search, "status"); + List list = depotHeadService.waitBillList(number, materialParam, type, subType, beginTime, endTime, + status, (currentPage-1)*pageSize, pageSize); + long total = depotHeadService.waitBillCount(number, materialParam, type, subType, beginTime, endTime, status); + if (list != null) { + objectMap.put("rows", list); + objectMap.put("total", total); + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + objectMap.put("rows", new ArrayList<>()); + objectMap.put("total", 0); + return returnJson(objectMap, "查找不到数据", ErpInfo.OK.code); + } + } + + /** + * 查询等待入库或出库的单据数量 + * @param search + * @param request + * @return + * @throws Exception + */ + @GetMapping(value = "/waitBillCount") + @ApiOperation(value = "查询等待入库或出库的单据数量") + public String waitBillCount(@RequestParam(value = Constants.SEARCH, required = false) String search, + HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + String number = StringUtil.getInfo(search, "number"); + String materialParam = StringUtil.getInfo(search, "materialParam"); + String type = StringUtil.getInfo(search, "type"); + String subType = StringUtil.getInfo(search, "subType"); + String beginTime = StringUtil.getInfo(search, "beginTime"); + String endTime = StringUtil.getInfo(search, "endTime"); + String status = StringUtil.getInfo(search, "status"); + long total = depotHeadService.waitBillCount(number, materialParam, type, subType, beginTime, endTime, status); + objectMap.put("total", total); + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } + + /** + * 批量新增入库或出库单据 + * @param jsonObject + * @param request + * @return + * @throws Exception + */ + @PostMapping(value = "/batchAddDepotHeadAndDetail") + @ApiOperation(value = "批量新增入库或出库单据") + public Object batchAddDepotHeadAndDetail(@RequestBody JSONObject jsonObject, + HttpServletRequest request) throws Exception{ + JSONObject result = ExceptionConstants.standardSuccess(); + String ids = jsonObject.getString("ids"); + depotHeadService.batchAddDepotHeadAndDetail(ids, request); + return result; + } + + /** + * 快捷编辑单据 + * @param jsonObject + * @param request + * @return + * @throws Exception + */ + @PutMapping(value = "/quickEdit") + @ApiOperation(value = "快捷编辑单据") + public Object quickEdit(@RequestBody JSONObject jsonObject, HttpServletRequest request) throws Exception{ + JSONObject result = ExceptionConstants.standardSuccess(); + Long id = jsonObject.getLong("id"); + String remark = jsonObject.getString("remark"); + depotHeadService.quickEditDepotHead(id, remark, request); + return result; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/controller/DepotItemController.java b/smtERP-boot/src/main/java/com/reallin/smt/controller/DepotItemController.java new file mode 100644 index 0000000..dcba36f --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/controller/DepotItemController.java @@ -0,0 +1,1184 @@ +package com.reallin.smt.controller; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.constants.BusinessConstants; +import com.reallin.smt.constants.ExceptionConstants; +import com.reallin.smt.datasource.entities.*; +import com.reallin.smt.datasource.vo.DepotItemStockWarningCount; +import com.reallin.smt.datasource.vo.DepotItemVoBatchNumberList; +import com.reallin.smt.datasource.vo.InOutPriceVo; +import com.reallin.smt.datasource.vo.MaterialDepotStock; +import com.reallin.smt.exception.BusinessRunTimeException; +import com.reallin.smt.service.DepotService; +import com.reallin.smt.service.DepotHeadService; +import com.reallin.smt.service.DepotItemService; +import com.reallin.smt.service.MaterialService; +import com.reallin.smt.service.RoleService; +import com.reallin.smt.service.SystemConfigService; +import com.reallin.smt.service.UnitService; +import com.reallin.smt.service.UserService; +import com.reallin.smt.utils.*; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import jxl.Sheet; +import jxl.Workbook; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static com.reallin.smt.utils.ResponseJsonUtil.returnJson; + +/** + * @author ji-sheng-hua SMT + */ +@RestController +@RequestMapping(value = "/depotItem") +@Api(tags = {"单据明细"}) +public class DepotItemController { + private Logger logger = LoggerFactory.getLogger(DepotItemController.class); + + @Resource + private DepotHeadService depotHeadService; + + @Resource + private DepotItemService depotItemService; + + @Resource + private MaterialService materialService; + + @Resource + private UnitService unitService; + + @Resource + private DepotService depotService; + + @Resource + private RoleService roleService; + + @Resource + private UserService userService; + + @Resource + private SystemConfigService systemConfigService; + + @Value(value="${file.uploadType}") + private Long fileUploadType; + + /** + * 根据仓库和商品查询单据列表 + * @param mId + * @param request + * @return + */ + @GetMapping(value = "/findDetailByDepotIdsAndMaterialId") + @ApiOperation(value = "根据仓库和商品查询单据列表") + public String findDetailByDepotIdsAndMaterialId( + @RequestParam(value = Constants.PAGE_SIZE, required = false) Integer pageSize, + @RequestParam(value = Constants.CURRENT_PAGE, required = false) Integer currentPage, + @RequestParam(value = "depotIds",required = false) String depotIds, + @RequestParam(value = "sku",required = false) String sku, + @RequestParam(value = "batchNumber",required = false) String batchNumber, + @RequestParam(value = "number",required = false) String number, + @RequestParam(value = "beginTime",required = false) String beginTime, + @RequestParam(value = "endTime",required = false) String endTime, + @RequestParam(value = "stockPriceFlag",required = false, defaultValue = "false") Boolean stockPriceFlag, + @RequestParam("materialId") Long mId, + HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + if(StringUtil.isNotEmpty(beginTime)) { + beginTime = beginTime + BusinessConstants.DAY_FIRST_TIME; + } + if(StringUtil.isNotEmpty(endTime)) { + endTime = endTime + BusinessConstants.DAY_LAST_TIME; + } + Boolean forceFlag = systemConfigService.getForceApprovalFlag(); + Boolean inOutManageFlag = systemConfigService.getInOutManageFlag(); + if(stockPriceFlag!=null && stockPriceFlag) { + //此处针对开启了出入库管理开关,用于查询成本价的明细,不然会导致查询不到销售相关的单据 + inOutManageFlag = false; + } + List list = depotItemService.findDetailByDepotIdsAndMaterialIdList(depotIds, forceFlag, inOutManageFlag, sku, + batchNumber, StringUtil.toNull(number), beginTime, endTime, mId, (currentPage-1)*pageSize, pageSize); + JSONArray dataArray = new JSONArray(); + if (list != null) { + for (DepotItemVo4DetailByTypeAndMId d: list) { + JSONObject item = new JSONObject(); + item.put("number", d.getNumber()); //编号 + item.put("barCode", d.getBarCode()); //条码 + item.put("materialName", d.getMaterialName()); //名称 + String type = d.getType(); + String subType = d.getSubType(); + if(("其它").equals(type)) { + item.put("type", subType); //进出类型 + } else { + item.put("type", subType + type); //进出类型 + } + item.put("depotName", d.getDepotName()); //仓库名称 + item.put("basicNumber", d.getBnum()); //数量 + item.put("unitPrice", d.getUnitPrice()); //单价 + item.put("allPrice", d.getAllPrice()); //金额 + item.put("operTime", Tools.getCenternTime(d.getOtime())); //时间 + dataArray.add(item); + } + } + if (list == null) { + objectMap.put("rows", new ArrayList()); + objectMap.put("total", BusinessConstants.DEFAULT_LIST_NULL_NUMBER); + return returnJson(objectMap, "查找不到数据", ErpInfo.OK.code); + } + objectMap.put("rows", dataArray); + objectMap.put("total", depotItemService.findDetailByDepotIdsAndMaterialIdCount(depotIds, forceFlag, inOutManageFlag, sku, + batchNumber, StringUtil.toNull(number), beginTime, endTime, mId)); + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } + + /** + * 根据商品条码和仓库id查询库存数量 + * @param depotId + * @param barCode + * @param request + * @return + * @throws Exception + */ + @GetMapping(value = "/findStockByDepotAndBarCode") + @ApiOperation(value = "根据商品条码和仓库id查询库存数量") + public BaseResponseInfo findStockByDepotAndBarCode( + @RequestParam(value = "depotId",required = false) Long depotId, + @RequestParam("barCode") String barCode, + HttpServletRequest request) throws Exception{ + BaseResponseInfo res = new BaseResponseInfo(); + Map map = new HashMap(); + try { + BigDecimal stock = BigDecimal.ZERO; + List list = materialService.getMaterialByBarCode(barCode); + if(list!=null && list.size()>0) { + MaterialVo4Unit materialVo4Unit = list.get(0); + if(StringUtil.isNotEmpty(materialVo4Unit.getSku())){ + stock = depotItemService.getSkuStockByParam(depotId,materialVo4Unit.getMeId(),null,null); + } else { + stock = depotItemService.getCurrentStockByParam(depotId, materialVo4Unit.getId()); + if(materialVo4Unit.getUnitId()!=null) { + Unit unit = unitService.getUnit(materialVo4Unit.getUnitId()); + String commodityUnit = materialVo4Unit.getCommodityUnit(); + stock = unitService.parseStockByUnit(stock, unit, commodityUnit); + } + } + } + map.put("stock", stock); + res.code = 200; + res.data = map; + } catch (Exception e) { + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 单据明细列表 + * @param headerId + * @param mpList + * @param request + * @return + * @throws Exception + */ + @GetMapping(value = "/getDetailList") + @ApiOperation(value = "单据明细列表") + public BaseResponseInfo getDetailList(@RequestParam("headerId") Long headerId, + @RequestParam(value = "mpList", required = false) String mpList, + @RequestParam(value = "linkType", required = false) String linkType, + @RequestParam(value = "isReadOnly", required = false) String isReadOnly, + HttpServletRequest request)throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + try { + Long userId = userService.getUserId(request); + String priceLimit = userService.getRoleTypeByUserId(userId).getPriceLimit(); + List dataList = new ArrayList<>(); + DepotHead depotHead = depotHeadService.getDepotHead(headerId); + String billCategory = depotHeadService.getBillCategory(depotHead.getSubType()); + if(headerId != 0) { + dataList = depotItemService.getDetailList(headerId); + } + JSONObject outer = new JSONObject(); + outer.put("total", dataList.size()); + //存放数据json数组 + JSONArray dataArray = new JSONArray(); + BigDecimal totalOperNumber = BigDecimal.ZERO; + BigDecimal totalAllPrice = BigDecimal.ZERO; + BigDecimal totalTaxMoney = BigDecimal.ZERO; + BigDecimal totalTaxLastMoney = BigDecimal.ZERO; + BigDecimal totalFinishPurchaseNumber = BigDecimal.ZERO; + BigDecimal totalFinishNumber = BigDecimal.ZERO; + BigDecimal totalWeight = BigDecimal.ZERO; + Map unitMap = unitService.getUnitMap(); + for (DepotItemVo4WithInfoEx diEx : dataList) { + Unit unitInfo = unitMap!=null?unitMap.get(diEx.getUnitId()):new Unit(); //查询多单位信息 + String materialUnit = diEx.getMaterialUnit(); + BigDecimal stock; + if(StringUtil.isNotEmpty(diEx.getSku())){ + stock = depotItemService.getSkuStockByParam(diEx.getDepotId(),diEx.getMaterialExtendId(),null,null); + } else { + stock = depotItemService.getCurrentStockByParam(diEx.getDepotId(),diEx.getMaterialId()); + if (unitInfo!=null) { + stock = unitService.parseStockByUnit(stock, unitInfo, materialUnit); + } + } + BigDecimal finishPurchaseNumber = BigDecimal.ZERO; + if(BusinessConstants.PURCHASE_STATUS_SKIPING.equals(depotHead.getPurchaseStatus())) { + //只统计部分完成的场景 + finishPurchaseNumber = depotItemService.getFinishPurchaseNumber(diEx.getMaterialExtendId(), diEx.getId(), depotHead.getNumber(), linkType, depotHead.getSubType()); + if (unitInfo!=null) { + finishPurchaseNumber = unitService.parseStockByUnit(finishPurchaseNumber, unitInfo, materialUnit); + } + } + BigDecimal finishNumber = BigDecimal.ZERO; + if(BusinessConstants.BILLS_STATUS_SKIPING.equals(depotHead.getStatus())) { + //只统计部分完成的场景 + finishNumber = depotItemService.getFinishNumber(diEx.getMaterialExtendId(), diEx.getId(), depotHead.getNumber(), linkType, depotHead.getSubType()); + if (unitInfo!=null) { + finishNumber = unitService.parseStockByUnit(finishNumber, unitInfo, materialUnit); + } + } + JSONObject item = new JSONObject(); + item.put("id", diEx.getId()); + item.put("materialExtendId", diEx.getMaterialExtendId() == null ? "" : diEx.getMaterialExtendId()); + item.put("barCode", diEx.getBarCode()); + item.put("name", diEx.getMName()); + item.put("standard", diEx.getMStandard()); + item.put("model", diEx.getMModel()); + item.put("color", diEx.getMColor()); + item.put("brand", diEx.getBrand()); + item.put("mfrs", diEx.getMMfrs()); + item.put("otherField1", diEx.getMOtherField1()); + item.put("otherField2", diEx.getMOtherField2()); + item.put("otherField3", diEx.getMOtherField3()); + item.put("stock", stock); + item.put("unit", diEx.getMaterialUnit()); + item.put("snList", diEx.getSnList()); + item.put("batchNumber", diEx.getBatchNumber()); + item.put("expirationDate", Tools.parseDateToStr(diEx.getExpirationDate())); + item.put("sku", diEx.getSku()); + item.put("enableSerialNumber", diEx.getEnableSerialNumber()); + item.put("enableBatchNumber", diEx.getEnableBatchNumber()); + item.put("operNumber", diEx.getOperNumber()); + item.put("basicNumber", diEx.getBasicNumber()); + item.put("preNumber", diEx.getOperNumber()); //原数量 + item.put("finishPurchaseNumber", finishPurchaseNumber); //已采购(以销定购的情况) + item.put("finishNumber", finishNumber); //已采购|已销售|已入库|已出库 + item.put("purchaseDecimal", roleService.parseBillPriceByLimit(diEx.getPurchaseDecimal(), billCategory, priceLimit, request)); //采购价 + if("basic".equals(linkType) || "1".equals(isReadOnly)) { + //正常情况显示金额,而以销定购的情况不能显示金额 + item.put("unitPrice", roleService.parseBillPriceByLimit(diEx.getUnitPrice(), billCategory, priceLimit, request)); + item.put("taxUnitPrice", roleService.parseBillPriceByLimit(diEx.getTaxUnitPrice(), billCategory, priceLimit, request)); + item.put("allPrice", roleService.parseBillPriceByLimit(diEx.getAllPrice(), billCategory, priceLimit, request)); + item.put("taxRate", roleService.parseBillPriceByLimit(diEx.getTaxRate(), billCategory, priceLimit, request)); + item.put("taxMoney", roleService.parseBillPriceByLimit(diEx.getTaxMoney(), billCategory, priceLimit, request)); + item.put("taxLastMoney", roleService.parseBillPriceByLimit(diEx.getTaxLastMoney(), billCategory, priceLimit, request)); + } + BigDecimal allWeight = diEx.getBasicNumber()==null||diEx.getWeight()==null?BigDecimal.ZERO:diEx.getBasicNumber().multiply(diEx.getWeight()); + item.put("weight", allWeight); + item.put("position", diEx.getPosition()); + item.put("remark", diEx.getRemark()); + item.put("imgName", diEx.getImgName()); + if(fileUploadType == 2) { + item.put("imgSmall", "small"); + item.put("imgLarge", "large"); + } else { + item.put("imgSmall", ""); + item.put("imgLarge", ""); + } + item.put("linkId", diEx.getLinkId()); + item.put("depotId", diEx.getDepotId() == null ? "" : diEx.getDepotId()); + item.put("depotName", diEx.getDepotId() == null ? "" : diEx.getDepotName()); + item.put("anotherDepotId", diEx.getAnotherDepotId() == null ? "" : diEx.getAnotherDepotId()); + item.put("anotherDepotName", diEx.getAnotherDepotId() == null ? "" : diEx.getAnotherDepotName()); + item.put("mType", diEx.getMaterialType()); + item.put("op", 1); + dataArray.add(item); + //合计数据汇总 + totalOperNumber = totalOperNumber.add(diEx.getOperNumber()==null?BigDecimal.ZERO:diEx.getOperNumber()); + totalAllPrice = totalAllPrice.add(diEx.getAllPrice()==null?BigDecimal.ZERO:diEx.getAllPrice()); + totalTaxMoney = totalTaxMoney.add(diEx.getTaxMoney()==null?BigDecimal.ZERO:diEx.getTaxMoney()); + totalTaxLastMoney = totalTaxLastMoney.add(diEx.getTaxLastMoney()==null?BigDecimal.ZERO:diEx.getTaxLastMoney()); + totalFinishPurchaseNumber = totalFinishPurchaseNumber.add(finishPurchaseNumber); + totalFinishNumber = totalFinishNumber.add(finishNumber); + totalWeight = totalWeight.add(allWeight); + } + if(StringUtil.isNotEmpty(isReadOnly) && "1".equals(isReadOnly)) { + JSONObject footItem = new JSONObject(); + footItem.put("operNumber", totalOperNumber); + footItem.put("allPrice", roleService.parseBillPriceByLimit(totalAllPrice, billCategory, priceLimit, request)); + footItem.put("taxMoney", roleService.parseBillPriceByLimit(totalTaxMoney, billCategory, priceLimit, request)); + footItem.put("taxLastMoney", roleService.parseBillPriceByLimit(totalTaxLastMoney, billCategory, priceLimit, request)); + footItem.put("finishPurchaseNumber", totalFinishPurchaseNumber); + footItem.put("finishNumber", totalFinishNumber); + footItem.put("weight", totalWeight); + dataArray.add(footItem); + } + outer.put("rows", dataArray); + res.code = 200; + res.data = outer; + } catch (Exception e) { + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 进销存统计查询 + * @param currentPage + * @param pageSize + * @param depotIds + * @param beginTime + * @param endTime + * @param materialParam + * @param mpList + * @param request + * @return + * @throws Exception + */ + @GetMapping(value = "/getInOutStock") + @ApiOperation(value = "进销存统计查询") + public BaseResponseInfo getInOutStock(@RequestParam("currentPage") Integer currentPage, + @RequestParam("pageSize") Integer pageSize, + @RequestParam(value = "depotIds",required = false) String depotIds, + @RequestParam(value = "categoryId", required = false) Long categoryId, + @RequestParam("beginTime") String beginTime, + @RequestParam("endTime") String endTime, + @RequestParam("materialParam") String materialParam, + @RequestParam(value = "mpList", required = false) String mpList, + HttpServletRequest request)throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + Map map = new HashMap<>(); + try { + Long userId = userService.getUserId(request); + String priceLimit = userService.getRoleTypeByUserId(userId).getPriceLimit(); + Boolean moveAvgPriceFlag = systemConfigService.getMoveAvgPriceFlag(); + List categoryIdList = new ArrayList<>(); + if(categoryId != null){ + categoryIdList = materialService.getListByParentId(categoryId); + } + beginTime = Tools.parseDayToTime(beginTime, BusinessConstants.DAY_FIRST_TIME); + endTime = Tools.parseDayToTime(endTime,BusinessConstants.DAY_LAST_TIME); + List depotList = parseListByDepotIds(depotIds); + List dataList = depotItemService.getInOutStock(StringUtil.toNull(materialParam), + categoryIdList, endTime,(currentPage-1)*pageSize, pageSize); + int total = depotItemService.getInOutStockCount(StringUtil.toNull(materialParam), categoryIdList, endTime); + map.put("total", total); + //存放数据json数组 + JSONArray dataArray = new JSONArray(); + if (null != dataList) { + for (DepotItemVo4WithInfoEx diEx : dataList) { + JSONObject item = new JSONObject(); + Long mId = diEx.getMId(); + item.put("id", mId); + item.put("barCode", diEx.getBarCode()); + item.put("materialName", diEx.getMName()); + item.put("materialModel", diEx.getMModel()); + item.put("materialStandard", diEx.getMStandard()); + item.put("materialColor", diEx.getMColor()); + item.put("materialMfrs", diEx.getMMfrs()); + item.put("materialBrand", diEx.getBrand()); + //扩展信息 + item.put("otherField1", diEx.getMOtherField1()); + item.put("otherField2", diEx.getMOtherField2()); + item.put("otherField3", diEx.getMOtherField3()); + item.put("unitId", diEx.getUnitId()); + item.put("unitName", null!=diEx.getUnitId() ? diEx.getMaterialUnit()+"[多单位]" : diEx.getMaterialUnit()); + BigDecimal prevSum = depotItemService.getStockByParamWithDepotList(depotList,mId,null,beginTime); + Map intervalMap = depotItemService.getIntervalMapByParamWithDepotList(depotList,mId,beginTime,endTime); + BigDecimal inSum = intervalMap.get("inSum"); + BigDecimal outSum = intervalMap.get("outSum"); + BigDecimal thisSum = prevSum.add(inSum).subtract(outSum); + item.put("prevSum", prevSum); + item.put("inSum", inSum); + item.put("outSum", outSum); + item.put("thisSum", thisSum); + //将小单位的库存换算为大单位的库存 + item.put("bigUnitStock", materialService.getBigUnitStock(thisSum, diEx.getUnitId())); + if(moveAvgPriceFlag) { + item.put("unitPrice", roleService.parseStockPriceByLimit(diEx.getCurrentUnitPrice(), priceLimit, request)); + } else { + item.put("unitPrice", roleService.parseStockPriceByLimit(diEx.getPurchaseDecimal(), priceLimit, request)); + } + if(moveAvgPriceFlag) { + item.put("thisAllPrice", roleService.parseStockPriceByLimit(thisSum.multiply(diEx.getCurrentUnitPrice()), priceLimit, request)); + } else { + item.put("thisAllPrice", roleService.parseStockPriceByLimit(thisSum.multiply(diEx.getPurchaseDecimal()), priceLimit, request)); + } + item.put("imgName", diEx.getImgName()); + if(fileUploadType == 2) { + item.put("imgSmall", "small"); + item.put("imgLarge", "large"); + } + dataArray.add(item); + } + } + map.put("rows", dataArray); + res.code = 200; + res.data = map; + } catch (BusinessRunTimeException e) { + res.code = e.getCode(); + res.data = e.getData().get("message"); + } catch(Exception e){ + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 进销存统计总计金额 + * @param depotIds + * @param endTime + * @param materialParam + * @param request + * @return + */ + @GetMapping(value = "/getInOutStockCountMoney") + @ApiOperation(value = "进销存统计总计金额") + public BaseResponseInfo getInOutStockCountMoney(@RequestParam(value = "depotIds",required = false) String depotIds, + @RequestParam(value = "categoryId", required = false) Long categoryId, + @RequestParam("endTime") String endTime, + @RequestParam("materialParam") String materialParam, + HttpServletRequest request) throws Exception{ + BaseResponseInfo res = new BaseResponseInfo(); + Map map = new HashMap<>(); + try { + Long userId = userService.getUserId(request); + String priceLimit = userService.getRoleTypeByUserId(userId).getPriceLimit(); + Boolean moveAvgPriceFlag = systemConfigService.getMoveAvgPriceFlag(); + List categoryIdList = new ArrayList<>(); + if(categoryId != null){ + categoryIdList = materialService.getListByParentId(categoryId); + } + endTime = Tools.parseDayToTime(endTime,BusinessConstants.DAY_LAST_TIME); + List depotList = parseListByDepotIds(depotIds); + List dataList = depotItemService.getInOutStock(StringUtil.toNull(materialParam), + categoryIdList, endTime, null, null); + BigDecimal thisAllStock = BigDecimal.ZERO; + BigDecimal thisAllPrice = BigDecimal.ZERO; + if (null != dataList) { + for (DepotItemVo4WithInfoEx diEx : dataList) { + Long mId = diEx.getMId(); + BigDecimal thisSum = depotItemService.getStockByParamWithDepotList(depotList,mId,null,endTime); + thisAllStock = thisAllStock.add(thisSum); + BigDecimal unitPrice = null; + if(moveAvgPriceFlag) { + unitPrice = diEx.getCurrentUnitPrice(); + } else { + unitPrice = diEx.getPurchaseDecimal(); + } + if(unitPrice == null) { + unitPrice = BigDecimal.ZERO; + } + thisAllPrice = thisAllPrice.add(thisSum.multiply(unitPrice)); + } + } + map.put("totalStock", thisAllStock); + map.put("totalCount", roleService.parseStockPriceByLimit(thisAllPrice, priceLimit, request)); + boolean showStockPrice = true; + if(StringUtil.isNotEmpty(priceLimit)) { + if(priceLimit.contains("7")) { + showStockPrice = false; + } + } + map.put("showStockPrice", showStockPrice); + res.code = 200; + res.data = map; + } catch (BusinessRunTimeException e) { + res.code = e.getCode(); + res.data = e.getData().get("message"); + } catch(Exception e){ + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + + /** + * 根据仓库和商品查询库存分布情况-带时间段参数 + * @param mId + * @param request + * @return + */ + @GetMapping(value = "/getMaterialDepotStockByParam") + @ApiOperation(value = "根据仓库和商品查询库存分布情况-带时间段参数") + public String getMaterialDepotStockByParam( + @RequestParam(value = "depotIds",required = false) String depotIds, + @RequestParam("materialId") Long mId, + @RequestParam(value = "unitPrice", required = false) BigDecimal unitPrice, + @RequestParam("beginTime") String beginTime, + @RequestParam("endTime") String endTime, + HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + beginTime = Tools.parseDayToTime(beginTime, BusinessConstants.DAY_FIRST_TIME); + endTime = Tools.parseDayToTime(endTime,BusinessConstants.DAY_LAST_TIME); + Map depotMap = new HashMap<>(); + JSONArray depotArr = depotService.findDepotByCurrentUser(); + for (Object depotObj: depotArr) { + if(depotObj!=null) { + JSONObject depotObject = JSONObject.parseObject(depotObj.toString()); + depotMap.put(depotObject.getLong("id"), depotObject.getString("depotName")); + } + } + String[] depotIdArr = null; + if(StringUtil.isNotEmpty(depotIds)) { + depotIdArr = depotIds.split(","); + } + List depotList = depotService.parseDepotListByArr(depotIdArr); + Long[] depotIdArray = StringUtil.listToLongArray(depotList); + List list = new ArrayList<>(); + for (int i = 0; i < depotIdArray.length; i++) { + Long depotId = depotIdArray[i]; + List currentDepotIdList = new ArrayList<>(); + currentDepotIdList.add(depotId); + String depotName = depotMap.get(depotId); + MaterialDepotStock materialDepotStock = new MaterialDepotStock(); + materialDepotStock.setDepotId(depotId); + materialDepotStock.setDepotName(depotName); + BigDecimal prevSum = depotItemService.getStockByParamWithDepotList(currentDepotIdList,mId,null,beginTime); + Map intervalMap = depotItemService.getIntervalMapByParamWithDepotList(currentDepotIdList,mId,beginTime,endTime); + BigDecimal inSum = intervalMap.get("inSum"); + BigDecimal outSum = intervalMap.get("outSum"); + BigDecimal thisSum = prevSum.add(inSum).subtract(outSum); + materialDepotStock.setCurrentNumber(thisSum); + materialDepotStock.setUnitPrice(unitPrice); + if(materialDepotStock.getCurrentNumber()!=null && materialDepotStock.getUnitPrice()!=null ) { + materialDepotStock.setAllPrice(materialDepotStock.getCurrentNumber().multiply(materialDepotStock.getUnitPrice())); + } + if(thisSum.compareTo(BigDecimal.ZERO)!=0) { + list.add(materialDepotStock); + } + } + objectMap.put("rows", list); + objectMap.put("total", list.size()); + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } + + private List parseListByDepotIds(@RequestParam("depotIds") String depotIds) throws Exception { + List depotList = new ArrayList<>(); + if(StringUtil.isNotEmpty(depotIds)) { + depotList = StringUtil.strToLongList(depotIds); + } else { + //未选择仓库时默认为当前用户有权限的仓库 + JSONArray depotArr = depotService.findDepotByCurrentUser(); + for(Object obj: depotArr) { + JSONObject object = JSONObject.parseObject(obj.toString()); + depotList.add(object.getLong("id")); + } + //如果有权限的仓库数量太多则提示要选择仓库 + if(depotList.size()>20) { + throw new BusinessRunTimeException(ExceptionConstants.REPORT_TWO_MANY_DEPOT_FAILED_CODE, + ExceptionConstants.REPORT_TWO_MANY_DEPOT_FAILED_MSG); + } + } + return depotList; + } + + /** + * 采购统计 + * @param currentPage + * @param pageSize + * @param beginTime + * @param endTime + * @param materialParam + * @param mpList + * @param request + * @return + */ + @GetMapping(value = "/buyIn") + @ApiOperation(value = "采购统计") + public BaseResponseInfo buyIn(@RequestParam("currentPage") Integer currentPage, + @RequestParam("pageSize") Integer pageSize, + @RequestParam("beginTime") String beginTime, + @RequestParam("endTime") String endTime, + @RequestParam(value = "organId", required = false) Long organId, + @RequestParam(value = "depotId", required = false) Long depotId, + @RequestParam(value = "categoryId", required = false) Long categoryId, + @RequestParam(value = "organizationId", required = false) Long organizationId, + @RequestParam("materialParam") String materialParam, + @RequestParam(value = "mpList",required = false) String mpList, + HttpServletRequest request)throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + Map map = new HashMap(); + beginTime = Tools.parseDayToTime(beginTime, BusinessConstants.DAY_FIRST_TIME); + endTime = Tools.parseDayToTime(endTime,BusinessConstants.DAY_LAST_TIME); + try { + String [] creatorArray = depotHeadService.getCreatorArray(); + if(creatorArray == null && organizationId != null) { + creatorArray = depotHeadService.getCreatorArrayByOrg(organizationId); + } + String [] organArray = null; + List categoryList = new ArrayList<>(); + if(categoryId != null){ + categoryList = materialService.getListByParentId(categoryId); + } + List depotList = depotService.parseDepotList(depotId); + Boolean forceFlag = systemConfigService.getForceApprovalFlag(); + List dataList = depotItemService.getListWithBuyOrSale(StringUtil.toNull(materialParam), + "buy", beginTime, endTime, creatorArray, organId, organArray, categoryList, depotList, forceFlag, (currentPage-1)*pageSize, pageSize); + int total = depotItemService.getListWithBuyOrSaleCount(StringUtil.toNull(materialParam), + "buy", beginTime, endTime, creatorArray, organId, organArray, categoryList, depotList, forceFlag); + map.put("total", total); + //存放数据json数组 + JSONArray dataArray = new JSONArray(); + if (null != dataList) { + for (DepotItemVo4WithInfoEx diEx : dataList) { + JSONObject item = new JSONObject(); + BigDecimal InSum = depotItemService.buyOrSale("入库", "采购", diEx.getMaterialExtendId(), beginTime, endTime, creatorArray, organId, organArray, depotList, forceFlag, "number"); + BigDecimal OutSum = depotItemService.buyOrSale("出库", "采购退货", diEx.getMaterialExtendId(), beginTime, endTime, creatorArray, organId, organArray, depotList, forceFlag, "number"); + BigDecimal InSumPrice = depotItemService.buyOrSale("入库", "采购", diEx.getMaterialExtendId(), beginTime, endTime, creatorArray, organId, organArray, depotList, forceFlag, "price"); + BigDecimal OutSumPrice = depotItemService.buyOrSale("出库", "采购退货", diEx.getMaterialExtendId(), beginTime, endTime, creatorArray, organId, organArray, depotList, forceFlag, "price"); + BigDecimal InOutSumPrice = InSumPrice.subtract(OutSumPrice); + item.put("barCode", diEx.getBarCode()); + item.put("materialName", diEx.getMName()); + item.put("materialModel", diEx.getMModel()); + item.put("materialStandard", diEx.getMStandard()); + //扩展信息 + item.put("otherField1", diEx.getMOtherField1()); + item.put("otherField2", diEx.getMOtherField2()); + item.put("otherField3", diEx.getMOtherField3()); + item.put("materialColor", diEx.getMColor()); + item.put("materialBrand", diEx.getBrand()); + item.put("materialMfrs", diEx.getMMfrs()); + item.put("materialUnit", diEx.getMaterialUnit()); + item.put("unitName", diEx.getUnitName()); + item.put("inSum", InSum); + item.put("outSum", OutSum); + item.put("inSumPrice", InSumPrice); + item.put("outSumPrice", OutSumPrice); + item.put("inOutSumPrice",InOutSumPrice);//实际采购金额 + dataArray.add(item); + } + } + BigDecimal inSumPriceTotal = depotItemService.buyOrSalePriceTotal("入库", "采购", StringUtil.toNull(materialParam), + beginTime, endTime, creatorArray, organId, organArray, categoryList, depotList, forceFlag); + BigDecimal outSumPriceTotal = depotItemService.buyOrSalePriceTotal("出库", "采购退货", StringUtil.toNull(materialParam), + beginTime, endTime, creatorArray, organId, organArray, categoryList, depotList, forceFlag); + BigDecimal realityPriceTotal = inSumPriceTotal.subtract(outSumPriceTotal); + map.put("rows", dataArray); + map.put("realityPriceTotal", realityPriceTotal); + res.code = 200; + res.data = map; + } catch(Exception e){ + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 零售统计 + * @param currentPage + * @param pageSize + * @param beginTime + * @param endTime + * @param materialParam + * @param mpList + * @param request + * @return + */ + @GetMapping(value = "/retailOut") + @ApiOperation(value = "零售统计") + public BaseResponseInfo retailOut(@RequestParam("currentPage") Integer currentPage, + @RequestParam("pageSize") Integer pageSize, + @RequestParam("beginTime") String beginTime, + @RequestParam("endTime") String endTime, + @RequestParam(value = "organId", required = false) Long organId, + @RequestParam(value = "depotId", required = false) Long depotId, + @RequestParam(value = "categoryId", required = false) Long categoryId, + @RequestParam(value = "organizationId", required = false) Long organizationId, + @RequestParam("materialParam") String materialParam, + @RequestParam(value = "mpList", required = false) String mpList, + HttpServletRequest request)throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + Map map = new HashMap(); + beginTime = Tools.parseDayToTime(beginTime, BusinessConstants.DAY_FIRST_TIME); + endTime = Tools.parseDayToTime(endTime,BusinessConstants.DAY_LAST_TIME); + try { + String [] creatorArray = depotHeadService.getCreatorArray(); + if(creatorArray == null && organizationId != null) { + creatorArray = depotHeadService.getCreatorArrayByOrg(organizationId); + } + String [] organArray = null; + List categoryList = new ArrayList<>(); + if(categoryId != null){ + categoryList = materialService.getListByParentId(categoryId); + } + List depotList = depotService.parseDepotList(depotId); + Boolean forceFlag = systemConfigService.getForceApprovalFlag(); + List dataList = depotItemService.getListWithBuyOrSale(StringUtil.toNull(materialParam), + "retail", beginTime, endTime, creatorArray, organId, organArray, categoryList, depotList, forceFlag, (currentPage-1)*pageSize, pageSize); + int total = depotItemService.getListWithBuyOrSaleCount(StringUtil.toNull(materialParam), + "retail", beginTime, endTime, creatorArray, organId, organArray, categoryList, depotList, forceFlag); + map.put("total", total); + //存放数据json数组 + JSONArray dataArray = new JSONArray(); + if (null != dataList) { + for (DepotItemVo4WithInfoEx diEx : dataList) { + JSONObject item = new JSONObject(); + BigDecimal OutSumRetail = depotItemService.buyOrSale("出库", "零售", diEx.getMaterialExtendId(), beginTime, endTime, creatorArray, organId, organArray, depotList, forceFlag, "number"); + BigDecimal InSumRetail = depotItemService.buyOrSale("入库", "零售退货", diEx.getMaterialExtendId(), beginTime, endTime, creatorArray, organId, organArray, depotList, forceFlag, "number"); + BigDecimal OutSumRetailPrice = depotItemService.buyOrSale("出库", "零售", diEx.getMaterialExtendId(), beginTime, endTime, creatorArray, organId, organArray, depotList, forceFlag, "price"); + BigDecimal InSumRetailPrice = depotItemService.buyOrSale("入库", "零售退货", diEx.getMaterialExtendId(), beginTime, endTime, creatorArray, organId, organArray, depotList, forceFlag, "price"); + BigDecimal OutInSumPrice = OutSumRetailPrice.subtract(InSumRetailPrice); + item.put("barCode", diEx.getBarCode()); + item.put("materialName", diEx.getMName()); + item.put("materialModel", diEx.getMModel()); + item.put("materialStandard", diEx.getMStandard()); + //扩展信息 + item.put("otherField1", diEx.getMOtherField1()); + item.put("otherField2", diEx.getMOtherField2()); + item.put("otherField3", diEx.getMOtherField3()); + item.put("materialColor", diEx.getMColor()); + item.put("materialBrand", diEx.getBrand()); + item.put("materialMfrs", diEx.getMMfrs()); + item.put("materialUnit", diEx.getMaterialUnit()); + item.put("unitName", diEx.getUnitName()); + item.put("outSum", OutSumRetail); + item.put("inSum", InSumRetail); + item.put("outSumPrice", OutSumRetailPrice); + item.put("inSumPrice", InSumRetailPrice); + item.put("outInSumPrice",OutInSumPrice);//实际销售金额 + dataArray.add(item); + } + } + BigDecimal outSumPriceTotal = depotItemService.buyOrSalePriceTotal("出库", "零售", StringUtil.toNull(materialParam), + beginTime, endTime, creatorArray, organId, organArray, categoryList, depotList, forceFlag); + BigDecimal inSumPriceTotal = depotItemService.buyOrSalePriceTotal("入库", "零售退货", StringUtil.toNull(materialParam), + beginTime, endTime, creatorArray, organId, organArray, categoryList, depotList, forceFlag); + BigDecimal realityPriceTotal = outSumPriceTotal.subtract(inSumPriceTotal); + map.put("rows", dataArray); + map.put("realityPriceTotal", realityPriceTotal); + res.code = 200; + res.data = map; + } catch(Exception e){ + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + + /** + * 销售统计 + * @param currentPage + * @param pageSize + * @param beginTime + * @param endTime + * @param materialParam + * @param mpList + * @param request + * @return + */ + @GetMapping(value = "/saleOut") + @ApiOperation(value = "销售统计") + public BaseResponseInfo saleOut(@RequestParam("currentPage") Integer currentPage, + @RequestParam("pageSize") Integer pageSize, + @RequestParam("beginTime") String beginTime, + @RequestParam("endTime") String endTime, + @RequestParam(value = "organId", required = false) Long organId, + @RequestParam(value = "depotId", required = false) Long depotId, + @RequestParam(value = "categoryId", required = false) Long categoryId, + @RequestParam(value = "organizationId", required = false) Long organizationId, + @RequestParam("materialParam") String materialParam, + @RequestParam(value = "mpList", required = false) String mpList, + HttpServletRequest request)throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + Map map = new HashMap(); + beginTime = Tools.parseDayToTime(beginTime, BusinessConstants.DAY_FIRST_TIME); + endTime = Tools.parseDayToTime(endTime,BusinessConstants.DAY_LAST_TIME); + try { + String [] creatorArray = depotHeadService.getCreatorArray(); + if(creatorArray == null && organizationId != null) { + creatorArray = depotHeadService.getCreatorArrayByOrg(organizationId); + } + String [] organArray = depotHeadService.getOrganArray("销售", ""); + List categoryList = new ArrayList<>(); + if(categoryId != null){ + categoryList = materialService.getListByParentId(categoryId); + } + List depotList = depotService.parseDepotList(depotId); + Boolean forceFlag = systemConfigService.getForceApprovalFlag(); + List dataList = depotItemService.getListWithBuyOrSale(StringUtil.toNull(materialParam), + "sale", beginTime, endTime, creatorArray, organId, organArray, categoryList, depotList, forceFlag, (currentPage-1)*pageSize, pageSize); + int total = depotItemService.getListWithBuyOrSaleCount(StringUtil.toNull(materialParam), + "sale", beginTime, endTime, creatorArray, organId, organArray, categoryList, depotList, forceFlag); + map.put("total", total); + //存放数据json数组 + JSONArray dataArray = new JSONArray(); + if (null != dataList) { + for (DepotItemVo4WithInfoEx diEx : dataList) { + JSONObject item = new JSONObject(); + BigDecimal OutSum = depotItemService.buyOrSale("出库", "销售", diEx.getMaterialExtendId(), beginTime, endTime, creatorArray, organId, organArray, depotList, forceFlag, "number"); + BigDecimal InSum = depotItemService.buyOrSale("入库", "销售退货", diEx.getMaterialExtendId(), beginTime, endTime, creatorArray, organId, organArray, depotList, forceFlag, "number"); + BigDecimal OutSumPrice = depotItemService.buyOrSale("出库", "销售", diEx.getMaterialExtendId(), beginTime, endTime, creatorArray, organId, organArray, depotList, forceFlag, "price"); + BigDecimal InSumPrice = depotItemService.buyOrSale("入库", "销售退货", diEx.getMaterialExtendId(), beginTime, endTime, creatorArray, organId, organArray, depotList, forceFlag, "price"); + BigDecimal OutInSumPrice = OutSumPrice.subtract(InSumPrice); + item.put("barCode", diEx.getBarCode()); + item.put("materialName", diEx.getMName()); + item.put("materialModel", diEx.getMModel()); + item.put("materialStandard", diEx.getMStandard()); + //扩展信息 + item.put("otherField1", diEx.getMOtherField1()); + item.put("otherField2", diEx.getMOtherField2()); + item.put("otherField3", diEx.getMOtherField3()); + item.put("materialColor", diEx.getMColor()); + item.put("materialBrand", diEx.getBrand()); + item.put("materialMfrs", diEx.getMMfrs()); + item.put("materialUnit", diEx.getMaterialUnit()); + item.put("unitName", diEx.getUnitName()); + item.put("outSum", OutSum); + item.put("inSum", InSum); + item.put("outSumPrice", OutSumPrice); + item.put("inSumPrice", InSumPrice); + item.put("outInSumPrice",OutInSumPrice);//实际销售金额 + dataArray.add(item); + } + } + BigDecimal outSumPriceTotal = depotItemService.buyOrSalePriceTotal("出库", "销售", StringUtil.toNull(materialParam), + beginTime, endTime, creatorArray, organId, organArray, categoryList, depotList, forceFlag); + BigDecimal inSumPriceTotal = depotItemService.buyOrSalePriceTotal("入库", "销售退货", StringUtil.toNull(materialParam), + beginTime, endTime, creatorArray, organId, organArray, categoryList, depotList, forceFlag); + BigDecimal realityPriceTotal = outSumPriceTotal.subtract(inSumPriceTotal); + map.put("rows", dataArray); + map.put("realityPriceTotal", realityPriceTotal); + res.code = 200; + res.data = map; + } catch(Exception e){ + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 获取单位 + * @param materialUnit + * @param uName + * @return + */ + public String getUName(String materialUnit, String uName) { + String unitName = null; + if(StringUtil.isNotEmpty(materialUnit)) { + unitName = materialUnit; + } else if(StringUtil.isNotEmpty(uName)) { + unitName = uName; + } + return unitName; + } + + /** + * 库存预警报表 + * @param currentPage + * @param pageSize + * @return + */ + @GetMapping(value = "/findStockWarningCount") + @ApiOperation(value = "库存预警报表") + public BaseResponseInfo findStockWarningCount(@RequestParam("currentPage") Integer currentPage, + @RequestParam("pageSize") Integer pageSize, + @RequestParam("materialParam") String materialParam, + @RequestParam(value = "depotId", required = false) Long depotId, + @RequestParam(value = "categoryId", required = false) Long categoryId, + @RequestParam(value = "mpList", required = false) String mpList)throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + Map map = new HashMap(); + try { + List depotList = new ArrayList<>(); + if(depotId != null) { + depotList.add(depotId); + } else { + //未选择仓库时默认为当前用户有权限的仓库 + JSONArray depotArr = depotService.findDepotByCurrentUser(); + for(Object obj: depotArr) { + JSONObject object = JSONObject.parseObject(obj.toString()); + depotList.add(object.getLong("id")); + } + } + List categoryList = new ArrayList<>(); + if(categoryId != null){ + categoryList = materialService.getListByParentId(categoryId); + } + String[] mpArr = mpList.split(","); + List list = depotItemService.findStockWarningCount((currentPage-1)*pageSize, pageSize, materialParam, depotList, categoryList); + //存放数据json数组 + if (null != list) { + for (DepotItemStockWarningCount disw : list) { + DepotItemVo4WithInfoEx diEx = new DepotItemVo4WithInfoEx(); + diEx.setMOtherField1(disw.getMOtherField1()); + diEx.setMOtherField2(disw.getMOtherField2()); + diEx.setMOtherField3(disw.getMOtherField3()); + disw.setMaterialUnit(getUName(disw.getMaterialUnit(), disw.getUnitName())); + if(null!=disw.getLowSafeStock() && disw.getCurrentNumber().compareTo(disw.getLowSafeStock())<0) { + disw.setLowCritical(disw.getLowSafeStock().subtract(disw.getCurrentNumber())); + } + if(null!=disw.getHighSafeStock() && disw.getCurrentNumber().compareTo(disw.getHighSafeStock())>0) { + disw.setHighCritical(disw.getCurrentNumber().subtract(disw.getHighSafeStock())); + } + } + } + int total = depotItemService.findStockWarningCountTotal(materialParam, depotList, categoryList); + map.put("total", total); + map.put("rows", list); + res.code = 200; + res.data = map; + } catch(Exception e){ + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 统计采购、销售、零售的总金额 + * @param request + * @param response + * @return + * @throws Exception + */ + @GetMapping(value = "/buyOrSalePrice") + @ApiOperation(value = "统计采购、销售、零售的总金额") + public BaseResponseInfo buyOrSalePrice(HttpServletRequest request, + HttpServletResponse response)throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + try { + Map map = new HashMap<>(); + Long userId = userService.getUserId(request); + List monthList = Tools.getLastMonths(6); + String beginTime = Tools.firstDayOfMonth(monthList.get(0)) + BusinessConstants.DAY_FIRST_TIME; + String endTime = Tools.getNow() + BusinessConstants.DAY_LAST_TIME; + List inOrOutPriceList = depotItemService.inOrOutPriceList(beginTime, endTime); + String priceLimit = userService.getRoleTypeByUserId(userId).getPriceLimit(); + JSONArray buyPriceList = new JSONArray(); + for (String month : monthList) { + JSONObject obj = new JSONObject(); + BigDecimal outPrice = BigDecimal.ZERO; + BigDecimal inPrice = BigDecimal.ZERO; + for (InOutPriceVo item : inOrOutPriceList) { + String billOperMonth = Tools.dateToStr(item.getOperTime(), "yyyy-MM"); + if (month.equals(billOperMonth)) { + if ("入库".equals(item.getType()) && "采购".equals(item.getSubType())) { + outPrice = outPrice.add(nullToZero(item.getDiscountLastMoney())); + } + if ("出库".equals(item.getType()) && "采购退货".equals(item.getSubType())) { + inPrice = inPrice.add(nullToZero(item.getDiscountLastMoney())); + } + } + } + obj.put("x", month); + obj.put("y", roleService.parseHomePriceByLimit(outPrice.subtract(inPrice), "buy", priceLimit, "***", request)); + buyPriceList.add(obj); + } + map.put("buyPriceList", buyPriceList); + JSONArray salePriceList = new JSONArray(); + for (String month : monthList) { + JSONObject obj = new JSONObject(); + BigDecimal outPrice = BigDecimal.ZERO; + BigDecimal inPrice = BigDecimal.ZERO; + for (InOutPriceVo item : inOrOutPriceList) { + String billOperMonth = Tools.dateToStr(item.getOperTime(), "yyyy-MM"); + if (month.equals(billOperMonth)) { + if ("出库".equals(item.getType()) && "销售".equals(item.getSubType())) { + outPrice = outPrice.add(nullToZero(item.getDiscountLastMoney())); + } + if ("入库".equals(item.getType()) && "销售退货".equals(item.getSubType())) { + inPrice = inPrice.add(nullToZero(item.getDiscountLastMoney())); + } + } + } + obj.put("x", month); + obj.put("y", roleService.parseHomePriceByLimit(outPrice.subtract(inPrice), "sale", priceLimit, "***", request)); + salePriceList.add(obj); + } + map.put("salePriceList", salePriceList); + JSONArray retailPriceList = new JSONArray(); + for (String month : monthList) { + JSONObject obj = new JSONObject(); + BigDecimal outPrice = BigDecimal.ZERO; + BigDecimal inPrice = BigDecimal.ZERO; + for (InOutPriceVo item : inOrOutPriceList) { + String billOperMonth = Tools.dateToStr(item.getOperTime(), "yyyy-MM"); + if (month.equals(billOperMonth)) { + if ("出库".equals(item.getType()) && "零售".equals(item.getSubType())) { + outPrice = outPrice.add(nullToZero(item.getTotalPrice()).abs()); + } + if ("入库".equals(item.getType()) && "零售退货".equals(item.getSubType())) { + inPrice = inPrice.add(nullToZero(item.getTotalPrice()).abs()); + } + } + } + obj.put("x", month); + obj.put("y", roleService.parseHomePriceByLimit(outPrice.subtract(inPrice), "retail", priceLimit, "***", request)); + retailPriceList.add(obj); + } + map.put("retailPriceList", retailPriceList); + res.code = 200; + res.data = map; + } catch (Exception e) { + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "统计失败"; + } + return res; + } + + /** + * 获取批次商品列表信息 + * @param request + * @return + */ + @GetMapping(value = "/getBatchNumberList") + @ApiOperation(value = "获取批次商品列表信息") + public BaseResponseInfo getBatchNumberList(@RequestParam("name") String name, + @RequestParam("depotItemId") Long depotItemId, + @RequestParam("depotId") Long depotId, + @RequestParam("barCode") String barCode, + @RequestParam(value = "batchNumber", required = false) String batchNumber, + HttpServletRequest request) throws Exception{ + BaseResponseInfo res = new BaseResponseInfo(); + Map map = new HashMap<>(); + try { + String number = ""; + if(depotItemId != null) { + DepotItem depotItem = depotItemService.getDepotItem(depotItemId); + number = depotHeadService.getDepotHead(depotItem.getHeaderId()).getNumber(); + } + Boolean forceFlag = systemConfigService.getForceApprovalFlag(); + Boolean inOutManageFlag = systemConfigService.getInOutManageFlag(); + List list = depotItemService.getBatchNumberList(number, name, depotId, barCode, + batchNumber, forceFlag, inOutManageFlag); + map.put("rows", list); + map.put("total", list.size()); + res.code = 200; + res.data = map; + } catch (Exception e) { + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * Excel导入明细 + * @param file + * @param request + * @param response + * @return + */ + @PostMapping(value = "/importItemExcel") + public BaseResponseInfo importItemExcel(MultipartFile file, + @RequestParam(required = false, value = "prefixNo") String prefixNo, + HttpServletRequest request, HttpServletResponse response) throws Exception{ + BaseResponseInfo res = new BaseResponseInfo(); + Map data = new HashMap<>(); + String message = ""; + try { + List barCodeList = new ArrayList<>(); + //文件扩展名只能为xls + String fileName = file.getOriginalFilename(); + if(StringUtil.isNotEmpty(fileName)) { + String fileExt = fileName.substring(fileName.indexOf(".")+1); + if(!"xls".equals(fileExt)) { + throw new BusinessRunTimeException(ExceptionConstants.FILE_EXTENSION_ERROR_CODE, + ExceptionConstants.FILE_EXTENSION_ERROR_MSG); + } + } + Workbook workbook = Workbook.getWorkbook(file.getInputStream()); + Sheet src = workbook.getSheet(0); + if(src.getRows()>1000) { + message = "导入失败,明细不能超出1000条"; + res.code = 500; + data.put("message", message); + res.data = data; + } else { + List> detailList = new ArrayList<>(); + for (int i = 2; i < src.getRows(); i++) { + String depotName = "", barCode = "", num = "", unitPrice = "", taxRate = "", remark = ""; + if("QGD".equals(prefixNo)) { + barCode = ExcelUtils.getContent(src, i, 0); + num = ExcelUtils.getContent(src, i, 2); + remark = ExcelUtils.getContent(src, i, 3); + } + if("CGDD".equals(prefixNo) || "XSDD".equals(prefixNo)) { + barCode = ExcelUtils.getContent(src, i, 0); + num = ExcelUtils.getContent(src, i, 2); + unitPrice = ExcelUtils.getContentNumber(src, i, 3); + taxRate = ExcelUtils.getContent(src, i, 4); + remark = ExcelUtils.getContent(src, i, 5); + } + if("CGRK".equals(prefixNo) || "XSCK".equals(prefixNo)) { + depotName = ExcelUtils.getContent(src, i, 0); + barCode = ExcelUtils.getContent(src, i, 1); + num = ExcelUtils.getContent(src, i, 3); + unitPrice = ExcelUtils.getContentNumber(src, i, 4); + taxRate = ExcelUtils.getContent(src, i, 5); + remark = ExcelUtils.getContent(src, i, 6); + } + if("QTRK".equals(prefixNo) || "QTCK".equals(prefixNo)) { + depotName = ExcelUtils.getContent(src, i, 0); + barCode = ExcelUtils.getContent(src, i, 1); + num = ExcelUtils.getContent(src, i, 3); + unitPrice = ExcelUtils.getContentNumber(src, i, 4); + remark = ExcelUtils.getContent(src, i, 5); + } + Map materialMap = new HashMap<>(); + materialMap.put("depotName", depotName); + materialMap.put("barCode", barCode); + materialMap.put("num", num); + materialMap.put("unitPrice", unitPrice); + materialMap.put("taxRate", taxRate); + materialMap.put("remark", remark); + detailList.add(materialMap); + barCodeList.add(barCode); + } + JSONObject map = depotItemService.parseMapByExcelData(barCodeList, detailList, prefixNo); + if (map != null) { + res.code = 200; + } else { + res.code = 500; + } + res.data = map; + } + } catch (BusinessRunTimeException e) { + res.code = 500; + data.put("message", e.getData().get("message")); + res.data = data; + } catch (Exception e) { + logger.error(e.getMessage(), e); + message = "导入失败,请检查表格内容"; + res.code = 500; + data.put("message", message); + res.data = data; + } + return res; + } + + private BigDecimal nullToZero(BigDecimal value) { + return value == null ? BigDecimal.ZERO : value; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/controller/DeviceInventoryCompatibilityController.java b/smtERP-boot/src/main/java/com/reallin/smt/controller/DeviceInventoryCompatibilityController.java new file mode 100644 index 0000000..10c8c14 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/controller/DeviceInventoryCompatibilityController.java @@ -0,0 +1,37 @@ +package com.reallin.smt.controller; + +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.datasource.entities.AssetInventory; +import com.reallin.smt.service.AssetManagementService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.Map; + +import static com.reallin.smt.utils.ResponseJsonUtil.returnJson; + +/** + * 兼容原设备管理项目的设备盘点回传路径。 + */ +@RestController +@RequestMapping("/deviceInventory") +@Api(tags = "设备盘点外部兼容接口") +public class DeviceInventoryCompatibilityController { + @Resource + private AssetManagementService service; + + @PostMapping("/doDevicePlan") + @ApiOperation("兼容原接口:外部服务回传单台设备已盘点") + public String doDevicePlan(@RequestBody JSONObject json) throws Exception { + AssetInventory inventory = service.recordInventoryFromCollaboration(json); + Map data = new HashMap<>(); + data.put("inventory", inventory); + return returnJson(data, "盘点成功", 200); + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/controller/FunctionController.java b/smtERP-boot/src/main/java/com/reallin/smt/controller/FunctionController.java new file mode 100644 index 0000000..4ace47c --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/controller/FunctionController.java @@ -0,0 +1,361 @@ +package com.reallin.smt.controller; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.base.BaseController; +import com.reallin.smt.base.TableDataInfo; +import com.reallin.smt.datasource.entities.*; +import com.reallin.smt.service.FunctionService; +import com.reallin.smt.service.SystemConfigService; +import com.reallin.smt.service.UserBusinessService; +import com.reallin.smt.service.UserService; +import com.reallin.smt.utils.*; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static com.reallin.smt.utils.ResponseJsonUtil.returnJson; +import static com.reallin.smt.utils.ResponseJsonUtil.returnStr; + +/** + * @author ji-sheng-hua jshERP + */ +@RestController +@RequestMapping(value = "/function") +@Api(tags = {"功能管理"}) +public class FunctionController extends BaseController { + private Logger logger = LoggerFactory.getLogger(FunctionController.class); + + @Resource + private FunctionService functionService; + + @Resource + private UserService userService; + + @Resource + private UserBusinessService userBusinessService; + + @Resource + private SystemConfigService systemConfigService; + + @GetMapping(value = "/info") + @ApiOperation(value = "根据id获取信息") + public String getList(@RequestParam("id") Long id, + HttpServletRequest request) throws Exception { + Function function = functionService.getFunction(id); + Map objectMap = new HashMap<>(); + if(function != null) { + objectMap.put("info", function); + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } + + @GetMapping(value = "/list") + @ApiOperation(value = "获取信息列表") + public TableDataInfo getList(@RequestParam(value = Constants.SEARCH, required = false) String search, + HttpServletRequest request)throws Exception { + String name = StringUtil.getInfo(search, "name"); + String nameEn = StringUtil.getInfo(search, "nameEn"); + String type = StringUtil.getInfo(search, "type"); + List list = functionService.select(name, nameEn, type); + return getDataTable(list); + } + + @PostMapping(value = "/add") + @ApiOperation(value = "新增") + public String addResource(@RequestBody JSONObject obj, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int insert = functionService.insertFunction(obj, request); + return returnStr(objectMap, insert); + } + + @PutMapping(value = "/update") + @ApiOperation(value = "修改") + public String updateResource(@RequestBody JSONObject obj, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int update = functionService.updateFunction(obj, request); + return returnStr(objectMap, update); + } + + @DeleteMapping(value = "/delete") + @ApiOperation(value = "删除") + public String deleteResource(@RequestParam("id") Long id, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int delete = functionService.deleteFunction(id, request); + return returnStr(objectMap, delete); + } + + @DeleteMapping(value = "/deleteBatch") + @ApiOperation(value = "批量删除") + public String batchDeleteResource(@RequestParam("ids") String ids, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int delete = functionService.batchDeleteFunction(ids, request); + return returnStr(objectMap, delete); + } + + @GetMapping(value = "/checkIsNameExist") + @ApiOperation(value = "检查名称是否存在") + public String checkIsNameExist(@RequestParam Long id, @RequestParam(value ="name", required = false) String name, + HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int exist = functionService.checkIsNameExist(id, name); + if(exist > 0) { + objectMap.put("status", true); + } else { + objectMap.put("status", false); + } + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } + + @GetMapping(value = "/checkIsNumberExist") + @ApiOperation(value = "检查编号是否存在") + public String checkIsNumberExist(@RequestParam Long id, + @RequestParam(value ="number", required = false) String number, + HttpServletRequest request)throws Exception { + Map objectMap = new HashMap(); + int exist = functionService.checkIsNumberExist(id, number); + if(exist > 0) { + objectMap.put("status", true); + } else { + objectMap.put("status", false); + } + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } + + /** + * 根据父编号查询菜单 + * @param jsonObject + * @param request + * @return + * @throws Exception + */ + @PostMapping(value = "/findMenuByPNumber") + @ApiOperation(value = "根据父编号查询菜单") + public JSONArray findMenuByPNumber(@RequestBody JSONObject jsonObject, + HttpServletRequest request)throws Exception { + String pNumber = jsonObject.getString("pNumber"); + String userId = jsonObject.getString("userId"); + //存放数据json数组 + JSONArray dataArray = new JSONArray(); + try { + Long roleId = 0L; + String fc = ""; + List roleList = userBusinessService.getBasicData(userId, "UserRole"); + if(roleList!=null && roleList.size()>0){ + String value = roleList.get(0).getValue(); + if(StringUtil.isNotEmpty(value)){ + String roleIdStr = value.replace("[", "").replace("]", ""); + roleId = Long.parseLong(roleIdStr); + } + } + //当前用户所拥有的功能列表,格式如:[1][2][5] + List funList = userBusinessService.getBasicData(roleId.toString(), "RoleFunctions"); + if(funList!=null && funList.size()>0){ + fc = funList.get(0).getValue(); + } + //获取系统配置信息-是否开启多级审核 + String approvalFlag = "0"; + List list = systemConfigService.getSystemConfig(); + if(list.size()>0) { + approvalFlag = list.get(0).getMultiLevelApprovalFlag(); + } + + List dataList = functionService.getRoleFunction(pNumber); + if (dataList.size() != 0) { + User userInfo = userService.getCurrentUser(); + Map funIdMap = null; + dataArray = getMenuByFunction(dataList, fc, approvalFlag, funIdMap, userInfo); + //增加首页菜单项 + JSONObject homeItem = new JSONObject(); + homeItem.put("id", 0); + homeItem.put("text", "首页"); + homeItem.put("textEn", "Home"); + homeItem.put("icon", "home"); + homeItem.put("url", "/dashboard/analysis"); + homeItem.put("component", "/layouts/TabLayout"); + dataArray.add(0,homeItem); + } + } catch (DataAccessException e) { + logger.error(">>>>>>>>>>>>>>>>>>>查找异常", e); + } + return dataArray; + } + + public JSONArray getMenuByFunction(List dataList, String fc, String approvalFlag, Map funIdMap, User userInfo) throws Exception { + JSONArray dataArray = new JSONArray(); + for (Function function : dataList) { + // 取消租户概念后,移除租户权限校验 + // if("admin".equals(userInfo.getLoginName()) || userInfo.getId().equals(userInfo.getTenantId()) || funIdMap.get(function.getId())!=null) { + //如果关闭多级审核,遇到任务审核菜单直接跳过 + if("0".equals(approvalFlag) && "/workflow".equals(function.getUrl())) { + continue; + } + JSONObject item = new JSONObject(); + List newList = functionService.getRoleFunction(function.getNumber()); + item.put("id", function.getId()); + item.put("text", function.getName()); + item.put("textEn", function.getNameEn()); + item.put("icon", function.getIcon()); + item.put("url", function.getUrl()); + item.put("component", function.getComponent()); + if (newList.size()>0) { + JSONArray childrenArr = getMenuByFunction(newList, fc, approvalFlag, funIdMap, userInfo); + if(childrenArr.size()>0) { + item.put("children", childrenArr); + dataArray.add(item); + } + } else { + if (fc.indexOf("[" + function.getId().toString() + "]") != -1) { + dataArray.add(item); + } + } + // } + } + return dataArray; + } + + /** + * 角色对应功能显示 + * @param request + * @return + */ + @GetMapping(value = "/findRoleFunction") + @ApiOperation(value = "角色对应功能显示") + public JSONArray findRoleFunction(@RequestParam("UBType") String type, @RequestParam("UBKeyId") String keyId, + HttpServletRequest request)throws Exception { + JSONArray arr = new JSONArray(); + try { + User userInfo = userService.getCurrentUser(); + //拥有“权限管理”按钮权限的用户可分配全部菜单;其他用户只能分配自身已有菜单 + List funIdList = userService.hasPermissionManagement() + ? null : functionService.getCurrentUserFunIdList(); + List dataListFun = functionService.findRoleFunction("0", null); + //开始拼接json数据 + JSONObject outer = new JSONObject(); + outer.put("id", 0); + outer.put("key", 0); + outer.put("value", 0); + outer.put("title", "功能列表"); + outer.put("attributes", "功能列表"); + //存放数据json数组 + JSONArray dataArray = new JSONArray(); + if (null != dataListFun) { + // 取消租户概念后,不再过滤系统管理菜单 + // 根据条件从列表里面移除"系统管理" + List dataList = new ArrayList<>(); + for (Function fun : dataListFun) { + dataList.add(fun); + } + dataArray = getFunctionList(dataList, type, keyId, funIdList); + outer.put("children", dataArray); + } + arr.add(outer); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return arr; + } + + public JSONArray getFunctionList(List dataList, String type, String keyId, List funIdList) throws Exception { + JSONArray dataArray = new JSONArray(); + //获取权限信息 + String ubValue = userBusinessService.getUBValueByTypeAndKeyId(type, keyId); + if (null != dataList) { + for (Function function : dataList) { + JSONObject item = new JSONObject(); + item.put("id", function.getId()); + item.put("key", function.getId()); + item.put("value", function.getId()); + item.put("title", function.getName()); + item.put("titleEn", function.getNameEn()); + item.put("attributes", function.getName()); + List funList = functionService.findRoleFunction(function.getNumber(), funIdList); + if(funList.size()>0) { + JSONArray funArr = getFunctionList(funList, type, keyId, funIdList); + item.put("children", funArr); + dataArray.add(item); + } else { + Boolean flag = ubValue.contains("[" + function.getId().toString() + "]"); + item.put("checked", flag); + dataArray.add(item); + } + } + } + return dataArray; + } + + /** + * 根据id列表查找功能信息 + * @param roleId + * @param request + * @return + */ + @GetMapping(value = "/findRoleFunctionsById") + @ApiOperation(value = "根据id列表查找功能信息") + public BaseResponseInfo findByIds(@RequestParam("roleId") Long roleId, + HttpServletRequest request)throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + try { + List list = userBusinessService.getBasicData(roleId.toString(), "RoleFunctions"); + if(null!=list && list.size()>0) { + //按钮 + Map btnMap = new HashMap<>(); + String btnStr = list.get(0).getBtnStr(); + if(StringUtil.isNotEmpty(btnStr)) { + JSONArray btnArr = JSONArray.parseArray(btnStr); + for(Object obj: btnArr) { + JSONObject btnObj = JSONObject.parseObject(obj.toString()); + if(btnObj.get("funId")!=null && btnObj.get("btnStr")!=null) { + btnMap.put(btnObj.getLong("funId"), btnObj.getString("btnStr")); + } + } + } + //菜单 + String funIds = list.get(0).getValue(); + funIds = funIds.substring(1, funIds.length() - 1); + funIds = funIds.replace("][",","); + List dataList = functionService.findByIds(funIds); + JSONObject outer = new JSONObject(); + User userInfo = userService.getCurrentUser(); + // 取消租户概念后,移除权限校验 + // Map funIdMap = functionService.getCurrentUserFunIdMap(); + //存放数据json数组 + JSONArray dataArray = new JSONArray(); + if (null != dataList) { + for (Function function : dataList) { + // 取消租户概念后,不再校验租户权限 + // if("admin".equals(userInfo.getLoginName()) || funIdMap.get(function.getId())!=null) { + JSONObject item = new JSONObject(); + item.put("id", function.getId()); + item.put("name", function.getName()); + item.put("pushBtn", function.getPushBtn()); + item.put("btnStr", btnMap.get(function.getId())); + dataArray.add(item); + // } + } + } + outer.put("rows", dataArray); + outer.put("total", dataArray.size()); + res.code = 200; + res.data = outer; + } + } catch (Exception e) { + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/controller/HeadquartersInboundController.java b/smtERP-boot/src/main/java/com/reallin/smt/controller/HeadquartersInboundController.java new file mode 100644 index 0000000..bb65dd7 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/controller/HeadquartersInboundController.java @@ -0,0 +1,76 @@ +package com.reallin.smt.controller; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.datasource.entities.DepotHeadVo4Body; +import com.reallin.smt.service.DepotHeadService; +import com.reallin.smt.service.SmtInboundService; +import com.reallin.smt.utils.BaseResponseInfo; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.*; + +@RestController +@RequestMapping("/headquartersInbound") +public class HeadquartersInboundController { + @Resource private SmtInboundService inboundService; + @Resource private DepotHeadService depotHeadService; + + @GetMapping("/nextNumber") + public BaseResponseInfo nextNumber(@RequestParam(required = false) String businessDate) { + return ok(Collections.singletonMap("number", inboundService.nextNumber(businessDate))); + } + + @RequestMapping(value = "/save", method = {RequestMethod.POST, RequestMethod.PUT}) + public BaseResponseInfo save(@RequestBody DepotHeadVo4Body body, HttpServletRequest request) { + Long id = inboundService.save(JSONObject.parseObject(body.getInfo()), JSONArray.parseArray(body.getRows()), inboundService.creatorId(request)); + return ok(Collections.singletonMap("id", id)); + } + + @GetMapping("/details") + public BaseResponseInfo details(@RequestParam Long headerId) { + List> rows = inboundService.details(headerId); + Map data = new HashMap<>(); + data.put("rows", rows); data.put("total", rows.size()); + return ok(data); + } + + @PostMapping("/importExcel") + public BaseResponseInfo importExcel(@RequestParam("file") MultipartFile file, HttpServletRequest request) throws Exception { + return ok(inboundService.importExcel(file, inboundService.creatorId(request))); + } + + @GetMapping("/template") + public void template(HttpServletResponse response) throws Exception { inboundService.exportTemplate(response); } + + @PostMapping("/sync") + public BaseResponseInfo sync(@RequestBody List payload, HttpServletRequest request) { + return ok(inboundService.sync(payload, inboundService.creatorId(request))); + } + + @PostMapping("/createMaterial") + public BaseResponseInfo createMaterial(@RequestBody JSONObject item) { + return ok(inboundService.createMaterialIfMissing(item)); + } + + @PostMapping("/batchSetStatus") + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public BaseResponseInfo batchSetStatus(@RequestBody JSONObject body) throws Exception { + String status = body.getString("status"); + String ids = body.getString("ids"); + if ("1".equals(status)) { + for (String id : ids.split(",")) if (!id.trim().isEmpty()) inboundService.prepareForApproval(Long.valueOf(id.trim())); + } + depotHeadService.batchSetStatus(status, ids); + return ok(null); + } + + private BaseResponseInfo ok(Object data) { + BaseResponseInfo response = new BaseResponseInfo(); response.code = 200; response.data = data; return response; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/controller/InOutItemController.java b/smtERP-boot/src/main/java/com/reallin/smt/controller/InOutItemController.java new file mode 100644 index 0000000..2aa1faf --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/controller/InOutItemController.java @@ -0,0 +1,161 @@ +package com.reallin.smt.controller; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.base.BaseController; +import com.reallin.smt.base.TableDataInfo; +import com.reallin.smt.datasource.entities.InOutItem; +import com.reallin.smt.service.InOutItemService; +import com.reallin.smt.utils.Constants; +import com.reallin.smt.utils.ErpInfo; +import com.reallin.smt.utils.StringUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static com.reallin.smt.utils.ResponseJsonUtil.returnJson; +import static com.reallin.smt.utils.ResponseJsonUtil.returnStr; + +/** + * @author jishenghua jshERP 2018年12月25日14:38:08 + */ +@RestController +@RequestMapping(value = "/inOutItem") +@Api(tags = {"收支项目"}) +public class InOutItemController extends BaseController { + private Logger logger = LoggerFactory.getLogger(InOutItemController.class); + + @Resource + private InOutItemService inOutItemService; + + @GetMapping(value = "/info") + @ApiOperation(value = "根据id获取信息") + public String getList(@RequestParam("id") Long id, + HttpServletRequest request) throws Exception { + InOutItem inOutItem = inOutItemService.getInOutItem(id); + Map objectMap = new HashMap<>(); + if(inOutItem != null) { + objectMap.put("info", inOutItem); + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } + + @GetMapping(value = "/list") + @ApiOperation(value = "获取信息列表") + public TableDataInfo getList(@RequestParam(value = Constants.SEARCH, required = false) String search, + HttpServletRequest request)throws Exception { + String name = StringUtil.getInfo(search, "name"); + String type = StringUtil.getInfo(search, "type"); + String remark = StringUtil.getInfo(search, "remark"); + List list = inOutItemService.select(name, type, remark); + return getDataTable(list); + } + + @PostMapping(value = "/add") + @ApiOperation(value = "新增") + public String addResource(@RequestBody JSONObject obj, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int insert = inOutItemService.insertInOutItem(obj, request); + return returnStr(objectMap, insert); + } + + @PutMapping(value = "/update") + @ApiOperation(value = "修改") + public String updateResource(@RequestBody JSONObject obj, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int update = inOutItemService.updateInOutItem(obj, request); + return returnStr(objectMap, update); + } + + @DeleteMapping(value = "/delete") + @ApiOperation(value = "删除") + public String deleteResource(@RequestParam("id") Long id, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int delete = inOutItemService.deleteInOutItem(id, request); + return returnStr(objectMap, delete); + } + + @DeleteMapping(value = "/deleteBatch") + @ApiOperation(value = "批量删除") + public String batchDeleteResource(@RequestParam("ids") String ids, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int delete = inOutItemService.batchDeleteInOutItem(ids, request); + return returnStr(objectMap, delete); + } + + @GetMapping(value = "/checkIsNameExist") + @ApiOperation(value = "检查名称是否存在-后续废弃") + public String checkIsNameExist(@RequestParam Long id, + @RequestParam(value ="name", required = false) String name, + HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int exist = inOutItemService.checkIsNameExist(id, name); + if(exist > 0) { + objectMap.put("status", true); + } else { + objectMap.put("status", false); + } + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } + + /** + * 查找收支项目信息-下拉框 + * @param request + * @return + */ + @GetMapping(value = "/findBySelect") + @ApiOperation(value = "查找收支项目信息") + public String findBySelect(@RequestParam("type") String type, HttpServletRequest request) throws Exception{ + String res = null; + try { + List dataList = inOutItemService.findBySelect(type); + //存放数据json数组 + JSONArray dataArray = new JSONArray(); + if (null != dataList) { + for (InOutItem inOutItem : dataList) { + JSONObject item = new JSONObject(); + item.put("id", inOutItem.getId()); + //收支项目名称 + item.put("name", inOutItem.getName()); + dataArray.add(item); + } + } + res = dataArray.toJSONString(); + } catch(Exception e){ + logger.error(e.getMessage(), e); + res = "获取数据失败"; + } + return res; + } + + /** + * 批量设置状态-启用或者禁用 + * @param jsonObject + * @param request + * @return + */ + @PostMapping(value = "/batchSetStatus") + @ApiOperation(value = "批量设置状态") + public String batchSetStatus(@RequestBody JSONObject jsonObject, + HttpServletRequest request)throws Exception { + Boolean status = jsonObject.getBoolean("status"); + String ids = jsonObject.getString("ids"); + Map objectMap = new HashMap<>(); + int res = inOutItemService.batchSetStatus(status, ids); + if(res > 0) { + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/controller/LegacyInventoryController.java b/smtERP-boot/src/main/java/com/reallin/smt/controller/LegacyInventoryController.java new file mode 100644 index 0000000..b31909c --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/controller/LegacyInventoryController.java @@ -0,0 +1,90 @@ +package com.reallin.smt.controller; + +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.exception.LegacyInventoryBusinessException; +import com.reallin.smt.service.LegacyInventoryService; +import com.reallin.smt.utils.LegacyInventoryResponse; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.List; + +/** + * 兼容原 n2tpm 设备盘点客户端的大写字段接口。 + */ +@RestController +@RequestMapping({"/n2tpm/webmvc/Inventory", "/webmvc/Inventory"}) +public class LegacyInventoryController { + private static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(LegacyInventoryController.class); + @Resource + private LegacyInventoryService legacyInventoryService; + + @PostMapping("/Login") + public LegacyInventoryResponse login(@RequestBody JSONObject input) { + return execute(() -> legacyInventoryService.login(input)); + } + + @PostMapping("/GetInventory") + public LegacyInventoryResponse getInventory(@RequestBody JSONObject input) { + return execute(() -> legacyInventoryService.getInventory(input)); + } + + @PostMapping("/GetInventoryDetail") + public LegacyInventoryResponse getInventoryDetail(@RequestBody JSONObject input) { + return execute(() -> legacyInventoryService.getInventoryDetail(input)); + } + + @PostMapping("/SaveDeviceInventoryInfo") + public LegacyInventoryResponse saveDeviceInventoryInfo(@RequestBody JSONObject input) { + return execute(() -> legacyInventoryService.saveDeviceInventoryInfo(input)); + } + + @PostMapping("/AccepteOrHandoverDocForInventory") + public LegacyInventoryResponse acceptInventory(@RequestBody JSONObject input) { + return execute(() -> legacyInventoryService.acceptInventory(input)); + } + + @PostMapping("/UploadPicture") + public LegacyInventoryResponse uploadPicture(HttpServletRequest request) { + return execute(() -> { + if (!(request instanceof MultipartHttpServletRequest)) { + throw new LegacyInventoryBusinessException("请求必须为 multipart/form-data"); + } + MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; + List files = new ArrayList<>(); + multipartRequest.getMultiFileMap().values().forEach(files::addAll); + return legacyInventoryService.uploadPicture( + request.getParameter("USER_ID"), request.getParameter("DATA_AUTH"), + request.getParameter("INVENTORY_DOC"), request.getParameter("DEVICE_SN"), + files, request); + }); + } + + @PostMapping({"/GetDevice", "/GetDevic"}) + public LegacyInventoryResponse getDevice(@RequestBody(required = false) JSONObject input) { + return execute(() -> legacyInventoryService.getDevice(input)); + } + + private LegacyInventoryResponse execute(Action action) { + try { + return LegacyInventoryResponse.success(action.run()); + } catch (LegacyInventoryBusinessException e) { + return LegacyInventoryResponse.fail(e.getMessage()); + } catch (Exception e) { + logger.error("盘点接口处理失败", e); + return LegacyInventoryResponse.fail("处理失败,请联系管理员"); + } + } + + @FunctionalInterface + private interface Action { + Object run() throws Exception; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/controller/LogController.java b/smtERP-boot/src/main/java/com/reallin/smt/controller/LogController.java new file mode 100644 index 0000000..824e7c8 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/controller/LogController.java @@ -0,0 +1,101 @@ +package com.reallin.smt.controller; + +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.base.BaseController; +import com.reallin.smt.base.TableDataInfo; +import com.reallin.smt.datasource.entities.Log; +import com.reallin.smt.datasource.vo.LogVo4List; +import com.reallin.smt.service.LogService; +import com.reallin.smt.utils.Constants; +import com.reallin.smt.utils.ErpInfo; +import com.reallin.smt.utils.StringUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static com.reallin.smt.utils.ResponseJsonUtil.returnJson; +import static com.reallin.smt.utils.ResponseJsonUtil.returnStr; + +/** + * @author ji sheng hua 752*718*920 + */ +@RestController +@RequestMapping(value = "/log") +@Api(tags = {"日志管理"}) +public class LogController extends BaseController { + private Logger logger = LoggerFactory.getLogger(LogController.class); + + @Resource + private LogService logService; + + + @GetMapping(value = "/info") + @ApiOperation(value = "根据id获取信息") + public String getList(@RequestParam("id") Long id, + HttpServletRequest request) throws Exception { + Log log = logService.getLog(id); + Map objectMap = new HashMap<>(); + if(log != null) { + objectMap.put("info", log); + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } + + @GetMapping(value = "/list") + @ApiOperation(value = "获取信息列表") + public TableDataInfo getList(@RequestParam(value = Constants.SEARCH, required = false) String search, + HttpServletRequest request)throws Exception { + String operation = StringUtil.getInfo(search, "operation"); + String userInfo = StringUtil.getInfo(search, "userInfo"); + String clientIp = StringUtil.getInfo(search, "clientIp"); + String tenantLoginName = StringUtil.getInfo(search, "tenantLoginName"); + String tenantType = StringUtil.getInfo(search, "tenantType"); + String beginTime = StringUtil.getInfo(search, "beginTime"); + String endTime = StringUtil.getInfo(search, "endTime"); + String content = StringUtil.getInfo(search, "content"); + List list = logService.select(operation, userInfo, clientIp, tenantLoginName, tenantType, beginTime, endTime, content); + return getDataTable(list); + } + + @PostMapping(value = "/add") + @ApiOperation(value = "新增") + public String addResource(@RequestBody JSONObject obj, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap(); + int insert = logService.insertLog(obj, request); + return returnStr(objectMap, insert); + } + + @PutMapping(value = "/update") + @ApiOperation(value = "修改") + public String updateResource(@RequestBody JSONObject obj, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int update = logService.updateLog(obj, request); + return returnStr(objectMap, update); + } + + @DeleteMapping(value = "/delete") + @ApiOperation(value = "删除") + public String deleteResource(@RequestParam("id") Long id, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int delete = logService.deleteLog(id, request); + return returnStr(objectMap, delete); + } + + @DeleteMapping(value = "/deleteBatch") + @ApiOperation(value = "批量删除") + public String batchDeleteResource(@RequestParam("ids") String ids, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int delete = logService.batchDeleteLog(ids, request); + return returnStr(objectMap, delete); + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/controller/MaterialAttributeController.java b/smtERP-boot/src/main/java/com/reallin/smt/controller/MaterialAttributeController.java new file mode 100644 index 0000000..542f2bd --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/controller/MaterialAttributeController.java @@ -0,0 +1,151 @@ +package com.reallin.smt.controller; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.base.BaseController; +import com.reallin.smt.base.TableDataInfo; +import com.reallin.smt.datasource.entities.MaterialAttribute; +import com.reallin.smt.service.MaterialAttributeService; +import com.reallin.smt.utils.Constants; +import com.reallin.smt.utils.ErpInfo; +import com.reallin.smt.utils.StringUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static com.reallin.smt.utils.ResponseJsonUtil.returnJson; +import static com.reallin.smt.utils.ResponseJsonUtil.returnStr; + +/** + * @author ji sheng hua jshERP + */ +@RestController +@RequestMapping(value = "/materialAttribute") +@Api(tags = {"商品属性"}) +public class MaterialAttributeController extends BaseController { + private Logger logger = LoggerFactory.getLogger(MaterialAttributeController.class); + + @Resource + private MaterialAttributeService materialAttributeService; + + @GetMapping(value = "/info") + @ApiOperation(value = "根据id获取信息") + public String getList(@RequestParam("id") Long id, + HttpServletRequest request) throws Exception { + MaterialAttribute materialAttribute = materialAttributeService.getMaterialAttribute(id); + Map objectMap = new HashMap<>(); + if(materialAttribute != null) { + objectMap.put("info", materialAttribute); + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } + + @GetMapping(value = "/list") + @ApiOperation(value = "获取信息列表") + public TableDataInfo getList(@RequestParam(value = Constants.SEARCH, required = false) String search, + HttpServletRequest request)throws Exception { + String attributeName = StringUtil.getInfo(search, "attributeName"); + String attributeValue = StringUtil.getInfo(search, "attributeValue"); + List list = materialAttributeService.select(attributeName, attributeValue); + return getDataTable(list); + } + + @PostMapping(value = "/add") + @ApiOperation(value = "新增") + public String addResource(@RequestBody JSONObject obj, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int insert = materialAttributeService.insertMaterialAttribute(obj, request); + return returnStr(objectMap, insert); + } + + @PutMapping(value = "/update") + @ApiOperation(value = "修改") + public String updateResource(@RequestBody JSONObject obj, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int update = materialAttributeService.updateMaterialAttribute(obj, request); + return returnStr(objectMap, update); + } + + @DeleteMapping(value = "/delete") + @ApiOperation(value = "删除") + public String deleteResource(@RequestParam("id") Long id, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int delete = materialAttributeService.deleteMaterialAttribute(id, request); + return returnStr(objectMap, delete); + } + + @DeleteMapping(value = "/deleteBatch") + @ApiOperation(value = "批量删除") + public String batchDeleteResource(@RequestParam("ids") String ids, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int delete = materialAttributeService.batchDeleteMaterialAttribute(ids, request); + return returnStr(objectMap, delete); + } + + @GetMapping(value = "/checkIsNameExist") + @ApiOperation(value = "检查名称是否存在") + public String checkIsNameExist(@RequestParam Long id, @RequestParam(value ="name", required = false) String name, + HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int exist = materialAttributeService.checkIsNameExist(id, name); + if(exist > 0) { + objectMap.put("status", true); + } else { + objectMap.put("status", false); + } + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } + + /** + * 获取商品属性的名称列表 + * @param request + * @return + */ + @GetMapping(value = "/getNameList") + @ApiOperation(value = "获取商品属性的名称列表") + public JSONArray getNameList(HttpServletRequest request)throws Exception { + JSONArray dataArray = new JSONArray(); + try { + List materialAttributeList = materialAttributeService.getMaterialAttribute(); + if (null != materialAttributeList) { + for (MaterialAttribute materialAttribute : materialAttributeList) { + JSONObject item = new JSONObject(); + item.put("value", materialAttribute.getId().toString()); + item.put("name", materialAttribute.getAttributeName()); + dataArray.add(item); + } + } + } catch(Exception e){ + logger.error(e.getMessage(), e); + } + return dataArray; + } + + /** + * 获取id查询属性的值列表 + * @param request + * @return + */ + @GetMapping(value = "/getValueListById") + @ApiOperation(value = "获取id查询属性的值列表") + public JSONArray getValueListById(@RequestParam("id") Long id, + HttpServletRequest request)throws Exception { + JSONArray dataArray = new JSONArray(); + try { + dataArray = materialAttributeService.getValueArrById(id); + } catch(Exception e){ + logger.error(e.getMessage(), e); + } + return dataArray; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/controller/MaterialCategoryController.java b/smtERP-boot/src/main/java/com/reallin/smt/controller/MaterialCategoryController.java new file mode 100644 index 0000000..e018a4b --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/controller/MaterialCategoryController.java @@ -0,0 +1,192 @@ +package com.reallin.smt.controller; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.base.BaseController; +import com.reallin.smt.base.TableDataInfo; +import com.reallin.smt.datasource.entities.MaterialCategory; +import com.reallin.smt.datasource.vo.TreeNode; +import com.reallin.smt.service.MaterialCategoryService; +import com.reallin.smt.utils.BaseResponseInfo; +import com.reallin.smt.utils.Constants; +import com.reallin.smt.utils.ErpInfo; +import com.reallin.smt.utils.StringUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static com.reallin.smt.utils.ResponseJsonUtil.returnJson; +import static com.reallin.smt.utils.ResponseJsonUtil.returnStr; + +/** + * @author ji—sheng—hua jshERP + */ +@RestController +@RequestMapping(value = "/materialCategory") +@Api(tags = {"商品类别"}) +public class MaterialCategoryController extends BaseController { + private Logger logger = LoggerFactory.getLogger(MaterialCategoryController.class); + + @Resource + private MaterialCategoryService materialCategoryService; + + @GetMapping(value = "/info") + @ApiOperation(value = "根据id获取信息") + public String getList(@RequestParam("id") Long id, + HttpServletRequest request) throws Exception { + MaterialCategory materialCategory = materialCategoryService.getMaterialCategory(id); + Map objectMap = new HashMap<>(); + if(materialCategory != null) { + objectMap.put("info", materialCategory); + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } + + @GetMapping(value = "/list") + @ApiOperation(value = "获取信息列表") + public TableDataInfo getList(@RequestParam(value = Constants.SEARCH, required = false) String search, + HttpServletRequest request)throws Exception { + String name = StringUtil.getInfo(search, "name"); + Integer parentId = StringUtil.parseInteger(StringUtil.getInfo(search, "parentId")); + List list = materialCategoryService.select(name, parentId); + return getDataTable(list); + } + + @PostMapping(value = "/add") + @ApiOperation(value = "新增") + public String addResource(@RequestBody JSONObject obj, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int insert = materialCategoryService.insertMaterialCategory(obj, request); + return returnStr(objectMap, insert); + } + + @PutMapping(value = "/update") + @ApiOperation(value = "修改") + public String updateResource(@RequestBody JSONObject obj, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int update = materialCategoryService.updateMaterialCategory(obj, request); + return returnStr(objectMap, update); + } + + @DeleteMapping(value = "/delete") + @ApiOperation(value = "删除") + public String deleteResource(@RequestParam("id") Long id, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int delete = materialCategoryService.deleteMaterialCategory(id, request); + return returnStr(objectMap, delete); + } + + @DeleteMapping(value = "/deleteBatch") + @ApiOperation(value = "批量删除") + public String batchDeleteResource(@RequestParam("ids") String ids, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int delete = materialCategoryService.batchDeleteMaterialCategory(ids, request); + return returnStr(objectMap, delete); + } + + @GetMapping(value = "/checkIsNameExist") + @ApiOperation(value = "检查名称是否存在") + public String checkIsNameExist(@RequestParam Long id, + @RequestParam(value ="name", required = false) String name, + @RequestParam(value ="parentId", required = false) Long parentId, + HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int exist = materialCategoryService.checkIsNameExist(id, name, parentId); + if(exist > 0) { + objectMap.put("status", true); + } else { + objectMap.put("status", false); + } + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } + + /** + * 获取全部商品类别 + * @param parentId + * @param request + * @return + * @throws Exception + */ + @GetMapping(value = "/getAllList") + @ApiOperation(value = "获取全部商品类别") + public BaseResponseInfo getAllList(@RequestParam("parentId") Long parentId, HttpServletRequest request) throws Exception{ + BaseResponseInfo res = new BaseResponseInfo(); + try { + List materialCategoryList = materialCategoryService.getAllList(parentId); + res.code = 200; + res.data = materialCategoryList; + } catch(Exception e){ + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 根据id来查询商品名称 + * @param id + * @param request + * @return + */ + @GetMapping(value = "/findById") + @ApiOperation(value = "根据id来查询商品名称") + public BaseResponseInfo findById(@RequestParam("id") Long id, HttpServletRequest request)throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + try { + List dataList = materialCategoryService.findById(id); + JSONObject outer = new JSONObject(); + if (null != dataList) { + for (MaterialCategory mc : dataList) { + outer.put("id", mc.getId()); + outer.put("name", mc.getName()); + outer.put("parentId", mc.getParentId()); + List dataParentList = materialCategoryService.findById(mc.getParentId()); + if(dataParentList!=null&&dataParentList.size()>0){ + outer.put("parentName", dataParentList.get(0).getName()); + } + outer.put("sort", mc.getSort()); + outer.put("serialNo", mc.getSerialNo()); + outer.put("remark", mc.getRemark()); + } + } + res.code = 200; + res.data = outer; + } catch(Exception e){ + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + /** + * 获取商品类别树数据 + * @Param: + * @return com.alibaba.fastjson.JSONArray + */ + @RequestMapping(value = "/getMaterialCategoryTree") + @ApiOperation(value = "获取商品类别树数据") + public JSONArray getMaterialCategoryTree(@RequestParam("id") Long id) throws Exception{ + JSONArray arr=new JSONArray(); + List materialCategoryTree = materialCategoryService.getMaterialCategoryTree(id); + if(materialCategoryTree!=null&&materialCategoryTree.size()>0){ + for(TreeNode node:materialCategoryTree){ + String str=JSON.toJSONString(node); + JSONObject obj=JSON.parseObject(str); + arr.add(obj) ; + } + } + return arr; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/controller/MaterialController.java b/smtERP-boot/src/main/java/com/reallin/smt/controller/MaterialController.java new file mode 100644 index 0000000..6d17be4 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/controller/MaterialController.java @@ -0,0 +1,904 @@ +package com.reallin.smt.controller; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.base.BaseController; +import com.reallin.smt.base.TableDataInfo; +import com.reallin.smt.datasource.entities.*; +import com.reallin.smt.datasource.vo.MaterialDepotStock; +import com.reallin.smt.service.*; +import com.reallin.smt.utils.*; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static com.reallin.smt.utils.ResponseJsonUtil.returnJson; +import static com.reallin.smt.utils.ResponseJsonUtil.returnStr; + +/** + * @author ji|sheng|hua jshERP + */ +@RestController +@RequestMapping(value = "/material") +@Api(tags = {"商品管理"}) +public class MaterialController extends BaseController { + private Logger logger = LoggerFactory.getLogger(MaterialController.class); + + @Resource + private MaterialService materialService; + + @Resource + private DepotItemService depotItemService; + + @Resource + private SystemConfigService systemConfigService; + + @Resource + private UnitService unitService; + + @Resource + private DepotService depotService; + + @Resource + private RoleService roleService; + + @Resource + private UserService userService; + + @Resource + private SupplierService supplierService; + + @Value(value="${file.uploadType}") + private Long fileUploadType; + + @GetMapping(value = "/info") + @ApiOperation(value = "根据id获取信息") + public String getList(@RequestParam("id") Long id, + HttpServletRequest request) throws Exception { + Material material = materialService.getMaterial(id); + Map objectMap = new HashMap<>(); + if(material != null) { + objectMap.put("info", material); + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } + + @GetMapping(value = "/list") + @ApiOperation(value = "获取信息列表") + public TableDataInfo getList(@RequestParam(value = Constants.SEARCH, required = false) String search, + HttpServletRequest request)throws Exception { + String categoryId = StringUtil.getInfo(search, "categoryId"); + String materialParam = StringUtil.getInfo(search, "materialParam"); + String standard = StringUtil.getInfo(search, "standard"); + String model = StringUtil.getInfo(search, "model"); + String color = StringUtil.getInfo(search, "color"); + String brand = StringUtil.getInfo(search, "brand"); + String mfrs = StringUtil.getInfo(search, "mfrs"); + String otherField1 = StringUtil.getInfo(search, "otherField1"); + String otherField2 = StringUtil.getInfo(search, "otherField2"); + String otherField3 = StringUtil.getInfo(search, "otherField3"); + String weight = StringUtil.getInfo(search, "weight"); + String expiryNum = StringUtil.getInfo(search, "expiryNum"); + String enableSerialNumber = StringUtil.getInfo(search, "enableSerialNumber"); + String enableBatchNumber = StringUtil.getInfo(search, "enableBatchNumber"); + String position = StringUtil.getInfo(search, "position"); + String enabled = StringUtil.getInfo(search, "enabled"); + String remark = StringUtil.getInfo(search, "remark"); + String mpList = StringUtil.getInfo(search, "mpList"); + List list = materialService.select(materialParam, standard, model, color, brand, mfrs, otherField1, otherField2, + otherField3, weight, expiryNum, enableSerialNumber, enableBatchNumber, position, enabled, remark, categoryId, mpList); + return getDataTable(list); + } + + @PostMapping(value = "/add") + @ApiOperation(value = "新增") + public String addResource(@RequestBody JSONObject obj, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int insert = materialService.insertMaterial(obj, request); + return returnStr(objectMap, insert); + } + + @PutMapping(value = "/update") + @ApiOperation(value = "修改") + public String updateResource(@RequestBody JSONObject obj, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int update = materialService.updateMaterial(obj, request); + return returnStr(objectMap, update); + } + + @DeleteMapping(value = "/delete") + @ApiOperation(value = "删除") + public String deleteResource(@RequestParam("id") Long id, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int delete = materialService.deleteMaterial(id, request); + return returnStr(objectMap, delete); + } + + @DeleteMapping(value = "/deleteBatch") + @ApiOperation(value = "批量删除") + public String batchDeleteResource(@RequestParam("ids") String ids, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int delete = materialService.batchDeleteMaterial(ids, request); + return returnStr(objectMap, delete); + } + + @GetMapping(value = "/checkIsNameExist") + @ApiOperation(value = "检查名称是否存在") + public String checkIsNameExist(@RequestParam Long id, @RequestParam(value ="name", required = false) String name, + HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int exist = materialService.checkIsNameExist(id, name); + if(exist > 0) { + objectMap.put("status", true); + } else { + objectMap.put("status", false); + } + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } + + /** + * 检查商品是否存在 + * @param id + * @param name + * @param model + * @param color + * @param standard + * @param mfrs + * @param otherField1 + * @param otherField2 + * @param otherField3 + * @param unit + * @param unitId + * @param request + * @return + * @throws Exception + */ + @GetMapping(value = "/checkIsExist") + @ApiOperation(value = "检查商品是否存在") + public String checkIsExist(@RequestParam("id") Long id, @RequestParam("name") String name, + @RequestParam("model") String model, @RequestParam("color") String color, + @RequestParam("standard") String standard, @RequestParam("mfrs") String mfrs, + @RequestParam("otherField1") String otherField1, @RequestParam("otherField2") String otherField2, + @RequestParam("otherField3") String otherField3, @RequestParam("unit") String unit,@RequestParam("unitId") Long unitId, + HttpServletRequest request)throws Exception { + Map objectMap = new HashMap(); + int exist = materialService.checkIsExist(id, name, StringUtil.toNull(model), StringUtil.toNull(color), + StringUtil.toNull(standard), StringUtil.toNull(mfrs), StringUtil.toNull(otherField1), + StringUtil.toNull(otherField2), StringUtil.toNull(otherField3), StringUtil.toNull(unit), unitId); + if(exist > 0) { + objectMap.put("status", true); + } else { + objectMap.put("status", false); + } + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } + + /** + * 批量设置状态-启用或者禁用 + * @param jsonObject + * @param request + * @return + * @throws Exception + */ + @PostMapping(value = "/batchSetStatus") + @ApiOperation(value = "批量设置状态-启用或者禁用") + public String batchSetStatus(@RequestBody JSONObject jsonObject, + HttpServletRequest request)throws Exception { + Boolean status = jsonObject.getBoolean("status"); + String ids = jsonObject.getString("ids"); + Map objectMap = new HashMap<>(); + int res = materialService.batchSetStatus(status, ids); + if(res > 0) { + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } + + /** + * 根据id来查询商品名称 + * @param id + * @param request + * @return + */ + @GetMapping(value = "/findById") + @ApiOperation(value = "根据id来查询商品名称") + public BaseResponseInfo findById(@RequestParam("id") Long id, HttpServletRequest request) throws Exception{ + BaseResponseInfo res = new BaseResponseInfo(); + try { + List list = materialService.findById(id); + res.code = 200; + res.data = list; + } catch(Exception e){ + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 根据meId来查询商品名称 + * @param meId + * @param request + * @return + */ + @GetMapping(value = "/findByIdWithBarCode") + @ApiOperation(value = "根据meId来查询商品名称") + public BaseResponseInfo findByIdWithBarCode(@RequestParam("meId") Long meId, + @RequestParam("mpList") String mpList, + HttpServletRequest request) throws Exception{ + BaseResponseInfo res = new BaseResponseInfo(); + try { + String[] mpArr = mpList.split(","); + MaterialVo4Unit mu = new MaterialVo4Unit(); + List list = materialService.findByIdWithBarCode(meId); + if(list!=null && list.size()>0) { + mu = list.get(0); + mu.setMaterialOther(materialService.getMaterialOtherByParam(mpArr, mu)); + } + res.code = 200; + res.data = mu; + } catch(Exception e){ + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 根据关键词查找商品信息-条码、名称、规格、型号 + * @param q + * @param request + * @return + */ + @GetMapping(value = "/getMaterialByParam") + @ApiOperation(value = "根据关键词查找商品信息") + public BaseResponseInfo getMaterialByParam(@RequestParam("q") String q, + HttpServletRequest request) throws Exception{ + BaseResponseInfo res = new BaseResponseInfo(); + try { + JSONArray arr = materialService.getMaterialByParam(q); + res.code = 200; + res.data = arr; + } catch (Exception e) { + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 查找商品信息-下拉框 + * @param mpList + * @param request + * @return + */ + @GetMapping(value = "/findBySelect") + @ApiOperation(value = "查找商品信息") + public JSONObject findBySelect(@RequestParam(value = "categoryId", required = false) Long categoryId, + @RequestParam(value = "q", required = false) String q, + @RequestParam(value = "standardOrModel", required = false) String standardOrModel, + @RequestParam(value = "mpList", required = false) String mpList, + @RequestParam(value = "depotId", required = false) Long depotId, + @RequestParam(value = "color", required = false) String color, + @RequestParam(value = "brand", required = false) String brand, + @RequestParam(value = "mfrs", required = false) String mfrs, + @RequestParam(value = "otherField1", required = false) String otherField1, + @RequestParam(value = "otherField2", required = false) String otherField2, + @RequestParam(value = "otherField3", required = false) String otherField3, + @RequestParam(value = "enableSerialNumber", required = false) String enableSerialNumber, + @RequestParam(value = "enableBatchNumber", required = false) String enableBatchNumber, + @RequestParam("page") Integer currentPage, + @RequestParam("rows") Integer pageSize, + HttpServletRequest request) throws Exception{ + JSONObject object = new JSONObject(); + try { + String[] mpArr = new String[]{}; + if(StringUtil.isNotEmpty(mpList)){ + mpArr= mpList.split(","); + } + List dataList = materialService.findBySelectWithBarCode(categoryId, q, StringUtil.toNull(standardOrModel), + StringUtil.toNull(color), StringUtil.toNull(brand), StringUtil.toNull(mfrs), StringUtil.toNull(otherField1), StringUtil.toNull(otherField2), StringUtil.toNull(otherField3), + enableSerialNumber, enableBatchNumber, (currentPage-1)*pageSize, pageSize); + int total = materialService.findBySelectWithBarCodeCount(categoryId, q, StringUtil.toNull(standardOrModel), + StringUtil.toNull(color), StringUtil.toNull(brand), StringUtil.toNull(mfrs), StringUtil.toNull(otherField1), StringUtil.toNull(otherField2), StringUtil.toNull(otherField3), + enableSerialNumber, enableBatchNumber); + object.put("total", total); + JSONArray dataArray = new JSONArray(); + //存放数据json数组 + if (null != dataList) { + for (MaterialVo4Unit material : dataList) { + JSONObject item = new JSONObject(); + item.put("id", material.getMeId()); //商品扩展表的id + String ratioStr = ""; //比例 + Unit unit = new Unit(); + if (material.getUnitId() == null) { + ratioStr = ""; + } else { + unit = unitService.getUnit(material.getUnitId()); + //拼接副单位的比例 + String commodityUnit = material.getCommodityUnit(); + if(StringUtil.isNotEmpty(commodityUnit) && unit!=null) { + if(commodityUnit.equals(unit.getBasicUnit())) { + ratioStr = "[基本]"; + } + if(commodityUnit.equals(unit.getOtherUnit()) && unit.getRatio()!=null) { + ratioStr = "[" + unit.getRatio().stripTrailingZeros().toPlainString() + unit.getBasicUnit() + "]"; + } + if(commodityUnit.equals(unit.getOtherUnitTwo()) && unit.getRatioTwo()!=null) { + ratioStr = "[" + unit.getRatioTwo().stripTrailingZeros().toPlainString() + unit.getBasicUnit() + "]"; + } + if(commodityUnit.equals(unit.getOtherUnitThree()) && unit.getRatioThree()!=null) { + ratioStr = "[" + unit.getRatioThree().stripTrailingZeros().toPlainString() + unit.getBasicUnit() + "]"; + } + } + } + item.put("mBarCode", material.getmBarCode()); + item.put("name", material.getName()); + item.put("mnemonic", material.getMnemonic()); + item.put("categoryName", material.getCategoryName()); + item.put("standard", material.getStandard()); + item.put("model", material.getModel()); + item.put("color", material.getColor()); + item.put("brand", material.getBrand()); + item.put("mfrs", material.getMfrs()); + item.put("unit", material.getCommodityUnit() + ratioStr); + item.put("sku", material.getSku()); + item.put("enableSerialNumber", material.getEnableSerialNumber()); + item.put("enableBatchNumber", material.getEnableBatchNumber()); + BigDecimal stock; + if(StringUtil.isNotEmpty(material.getSku())){ + stock = depotItemService.getSkuStockByParam(depotId,material.getMeId(),null,null); + } else { + stock = depotItemService.getCurrentStockByParam(depotId, material.getId()); + if (material.getUnitId()!=null){ + String commodityUnit = material.getCommodityUnit(); + stock = unitService.parseStockByUnit(stock, unit, commodityUnit); + } + } + item.put("stock", stock); + item.put("expand", materialService.getMaterialOtherByParam(mpArr, material)); + item.put("otherField1", material.getOtherField1()); + item.put("otherField2", material.getOtherField2()); + item.put("otherField3", material.getOtherField3()); + item.put("imgName", material.getImgName()); + if(fileUploadType == 2) { + item.put("imgSmall", "small"); + item.put("imgLarge", "large"); + } else { + item.put("imgSmall", ""); + item.put("imgLarge", ""); + } + dataArray.add(item); + } + } + object.put("rows", dataArray); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return object; + } + + /** + * 根据商品id查找商品信息 + * @param meId + * @param request + * @return + * @throws Exception + */ + @GetMapping(value = "/getMaterialByMeId") + @ApiOperation(value = "根据商品id查找商品信息") + public JSONObject getMaterialByMeId(@RequestParam(value = "meId", required = false) Long meId, + @RequestParam("mpList") String mpList, + HttpServletRequest request) throws Exception{ + JSONObject item = new JSONObject(); + try { + String[] mpArr = mpList.split(","); + List materialList = materialService.getMaterialByMeId(meId); + if(materialList!=null && materialList.size()!=1) { + return item; + } else if(materialList.size() == 1) { + MaterialVo4Unit material = materialList.get(0); + item.put("Id", material.getMeId()); //商品扩展表的id + String ratio; //比例 + if (material.getUnitId() == null || material.getUnitId().equals("")) { + ratio = ""; + } else { + ratio = material.getUnitName(); + ratio = ratio.substring(ratio.indexOf("(")); + } + //名称/型号/扩展信息/包装 + String MaterialName = ""; + MaterialName = MaterialName + material.getmBarCode() + "_" + material.getName() + + ((material.getStandard() == null || material.getStandard().equals("")) ? "" : "(" + material.getStandard() + ")"); + String expand = materialService.getMaterialOtherByParam(mpArr, material); //扩展信息 + MaterialName = MaterialName + expand + ((material.getUnit() == null || material.getUnit().equals("")) ? "" : "(" + material.getUnit() + ")") + ratio; + item.put("MaterialName", MaterialName); + item.put("name", material.getName()); + item.put("expand", expand); + item.put("model", material.getModel()); + item.put("standard", material.getStandard()); + item.put("unit", material.getUnit() + ratio); + } + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return item; + } + + /** + * 生成excel表格 + * @param categoryId + * @param materialParam + * @param color + * @param weight + * @param expiryNum + * @param enabled + * @param enableSerialNumber + * @param enableBatchNumber + * @param remark + * @param mpList + * @param request + * @param response + */ + @GetMapping(value = "/exportExcel") + @ApiOperation(value = "生成excel表格") + public void exportExcel(@RequestParam(value = "categoryId", required = false) String categoryId, + @RequestParam(value = "materialParam", required = false) String materialParam, + @RequestParam(value = "color", required = false) String color, + @RequestParam(value = "materialOther", required = false) String materialOther, + @RequestParam(value = "weight", required = false) String weight, + @RequestParam(value = "expiryNum", required = false) String expiryNum, + @RequestParam(value = "enabled", required = false) String enabled, + @RequestParam(value = "enableSerialNumber", required = false) String enableSerialNumber, + @RequestParam(value = "enableBatchNumber", required = false) String enableBatchNumber, + @RequestParam(value = "remark", required = false) String remark, + @RequestParam(value = "mpList", required = false) String mpList, + HttpServletRequest request, HttpServletResponse response) { + try { + materialService.exportExcel(StringUtil.toNull(categoryId), StringUtil.toNull(materialParam), StringUtil.toNull(color), + StringUtil.toNull(materialOther), StringUtil.toNull(weight), + StringUtil.toNull(expiryNum), StringUtil.toNull(enabled), StringUtil.toNull(enableSerialNumber), + StringUtil.toNull(enableBatchNumber), StringUtil.toNull(remark), mpList, response); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + } + + /** + * excel表格导入产品(含初始库存) + * @param file + * @param request + * @param response + * @return + */ + @PostMapping(value = "/importExcel") + @ApiOperation(value = "excel表格导入产品") + public BaseResponseInfo importExcel(MultipartFile file, + HttpServletRequest request, HttpServletResponse response) throws Exception{ + BaseResponseInfo res = new BaseResponseInfo(); + try { + res = materialService.importExcel(file, request); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return res; + } + + /** + * 获取商品序列号 + * @param q + * @param currentPage + * @param pageSize + * @param request + * @param response + * @return + * @throws Exception + */ + @GetMapping(value = "/getMaterialEnableSerialNumberList") + @ApiOperation(value = "获取商品序列号") + public JSONObject getMaterialEnableSerialNumberList( + @RequestParam(value = "q", required = false) String q, + @RequestParam("page") Integer currentPage, + @RequestParam("rows") Integer pageSize, + HttpServletRequest request, + HttpServletResponse response)throws Exception { + JSONObject object= new JSONObject(); + try { + List list = materialService.getMaterialEnableSerialNumberList(q, (currentPage-1)*pageSize, pageSize); + Long count = materialService.getMaterialEnableSerialNumberCount(q); + object.put("rows", list); + object.put("total", count); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return object; + } + + /** + * 获取最大条码 + * @return + * @throws Exception + */ + @GetMapping(value = "/getMaxBarCode") + @ApiOperation(value = "获取最大条码") + public BaseResponseInfo getMaxBarCode() throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + Map map = new HashMap(); + String barCode = materialService.getMaxBarCode(); + map.put("barCode", barCode); + res.code = 200; + res.data = map; + return res; + } + + /** + * 商品名称模糊匹配 + * @return + * @throws Exception + */ + @GetMapping(value = "/getMaterialNameList") + @ApiOperation(value = "商品名称模糊匹配") + public JSONArray getMaterialNameList() throws Exception { + JSONArray arr = new JSONArray(); + try { + List list = materialService.getMaterialNameList(); + for (String s : list) { + JSONObject item = new JSONObject(); + item.put("value", s); + item.put("text", s); + arr.add(item); + } + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return arr; + } + + /** + * 根据条码查询商品信息 + * @return + * @throws Exception + */ + @GetMapping(value = "/getMaterialByBarCode") + @ApiOperation(value = "根据条码查询商品信息") + public BaseResponseInfo getMaterialByBarCode(@RequestParam("barCode") String barCode, + @RequestParam(value = "organId", required = false) Long organId, + @RequestParam(value = "depotId", required = false) Long depotId, + @RequestParam("mpList") String mpList, + @RequestParam(required = false, value = "prefixNo") String prefixNo, + HttpServletRequest request) throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + try { + Long userId = userService.getUserId(request); + String priceLimit = userService.getRoleTypeByUserId(userId).getPriceLimit(); + String[] mpArr = mpList.split(","); + //支持序列号查询,先根据序列号查询条码,如果查不到就直接查条码 + MaterialExtend materialExtend = materialService.getMaterialExtendBySerialNumber(barCode); + if(materialExtend!=null && StringUtil.isNotEmpty(materialExtend.getBarCode())) { + barCode = materialExtend.getBarCode(); + } + //查下供应商或者客户的信息 + Supplier supplier = organId!=null ? supplierService.getSupplier(organId) : null; + List list = materialService.getMaterialByBarCode(barCode); + if(list!=null && list.size()>0) { + for(MaterialVo4Unit mvo: list) { + mvo.setMaterialOther(materialService.getMaterialOtherByParam(mpArr, mvo)); + if ("LSCK".equals(prefixNo) || "LSTH".equals(prefixNo)) { + //零售价 + mvo.setBillPrice(mvo.getCommodityDecimal()); + } else if ("CGDD".equals(prefixNo) || "CGRK".equals(prefixNo) || "CGTH".equals(prefixNo)) { + //采购价 + mvo.setBillPrice(mvo.getPurchaseDecimal()); + } else if("QTRK".equals(prefixNo) || "QTCK".equals(prefixNo) || "DBCK".equals(prefixNo) || "ZZD".equals(prefixNo) || "CXD".equals(prefixNo) + || "PDLR".equals(prefixNo) || "PDFP".equals(prefixNo)) { + //采购价-给录入界面按权限屏蔽 + mvo.setBillPrice(roleService.parseBillPriceByLimit(mvo.getPurchaseDecimal(), "buy", priceLimit, request)); + } else if ("XSDD".equals(prefixNo) || "XSCK".equals(prefixNo) || "XSTH".equals(prefixNo)) { + //销售价 + if(organId == null) { + mvo.setBillPrice(mvo.getWholesaleDecimal()); + } else { + if(systemConfigService.getCustomerStaticPriceFlag()) { + //已经开启了客户静态单价的开关 + mvo.setBillPrice(mvo.getWholesaleDecimal()); + } else { + //查询最后一单的销售价,实现不同的客户不同的销售价 + BigDecimal lastUnitPrice = depotItemService.getLastUnitPriceByParam(organId, mvo.getMeId(), prefixNo); + mvo.setBillPrice(lastUnitPrice!=null? lastUnitPrice : mvo.getWholesaleDecimal()); + } + } + //销售价-给录入界面按权限屏蔽价格 + if("QTCK".equals(prefixNo)) { + mvo.setBillPrice(roleService.parseBillPriceByLimit(mvo.getWholesaleDecimal(), "sale", priceLimit, request)); + } + } else if ("other".equals(prefixNo)) { + //其它需要填充商品采购价或者成本价的场景 + if(systemConfigService.getMoveAvgPriceFlag()) { + BigDecimal currentUnitPrice = materialService.getCurrentUnitPriceByMaterialId(mvo.getId()); + mvo.setBillPrice(currentUnitPrice); + } else { + mvo.setBillPrice(mvo.getPurchaseDecimal()); + } + } + //仓库id + if (depotId == null) { + JSONArray depotArr = depotService.findDepotByCurrentUser(); + for (Object obj : depotArr) { + JSONObject depotObj = JSONObject.parseObject(obj.toString()); + if (depotObj.get("isDefault") != null) { + Boolean isDefault = depotObj.getBoolean("isDefault"); + if (isDefault) { + Long id = depotObj.getLong("id"); + if (!"CGDD".equals(prefixNo) && !"XSDD".equals(prefixNo)) { + //除订单之外的单据才有仓库 + mvo.setDepotId(id); + } + getStockByMaterialInfo(mvo); + } + } + } + } else { + mvo.setDepotId(depotId); + getStockByMaterialInfo(mvo); + } + //税率 + BigDecimal taxRate = BigDecimal.ZERO; + if(supplier!=null && supplier.getTaxRate()!=null) { + taxRate = supplier.getTaxRate(); + } + mvo.setTaxRate(taxRate); + //税额 + BigDecimal taxMoney = BigDecimal.ZERO; + if(taxRate.compareTo(BigDecimal.ZERO) != 0 && mvo.getBillPrice()!=null) { + if(systemConfigService.getMaterialPriceTaxFlag()) { + //商品价格含税-开启 + BigDecimal taxRatePercent = taxRate.divide(BigDecimal.valueOf(100), 2, BigDecimal.ROUND_HALF_UP); + taxMoney = mvo.getBillPrice().divide(BigDecimal.ONE.add(taxRatePercent), 2, BigDecimal.ROUND_HALF_UP) + .multiply(taxRatePercent).setScale(2, BigDecimal.ROUND_HALF_UP); + } else { + taxMoney = taxRate.multiply(mvo.getBillPrice()).divide(BigDecimal.valueOf(100), 2, BigDecimal.ROUND_HALF_UP); + } + } + mvo.setTaxMoney(taxMoney); + //价税合计 + BigDecimal taxLastMoney = BigDecimal.ZERO; + if(mvo.getBillPrice()!=null) { + if(systemConfigService.getMaterialPriceTaxFlag()) { + //商品价格含税-开启 + taxLastMoney = mvo.getBillPrice(); + } else { + taxLastMoney = mvo.getBillPrice().add(taxMoney); + } + } + mvo.setTaxLastMoney(taxLastMoney); + } + } + res.code = 200; + res.data = list; + } catch(Exception e){ + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 根据商品信息获取库存,进行赋值 + * @param mvo + * @throws Exception + */ + private void getStockByMaterialInfo(MaterialVo4Unit mvo) throws Exception { + BigDecimal stock; + if (StringUtil.isNotEmpty(mvo.getSku())) { + stock = depotItemService.getSkuStockByParam(mvo.getDepotId(), mvo.getMeId(), null, null); + } else { + stock = depotItemService.getCurrentStockByParam(mvo.getDepotId(), mvo.getId()); + if (mvo.getUnitId() != null) { + Unit unit = unitService.getUnit(mvo.getUnitId()); + String commodityUnit = mvo.getCommodityUnit(); + stock = unitService.parseStockByUnit(stock, unit, commodityUnit); + } + } + mvo.setStock(stock); + } + + /** + * 商品库存查询 + * @param currentPage + * @param pageSize + * @param depotIds + * @param categoryId + * @param materialParam + * @param zeroStock + * @param column + * @param order + * @param request + * @return + * @throws Exception + */ + @GetMapping(value = "/getListWithStock") + @ApiOperation(value = "商品库存查询") + public BaseResponseInfo getListWithStock(@RequestParam("currentPage") Integer currentPage, + @RequestParam("pageSize") Integer pageSize, + @RequestParam(value = "depotIds", required = false) String depotIds, + @RequestParam(value = "categoryId", required = false) Long categoryId, + @RequestParam(value = "position", required = false) String position, + @RequestParam("materialParam") String materialParam, + @RequestParam("zeroStock") Integer zeroStock, + @RequestParam(value = "column", required = false, defaultValue = "createTime") String column, + @RequestParam(value = "order", required = false, defaultValue = "desc") String order, + HttpServletRequest request)throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + Map map = new HashMap<>(); + try { + List idList = new ArrayList<>(); + List depotList = new ArrayList<>(); + if(categoryId != null){ + idList = materialService.getListByParentId(categoryId); + } + if(StringUtil.isNotEmpty(depotIds)) { + depotList = StringUtil.strToLongList(depotIds); + } else { + //未选择仓库时默认为当前用户有权限的仓库 + JSONArray depotArr = depotService.findDepotByCurrentUser(); + for(Object obj: depotArr) { + JSONObject object = JSONObject.parseObject(obj.toString()); + depotList.add(object.getLong("id")); + } + } + Long userId = userService.getUserId(request); + String priceLimit = userService.getRoleTypeByUserId(userId).getPriceLimit(); + Boolean moveAvgPriceFlag = systemConfigService.getMoveAvgPriceFlag(); + List dataList = materialService.getListWithStock(priceLimit, depotList, idList, StringUtil.toNull(position), StringUtil.toNull(materialParam), + moveAvgPriceFlag, zeroStock, StringUtil.safeSqlParse(column), StringUtil.safeSqlParse(order), (currentPage-1)*pageSize, pageSize, request); + int total = materialService.getListWithStockCount(priceLimit, depotList, idList, StringUtil.toNull(position), StringUtil.toNull(materialParam), zeroStock); + MaterialVo4Unit materialVo4Unit= materialService.getTotalStockAndPrice(priceLimit, depotList, idList, StringUtil.toNull(position), StringUtil.toNull(materialParam), request); + map.put("total", total); + map.put("currentStock", materialVo4Unit.getCurrentStock()!=null?materialVo4Unit.getCurrentStock():BigDecimal.ZERO); + if(moveAvgPriceFlag) { + map.put("currentStockPrice", materialVo4Unit.getCurrentStockMovePrice()!=null?materialVo4Unit.getCurrentStockMovePrice():BigDecimal.ZERO); + } else { + map.put("currentStockPrice", materialVo4Unit.getCurrentStockPrice()!=null?materialVo4Unit.getCurrentStockPrice():BigDecimal.ZERO); + } + map.put("currentWeight", materialVo4Unit.getCurrentWeight()!=null?materialVo4Unit.getCurrentWeight():BigDecimal.ZERO); + boolean showStockPrice = true; + if(StringUtil.isNotEmpty(priceLimit)) { + if(priceLimit.contains("7")) { + showStockPrice = false; + } + } + map.put("showStockPrice", showStockPrice); + map.put("moveAvgPriceFlag", moveAvgPriceFlag); + map.put("rows", dataList); + res.code = 200; + res.data = map; + } catch(Exception e){ + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 批量设置商品当前的实时库存(按每个仓库) + * @param jsonObject + * @param request + * @return + * @throws Exception + */ + @PostMapping(value = "/batchSetMaterialCurrentStock") + @ApiOperation(value = "批量设置商品当前的实时库存(按每个仓库)") + public String batchSetMaterialCurrentStock(@RequestBody JSONObject jsonObject, + HttpServletRequest request)throws Exception { + String ids = jsonObject.getString("ids"); + Map objectMap = new HashMap<>(); + List depotList = depotService.getAllList(); + if(depotList.isEmpty()) { + return returnJson(objectMap, "请先创建仓库后再操作", ErpInfo.WARING_MSG.code); + } + int res = materialService.batchSetMaterialCurrentStock(ids, depotList); + if(res > 0) { + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } + + /** + * 批量设置商品当前的成本价 + * @param jsonObject + * @param request + * @return + * @throws Exception + */ + @PostMapping(value = "/batchSetMaterialCurrentUnitPrice") + @ApiOperation(value = "批量设置商品当前的成本价") + public String batchSetMaterialCurrentUnitPrice(@RequestBody JSONObject jsonObject, + HttpServletRequest request)throws Exception { + String ids = jsonObject.getString("ids"); + Map objectMap = new HashMap<>(); + int res = materialService.batchSetMaterialCurrentUnitPrice(ids); + if(res > 0) { + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } + + /** + * 批量更新商品信息 + * @param jsonObject + * @param request + * @return + * @throws Exception + */ + @PostMapping(value = "/batchUpdate") + @ApiOperation(value = "批量更新商品信息") + public String batchUpdate(@RequestBody JSONObject jsonObject, + HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int res = materialService.batchUpdate(jsonObject); + if(res > 0) { + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } + + /** + * 转换名称为拼音 + * @param jsonObject + */ + @PostMapping(value = "/changeNameToPinYin") + @ApiOperation(value = "转换名称为拼音") + public BaseResponseInfo changeNameToPinYin(@RequestBody JSONObject jsonObject)throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + try { + String name = jsonObject.getString("name"); + res.code = 200; + res.data = PinYinUtil.getFirstLettersLo(name); + } catch(Exception e){ + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 根据仓库和商品查询库存分布情况 + * @param mId + * @param request + * @return + */ + @GetMapping(value = "/getMaterialDepotStock") + @ApiOperation(value = "根据仓库和商品查询库存分布情况") + public TableDataInfo getMaterialDepotStock( + @RequestParam(value = "depotIds",required = false) String depotIds, + @RequestParam("materialId") Long mId, + HttpServletRequest request)throws Exception { + List list = materialService.getMaterialDepotStock(depotIds, mId, request); + return getDataTable(list); + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/controller/MaterialExtendController.java b/smtERP-boot/src/main/java/com/reallin/smt/controller/MaterialExtendController.java new file mode 100644 index 0000000..7333ede --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/controller/MaterialExtendController.java @@ -0,0 +1,181 @@ +package com.reallin.smt.controller; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.datasource.entities.MaterialExtend; +import com.reallin.smt.datasource.vo.MaterialExtendVo4List; +import com.reallin.smt.service.MaterialExtendService; +import com.reallin.smt.utils.BaseResponseInfo; +import com.reallin.smt.utils.ErpInfo; +import com.reallin.smt.utils.StringUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static com.reallin.smt.utils.ResponseJsonUtil.returnJson; +import static com.reallin.smt.utils.ResponseJsonUtil.returnStr; + +/** + * @author jijiaqing + */ +@RestController +@RequestMapping(value = "/materialsExtend") +@Api(tags = {"商品价格扩展"}) +public class MaterialExtendController { + private Logger logger = LoggerFactory.getLogger(MaterialExtendController.class); + @Resource + private MaterialExtendService materialExtendService; + + @GetMapping(value = "/info") + @ApiOperation(value = "根据id获取信息") + public String getList(@RequestParam("id") Long id, + HttpServletRequest request) throws Exception { + MaterialExtend materialExtend = materialExtendService.getMaterialExtend(id); + Map objectMap = new HashMap<>(); + if(materialExtend != null) { + objectMap.put("info", materialExtend); + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } + + @PostMapping(value = "/add") + @ApiOperation(value = "新增") + public String addResource(@RequestBody JSONObject obj, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int insert = materialExtendService.insertMaterialExtend(obj, request); + return returnStr(objectMap, insert); + } + + @PutMapping(value = "/update") + @ApiOperation(value = "修改") + public String updateResource(@RequestBody JSONObject obj, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int update = materialExtendService.updateMaterialExtend(obj, request); + return returnStr(objectMap, update); + } + + @DeleteMapping(value = "/delete") + @ApiOperation(value = "删除") + public String deleteResource(@RequestParam("id") Long id, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int delete = materialExtendService.deleteMaterialExtend(id, request); + return returnStr(objectMap, delete); + } + + @DeleteMapping(value = "/deleteBatch") + @ApiOperation(value = "批量删除") + public String batchDeleteResource(@RequestParam("ids") String ids, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int delete = materialExtendService.batchDeleteMaterialExtendByIds(ids, request); + return returnStr(objectMap, delete); + } + + @GetMapping(value = "/getDetailList") + @ApiOperation(value = "价格信息列表") + public BaseResponseInfo getDetailList(@RequestParam("materialId") Long materialId, + HttpServletRequest request)throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + try { + List dataList = new ArrayList(); + if(materialId!=0) { + dataList = materialExtendService.getDetailList(materialId); + } + JSONObject outer = new JSONObject(); + outer.put("total", dataList.size()); + //存放数据json数组 + JSONArray dataArray = new JSONArray(); + if (null != dataList) { + for (MaterialExtendVo4List md : dataList) { + JSONObject item = new JSONObject(); + item.put("id", md.getId()); + item.put("barCode", md.getBarCode()); + item.put("commodityUnit", md.getCommodityUnit()); + if(StringUtil.isNotEmpty(md.getSku())){ + item.put("sku", md.getSku()); + } + item.put("purchaseDecimal", md.getPurchaseDecimal()); + item.put("commodityDecimal", md.getCommodityDecimal()); + item.put("wholesaleDecimal", md.getWholesaleDecimal()); + item.put("lowDecimal", md.getLowDecimal()); + dataArray.add(item); + } + } + outer.put("rows", dataArray); + res.code = 200; + res.data = outer; + } catch (Exception e) { + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 根据条码查询商品信息 + * @param barCode + * @param request + * @return + * @throws Exception + */ + @GetMapping(value = "/getInfoByBarCode") + @ApiOperation(value = "根据条码查询商品信息") + public BaseResponseInfo getInfoByBarCode(@RequestParam("barCode") String barCode, + HttpServletRequest request)throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + Map map = new HashMap(); + try { + MaterialExtend materialExtend = materialExtendService.getInfoByBarCode(barCode); + res.code = 200; + res.data = materialExtend; + } catch (Exception e) { + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 校验条码是否存在 + * @param id + * @param barCode + * @param request + * @return + * @throws Exception + */ + @GetMapping(value = "/checkIsBarCodeExist") + @ApiOperation(value = "校验条码是否存在") + public BaseResponseInfo checkIsBarCodeExist(@RequestParam("id") Long id, + @RequestParam("barCode") String barCode, + HttpServletRequest request)throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + Map map = new HashMap<>(); + try { + int exist = materialExtendService.checkIsBarCodeExist(id, barCode); + if(exist > 0) { + map.put("status", true); + } else { + map.put("status", false); + } + res.code = 200; + res.data = map; + } catch (Exception e) { + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/controller/MaterialPropertyController.java b/smtERP-boot/src/main/java/com/reallin/smt/controller/MaterialPropertyController.java new file mode 100644 index 0000000..fef0f50 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/controller/MaterialPropertyController.java @@ -0,0 +1,145 @@ +package com.reallin.smt.controller; + +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.base.BaseController; +import com.reallin.smt.base.TableDataInfo; +import com.reallin.smt.datasource.entities.MaterialProperty; +import com.reallin.smt.service.MaterialPropertyService; +import com.reallin.smt.utils.BaseResponseInfo; +import com.reallin.smt.utils.Constants; +import com.reallin.smt.utils.ErpInfo; +import com.reallin.smt.utils.StringUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static com.reallin.smt.utils.ResponseJsonUtil.returnJson; +import static com.reallin.smt.utils.ResponseJsonUtil.returnStr; + +/** + * Description + * + * @Author: jsh + * @Date: 2025/3/25 15:24 + */ +@RestController +@RequestMapping(value = "/materialProperty") +@Api(tags = {"商品扩展字段"}) +public class MaterialPropertyController extends BaseController { + + private Logger logger = LoggerFactory.getLogger(MaterialPropertyController.class); + + @Resource + private MaterialPropertyService materialPropertyService; + + @GetMapping(value = "/info") + @ApiOperation(value = "根据id获取信息") + public String getList(@RequestParam("id") Long id, + HttpServletRequest request) throws Exception { + MaterialProperty materialProperty = materialPropertyService.getMaterialProperty(id); + Map objectMap = new HashMap<>(); + if(materialProperty != null) { + objectMap.put("info", materialProperty); + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } + + @GetMapping(value = "/list") + @ApiOperation(value = "获取信息列表") + public TableDataInfo getList(@RequestParam(value = Constants.SEARCH, required = false) String search, + HttpServletRequest request)throws Exception { + String name = StringUtil.getInfo(search, "name"); + List list = materialPropertyService.select(name); + return getDataTable(list); + } + + @PostMapping(value = "/add") + @ApiOperation(value = "新增") + public String addResource(@RequestBody JSONObject obj, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int insert = materialPropertyService.insertMaterialProperty(obj, request); + return returnStr(objectMap, insert); + } + + @PutMapping(value = "/update") + @ApiOperation(value = "修改") + public String updateResource(@RequestBody JSONObject obj, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int update = materialPropertyService.updateMaterialProperty(obj, request); + return returnStr(objectMap, update); + } + + @PostMapping(value = "/addOrUpdate") + @ApiOperation(value = "新增或修改") + public String addOrUpdate(@RequestBody JSONObject obj, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + String nativeName = obj.getString("nativeName"); + String anotherName = obj.getString("anotherName"); + boolean exist = materialPropertyService.checkIsNativeNameExist(nativeName); + int res; + if(!exist) { + obj.put("id", null); + res = materialPropertyService.insertMaterialProperty(obj, request); + } else { + res = materialPropertyService.updateMaterialPropertyByNativeName(nativeName, anotherName); + } + return returnStr(objectMap, res); + } + + @DeleteMapping(value = "/delete") + @ApiOperation(value = "删除") + public String deleteResource(@RequestParam("id") Long id, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int delete = materialPropertyService.deleteMaterialProperty(id, request); + return returnStr(objectMap, delete); + } + + @DeleteMapping(value = "/deleteBatch") + @ApiOperation(value = "批量删除") + public String batchDeleteResource(@RequestParam("ids") String ids, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int delete = materialPropertyService.batchDeleteMaterialProperty(ids, request); + return returnStr(objectMap, delete); + } + + @GetMapping(value = "/checkIsNameExist") + @ApiOperation(value = "检查名称是否存在") + public String checkIsNameExist(@RequestParam Long id, @RequestParam(value ="name", required = false) String name, + HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int exist = materialPropertyService.checkIsNameExist(id, name); + if(exist > 0) { + objectMap.put("status", true); + } else { + objectMap.put("status", false); + } + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } + + @GetMapping(value = "/getAllList") + @ApiOperation(value = "查询全部商品扩展字段信息") + public BaseResponseInfo getAllList(HttpServletRequest request) throws Exception{ + BaseResponseInfo res = new BaseResponseInfo(); + try { + List list = materialPropertyService.getMaterialProperty(); + res.code = 200; + res.data = list; + } catch(Exception e){ + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/controller/MsgController.java b/smtERP-boot/src/main/java/com/reallin/smt/controller/MsgController.java new file mode 100644 index 0000000..7b85332 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/controller/MsgController.java @@ -0,0 +1,232 @@ +package com.reallin.smt.controller; + +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.base.BaseController; +import com.reallin.smt.base.TableDataInfo; +import com.reallin.smt.datasource.entities.Msg; +import com.reallin.smt.datasource.entities.MsgEx; +import com.reallin.smt.service.MsgService; +import com.reallin.smt.utils.BaseResponseInfo; +import com.reallin.smt.utils.Constants; +import com.reallin.smt.utils.ErpInfo; +import com.reallin.smt.utils.StringUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static com.reallin.smt.utils.ResponseJsonUtil.returnJson; +import static com.reallin.smt.utils.ResponseJsonUtil.returnStr; + +/** + * @author ji sheng hua jshERP + */ +@RestController +@RequestMapping(value = "/msg") +@Api(tags = {"消息管理"}) +public class MsgController extends BaseController { + private Logger logger = LoggerFactory.getLogger(MsgController.class); + + @Resource + private MsgService msgService; + + @GetMapping(value = "/info") + @ApiOperation(value = "根据id获取信息") + public String getList(@RequestParam("id") Long id, + HttpServletRequest request) throws Exception { + Msg msg = msgService.getMsg(id); + Map objectMap = new HashMap<>(); + if(msg != null) { + objectMap.put("info", msg); + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } + + @GetMapping(value = "/list") + @ApiOperation(value = "获取信息列表") + public TableDataInfo getList(@RequestParam(value = Constants.SEARCH, required = false) String search, + HttpServletRequest request)throws Exception { + String name = StringUtil.getInfo(search, "name"); + List list = msgService.select(name); + return getDataTable(list); + } + + @PostMapping(value = "/add") + @ApiOperation(value = "新增") + public String addResource(@RequestBody JSONObject obj, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int insert = msgService.insertMsg(obj, request); + return returnStr(objectMap, insert); + } + + @PutMapping(value = "/update") + @ApiOperation(value = "修改") + public String updateResource(@RequestBody JSONObject obj, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int update = msgService.updateMsg(obj, request); + return returnStr(objectMap, update); + } + + @DeleteMapping(value = "/delete") + @ApiOperation(value = "删除") + public String deleteResource(@RequestParam("id") Long id, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int delete = msgService.deleteMsg(id, request); + return returnStr(objectMap, delete); + } + + @DeleteMapping(value = "/deleteBatch") + @ApiOperation(value = "批量删除") + public String batchDeleteResource(@RequestParam("ids") String ids, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int delete = msgService.batchDeleteMsg(ids, request); + return returnStr(objectMap, delete); + } + + @GetMapping(value = "/checkIsNameExist") + @ApiOperation(value = "检查名称是否存在") + public String checkIsNameExist(@RequestParam Long id, @RequestParam(value ="name", required = false) String name, + HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int exist = msgService.checkIsNameExist(id, name); + if(exist > 0) { + objectMap.put("status", true); + } else { + objectMap.put("status", false); + } + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } + + /** + * 根据状态查询消息 + * @param status + * @param request + * @return + * @throws Exception + */ + @GetMapping("/getMsgByStatus") + @ApiOperation(value = "根据状态查询消息") + public BaseResponseInfo getMsgByStatus(@RequestParam("status") String status, + HttpServletRequest request)throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + try { + List list = msgService.getMsgByStatus(status); + res.code = 200; + res.data = list; + } catch(Exception e){ + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 批量更新状态 + * @param jsonObject + * @param request + * @return + * @throws Exception + */ + @PostMapping("/batchUpdateStatus") + @ApiOperation(value = "批量更新状态") + public BaseResponseInfo batchUpdateStatus(@RequestBody JSONObject jsonObject, + HttpServletRequest request)throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + try { + String ids = jsonObject.getString("ids"); + String status = jsonObject.getString("status"); + msgService.batchUpdateStatus(ids, status); + res.code = 200; + res.data = "更新成功"; + } catch(Exception e){ + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 根据状态查询数量 + * @param status + * @param request + * @return + * @throws Exception + */ + @GetMapping("/getMsgCountByStatus") + @ApiOperation(value = "根据状态查询数量") + public BaseResponseInfo getMsgCountByStatus(@RequestParam("status") String status, + HttpServletRequest request)throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + try { + Map map = new HashMap(); + Long count = msgService.getMsgCountByStatus(status); + map.put("count", count); + res.code = 200; + res.data = map; + } catch(Exception e){ + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 根据类型查询数量 + * @param type + * @param request + * @return + * @throws Exception + */ + @GetMapping("/getMsgCountByType") + @ApiOperation(value = "根据类型查询数量") + public BaseResponseInfo getMsgCountByType(@RequestParam("type") String type, + HttpServletRequest request)throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + try { + Map map = new HashMap<>(); + Integer count = msgService.getMsgCountByType(type); + map.put("count", count); + res.code = 200; + res.data = map; + } catch(Exception e){ + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 全部设置未已读 + * @param request + * @return + * @throws Exception + */ + @PostMapping("/readAllMsg") + @ApiOperation(value = "全部设置未已读") + public BaseResponseInfo readAllMsg(HttpServletRequest request)throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + try { + msgService.readAllMsg(); + res.code = 200; + res.data = "操作成功!"; + } catch(Exception e){ + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/controller/OrganizationController.java b/smtERP-boot/src/main/java/com/reallin/smt/controller/OrganizationController.java new file mode 100644 index 0000000..5e31a4a --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/controller/OrganizationController.java @@ -0,0 +1,187 @@ +package com.reallin.smt.controller; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.constants.BusinessConstants; +import com.reallin.smt.datasource.entities.Organization; +import com.reallin.smt.datasource.vo.TreeNode; +import com.reallin.smt.service.OrganizationService; +import com.reallin.smt.service.UserService; +import com.reallin.smt.utils.BaseResponseInfo; +import com.reallin.smt.utils.ErpInfo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.text.SimpleDateFormat; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static com.reallin.smt.utils.ResponseJsonUtil.returnJson; +import static com.reallin.smt.utils.ResponseJsonUtil.returnStr; + +/** + * create by: jsh + */ +@RestController +@RequestMapping(value = "/organization") +@Api(tags = {"部门管理"}) +public class OrganizationController { + private Logger logger = LoggerFactory.getLogger(OrganizationController.class); + + @Resource + private OrganizationService organizationService; + + @Resource + private UserService userService; + + @GetMapping(value = "/info") + @ApiOperation(value = "根据id获取信息") + public String getList(@RequestParam("id") Long id, + HttpServletRequest request) throws Exception { + Organization organization = organizationService.getOrganization(id); + Map objectMap = new HashMap<>(); + if(organization != null) { + objectMap.put("info", organization); + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } + + @PostMapping(value = "/add") + @ApiOperation(value = "新增") + public String addResource(@RequestBody JSONObject obj, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int insert = organizationService.insertOrganization(obj, request); + return returnStr(objectMap, insert); + } + + @PutMapping(value = "/update") + @ApiOperation(value = "修改") + public String updateResource(@RequestBody JSONObject obj, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int update = organizationService.updateOrganization(obj, request); + return returnStr(objectMap, update); + } + + @DeleteMapping(value = "/delete") + @ApiOperation(value = "删除") + public String deleteResource(@RequestParam("id") Long id, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int delete = organizationService.deleteOrganization(id, request); + return returnStr(objectMap, delete); + } + + @DeleteMapping(value = "/deleteBatch") + @ApiOperation(value = "批量删除") + public String batchDeleteResource(@RequestParam("ids") String ids, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int delete = organizationService.batchDeleteOrganization(ids, request); + return returnStr(objectMap, delete); + } + + @GetMapping(value = "/checkIsNameExist") + @ApiOperation(value = "检查名称是否存在") + public String checkIsNameExist(@RequestParam Long id, @RequestParam(value ="name", required = false) String name, + HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int exist = organizationService.checkIsNameExist(id, name); + if(exist > 0) { + objectMap.put("status", true); + } else { + objectMap.put("status", false); + } + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } + + /** + * 根据id来查询部门信息 + * @param id + * @param request + * @return + */ + @GetMapping(value = "/findById") + @ApiOperation(value = "根据id来查询部门信息") + public BaseResponseInfo findById(@RequestParam("id") Long id, HttpServletRequest request) throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + try { + List dataList = organizationService.findById(id); + JSONObject outer = new JSONObject(); + if (null != dataList) { + for (Organization org : dataList) { + outer.put("id", org.getId()); + outer.put("orgAbr", org.getOrgAbr()); + outer.put("parentId", org.getParentId()); + List dataParentList = organizationService.findByParentId(org.getParentId()); + if(dataParentList!=null&&dataParentList.size()>0){ + //父级部门名称显示简称 + outer.put("orgParentName", dataParentList.get(0).getOrgAbr()); + } + outer.put("orgNo", org.getOrgNo()); + outer.put("sort", org.getSort()); + outer.put("remark", org.getRemark()); + } + } + res.code = 200; + res.data = outer; + } catch(Exception e){ + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 获取部门树数据 + * @return + * @throws Exception + */ + @GetMapping(value = "/getOrganizationTree") + @ApiOperation(value = "获取部门树数据") + public JSONArray getOrganizationTree(@RequestParam("id") Long id) throws Exception{ + JSONArray arr=new JSONArray(); + List organizationTree= organizationService.getOrganizationTree(id); + if(organizationTree!=null&&organizationTree.size()>0){ + for(TreeNode node:organizationTree){ + String str=JSON.toJSONString(node); + JSONObject obj=JSON.parseObject(str); + arr.add(obj); + } + } + return arr; + } + + /** + * 根据用户获取全部部门树 + * @param request + * @return + * @throws Exception + */ + @GetMapping(value = "/getAllOrganizationTreeByUser") + @ApiOperation(value = "根据用户获取全部部门树") + public JSONArray getAllOrganizationTreeByUser(HttpServletRequest request) throws Exception{ + JSONArray arr = new JSONArray(); + Long userId = userService.getUserId(request); + String roleType = userService.getRoleTypeByUserId(userId).getType(); + if(BusinessConstants.ROLE_TYPE_PUBLIC.equals(roleType)) { + List organizationTree = organizationService.getOrganizationTree(null); + if(organizationTree!=null && organizationTree.size()>0){ + for(TreeNode node: organizationTree){ + String str = JSON.toJSONString(node); + JSONObject obj = JSON.parseObject(str); + arr.add(obj); + } + } + } + return arr; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/controller/PackBomController.java b/smtERP-boot/src/main/java/com/reallin/smt/controller/PackBomController.java new file mode 100644 index 0000000..1eac6e1 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/controller/PackBomController.java @@ -0,0 +1,143 @@ +package com.reallin.smt.controller; + +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.base.BaseController; +import com.reallin.smt.base.TableDataInfo; +import com.reallin.smt.datasource.entities.PackBom; +import com.reallin.smt.datasource.vo.PackBomVo4List; +import com.reallin.smt.service.PackBomService; +import com.reallin.smt.utils.BaseResponseInfo; +import com.reallin.smt.utils.Constants; +import com.reallin.smt.utils.ErpInfo; +import com.reallin.smt.utils.StringUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static com.reallin.smt.utils.ResponseJsonUtil.returnJson; +import static com.reallin.smt.utils.ResponseJsonUtil.returnStr; + +/** + * 生产方案管理 + */ +@RestController +@RequestMapping(value = "/packBom") +@Api(tags = {"生产方案"}) +public class PackBomController extends BaseController { + + @Resource + private PackBomService packBomService; + + @GetMapping(value = "/list") + @ApiOperation(value = "生产方案列表") + public TableDataInfo getList(@RequestParam(value = Constants.SEARCH, required = false) String search, + HttpServletRequest request) throws Exception { + String bomNumber = StringUtil.getInfo(search, "bomNumber"); + String bomName = StringUtil.getInfo(search, "bomName"); + String outputMaterialParam = StringUtil.getInfo(search, "outputMaterialParam"); + String enabledStr = StringUtil.getInfo(search, "enabled"); + Boolean enabled = StringUtil.isEmpty(enabledStr) ? null : Boolean.parseBoolean(enabledStr); + List list = packBomService.select(bomNumber, bomName, outputMaterialParam, enabled); + return getDataTable(list); + } + + @PostMapping(value = "/addPackBom") + @ApiOperation(value = "新增生产方案") + public String addPackBom(@RequestBody JSONObject obj, HttpServletRequest request) throws Exception { + Map objectMap = new HashMap<>(); + int insert = packBomService.addPackBom(obj, request); + return returnStr(objectMap, insert); + } + + @PutMapping(value = "/updatePackBom") + @ApiOperation(value = "修改生产方案") + public String updatePackBom(@RequestBody JSONObject obj, HttpServletRequest request) throws Exception { + Map objectMap = new HashMap<>(); + int update = packBomService.updatePackBom(obj, request); + return returnStr(objectMap, update); + } + + @DeleteMapping(value = "/deletePackBom") + @ApiOperation(value = "删除生产方案") + public String deletePackBom(@RequestParam("id") Long id, HttpServletRequest request) throws Exception { + Map objectMap = new HashMap<>(); + int delete = packBomService.deletePackBom(id, request); + return returnStr(objectMap, delete); + } + + @DeleteMapping(value = "/batchDeletePackBom") + @ApiOperation(value = "批量删除生产方案") + public String batchDeletePackBom(@RequestParam("ids") String ids, HttpServletRequest request) throws Exception { + Map objectMap = new HashMap<>(); + int delete = packBomService.batchDeletePackBom(ids, request); + return returnStr(objectMap, delete); + } + + @GetMapping(value = "/getPackBomDetail") + @ApiOperation(value = "获取生产方案详情") + public BaseResponseInfo getPackBomDetail(@RequestParam("id") Long id, HttpServletRequest request) throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + try { + JSONObject detail = packBomService.getPackBomDetail(id); + res.code = 200; + res.data = detail; + } catch (Exception e) { + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + @PostMapping(value = "/batchSetStatus") + @ApiOperation(value = "批量设置启用状态") + public String batchSetStatus(@RequestBody JSONObject jsonObject, HttpServletRequest request) throws Exception { + Boolean status = jsonObject.getBoolean("status"); + String ids = jsonObject.getString("ids"); + Map objectMap = new HashMap<>(); + int res = packBomService.batchSetStatus(status, ids); + if (res > 0) { + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } + + @GetMapping(value = "/getBomListByOutput") + @ApiOperation(value = "根据成品查询启用的生产方案列表") + public BaseResponseInfo getBomListByOutput(@RequestParam("outputMaterialId") Long outputMaterialId, + HttpServletRequest request) throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + try { + List list = packBomService.getBomListByOutput(outputMaterialId); + res.code = 200; + res.data = list; + } catch (Exception e) { + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + @GetMapping(value = "/checkIsNumberExist") + @ApiOperation(value = "检查编号是否存在") + public String checkIsNumberExist(@RequestParam Long id, + @RequestParam(value = "bomNumber", required = false) String bomNumber, + HttpServletRequest request) throws Exception { + Map objectMap = new HashMap<>(); + int exist = packBomService.checkNumberExist(id, bomNumber); + if (exist > 0) { + objectMap.put("status", true); + } else { + objectMap.put("status", false); + } + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/controller/PersonController.java b/smtERP-boot/src/main/java/com/reallin/smt/controller/PersonController.java new file mode 100644 index 0000000..b1d8e7b --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/controller/PersonController.java @@ -0,0 +1,241 @@ +package com.reallin.smt.controller; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.base.BaseController; +import com.reallin.smt.base.TableDataInfo; +import com.reallin.smt.datasource.entities.Person; +import com.reallin.smt.service.PersonService; +import com.reallin.smt.utils.BaseResponseInfo; +import com.reallin.smt.utils.Constants; +import com.reallin.smt.utils.ErpInfo; +import com.reallin.smt.utils.StringUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static com.reallin.smt.utils.ResponseJsonUtil.returnJson; +import static com.reallin.smt.utils.ResponseJsonUtil.returnStr; + +/** + * @author ji|sheng|hua SMT + */ +@RestController +@RequestMapping(value = "/person") +@Api(tags = {"经手人管理"}) +public class PersonController extends BaseController { + private Logger logger = LoggerFactory.getLogger(PersonController.class); + + @Resource + private PersonService personService; + + + @GetMapping(value = "/info") + @ApiOperation(value = "根据id获取信息") + public String getList(@RequestParam("id") Long id, + HttpServletRequest request) throws Exception { + Person person = personService.getPerson(id); + Map objectMap = new HashMap<>(); + if(person != null) { + objectMap.put("info", person); + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } + + @GetMapping(value = "/list") + @ApiOperation(value = "获取信息列表") + public TableDataInfo getList(@RequestParam(value = Constants.SEARCH, required = false) String search, + HttpServletRequest request)throws Exception { + String name = StringUtil.getInfo(search, "name"); + String type = StringUtil.getInfo(search, "type"); + List list = personService.select(name, type); + return getDataTable(list); + } + + @PostMapping(value = "/add") + @ApiOperation(value = "新增") + public String addResource(@RequestBody JSONObject obj, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int insert = personService.insertPerson(obj, request); + return returnStr(objectMap, insert); + } + + @PutMapping(value = "/update") + @ApiOperation(value = "修改") + public String updateResource(@RequestBody JSONObject obj, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int update = personService.updatePerson(obj, request); + return returnStr(objectMap, update); + } + + @DeleteMapping(value = "/delete") + @ApiOperation(value = "删除") + public String deleteResource(@RequestParam("id") Long id, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int delete = personService.deletePerson(id, request); + return returnStr(objectMap, delete); + } + + @DeleteMapping(value = "/deleteBatch") + @ApiOperation(value = "批量删除") + public String batchDeleteResource(@RequestParam("ids") String ids, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int delete = personService.batchDeletePerson(ids, request); + return returnStr(objectMap, delete); + } + + @GetMapping(value = "/checkIsNameExist") + @ApiOperation(value = "检查名称是否存在") + public String checkIsNameExist(@RequestParam Long id, @RequestParam(value ="name", required = false) String name, + HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int exist = personService.checkIsNameExist(id, name); + if(exist > 0) { + objectMap.put("status", true); + } else { + objectMap.put("status", false); + } + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } + + /** + * 全部数据列表 + * @param request + * @return + * @throws Exception + */ + @GetMapping(value = "/getAllList") + @ApiOperation(value = "全部数据列表") + public BaseResponseInfo getAllList(HttpServletRequest request)throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + Map map = new HashMap(); + try { + List personList = personService.getPerson(); + map.put("personList", personList); + res.code = 200; + res.data = personList; + } catch(Exception e){ + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 根据Id获取经手人信息 + * @param personIds + * @param request + * @return + */ + @GetMapping(value = "/getPersonByIds") + @ApiOperation(value = "根据Id获取经手人信息") + public BaseResponseInfo getPersonByIds(@RequestParam("personIds") String personIds, + HttpServletRequest request)throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + Map map = new HashMap(); + try { + Map personMap = personService.getPersonMap(); + String names = personService.getPersonByMapAndIds(personMap, personIds); + map.put("names", names); + res.code = 200; + res.data = map; + } catch(Exception e){ + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 根据类型获取经手人信息 + * @param type + * @param request + * @return + */ + @GetMapping(value = "/getPersonByType") + @ApiOperation(value = "根据类型获取经手人信息") + public BaseResponseInfo getPersonByType(@RequestParam("type") String type, + HttpServletRequest request)throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + Map map = new HashMap(); + try { + List personList = personService.getPersonByType(type); + map.put("personList", personList); + res.code = 200; + res.data = map; + } catch(Exception e){ + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 根据类型获取经手人信息 1-销售员,2-仓管员,3-财务员 + * @param typeNum + * @param request + * @return + */ + @GetMapping(value = "/getPersonByNumType") + @ApiOperation(value = "根据类型获取经手人信息1-销售员,2-仓管员,3-财务员") + public JSONArray getPersonByNumType(@RequestParam("type") String typeNum, + HttpServletRequest request)throws Exception { + JSONArray dataArray = new JSONArray(); + try { + String type = ""; + if (typeNum.equals("1")) { + type = "销售员"; + } else if (typeNum.equals("2")) { + type = "仓管员"; + } else if (typeNum.equals("3")) { + type = "财务员"; + } + List personList = personService.getPersonByType(type); + if (null != personList) { + for (Person person : personList) { + JSONObject item = new JSONObject(); + item.put("value", person.getId().toString()); + item.put("text", person.getName()); + dataArray.add(item); + } + } + } catch(Exception e){ + logger.error(e.getMessage(), e); + } + return dataArray; + } + + /** + * 批量设置状态-启用或者禁用 + * @param jsonObject + * @param request + * @return + */ + @PostMapping(value = "/batchSetStatus") + @ApiOperation(value = "批量设置状态") + public String batchSetStatus(@RequestBody JSONObject jsonObject, + HttpServletRequest request)throws Exception { + Boolean status = jsonObject.getBoolean("status"); + String ids = jsonObject.getString("ids"); + Map objectMap = new HashMap<>(); + int res = personService.batchSetStatus(status, ids); + if(res > 0) { + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/controller/PlatformConfigController.java b/smtERP-boot/src/main/java/com/reallin/smt/controller/PlatformConfigController.java new file mode 100644 index 0000000..be649a5 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/controller/PlatformConfigController.java @@ -0,0 +1,237 @@ +package com.reallin.smt.controller; + +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.base.BaseController; +import com.reallin.smt.base.TableDataInfo; +import com.reallin.smt.datasource.entities.PlatformConfig; +import com.reallin.smt.service.PlatformConfigService; +import com.reallin.smt.utils.BaseResponseInfo; +import com.reallin.smt.utils.Constants; +import com.reallin.smt.utils.ErpInfo; +import com.reallin.smt.utils.StringUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static com.reallin.smt.utils.ResponseJsonUtil.returnJson; +import static com.reallin.smt.utils.ResponseJsonUtil.returnStr; + +/** + * @author ji|sheng|hua SMT QQ7827-18920 + */ +@RestController +@RequestMapping(value = "/platformConfig") +@Api(tags = {"平台参数"}) +public class PlatformConfigController extends BaseController { + private Logger logger = LoggerFactory.getLogger(PlatformConfigController.class); + + @Resource + private PlatformConfigService platformConfigService; + + @GetMapping(value = "/info") + @ApiOperation(value = "根据id获取信息") + public String getList(@RequestParam("id") Long id, + HttpServletRequest request) throws Exception { + PlatformConfig platformConfig = platformConfigService.getPlatformConfig(id); + Map objectMap = new HashMap<>(); + if(platformConfig != null) { + objectMap.put("info", platformConfig); + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } + + @GetMapping(value = "/list") + @ApiOperation(value = "获取信息列表") + public TableDataInfo getList(@RequestParam(value = Constants.SEARCH, required = false) String search, + HttpServletRequest request)throws Exception { + String platformKey = StringUtil.getInfo(search, "platformKey"); + List list = platformConfigService.select(platformKey); + return getDataTable(list); + } + + @PostMapping(value = "/add") + @ApiOperation(value = "新增") + public String addResource(@RequestBody JSONObject obj, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int insert = platformConfigService.insertPlatformConfig(obj, request); + return returnStr(objectMap, insert); + } + + @PutMapping(value = "/update") + @ApiOperation(value = "修改") + public String updateResource(@RequestBody JSONObject obj, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int update = platformConfigService.updatePlatformConfig(obj, request); + return returnStr(objectMap, update); + } + + @DeleteMapping(value = "/delete") + @ApiOperation(value = "删除") + public String deleteResource(@RequestParam("id") Long id, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int delete = platformConfigService.deletePlatformConfig(id, request); + return returnStr(objectMap, delete); + } + + @DeleteMapping(value = "/deleteBatch") + @ApiOperation(value = "批量删除") + public String batchDeleteResource(@RequestParam("ids") String ids, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int delete = platformConfigService.batchDeletePlatformConfig(ids, request); + return returnStr(objectMap, delete); + } + + /** + * 获取平台名称 + * @param request + * @return + */ + @GetMapping(value = "/getPlatform/name") + @ApiOperation(value = "获取平台名称") + public String getPlatformName(HttpServletRequest request)throws Exception { + String res; + try { + String platformKey = "platform_name"; + PlatformConfig platformConfig = platformConfigService.getInfoByKey(platformKey); + res = platformConfig.getPlatformValue(); + } catch(Exception e){ + logger.error(e.getMessage(), e); + res = "ERP系统"; + } + return res; + } + + /** + * 获取官方网站地址 + * @param request + * @return + */ + @GetMapping(value = "/getPlatform/url") + @ApiOperation(value = "获取官方网站地址") + public String getPlatformUrl(HttpServletRequest request)throws Exception { + String res; + try { + String platformKey = "platform_url"; + PlatformConfig platformConfig = platformConfigService.getInfoByKey(platformKey); + res = platformConfig.getPlatformValue(); + } catch(Exception e){ + logger.error(e.getMessage(), e); + res = "#"; + } + return res; + } + + /** + * 获取是否开启注册 + * @param request + * @return + */ + @GetMapping(value = "/getPlatform/registerFlag") + @ApiOperation(value = "获取是否开启注册") + public String getPlatformRegisterFlag(HttpServletRequest request)throws Exception { + String res; + try { + String platformKey = "register_flag"; + PlatformConfig platformConfig = platformConfigService.getInfoByKey(platformKey); + res = platformConfig.getPlatformValue(); + } catch(Exception e){ + logger.error(e.getMessage(), e); + res = "#"; + } + return res; + } + + /** + * 获取是否开启验证码 + * @param request + * @return + */ + @GetMapping(value = "/getPlatform/checkcodeFlag") + @ApiOperation(value = "获取是否开启验证码") + public String getPlatformCheckcodeFlag(HttpServletRequest request)throws Exception { + String res; + try { + String platformKey = "checkcode_flag"; + PlatformConfig platformConfig = platformConfigService.getInfoByKey(platformKey); + res = platformConfig.getPlatformValue(); + } catch(Exception e){ + logger.error(e.getMessage(), e); + res = "#"; + } + return res; + } + + /** + * 获取APP版本 + * @param request + * @return + */ + @GetMapping(value = "/getPlatform/appVersion") + @ApiOperation(value = "获取APP版本") + public String getPlatformAppVersion(HttpServletRequest request)throws Exception { + String res; + try { + String platformKey = "app_version"; + PlatformConfig platformConfig = platformConfigService.getInfoByKey(platformKey); + res = platformConfig.getPlatformValue(); + } catch(Exception e){ + logger.error(e.getMessage(), e); + res = "#"; + } + return res; + } + + /** + * 根据platformKey更新platformValue + * @param object + * @param request + * @return + */ + @PostMapping(value = "/updatePlatformConfigByKey") + @ApiOperation(value = "根据platformKey更新platformValue") + public String updatePlatformConfigByKey(@RequestBody JSONObject object, + HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + String platformKey = object.getString("platformKey"); + String platformValue = object.getString("platformValue"); + int res = platformConfigService.updatePlatformConfigByKey(platformKey, platformValue); + if(res > 0) { + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } + + /** + * 根据platformKey查询信息 + * @param platformKey + * @param request + * @return + */ + @GetMapping(value = "/getInfoByKey") + @ApiOperation(value = "根据platformKey查询信息") + public BaseResponseInfo getInfoByKey(@RequestParam("platformKey") String platformKey, + HttpServletRequest request)throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + try { + PlatformConfig platformConfig = platformConfigService.getInfoByKey(platformKey); + res.code = 200; + res.data = platformConfig; + } catch(Exception e){ + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/controller/PluginController.java b/smtERP-boot/src/main/java/com/reallin/smt/controller/PluginController.java new file mode 100644 index 0000000..d7c80fb --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/controller/PluginController.java @@ -0,0 +1,368 @@ +package com.reallin.smt.controller; + +import com.gitee.starblues.integration.application.PluginApplication; +import com.gitee.starblues.integration.operator.PluginOperator; +import com.gitee.starblues.integration.operator.module.PluginInfo; +import com.reallin.smt.constants.BusinessConstants; +import com.reallin.smt.datasource.entities.User; +import com.reallin.smt.service.UserService; +import com.reallin.smt.utils.BaseResponseInfo; +import com.reallin.smt.utils.ComputerInfo; +import com.reallin.smt.utils.StringUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.DigestUtils; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.nio.file.Paths; +import java.util.*; + +/** + * 插件jar 包测试功能 + * @author jishenghua + * @version 1.0 + */ +@RestController +@RequestMapping("/plugin") +@Api(tags = {"插件管理"}) +public class PluginController { + private Logger logger = LoggerFactory.getLogger(PluginController.class); + + @Resource + private UserService userService; + + private final PluginOperator pluginOperator; + + @Autowired + public PluginController(PluginApplication pluginApplication) { + this.pluginOperator = pluginApplication.getPluginOperator(); + } + /** + * 获取插件信息 + * @return 返回插件信息 + */ + @GetMapping(value = "/list") + @ApiOperation(value = "获取插件信息") + public BaseResponseInfo getPluginInfo(@RequestParam(value = "name",required = false) String name, + @RequestParam("currentPage") Integer currentPage, + @RequestParam("pageSize") Integer pageSize, + HttpServletRequest request) throws Exception{ + BaseResponseInfo res = new BaseResponseInfo(); + Map map = new HashMap(); + try { + List resList = new ArrayList<>(); + User userInfo = userService.getCurrentUser(); + if(BusinessConstants.DEFAULT_MANAGER.equals(userInfo.getLoginName())) { + List list = pluginOperator.getPluginInfo(); + if (StringUtil.isEmpty(name)) { + resList = list; + } else { + for (PluginInfo pi : list) { + String desc = pi.getPluginDescriptor().getPluginDescription(); + if (desc.contains(name)) { + resList.add(pi); + } + } + } + } + map.put("rows", resList); + map.put("total", resList.size()); + res.code = 200; + res.data = map; + } catch(Exception e){ + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 获取插件jar文件名 + * @return 获取插件文件名。只在生产环境显示 + */ + @GetMapping("/files") + @ApiOperation(value = "获取插件jar文件名") + public Set getPluginFilePaths(){ + try { + User userInfo = userService.getCurrentUser(); + if(BusinessConstants.DEFAULT_MANAGER.equals(userInfo.getLoginName())) { + return pluginOperator.getPluginFilePaths(); + } else { + return null; + } + } catch (Exception e) { + logger.error(e.getMessage(), e); + return null; + } + } + + + /** + * 根据插件id停止插件 + * @param id 插件id + * @return 返回操作结果 + */ + @PostMapping("/stop/{id}") + @ApiOperation(value = "根据插件id停止插件") + public BaseResponseInfo stop(@PathVariable("id") String id){ + BaseResponseInfo res = new BaseResponseInfo(); + Map map = new HashMap(); + String message = ""; + try { + User userInfo = userService.getCurrentUser(); + if(BusinessConstants.DEFAULT_MANAGER.equals(userInfo.getLoginName())) { + if (pluginOperator.stop(id)) { + message = "plugin '" + id + "' stop success"; + } else { + message = "plugin '" + id + "' stop failure"; + } + } else { + message = "power is limit"; + } + map.put("message", message); + res.code = 200; + res.data = map; + } catch (Exception e) { + logger.error(e.getMessage(), e); + map.put("message", "plugin '" + id +"' stop failure. " + e.getMessage()); + res.code = 500; + res.data = map; + } + return res; + } + + /** + * 根据插件id启动插件 + * @param id 插件id + * @return 返回操作结果 + */ + @PostMapping("/start/{id}") + @ApiOperation(value = "根据插件id启动插件") + public BaseResponseInfo start(@PathVariable("id") String id){ + BaseResponseInfo res = new BaseResponseInfo(); + Map map = new HashMap(); + String message = ""; + try { + User userInfo = userService.getCurrentUser(); + if(BusinessConstants.DEFAULT_MANAGER.equals(userInfo.getLoginName())) { + if (pluginOperator.start(id)) { + message = "plugin '" + id + "' start success"; + } else { + message = "plugin '" + id + "' start failure"; + } + } else { + message = "power is limit"; + } + map.put("message", message); + res.code = 200; + res.data = map; + } catch (Exception e) { + logger.error(e.getMessage(), e); + map.put("message", "plugin '" + id +"' start failure. " + e.getMessage()); + res.code = 500; + res.data = map; + } + return res; + } + + + /** + * 根据插件id卸载插件 + * @param id 插件id + * @return 返回操作结果 + */ + @PostMapping("/uninstall/{id}") + @ApiOperation(value = "根据插件id卸载插件") + public BaseResponseInfo uninstall(@PathVariable("id") String id){ + BaseResponseInfo res = new BaseResponseInfo(); + Map map = new HashMap(); + String message = ""; + try { + User userInfo = userService.getCurrentUser(); + if(BusinessConstants.DEFAULT_MANAGER.equals(userInfo.getLoginName())) { + if (pluginOperator.uninstall(id, true)) { + message = "plugin '" + id + "' uninstall success"; + } else { + message = "plugin '" + id + "' uninstall failure"; + } + } else { + message = "power is limit"; + } + map.put("message", message); + res.code = 200; + res.data = map; + } catch (Exception e) { + logger.error(e.getMessage(), e); + map.put("message", "plugin '" + id +"' uninstall failure. " + e.getMessage()); + res.code = 500; + res.data = map; + } + return res; + } + + + /** + * 根据插件路径安装插件。该插件jar必须在服务器上存在。注意: 该操作只适用于生产环境 + * @param path 插件路径名称 + * @return 操作结果 + */ + @PostMapping("/installByPath") + @ApiOperation(value = "根据插件路径安装插件") + public String install(@RequestParam("path") String path){ + try { + User userInfo = userService.getCurrentUser(); + if(BusinessConstants.DEFAULT_MANAGER.equals(userInfo.getLoginName())) { + if (pluginOperator.install(Paths.get(path))) { + return "installByPath success"; + } else { + return "installByPath failure"; + } + } else { + return "installByPath failure"; + } + } catch (Exception e) { + logger.error(e.getMessage(), e); + return "installByPath failure : " + e.getMessage(); + } + } + + + /** + * 上传并安装插件。注意: 该操作只适用于生产环境 + * @param file 上传文件 multipartFile + * @return 操作结果 + */ + @PostMapping("/uploadInstallPluginJar") + @ApiOperation(value = "上传并安装插件") + public BaseResponseInfo install(MultipartFile file, HttpServletRequest request, HttpServletResponse response){ + BaseResponseInfo res = new BaseResponseInfo(); + try { + User userInfo = userService.getCurrentUser(); + if(BusinessConstants.DEFAULT_MANAGER.equals(userInfo.getLoginName())) { + pluginOperator.uploadPluginAndStart(file); + res.code = 200; + res.data = "导入成功"; + } else { + res.code = 500; + res.data = "抱歉,无操作权限!"; + } + } catch(Exception e){ + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "导入失败"; + } + return res; + } + + /** + * 上传插件的配置文件。注意: 该操作只适用于生产环境 + * @param multipartFile 上传文件 multipartFile + * @return 操作结果 + */ + @PostMapping("/uploadPluginConfigFile") + @ApiOperation(value = "上传插件的配置文件") + public String uploadConfig(@RequestParam("configFile") MultipartFile multipartFile){ + try { + User userInfo = userService.getCurrentUser(); + if(BusinessConstants.DEFAULT_MANAGER.equals(userInfo.getLoginName())) { + if (pluginOperator.uploadConfigFile(multipartFile)) { + return "uploadConfig success"; + } else { + return "uploadConfig failure"; + } + } else { + return "installByPath failure"; + } + } catch (Exception e) { + logger.error(e.getMessage(), e); + return "uploadConfig failure : " + e.getMessage(); + } + } + + + /** + * 备份插件。注意: 该操作只适用于生产环境 + * @param pluginId 插件id + * @return 操作结果 + */ + @PostMapping("/back/{pluginId}") + @ApiOperation(value = "备份插件") + public String backupPlugin(@PathVariable("pluginId") String pluginId){ + try { + User userInfo = userService.getCurrentUser(); + if(BusinessConstants.DEFAULT_MANAGER.equals(userInfo.getLoginName())) { + if (pluginOperator.backupPlugin(pluginId, "testBack")) { + return "backupPlugin success"; + } else { + return "backupPlugin failure"; + } + } else { + return "backupPlugin failure"; + } + } catch (Exception e) { + logger.error(e.getMessage(), e); + return "backupPlugin failure : " + e.getMessage(); + } + } + + /** + * 获取加密后的mac + * @return + */ + @GetMapping("/getMacWithSecret") + @ApiOperation(value = "获取加密后的mac") + public BaseResponseInfo getMacWithSecret(){ + BaseResponseInfo res = new BaseResponseInfo(); + try { + String mac = ComputerInfo.getMacAddress(); + res.code = 200; + res.data = DigestUtils.md5DigestAsHex(mac.getBytes()); + } catch (Exception e) { + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 根据插件标识判断是否存在 + * @param pluginIds 多个用逗号隔开 + * @return + */ + @GetMapping("/checkByPluginId") + @ApiOperation(value = "根据插件标识判断是否存在") + public BaseResponseInfo checkByTag(@RequestParam("pluginIds") String pluginIds){ + BaseResponseInfo res = new BaseResponseInfo(); + try { + boolean data = false; + if(StringUtil.isNotEmpty(pluginIds)) { + String[] pluginIdList = pluginIds.split(","); + List list = pluginOperator.getPluginInfo(); + for (PluginInfo pi : list) { + String info = pi.getPluginDescriptor().getPluginId(); + for (int i = 0; i < pluginIdList.length; i++) { + if (pluginIdList[i].equals(info)) { + data = true; + } + } + } + } + res.code = 200; + res.data = data; + } catch (Exception e) { + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/controller/ProductionOrderController.java b/smtERP-boot/src/main/java/com/reallin/smt/controller/ProductionOrderController.java new file mode 100644 index 0000000..284ae69 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/controller/ProductionOrderController.java @@ -0,0 +1,142 @@ +package com.reallin.smt.controller; + +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.base.BaseController; +import com.reallin.smt.base.TableDataInfo; +import com.reallin.smt.datasource.vo.ProductionOrderVo4List; +import com.reallin.smt.service.ProductionOrderService; +import com.reallin.smt.utils.BaseResponseInfo; +import com.reallin.smt.utils.Constants; +import com.reallin.smt.utils.ErpInfo; +import com.reallin.smt.utils.StringUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static com.reallin.smt.utils.ResponseJsonUtil.returnJson; +import static com.reallin.smt.utils.ResponseJsonUtil.returnStr; + +/** + * 生产工单管理 + */ +@RestController +@RequestMapping(value = "/productionOrder") +@Api(tags = {"生产工单"}) +public class ProductionOrderController extends BaseController { + + @Resource + private ProductionOrderService productionOrderService; + + @GetMapping(value = "/list") + @ApiOperation(value = "生产工单列表") + public TableDataInfo getList(@RequestParam(value = Constants.SEARCH, required = false) String search, + HttpServletRequest request) throws Exception { + String orderNumber = StringUtil.getInfo(search, "orderNumber"); + String sourceNumber = StringUtil.getInfo(search, "sourceNumber"); + String status = StringUtil.getInfo(search, "status"); + String priority = StringUtil.getInfo(search, "priority"); + String productMaterialParam = StringUtil.getInfo(search, "productMaterialParam"); + String beginTime = StringUtil.getInfo(search, "beginTime"); + String endTime = StringUtil.getInfo(search, "endTime"); + List list = productionOrderService.select(orderNumber, sourceNumber, status, + priority, productMaterialParam, beginTime, endTime); + return getDataTable(list); + } + + @PostMapping(value = "/createOrder") + @ApiOperation(value = "创建工单") + public String createOrder(@RequestBody JSONObject obj, HttpServletRequest request) throws Exception { + Map objectMap = new HashMap<>(); + int insert = productionOrderService.createOrder(obj, request); + return returnStr(objectMap, insert); + } + + @PutMapping(value = "/updateOrder") + @ApiOperation(value = "修改工单") + public String updateOrder(@RequestBody JSONObject obj, HttpServletRequest request) throws Exception { + Map objectMap = new HashMap<>(); + int update = productionOrderService.updateOrder(obj, request); + return returnStr(objectMap, update); + } + + @PostMapping(value = "/approveRelease") + @ApiOperation(value = "审批下达") + public String approveRelease(@RequestBody JSONObject obj, HttpServletRequest request) throws Exception { + Long id = obj.getLong("id"); + Map objectMap = new HashMap<>(); + int update = productionOrderService.approveRelease(id, request); + return returnStr(objectMap, update); + } + + @PostMapping(value = "/startProduce") + @ApiOperation(value = "开工") + public String startProduce(@RequestBody JSONObject obj, HttpServletRequest request) throws Exception { + Long id = obj.getLong("id"); + Map objectMap = new HashMap<>(); + int update = productionOrderService.startProduce(id, request); + return returnStr(objectMap, update); + } + + @PostMapping(value = "/closeOrder") + @ApiOperation(value = "关闭工单") + public String closeOrder(@RequestBody JSONObject obj, HttpServletRequest request) throws Exception { + Long id = obj.getLong("id"); + String closeReason = obj.getString("closeReason"); + Map objectMap = new HashMap<>(); + int update = productionOrderService.closeOrder(id, closeReason, request); + return returnStr(objectMap, update); + } + + @DeleteMapping(value = "/deleteOrder") + @ApiOperation(value = "删除工单") + public String deleteOrder(@RequestParam("id") Long id, HttpServletRequest request) throws Exception { + Map objectMap = new HashMap<>(); + int delete = productionOrderService.deleteOrder(id, request); + return returnStr(objectMap, delete); + } + + @DeleteMapping(value = "/batchDeleteOrder") + @ApiOperation(value = "批量删除工单") + public String batchDeleteOrder(@RequestParam("ids") String ids, HttpServletRequest request) throws Exception { + Map objectMap = new HashMap<>(); + int delete = productionOrderService.batchDeleteOrder(ids, request); + return returnStr(objectMap, delete); + } + + @GetMapping(value = "/getOrderDetail") + @ApiOperation(value = "工单详情") + public BaseResponseInfo getOrderDetail(@RequestParam("id") Long id, HttpServletRequest request) throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + try { + JSONObject detail = productionOrderService.getOrderDetail(id); + res.code = 200; + res.data = detail; + } catch (Exception e) { + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + @GetMapping(value = "/checkIsNumberExist") + @ApiOperation(value = "检查工单号是否存在") + public String checkIsNumberExist(@RequestParam Long id, + @RequestParam(value = "orderNumber", required = false) String orderNumber, + HttpServletRequest request) throws Exception { + Map objectMap = new HashMap<>(); + int exist = productionOrderService.checkNumberExist(id, orderNumber); + if (exist > 0) { + objectMap.put("status", true); + } else { + objectMap.put("status", false); + } + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/controller/ProductionReportController.java b/smtERP-boot/src/main/java/com/reallin/smt/controller/ProductionReportController.java new file mode 100644 index 0000000..63b3ba7 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/controller/ProductionReportController.java @@ -0,0 +1,89 @@ +package com.reallin.smt.controller; + +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.base.BaseController; +import com.reallin.smt.base.TableDataInfo; +import com.reallin.smt.datasource.vo.ProductionReportVo4List; +import com.reallin.smt.service.ProductionReportService; +import com.reallin.smt.utils.BaseResponseInfo; +import com.reallin.smt.utils.Constants; +import com.reallin.smt.utils.StringUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static com.reallin.smt.utils.ResponseJsonUtil.returnStr; + +/** + * 完工报告管理 + */ +@RestController +@RequestMapping(value = "/productionReport") +@Api(tags = {"完工报工"}) +public class ProductionReportController extends BaseController { + + @Resource + private ProductionReportService productionReportService; + + @GetMapping(value = "/list") + @ApiOperation(value = "完工报告列表") + public TableDataInfo getList(@RequestParam(value = Constants.SEARCH, required = false) String search, + HttpServletRequest request) throws Exception { + String reportNumber = StringUtil.getInfo(search, "reportNumber"); + String orderNumber = StringUtil.getInfo(search, "orderNumber"); + String auditStatus = StringUtil.getInfo(search, "auditStatus"); + String beginTime = StringUtil.getInfo(search, "beginTime"); + String endTime = StringUtil.getInfo(search, "endTime"); + List list = productionReportService.select(reportNumber, orderNumber, + auditStatus, beginTime, endTime); + return getDataTable(list); + } + + @PostMapping(value = "/addReport") + @ApiOperation(value = "新增完工报告") + public String addReport(@RequestBody JSONObject obj, HttpServletRequest request) throws Exception { + Map objectMap = new HashMap<>(); + int insert = productionReportService.addReport(obj, request); + return returnStr(objectMap, insert); + } + + @PostMapping(value = "/auditReport") + @ApiOperation(value = "审核完工报告") + public String auditReport(@RequestBody JSONObject obj, HttpServletRequest request) throws Exception { + Long id = obj.getLong("id"); + String auditResult = obj.getString("auditResult"); + Map objectMap = new HashMap<>(); + int update = productionReportService.auditReport(id, auditResult, request); + return returnStr(objectMap, update); + } + + @DeleteMapping(value = "/deleteReport") + @ApiOperation(value = "删除完工报告") + public String deleteReport(@RequestParam("id") Long id, HttpServletRequest request) throws Exception { + Map objectMap = new HashMap<>(); + int delete = productionReportService.deleteReport(id, request); + return returnStr(objectMap, delete); + } + + @GetMapping(value = "/getDetail") + @ApiOperation(value = "完工报告详情") + public BaseResponseInfo getDetail(@RequestParam("id") Long id, HttpServletRequest request) throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + try { + JSONObject detail = productionReportService.getDetail(id); + res.code = 200; + res.data = detail; + } catch (Exception e) { + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/controller/ProductionRequisitionController.java b/smtERP-boot/src/main/java/com/reallin/smt/controller/ProductionRequisitionController.java new file mode 100644 index 0000000..3fb82f5 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/controller/ProductionRequisitionController.java @@ -0,0 +1,109 @@ +package com.reallin.smt.controller; + +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.base.BaseController; +import com.reallin.smt.base.TableDataInfo; +import com.reallin.smt.datasource.vo.ProductionRequisitionVo4List; +import com.reallin.smt.service.ProductionRequisitionService; +import com.reallin.smt.utils.BaseResponseInfo; +import com.reallin.smt.utils.Constants; +import com.reallin.smt.utils.StringUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static com.reallin.smt.utils.ResponseJsonUtil.returnStr; + +/** + * 生产领料管理 + */ +@RestController +@RequestMapping(value = "/productionRequisition") +@Api(tags = {"生产领料"}) +public class ProductionRequisitionController extends BaseController { + + @Resource + private ProductionRequisitionService productionRequisitionService; + + @GetMapping(value = "/list") + @ApiOperation(value = "领料单列表") + public TableDataInfo getList(@RequestParam(value = Constants.SEARCH, required = false) String search, + HttpServletRequest request) throws Exception { + String requisitionNumber = StringUtil.getInfo(search, "requisitionNumber"); + String orderNumber = StringUtil.getInfo(search, "orderNumber"); + String status = StringUtil.getInfo(search, "status"); + Long depotId = StringUtil.parseStrLong(StringUtil.getInfo(search, "depotId")); + String beginTime = StringUtil.getInfo(search, "beginTime"); + String endTime = StringUtil.getInfo(search, "endTime"); + List list = productionRequisitionService.select(requisitionNumber, + orderNumber, status, depotId, beginTime, endTime); + return getDataTable(list); + } + + @PostMapping(value = "/generateRequisition") + @ApiOperation(value = "从工单生成领料单") + public String generateRequisition(@RequestBody JSONObject obj, HttpServletRequest request) throws Exception { + Long orderId = obj.getLong("orderId"); + Long depotId = obj.getLong("depotId"); + Map objectMap = new HashMap<>(); + int insert = productionRequisitionService.generateRequisition(orderId, depotId, request); + return returnStr(objectMap, insert); + } + + @PutMapping(value = "/updateRequisition") + @ApiOperation(value = "修改领料单") + public String updateRequisition(@RequestBody JSONObject obj, HttpServletRequest request) throws Exception { + Map objectMap = new HashMap<>(); + int update = productionRequisitionService.updateRequisition(obj, request); + return returnStr(objectMap, update); + } + + @PostMapping(value = "/confirmIssue") + @ApiOperation(value = "确认发料") + public String confirmIssue(@RequestBody JSONObject obj, HttpServletRequest request) throws Exception { + Long id = obj.getLong("id"); + Map objectMap = new HashMap<>(); + int update = productionRequisitionService.confirmIssue(id, request); + return returnStr(objectMap, update); + } + + @PostMapping(value = "/rejectRequisition") + @ApiOperation(value = "驳回领料单") + public String rejectRequisition(@RequestBody JSONObject obj, HttpServletRequest request) throws Exception { + Long id = obj.getLong("id"); + String rejectReason = obj.getString("rejectReason"); + Map objectMap = new HashMap<>(); + int update = productionRequisitionService.rejectRequisition(id, rejectReason, request); + return returnStr(objectMap, update); + } + + @DeleteMapping(value = "/deleteRequisition") + @ApiOperation(value = "删除领料单") + public String deleteRequisition(@RequestParam("id") Long id, HttpServletRequest request) throws Exception { + Map objectMap = new HashMap<>(); + int delete = productionRequisitionService.deleteRequisition(id, request); + return returnStr(objectMap, delete); + } + + @GetMapping(value = "/getDetail") + @ApiOperation(value = "领料单详情") + public BaseResponseInfo getDetail(@RequestParam("id") Long id, HttpServletRequest request) throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + try { + JSONObject detail = productionRequisitionService.getDetail(id); + res.code = 200; + res.data = detail; + } catch (Exception e) { + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/controller/RoleController.java b/smtERP-boot/src/main/java/com/reallin/smt/controller/RoleController.java new file mode 100644 index 0000000..a480baf --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/controller/RoleController.java @@ -0,0 +1,178 @@ +package com.reallin.smt.controller; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.base.BaseController; +import com.reallin.smt.base.TableDataInfo; +import com.reallin.smt.datasource.entities.Role; +import com.reallin.smt.datasource.entities.RoleEx; +import com.reallin.smt.service.RoleService; +import com.reallin.smt.service.UserBusinessService; +import com.reallin.smt.utils.Constants; +import com.reallin.smt.utils.ErpInfo; +import com.reallin.smt.utils.StringUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static com.reallin.smt.utils.ResponseJsonUtil.returnJson; +import static com.reallin.smt.utils.ResponseJsonUtil.returnStr; + +/** + * @author ji sheng hua jshERP + */ +@RestController +@RequestMapping(value = "/role") +@Api(tags = {"角色管理"}) +public class RoleController extends BaseController { + private Logger logger = LoggerFactory.getLogger(RoleController.class); + + @Resource + private RoleService roleService; + + @Resource + private UserBusinessService userBusinessService; + + @GetMapping(value = "/info") + @ApiOperation(value = "根据id获取信息") + public String getList(@RequestParam("id") Long id, + HttpServletRequest request) throws Exception { + Role role = roleService.getRole(id); + Map objectMap = new HashMap<>(); + if(role != null) { + objectMap.put("info", role); + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } + + @GetMapping(value = "/list") + @ApiOperation(value = "获取信息列表") + public TableDataInfo getList(@RequestParam(value = Constants.SEARCH, required = false) String search, + HttpServletRequest request)throws Exception { + String name = StringUtil.getInfo(search, "name"); + String description = StringUtil.getInfo(search, "description"); + List list = roleService.select(name, description); + return getDataTable(list); + } + + @PostMapping(value = "/add") + @ApiOperation(value = "新增") + public String addResource(@RequestBody JSONObject obj, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int insert = roleService.insertRole(obj, request); + return returnStr(objectMap, insert); + } + + @PutMapping(value = "/update") + @ApiOperation(value = "修改") + public String updateResource(@RequestBody JSONObject obj, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int update = roleService.updateRole(obj, request); + return returnStr(objectMap, update); + } + + @DeleteMapping(value = "/delete") + @ApiOperation(value = "删除") + public String deleteResource(@RequestParam("id") Long id, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int delete = roleService.deleteRole(id, request); + return returnStr(objectMap, delete); + } + + @DeleteMapping(value = "/deleteBatch") + @ApiOperation(value = "批量删除") + public String batchDeleteResource(@RequestParam("ids") String ids, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int delete = roleService.batchDeleteRole(ids, request); + return returnStr(objectMap, delete); + } + + @GetMapping(value = "/checkIsNameExist") + @ApiOperation(value = "检查名称是否存在") + public String checkIsNameExist(@RequestParam Long id, @RequestParam(value ="name", required = false) String name, + HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int exist = roleService.checkIsNameExist(id, name); + if(exist > 0) { + objectMap.put("status", true); + } else { + objectMap.put("status", false); + } + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } + + /** + * 角色对应应用显示 + * @param request + * @return + */ + @GetMapping(value = "/findUserRole") + @ApiOperation(value = "查询用户的角色") + public JSONArray findUserRole(@RequestParam("UBType") String type, @RequestParam("UBKeyId") String keyId, + HttpServletRequest request)throws Exception { + JSONArray arr = new JSONArray(); + try { + //获取权限信息 + String ubValue = userBusinessService.getUBValueByTypeAndKeyId(type, keyId); + List dataList = roleService.findUserRole(); + if (null != dataList) { + for (Role role : dataList) { + JSONObject item = new JSONObject(); + item.put("id", role.getId()); + item.put("text", role.getName()); + Boolean flag = ubValue.contains("[" + role.getId().toString() + "]"); + if (flag) { + item.put("checked", true); + } + arr.add(item); + } + } + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return arr; + } + + @GetMapping(value = "/allList") + @ApiOperation(value = "查询全部角色列表") + public List allList(HttpServletRequest request)throws Exception { + return roleService.allList(); + } + + @GetMapping(value = "/tenantRoleList") + @ApiOperation(value = "查询租户角色列表") + public List tenantRoleList(HttpServletRequest request)throws Exception { + return roleService.tenantRoleList(); + } + + /** + * 批量设置状态-启用或者禁用 + * @param jsonObject + * @param request + * @return + */ + @PostMapping(value = "/batchSetStatus") + @ApiOperation(value = "批量设置状态") + public String batchSetStatus(@RequestBody JSONObject jsonObject, + HttpServletRequest request)throws Exception { + Boolean status = jsonObject.getBoolean("status"); + String ids = jsonObject.getString("ids"); + Map objectMap = new HashMap<>(); + int res = roleService.batchSetStatus(status, ids); + if(res > 0) { + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/controller/SaleShipmentController.java b/smtERP-boot/src/main/java/com/reallin/smt/controller/SaleShipmentController.java new file mode 100644 index 0000000..008154b --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/controller/SaleShipmentController.java @@ -0,0 +1,130 @@ +package com.reallin.smt.controller; + +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.base.BaseController; +import com.reallin.smt.base.TableDataInfo; +import com.reallin.smt.datasource.entities.SaleShipmentItem; +import com.reallin.smt.datasource.vo.SaleShipmentVo4List; +import com.reallin.smt.service.SaleShipmentService; +import com.reallin.smt.utils.BaseResponseInfo; +import com.reallin.smt.utils.Constants; +import com.reallin.smt.utils.StringUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static com.reallin.smt.utils.ResponseJsonUtil.returnStr; + +@RestController +@RequestMapping(value = "/saleShipment") +@Api(tags = {"销售发货管理"}) +public class SaleShipmentController extends BaseController { + + @Resource + private SaleShipmentService saleShipmentService; + + @GetMapping(value = "/list") + @ApiOperation(value = "发货通知列表") + public TableDataInfo getList(@RequestParam(value = Constants.SEARCH, required = false) String search, + HttpServletRequest request) { + String shipmentNumber = StringUtil.getInfo(search, "shipmentNumber"); + String saleOutNumber = StringUtil.getInfo(search, "saleOutNumber"); + String saleOrderNumber = StringUtil.getInfo(search, "saleOrderNumber"); + String status = StringUtil.getInfo(search, "status"); + String logisticsNo = StringUtil.getInfo(search, "logisticsNo"); + String beginTime = StringUtil.getInfo(search, "beginTime"); + String endTime = StringUtil.getInfo(search, "endTime"); + List list = saleShipmentService.select(shipmentNumber, saleOutNumber, saleOrderNumber, + status, logisticsNo, beginTime, endTime); + return getDataTable(list); + } + + @GetMapping(value = "/detail") + @ApiOperation(value = "发货通知详情") + public BaseResponseInfo getDetail(@RequestParam("id") Long id, HttpServletRequest request) { + BaseResponseInfo res = new BaseResponseInfo(); + res.code = 200; + res.data = saleShipmentService.getDetail(id); + return res; + } + + @GetMapping(value = "/saleOutItems") + @ApiOperation(value = "销售出库可发货明细") + public BaseResponseInfo getSaleOutItems(@RequestParam("saleOutId") Long saleOutId, HttpServletRequest request) { + BaseResponseInfo res = new BaseResponseInfo(); + List rows = saleShipmentService.getSaleOutItems(saleOutId); + JSONObject data = new JSONObject(); + data.put("rows", rows); + res.code = 200; + res.data = data; + return res; + } + + @GetMapping(value = "/deliveryPlanItems") + @ApiOperation(value = "交货计划可发货明细") + public BaseResponseInfo getDeliveryPlanItems(@RequestParam("deliveryPlanId") Long deliveryPlanId, HttpServletRequest request) { + BaseResponseInfo res = new BaseResponseInfo(); + List rows = saleShipmentService.getDeliveryPlanItems(deliveryPlanId); + JSONObject data = new JSONObject(); + data.put("rows", rows); + res.code = 200; + res.data = data; + return res; + } + + @PostMapping(value = "/createFromSaleOut") + @ApiOperation(value = "从销售出库创建发货通知") + public String createFromSaleOut(@RequestBody JSONObject obj, HttpServletRequest request) throws Exception { + Map objectMap = new HashMap<>(); + int insert = saleShipmentService.createFromSaleOut(obj, request); + return returnStr(objectMap, insert); + } + + @PostMapping(value = "/createFromDeliveryPlan") + @ApiOperation(value = "从交货计划创建发货通知") + public String createFromDeliveryPlan(@RequestBody JSONObject obj, HttpServletRequest request) throws Exception { + Map objectMap = new HashMap<>(); + int insert = saleShipmentService.createFromDeliveryPlan(obj, request); + return returnStr(objectMap, insert); + } + + @PostMapping(value = "/batchCreateFromSaleOut") + @ApiOperation(value = "批量从销售出库创建发货通知") + public String batchCreateFromSaleOut(@RequestBody JSONObject obj, HttpServletRequest request) throws Exception { + Map objectMap = new HashMap<>(); + int insert = saleShipmentService.batchCreateFromSaleOut(obj, request); + objectMap.put("message", "已生成" + insert + "张发货通知单"); + return returnStr(objectMap, insert); + } + + @PostMapping(value = "/approve") + @ApiOperation(value = "审批发货通知") + public String approve(@RequestBody JSONObject obj, HttpServletRequest request) throws Exception { + Map objectMap = new HashMap<>(); + int update = saleShipmentService.approve(obj.getLong("id"), obj.getBoolean("pass"), + obj.getString("approveRemark"), request); + return returnStr(objectMap, update); + } + + @PostMapping(value = "/confirmShipment") + @ApiOperation(value = "确认实际发货") + public String confirmShipment(@RequestBody JSONObject obj, HttpServletRequest request) throws Exception { + Map objectMap = new HashMap<>(); + int update = saleShipmentService.confirmShipment(obj, request); + return returnStr(objectMap, update); + } + + @DeleteMapping(value = "/delete") + @ApiOperation(value = "删除发货通知") + public String deleteShipment(@RequestParam("id") Long id, HttpServletRequest request) throws Exception { + Map objectMap = new HashMap<>(); + int delete = saleShipmentService.deleteShipment(id, request); + return returnStr(objectMap, delete); + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/controller/SequenceController.java b/smtERP-boot/src/main/java/com/reallin/smt/controller/SequenceController.java new file mode 100644 index 0000000..f2715b7 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/controller/SequenceController.java @@ -0,0 +1,53 @@ +package com.reallin.smt.controller; + +import com.reallin.smt.service.SequenceService; +import com.reallin.smt.utils.BaseResponseInfo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.HashMap; +import java.util.Map; + +/** + * @author ji-sheng-hua 752*718*920 + */ +@RestController +@RequestMapping(value = "/sequence") +@Api(tags = {"单据编号"}) +public class SequenceController { + private Logger logger = LoggerFactory.getLogger(SequenceController.class); + + @Resource + private SequenceService sequenceService; + + /** + * 单据编号生成接口 + * @param request + * @return + */ + @GetMapping(value = "/buildNumber") + @ApiOperation(value = "单据编号生成接口") + public BaseResponseInfo buildNumber(HttpServletRequest request)throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + Map map = new HashMap(); + try { + String number = sequenceService.buildOnlyNumber(); + map.put("defaultNumber", number); + res.code = 200; + res.data = map; + } catch(Exception e){ + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/controller/SerialNumberController.java b/smtERP-boot/src/main/java/com/reallin/smt/controller/SerialNumberController.java new file mode 100644 index 0000000..2ab4cbd --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/controller/SerialNumberController.java @@ -0,0 +1,133 @@ +package com.reallin.smt.controller; + +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.datasource.entities.DepotItem; +import com.reallin.smt.datasource.entities.SerialNumberEx; +import com.reallin.smt.service.DepotHeadService; +import com.reallin.smt.service.DepotItemService; +import com.reallin.smt.service.SerialNumberService; +import com.reallin.smt.utils.BaseResponseInfo; +import com.reallin.smt.utils.StringUtil; +import com.reallin.smt.utils.Tools; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static com.reallin.smt.utils.ResponseJsonUtil.returnStr; + +/** + * Description + * @Author: jsh + * @Date: 2019/1/22 10:29 + */ +@RestController +@RequestMapping(value = "/serialNumber") +@Api(tags = {"序列号管理"}) +public class SerialNumberController { + private Logger logger = LoggerFactory.getLogger(SerialNumberController.class); + + @Resource + private SerialNumberService serialNumberService; + @Resource + private DepotHeadService depotHeadService; + @Resource + private DepotItemService depotItemService; + + /** + * create by: jsh + * @return java.lang.Object + */ + @PostMapping("/batAddSerialNumber") + @ApiOperation(value = "批量添加序列号") + public String batAddSerialNumber(@RequestBody JSONObject jsonObject, HttpServletRequest request)throws Exception{ + Map objectMap = new HashMap<>(); + String materialCode = jsonObject.getString("materialCode"); + String serialNumberPrefix = jsonObject.getString("serialNumberPrefix"); + Integer batAddTotal = jsonObject.getInteger("batAddTotal"); + String remark = jsonObject.getString("remark"); + int insert = serialNumberService.batAddSerialNumber(materialCode,serialNumberPrefix,batAddTotal,remark); + return returnStr(objectMap, insert); + } + + /** + * 获取序列号商品 + * @param jsonObject + * @param request + * @return + * @throws Exception + */ + @PostMapping(value = "/getEnableSerialNumberList") + @ApiOperation(value = "获取序列号商品") + public BaseResponseInfo getEnableSerialNumberList(@RequestBody JSONObject jsonObject, HttpServletRequest request)throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + Map map = new HashMap<>(); + try { + String name = jsonObject.getString("name"); + Long depotItemId = jsonObject.getLong("depotItemId"); + Long depotId = jsonObject.getLong("depotId"); + String barCode = jsonObject.getString("barCode"); + Integer currentPage = jsonObject.getInteger("page"); + Integer pageSize = jsonObject.getInteger("rows"); + String number = ""; + String [] nameArray = null; + if(depotItemId != null) { + DepotItem depotItem = depotItemService.getDepotItem(depotItemId); + number = depotHeadService.getDepotHead(depotItem.getHeaderId()).getNumber(); + } + // 批量查询序列号时,name可能为多个 + if(StringUtil.isNotEmpty(name)) { + name = name.replace(",",","); + if(name.contains(",")) { + nameArray = name.split(","); + name = null; + } + } + List list = serialNumberService.getEnableSerialNumberList(number, name, nameArray, depotId, barCode, (currentPage-1)*pageSize, pageSize); + for(SerialNumberEx serialNumberEx: list) { + serialNumberEx.setCreateTimeStr(Tools.getCenternTime(serialNumberEx.getCreateTime())); + } + Long total = serialNumberService.getEnableSerialNumberCount(number, name, nameArray, depotId, barCode); + List missList = new ArrayList<>(); + if(nameArray!=null && nameArray.length>0) { + List allList = serialNumberService.getEnableSerialNumberList(number, name, nameArray, depotId, barCode, null, null); + if(allList.size() < nameArray.length) { + //说明查出的比查询条件里面的序列号少,此时需要寻找出缺少的序列号 + for (String item : nameArray) { + boolean isHave = false; + for (SerialNumberEx serialNumberEx : allList) { + if (item.equals(serialNumberEx.getSerialNumber())) { + isHave = true; + break; + } + } + if (!isHave) { + missList.add(item); + } + } + } + } + map.put("rows", list); + map.put("total", total); + if(!missList.isEmpty()) { + //列出未查询到的序列号 + map.put("missInfo", String.join(",", missList)); + } + res.code = 200; + res.data = map; + } catch(Exception e){ + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/controller/SmtInboundController.java b/smtERP-boot/src/main/java/com/reallin/smt/controller/SmtInboundController.java new file mode 100644 index 0000000..e13160c --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/controller/SmtInboundController.java @@ -0,0 +1,88 @@ +package com.reallin.smt.controller; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.datasource.entities.DepotHeadVo4Body; +import com.reallin.smt.service.SmtInboundService; +import com.reallin.smt.utils.BaseResponseInfo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@RestController +@RequestMapping("/smtInbound") +@Api(tags = "SMT其他入库") +public class SmtInboundController { + @Resource + private SmtInboundService smtInboundService; + + @GetMapping("/nextNumber") + @ApiOperation("生成SMT单据编号") + public BaseResponseInfo nextNumber(@RequestParam(required = false) String businessDate) { + return ok(single("number", smtInboundService.nextNumber(businessDate))); + } + + @PostMapping("/save") + @ApiOperation("新增SMT其他入库") + public BaseResponseInfo save(@RequestBody DepotHeadVo4Body body, HttpServletRequest request) { + JSONObject info = JSONObject.parseObject(body.getInfo()); + JSONArray rows = JSONArray.parseArray(body.getRows()); + Long id = smtInboundService.save(info, rows, smtInboundService.creatorId(request)); + return ok(single("id", id)); + } + + @PutMapping("/save") + @ApiOperation("修改SMT其他入库") + public BaseResponseInfo update(@RequestBody DepotHeadVo4Body body, HttpServletRequest request) { + return save(body, request); + } + + @GetMapping("/details") + @ApiOperation("查询SMT其他入库明细") + public BaseResponseInfo details(@RequestParam Long headerId) { + List> rows = smtInboundService.details(headerId); + Map data = new HashMap<>(); + data.put("rows", rows); + data.put("total", rows.size()); + return ok(data); + } + + @PostMapping("/importExcel") + @ApiOperation("导入SMT出库单Excel") + public BaseResponseInfo importExcel(@RequestParam("file") MultipartFile file, HttpServletRequest request) throws Exception { + return ok(smtInboundService.importExcel(file, smtInboundService.creatorId(request))); + } + + @GetMapping("/template") + @ApiOperation("下载SMT出库单导入模板") + public void template(HttpServletResponse response) throws Exception { + smtInboundService.exportTemplate(response); + } + + @PostMapping("/sync") + @ApiOperation("外部平台JSON同步") + public BaseResponseInfo sync(@RequestBody List payload, HttpServletRequest request) { + return ok(smtInboundService.sync(payload, smtInboundService.creatorId(request))); + } + + private BaseResponseInfo ok(Object data) { + BaseResponseInfo response = new BaseResponseInfo(); + response.code = 200; + response.data = data; + return response; + } + + private Map single(String key, Object value) { + Map data = new HashMap<>(); + data.put(key, value); + return data; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/controller/SupplierController.java b/smtERP-boot/src/main/java/com/reallin/smt/controller/SupplierController.java new file mode 100644 index 0000000..8f050a9 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/controller/SupplierController.java @@ -0,0 +1,545 @@ +package com.reallin.smt.controller; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.base.BaseController; +import com.reallin.smt.base.TableDataInfo; +import com.reallin.smt.datasource.entities.Supplier; +import com.reallin.smt.datasource.entities.User; +import com.reallin.smt.datasource.vo.SupplierSimple; +import com.reallin.smt.exception.BusinessRunTimeException; +import com.reallin.smt.service.SupplierService; +import com.reallin.smt.service.SystemConfigService; +import com.reallin.smt.service.UserService; +import com.reallin.smt.service.UserBusinessService; +import com.reallin.smt.utils.*; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +import static com.reallin.smt.utils.ResponseJsonUtil.returnJson; +import static com.reallin.smt.utils.ResponseJsonUtil.returnStr; + +/** + * @author ji|sheng|hua SMT + */ +@RestController +@RequestMapping(value = "/supplier") +@Api(tags = {"商家管理"}) +public class SupplierController extends BaseController { + private Logger logger = LoggerFactory.getLogger(SupplierController.class); + + @Resource + private SupplierService supplierService; + + @Resource + private UserBusinessService userBusinessService; + + @Resource + private SystemConfigService systemConfigService; + + @Resource + private UserService userService; + + @GetMapping(value = "/info") + @ApiOperation(value = "根据id获取信息") + public String getList(@RequestParam("id") Long id, + HttpServletRequest request) throws Exception { + Supplier supplier = supplierService.getSupplier(id); + Map objectMap = new HashMap<>(); + if(supplier != null) { + objectMap.put("info", supplier); + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } + + @GetMapping(value = "/list") + @ApiOperation(value = "获取信息列表") + public TableDataInfo getList(@RequestParam(value = Constants.SEARCH, required = false) String search, + HttpServletRequest request)throws Exception { + String supplier = StringUtil.getInfo(search, "supplier"); + String type = StringUtil.getInfo(search, "type"); + String contacts = StringUtil.getInfo(search, "contacts"); + String phonenum = StringUtil.getInfo(search, "phonenum"); + String telephone = StringUtil.getInfo(search, "telephone"); + String categoryIdStr = StringUtil.getInfo(search, "categoryId"); + Long categoryId = (categoryIdStr != null && !categoryIdStr.isEmpty()) ? Long.parseLong(categoryIdStr) : null; + List list = supplierService.select(supplier, type, contacts, phonenum, telephone, categoryId); + return getDataTable(list); + } + + @PostMapping(value = "/add") + @ApiOperation(value = "新增") + public String addResource(@RequestBody JSONObject obj, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int insert = supplierService.insertSupplier(obj, request); + if(insert > 0 && obj.containsKey("id")) { + objectMap.put("id", obj.getLong("id")); + } + return returnStr(objectMap, insert); + } + + @PutMapping(value = "/update") + @ApiOperation(value = "修改") + public String updateResource(@RequestBody JSONObject obj, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int update = supplierService.updateSupplier(obj, request); + return returnStr(objectMap, update); + } + + @DeleteMapping(value = "/delete") + @ApiOperation(value = "删除") + public String deleteResource(@RequestParam("id") Long id, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int delete = supplierService.deleteSupplier(id, request); + return returnStr(objectMap, delete); + } + + @DeleteMapping(value = "/deleteBatch") + @ApiOperation(value = "批量删除") + public String batchDeleteResource(@RequestParam("ids") String ids, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int delete = supplierService.batchDeleteSupplier(ids, request); + return returnStr(objectMap, delete); + } + + @GetMapping(value = "/checkIsNameExist") + @ApiOperation(value = "检查名称是否存在") + public String checkIsNameExist(@RequestParam Long id, @RequestParam(value ="name", required = false) String name, + HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int exist = supplierService.checkIsNameExist(id, name); + if(exist > 0) { + objectMap.put("status", true); + } else { + objectMap.put("status", false); + } + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } + + @GetMapping(value = "/checkIsNameAndTypeExist") + @ApiOperation(value = "检查名称和类型是否存在") + public String checkIsNameAndTypeExist(@RequestParam Long id, + @RequestParam(value ="name", required = false) String name, + @RequestParam(value ="type") String type, + HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int exist = supplierService.checkIsNameAndTypeExist(id, name, type); + if(exist > 0) { + objectMap.put("status", true); + } else { + objectMap.put("status", false); + } + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } + + /** + * 查找客户信息-下拉框 + * @param request + * @return + */ + @PostMapping(value = "/findBySelect_cus") + @ApiOperation(value = "查找客户信息") + public JSONArray findBySelectCus(@RequestBody JSONObject jsonObject, + HttpServletRequest request) { + JSONArray arr = new JSONArray(); + try { + String key = jsonObject.get("key")!=null ? jsonObject.getString("key") : null; + Long organId = jsonObject.get("organId")!=null ? jsonObject.getLong("organId") : null; + Integer limit = jsonObject.get("limit")!=null ? jsonObject.getInteger("limit") : null; + String type = "UserCustomer"; + Long userId = userService.getUserId(request); + //获取权限信息 + String ubValue = userBusinessService.getUBValueByTypeAndKeyId(type, userId.toString()); + List supplierList = supplierService.findBySelectCus(key, organId, limit); + JSONArray dataArray = new JSONArray(); + if (null != supplierList) { + boolean customerFlag = systemConfigService.getCustomerFlag(); + for (Supplier supplier : supplierList) { + JSONObject item = new JSONObject(); + Boolean flag = ubValue.contains("[" + supplier.getId().toString() + "]"); + if (!customerFlag || flag) { + item.put("id", supplier.getId()); + item.put("supplier", supplier.getSupplier()); //客户名称 + item.put("categoryId", supplier.getCategoryId()); + dataArray.add(item); + } + } + } + arr = dataArray; + } catch(Exception e){ + logger.error(e.getMessage(), e); + } + return arr; + } + + /** + * 查找供应商信息-下拉框 + * @param request + * @return + */ + @PostMapping(value = "/findBySelect_sup") + @ApiOperation(value = "查找供应商信息") + public JSONArray findBySelectSup(@RequestBody JSONObject jsonObject, + HttpServletRequest request) throws Exception{ + JSONArray arr = new JSONArray(); + try { + String key = jsonObject.get("key")!=null ? jsonObject.getString("key") : null; + Long organId = jsonObject.get("organId")!=null ? jsonObject.getLong("organId") : null; + Integer limit = jsonObject.get("limit")!=null ? jsonObject.getInteger("limit") : null; + List supplierList = supplierService.findBySelectSup(key, organId, limit); + JSONArray dataArray = new JSONArray(); + if (null != supplierList) { + for (Supplier supplier : supplierList) { + JSONObject item = new JSONObject(); + item.put("id", supplier.getId()); + //供应商名称 + item.put("supplier", supplier.getSupplier()); + dataArray.add(item); + } + } + arr = dataArray; + } catch(Exception e){ + logger.error(e.getMessage(), e); + } + return arr; + } + + /** + * 查找往来单位,含供应商和客户信息-下拉框 + * @param request + * @return + */ + @PostMapping(value = "/findBySelect_organ") + @ApiOperation(value = "查找往来单位,含供应商和客户信息") + public JSONArray findBySelectOrgan(@RequestBody JSONObject jsonObject, + HttpServletRequest request) throws Exception{ + JSONArray arr = new JSONArray(); + try { + String key = jsonObject.get("key")!=null ? jsonObject.getString("key") : null; + Long organId = jsonObject.get("organId")!=null ? jsonObject.getLong("organId") : null; + Integer limit = jsonObject.get("limit")!=null ? jsonObject.getInteger("limit") : null; + JSONArray dataArray = new JSONArray(); + //1、获取供应商信息 + List supplierList = supplierService.findBySelectSup(key, organId, limit); + if (null != supplierList) { + for (Supplier supplier : supplierList) { + JSONObject item = new JSONObject(); + item.put("id", supplier.getId()); + item.put("supplier", supplier.getSupplier() + "[供应商]"); //供应商名称 + dataArray.add(item); + } + } + //2、获取客户信息 + String type = "UserCustomer"; + Long userId = userService.getUserId(request); + String ubValue = userBusinessService.getUBValueByTypeAndKeyId(type, userId.toString()); + List customerList = supplierService.findBySelectCus(key, organId, limit); + if (null != customerList) { + boolean customerFlag = systemConfigService.getCustomerFlag(); + for (Supplier supplier : customerList) { + JSONObject item = new JSONObject(); + Boolean flag = ubValue.contains("[" + supplier.getId().toString() + "]"); + if (!customerFlag || flag) { + item.put("id", supplier.getId()); + item.put("supplier", supplier.getSupplier() + "[客户]"); //客户名称 + dataArray.add(item); + } + } + } + arr = dataArray; + } catch(Exception e){ + logger.error(e.getMessage(), e); + } + return arr; + } + + /** + * 查找会员信息-下拉框 + * @param request + * @return + */ + @PostMapping(value = "/findBySelect_retail") + @ApiOperation(value = "查找会员信息") + public JSONArray findBySelectRetail(@RequestBody JSONObject jsonObject, + HttpServletRequest request)throws Exception { + JSONArray arr = new JSONArray(); + try { + String key = jsonObject.get("key")!=null ? jsonObject.getString("key") : null; + Long organId = jsonObject.get("organId")!=null ? jsonObject.getLong("organId") : null; + Integer limit = jsonObject.get("limit")!=null ? jsonObject.getInteger("limit") : null; + List supplierList = supplierService.findBySelectRetail(key, organId, limit); + JSONArray dataArray = new JSONArray(); + if (null != supplierList) { + for (Supplier supplier : supplierList) { + JSONObject item = new JSONObject(); + item.put("id", supplier.getId()); + //客户名称 + item.put("supplier", supplier.getSupplier()); + item.put("advanceIn", supplier.getAdvanceIn()); //预付款金额 + dataArray.add(item); + } + } + arr = dataArray; + } catch(Exception e){ + logger.error(e.getMessage(), e); + } + return arr; + } + + /** + * 批量设置状态-启用或者禁用 + * @param jsonObject + * @param request + * @return + */ + @PostMapping(value = "/batchSetStatus") + @ApiOperation(value = "批量设置状态") + public String batchSetStatus(@RequestBody JSONObject jsonObject, + HttpServletRequest request)throws Exception { + Boolean status = jsonObject.getBoolean("status"); + String ids = jsonObject.getString("ids"); + Map objectMap = new HashMap<>(); + int res = supplierService.batchSetStatus(status, ids); + if(res > 0) { + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } + + /** + * 获取全部客户信息 + * @param search + * @param request + * @return + * @throws Exception + */ + @GetMapping(value = "/getAllCustomer") + @ApiOperation(value = "获取全部客户信息") + public TableDataInfo getAllCustomer(@RequestParam(value = Constants.SEARCH, required = false) String search, + HttpServletRequest request)throws Exception { + List list = supplierService.getAllCustomer(); + return getDataTable(list); + } + + /** + * 获取用户对应客户的关系数组 + * @param type + * @param keyId + * @param request + * @return + */ + @GetMapping(value = "/getUserCustomerValue") + @ApiOperation(value = "获取用户对应客户的关系数组") + public JSONObject getUserCustomerValue(@RequestParam("UBType") String type, @RequestParam("UBKeyId") String keyId, + HttpServletRequest request) throws Exception{ + JSONObject obj = new JSONObject(); + try { + //获取权限信息 + String ubValue = userBusinessService.getUBValueByTypeAndKeyId(type, keyId); + if(StringUtil.isNotEmpty(ubValue)) { + String ubStr = ubValue.substring(1, ubValue.length()-1); + String [] ubArr = ubStr.split("]\\["); + Long[] ubLongArray = new Long[ubArr.length]; + for (int i = 0; i < ubArr.length; i++) { + ubLongArray[i] = Long.parseLong(ubArr[i]); + } + obj.put("data", ubLongArray); + } else { + obj.put("data", null); + } + obj.put("code", 200); + } catch (Exception e) { + obj.put("code", 500); + obj.put("data", "服务内部错误"); + logger.error(e.getMessage(), e); + } + return obj; + } + + /** + * 根据客户或供应商查询期初、期初已收等信息 + * @param organId + * @param request + * @return + * @throws Exception + */ + @GetMapping(value = "/getBeginNeedByOrganId") + @ApiOperation(value = "根据客户或供应商查询期初、期初已收等信息") + public BaseResponseInfo getBeginNeedByOrganId(@RequestParam("organId") Long organId, + HttpServletRequest request)throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + try { + Map map = supplierService.getBeginNeedByOrganId(organId); + res.code = 200; + res.data = map; + } catch (Exception e) { + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 导入供应商 + * @param file + * @param request + * @param response + * @return + */ + @PostMapping(value = "/importVendor") + @ApiOperation(value = "导入供应商") + public BaseResponseInfo importVendor(MultipartFile file, + HttpServletRequest request, HttpServletResponse response) throws Exception{ + BaseResponseInfo res = new BaseResponseInfo(); + try { + supplierService.checkFileExt(file); + supplierService.importVendor(file, request); + res.code = 200; + res.data = "导入成功"; + } catch(BusinessRunTimeException e) { + res.code = e.getCode(); + res.data = e.getData().get("message"); + } catch(Exception e){ + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "导入失败"; + } + return res; + } + + /** + * 导入客户 + * @param file + * @param request + * @param response + * @return + */ + @PostMapping(value = "/importCustomer") + @ApiOperation(value = "导入客户") + public BaseResponseInfo importCustomer(MultipartFile file, + HttpServletRequest request, HttpServletResponse response) throws Exception{ + BaseResponseInfo res = new BaseResponseInfo(); + try { + supplierService.checkFileExt(file); + supplierService.importCustomer(file, request); + res.code = 200; + res.data = "导入成功"; + } catch(BusinessRunTimeException e) { + res.code = e.getCode(); + res.data = e.getData().get("message"); + } catch(Exception e){ + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "导入失败"; + } + return res; + } + + /** + * 导入会员 + * @param file + * @param request + * @param response + * @return + */ + @PostMapping(value = "/importMember") + @ApiOperation(value = "导入会员") + public BaseResponseInfo importMember(MultipartFile file, + HttpServletRequest request, HttpServletResponse response) throws Exception{ + BaseResponseInfo res = new BaseResponseInfo(); + try { + supplierService.checkFileExt(file); + supplierService.importMember(file, request); + res.code = 200; + res.data = "导入成功"; + } catch(BusinessRunTimeException e) { + res.code = e.getCode(); + res.data = e.getData().get("message"); + } catch(Exception e){ + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "导入失败"; + } + return res; + } + + /** + * 生成excel表格 + * @param supplier + * @param type + * @param phonenum + * @param telephone + * @param request + * @param response + * @return + */ + @GetMapping(value = "/exportExcel") + public void exportExcel(@RequestParam(value = "supplier", required = false) String supplier, + @RequestParam("type") String type, + @RequestParam(value = "phonenum", required = false) String phonenum, + @RequestParam(value = "telephone", required = false) String telephone, + HttpServletRequest request, HttpServletResponse response) { + try { + List dataList = supplierService.findByAll(supplier, type, phonenum, telephone); + File file = supplierService.exportExcel(dataList, type); + ExcelUtils.downloadExcel(file, file.getName(), response); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + } + + /** + * 批量设置会员当前的预付款 + * @param jsonObject + * @param request + * @return + * @throws Exception + */ + @PostMapping(value = "/batchSetAdvanceIn") + @ApiOperation(value = "批量设置会员当前的预付款") + public String batchSetAdvanceIn(@RequestBody JSONObject jsonObject, + HttpServletRequest request)throws Exception { + String ids = jsonObject.getString("ids"); + Map objectMap = new HashMap<>(); + int res = supplierService.batchSetAdvanceIn(ids); + if(res > 0) { + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } + + @GetMapping(value = "/getInfoByName") + @ApiOperation(value = "根据名称获取信息") + public String getInfoByName(@RequestParam("name") String name, + @RequestParam("type") String type, + HttpServletRequest request) throws Exception { + Supplier supplier = supplierService.getInfoByName(name, type); + Map objectMap = new HashMap<>(); + if(supplier != null) { + objectMap.put("info", supplier); + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } + +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/controller/SysDictDataController.java b/smtERP-boot/src/main/java/com/reallin/smt/controller/SysDictDataController.java new file mode 100644 index 0000000..0b0f0e5 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/controller/SysDictDataController.java @@ -0,0 +1,124 @@ +package com.reallin.smt.controller; + +import com.reallin.smt.base.AjaxResult; +import com.reallin.smt.base.BaseController; +import com.reallin.smt.base.TableDataInfo; +import com.reallin.smt.datasource.entities.SysDictData; +import com.reallin.smt.service.SysDictDataService; +import com.reallin.smt.service.SysDictTypeService; +import com.reallin.smt.service.UserService; +import com.reallin.smt.utils.Constants; +import com.reallin.smt.utils.StringUtil; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static com.reallin.smt.utils.ResponseJsonUtil.returnStr; + +/** + * 数据字典信息 + * + * @author jishenghua + */ +@RestController +@RequestMapping("/dict/data") +public class SysDictDataController extends BaseController { + + @Resource + private SysDictDataService dictDataService; + + @Resource + private SysDictTypeService dictTypeService; + + @Resource + private UserService userService; + + @GetMapping("/list") + @ApiOperation(value = "查询列表") + public TableDataInfo list(@RequestParam(value = Constants.SEARCH, required = false) String search) { + SysDictData dictData = new SysDictData(); + dictData.setDictType(StringUtil.getInfo(search, "dictType")); + dictData.setDictLabel(StringUtil.getInfo(search, "dictLabel")); + dictData.setStatus(StringUtil.getInfo(search, "status")); + List list = dictDataService.selectDictDataList(dictData); + return getDataTable(list); + } + + /** + * 查询字典数据详细 + */ + @GetMapping(value = "/{dictCode}") + @ApiOperation(value = "查询字典数据详细") + public AjaxResult getInfo(@PathVariable Long dictCode) { + return success(dictDataService.selectDictDataById(dictCode)); + } + + /** + * 根据字典类型查询字典数据信息 + */ + @GetMapping(value = "/type/{dictType}") + @ApiOperation(value = "根据字典类型查询字典数据信息") + public AjaxResult dictType(@PathVariable String dictType) { + List data = dictTypeService.selectDictDataByType(dictType); + if (StringUtil.isNull(data)) + { + data = new ArrayList(); + } + return success(data); + } + + /** + * 新增字典数据 + */ + @ApiOperation(value = "新增字典数据") + @PostMapping(value = "/add") + public String add(@Validated @RequestBody SysDictData dict) throws Exception { + Map objectMap = new HashMap<>(); + dict.setCreateBy(userService.getCurrentUser().getLoginName()); + return returnStr(objectMap, dictDataService.insertDictData(dict)); + } + + /** + * 修改保存字典数据 + */ + @ApiOperation(value = "修改保存字典数据") + @PutMapping(value = "/update") + public String edit(@Validated @RequestBody SysDictData dict) throws Exception { + Map objectMap = new HashMap<>(); + dict.setUpdateBy(userService.getCurrentUser().getLoginName()); + return returnStr(objectMap, dictDataService.updateDictData(dict)); + } + + /** + * 删除字典数据 + */ + @DeleteMapping("/{dictCodes}") + @ApiOperation(value = "删除字典数据") + public AjaxResult remove(@PathVariable Long[] dictCodes) { + dictDataService.deleteDictDataByIds(dictCodes); + return success(); + } + + @DeleteMapping(value = "/delete") + @ApiOperation(value = "删除") + public String deleteResource(@RequestParam("id") Long id, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int delete = dictDataService.deleteDictData(id, request); + return returnStr(objectMap, delete); + } + + @DeleteMapping(value = "/deleteBatch") + @ApiOperation(value = "批量删除") + public String batchDeleteResource(@RequestParam("ids") String ids, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int delete = dictDataService.batchDeleteDictData(ids, request); + return returnStr(objectMap, delete); + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/controller/SysDictTypeController.java b/smtERP-boot/src/main/java/com/reallin/smt/controller/SysDictTypeController.java new file mode 100644 index 0000000..fccc64a --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/controller/SysDictTypeController.java @@ -0,0 +1,129 @@ +package com.reallin.smt.controller; + +import com.reallin.smt.base.AjaxResult; +import com.reallin.smt.base.BaseController; +import com.reallin.smt.base.TableDataInfo; +import com.reallin.smt.datasource.entities.SysDictType; +import com.reallin.smt.service.SysDictTypeService; +import com.reallin.smt.service.UserService; +import com.reallin.smt.utils.Constants; +import com.reallin.smt.utils.ErpInfo; +import com.reallin.smt.utils.StringUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static com.reallin.smt.utils.ResponseJsonUtil.returnJson; +import static com.reallin.smt.utils.ResponseJsonUtil.returnStr; + +/** + * 数据字典信息 + * + * @author jishenghua + */ +@Api(tags = "字典管理") +@RestController +@RequestMapping("/dict/type") +public class SysDictTypeController extends BaseController { + + @Resource + private SysDictTypeService dictTypeService; + + @Resource + private UserService userService; + + @ApiOperation("获取字典分页列表") + @GetMapping("/list") + public TableDataInfo list(@RequestParam(value = Constants.SEARCH, required = false) String search) { + SysDictType dictType = new SysDictType(); + dictType.setDictName(StringUtil.getInfo(search, "dictName")); + dictType.setDictType(StringUtil.getInfo(search, "dictType")); + dictType.setStatus(StringUtil.getInfo(search, "status")); + Map params = new HashMap<>(); + params.put("beginTime", StringUtil.getInfo(search, "beginTime")); + params.put("endTime", StringUtil.getInfo(search, "endTime")); + dictType.setParams(params); + List list = dictTypeService.selectDictTypeList(dictType); + return getDataTable(list); + } + + /** + * 查询字典类型详细 + */ + @ApiOperation("查询字典类型详细") + @GetMapping(value = "/{dictId}") + public AjaxResult getInfo(@PathVariable Long dictId) { + return success(dictTypeService.selectDictTypeById(dictId)); + } + + /** + * 新增字典类型 + */ + @ApiOperation("新增字典类型") + @PostMapping(value = "/add") + public String add(@Validated @RequestBody SysDictType dict) throws Exception { + Map objectMap = new HashMap<>(); + if (!dictTypeService.checkDictTypeUnique(dict)) { + return returnJson(objectMap, "新增字典'" + dict.getDictName() + "'失败,字典类型已存在", ErpInfo.ERROR.code); + } + dict.setCreateBy(userService.getCurrentUser().getLoginName()); + return returnStr(objectMap, dictTypeService.insertDictType(dict)); + } + + /** + * 修改字典类型 + */ + @ApiOperation("修改字典类型") + @PutMapping(value = "/update") + public String edit(@Validated @RequestBody SysDictType dict) throws Exception { + Map objectMap = new HashMap<>(); + if (!dictTypeService.checkDictTypeUnique(dict)) { + return returnJson(objectMap, "修改字典'" + dict.getDictName() + "'失败,字典类型已存在", ErpInfo.ERROR.code); + } + dict.setUpdateBy(userService.getCurrentUser().getLoginName()); + return returnStr(objectMap, dictTypeService.updateDictType(dict)); + } + + @DeleteMapping(value = "/delete") + @ApiOperation(value = "删除") + public String deleteResource(@RequestParam("id") Long id, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int delete = dictTypeService.deleteDictType(id, request); + return returnStr(objectMap, delete); + } + + @DeleteMapping(value = "/deleteBatch") + @ApiOperation(value = "批量删除") + public String batchDeleteResource(@RequestParam("ids") String ids, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int delete = dictTypeService.batchDeleteDictType(ids, request); + return returnStr(objectMap, delete); + } + + /** + * 刷新字典缓存 + */ + @ApiOperation("刷新字典缓存") + @DeleteMapping("/refreshCache") + public AjaxResult refreshCache() { + dictTypeService.resetDictCache(); + return success(); + } + + /** + * 获取字典选择框列表 + */ + @ApiOperation("获取字典选择框列表") + @GetMapping("/optionselect") + public AjaxResult optionselect() { + List dictTypes = dictTypeService.selectDictTypeAll(); + return success(dictTypes); + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/controller/SystemConfigController.java b/smtERP-boot/src/main/java/com/reallin/smt/controller/SystemConfigController.java new file mode 100644 index 0000000..902492f --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/controller/SystemConfigController.java @@ -0,0 +1,370 @@ +package com.reallin.smt.controller; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.base.BaseController; +import com.reallin.smt.base.TableDataInfo; +import com.reallin.smt.datasource.entities.SystemConfig; +import com.reallin.smt.service.SystemConfigService; +import com.reallin.smt.utils.*; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.util.AntPathMatcher; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.HandlerMapping; + +import javax.annotation.Resource; +import javax.imageio.ImageIO; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.awt.image.BufferedImage; +import java.io.*; +import java.net.HttpURLConnection; +import java.net.URL; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static com.reallin.smt.utils.ResponseJsonUtil.returnJson; +import static com.reallin.smt.utils.ResponseJsonUtil.returnStr; + +/** + * Description + * @Author: jishenghua + * @Date: 2021-3-13 0:01 + */ +@RestController +@RequestMapping(value = "/systemConfig") +@Api(tags = {"系统参数"}) +public class SystemConfigController extends BaseController { + private Logger logger = LoggerFactory.getLogger(SystemConfigController.class); + + @Resource + private SystemConfigService systemConfigService; + + @Value(value="${file.uploadType}") + private Long fileUploadType; + + @Value(value="${file.path}") + private String filePath; + + @Value(value="${spring.servlet.multipart.max-file-size}") + private Long maxFileSize; + + @Value(value="${spring.servlet.multipart.max-request-size}") + private Long maxRequestSize; + + @GetMapping(value = "/info") + @ApiOperation(value = "根据id获取信息") + public String getList(@RequestParam("id") Long id, + HttpServletRequest request) throws Exception { + SystemConfig systemConfig = systemConfigService.getSystemConfig(id); + Map objectMap = new HashMap<>(); + if(systemConfig != null) { + objectMap.put("info", systemConfig); + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } + + @GetMapping(value = "/list") + @ApiOperation(value = "获取信息列表") + public TableDataInfo getList(@RequestParam(value = Constants.SEARCH, required = false) String search, + HttpServletRequest request)throws Exception { + String companyName = StringUtil.getInfo(search, "companyName"); + List list = systemConfigService.select(companyName); + return getDataTable(list); + } + + @PostMapping(value = "/add") + @ApiOperation(value = "新增") + public String addResource(@RequestBody JSONObject obj, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int insert = systemConfigService.insertSystemConfig(obj, request); + return returnStr(objectMap, insert); + } + + @PutMapping(value = "/update") + @ApiOperation(value = "修改") + public String updateResource(@RequestBody JSONObject obj, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int update = systemConfigService.updateSystemConfig(obj, request); + return returnStr(objectMap, update); + } + + @DeleteMapping(value = "/delete") + @ApiOperation(value = "删除") + public String deleteResource(@RequestParam("id") Long id, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int delete = systemConfigService.deleteSystemConfig(id, request); + return returnStr(objectMap, delete); + } + + @DeleteMapping(value = "/deleteBatch") + @ApiOperation(value = "批量删除") + public String batchDeleteResource(@RequestParam("ids") String ids, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int delete = systemConfigService.batchDeleteSystemConfig(ids, request); + return returnStr(objectMap, delete); + } + + @GetMapping(value = "/checkIsNameExist") + @ApiOperation(value = "检查名称是否存在") + public String checkIsNameExist(@RequestParam Long id, @RequestParam(value ="name", required = false) String name, + HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int exist = systemConfigService.checkIsNameExist(id, name); + if(exist > 0) { + objectMap.put("status", true); + } else { + objectMap.put("status", false); + } + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } + + /** + * 获取当前租户的配置信息 + * @param request + * @return + */ + @GetMapping(value = "/getCurrentInfo") + @ApiOperation(value = "获取当前租户的配置信息") + public BaseResponseInfo getCurrentInfo(HttpServletRequest request) throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + try{ + List list = systemConfigService.getSystemConfig(); + res.code = 200; + if(list.size()>0) { + res.data = list.get(0); + } + } catch(Exception e){ + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 获取文件大小限制 + * @param request + * @return + * @throws Exception + */ + @GetMapping(value = "/fileSizeLimit") + @ApiOperation(value = "获取文件大小限制") + public BaseResponseInfo fileSizeLimit(HttpServletRequest request) throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + try{ + Long limit = 0L; + if(maxFileSize UTF-8 进行编码转换 + String imgPath = extractPathFromPattern(request); + if(StringUtil.isEmpty(imgPath) || imgPath=="null"){ + return; + } + // 其余处理略 + InputStream inputStream = null; + OutputStream outputStream = null; + try { + imgPath = imgPath.replace("..", ""); + if (imgPath.endsWith(",")) { + imgPath = imgPath.substring(0, imgPath.length() - 1); + } + String fileUrl = ""; + if(fileUploadType == 1) { + fileUrl = systemConfigService.getFileUrlLocal(imgPath); + inputStream = new BufferedInputStream(new FileInputStream(fileUrl)); + } else if(fileUploadType == 2) { + fileUrl = systemConfigService.getFileUrlAliOss(imgPath); + URL url = new URL(fileUrl); + HttpURLConnection conn = (HttpURLConnection) url.openConnection(); + conn.setRequestMethod("GET"); + conn.setConnectTimeout(5 * 1000); + inputStream = conn.getInputStream();// 通过输入流获取图片数据 + } + outputStream = response.getOutputStream(); + byte[] buf = new byte[1024]; + int len; + while ((len = inputStream.read(buf)) > 0) { + outputStream.write(buf, 0, len); + } + response.flushBuffer(); + } catch (IOException e) { + logger.error("预览文件失败" + e.getMessage()); + response.setStatus(404); + logger.error(e.getMessage(), e); + } catch (Exception e) { + response.setStatus(404); + logger.error(e.getMessage(), e); + } finally { + if (inputStream != null) { + try { + inputStream.close(); + } catch (IOException e) { + logger.error(e.getMessage(), e); + } + } + if (outputStream != null) { + try { + outputStream.close(); + } catch (IOException e) { + logger.error(e.getMessage(), e); + } + } + } + } + + /** + * 预览缩略图&下载文件 + * @param request + * @param response + */ + @GetMapping(value = "/static/mini/**") + @ApiOperation(value = "预览缩略图&下载文件") + public void viewMini(HttpServletRequest request, HttpServletResponse response) { + // ISO-8859-1 ==> UTF-8 进行编码转换 + String imgPath = extractPathFromPattern(request); + if(StringUtil.isEmpty(imgPath) || imgPath=="null"){ + return; + } + InputStream inputStream = null; + OutputStream outputStream = null; + try { + imgPath = imgPath.replace("..", ""); + if (imgPath.endsWith(",")) { + imgPath = imgPath.substring(0, imgPath.length() - 1); + } + String fileUrl = ""; + if(fileUploadType == 1) { + fileUrl = systemConfigService.getFileUrlLocal(imgPath); + inputStream = new BufferedInputStream(new FileInputStream(fileUrl)); + } else if(fileUploadType == 2) { + fileUrl = systemConfigService.getFileUrlAliOss(imgPath); + URL url = new URL(fileUrl); + HttpURLConnection conn = (HttpURLConnection) url.openConnection(); + conn.setRequestMethod("GET"); + conn.setConnectTimeout(5 * 1000); + inputStream = conn.getInputStream();// 通过输入流获取图片数据 + } + int index = fileUrl.lastIndexOf("."); + String ext = fileUrl.substring(index + 1); + BufferedImage image = systemConfigService.getImageMini(inputStream, 80); + outputStream = response.getOutputStream(); + ImageIO.write(image, ext, outputStream); + response.flushBuffer(); + } catch (Exception e) { + response.setStatus(404); + logger.error(e.getMessage(), e); + } finally { + if (outputStream != null) { + try { + outputStream.close(); + } catch (IOException e) { + logger.error(e.getMessage(), e); + } + } + } + } + + /** + * Excel导出统一接口 + * @param response + */ + @PostMapping(value = "/exportExcelByParam") + @ApiOperation(value = "生成excel表格") + public void exportExcelByParam(@RequestBody JSONObject jsonObject, + HttpServletResponse response) { + try { + String title = jsonObject.getString("title"); + String head = jsonObject.getString("head"); + String tip = jsonObject.getString("tip"); + JSONArray arr = jsonObject.getJSONArray("list"); + systemConfigService.exportExcelByParam(title, head, tip, arr, response); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + } + + /** + * 把指定URL后的字符串全部截断当成参数 + * 这么做是为了防止URL中包含中文或者特殊字符(/等)时,匹配不了的问题 + * @param request + * @return + */ + private static String extractPathFromPattern(final HttpServletRequest request) { + String path = (String) request.getAttribute(HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE); + String bestMatchPattern = (String) request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE); + return new AntPathMatcher().extractPathWithinPattern(bestMatchPattern, path); + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/controller/TenantController.java b/smtERP-boot/src/main/java/com/reallin/smt/controller/TenantController.java new file mode 100644 index 0000000..d19be1c --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/controller/TenantController.java @@ -0,0 +1,128 @@ +package com.reallin.smt.controller; + +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.base.BaseController; +import com.reallin.smt.base.TableDataInfo; +import com.reallin.smt.datasource.entities.Tenant; +import com.reallin.smt.datasource.entities.TenantEx; +import com.reallin.smt.service.TenantService; +import com.reallin.smt.utils.Constants; +import com.reallin.smt.utils.ErpInfo; +import com.reallin.smt.utils.StringUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static com.reallin.smt.utils.ResponseJsonUtil.returnJson; +import static com.reallin.smt.utils.ResponseJsonUtil.returnStr; + +/** + * @author ji_sheng_hua SMT + */ +@RestController +@RequestMapping(value = "/tenant") +@Api(tags = {"租户管理"}) +public class TenantController extends BaseController { + + @Resource + private TenantService tenantService; + + @GetMapping(value = "/info") + @ApiOperation(value = "根据id获取信息") + public String getList(@RequestParam("id") Long id, + HttpServletRequest request) throws Exception { + Tenant tenant = tenantService.getTenant(id); + Map objectMap = new HashMap<>(); + if(tenant != null) { + objectMap.put("info", tenant); + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } + + @GetMapping(value = "/list") + @ApiOperation(value = "获取信息列表") + public TableDataInfo getList(@RequestParam(value = Constants.SEARCH, required = false) String search, + HttpServletRequest request)throws Exception { + String loginName = StringUtil.getInfo(search, "loginName"); + String type = StringUtil.getInfo(search, "type"); + String enabled = StringUtil.getInfo(search, "enabled"); + String remark = StringUtil.getInfo(search, "remark"); + List list = tenantService.select(loginName, type, enabled, remark); + return getDataTable(list); + } + + @PostMapping(value = "/add") + @ApiOperation(value = "新增") + public String addResource(@RequestBody JSONObject obj, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int insert = tenantService.insertTenant(obj, request); + return returnStr(objectMap, insert); + } + + @PutMapping(value = "/update") + @ApiOperation(value = "修改") + public String updateResource(@RequestBody JSONObject obj, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int update = tenantService.updateTenant(obj, request); + return returnStr(objectMap, update); + } + + @DeleteMapping(value = "/delete") + @ApiOperation(value = "删除") + public String deleteResource(@RequestParam("id") Long id, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int delete = tenantService.deleteTenant(id, request); + return returnStr(objectMap, delete); + } + + @DeleteMapping(value = "/deleteBatch") + @ApiOperation(value = "批量删除") + public String batchDeleteResource(@RequestParam("ids") String ids, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int delete = tenantService.batchDeleteTenant(ids, request); + return returnStr(objectMap, delete); + } + + @GetMapping(value = "/checkIsNameExist") + @ApiOperation(value = "检查名称是否存在") + public String checkIsNameExist(@RequestParam Long id, @RequestParam(value ="name", required = false) String name, + HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int exist = tenantService.checkIsNameExist(id, name); + if(exist > 0) { + objectMap.put("status", true); + } else { + objectMap.put("status", false); + } + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } + + /** + * 批量设置状态-启用或者禁用 + * @param jsonObject + * @param request + * @return + */ + @PostMapping(value = "/batchSetStatus") + @ApiOperation(value = "批量设置状态") + public String batchSetStatus(@RequestBody JSONObject jsonObject, + HttpServletRequest request)throws Exception { + Boolean status = jsonObject.getBoolean("status"); + String ids = jsonObject.getString("ids"); + Map objectMap = new HashMap<>(); + int res = tenantService.batchSetStatus(status, ids); + if(res > 0) { + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/controller/TpmDoubleController.java b/smtERP-boot/src/main/java/com/reallin/smt/controller/TpmDoubleController.java new file mode 100644 index 0000000..e121fd6 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/controller/TpmDoubleController.java @@ -0,0 +1,40 @@ +package com.reallin.smt.controller; + +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.datasource.entities.AssetInventory; +import com.reallin.smt.service.AssetManagementService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.Map; + +import static com.reallin.smt.utils.ResponseJsonUtil.returnJson; + +/** + * 参考设备服务的兼容入口。保留原接口的拼写,便于协同服务平滑切换。 + */ +@RestController +@RequestMapping("/tpmDouble") +@Api(tags = "盘点协同兼容接口") +public class TpmDoubleController { + @Resource + private AssetManagementService service; + + @PostMapping("/cteatePdTasks") + @ApiOperation("一键为全部设备创建盘点任务") + public String createPdTasks(@RequestBody(required = false) JSONObject request) throws Exception { + JSONObject input = request == null ? new JSONObject() : request; + input.put("scopeType", "DEVICE"); + input.put("source", "TPM_DOUBLE"); + AssetInventory inventory = service.createInventory(input, "TPM_DOUBLE"); + Map data = new HashMap<>(); + data.put("inventory", inventory); + return returnJson(data, "创建成功", 200); + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/controller/UnitController.java b/smtERP-boot/src/main/java/com/reallin/smt/controller/UnitController.java new file mode 100644 index 0000000..feb3383 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/controller/UnitController.java @@ -0,0 +1,150 @@ +package com.reallin.smt.controller; + +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.base.BaseController; +import com.reallin.smt.base.TableDataInfo; +import com.reallin.smt.datasource.entities.Unit; +import com.reallin.smt.service.UnitService; +import com.reallin.smt.utils.*; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static com.reallin.smt.utils.ResponseJsonUtil.returnJson; +import static com.reallin.smt.utils.ResponseJsonUtil.returnStr; + +/** + * Description + * + * @Author: qiankunpingtai + * @Date: 2019/4/1 15:38 + */ +@RestController +@RequestMapping(value = "/unit") +@Api(tags = {"单位管理"}) +public class UnitController extends BaseController { + private Logger logger = LoggerFactory.getLogger(UnitController.class); + + @Resource + private UnitService unitService; + + @GetMapping(value = "/info") + @ApiOperation(value = "根据id获取信息") + public String getList(@RequestParam("id") Long id, + HttpServletRequest request) throws Exception { + Unit unit = unitService.getUnit(id); + Map objectMap = new HashMap<>(); + if(unit != null) { + objectMap.put("info", unit); + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } + + @GetMapping(value = "/list") + @ApiOperation(value = "获取信息列表") + public TableDataInfo getList(@RequestParam(value = Constants.SEARCH, required = false) String search, + HttpServletRequest request)throws Exception { + String name = StringUtil.getInfo(search, "name"); + List list = unitService.select(name); + return getDataTable(list); + } + + @PostMapping(value = "/add") + @ApiOperation(value = "新增") + public String addResource(@RequestBody JSONObject obj, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int insert = unitService.insertUnit(obj, request); + return returnStr(objectMap, insert); + } + + @PutMapping(value = "/update") + @ApiOperation(value = "修改") + public String updateResource(@RequestBody JSONObject obj, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int update = unitService.updateUnit(obj, request); + return returnStr(objectMap, update); + } + + @DeleteMapping(value = "/delete") + @ApiOperation(value = "删除") + public String deleteResource(@RequestParam("id") Long id, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int delete = unitService.deleteUnit(id, request); + return returnStr(objectMap, delete); + } + + @DeleteMapping(value = "/deleteBatch") + @ApiOperation(value = "批量删除") + public String batchDeleteResource(@RequestParam("ids") String ids, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int delete = unitService.batchDeleteUnit(ids, request); + return returnStr(objectMap, delete); + } + + @GetMapping(value = "/checkIsNameExist") + @ApiOperation(value = "检查名称是否存在") + public String checkIsNameExist(@RequestParam Long id, @RequestParam(value ="name", required = false) String name, + HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int exist = unitService.checkIsNameExist(id, name); + if(exist > 0) { + objectMap.put("status", true); + } else { + objectMap.put("status", false); + } + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } + + /** + * 单位列表 + * @param request + * @return + * @throws Exception + */ + @GetMapping(value = "/getAllList") + @ApiOperation(value = "单位列表") + public BaseResponseInfo getAllList(HttpServletRequest request) throws Exception{ + BaseResponseInfo res = new BaseResponseInfo(); + try { + List unitList = unitService.getUnit(); + res.code = 200; + res.data = unitList; + } catch(Exception e){ + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 批量设置状态-启用或者禁用 + * @param jsonObject + * @param request + * @return + */ + @PostMapping(value = "/batchSetStatus") + @ApiOperation(value = "批量设置状态") + public String batchSetStatus(@RequestBody JSONObject jsonObject, + HttpServletRequest request)throws Exception { + Boolean status = jsonObject.getBoolean("status"); + String ids = jsonObject.getString("ids"); + Map objectMap = new HashMap<>(); + int res = unitService.batchSetStatus(status, ids); + if(res > 0) { + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/controller/UserBusinessController.java b/smtERP-boot/src/main/java/com/reallin/smt/controller/UserBusinessController.java new file mode 100644 index 0000000..b25c9f0 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/controller/UserBusinessController.java @@ -0,0 +1,199 @@ +package com.reallin.smt.controller; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.datasource.entities.UserBusiness; +import com.reallin.smt.service.UserBusinessService; +import com.reallin.smt.utils.BaseResponseInfo; +import com.reallin.smt.utils.ErpInfo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static com.reallin.smt.utils.ResponseJsonUtil.returnJson; +import static com.reallin.smt.utils.ResponseJsonUtil.returnStr; + +/** + * @author ji_sheng_hua jshERP + */ +@RestController +@RequestMapping(value = "/userBusiness") +@Api(tags = {"用户角色模块的关系"}) +public class UserBusinessController { + private Logger logger = LoggerFactory.getLogger(UserBusinessController.class); + + @Resource + private UserBusinessService userBusinessService; + + @GetMapping(value = "/info") + @ApiOperation(value = "根据id获取信息") + public String getList(@RequestParam("id") Long id, + HttpServletRequest request) throws Exception { + UserBusiness userBusiness = userBusinessService.getUserBusiness(id); + Map objectMap = new HashMap<>(); + if(userBusiness != null) { + objectMap.put("info", userBusiness); + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } + + @PostMapping(value = "/add") + @ApiOperation(value = "新增") + public String addResource(@RequestBody JSONObject obj, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int insert = userBusinessService.insertUserBusiness(obj, request); + return returnStr(objectMap, insert); + } + + @PutMapping(value = "/update") + @ApiOperation(value = "修改") + public String updateResource(@RequestBody JSONObject obj, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int update = userBusinessService.updateUserBusiness(obj, request); + return returnStr(objectMap, update); + } + + @DeleteMapping(value = "/delete") + @ApiOperation(value = "删除") + public String deleteResource(@RequestParam("id") Long id, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int delete = userBusinessService.deleteUserBusiness(id, request); + return returnStr(objectMap, delete); + } + + @DeleteMapping(value = "/deleteBatch") + @ApiOperation(value = "批量删除") + public String batchDeleteResource(@RequestParam("ids") String ids, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int delete = userBusinessService.batchDeleteUserBusiness(ids, request); + return returnStr(objectMap, delete); + } + + @GetMapping(value = "/checkIsNameExist") + @ApiOperation(value = "检查名称是否存在") + public String checkIsNameExist(@RequestParam Long id, @RequestParam(value ="name", required = false) String name, + HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int exist = userBusinessService.checkIsNameExist(id, name); + if(exist > 0) { + objectMap.put("status", true); + } else { + objectMap.put("status", false); + } + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } + + /** + * 获取信息 + * @param keyId + * @param type + * @param request + * @return + * @throws Exception + */ + @GetMapping(value = "/getBasicData") + @ApiOperation(value = "获取信息") + public BaseResponseInfo getBasicData(@RequestParam(value = "KeyId") String keyId, + @RequestParam(value = "Type") String type, + HttpServletRequest request)throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + try { + List list = userBusinessService.getBasicData(keyId, type); + Map mapData = new HashMap(); + mapData.put("userBusinessList", list); + res.code = 200; + res.data = mapData; + } catch (Exception e) { + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "查询权限失败"; + } + return res; + } + + /** + * 校验存在 + * @param type + * @param keyId + * @param request + * @return + * @throws Exception + */ + @GetMapping(value = "/checkIsValueExist") + @ApiOperation(value = "校验存在") + public String checkIsValueExist(@RequestParam(value ="type", required = false) String type, + @RequestParam(value ="keyId", required = false) String keyId, + HttpServletRequest request)throws Exception { + Map objectMap = new HashMap(); + Long id = userBusinessService.checkIsValueExist(type, keyId); + objectMap.put("id", id); + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } + + /** + * 更新角色的按钮权限 + * @param jsonObject + * @param request + * @return + */ + @PostMapping(value = "/updateBtnStr") + @ApiOperation(value = "更新角色的按钮权限") + public BaseResponseInfo updateBtnStr(@RequestBody JSONObject jsonObject, + HttpServletRequest request)throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + try { + String roleId = jsonObject.getString("roleId"); + String btnStr = jsonObject.getString("btnStr"); + String keyId = roleId; + String type = "RoleFunctions"; + int back = userBusinessService.updateBtnStr(keyId, type, btnStr); + if(back > 0) { + res.code = 200; + res.data = "成功"; + } + } catch (Exception e) { + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "更新权限失败"; + } + return res; + } + + /** + * 根据KeyId和类型更新一个值 + * @param jsonObject + * @param request + * @return + */ + @PostMapping(value = "/updateOneValueByKeyIdAndType") + @ApiOperation(value = "根据KeyId和类型更新一个值") + public BaseResponseInfo updateOneValueByKeyIdAndType(@RequestBody JSONObject jsonObject, + HttpServletRequest request)throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + try { + String type = jsonObject.getString("type"); + JSONArray keyIdArr = jsonObject.getJSONArray("keyIds"); + String oneValue = jsonObject.getString("oneValue"); + int back = userBusinessService.updateOneValueByKeyIdAndType(type, keyIdArr, oneValue); + if(back > 0) { + res.code = 200; + res.data = "成功"; + } + } catch (Exception e) { + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "更新权限失败"; + } + return res; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/controller/UserController.java b/smtERP-boot/src/main/java/com/reallin/smt/controller/UserController.java new file mode 100644 index 0000000..4c54bd2 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/controller/UserController.java @@ -0,0 +1,609 @@ +package com.reallin.smt.controller; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.base.BaseController; +import com.reallin.smt.base.TableDataInfo; +import com.reallin.smt.constants.BusinessConstants; +import com.reallin.smt.constants.ExceptionConstants; +import com.reallin.smt.datasource.entities.User; +import com.reallin.smt.datasource.entities.UserEx; +import com.reallin.smt.datasource.vo.TreeNodeEx; +import com.reallin.smt.exception.BusinessRunTimeException; +import com.reallin.smt.service.*; +import com.reallin.smt.utils.*; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; + +import static com.reallin.smt.utils.ResponseJsonUtil.returnJson; +import static com.reallin.smt.utils.ResponseJsonUtil.returnStr; + +/** + * @author ji_sheng_hua SMT + */ +@RestController +@RequestMapping(value = "/user") +@Api(tags = {"用户管理"}) +public class UserController extends BaseController { + private Logger logger = LoggerFactory.getLogger(UserController.class); + + @Value("${manage.roleId}") + private Integer manageRoleId; + + @Resource + private UserService userService; + + @Resource + private RoleService roleService; + + + @Resource + private UserBusinessService userBusinessService; + + @Resource + private RedisService redisService; + + private static String SUCCESS = "操作成功"; + private static String ERROR = "操作失败"; + + @GetMapping(value = "/info") + @ApiOperation(value = "根据id获取信息") + public String getList(@RequestParam("id") Long id, + HttpServletRequest request) throws Exception { + User user = userService.getUser(id); + Map objectMap = new HashMap<>(); + if(user != null) { + objectMap.put("info", user); + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } + + @GetMapping(value = "/list") + @ApiOperation(value = "获取信息列表") + public TableDataInfo getList(@RequestParam(value = Constants.SEARCH, required = false) String search, + HttpServletRequest request)throws Exception { + String userName = StringUtil.getInfo(search, "userName"); + String loginName = StringUtil.getInfo(search, "loginName"); + List list = userService.select(userName, loginName); + return getDataTable(list); + } + + @PostMapping(value = "/add") + @ApiOperation(value = "新增") + public String addResource(@RequestBody JSONObject obj, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int insert = userService.insertUser(obj, request); + return returnStr(objectMap, insert); + } + + @PutMapping(value = "/update") + @ApiOperation(value = "修改") + public String updateResource(@RequestBody JSONObject obj, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int update = userService.updateUser(obj, request); + return returnStr(objectMap, update); + } + + @DeleteMapping(value = "/delete") + @ApiOperation(value = "删除") + public String deleteResource(@RequestParam("id") Long id, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int delete = userService.deleteUser(id, request); + return returnStr(objectMap, delete); + } + + @DeleteMapping(value = "/deleteBatch") + @ApiOperation(value = "批量删除") + public String batchDeleteResource(@RequestParam("ids") String ids, HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int delete = userService.batchDeleteUser(ids, request); + return returnStr(objectMap, delete); + } + + @GetMapping(value = "/checkIsNameExist") + @ApiOperation(value = "检查名称是否存在") + public String checkIsNameExist(@RequestParam Long id, @RequestParam(value ="name", required = false) String name, + HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + int exist = userService.checkIsNameExist(id, name); + if(exist > 0) { + objectMap.put("status", true); + } else { + objectMap.put("status", false); + } + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } + + @PostMapping(value = "/login") + @ApiOperation(value = "登录") + public BaseResponseInfo login(@RequestBody UserEx userParam, HttpServletRequest request)throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + try { + userService.validateCaptcha(userParam.getCode(), userParam.getUuid()); + Map data = userService.login(userParam.getLoginName().trim(), userParam.getPassword().trim(), request); + res.code = 200; + res.data = data; + } catch (BusinessRunTimeException e) { + throw new BusinessRunTimeException(e.getCode(), e.getMessage()); + } catch(Exception e){ + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "用户登录失败"; + } + return res; + } + + @PostMapping(value = "/weixinLogin") + @ApiOperation(value = "微信登录") + public BaseResponseInfo weixinLogin(@RequestBody JSONObject jsonObject, + HttpServletRequest request)throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + try { + String weixinCode = jsonObject.getString("weixinCode"); + User user = userService.getUserByWeixinCode(weixinCode); + if(user == null) { + res.code = 501; + res.data = "微信未绑定"; + } else { + logger.info("微信登录:" + user.getLoginName()); + Map data = userService.login(user.getLoginName().trim(), user.getPassword().trim(), request); + res.code = 200; + res.data = data; + } + } catch(Exception e){ + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "用户登录失败"; + } + return res; + } + + @PostMapping(value = "/weixinBind") + @ApiOperation(value = "绑定微信") + public String weixinBind(@RequestBody JSONObject jsonObject, + HttpServletRequest request)throws Exception { + Map objectMap = new HashMap<>(); + String loginName = jsonObject.getString("loginName"); + String password = jsonObject.getString("password"); + String weixinCode = jsonObject.getString("weixinCode"); + int res = userService.weixinBind(loginName, password, weixinCode); + if(res > 0) { + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } + + @GetMapping(value = "/getUserSession") + @ApiOperation(value = "获取用户信息") + public BaseResponseInfo getSessionUser(HttpServletRequest request)throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + try { + Map data = new HashMap<>(); + Long userId = Long.parseLong(redisService.getObjectFromSessionByKey(request,"userId").toString()); + User user = userService.getUser(userId); + user.setPassword(null); + data.put("user", user); + res.code = 200; + res.data = data; + } catch(Exception e){ + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取session失败"; + } + return res; + } + + @GetMapping(value = "/logout") + @ApiOperation(value = "退出") + public BaseResponseInfo logout(HttpServletRequest request, HttpServletResponse response)throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + try { + redisService.deleteObjectBySession(request,"userId"); + redisService.deleteObjectBySession(request,"clientIp"); + } catch(Exception e){ + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "退出失败"; + } + return res; + } + + @PostMapping(value = "/resetPwd") + @ApiOperation(value = "重置密码") + public String resetPwd(@RequestBody JSONObject jsonObject, + HttpServletRequest request) throws Exception { + Map objectMap = new HashMap<>(); + Long id = jsonObject.getLong("id"); + String md5Pwd = jsonObject.getString("password"); + int update = userService.resetPwd(md5Pwd, id, request); + if(update > 0) { + return returnJson(objectMap, SUCCESS, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ERROR, ErpInfo.ERROR.code); + } + } + + @PutMapping(value = "/updatePwd") + @ApiOperation(value = "更新密码") + public String updatePwd(@RequestBody JSONObject jsonObject, HttpServletRequest request)throws Exception { + Integer flag = 0; + Map objectMap = new HashMap(); + try { + String info = ""; + Long userId = jsonObject.getLong("userId"); + String oldpwd = jsonObject.getString("oldpassword"); + String password = jsonObject.getString("password"); + User user = userService.getUser(userId); + //必须和原始密码一致才可以更新密码 + if (oldpwd.equalsIgnoreCase(user.getPassword())) { + user.setPassword(password); + flag = userService.updateUserByObj(user, request); //1-成功 + info = "修改成功"; + } else { + flag = 2; //原始密码输入错误 + info = "原始密码输入错误"; + } + objectMap.put("status", flag); + if(flag > 0) { + return returnJson(objectMap, info, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ERROR, ErpInfo.ERROR.code); + } + } catch (Exception e) { + logger.error(">>>>>>>>>>>>>修改用户ID为 : " + jsonObject.getLong("userId") + "密码信息失败", e); + flag = 3; + objectMap.put("status", flag); + return returnJson(objectMap, ERROR, ErpInfo.ERROR.code); + } + } + + /** + * 用户列表,用于用户下拉框 + * @param request + * @return + * @throws Exception + */ + @GetMapping(value = "/getUserList") + @ApiOperation(value = "用户列表") + public JSONArray getUserList(HttpServletRequest request)throws Exception { + JSONArray dataArray = new JSONArray(); + try { + List dataList = userService.getUser(request); + if (null != dataList) { + for (User user : dataList) { + JSONObject item = new JSONObject(); + item.put("id", user.getId()); + item.put("userName", user.getUsername()); + dataArray.add(item); + } + } + } catch(Exception e){ + logger.error(e.getMessage(), e); + } + return dataArray; + } + + /** + * create by: cjl + * description: + * 新增用户及部门和用户关系 + * create time: 2019/3/8 16:06 + * @Param: beanJson + * @return java.lang.Object + */ + @PostMapping("/addUser") + @ApiOperation(value = "新增用户") + @ResponseBody + public Object addUser(@RequestBody JSONObject obj, HttpServletRequest request)throws Exception{ + JSONObject result = ExceptionConstants.standardSuccess(); + UserEx ue= JSONObject.parseObject(obj.toJSONString(), UserEx.class); + userService.addUserAndOrgUserRel(ue, request); + return result; + } + + /** + * create by: cjl + * description: + * 修改用户及部门和用户关系 + * create time: 2019/3/8 16:06 + * @Param: beanJson + * @return java.lang.Object + */ + @PutMapping("/updateUser") + @ApiOperation(value = "修改用户") + @ResponseBody + public Object updateUser(@RequestBody JSONObject obj, HttpServletRequest request)throws Exception{ + JSONObject result = ExceptionConstants.standardSuccess(); + UserEx ue= JSONObject.parseObject(obj.toJSONString(), UserEx.class); + userService.updateUserAndOrgUserRel(ue, request); + return result; + } + + /** + * 分配用户角色 + * @param obj + * @param request + * @return + * @throws Exception + */ + @PostMapping("/updateUserRole") + @ApiOperation(value = "分配用户角色") + @ResponseBody + public BaseResponseInfo updateUserRole(@RequestBody JSONObject obj, HttpServletRequest request)throws Exception{ + BaseResponseInfo res = new BaseResponseInfo(); + try { + Long userId = obj.getLong("id"); + Long roleId = obj.getLong("roleId"); + if(userId == null || roleId == null) { + res.code = 500; + res.data = "参数错误"; + return res; + } + User user = userService.getUser(userId); + if(user == null) { + res.code = 500; + res.data = "用户不存在"; + return res; + } + //更新用户与角色的关系 + JSONObject ubObj = new JSONObject(); + ubObj.put("type", "UserRole"); + ubObj.put("keyid", userId); + ubObj.put("value", "[" + roleId + "]"); + Long ubId = userBusinessService.checkIsValueExist("UserRole", userId.toString()); + if(ubId != null) { + ubObj.put("id", ubId); + userBusinessService.updateUserBusiness(ubObj, request); + } else { + userBusinessService.insertUserBusiness(ubObj, request); + } + res.code = 200; + res.data = "操作成功"; + } catch (Exception e) { + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "操作失败"; + } + return res; + } + + /** + * 注册用户 + * @param ue + * @return + * @throws Exception + */ + @PostMapping(value = "/registerUser") + @ApiOperation(value = "注册用户") + public Object registerUser(@RequestBody UserEx ue, + HttpServletRequest request)throws Exception{ + JSONObject result = ExceptionConstants.standardSuccess(); + ue.setUsername(ue.getLoginName()); + userService.validateCaptcha(ue.getCode(), ue.getUuid()); + userService.checkLoginName(ue); //检查登录名 + userService.registerUser(ue,manageRoleId,request); + return result; + } + + /** + * 获取部门用户树 + * @return + * @throws Exception + */ + @RequestMapping("/getOrganizationUserTree") + @ApiOperation(value = "获取部门用户树") + public JSONArray getOrganizationUserTree()throws Exception{ + JSONArray arr=new JSONArray(); + List organizationUserTree= userService.getOrganizationUserTree(); + if(organizationUserTree!=null&&organizationUserTree.size()>0){ + for(TreeNodeEx node:organizationUserTree){ + String str=JSON.toJSONString(node); + JSONObject obj=JSON.parseObject(str); + arr.add(obj) ; + } + } + return arr; + } + + @GetMapping(value = "/getCurrentPriceLimit") + @ApiOperation(value = "查询当前用户的价格屏蔽") + public BaseResponseInfo getCurrentPriceLimit(HttpServletRequest request)throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + try { + Map data = new HashMap<>(); + String priceLimit = roleService.getCurrentPriceLimit(request); + data.put("priceLimit", priceLimit); + res.code = 200; + res.data = data; + } catch(Exception e){ + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取session失败"; + } + return res; + } + + /** + * 获取当前用户的角色类型 + * @param request + * @return + */ + @GetMapping("/getRoleTypeByCurrentUser") + @ApiOperation(value = "获取当前用户的角色类型") + public BaseResponseInfo getRoleTypeByCurrentUser(HttpServletRequest request) { + BaseResponseInfo res = new BaseResponseInfo(); + try { + Map data = new HashMap(); + Long userId = userService.getUserId(request); + String roleType = userService.getRoleTypeByUserId(userId).getType(); //角色类型 + data.put("roleType", roleType); + res.code = 200; + res.data = data; + } catch(Exception e){ + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取失败"; + } + return res; + } + + /** + * 获取当前用户的按钮权限 + * @param request + * @return + */ + @GetMapping("/getUserBtnByCurrentUser") + @ApiOperation(value = "获取当前用户的按钮权限") + public BaseResponseInfo getUserBtnByCurrentUser(HttpServletRequest request) { + BaseResponseInfo res = new BaseResponseInfo(); + try { + Map data = new HashMap<>(); + Long userId = userService.getUserId(request); + JSONArray btnStrArr = userService.getBtnStrArrById(userId); + data.put("userBtn", btnStrArr); + res.code = 200; + res.data = data; + } catch(Exception e){ + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取失败"; + } + return res; + } + + /** + * 获取对应的用户显示 + * @param type + * @param oneValue + * @param request + * @return + */ + @GetMapping(value = "/getUserWithChecked") + @ApiOperation(value = "获取对应的用户显示") + public JSONArray getUserWithChecked(@RequestParam("UBType") String type, @RequestParam("UBValue") String oneValue, + HttpServletRequest request) throws Exception{ + JSONArray arr = new JSONArray(); + try { + //获取权限信息 + List keyIdList = userBusinessService.getUBKeyIdByTypeAndOneValue(type, oneValue); + Map keyIdMap = keyIdList.stream().collect(Collectors.toMap(Function.identity(),Function.identity())); + List dataList = userService.getUser(request); + //开始拼接json数据 + JSONObject outer = new JSONObject(); + outer.put("id", 0); + outer.put("key", 0); + outer.put("value", 0); + outer.put("title", "用户列表"); + outer.put("attributes", "用户列表"); + //存放数据json数组 + JSONArray dataArray = new JSONArray(); + if (null != dataList) { + for (User user : dataList) { + JSONObject item = new JSONObject(); + item.put("id", user.getId()); + item.put("key", user.getId()); + item.put("value", user.getId()); + item.put("title", user.getLoginName() + "(" + user.getUsername() + ")"); + item.put("attributes", user.getLoginName()); + if (keyIdMap.get(user.getId())!=null) { + item.put("checked", true); + } + dataArray.add(item); + } + } + outer.put("children", dataArray); + arr.add(outer); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return arr; + } + + /** + * 获取随机校验码 + * @param response + * @return + */ + @GetMapping(value = "/randomImage") + @ApiOperation(value = "获取随机校验码") + public BaseResponseInfo randomImage(HttpServletResponse response){ + BaseResponseInfo res = new BaseResponseInfo(); + try { + Map data = new HashMap<>(); + String uuid = UUID.randomUUID().toString().replaceAll("-", "") + ""; + String verifyKey = BusinessConstants.CAPTCHA_CODE_KEY + uuid; + String codeNum = Tools.getCharAndNum(4); + redisService.storageCaptchaObject(verifyKey, codeNum); + String base64 = RandImageUtil.generate(codeNum); + data.put("uuid", uuid); + data.put("base64", base64); + res.code = 200; + res.data = data; + } catch (Exception e) { + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取失败"; + } + return res; + } + + /** + * 批量设置状态-启用或者禁用 + * @param jsonObject + * @param request + * @return + */ + @PostMapping(value = "/batchSetStatus") + @ApiOperation(value = "批量设置状态") + public String batchSetStatus(@RequestBody JSONObject jsonObject, + HttpServletRequest request)throws Exception { + Byte status = jsonObject.getByte("status"); + String ids = jsonObject.getString("ids"); + Map objectMap = new HashMap<>(); + int res = userService.batchSetStatus(status, ids, request); + if(res > 0) { + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } + + /** + * 获取当前用户的用户数量和租户信息 + * @param request + * @return + */ + @GetMapping(value = "/infoWithTenant") + @ApiOperation(value = "获取当前用户数量") + public BaseResponseInfo infoWithTenant(HttpServletRequest request){ + BaseResponseInfo res = new BaseResponseInfo(); + try { + Map data = new HashMap<>(); + Long userId = Long.parseLong(redisService.getObjectFromSessionByKey(request,"userId").toString()); + int userCurrentNum = userService.getUser(request).size(); + data.put("userCurrentNum", userCurrentNum); + res.code = 200; + res.data = data; + } catch (Exception e) { + logger.error(e.getMessage(), e); + res.code = 500; + res.data = "获取失败"; + } + return res; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/Account.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/Account.java new file mode 100644 index 0000000..cc6d73c --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/Account.java @@ -0,0 +1,115 @@ +package com.reallin.smt.datasource.entities; + +import java.math.BigDecimal; + +public class Account { + private Long id; + + private String name; + + private String serialNo; + + private BigDecimal initialAmount; + + private BigDecimal currentAmount; + + private String remark; + + private Boolean enabled; + + private String sort; + + private Boolean isDefault; + + private Long tenantId; + + private String deleteFlag; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name == null ? null : name.trim(); + } + + public String getSerialNo() { + return serialNo; + } + + public void setSerialNo(String serialNo) { + this.serialNo = serialNo == null ? null : serialNo.trim(); + } + + public BigDecimal getInitialAmount() { + return initialAmount; + } + + public void setInitialAmount(BigDecimal initialAmount) { + this.initialAmount = initialAmount; + } + + public BigDecimal getCurrentAmount() { + return currentAmount; + } + + public void setCurrentAmount(BigDecimal currentAmount) { + this.currentAmount = currentAmount; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark == null ? null : remark.trim(); + } + + public Boolean getEnabled() { + return enabled; + } + + public void setEnabled(Boolean enabled) { + this.enabled = enabled; + } + + public String getSort() { + return sort; + } + + public void setSort(String sort) { + this.sort = sort == null ? null : sort.trim(); + } + + public Boolean getIsDefault() { + return isDefault; + } + + public void setIsDefault(Boolean isDefault) { + this.isDefault = isDefault; + } + + public Long getTenantId() { + return tenantId; + } + + public void setTenantId(Long tenantId) { + this.tenantId = tenantId; + } + + public String getDeleteFlag() { + return deleteFlag; + } + + public void setDeleteFlag(String deleteFlag) { + this.deleteFlag = deleteFlag == null ? null : deleteFlag.trim(); + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/AccountExample.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/AccountExample.java new file mode 100644 index 0000000..1c1b723 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/AccountExample.java @@ -0,0 +1,910 @@ +package com.reallin.smt.datasource.entities; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + +public class AccountExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public AccountExample() { + oredCriteria = new ArrayList<>(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList<>(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andNameIsNull() { + addCriterion("name is null"); + return (Criteria) this; + } + + public Criteria andNameIsNotNull() { + addCriterion("name is not null"); + return (Criteria) this; + } + + public Criteria andNameEqualTo(String value) { + addCriterion("name =", value, "name"); + return (Criteria) this; + } + + public Criteria andNameNotEqualTo(String value) { + addCriterion("name <>", value, "name"); + return (Criteria) this; + } + + public Criteria andNameGreaterThan(String value) { + addCriterion("name >", value, "name"); + return (Criteria) this; + } + + public Criteria andNameGreaterThanOrEqualTo(String value) { + addCriterion("name >=", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLessThan(String value) { + addCriterion("name <", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLessThanOrEqualTo(String value) { + addCriterion("name <=", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLike(String value) { + addCriterion("name like", value, "name"); + return (Criteria) this; + } + + public Criteria andNameNotLike(String value) { + addCriterion("name not like", value, "name"); + return (Criteria) this; + } + + public Criteria andNameIn(List values) { + addCriterion("name in", values, "name"); + return (Criteria) this; + } + + public Criteria andNameNotIn(List values) { + addCriterion("name not in", values, "name"); + return (Criteria) this; + } + + public Criteria andNameBetween(String value1, String value2) { + addCriterion("name between", value1, value2, "name"); + return (Criteria) this; + } + + public Criteria andNameNotBetween(String value1, String value2) { + addCriterion("name not between", value1, value2, "name"); + return (Criteria) this; + } + + public Criteria andSerialNoIsNull() { + addCriterion("serial_no is null"); + return (Criteria) this; + } + + public Criteria andSerialNoIsNotNull() { + addCriterion("serial_no is not null"); + return (Criteria) this; + } + + public Criteria andSerialNoEqualTo(String value) { + addCriterion("serial_no =", value, "serialNo"); + return (Criteria) this; + } + + public Criteria andSerialNoNotEqualTo(String value) { + addCriterion("serial_no <>", value, "serialNo"); + return (Criteria) this; + } + + public Criteria andSerialNoGreaterThan(String value) { + addCriterion("serial_no >", value, "serialNo"); + return (Criteria) this; + } + + public Criteria andSerialNoGreaterThanOrEqualTo(String value) { + addCriterion("serial_no >=", value, "serialNo"); + return (Criteria) this; + } + + public Criteria andSerialNoLessThan(String value) { + addCriterion("serial_no <", value, "serialNo"); + return (Criteria) this; + } + + public Criteria andSerialNoLessThanOrEqualTo(String value) { + addCriterion("serial_no <=", value, "serialNo"); + return (Criteria) this; + } + + public Criteria andSerialNoLike(String value) { + addCriterion("serial_no like", value, "serialNo"); + return (Criteria) this; + } + + public Criteria andSerialNoNotLike(String value) { + addCriterion("serial_no not like", value, "serialNo"); + return (Criteria) this; + } + + public Criteria andSerialNoIn(List values) { + addCriterion("serial_no in", values, "serialNo"); + return (Criteria) this; + } + + public Criteria andSerialNoNotIn(List values) { + addCriterion("serial_no not in", values, "serialNo"); + return (Criteria) this; + } + + public Criteria andSerialNoBetween(String value1, String value2) { + addCriterion("serial_no between", value1, value2, "serialNo"); + return (Criteria) this; + } + + public Criteria andSerialNoNotBetween(String value1, String value2) { + addCriterion("serial_no not between", value1, value2, "serialNo"); + return (Criteria) this; + } + + public Criteria andInitialAmountIsNull() { + addCriterion("initial_amount is null"); + return (Criteria) this; + } + + public Criteria andInitialAmountIsNotNull() { + addCriterion("initial_amount is not null"); + return (Criteria) this; + } + + public Criteria andInitialAmountEqualTo(BigDecimal value) { + addCriterion("initial_amount =", value, "initialAmount"); + return (Criteria) this; + } + + public Criteria andInitialAmountNotEqualTo(BigDecimal value) { + addCriterion("initial_amount <>", value, "initialAmount"); + return (Criteria) this; + } + + public Criteria andInitialAmountGreaterThan(BigDecimal value) { + addCriterion("initial_amount >", value, "initialAmount"); + return (Criteria) this; + } + + public Criteria andInitialAmountGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("initial_amount >=", value, "initialAmount"); + return (Criteria) this; + } + + public Criteria andInitialAmountLessThan(BigDecimal value) { + addCriterion("initial_amount <", value, "initialAmount"); + return (Criteria) this; + } + + public Criteria andInitialAmountLessThanOrEqualTo(BigDecimal value) { + addCriterion("initial_amount <=", value, "initialAmount"); + return (Criteria) this; + } + + public Criteria andInitialAmountIn(List values) { + addCriterion("initial_amount in", values, "initialAmount"); + return (Criteria) this; + } + + public Criteria andInitialAmountNotIn(List values) { + addCriterion("initial_amount not in", values, "initialAmount"); + return (Criteria) this; + } + + public Criteria andInitialAmountBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("initial_amount between", value1, value2, "initialAmount"); + return (Criteria) this; + } + + public Criteria andInitialAmountNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("initial_amount not between", value1, value2, "initialAmount"); + return (Criteria) this; + } + + public Criteria andCurrentAmountIsNull() { + addCriterion("current_amount is null"); + return (Criteria) this; + } + + public Criteria andCurrentAmountIsNotNull() { + addCriterion("current_amount is not null"); + return (Criteria) this; + } + + public Criteria andCurrentAmountEqualTo(BigDecimal value) { + addCriterion("current_amount =", value, "currentAmount"); + return (Criteria) this; + } + + public Criteria andCurrentAmountNotEqualTo(BigDecimal value) { + addCriterion("current_amount <>", value, "currentAmount"); + return (Criteria) this; + } + + public Criteria andCurrentAmountGreaterThan(BigDecimal value) { + addCriterion("current_amount >", value, "currentAmount"); + return (Criteria) this; + } + + public Criteria andCurrentAmountGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("current_amount >=", value, "currentAmount"); + return (Criteria) this; + } + + public Criteria andCurrentAmountLessThan(BigDecimal value) { + addCriterion("current_amount <", value, "currentAmount"); + return (Criteria) this; + } + + public Criteria andCurrentAmountLessThanOrEqualTo(BigDecimal value) { + addCriterion("current_amount <=", value, "currentAmount"); + return (Criteria) this; + } + + public Criteria andCurrentAmountIn(List values) { + addCriterion("current_amount in", values, "currentAmount"); + return (Criteria) this; + } + + public Criteria andCurrentAmountNotIn(List values) { + addCriterion("current_amount not in", values, "currentAmount"); + return (Criteria) this; + } + + public Criteria andCurrentAmountBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("current_amount between", value1, value2, "currentAmount"); + return (Criteria) this; + } + + public Criteria andCurrentAmountNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("current_amount not between", value1, value2, "currentAmount"); + return (Criteria) this; + } + + public Criteria andRemarkIsNull() { + addCriterion("remark is null"); + return (Criteria) this; + } + + public Criteria andRemarkIsNotNull() { + addCriterion("remark is not null"); + return (Criteria) this; + } + + public Criteria andRemarkEqualTo(String value) { + addCriterion("remark =", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotEqualTo(String value) { + addCriterion("remark <>", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThan(String value) { + addCriterion("remark >", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThanOrEqualTo(String value) { + addCriterion("remark >=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThan(String value) { + addCriterion("remark <", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThanOrEqualTo(String value) { + addCriterion("remark <=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLike(String value) { + addCriterion("remark like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotLike(String value) { + addCriterion("remark not like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkIn(List values) { + addCriterion("remark in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotIn(List values) { + addCriterion("remark not in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkBetween(String value1, String value2) { + addCriterion("remark between", value1, value2, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotBetween(String value1, String value2) { + addCriterion("remark not between", value1, value2, "remark"); + return (Criteria) this; + } + + public Criteria andEnabledIsNull() { + addCriterion("enabled is null"); + return (Criteria) this; + } + + public Criteria andEnabledIsNotNull() { + addCriterion("enabled is not null"); + return (Criteria) this; + } + + public Criteria andEnabledEqualTo(Boolean value) { + addCriterion("enabled =", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledNotEqualTo(Boolean value) { + addCriterion("enabled <>", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledGreaterThan(Boolean value) { + addCriterion("enabled >", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledGreaterThanOrEqualTo(Boolean value) { + addCriterion("enabled >=", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledLessThan(Boolean value) { + addCriterion("enabled <", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledLessThanOrEqualTo(Boolean value) { + addCriterion("enabled <=", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledIn(List values) { + addCriterion("enabled in", values, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledNotIn(List values) { + addCriterion("enabled not in", values, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledBetween(Boolean value1, Boolean value2) { + addCriterion("enabled between", value1, value2, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledNotBetween(Boolean value1, Boolean value2) { + addCriterion("enabled not between", value1, value2, "enabled"); + return (Criteria) this; + } + + public Criteria andSortIsNull() { + addCriterion("sort is null"); + return (Criteria) this; + } + + public Criteria andSortIsNotNull() { + addCriterion("sort is not null"); + return (Criteria) this; + } + + public Criteria andSortEqualTo(String value) { + addCriterion("sort =", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotEqualTo(String value) { + addCriterion("sort <>", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortGreaterThan(String value) { + addCriterion("sort >", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortGreaterThanOrEqualTo(String value) { + addCriterion("sort >=", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortLessThan(String value) { + addCriterion("sort <", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortLessThanOrEqualTo(String value) { + addCriterion("sort <=", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortLike(String value) { + addCriterion("sort like", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotLike(String value) { + addCriterion("sort not like", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortIn(List values) { + addCriterion("sort in", values, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotIn(List values) { + addCriterion("sort not in", values, "sort"); + return (Criteria) this; + } + + public Criteria andSortBetween(String value1, String value2) { + addCriterion("sort between", value1, value2, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotBetween(String value1, String value2) { + addCriterion("sort not between", value1, value2, "sort"); + return (Criteria) this; + } + + public Criteria andIsDefaultIsNull() { + addCriterion("is_default is null"); + return (Criteria) this; + } + + public Criteria andIsDefaultIsNotNull() { + addCriterion("is_default is not null"); + return (Criteria) this; + } + + public Criteria andIsDefaultEqualTo(Boolean value) { + addCriterion("is_default =", value, "isDefault"); + return (Criteria) this; + } + + public Criteria andIsDefaultNotEqualTo(Boolean value) { + addCriterion("is_default <>", value, "isDefault"); + return (Criteria) this; + } + + public Criteria andIsDefaultGreaterThan(Boolean value) { + addCriterion("is_default >", value, "isDefault"); + return (Criteria) this; + } + + public Criteria andIsDefaultGreaterThanOrEqualTo(Boolean value) { + addCriterion("is_default >=", value, "isDefault"); + return (Criteria) this; + } + + public Criteria andIsDefaultLessThan(Boolean value) { + addCriterion("is_default <", value, "isDefault"); + return (Criteria) this; + } + + public Criteria andIsDefaultLessThanOrEqualTo(Boolean value) { + addCriterion("is_default <=", value, "isDefault"); + return (Criteria) this; + } + + public Criteria andIsDefaultIn(List values) { + addCriterion("is_default in", values, "isDefault"); + return (Criteria) this; + } + + public Criteria andIsDefaultNotIn(List values) { + addCriterion("is_default not in", values, "isDefault"); + return (Criteria) this; + } + + public Criteria andIsDefaultBetween(Boolean value1, Boolean value2) { + addCriterion("is_default between", value1, value2, "isDefault"); + return (Criteria) this; + } + + public Criteria andIsDefaultNotBetween(Boolean value1, Boolean value2) { + addCriterion("is_default not between", value1, value2, "isDefault"); + return (Criteria) this; + } + + public Criteria andTenantIdIsNull() { + addCriterion("tenant_id is null"); + return (Criteria) this; + } + + public Criteria andTenantIdIsNotNull() { + addCriterion("tenant_id is not null"); + return (Criteria) this; + } + + public Criteria andTenantIdEqualTo(Long value) { + addCriterion("tenant_id =", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotEqualTo(Long value) { + addCriterion("tenant_id <>", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdGreaterThan(Long value) { + addCriterion("tenant_id >", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdGreaterThanOrEqualTo(Long value) { + addCriterion("tenant_id >=", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdLessThan(Long value) { + addCriterion("tenant_id <", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdLessThanOrEqualTo(Long value) { + addCriterion("tenant_id <=", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdIn(List values) { + addCriterion("tenant_id in", values, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotIn(List values) { + addCriterion("tenant_id not in", values, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdBetween(Long value1, Long value2) { + addCriterion("tenant_id between", value1, value2, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotBetween(Long value1, Long value2) { + addCriterion("tenant_id not between", value1, value2, "tenantId"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIsNull() { + addCriterion("delete_flag is null"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIsNotNull() { + addCriterion("delete_flag is not null"); + return (Criteria) this; + } + + public Criteria andDeleteFlagEqualTo(String value) { + addCriterion("delete_flag =", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotEqualTo(String value) { + addCriterion("delete_flag <>", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagGreaterThan(String value) { + addCriterion("delete_flag >", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagGreaterThanOrEqualTo(String value) { + addCriterion("delete_flag >=", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLessThan(String value) { + addCriterion("delete_flag <", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLessThanOrEqualTo(String value) { + addCriterion("delete_flag <=", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLike(String value) { + addCriterion("delete_flag like", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotLike(String value) { + addCriterion("delete_flag not like", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIn(List values) { + addCriterion("delete_flag in", values, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotIn(List values) { + addCriterion("delete_flag not in", values, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagBetween(String value1, String value2) { + addCriterion("delete_flag between", value1, value2, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotBetween(String value1, String value2) { + addCriterion("delete_flag not between", value1, value2, "deleteFlag"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/AccountHead.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/AccountHead.java new file mode 100644 index 0000000..df5621b --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/AccountHead.java @@ -0,0 +1,176 @@ +package com.reallin.smt.datasource.entities; + +import java.math.BigDecimal; +import java.util.Date; + +public class AccountHead { + private Long id; + + private String type; + + private Long organId; + + private Long handsPersonId; + + private Long creator; + + private BigDecimal changeAmount; + + private BigDecimal discountMoney; + + private BigDecimal totalPrice; + + private Long accountId; + + private String billNo; + + private Date billTime; + + private String remark; + + private String fileName; + + private String status; + + private String source; + + private Long tenantId; + + private String deleteFlag; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type == null ? null : type.trim(); + } + + public Long getOrganId() { + return organId; + } + + public void setOrganId(Long organId) { + this.organId = organId; + } + + public Long getHandsPersonId() { + return handsPersonId; + } + + public void setHandsPersonId(Long handsPersonId) { + this.handsPersonId = handsPersonId; + } + + public Long getCreator() { + return creator; + } + + public void setCreator(Long creator) { + this.creator = creator; + } + + public BigDecimal getChangeAmount() { + return changeAmount; + } + + public void setChangeAmount(BigDecimal changeAmount) { + this.changeAmount = changeAmount; + } + + public BigDecimal getDiscountMoney() { + return discountMoney; + } + + public void setDiscountMoney(BigDecimal discountMoney) { + this.discountMoney = discountMoney; + } + + public BigDecimal getTotalPrice() { + return totalPrice; + } + + public void setTotalPrice(BigDecimal totalPrice) { + this.totalPrice = totalPrice; + } + + public Long getAccountId() { + return accountId; + } + + public void setAccountId(Long accountId) { + this.accountId = accountId; + } + + public String getBillNo() { + return billNo; + } + + public void setBillNo(String billNo) { + this.billNo = billNo == null ? null : billNo.trim(); + } + + public Date getBillTime() { + return billTime; + } + + public void setBillTime(Date billTime) { + this.billTime = billTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark == null ? null : remark.trim(); + } + + public String getFileName() { + return fileName; + } + + public void setFileName(String fileName) { + this.fileName = fileName == null ? null : fileName.trim(); + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status == null ? null : status.trim(); + } + + public String getSource() { + return source; + } + + public void setSource(String source) { + this.source = source == null ? null : source.trim(); + } + + public Long getTenantId() { + return tenantId; + } + + public void setTenantId(Long tenantId) { + this.tenantId = tenantId; + } + + public String getDeleteFlag() { + return deleteFlag; + } + + public void setDeleteFlag(String deleteFlag) { + this.deleteFlag = deleteFlag == null ? null : deleteFlag.trim(); + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/AccountHeadExample.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/AccountHeadExample.java new file mode 100644 index 0000000..7af2660 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/AccountHeadExample.java @@ -0,0 +1,1291 @@ +package com.reallin.smt.datasource.entities; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +public class AccountHeadExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public AccountHeadExample() { + oredCriteria = new ArrayList<>(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList<>(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andTypeIsNull() { + addCriterion("type is null"); + return (Criteria) this; + } + + public Criteria andTypeIsNotNull() { + addCriterion("type is not null"); + return (Criteria) this; + } + + public Criteria andTypeEqualTo(String value) { + addCriterion("type =", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotEqualTo(String value) { + addCriterion("type <>", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeGreaterThan(String value) { + addCriterion("type >", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeGreaterThanOrEqualTo(String value) { + addCriterion("type >=", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLessThan(String value) { + addCriterion("type <", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLessThanOrEqualTo(String value) { + addCriterion("type <=", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLike(String value) { + addCriterion("type like", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotLike(String value) { + addCriterion("type not like", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeIn(List values) { + addCriterion("type in", values, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotIn(List values) { + addCriterion("type not in", values, "type"); + return (Criteria) this; + } + + public Criteria andTypeBetween(String value1, String value2) { + addCriterion("type between", value1, value2, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotBetween(String value1, String value2) { + addCriterion("type not between", value1, value2, "type"); + return (Criteria) this; + } + + public Criteria andOrganIdIsNull() { + addCriterion("organ_id is null"); + return (Criteria) this; + } + + public Criteria andOrganIdIsNotNull() { + addCriterion("organ_id is not null"); + return (Criteria) this; + } + + public Criteria andOrganIdEqualTo(Long value) { + addCriterion("organ_id =", value, "organId"); + return (Criteria) this; + } + + public Criteria andOrganIdNotEqualTo(Long value) { + addCriterion("organ_id <>", value, "organId"); + return (Criteria) this; + } + + public Criteria andOrganIdGreaterThan(Long value) { + addCriterion("organ_id >", value, "organId"); + return (Criteria) this; + } + + public Criteria andOrganIdGreaterThanOrEqualTo(Long value) { + addCriterion("organ_id >=", value, "organId"); + return (Criteria) this; + } + + public Criteria andOrganIdLessThan(Long value) { + addCriterion("organ_id <", value, "organId"); + return (Criteria) this; + } + + public Criteria andOrganIdLessThanOrEqualTo(Long value) { + addCriterion("organ_id <=", value, "organId"); + return (Criteria) this; + } + + public Criteria andOrganIdIn(List values) { + addCriterion("organ_id in", values, "organId"); + return (Criteria) this; + } + + public Criteria andOrganIdNotIn(List values) { + addCriterion("organ_id not in", values, "organId"); + return (Criteria) this; + } + + public Criteria andOrganIdBetween(Long value1, Long value2) { + addCriterion("organ_id between", value1, value2, "organId"); + return (Criteria) this; + } + + public Criteria andOrganIdNotBetween(Long value1, Long value2) { + addCriterion("organ_id not between", value1, value2, "organId"); + return (Criteria) this; + } + + public Criteria andHandsPersonIdIsNull() { + addCriterion("hands_person_id is null"); + return (Criteria) this; + } + + public Criteria andHandsPersonIdIsNotNull() { + addCriterion("hands_person_id is not null"); + return (Criteria) this; + } + + public Criteria andHandsPersonIdEqualTo(Long value) { + addCriterion("hands_person_id =", value, "handsPersonId"); + return (Criteria) this; + } + + public Criteria andHandsPersonIdNotEqualTo(Long value) { + addCriterion("hands_person_id <>", value, "handsPersonId"); + return (Criteria) this; + } + + public Criteria andHandsPersonIdGreaterThan(Long value) { + addCriterion("hands_person_id >", value, "handsPersonId"); + return (Criteria) this; + } + + public Criteria andHandsPersonIdGreaterThanOrEqualTo(Long value) { + addCriterion("hands_person_id >=", value, "handsPersonId"); + return (Criteria) this; + } + + public Criteria andHandsPersonIdLessThan(Long value) { + addCriterion("hands_person_id <", value, "handsPersonId"); + return (Criteria) this; + } + + public Criteria andHandsPersonIdLessThanOrEqualTo(Long value) { + addCriterion("hands_person_id <=", value, "handsPersonId"); + return (Criteria) this; + } + + public Criteria andHandsPersonIdIn(List values) { + addCriterion("hands_person_id in", values, "handsPersonId"); + return (Criteria) this; + } + + public Criteria andHandsPersonIdNotIn(List values) { + addCriterion("hands_person_id not in", values, "handsPersonId"); + return (Criteria) this; + } + + public Criteria andHandsPersonIdBetween(Long value1, Long value2) { + addCriterion("hands_person_id between", value1, value2, "handsPersonId"); + return (Criteria) this; + } + + public Criteria andHandsPersonIdNotBetween(Long value1, Long value2) { + addCriterion("hands_person_id not between", value1, value2, "handsPersonId"); + return (Criteria) this; + } + + public Criteria andCreatorIsNull() { + addCriterion("creator is null"); + return (Criteria) this; + } + + public Criteria andCreatorIsNotNull() { + addCriterion("creator is not null"); + return (Criteria) this; + } + + public Criteria andCreatorEqualTo(Long value) { + addCriterion("creator =", value, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorNotEqualTo(Long value) { + addCriterion("creator <>", value, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorGreaterThan(Long value) { + addCriterion("creator >", value, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorGreaterThanOrEqualTo(Long value) { + addCriterion("creator >=", value, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorLessThan(Long value) { + addCriterion("creator <", value, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorLessThanOrEqualTo(Long value) { + addCriterion("creator <=", value, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorIn(List values) { + addCriterion("creator in", values, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorNotIn(List values) { + addCriterion("creator not in", values, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorBetween(Long value1, Long value2) { + addCriterion("creator between", value1, value2, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorNotBetween(Long value1, Long value2) { + addCriterion("creator not between", value1, value2, "creator"); + return (Criteria) this; + } + + public Criteria andChangeAmountIsNull() { + addCriterion("change_amount is null"); + return (Criteria) this; + } + + public Criteria andChangeAmountIsNotNull() { + addCriterion("change_amount is not null"); + return (Criteria) this; + } + + public Criteria andChangeAmountEqualTo(BigDecimal value) { + addCriterion("change_amount =", value, "changeAmount"); + return (Criteria) this; + } + + public Criteria andChangeAmountNotEqualTo(BigDecimal value) { + addCriterion("change_amount <>", value, "changeAmount"); + return (Criteria) this; + } + + public Criteria andChangeAmountGreaterThan(BigDecimal value) { + addCriterion("change_amount >", value, "changeAmount"); + return (Criteria) this; + } + + public Criteria andChangeAmountGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("change_amount >=", value, "changeAmount"); + return (Criteria) this; + } + + public Criteria andChangeAmountLessThan(BigDecimal value) { + addCriterion("change_amount <", value, "changeAmount"); + return (Criteria) this; + } + + public Criteria andChangeAmountLessThanOrEqualTo(BigDecimal value) { + addCriterion("change_amount <=", value, "changeAmount"); + return (Criteria) this; + } + + public Criteria andChangeAmountIn(List values) { + addCriterion("change_amount in", values, "changeAmount"); + return (Criteria) this; + } + + public Criteria andChangeAmountNotIn(List values) { + addCriterion("change_amount not in", values, "changeAmount"); + return (Criteria) this; + } + + public Criteria andChangeAmountBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("change_amount between", value1, value2, "changeAmount"); + return (Criteria) this; + } + + public Criteria andChangeAmountNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("change_amount not between", value1, value2, "changeAmount"); + return (Criteria) this; + } + + public Criteria andDiscountMoneyIsNull() { + addCriterion("discount_money is null"); + return (Criteria) this; + } + + public Criteria andDiscountMoneyIsNotNull() { + addCriterion("discount_money is not null"); + return (Criteria) this; + } + + public Criteria andDiscountMoneyEqualTo(BigDecimal value) { + addCriterion("discount_money =", value, "discountMoney"); + return (Criteria) this; + } + + public Criteria andDiscountMoneyNotEqualTo(BigDecimal value) { + addCriterion("discount_money <>", value, "discountMoney"); + return (Criteria) this; + } + + public Criteria andDiscountMoneyGreaterThan(BigDecimal value) { + addCriterion("discount_money >", value, "discountMoney"); + return (Criteria) this; + } + + public Criteria andDiscountMoneyGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("discount_money >=", value, "discountMoney"); + return (Criteria) this; + } + + public Criteria andDiscountMoneyLessThan(BigDecimal value) { + addCriterion("discount_money <", value, "discountMoney"); + return (Criteria) this; + } + + public Criteria andDiscountMoneyLessThanOrEqualTo(BigDecimal value) { + addCriterion("discount_money <=", value, "discountMoney"); + return (Criteria) this; + } + + public Criteria andDiscountMoneyIn(List values) { + addCriterion("discount_money in", values, "discountMoney"); + return (Criteria) this; + } + + public Criteria andDiscountMoneyNotIn(List values) { + addCriterion("discount_money not in", values, "discountMoney"); + return (Criteria) this; + } + + public Criteria andDiscountMoneyBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("discount_money between", value1, value2, "discountMoney"); + return (Criteria) this; + } + + public Criteria andDiscountMoneyNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("discount_money not between", value1, value2, "discountMoney"); + return (Criteria) this; + } + + public Criteria andTotalPriceIsNull() { + addCriterion("total_price is null"); + return (Criteria) this; + } + + public Criteria andTotalPriceIsNotNull() { + addCriterion("total_price is not null"); + return (Criteria) this; + } + + public Criteria andTotalPriceEqualTo(BigDecimal value) { + addCriterion("total_price =", value, "totalPrice"); + return (Criteria) this; + } + + public Criteria andTotalPriceNotEqualTo(BigDecimal value) { + addCriterion("total_price <>", value, "totalPrice"); + return (Criteria) this; + } + + public Criteria andTotalPriceGreaterThan(BigDecimal value) { + addCriterion("total_price >", value, "totalPrice"); + return (Criteria) this; + } + + public Criteria andTotalPriceGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("total_price >=", value, "totalPrice"); + return (Criteria) this; + } + + public Criteria andTotalPriceLessThan(BigDecimal value) { + addCriterion("total_price <", value, "totalPrice"); + return (Criteria) this; + } + + public Criteria andTotalPriceLessThanOrEqualTo(BigDecimal value) { + addCriterion("total_price <=", value, "totalPrice"); + return (Criteria) this; + } + + public Criteria andTotalPriceIn(List values) { + addCriterion("total_price in", values, "totalPrice"); + return (Criteria) this; + } + + public Criteria andTotalPriceNotIn(List values) { + addCriterion("total_price not in", values, "totalPrice"); + return (Criteria) this; + } + + public Criteria andTotalPriceBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("total_price between", value1, value2, "totalPrice"); + return (Criteria) this; + } + + public Criteria andTotalPriceNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("total_price not between", value1, value2, "totalPrice"); + return (Criteria) this; + } + + public Criteria andAccountIdIsNull() { + addCriterion("account_id is null"); + return (Criteria) this; + } + + public Criteria andAccountIdIsNotNull() { + addCriterion("account_id is not null"); + return (Criteria) this; + } + + public Criteria andAccountIdEqualTo(Long value) { + addCriterion("account_id =", value, "accountId"); + return (Criteria) this; + } + + public Criteria andAccountIdNotEqualTo(Long value) { + addCriterion("account_id <>", value, "accountId"); + return (Criteria) this; + } + + public Criteria andAccountIdGreaterThan(Long value) { + addCriterion("account_id >", value, "accountId"); + return (Criteria) this; + } + + public Criteria andAccountIdGreaterThanOrEqualTo(Long value) { + addCriterion("account_id >=", value, "accountId"); + return (Criteria) this; + } + + public Criteria andAccountIdLessThan(Long value) { + addCriterion("account_id <", value, "accountId"); + return (Criteria) this; + } + + public Criteria andAccountIdLessThanOrEqualTo(Long value) { + addCriterion("account_id <=", value, "accountId"); + return (Criteria) this; + } + + public Criteria andAccountIdIn(List values) { + addCriterion("account_id in", values, "accountId"); + return (Criteria) this; + } + + public Criteria andAccountIdNotIn(List values) { + addCriterion("account_id not in", values, "accountId"); + return (Criteria) this; + } + + public Criteria andAccountIdBetween(Long value1, Long value2) { + addCriterion("account_id between", value1, value2, "accountId"); + return (Criteria) this; + } + + public Criteria andAccountIdNotBetween(Long value1, Long value2) { + addCriterion("account_id not between", value1, value2, "accountId"); + return (Criteria) this; + } + + public Criteria andBillNoIsNull() { + addCriterion("bill_no is null"); + return (Criteria) this; + } + + public Criteria andBillNoIsNotNull() { + addCriterion("bill_no is not null"); + return (Criteria) this; + } + + public Criteria andBillNoEqualTo(String value) { + addCriterion("bill_no =", value, "billNo"); + return (Criteria) this; + } + + public Criteria andBillNoNotEqualTo(String value) { + addCriterion("bill_no <>", value, "billNo"); + return (Criteria) this; + } + + public Criteria andBillNoGreaterThan(String value) { + addCriterion("bill_no >", value, "billNo"); + return (Criteria) this; + } + + public Criteria andBillNoGreaterThanOrEqualTo(String value) { + addCriterion("bill_no >=", value, "billNo"); + return (Criteria) this; + } + + public Criteria andBillNoLessThan(String value) { + addCriterion("bill_no <", value, "billNo"); + return (Criteria) this; + } + + public Criteria andBillNoLessThanOrEqualTo(String value) { + addCriterion("bill_no <=", value, "billNo"); + return (Criteria) this; + } + + public Criteria andBillNoLike(String value) { + addCriterion("bill_no like", value, "billNo"); + return (Criteria) this; + } + + public Criteria andBillNoNotLike(String value) { + addCriterion("bill_no not like", value, "billNo"); + return (Criteria) this; + } + + public Criteria andBillNoIn(List values) { + addCriterion("bill_no in", values, "billNo"); + return (Criteria) this; + } + + public Criteria andBillNoNotIn(List values) { + addCriterion("bill_no not in", values, "billNo"); + return (Criteria) this; + } + + public Criteria andBillNoBetween(String value1, String value2) { + addCriterion("bill_no between", value1, value2, "billNo"); + return (Criteria) this; + } + + public Criteria andBillNoNotBetween(String value1, String value2) { + addCriterion("bill_no not between", value1, value2, "billNo"); + return (Criteria) this; + } + + public Criteria andBillTimeIsNull() { + addCriterion("bill_time is null"); + return (Criteria) this; + } + + public Criteria andBillTimeIsNotNull() { + addCriterion("bill_time is not null"); + return (Criteria) this; + } + + public Criteria andBillTimeEqualTo(Date value) { + addCriterion("bill_time =", value, "billTime"); + return (Criteria) this; + } + + public Criteria andBillTimeNotEqualTo(Date value) { + addCriterion("bill_time <>", value, "billTime"); + return (Criteria) this; + } + + public Criteria andBillTimeGreaterThan(Date value) { + addCriterion("bill_time >", value, "billTime"); + return (Criteria) this; + } + + public Criteria andBillTimeGreaterThanOrEqualTo(Date value) { + addCriterion("bill_time >=", value, "billTime"); + return (Criteria) this; + } + + public Criteria andBillTimeLessThan(Date value) { + addCriterion("bill_time <", value, "billTime"); + return (Criteria) this; + } + + public Criteria andBillTimeLessThanOrEqualTo(Date value) { + addCriterion("bill_time <=", value, "billTime"); + return (Criteria) this; + } + + public Criteria andBillTimeIn(List values) { + addCriterion("bill_time in", values, "billTime"); + return (Criteria) this; + } + + public Criteria andBillTimeNotIn(List values) { + addCriterion("bill_time not in", values, "billTime"); + return (Criteria) this; + } + + public Criteria andBillTimeBetween(Date value1, Date value2) { + addCriterion("bill_time between", value1, value2, "billTime"); + return (Criteria) this; + } + + public Criteria andBillTimeNotBetween(Date value1, Date value2) { + addCriterion("bill_time not between", value1, value2, "billTime"); + return (Criteria) this; + } + + public Criteria andRemarkIsNull() { + addCriterion("remark is null"); + return (Criteria) this; + } + + public Criteria andRemarkIsNotNull() { + addCriterion("remark is not null"); + return (Criteria) this; + } + + public Criteria andRemarkEqualTo(String value) { + addCriterion("remark =", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotEqualTo(String value) { + addCriterion("remark <>", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThan(String value) { + addCriterion("remark >", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThanOrEqualTo(String value) { + addCriterion("remark >=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThan(String value) { + addCriterion("remark <", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThanOrEqualTo(String value) { + addCriterion("remark <=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLike(String value) { + addCriterion("remark like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotLike(String value) { + addCriterion("remark not like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkIn(List values) { + addCriterion("remark in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotIn(List values) { + addCriterion("remark not in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkBetween(String value1, String value2) { + addCriterion("remark between", value1, value2, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotBetween(String value1, String value2) { + addCriterion("remark not between", value1, value2, "remark"); + return (Criteria) this; + } + + public Criteria andFileNameIsNull() { + addCriterion("file_name is null"); + return (Criteria) this; + } + + public Criteria andFileNameIsNotNull() { + addCriterion("file_name is not null"); + return (Criteria) this; + } + + public Criteria andFileNameEqualTo(String value) { + addCriterion("file_name =", value, "fileName"); + return (Criteria) this; + } + + public Criteria andFileNameNotEqualTo(String value) { + addCriterion("file_name <>", value, "fileName"); + return (Criteria) this; + } + + public Criteria andFileNameGreaterThan(String value) { + addCriterion("file_name >", value, "fileName"); + return (Criteria) this; + } + + public Criteria andFileNameGreaterThanOrEqualTo(String value) { + addCriterion("file_name >=", value, "fileName"); + return (Criteria) this; + } + + public Criteria andFileNameLessThan(String value) { + addCriterion("file_name <", value, "fileName"); + return (Criteria) this; + } + + public Criteria andFileNameLessThanOrEqualTo(String value) { + addCriterion("file_name <=", value, "fileName"); + return (Criteria) this; + } + + public Criteria andFileNameLike(String value) { + addCriterion("file_name like", value, "fileName"); + return (Criteria) this; + } + + public Criteria andFileNameNotLike(String value) { + addCriterion("file_name not like", value, "fileName"); + return (Criteria) this; + } + + public Criteria andFileNameIn(List values) { + addCriterion("file_name in", values, "fileName"); + return (Criteria) this; + } + + public Criteria andFileNameNotIn(List values) { + addCriterion("file_name not in", values, "fileName"); + return (Criteria) this; + } + + public Criteria andFileNameBetween(String value1, String value2) { + addCriterion("file_name between", value1, value2, "fileName"); + return (Criteria) this; + } + + public Criteria andFileNameNotBetween(String value1, String value2) { + addCriterion("file_name not between", value1, value2, "fileName"); + return (Criteria) this; + } + + public Criteria andStatusIsNull() { + addCriterion("status is null"); + return (Criteria) this; + } + + public Criteria andStatusIsNotNull() { + addCriterion("status is not null"); + return (Criteria) this; + } + + public Criteria andStatusEqualTo(String value) { + addCriterion("status =", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusNotEqualTo(String value) { + addCriterion("status <>", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusGreaterThan(String value) { + addCriterion("status >", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusGreaterThanOrEqualTo(String value) { + addCriterion("status >=", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusLessThan(String value) { + addCriterion("status <", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusLessThanOrEqualTo(String value) { + addCriterion("status <=", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusLike(String value) { + addCriterion("status like", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusNotLike(String value) { + addCriterion("status not like", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusIn(List values) { + addCriterion("status in", values, "status"); + return (Criteria) this; + } + + public Criteria andStatusNotIn(List values) { + addCriterion("status not in", values, "status"); + return (Criteria) this; + } + + public Criteria andStatusBetween(String value1, String value2) { + addCriterion("status between", value1, value2, "status"); + return (Criteria) this; + } + + public Criteria andStatusNotBetween(String value1, String value2) { + addCriterion("status not between", value1, value2, "status"); + return (Criteria) this; + } + + public Criteria andSourceIsNull() { + addCriterion("source is null"); + return (Criteria) this; + } + + public Criteria andSourceIsNotNull() { + addCriterion("source is not null"); + return (Criteria) this; + } + + public Criteria andSourceEqualTo(String value) { + addCriterion("source =", value, "source"); + return (Criteria) this; + } + + public Criteria andSourceNotEqualTo(String value) { + addCriterion("source <>", value, "source"); + return (Criteria) this; + } + + public Criteria andSourceGreaterThan(String value) { + addCriterion("source >", value, "source"); + return (Criteria) this; + } + + public Criteria andSourceGreaterThanOrEqualTo(String value) { + addCriterion("source >=", value, "source"); + return (Criteria) this; + } + + public Criteria andSourceLessThan(String value) { + addCriterion("source <", value, "source"); + return (Criteria) this; + } + + public Criteria andSourceLessThanOrEqualTo(String value) { + addCriterion("source <=", value, "source"); + return (Criteria) this; + } + + public Criteria andSourceLike(String value) { + addCriterion("source like", value, "source"); + return (Criteria) this; + } + + public Criteria andSourceNotLike(String value) { + addCriterion("source not like", value, "source"); + return (Criteria) this; + } + + public Criteria andSourceIn(List values) { + addCriterion("source in", values, "source"); + return (Criteria) this; + } + + public Criteria andSourceNotIn(List values) { + addCriterion("source not in", values, "source"); + return (Criteria) this; + } + + public Criteria andSourceBetween(String value1, String value2) { + addCriterion("source between", value1, value2, "source"); + return (Criteria) this; + } + + public Criteria andSourceNotBetween(String value1, String value2) { + addCriterion("source not between", value1, value2, "source"); + return (Criteria) this; + } + + public Criteria andTenantIdIsNull() { + addCriterion("tenant_id is null"); + return (Criteria) this; + } + + public Criteria andTenantIdIsNotNull() { + addCriterion("tenant_id is not null"); + return (Criteria) this; + } + + public Criteria andTenantIdEqualTo(Long value) { + addCriterion("tenant_id =", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotEqualTo(Long value) { + addCriterion("tenant_id <>", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdGreaterThan(Long value) { + addCriterion("tenant_id >", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdGreaterThanOrEqualTo(Long value) { + addCriterion("tenant_id >=", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdLessThan(Long value) { + addCriterion("tenant_id <", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdLessThanOrEqualTo(Long value) { + addCriterion("tenant_id <=", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdIn(List values) { + addCriterion("tenant_id in", values, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotIn(List values) { + addCriterion("tenant_id not in", values, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdBetween(Long value1, Long value2) { + addCriterion("tenant_id between", value1, value2, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotBetween(Long value1, Long value2) { + addCriterion("tenant_id not between", value1, value2, "tenantId"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIsNull() { + addCriterion("delete_flag is null"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIsNotNull() { + addCriterion("delete_flag is not null"); + return (Criteria) this; + } + + public Criteria andDeleteFlagEqualTo(String value) { + addCriterion("delete_flag =", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotEqualTo(String value) { + addCriterion("delete_flag <>", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagGreaterThan(String value) { + addCriterion("delete_flag >", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagGreaterThanOrEqualTo(String value) { + addCriterion("delete_flag >=", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLessThan(String value) { + addCriterion("delete_flag <", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLessThanOrEqualTo(String value) { + addCriterion("delete_flag <=", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLike(String value) { + addCriterion("delete_flag like", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotLike(String value) { + addCriterion("delete_flag not like", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIn(List values) { + addCriterion("delete_flag in", values, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotIn(List values) { + addCriterion("delete_flag not in", values, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagBetween(String value1, String value2) { + addCriterion("delete_flag between", value1, value2, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotBetween(String value1, String value2) { + addCriterion("delete_flag not between", value1, value2, "deleteFlag"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/AccountHeadVo4Body.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/AccountHeadVo4Body.java new file mode 100644 index 0000000..aba3d1d --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/AccountHeadVo4Body.java @@ -0,0 +1,34 @@ +package com.reallin.smt.datasource.entities; + +public class AccountHeadVo4Body { + + private Long id; + + private String info; + + private String rows; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getInfo() { + return info; + } + + public void setInfo(String info) { + this.info = info; + } + + public String getRows() { + return rows; + } + + public void setRows(String rows) { + this.rows = rows; + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/AccountHeadVo4ListEx.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/AccountHeadVo4ListEx.java new file mode 100644 index 0000000..8f73c47 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/AccountHeadVo4ListEx.java @@ -0,0 +1,81 @@ +package com.reallin.smt.datasource.entities; + +import java.math.BigDecimal; +import java.util.Date; + +public class AccountHeadVo4ListEx extends AccountHead{ + + private String organName; + + private String handsPersonName; + + private String userName; + + private String accountName; + + private String billTimeStr; + + private String sourceType; + + private String sourceNumber; + + private String sourceTime; + + private String sourceUser; + + public String getOrganName() { + return organName; + } + + public void setOrganName(String organName) { + this.organName = organName; + } + + public String getHandsPersonName() { + return handsPersonName; + } + + public void setHandsPersonName(String handsPersonName) { + this.handsPersonName = handsPersonName; + } + + public String getUserName() { + return userName; + } + + public void setUserName(String userName) { + this.userName = userName; + } + + public String getAccountName() { + return accountName; + } + + public void setAccountName(String accountName) { + this.accountName = accountName; + } + + public String getBillTimeStr() { + return billTimeStr; + } + + public void setBillTimeStr(String billTimeStr) { + this.billTimeStr = billTimeStr; + } + + public String getSourceType() { return sourceType; } + + public void setSourceType(String sourceType) { this.sourceType = sourceType; } + + public String getSourceNumber() { return sourceNumber; } + + public void setSourceNumber(String sourceNumber) { this.sourceNumber = sourceNumber; } + + public String getSourceTime() { return sourceTime; } + + public void setSourceTime(String sourceTime) { this.sourceTime = sourceTime; } + + public String getSourceUser() { return sourceUser; } + + public void setSourceUser(String sourceUser) { this.sourceUser = sourceUser; } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/AccountItem.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/AccountItem.java new file mode 100644 index 0000000..e456e1a --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/AccountItem.java @@ -0,0 +1,115 @@ +package com.reallin.smt.datasource.entities; + +import java.math.BigDecimal; + +public class AccountItem { + private Long id; + + private Long headerId; + + private Long accountId; + + private Long inOutItemId; + + private Long billId; + + private BigDecimal needDebt; + + private BigDecimal finishDebt; + + private BigDecimal eachAmount; + + private String remark; + + private Long tenantId; + + private String deleteFlag; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getHeaderId() { + return headerId; + } + + public void setHeaderId(Long headerId) { + this.headerId = headerId; + } + + public Long getAccountId() { + return accountId; + } + + public void setAccountId(Long accountId) { + this.accountId = accountId; + } + + public Long getInOutItemId() { + return inOutItemId; + } + + public void setInOutItemId(Long inOutItemId) { + this.inOutItemId = inOutItemId; + } + + public Long getBillId() { + return billId; + } + + public void setBillId(Long billId) { + this.billId = billId; + } + + public BigDecimal getNeedDebt() { + return needDebt; + } + + public void setNeedDebt(BigDecimal needDebt) { + this.needDebt = needDebt; + } + + public BigDecimal getFinishDebt() { + return finishDebt; + } + + public void setFinishDebt(BigDecimal finishDebt) { + this.finishDebt = finishDebt; + } + + public BigDecimal getEachAmount() { + return eachAmount; + } + + public void setEachAmount(BigDecimal eachAmount) { + this.eachAmount = eachAmount; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark == null ? null : remark.trim(); + } + + public Long getTenantId() { + return tenantId; + } + + public void setTenantId(Long tenantId) { + this.tenantId = tenantId; + } + + public String getDeleteFlag() { + return deleteFlag; + } + + public void setDeleteFlag(String deleteFlag) { + this.deleteFlag = deleteFlag == null ? null : deleteFlag.trim(); + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/AccountItemExample.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/AccountItemExample.java new file mode 100644 index 0000000..9ab31ed --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/AccountItemExample.java @@ -0,0 +1,880 @@ +package com.reallin.smt.datasource.entities; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + +public class AccountItemExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public AccountItemExample() { + oredCriteria = new ArrayList<>(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList<>(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andHeaderIdIsNull() { + addCriterion("header_id is null"); + return (Criteria) this; + } + + public Criteria andHeaderIdIsNotNull() { + addCriterion("header_id is not null"); + return (Criteria) this; + } + + public Criteria andHeaderIdEqualTo(Long value) { + addCriterion("header_id =", value, "headerId"); + return (Criteria) this; + } + + public Criteria andHeaderIdNotEqualTo(Long value) { + addCriterion("header_id <>", value, "headerId"); + return (Criteria) this; + } + + public Criteria andHeaderIdGreaterThan(Long value) { + addCriterion("header_id >", value, "headerId"); + return (Criteria) this; + } + + public Criteria andHeaderIdGreaterThanOrEqualTo(Long value) { + addCriterion("header_id >=", value, "headerId"); + return (Criteria) this; + } + + public Criteria andHeaderIdLessThan(Long value) { + addCriterion("header_id <", value, "headerId"); + return (Criteria) this; + } + + public Criteria andHeaderIdLessThanOrEqualTo(Long value) { + addCriterion("header_id <=", value, "headerId"); + return (Criteria) this; + } + + public Criteria andHeaderIdIn(List values) { + addCriterion("header_id in", values, "headerId"); + return (Criteria) this; + } + + public Criteria andHeaderIdNotIn(List values) { + addCriterion("header_id not in", values, "headerId"); + return (Criteria) this; + } + + public Criteria andHeaderIdBetween(Long value1, Long value2) { + addCriterion("header_id between", value1, value2, "headerId"); + return (Criteria) this; + } + + public Criteria andHeaderIdNotBetween(Long value1, Long value2) { + addCriterion("header_id not between", value1, value2, "headerId"); + return (Criteria) this; + } + + public Criteria andAccountIdIsNull() { + addCriterion("account_id is null"); + return (Criteria) this; + } + + public Criteria andAccountIdIsNotNull() { + addCriterion("account_id is not null"); + return (Criteria) this; + } + + public Criteria andAccountIdEqualTo(Long value) { + addCriterion("account_id =", value, "accountId"); + return (Criteria) this; + } + + public Criteria andAccountIdNotEqualTo(Long value) { + addCriterion("account_id <>", value, "accountId"); + return (Criteria) this; + } + + public Criteria andAccountIdGreaterThan(Long value) { + addCriterion("account_id >", value, "accountId"); + return (Criteria) this; + } + + public Criteria andAccountIdGreaterThanOrEqualTo(Long value) { + addCriterion("account_id >=", value, "accountId"); + return (Criteria) this; + } + + public Criteria andAccountIdLessThan(Long value) { + addCriterion("account_id <", value, "accountId"); + return (Criteria) this; + } + + public Criteria andAccountIdLessThanOrEqualTo(Long value) { + addCriterion("account_id <=", value, "accountId"); + return (Criteria) this; + } + + public Criteria andAccountIdIn(List values) { + addCriterion("account_id in", values, "accountId"); + return (Criteria) this; + } + + public Criteria andAccountIdNotIn(List values) { + addCriterion("account_id not in", values, "accountId"); + return (Criteria) this; + } + + public Criteria andAccountIdBetween(Long value1, Long value2) { + addCriterion("account_id between", value1, value2, "accountId"); + return (Criteria) this; + } + + public Criteria andAccountIdNotBetween(Long value1, Long value2) { + addCriterion("account_id not between", value1, value2, "accountId"); + return (Criteria) this; + } + + public Criteria andInOutItemIdIsNull() { + addCriterion("in_out_item_id is null"); + return (Criteria) this; + } + + public Criteria andInOutItemIdIsNotNull() { + addCriterion("in_out_item_id is not null"); + return (Criteria) this; + } + + public Criteria andInOutItemIdEqualTo(Long value) { + addCriterion("in_out_item_id =", value, "inOutItemId"); + return (Criteria) this; + } + + public Criteria andInOutItemIdNotEqualTo(Long value) { + addCriterion("in_out_item_id <>", value, "inOutItemId"); + return (Criteria) this; + } + + public Criteria andInOutItemIdGreaterThan(Long value) { + addCriterion("in_out_item_id >", value, "inOutItemId"); + return (Criteria) this; + } + + public Criteria andInOutItemIdGreaterThanOrEqualTo(Long value) { + addCriterion("in_out_item_id >=", value, "inOutItemId"); + return (Criteria) this; + } + + public Criteria andInOutItemIdLessThan(Long value) { + addCriterion("in_out_item_id <", value, "inOutItemId"); + return (Criteria) this; + } + + public Criteria andInOutItemIdLessThanOrEqualTo(Long value) { + addCriterion("in_out_item_id <=", value, "inOutItemId"); + return (Criteria) this; + } + + public Criteria andInOutItemIdIn(List values) { + addCriterion("in_out_item_id in", values, "inOutItemId"); + return (Criteria) this; + } + + public Criteria andInOutItemIdNotIn(List values) { + addCriterion("in_out_item_id not in", values, "inOutItemId"); + return (Criteria) this; + } + + public Criteria andInOutItemIdBetween(Long value1, Long value2) { + addCriterion("in_out_item_id between", value1, value2, "inOutItemId"); + return (Criteria) this; + } + + public Criteria andInOutItemIdNotBetween(Long value1, Long value2) { + addCriterion("in_out_item_id not between", value1, value2, "inOutItemId"); + return (Criteria) this; + } + + public Criteria andBillIdIsNull() { + addCriterion("bill_id is null"); + return (Criteria) this; + } + + public Criteria andBillIdIsNotNull() { + addCriterion("bill_id is not null"); + return (Criteria) this; + } + + public Criteria andBillIdEqualTo(Long value) { + addCriterion("bill_id =", value, "billId"); + return (Criteria) this; + } + + public Criteria andBillIdNotEqualTo(Long value) { + addCriterion("bill_id <>", value, "billId"); + return (Criteria) this; + } + + public Criteria andBillIdGreaterThan(Long value) { + addCriterion("bill_id >", value, "billId"); + return (Criteria) this; + } + + public Criteria andBillIdGreaterThanOrEqualTo(Long value) { + addCriterion("bill_id >=", value, "billId"); + return (Criteria) this; + } + + public Criteria andBillIdLessThan(Long value) { + addCriterion("bill_id <", value, "billId"); + return (Criteria) this; + } + + public Criteria andBillIdLessThanOrEqualTo(Long value) { + addCriterion("bill_id <=", value, "billId"); + return (Criteria) this; + } + + public Criteria andBillIdIn(List values) { + addCriterion("bill_id in", values, "billId"); + return (Criteria) this; + } + + public Criteria andBillIdNotIn(List values) { + addCriterion("bill_id not in", values, "billId"); + return (Criteria) this; + } + + public Criteria andBillIdBetween(Long value1, Long value2) { + addCriterion("bill_id between", value1, value2, "billId"); + return (Criteria) this; + } + + public Criteria andBillIdNotBetween(Long value1, Long value2) { + addCriterion("bill_id not between", value1, value2, "billId"); + return (Criteria) this; + } + + public Criteria andNeedDebtIsNull() { + addCriterion("need_debt is null"); + return (Criteria) this; + } + + public Criteria andNeedDebtIsNotNull() { + addCriterion("need_debt is not null"); + return (Criteria) this; + } + + public Criteria andNeedDebtEqualTo(BigDecimal value) { + addCriterion("need_debt =", value, "needDebt"); + return (Criteria) this; + } + + public Criteria andNeedDebtNotEqualTo(BigDecimal value) { + addCriterion("need_debt <>", value, "needDebt"); + return (Criteria) this; + } + + public Criteria andNeedDebtGreaterThan(BigDecimal value) { + addCriterion("need_debt >", value, "needDebt"); + return (Criteria) this; + } + + public Criteria andNeedDebtGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("need_debt >=", value, "needDebt"); + return (Criteria) this; + } + + public Criteria andNeedDebtLessThan(BigDecimal value) { + addCriterion("need_debt <", value, "needDebt"); + return (Criteria) this; + } + + public Criteria andNeedDebtLessThanOrEqualTo(BigDecimal value) { + addCriterion("need_debt <=", value, "needDebt"); + return (Criteria) this; + } + + public Criteria andNeedDebtIn(List values) { + addCriterion("need_debt in", values, "needDebt"); + return (Criteria) this; + } + + public Criteria andNeedDebtNotIn(List values) { + addCriterion("need_debt not in", values, "needDebt"); + return (Criteria) this; + } + + public Criteria andNeedDebtBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("need_debt between", value1, value2, "needDebt"); + return (Criteria) this; + } + + public Criteria andNeedDebtNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("need_debt not between", value1, value2, "needDebt"); + return (Criteria) this; + } + + public Criteria andFinishDebtIsNull() { + addCriterion("finish_debt is null"); + return (Criteria) this; + } + + public Criteria andFinishDebtIsNotNull() { + addCriterion("finish_debt is not null"); + return (Criteria) this; + } + + public Criteria andFinishDebtEqualTo(BigDecimal value) { + addCriterion("finish_debt =", value, "finishDebt"); + return (Criteria) this; + } + + public Criteria andFinishDebtNotEqualTo(BigDecimal value) { + addCriterion("finish_debt <>", value, "finishDebt"); + return (Criteria) this; + } + + public Criteria andFinishDebtGreaterThan(BigDecimal value) { + addCriterion("finish_debt >", value, "finishDebt"); + return (Criteria) this; + } + + public Criteria andFinishDebtGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("finish_debt >=", value, "finishDebt"); + return (Criteria) this; + } + + public Criteria andFinishDebtLessThan(BigDecimal value) { + addCriterion("finish_debt <", value, "finishDebt"); + return (Criteria) this; + } + + public Criteria andFinishDebtLessThanOrEqualTo(BigDecimal value) { + addCriterion("finish_debt <=", value, "finishDebt"); + return (Criteria) this; + } + + public Criteria andFinishDebtIn(List values) { + addCriterion("finish_debt in", values, "finishDebt"); + return (Criteria) this; + } + + public Criteria andFinishDebtNotIn(List values) { + addCriterion("finish_debt not in", values, "finishDebt"); + return (Criteria) this; + } + + public Criteria andFinishDebtBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("finish_debt between", value1, value2, "finishDebt"); + return (Criteria) this; + } + + public Criteria andFinishDebtNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("finish_debt not between", value1, value2, "finishDebt"); + return (Criteria) this; + } + + public Criteria andEachAmountIsNull() { + addCriterion("each_amount is null"); + return (Criteria) this; + } + + public Criteria andEachAmountIsNotNull() { + addCriterion("each_amount is not null"); + return (Criteria) this; + } + + public Criteria andEachAmountEqualTo(BigDecimal value) { + addCriterion("each_amount =", value, "eachAmount"); + return (Criteria) this; + } + + public Criteria andEachAmountNotEqualTo(BigDecimal value) { + addCriterion("each_amount <>", value, "eachAmount"); + return (Criteria) this; + } + + public Criteria andEachAmountGreaterThan(BigDecimal value) { + addCriterion("each_amount >", value, "eachAmount"); + return (Criteria) this; + } + + public Criteria andEachAmountGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("each_amount >=", value, "eachAmount"); + return (Criteria) this; + } + + public Criteria andEachAmountLessThan(BigDecimal value) { + addCriterion("each_amount <", value, "eachAmount"); + return (Criteria) this; + } + + public Criteria andEachAmountLessThanOrEqualTo(BigDecimal value) { + addCriterion("each_amount <=", value, "eachAmount"); + return (Criteria) this; + } + + public Criteria andEachAmountIn(List values) { + addCriterion("each_amount in", values, "eachAmount"); + return (Criteria) this; + } + + public Criteria andEachAmountNotIn(List values) { + addCriterion("each_amount not in", values, "eachAmount"); + return (Criteria) this; + } + + public Criteria andEachAmountBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("each_amount between", value1, value2, "eachAmount"); + return (Criteria) this; + } + + public Criteria andEachAmountNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("each_amount not between", value1, value2, "eachAmount"); + return (Criteria) this; + } + + public Criteria andRemarkIsNull() { + addCriterion("remark is null"); + return (Criteria) this; + } + + public Criteria andRemarkIsNotNull() { + addCriterion("remark is not null"); + return (Criteria) this; + } + + public Criteria andRemarkEqualTo(String value) { + addCriterion("remark =", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotEqualTo(String value) { + addCriterion("remark <>", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThan(String value) { + addCriterion("remark >", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThanOrEqualTo(String value) { + addCriterion("remark >=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThan(String value) { + addCriterion("remark <", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThanOrEqualTo(String value) { + addCriterion("remark <=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLike(String value) { + addCriterion("remark like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotLike(String value) { + addCriterion("remark not like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkIn(List values) { + addCriterion("remark in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotIn(List values) { + addCriterion("remark not in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkBetween(String value1, String value2) { + addCriterion("remark between", value1, value2, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotBetween(String value1, String value2) { + addCriterion("remark not between", value1, value2, "remark"); + return (Criteria) this; + } + + public Criteria andTenantIdIsNull() { + addCriterion("tenant_id is null"); + return (Criteria) this; + } + + public Criteria andTenantIdIsNotNull() { + addCriterion("tenant_id is not null"); + return (Criteria) this; + } + + public Criteria andTenantIdEqualTo(Long value) { + addCriterion("tenant_id =", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotEqualTo(Long value) { + addCriterion("tenant_id <>", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdGreaterThan(Long value) { + addCriterion("tenant_id >", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdGreaterThanOrEqualTo(Long value) { + addCriterion("tenant_id >=", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdLessThan(Long value) { + addCriterion("tenant_id <", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdLessThanOrEqualTo(Long value) { + addCriterion("tenant_id <=", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdIn(List values) { + addCriterion("tenant_id in", values, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotIn(List values) { + addCriterion("tenant_id not in", values, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdBetween(Long value1, Long value2) { + addCriterion("tenant_id between", value1, value2, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotBetween(Long value1, Long value2) { + addCriterion("tenant_id not between", value1, value2, "tenantId"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIsNull() { + addCriterion("delete_flag is null"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIsNotNull() { + addCriterion("delete_flag is not null"); + return (Criteria) this; + } + + public Criteria andDeleteFlagEqualTo(String value) { + addCriterion("delete_flag =", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotEqualTo(String value) { + addCriterion("delete_flag <>", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagGreaterThan(String value) { + addCriterion("delete_flag >", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagGreaterThanOrEqualTo(String value) { + addCriterion("delete_flag >=", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLessThan(String value) { + addCriterion("delete_flag <", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLessThanOrEqualTo(String value) { + addCriterion("delete_flag <=", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLike(String value) { + addCriterion("delete_flag like", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotLike(String value) { + addCriterion("delete_flag not like", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIn(List values) { + addCriterion("delete_flag in", values, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotIn(List values) { + addCriterion("delete_flag not in", values, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagBetween(String value1, String value2) { + addCriterion("delete_flag between", value1, value2, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotBetween(String value1, String value2) { + addCriterion("delete_flag not between", value1, value2, "deleteFlag"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/AccountVo4Sum.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/AccountVo4Sum.java new file mode 100644 index 0000000..0dd6be0 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/AccountVo4Sum.java @@ -0,0 +1,47 @@ +package com.reallin.smt.datasource.entities; + +import java.math.BigDecimal; + +public class AccountVo4Sum { + + private Long id; + + private BigDecimal accountSum; + + private BigDecimal accountSumByHead; + + private BigDecimal accountSumByDetail; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public BigDecimal getAccountSum() { + return accountSum; + } + + public void setAccountSum(BigDecimal accountSum) { + this.accountSum = accountSum; + } + + public BigDecimal getAccountSumByHead() { + return accountSumByHead; + } + + public void setAccountSumByHead(BigDecimal accountSumByHead) { + this.accountSumByHead = accountSumByHead; + } + + public BigDecimal getAccountSumByDetail() { + return accountSumByDetail; + } + + public void setAccountSumByDetail(BigDecimal accountSumByDetail) { + this.accountSumByDetail = accountSumByDetail; + } + +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/Asset.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/Asset.java new file mode 100644 index 0000000..2b9c242 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/Asset.java @@ -0,0 +1,39 @@ +package com.reallin.smt.datasource.entities; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 资产台账。 + */ +@Data +public class Asset { + private Long id; + private String assetCode; + private String assetName; + private Long categoryId; + private String categoryCode; + private String assetCategory; + private String specification; + private String unit; + private BigDecimal quantity; + private BigDecimal originalValue; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date purchaseDate; + private String useDepartment; + private String keeper; + private String location; + private String status; + private String source; + private String externalSource; + private String externalId; + private String remark; + private Long creator; + private Long updater; + private String deleteFlag; + private Date createTime; + private Date updateTime; +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/AssetCategory.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/AssetCategory.java new file mode 100644 index 0000000..772a838 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/AssetCategory.java @@ -0,0 +1,23 @@ +package com.reallin.smt.datasource.entities; + +import lombok.Data; + +import java.util.Date; + +/** + * 资产种类。 + */ +@Data +public class AssetCategory { + private Long id; + private String categoryCode; + private String categoryName; + private String description; + private Integer sort; + private Boolean enabled; + private Long creator; + private Long updater; + private String deleteFlag; + private Date createTime; + private Date updateTime; +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/AssetDevice.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/AssetDevice.java new file mode 100644 index 0000000..a3fcb42 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/AssetDevice.java @@ -0,0 +1,38 @@ +package com.reallin.smt.datasource.entities; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.util.Date; + +/** + * 设备台账,一个资产可关联多台设备。 + */ +@Data +public class AssetDevice { + private Long id; + private Long assetId; + private String assetCode; + private String deviceCode; + private String deviceName; + private String deviceCategory; + private String model; + private String serialNumber; + private String manufacturer; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date purchaseDate; + private Date enabledDate; + private String useDepartment; + private String keeper; + private String location; + private String status; + private Date lastInventoryTime; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date nextMaintenanceDate; + private String remark; + private Long creator; + private Long updater; + private String deleteFlag; + private Date createTime; + private Date updateTime; +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/AssetInventory.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/AssetInventory.java new file mode 100644 index 0000000..95fd167 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/AssetInventory.java @@ -0,0 +1,37 @@ +package com.reallin.smt.datasource.entities; + +import lombok.Data; + +import java.util.Date; + +/** + * 资产盘点单。 + */ +@Data +public class AssetInventory { + private Long id; + private String inventoryNo; + private String planName; + private String scopeType; + private Date plannedAt; + private Date deadline; + private String status; + private Integer totalCount; + private Integer inventoriedCount; + private Integer normalCount; + private Integer abnormalCount; + private Long inventoryUserId; + private String inventoryUserName; + private Date startedAt; + private Date completedAt; + private Long auditUserId; + private Date auditTime; + private String source; + private String externalRequestId; + private String remark; + private Long creator; + private Long updater; + private String deleteFlag; + private Date createTime; + private Date updateTime; +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/AssetInventoryDetail.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/AssetInventoryDetail.java new file mode 100644 index 0000000..8716757 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/AssetInventoryDetail.java @@ -0,0 +1,36 @@ +package com.reallin.smt.datasource.entities; + +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; +import java.util.Date; + +/** + * 资产盘点快照明细。 + */ +@Data +public class AssetInventoryDetail { + private Long id; + private Long inventoryId; + private String targetType; + private Long targetId; + private String targetCode; + private String targetName; + private String model; + private BigDecimal bookQuantity; + private BigDecimal actualQuantity; + private String inventoryStatus; + private String bookDepartment; + private String actualDepartment; + private String bookLocation; + private String actualLocation; + private Date inventoryTime; + private Long inventoryUserId; + private String inventoryUserName; + private String remark; + private String imageGroupId; + private List imageUrls; + private Date createTime; + private Date updateTime; +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/BaseEntity.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/BaseEntity.java new file mode 100644 index 0000000..1a93df8 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/BaseEntity.java @@ -0,0 +1,152 @@ +package com.reallin.smt.datasource.entities; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModelProperty; + +import java.io.Serializable; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +/** + * Entity基类 + * + * @author jishenghua + */ +public class BaseEntity implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * 搜索值 + */ + @TableField(exist = false) + @ApiModelProperty("搜索值") + @JsonIgnore + private String searchValue; + + /** + * 创建者 + */ + @ApiModelProperty("创建者") + private String createBy; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + /** + * 更新者 + */ + @ApiModelProperty("更新者") + private String updateBy; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + /** + * 备注 + */ + @ApiModelProperty("备注") + private String remark; + + /** + * 当前记录起始索引 默认值 + */ + public static final int DEFAULT_PAGE_NUM = 1; + + /** + * 每页显示记录数 默认值 默认查全部 + */ + public static final int DEFAULT_PAGE_SIZE = Integer.MAX_VALUE; + + public void setPageNum(Integer pageNum) { + this.pageNum = pageNum; + } + + public void setPageSize(Integer pageSize) { + this.pageSize = pageSize; + } + + @TableField(exist = false) + private Integer pageNum; + + @TableField(exist = false) + private Integer pageSize; + + /** + * 请求参数 + */ + @TableField(exist = false) + @ApiModelProperty("请求参数") + @JsonInclude(JsonInclude.Include.NON_EMPTY) + private Map params; + + public String getSearchValue() { + return searchValue; + } + + public void setSearchValue(String searchValue) { + this.searchValue = searchValue; + } + + public String getCreateBy() { + return createBy; + } + + public void setCreateBy(String createBy) { + this.createBy = createBy; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public String getUpdateBy() { + return updateBy; + } + + public void setUpdateBy(String updateBy) { + this.updateBy = updateBy; + } + + public Date getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public Map getParams() { + if (params == null) { + params = new HashMap<>(); + } + return params; + } + + public void setParams(Map params) { + this.params = params; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/CustomerCategory.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/CustomerCategory.java new file mode 100644 index 0000000..a4718ad --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/CustomerCategory.java @@ -0,0 +1,128 @@ +package com.reallin.smt.datasource.entities; + +import java.util.Date; + +/** + * 客户分类实体类 + */ +public class CustomerCategory { + private Long id; + + private String categoryName; + + private Long parentId; + + private Integer level; + + private String sort; + + private String description; + + private Boolean enabled; + + private Long creator; + + private Long tenantId; + + private String deleteFlag; + + private Date createTime; + + private Date updateTime; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getCategoryName() { + return categoryName; + } + + public void setCategoryName(String categoryName) { + this.categoryName = categoryName == null ? null : categoryName.trim(); + } + + public Long getParentId() { + return parentId; + } + + public void setParentId(Long parentId) { + this.parentId = parentId; + } + + public Integer getLevel() { + return level; + } + + public void setLevel(Integer level) { + this.level = level; + } + + public String getSort() { + return sort; + } + + public void setSort(String sort) { + this.sort = sort == null ? null : sort.trim(); + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description == null ? null : description.trim(); + } + + public Boolean getEnabled() { + return enabled; + } + + public void setEnabled(Boolean enabled) { + this.enabled = enabled; + } + + public Long getCreator() { + return creator; + } + + public void setCreator(Long creator) { + this.creator = creator; + } + + public Long getTenantId() { + return tenantId; + } + + public void setTenantId(Long tenantId) { + this.tenantId = tenantId; + } + + public String getDeleteFlag() { + return deleteFlag; + } + + public void setDeleteFlag(String deleteFlag) { + this.deleteFlag = deleteFlag == null ? null : deleteFlag.trim(); + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Date getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/CustomerContact.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/CustomerContact.java new file mode 100644 index 0000000..dbfb96f --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/CustomerContact.java @@ -0,0 +1,168 @@ +package com.reallin.smt.datasource.entities; + +import java.util.Date; + +/** + * 客户联系人实体类 + */ +public class CustomerContact { + private Long id; + + private Long customerId; + + private String contactName; + + private String position; + + private String phone; + + private String telephone; + + private String email; + + private String wechat; + + private String qq; + + private Boolean isPrimary; + + private String remark; + + private Long creator; + + private Long tenantId; + + private String deleteFlag; + + private Date createTime; + + private Date updateTime; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getCustomerId() { + return customerId; + } + + public void setCustomerId(Long customerId) { + this.customerId = customerId; + } + + public String getContactName() { + return contactName; + } + + public void setContactName(String contactName) { + this.contactName = contactName == null ? null : contactName.trim(); + } + + public String getPosition() { + return position; + } + + public void setPosition(String position) { + this.position = position == null ? null : position.trim(); + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone == null ? null : phone.trim(); + } + + public String getTelephone() { + return telephone; + } + + public void setTelephone(String telephone) { + this.telephone = telephone == null ? null : telephone.trim(); + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email == null ? null : email.trim(); + } + + public String getWechat() { + return wechat; + } + + public void setWechat(String wechat) { + this.wechat = wechat == null ? null : wechat.trim(); + } + + public String getQq() { + return qq; + } + + public void setQq(String qq) { + this.qq = qq == null ? null : qq.trim(); + } + + public Boolean getIsPrimary() { + return isPrimary; + } + + public void setIsPrimary(Boolean isPrimary) { + this.isPrimary = isPrimary; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark == null ? null : remark.trim(); + } + + public Long getCreator() { + return creator; + } + + public void setCreator(Long creator) { + this.creator = creator; + } + + public Long getTenantId() { + return tenantId; + } + + public void setTenantId(Long tenantId) { + this.tenantId = tenantId; + } + + public String getDeleteFlag() { + return deleteFlag; + } + + public void setDeleteFlag(String deleteFlag) { + this.deleteFlag = deleteFlag == null ? null : deleteFlag.trim(); + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Date getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/DeliveryPlan.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/DeliveryPlan.java new file mode 100644 index 0000000..8831050 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/DeliveryPlan.java @@ -0,0 +1,144 @@ +package com.reallin.smt.datasource.entities; + +import java.util.Date; + +/** + * 交货计划主表 + */ +public class DeliveryPlan { + private Long id; + private String planNumber; + private String sourceType; + private Long sourceBillId; + private String sourceBillNumber; + private String saleOrderNumber; + private Long customerId; + private String status; + private Date plannedDeliveryTime; + private String adjustReason; + private String remark; + private Date createTime; + private Long creator; + private Long tenantId; + private String deleteFlag; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getPlanNumber() { + return planNumber; + } + + public void setPlanNumber(String planNumber) { + this.planNumber = planNumber == null ? null : planNumber.trim(); + } + + public String getSourceType() { + return sourceType; + } + + public void setSourceType(String sourceType) { + this.sourceType = sourceType == null ? null : sourceType.trim(); + } + + public Long getSourceBillId() { + return sourceBillId; + } + + public void setSourceBillId(Long sourceBillId) { + this.sourceBillId = sourceBillId; + } + + public String getSourceBillNumber() { + return sourceBillNumber; + } + + public void setSourceBillNumber(String sourceBillNumber) { + this.sourceBillNumber = sourceBillNumber == null ? null : sourceBillNumber.trim(); + } + + public String getSaleOrderNumber() { + return saleOrderNumber; + } + + public void setSaleOrderNumber(String saleOrderNumber) { + this.saleOrderNumber = saleOrderNumber == null ? null : saleOrderNumber.trim(); + } + + public Long getCustomerId() { + return customerId; + } + + public void setCustomerId(Long customerId) { + this.customerId = customerId; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status == null ? null : status.trim(); + } + + public Date getPlannedDeliveryTime() { + return plannedDeliveryTime; + } + + public void setPlannedDeliveryTime(Date plannedDeliveryTime) { + this.plannedDeliveryTime = plannedDeliveryTime; + } + + public String getAdjustReason() { + return adjustReason; + } + + public void setAdjustReason(String adjustReason) { + this.adjustReason = adjustReason == null ? null : adjustReason.trim(); + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark == null ? null : remark.trim(); + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Long getCreator() { + return creator; + } + + public void setCreator(Long creator) { + this.creator = creator; + } + + public Long getTenantId() { + return tenantId; + } + + public void setTenantId(Long tenantId) { + this.tenantId = tenantId; + } + + public String getDeleteFlag() { + return deleteFlag; + } + + public void setDeleteFlag(String deleteFlag) { + this.deleteFlag = deleteFlag == null ? null : deleteFlag.trim(); + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/DeliveryPlanItem.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/DeliveryPlanItem.java new file mode 100644 index 0000000..7e92353 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/DeliveryPlanItem.java @@ -0,0 +1,171 @@ +package com.reallin.smt.datasource.entities; + +import java.math.BigDecimal; + +/** + * 交货计划明细 + */ +public class DeliveryPlanItem { + private Long id; + private Long planId; + private Long sourceItemId; + private Long materialId; + private Long materialExtendId; + private String barCode; + private String materialName; + private String standard; + private String model; + private String unit; + private String batchNumber; + private String snList; + private BigDecimal planQuantity; + private BigDecimal shippedQuantity; + private Long depotId; + private String remark; + private Long tenantId; + private String deleteFlag; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getPlanId() { + return planId; + } + + public void setPlanId(Long planId) { + this.planId = planId; + } + + public Long getSourceItemId() { + return sourceItemId; + } + + public void setSourceItemId(Long sourceItemId) { + this.sourceItemId = sourceItemId; + } + + public Long getMaterialId() { + return materialId; + } + + public void setMaterialId(Long materialId) { + this.materialId = materialId; + } + + public Long getMaterialExtendId() { + return materialExtendId; + } + + public void setMaterialExtendId(Long materialExtendId) { + this.materialExtendId = materialExtendId; + } + + public String getBarCode() { + return barCode; + } + + public void setBarCode(String barCode) { + this.barCode = barCode == null ? null : barCode.trim(); + } + + public String getMaterialName() { + return materialName; + } + + public void setMaterialName(String materialName) { + this.materialName = materialName == null ? null : materialName.trim(); + } + + public String getStandard() { + return standard; + } + + public void setStandard(String standard) { + this.standard = standard == null ? null : standard.trim(); + } + + public String getModel() { + return model; + } + + public void setModel(String model) { + this.model = model == null ? null : model.trim(); + } + + public String getUnit() { + return unit; + } + + public void setUnit(String unit) { + this.unit = unit == null ? null : unit.trim(); + } + + public String getBatchNumber() { + return batchNumber; + } + + public void setBatchNumber(String batchNumber) { + this.batchNumber = batchNumber == null ? null : batchNumber.trim(); + } + + public String getSnList() { + return snList; + } + + public void setSnList(String snList) { + this.snList = snList == null ? null : snList.trim(); + } + + public BigDecimal getPlanQuantity() { + return planQuantity; + } + + public void setPlanQuantity(BigDecimal planQuantity) { + this.planQuantity = planQuantity; + } + + public BigDecimal getShippedQuantity() { + return shippedQuantity; + } + + public void setShippedQuantity(BigDecimal shippedQuantity) { + this.shippedQuantity = shippedQuantity; + } + + public Long getDepotId() { + return depotId; + } + + public void setDepotId(Long depotId) { + this.depotId = depotId; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark == null ? null : remark.trim(); + } + + public Long getTenantId() { + return tenantId; + } + + public void setTenantId(Long tenantId) { + this.tenantId = tenantId; + } + + public String getDeleteFlag() { + return deleteFlag; + } + + public void setDeleteFlag(String deleteFlag) { + this.deleteFlag = deleteFlag == null ? null : deleteFlag.trim(); + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/Depot.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/Depot.java new file mode 100644 index 0000000..b3460c4 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/Depot.java @@ -0,0 +1,135 @@ +package com.reallin.smt.datasource.entities; + +import java.math.BigDecimal; + +public class Depot { + private Long id; + + private String name; + + private String address; + + private BigDecimal warehousing; + + private BigDecimal truckage; + + private Integer type; + + private String sort; + + private String remark; + + private Long principal; + + private Boolean enabled; + + private Long tenantId; + + private String deleteFlag; + + private Boolean isDefault; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name == null ? null : name.trim(); + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address == null ? null : address.trim(); + } + + public BigDecimal getWarehousing() { + return warehousing; + } + + public void setWarehousing(BigDecimal warehousing) { + this.warehousing = warehousing; + } + + public BigDecimal getTruckage() { + return truckage; + } + + public void setTruckage(BigDecimal truckage) { + this.truckage = truckage; + } + + public Integer getType() { + return type; + } + + public void setType(Integer type) { + this.type = type; + } + + public String getSort() { + return sort; + } + + public void setSort(String sort) { + this.sort = sort == null ? null : sort.trim(); + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark == null ? null : remark.trim(); + } + + public Long getPrincipal() { + return principal; + } + + public void setPrincipal(Long principal) { + this.principal = principal; + } + + public Boolean getEnabled() { + return enabled; + } + + public void setEnabled(Boolean enabled) { + this.enabled = enabled; + } + + public Long getTenantId() { + return tenantId; + } + + public void setTenantId(Long tenantId) { + this.tenantId = tenantId; + } + + public String getDeleteFlag() { + return deleteFlag; + } + + public void setDeleteFlag(String deleteFlag) { + this.deleteFlag = deleteFlag == null ? null : deleteFlag.trim(); + } + + public Boolean getIsDefault() { + return isDefault; + } + + public void setIsDefault(Boolean isDefault) { + this.isDefault = isDefault; + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/DepotEx.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/DepotEx.java new file mode 100644 index 0000000..6a40502 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/DepotEx.java @@ -0,0 +1,26 @@ +package com.reallin.smt.datasource.entities; + +import lombok.Data; + +import java.math.BigDecimal; + +/** + * Description + * + * @Author: cjl + * @Date: 2019/2/25 11:40 + */ +@Data +public class DepotEx extends Depot{ + //负责人名字 + private String principalName; + + private BigDecimal initStock; + + private BigDecimal currentStock; + + private BigDecimal lowSafeStock; + + private BigDecimal highSafeStock; + +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/DepotExample.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/DepotExample.java new file mode 100644 index 0000000..35ec6c6 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/DepotExample.java @@ -0,0 +1,1030 @@ +package com.reallin.smt.datasource.entities; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + +public class DepotExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public DepotExample() { + oredCriteria = new ArrayList<>(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList<>(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andNameIsNull() { + addCriterion("name is null"); + return (Criteria) this; + } + + public Criteria andNameIsNotNull() { + addCriterion("name is not null"); + return (Criteria) this; + } + + public Criteria andNameEqualTo(String value) { + addCriterion("name =", value, "name"); + return (Criteria) this; + } + + public Criteria andNameNotEqualTo(String value) { + addCriterion("name <>", value, "name"); + return (Criteria) this; + } + + public Criteria andNameGreaterThan(String value) { + addCriterion("name >", value, "name"); + return (Criteria) this; + } + + public Criteria andNameGreaterThanOrEqualTo(String value) { + addCriterion("name >=", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLessThan(String value) { + addCriterion("name <", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLessThanOrEqualTo(String value) { + addCriterion("name <=", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLike(String value) { + addCriterion("name like", value, "name"); + return (Criteria) this; + } + + public Criteria andNameNotLike(String value) { + addCriterion("name not like", value, "name"); + return (Criteria) this; + } + + public Criteria andNameIn(List values) { + addCriterion("name in", values, "name"); + return (Criteria) this; + } + + public Criteria andNameNotIn(List values) { + addCriterion("name not in", values, "name"); + return (Criteria) this; + } + + public Criteria andNameBetween(String value1, String value2) { + addCriterion("name between", value1, value2, "name"); + return (Criteria) this; + } + + public Criteria andNameNotBetween(String value1, String value2) { + addCriterion("name not between", value1, value2, "name"); + return (Criteria) this; + } + + public Criteria andAddressIsNull() { + addCriterion("address is null"); + return (Criteria) this; + } + + public Criteria andAddressIsNotNull() { + addCriterion("address is not null"); + return (Criteria) this; + } + + public Criteria andAddressEqualTo(String value) { + addCriterion("address =", value, "address"); + return (Criteria) this; + } + + public Criteria andAddressNotEqualTo(String value) { + addCriterion("address <>", value, "address"); + return (Criteria) this; + } + + public Criteria andAddressGreaterThan(String value) { + addCriterion("address >", value, "address"); + return (Criteria) this; + } + + public Criteria andAddressGreaterThanOrEqualTo(String value) { + addCriterion("address >=", value, "address"); + return (Criteria) this; + } + + public Criteria andAddressLessThan(String value) { + addCriterion("address <", value, "address"); + return (Criteria) this; + } + + public Criteria andAddressLessThanOrEqualTo(String value) { + addCriterion("address <=", value, "address"); + return (Criteria) this; + } + + public Criteria andAddressLike(String value) { + addCriterion("address like", value, "address"); + return (Criteria) this; + } + + public Criteria andAddressNotLike(String value) { + addCriterion("address not like", value, "address"); + return (Criteria) this; + } + + public Criteria andAddressIn(List values) { + addCriterion("address in", values, "address"); + return (Criteria) this; + } + + public Criteria andAddressNotIn(List values) { + addCriterion("address not in", values, "address"); + return (Criteria) this; + } + + public Criteria andAddressBetween(String value1, String value2) { + addCriterion("address between", value1, value2, "address"); + return (Criteria) this; + } + + public Criteria andAddressNotBetween(String value1, String value2) { + addCriterion("address not between", value1, value2, "address"); + return (Criteria) this; + } + + public Criteria andWarehousingIsNull() { + addCriterion("warehousing is null"); + return (Criteria) this; + } + + public Criteria andWarehousingIsNotNull() { + addCriterion("warehousing is not null"); + return (Criteria) this; + } + + public Criteria andWarehousingEqualTo(BigDecimal value) { + addCriterion("warehousing =", value, "warehousing"); + return (Criteria) this; + } + + public Criteria andWarehousingNotEqualTo(BigDecimal value) { + addCriterion("warehousing <>", value, "warehousing"); + return (Criteria) this; + } + + public Criteria andWarehousingGreaterThan(BigDecimal value) { + addCriterion("warehousing >", value, "warehousing"); + return (Criteria) this; + } + + public Criteria andWarehousingGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("warehousing >=", value, "warehousing"); + return (Criteria) this; + } + + public Criteria andWarehousingLessThan(BigDecimal value) { + addCriterion("warehousing <", value, "warehousing"); + return (Criteria) this; + } + + public Criteria andWarehousingLessThanOrEqualTo(BigDecimal value) { + addCriterion("warehousing <=", value, "warehousing"); + return (Criteria) this; + } + + public Criteria andWarehousingIn(List values) { + addCriterion("warehousing in", values, "warehousing"); + return (Criteria) this; + } + + public Criteria andWarehousingNotIn(List values) { + addCriterion("warehousing not in", values, "warehousing"); + return (Criteria) this; + } + + public Criteria andWarehousingBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("warehousing between", value1, value2, "warehousing"); + return (Criteria) this; + } + + public Criteria andWarehousingNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("warehousing not between", value1, value2, "warehousing"); + return (Criteria) this; + } + + public Criteria andTruckageIsNull() { + addCriterion("truckage is null"); + return (Criteria) this; + } + + public Criteria andTruckageIsNotNull() { + addCriterion("truckage is not null"); + return (Criteria) this; + } + + public Criteria andTruckageEqualTo(BigDecimal value) { + addCriterion("truckage =", value, "truckage"); + return (Criteria) this; + } + + public Criteria andTruckageNotEqualTo(BigDecimal value) { + addCriterion("truckage <>", value, "truckage"); + return (Criteria) this; + } + + public Criteria andTruckageGreaterThan(BigDecimal value) { + addCriterion("truckage >", value, "truckage"); + return (Criteria) this; + } + + public Criteria andTruckageGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("truckage >=", value, "truckage"); + return (Criteria) this; + } + + public Criteria andTruckageLessThan(BigDecimal value) { + addCriterion("truckage <", value, "truckage"); + return (Criteria) this; + } + + public Criteria andTruckageLessThanOrEqualTo(BigDecimal value) { + addCriterion("truckage <=", value, "truckage"); + return (Criteria) this; + } + + public Criteria andTruckageIn(List values) { + addCriterion("truckage in", values, "truckage"); + return (Criteria) this; + } + + public Criteria andTruckageNotIn(List values) { + addCriterion("truckage not in", values, "truckage"); + return (Criteria) this; + } + + public Criteria andTruckageBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("truckage between", value1, value2, "truckage"); + return (Criteria) this; + } + + public Criteria andTruckageNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("truckage not between", value1, value2, "truckage"); + return (Criteria) this; + } + + public Criteria andTypeIsNull() { + addCriterion("type is null"); + return (Criteria) this; + } + + public Criteria andTypeIsNotNull() { + addCriterion("type is not null"); + return (Criteria) this; + } + + public Criteria andTypeEqualTo(Integer value) { + addCriterion("type =", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotEqualTo(Integer value) { + addCriterion("type <>", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeGreaterThan(Integer value) { + addCriterion("type >", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeGreaterThanOrEqualTo(Integer value) { + addCriterion("type >=", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLessThan(Integer value) { + addCriterion("type <", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLessThanOrEqualTo(Integer value) { + addCriterion("type <=", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeIn(List values) { + addCriterion("type in", values, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotIn(List values) { + addCriterion("type not in", values, "type"); + return (Criteria) this; + } + + public Criteria andTypeBetween(Integer value1, Integer value2) { + addCriterion("type between", value1, value2, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotBetween(Integer value1, Integer value2) { + addCriterion("type not between", value1, value2, "type"); + return (Criteria) this; + } + + public Criteria andSortIsNull() { + addCriterion("sort is null"); + return (Criteria) this; + } + + public Criteria andSortIsNotNull() { + addCriterion("sort is not null"); + return (Criteria) this; + } + + public Criteria andSortEqualTo(String value) { + addCriterion("sort =", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotEqualTo(String value) { + addCriterion("sort <>", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortGreaterThan(String value) { + addCriterion("sort >", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortGreaterThanOrEqualTo(String value) { + addCriterion("sort >=", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortLessThan(String value) { + addCriterion("sort <", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortLessThanOrEqualTo(String value) { + addCriterion("sort <=", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortLike(String value) { + addCriterion("sort like", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotLike(String value) { + addCriterion("sort not like", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortIn(List values) { + addCriterion("sort in", values, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotIn(List values) { + addCriterion("sort not in", values, "sort"); + return (Criteria) this; + } + + public Criteria andSortBetween(String value1, String value2) { + addCriterion("sort between", value1, value2, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotBetween(String value1, String value2) { + addCriterion("sort not between", value1, value2, "sort"); + return (Criteria) this; + } + + public Criteria andRemarkIsNull() { + addCriterion("remark is null"); + return (Criteria) this; + } + + public Criteria andRemarkIsNotNull() { + addCriterion("remark is not null"); + return (Criteria) this; + } + + public Criteria andRemarkEqualTo(String value) { + addCriterion("remark =", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotEqualTo(String value) { + addCriterion("remark <>", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThan(String value) { + addCriterion("remark >", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThanOrEqualTo(String value) { + addCriterion("remark >=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThan(String value) { + addCriterion("remark <", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThanOrEqualTo(String value) { + addCriterion("remark <=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLike(String value) { + addCriterion("remark like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotLike(String value) { + addCriterion("remark not like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkIn(List values) { + addCriterion("remark in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotIn(List values) { + addCriterion("remark not in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkBetween(String value1, String value2) { + addCriterion("remark between", value1, value2, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotBetween(String value1, String value2) { + addCriterion("remark not between", value1, value2, "remark"); + return (Criteria) this; + } + + public Criteria andPrincipalIsNull() { + addCriterion("principal is null"); + return (Criteria) this; + } + + public Criteria andPrincipalIsNotNull() { + addCriterion("principal is not null"); + return (Criteria) this; + } + + public Criteria andPrincipalEqualTo(Long value) { + addCriterion("principal =", value, "principal"); + return (Criteria) this; + } + + public Criteria andPrincipalNotEqualTo(Long value) { + addCriterion("principal <>", value, "principal"); + return (Criteria) this; + } + + public Criteria andPrincipalGreaterThan(Long value) { + addCriterion("principal >", value, "principal"); + return (Criteria) this; + } + + public Criteria andPrincipalGreaterThanOrEqualTo(Long value) { + addCriterion("principal >=", value, "principal"); + return (Criteria) this; + } + + public Criteria andPrincipalLessThan(Long value) { + addCriterion("principal <", value, "principal"); + return (Criteria) this; + } + + public Criteria andPrincipalLessThanOrEqualTo(Long value) { + addCriterion("principal <=", value, "principal"); + return (Criteria) this; + } + + public Criteria andPrincipalIn(List values) { + addCriterion("principal in", values, "principal"); + return (Criteria) this; + } + + public Criteria andPrincipalNotIn(List values) { + addCriterion("principal not in", values, "principal"); + return (Criteria) this; + } + + public Criteria andPrincipalBetween(Long value1, Long value2) { + addCriterion("principal between", value1, value2, "principal"); + return (Criteria) this; + } + + public Criteria andPrincipalNotBetween(Long value1, Long value2) { + addCriterion("principal not between", value1, value2, "principal"); + return (Criteria) this; + } + + public Criteria andEnabledIsNull() { + addCriterion("enabled is null"); + return (Criteria) this; + } + + public Criteria andEnabledIsNotNull() { + addCriterion("enabled is not null"); + return (Criteria) this; + } + + public Criteria andEnabledEqualTo(Boolean value) { + addCriterion("enabled =", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledNotEqualTo(Boolean value) { + addCriterion("enabled <>", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledGreaterThan(Boolean value) { + addCriterion("enabled >", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledGreaterThanOrEqualTo(Boolean value) { + addCriterion("enabled >=", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledLessThan(Boolean value) { + addCriterion("enabled <", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledLessThanOrEqualTo(Boolean value) { + addCriterion("enabled <=", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledIn(List values) { + addCriterion("enabled in", values, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledNotIn(List values) { + addCriterion("enabled not in", values, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledBetween(Boolean value1, Boolean value2) { + addCriterion("enabled between", value1, value2, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledNotBetween(Boolean value1, Boolean value2) { + addCriterion("enabled not between", value1, value2, "enabled"); + return (Criteria) this; + } + + public Criteria andTenantIdIsNull() { + addCriterion("tenant_id is null"); + return (Criteria) this; + } + + public Criteria andTenantIdIsNotNull() { + addCriterion("tenant_id is not null"); + return (Criteria) this; + } + + public Criteria andTenantIdEqualTo(Long value) { + addCriterion("tenant_id =", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotEqualTo(Long value) { + addCriterion("tenant_id <>", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdGreaterThan(Long value) { + addCriterion("tenant_id >", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdGreaterThanOrEqualTo(Long value) { + addCriterion("tenant_id >=", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdLessThan(Long value) { + addCriterion("tenant_id <", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdLessThanOrEqualTo(Long value) { + addCriterion("tenant_id <=", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdIn(List values) { + addCriterion("tenant_id in", values, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotIn(List values) { + addCriterion("tenant_id not in", values, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdBetween(Long value1, Long value2) { + addCriterion("tenant_id between", value1, value2, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotBetween(Long value1, Long value2) { + addCriterion("tenant_id not between", value1, value2, "tenantId"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIsNull() { + addCriterion("delete_Flag is null"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIsNotNull() { + addCriterion("delete_Flag is not null"); + return (Criteria) this; + } + + public Criteria andDeleteFlagEqualTo(String value) { + addCriterion("delete_Flag =", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotEqualTo(String value) { + addCriterion("delete_Flag <>", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagGreaterThan(String value) { + addCriterion("delete_Flag >", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagGreaterThanOrEqualTo(String value) { + addCriterion("delete_Flag >=", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLessThan(String value) { + addCriterion("delete_Flag <", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLessThanOrEqualTo(String value) { + addCriterion("delete_Flag <=", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLike(String value) { + addCriterion("delete_Flag like", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotLike(String value) { + addCriterion("delete_Flag not like", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIn(List values) { + addCriterion("delete_Flag in", values, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotIn(List values) { + addCriterion("delete_Flag not in", values, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagBetween(String value1, String value2) { + addCriterion("delete_Flag between", value1, value2, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotBetween(String value1, String value2) { + addCriterion("delete_Flag not between", value1, value2, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andIsDefaultIsNull() { + addCriterion("is_default is null"); + return (Criteria) this; + } + + public Criteria andIsDefaultIsNotNull() { + addCriterion("is_default is not null"); + return (Criteria) this; + } + + public Criteria andIsDefaultEqualTo(Boolean value) { + addCriterion("is_default =", value, "isDefault"); + return (Criteria) this; + } + + public Criteria andIsDefaultNotEqualTo(Boolean value) { + addCriterion("is_default <>", value, "isDefault"); + return (Criteria) this; + } + + public Criteria andIsDefaultGreaterThan(Boolean value) { + addCriterion("is_default >", value, "isDefault"); + return (Criteria) this; + } + + public Criteria andIsDefaultGreaterThanOrEqualTo(Boolean value) { + addCriterion("is_default >=", value, "isDefault"); + return (Criteria) this; + } + + public Criteria andIsDefaultLessThan(Boolean value) { + addCriterion("is_default <", value, "isDefault"); + return (Criteria) this; + } + + public Criteria andIsDefaultLessThanOrEqualTo(Boolean value) { + addCriterion("is_default <=", value, "isDefault"); + return (Criteria) this; + } + + public Criteria andIsDefaultIn(List values) { + addCriterion("is_default in", values, "isDefault"); + return (Criteria) this; + } + + public Criteria andIsDefaultNotIn(List values) { + addCriterion("is_default not in", values, "isDefault"); + return (Criteria) this; + } + + public Criteria andIsDefaultBetween(Boolean value1, Boolean value2) { + addCriterion("is_default between", value1, value2, "isDefault"); + return (Criteria) this; + } + + public Criteria andIsDefaultNotBetween(Boolean value1, Boolean value2) { + addCriterion("is_default not between", value1, value2, "isDefault"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/DepotHead.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/DepotHead.java new file mode 100644 index 0000000..3501f13 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/DepotHead.java @@ -0,0 +1,356 @@ +package com.reallin.smt.datasource.entities; + +import java.math.BigDecimal; +import java.util.Date; + +public class DepotHead { + private Long id; + + private String type; + + private String subType; + + private String defaultNumber; + + private String number; + + private Date createTime; + + private Date operTime; + + private Long organId; + + private Long creator; + + private Long accountId; + + private BigDecimal changeAmount; + + private BigDecimal backAmount; + + private BigDecimal totalPrice; + + private String payType; + + private String billType; + + private String remark; + + private String fileName; + + private String salesMan; + + private String accountIdList; + + private String accountMoneyList; + + private BigDecimal discount; + + private BigDecimal discountMoney; + + private BigDecimal discountLastMoney; + + private BigDecimal otherMoney; + + private BigDecimal deposit; + + private BigDecimal lastDeposit; + + private BigDecimal debt; + + private BigDecimal lastDebt; + + private String status; + + private String purchaseStatus; + + private String source; + + private String linkNumber; + + private String linkApply; + + private Long tenantId; + + private String deleteFlag; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type == null ? null : type.trim(); + } + + public String getSubType() { + return subType; + } + + public void setSubType(String subType) { + this.subType = subType == null ? null : subType.trim(); + } + + public String getDefaultNumber() { + return defaultNumber; + } + + public void setDefaultNumber(String defaultNumber) { + this.defaultNumber = defaultNumber == null ? null : defaultNumber.trim(); + } + + public String getNumber() { + return number; + } + + public void setNumber(String number) { + this.number = number == null ? null : number.trim(); + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Date getOperTime() { + return operTime; + } + + public void setOperTime(Date operTime) { + this.operTime = operTime; + } + + public Long getOrganId() { + return organId; + } + + public void setOrganId(Long organId) { + this.organId = organId; + } + + public Long getCreator() { + return creator; + } + + public void setCreator(Long creator) { + this.creator = creator; + } + + public Long getAccountId() { + return accountId; + } + + public void setAccountId(Long accountId) { + this.accountId = accountId; + } + + public BigDecimal getChangeAmount() { + return changeAmount; + } + + public void setChangeAmount(BigDecimal changeAmount) { + this.changeAmount = changeAmount; + } + + public BigDecimal getBackAmount() { + return backAmount; + } + + public void setBackAmount(BigDecimal backAmount) { + this.backAmount = backAmount; + } + + public BigDecimal getTotalPrice() { + return totalPrice; + } + + public void setTotalPrice(BigDecimal totalPrice) { + this.totalPrice = totalPrice; + } + + public String getPayType() { + return payType; + } + + public void setPayType(String payType) { + this.payType = payType == null ? null : payType.trim(); + } + + public String getBillType() { + return billType; + } + + public void setBillType(String billType) { + this.billType = billType == null ? null : billType.trim(); + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark == null ? null : remark.trim(); + } + + public String getFileName() { + return fileName; + } + + public void setFileName(String fileName) { + this.fileName = fileName == null ? null : fileName.trim(); + } + + public String getSalesMan() { + return salesMan; + } + + public void setSalesMan(String salesMan) { + this.salesMan = salesMan == null ? null : salesMan.trim(); + } + + public String getAccountIdList() { + return accountIdList; + } + + public void setAccountIdList(String accountIdList) { + this.accountIdList = accountIdList == null ? null : accountIdList.trim(); + } + + public String getAccountMoneyList() { + return accountMoneyList; + } + + public void setAccountMoneyList(String accountMoneyList) { + this.accountMoneyList = accountMoneyList == null ? null : accountMoneyList.trim(); + } + + public BigDecimal getDiscount() { + return discount; + } + + public void setDiscount(BigDecimal discount) { + this.discount = discount; + } + + public BigDecimal getDiscountMoney() { + return discountMoney; + } + + public void setDiscountMoney(BigDecimal discountMoney) { + this.discountMoney = discountMoney; + } + + public BigDecimal getDiscountLastMoney() { + return discountLastMoney; + } + + public void setDiscountLastMoney(BigDecimal discountLastMoney) { + this.discountLastMoney = discountLastMoney; + } + + public BigDecimal getOtherMoney() { + return otherMoney; + } + + public void setOtherMoney(BigDecimal otherMoney) { + this.otherMoney = otherMoney; + } + + public BigDecimal getDeposit() { + return deposit; + } + + public void setDeposit(BigDecimal deposit) { + this.deposit = deposit; + } + + public BigDecimal getLastDeposit() { + return lastDeposit; + } + + public void setLastDeposit(BigDecimal lastDeposit) { + this.lastDeposit = lastDeposit; + } + + public BigDecimal getDebt() { + return debt; + } + + public void setDebt(BigDecimal debt) { + this.debt = debt; + } + + public BigDecimal getLastDebt() { + return lastDebt; + } + + public void setLastDebt(BigDecimal lastDebt) { + this.lastDebt = lastDebt; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status == null ? null : status.trim(); + } + + public String getPurchaseStatus() { + return purchaseStatus; + } + + public void setPurchaseStatus(String purchaseStatus) { + this.purchaseStatus = purchaseStatus == null ? null : purchaseStatus.trim(); + } + + public String getSource() { + return source; + } + + public void setSource(String source) { + this.source = source == null ? null : source.trim(); + } + + public String getLinkNumber() { + return linkNumber; + } + + public void setLinkNumber(String linkNumber) { + this.linkNumber = linkNumber == null ? null : linkNumber.trim(); + } + + public String getLinkApply() { + return linkApply; + } + + public void setLinkApply(String linkApply) { + this.linkApply = linkApply == null ? null : linkApply.trim(); + } + + public Long getTenantId() { + return tenantId; + } + + public void setTenantId(Long tenantId) { + this.tenantId = tenantId; + } + + public String getDeleteFlag() { + return deleteFlag; + } + + public void setDeleteFlag(String deleteFlag) { + this.deleteFlag = deleteFlag == null ? null : deleteFlag.trim(); + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/DepotHeadExample.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/DepotHeadExample.java new file mode 100644 index 0000000..52d4e41 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/DepotHeadExample.java @@ -0,0 +1,2471 @@ +package com.reallin.smt.datasource.entities; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +public class DepotHeadExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public DepotHeadExample() { + oredCriteria = new ArrayList<>(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList<>(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andTypeIsNull() { + addCriterion("type is null"); + return (Criteria) this; + } + + public Criteria andTypeIsNotNull() { + addCriterion("type is not null"); + return (Criteria) this; + } + + public Criteria andTypeEqualTo(String value) { + addCriterion("type =", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotEqualTo(String value) { + addCriterion("type <>", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeGreaterThan(String value) { + addCriterion("type >", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeGreaterThanOrEqualTo(String value) { + addCriterion("type >=", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLessThan(String value) { + addCriterion("type <", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLessThanOrEqualTo(String value) { + addCriterion("type <=", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLike(String value) { + addCriterion("type like", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotLike(String value) { + addCriterion("type not like", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeIn(List values) { + addCriterion("type in", values, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotIn(List values) { + addCriterion("type not in", values, "type"); + return (Criteria) this; + } + + public Criteria andTypeBetween(String value1, String value2) { + addCriterion("type between", value1, value2, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotBetween(String value1, String value2) { + addCriterion("type not between", value1, value2, "type"); + return (Criteria) this; + } + + public Criteria andSubTypeIsNull() { + addCriterion("sub_type is null"); + return (Criteria) this; + } + + public Criteria andSubTypeIsNotNull() { + addCriterion("sub_type is not null"); + return (Criteria) this; + } + + public Criteria andSubTypeEqualTo(String value) { + addCriterion("sub_type =", value, "subType"); + return (Criteria) this; + } + + public Criteria andSubTypeNotEqualTo(String value) { + addCriterion("sub_type <>", value, "subType"); + return (Criteria) this; + } + + public Criteria andSubTypeGreaterThan(String value) { + addCriterion("sub_type >", value, "subType"); + return (Criteria) this; + } + + public Criteria andSubTypeGreaterThanOrEqualTo(String value) { + addCriterion("sub_type >=", value, "subType"); + return (Criteria) this; + } + + public Criteria andSubTypeLessThan(String value) { + addCriterion("sub_type <", value, "subType"); + return (Criteria) this; + } + + public Criteria andSubTypeLessThanOrEqualTo(String value) { + addCriterion("sub_type <=", value, "subType"); + return (Criteria) this; + } + + public Criteria andSubTypeLike(String value) { + addCriterion("sub_type like", value, "subType"); + return (Criteria) this; + } + + public Criteria andSubTypeNotLike(String value) { + addCriterion("sub_type not like", value, "subType"); + return (Criteria) this; + } + + public Criteria andSubTypeIn(List values) { + addCriterion("sub_type in", values, "subType"); + return (Criteria) this; + } + + public Criteria andSubTypeNotIn(List values) { + addCriterion("sub_type not in", values, "subType"); + return (Criteria) this; + } + + public Criteria andSubTypeBetween(String value1, String value2) { + addCriterion("sub_type between", value1, value2, "subType"); + return (Criteria) this; + } + + public Criteria andSubTypeNotBetween(String value1, String value2) { + addCriterion("sub_type not between", value1, value2, "subType"); + return (Criteria) this; + } + + public Criteria andDefaultNumberIsNull() { + addCriterion("default_number is null"); + return (Criteria) this; + } + + public Criteria andDefaultNumberIsNotNull() { + addCriterion("default_number is not null"); + return (Criteria) this; + } + + public Criteria andDefaultNumberEqualTo(String value) { + addCriterion("default_number =", value, "defaultNumber"); + return (Criteria) this; + } + + public Criteria andDefaultNumberNotEqualTo(String value) { + addCriterion("default_number <>", value, "defaultNumber"); + return (Criteria) this; + } + + public Criteria andDefaultNumberGreaterThan(String value) { + addCriterion("default_number >", value, "defaultNumber"); + return (Criteria) this; + } + + public Criteria andDefaultNumberGreaterThanOrEqualTo(String value) { + addCriterion("default_number >=", value, "defaultNumber"); + return (Criteria) this; + } + + public Criteria andDefaultNumberLessThan(String value) { + addCriterion("default_number <", value, "defaultNumber"); + return (Criteria) this; + } + + public Criteria andDefaultNumberLessThanOrEqualTo(String value) { + addCriterion("default_number <=", value, "defaultNumber"); + return (Criteria) this; + } + + public Criteria andDefaultNumberLike(String value) { + addCriterion("default_number like", value, "defaultNumber"); + return (Criteria) this; + } + + public Criteria andDefaultNumberNotLike(String value) { + addCriterion("default_number not like", value, "defaultNumber"); + return (Criteria) this; + } + + public Criteria andDefaultNumberIn(List values) { + addCriterion("default_number in", values, "defaultNumber"); + return (Criteria) this; + } + + public Criteria andDefaultNumberNotIn(List values) { + addCriterion("default_number not in", values, "defaultNumber"); + return (Criteria) this; + } + + public Criteria andDefaultNumberBetween(String value1, String value2) { + addCriterion("default_number between", value1, value2, "defaultNumber"); + return (Criteria) this; + } + + public Criteria andDefaultNumberNotBetween(String value1, String value2) { + addCriterion("default_number not between", value1, value2, "defaultNumber"); + return (Criteria) this; + } + + public Criteria andNumberIsNull() { + addCriterion("number is null"); + return (Criteria) this; + } + + public Criteria andNumberIsNotNull() { + addCriterion("number is not null"); + return (Criteria) this; + } + + public Criteria andNumberEqualTo(String value) { + addCriterion("number =", value, "number"); + return (Criteria) this; + } + + public Criteria andNumberNotEqualTo(String value) { + addCriterion("number <>", value, "number"); + return (Criteria) this; + } + + public Criteria andNumberGreaterThan(String value) { + addCriterion("number >", value, "number"); + return (Criteria) this; + } + + public Criteria andNumberGreaterThanOrEqualTo(String value) { + addCriterion("number >=", value, "number"); + return (Criteria) this; + } + + public Criteria andNumberLessThan(String value) { + addCriterion("number <", value, "number"); + return (Criteria) this; + } + + public Criteria andNumberLessThanOrEqualTo(String value) { + addCriterion("number <=", value, "number"); + return (Criteria) this; + } + + public Criteria andNumberLike(String value) { + addCriterion("number like", value, "number"); + return (Criteria) this; + } + + public Criteria andNumberNotLike(String value) { + addCriterion("number not like", value, "number"); + return (Criteria) this; + } + + public Criteria andNumberIn(List values) { + addCriterion("number in", values, "number"); + return (Criteria) this; + } + + public Criteria andNumberNotIn(List values) { + addCriterion("number not in", values, "number"); + return (Criteria) this; + } + + public Criteria andNumberBetween(String value1, String value2) { + addCriterion("number between", value1, value2, "number"); + return (Criteria) this; + } + + public Criteria andNumberNotBetween(String value1, String value2) { + addCriterion("number not between", value1, value2, "number"); + return (Criteria) this; + } + + public Criteria andCreateTimeIsNull() { + addCriterion("create_time is null"); + return (Criteria) this; + } + + public Criteria andCreateTimeIsNotNull() { + addCriterion("create_time is not null"); + return (Criteria) this; + } + + public Criteria andCreateTimeEqualTo(Date value) { + addCriterion("create_time =", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotEqualTo(Date value) { + addCriterion("create_time <>", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeGreaterThan(Date value) { + addCriterion("create_time >", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeGreaterThanOrEqualTo(Date value) { + addCriterion("create_time >=", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeLessThan(Date value) { + addCriterion("create_time <", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeLessThanOrEqualTo(Date value) { + addCriterion("create_time <=", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeIn(List values) { + addCriterion("create_time in", values, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotIn(List values) { + addCriterion("create_time not in", values, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeBetween(Date value1, Date value2) { + addCriterion("create_time between", value1, value2, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotBetween(Date value1, Date value2) { + addCriterion("create_time not between", value1, value2, "createTime"); + return (Criteria) this; + } + + public Criteria andOperTimeIsNull() { + addCriterion("oper_time is null"); + return (Criteria) this; + } + + public Criteria andOperTimeIsNotNull() { + addCriterion("oper_time is not null"); + return (Criteria) this; + } + + public Criteria andOperTimeEqualTo(Date value) { + addCriterion("oper_time =", value, "operTime"); + return (Criteria) this; + } + + public Criteria andOperTimeNotEqualTo(Date value) { + addCriterion("oper_time <>", value, "operTime"); + return (Criteria) this; + } + + public Criteria andOperTimeGreaterThan(Date value) { + addCriterion("oper_time >", value, "operTime"); + return (Criteria) this; + } + + public Criteria andOperTimeGreaterThanOrEqualTo(Date value) { + addCriterion("oper_time >=", value, "operTime"); + return (Criteria) this; + } + + public Criteria andOperTimeLessThan(Date value) { + addCriterion("oper_time <", value, "operTime"); + return (Criteria) this; + } + + public Criteria andOperTimeLessThanOrEqualTo(Date value) { + addCriterion("oper_time <=", value, "operTime"); + return (Criteria) this; + } + + public Criteria andOperTimeIn(List values) { + addCriterion("oper_time in", values, "operTime"); + return (Criteria) this; + } + + public Criteria andOperTimeNotIn(List values) { + addCriterion("oper_time not in", values, "operTime"); + return (Criteria) this; + } + + public Criteria andOperTimeBetween(Date value1, Date value2) { + addCriterion("oper_time between", value1, value2, "operTime"); + return (Criteria) this; + } + + public Criteria andOperTimeNotBetween(Date value1, Date value2) { + addCriterion("oper_time not between", value1, value2, "operTime"); + return (Criteria) this; + } + + public Criteria andOrganIdIsNull() { + addCriterion("organ_id is null"); + return (Criteria) this; + } + + public Criteria andOrganIdIsNotNull() { + addCriterion("organ_id is not null"); + return (Criteria) this; + } + + public Criteria andOrganIdEqualTo(Long value) { + addCriterion("organ_id =", value, "organId"); + return (Criteria) this; + } + + public Criteria andOrganIdNotEqualTo(Long value) { + addCriterion("organ_id <>", value, "organId"); + return (Criteria) this; + } + + public Criteria andOrganIdGreaterThan(Long value) { + addCriterion("organ_id >", value, "organId"); + return (Criteria) this; + } + + public Criteria andOrganIdGreaterThanOrEqualTo(Long value) { + addCriterion("organ_id >=", value, "organId"); + return (Criteria) this; + } + + public Criteria andOrganIdLessThan(Long value) { + addCriterion("organ_id <", value, "organId"); + return (Criteria) this; + } + + public Criteria andOrganIdLessThanOrEqualTo(Long value) { + addCriterion("organ_id <=", value, "organId"); + return (Criteria) this; + } + + public Criteria andOrganIdIn(List values) { + addCriterion("organ_id in", values, "organId"); + return (Criteria) this; + } + + public Criteria andOrganIdNotIn(List values) { + addCriterion("organ_id not in", values, "organId"); + return (Criteria) this; + } + + public Criteria andOrganIdBetween(Long value1, Long value2) { + addCriterion("organ_id between", value1, value2, "organId"); + return (Criteria) this; + } + + public Criteria andOrganIdNotBetween(Long value1, Long value2) { + addCriterion("organ_id not between", value1, value2, "organId"); + return (Criteria) this; + } + + public Criteria andCreatorIsNull() { + addCriterion("creator is null"); + return (Criteria) this; + } + + public Criteria andCreatorIsNotNull() { + addCriterion("creator is not null"); + return (Criteria) this; + } + + public Criteria andCreatorEqualTo(Long value) { + addCriterion("creator =", value, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorNotEqualTo(Long value) { + addCriterion("creator <>", value, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorGreaterThan(Long value) { + addCriterion("creator >", value, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorGreaterThanOrEqualTo(Long value) { + addCriterion("creator >=", value, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorLessThan(Long value) { + addCriterion("creator <", value, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorLessThanOrEqualTo(Long value) { + addCriterion("creator <=", value, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorIn(List values) { + addCriterion("creator in", values, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorNotIn(List values) { + addCriterion("creator not in", values, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorBetween(Long value1, Long value2) { + addCriterion("creator between", value1, value2, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorNotBetween(Long value1, Long value2) { + addCriterion("creator not between", value1, value2, "creator"); + return (Criteria) this; + } + + public Criteria andAccountIdIsNull() { + addCriterion("account_id is null"); + return (Criteria) this; + } + + public Criteria andAccountIdIsNotNull() { + addCriterion("account_id is not null"); + return (Criteria) this; + } + + public Criteria andAccountIdEqualTo(Long value) { + addCriterion("account_id =", value, "accountId"); + return (Criteria) this; + } + + public Criteria andAccountIdNotEqualTo(Long value) { + addCriterion("account_id <>", value, "accountId"); + return (Criteria) this; + } + + public Criteria andAccountIdGreaterThan(Long value) { + addCriterion("account_id >", value, "accountId"); + return (Criteria) this; + } + + public Criteria andAccountIdGreaterThanOrEqualTo(Long value) { + addCriterion("account_id >=", value, "accountId"); + return (Criteria) this; + } + + public Criteria andAccountIdLessThan(Long value) { + addCriterion("account_id <", value, "accountId"); + return (Criteria) this; + } + + public Criteria andAccountIdLessThanOrEqualTo(Long value) { + addCriterion("account_id <=", value, "accountId"); + return (Criteria) this; + } + + public Criteria andAccountIdIn(List values) { + addCriterion("account_id in", values, "accountId"); + return (Criteria) this; + } + + public Criteria andAccountIdNotIn(List values) { + addCriterion("account_id not in", values, "accountId"); + return (Criteria) this; + } + + public Criteria andAccountIdBetween(Long value1, Long value2) { + addCriterion("account_id between", value1, value2, "accountId"); + return (Criteria) this; + } + + public Criteria andAccountIdNotBetween(Long value1, Long value2) { + addCriterion("account_id not between", value1, value2, "accountId"); + return (Criteria) this; + } + + public Criteria andChangeAmountIsNull() { + addCriterion("change_amount is null"); + return (Criteria) this; + } + + public Criteria andChangeAmountIsNotNull() { + addCriterion("change_amount is not null"); + return (Criteria) this; + } + + public Criteria andChangeAmountEqualTo(BigDecimal value) { + addCriterion("change_amount =", value, "changeAmount"); + return (Criteria) this; + } + + public Criteria andChangeAmountNotEqualTo(BigDecimal value) { + addCriterion("change_amount <>", value, "changeAmount"); + return (Criteria) this; + } + + public Criteria andChangeAmountGreaterThan(BigDecimal value) { + addCriterion("change_amount >", value, "changeAmount"); + return (Criteria) this; + } + + public Criteria andChangeAmountGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("change_amount >=", value, "changeAmount"); + return (Criteria) this; + } + + public Criteria andChangeAmountLessThan(BigDecimal value) { + addCriterion("change_amount <", value, "changeAmount"); + return (Criteria) this; + } + + public Criteria andChangeAmountLessThanOrEqualTo(BigDecimal value) { + addCriterion("change_amount <=", value, "changeAmount"); + return (Criteria) this; + } + + public Criteria andChangeAmountIn(List values) { + addCriterion("change_amount in", values, "changeAmount"); + return (Criteria) this; + } + + public Criteria andChangeAmountNotIn(List values) { + addCriterion("change_amount not in", values, "changeAmount"); + return (Criteria) this; + } + + public Criteria andChangeAmountBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("change_amount between", value1, value2, "changeAmount"); + return (Criteria) this; + } + + public Criteria andChangeAmountNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("change_amount not between", value1, value2, "changeAmount"); + return (Criteria) this; + } + + public Criteria andBackAmountIsNull() { + addCriterion("back_amount is null"); + return (Criteria) this; + } + + public Criteria andBackAmountIsNotNull() { + addCriterion("back_amount is not null"); + return (Criteria) this; + } + + public Criteria andBackAmountEqualTo(BigDecimal value) { + addCriterion("back_amount =", value, "backAmount"); + return (Criteria) this; + } + + public Criteria andBackAmountNotEqualTo(BigDecimal value) { + addCriterion("back_amount <>", value, "backAmount"); + return (Criteria) this; + } + + public Criteria andBackAmountGreaterThan(BigDecimal value) { + addCriterion("back_amount >", value, "backAmount"); + return (Criteria) this; + } + + public Criteria andBackAmountGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("back_amount >=", value, "backAmount"); + return (Criteria) this; + } + + public Criteria andBackAmountLessThan(BigDecimal value) { + addCriterion("back_amount <", value, "backAmount"); + return (Criteria) this; + } + + public Criteria andBackAmountLessThanOrEqualTo(BigDecimal value) { + addCriterion("back_amount <=", value, "backAmount"); + return (Criteria) this; + } + + public Criteria andBackAmountIn(List values) { + addCriterion("back_amount in", values, "backAmount"); + return (Criteria) this; + } + + public Criteria andBackAmountNotIn(List values) { + addCriterion("back_amount not in", values, "backAmount"); + return (Criteria) this; + } + + public Criteria andBackAmountBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("back_amount between", value1, value2, "backAmount"); + return (Criteria) this; + } + + public Criteria andBackAmountNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("back_amount not between", value1, value2, "backAmount"); + return (Criteria) this; + } + + public Criteria andTotalPriceIsNull() { + addCriterion("total_price is null"); + return (Criteria) this; + } + + public Criteria andTotalPriceIsNotNull() { + addCriterion("total_price is not null"); + return (Criteria) this; + } + + public Criteria andTotalPriceEqualTo(BigDecimal value) { + addCriterion("total_price =", value, "totalPrice"); + return (Criteria) this; + } + + public Criteria andTotalPriceNotEqualTo(BigDecimal value) { + addCriterion("total_price <>", value, "totalPrice"); + return (Criteria) this; + } + + public Criteria andTotalPriceGreaterThan(BigDecimal value) { + addCriterion("total_price >", value, "totalPrice"); + return (Criteria) this; + } + + public Criteria andTotalPriceGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("total_price >=", value, "totalPrice"); + return (Criteria) this; + } + + public Criteria andTotalPriceLessThan(BigDecimal value) { + addCriterion("total_price <", value, "totalPrice"); + return (Criteria) this; + } + + public Criteria andTotalPriceLessThanOrEqualTo(BigDecimal value) { + addCriterion("total_price <=", value, "totalPrice"); + return (Criteria) this; + } + + public Criteria andTotalPriceIn(List values) { + addCriterion("total_price in", values, "totalPrice"); + return (Criteria) this; + } + + public Criteria andTotalPriceNotIn(List values) { + addCriterion("total_price not in", values, "totalPrice"); + return (Criteria) this; + } + + public Criteria andTotalPriceBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("total_price between", value1, value2, "totalPrice"); + return (Criteria) this; + } + + public Criteria andTotalPriceNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("total_price not between", value1, value2, "totalPrice"); + return (Criteria) this; + } + + public Criteria andPayTypeIsNull() { + addCriterion("pay_type is null"); + return (Criteria) this; + } + + public Criteria andPayTypeIsNotNull() { + addCriterion("pay_type is not null"); + return (Criteria) this; + } + + public Criteria andPayTypeEqualTo(String value) { + addCriterion("pay_type =", value, "payType"); + return (Criteria) this; + } + + public Criteria andPayTypeNotEqualTo(String value) { + addCriterion("pay_type <>", value, "payType"); + return (Criteria) this; + } + + public Criteria andPayTypeGreaterThan(String value) { + addCriterion("pay_type >", value, "payType"); + return (Criteria) this; + } + + public Criteria andPayTypeGreaterThanOrEqualTo(String value) { + addCriterion("pay_type >=", value, "payType"); + return (Criteria) this; + } + + public Criteria andPayTypeLessThan(String value) { + addCriterion("pay_type <", value, "payType"); + return (Criteria) this; + } + + public Criteria andPayTypeLessThanOrEqualTo(String value) { + addCriterion("pay_type <=", value, "payType"); + return (Criteria) this; + } + + public Criteria andPayTypeLike(String value) { + addCriterion("pay_type like", value, "payType"); + return (Criteria) this; + } + + public Criteria andPayTypeNotLike(String value) { + addCriterion("pay_type not like", value, "payType"); + return (Criteria) this; + } + + public Criteria andPayTypeIn(List values) { + addCriterion("pay_type in", values, "payType"); + return (Criteria) this; + } + + public Criteria andPayTypeNotIn(List values) { + addCriterion("pay_type not in", values, "payType"); + return (Criteria) this; + } + + public Criteria andPayTypeBetween(String value1, String value2) { + addCriterion("pay_type between", value1, value2, "payType"); + return (Criteria) this; + } + + public Criteria andPayTypeNotBetween(String value1, String value2) { + addCriterion("pay_type not between", value1, value2, "payType"); + return (Criteria) this; + } + + public Criteria andBillTypeIsNull() { + addCriterion("bill_type is null"); + return (Criteria) this; + } + + public Criteria andBillTypeIsNotNull() { + addCriterion("bill_type is not null"); + return (Criteria) this; + } + + public Criteria andBillTypeEqualTo(String value) { + addCriterion("bill_type =", value, "billType"); + return (Criteria) this; + } + + public Criteria andBillTypeNotEqualTo(String value) { + addCriterion("bill_type <>", value, "billType"); + return (Criteria) this; + } + + public Criteria andBillTypeGreaterThan(String value) { + addCriterion("bill_type >", value, "billType"); + return (Criteria) this; + } + + public Criteria andBillTypeGreaterThanOrEqualTo(String value) { + addCriterion("bill_type >=", value, "billType"); + return (Criteria) this; + } + + public Criteria andBillTypeLessThan(String value) { + addCriterion("bill_type <", value, "billType"); + return (Criteria) this; + } + + public Criteria andBillTypeLessThanOrEqualTo(String value) { + addCriterion("bill_type <=", value, "billType"); + return (Criteria) this; + } + + public Criteria andBillTypeLike(String value) { + addCriterion("bill_type like", value, "billType"); + return (Criteria) this; + } + + public Criteria andBillTypeNotLike(String value) { + addCriterion("bill_type not like", value, "billType"); + return (Criteria) this; + } + + public Criteria andBillTypeIn(List values) { + addCriterion("bill_type in", values, "billType"); + return (Criteria) this; + } + + public Criteria andBillTypeNotIn(List values) { + addCriterion("bill_type not in", values, "billType"); + return (Criteria) this; + } + + public Criteria andBillTypeBetween(String value1, String value2) { + addCriterion("bill_type between", value1, value2, "billType"); + return (Criteria) this; + } + + public Criteria andBillTypeNotBetween(String value1, String value2) { + addCriterion("bill_type not between", value1, value2, "billType"); + return (Criteria) this; + } + + public Criteria andRemarkIsNull() { + addCriterion("remark is null"); + return (Criteria) this; + } + + public Criteria andRemarkIsNotNull() { + addCriterion("remark is not null"); + return (Criteria) this; + } + + public Criteria andRemarkEqualTo(String value) { + addCriterion("remark =", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotEqualTo(String value) { + addCriterion("remark <>", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThan(String value) { + addCriterion("remark >", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThanOrEqualTo(String value) { + addCriterion("remark >=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThan(String value) { + addCriterion("remark <", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThanOrEqualTo(String value) { + addCriterion("remark <=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLike(String value) { + addCriterion("remark like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotLike(String value) { + addCriterion("remark not like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkIn(List values) { + addCriterion("remark in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotIn(List values) { + addCriterion("remark not in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkBetween(String value1, String value2) { + addCriterion("remark between", value1, value2, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotBetween(String value1, String value2) { + addCriterion("remark not between", value1, value2, "remark"); + return (Criteria) this; + } + + public Criteria andFileNameIsNull() { + addCriterion("file_name is null"); + return (Criteria) this; + } + + public Criteria andFileNameIsNotNull() { + addCriterion("file_name is not null"); + return (Criteria) this; + } + + public Criteria andFileNameEqualTo(String value) { + addCriterion("file_name =", value, "fileName"); + return (Criteria) this; + } + + public Criteria andFileNameNotEqualTo(String value) { + addCriterion("file_name <>", value, "fileName"); + return (Criteria) this; + } + + public Criteria andFileNameGreaterThan(String value) { + addCriterion("file_name >", value, "fileName"); + return (Criteria) this; + } + + public Criteria andFileNameGreaterThanOrEqualTo(String value) { + addCriterion("file_name >=", value, "fileName"); + return (Criteria) this; + } + + public Criteria andFileNameLessThan(String value) { + addCriterion("file_name <", value, "fileName"); + return (Criteria) this; + } + + public Criteria andFileNameLessThanOrEqualTo(String value) { + addCriterion("file_name <=", value, "fileName"); + return (Criteria) this; + } + + public Criteria andFileNameLike(String value) { + addCriterion("file_name like", value, "fileName"); + return (Criteria) this; + } + + public Criteria andFileNameNotLike(String value) { + addCriterion("file_name not like", value, "fileName"); + return (Criteria) this; + } + + public Criteria andFileNameIn(List values) { + addCriterion("file_name in", values, "fileName"); + return (Criteria) this; + } + + public Criteria andFileNameNotIn(List values) { + addCriterion("file_name not in", values, "fileName"); + return (Criteria) this; + } + + public Criteria andFileNameBetween(String value1, String value2) { + addCriterion("file_name between", value1, value2, "fileName"); + return (Criteria) this; + } + + public Criteria andFileNameNotBetween(String value1, String value2) { + addCriterion("file_name not between", value1, value2, "fileName"); + return (Criteria) this; + } + + public Criteria andSalesManIsNull() { + addCriterion("sales_man is null"); + return (Criteria) this; + } + + public Criteria andSalesManIsNotNull() { + addCriterion("sales_man is not null"); + return (Criteria) this; + } + + public Criteria andSalesManEqualTo(String value) { + addCriterion("sales_man =", value, "salesMan"); + return (Criteria) this; + } + + public Criteria andSalesManNotEqualTo(String value) { + addCriterion("sales_man <>", value, "salesMan"); + return (Criteria) this; + } + + public Criteria andSalesManGreaterThan(String value) { + addCriterion("sales_man >", value, "salesMan"); + return (Criteria) this; + } + + public Criteria andSalesManGreaterThanOrEqualTo(String value) { + addCriterion("sales_man >=", value, "salesMan"); + return (Criteria) this; + } + + public Criteria andSalesManLessThan(String value) { + addCriterion("sales_man <", value, "salesMan"); + return (Criteria) this; + } + + public Criteria andSalesManLessThanOrEqualTo(String value) { + addCriterion("sales_man <=", value, "salesMan"); + return (Criteria) this; + } + + public Criteria andSalesManLike(String value) { + addCriterion("sales_man like", value, "salesMan"); + return (Criteria) this; + } + + public Criteria andSalesManNotLike(String value) { + addCriterion("sales_man not like", value, "salesMan"); + return (Criteria) this; + } + + public Criteria andSalesManIn(List values) { + addCriterion("sales_man in", values, "salesMan"); + return (Criteria) this; + } + + public Criteria andSalesManNotIn(List values) { + addCriterion("sales_man not in", values, "salesMan"); + return (Criteria) this; + } + + public Criteria andSalesManBetween(String value1, String value2) { + addCriterion("sales_man between", value1, value2, "salesMan"); + return (Criteria) this; + } + + public Criteria andSalesManNotBetween(String value1, String value2) { + addCriterion("sales_man not between", value1, value2, "salesMan"); + return (Criteria) this; + } + + public Criteria andAccountIdListIsNull() { + addCriterion("account_id_list is null"); + return (Criteria) this; + } + + public Criteria andAccountIdListIsNotNull() { + addCriterion("account_id_list is not null"); + return (Criteria) this; + } + + public Criteria andAccountIdListEqualTo(String value) { + addCriterion("account_id_list =", value, "accountIdList"); + return (Criteria) this; + } + + public Criteria andAccountIdListNotEqualTo(String value) { + addCriterion("account_id_list <>", value, "accountIdList"); + return (Criteria) this; + } + + public Criteria andAccountIdListGreaterThan(String value) { + addCriterion("account_id_list >", value, "accountIdList"); + return (Criteria) this; + } + + public Criteria andAccountIdListGreaterThanOrEqualTo(String value) { + addCriterion("account_id_list >=", value, "accountIdList"); + return (Criteria) this; + } + + public Criteria andAccountIdListLessThan(String value) { + addCriterion("account_id_list <", value, "accountIdList"); + return (Criteria) this; + } + + public Criteria andAccountIdListLessThanOrEqualTo(String value) { + addCriterion("account_id_list <=", value, "accountIdList"); + return (Criteria) this; + } + + public Criteria andAccountIdListLike(String value) { + addCriterion("account_id_list like", value, "accountIdList"); + return (Criteria) this; + } + + public Criteria andAccountIdListNotLike(String value) { + addCriterion("account_id_list not like", value, "accountIdList"); + return (Criteria) this; + } + + public Criteria andAccountIdListIn(List values) { + addCriterion("account_id_list in", values, "accountIdList"); + return (Criteria) this; + } + + public Criteria andAccountIdListNotIn(List values) { + addCriterion("account_id_list not in", values, "accountIdList"); + return (Criteria) this; + } + + public Criteria andAccountIdListBetween(String value1, String value2) { + addCriterion("account_id_list between", value1, value2, "accountIdList"); + return (Criteria) this; + } + + public Criteria andAccountIdListNotBetween(String value1, String value2) { + addCriterion("account_id_list not between", value1, value2, "accountIdList"); + return (Criteria) this; + } + + public Criteria andAccountMoneyListIsNull() { + addCriterion("account_money_list is null"); + return (Criteria) this; + } + + public Criteria andAccountMoneyListIsNotNull() { + addCriterion("account_money_list is not null"); + return (Criteria) this; + } + + public Criteria andAccountMoneyListEqualTo(String value) { + addCriterion("account_money_list =", value, "accountMoneyList"); + return (Criteria) this; + } + + public Criteria andAccountMoneyListNotEqualTo(String value) { + addCriterion("account_money_list <>", value, "accountMoneyList"); + return (Criteria) this; + } + + public Criteria andAccountMoneyListGreaterThan(String value) { + addCriterion("account_money_list >", value, "accountMoneyList"); + return (Criteria) this; + } + + public Criteria andAccountMoneyListGreaterThanOrEqualTo(String value) { + addCriterion("account_money_list >=", value, "accountMoneyList"); + return (Criteria) this; + } + + public Criteria andAccountMoneyListLessThan(String value) { + addCriterion("account_money_list <", value, "accountMoneyList"); + return (Criteria) this; + } + + public Criteria andAccountMoneyListLessThanOrEqualTo(String value) { + addCriterion("account_money_list <=", value, "accountMoneyList"); + return (Criteria) this; + } + + public Criteria andAccountMoneyListLike(String value) { + addCriterion("account_money_list like", value, "accountMoneyList"); + return (Criteria) this; + } + + public Criteria andAccountMoneyListNotLike(String value) { + addCriterion("account_money_list not like", value, "accountMoneyList"); + return (Criteria) this; + } + + public Criteria andAccountMoneyListIn(List values) { + addCriterion("account_money_list in", values, "accountMoneyList"); + return (Criteria) this; + } + + public Criteria andAccountMoneyListNotIn(List values) { + addCriterion("account_money_list not in", values, "accountMoneyList"); + return (Criteria) this; + } + + public Criteria andAccountMoneyListBetween(String value1, String value2) { + addCriterion("account_money_list between", value1, value2, "accountMoneyList"); + return (Criteria) this; + } + + public Criteria andAccountMoneyListNotBetween(String value1, String value2) { + addCriterion("account_money_list not between", value1, value2, "accountMoneyList"); + return (Criteria) this; + } + + public Criteria andDiscountIsNull() { + addCriterion("discount is null"); + return (Criteria) this; + } + + public Criteria andDiscountIsNotNull() { + addCriterion("discount is not null"); + return (Criteria) this; + } + + public Criteria andDiscountEqualTo(BigDecimal value) { + addCriterion("discount =", value, "discount"); + return (Criteria) this; + } + + public Criteria andDiscountNotEqualTo(BigDecimal value) { + addCriterion("discount <>", value, "discount"); + return (Criteria) this; + } + + public Criteria andDiscountGreaterThan(BigDecimal value) { + addCriterion("discount >", value, "discount"); + return (Criteria) this; + } + + public Criteria andDiscountGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("discount >=", value, "discount"); + return (Criteria) this; + } + + public Criteria andDiscountLessThan(BigDecimal value) { + addCriterion("discount <", value, "discount"); + return (Criteria) this; + } + + public Criteria andDiscountLessThanOrEqualTo(BigDecimal value) { + addCriterion("discount <=", value, "discount"); + return (Criteria) this; + } + + public Criteria andDiscountIn(List values) { + addCriterion("discount in", values, "discount"); + return (Criteria) this; + } + + public Criteria andDiscountNotIn(List values) { + addCriterion("discount not in", values, "discount"); + return (Criteria) this; + } + + public Criteria andDiscountBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("discount between", value1, value2, "discount"); + return (Criteria) this; + } + + public Criteria andDiscountNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("discount not between", value1, value2, "discount"); + return (Criteria) this; + } + + public Criteria andDiscountMoneyIsNull() { + addCriterion("discount_money is null"); + return (Criteria) this; + } + + public Criteria andDiscountMoneyIsNotNull() { + addCriterion("discount_money is not null"); + return (Criteria) this; + } + + public Criteria andDiscountMoneyEqualTo(BigDecimal value) { + addCriterion("discount_money =", value, "discountMoney"); + return (Criteria) this; + } + + public Criteria andDiscountMoneyNotEqualTo(BigDecimal value) { + addCriterion("discount_money <>", value, "discountMoney"); + return (Criteria) this; + } + + public Criteria andDiscountMoneyGreaterThan(BigDecimal value) { + addCriterion("discount_money >", value, "discountMoney"); + return (Criteria) this; + } + + public Criteria andDiscountMoneyGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("discount_money >=", value, "discountMoney"); + return (Criteria) this; + } + + public Criteria andDiscountMoneyLessThan(BigDecimal value) { + addCriterion("discount_money <", value, "discountMoney"); + return (Criteria) this; + } + + public Criteria andDiscountMoneyLessThanOrEqualTo(BigDecimal value) { + addCriterion("discount_money <=", value, "discountMoney"); + return (Criteria) this; + } + + public Criteria andDiscountMoneyIn(List values) { + addCriterion("discount_money in", values, "discountMoney"); + return (Criteria) this; + } + + public Criteria andDiscountMoneyNotIn(List values) { + addCriterion("discount_money not in", values, "discountMoney"); + return (Criteria) this; + } + + public Criteria andDiscountMoneyBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("discount_money between", value1, value2, "discountMoney"); + return (Criteria) this; + } + + public Criteria andDiscountMoneyNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("discount_money not between", value1, value2, "discountMoney"); + return (Criteria) this; + } + + public Criteria andDiscountLastMoneyIsNull() { + addCriterion("discount_last_money is null"); + return (Criteria) this; + } + + public Criteria andDiscountLastMoneyIsNotNull() { + addCriterion("discount_last_money is not null"); + return (Criteria) this; + } + + public Criteria andDiscountLastMoneyEqualTo(BigDecimal value) { + addCriterion("discount_last_money =", value, "discountLastMoney"); + return (Criteria) this; + } + + public Criteria andDiscountLastMoneyNotEqualTo(BigDecimal value) { + addCriterion("discount_last_money <>", value, "discountLastMoney"); + return (Criteria) this; + } + + public Criteria andDiscountLastMoneyGreaterThan(BigDecimal value) { + addCriterion("discount_last_money >", value, "discountLastMoney"); + return (Criteria) this; + } + + public Criteria andDiscountLastMoneyGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("discount_last_money >=", value, "discountLastMoney"); + return (Criteria) this; + } + + public Criteria andDiscountLastMoneyLessThan(BigDecimal value) { + addCriterion("discount_last_money <", value, "discountLastMoney"); + return (Criteria) this; + } + + public Criteria andDiscountLastMoneyLessThanOrEqualTo(BigDecimal value) { + addCriterion("discount_last_money <=", value, "discountLastMoney"); + return (Criteria) this; + } + + public Criteria andDiscountLastMoneyIn(List values) { + addCriterion("discount_last_money in", values, "discountLastMoney"); + return (Criteria) this; + } + + public Criteria andDiscountLastMoneyNotIn(List values) { + addCriterion("discount_last_money not in", values, "discountLastMoney"); + return (Criteria) this; + } + + public Criteria andDiscountLastMoneyBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("discount_last_money between", value1, value2, "discountLastMoney"); + return (Criteria) this; + } + + public Criteria andDiscountLastMoneyNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("discount_last_money not between", value1, value2, "discountLastMoney"); + return (Criteria) this; + } + + public Criteria andOtherMoneyIsNull() { + addCriterion("other_money is null"); + return (Criteria) this; + } + + public Criteria andOtherMoneyIsNotNull() { + addCriterion("other_money is not null"); + return (Criteria) this; + } + + public Criteria andOtherMoneyEqualTo(BigDecimal value) { + addCriterion("other_money =", value, "otherMoney"); + return (Criteria) this; + } + + public Criteria andOtherMoneyNotEqualTo(BigDecimal value) { + addCriterion("other_money <>", value, "otherMoney"); + return (Criteria) this; + } + + public Criteria andOtherMoneyGreaterThan(BigDecimal value) { + addCriterion("other_money >", value, "otherMoney"); + return (Criteria) this; + } + + public Criteria andOtherMoneyGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("other_money >=", value, "otherMoney"); + return (Criteria) this; + } + + public Criteria andOtherMoneyLessThan(BigDecimal value) { + addCriterion("other_money <", value, "otherMoney"); + return (Criteria) this; + } + + public Criteria andOtherMoneyLessThanOrEqualTo(BigDecimal value) { + addCriterion("other_money <=", value, "otherMoney"); + return (Criteria) this; + } + + public Criteria andOtherMoneyIn(List values) { + addCriterion("other_money in", values, "otherMoney"); + return (Criteria) this; + } + + public Criteria andOtherMoneyNotIn(List values) { + addCriterion("other_money not in", values, "otherMoney"); + return (Criteria) this; + } + + public Criteria andOtherMoneyBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("other_money between", value1, value2, "otherMoney"); + return (Criteria) this; + } + + public Criteria andOtherMoneyNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("other_money not between", value1, value2, "otherMoney"); + return (Criteria) this; + } + + public Criteria andDepositIsNull() { + addCriterion("deposit is null"); + return (Criteria) this; + } + + public Criteria andDepositIsNotNull() { + addCriterion("deposit is not null"); + return (Criteria) this; + } + + public Criteria andDepositEqualTo(BigDecimal value) { + addCriterion("deposit =", value, "deposit"); + return (Criteria) this; + } + + public Criteria andDepositNotEqualTo(BigDecimal value) { + addCriterion("deposit <>", value, "deposit"); + return (Criteria) this; + } + + public Criteria andDepositGreaterThan(BigDecimal value) { + addCriterion("deposit >", value, "deposit"); + return (Criteria) this; + } + + public Criteria andDepositGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("deposit >=", value, "deposit"); + return (Criteria) this; + } + + public Criteria andDepositLessThan(BigDecimal value) { + addCriterion("deposit <", value, "deposit"); + return (Criteria) this; + } + + public Criteria andDepositLessThanOrEqualTo(BigDecimal value) { + addCriterion("deposit <=", value, "deposit"); + return (Criteria) this; + } + + public Criteria andDepositIn(List values) { + addCriterion("deposit in", values, "deposit"); + return (Criteria) this; + } + + public Criteria andDepositNotIn(List values) { + addCriterion("deposit not in", values, "deposit"); + return (Criteria) this; + } + + public Criteria andDepositBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("deposit between", value1, value2, "deposit"); + return (Criteria) this; + } + + public Criteria andDepositNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("deposit not between", value1, value2, "deposit"); + return (Criteria) this; + } + + public Criteria andLastDepositIsNull() { + addCriterion("last_deposit is null"); + return (Criteria) this; + } + + public Criteria andLastDepositIsNotNull() { + addCriterion("last_deposit is not null"); + return (Criteria) this; + } + + public Criteria andLastDepositEqualTo(BigDecimal value) { + addCriterion("last_deposit =", value, "lastDeposit"); + return (Criteria) this; + } + + public Criteria andLastDepositNotEqualTo(BigDecimal value) { + addCriterion("last_deposit <>", value, "lastDeposit"); + return (Criteria) this; + } + + public Criteria andLastDepositGreaterThan(BigDecimal value) { + addCriterion("last_deposit >", value, "lastDeposit"); + return (Criteria) this; + } + + public Criteria andLastDepositGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("last_deposit >=", value, "lastDeposit"); + return (Criteria) this; + } + + public Criteria andLastDepositLessThan(BigDecimal value) { + addCriterion("last_deposit <", value, "lastDeposit"); + return (Criteria) this; + } + + public Criteria andLastDepositLessThanOrEqualTo(BigDecimal value) { + addCriterion("last_deposit <=", value, "lastDeposit"); + return (Criteria) this; + } + + public Criteria andLastDepositIn(List values) { + addCriterion("last_deposit in", values, "lastDeposit"); + return (Criteria) this; + } + + public Criteria andLastDepositNotIn(List values) { + addCriterion("last_deposit not in", values, "lastDeposit"); + return (Criteria) this; + } + + public Criteria andLastDepositBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("last_deposit between", value1, value2, "lastDeposit"); + return (Criteria) this; + } + + public Criteria andLastDepositNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("last_deposit not between", value1, value2, "lastDeposit"); + return (Criteria) this; + } + + public Criteria andDebtIsNull() { + addCriterion("debt is null"); + return (Criteria) this; + } + + public Criteria andDebtIsNotNull() { + addCriterion("debt is not null"); + return (Criteria) this; + } + + public Criteria andDebtEqualTo(BigDecimal value) { + addCriterion("debt =", value, "debt"); + return (Criteria) this; + } + + public Criteria andDebtNotEqualTo(BigDecimal value) { + addCriterion("debt <>", value, "debt"); + return (Criteria) this; + } + + public Criteria andDebtGreaterThan(BigDecimal value) { + addCriterion("debt >", value, "debt"); + return (Criteria) this; + } + + public Criteria andDebtGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("debt >=", value, "debt"); + return (Criteria) this; + } + + public Criteria andDebtLessThan(BigDecimal value) { + addCriterion("debt <", value, "debt"); + return (Criteria) this; + } + + public Criteria andDebtLessThanOrEqualTo(BigDecimal value) { + addCriterion("debt <=", value, "debt"); + return (Criteria) this; + } + + public Criteria andDebtIn(List values) { + addCriterion("debt in", values, "debt"); + return (Criteria) this; + } + + public Criteria andDebtNotIn(List values) { + addCriterion("debt not in", values, "debt"); + return (Criteria) this; + } + + public Criteria andDebtBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("debt between", value1, value2, "debt"); + return (Criteria) this; + } + + public Criteria andDebtNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("debt not between", value1, value2, "debt"); + return (Criteria) this; + } + + public Criteria andLastDebtIsNull() { + addCriterion("last_debt is null"); + return (Criteria) this; + } + + public Criteria andLastDebtIsNotNull() { + addCriterion("last_debt is not null"); + return (Criteria) this; + } + + public Criteria andLastDebtEqualTo(BigDecimal value) { + addCriterion("last_debt =", value, "lastDebt"); + return (Criteria) this; + } + + public Criteria andLastDebtNotEqualTo(BigDecimal value) { + addCriterion("last_debt <>", value, "lastDebt"); + return (Criteria) this; + } + + public Criteria andLastDebtGreaterThan(BigDecimal value) { + addCriterion("last_debt >", value, "lastDebt"); + return (Criteria) this; + } + + public Criteria andLastDebtGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("last_debt >=", value, "lastDebt"); + return (Criteria) this; + } + + public Criteria andLastDebtLessThan(BigDecimal value) { + addCriterion("last_debt <", value, "lastDebt"); + return (Criteria) this; + } + + public Criteria andLastDebtLessThanOrEqualTo(BigDecimal value) { + addCriterion("last_debt <=", value, "lastDebt"); + return (Criteria) this; + } + + public Criteria andLastDebtIn(List values) { + addCriterion("last_debt in", values, "lastDebt"); + return (Criteria) this; + } + + public Criteria andLastDebtNotIn(List values) { + addCriterion("last_debt not in", values, "lastDebt"); + return (Criteria) this; + } + + public Criteria andLastDebtBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("last_debt between", value1, value2, "lastDebt"); + return (Criteria) this; + } + + public Criteria andLastDebtNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("last_debt not between", value1, value2, "lastDebt"); + return (Criteria) this; + } + + public Criteria andStatusIsNull() { + addCriterion("status is null"); + return (Criteria) this; + } + + public Criteria andStatusIsNotNull() { + addCriterion("status is not null"); + return (Criteria) this; + } + + public Criteria andStatusEqualTo(String value) { + addCriterion("status =", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusNotEqualTo(String value) { + addCriterion("status <>", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusGreaterThan(String value) { + addCriterion("status >", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusGreaterThanOrEqualTo(String value) { + addCriterion("status >=", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusLessThan(String value) { + addCriterion("status <", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusLessThanOrEqualTo(String value) { + addCriterion("status <=", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusLike(String value) { + addCriterion("status like", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusNotLike(String value) { + addCriterion("status not like", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusIn(List values) { + addCriterion("status in", values, "status"); + return (Criteria) this; + } + + public Criteria andStatusNotIn(List values) { + addCriterion("status not in", values, "status"); + return (Criteria) this; + } + + public Criteria andStatusBetween(String value1, String value2) { + addCriterion("status between", value1, value2, "status"); + return (Criteria) this; + } + + public Criteria andStatusNotBetween(String value1, String value2) { + addCriterion("status not between", value1, value2, "status"); + return (Criteria) this; + } + + public Criteria andPurchaseStatusIsNull() { + addCriterion("purchase_status is null"); + return (Criteria) this; + } + + public Criteria andPurchaseStatusIsNotNull() { + addCriterion("purchase_status is not null"); + return (Criteria) this; + } + + public Criteria andPurchaseStatusEqualTo(String value) { + addCriterion("purchase_status =", value, "purchaseStatus"); + return (Criteria) this; + } + + public Criteria andPurchaseStatusNotEqualTo(String value) { + addCriterion("purchase_status <>", value, "purchaseStatus"); + return (Criteria) this; + } + + public Criteria andPurchaseStatusGreaterThan(String value) { + addCriterion("purchase_status >", value, "purchaseStatus"); + return (Criteria) this; + } + + public Criteria andPurchaseStatusGreaterThanOrEqualTo(String value) { + addCriterion("purchase_status >=", value, "purchaseStatus"); + return (Criteria) this; + } + + public Criteria andPurchaseStatusLessThan(String value) { + addCriterion("purchase_status <", value, "purchaseStatus"); + return (Criteria) this; + } + + public Criteria andPurchaseStatusLessThanOrEqualTo(String value) { + addCriterion("purchase_status <=", value, "purchaseStatus"); + return (Criteria) this; + } + + public Criteria andPurchaseStatusLike(String value) { + addCriterion("purchase_status like", value, "purchaseStatus"); + return (Criteria) this; + } + + public Criteria andPurchaseStatusNotLike(String value) { + addCriterion("purchase_status not like", value, "purchaseStatus"); + return (Criteria) this; + } + + public Criteria andPurchaseStatusIn(List values) { + addCriterion("purchase_status in", values, "purchaseStatus"); + return (Criteria) this; + } + + public Criteria andPurchaseStatusNotIn(List values) { + addCriterion("purchase_status not in", values, "purchaseStatus"); + return (Criteria) this; + } + + public Criteria andPurchaseStatusBetween(String value1, String value2) { + addCriterion("purchase_status between", value1, value2, "purchaseStatus"); + return (Criteria) this; + } + + public Criteria andPurchaseStatusNotBetween(String value1, String value2) { + addCriterion("purchase_status not between", value1, value2, "purchaseStatus"); + return (Criteria) this; + } + + public Criteria andSourceIsNull() { + addCriterion("source is null"); + return (Criteria) this; + } + + public Criteria andSourceIsNotNull() { + addCriterion("source is not null"); + return (Criteria) this; + } + + public Criteria andSourceEqualTo(String value) { + addCriterion("source =", value, "source"); + return (Criteria) this; + } + + public Criteria andSourceNotEqualTo(String value) { + addCriterion("source <>", value, "source"); + return (Criteria) this; + } + + public Criteria andSourceGreaterThan(String value) { + addCriterion("source >", value, "source"); + return (Criteria) this; + } + + public Criteria andSourceGreaterThanOrEqualTo(String value) { + addCriterion("source >=", value, "source"); + return (Criteria) this; + } + + public Criteria andSourceLessThan(String value) { + addCriterion("source <", value, "source"); + return (Criteria) this; + } + + public Criteria andSourceLessThanOrEqualTo(String value) { + addCriterion("source <=", value, "source"); + return (Criteria) this; + } + + public Criteria andSourceLike(String value) { + addCriterion("source like", value, "source"); + return (Criteria) this; + } + + public Criteria andSourceNotLike(String value) { + addCriterion("source not like", value, "source"); + return (Criteria) this; + } + + public Criteria andSourceIn(List values) { + addCriterion("source in", values, "source"); + return (Criteria) this; + } + + public Criteria andSourceNotIn(List values) { + addCriterion("source not in", values, "source"); + return (Criteria) this; + } + + public Criteria andSourceBetween(String value1, String value2) { + addCriterion("source between", value1, value2, "source"); + return (Criteria) this; + } + + public Criteria andSourceNotBetween(String value1, String value2) { + addCriterion("source not between", value1, value2, "source"); + return (Criteria) this; + } + + public Criteria andLinkNumberIsNull() { + addCriterion("link_number is null"); + return (Criteria) this; + } + + public Criteria andLinkNumberIsNotNull() { + addCriterion("link_number is not null"); + return (Criteria) this; + } + + public Criteria andLinkNumberEqualTo(String value) { + addCriterion("link_number =", value, "linkNumber"); + return (Criteria) this; + } + + public Criteria andLinkNumberNotEqualTo(String value) { + addCriterion("link_number <>", value, "linkNumber"); + return (Criteria) this; + } + + public Criteria andLinkNumberGreaterThan(String value) { + addCriterion("link_number >", value, "linkNumber"); + return (Criteria) this; + } + + public Criteria andLinkNumberGreaterThanOrEqualTo(String value) { + addCriterion("link_number >=", value, "linkNumber"); + return (Criteria) this; + } + + public Criteria andLinkNumberLessThan(String value) { + addCriterion("link_number <", value, "linkNumber"); + return (Criteria) this; + } + + public Criteria andLinkNumberLessThanOrEqualTo(String value) { + addCriterion("link_number <=", value, "linkNumber"); + return (Criteria) this; + } + + public Criteria andLinkNumberLike(String value) { + addCriterion("link_number like", value, "linkNumber"); + return (Criteria) this; + } + + public Criteria andLinkNumberNotLike(String value) { + addCriterion("link_number not like", value, "linkNumber"); + return (Criteria) this; + } + + public Criteria andLinkNumberIn(List values) { + addCriterion("link_number in", values, "linkNumber"); + return (Criteria) this; + } + + public Criteria andLinkNumberNotIn(List values) { + addCriterion("link_number not in", values, "linkNumber"); + return (Criteria) this; + } + + public Criteria andLinkNumberBetween(String value1, String value2) { + addCriterion("link_number between", value1, value2, "linkNumber"); + return (Criteria) this; + } + + public Criteria andLinkNumberNotBetween(String value1, String value2) { + addCriterion("link_number not between", value1, value2, "linkNumber"); + return (Criteria) this; + } + + public Criteria andLinkApplyIsNull() { + addCriterion("link_apply is null"); + return (Criteria) this; + } + + public Criteria andLinkApplyIsNotNull() { + addCriterion("link_apply is not null"); + return (Criteria) this; + } + + public Criteria andLinkApplyEqualTo(String value) { + addCriterion("link_apply =", value, "linkApply"); + return (Criteria) this; + } + + public Criteria andLinkApplyNotEqualTo(String value) { + addCriterion("link_apply <>", value, "linkApply"); + return (Criteria) this; + } + + public Criteria andLinkApplyGreaterThan(String value) { + addCriterion("link_apply >", value, "linkApply"); + return (Criteria) this; + } + + public Criteria andLinkApplyGreaterThanOrEqualTo(String value) { + addCriterion("link_apply >=", value, "linkApply"); + return (Criteria) this; + } + + public Criteria andLinkApplyLessThan(String value) { + addCriterion("link_apply <", value, "linkApply"); + return (Criteria) this; + } + + public Criteria andLinkApplyLessThanOrEqualTo(String value) { + addCriterion("link_apply <=", value, "linkApply"); + return (Criteria) this; + } + + public Criteria andLinkApplyLike(String value) { + addCriterion("link_apply like", value, "linkApply"); + return (Criteria) this; + } + + public Criteria andLinkApplyNotLike(String value) { + addCriterion("link_apply not like", value, "linkApply"); + return (Criteria) this; + } + + public Criteria andLinkApplyIn(List values) { + addCriterion("link_apply in", values, "linkApply"); + return (Criteria) this; + } + + public Criteria andLinkApplyNotIn(List values) { + addCriterion("link_apply not in", values, "linkApply"); + return (Criteria) this; + } + + public Criteria andLinkApplyBetween(String value1, String value2) { + addCriterion("link_apply between", value1, value2, "linkApply"); + return (Criteria) this; + } + + public Criteria andLinkApplyNotBetween(String value1, String value2) { + addCriterion("link_apply not between", value1, value2, "linkApply"); + return (Criteria) this; + } + + public Criteria andTenantIdIsNull() { + addCriterion("tenant_id is null"); + return (Criteria) this; + } + + public Criteria andTenantIdIsNotNull() { + addCriterion("tenant_id is not null"); + return (Criteria) this; + } + + public Criteria andTenantIdEqualTo(Long value) { + addCriterion("tenant_id =", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotEqualTo(Long value) { + addCriterion("tenant_id <>", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdGreaterThan(Long value) { + addCriterion("tenant_id >", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdGreaterThanOrEqualTo(Long value) { + addCriterion("tenant_id >=", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdLessThan(Long value) { + addCriterion("tenant_id <", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdLessThanOrEqualTo(Long value) { + addCriterion("tenant_id <=", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdIn(List values) { + addCriterion("tenant_id in", values, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotIn(List values) { + addCriterion("tenant_id not in", values, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdBetween(Long value1, Long value2) { + addCriterion("tenant_id between", value1, value2, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotBetween(Long value1, Long value2) { + addCriterion("tenant_id not between", value1, value2, "tenantId"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIsNull() { + addCriterion("delete_flag is null"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIsNotNull() { + addCriterion("delete_flag is not null"); + return (Criteria) this; + } + + public Criteria andDeleteFlagEqualTo(String value) { + addCriterion("delete_flag =", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotEqualTo(String value) { + addCriterion("delete_flag <>", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagGreaterThan(String value) { + addCriterion("delete_flag >", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagGreaterThanOrEqualTo(String value) { + addCriterion("delete_flag >=", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLessThan(String value) { + addCriterion("delete_flag <", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLessThanOrEqualTo(String value) { + addCriterion("delete_flag <=", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLike(String value) { + addCriterion("delete_flag like", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotLike(String value) { + addCriterion("delete_flag not like", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIn(List values) { + addCriterion("delete_flag in", values, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotIn(List values) { + addCriterion("delete_flag not in", values, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagBetween(String value1, String value2) { + addCriterion("delete_flag between", value1, value2, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotBetween(String value1, String value2) { + addCriterion("delete_flag not between", value1, value2, "deleteFlag"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/DepotHeadVo4Body.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/DepotHeadVo4Body.java new file mode 100644 index 0000000..906538b --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/DepotHeadVo4Body.java @@ -0,0 +1,46 @@ +package com.reallin.smt.datasource.entities; + +import java.math.BigDecimal; + +public class DepotHeadVo4Body { + + private Long id; + + private String info; + + private String rows; + + private BigDecimal preTotalPrice; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getInfo() { + return info; + } + + public void setInfo(String info) { + this.info = info; + } + + public String getRows() { + return rows; + } + + public void setRows(String rows) { + this.rows = rows; + } + + public BigDecimal getPreTotalPrice() { + return preTotalPrice; + } + + public void setPreTotalPrice(BigDecimal preTotalPrice) { + this.preTotalPrice = preTotalPrice; + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/DepotItem.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/DepotItem.java new file mode 100644 index 0000000..6705ef0 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/DepotItem.java @@ -0,0 +1,256 @@ +package com.reallin.smt.datasource.entities; + +import java.math.BigDecimal; +import java.util.Date; + +public class DepotItem { + private Long id; + + private Long headerId; + + private Long materialId; + + private Long materialExtendId; + + private String materialUnit; + + private String sku; + + private BigDecimal operNumber; + + private BigDecimal basicNumber; + + private BigDecimal unitPrice; + + private BigDecimal purchaseUnitPrice; + + private BigDecimal taxUnitPrice; + + private BigDecimal allPrice; + + private String remark; + + private Long depotId; + + private Long anotherDepotId; + + private BigDecimal taxRate; + + private BigDecimal taxMoney; + + private BigDecimal taxLastMoney; + + private String materialType; + + private String snList; + + private String batchNumber; + + private Date expirationDate; + + private Long linkId; + + private Long tenantId; + + private String deleteFlag; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getHeaderId() { + return headerId; + } + + public void setHeaderId(Long headerId) { + this.headerId = headerId; + } + + public Long getMaterialId() { + return materialId; + } + + public void setMaterialId(Long materialId) { + this.materialId = materialId; + } + + public Long getMaterialExtendId() { + return materialExtendId; + } + + public void setMaterialExtendId(Long materialExtendId) { + this.materialExtendId = materialExtendId; + } + + public String getMaterialUnit() { + return materialUnit; + } + + public void setMaterialUnit(String materialUnit) { + this.materialUnit = materialUnit == null ? null : materialUnit.trim(); + } + + public String getSku() { + return sku; + } + + public void setSku(String sku) { + this.sku = sku == null ? null : sku.trim(); + } + + public BigDecimal getOperNumber() { + return operNumber; + } + + public void setOperNumber(BigDecimal operNumber) { + this.operNumber = operNumber; + } + + public BigDecimal getBasicNumber() { + return basicNumber; + } + + public void setBasicNumber(BigDecimal basicNumber) { + this.basicNumber = basicNumber; + } + + public BigDecimal getUnitPrice() { + return unitPrice; + } + + public void setUnitPrice(BigDecimal unitPrice) { + this.unitPrice = unitPrice; + } + + public BigDecimal getPurchaseUnitPrice() { + return purchaseUnitPrice; + } + + public void setPurchaseUnitPrice(BigDecimal purchaseUnitPrice) { + this.purchaseUnitPrice = purchaseUnitPrice; + } + + public BigDecimal getTaxUnitPrice() { + return taxUnitPrice; + } + + public void setTaxUnitPrice(BigDecimal taxUnitPrice) { + this.taxUnitPrice = taxUnitPrice; + } + + public BigDecimal getAllPrice() { + return allPrice; + } + + public void setAllPrice(BigDecimal allPrice) { + this.allPrice = allPrice; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark == null ? null : remark.trim(); + } + + public Long getDepotId() { + return depotId; + } + + public void setDepotId(Long depotId) { + this.depotId = depotId; + } + + public Long getAnotherDepotId() { + return anotherDepotId; + } + + public void setAnotherDepotId(Long anotherDepotId) { + this.anotherDepotId = anotherDepotId; + } + + public BigDecimal getTaxRate() { + return taxRate; + } + + public void setTaxRate(BigDecimal taxRate) { + this.taxRate = taxRate; + } + + public BigDecimal getTaxMoney() { + return taxMoney; + } + + public void setTaxMoney(BigDecimal taxMoney) { + this.taxMoney = taxMoney; + } + + public BigDecimal getTaxLastMoney() { + return taxLastMoney; + } + + public void setTaxLastMoney(BigDecimal taxLastMoney) { + this.taxLastMoney = taxLastMoney; + } + + public String getMaterialType() { + return materialType; + } + + public void setMaterialType(String materialType) { + this.materialType = materialType == null ? null : materialType.trim(); + } + + public String getSnList() { + return snList; + } + + public void setSnList(String snList) { + this.snList = snList == null ? null : snList.trim(); + } + + public String getBatchNumber() { + return batchNumber; + } + + public void setBatchNumber(String batchNumber) { + this.batchNumber = batchNumber == null ? null : batchNumber.trim(); + } + + public Date getExpirationDate() { + return expirationDate; + } + + public void setExpirationDate(Date expirationDate) { + this.expirationDate = expirationDate; + } + + public Long getLinkId() { + return linkId; + } + + public void setLinkId(Long linkId) { + this.linkId = linkId; + } + + public Long getTenantId() { + return tenantId; + } + + public void setTenantId(Long tenantId) { + this.tenantId = tenantId; + } + + public String getDeleteFlag() { + return deleteFlag; + } + + public void setDeleteFlag(String deleteFlag) { + this.deleteFlag = deleteFlag == null ? null : deleteFlag.trim(); + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/DepotItemExample.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/DepotItemExample.java new file mode 100644 index 0000000..0d0f0f4 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/DepotItemExample.java @@ -0,0 +1,1771 @@ +package com.reallin.smt.datasource.entities; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +public class DepotItemExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public DepotItemExample() { + oredCriteria = new ArrayList<>(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList<>(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andHeaderIdIsNull() { + addCriterion("header_id is null"); + return (Criteria) this; + } + + public Criteria andHeaderIdIsNotNull() { + addCriterion("header_id is not null"); + return (Criteria) this; + } + + public Criteria andHeaderIdEqualTo(Long value) { + addCriterion("header_id =", value, "headerId"); + return (Criteria) this; + } + + public Criteria andHeaderIdNotEqualTo(Long value) { + addCriterion("header_id <>", value, "headerId"); + return (Criteria) this; + } + + public Criteria andHeaderIdGreaterThan(Long value) { + addCriterion("header_id >", value, "headerId"); + return (Criteria) this; + } + + public Criteria andHeaderIdGreaterThanOrEqualTo(Long value) { + addCriterion("header_id >=", value, "headerId"); + return (Criteria) this; + } + + public Criteria andHeaderIdLessThan(Long value) { + addCriterion("header_id <", value, "headerId"); + return (Criteria) this; + } + + public Criteria andHeaderIdLessThanOrEqualTo(Long value) { + addCriterion("header_id <=", value, "headerId"); + return (Criteria) this; + } + + public Criteria andHeaderIdIn(List values) { + addCriterion("header_id in", values, "headerId"); + return (Criteria) this; + } + + public Criteria andHeaderIdNotIn(List values) { + addCriterion("header_id not in", values, "headerId"); + return (Criteria) this; + } + + public Criteria andHeaderIdBetween(Long value1, Long value2) { + addCriterion("header_id between", value1, value2, "headerId"); + return (Criteria) this; + } + + public Criteria andHeaderIdNotBetween(Long value1, Long value2) { + addCriterion("header_id not between", value1, value2, "headerId"); + return (Criteria) this; + } + + public Criteria andMaterialIdIsNull() { + addCriterion("material_id is null"); + return (Criteria) this; + } + + public Criteria andMaterialIdIsNotNull() { + addCriterion("material_id is not null"); + return (Criteria) this; + } + + public Criteria andMaterialIdEqualTo(Long value) { + addCriterion("material_id =", value, "materialId"); + return (Criteria) this; + } + + public Criteria andMaterialIdNotEqualTo(Long value) { + addCriterion("material_id <>", value, "materialId"); + return (Criteria) this; + } + + public Criteria andMaterialIdGreaterThan(Long value) { + addCriterion("material_id >", value, "materialId"); + return (Criteria) this; + } + + public Criteria andMaterialIdGreaterThanOrEqualTo(Long value) { + addCriterion("material_id >=", value, "materialId"); + return (Criteria) this; + } + + public Criteria andMaterialIdLessThan(Long value) { + addCriterion("material_id <", value, "materialId"); + return (Criteria) this; + } + + public Criteria andMaterialIdLessThanOrEqualTo(Long value) { + addCriterion("material_id <=", value, "materialId"); + return (Criteria) this; + } + + public Criteria andMaterialIdIn(List values) { + addCriterion("material_id in", values, "materialId"); + return (Criteria) this; + } + + public Criteria andMaterialIdNotIn(List values) { + addCriterion("material_id not in", values, "materialId"); + return (Criteria) this; + } + + public Criteria andMaterialIdBetween(Long value1, Long value2) { + addCriterion("material_id between", value1, value2, "materialId"); + return (Criteria) this; + } + + public Criteria andMaterialIdNotBetween(Long value1, Long value2) { + addCriterion("material_id not between", value1, value2, "materialId"); + return (Criteria) this; + } + + public Criteria andMaterialExtendIdIsNull() { + addCriterion("material_extend_id is null"); + return (Criteria) this; + } + + public Criteria andMaterialExtendIdIsNotNull() { + addCriterion("material_extend_id is not null"); + return (Criteria) this; + } + + public Criteria andMaterialExtendIdEqualTo(Long value) { + addCriterion("material_extend_id =", value, "materialExtendId"); + return (Criteria) this; + } + + public Criteria andMaterialExtendIdNotEqualTo(Long value) { + addCriterion("material_extend_id <>", value, "materialExtendId"); + return (Criteria) this; + } + + public Criteria andMaterialExtendIdGreaterThan(Long value) { + addCriterion("material_extend_id >", value, "materialExtendId"); + return (Criteria) this; + } + + public Criteria andMaterialExtendIdGreaterThanOrEqualTo(Long value) { + addCriterion("material_extend_id >=", value, "materialExtendId"); + return (Criteria) this; + } + + public Criteria andMaterialExtendIdLessThan(Long value) { + addCriterion("material_extend_id <", value, "materialExtendId"); + return (Criteria) this; + } + + public Criteria andMaterialExtendIdLessThanOrEqualTo(Long value) { + addCriterion("material_extend_id <=", value, "materialExtendId"); + return (Criteria) this; + } + + public Criteria andMaterialExtendIdIn(List values) { + addCriterion("material_extend_id in", values, "materialExtendId"); + return (Criteria) this; + } + + public Criteria andMaterialExtendIdNotIn(List values) { + addCriterion("material_extend_id not in", values, "materialExtendId"); + return (Criteria) this; + } + + public Criteria andMaterialExtendIdBetween(Long value1, Long value2) { + addCriterion("material_extend_id between", value1, value2, "materialExtendId"); + return (Criteria) this; + } + + public Criteria andMaterialExtendIdNotBetween(Long value1, Long value2) { + addCriterion("material_extend_id not between", value1, value2, "materialExtendId"); + return (Criteria) this; + } + + public Criteria andMaterialUnitIsNull() { + addCriterion("material_unit is null"); + return (Criteria) this; + } + + public Criteria andMaterialUnitIsNotNull() { + addCriterion("material_unit is not null"); + return (Criteria) this; + } + + public Criteria andMaterialUnitEqualTo(String value) { + addCriterion("material_unit =", value, "materialUnit"); + return (Criteria) this; + } + + public Criteria andMaterialUnitNotEqualTo(String value) { + addCriterion("material_unit <>", value, "materialUnit"); + return (Criteria) this; + } + + public Criteria andMaterialUnitGreaterThan(String value) { + addCriterion("material_unit >", value, "materialUnit"); + return (Criteria) this; + } + + public Criteria andMaterialUnitGreaterThanOrEqualTo(String value) { + addCriterion("material_unit >=", value, "materialUnit"); + return (Criteria) this; + } + + public Criteria andMaterialUnitLessThan(String value) { + addCriterion("material_unit <", value, "materialUnit"); + return (Criteria) this; + } + + public Criteria andMaterialUnitLessThanOrEqualTo(String value) { + addCriterion("material_unit <=", value, "materialUnit"); + return (Criteria) this; + } + + public Criteria andMaterialUnitLike(String value) { + addCriterion("material_unit like", value, "materialUnit"); + return (Criteria) this; + } + + public Criteria andMaterialUnitNotLike(String value) { + addCriterion("material_unit not like", value, "materialUnit"); + return (Criteria) this; + } + + public Criteria andMaterialUnitIn(List values) { + addCriterion("material_unit in", values, "materialUnit"); + return (Criteria) this; + } + + public Criteria andMaterialUnitNotIn(List values) { + addCriterion("material_unit not in", values, "materialUnit"); + return (Criteria) this; + } + + public Criteria andMaterialUnitBetween(String value1, String value2) { + addCriterion("material_unit between", value1, value2, "materialUnit"); + return (Criteria) this; + } + + public Criteria andMaterialUnitNotBetween(String value1, String value2) { + addCriterion("material_unit not between", value1, value2, "materialUnit"); + return (Criteria) this; + } + + public Criteria andSkuIsNull() { + addCriterion("sku is null"); + return (Criteria) this; + } + + public Criteria andSkuIsNotNull() { + addCriterion("sku is not null"); + return (Criteria) this; + } + + public Criteria andSkuEqualTo(String value) { + addCriterion("sku =", value, "sku"); + return (Criteria) this; + } + + public Criteria andSkuNotEqualTo(String value) { + addCriterion("sku <>", value, "sku"); + return (Criteria) this; + } + + public Criteria andSkuGreaterThan(String value) { + addCriterion("sku >", value, "sku"); + return (Criteria) this; + } + + public Criteria andSkuGreaterThanOrEqualTo(String value) { + addCriterion("sku >=", value, "sku"); + return (Criteria) this; + } + + public Criteria andSkuLessThan(String value) { + addCriterion("sku <", value, "sku"); + return (Criteria) this; + } + + public Criteria andSkuLessThanOrEqualTo(String value) { + addCriterion("sku <=", value, "sku"); + return (Criteria) this; + } + + public Criteria andSkuLike(String value) { + addCriterion("sku like", value, "sku"); + return (Criteria) this; + } + + public Criteria andSkuNotLike(String value) { + addCriterion("sku not like", value, "sku"); + return (Criteria) this; + } + + public Criteria andSkuIn(List values) { + addCriterion("sku in", values, "sku"); + return (Criteria) this; + } + + public Criteria andSkuNotIn(List values) { + addCriterion("sku not in", values, "sku"); + return (Criteria) this; + } + + public Criteria andSkuBetween(String value1, String value2) { + addCriterion("sku between", value1, value2, "sku"); + return (Criteria) this; + } + + public Criteria andSkuNotBetween(String value1, String value2) { + addCriterion("sku not between", value1, value2, "sku"); + return (Criteria) this; + } + + public Criteria andOperNumberIsNull() { + addCriterion("oper_number is null"); + return (Criteria) this; + } + + public Criteria andOperNumberIsNotNull() { + addCriterion("oper_number is not null"); + return (Criteria) this; + } + + public Criteria andOperNumberEqualTo(BigDecimal value) { + addCriterion("oper_number =", value, "operNumber"); + return (Criteria) this; + } + + public Criteria andOperNumberNotEqualTo(BigDecimal value) { + addCriterion("oper_number <>", value, "operNumber"); + return (Criteria) this; + } + + public Criteria andOperNumberGreaterThan(BigDecimal value) { + addCriterion("oper_number >", value, "operNumber"); + return (Criteria) this; + } + + public Criteria andOperNumberGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("oper_number >=", value, "operNumber"); + return (Criteria) this; + } + + public Criteria andOperNumberLessThan(BigDecimal value) { + addCriterion("oper_number <", value, "operNumber"); + return (Criteria) this; + } + + public Criteria andOperNumberLessThanOrEqualTo(BigDecimal value) { + addCriterion("oper_number <=", value, "operNumber"); + return (Criteria) this; + } + + public Criteria andOperNumberIn(List values) { + addCriterion("oper_number in", values, "operNumber"); + return (Criteria) this; + } + + public Criteria andOperNumberNotIn(List values) { + addCriterion("oper_number not in", values, "operNumber"); + return (Criteria) this; + } + + public Criteria andOperNumberBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("oper_number between", value1, value2, "operNumber"); + return (Criteria) this; + } + + public Criteria andOperNumberNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("oper_number not between", value1, value2, "operNumber"); + return (Criteria) this; + } + + public Criteria andBasicNumberIsNull() { + addCriterion("basic_number is null"); + return (Criteria) this; + } + + public Criteria andBasicNumberIsNotNull() { + addCriterion("basic_number is not null"); + return (Criteria) this; + } + + public Criteria andBasicNumberEqualTo(BigDecimal value) { + addCriterion("basic_number =", value, "basicNumber"); + return (Criteria) this; + } + + public Criteria andBasicNumberNotEqualTo(BigDecimal value) { + addCriterion("basic_number <>", value, "basicNumber"); + return (Criteria) this; + } + + public Criteria andBasicNumberGreaterThan(BigDecimal value) { + addCriterion("basic_number >", value, "basicNumber"); + return (Criteria) this; + } + + public Criteria andBasicNumberGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("basic_number >=", value, "basicNumber"); + return (Criteria) this; + } + + public Criteria andBasicNumberLessThan(BigDecimal value) { + addCriterion("basic_number <", value, "basicNumber"); + return (Criteria) this; + } + + public Criteria andBasicNumberLessThanOrEqualTo(BigDecimal value) { + addCriterion("basic_number <=", value, "basicNumber"); + return (Criteria) this; + } + + public Criteria andBasicNumberIn(List values) { + addCriterion("basic_number in", values, "basicNumber"); + return (Criteria) this; + } + + public Criteria andBasicNumberNotIn(List values) { + addCriterion("basic_number not in", values, "basicNumber"); + return (Criteria) this; + } + + public Criteria andBasicNumberBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("basic_number between", value1, value2, "basicNumber"); + return (Criteria) this; + } + + public Criteria andBasicNumberNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("basic_number not between", value1, value2, "basicNumber"); + return (Criteria) this; + } + + public Criteria andUnitPriceIsNull() { + addCriterion("unit_price is null"); + return (Criteria) this; + } + + public Criteria andUnitPriceIsNotNull() { + addCriterion("unit_price is not null"); + return (Criteria) this; + } + + public Criteria andUnitPriceEqualTo(BigDecimal value) { + addCriterion("unit_price =", value, "unitPrice"); + return (Criteria) this; + } + + public Criteria andUnitPriceNotEqualTo(BigDecimal value) { + addCriterion("unit_price <>", value, "unitPrice"); + return (Criteria) this; + } + + public Criteria andUnitPriceGreaterThan(BigDecimal value) { + addCriterion("unit_price >", value, "unitPrice"); + return (Criteria) this; + } + + public Criteria andUnitPriceGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("unit_price >=", value, "unitPrice"); + return (Criteria) this; + } + + public Criteria andUnitPriceLessThan(BigDecimal value) { + addCriterion("unit_price <", value, "unitPrice"); + return (Criteria) this; + } + + public Criteria andUnitPriceLessThanOrEqualTo(BigDecimal value) { + addCriterion("unit_price <=", value, "unitPrice"); + return (Criteria) this; + } + + public Criteria andUnitPriceIn(List values) { + addCriterion("unit_price in", values, "unitPrice"); + return (Criteria) this; + } + + public Criteria andUnitPriceNotIn(List values) { + addCriterion("unit_price not in", values, "unitPrice"); + return (Criteria) this; + } + + public Criteria andUnitPriceBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("unit_price between", value1, value2, "unitPrice"); + return (Criteria) this; + } + + public Criteria andUnitPriceNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("unit_price not between", value1, value2, "unitPrice"); + return (Criteria) this; + } + + public Criteria andPurchaseUnitPriceIsNull() { + addCriterion("purchase_unit_price is null"); + return (Criteria) this; + } + + public Criteria andPurchaseUnitPriceIsNotNull() { + addCriterion("purchase_unit_price is not null"); + return (Criteria) this; + } + + public Criteria andPurchaseUnitPriceEqualTo(BigDecimal value) { + addCriterion("purchase_unit_price =", value, "purchaseUnitPrice"); + return (Criteria) this; + } + + public Criteria andPurchaseUnitPriceNotEqualTo(BigDecimal value) { + addCriterion("purchase_unit_price <>", value, "purchaseUnitPrice"); + return (Criteria) this; + } + + public Criteria andPurchaseUnitPriceGreaterThan(BigDecimal value) { + addCriterion("purchase_unit_price >", value, "purchaseUnitPrice"); + return (Criteria) this; + } + + public Criteria andPurchaseUnitPriceGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("purchase_unit_price >=", value, "purchaseUnitPrice"); + return (Criteria) this; + } + + public Criteria andPurchaseUnitPriceLessThan(BigDecimal value) { + addCriterion("purchase_unit_price <", value, "purchaseUnitPrice"); + return (Criteria) this; + } + + public Criteria andPurchaseUnitPriceLessThanOrEqualTo(BigDecimal value) { + addCriterion("purchase_unit_price <=", value, "purchaseUnitPrice"); + return (Criteria) this; + } + + public Criteria andPurchaseUnitPriceIn(List values) { + addCriterion("purchase_unit_price in", values, "purchaseUnitPrice"); + return (Criteria) this; + } + + public Criteria andPurchaseUnitPriceNotIn(List values) { + addCriterion("purchase_unit_price not in", values, "purchaseUnitPrice"); + return (Criteria) this; + } + + public Criteria andPurchaseUnitPriceBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("purchase_unit_price between", value1, value2, "purchaseUnitPrice"); + return (Criteria) this; + } + + public Criteria andPurchaseUnitPriceNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("purchase_unit_price not between", value1, value2, "purchaseUnitPrice"); + return (Criteria) this; + } + + public Criteria andTaxUnitPriceIsNull() { + addCriterion("tax_unit_price is null"); + return (Criteria) this; + } + + public Criteria andTaxUnitPriceIsNotNull() { + addCriterion("tax_unit_price is not null"); + return (Criteria) this; + } + + public Criteria andTaxUnitPriceEqualTo(BigDecimal value) { + addCriterion("tax_unit_price =", value, "taxUnitPrice"); + return (Criteria) this; + } + + public Criteria andTaxUnitPriceNotEqualTo(BigDecimal value) { + addCriterion("tax_unit_price <>", value, "taxUnitPrice"); + return (Criteria) this; + } + + public Criteria andTaxUnitPriceGreaterThan(BigDecimal value) { + addCriterion("tax_unit_price >", value, "taxUnitPrice"); + return (Criteria) this; + } + + public Criteria andTaxUnitPriceGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("tax_unit_price >=", value, "taxUnitPrice"); + return (Criteria) this; + } + + public Criteria andTaxUnitPriceLessThan(BigDecimal value) { + addCriterion("tax_unit_price <", value, "taxUnitPrice"); + return (Criteria) this; + } + + public Criteria andTaxUnitPriceLessThanOrEqualTo(BigDecimal value) { + addCriterion("tax_unit_price <=", value, "taxUnitPrice"); + return (Criteria) this; + } + + public Criteria andTaxUnitPriceIn(List values) { + addCriterion("tax_unit_price in", values, "taxUnitPrice"); + return (Criteria) this; + } + + public Criteria andTaxUnitPriceNotIn(List values) { + addCriterion("tax_unit_price not in", values, "taxUnitPrice"); + return (Criteria) this; + } + + public Criteria andTaxUnitPriceBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("tax_unit_price between", value1, value2, "taxUnitPrice"); + return (Criteria) this; + } + + public Criteria andTaxUnitPriceNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("tax_unit_price not between", value1, value2, "taxUnitPrice"); + return (Criteria) this; + } + + public Criteria andAllPriceIsNull() { + addCriterion("all_price is null"); + return (Criteria) this; + } + + public Criteria andAllPriceIsNotNull() { + addCriterion("all_price is not null"); + return (Criteria) this; + } + + public Criteria andAllPriceEqualTo(BigDecimal value) { + addCriterion("all_price =", value, "allPrice"); + return (Criteria) this; + } + + public Criteria andAllPriceNotEqualTo(BigDecimal value) { + addCriterion("all_price <>", value, "allPrice"); + return (Criteria) this; + } + + public Criteria andAllPriceGreaterThan(BigDecimal value) { + addCriterion("all_price >", value, "allPrice"); + return (Criteria) this; + } + + public Criteria andAllPriceGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("all_price >=", value, "allPrice"); + return (Criteria) this; + } + + public Criteria andAllPriceLessThan(BigDecimal value) { + addCriterion("all_price <", value, "allPrice"); + return (Criteria) this; + } + + public Criteria andAllPriceLessThanOrEqualTo(BigDecimal value) { + addCriterion("all_price <=", value, "allPrice"); + return (Criteria) this; + } + + public Criteria andAllPriceIn(List values) { + addCriterion("all_price in", values, "allPrice"); + return (Criteria) this; + } + + public Criteria andAllPriceNotIn(List values) { + addCriterion("all_price not in", values, "allPrice"); + return (Criteria) this; + } + + public Criteria andAllPriceBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("all_price between", value1, value2, "allPrice"); + return (Criteria) this; + } + + public Criteria andAllPriceNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("all_price not between", value1, value2, "allPrice"); + return (Criteria) this; + } + + public Criteria andRemarkIsNull() { + addCriterion("remark is null"); + return (Criteria) this; + } + + public Criteria andRemarkIsNotNull() { + addCriterion("remark is not null"); + return (Criteria) this; + } + + public Criteria andRemarkEqualTo(String value) { + addCriterion("remark =", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotEqualTo(String value) { + addCriterion("remark <>", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThan(String value) { + addCriterion("remark >", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThanOrEqualTo(String value) { + addCriterion("remark >=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThan(String value) { + addCriterion("remark <", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThanOrEqualTo(String value) { + addCriterion("remark <=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLike(String value) { + addCriterion("remark like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotLike(String value) { + addCriterion("remark not like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkIn(List values) { + addCriterion("remark in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotIn(List values) { + addCriterion("remark not in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkBetween(String value1, String value2) { + addCriterion("remark between", value1, value2, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotBetween(String value1, String value2) { + addCriterion("remark not between", value1, value2, "remark"); + return (Criteria) this; + } + + public Criteria andDepotIdIsNull() { + addCriterion("depot_id is null"); + return (Criteria) this; + } + + public Criteria andDepotIdIsNotNull() { + addCriterion("depot_id is not null"); + return (Criteria) this; + } + + public Criteria andDepotIdEqualTo(Long value) { + addCriterion("depot_id =", value, "depotId"); + return (Criteria) this; + } + + public Criteria andDepotIdNotEqualTo(Long value) { + addCriterion("depot_id <>", value, "depotId"); + return (Criteria) this; + } + + public Criteria andDepotIdGreaterThan(Long value) { + addCriterion("depot_id >", value, "depotId"); + return (Criteria) this; + } + + public Criteria andDepotIdGreaterThanOrEqualTo(Long value) { + addCriterion("depot_id >=", value, "depotId"); + return (Criteria) this; + } + + public Criteria andDepotIdLessThan(Long value) { + addCriterion("depot_id <", value, "depotId"); + return (Criteria) this; + } + + public Criteria andDepotIdLessThanOrEqualTo(Long value) { + addCriterion("depot_id <=", value, "depotId"); + return (Criteria) this; + } + + public Criteria andDepotIdIn(List values) { + addCriterion("depot_id in", values, "depotId"); + return (Criteria) this; + } + + public Criteria andDepotIdNotIn(List values) { + addCriterion("depot_id not in", values, "depotId"); + return (Criteria) this; + } + + public Criteria andDepotIdBetween(Long value1, Long value2) { + addCriterion("depot_id between", value1, value2, "depotId"); + return (Criteria) this; + } + + public Criteria andDepotIdNotBetween(Long value1, Long value2) { + addCriterion("depot_id not between", value1, value2, "depotId"); + return (Criteria) this; + } + + public Criteria andAnotherDepotIdIsNull() { + addCriterion("another_depot_id is null"); + return (Criteria) this; + } + + public Criteria andAnotherDepotIdIsNotNull() { + addCriterion("another_depot_id is not null"); + return (Criteria) this; + } + + public Criteria andAnotherDepotIdEqualTo(Long value) { + addCriterion("another_depot_id =", value, "anotherDepotId"); + return (Criteria) this; + } + + public Criteria andAnotherDepotIdNotEqualTo(Long value) { + addCriterion("another_depot_id <>", value, "anotherDepotId"); + return (Criteria) this; + } + + public Criteria andAnotherDepotIdGreaterThan(Long value) { + addCriterion("another_depot_id >", value, "anotherDepotId"); + return (Criteria) this; + } + + public Criteria andAnotherDepotIdGreaterThanOrEqualTo(Long value) { + addCriterion("another_depot_id >=", value, "anotherDepotId"); + return (Criteria) this; + } + + public Criteria andAnotherDepotIdLessThan(Long value) { + addCriterion("another_depot_id <", value, "anotherDepotId"); + return (Criteria) this; + } + + public Criteria andAnotherDepotIdLessThanOrEqualTo(Long value) { + addCriterion("another_depot_id <=", value, "anotherDepotId"); + return (Criteria) this; + } + + public Criteria andAnotherDepotIdIn(List values) { + addCriterion("another_depot_id in", values, "anotherDepotId"); + return (Criteria) this; + } + + public Criteria andAnotherDepotIdNotIn(List values) { + addCriterion("another_depot_id not in", values, "anotherDepotId"); + return (Criteria) this; + } + + public Criteria andAnotherDepotIdBetween(Long value1, Long value2) { + addCriterion("another_depot_id between", value1, value2, "anotherDepotId"); + return (Criteria) this; + } + + public Criteria andAnotherDepotIdNotBetween(Long value1, Long value2) { + addCriterion("another_depot_id not between", value1, value2, "anotherDepotId"); + return (Criteria) this; + } + + public Criteria andTaxRateIsNull() { + addCriterion("tax_rate is null"); + return (Criteria) this; + } + + public Criteria andTaxRateIsNotNull() { + addCriterion("tax_rate is not null"); + return (Criteria) this; + } + + public Criteria andTaxRateEqualTo(BigDecimal value) { + addCriterion("tax_rate =", value, "taxRate"); + return (Criteria) this; + } + + public Criteria andTaxRateNotEqualTo(BigDecimal value) { + addCriterion("tax_rate <>", value, "taxRate"); + return (Criteria) this; + } + + public Criteria andTaxRateGreaterThan(BigDecimal value) { + addCriterion("tax_rate >", value, "taxRate"); + return (Criteria) this; + } + + public Criteria andTaxRateGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("tax_rate >=", value, "taxRate"); + return (Criteria) this; + } + + public Criteria andTaxRateLessThan(BigDecimal value) { + addCriterion("tax_rate <", value, "taxRate"); + return (Criteria) this; + } + + public Criteria andTaxRateLessThanOrEqualTo(BigDecimal value) { + addCriterion("tax_rate <=", value, "taxRate"); + return (Criteria) this; + } + + public Criteria andTaxRateIn(List values) { + addCriterion("tax_rate in", values, "taxRate"); + return (Criteria) this; + } + + public Criteria andTaxRateNotIn(List values) { + addCriterion("tax_rate not in", values, "taxRate"); + return (Criteria) this; + } + + public Criteria andTaxRateBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("tax_rate between", value1, value2, "taxRate"); + return (Criteria) this; + } + + public Criteria andTaxRateNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("tax_rate not between", value1, value2, "taxRate"); + return (Criteria) this; + } + + public Criteria andTaxMoneyIsNull() { + addCriterion("tax_money is null"); + return (Criteria) this; + } + + public Criteria andTaxMoneyIsNotNull() { + addCriterion("tax_money is not null"); + return (Criteria) this; + } + + public Criteria andTaxMoneyEqualTo(BigDecimal value) { + addCriterion("tax_money =", value, "taxMoney"); + return (Criteria) this; + } + + public Criteria andTaxMoneyNotEqualTo(BigDecimal value) { + addCriterion("tax_money <>", value, "taxMoney"); + return (Criteria) this; + } + + public Criteria andTaxMoneyGreaterThan(BigDecimal value) { + addCriterion("tax_money >", value, "taxMoney"); + return (Criteria) this; + } + + public Criteria andTaxMoneyGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("tax_money >=", value, "taxMoney"); + return (Criteria) this; + } + + public Criteria andTaxMoneyLessThan(BigDecimal value) { + addCriterion("tax_money <", value, "taxMoney"); + return (Criteria) this; + } + + public Criteria andTaxMoneyLessThanOrEqualTo(BigDecimal value) { + addCriterion("tax_money <=", value, "taxMoney"); + return (Criteria) this; + } + + public Criteria andTaxMoneyIn(List values) { + addCriterion("tax_money in", values, "taxMoney"); + return (Criteria) this; + } + + public Criteria andTaxMoneyNotIn(List values) { + addCriterion("tax_money not in", values, "taxMoney"); + return (Criteria) this; + } + + public Criteria andTaxMoneyBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("tax_money between", value1, value2, "taxMoney"); + return (Criteria) this; + } + + public Criteria andTaxMoneyNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("tax_money not between", value1, value2, "taxMoney"); + return (Criteria) this; + } + + public Criteria andTaxLastMoneyIsNull() { + addCriterion("tax_last_money is null"); + return (Criteria) this; + } + + public Criteria andTaxLastMoneyIsNotNull() { + addCriterion("tax_last_money is not null"); + return (Criteria) this; + } + + public Criteria andTaxLastMoneyEqualTo(BigDecimal value) { + addCriterion("tax_last_money =", value, "taxLastMoney"); + return (Criteria) this; + } + + public Criteria andTaxLastMoneyNotEqualTo(BigDecimal value) { + addCriterion("tax_last_money <>", value, "taxLastMoney"); + return (Criteria) this; + } + + public Criteria andTaxLastMoneyGreaterThan(BigDecimal value) { + addCriterion("tax_last_money >", value, "taxLastMoney"); + return (Criteria) this; + } + + public Criteria andTaxLastMoneyGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("tax_last_money >=", value, "taxLastMoney"); + return (Criteria) this; + } + + public Criteria andTaxLastMoneyLessThan(BigDecimal value) { + addCriterion("tax_last_money <", value, "taxLastMoney"); + return (Criteria) this; + } + + public Criteria andTaxLastMoneyLessThanOrEqualTo(BigDecimal value) { + addCriterion("tax_last_money <=", value, "taxLastMoney"); + return (Criteria) this; + } + + public Criteria andTaxLastMoneyIn(List values) { + addCriterion("tax_last_money in", values, "taxLastMoney"); + return (Criteria) this; + } + + public Criteria andTaxLastMoneyNotIn(List values) { + addCriterion("tax_last_money not in", values, "taxLastMoney"); + return (Criteria) this; + } + + public Criteria andTaxLastMoneyBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("tax_last_money between", value1, value2, "taxLastMoney"); + return (Criteria) this; + } + + public Criteria andTaxLastMoneyNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("tax_last_money not between", value1, value2, "taxLastMoney"); + return (Criteria) this; + } + + public Criteria andMaterialTypeIsNull() { + addCriterion("material_type is null"); + return (Criteria) this; + } + + public Criteria andMaterialTypeIsNotNull() { + addCriterion("material_type is not null"); + return (Criteria) this; + } + + public Criteria andMaterialTypeEqualTo(String value) { + addCriterion("material_type =", value, "materialType"); + return (Criteria) this; + } + + public Criteria andMaterialTypeNotEqualTo(String value) { + addCriterion("material_type <>", value, "materialType"); + return (Criteria) this; + } + + public Criteria andMaterialTypeGreaterThan(String value) { + addCriterion("material_type >", value, "materialType"); + return (Criteria) this; + } + + public Criteria andMaterialTypeGreaterThanOrEqualTo(String value) { + addCriterion("material_type >=", value, "materialType"); + return (Criteria) this; + } + + public Criteria andMaterialTypeLessThan(String value) { + addCriterion("material_type <", value, "materialType"); + return (Criteria) this; + } + + public Criteria andMaterialTypeLessThanOrEqualTo(String value) { + addCriterion("material_type <=", value, "materialType"); + return (Criteria) this; + } + + public Criteria andMaterialTypeLike(String value) { + addCriterion("material_type like", value, "materialType"); + return (Criteria) this; + } + + public Criteria andMaterialTypeNotLike(String value) { + addCriterion("material_type not like", value, "materialType"); + return (Criteria) this; + } + + public Criteria andMaterialTypeIn(List values) { + addCriterion("material_type in", values, "materialType"); + return (Criteria) this; + } + + public Criteria andMaterialTypeNotIn(List values) { + addCriterion("material_type not in", values, "materialType"); + return (Criteria) this; + } + + public Criteria andMaterialTypeBetween(String value1, String value2) { + addCriterion("material_type between", value1, value2, "materialType"); + return (Criteria) this; + } + + public Criteria andMaterialTypeNotBetween(String value1, String value2) { + addCriterion("material_type not between", value1, value2, "materialType"); + return (Criteria) this; + } + + public Criteria andSnListIsNull() { + addCriterion("sn_list is null"); + return (Criteria) this; + } + + public Criteria andSnListIsNotNull() { + addCriterion("sn_list is not null"); + return (Criteria) this; + } + + public Criteria andSnListEqualTo(String value) { + addCriterion("sn_list =", value, "snList"); + return (Criteria) this; + } + + public Criteria andSnListNotEqualTo(String value) { + addCriterion("sn_list <>", value, "snList"); + return (Criteria) this; + } + + public Criteria andSnListGreaterThan(String value) { + addCriterion("sn_list >", value, "snList"); + return (Criteria) this; + } + + public Criteria andSnListGreaterThanOrEqualTo(String value) { + addCriterion("sn_list >=", value, "snList"); + return (Criteria) this; + } + + public Criteria andSnListLessThan(String value) { + addCriterion("sn_list <", value, "snList"); + return (Criteria) this; + } + + public Criteria andSnListLessThanOrEqualTo(String value) { + addCriterion("sn_list <=", value, "snList"); + return (Criteria) this; + } + + public Criteria andSnListLike(String value) { + addCriterion("sn_list like", value, "snList"); + return (Criteria) this; + } + + public Criteria andSnListNotLike(String value) { + addCriterion("sn_list not like", value, "snList"); + return (Criteria) this; + } + + public Criteria andSnListIn(List values) { + addCriterion("sn_list in", values, "snList"); + return (Criteria) this; + } + + public Criteria andSnListNotIn(List values) { + addCriterion("sn_list not in", values, "snList"); + return (Criteria) this; + } + + public Criteria andSnListBetween(String value1, String value2) { + addCriterion("sn_list between", value1, value2, "snList"); + return (Criteria) this; + } + + public Criteria andSnListNotBetween(String value1, String value2) { + addCriterion("sn_list not between", value1, value2, "snList"); + return (Criteria) this; + } + + public Criteria andBatchNumberIsNull() { + addCriterion("batch_number is null"); + return (Criteria) this; + } + + public Criteria andBatchNumberIsNotNull() { + addCriterion("batch_number is not null"); + return (Criteria) this; + } + + public Criteria andBatchNumberEqualTo(String value) { + addCriterion("batch_number =", value, "batchNumber"); + return (Criteria) this; + } + + public Criteria andBatchNumberNotEqualTo(String value) { + addCriterion("batch_number <>", value, "batchNumber"); + return (Criteria) this; + } + + public Criteria andBatchNumberGreaterThan(String value) { + addCriterion("batch_number >", value, "batchNumber"); + return (Criteria) this; + } + + public Criteria andBatchNumberGreaterThanOrEqualTo(String value) { + addCriterion("batch_number >=", value, "batchNumber"); + return (Criteria) this; + } + + public Criteria andBatchNumberLessThan(String value) { + addCriterion("batch_number <", value, "batchNumber"); + return (Criteria) this; + } + + public Criteria andBatchNumberLessThanOrEqualTo(String value) { + addCriterion("batch_number <=", value, "batchNumber"); + return (Criteria) this; + } + + public Criteria andBatchNumberLike(String value) { + addCriterion("batch_number like", value, "batchNumber"); + return (Criteria) this; + } + + public Criteria andBatchNumberNotLike(String value) { + addCriterion("batch_number not like", value, "batchNumber"); + return (Criteria) this; + } + + public Criteria andBatchNumberIn(List values) { + addCriterion("batch_number in", values, "batchNumber"); + return (Criteria) this; + } + + public Criteria andBatchNumberNotIn(List values) { + addCriterion("batch_number not in", values, "batchNumber"); + return (Criteria) this; + } + + public Criteria andBatchNumberBetween(String value1, String value2) { + addCriterion("batch_number between", value1, value2, "batchNumber"); + return (Criteria) this; + } + + public Criteria andBatchNumberNotBetween(String value1, String value2) { + addCriterion("batch_number not between", value1, value2, "batchNumber"); + return (Criteria) this; + } + + public Criteria andExpirationDateIsNull() { + addCriterion("expiration_date is null"); + return (Criteria) this; + } + + public Criteria andExpirationDateIsNotNull() { + addCriterion("expiration_date is not null"); + return (Criteria) this; + } + + public Criteria andExpirationDateEqualTo(Date value) { + addCriterion("expiration_date =", value, "expirationDate"); + return (Criteria) this; + } + + public Criteria andExpirationDateNotEqualTo(Date value) { + addCriterion("expiration_date <>", value, "expirationDate"); + return (Criteria) this; + } + + public Criteria andExpirationDateGreaterThan(Date value) { + addCriterion("expiration_date >", value, "expirationDate"); + return (Criteria) this; + } + + public Criteria andExpirationDateGreaterThanOrEqualTo(Date value) { + addCriterion("expiration_date >=", value, "expirationDate"); + return (Criteria) this; + } + + public Criteria andExpirationDateLessThan(Date value) { + addCriterion("expiration_date <", value, "expirationDate"); + return (Criteria) this; + } + + public Criteria andExpirationDateLessThanOrEqualTo(Date value) { + addCriterion("expiration_date <=", value, "expirationDate"); + return (Criteria) this; + } + + public Criteria andExpirationDateIn(List values) { + addCriterion("expiration_date in", values, "expirationDate"); + return (Criteria) this; + } + + public Criteria andExpirationDateNotIn(List values) { + addCriterion("expiration_date not in", values, "expirationDate"); + return (Criteria) this; + } + + public Criteria andExpirationDateBetween(Date value1, Date value2) { + addCriterion("expiration_date between", value1, value2, "expirationDate"); + return (Criteria) this; + } + + public Criteria andExpirationDateNotBetween(Date value1, Date value2) { + addCriterion("expiration_date not between", value1, value2, "expirationDate"); + return (Criteria) this; + } + + public Criteria andLinkIdIsNull() { + addCriterion("link_id is null"); + return (Criteria) this; + } + + public Criteria andLinkIdIsNotNull() { + addCriterion("link_id is not null"); + return (Criteria) this; + } + + public Criteria andLinkIdEqualTo(Long value) { + addCriterion("link_id =", value, "linkId"); + return (Criteria) this; + } + + public Criteria andLinkIdNotEqualTo(Long value) { + addCriterion("link_id <>", value, "linkId"); + return (Criteria) this; + } + + public Criteria andLinkIdGreaterThan(Long value) { + addCriterion("link_id >", value, "linkId"); + return (Criteria) this; + } + + public Criteria andLinkIdGreaterThanOrEqualTo(Long value) { + addCriterion("link_id >=", value, "linkId"); + return (Criteria) this; + } + + public Criteria andLinkIdLessThan(Long value) { + addCriterion("link_id <", value, "linkId"); + return (Criteria) this; + } + + public Criteria andLinkIdLessThanOrEqualTo(Long value) { + addCriterion("link_id <=", value, "linkId"); + return (Criteria) this; + } + + public Criteria andLinkIdIn(List values) { + addCriterion("link_id in", values, "linkId"); + return (Criteria) this; + } + + public Criteria andLinkIdNotIn(List values) { + addCriterion("link_id not in", values, "linkId"); + return (Criteria) this; + } + + public Criteria andLinkIdBetween(Long value1, Long value2) { + addCriterion("link_id between", value1, value2, "linkId"); + return (Criteria) this; + } + + public Criteria andLinkIdNotBetween(Long value1, Long value2) { + addCriterion("link_id not between", value1, value2, "linkId"); + return (Criteria) this; + } + + public Criteria andTenantIdIsNull() { + addCriterion("tenant_id is null"); + return (Criteria) this; + } + + public Criteria andTenantIdIsNotNull() { + addCriterion("tenant_id is not null"); + return (Criteria) this; + } + + public Criteria andTenantIdEqualTo(Long value) { + addCriterion("tenant_id =", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotEqualTo(Long value) { + addCriterion("tenant_id <>", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdGreaterThan(Long value) { + addCriterion("tenant_id >", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdGreaterThanOrEqualTo(Long value) { + addCriterion("tenant_id >=", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdLessThan(Long value) { + addCriterion("tenant_id <", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdLessThanOrEqualTo(Long value) { + addCriterion("tenant_id <=", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdIn(List values) { + addCriterion("tenant_id in", values, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotIn(List values) { + addCriterion("tenant_id not in", values, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdBetween(Long value1, Long value2) { + addCriterion("tenant_id between", value1, value2, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotBetween(Long value1, Long value2) { + addCriterion("tenant_id not between", value1, value2, "tenantId"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIsNull() { + addCriterion("delete_flag is null"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIsNotNull() { + addCriterion("delete_flag is not null"); + return (Criteria) this; + } + + public Criteria andDeleteFlagEqualTo(String value) { + addCriterion("delete_flag =", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotEqualTo(String value) { + addCriterion("delete_flag <>", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagGreaterThan(String value) { + addCriterion("delete_flag >", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagGreaterThanOrEqualTo(String value) { + addCriterion("delete_flag >=", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLessThan(String value) { + addCriterion("delete_flag <", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLessThanOrEqualTo(String value) { + addCriterion("delete_flag <=", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLike(String value) { + addCriterion("delete_flag like", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotLike(String value) { + addCriterion("delete_flag not like", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIn(List values) { + addCriterion("delete_flag in", values, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotIn(List values) { + addCriterion("delete_flag not in", values, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagBetween(String value1, String value2) { + addCriterion("delete_flag between", value1, value2, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotBetween(String value1, String value2) { + addCriterion("delete_flag not between", value1, value2, "deleteFlag"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/DepotItemVo4DetailByTypeAndMId.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/DepotItemVo4DetailByTypeAndMId.java new file mode 100644 index 0000000..205f902 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/DepotItemVo4DetailByTypeAndMId.java @@ -0,0 +1,117 @@ +package com.reallin.smt.datasource.entities; + +import java.math.BigDecimal; +import java.util.Date; + +public class DepotItemVo4DetailByTypeAndMId { + + private String number; + + private String barCode; + + private String materialName; + + private String type; + + private String subType; + + private BigDecimal bnum; + + private BigDecimal unitPrice; + + private BigDecimal allPrice; + + private String materialUnit; + + private String depotName; + + private Date otime; + + public String getNumber() { + return number; + } + + public void setNumber(String number) { + this.number = number; + } + + public String getBarCode() { + return barCode; + } + + public void setBarCode(String barCode) { + this.barCode = barCode; + } + + public String getMaterialName() { + return materialName; + } + + public void setMaterialName(String materialName) { + this.materialName = materialName; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getSubType() { + return subType; + } + + public void setSubType(String subType) { + this.subType = subType; + } + + public BigDecimal getBnum() { + return bnum; + } + + public void setBnum(BigDecimal bnum) { + this.bnum = bnum; + } + + public BigDecimal getUnitPrice() { + return unitPrice; + } + + public void setUnitPrice(BigDecimal unitPrice) { + this.unitPrice = unitPrice; + } + + public BigDecimal getAllPrice() { + return allPrice; + } + + public void setAllPrice(BigDecimal allPrice) { + this.allPrice = allPrice; + } + + public String getMaterialUnit() { + return materialUnit; + } + + public void setMaterialUnit(String materialUnit) { + this.materialUnit = materialUnit; + } + + public String getDepotName() { + return depotName; + } + + public void setDepotName(String depotName) { + this.depotName = depotName; + } + + public Date getOtime() { + return otime; + } + + public void setOtime(Date otime) { + this.otime = otime; + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/DepotItemVo4Material.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/DepotItemVo4Material.java new file mode 100644 index 0000000..eb76bc6 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/DepotItemVo4Material.java @@ -0,0 +1,27 @@ +package com.reallin.smt.datasource.entities; + +import java.math.BigDecimal; +import java.util.Date; + +public class DepotItemVo4Material extends DepotItem{ + + private String mname; + + private String mmodel; + + public String getMname() { + return mname; + } + + public void setMname(String mname) { + this.mname = mname; + } + + public String getMmodel() { + return mmodel; + } + + public void setMmodel(String mmodel) { + this.mmodel = mmodel; + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/DepotItemVo4MaterialAndSum.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/DepotItemVo4MaterialAndSum.java new file mode 100644 index 0000000..6bd1d73 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/DepotItemVo4MaterialAndSum.java @@ -0,0 +1,26 @@ +package com.reallin.smt.datasource.entities; + +import java.math.BigDecimal; + +public class DepotItemVo4MaterialAndSum { + + private Long materialExtendId; + + private BigDecimal operNumber; + + public Long getMaterialExtendId() { + return materialExtendId; + } + + public void setMaterialExtendId(Long materialExtendId) { + this.materialExtendId = materialExtendId; + } + + public BigDecimal getOperNumber() { + return operNumber; + } + + public void setOperNumber(BigDecimal operNumber) { + this.operNumber = operNumber; + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/DepotItemVo4WithInfoEx.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/DepotItemVo4WithInfoEx.java new file mode 100644 index 0000000..0b52767 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/DepotItemVo4WithInfoEx.java @@ -0,0 +1,276 @@ +package com.reallin.smt.datasource.entities; + +import java.math.BigDecimal; + +public class DepotItemVo4WithInfoEx extends DepotItem{ + + private Long MId; + + private String MName; + + private String MModel; + + private String MaterialUnit; + + private String MColor; + + private String MStandard; + + private String MMfrs; + + private String MOtherField1; + + private String MOtherField2; + + private String MOtherField3; + + private String enableSerialNumber; + + private String enableBatchNumber; + + private String DepotName; + + private String AnotherDepotName; + + private Long UnitId; + + private String unitName; + + private Integer ratio; + + private String otherUnit; + + private BigDecimal presetPriceOne; + + private String priceStrategy; + + private BigDecimal purchaseDecimal; + + private BigDecimal currentUnitPrice; + + private String barCode; + + private BigDecimal weight; + + private String position; + + private String imgName; + + private String brand; + + public Long getMId() { + return MId; + } + + public void setMId(Long MId) { + this.MId = MId; + } + + public String getMName() { + return MName; + } + + public void setMName(String MName) { + this.MName = MName; + } + + public String getMModel() { + return MModel; + } + + public void setMModel(String MModel) { + this.MModel = MModel; + } + + public String getMaterialUnit() { + return MaterialUnit; + } + + public void setMaterialUnit(String materialUnit) { + MaterialUnit = materialUnit; + } + + public String getMColor() { + return MColor; + } + + public void setMColor(String MColor) { + this.MColor = MColor; + } + + public String getMStandard() { + return MStandard; + } + + public void setMStandard(String MStandard) { + this.MStandard = MStandard; + } + + public String getMMfrs() { + return MMfrs; + } + + public void setMMfrs(String MMfrs) { + this.MMfrs = MMfrs; + } + + public String getMOtherField1() { + return MOtherField1; + } + + public void setMOtherField1(String MOtherField1) { + this.MOtherField1 = MOtherField1; + } + + public String getMOtherField2() { + return MOtherField2; + } + + public void setMOtherField2(String MOtherField2) { + this.MOtherField2 = MOtherField2; + } + + public String getMOtherField3() { + return MOtherField3; + } + + public void setMOtherField3(String MOtherField3) { + this.MOtherField3 = MOtherField3; + } + + public String getEnableSerialNumber() { + return enableSerialNumber; + } + + public void setEnableSerialNumber(String enableSerialNumber) { + this.enableSerialNumber = enableSerialNumber; + } + + public String getEnableBatchNumber() { + return enableBatchNumber; + } + + public void setEnableBatchNumber(String enableBatchNumber) { + this.enableBatchNumber = enableBatchNumber; + } + + public String getDepotName() { + return DepotName; + } + + public void setDepotName(String depotName) { + DepotName = depotName; + } + + public String getAnotherDepotName() { + return AnotherDepotName; + } + + public void setAnotherDepotName(String anotherDepotName) { + AnotherDepotName = anotherDepotName; + } + + public Long getUnitId() { + return UnitId; + } + + public void setUnitId(Long unitId) { + UnitId = unitId; + } + + public String getUnitName() { + return unitName; + } + + public void setUnitName(String unitName) { + this.unitName = unitName; + } + + public Integer getRatio() { + return ratio; + } + + public void setRatio(Integer ratio) { + this.ratio = ratio; + } + + public String getOtherUnit() { + return otherUnit; + } + + public void setOtherUnit(String otherUnit) { + this.otherUnit = otherUnit; + } + + public BigDecimal getPresetPriceOne() { + return presetPriceOne; + } + + public void setPresetPriceOne(BigDecimal presetPriceOne) { + this.presetPriceOne = presetPriceOne; + } + + public String getPriceStrategy() { + return priceStrategy; + } + + public void setPriceStrategy(String priceStrategy) { + this.priceStrategy = priceStrategy; + } + + public BigDecimal getPurchaseDecimal() { + return purchaseDecimal; + } + + public void setPurchaseDecimal(BigDecimal purchaseDecimal) { + this.purchaseDecimal = purchaseDecimal; + } + + public BigDecimal getCurrentUnitPrice() { + return currentUnitPrice; + } + + public void setCurrentUnitPrice(BigDecimal currentUnitPrice) { + this.currentUnitPrice = currentUnitPrice; + } + + public String getBarCode() { + return barCode; + } + + public void setBarCode(String barCode) { + this.barCode = barCode; + } + + public BigDecimal getWeight() { + return weight; + } + + public void setWeight(BigDecimal weight) { + this.weight = weight; + } + + public String getPosition() { + return position; + } + + public void setPosition(String position) { + this.position = position; + } + + public String getImgName() { + return imgName; + } + + public void setImgName(String imgName) { + this.imgName = imgName; + } + + public String getBrand() { + return brand; + } + + public void setBrand(String brand) { + this.brand = brand; + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/Function.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/Function.java new file mode 100644 index 0000000..9c9203a --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/Function.java @@ -0,0 +1,143 @@ +package com.reallin.smt.datasource.entities; + +public class Function { + private Long id; + + private String number; + + private String name; + + private String nameEn; + + private String parentNumber; + + private String url; + + private String component; + + private Boolean state; + + private String sort; + + private Boolean enabled; + + private String type; + + private String pushBtn; + + private String icon; + + private String deleteFlag; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getNumber() { + return number; + } + + public void setNumber(String number) { + this.number = number == null ? null : number.trim(); + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name == null ? null : name.trim(); + } + + public String getNameEn() { + return nameEn; + } + + public void setNameEn(String nameEn) { + this.nameEn = nameEn == null ? null : nameEn.trim(); + } + + public String getParentNumber() { + return parentNumber; + } + + public void setParentNumber(String parentNumber) { + this.parentNumber = parentNumber == null ? null : parentNumber.trim(); + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url == null ? null : url.trim(); + } + + public String getComponent() { + return component; + } + + public void setComponent(String component) { + this.component = component == null ? null : component.trim(); + } + + public Boolean getState() { + return state; + } + + public void setState(Boolean state) { + this.state = state; + } + + public String getSort() { + return sort; + } + + public void setSort(String sort) { + this.sort = sort == null ? null : sort.trim(); + } + + public Boolean getEnabled() { + return enabled; + } + + public void setEnabled(Boolean enabled) { + this.enabled = enabled; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type == null ? null : type.trim(); + } + + public String getPushBtn() { + return pushBtn; + } + + public void setPushBtn(String pushBtn) { + this.pushBtn = pushBtn == null ? null : pushBtn.trim(); + } + + public String getIcon() { + return icon; + } + + public void setIcon(String icon) { + this.icon = icon == null ? null : icon.trim(); + } + + public String getDeleteFlag() { + return deleteFlag; + } + + public void setDeleteFlag(String deleteFlag) { + this.deleteFlag = deleteFlag == null ? null : deleteFlag.trim(); + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/FunctionEx.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/FunctionEx.java new file mode 100644 index 0000000..e53e79e --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/FunctionEx.java @@ -0,0 +1,14 @@ +package com.reallin.smt.datasource.entities; + +public class FunctionEx extends Function { + + private String parentName; + + public String getParentName() { + return parentName; + } + + public void setParentName(String parentName) { + this.parentName = parentName; + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/FunctionExample.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/FunctionExample.java new file mode 100644 index 0000000..ee8d7b8 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/FunctionExample.java @@ -0,0 +1,1079 @@ +package com.reallin.smt.datasource.entities; + +import java.util.ArrayList; +import java.util.List; + +public class FunctionExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public FunctionExample() { + oredCriteria = new ArrayList<>(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList<>(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andNumberIsNull() { + addCriterion("number is null"); + return (Criteria) this; + } + + public Criteria andNumberIsNotNull() { + addCriterion("number is not null"); + return (Criteria) this; + } + + public Criteria andNumberEqualTo(String value) { + addCriterion("number =", value, "number"); + return (Criteria) this; + } + + public Criteria andNumberNotEqualTo(String value) { + addCriterion("number <>", value, "number"); + return (Criteria) this; + } + + public Criteria andNumberGreaterThan(String value) { + addCriterion("number >", value, "number"); + return (Criteria) this; + } + + public Criteria andNumberGreaterThanOrEqualTo(String value) { + addCriterion("number >=", value, "number"); + return (Criteria) this; + } + + public Criteria andNumberLessThan(String value) { + addCriterion("number <", value, "number"); + return (Criteria) this; + } + + public Criteria andNumberLessThanOrEqualTo(String value) { + addCriterion("number <=", value, "number"); + return (Criteria) this; + } + + public Criteria andNumberLike(String value) { + addCriterion("number like", value, "number"); + return (Criteria) this; + } + + public Criteria andNumberNotLike(String value) { + addCriterion("number not like", value, "number"); + return (Criteria) this; + } + + public Criteria andNumberIn(List values) { + addCriterion("number in", values, "number"); + return (Criteria) this; + } + + public Criteria andNumberNotIn(List values) { + addCriterion("number not in", values, "number"); + return (Criteria) this; + } + + public Criteria andNumberBetween(String value1, String value2) { + addCriterion("number between", value1, value2, "number"); + return (Criteria) this; + } + + public Criteria andNumberNotBetween(String value1, String value2) { + addCriterion("number not between", value1, value2, "number"); + return (Criteria) this; + } + + public Criteria andNameIsNull() { + addCriterion("name is null"); + return (Criteria) this; + } + + public Criteria andNameIsNotNull() { + addCriterion("name is not null"); + return (Criteria) this; + } + + public Criteria andNameEqualTo(String value) { + addCriterion("name =", value, "name"); + return (Criteria) this; + } + + public Criteria andNameNotEqualTo(String value) { + addCriterion("name <>", value, "name"); + return (Criteria) this; + } + + public Criteria andNameGreaterThan(String value) { + addCriterion("name >", value, "name"); + return (Criteria) this; + } + + public Criteria andNameGreaterThanOrEqualTo(String value) { + addCriterion("name >=", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLessThan(String value) { + addCriterion("name <", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLessThanOrEqualTo(String value) { + addCriterion("name <=", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLike(String value) { + addCriterion("name like", value, "name"); + return (Criteria) this; + } + + public Criteria andNameNotLike(String value) { + addCriterion("name not like", value, "name"); + return (Criteria) this; + } + + public Criteria andNameIn(List values) { + addCriterion("name in", values, "name"); + return (Criteria) this; + } + + public Criteria andNameNotIn(List values) { + addCriterion("name not in", values, "name"); + return (Criteria) this; + } + + public Criteria andNameBetween(String value1, String value2) { + addCriterion("name between", value1, value2, "name"); + return (Criteria) this; + } + + public Criteria andNameNotBetween(String value1, String value2) { + addCriterion("name not between", value1, value2, "name"); + return (Criteria) this; + } + + public Criteria andParentNumberIsNull() { + addCriterion("parent_number is null"); + return (Criteria) this; + } + + public Criteria andParentNumberIsNotNull() { + addCriterion("parent_number is not null"); + return (Criteria) this; + } + + public Criteria andParentNumberEqualTo(String value) { + addCriterion("parent_number =", value, "parentNumber"); + return (Criteria) this; + } + + public Criteria andParentNumberNotEqualTo(String value) { + addCriterion("parent_number <>", value, "parentNumber"); + return (Criteria) this; + } + + public Criteria andParentNumberGreaterThan(String value) { + addCriterion("parent_number >", value, "parentNumber"); + return (Criteria) this; + } + + public Criteria andParentNumberGreaterThanOrEqualTo(String value) { + addCriterion("parent_number >=", value, "parentNumber"); + return (Criteria) this; + } + + public Criteria andParentNumberLessThan(String value) { + addCriterion("parent_number <", value, "parentNumber"); + return (Criteria) this; + } + + public Criteria andParentNumberLessThanOrEqualTo(String value) { + addCriterion("parent_number <=", value, "parentNumber"); + return (Criteria) this; + } + + public Criteria andParentNumberLike(String value) { + addCriterion("parent_number like", value, "parentNumber"); + return (Criteria) this; + } + + public Criteria andParentNumberNotLike(String value) { + addCriterion("parent_number not like", value, "parentNumber"); + return (Criteria) this; + } + + public Criteria andParentNumberIn(List values) { + addCriterion("parent_number in", values, "parentNumber"); + return (Criteria) this; + } + + public Criteria andParentNumberNotIn(List values) { + addCriterion("parent_number not in", values, "parentNumber"); + return (Criteria) this; + } + + public Criteria andParentNumberBetween(String value1, String value2) { + addCriterion("parent_number between", value1, value2, "parentNumber"); + return (Criteria) this; + } + + public Criteria andParentNumberNotBetween(String value1, String value2) { + addCriterion("parent_number not between", value1, value2, "parentNumber"); + return (Criteria) this; + } + + public Criteria andUrlIsNull() { + addCriterion("url is null"); + return (Criteria) this; + } + + public Criteria andUrlIsNotNull() { + addCriterion("url is not null"); + return (Criteria) this; + } + + public Criteria andUrlEqualTo(String value) { + addCriterion("url =", value, "url"); + return (Criteria) this; + } + + public Criteria andUrlNotEqualTo(String value) { + addCriterion("url <>", value, "url"); + return (Criteria) this; + } + + public Criteria andUrlGreaterThan(String value) { + addCriterion("url >", value, "url"); + return (Criteria) this; + } + + public Criteria andUrlGreaterThanOrEqualTo(String value) { + addCriterion("url >=", value, "url"); + return (Criteria) this; + } + + public Criteria andUrlLessThan(String value) { + addCriterion("url <", value, "url"); + return (Criteria) this; + } + + public Criteria andUrlLessThanOrEqualTo(String value) { + addCriterion("url <=", value, "url"); + return (Criteria) this; + } + + public Criteria andUrlLike(String value) { + addCriterion("url like", value, "url"); + return (Criteria) this; + } + + public Criteria andUrlNotLike(String value) { + addCriterion("url not like", value, "url"); + return (Criteria) this; + } + + public Criteria andUrlIn(List values) { + addCriterion("url in", values, "url"); + return (Criteria) this; + } + + public Criteria andUrlNotIn(List values) { + addCriterion("url not in", values, "url"); + return (Criteria) this; + } + + public Criteria andUrlBetween(String value1, String value2) { + addCriterion("url between", value1, value2, "url"); + return (Criteria) this; + } + + public Criteria andUrlNotBetween(String value1, String value2) { + addCriterion("url not between", value1, value2, "url"); + return (Criteria) this; + } + + public Criteria andComponentIsNull() { + addCriterion("component is null"); + return (Criteria) this; + } + + public Criteria andComponentIsNotNull() { + addCriterion("component is not null"); + return (Criteria) this; + } + + public Criteria andComponentEqualTo(String value) { + addCriterion("component =", value, "component"); + return (Criteria) this; + } + + public Criteria andComponentNotEqualTo(String value) { + addCriterion("component <>", value, "component"); + return (Criteria) this; + } + + public Criteria andComponentGreaterThan(String value) { + addCriterion("component >", value, "component"); + return (Criteria) this; + } + + public Criteria andComponentGreaterThanOrEqualTo(String value) { + addCriterion("component >=", value, "component"); + return (Criteria) this; + } + + public Criteria andComponentLessThan(String value) { + addCriterion("component <", value, "component"); + return (Criteria) this; + } + + public Criteria andComponentLessThanOrEqualTo(String value) { + addCriterion("component <=", value, "component"); + return (Criteria) this; + } + + public Criteria andComponentLike(String value) { + addCriterion("component like", value, "component"); + return (Criteria) this; + } + + public Criteria andComponentNotLike(String value) { + addCriterion("component not like", value, "component"); + return (Criteria) this; + } + + public Criteria andComponentIn(List values) { + addCriterion("component in", values, "component"); + return (Criteria) this; + } + + public Criteria andComponentNotIn(List values) { + addCriterion("component not in", values, "component"); + return (Criteria) this; + } + + public Criteria andComponentBetween(String value1, String value2) { + addCriterion("component between", value1, value2, "component"); + return (Criteria) this; + } + + public Criteria andComponentNotBetween(String value1, String value2) { + addCriterion("component not between", value1, value2, "component"); + return (Criteria) this; + } + + public Criteria andStateIsNull() { + addCriterion("state is null"); + return (Criteria) this; + } + + public Criteria andStateIsNotNull() { + addCriterion("state is not null"); + return (Criteria) this; + } + + public Criteria andStateEqualTo(Boolean value) { + addCriterion("state =", value, "state"); + return (Criteria) this; + } + + public Criteria andStateNotEqualTo(Boolean value) { + addCriterion("state <>", value, "state"); + return (Criteria) this; + } + + public Criteria andStateGreaterThan(Boolean value) { + addCriterion("state >", value, "state"); + return (Criteria) this; + } + + public Criteria andStateGreaterThanOrEqualTo(Boolean value) { + addCriterion("state >=", value, "state"); + return (Criteria) this; + } + + public Criteria andStateLessThan(Boolean value) { + addCriterion("state <", value, "state"); + return (Criteria) this; + } + + public Criteria andStateLessThanOrEqualTo(Boolean value) { + addCriterion("state <=", value, "state"); + return (Criteria) this; + } + + public Criteria andStateIn(List values) { + addCriterion("state in", values, "state"); + return (Criteria) this; + } + + public Criteria andStateNotIn(List values) { + addCriterion("state not in", values, "state"); + return (Criteria) this; + } + + public Criteria andStateBetween(Boolean value1, Boolean value2) { + addCriterion("state between", value1, value2, "state"); + return (Criteria) this; + } + + public Criteria andStateNotBetween(Boolean value1, Boolean value2) { + addCriterion("state not between", value1, value2, "state"); + return (Criteria) this; + } + + public Criteria andSortIsNull() { + addCriterion("sort is null"); + return (Criteria) this; + } + + public Criteria andSortIsNotNull() { + addCriterion("sort is not null"); + return (Criteria) this; + } + + public Criteria andSortEqualTo(String value) { + addCriterion("sort =", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotEqualTo(String value) { + addCriterion("sort <>", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortGreaterThan(String value) { + addCriterion("sort >", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortGreaterThanOrEqualTo(String value) { + addCriterion("sort >=", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortLessThan(String value) { + addCriterion("sort <", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortLessThanOrEqualTo(String value) { + addCriterion("sort <=", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortLike(String value) { + addCriterion("sort like", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotLike(String value) { + addCriterion("sort not like", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortIn(List values) { + addCriterion("sort in", values, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotIn(List values) { + addCriterion("sort not in", values, "sort"); + return (Criteria) this; + } + + public Criteria andSortBetween(String value1, String value2) { + addCriterion("sort between", value1, value2, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotBetween(String value1, String value2) { + addCriterion("sort not between", value1, value2, "sort"); + return (Criteria) this; + } + + public Criteria andEnabledIsNull() { + addCriterion("enabled is null"); + return (Criteria) this; + } + + public Criteria andEnabledIsNotNull() { + addCriterion("enabled is not null"); + return (Criteria) this; + } + + public Criteria andEnabledEqualTo(Boolean value) { + addCriterion("enabled =", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledNotEqualTo(Boolean value) { + addCriterion("enabled <>", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledGreaterThan(Boolean value) { + addCriterion("enabled >", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledGreaterThanOrEqualTo(Boolean value) { + addCriterion("enabled >=", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledLessThan(Boolean value) { + addCriterion("enabled <", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledLessThanOrEqualTo(Boolean value) { + addCriterion("enabled <=", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledIn(List values) { + addCriterion("enabled in", values, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledNotIn(List values) { + addCriterion("enabled not in", values, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledBetween(Boolean value1, Boolean value2) { + addCriterion("enabled between", value1, value2, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledNotBetween(Boolean value1, Boolean value2) { + addCriterion("enabled not between", value1, value2, "enabled"); + return (Criteria) this; + } + + public Criteria andTypeIsNull() { + addCriterion("type is null"); + return (Criteria) this; + } + + public Criteria andTypeIsNotNull() { + addCriterion("type is not null"); + return (Criteria) this; + } + + public Criteria andTypeEqualTo(String value) { + addCriterion("type =", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotEqualTo(String value) { + addCriterion("type <>", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeGreaterThan(String value) { + addCriterion("type >", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeGreaterThanOrEqualTo(String value) { + addCriterion("type >=", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLessThan(String value) { + addCriterion("type <", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLessThanOrEqualTo(String value) { + addCriterion("type <=", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLike(String value) { + addCriterion("type like", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotLike(String value) { + addCriterion("type not like", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeIn(List values) { + addCriterion("type in", values, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotIn(List values) { + addCriterion("type not in", values, "type"); + return (Criteria) this; + } + + public Criteria andTypeBetween(String value1, String value2) { + addCriterion("type between", value1, value2, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotBetween(String value1, String value2) { + addCriterion("type not between", value1, value2, "type"); + return (Criteria) this; + } + + public Criteria andPushBtnIsNull() { + addCriterion("push_btn is null"); + return (Criteria) this; + } + + public Criteria andPushBtnIsNotNull() { + addCriterion("push_btn is not null"); + return (Criteria) this; + } + + public Criteria andPushBtnEqualTo(String value) { + addCriterion("push_btn =", value, "pushBtn"); + return (Criteria) this; + } + + public Criteria andPushBtnNotEqualTo(String value) { + addCriterion("push_btn <>", value, "pushBtn"); + return (Criteria) this; + } + + public Criteria andPushBtnGreaterThan(String value) { + addCriterion("push_btn >", value, "pushBtn"); + return (Criteria) this; + } + + public Criteria andPushBtnGreaterThanOrEqualTo(String value) { + addCriterion("push_btn >=", value, "pushBtn"); + return (Criteria) this; + } + + public Criteria andPushBtnLessThan(String value) { + addCriterion("push_btn <", value, "pushBtn"); + return (Criteria) this; + } + + public Criteria andPushBtnLessThanOrEqualTo(String value) { + addCriterion("push_btn <=", value, "pushBtn"); + return (Criteria) this; + } + + public Criteria andPushBtnLike(String value) { + addCriterion("push_btn like", value, "pushBtn"); + return (Criteria) this; + } + + public Criteria andPushBtnNotLike(String value) { + addCriterion("push_btn not like", value, "pushBtn"); + return (Criteria) this; + } + + public Criteria andPushBtnIn(List values) { + addCriterion("push_btn in", values, "pushBtn"); + return (Criteria) this; + } + + public Criteria andPushBtnNotIn(List values) { + addCriterion("push_btn not in", values, "pushBtn"); + return (Criteria) this; + } + + public Criteria andPushBtnBetween(String value1, String value2) { + addCriterion("push_btn between", value1, value2, "pushBtn"); + return (Criteria) this; + } + + public Criteria andPushBtnNotBetween(String value1, String value2) { + addCriterion("push_btn not between", value1, value2, "pushBtn"); + return (Criteria) this; + } + + public Criteria andIconIsNull() { + addCriterion("icon is null"); + return (Criteria) this; + } + + public Criteria andIconIsNotNull() { + addCriterion("icon is not null"); + return (Criteria) this; + } + + public Criteria andIconEqualTo(String value) { + addCriterion("icon =", value, "icon"); + return (Criteria) this; + } + + public Criteria andIconNotEqualTo(String value) { + addCriterion("icon <>", value, "icon"); + return (Criteria) this; + } + + public Criteria andIconGreaterThan(String value) { + addCriterion("icon >", value, "icon"); + return (Criteria) this; + } + + public Criteria andIconGreaterThanOrEqualTo(String value) { + addCriterion("icon >=", value, "icon"); + return (Criteria) this; + } + + public Criteria andIconLessThan(String value) { + addCriterion("icon <", value, "icon"); + return (Criteria) this; + } + + public Criteria andIconLessThanOrEqualTo(String value) { + addCriterion("icon <=", value, "icon"); + return (Criteria) this; + } + + public Criteria andIconLike(String value) { + addCriterion("icon like", value, "icon"); + return (Criteria) this; + } + + public Criteria andIconNotLike(String value) { + addCriterion("icon not like", value, "icon"); + return (Criteria) this; + } + + public Criteria andIconIn(List values) { + addCriterion("icon in", values, "icon"); + return (Criteria) this; + } + + public Criteria andIconNotIn(List values) { + addCriterion("icon not in", values, "icon"); + return (Criteria) this; + } + + public Criteria andIconBetween(String value1, String value2) { + addCriterion("icon between", value1, value2, "icon"); + return (Criteria) this; + } + + public Criteria andIconNotBetween(String value1, String value2) { + addCriterion("icon not between", value1, value2, "icon"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIsNull() { + addCriterion("delete_flag is null"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIsNotNull() { + addCriterion("delete_flag is not null"); + return (Criteria) this; + } + + public Criteria andDeleteFlagEqualTo(String value) { + addCriterion("delete_flag =", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotEqualTo(String value) { + addCriterion("delete_flag <>", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagGreaterThan(String value) { + addCriterion("delete_flag >", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagGreaterThanOrEqualTo(String value) { + addCriterion("delete_flag >=", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLessThan(String value) { + addCriterion("delete_flag <", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLessThanOrEqualTo(String value) { + addCriterion("delete_flag <=", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLike(String value) { + addCriterion("delete_flag like", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotLike(String value) { + addCriterion("delete_flag not like", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIn(List values) { + addCriterion("delete_flag in", values, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotIn(List values) { + addCriterion("delete_flag not in", values, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagBetween(String value1, String value2) { + addCriterion("delete_flag between", value1, value2, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotBetween(String value1, String value2) { + addCriterion("delete_flag not between", value1, value2, "deleteFlag"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/InOutItem.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/InOutItem.java new file mode 100644 index 0000000..a8d98ba --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/InOutItem.java @@ -0,0 +1,83 @@ +package com.reallin.smt.datasource.entities; + +public class InOutItem { + private Long id; + + private String name; + + private String type; + + private String remark; + + private Boolean enabled; + + private String sort; + + private Long tenantId; + + private String deleteFlag; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name == null ? null : name.trim(); + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type == null ? null : type.trim(); + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark == null ? null : remark.trim(); + } + + public Boolean getEnabled() { + return enabled; + } + + public void setEnabled(Boolean enabled) { + this.enabled = enabled; + } + + public String getSort() { + return sort; + } + + public void setSort(String sort) { + this.sort = sort == null ? null : sort.trim(); + } + + public Long getTenantId() { + return tenantId; + } + + public void setTenantId(Long tenantId) { + this.tenantId = tenantId; + } + + public String getDeleteFlag() { + return deleteFlag; + } + + public void setDeleteFlag(String deleteFlag) { + this.deleteFlag = deleteFlag == null ? null : deleteFlag.trim(); + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/InOutItemExample.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/InOutItemExample.java new file mode 100644 index 0000000..a1f414f --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/InOutItemExample.java @@ -0,0 +1,729 @@ +package com.reallin.smt.datasource.entities; + +import java.util.ArrayList; +import java.util.List; + +public class InOutItemExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public InOutItemExample() { + oredCriteria = new ArrayList<>(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList<>(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andNameIsNull() { + addCriterion("name is null"); + return (Criteria) this; + } + + public Criteria andNameIsNotNull() { + addCriterion("name is not null"); + return (Criteria) this; + } + + public Criteria andNameEqualTo(String value) { + addCriterion("name =", value, "name"); + return (Criteria) this; + } + + public Criteria andNameNotEqualTo(String value) { + addCriterion("name <>", value, "name"); + return (Criteria) this; + } + + public Criteria andNameGreaterThan(String value) { + addCriterion("name >", value, "name"); + return (Criteria) this; + } + + public Criteria andNameGreaterThanOrEqualTo(String value) { + addCriterion("name >=", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLessThan(String value) { + addCriterion("name <", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLessThanOrEqualTo(String value) { + addCriterion("name <=", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLike(String value) { + addCriterion("name like", value, "name"); + return (Criteria) this; + } + + public Criteria andNameNotLike(String value) { + addCriterion("name not like", value, "name"); + return (Criteria) this; + } + + public Criteria andNameIn(List values) { + addCriterion("name in", values, "name"); + return (Criteria) this; + } + + public Criteria andNameNotIn(List values) { + addCriterion("name not in", values, "name"); + return (Criteria) this; + } + + public Criteria andNameBetween(String value1, String value2) { + addCriterion("name between", value1, value2, "name"); + return (Criteria) this; + } + + public Criteria andNameNotBetween(String value1, String value2) { + addCriterion("name not between", value1, value2, "name"); + return (Criteria) this; + } + + public Criteria andTypeIsNull() { + addCriterion("type is null"); + return (Criteria) this; + } + + public Criteria andTypeIsNotNull() { + addCriterion("type is not null"); + return (Criteria) this; + } + + public Criteria andTypeEqualTo(String value) { + addCriterion("type =", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotEqualTo(String value) { + addCriterion("type <>", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeGreaterThan(String value) { + addCriterion("type >", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeGreaterThanOrEqualTo(String value) { + addCriterion("type >=", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLessThan(String value) { + addCriterion("type <", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLessThanOrEqualTo(String value) { + addCriterion("type <=", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLike(String value) { + addCriterion("type like", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotLike(String value) { + addCriterion("type not like", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeIn(List values) { + addCriterion("type in", values, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotIn(List values) { + addCriterion("type not in", values, "type"); + return (Criteria) this; + } + + public Criteria andTypeBetween(String value1, String value2) { + addCriterion("type between", value1, value2, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotBetween(String value1, String value2) { + addCriterion("type not between", value1, value2, "type"); + return (Criteria) this; + } + + public Criteria andRemarkIsNull() { + addCriterion("remark is null"); + return (Criteria) this; + } + + public Criteria andRemarkIsNotNull() { + addCriterion("remark is not null"); + return (Criteria) this; + } + + public Criteria andRemarkEqualTo(String value) { + addCriterion("remark =", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotEqualTo(String value) { + addCriterion("remark <>", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThan(String value) { + addCriterion("remark >", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThanOrEqualTo(String value) { + addCriterion("remark >=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThan(String value) { + addCriterion("remark <", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThanOrEqualTo(String value) { + addCriterion("remark <=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLike(String value) { + addCriterion("remark like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotLike(String value) { + addCriterion("remark not like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkIn(List values) { + addCriterion("remark in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotIn(List values) { + addCriterion("remark not in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkBetween(String value1, String value2) { + addCriterion("remark between", value1, value2, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotBetween(String value1, String value2) { + addCriterion("remark not between", value1, value2, "remark"); + return (Criteria) this; + } + + public Criteria andEnabledIsNull() { + addCriterion("enabled is null"); + return (Criteria) this; + } + + public Criteria andEnabledIsNotNull() { + addCriterion("enabled is not null"); + return (Criteria) this; + } + + public Criteria andEnabledEqualTo(Boolean value) { + addCriterion("enabled =", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledNotEqualTo(Boolean value) { + addCriterion("enabled <>", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledGreaterThan(Boolean value) { + addCriterion("enabled >", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledGreaterThanOrEqualTo(Boolean value) { + addCriterion("enabled >=", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledLessThan(Boolean value) { + addCriterion("enabled <", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledLessThanOrEqualTo(Boolean value) { + addCriterion("enabled <=", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledIn(List values) { + addCriterion("enabled in", values, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledNotIn(List values) { + addCriterion("enabled not in", values, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledBetween(Boolean value1, Boolean value2) { + addCriterion("enabled between", value1, value2, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledNotBetween(Boolean value1, Boolean value2) { + addCriterion("enabled not between", value1, value2, "enabled"); + return (Criteria) this; + } + + public Criteria andSortIsNull() { + addCriterion("sort is null"); + return (Criteria) this; + } + + public Criteria andSortIsNotNull() { + addCriterion("sort is not null"); + return (Criteria) this; + } + + public Criteria andSortEqualTo(String value) { + addCriterion("sort =", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotEqualTo(String value) { + addCriterion("sort <>", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortGreaterThan(String value) { + addCriterion("sort >", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortGreaterThanOrEqualTo(String value) { + addCriterion("sort >=", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortLessThan(String value) { + addCriterion("sort <", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortLessThanOrEqualTo(String value) { + addCriterion("sort <=", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortLike(String value) { + addCriterion("sort like", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotLike(String value) { + addCriterion("sort not like", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortIn(List values) { + addCriterion("sort in", values, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotIn(List values) { + addCriterion("sort not in", values, "sort"); + return (Criteria) this; + } + + public Criteria andSortBetween(String value1, String value2) { + addCriterion("sort between", value1, value2, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotBetween(String value1, String value2) { + addCriterion("sort not between", value1, value2, "sort"); + return (Criteria) this; + } + + public Criteria andTenantIdIsNull() { + addCriterion("tenant_id is null"); + return (Criteria) this; + } + + public Criteria andTenantIdIsNotNull() { + addCriterion("tenant_id is not null"); + return (Criteria) this; + } + + public Criteria andTenantIdEqualTo(Long value) { + addCriterion("tenant_id =", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotEqualTo(Long value) { + addCriterion("tenant_id <>", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdGreaterThan(Long value) { + addCriterion("tenant_id >", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdGreaterThanOrEqualTo(Long value) { + addCriterion("tenant_id >=", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdLessThan(Long value) { + addCriterion("tenant_id <", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdLessThanOrEqualTo(Long value) { + addCriterion("tenant_id <=", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdIn(List values) { + addCriterion("tenant_id in", values, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotIn(List values) { + addCriterion("tenant_id not in", values, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdBetween(Long value1, Long value2) { + addCriterion("tenant_id between", value1, value2, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotBetween(Long value1, Long value2) { + addCriterion("tenant_id not between", value1, value2, "tenantId"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIsNull() { + addCriterion("delete_flag is null"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIsNotNull() { + addCriterion("delete_flag is not null"); + return (Criteria) this; + } + + public Criteria andDeleteFlagEqualTo(String value) { + addCriterion("delete_flag =", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotEqualTo(String value) { + addCriterion("delete_flag <>", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagGreaterThan(String value) { + addCriterion("delete_flag >", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagGreaterThanOrEqualTo(String value) { + addCriterion("delete_flag >=", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLessThan(String value) { + addCriterion("delete_flag <", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLessThanOrEqualTo(String value) { + addCriterion("delete_flag <=", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLike(String value) { + addCriterion("delete_flag like", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotLike(String value) { + addCriterion("delete_flag not like", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIn(List values) { + addCriterion("delete_flag in", values, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotIn(List values) { + addCriterion("delete_flag not in", values, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagBetween(String value1, String value2) { + addCriterion("delete_flag between", value1, value2, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotBetween(String value1, String value2) { + addCriterion("delete_flag not between", value1, value2, "deleteFlag"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/Log.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/Log.java new file mode 100644 index 0000000..39bcc5f --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/Log.java @@ -0,0 +1,115 @@ +package com.reallin.smt.datasource.entities; + +import java.util.Date; + +public class Log { + private Long id; + + private Long userId; + + private String operation; + + private String clientIp; + + private Date createTime; + + private Byte status; + + private String content; + + private Long tenantId; + + private String requestUrl; + + private String requestParams; + + private String responseParams; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getUserId() { + return userId; + } + + public void setUserId(Long userId) { + this.userId = userId; + } + + public String getOperation() { + return operation; + } + + public void setOperation(String operation) { + this.operation = operation == null ? null : operation.trim(); + } + + public String getClientIp() { + return clientIp; + } + + public void setClientIp(String clientIp) { + this.clientIp = clientIp == null ? null : clientIp.trim(); + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Byte getStatus() { + return status; + } + + public void setStatus(Byte status) { + this.status = status; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content == null ? null : content.trim(); + } + + public Long getTenantId() { + return tenantId; + } + + public void setTenantId(Long tenantId) { + this.tenantId = tenantId; + } + + public String getRequestUrl() { + return requestUrl; + } + + public void setRequestUrl(String requestUrl) { + this.requestUrl = requestUrl == null ? null : requestUrl.trim(); + } + + public String getRequestParams() { + return requestParams; + } + + public void setRequestParams(String requestParams) { + this.requestParams = requestParams; + } + + public String getResponseParams() { + return responseParams; + } + + public void setResponseParams(String responseParams) { + this.responseParams = responseParams; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/LogExample.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/LogExample.java new file mode 100644 index 0000000..1940bca --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/LogExample.java @@ -0,0 +1,710 @@ +package com.reallin.smt.datasource.entities; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +public class LogExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public LogExample() { + oredCriteria = new ArrayList<>(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList<>(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andUserIdIsNull() { + addCriterion("user_id is null"); + return (Criteria) this; + } + + public Criteria andUserIdIsNotNull() { + addCriterion("user_id is not null"); + return (Criteria) this; + } + + public Criteria andUserIdEqualTo(Long value) { + addCriterion("user_id =", value, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdNotEqualTo(Long value) { + addCriterion("user_id <>", value, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdGreaterThan(Long value) { + addCriterion("user_id >", value, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdGreaterThanOrEqualTo(Long value) { + addCriterion("user_id >=", value, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdLessThan(Long value) { + addCriterion("user_id <", value, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdLessThanOrEqualTo(Long value) { + addCriterion("user_id <=", value, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdIn(List values) { + addCriterion("user_id in", values, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdNotIn(List values) { + addCriterion("user_id not in", values, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdBetween(Long value1, Long value2) { + addCriterion("user_id between", value1, value2, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdNotBetween(Long value1, Long value2) { + addCriterion("user_id not between", value1, value2, "userId"); + return (Criteria) this; + } + + public Criteria andOperationIsNull() { + addCriterion("operation is null"); + return (Criteria) this; + } + + public Criteria andOperationIsNotNull() { + addCriterion("operation is not null"); + return (Criteria) this; + } + + public Criteria andOperationEqualTo(String value) { + addCriterion("operation =", value, "operation"); + return (Criteria) this; + } + + public Criteria andOperationNotEqualTo(String value) { + addCriterion("operation <>", value, "operation"); + return (Criteria) this; + } + + public Criteria andOperationGreaterThan(String value) { + addCriterion("operation >", value, "operation"); + return (Criteria) this; + } + + public Criteria andOperationGreaterThanOrEqualTo(String value) { + addCriterion("operation >=", value, "operation"); + return (Criteria) this; + } + + public Criteria andOperationLessThan(String value) { + addCriterion("operation <", value, "operation"); + return (Criteria) this; + } + + public Criteria andOperationLessThanOrEqualTo(String value) { + addCriterion("operation <=", value, "operation"); + return (Criteria) this; + } + + public Criteria andOperationLike(String value) { + addCriterion("operation like", value, "operation"); + return (Criteria) this; + } + + public Criteria andOperationNotLike(String value) { + addCriterion("operation not like", value, "operation"); + return (Criteria) this; + } + + public Criteria andOperationIn(List values) { + addCriterion("operation in", values, "operation"); + return (Criteria) this; + } + + public Criteria andOperationNotIn(List values) { + addCriterion("operation not in", values, "operation"); + return (Criteria) this; + } + + public Criteria andOperationBetween(String value1, String value2) { + addCriterion("operation between", value1, value2, "operation"); + return (Criteria) this; + } + + public Criteria andOperationNotBetween(String value1, String value2) { + addCriterion("operation not between", value1, value2, "operation"); + return (Criteria) this; + } + + public Criteria andClientIpIsNull() { + addCriterion("client_ip is null"); + return (Criteria) this; + } + + public Criteria andClientIpIsNotNull() { + addCriterion("client_ip is not null"); + return (Criteria) this; + } + + public Criteria andClientIpEqualTo(String value) { + addCriterion("client_ip =", value, "clientIp"); + return (Criteria) this; + } + + public Criteria andClientIpNotEqualTo(String value) { + addCriterion("client_ip <>", value, "clientIp"); + return (Criteria) this; + } + + public Criteria andClientIpGreaterThan(String value) { + addCriterion("client_ip >", value, "clientIp"); + return (Criteria) this; + } + + public Criteria andClientIpGreaterThanOrEqualTo(String value) { + addCriterion("client_ip >=", value, "clientIp"); + return (Criteria) this; + } + + public Criteria andClientIpLessThan(String value) { + addCriterion("client_ip <", value, "clientIp"); + return (Criteria) this; + } + + public Criteria andClientIpLessThanOrEqualTo(String value) { + addCriterion("client_ip <=", value, "clientIp"); + return (Criteria) this; + } + + public Criteria andClientIpLike(String value) { + addCriterion("client_ip like", value, "clientIp"); + return (Criteria) this; + } + + public Criteria andClientIpNotLike(String value) { + addCriterion("client_ip not like", value, "clientIp"); + return (Criteria) this; + } + + public Criteria andClientIpIn(List values) { + addCriterion("client_ip in", values, "clientIp"); + return (Criteria) this; + } + + public Criteria andClientIpNotIn(List values) { + addCriterion("client_ip not in", values, "clientIp"); + return (Criteria) this; + } + + public Criteria andClientIpBetween(String value1, String value2) { + addCriterion("client_ip between", value1, value2, "clientIp"); + return (Criteria) this; + } + + public Criteria andClientIpNotBetween(String value1, String value2) { + addCriterion("client_ip not between", value1, value2, "clientIp"); + return (Criteria) this; + } + + public Criteria andCreateTimeIsNull() { + addCriterion("create_time is null"); + return (Criteria) this; + } + + public Criteria andCreateTimeIsNotNull() { + addCriterion("create_time is not null"); + return (Criteria) this; + } + + public Criteria andCreateTimeEqualTo(Date value) { + addCriterion("create_time =", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotEqualTo(Date value) { + addCriterion("create_time <>", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeGreaterThan(Date value) { + addCriterion("create_time >", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeGreaterThanOrEqualTo(Date value) { + addCriterion("create_time >=", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeLessThan(Date value) { + addCriterion("create_time <", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeLessThanOrEqualTo(Date value) { + addCriterion("create_time <=", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeIn(List values) { + addCriterion("create_time in", values, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotIn(List values) { + addCriterion("create_time not in", values, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeBetween(Date value1, Date value2) { + addCriterion("create_time between", value1, value2, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotBetween(Date value1, Date value2) { + addCriterion("create_time not between", value1, value2, "createTime"); + return (Criteria) this; + } + + public Criteria andStatusIsNull() { + addCriterion("status is null"); + return (Criteria) this; + } + + public Criteria andStatusIsNotNull() { + addCriterion("status is not null"); + return (Criteria) this; + } + + public Criteria andStatusEqualTo(Byte value) { + addCriterion("status =", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusNotEqualTo(Byte value) { + addCriterion("status <>", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusGreaterThan(Byte value) { + addCriterion("status >", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusGreaterThanOrEqualTo(Byte value) { + addCriterion("status >=", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusLessThan(Byte value) { + addCriterion("status <", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusLessThanOrEqualTo(Byte value) { + addCriterion("status <=", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusIn(List values) { + addCriterion("status in", values, "status"); + return (Criteria) this; + } + + public Criteria andStatusNotIn(List values) { + addCriterion("status not in", values, "status"); + return (Criteria) this; + } + + public Criteria andStatusBetween(Byte value1, Byte value2) { + addCriterion("status between", value1, value2, "status"); + return (Criteria) this; + } + + public Criteria andStatusNotBetween(Byte value1, Byte value2) { + addCriterion("status not between", value1, value2, "status"); + return (Criteria) this; + } + + public Criteria andContentIsNull() { + addCriterion("content is null"); + return (Criteria) this; + } + + public Criteria andContentIsNotNull() { + addCriterion("content is not null"); + return (Criteria) this; + } + + public Criteria andContentEqualTo(String value) { + addCriterion("content =", value, "content"); + return (Criteria) this; + } + + public Criteria andContentNotEqualTo(String value) { + addCriterion("content <>", value, "content"); + return (Criteria) this; + } + + public Criteria andContentGreaterThan(String value) { + addCriterion("content >", value, "content"); + return (Criteria) this; + } + + public Criteria andContentGreaterThanOrEqualTo(String value) { + addCriterion("content >=", value, "content"); + return (Criteria) this; + } + + public Criteria andContentLessThan(String value) { + addCriterion("content <", value, "content"); + return (Criteria) this; + } + + public Criteria andContentLessThanOrEqualTo(String value) { + addCriterion("content <=", value, "content"); + return (Criteria) this; + } + + public Criteria andContentLike(String value) { + addCriterion("content like", value, "content"); + return (Criteria) this; + } + + public Criteria andContentNotLike(String value) { + addCriterion("content not like", value, "content"); + return (Criteria) this; + } + + public Criteria andContentIn(List values) { + addCriterion("content in", values, "content"); + return (Criteria) this; + } + + public Criteria andContentNotIn(List values) { + addCriterion("content not in", values, "content"); + return (Criteria) this; + } + + public Criteria andContentBetween(String value1, String value2) { + addCriterion("content between", value1, value2, "content"); + return (Criteria) this; + } + + public Criteria andContentNotBetween(String value1, String value2) { + addCriterion("content not between", value1, value2, "content"); + return (Criteria) this; + } + + public Criteria andTenantIdIsNull() { + addCriterion("tenant_id is null"); + return (Criteria) this; + } + + public Criteria andTenantIdIsNotNull() { + addCriterion("tenant_id is not null"); + return (Criteria) this; + } + + public Criteria andTenantIdEqualTo(Long value) { + addCriterion("tenant_id =", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotEqualTo(Long value) { + addCriterion("tenant_id <>", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdGreaterThan(Long value) { + addCriterion("tenant_id >", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdGreaterThanOrEqualTo(Long value) { + addCriterion("tenant_id >=", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdLessThan(Long value) { + addCriterion("tenant_id <", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdLessThanOrEqualTo(Long value) { + addCriterion("tenant_id <=", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdIn(List values) { + addCriterion("tenant_id in", values, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotIn(List values) { + addCriterion("tenant_id not in", values, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdBetween(Long value1, Long value2) { + addCriterion("tenant_id between", value1, value2, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotBetween(Long value1, Long value2) { + addCriterion("tenant_id not between", value1, value2, "tenantId"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/Material.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/Material.java new file mode 100644 index 0000000..40ac997 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/Material.java @@ -0,0 +1,255 @@ +package com.reallin.smt.datasource.entities; + +import java.math.BigDecimal; + +public class Material { + private Long id; + + private Long categoryId; + + private String name; + + private String mfrs; + + private String model; + + private String standard; + + private String brand; + + private String mnemonic; + + private String color; + + private String unit; + + private String remark; + + private String imgName; + + private Long unitId; + + private Integer expiryNum; + + private BigDecimal weight; + + private Boolean enabled; + + private String otherField1; + + private String otherField2; + + private String otherField3; + + private String enableSerialNumber; + + private String enableBatchNumber; + + private String position; + + private String attribute; + + private Long tenantId; + + private String deleteFlag; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getCategoryId() { + return categoryId; + } + + public void setCategoryId(Long categoryId) { + this.categoryId = categoryId; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name == null ? null : name.trim(); + } + + public String getMfrs() { + return mfrs; + } + + public void setMfrs(String mfrs) { + this.mfrs = mfrs == null ? null : mfrs.trim(); + } + + public String getModel() { + return model; + } + + public void setModel(String model) { + this.model = model == null ? null : model.trim(); + } + + public String getStandard() { + return standard; + } + + public void setStandard(String standard) { + this.standard = standard == null ? null : standard.trim(); + } + + public String getBrand() { + return brand; + } + + public void setBrand(String brand) { + this.brand = brand == null ? null : brand.trim(); + } + + public String getMnemonic() { + return mnemonic; + } + + public void setMnemonic(String mnemonic) { + this.mnemonic = mnemonic == null ? null : mnemonic.trim(); + } + + public String getColor() { + return color; + } + + public void setColor(String color) { + this.color = color == null ? null : color.trim(); + } + + public String getUnit() { + return unit; + } + + public void setUnit(String unit) { + this.unit = unit == null ? null : unit.trim(); + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark == null ? null : remark.trim(); + } + + public String getImgName() { + return imgName; + } + + public void setImgName(String imgName) { + this.imgName = imgName == null ? null : imgName.trim(); + } + + public Long getUnitId() { + return unitId; + } + + public void setUnitId(Long unitId) { + this.unitId = unitId; + } + + public Integer getExpiryNum() { + return expiryNum; + } + + public void setExpiryNum(Integer expiryNum) { + this.expiryNum = expiryNum; + } + + public BigDecimal getWeight() { + return weight; + } + + public void setWeight(BigDecimal weight) { + this.weight = weight; + } + + public Boolean getEnabled() { + return enabled; + } + + public void setEnabled(Boolean enabled) { + this.enabled = enabled; + } + + public String getOtherField1() { + return otherField1; + } + + public void setOtherField1(String otherField1) { + this.otherField1 = otherField1 == null ? null : otherField1.trim(); + } + + public String getOtherField2() { + return otherField2; + } + + public void setOtherField2(String otherField2) { + this.otherField2 = otherField2 == null ? null : otherField2.trim(); + } + + public String getOtherField3() { + return otherField3; + } + + public void setOtherField3(String otherField3) { + this.otherField3 = otherField3 == null ? null : otherField3.trim(); + } + + public String getEnableSerialNumber() { + return enableSerialNumber; + } + + public void setEnableSerialNumber(String enableSerialNumber) { + this.enableSerialNumber = enableSerialNumber == null ? null : enableSerialNumber.trim(); + } + + public String getEnableBatchNumber() { + return enableBatchNumber; + } + + public void setEnableBatchNumber(String enableBatchNumber) { + this.enableBatchNumber = enableBatchNumber == null ? null : enableBatchNumber.trim(); + } + + public String getPosition() { + return position; + } + + public void setPosition(String position) { + this.position = position == null ? null : position.trim(); + } + + public String getAttribute() { + return attribute; + } + + public void setAttribute(String attribute) { + this.attribute = attribute == null ? null : attribute.trim(); + } + + public Long getTenantId() { + return tenantId; + } + + public void setTenantId(Long tenantId) { + this.tenantId = tenantId; + } + + public String getDeleteFlag() { + return deleteFlag; + } + + public void setDeleteFlag(String deleteFlag) { + this.deleteFlag = deleteFlag == null ? null : deleteFlag.trim(); + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialAttribute.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialAttribute.java new file mode 100644 index 0000000..2952a9a --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialAttribute.java @@ -0,0 +1,53 @@ +package com.reallin.smt.datasource.entities; + +public class MaterialAttribute { + private Long id; + + private String attributeName; + + private String attributeValue; + + private Long tenantId; + + private String deleteFlag; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getAttributeName() { + return attributeName; + } + + public void setAttributeName(String attributeName) { + this.attributeName = attributeName == null ? null : attributeName.trim(); + } + + public String getAttributeValue() { + return attributeValue; + } + + public void setAttributeValue(String attributeValue) { + this.attributeValue = attributeValue == null ? null : attributeValue.trim(); + } + + public Long getTenantId() { + return tenantId; + } + + public void setTenantId(Long tenantId) { + this.tenantId = tenantId; + } + + public String getDeleteFlag() { + return deleteFlag; + } + + public void setDeleteFlag(String deleteFlag) { + this.deleteFlag = deleteFlag == null ? null : deleteFlag.trim(); + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialAttributeExample.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialAttributeExample.java new file mode 100644 index 0000000..701b269 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialAttributeExample.java @@ -0,0 +1,529 @@ +package com.reallin.smt.datasource.entities; + +import java.util.ArrayList; +import java.util.List; + +public class MaterialAttributeExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public MaterialAttributeExample() { + oredCriteria = new ArrayList<>(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList<>(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andAttributeNameIsNull() { + addCriterion("attribute_name is null"); + return (Criteria) this; + } + + public Criteria andAttributeNameIsNotNull() { + addCriterion("attribute_name is not null"); + return (Criteria) this; + } + + public Criteria andAttributeNameEqualTo(String value) { + addCriterion("attribute_name =", value, "attributeName"); + return (Criteria) this; + } + + public Criteria andAttributeNameNotEqualTo(String value) { + addCriterion("attribute_name <>", value, "attributeName"); + return (Criteria) this; + } + + public Criteria andAttributeNameGreaterThan(String value) { + addCriterion("attribute_name >", value, "attributeName"); + return (Criteria) this; + } + + public Criteria andAttributeNameGreaterThanOrEqualTo(String value) { + addCriterion("attribute_name >=", value, "attributeName"); + return (Criteria) this; + } + + public Criteria andAttributeNameLessThan(String value) { + addCriterion("attribute_name <", value, "attributeName"); + return (Criteria) this; + } + + public Criteria andAttributeNameLessThanOrEqualTo(String value) { + addCriterion("attribute_name <=", value, "attributeName"); + return (Criteria) this; + } + + public Criteria andAttributeNameLike(String value) { + addCriterion("attribute_name like", value, "attributeName"); + return (Criteria) this; + } + + public Criteria andAttributeNameNotLike(String value) { + addCriterion("attribute_name not like", value, "attributeName"); + return (Criteria) this; + } + + public Criteria andAttributeNameIn(List values) { + addCriterion("attribute_name in", values, "attributeName"); + return (Criteria) this; + } + + public Criteria andAttributeNameNotIn(List values) { + addCriterion("attribute_name not in", values, "attributeName"); + return (Criteria) this; + } + + public Criteria andAttributeNameBetween(String value1, String value2) { + addCriterion("attribute_name between", value1, value2, "attributeName"); + return (Criteria) this; + } + + public Criteria andAttributeNameNotBetween(String value1, String value2) { + addCriterion("attribute_name not between", value1, value2, "attributeName"); + return (Criteria) this; + } + + public Criteria andAttributeValueIsNull() { + addCriterion("attribute_value is null"); + return (Criteria) this; + } + + public Criteria andAttributeValueIsNotNull() { + addCriterion("attribute_value is not null"); + return (Criteria) this; + } + + public Criteria andAttributeValueEqualTo(String value) { + addCriterion("attribute_value =", value, "attributeValue"); + return (Criteria) this; + } + + public Criteria andAttributeValueNotEqualTo(String value) { + addCriterion("attribute_value <>", value, "attributeValue"); + return (Criteria) this; + } + + public Criteria andAttributeValueGreaterThan(String value) { + addCriterion("attribute_value >", value, "attributeValue"); + return (Criteria) this; + } + + public Criteria andAttributeValueGreaterThanOrEqualTo(String value) { + addCriterion("attribute_value >=", value, "attributeValue"); + return (Criteria) this; + } + + public Criteria andAttributeValueLessThan(String value) { + addCriterion("attribute_value <", value, "attributeValue"); + return (Criteria) this; + } + + public Criteria andAttributeValueLessThanOrEqualTo(String value) { + addCriterion("attribute_value <=", value, "attributeValue"); + return (Criteria) this; + } + + public Criteria andAttributeValueLike(String value) { + addCriterion("attribute_value like", value, "attributeValue"); + return (Criteria) this; + } + + public Criteria andAttributeValueNotLike(String value) { + addCriterion("attribute_value not like", value, "attributeValue"); + return (Criteria) this; + } + + public Criteria andAttributeValueIn(List values) { + addCriterion("attribute_value in", values, "attributeValue"); + return (Criteria) this; + } + + public Criteria andAttributeValueNotIn(List values) { + addCriterion("attribute_value not in", values, "attributeValue"); + return (Criteria) this; + } + + public Criteria andAttributeValueBetween(String value1, String value2) { + addCriterion("attribute_value between", value1, value2, "attributeValue"); + return (Criteria) this; + } + + public Criteria andAttributeValueNotBetween(String value1, String value2) { + addCriterion("attribute_value not between", value1, value2, "attributeValue"); + return (Criteria) this; + } + + public Criteria andTenantIdIsNull() { + addCriterion("tenant_id is null"); + return (Criteria) this; + } + + public Criteria andTenantIdIsNotNull() { + addCriterion("tenant_id is not null"); + return (Criteria) this; + } + + public Criteria andTenantIdEqualTo(Long value) { + addCriterion("tenant_id =", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotEqualTo(Long value) { + addCriterion("tenant_id <>", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdGreaterThan(Long value) { + addCriterion("tenant_id >", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdGreaterThanOrEqualTo(Long value) { + addCriterion("tenant_id >=", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdLessThan(Long value) { + addCriterion("tenant_id <", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdLessThanOrEqualTo(Long value) { + addCriterion("tenant_id <=", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdIn(List values) { + addCriterion("tenant_id in", values, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotIn(List values) { + addCriterion("tenant_id not in", values, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdBetween(Long value1, Long value2) { + addCriterion("tenant_id between", value1, value2, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotBetween(Long value1, Long value2) { + addCriterion("tenant_id not between", value1, value2, "tenantId"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIsNull() { + addCriterion("delete_flag is null"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIsNotNull() { + addCriterion("delete_flag is not null"); + return (Criteria) this; + } + + public Criteria andDeleteFlagEqualTo(String value) { + addCriterion("delete_flag =", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotEqualTo(String value) { + addCriterion("delete_flag <>", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagGreaterThan(String value) { + addCriterion("delete_flag >", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagGreaterThanOrEqualTo(String value) { + addCriterion("delete_flag >=", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLessThan(String value) { + addCriterion("delete_flag <", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLessThanOrEqualTo(String value) { + addCriterion("delete_flag <=", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLike(String value) { + addCriterion("delete_flag like", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotLike(String value) { + addCriterion("delete_flag not like", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIn(List values) { + addCriterion("delete_flag in", values, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotIn(List values) { + addCriterion("delete_flag not in", values, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagBetween(String value1, String value2) { + addCriterion("delete_flag between", value1, value2, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotBetween(String value1, String value2) { + addCriterion("delete_flag not between", value1, value2, "deleteFlag"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialCategory.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialCategory.java new file mode 100644 index 0000000..daeb1c2 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialCategory.java @@ -0,0 +1,115 @@ +package com.reallin.smt.datasource.entities; + +import java.util.Date; + +public class MaterialCategory { + private Long id; + + private String name; + + private Short categoryLevel; + + private Long parentId; + + private String sort; + + private String serialNo; + + private String remark; + + private Date createTime; + + private Date updateTime; + + private Long tenantId; + + private String deleteFlag; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name == null ? null : name.trim(); + } + + public Short getCategoryLevel() { + return categoryLevel; + } + + public void setCategoryLevel(Short categoryLevel) { + this.categoryLevel = categoryLevel; + } + + public Long getParentId() { + return parentId; + } + + public void setParentId(Long parentId) { + this.parentId = parentId; + } + + public String getSort() { + return sort; + } + + public void setSort(String sort) { + this.sort = sort == null ? null : sort.trim(); + } + + public String getSerialNo() { + return serialNo; + } + + public void setSerialNo(String serialNo) { + this.serialNo = serialNo == null ? null : serialNo.trim(); + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark == null ? null : remark.trim(); + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Date getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } + + public Long getTenantId() { + return tenantId; + } + + public void setTenantId(Long tenantId) { + this.tenantId = tenantId; + } + + public String getDeleteFlag() { + return deleteFlag; + } + + public void setDeleteFlag(String deleteFlag) { + this.deleteFlag = deleteFlag == null ? null : deleteFlag.trim(); + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialCategoryExample.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialCategoryExample.java new file mode 100644 index 0000000..6cc029c --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialCategoryExample.java @@ -0,0 +1,910 @@ +package com.reallin.smt.datasource.entities; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +public class MaterialCategoryExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public MaterialCategoryExample() { + oredCriteria = new ArrayList<>(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList<>(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andNameIsNull() { + addCriterion("name is null"); + return (Criteria) this; + } + + public Criteria andNameIsNotNull() { + addCriterion("name is not null"); + return (Criteria) this; + } + + public Criteria andNameEqualTo(String value) { + addCriterion("name =", value, "name"); + return (Criteria) this; + } + + public Criteria andNameNotEqualTo(String value) { + addCriterion("name <>", value, "name"); + return (Criteria) this; + } + + public Criteria andNameGreaterThan(String value) { + addCriterion("name >", value, "name"); + return (Criteria) this; + } + + public Criteria andNameGreaterThanOrEqualTo(String value) { + addCriterion("name >=", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLessThan(String value) { + addCriterion("name <", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLessThanOrEqualTo(String value) { + addCriterion("name <=", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLike(String value) { + addCriterion("name like", value, "name"); + return (Criteria) this; + } + + public Criteria andNameNotLike(String value) { + addCriterion("name not like", value, "name"); + return (Criteria) this; + } + + public Criteria andNameIn(List values) { + addCriterion("name in", values, "name"); + return (Criteria) this; + } + + public Criteria andNameNotIn(List values) { + addCriterion("name not in", values, "name"); + return (Criteria) this; + } + + public Criteria andNameBetween(String value1, String value2) { + addCriterion("name between", value1, value2, "name"); + return (Criteria) this; + } + + public Criteria andNameNotBetween(String value1, String value2) { + addCriterion("name not between", value1, value2, "name"); + return (Criteria) this; + } + + public Criteria andCategoryLevelIsNull() { + addCriterion("category_level is null"); + return (Criteria) this; + } + + public Criteria andCategoryLevelIsNotNull() { + addCriterion("category_level is not null"); + return (Criteria) this; + } + + public Criteria andCategoryLevelEqualTo(Short value) { + addCriterion("category_level =", value, "categoryLevel"); + return (Criteria) this; + } + + public Criteria andCategoryLevelNotEqualTo(Short value) { + addCriterion("category_level <>", value, "categoryLevel"); + return (Criteria) this; + } + + public Criteria andCategoryLevelGreaterThan(Short value) { + addCriterion("category_level >", value, "categoryLevel"); + return (Criteria) this; + } + + public Criteria andCategoryLevelGreaterThanOrEqualTo(Short value) { + addCriterion("category_level >=", value, "categoryLevel"); + return (Criteria) this; + } + + public Criteria andCategoryLevelLessThan(Short value) { + addCriterion("category_level <", value, "categoryLevel"); + return (Criteria) this; + } + + public Criteria andCategoryLevelLessThanOrEqualTo(Short value) { + addCriterion("category_level <=", value, "categoryLevel"); + return (Criteria) this; + } + + public Criteria andCategoryLevelIn(List values) { + addCriterion("category_level in", values, "categoryLevel"); + return (Criteria) this; + } + + public Criteria andCategoryLevelNotIn(List values) { + addCriterion("category_level not in", values, "categoryLevel"); + return (Criteria) this; + } + + public Criteria andCategoryLevelBetween(Short value1, Short value2) { + addCriterion("category_level between", value1, value2, "categoryLevel"); + return (Criteria) this; + } + + public Criteria andCategoryLevelNotBetween(Short value1, Short value2) { + addCriterion("category_level not between", value1, value2, "categoryLevel"); + return (Criteria) this; + } + + public Criteria andParentIdIsNull() { + addCriterion("parent_id is null"); + return (Criteria) this; + } + + public Criteria andParentIdIsNotNull() { + addCriterion("parent_id is not null"); + return (Criteria) this; + } + + public Criteria andParentIdEqualTo(Long value) { + addCriterion("parent_id =", value, "parentId"); + return (Criteria) this; + } + + public Criteria andParentIdNotEqualTo(Long value) { + addCriterion("parent_id <>", value, "parentId"); + return (Criteria) this; + } + + public Criteria andParentIdGreaterThan(Long value) { + addCriterion("parent_id >", value, "parentId"); + return (Criteria) this; + } + + public Criteria andParentIdGreaterThanOrEqualTo(Long value) { + addCriterion("parent_id >=", value, "parentId"); + return (Criteria) this; + } + + public Criteria andParentIdLessThan(Long value) { + addCriterion("parent_id <", value, "parentId"); + return (Criteria) this; + } + + public Criteria andParentIdLessThanOrEqualTo(Long value) { + addCriterion("parent_id <=", value, "parentId"); + return (Criteria) this; + } + + public Criteria andParentIdIn(List values) { + addCriterion("parent_id in", values, "parentId"); + return (Criteria) this; + } + + public Criteria andParentIdNotIn(List values) { + addCriterion("parent_id not in", values, "parentId"); + return (Criteria) this; + } + + public Criteria andParentIdBetween(Long value1, Long value2) { + addCriterion("parent_id between", value1, value2, "parentId"); + return (Criteria) this; + } + + public Criteria andParentIdNotBetween(Long value1, Long value2) { + addCriterion("parent_id not between", value1, value2, "parentId"); + return (Criteria) this; + } + + public Criteria andSortIsNull() { + addCriterion("sort is null"); + return (Criteria) this; + } + + public Criteria andSortIsNotNull() { + addCriterion("sort is not null"); + return (Criteria) this; + } + + public Criteria andSortEqualTo(String value) { + addCriterion("sort =", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotEqualTo(String value) { + addCriterion("sort <>", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortGreaterThan(String value) { + addCriterion("sort >", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortGreaterThanOrEqualTo(String value) { + addCriterion("sort >=", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortLessThan(String value) { + addCriterion("sort <", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortLessThanOrEqualTo(String value) { + addCriterion("sort <=", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortLike(String value) { + addCriterion("sort like", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotLike(String value) { + addCriterion("sort not like", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortIn(List values) { + addCriterion("sort in", values, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotIn(List values) { + addCriterion("sort not in", values, "sort"); + return (Criteria) this; + } + + public Criteria andSortBetween(String value1, String value2) { + addCriterion("sort between", value1, value2, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotBetween(String value1, String value2) { + addCriterion("sort not between", value1, value2, "sort"); + return (Criteria) this; + } + + public Criteria andSerialNoIsNull() { + addCriterion("serial_no is null"); + return (Criteria) this; + } + + public Criteria andSerialNoIsNotNull() { + addCriterion("serial_no is not null"); + return (Criteria) this; + } + + public Criteria andSerialNoEqualTo(String value) { + addCriterion("serial_no =", value, "serialNo"); + return (Criteria) this; + } + + public Criteria andSerialNoNotEqualTo(String value) { + addCriterion("serial_no <>", value, "serialNo"); + return (Criteria) this; + } + + public Criteria andSerialNoGreaterThan(String value) { + addCriterion("serial_no >", value, "serialNo"); + return (Criteria) this; + } + + public Criteria andSerialNoGreaterThanOrEqualTo(String value) { + addCriterion("serial_no >=", value, "serialNo"); + return (Criteria) this; + } + + public Criteria andSerialNoLessThan(String value) { + addCriterion("serial_no <", value, "serialNo"); + return (Criteria) this; + } + + public Criteria andSerialNoLessThanOrEqualTo(String value) { + addCriterion("serial_no <=", value, "serialNo"); + return (Criteria) this; + } + + public Criteria andSerialNoLike(String value) { + addCriterion("serial_no like", value, "serialNo"); + return (Criteria) this; + } + + public Criteria andSerialNoNotLike(String value) { + addCriterion("serial_no not like", value, "serialNo"); + return (Criteria) this; + } + + public Criteria andSerialNoIn(List values) { + addCriterion("serial_no in", values, "serialNo"); + return (Criteria) this; + } + + public Criteria andSerialNoNotIn(List values) { + addCriterion("serial_no not in", values, "serialNo"); + return (Criteria) this; + } + + public Criteria andSerialNoBetween(String value1, String value2) { + addCriterion("serial_no between", value1, value2, "serialNo"); + return (Criteria) this; + } + + public Criteria andSerialNoNotBetween(String value1, String value2) { + addCriterion("serial_no not between", value1, value2, "serialNo"); + return (Criteria) this; + } + + public Criteria andRemarkIsNull() { + addCriterion("remark is null"); + return (Criteria) this; + } + + public Criteria andRemarkIsNotNull() { + addCriterion("remark is not null"); + return (Criteria) this; + } + + public Criteria andRemarkEqualTo(String value) { + addCriterion("remark =", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotEqualTo(String value) { + addCriterion("remark <>", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThan(String value) { + addCriterion("remark >", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThanOrEqualTo(String value) { + addCriterion("remark >=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThan(String value) { + addCriterion("remark <", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThanOrEqualTo(String value) { + addCriterion("remark <=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLike(String value) { + addCriterion("remark like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotLike(String value) { + addCriterion("remark not like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkIn(List values) { + addCriterion("remark in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotIn(List values) { + addCriterion("remark not in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkBetween(String value1, String value2) { + addCriterion("remark between", value1, value2, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotBetween(String value1, String value2) { + addCriterion("remark not between", value1, value2, "remark"); + return (Criteria) this; + } + + public Criteria andCreateTimeIsNull() { + addCriterion("create_time is null"); + return (Criteria) this; + } + + public Criteria andCreateTimeIsNotNull() { + addCriterion("create_time is not null"); + return (Criteria) this; + } + + public Criteria andCreateTimeEqualTo(Date value) { + addCriterion("create_time =", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotEqualTo(Date value) { + addCriterion("create_time <>", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeGreaterThan(Date value) { + addCriterion("create_time >", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeGreaterThanOrEqualTo(Date value) { + addCriterion("create_time >=", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeLessThan(Date value) { + addCriterion("create_time <", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeLessThanOrEqualTo(Date value) { + addCriterion("create_time <=", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeIn(List values) { + addCriterion("create_time in", values, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotIn(List values) { + addCriterion("create_time not in", values, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeBetween(Date value1, Date value2) { + addCriterion("create_time between", value1, value2, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotBetween(Date value1, Date value2) { + addCriterion("create_time not between", value1, value2, "createTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeIsNull() { + addCriterion("update_time is null"); + return (Criteria) this; + } + + public Criteria andUpdateTimeIsNotNull() { + addCriterion("update_time is not null"); + return (Criteria) this; + } + + public Criteria andUpdateTimeEqualTo(Date value) { + addCriterion("update_time =", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeNotEqualTo(Date value) { + addCriterion("update_time <>", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeGreaterThan(Date value) { + addCriterion("update_time >", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeGreaterThanOrEqualTo(Date value) { + addCriterion("update_time >=", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeLessThan(Date value) { + addCriterion("update_time <", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeLessThanOrEqualTo(Date value) { + addCriterion("update_time <=", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeIn(List values) { + addCriterion("update_time in", values, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeNotIn(List values) { + addCriterion("update_time not in", values, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeBetween(Date value1, Date value2) { + addCriterion("update_time between", value1, value2, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeNotBetween(Date value1, Date value2) { + addCriterion("update_time not between", value1, value2, "updateTime"); + return (Criteria) this; + } + + public Criteria andTenantIdIsNull() { + addCriterion("tenant_id is null"); + return (Criteria) this; + } + + public Criteria andTenantIdIsNotNull() { + addCriterion("tenant_id is not null"); + return (Criteria) this; + } + + public Criteria andTenantIdEqualTo(Long value) { + addCriterion("tenant_id =", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotEqualTo(Long value) { + addCriterion("tenant_id <>", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdGreaterThan(Long value) { + addCriterion("tenant_id >", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdGreaterThanOrEqualTo(Long value) { + addCriterion("tenant_id >=", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdLessThan(Long value) { + addCriterion("tenant_id <", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdLessThanOrEqualTo(Long value) { + addCriterion("tenant_id <=", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdIn(List values) { + addCriterion("tenant_id in", values, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotIn(List values) { + addCriterion("tenant_id not in", values, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdBetween(Long value1, Long value2) { + addCriterion("tenant_id between", value1, value2, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotBetween(Long value1, Long value2) { + addCriterion("tenant_id not between", value1, value2, "tenantId"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIsNull() { + addCriterion("delete_flag is null"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIsNotNull() { + addCriterion("delete_flag is not null"); + return (Criteria) this; + } + + public Criteria andDeleteFlagEqualTo(String value) { + addCriterion("delete_flag =", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotEqualTo(String value) { + addCriterion("delete_flag <>", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagGreaterThan(String value) { + addCriterion("delete_flag >", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagGreaterThanOrEqualTo(String value) { + addCriterion("delete_flag >=", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLessThan(String value) { + addCriterion("delete_flag <", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLessThanOrEqualTo(String value) { + addCriterion("delete_flag <=", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLike(String value) { + addCriterion("delete_flag like", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotLike(String value) { + addCriterion("delete_flag not like", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIn(List values) { + addCriterion("delete_flag in", values, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotIn(List values) { + addCriterion("delete_flag not in", values, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagBetween(String value1, String value2) { + addCriterion("delete_flag between", value1, value2, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotBetween(String value1, String value2) { + addCriterion("delete_flag not between", value1, value2, "deleteFlag"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialCurrentStock.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialCurrentStock.java new file mode 100644 index 0000000..2de314d --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialCurrentStock.java @@ -0,0 +1,75 @@ +package com.reallin.smt.datasource.entities; + +import java.math.BigDecimal; + +public class MaterialCurrentStock { + private Long id; + + private Long materialId; + + private Long depotId; + + private BigDecimal currentNumber; + + private BigDecimal currentUnitPrice; + + private Long tenantId; + + private String deleteFlag; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getMaterialId() { + return materialId; + } + + public void setMaterialId(Long materialId) { + this.materialId = materialId; + } + + public Long getDepotId() { + return depotId; + } + + public void setDepotId(Long depotId) { + this.depotId = depotId; + } + + public BigDecimal getCurrentNumber() { + return currentNumber; + } + + public void setCurrentNumber(BigDecimal currentNumber) { + this.currentNumber = currentNumber; + } + + public BigDecimal getCurrentUnitPrice() { + return currentUnitPrice; + } + + public void setCurrentUnitPrice(BigDecimal currentUnitPrice) { + this.currentUnitPrice = currentUnitPrice; + } + + public Long getTenantId() { + return tenantId; + } + + public void setTenantId(Long tenantId) { + this.tenantId = tenantId; + } + + public String getDeleteFlag() { + return deleteFlag; + } + + public void setDeleteFlag(String deleteFlag) { + this.deleteFlag = deleteFlag == null ? null : deleteFlag.trim(); + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialCurrentStockExample.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialCurrentStockExample.java new file mode 100644 index 0000000..e313966 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialCurrentStockExample.java @@ -0,0 +1,630 @@ +package com.reallin.smt.datasource.entities; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + +public class MaterialCurrentStockExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public MaterialCurrentStockExample() { + oredCriteria = new ArrayList<>(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList<>(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andMaterialIdIsNull() { + addCriterion("material_id is null"); + return (Criteria) this; + } + + public Criteria andMaterialIdIsNotNull() { + addCriterion("material_id is not null"); + return (Criteria) this; + } + + public Criteria andMaterialIdEqualTo(Long value) { + addCriterion("material_id =", value, "materialId"); + return (Criteria) this; + } + + public Criteria andMaterialIdNotEqualTo(Long value) { + addCriterion("material_id <>", value, "materialId"); + return (Criteria) this; + } + + public Criteria andMaterialIdGreaterThan(Long value) { + addCriterion("material_id >", value, "materialId"); + return (Criteria) this; + } + + public Criteria andMaterialIdGreaterThanOrEqualTo(Long value) { + addCriterion("material_id >=", value, "materialId"); + return (Criteria) this; + } + + public Criteria andMaterialIdLessThan(Long value) { + addCriterion("material_id <", value, "materialId"); + return (Criteria) this; + } + + public Criteria andMaterialIdLessThanOrEqualTo(Long value) { + addCriterion("material_id <=", value, "materialId"); + return (Criteria) this; + } + + public Criteria andMaterialIdIn(List values) { + addCriterion("material_id in", values, "materialId"); + return (Criteria) this; + } + + public Criteria andMaterialIdNotIn(List values) { + addCriterion("material_id not in", values, "materialId"); + return (Criteria) this; + } + + public Criteria andMaterialIdBetween(Long value1, Long value2) { + addCriterion("material_id between", value1, value2, "materialId"); + return (Criteria) this; + } + + public Criteria andMaterialIdNotBetween(Long value1, Long value2) { + addCriterion("material_id not between", value1, value2, "materialId"); + return (Criteria) this; + } + + public Criteria andDepotIdIsNull() { + addCriterion("depot_id is null"); + return (Criteria) this; + } + + public Criteria andDepotIdIsNotNull() { + addCriterion("depot_id is not null"); + return (Criteria) this; + } + + public Criteria andDepotIdEqualTo(Long value) { + addCriterion("depot_id =", value, "depotId"); + return (Criteria) this; + } + + public Criteria andDepotIdNotEqualTo(Long value) { + addCriterion("depot_id <>", value, "depotId"); + return (Criteria) this; + } + + public Criteria andDepotIdGreaterThan(Long value) { + addCriterion("depot_id >", value, "depotId"); + return (Criteria) this; + } + + public Criteria andDepotIdGreaterThanOrEqualTo(Long value) { + addCriterion("depot_id >=", value, "depotId"); + return (Criteria) this; + } + + public Criteria andDepotIdLessThan(Long value) { + addCriterion("depot_id <", value, "depotId"); + return (Criteria) this; + } + + public Criteria andDepotIdLessThanOrEqualTo(Long value) { + addCriterion("depot_id <=", value, "depotId"); + return (Criteria) this; + } + + public Criteria andDepotIdIn(List values) { + addCriterion("depot_id in", values, "depotId"); + return (Criteria) this; + } + + public Criteria andDepotIdNotIn(List values) { + addCriterion("depot_id not in", values, "depotId"); + return (Criteria) this; + } + + public Criteria andDepotIdBetween(Long value1, Long value2) { + addCriterion("depot_id between", value1, value2, "depotId"); + return (Criteria) this; + } + + public Criteria andDepotIdNotBetween(Long value1, Long value2) { + addCriterion("depot_id not between", value1, value2, "depotId"); + return (Criteria) this; + } + + public Criteria andCurrentNumberIsNull() { + addCriterion("current_number is null"); + return (Criteria) this; + } + + public Criteria andCurrentNumberIsNotNull() { + addCriterion("current_number is not null"); + return (Criteria) this; + } + + public Criteria andCurrentNumberEqualTo(BigDecimal value) { + addCriterion("current_number =", value, "currentNumber"); + return (Criteria) this; + } + + public Criteria andCurrentNumberNotEqualTo(BigDecimal value) { + addCriterion("current_number <>", value, "currentNumber"); + return (Criteria) this; + } + + public Criteria andCurrentNumberGreaterThan(BigDecimal value) { + addCriterion("current_number >", value, "currentNumber"); + return (Criteria) this; + } + + public Criteria andCurrentNumberGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("current_number >=", value, "currentNumber"); + return (Criteria) this; + } + + public Criteria andCurrentNumberLessThan(BigDecimal value) { + addCriterion("current_number <", value, "currentNumber"); + return (Criteria) this; + } + + public Criteria andCurrentNumberLessThanOrEqualTo(BigDecimal value) { + addCriterion("current_number <=", value, "currentNumber"); + return (Criteria) this; + } + + public Criteria andCurrentNumberIn(List values) { + addCriterion("current_number in", values, "currentNumber"); + return (Criteria) this; + } + + public Criteria andCurrentNumberNotIn(List values) { + addCriterion("current_number not in", values, "currentNumber"); + return (Criteria) this; + } + + public Criteria andCurrentNumberBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("current_number between", value1, value2, "currentNumber"); + return (Criteria) this; + } + + public Criteria andCurrentNumberNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("current_number not between", value1, value2, "currentNumber"); + return (Criteria) this; + } + + public Criteria andCurrentUnitPriceIsNull() { + addCriterion("current_unit_price is null"); + return (Criteria) this; + } + + public Criteria andCurrentUnitPriceIsNotNull() { + addCriterion("current_unit_price is not null"); + return (Criteria) this; + } + + public Criteria andCurrentUnitPriceEqualTo(BigDecimal value) { + addCriterion("current_unit_price =", value, "currentUnitPrice"); + return (Criteria) this; + } + + public Criteria andCurrentUnitPriceNotEqualTo(BigDecimal value) { + addCriterion("current_unit_price <>", value, "currentUnitPrice"); + return (Criteria) this; + } + + public Criteria andCurrentUnitPriceGreaterThan(BigDecimal value) { + addCriterion("current_unit_price >", value, "currentUnitPrice"); + return (Criteria) this; + } + + public Criteria andCurrentUnitPriceGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("current_unit_price >=", value, "currentUnitPrice"); + return (Criteria) this; + } + + public Criteria andCurrentUnitPriceLessThan(BigDecimal value) { + addCriterion("current_unit_price <", value, "currentUnitPrice"); + return (Criteria) this; + } + + public Criteria andCurrentUnitPriceLessThanOrEqualTo(BigDecimal value) { + addCriterion("current_unit_price <=", value, "currentUnitPrice"); + return (Criteria) this; + } + + public Criteria andCurrentUnitPriceIn(List values) { + addCriterion("current_unit_price in", values, "currentUnitPrice"); + return (Criteria) this; + } + + public Criteria andCurrentUnitPriceNotIn(List values) { + addCriterion("current_unit_price not in", values, "currentUnitPrice"); + return (Criteria) this; + } + + public Criteria andCurrentUnitPriceBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("current_unit_price between", value1, value2, "currentUnitPrice"); + return (Criteria) this; + } + + public Criteria andCurrentUnitPriceNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("current_unit_price not between", value1, value2, "currentUnitPrice"); + return (Criteria) this; + } + + public Criteria andTenantIdIsNull() { + addCriterion("tenant_id is null"); + return (Criteria) this; + } + + public Criteria andTenantIdIsNotNull() { + addCriterion("tenant_id is not null"); + return (Criteria) this; + } + + public Criteria andTenantIdEqualTo(Long value) { + addCriterion("tenant_id =", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotEqualTo(Long value) { + addCriterion("tenant_id <>", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdGreaterThan(Long value) { + addCriterion("tenant_id >", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdGreaterThanOrEqualTo(Long value) { + addCriterion("tenant_id >=", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdLessThan(Long value) { + addCriterion("tenant_id <", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdLessThanOrEqualTo(Long value) { + addCriterion("tenant_id <=", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdIn(List values) { + addCriterion("tenant_id in", values, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotIn(List values) { + addCriterion("tenant_id not in", values, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdBetween(Long value1, Long value2) { + addCriterion("tenant_id between", value1, value2, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotBetween(Long value1, Long value2) { + addCriterion("tenant_id not between", value1, value2, "tenantId"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIsNull() { + addCriterion("delete_flag is null"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIsNotNull() { + addCriterion("delete_flag is not null"); + return (Criteria) this; + } + + public Criteria andDeleteFlagEqualTo(String value) { + addCriterion("delete_flag =", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotEqualTo(String value) { + addCriterion("delete_flag <>", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagGreaterThan(String value) { + addCriterion("delete_flag >", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagGreaterThanOrEqualTo(String value) { + addCriterion("delete_flag >=", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLessThan(String value) { + addCriterion("delete_flag <", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLessThanOrEqualTo(String value) { + addCriterion("delete_flag <=", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLike(String value) { + addCriterion("delete_flag like", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotLike(String value) { + addCriterion("delete_flag not like", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIn(List values) { + addCriterion("delete_flag in", values, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotIn(List values) { + addCriterion("delete_flag not in", values, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagBetween(String value1, String value2) { + addCriterion("delete_flag between", value1, value2, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotBetween(String value1, String value2) { + addCriterion("delete_flag not between", value1, value2, "deleteFlag"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialExample.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialExample.java new file mode 100644 index 0000000..bf04c79 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialExample.java @@ -0,0 +1,1880 @@ +package com.reallin.smt.datasource.entities; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + +public class MaterialExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public MaterialExample() { + oredCriteria = new ArrayList<>(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList<>(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andCategoryIdIsNull() { + addCriterion("category_id is null"); + return (Criteria) this; + } + + public Criteria andCategoryIdIsNotNull() { + addCriterion("category_id is not null"); + return (Criteria) this; + } + + public Criteria andCategoryIdEqualTo(Long value) { + addCriterion("category_id =", value, "categoryId"); + return (Criteria) this; + } + + public Criteria andCategoryIdNotEqualTo(Long value) { + addCriterion("category_id <>", value, "categoryId"); + return (Criteria) this; + } + + public Criteria andCategoryIdGreaterThan(Long value) { + addCriterion("category_id >", value, "categoryId"); + return (Criteria) this; + } + + public Criteria andCategoryIdGreaterThanOrEqualTo(Long value) { + addCriterion("category_id >=", value, "categoryId"); + return (Criteria) this; + } + + public Criteria andCategoryIdLessThan(Long value) { + addCriterion("category_id <", value, "categoryId"); + return (Criteria) this; + } + + public Criteria andCategoryIdLessThanOrEqualTo(Long value) { + addCriterion("category_id <=", value, "categoryId"); + return (Criteria) this; + } + + public Criteria andCategoryIdIn(List values) { + addCriterion("category_id in", values, "categoryId"); + return (Criteria) this; + } + + public Criteria andCategoryIdNotIn(List values) { + addCriterion("category_id not in", values, "categoryId"); + return (Criteria) this; + } + + public Criteria andCategoryIdBetween(Long value1, Long value2) { + addCriterion("category_id between", value1, value2, "categoryId"); + return (Criteria) this; + } + + public Criteria andCategoryIdNotBetween(Long value1, Long value2) { + addCriterion("category_id not between", value1, value2, "categoryId"); + return (Criteria) this; + } + + public Criteria andNameIsNull() { + addCriterion("name is null"); + return (Criteria) this; + } + + public Criteria andNameIsNotNull() { + addCriterion("name is not null"); + return (Criteria) this; + } + + public Criteria andNameEqualTo(String value) { + addCriterion("name =", value, "name"); + return (Criteria) this; + } + + public Criteria andNameNotEqualTo(String value) { + addCriterion("name <>", value, "name"); + return (Criteria) this; + } + + public Criteria andNameGreaterThan(String value) { + addCriterion("name >", value, "name"); + return (Criteria) this; + } + + public Criteria andNameGreaterThanOrEqualTo(String value) { + addCriterion("name >=", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLessThan(String value) { + addCriterion("name <", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLessThanOrEqualTo(String value) { + addCriterion("name <=", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLike(String value) { + addCriterion("name like", value, "name"); + return (Criteria) this; + } + + public Criteria andNameNotLike(String value) { + addCriterion("name not like", value, "name"); + return (Criteria) this; + } + + public Criteria andNameIn(List values) { + addCriterion("name in", values, "name"); + return (Criteria) this; + } + + public Criteria andNameNotIn(List values) { + addCriterion("name not in", values, "name"); + return (Criteria) this; + } + + public Criteria andNameBetween(String value1, String value2) { + addCriterion("name between", value1, value2, "name"); + return (Criteria) this; + } + + public Criteria andNameNotBetween(String value1, String value2) { + addCriterion("name not between", value1, value2, "name"); + return (Criteria) this; + } + + public Criteria andMfrsIsNull() { + addCriterion("mfrs is null"); + return (Criteria) this; + } + + public Criteria andMfrsIsNotNull() { + addCriterion("mfrs is not null"); + return (Criteria) this; + } + + public Criteria andMfrsEqualTo(String value) { + addCriterion("mfrs =", value, "mfrs"); + return (Criteria) this; + } + + public Criteria andMfrsNotEqualTo(String value) { + addCriterion("mfrs <>", value, "mfrs"); + return (Criteria) this; + } + + public Criteria andMfrsGreaterThan(String value) { + addCriterion("mfrs >", value, "mfrs"); + return (Criteria) this; + } + + public Criteria andMfrsGreaterThanOrEqualTo(String value) { + addCriterion("mfrs >=", value, "mfrs"); + return (Criteria) this; + } + + public Criteria andMfrsLessThan(String value) { + addCriterion("mfrs <", value, "mfrs"); + return (Criteria) this; + } + + public Criteria andMfrsLessThanOrEqualTo(String value) { + addCriterion("mfrs <=", value, "mfrs"); + return (Criteria) this; + } + + public Criteria andMfrsLike(String value) { + addCriterion("mfrs like", value, "mfrs"); + return (Criteria) this; + } + + public Criteria andMfrsNotLike(String value) { + addCriterion("mfrs not like", value, "mfrs"); + return (Criteria) this; + } + + public Criteria andMfrsIn(List values) { + addCriterion("mfrs in", values, "mfrs"); + return (Criteria) this; + } + + public Criteria andMfrsNotIn(List values) { + addCriterion("mfrs not in", values, "mfrs"); + return (Criteria) this; + } + + public Criteria andMfrsBetween(String value1, String value2) { + addCriterion("mfrs between", value1, value2, "mfrs"); + return (Criteria) this; + } + + public Criteria andMfrsNotBetween(String value1, String value2) { + addCriterion("mfrs not between", value1, value2, "mfrs"); + return (Criteria) this; + } + + public Criteria andModelIsNull() { + addCriterion("model is null"); + return (Criteria) this; + } + + public Criteria andModelIsNotNull() { + addCriterion("model is not null"); + return (Criteria) this; + } + + public Criteria andModelEqualTo(String value) { + addCriterion("model =", value, "model"); + return (Criteria) this; + } + + public Criteria andModelNotEqualTo(String value) { + addCriterion("model <>", value, "model"); + return (Criteria) this; + } + + public Criteria andModelGreaterThan(String value) { + addCriterion("model >", value, "model"); + return (Criteria) this; + } + + public Criteria andModelGreaterThanOrEqualTo(String value) { + addCriterion("model >=", value, "model"); + return (Criteria) this; + } + + public Criteria andModelLessThan(String value) { + addCriterion("model <", value, "model"); + return (Criteria) this; + } + + public Criteria andModelLessThanOrEqualTo(String value) { + addCriterion("model <=", value, "model"); + return (Criteria) this; + } + + public Criteria andModelLike(String value) { + addCriterion("model like", value, "model"); + return (Criteria) this; + } + + public Criteria andModelNotLike(String value) { + addCriterion("model not like", value, "model"); + return (Criteria) this; + } + + public Criteria andModelIn(List values) { + addCriterion("model in", values, "model"); + return (Criteria) this; + } + + public Criteria andModelNotIn(List values) { + addCriterion("model not in", values, "model"); + return (Criteria) this; + } + + public Criteria andModelBetween(String value1, String value2) { + addCriterion("model between", value1, value2, "model"); + return (Criteria) this; + } + + public Criteria andModelNotBetween(String value1, String value2) { + addCriterion("model not between", value1, value2, "model"); + return (Criteria) this; + } + + public Criteria andStandardIsNull() { + addCriterion("standard is null"); + return (Criteria) this; + } + + public Criteria andStandardIsNotNull() { + addCriterion("standard is not null"); + return (Criteria) this; + } + + public Criteria andStandardEqualTo(String value) { + addCriterion("standard =", value, "standard"); + return (Criteria) this; + } + + public Criteria andStandardNotEqualTo(String value) { + addCriterion("standard <>", value, "standard"); + return (Criteria) this; + } + + public Criteria andStandardGreaterThan(String value) { + addCriterion("standard >", value, "standard"); + return (Criteria) this; + } + + public Criteria andStandardGreaterThanOrEqualTo(String value) { + addCriterion("standard >=", value, "standard"); + return (Criteria) this; + } + + public Criteria andStandardLessThan(String value) { + addCriterion("standard <", value, "standard"); + return (Criteria) this; + } + + public Criteria andStandardLessThanOrEqualTo(String value) { + addCriterion("standard <=", value, "standard"); + return (Criteria) this; + } + + public Criteria andStandardLike(String value) { + addCriterion("standard like", value, "standard"); + return (Criteria) this; + } + + public Criteria andStandardNotLike(String value) { + addCriterion("standard not like", value, "standard"); + return (Criteria) this; + } + + public Criteria andStandardIn(List values) { + addCriterion("standard in", values, "standard"); + return (Criteria) this; + } + + public Criteria andStandardNotIn(List values) { + addCriterion("standard not in", values, "standard"); + return (Criteria) this; + } + + public Criteria andStandardBetween(String value1, String value2) { + addCriterion("standard between", value1, value2, "standard"); + return (Criteria) this; + } + + public Criteria andStandardNotBetween(String value1, String value2) { + addCriterion("standard not between", value1, value2, "standard"); + return (Criteria) this; + } + + public Criteria andBrandIsNull() { + addCriterion("brand is null"); + return (Criteria) this; + } + + public Criteria andBrandIsNotNull() { + addCriterion("brand is not null"); + return (Criteria) this; + } + + public Criteria andBrandEqualTo(String value) { + addCriterion("brand =", value, "brand"); + return (Criteria) this; + } + + public Criteria andBrandNotEqualTo(String value) { + addCriterion("brand <>", value, "brand"); + return (Criteria) this; + } + + public Criteria andBrandGreaterThan(String value) { + addCriterion("brand >", value, "brand"); + return (Criteria) this; + } + + public Criteria andBrandGreaterThanOrEqualTo(String value) { + addCriterion("brand >=", value, "brand"); + return (Criteria) this; + } + + public Criteria andBrandLessThan(String value) { + addCriterion("brand <", value, "brand"); + return (Criteria) this; + } + + public Criteria andBrandLessThanOrEqualTo(String value) { + addCriterion("brand <=", value, "brand"); + return (Criteria) this; + } + + public Criteria andBrandLike(String value) { + addCriterion("brand like", value, "brand"); + return (Criteria) this; + } + + public Criteria andBrandNotLike(String value) { + addCriterion("brand not like", value, "brand"); + return (Criteria) this; + } + + public Criteria andBrandIn(List values) { + addCriterion("brand in", values, "brand"); + return (Criteria) this; + } + + public Criteria andBrandNotIn(List values) { + addCriterion("brand not in", values, "brand"); + return (Criteria) this; + } + + public Criteria andBrandBetween(String value1, String value2) { + addCriterion("brand between", value1, value2, "brand"); + return (Criteria) this; + } + + public Criteria andBrandNotBetween(String value1, String value2) { + addCriterion("brand not between", value1, value2, "brand"); + return (Criteria) this; + } + + public Criteria andMnemonicIsNull() { + addCriterion("mnemonic is null"); + return (Criteria) this; + } + + public Criteria andMnemonicIsNotNull() { + addCriterion("mnemonic is not null"); + return (Criteria) this; + } + + public Criteria andMnemonicEqualTo(String value) { + addCriterion("mnemonic =", value, "mnemonic"); + return (Criteria) this; + } + + public Criteria andMnemonicNotEqualTo(String value) { + addCriterion("mnemonic <>", value, "mnemonic"); + return (Criteria) this; + } + + public Criteria andMnemonicGreaterThan(String value) { + addCriterion("mnemonic >", value, "mnemonic"); + return (Criteria) this; + } + + public Criteria andMnemonicGreaterThanOrEqualTo(String value) { + addCriterion("mnemonic >=", value, "mnemonic"); + return (Criteria) this; + } + + public Criteria andMnemonicLessThan(String value) { + addCriterion("mnemonic <", value, "mnemonic"); + return (Criteria) this; + } + + public Criteria andMnemonicLessThanOrEqualTo(String value) { + addCriterion("mnemonic <=", value, "mnemonic"); + return (Criteria) this; + } + + public Criteria andMnemonicLike(String value) { + addCriterion("mnemonic like", value, "mnemonic"); + return (Criteria) this; + } + + public Criteria andMnemonicNotLike(String value) { + addCriterion("mnemonic not like", value, "mnemonic"); + return (Criteria) this; + } + + public Criteria andMnemonicIn(List values) { + addCriterion("mnemonic in", values, "mnemonic"); + return (Criteria) this; + } + + public Criteria andMnemonicNotIn(List values) { + addCriterion("mnemonic not in", values, "mnemonic"); + return (Criteria) this; + } + + public Criteria andMnemonicBetween(String value1, String value2) { + addCriterion("mnemonic between", value1, value2, "mnemonic"); + return (Criteria) this; + } + + public Criteria andMnemonicNotBetween(String value1, String value2) { + addCriterion("mnemonic not between", value1, value2, "mnemonic"); + return (Criteria) this; + } + + public Criteria andColorIsNull() { + addCriterion("color is null"); + return (Criteria) this; + } + + public Criteria andColorIsNotNull() { + addCriterion("color is not null"); + return (Criteria) this; + } + + public Criteria andColorEqualTo(String value) { + addCriterion("color =", value, "color"); + return (Criteria) this; + } + + public Criteria andColorNotEqualTo(String value) { + addCriterion("color <>", value, "color"); + return (Criteria) this; + } + + public Criteria andColorGreaterThan(String value) { + addCriterion("color >", value, "color"); + return (Criteria) this; + } + + public Criteria andColorGreaterThanOrEqualTo(String value) { + addCriterion("color >=", value, "color"); + return (Criteria) this; + } + + public Criteria andColorLessThan(String value) { + addCriterion("color <", value, "color"); + return (Criteria) this; + } + + public Criteria andColorLessThanOrEqualTo(String value) { + addCriterion("color <=", value, "color"); + return (Criteria) this; + } + + public Criteria andColorLike(String value) { + addCriterion("color like", value, "color"); + return (Criteria) this; + } + + public Criteria andColorNotLike(String value) { + addCriterion("color not like", value, "color"); + return (Criteria) this; + } + + public Criteria andColorIn(List values) { + addCriterion("color in", values, "color"); + return (Criteria) this; + } + + public Criteria andColorNotIn(List values) { + addCriterion("color not in", values, "color"); + return (Criteria) this; + } + + public Criteria andColorBetween(String value1, String value2) { + addCriterion("color between", value1, value2, "color"); + return (Criteria) this; + } + + public Criteria andColorNotBetween(String value1, String value2) { + addCriterion("color not between", value1, value2, "color"); + return (Criteria) this; + } + + public Criteria andUnitIsNull() { + addCriterion("unit is null"); + return (Criteria) this; + } + + public Criteria andUnitIsNotNull() { + addCriterion("unit is not null"); + return (Criteria) this; + } + + public Criteria andUnitEqualTo(String value) { + addCriterion("unit =", value, "unit"); + return (Criteria) this; + } + + public Criteria andUnitNotEqualTo(String value) { + addCriterion("unit <>", value, "unit"); + return (Criteria) this; + } + + public Criteria andUnitGreaterThan(String value) { + addCriterion("unit >", value, "unit"); + return (Criteria) this; + } + + public Criteria andUnitGreaterThanOrEqualTo(String value) { + addCriterion("unit >=", value, "unit"); + return (Criteria) this; + } + + public Criteria andUnitLessThan(String value) { + addCriterion("unit <", value, "unit"); + return (Criteria) this; + } + + public Criteria andUnitLessThanOrEqualTo(String value) { + addCriterion("unit <=", value, "unit"); + return (Criteria) this; + } + + public Criteria andUnitLike(String value) { + addCriterion("unit like", value, "unit"); + return (Criteria) this; + } + + public Criteria andUnitNotLike(String value) { + addCriterion("unit not like", value, "unit"); + return (Criteria) this; + } + + public Criteria andUnitIn(List values) { + addCriterion("unit in", values, "unit"); + return (Criteria) this; + } + + public Criteria andUnitNotIn(List values) { + addCriterion("unit not in", values, "unit"); + return (Criteria) this; + } + + public Criteria andUnitBetween(String value1, String value2) { + addCriterion("unit between", value1, value2, "unit"); + return (Criteria) this; + } + + public Criteria andUnitNotBetween(String value1, String value2) { + addCriterion("unit not between", value1, value2, "unit"); + return (Criteria) this; + } + + public Criteria andRemarkIsNull() { + addCriterion("remark is null"); + return (Criteria) this; + } + + public Criteria andRemarkIsNotNull() { + addCriterion("remark is not null"); + return (Criteria) this; + } + + public Criteria andRemarkEqualTo(String value) { + addCriterion("remark =", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotEqualTo(String value) { + addCriterion("remark <>", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThan(String value) { + addCriterion("remark >", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThanOrEqualTo(String value) { + addCriterion("remark >=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThan(String value) { + addCriterion("remark <", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThanOrEqualTo(String value) { + addCriterion("remark <=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLike(String value) { + addCriterion("remark like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotLike(String value) { + addCriterion("remark not like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkIn(List values) { + addCriterion("remark in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotIn(List values) { + addCriterion("remark not in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkBetween(String value1, String value2) { + addCriterion("remark between", value1, value2, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotBetween(String value1, String value2) { + addCriterion("remark not between", value1, value2, "remark"); + return (Criteria) this; + } + + public Criteria andImgNameIsNull() { + addCriterion("img_name is null"); + return (Criteria) this; + } + + public Criteria andImgNameIsNotNull() { + addCriterion("img_name is not null"); + return (Criteria) this; + } + + public Criteria andImgNameEqualTo(String value) { + addCriterion("img_name =", value, "imgName"); + return (Criteria) this; + } + + public Criteria andImgNameNotEqualTo(String value) { + addCriterion("img_name <>", value, "imgName"); + return (Criteria) this; + } + + public Criteria andImgNameGreaterThan(String value) { + addCriterion("img_name >", value, "imgName"); + return (Criteria) this; + } + + public Criteria andImgNameGreaterThanOrEqualTo(String value) { + addCriterion("img_name >=", value, "imgName"); + return (Criteria) this; + } + + public Criteria andImgNameLessThan(String value) { + addCriterion("img_name <", value, "imgName"); + return (Criteria) this; + } + + public Criteria andImgNameLessThanOrEqualTo(String value) { + addCriterion("img_name <=", value, "imgName"); + return (Criteria) this; + } + + public Criteria andImgNameLike(String value) { + addCriterion("img_name like", value, "imgName"); + return (Criteria) this; + } + + public Criteria andImgNameNotLike(String value) { + addCriterion("img_name not like", value, "imgName"); + return (Criteria) this; + } + + public Criteria andImgNameIn(List values) { + addCriterion("img_name in", values, "imgName"); + return (Criteria) this; + } + + public Criteria andImgNameNotIn(List values) { + addCriterion("img_name not in", values, "imgName"); + return (Criteria) this; + } + + public Criteria andImgNameBetween(String value1, String value2) { + addCriterion("img_name between", value1, value2, "imgName"); + return (Criteria) this; + } + + public Criteria andImgNameNotBetween(String value1, String value2) { + addCriterion("img_name not between", value1, value2, "imgName"); + return (Criteria) this; + } + + public Criteria andUnitIdIsNull() { + addCriterion("unit_id is null"); + return (Criteria) this; + } + + public Criteria andUnitIdIsNotNull() { + addCriterion("unit_id is not null"); + return (Criteria) this; + } + + public Criteria andUnitIdEqualTo(Long value) { + addCriterion("unit_id =", value, "unitId"); + return (Criteria) this; + } + + public Criteria andUnitIdNotEqualTo(Long value) { + addCriterion("unit_id <>", value, "unitId"); + return (Criteria) this; + } + + public Criteria andUnitIdGreaterThan(Long value) { + addCriterion("unit_id >", value, "unitId"); + return (Criteria) this; + } + + public Criteria andUnitIdGreaterThanOrEqualTo(Long value) { + addCriterion("unit_id >=", value, "unitId"); + return (Criteria) this; + } + + public Criteria andUnitIdLessThan(Long value) { + addCriterion("unit_id <", value, "unitId"); + return (Criteria) this; + } + + public Criteria andUnitIdLessThanOrEqualTo(Long value) { + addCriterion("unit_id <=", value, "unitId"); + return (Criteria) this; + } + + public Criteria andUnitIdIn(List values) { + addCriterion("unit_id in", values, "unitId"); + return (Criteria) this; + } + + public Criteria andUnitIdNotIn(List values) { + addCriterion("unit_id not in", values, "unitId"); + return (Criteria) this; + } + + public Criteria andUnitIdBetween(Long value1, Long value2) { + addCriterion("unit_id between", value1, value2, "unitId"); + return (Criteria) this; + } + + public Criteria andUnitIdNotBetween(Long value1, Long value2) { + addCriterion("unit_id not between", value1, value2, "unitId"); + return (Criteria) this; + } + + public Criteria andExpiryNumIsNull() { + addCriterion("expiry_num is null"); + return (Criteria) this; + } + + public Criteria andExpiryNumIsNotNull() { + addCriterion("expiry_num is not null"); + return (Criteria) this; + } + + public Criteria andExpiryNumEqualTo(Integer value) { + addCriterion("expiry_num =", value, "expiryNum"); + return (Criteria) this; + } + + public Criteria andExpiryNumNotEqualTo(Integer value) { + addCriterion("expiry_num <>", value, "expiryNum"); + return (Criteria) this; + } + + public Criteria andExpiryNumGreaterThan(Integer value) { + addCriterion("expiry_num >", value, "expiryNum"); + return (Criteria) this; + } + + public Criteria andExpiryNumGreaterThanOrEqualTo(Integer value) { + addCriterion("expiry_num >=", value, "expiryNum"); + return (Criteria) this; + } + + public Criteria andExpiryNumLessThan(Integer value) { + addCriterion("expiry_num <", value, "expiryNum"); + return (Criteria) this; + } + + public Criteria andExpiryNumLessThanOrEqualTo(Integer value) { + addCriterion("expiry_num <=", value, "expiryNum"); + return (Criteria) this; + } + + public Criteria andExpiryNumIn(List values) { + addCriterion("expiry_num in", values, "expiryNum"); + return (Criteria) this; + } + + public Criteria andExpiryNumNotIn(List values) { + addCriterion("expiry_num not in", values, "expiryNum"); + return (Criteria) this; + } + + public Criteria andExpiryNumBetween(Integer value1, Integer value2) { + addCriterion("expiry_num between", value1, value2, "expiryNum"); + return (Criteria) this; + } + + public Criteria andExpiryNumNotBetween(Integer value1, Integer value2) { + addCriterion("expiry_num not between", value1, value2, "expiryNum"); + return (Criteria) this; + } + + public Criteria andWeightIsNull() { + addCriterion("weight is null"); + return (Criteria) this; + } + + public Criteria andWeightIsNotNull() { + addCriterion("weight is not null"); + return (Criteria) this; + } + + public Criteria andWeightEqualTo(BigDecimal value) { + addCriterion("weight =", value, "weight"); + return (Criteria) this; + } + + public Criteria andWeightNotEqualTo(BigDecimal value) { + addCriterion("weight <>", value, "weight"); + return (Criteria) this; + } + + public Criteria andWeightGreaterThan(BigDecimal value) { + addCriterion("weight >", value, "weight"); + return (Criteria) this; + } + + public Criteria andWeightGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("weight >=", value, "weight"); + return (Criteria) this; + } + + public Criteria andWeightLessThan(BigDecimal value) { + addCriterion("weight <", value, "weight"); + return (Criteria) this; + } + + public Criteria andWeightLessThanOrEqualTo(BigDecimal value) { + addCriterion("weight <=", value, "weight"); + return (Criteria) this; + } + + public Criteria andWeightIn(List values) { + addCriterion("weight in", values, "weight"); + return (Criteria) this; + } + + public Criteria andWeightNotIn(List values) { + addCriterion("weight not in", values, "weight"); + return (Criteria) this; + } + + public Criteria andWeightBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("weight between", value1, value2, "weight"); + return (Criteria) this; + } + + public Criteria andWeightNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("weight not between", value1, value2, "weight"); + return (Criteria) this; + } + + public Criteria andEnabledIsNull() { + addCriterion("enabled is null"); + return (Criteria) this; + } + + public Criteria andEnabledIsNotNull() { + addCriterion("enabled is not null"); + return (Criteria) this; + } + + public Criteria andEnabledEqualTo(Boolean value) { + addCriterion("enabled =", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledNotEqualTo(Boolean value) { + addCriterion("enabled <>", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledGreaterThan(Boolean value) { + addCriterion("enabled >", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledGreaterThanOrEqualTo(Boolean value) { + addCriterion("enabled >=", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledLessThan(Boolean value) { + addCriterion("enabled <", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledLessThanOrEqualTo(Boolean value) { + addCriterion("enabled <=", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledIn(List values) { + addCriterion("enabled in", values, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledNotIn(List values) { + addCriterion("enabled not in", values, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledBetween(Boolean value1, Boolean value2) { + addCriterion("enabled between", value1, value2, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledNotBetween(Boolean value1, Boolean value2) { + addCriterion("enabled not between", value1, value2, "enabled"); + return (Criteria) this; + } + + public Criteria andOtherField1IsNull() { + addCriterion("other_field1 is null"); + return (Criteria) this; + } + + public Criteria andOtherField1IsNotNull() { + addCriterion("other_field1 is not null"); + return (Criteria) this; + } + + public Criteria andOtherField1EqualTo(String value) { + addCriterion("other_field1 =", value, "otherField1"); + return (Criteria) this; + } + + public Criteria andOtherField1NotEqualTo(String value) { + addCriterion("other_field1 <>", value, "otherField1"); + return (Criteria) this; + } + + public Criteria andOtherField1GreaterThan(String value) { + addCriterion("other_field1 >", value, "otherField1"); + return (Criteria) this; + } + + public Criteria andOtherField1GreaterThanOrEqualTo(String value) { + addCriterion("other_field1 >=", value, "otherField1"); + return (Criteria) this; + } + + public Criteria andOtherField1LessThan(String value) { + addCriterion("other_field1 <", value, "otherField1"); + return (Criteria) this; + } + + public Criteria andOtherField1LessThanOrEqualTo(String value) { + addCriterion("other_field1 <=", value, "otherField1"); + return (Criteria) this; + } + + public Criteria andOtherField1Like(String value) { + addCriterion("other_field1 like", value, "otherField1"); + return (Criteria) this; + } + + public Criteria andOtherField1NotLike(String value) { + addCriterion("other_field1 not like", value, "otherField1"); + return (Criteria) this; + } + + public Criteria andOtherField1In(List values) { + addCriterion("other_field1 in", values, "otherField1"); + return (Criteria) this; + } + + public Criteria andOtherField1NotIn(List values) { + addCriterion("other_field1 not in", values, "otherField1"); + return (Criteria) this; + } + + public Criteria andOtherField1Between(String value1, String value2) { + addCriterion("other_field1 between", value1, value2, "otherField1"); + return (Criteria) this; + } + + public Criteria andOtherField1NotBetween(String value1, String value2) { + addCriterion("other_field1 not between", value1, value2, "otherField1"); + return (Criteria) this; + } + + public Criteria andOtherField2IsNull() { + addCriterion("other_field2 is null"); + return (Criteria) this; + } + + public Criteria andOtherField2IsNotNull() { + addCriterion("other_field2 is not null"); + return (Criteria) this; + } + + public Criteria andOtherField2EqualTo(String value) { + addCriterion("other_field2 =", value, "otherField2"); + return (Criteria) this; + } + + public Criteria andOtherField2NotEqualTo(String value) { + addCriterion("other_field2 <>", value, "otherField2"); + return (Criteria) this; + } + + public Criteria andOtherField2GreaterThan(String value) { + addCriterion("other_field2 >", value, "otherField2"); + return (Criteria) this; + } + + public Criteria andOtherField2GreaterThanOrEqualTo(String value) { + addCriterion("other_field2 >=", value, "otherField2"); + return (Criteria) this; + } + + public Criteria andOtherField2LessThan(String value) { + addCriterion("other_field2 <", value, "otherField2"); + return (Criteria) this; + } + + public Criteria andOtherField2LessThanOrEqualTo(String value) { + addCriterion("other_field2 <=", value, "otherField2"); + return (Criteria) this; + } + + public Criteria andOtherField2Like(String value) { + addCriterion("other_field2 like", value, "otherField2"); + return (Criteria) this; + } + + public Criteria andOtherField2NotLike(String value) { + addCriterion("other_field2 not like", value, "otherField2"); + return (Criteria) this; + } + + public Criteria andOtherField2In(List values) { + addCriterion("other_field2 in", values, "otherField2"); + return (Criteria) this; + } + + public Criteria andOtherField2NotIn(List values) { + addCriterion("other_field2 not in", values, "otherField2"); + return (Criteria) this; + } + + public Criteria andOtherField2Between(String value1, String value2) { + addCriterion("other_field2 between", value1, value2, "otherField2"); + return (Criteria) this; + } + + public Criteria andOtherField2NotBetween(String value1, String value2) { + addCriterion("other_field2 not between", value1, value2, "otherField2"); + return (Criteria) this; + } + + public Criteria andOtherField3IsNull() { + addCriterion("other_field3 is null"); + return (Criteria) this; + } + + public Criteria andOtherField3IsNotNull() { + addCriterion("other_field3 is not null"); + return (Criteria) this; + } + + public Criteria andOtherField3EqualTo(String value) { + addCriterion("other_field3 =", value, "otherField3"); + return (Criteria) this; + } + + public Criteria andOtherField3NotEqualTo(String value) { + addCriterion("other_field3 <>", value, "otherField3"); + return (Criteria) this; + } + + public Criteria andOtherField3GreaterThan(String value) { + addCriterion("other_field3 >", value, "otherField3"); + return (Criteria) this; + } + + public Criteria andOtherField3GreaterThanOrEqualTo(String value) { + addCriterion("other_field3 >=", value, "otherField3"); + return (Criteria) this; + } + + public Criteria andOtherField3LessThan(String value) { + addCriterion("other_field3 <", value, "otherField3"); + return (Criteria) this; + } + + public Criteria andOtherField3LessThanOrEqualTo(String value) { + addCriterion("other_field3 <=", value, "otherField3"); + return (Criteria) this; + } + + public Criteria andOtherField3Like(String value) { + addCriterion("other_field3 like", value, "otherField3"); + return (Criteria) this; + } + + public Criteria andOtherField3NotLike(String value) { + addCriterion("other_field3 not like", value, "otherField3"); + return (Criteria) this; + } + + public Criteria andOtherField3In(List values) { + addCriterion("other_field3 in", values, "otherField3"); + return (Criteria) this; + } + + public Criteria andOtherField3NotIn(List values) { + addCriterion("other_field3 not in", values, "otherField3"); + return (Criteria) this; + } + + public Criteria andOtherField3Between(String value1, String value2) { + addCriterion("other_field3 between", value1, value2, "otherField3"); + return (Criteria) this; + } + + public Criteria andOtherField3NotBetween(String value1, String value2) { + addCriterion("other_field3 not between", value1, value2, "otherField3"); + return (Criteria) this; + } + + public Criteria andEnableSerialNumberIsNull() { + addCriterion("enable_serial_number is null"); + return (Criteria) this; + } + + public Criteria andEnableSerialNumberIsNotNull() { + addCriterion("enable_serial_number is not null"); + return (Criteria) this; + } + + public Criteria andEnableSerialNumberEqualTo(String value) { + addCriterion("enable_serial_number =", value, "enableSerialNumber"); + return (Criteria) this; + } + + public Criteria andEnableSerialNumberNotEqualTo(String value) { + addCriterion("enable_serial_number <>", value, "enableSerialNumber"); + return (Criteria) this; + } + + public Criteria andEnableSerialNumberGreaterThan(String value) { + addCriterion("enable_serial_number >", value, "enableSerialNumber"); + return (Criteria) this; + } + + public Criteria andEnableSerialNumberGreaterThanOrEqualTo(String value) { + addCriterion("enable_serial_number >=", value, "enableSerialNumber"); + return (Criteria) this; + } + + public Criteria andEnableSerialNumberLessThan(String value) { + addCriterion("enable_serial_number <", value, "enableSerialNumber"); + return (Criteria) this; + } + + public Criteria andEnableSerialNumberLessThanOrEqualTo(String value) { + addCriterion("enable_serial_number <=", value, "enableSerialNumber"); + return (Criteria) this; + } + + public Criteria andEnableSerialNumberLike(String value) { + addCriterion("enable_serial_number like", value, "enableSerialNumber"); + return (Criteria) this; + } + + public Criteria andEnableSerialNumberNotLike(String value) { + addCriterion("enable_serial_number not like", value, "enableSerialNumber"); + return (Criteria) this; + } + + public Criteria andEnableSerialNumberIn(List values) { + addCriterion("enable_serial_number in", values, "enableSerialNumber"); + return (Criteria) this; + } + + public Criteria andEnableSerialNumberNotIn(List values) { + addCriterion("enable_serial_number not in", values, "enableSerialNumber"); + return (Criteria) this; + } + + public Criteria andEnableSerialNumberBetween(String value1, String value2) { + addCriterion("enable_serial_number between", value1, value2, "enableSerialNumber"); + return (Criteria) this; + } + + public Criteria andEnableSerialNumberNotBetween(String value1, String value2) { + addCriterion("enable_serial_number not between", value1, value2, "enableSerialNumber"); + return (Criteria) this; + } + + public Criteria andEnableBatchNumberIsNull() { + addCriterion("enable_batch_number is null"); + return (Criteria) this; + } + + public Criteria andEnableBatchNumberIsNotNull() { + addCriterion("enable_batch_number is not null"); + return (Criteria) this; + } + + public Criteria andEnableBatchNumberEqualTo(String value) { + addCriterion("enable_batch_number =", value, "enableBatchNumber"); + return (Criteria) this; + } + + public Criteria andEnableBatchNumberNotEqualTo(String value) { + addCriterion("enable_batch_number <>", value, "enableBatchNumber"); + return (Criteria) this; + } + + public Criteria andEnableBatchNumberGreaterThan(String value) { + addCriterion("enable_batch_number >", value, "enableBatchNumber"); + return (Criteria) this; + } + + public Criteria andEnableBatchNumberGreaterThanOrEqualTo(String value) { + addCriterion("enable_batch_number >=", value, "enableBatchNumber"); + return (Criteria) this; + } + + public Criteria andEnableBatchNumberLessThan(String value) { + addCriterion("enable_batch_number <", value, "enableBatchNumber"); + return (Criteria) this; + } + + public Criteria andEnableBatchNumberLessThanOrEqualTo(String value) { + addCriterion("enable_batch_number <=", value, "enableBatchNumber"); + return (Criteria) this; + } + + public Criteria andEnableBatchNumberLike(String value) { + addCriterion("enable_batch_number like", value, "enableBatchNumber"); + return (Criteria) this; + } + + public Criteria andEnableBatchNumberNotLike(String value) { + addCriterion("enable_batch_number not like", value, "enableBatchNumber"); + return (Criteria) this; + } + + public Criteria andEnableBatchNumberIn(List values) { + addCriterion("enable_batch_number in", values, "enableBatchNumber"); + return (Criteria) this; + } + + public Criteria andEnableBatchNumberNotIn(List values) { + addCriterion("enable_batch_number not in", values, "enableBatchNumber"); + return (Criteria) this; + } + + public Criteria andEnableBatchNumberBetween(String value1, String value2) { + addCriterion("enable_batch_number between", value1, value2, "enableBatchNumber"); + return (Criteria) this; + } + + public Criteria andEnableBatchNumberNotBetween(String value1, String value2) { + addCriterion("enable_batch_number not between", value1, value2, "enableBatchNumber"); + return (Criteria) this; + } + + public Criteria andPositionIsNull() { + addCriterion("position is null"); + return (Criteria) this; + } + + public Criteria andPositionIsNotNull() { + addCriterion("position is not null"); + return (Criteria) this; + } + + public Criteria andPositionEqualTo(String value) { + addCriterion("position =", value, "position"); + return (Criteria) this; + } + + public Criteria andPositionNotEqualTo(String value) { + addCriterion("position <>", value, "position"); + return (Criteria) this; + } + + public Criteria andPositionGreaterThan(String value) { + addCriterion("position >", value, "position"); + return (Criteria) this; + } + + public Criteria andPositionGreaterThanOrEqualTo(String value) { + addCriterion("position >=", value, "position"); + return (Criteria) this; + } + + public Criteria andPositionLessThan(String value) { + addCriterion("position <", value, "position"); + return (Criteria) this; + } + + public Criteria andPositionLessThanOrEqualTo(String value) { + addCriterion("position <=", value, "position"); + return (Criteria) this; + } + + public Criteria andPositionLike(String value) { + addCriterion("position like", value, "position"); + return (Criteria) this; + } + + public Criteria andPositionNotLike(String value) { + addCriterion("position not like", value, "position"); + return (Criteria) this; + } + + public Criteria andPositionIn(List values) { + addCriterion("position in", values, "position"); + return (Criteria) this; + } + + public Criteria andPositionNotIn(List values) { + addCriterion("position not in", values, "position"); + return (Criteria) this; + } + + public Criteria andPositionBetween(String value1, String value2) { + addCriterion("position between", value1, value2, "position"); + return (Criteria) this; + } + + public Criteria andPositionNotBetween(String value1, String value2) { + addCriterion("position not between", value1, value2, "position"); + return (Criteria) this; + } + + public Criteria andAttributeIsNull() { + addCriterion("attribute is null"); + return (Criteria) this; + } + + public Criteria andAttributeIsNotNull() { + addCriterion("attribute is not null"); + return (Criteria) this; + } + + public Criteria andAttributeEqualTo(String value) { + addCriterion("attribute =", value, "attribute"); + return (Criteria) this; + } + + public Criteria andAttributeNotEqualTo(String value) { + addCriterion("attribute <>", value, "attribute"); + return (Criteria) this; + } + + public Criteria andAttributeGreaterThan(String value) { + addCriterion("attribute >", value, "attribute"); + return (Criteria) this; + } + + public Criteria andAttributeGreaterThanOrEqualTo(String value) { + addCriterion("attribute >=", value, "attribute"); + return (Criteria) this; + } + + public Criteria andAttributeLessThan(String value) { + addCriterion("attribute <", value, "attribute"); + return (Criteria) this; + } + + public Criteria andAttributeLessThanOrEqualTo(String value) { + addCriterion("attribute <=", value, "attribute"); + return (Criteria) this; + } + + public Criteria andAttributeLike(String value) { + addCriterion("attribute like", value, "attribute"); + return (Criteria) this; + } + + public Criteria andAttributeNotLike(String value) { + addCriterion("attribute not like", value, "attribute"); + return (Criteria) this; + } + + public Criteria andAttributeIn(List values) { + addCriterion("attribute in", values, "attribute"); + return (Criteria) this; + } + + public Criteria andAttributeNotIn(List values) { + addCriterion("attribute not in", values, "attribute"); + return (Criteria) this; + } + + public Criteria andAttributeBetween(String value1, String value2) { + addCriterion("attribute between", value1, value2, "attribute"); + return (Criteria) this; + } + + public Criteria andAttributeNotBetween(String value1, String value2) { + addCriterion("attribute not between", value1, value2, "attribute"); + return (Criteria) this; + } + + public Criteria andTenantIdIsNull() { + addCriterion("tenant_id is null"); + return (Criteria) this; + } + + public Criteria andTenantIdIsNotNull() { + addCriterion("tenant_id is not null"); + return (Criteria) this; + } + + public Criteria andTenantIdEqualTo(Long value) { + addCriterion("tenant_id =", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotEqualTo(Long value) { + addCriterion("tenant_id <>", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdGreaterThan(Long value) { + addCriterion("tenant_id >", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdGreaterThanOrEqualTo(Long value) { + addCriterion("tenant_id >=", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdLessThan(Long value) { + addCriterion("tenant_id <", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdLessThanOrEqualTo(Long value) { + addCriterion("tenant_id <=", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdIn(List values) { + addCriterion("tenant_id in", values, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotIn(List values) { + addCriterion("tenant_id not in", values, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdBetween(Long value1, Long value2) { + addCriterion("tenant_id between", value1, value2, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotBetween(Long value1, Long value2) { + addCriterion("tenant_id not between", value1, value2, "tenantId"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIsNull() { + addCriterion("delete_flag is null"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIsNotNull() { + addCriterion("delete_flag is not null"); + return (Criteria) this; + } + + public Criteria andDeleteFlagEqualTo(String value) { + addCriterion("delete_flag =", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotEqualTo(String value) { + addCriterion("delete_flag <>", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagGreaterThan(String value) { + addCriterion("delete_flag >", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagGreaterThanOrEqualTo(String value) { + addCriterion("delete_flag >=", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLessThan(String value) { + addCriterion("delete_flag <", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLessThanOrEqualTo(String value) { + addCriterion("delete_flag <=", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLike(String value) { + addCriterion("delete_flag like", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotLike(String value) { + addCriterion("delete_flag not like", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIn(List values) { + addCriterion("delete_flag in", values, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotIn(List values) { + addCriterion("delete_flag not in", values, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagBetween(String value1, String value2) { + addCriterion("delete_flag between", value1, value2, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotBetween(String value1, String value2) { + addCriterion("delete_flag not between", value1, value2, "deleteFlag"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialExtend.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialExtend.java new file mode 100644 index 0000000..5cef121 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialExtend.java @@ -0,0 +1,166 @@ +package com.reallin.smt.datasource.entities; + +import java.math.BigDecimal; +import java.util.Date; + +public class MaterialExtend { + private Long id; + + private Long materialId; + + private String barCode; + + private String commodityUnit; + + private String sku; + + private BigDecimal purchaseDecimal; + + private BigDecimal commodityDecimal; + + private BigDecimal wholesaleDecimal; + + private BigDecimal lowDecimal; + + private String defaultFlag; + + private Date createTime; + + private String createSerial; + + private String updateSerial; + + private Long updateTime; + + private Long tenantId; + + private String deleteFlag; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getMaterialId() { + return materialId; + } + + public void setMaterialId(Long materialId) { + this.materialId = materialId; + } + + public String getBarCode() { + return barCode; + } + + public void setBarCode(String barCode) { + this.barCode = barCode == null ? null : barCode.trim(); + } + + public String getCommodityUnit() { + return commodityUnit; + } + + public void setCommodityUnit(String commodityUnit) { + this.commodityUnit = commodityUnit == null ? null : commodityUnit.trim(); + } + + public String getSku() { + return sku; + } + + public void setSku(String sku) { + this.sku = sku == null ? null : sku.trim(); + } + + public BigDecimal getPurchaseDecimal() { + return purchaseDecimal; + } + + public void setPurchaseDecimal(BigDecimal purchaseDecimal) { + this.purchaseDecimal = purchaseDecimal; + } + + public BigDecimal getCommodityDecimal() { + return commodityDecimal; + } + + public void setCommodityDecimal(BigDecimal commodityDecimal) { + this.commodityDecimal = commodityDecimal; + } + + public BigDecimal getWholesaleDecimal() { + return wholesaleDecimal; + } + + public void setWholesaleDecimal(BigDecimal wholesaleDecimal) { + this.wholesaleDecimal = wholesaleDecimal; + } + + public BigDecimal getLowDecimal() { + return lowDecimal; + } + + public void setLowDecimal(BigDecimal lowDecimal) { + this.lowDecimal = lowDecimal; + } + + public String getDefaultFlag() { + return defaultFlag; + } + + public void setDefaultFlag(String defaultFlag) { + this.defaultFlag = defaultFlag == null ? null : defaultFlag.trim(); + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public String getCreateSerial() { + return createSerial; + } + + public void setCreateSerial(String createSerial) { + this.createSerial = createSerial == null ? null : createSerial.trim(); + } + + public String getUpdateSerial() { + return updateSerial; + } + + public void setUpdateSerial(String updateSerial) { + this.updateSerial = updateSerial == null ? null : updateSerial.trim(); + } + + public Long getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(Long updateTime) { + this.updateTime = updateTime; + } + + public Long getTenantId() { + return tenantId; + } + + public void setTenantId(Long tenantId) { + this.tenantId = tenantId; + } + + public String getDeleteFlag() { + return deleteFlag; + } + + public void setDeleteFlag(String deleteFlag) { + this.deleteFlag = deleteFlag == null ? null : deleteFlag.trim(); + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialExtendExample.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialExtendExample.java new file mode 100644 index 0000000..ab22643 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialExtendExample.java @@ -0,0 +1,1231 @@ +package com.reallin.smt.datasource.entities; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +public class MaterialExtendExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public MaterialExtendExample() { + oredCriteria = new ArrayList<>(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList<>(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andMaterialIdIsNull() { + addCriterion("material_id is null"); + return (Criteria) this; + } + + public Criteria andMaterialIdIsNotNull() { + addCriterion("material_id is not null"); + return (Criteria) this; + } + + public Criteria andMaterialIdEqualTo(Long value) { + addCriterion("material_id =", value, "materialId"); + return (Criteria) this; + } + + public Criteria andMaterialIdNotEqualTo(Long value) { + addCriterion("material_id <>", value, "materialId"); + return (Criteria) this; + } + + public Criteria andMaterialIdGreaterThan(Long value) { + addCriterion("material_id >", value, "materialId"); + return (Criteria) this; + } + + public Criteria andMaterialIdGreaterThanOrEqualTo(Long value) { + addCriterion("material_id >=", value, "materialId"); + return (Criteria) this; + } + + public Criteria andMaterialIdLessThan(Long value) { + addCriterion("material_id <", value, "materialId"); + return (Criteria) this; + } + + public Criteria andMaterialIdLessThanOrEqualTo(Long value) { + addCriterion("material_id <=", value, "materialId"); + return (Criteria) this; + } + + public Criteria andMaterialIdIn(List values) { + addCriterion("material_id in", values, "materialId"); + return (Criteria) this; + } + + public Criteria andMaterialIdNotIn(List values) { + addCriterion("material_id not in", values, "materialId"); + return (Criteria) this; + } + + public Criteria andMaterialIdBetween(Long value1, Long value2) { + addCriterion("material_id between", value1, value2, "materialId"); + return (Criteria) this; + } + + public Criteria andMaterialIdNotBetween(Long value1, Long value2) { + addCriterion("material_id not between", value1, value2, "materialId"); + return (Criteria) this; + } + + public Criteria andBarCodeIsNull() { + addCriterion("bar_code is null"); + return (Criteria) this; + } + + public Criteria andBarCodeIsNotNull() { + addCriterion("bar_code is not null"); + return (Criteria) this; + } + + public Criteria andBarCodeEqualTo(String value) { + addCriterion("bar_code =", value, "barCode"); + return (Criteria) this; + } + + public Criteria andBarCodeNotEqualTo(String value) { + addCriterion("bar_code <>", value, "barCode"); + return (Criteria) this; + } + + public Criteria andBarCodeGreaterThan(String value) { + addCriterion("bar_code >", value, "barCode"); + return (Criteria) this; + } + + public Criteria andBarCodeGreaterThanOrEqualTo(String value) { + addCriterion("bar_code >=", value, "barCode"); + return (Criteria) this; + } + + public Criteria andBarCodeLessThan(String value) { + addCriterion("bar_code <", value, "barCode"); + return (Criteria) this; + } + + public Criteria andBarCodeLessThanOrEqualTo(String value) { + addCriterion("bar_code <=", value, "barCode"); + return (Criteria) this; + } + + public Criteria andBarCodeLike(String value) { + addCriterion("bar_code like", value, "barCode"); + return (Criteria) this; + } + + public Criteria andBarCodeNotLike(String value) { + addCriterion("bar_code not like", value, "barCode"); + return (Criteria) this; + } + + public Criteria andBarCodeIn(List values) { + addCriterion("bar_code in", values, "barCode"); + return (Criteria) this; + } + + public Criteria andBarCodeNotIn(List values) { + addCriterion("bar_code not in", values, "barCode"); + return (Criteria) this; + } + + public Criteria andBarCodeBetween(String value1, String value2) { + addCriterion("bar_code between", value1, value2, "barCode"); + return (Criteria) this; + } + + public Criteria andBarCodeNotBetween(String value1, String value2) { + addCriterion("bar_code not between", value1, value2, "barCode"); + return (Criteria) this; + } + + public Criteria andCommodityUnitIsNull() { + addCriterion("commodity_unit is null"); + return (Criteria) this; + } + + public Criteria andCommodityUnitIsNotNull() { + addCriterion("commodity_unit is not null"); + return (Criteria) this; + } + + public Criteria andCommodityUnitEqualTo(String value) { + addCriterion("commodity_unit =", value, "commodityUnit"); + return (Criteria) this; + } + + public Criteria andCommodityUnitNotEqualTo(String value) { + addCriterion("commodity_unit <>", value, "commodityUnit"); + return (Criteria) this; + } + + public Criteria andCommodityUnitGreaterThan(String value) { + addCriterion("commodity_unit >", value, "commodityUnit"); + return (Criteria) this; + } + + public Criteria andCommodityUnitGreaterThanOrEqualTo(String value) { + addCriterion("commodity_unit >=", value, "commodityUnit"); + return (Criteria) this; + } + + public Criteria andCommodityUnitLessThan(String value) { + addCriterion("commodity_unit <", value, "commodityUnit"); + return (Criteria) this; + } + + public Criteria andCommodityUnitLessThanOrEqualTo(String value) { + addCriterion("commodity_unit <=", value, "commodityUnit"); + return (Criteria) this; + } + + public Criteria andCommodityUnitLike(String value) { + addCriterion("commodity_unit like", value, "commodityUnit"); + return (Criteria) this; + } + + public Criteria andCommodityUnitNotLike(String value) { + addCriterion("commodity_unit not like", value, "commodityUnit"); + return (Criteria) this; + } + + public Criteria andCommodityUnitIn(List values) { + addCriterion("commodity_unit in", values, "commodityUnit"); + return (Criteria) this; + } + + public Criteria andCommodityUnitNotIn(List values) { + addCriterion("commodity_unit not in", values, "commodityUnit"); + return (Criteria) this; + } + + public Criteria andCommodityUnitBetween(String value1, String value2) { + addCriterion("commodity_unit between", value1, value2, "commodityUnit"); + return (Criteria) this; + } + + public Criteria andCommodityUnitNotBetween(String value1, String value2) { + addCriterion("commodity_unit not between", value1, value2, "commodityUnit"); + return (Criteria) this; + } + + public Criteria andSkuIsNull() { + addCriterion("sku is null"); + return (Criteria) this; + } + + public Criteria andSkuIsNotNull() { + addCriterion("sku is not null"); + return (Criteria) this; + } + + public Criteria andSkuEqualTo(String value) { + addCriterion("sku =", value, "sku"); + return (Criteria) this; + } + + public Criteria andSkuNotEqualTo(String value) { + addCriterion("sku <>", value, "sku"); + return (Criteria) this; + } + + public Criteria andSkuGreaterThan(String value) { + addCriterion("sku >", value, "sku"); + return (Criteria) this; + } + + public Criteria andSkuGreaterThanOrEqualTo(String value) { + addCriterion("sku >=", value, "sku"); + return (Criteria) this; + } + + public Criteria andSkuLessThan(String value) { + addCriterion("sku <", value, "sku"); + return (Criteria) this; + } + + public Criteria andSkuLessThanOrEqualTo(String value) { + addCriterion("sku <=", value, "sku"); + return (Criteria) this; + } + + public Criteria andSkuLike(String value) { + addCriterion("sku like", value, "sku"); + return (Criteria) this; + } + + public Criteria andSkuNotLike(String value) { + addCriterion("sku not like", value, "sku"); + return (Criteria) this; + } + + public Criteria andSkuIn(List values) { + addCriterion("sku in", values, "sku"); + return (Criteria) this; + } + + public Criteria andSkuNotIn(List values) { + addCriterion("sku not in", values, "sku"); + return (Criteria) this; + } + + public Criteria andSkuBetween(String value1, String value2) { + addCriterion("sku between", value1, value2, "sku"); + return (Criteria) this; + } + + public Criteria andSkuNotBetween(String value1, String value2) { + addCriterion("sku not between", value1, value2, "sku"); + return (Criteria) this; + } + + public Criteria andPurchaseDecimalIsNull() { + addCriterion("purchase_decimal is null"); + return (Criteria) this; + } + + public Criteria andPurchaseDecimalIsNotNull() { + addCriterion("purchase_decimal is not null"); + return (Criteria) this; + } + + public Criteria andPurchaseDecimalEqualTo(BigDecimal value) { + addCriterion("purchase_decimal =", value, "purchaseDecimal"); + return (Criteria) this; + } + + public Criteria andPurchaseDecimalNotEqualTo(BigDecimal value) { + addCriterion("purchase_decimal <>", value, "purchaseDecimal"); + return (Criteria) this; + } + + public Criteria andPurchaseDecimalGreaterThan(BigDecimal value) { + addCriterion("purchase_decimal >", value, "purchaseDecimal"); + return (Criteria) this; + } + + public Criteria andPurchaseDecimalGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("purchase_decimal >=", value, "purchaseDecimal"); + return (Criteria) this; + } + + public Criteria andPurchaseDecimalLessThan(BigDecimal value) { + addCriterion("purchase_decimal <", value, "purchaseDecimal"); + return (Criteria) this; + } + + public Criteria andPurchaseDecimalLessThanOrEqualTo(BigDecimal value) { + addCriterion("purchase_decimal <=", value, "purchaseDecimal"); + return (Criteria) this; + } + + public Criteria andPurchaseDecimalIn(List values) { + addCriterion("purchase_decimal in", values, "purchaseDecimal"); + return (Criteria) this; + } + + public Criteria andPurchaseDecimalNotIn(List values) { + addCriterion("purchase_decimal not in", values, "purchaseDecimal"); + return (Criteria) this; + } + + public Criteria andPurchaseDecimalBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("purchase_decimal between", value1, value2, "purchaseDecimal"); + return (Criteria) this; + } + + public Criteria andPurchaseDecimalNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("purchase_decimal not between", value1, value2, "purchaseDecimal"); + return (Criteria) this; + } + + public Criteria andCommodityDecimalIsNull() { + addCriterion("commodity_decimal is null"); + return (Criteria) this; + } + + public Criteria andCommodityDecimalIsNotNull() { + addCriterion("commodity_decimal is not null"); + return (Criteria) this; + } + + public Criteria andCommodityDecimalEqualTo(BigDecimal value) { + addCriterion("commodity_decimal =", value, "commodityDecimal"); + return (Criteria) this; + } + + public Criteria andCommodityDecimalNotEqualTo(BigDecimal value) { + addCriterion("commodity_decimal <>", value, "commodityDecimal"); + return (Criteria) this; + } + + public Criteria andCommodityDecimalGreaterThan(BigDecimal value) { + addCriterion("commodity_decimal >", value, "commodityDecimal"); + return (Criteria) this; + } + + public Criteria andCommodityDecimalGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("commodity_decimal >=", value, "commodityDecimal"); + return (Criteria) this; + } + + public Criteria andCommodityDecimalLessThan(BigDecimal value) { + addCriterion("commodity_decimal <", value, "commodityDecimal"); + return (Criteria) this; + } + + public Criteria andCommodityDecimalLessThanOrEqualTo(BigDecimal value) { + addCriterion("commodity_decimal <=", value, "commodityDecimal"); + return (Criteria) this; + } + + public Criteria andCommodityDecimalIn(List values) { + addCriterion("commodity_decimal in", values, "commodityDecimal"); + return (Criteria) this; + } + + public Criteria andCommodityDecimalNotIn(List values) { + addCriterion("commodity_decimal not in", values, "commodityDecimal"); + return (Criteria) this; + } + + public Criteria andCommodityDecimalBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("commodity_decimal between", value1, value2, "commodityDecimal"); + return (Criteria) this; + } + + public Criteria andCommodityDecimalNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("commodity_decimal not between", value1, value2, "commodityDecimal"); + return (Criteria) this; + } + + public Criteria andWholesaleDecimalIsNull() { + addCriterion("wholesale_decimal is null"); + return (Criteria) this; + } + + public Criteria andWholesaleDecimalIsNotNull() { + addCriterion("wholesale_decimal is not null"); + return (Criteria) this; + } + + public Criteria andWholesaleDecimalEqualTo(BigDecimal value) { + addCriterion("wholesale_decimal =", value, "wholesaleDecimal"); + return (Criteria) this; + } + + public Criteria andWholesaleDecimalNotEqualTo(BigDecimal value) { + addCriterion("wholesale_decimal <>", value, "wholesaleDecimal"); + return (Criteria) this; + } + + public Criteria andWholesaleDecimalGreaterThan(BigDecimal value) { + addCriterion("wholesale_decimal >", value, "wholesaleDecimal"); + return (Criteria) this; + } + + public Criteria andWholesaleDecimalGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("wholesale_decimal >=", value, "wholesaleDecimal"); + return (Criteria) this; + } + + public Criteria andWholesaleDecimalLessThan(BigDecimal value) { + addCriterion("wholesale_decimal <", value, "wholesaleDecimal"); + return (Criteria) this; + } + + public Criteria andWholesaleDecimalLessThanOrEqualTo(BigDecimal value) { + addCriterion("wholesale_decimal <=", value, "wholesaleDecimal"); + return (Criteria) this; + } + + public Criteria andWholesaleDecimalIn(List values) { + addCriterion("wholesale_decimal in", values, "wholesaleDecimal"); + return (Criteria) this; + } + + public Criteria andWholesaleDecimalNotIn(List values) { + addCriterion("wholesale_decimal not in", values, "wholesaleDecimal"); + return (Criteria) this; + } + + public Criteria andWholesaleDecimalBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("wholesale_decimal between", value1, value2, "wholesaleDecimal"); + return (Criteria) this; + } + + public Criteria andWholesaleDecimalNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("wholesale_decimal not between", value1, value2, "wholesaleDecimal"); + return (Criteria) this; + } + + public Criteria andLowDecimalIsNull() { + addCriterion("low_decimal is null"); + return (Criteria) this; + } + + public Criteria andLowDecimalIsNotNull() { + addCriterion("low_decimal is not null"); + return (Criteria) this; + } + + public Criteria andLowDecimalEqualTo(BigDecimal value) { + addCriterion("low_decimal =", value, "lowDecimal"); + return (Criteria) this; + } + + public Criteria andLowDecimalNotEqualTo(BigDecimal value) { + addCriterion("low_decimal <>", value, "lowDecimal"); + return (Criteria) this; + } + + public Criteria andLowDecimalGreaterThan(BigDecimal value) { + addCriterion("low_decimal >", value, "lowDecimal"); + return (Criteria) this; + } + + public Criteria andLowDecimalGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("low_decimal >=", value, "lowDecimal"); + return (Criteria) this; + } + + public Criteria andLowDecimalLessThan(BigDecimal value) { + addCriterion("low_decimal <", value, "lowDecimal"); + return (Criteria) this; + } + + public Criteria andLowDecimalLessThanOrEqualTo(BigDecimal value) { + addCriterion("low_decimal <=", value, "lowDecimal"); + return (Criteria) this; + } + + public Criteria andLowDecimalIn(List values) { + addCriterion("low_decimal in", values, "lowDecimal"); + return (Criteria) this; + } + + public Criteria andLowDecimalNotIn(List values) { + addCriterion("low_decimal not in", values, "lowDecimal"); + return (Criteria) this; + } + + public Criteria andLowDecimalBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("low_decimal between", value1, value2, "lowDecimal"); + return (Criteria) this; + } + + public Criteria andLowDecimalNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("low_decimal not between", value1, value2, "lowDecimal"); + return (Criteria) this; + } + + public Criteria andDefaultFlagIsNull() { + addCriterion("default_flag is null"); + return (Criteria) this; + } + + public Criteria andDefaultFlagIsNotNull() { + addCriterion("default_flag is not null"); + return (Criteria) this; + } + + public Criteria andDefaultFlagEqualTo(String value) { + addCriterion("default_flag =", value, "defaultFlag"); + return (Criteria) this; + } + + public Criteria andDefaultFlagNotEqualTo(String value) { + addCriterion("default_flag <>", value, "defaultFlag"); + return (Criteria) this; + } + + public Criteria andDefaultFlagGreaterThan(String value) { + addCriterion("default_flag >", value, "defaultFlag"); + return (Criteria) this; + } + + public Criteria andDefaultFlagGreaterThanOrEqualTo(String value) { + addCriterion("default_flag >=", value, "defaultFlag"); + return (Criteria) this; + } + + public Criteria andDefaultFlagLessThan(String value) { + addCriterion("default_flag <", value, "defaultFlag"); + return (Criteria) this; + } + + public Criteria andDefaultFlagLessThanOrEqualTo(String value) { + addCriterion("default_flag <=", value, "defaultFlag"); + return (Criteria) this; + } + + public Criteria andDefaultFlagLike(String value) { + addCriterion("default_flag like", value, "defaultFlag"); + return (Criteria) this; + } + + public Criteria andDefaultFlagNotLike(String value) { + addCriterion("default_flag not like", value, "defaultFlag"); + return (Criteria) this; + } + + public Criteria andDefaultFlagIn(List values) { + addCriterion("default_flag in", values, "defaultFlag"); + return (Criteria) this; + } + + public Criteria andDefaultFlagNotIn(List values) { + addCriterion("default_flag not in", values, "defaultFlag"); + return (Criteria) this; + } + + public Criteria andDefaultFlagBetween(String value1, String value2) { + addCriterion("default_flag between", value1, value2, "defaultFlag"); + return (Criteria) this; + } + + public Criteria andDefaultFlagNotBetween(String value1, String value2) { + addCriterion("default_flag not between", value1, value2, "defaultFlag"); + return (Criteria) this; + } + + public Criteria andCreateTimeIsNull() { + addCriterion("create_time is null"); + return (Criteria) this; + } + + public Criteria andCreateTimeIsNotNull() { + addCriterion("create_time is not null"); + return (Criteria) this; + } + + public Criteria andCreateTimeEqualTo(Date value) { + addCriterion("create_time =", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotEqualTo(Date value) { + addCriterion("create_time <>", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeGreaterThan(Date value) { + addCriterion("create_time >", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeGreaterThanOrEqualTo(Date value) { + addCriterion("create_time >=", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeLessThan(Date value) { + addCriterion("create_time <", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeLessThanOrEqualTo(Date value) { + addCriterion("create_time <=", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeIn(List values) { + addCriterion("create_time in", values, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotIn(List values) { + addCriterion("create_time not in", values, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeBetween(Date value1, Date value2) { + addCriterion("create_time between", value1, value2, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotBetween(Date value1, Date value2) { + addCriterion("create_time not between", value1, value2, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateSerialIsNull() { + addCriterion("create_serial is null"); + return (Criteria) this; + } + + public Criteria andCreateSerialIsNotNull() { + addCriterion("create_serial is not null"); + return (Criteria) this; + } + + public Criteria andCreateSerialEqualTo(String value) { + addCriterion("create_serial =", value, "createSerial"); + return (Criteria) this; + } + + public Criteria andCreateSerialNotEqualTo(String value) { + addCriterion("create_serial <>", value, "createSerial"); + return (Criteria) this; + } + + public Criteria andCreateSerialGreaterThan(String value) { + addCriterion("create_serial >", value, "createSerial"); + return (Criteria) this; + } + + public Criteria andCreateSerialGreaterThanOrEqualTo(String value) { + addCriterion("create_serial >=", value, "createSerial"); + return (Criteria) this; + } + + public Criteria andCreateSerialLessThan(String value) { + addCriterion("create_serial <", value, "createSerial"); + return (Criteria) this; + } + + public Criteria andCreateSerialLessThanOrEqualTo(String value) { + addCriterion("create_serial <=", value, "createSerial"); + return (Criteria) this; + } + + public Criteria andCreateSerialLike(String value) { + addCriterion("create_serial like", value, "createSerial"); + return (Criteria) this; + } + + public Criteria andCreateSerialNotLike(String value) { + addCriterion("create_serial not like", value, "createSerial"); + return (Criteria) this; + } + + public Criteria andCreateSerialIn(List values) { + addCriterion("create_serial in", values, "createSerial"); + return (Criteria) this; + } + + public Criteria andCreateSerialNotIn(List values) { + addCriterion("create_serial not in", values, "createSerial"); + return (Criteria) this; + } + + public Criteria andCreateSerialBetween(String value1, String value2) { + addCriterion("create_serial between", value1, value2, "createSerial"); + return (Criteria) this; + } + + public Criteria andCreateSerialNotBetween(String value1, String value2) { + addCriterion("create_serial not between", value1, value2, "createSerial"); + return (Criteria) this; + } + + public Criteria andUpdateSerialIsNull() { + addCriterion("update_serial is null"); + return (Criteria) this; + } + + public Criteria andUpdateSerialIsNotNull() { + addCriterion("update_serial is not null"); + return (Criteria) this; + } + + public Criteria andUpdateSerialEqualTo(String value) { + addCriterion("update_serial =", value, "updateSerial"); + return (Criteria) this; + } + + public Criteria andUpdateSerialNotEqualTo(String value) { + addCriterion("update_serial <>", value, "updateSerial"); + return (Criteria) this; + } + + public Criteria andUpdateSerialGreaterThan(String value) { + addCriterion("update_serial >", value, "updateSerial"); + return (Criteria) this; + } + + public Criteria andUpdateSerialGreaterThanOrEqualTo(String value) { + addCriterion("update_serial >=", value, "updateSerial"); + return (Criteria) this; + } + + public Criteria andUpdateSerialLessThan(String value) { + addCriterion("update_serial <", value, "updateSerial"); + return (Criteria) this; + } + + public Criteria andUpdateSerialLessThanOrEqualTo(String value) { + addCriterion("update_serial <=", value, "updateSerial"); + return (Criteria) this; + } + + public Criteria andUpdateSerialLike(String value) { + addCriterion("update_serial like", value, "updateSerial"); + return (Criteria) this; + } + + public Criteria andUpdateSerialNotLike(String value) { + addCriterion("update_serial not like", value, "updateSerial"); + return (Criteria) this; + } + + public Criteria andUpdateSerialIn(List values) { + addCriterion("update_serial in", values, "updateSerial"); + return (Criteria) this; + } + + public Criteria andUpdateSerialNotIn(List values) { + addCriterion("update_serial not in", values, "updateSerial"); + return (Criteria) this; + } + + public Criteria andUpdateSerialBetween(String value1, String value2) { + addCriterion("update_serial between", value1, value2, "updateSerial"); + return (Criteria) this; + } + + public Criteria andUpdateSerialNotBetween(String value1, String value2) { + addCriterion("update_serial not between", value1, value2, "updateSerial"); + return (Criteria) this; + } + + public Criteria andUpdateTimeIsNull() { + addCriterion("update_time is null"); + return (Criteria) this; + } + + public Criteria andUpdateTimeIsNotNull() { + addCriterion("update_time is not null"); + return (Criteria) this; + } + + public Criteria andUpdateTimeEqualTo(Long value) { + addCriterion("update_time =", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeNotEqualTo(Long value) { + addCriterion("update_time <>", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeGreaterThan(Long value) { + addCriterion("update_time >", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeGreaterThanOrEqualTo(Long value) { + addCriterion("update_time >=", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeLessThan(Long value) { + addCriterion("update_time <", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeLessThanOrEqualTo(Long value) { + addCriterion("update_time <=", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeIn(List values) { + addCriterion("update_time in", values, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeNotIn(List values) { + addCriterion("update_time not in", values, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeBetween(Long value1, Long value2) { + addCriterion("update_time between", value1, value2, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeNotBetween(Long value1, Long value2) { + addCriterion("update_time not between", value1, value2, "updateTime"); + return (Criteria) this; + } + + public Criteria andTenantIdIsNull() { + addCriterion("tenant_id is null"); + return (Criteria) this; + } + + public Criteria andTenantIdIsNotNull() { + addCriterion("tenant_id is not null"); + return (Criteria) this; + } + + public Criteria andTenantIdEqualTo(Long value) { + addCriterion("tenant_id =", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotEqualTo(Long value) { + addCriterion("tenant_id <>", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdGreaterThan(Long value) { + addCriterion("tenant_id >", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdGreaterThanOrEqualTo(Long value) { + addCriterion("tenant_id >=", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdLessThan(Long value) { + addCriterion("tenant_id <", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdLessThanOrEqualTo(Long value) { + addCriterion("tenant_id <=", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdIn(List values) { + addCriterion("tenant_id in", values, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotIn(List values) { + addCriterion("tenant_id not in", values, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdBetween(Long value1, Long value2) { + addCriterion("tenant_id between", value1, value2, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotBetween(Long value1, Long value2) { + addCriterion("tenant_id not between", value1, value2, "tenantId"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIsNull() { + addCriterion("delete_Flag is null"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIsNotNull() { + addCriterion("delete_Flag is not null"); + return (Criteria) this; + } + + public Criteria andDeleteFlagEqualTo(String value) { + addCriterion("delete_Flag =", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotEqualTo(String value) { + addCriterion("delete_Flag <>", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagGreaterThan(String value) { + addCriterion("delete_Flag >", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagGreaterThanOrEqualTo(String value) { + addCriterion("delete_Flag >=", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLessThan(String value) { + addCriterion("delete_Flag <", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLessThanOrEqualTo(String value) { + addCriterion("delete_Flag <=", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLike(String value) { + addCriterion("delete_Flag like", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotLike(String value) { + addCriterion("delete_Flag not like", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIn(List values) { + addCriterion("delete_Flag in", values, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotIn(List values) { + addCriterion("delete_Flag not in", values, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagBetween(String value1, String value2) { + addCriterion("delete_Flag between", value1, value2, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotBetween(String value1, String value2) { + addCriterion("delete_Flag not between", value1, value2, "deleteFlag"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialInitialStock.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialInitialStock.java new file mode 100644 index 0000000..c19ff7b --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialInitialStock.java @@ -0,0 +1,85 @@ +package com.reallin.smt.datasource.entities; + +import java.math.BigDecimal; + +public class MaterialInitialStock { + private Long id; + + private Long materialId; + + private Long depotId; + + private BigDecimal number; + + private BigDecimal lowSafeStock; + + private BigDecimal highSafeStock; + + private Long tenantId; + + private String deleteFlag; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getMaterialId() { + return materialId; + } + + public void setMaterialId(Long materialId) { + this.materialId = materialId; + } + + public Long getDepotId() { + return depotId; + } + + public void setDepotId(Long depotId) { + this.depotId = depotId; + } + + public BigDecimal getNumber() { + return number; + } + + public void setNumber(BigDecimal number) { + this.number = number; + } + + public BigDecimal getLowSafeStock() { + return lowSafeStock; + } + + public void setLowSafeStock(BigDecimal lowSafeStock) { + this.lowSafeStock = lowSafeStock; + } + + public BigDecimal getHighSafeStock() { + return highSafeStock; + } + + public void setHighSafeStock(BigDecimal highSafeStock) { + this.highSafeStock = highSafeStock; + } + + public Long getTenantId() { + return tenantId; + } + + public void setTenantId(Long tenantId) { + this.tenantId = tenantId; + } + + public String getDeleteFlag() { + return deleteFlag; + } + + public void setDeleteFlag(String deleteFlag) { + this.deleteFlag = deleteFlag == null ? null : deleteFlag.trim(); + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialInitialStockExample.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialInitialStockExample.java new file mode 100644 index 0000000..cdadf7e --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialInitialStockExample.java @@ -0,0 +1,690 @@ +package com.reallin.smt.datasource.entities; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + +public class MaterialInitialStockExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public MaterialInitialStockExample() { + oredCriteria = new ArrayList<>(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList<>(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andMaterialIdIsNull() { + addCriterion("material_id is null"); + return (Criteria) this; + } + + public Criteria andMaterialIdIsNotNull() { + addCriterion("material_id is not null"); + return (Criteria) this; + } + + public Criteria andMaterialIdEqualTo(Long value) { + addCriterion("material_id =", value, "materialId"); + return (Criteria) this; + } + + public Criteria andMaterialIdNotEqualTo(Long value) { + addCriterion("material_id <>", value, "materialId"); + return (Criteria) this; + } + + public Criteria andMaterialIdGreaterThan(Long value) { + addCriterion("material_id >", value, "materialId"); + return (Criteria) this; + } + + public Criteria andMaterialIdGreaterThanOrEqualTo(Long value) { + addCriterion("material_id >=", value, "materialId"); + return (Criteria) this; + } + + public Criteria andMaterialIdLessThan(Long value) { + addCriterion("material_id <", value, "materialId"); + return (Criteria) this; + } + + public Criteria andMaterialIdLessThanOrEqualTo(Long value) { + addCriterion("material_id <=", value, "materialId"); + return (Criteria) this; + } + + public Criteria andMaterialIdIn(List values) { + addCriterion("material_id in", values, "materialId"); + return (Criteria) this; + } + + public Criteria andMaterialIdNotIn(List values) { + addCriterion("material_id not in", values, "materialId"); + return (Criteria) this; + } + + public Criteria andMaterialIdBetween(Long value1, Long value2) { + addCriterion("material_id between", value1, value2, "materialId"); + return (Criteria) this; + } + + public Criteria andMaterialIdNotBetween(Long value1, Long value2) { + addCriterion("material_id not between", value1, value2, "materialId"); + return (Criteria) this; + } + + public Criteria andDepotIdIsNull() { + addCriterion("depot_id is null"); + return (Criteria) this; + } + + public Criteria andDepotIdIsNotNull() { + addCriterion("depot_id is not null"); + return (Criteria) this; + } + + public Criteria andDepotIdEqualTo(Long value) { + addCriterion("depot_id =", value, "depotId"); + return (Criteria) this; + } + + public Criteria andDepotIdNotEqualTo(Long value) { + addCriterion("depot_id <>", value, "depotId"); + return (Criteria) this; + } + + public Criteria andDepotIdGreaterThan(Long value) { + addCriterion("depot_id >", value, "depotId"); + return (Criteria) this; + } + + public Criteria andDepotIdGreaterThanOrEqualTo(Long value) { + addCriterion("depot_id >=", value, "depotId"); + return (Criteria) this; + } + + public Criteria andDepotIdLessThan(Long value) { + addCriterion("depot_id <", value, "depotId"); + return (Criteria) this; + } + + public Criteria andDepotIdLessThanOrEqualTo(Long value) { + addCriterion("depot_id <=", value, "depotId"); + return (Criteria) this; + } + + public Criteria andDepotIdIn(List values) { + addCriterion("depot_id in", values, "depotId"); + return (Criteria) this; + } + + public Criteria andDepotIdNotIn(List values) { + addCriterion("depot_id not in", values, "depotId"); + return (Criteria) this; + } + + public Criteria andDepotIdBetween(Long value1, Long value2) { + addCriterion("depot_id between", value1, value2, "depotId"); + return (Criteria) this; + } + + public Criteria andDepotIdNotBetween(Long value1, Long value2) { + addCriterion("depot_id not between", value1, value2, "depotId"); + return (Criteria) this; + } + + public Criteria andNumberIsNull() { + addCriterion("number is null"); + return (Criteria) this; + } + + public Criteria andNumberIsNotNull() { + addCriterion("number is not null"); + return (Criteria) this; + } + + public Criteria andNumberEqualTo(BigDecimal value) { + addCriterion("number =", value, "number"); + return (Criteria) this; + } + + public Criteria andNumberNotEqualTo(BigDecimal value) { + addCriterion("number <>", value, "number"); + return (Criteria) this; + } + + public Criteria andNumberGreaterThan(BigDecimal value) { + addCriterion("number >", value, "number"); + return (Criteria) this; + } + + public Criteria andNumberGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("number >=", value, "number"); + return (Criteria) this; + } + + public Criteria andNumberLessThan(BigDecimal value) { + addCriterion("number <", value, "number"); + return (Criteria) this; + } + + public Criteria andNumberLessThanOrEqualTo(BigDecimal value) { + addCriterion("number <=", value, "number"); + return (Criteria) this; + } + + public Criteria andNumberIn(List values) { + addCriterion("number in", values, "number"); + return (Criteria) this; + } + + public Criteria andNumberNotIn(List values) { + addCriterion("number not in", values, "number"); + return (Criteria) this; + } + + public Criteria andNumberBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("number between", value1, value2, "number"); + return (Criteria) this; + } + + public Criteria andNumberNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("number not between", value1, value2, "number"); + return (Criteria) this; + } + + public Criteria andLowSafeStockIsNull() { + addCriterion("low_safe_stock is null"); + return (Criteria) this; + } + + public Criteria andLowSafeStockIsNotNull() { + addCriterion("low_safe_stock is not null"); + return (Criteria) this; + } + + public Criteria andLowSafeStockEqualTo(BigDecimal value) { + addCriterion("low_safe_stock =", value, "lowSafeStock"); + return (Criteria) this; + } + + public Criteria andLowSafeStockNotEqualTo(BigDecimal value) { + addCriterion("low_safe_stock <>", value, "lowSafeStock"); + return (Criteria) this; + } + + public Criteria andLowSafeStockGreaterThan(BigDecimal value) { + addCriterion("low_safe_stock >", value, "lowSafeStock"); + return (Criteria) this; + } + + public Criteria andLowSafeStockGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("low_safe_stock >=", value, "lowSafeStock"); + return (Criteria) this; + } + + public Criteria andLowSafeStockLessThan(BigDecimal value) { + addCriterion("low_safe_stock <", value, "lowSafeStock"); + return (Criteria) this; + } + + public Criteria andLowSafeStockLessThanOrEqualTo(BigDecimal value) { + addCriterion("low_safe_stock <=", value, "lowSafeStock"); + return (Criteria) this; + } + + public Criteria andLowSafeStockIn(List values) { + addCriterion("low_safe_stock in", values, "lowSafeStock"); + return (Criteria) this; + } + + public Criteria andLowSafeStockNotIn(List values) { + addCriterion("low_safe_stock not in", values, "lowSafeStock"); + return (Criteria) this; + } + + public Criteria andLowSafeStockBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("low_safe_stock between", value1, value2, "lowSafeStock"); + return (Criteria) this; + } + + public Criteria andLowSafeStockNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("low_safe_stock not between", value1, value2, "lowSafeStock"); + return (Criteria) this; + } + + public Criteria andHighSafeStockIsNull() { + addCriterion("high_safe_stock is null"); + return (Criteria) this; + } + + public Criteria andHighSafeStockIsNotNull() { + addCriterion("high_safe_stock is not null"); + return (Criteria) this; + } + + public Criteria andHighSafeStockEqualTo(BigDecimal value) { + addCriterion("high_safe_stock =", value, "highSafeStock"); + return (Criteria) this; + } + + public Criteria andHighSafeStockNotEqualTo(BigDecimal value) { + addCriterion("high_safe_stock <>", value, "highSafeStock"); + return (Criteria) this; + } + + public Criteria andHighSafeStockGreaterThan(BigDecimal value) { + addCriterion("high_safe_stock >", value, "highSafeStock"); + return (Criteria) this; + } + + public Criteria andHighSafeStockGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("high_safe_stock >=", value, "highSafeStock"); + return (Criteria) this; + } + + public Criteria andHighSafeStockLessThan(BigDecimal value) { + addCriterion("high_safe_stock <", value, "highSafeStock"); + return (Criteria) this; + } + + public Criteria andHighSafeStockLessThanOrEqualTo(BigDecimal value) { + addCriterion("high_safe_stock <=", value, "highSafeStock"); + return (Criteria) this; + } + + public Criteria andHighSafeStockIn(List values) { + addCriterion("high_safe_stock in", values, "highSafeStock"); + return (Criteria) this; + } + + public Criteria andHighSafeStockNotIn(List values) { + addCriterion("high_safe_stock not in", values, "highSafeStock"); + return (Criteria) this; + } + + public Criteria andHighSafeStockBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("high_safe_stock between", value1, value2, "highSafeStock"); + return (Criteria) this; + } + + public Criteria andHighSafeStockNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("high_safe_stock not between", value1, value2, "highSafeStock"); + return (Criteria) this; + } + + public Criteria andTenantIdIsNull() { + addCriterion("tenant_id is null"); + return (Criteria) this; + } + + public Criteria andTenantIdIsNotNull() { + addCriterion("tenant_id is not null"); + return (Criteria) this; + } + + public Criteria andTenantIdEqualTo(Long value) { + addCriterion("tenant_id =", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotEqualTo(Long value) { + addCriterion("tenant_id <>", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdGreaterThan(Long value) { + addCriterion("tenant_id >", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdGreaterThanOrEqualTo(Long value) { + addCriterion("tenant_id >=", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdLessThan(Long value) { + addCriterion("tenant_id <", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdLessThanOrEqualTo(Long value) { + addCriterion("tenant_id <=", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdIn(List values) { + addCriterion("tenant_id in", values, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotIn(List values) { + addCriterion("tenant_id not in", values, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdBetween(Long value1, Long value2) { + addCriterion("tenant_id between", value1, value2, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotBetween(Long value1, Long value2) { + addCriterion("tenant_id not between", value1, value2, "tenantId"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIsNull() { + addCriterion("delete_flag is null"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIsNotNull() { + addCriterion("delete_flag is not null"); + return (Criteria) this; + } + + public Criteria andDeleteFlagEqualTo(String value) { + addCriterion("delete_flag =", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotEqualTo(String value) { + addCriterion("delete_flag <>", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagGreaterThan(String value) { + addCriterion("delete_flag >", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagGreaterThanOrEqualTo(String value) { + addCriterion("delete_flag >=", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLessThan(String value) { + addCriterion("delete_flag <", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLessThanOrEqualTo(String value) { + addCriterion("delete_flag <=", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLike(String value) { + addCriterion("delete_flag like", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotLike(String value) { + addCriterion("delete_flag not like", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIn(List values) { + addCriterion("delete_flag in", values, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotIn(List values) { + addCriterion("delete_flag not in", values, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagBetween(String value1, String value2) { + addCriterion("delete_flag between", value1, value2, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotBetween(String value1, String value2) { + addCriterion("delete_flag not between", value1, value2, "deleteFlag"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialInitialStockWithMaterial.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialInitialStockWithMaterial.java new file mode 100644 index 0000000..6c0a2fb --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialInitialStockWithMaterial.java @@ -0,0 +1,26 @@ +package com.reallin.smt.datasource.entities; + +import java.math.BigDecimal; + +public class MaterialInitialStockWithMaterial { + + private Long materialId; + + private BigDecimal number; + + public Long getMaterialId() { + return materialId; + } + + public void setMaterialId(Long materialId) { + this.materialId = materialId; + } + + public BigDecimal getNumber() { + return number; + } + + public void setNumber(BigDecimal number) { + this.number = number; + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialProperty.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialProperty.java new file mode 100644 index 0000000..65c88c2 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialProperty.java @@ -0,0 +1,73 @@ +package com.reallin.smt.datasource.entities; + +public class MaterialProperty { + private Long id; + + private String nativeName; + + private Boolean enabled; + + private String sort; + + private String anotherName; + + private Long tenantId; + + private String deleteFlag; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getNativeName() { + return nativeName; + } + + public void setNativeName(String nativeName) { + this.nativeName = nativeName == null ? null : nativeName.trim(); + } + + public Boolean getEnabled() { + return enabled; + } + + public void setEnabled(Boolean enabled) { + this.enabled = enabled; + } + + public String getSort() { + return sort; + } + + public void setSort(String sort) { + this.sort = sort == null ? null : sort.trim(); + } + + public String getAnotherName() { + return anotherName; + } + + public void setAnotherName(String anotherName) { + this.anotherName = anotherName == null ? null : anotherName.trim(); + } + + public Long getTenantId() { + return tenantId; + } + + public void setTenantId(Long tenantId) { + this.tenantId = tenantId; + } + + public String getDeleteFlag() { + return deleteFlag; + } + + public void setDeleteFlag(String deleteFlag) { + this.deleteFlag = deleteFlag == null ? null : deleteFlag.trim(); + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialPropertyExample.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialPropertyExample.java new file mode 100644 index 0000000..5c4e82f --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialPropertyExample.java @@ -0,0 +1,659 @@ +package com.reallin.smt.datasource.entities; + +import java.util.ArrayList; +import java.util.List; + +public class MaterialPropertyExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public MaterialPropertyExample() { + oredCriteria = new ArrayList<>(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList<>(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andNativeNameIsNull() { + addCriterion("native_name is null"); + return (Criteria) this; + } + + public Criteria andNativeNameIsNotNull() { + addCriterion("native_name is not null"); + return (Criteria) this; + } + + public Criteria andNativeNameEqualTo(String value) { + addCriterion("native_name =", value, "nativeName"); + return (Criteria) this; + } + + public Criteria andNativeNameNotEqualTo(String value) { + addCriterion("native_name <>", value, "nativeName"); + return (Criteria) this; + } + + public Criteria andNativeNameGreaterThan(String value) { + addCriterion("native_name >", value, "nativeName"); + return (Criteria) this; + } + + public Criteria andNativeNameGreaterThanOrEqualTo(String value) { + addCriterion("native_name >=", value, "nativeName"); + return (Criteria) this; + } + + public Criteria andNativeNameLessThan(String value) { + addCriterion("native_name <", value, "nativeName"); + return (Criteria) this; + } + + public Criteria andNativeNameLessThanOrEqualTo(String value) { + addCriterion("native_name <=", value, "nativeName"); + return (Criteria) this; + } + + public Criteria andNativeNameLike(String value) { + addCriterion("native_name like", value, "nativeName"); + return (Criteria) this; + } + + public Criteria andNativeNameNotLike(String value) { + addCriterion("native_name not like", value, "nativeName"); + return (Criteria) this; + } + + public Criteria andNativeNameIn(List values) { + addCriterion("native_name in", values, "nativeName"); + return (Criteria) this; + } + + public Criteria andNativeNameNotIn(List values) { + addCriterion("native_name not in", values, "nativeName"); + return (Criteria) this; + } + + public Criteria andNativeNameBetween(String value1, String value2) { + addCriterion("native_name between", value1, value2, "nativeName"); + return (Criteria) this; + } + + public Criteria andNativeNameNotBetween(String value1, String value2) { + addCriterion("native_name not between", value1, value2, "nativeName"); + return (Criteria) this; + } + + public Criteria andEnabledIsNull() { + addCriterion("enabled is null"); + return (Criteria) this; + } + + public Criteria andEnabledIsNotNull() { + addCriterion("enabled is not null"); + return (Criteria) this; + } + + public Criteria andEnabledEqualTo(Boolean value) { + addCriterion("enabled =", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledNotEqualTo(Boolean value) { + addCriterion("enabled <>", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledGreaterThan(Boolean value) { + addCriterion("enabled >", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledGreaterThanOrEqualTo(Boolean value) { + addCriterion("enabled >=", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledLessThan(Boolean value) { + addCriterion("enabled <", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledLessThanOrEqualTo(Boolean value) { + addCriterion("enabled <=", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledIn(List values) { + addCriterion("enabled in", values, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledNotIn(List values) { + addCriterion("enabled not in", values, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledBetween(Boolean value1, Boolean value2) { + addCriterion("enabled between", value1, value2, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledNotBetween(Boolean value1, Boolean value2) { + addCriterion("enabled not between", value1, value2, "enabled"); + return (Criteria) this; + } + + public Criteria andSortIsNull() { + addCriterion("sort is null"); + return (Criteria) this; + } + + public Criteria andSortIsNotNull() { + addCriterion("sort is not null"); + return (Criteria) this; + } + + public Criteria andSortEqualTo(String value) { + addCriterion("sort =", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotEqualTo(String value) { + addCriterion("sort <>", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortGreaterThan(String value) { + addCriterion("sort >", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortGreaterThanOrEqualTo(String value) { + addCriterion("sort >=", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortLessThan(String value) { + addCriterion("sort <", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortLessThanOrEqualTo(String value) { + addCriterion("sort <=", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortLike(String value) { + addCriterion("sort like", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotLike(String value) { + addCriterion("sort not like", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortIn(List values) { + addCriterion("sort in", values, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotIn(List values) { + addCriterion("sort not in", values, "sort"); + return (Criteria) this; + } + + public Criteria andSortBetween(String value1, String value2) { + addCriterion("sort between", value1, value2, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotBetween(String value1, String value2) { + addCriterion("sort not between", value1, value2, "sort"); + return (Criteria) this; + } + + public Criteria andAnotherNameIsNull() { + addCriterion("another_name is null"); + return (Criteria) this; + } + + public Criteria andAnotherNameIsNotNull() { + addCriterion("another_name is not null"); + return (Criteria) this; + } + + public Criteria andAnotherNameEqualTo(String value) { + addCriterion("another_name =", value, "anotherName"); + return (Criteria) this; + } + + public Criteria andAnotherNameNotEqualTo(String value) { + addCriterion("another_name <>", value, "anotherName"); + return (Criteria) this; + } + + public Criteria andAnotherNameGreaterThan(String value) { + addCriterion("another_name >", value, "anotherName"); + return (Criteria) this; + } + + public Criteria andAnotherNameGreaterThanOrEqualTo(String value) { + addCriterion("another_name >=", value, "anotherName"); + return (Criteria) this; + } + + public Criteria andAnotherNameLessThan(String value) { + addCriterion("another_name <", value, "anotherName"); + return (Criteria) this; + } + + public Criteria andAnotherNameLessThanOrEqualTo(String value) { + addCriterion("another_name <=", value, "anotherName"); + return (Criteria) this; + } + + public Criteria andAnotherNameLike(String value) { + addCriterion("another_name like", value, "anotherName"); + return (Criteria) this; + } + + public Criteria andAnotherNameNotLike(String value) { + addCriterion("another_name not like", value, "anotherName"); + return (Criteria) this; + } + + public Criteria andAnotherNameIn(List values) { + addCriterion("another_name in", values, "anotherName"); + return (Criteria) this; + } + + public Criteria andAnotherNameNotIn(List values) { + addCriterion("another_name not in", values, "anotherName"); + return (Criteria) this; + } + + public Criteria andAnotherNameBetween(String value1, String value2) { + addCriterion("another_name between", value1, value2, "anotherName"); + return (Criteria) this; + } + + public Criteria andAnotherNameNotBetween(String value1, String value2) { + addCriterion("another_name not between", value1, value2, "anotherName"); + return (Criteria) this; + } + + public Criteria andTenantIdIsNull() { + addCriterion("tenant_id is null"); + return (Criteria) this; + } + + public Criteria andTenantIdIsNotNull() { + addCriterion("tenant_id is not null"); + return (Criteria) this; + } + + public Criteria andTenantIdEqualTo(Long value) { + addCriterion("tenant_id =", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotEqualTo(Long value) { + addCriterion("tenant_id <>", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdGreaterThan(Long value) { + addCriterion("tenant_id >", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdGreaterThanOrEqualTo(Long value) { + addCriterion("tenant_id >=", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdLessThan(Long value) { + addCriterion("tenant_id <", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdLessThanOrEqualTo(Long value) { + addCriterion("tenant_id <=", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdIn(List values) { + addCriterion("tenant_id in", values, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotIn(List values) { + addCriterion("tenant_id not in", values, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdBetween(Long value1, Long value2) { + addCriterion("tenant_id between", value1, value2, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotBetween(Long value1, Long value2) { + addCriterion("tenant_id not between", value1, value2, "tenantId"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIsNull() { + addCriterion("delete_flag is null"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIsNotNull() { + addCriterion("delete_flag is not null"); + return (Criteria) this; + } + + public Criteria andDeleteFlagEqualTo(String value) { + addCriterion("delete_flag =", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotEqualTo(String value) { + addCriterion("delete_flag <>", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagGreaterThan(String value) { + addCriterion("delete_flag >", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagGreaterThanOrEqualTo(String value) { + addCriterion("delete_flag >=", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLessThan(String value) { + addCriterion("delete_flag <", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLessThanOrEqualTo(String value) { + addCriterion("delete_flag <=", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLike(String value) { + addCriterion("delete_flag like", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotLike(String value) { + addCriterion("delete_flag not like", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIn(List values) { + addCriterion("delete_flag in", values, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotIn(List values) { + addCriterion("delete_flag not in", values, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagBetween(String value1, String value2) { + addCriterion("delete_flag between", value1, value2, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotBetween(String value1, String value2) { + addCriterion("delete_flag not between", value1, value2, "deleteFlag"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialVo4Unit.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialVo4Unit.java new file mode 100644 index 0000000..7c6f48e --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialVo4Unit.java @@ -0,0 +1,292 @@ +package com.reallin.smt.datasource.entities; + +import java.math.BigDecimal; + +public class MaterialVo4Unit extends Material{ + + private String unitName; + + private BigDecimal ratio; + + private String categoryName; + + private String materialOther; + + private BigDecimal stock; + + private BigDecimal purchaseDecimal; + + private BigDecimal commodityDecimal; + + private BigDecimal wholesaleDecimal; + + private BigDecimal lowDecimal; + + private BigDecimal billPrice; + + private String mBarCode; + + private String commodityUnit; + + private Long meId; + + private BigDecimal initialStock; + + private BigDecimal currentUnitPrice; + + private BigDecimal currentStock; + + private BigDecimal currentStockPrice; + + private BigDecimal currentStockMovePrice; + + private BigDecimal currentWeight; + + private String sku; + + private Long depotId; + + /** + * 换算为大单位的库存 + */ + private String bigUnitStock; + + /** + * 换算为大单位的初始库存 + */ + private String bigUnitInitialStock; + + private String imgSmall; + + private String imgLarge; + + private BigDecimal taxRate; + + private BigDecimal taxMoney; + + private BigDecimal taxLastMoney; + + public String getUnitName() { + return unitName; + } + + public void setUnitName(String unitName) { + this.unitName = unitName; + } + + public BigDecimal getRatio() { + return ratio; + } + + public void setRatio(BigDecimal ratio) { + this.ratio = ratio; + } + + public String getCategoryName() { + return categoryName; + } + + public void setCategoryName(String categoryName) { + this.categoryName = categoryName; + } + + public String getMaterialOther() { + return materialOther; + } + + public void setMaterialOther(String materialOther) { + this.materialOther = materialOther; + } + + public BigDecimal getStock() { + return stock; + } + + public void setStock(BigDecimal stock) { + this.stock = stock; + } + + public BigDecimal getPurchaseDecimal() { + return purchaseDecimal; + } + + public void setPurchaseDecimal(BigDecimal purchaseDecimal) { + this.purchaseDecimal = purchaseDecimal; + } + + public BigDecimal getCommodityDecimal() { + return commodityDecimal; + } + + public void setCommodityDecimal(BigDecimal commodityDecimal) { + this.commodityDecimal = commodityDecimal; + } + + public BigDecimal getWholesaleDecimal() { + return wholesaleDecimal; + } + + public void setWholesaleDecimal(BigDecimal wholesaleDecimal) { + this.wholesaleDecimal = wholesaleDecimal; + } + + public BigDecimal getLowDecimal() { + return lowDecimal; + } + + public void setLowDecimal(BigDecimal lowDecimal) { + this.lowDecimal = lowDecimal; + } + + public BigDecimal getBillPrice() { + return billPrice; + } + + public void setBillPrice(BigDecimal billPrice) { + this.billPrice = billPrice; + } + + public String getmBarCode() { + return mBarCode; + } + + public void setmBarCode(String mBarCode) { + this.mBarCode = mBarCode; + } + + public String getCommodityUnit() { + return commodityUnit; + } + + public void setCommodityUnit(String commodityUnit) { + this.commodityUnit = commodityUnit; + } + + public Long getMeId() { + return meId; + } + + public void setMeId(Long meId) { + this.meId = meId; + } + + public BigDecimal getInitialStock() { + return initialStock; + } + + public void setInitialStock(BigDecimal initialStock) { + this.initialStock = initialStock; + } + + public BigDecimal getCurrentUnitPrice() { + return currentUnitPrice; + } + + public void setCurrentUnitPrice(BigDecimal currentUnitPrice) { + this.currentUnitPrice = currentUnitPrice; + } + + public BigDecimal getCurrentStock() { + return currentStock; + } + + public void setCurrentStock(BigDecimal currentStock) { + this.currentStock = currentStock; + } + + public BigDecimal getCurrentStockPrice() { + return currentStockPrice; + } + + public void setCurrentStockPrice(BigDecimal currentStockPrice) { + this.currentStockPrice = currentStockPrice; + } + + public BigDecimal getCurrentStockMovePrice() { + return currentStockMovePrice; + } + + public void setCurrentStockMovePrice(BigDecimal currentStockMovePrice) { + this.currentStockMovePrice = currentStockMovePrice; + } + + public BigDecimal getCurrentWeight() { + return currentWeight; + } + + public void setCurrentWeight(BigDecimal currentWeight) { + this.currentWeight = currentWeight; + } + + public String getSku() { + return sku; + } + + public void setSku(String sku) { + this.sku = sku; + } + + public Long getDepotId() { + return depotId; + } + + public void setDepotId(Long depotId) { + this.depotId = depotId; + } + + public String getBigUnitStock() { + return bigUnitStock; + } + + public void setBigUnitStock(String bigUnitStock) { + this.bigUnitStock = bigUnitStock; + } + + public String getImgSmall() { + return imgSmall; + } + + public void setImgSmall(String imgSmall) { + this.imgSmall = imgSmall; + } + + public String getImgLarge() { + return imgLarge; + } + + public void setImgLarge(String imgLarge) { + this.imgLarge = imgLarge; + } + + public String getBigUnitInitialStock() { + return bigUnitInitialStock; + } + + public void setBigUnitInitialStock(String bigUnitInitialStock) { + this.bigUnitInitialStock = bigUnitInitialStock; + } + + public BigDecimal getTaxRate() { + return taxRate; + } + + public void setTaxRate(BigDecimal taxRate) { + this.taxRate = taxRate; + } + + public BigDecimal getTaxLastMoney() { + return taxLastMoney; + } + + public void setTaxLastMoney(BigDecimal taxLastMoney) { + this.taxLastMoney = taxLastMoney; + } + + public BigDecimal getTaxMoney() { + return taxMoney; + } + + public void setTaxMoney(BigDecimal taxMoney) { + this.taxMoney = taxMoney; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialWithInitStock.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialWithInitStock.java new file mode 100644 index 0000000..741e481 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MaterialWithInitStock.java @@ -0,0 +1,29 @@ +package com.reallin.smt.datasource.entities; + +import com.alibaba.fastjson.JSONObject; + +import java.math.BigDecimal; +import java.util.Map; + +public class MaterialWithInitStock extends Material { + + private Map stockMap; + + private JSONObject materialExObj; + + public Map getStockMap() { + return stockMap; + } + + public void setStockMap(Map stockMap) { + this.stockMap = stockMap; + } + + public JSONObject getMaterialExObj() { + return materialExObj; + } + + public void setMaterialExObj(JSONObject materialExObj) { + this.materialExObj = materialExObj; + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/Msg.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/Msg.java new file mode 100644 index 0000000..5ac5af5 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/Msg.java @@ -0,0 +1,95 @@ +package com.reallin.smt.datasource.entities; + +import java.util.Date; + +public class Msg { + private Long id; + + private String msgTitle; + + private String msgContent; + + private Date createTime; + + private String type; + + private Long userId; + + private String status; + + private Long tenantId; + + private String deleteFlag; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getMsgTitle() { + return msgTitle; + } + + public void setMsgTitle(String msgTitle) { + this.msgTitle = msgTitle == null ? null : msgTitle.trim(); + } + + public String getMsgContent() { + return msgContent; + } + + public void setMsgContent(String msgContent) { + this.msgContent = msgContent == null ? null : msgContent.trim(); + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type == null ? null : type.trim(); + } + + public Long getUserId() { + return userId; + } + + public void setUserId(Long userId) { + this.userId = userId; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status == null ? null : status.trim(); + } + + public Long getTenantId() { + return tenantId; + } + + public void setTenantId(Long tenantId) { + this.tenantId = tenantId; + } + + public String getDeleteFlag() { + return deleteFlag; + } + + public void setDeleteFlag(String deleteFlag) { + this.deleteFlag = deleteFlag == null ? null : deleteFlag.trim(); + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MsgEx.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MsgEx.java new file mode 100644 index 0000000..69acd91 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MsgEx.java @@ -0,0 +1,14 @@ +package com.reallin.smt.datasource.entities; + +public class MsgEx extends Msg{ + + private String createTimeStr; + + public String getCreateTimeStr() { + return createTimeStr; + } + + public void setCreateTimeStr(String createTimeStr) { + this.createTimeStr = createTimeStr; + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MsgExample.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MsgExample.java new file mode 100644 index 0000000..80e2b45 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/MsgExample.java @@ -0,0 +1,790 @@ +package com.reallin.smt.datasource.entities; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +public class MsgExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public MsgExample() { + oredCriteria = new ArrayList<>(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList<>(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andMsgTitleIsNull() { + addCriterion("msg_title is null"); + return (Criteria) this; + } + + public Criteria andMsgTitleIsNotNull() { + addCriterion("msg_title is not null"); + return (Criteria) this; + } + + public Criteria andMsgTitleEqualTo(String value) { + addCriterion("msg_title =", value, "msgTitle"); + return (Criteria) this; + } + + public Criteria andMsgTitleNotEqualTo(String value) { + addCriterion("msg_title <>", value, "msgTitle"); + return (Criteria) this; + } + + public Criteria andMsgTitleGreaterThan(String value) { + addCriterion("msg_title >", value, "msgTitle"); + return (Criteria) this; + } + + public Criteria andMsgTitleGreaterThanOrEqualTo(String value) { + addCriterion("msg_title >=", value, "msgTitle"); + return (Criteria) this; + } + + public Criteria andMsgTitleLessThan(String value) { + addCriterion("msg_title <", value, "msgTitle"); + return (Criteria) this; + } + + public Criteria andMsgTitleLessThanOrEqualTo(String value) { + addCriterion("msg_title <=", value, "msgTitle"); + return (Criteria) this; + } + + public Criteria andMsgTitleLike(String value) { + addCriterion("msg_title like", value, "msgTitle"); + return (Criteria) this; + } + + public Criteria andMsgTitleNotLike(String value) { + addCriterion("msg_title not like", value, "msgTitle"); + return (Criteria) this; + } + + public Criteria andMsgTitleIn(List values) { + addCriterion("msg_title in", values, "msgTitle"); + return (Criteria) this; + } + + public Criteria andMsgTitleNotIn(List values) { + addCriterion("msg_title not in", values, "msgTitle"); + return (Criteria) this; + } + + public Criteria andMsgTitleBetween(String value1, String value2) { + addCriterion("msg_title between", value1, value2, "msgTitle"); + return (Criteria) this; + } + + public Criteria andMsgTitleNotBetween(String value1, String value2) { + addCriterion("msg_title not between", value1, value2, "msgTitle"); + return (Criteria) this; + } + + public Criteria andMsgContentIsNull() { + addCriterion("msg_content is null"); + return (Criteria) this; + } + + public Criteria andMsgContentIsNotNull() { + addCriterion("msg_content is not null"); + return (Criteria) this; + } + + public Criteria andMsgContentEqualTo(String value) { + addCriterion("msg_content =", value, "msgContent"); + return (Criteria) this; + } + + public Criteria andMsgContentNotEqualTo(String value) { + addCriterion("msg_content <>", value, "msgContent"); + return (Criteria) this; + } + + public Criteria andMsgContentGreaterThan(String value) { + addCriterion("msg_content >", value, "msgContent"); + return (Criteria) this; + } + + public Criteria andMsgContentGreaterThanOrEqualTo(String value) { + addCriterion("msg_content >=", value, "msgContent"); + return (Criteria) this; + } + + public Criteria andMsgContentLessThan(String value) { + addCriterion("msg_content <", value, "msgContent"); + return (Criteria) this; + } + + public Criteria andMsgContentLessThanOrEqualTo(String value) { + addCriterion("msg_content <=", value, "msgContent"); + return (Criteria) this; + } + + public Criteria andMsgContentLike(String value) { + addCriterion("msg_content like", value, "msgContent"); + return (Criteria) this; + } + + public Criteria andMsgContentNotLike(String value) { + addCriterion("msg_content not like", value, "msgContent"); + return (Criteria) this; + } + + public Criteria andMsgContentIn(List values) { + addCriterion("msg_content in", values, "msgContent"); + return (Criteria) this; + } + + public Criteria andMsgContentNotIn(List values) { + addCriterion("msg_content not in", values, "msgContent"); + return (Criteria) this; + } + + public Criteria andMsgContentBetween(String value1, String value2) { + addCriterion("msg_content between", value1, value2, "msgContent"); + return (Criteria) this; + } + + public Criteria andMsgContentNotBetween(String value1, String value2) { + addCriterion("msg_content not between", value1, value2, "msgContent"); + return (Criteria) this; + } + + public Criteria andCreateTimeIsNull() { + addCriterion("create_time is null"); + return (Criteria) this; + } + + public Criteria andCreateTimeIsNotNull() { + addCriterion("create_time is not null"); + return (Criteria) this; + } + + public Criteria andCreateTimeEqualTo(Date value) { + addCriterion("create_time =", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotEqualTo(Date value) { + addCriterion("create_time <>", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeGreaterThan(Date value) { + addCriterion("create_time >", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeGreaterThanOrEqualTo(Date value) { + addCriterion("create_time >=", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeLessThan(Date value) { + addCriterion("create_time <", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeLessThanOrEqualTo(Date value) { + addCriterion("create_time <=", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeIn(List values) { + addCriterion("create_time in", values, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotIn(List values) { + addCriterion("create_time not in", values, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeBetween(Date value1, Date value2) { + addCriterion("create_time between", value1, value2, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotBetween(Date value1, Date value2) { + addCriterion("create_time not between", value1, value2, "createTime"); + return (Criteria) this; + } + + public Criteria andTypeIsNull() { + addCriterion("type is null"); + return (Criteria) this; + } + + public Criteria andTypeIsNotNull() { + addCriterion("type is not null"); + return (Criteria) this; + } + + public Criteria andTypeEqualTo(String value) { + addCriterion("type =", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotEqualTo(String value) { + addCriterion("type <>", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeGreaterThan(String value) { + addCriterion("type >", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeGreaterThanOrEqualTo(String value) { + addCriterion("type >=", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLessThan(String value) { + addCriterion("type <", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLessThanOrEqualTo(String value) { + addCriterion("type <=", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLike(String value) { + addCriterion("type like", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotLike(String value) { + addCriterion("type not like", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeIn(List values) { + addCriterion("type in", values, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotIn(List values) { + addCriterion("type not in", values, "type"); + return (Criteria) this; + } + + public Criteria andTypeBetween(String value1, String value2) { + addCriterion("type between", value1, value2, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotBetween(String value1, String value2) { + addCriterion("type not between", value1, value2, "type"); + return (Criteria) this; + } + + public Criteria andUserIdIsNull() { + addCriterion("user_id is null"); + return (Criteria) this; + } + + public Criteria andUserIdIsNotNull() { + addCriterion("user_id is not null"); + return (Criteria) this; + } + + public Criteria andUserIdEqualTo(Long value) { + addCriterion("user_id =", value, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdNotEqualTo(Long value) { + addCriterion("user_id <>", value, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdGreaterThan(Long value) { + addCriterion("user_id >", value, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdGreaterThanOrEqualTo(Long value) { + addCriterion("user_id >=", value, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdLessThan(Long value) { + addCriterion("user_id <", value, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdLessThanOrEqualTo(Long value) { + addCriterion("user_id <=", value, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdIn(List values) { + addCriterion("user_id in", values, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdNotIn(List values) { + addCriterion("user_id not in", values, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdBetween(Long value1, Long value2) { + addCriterion("user_id between", value1, value2, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdNotBetween(Long value1, Long value2) { + addCriterion("user_id not between", value1, value2, "userId"); + return (Criteria) this; + } + + public Criteria andStatusIsNull() { + addCriterion("status is null"); + return (Criteria) this; + } + + public Criteria andStatusIsNotNull() { + addCriterion("status is not null"); + return (Criteria) this; + } + + public Criteria andStatusEqualTo(String value) { + addCriterion("status =", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusNotEqualTo(String value) { + addCriterion("status <>", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusGreaterThan(String value) { + addCriterion("status >", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusGreaterThanOrEqualTo(String value) { + addCriterion("status >=", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusLessThan(String value) { + addCriterion("status <", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusLessThanOrEqualTo(String value) { + addCriterion("status <=", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusLike(String value) { + addCriterion("status like", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusNotLike(String value) { + addCriterion("status not like", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusIn(List values) { + addCriterion("status in", values, "status"); + return (Criteria) this; + } + + public Criteria andStatusNotIn(List values) { + addCriterion("status not in", values, "status"); + return (Criteria) this; + } + + public Criteria andStatusBetween(String value1, String value2) { + addCriterion("status between", value1, value2, "status"); + return (Criteria) this; + } + + public Criteria andStatusNotBetween(String value1, String value2) { + addCriterion("status not between", value1, value2, "status"); + return (Criteria) this; + } + + public Criteria andTenantIdIsNull() { + addCriterion("tenant_id is null"); + return (Criteria) this; + } + + public Criteria andTenantIdIsNotNull() { + addCriterion("tenant_id is not null"); + return (Criteria) this; + } + + public Criteria andTenantIdEqualTo(Long value) { + addCriterion("tenant_id =", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotEqualTo(Long value) { + addCriterion("tenant_id <>", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdGreaterThan(Long value) { + addCriterion("tenant_id >", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdGreaterThanOrEqualTo(Long value) { + addCriterion("tenant_id >=", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdLessThan(Long value) { + addCriterion("tenant_id <", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdLessThanOrEqualTo(Long value) { + addCriterion("tenant_id <=", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdIn(List values) { + addCriterion("tenant_id in", values, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotIn(List values) { + addCriterion("tenant_id not in", values, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdBetween(Long value1, Long value2) { + addCriterion("tenant_id between", value1, value2, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotBetween(Long value1, Long value2) { + addCriterion("tenant_id not between", value1, value2, "tenantId"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIsNull() { + addCriterion("delete_Flag is null"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIsNotNull() { + addCriterion("delete_Flag is not null"); + return (Criteria) this; + } + + public Criteria andDeleteFlagEqualTo(String value) { + addCriterion("delete_Flag =", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotEqualTo(String value) { + addCriterion("delete_Flag <>", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagGreaterThan(String value) { + addCriterion("delete_Flag >", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagGreaterThanOrEqualTo(String value) { + addCriterion("delete_Flag >=", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLessThan(String value) { + addCriterion("delete_Flag <", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLessThanOrEqualTo(String value) { + addCriterion("delete_Flag <=", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLike(String value) { + addCriterion("delete_Flag like", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotLike(String value) { + addCriterion("delete_Flag not like", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIn(List values) { + addCriterion("delete_Flag in", values, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotIn(List values) { + addCriterion("delete_Flag not in", values, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagBetween(String value1, String value2) { + addCriterion("delete_Flag between", value1, value2, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotBetween(String value1, String value2) { + addCriterion("delete_Flag not between", value1, value2, "deleteFlag"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/OrgaUserRel.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/OrgaUserRel.java new file mode 100644 index 0000000..ccdb724 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/OrgaUserRel.java @@ -0,0 +1,325 @@ +package com.reallin.smt.datasource.entities; + +import java.util.Date; + +public class OrgaUserRel { + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column tbl_orga_user_rel.id + * + * @mbggenerated + */ + private Long id; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column tbl_orga_user_rel.orga_id + * + * @mbggenerated + */ + private Long orgaId; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column tbl_orga_user_rel.user_id + * + * @mbggenerated + */ + private Long userId; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column tbl_orga_user_rel.user_blng_orga_dspl_seq + * + * @mbggenerated + */ + private String userBlngOrgaDsplSeq; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column tbl_orga_user_rel.delete_flag + * + * @mbggenerated + */ + private String deleteFlag; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column tbl_orga_user_rel.create_time + * + * @mbggenerated + */ + private Date createTime; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column tbl_orga_user_rel.creator + * + * @mbggenerated + */ + private Long creator; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column tbl_orga_user_rel.update_time + * + * @mbggenerated + */ + private Date updateTime; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column tbl_orga_user_rel.updater + * + * @mbggenerated + */ + private Long updater; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column tbl_orga_user_rel.tenant_id + * + * @mbggenerated + */ + private Long tenantId; + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column tbl_orga_user_rel.id + * + * @return the value of tbl_orga_user_rel.id + * + * @mbggenerated + */ + public Long getId() { + return id; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column tbl_orga_user_rel.id + * + * @param id the value for tbl_orga_user_rel.id + * + * @mbggenerated + */ + public void setId(Long id) { + this.id = id; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column tbl_orga_user_rel.orga_id + * + * @return the value of tbl_orga_user_rel.orga_id + * + * @mbggenerated + */ + public Long getOrgaId() { + return orgaId; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column tbl_orga_user_rel.orga_id + * + * @param orgaId the value for tbl_orga_user_rel.orga_id + * + * @mbggenerated + */ + public void setOrgaId(Long orgaId) { + this.orgaId = orgaId; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column tbl_orga_user_rel.user_id + * + * @return the value of tbl_orga_user_rel.user_id + * + * @mbggenerated + */ + public Long getUserId() { + return userId; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column tbl_orga_user_rel.user_id + * + * @param userId the value for tbl_orga_user_rel.user_id + * + * @mbggenerated + */ + public void setUserId(Long userId) { + this.userId = userId; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column tbl_orga_user_rel.user_blng_orga_dspl_seq + * + * @return the value of tbl_orga_user_rel.user_blng_orga_dspl_seq + * + * @mbggenerated + */ + public String getUserBlngOrgaDsplSeq() { + return userBlngOrgaDsplSeq; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column tbl_orga_user_rel.user_blng_orga_dspl_seq + * + * @param userBlngOrgaDsplSeq the value for tbl_orga_user_rel.user_blng_orga_dspl_seq + * + * @mbggenerated + */ + public void setUserBlngOrgaDsplSeq(String userBlngOrgaDsplSeq) { + this.userBlngOrgaDsplSeq = userBlngOrgaDsplSeq == null ? null : userBlngOrgaDsplSeq.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column tbl_orga_user_rel.delete_flag + * + * @return the value of tbl_orga_user_rel.delete_flag + * + * @mbggenerated + */ + public String getDeleteFlag() { + return deleteFlag; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column tbl_orga_user_rel.delete_flag + * + * @param deleteFlag the value for tbl_orga_user_rel.delete_flag + * + * @mbggenerated + */ + public void setDeleteFlag(String deleteFlag) { + this.deleteFlag = deleteFlag == null ? null : deleteFlag.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column tbl_orga_user_rel.create_time + * + * @return the value of tbl_orga_user_rel.create_time + * + * @mbggenerated + */ + public Date getCreateTime() { + return createTime; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column tbl_orga_user_rel.create_time + * + * @param createTime the value for tbl_orga_user_rel.create_time + * + * @mbggenerated + */ + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column tbl_orga_user_rel.creator + * + * @return the value of tbl_orga_user_rel.creator + * + * @mbggenerated + */ + public Long getCreator() { + return creator; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column tbl_orga_user_rel.creator + * + * @param creator the value for tbl_orga_user_rel.creator + * + * @mbggenerated + */ + public void setCreator(Long creator) { + this.creator = creator; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column tbl_orga_user_rel.update_time + * + * @return the value of tbl_orga_user_rel.update_time + * + * @mbggenerated + */ + public Date getUpdateTime() { + return updateTime; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column tbl_orga_user_rel.update_time + * + * @param updateTime the value for tbl_orga_user_rel.update_time + * + * @mbggenerated + */ + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column tbl_orga_user_rel.updater + * + * @return the value of tbl_orga_user_rel.updater + * + * @mbggenerated + */ + public Long getUpdater() { + return updater; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column tbl_orga_user_rel.updater + * + * @param updater the value for tbl_orga_user_rel.updater + * + * @mbggenerated + */ + public void setUpdater(Long updater) { + this.updater = updater; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column tbl_orga_user_rel.tenant_id + * + * @return the value of tbl_orga_user_rel.tenant_id + * + * @mbggenerated + */ + public Long getTenantId() { + return tenantId; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column tbl_orga_user_rel.tenant_id + * + * @param tenantId the value for tbl_orga_user_rel.tenant_id + * + * @mbggenerated + */ + public void setTenantId(Long tenantId) { + this.tenantId = tenantId; + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/OrgaUserRelEx.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/OrgaUserRelEx.java new file mode 100644 index 0000000..02be55f --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/OrgaUserRelEx.java @@ -0,0 +1,10 @@ +package com.reallin.smt.datasource.entities; + +/** + * Description + * + * @Author: cjl + * @Date: 2019/3/12 10:09 + */ +public class OrgaUserRelEx extends OrgaUserRel { +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/OrgaUserRelExample.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/OrgaUserRelExample.java new file mode 100644 index 0000000..8079835 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/OrgaUserRelExample.java @@ -0,0 +1,923 @@ +package com.reallin.smt.datasource.entities; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +public class OrgaUserRelExample { + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table tbl_orga_user_rel + * + * @mbggenerated + */ + protected String orderByClause; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table tbl_orga_user_rel + * + * @mbggenerated + */ + protected boolean distinct; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table tbl_orga_user_rel + * + * @mbggenerated + */ + protected List oredCriteria; + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table tbl_orga_user_rel + * + * @mbggenerated + */ + public OrgaUserRelExample() { + oredCriteria = new ArrayList(); + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table tbl_orga_user_rel + * + * @mbggenerated + */ + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table tbl_orga_user_rel + * + * @mbggenerated + */ + public String getOrderByClause() { + return orderByClause; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table tbl_orga_user_rel + * + * @mbggenerated + */ + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table tbl_orga_user_rel + * + * @mbggenerated + */ + public boolean isDistinct() { + return distinct; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table tbl_orga_user_rel + * + * @mbggenerated + */ + public List getOredCriteria() { + return oredCriteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table tbl_orga_user_rel + * + * @mbggenerated + */ + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table tbl_orga_user_rel + * + * @mbggenerated + */ + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table tbl_orga_user_rel + * + * @mbggenerated + */ + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table tbl_orga_user_rel + * + * @mbggenerated + */ + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table tbl_orga_user_rel + * + * @mbggenerated + */ + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table tbl_orga_user_rel + * + * @mbggenerated + */ + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andOrgaIdIsNull() { + addCriterion("orga_id is null"); + return (Criteria) this; + } + + public Criteria andOrgaIdIsNotNull() { + addCriterion("orga_id is not null"); + return (Criteria) this; + } + + public Criteria andOrgaIdEqualTo(Long value) { + addCriterion("orga_id =", value, "orgaId"); + return (Criteria) this; + } + + public Criteria andOrgaIdNotEqualTo(Long value) { + addCriterion("orga_id <>", value, "orgaId"); + return (Criteria) this; + } + + public Criteria andOrgaIdGreaterThan(Long value) { + addCriterion("orga_id >", value, "orgaId"); + return (Criteria) this; + } + + public Criteria andOrgaIdGreaterThanOrEqualTo(Long value) { + addCriterion("orga_id >=", value, "orgaId"); + return (Criteria) this; + } + + public Criteria andOrgaIdLessThan(Long value) { + addCriterion("orga_id <", value, "orgaId"); + return (Criteria) this; + } + + public Criteria andOrgaIdLessThanOrEqualTo(Long value) { + addCriterion("orga_id <=", value, "orgaId"); + return (Criteria) this; + } + + public Criteria andOrgaIdIn(List values) { + addCriterion("orga_id in", values, "orgaId"); + return (Criteria) this; + } + + public Criteria andOrgaIdNotIn(List values) { + addCriterion("orga_id not in", values, "orgaId"); + return (Criteria) this; + } + + public Criteria andOrgaIdBetween(Long value1, Long value2) { + addCriterion("orga_id between", value1, value2, "orgaId"); + return (Criteria) this; + } + + public Criteria andOrgaIdNotBetween(Long value1, Long value2) { + addCriterion("orga_id not between", value1, value2, "orgaId"); + return (Criteria) this; + } + + public Criteria andUserIdIsNull() { + addCriterion("user_id is null"); + return (Criteria) this; + } + + public Criteria andUserIdIsNotNull() { + addCriterion("user_id is not null"); + return (Criteria) this; + } + + public Criteria andUserIdEqualTo(Long value) { + addCriterion("user_id =", value, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdNotEqualTo(Long value) { + addCriterion("user_id <>", value, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdGreaterThan(Long value) { + addCriterion("user_id >", value, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdGreaterThanOrEqualTo(Long value) { + addCriterion("user_id >=", value, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdLessThan(Long value) { + addCriterion("user_id <", value, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdLessThanOrEqualTo(Long value) { + addCriterion("user_id <=", value, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdIn(List values) { + addCriterion("user_id in", values, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdNotIn(List values) { + addCriterion("user_id not in", values, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdBetween(Long value1, Long value2) { + addCriterion("user_id between", value1, value2, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdNotBetween(Long value1, Long value2) { + addCriterion("user_id not between", value1, value2, "userId"); + return (Criteria) this; + } + + public Criteria andUserBlngOrgaDsplSeqIsNull() { + addCriterion("user_blng_orga_dspl_seq is null"); + return (Criteria) this; + } + + public Criteria andUserBlngOrgaDsplSeqIsNotNull() { + addCriterion("user_blng_orga_dspl_seq is not null"); + return (Criteria) this; + } + + public Criteria andUserBlngOrgaDsplSeqEqualTo(String value) { + addCriterion("user_blng_orga_dspl_seq =", value, "userBlngOrgaDsplSeq"); + return (Criteria) this; + } + + public Criteria andUserBlngOrgaDsplSeqNotEqualTo(String value) { + addCriterion("user_blng_orga_dspl_seq <>", value, "userBlngOrgaDsplSeq"); + return (Criteria) this; + } + + public Criteria andUserBlngOrgaDsplSeqGreaterThan(String value) { + addCriterion("user_blng_orga_dspl_seq >", value, "userBlngOrgaDsplSeq"); + return (Criteria) this; + } + + public Criteria andUserBlngOrgaDsplSeqGreaterThanOrEqualTo(String value) { + addCriterion("user_blng_orga_dspl_seq >=", value, "userBlngOrgaDsplSeq"); + return (Criteria) this; + } + + public Criteria andUserBlngOrgaDsplSeqLessThan(String value) { + addCriterion("user_blng_orga_dspl_seq <", value, "userBlngOrgaDsplSeq"); + return (Criteria) this; + } + + public Criteria andUserBlngOrgaDsplSeqLessThanOrEqualTo(String value) { + addCriterion("user_blng_orga_dspl_seq <=", value, "userBlngOrgaDsplSeq"); + return (Criteria) this; + } + + public Criteria andUserBlngOrgaDsplSeqLike(String value) { + addCriterion("user_blng_orga_dspl_seq like", value, "userBlngOrgaDsplSeq"); + return (Criteria) this; + } + + public Criteria andUserBlngOrgaDsplSeqNotLike(String value) { + addCriterion("user_blng_orga_dspl_seq not like", value, "userBlngOrgaDsplSeq"); + return (Criteria) this; + } + + public Criteria andUserBlngOrgaDsplSeqIn(List values) { + addCriterion("user_blng_orga_dspl_seq in", values, "userBlngOrgaDsplSeq"); + return (Criteria) this; + } + + public Criteria andUserBlngOrgaDsplSeqNotIn(List values) { + addCriterion("user_blng_orga_dspl_seq not in", values, "userBlngOrgaDsplSeq"); + return (Criteria) this; + } + + public Criteria andUserBlngOrgaDsplSeqBetween(String value1, String value2) { + addCriterion("user_blng_orga_dspl_seq between", value1, value2, "userBlngOrgaDsplSeq"); + return (Criteria) this; + } + + public Criteria andUserBlngOrgaDsplSeqNotBetween(String value1, String value2) { + addCriterion("user_blng_orga_dspl_seq not between", value1, value2, "userBlngOrgaDsplSeq"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIsNull() { + addCriterion("delete_flag is null"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIsNotNull() { + addCriterion("delete_flag is not null"); + return (Criteria) this; + } + + public Criteria andDeleteFlagEqualTo(String value) { + addCriterion("delete_flag =", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotEqualTo(String value) { + addCriterion("delete_flag <>", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagGreaterThan(String value) { + addCriterion("delete_flag >", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagGreaterThanOrEqualTo(String value) { + addCriterion("delete_flag >=", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLessThan(String value) { + addCriterion("delete_flag <", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLessThanOrEqualTo(String value) { + addCriterion("delete_flag <=", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLike(String value) { + addCriterion("delete_flag like", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotLike(String value) { + addCriterion("delete_flag not like", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIn(List values) { + addCriterion("delete_flag in", values, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotIn(List values) { + addCriterion("delete_flag not in", values, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagBetween(String value1, String value2) { + addCriterion("delete_flag between", value1, value2, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotBetween(String value1, String value2) { + addCriterion("delete_flag not between", value1, value2, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andCreateTimeIsNull() { + addCriterion("create_time is null"); + return (Criteria) this; + } + + public Criteria andCreateTimeIsNotNull() { + addCriterion("create_time is not null"); + return (Criteria) this; + } + + public Criteria andCreateTimeEqualTo(Date value) { + addCriterion("create_time =", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotEqualTo(Date value) { + addCriterion("create_time <>", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeGreaterThan(Date value) { + addCriterion("create_time >", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeGreaterThanOrEqualTo(Date value) { + addCriterion("create_time >=", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeLessThan(Date value) { + addCriterion("create_time <", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeLessThanOrEqualTo(Date value) { + addCriterion("create_time <=", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeIn(List values) { + addCriterion("create_time in", values, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotIn(List values) { + addCriterion("create_time not in", values, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeBetween(Date value1, Date value2) { + addCriterion("create_time between", value1, value2, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotBetween(Date value1, Date value2) { + addCriterion("create_time not between", value1, value2, "createTime"); + return (Criteria) this; + } + + public Criteria andCreatorIsNull() { + addCriterion("creator is null"); + return (Criteria) this; + } + + public Criteria andCreatorIsNotNull() { + addCriterion("creator is not null"); + return (Criteria) this; + } + + public Criteria andCreatorEqualTo(Long value) { + addCriterion("creator =", value, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorNotEqualTo(Long value) { + addCriterion("creator <>", value, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorGreaterThan(Long value) { + addCriterion("creator >", value, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorGreaterThanOrEqualTo(Long value) { + addCriterion("creator >=", value, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorLessThan(Long value) { + addCriterion("creator <", value, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorLessThanOrEqualTo(Long value) { + addCriterion("creator <=", value, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorIn(List values) { + addCriterion("creator in", values, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorNotIn(List values) { + addCriterion("creator not in", values, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorBetween(Long value1, Long value2) { + addCriterion("creator between", value1, value2, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorNotBetween(Long value1, Long value2) { + addCriterion("creator not between", value1, value2, "creator"); + return (Criteria) this; + } + + public Criteria andUpdateTimeIsNull() { + addCriterion("update_time is null"); + return (Criteria) this; + } + + public Criteria andUpdateTimeIsNotNull() { + addCriterion("update_time is not null"); + return (Criteria) this; + } + + public Criteria andUpdateTimeEqualTo(Date value) { + addCriterion("update_time =", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeNotEqualTo(Date value) { + addCriterion("update_time <>", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeGreaterThan(Date value) { + addCriterion("update_time >", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeGreaterThanOrEqualTo(Date value) { + addCriterion("update_time >=", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeLessThan(Date value) { + addCriterion("update_time <", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeLessThanOrEqualTo(Date value) { + addCriterion("update_time <=", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeIn(List values) { + addCriterion("update_time in", values, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeNotIn(List values) { + addCriterion("update_time not in", values, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeBetween(Date value1, Date value2) { + addCriterion("update_time between", value1, value2, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeNotBetween(Date value1, Date value2) { + addCriterion("update_time not between", value1, value2, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdaterIsNull() { + addCriterion("updater is null"); + return (Criteria) this; + } + + public Criteria andUpdaterIsNotNull() { + addCriterion("updater is not null"); + return (Criteria) this; + } + + public Criteria andUpdaterEqualTo(Long value) { + addCriterion("updater =", value, "updater"); + return (Criteria) this; + } + + public Criteria andUpdaterNotEqualTo(Long value) { + addCriterion("updater <>", value, "updater"); + return (Criteria) this; + } + + public Criteria andUpdaterGreaterThan(Long value) { + addCriterion("updater >", value, "updater"); + return (Criteria) this; + } + + public Criteria andUpdaterGreaterThanOrEqualTo(Long value) { + addCriterion("updater >=", value, "updater"); + return (Criteria) this; + } + + public Criteria andUpdaterLessThan(Long value) { + addCriterion("updater <", value, "updater"); + return (Criteria) this; + } + + public Criteria andUpdaterLessThanOrEqualTo(Long value) { + addCriterion("updater <=", value, "updater"); + return (Criteria) this; + } + + public Criteria andUpdaterIn(List values) { + addCriterion("updater in", values, "updater"); + return (Criteria) this; + } + + public Criteria andUpdaterNotIn(List values) { + addCriterion("updater not in", values, "updater"); + return (Criteria) this; + } + + public Criteria andUpdaterBetween(Long value1, Long value2) { + addCriterion("updater between", value1, value2, "updater"); + return (Criteria) this; + } + + public Criteria andUpdaterNotBetween(Long value1, Long value2) { + addCriterion("updater not between", value1, value2, "updater"); + return (Criteria) this; + } + + public Criteria andTenantIdIsNull() { + addCriterion("tenant_id is null"); + return (Criteria) this; + } + + public Criteria andTenantIdIsNotNull() { + addCriterion("tenant_id is not null"); + return (Criteria) this; + } + + public Criteria andTenantIdEqualTo(Long value) { + addCriterion("tenant_id =", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotEqualTo(Long value) { + addCriterion("tenant_id <>", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdGreaterThan(Long value) { + addCriterion("tenant_id >", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdGreaterThanOrEqualTo(Long value) { + addCriterion("tenant_id >=", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdLessThan(Long value) { + addCriterion("tenant_id <", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdLessThanOrEqualTo(Long value) { + addCriterion("tenant_id <=", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdIn(List values) { + addCriterion("tenant_id in", values, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotIn(List values) { + addCriterion("tenant_id not in", values, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdBetween(Long value1, Long value2) { + addCriterion("tenant_id between", value1, value2, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotBetween(Long value1, Long value2) { + addCriterion("tenant_id not between", value1, value2, "tenantId"); + return (Criteria) this; + } + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table tbl_orga_user_rel + * + * @mbggenerated do_not_delete_during_merge + */ + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table tbl_orga_user_rel + * + * @mbggenerated + */ + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/Organization.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/Organization.java new file mode 100644 index 0000000..ccef5d5 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/Organization.java @@ -0,0 +1,105 @@ +package com.reallin.smt.datasource.entities; + +import java.util.Date; + +public class Organization { + private Long id; + + private String orgNo; + + private String orgAbr; + + private Long parentId; + + private String sort; + + private String remark; + + private Date createTime; + + private Date updateTime; + + private Long tenantId; + + private String deleteFlag; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getOrgNo() { + return orgNo; + } + + public void setOrgNo(String orgNo) { + this.orgNo = orgNo == null ? null : orgNo.trim(); + } + + public String getOrgAbr() { + return orgAbr; + } + + public void setOrgAbr(String orgAbr) { + this.orgAbr = orgAbr == null ? null : orgAbr.trim(); + } + + public Long getParentId() { + return parentId; + } + + public void setParentId(Long parentId) { + this.parentId = parentId; + } + + public String getSort() { + return sort; + } + + public void setSort(String sort) { + this.sort = sort == null ? null : sort.trim(); + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark == null ? null : remark.trim(); + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Date getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } + + public Long getTenantId() { + return tenantId; + } + + public void setTenantId(Long tenantId) { + this.tenantId = tenantId; + } + + public String getDeleteFlag() { + return deleteFlag; + } + + public void setDeleteFlag(String deleteFlag) { + this.deleteFlag = deleteFlag == null ? null : deleteFlag.trim(); + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/OrganizationExample.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/OrganizationExample.java new file mode 100644 index 0000000..8c29f8e --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/OrganizationExample.java @@ -0,0 +1,850 @@ +package com.reallin.smt.datasource.entities; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +public class OrganizationExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public OrganizationExample() { + oredCriteria = new ArrayList<>(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList<>(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andOrgNoIsNull() { + addCriterion("org_no is null"); + return (Criteria) this; + } + + public Criteria andOrgNoIsNotNull() { + addCriterion("org_no is not null"); + return (Criteria) this; + } + + public Criteria andOrgNoEqualTo(String value) { + addCriterion("org_no =", value, "orgNo"); + return (Criteria) this; + } + + public Criteria andOrgNoNotEqualTo(String value) { + addCriterion("org_no <>", value, "orgNo"); + return (Criteria) this; + } + + public Criteria andOrgNoGreaterThan(String value) { + addCriterion("org_no >", value, "orgNo"); + return (Criteria) this; + } + + public Criteria andOrgNoGreaterThanOrEqualTo(String value) { + addCriterion("org_no >=", value, "orgNo"); + return (Criteria) this; + } + + public Criteria andOrgNoLessThan(String value) { + addCriterion("org_no <", value, "orgNo"); + return (Criteria) this; + } + + public Criteria andOrgNoLessThanOrEqualTo(String value) { + addCriterion("org_no <=", value, "orgNo"); + return (Criteria) this; + } + + public Criteria andOrgNoLike(String value) { + addCriterion("org_no like", value, "orgNo"); + return (Criteria) this; + } + + public Criteria andOrgNoNotLike(String value) { + addCriterion("org_no not like", value, "orgNo"); + return (Criteria) this; + } + + public Criteria andOrgNoIn(List values) { + addCriterion("org_no in", values, "orgNo"); + return (Criteria) this; + } + + public Criteria andOrgNoNotIn(List values) { + addCriterion("org_no not in", values, "orgNo"); + return (Criteria) this; + } + + public Criteria andOrgNoBetween(String value1, String value2) { + addCriterion("org_no between", value1, value2, "orgNo"); + return (Criteria) this; + } + + public Criteria andOrgNoNotBetween(String value1, String value2) { + addCriterion("org_no not between", value1, value2, "orgNo"); + return (Criteria) this; + } + + public Criteria andOrgAbrIsNull() { + addCriterion("org_abr is null"); + return (Criteria) this; + } + + public Criteria andOrgAbrIsNotNull() { + addCriterion("org_abr is not null"); + return (Criteria) this; + } + + public Criteria andOrgAbrEqualTo(String value) { + addCriterion("org_abr =", value, "orgAbr"); + return (Criteria) this; + } + + public Criteria andOrgAbrNotEqualTo(String value) { + addCriterion("org_abr <>", value, "orgAbr"); + return (Criteria) this; + } + + public Criteria andOrgAbrGreaterThan(String value) { + addCriterion("org_abr >", value, "orgAbr"); + return (Criteria) this; + } + + public Criteria andOrgAbrGreaterThanOrEqualTo(String value) { + addCriterion("org_abr >=", value, "orgAbr"); + return (Criteria) this; + } + + public Criteria andOrgAbrLessThan(String value) { + addCriterion("org_abr <", value, "orgAbr"); + return (Criteria) this; + } + + public Criteria andOrgAbrLessThanOrEqualTo(String value) { + addCriterion("org_abr <=", value, "orgAbr"); + return (Criteria) this; + } + + public Criteria andOrgAbrLike(String value) { + addCriterion("org_abr like", value, "orgAbr"); + return (Criteria) this; + } + + public Criteria andOrgAbrNotLike(String value) { + addCriterion("org_abr not like", value, "orgAbr"); + return (Criteria) this; + } + + public Criteria andOrgAbrIn(List values) { + addCriterion("org_abr in", values, "orgAbr"); + return (Criteria) this; + } + + public Criteria andOrgAbrNotIn(List values) { + addCriterion("org_abr not in", values, "orgAbr"); + return (Criteria) this; + } + + public Criteria andOrgAbrBetween(String value1, String value2) { + addCriterion("org_abr between", value1, value2, "orgAbr"); + return (Criteria) this; + } + + public Criteria andOrgAbrNotBetween(String value1, String value2) { + addCriterion("org_abr not between", value1, value2, "orgAbr"); + return (Criteria) this; + } + + public Criteria andParentIdIsNull() { + addCriterion("parent_id is null"); + return (Criteria) this; + } + + public Criteria andParentIdIsNotNull() { + addCriterion("parent_id is not null"); + return (Criteria) this; + } + + public Criteria andParentIdEqualTo(Long value) { + addCriterion("parent_id =", value, "parentId"); + return (Criteria) this; + } + + public Criteria andParentIdNotEqualTo(Long value) { + addCriterion("parent_id <>", value, "parentId"); + return (Criteria) this; + } + + public Criteria andParentIdGreaterThan(Long value) { + addCriterion("parent_id >", value, "parentId"); + return (Criteria) this; + } + + public Criteria andParentIdGreaterThanOrEqualTo(Long value) { + addCriterion("parent_id >=", value, "parentId"); + return (Criteria) this; + } + + public Criteria andParentIdLessThan(Long value) { + addCriterion("parent_id <", value, "parentId"); + return (Criteria) this; + } + + public Criteria andParentIdLessThanOrEqualTo(Long value) { + addCriterion("parent_id <=", value, "parentId"); + return (Criteria) this; + } + + public Criteria andParentIdIn(List values) { + addCriterion("parent_id in", values, "parentId"); + return (Criteria) this; + } + + public Criteria andParentIdNotIn(List values) { + addCriterion("parent_id not in", values, "parentId"); + return (Criteria) this; + } + + public Criteria andParentIdBetween(Long value1, Long value2) { + addCriterion("parent_id between", value1, value2, "parentId"); + return (Criteria) this; + } + + public Criteria andParentIdNotBetween(Long value1, Long value2) { + addCriterion("parent_id not between", value1, value2, "parentId"); + return (Criteria) this; + } + + public Criteria andSortIsNull() { + addCriterion("sort is null"); + return (Criteria) this; + } + + public Criteria andSortIsNotNull() { + addCriterion("sort is not null"); + return (Criteria) this; + } + + public Criteria andSortEqualTo(String value) { + addCriterion("sort =", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotEqualTo(String value) { + addCriterion("sort <>", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortGreaterThan(String value) { + addCriterion("sort >", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortGreaterThanOrEqualTo(String value) { + addCriterion("sort >=", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortLessThan(String value) { + addCriterion("sort <", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortLessThanOrEqualTo(String value) { + addCriterion("sort <=", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortLike(String value) { + addCriterion("sort like", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotLike(String value) { + addCriterion("sort not like", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortIn(List values) { + addCriterion("sort in", values, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotIn(List values) { + addCriterion("sort not in", values, "sort"); + return (Criteria) this; + } + + public Criteria andSortBetween(String value1, String value2) { + addCriterion("sort between", value1, value2, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotBetween(String value1, String value2) { + addCriterion("sort not between", value1, value2, "sort"); + return (Criteria) this; + } + + public Criteria andRemarkIsNull() { + addCriterion("remark is null"); + return (Criteria) this; + } + + public Criteria andRemarkIsNotNull() { + addCriterion("remark is not null"); + return (Criteria) this; + } + + public Criteria andRemarkEqualTo(String value) { + addCriterion("remark =", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotEqualTo(String value) { + addCriterion("remark <>", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThan(String value) { + addCriterion("remark >", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThanOrEqualTo(String value) { + addCriterion("remark >=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThan(String value) { + addCriterion("remark <", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThanOrEqualTo(String value) { + addCriterion("remark <=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLike(String value) { + addCriterion("remark like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotLike(String value) { + addCriterion("remark not like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkIn(List values) { + addCriterion("remark in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotIn(List values) { + addCriterion("remark not in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkBetween(String value1, String value2) { + addCriterion("remark between", value1, value2, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotBetween(String value1, String value2) { + addCriterion("remark not between", value1, value2, "remark"); + return (Criteria) this; + } + + public Criteria andCreateTimeIsNull() { + addCriterion("create_time is null"); + return (Criteria) this; + } + + public Criteria andCreateTimeIsNotNull() { + addCriterion("create_time is not null"); + return (Criteria) this; + } + + public Criteria andCreateTimeEqualTo(Date value) { + addCriterion("create_time =", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotEqualTo(Date value) { + addCriterion("create_time <>", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeGreaterThan(Date value) { + addCriterion("create_time >", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeGreaterThanOrEqualTo(Date value) { + addCriterion("create_time >=", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeLessThan(Date value) { + addCriterion("create_time <", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeLessThanOrEqualTo(Date value) { + addCriterion("create_time <=", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeIn(List values) { + addCriterion("create_time in", values, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotIn(List values) { + addCriterion("create_time not in", values, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeBetween(Date value1, Date value2) { + addCriterion("create_time between", value1, value2, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotBetween(Date value1, Date value2) { + addCriterion("create_time not between", value1, value2, "createTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeIsNull() { + addCriterion("update_time is null"); + return (Criteria) this; + } + + public Criteria andUpdateTimeIsNotNull() { + addCriterion("update_time is not null"); + return (Criteria) this; + } + + public Criteria andUpdateTimeEqualTo(Date value) { + addCriterion("update_time =", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeNotEqualTo(Date value) { + addCriterion("update_time <>", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeGreaterThan(Date value) { + addCriterion("update_time >", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeGreaterThanOrEqualTo(Date value) { + addCriterion("update_time >=", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeLessThan(Date value) { + addCriterion("update_time <", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeLessThanOrEqualTo(Date value) { + addCriterion("update_time <=", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeIn(List values) { + addCriterion("update_time in", values, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeNotIn(List values) { + addCriterion("update_time not in", values, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeBetween(Date value1, Date value2) { + addCriterion("update_time between", value1, value2, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeNotBetween(Date value1, Date value2) { + addCriterion("update_time not between", value1, value2, "updateTime"); + return (Criteria) this; + } + + public Criteria andTenantIdIsNull() { + addCriterion("tenant_id is null"); + return (Criteria) this; + } + + public Criteria andTenantIdIsNotNull() { + addCriterion("tenant_id is not null"); + return (Criteria) this; + } + + public Criteria andTenantIdEqualTo(Long value) { + addCriterion("tenant_id =", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotEqualTo(Long value) { + addCriterion("tenant_id <>", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdGreaterThan(Long value) { + addCriterion("tenant_id >", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdGreaterThanOrEqualTo(Long value) { + addCriterion("tenant_id >=", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdLessThan(Long value) { + addCriterion("tenant_id <", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdLessThanOrEqualTo(Long value) { + addCriterion("tenant_id <=", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdIn(List values) { + addCriterion("tenant_id in", values, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotIn(List values) { + addCriterion("tenant_id not in", values, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdBetween(Long value1, Long value2) { + addCriterion("tenant_id between", value1, value2, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotBetween(Long value1, Long value2) { + addCriterion("tenant_id not between", value1, value2, "tenantId"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIsNull() { + addCriterion("delete_flag is null"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIsNotNull() { + addCriterion("delete_flag is not null"); + return (Criteria) this; + } + + public Criteria andDeleteFlagEqualTo(String value) { + addCriterion("delete_flag =", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotEqualTo(String value) { + addCriterion("delete_flag <>", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagGreaterThan(String value) { + addCriterion("delete_flag >", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagGreaterThanOrEqualTo(String value) { + addCriterion("delete_flag >=", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLessThan(String value) { + addCriterion("delete_flag <", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLessThanOrEqualTo(String value) { + addCriterion("delete_flag <=", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLike(String value) { + addCriterion("delete_flag like", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotLike(String value) { + addCriterion("delete_flag not like", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIn(List values) { + addCriterion("delete_flag in", values, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotIn(List values) { + addCriterion("delete_flag not in", values, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagBetween(String value1, String value2) { + addCriterion("delete_flag between", value1, value2, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotBetween(String value1, String value2) { + addCriterion("delete_flag not between", value1, value2, "deleteFlag"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/PackBom.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/PackBom.java new file mode 100644 index 0000000..c3f58b3 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/PackBom.java @@ -0,0 +1,179 @@ +package com.reallin.smt.datasource.entities; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 生产方案主表 + */ +public class PackBom { + private Long id; + + private String bomNumber; + + private String bomName; + + private Long productMaterialId; + + private Long productMaterialExtendId; + + private String productSku; + + private Long outputMaterialId; + + private Long outputMaterialExtendId; + + private String outputSku; + + private BigDecimal outputNumber; + + private String version; + + private Boolean enabled; + + private String remark; + + private Date createTime; + + private Long creator; + + private Long tenantId; + + private String deleteFlag; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getBomNumber() { + return bomNumber; + } + + public void setBomNumber(String bomNumber) { + this.bomNumber = bomNumber == null ? null : bomNumber.trim(); + } + + public String getBomName() { + return bomName; + } + + public void setBomName(String bomName) { + this.bomName = bomName == null ? null : bomName.trim(); + } + + public Long getProductMaterialId() { + return productMaterialId; + } + + public void setProductMaterialId(Long productMaterialId) { + this.productMaterialId = productMaterialId; + } + + public Long getProductMaterialExtendId() { + return productMaterialExtendId; + } + + public void setProductMaterialExtendId(Long productMaterialExtendId) { + this.productMaterialExtendId = productMaterialExtendId; + } + + public String getProductSku() { + return productSku; + } + + public void setProductSku(String productSku) { + this.productSku = productSku == null ? null : productSku.trim(); + } + + public Long getOutputMaterialId() { + return outputMaterialId; + } + + public void setOutputMaterialId(Long outputMaterialId) { + this.outputMaterialId = outputMaterialId; + } + + public Long getOutputMaterialExtendId() { + return outputMaterialExtendId; + } + + public void setOutputMaterialExtendId(Long outputMaterialExtendId) { + this.outputMaterialExtendId = outputMaterialExtendId; + } + + public String getOutputSku() { + return outputSku; + } + + public void setOutputSku(String outputSku) { + this.outputSku = outputSku == null ? null : outputSku.trim(); + } + + public BigDecimal getOutputNumber() { + return outputNumber; + } + + public void setOutputNumber(BigDecimal outputNumber) { + this.outputNumber = outputNumber; + } + + public String getVersion() { + return version; + } + + public void setVersion(String version) { + this.version = version == null ? null : version.trim(); + } + + public Boolean getEnabled() { + return enabled; + } + + public void setEnabled(Boolean enabled) { + this.enabled = enabled; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark == null ? null : remark.trim(); + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Long getCreator() { + return creator; + } + + public void setCreator(Long creator) { + this.creator = creator; + } + + public Long getTenantId() { + return tenantId; + } + + public void setTenantId(Long tenantId) { + this.tenantId = tenantId; + } + + public String getDeleteFlag() { + return deleteFlag; + } + + public void setDeleteFlag(String deleteFlag) { + this.deleteFlag = deleteFlag == null ? null : deleteFlag.trim(); + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/PackBomItem.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/PackBomItem.java new file mode 100644 index 0000000..eefa471 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/PackBomItem.java @@ -0,0 +1,108 @@ +package com.reallin.smt.datasource.entities; + +import java.math.BigDecimal; + +/** + * 生产方案组成物料明细表 + */ +public class PackBomItem { + private Long id; + + private Long bomId; + + private Long materialId; + + private Long materialExtendId; + + private String materialSku; + + private String unit; + + private BigDecimal quantity; + + private String remark; + + private Long tenantId; + + private String deleteFlag; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getBomId() { + return bomId; + } + + public void setBomId(Long bomId) { + this.bomId = bomId; + } + + public Long getMaterialId() { + return materialId; + } + + public void setMaterialId(Long materialId) { + this.materialId = materialId; + } + + public Long getMaterialExtendId() { + return materialExtendId; + } + + public void setMaterialExtendId(Long materialExtendId) { + this.materialExtendId = materialExtendId; + } + + public String getMaterialSku() { + return materialSku; + } + + public void setMaterialSku(String materialSku) { + this.materialSku = materialSku == null ? null : materialSku.trim(); + } + + public String getUnit() { + return unit; + } + + public void setUnit(String unit) { + this.unit = unit == null ? null : unit.trim(); + } + + public BigDecimal getQuantity() { + return quantity; + } + + public void setQuantity(BigDecimal quantity) { + this.quantity = quantity; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark == null ? null : remark.trim(); + } + + public Long getTenantId() { + return tenantId; + } + + public void setTenantId(Long tenantId) { + this.tenantId = tenantId; + } + + public String getDeleteFlag() { + return deleteFlag; + } + + public void setDeleteFlag(String deleteFlag) { + this.deleteFlag = deleteFlag == null ? null : deleteFlag.trim(); + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/Person.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/Person.java new file mode 100644 index 0000000..562352a --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/Person.java @@ -0,0 +1,73 @@ +package com.reallin.smt.datasource.entities; + +public class Person { + private Long id; + + private String type; + + private String name; + + private Boolean enabled; + + private String sort; + + private Long tenantId; + + private String deleteFlag; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type == null ? null : type.trim(); + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name == null ? null : name.trim(); + } + + public Boolean getEnabled() { + return enabled; + } + + public void setEnabled(Boolean enabled) { + this.enabled = enabled; + } + + public String getSort() { + return sort; + } + + public void setSort(String sort) { + this.sort = sort == null ? null : sort.trim(); + } + + public Long getTenantId() { + return tenantId; + } + + public void setTenantId(Long tenantId) { + this.tenantId = tenantId; + } + + public String getDeleteFlag() { + return deleteFlag; + } + + public void setDeleteFlag(String deleteFlag) { + this.deleteFlag = deleteFlag == null ? null : deleteFlag.trim(); + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/PersonExample.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/PersonExample.java new file mode 100644 index 0000000..82b0f89 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/PersonExample.java @@ -0,0 +1,659 @@ +package com.reallin.smt.datasource.entities; + +import java.util.ArrayList; +import java.util.List; + +public class PersonExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public PersonExample() { + oredCriteria = new ArrayList<>(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList<>(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andTypeIsNull() { + addCriterion("type is null"); + return (Criteria) this; + } + + public Criteria andTypeIsNotNull() { + addCriterion("type is not null"); + return (Criteria) this; + } + + public Criteria andTypeEqualTo(String value) { + addCriterion("type =", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotEqualTo(String value) { + addCriterion("type <>", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeGreaterThan(String value) { + addCriterion("type >", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeGreaterThanOrEqualTo(String value) { + addCriterion("type >=", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLessThan(String value) { + addCriterion("type <", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLessThanOrEqualTo(String value) { + addCriterion("type <=", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLike(String value) { + addCriterion("type like", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotLike(String value) { + addCriterion("type not like", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeIn(List values) { + addCriterion("type in", values, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotIn(List values) { + addCriterion("type not in", values, "type"); + return (Criteria) this; + } + + public Criteria andTypeBetween(String value1, String value2) { + addCriterion("type between", value1, value2, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotBetween(String value1, String value2) { + addCriterion("type not between", value1, value2, "type"); + return (Criteria) this; + } + + public Criteria andNameIsNull() { + addCriterion("name is null"); + return (Criteria) this; + } + + public Criteria andNameIsNotNull() { + addCriterion("name is not null"); + return (Criteria) this; + } + + public Criteria andNameEqualTo(String value) { + addCriterion("name =", value, "name"); + return (Criteria) this; + } + + public Criteria andNameNotEqualTo(String value) { + addCriterion("name <>", value, "name"); + return (Criteria) this; + } + + public Criteria andNameGreaterThan(String value) { + addCriterion("name >", value, "name"); + return (Criteria) this; + } + + public Criteria andNameGreaterThanOrEqualTo(String value) { + addCriterion("name >=", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLessThan(String value) { + addCriterion("name <", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLessThanOrEqualTo(String value) { + addCriterion("name <=", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLike(String value) { + addCriterion("name like", value, "name"); + return (Criteria) this; + } + + public Criteria andNameNotLike(String value) { + addCriterion("name not like", value, "name"); + return (Criteria) this; + } + + public Criteria andNameIn(List values) { + addCriterion("name in", values, "name"); + return (Criteria) this; + } + + public Criteria andNameNotIn(List values) { + addCriterion("name not in", values, "name"); + return (Criteria) this; + } + + public Criteria andNameBetween(String value1, String value2) { + addCriterion("name between", value1, value2, "name"); + return (Criteria) this; + } + + public Criteria andNameNotBetween(String value1, String value2) { + addCriterion("name not between", value1, value2, "name"); + return (Criteria) this; + } + + public Criteria andEnabledIsNull() { + addCriterion("enabled is null"); + return (Criteria) this; + } + + public Criteria andEnabledIsNotNull() { + addCriterion("enabled is not null"); + return (Criteria) this; + } + + public Criteria andEnabledEqualTo(Boolean value) { + addCriterion("enabled =", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledNotEqualTo(Boolean value) { + addCriterion("enabled <>", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledGreaterThan(Boolean value) { + addCriterion("enabled >", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledGreaterThanOrEqualTo(Boolean value) { + addCriterion("enabled >=", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledLessThan(Boolean value) { + addCriterion("enabled <", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledLessThanOrEqualTo(Boolean value) { + addCriterion("enabled <=", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledIn(List values) { + addCriterion("enabled in", values, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledNotIn(List values) { + addCriterion("enabled not in", values, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledBetween(Boolean value1, Boolean value2) { + addCriterion("enabled between", value1, value2, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledNotBetween(Boolean value1, Boolean value2) { + addCriterion("enabled not between", value1, value2, "enabled"); + return (Criteria) this; + } + + public Criteria andSortIsNull() { + addCriterion("sort is null"); + return (Criteria) this; + } + + public Criteria andSortIsNotNull() { + addCriterion("sort is not null"); + return (Criteria) this; + } + + public Criteria andSortEqualTo(String value) { + addCriterion("sort =", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotEqualTo(String value) { + addCriterion("sort <>", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortGreaterThan(String value) { + addCriterion("sort >", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortGreaterThanOrEqualTo(String value) { + addCriterion("sort >=", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortLessThan(String value) { + addCriterion("sort <", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortLessThanOrEqualTo(String value) { + addCriterion("sort <=", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortLike(String value) { + addCriterion("sort like", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotLike(String value) { + addCriterion("sort not like", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortIn(List values) { + addCriterion("sort in", values, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotIn(List values) { + addCriterion("sort not in", values, "sort"); + return (Criteria) this; + } + + public Criteria andSortBetween(String value1, String value2) { + addCriterion("sort between", value1, value2, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotBetween(String value1, String value2) { + addCriterion("sort not between", value1, value2, "sort"); + return (Criteria) this; + } + + public Criteria andTenantIdIsNull() { + addCriterion("tenant_id is null"); + return (Criteria) this; + } + + public Criteria andTenantIdIsNotNull() { + addCriterion("tenant_id is not null"); + return (Criteria) this; + } + + public Criteria andTenantIdEqualTo(Long value) { + addCriterion("tenant_id =", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotEqualTo(Long value) { + addCriterion("tenant_id <>", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdGreaterThan(Long value) { + addCriterion("tenant_id >", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdGreaterThanOrEqualTo(Long value) { + addCriterion("tenant_id >=", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdLessThan(Long value) { + addCriterion("tenant_id <", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdLessThanOrEqualTo(Long value) { + addCriterion("tenant_id <=", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdIn(List values) { + addCriterion("tenant_id in", values, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotIn(List values) { + addCriterion("tenant_id not in", values, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdBetween(Long value1, Long value2) { + addCriterion("tenant_id between", value1, value2, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotBetween(Long value1, Long value2) { + addCriterion("tenant_id not between", value1, value2, "tenantId"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIsNull() { + addCriterion("delete_flag is null"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIsNotNull() { + addCriterion("delete_flag is not null"); + return (Criteria) this; + } + + public Criteria andDeleteFlagEqualTo(String value) { + addCriterion("delete_flag =", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotEqualTo(String value) { + addCriterion("delete_flag <>", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagGreaterThan(String value) { + addCriterion("delete_flag >", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagGreaterThanOrEqualTo(String value) { + addCriterion("delete_flag >=", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLessThan(String value) { + addCriterion("delete_flag <", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLessThanOrEqualTo(String value) { + addCriterion("delete_flag <=", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLike(String value) { + addCriterion("delete_flag like", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotLike(String value) { + addCriterion("delete_flag not like", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIn(List values) { + addCriterion("delete_flag in", values, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotIn(List values) { + addCriterion("delete_flag not in", values, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagBetween(String value1, String value2) { + addCriterion("delete_flag between", value1, value2, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotBetween(String value1, String value2) { + addCriterion("delete_flag not between", value1, value2, "deleteFlag"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/PlatformConfig.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/PlatformConfig.java new file mode 100644 index 0000000..11f7452 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/PlatformConfig.java @@ -0,0 +1,43 @@ +package com.reallin.smt.datasource.entities; + +public class PlatformConfig { + private Long id; + + private String platformKey; + + private String platformKeyInfo; + + private String platformValue; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getPlatformKey() { + return platformKey; + } + + public void setPlatformKey(String platformKey) { + this.platformKey = platformKey == null ? null : platformKey.trim(); + } + + public String getPlatformKeyInfo() { + return platformKeyInfo; + } + + public void setPlatformKeyInfo(String platformKeyInfo) { + this.platformKeyInfo = platformKeyInfo == null ? null : platformKeyInfo.trim(); + } + + public String getPlatformValue() { + return platformValue; + } + + public void setPlatformValue(String platformValue) { + this.platformValue = platformValue == null ? null : platformValue.trim(); + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/PlatformConfigExample.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/PlatformConfigExample.java new file mode 100644 index 0000000..81e8897 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/PlatformConfigExample.java @@ -0,0 +1,469 @@ +package com.reallin.smt.datasource.entities; + +import java.util.ArrayList; +import java.util.List; + +public class PlatformConfigExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public PlatformConfigExample() { + oredCriteria = new ArrayList<>(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList<>(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andPlatformKeyIsNull() { + addCriterion("platform_key is null"); + return (Criteria) this; + } + + public Criteria andPlatformKeyIsNotNull() { + addCriterion("platform_key is not null"); + return (Criteria) this; + } + + public Criteria andPlatformKeyEqualTo(String value) { + addCriterion("platform_key =", value, "platformKey"); + return (Criteria) this; + } + + public Criteria andPlatformKeyNotEqualTo(String value) { + addCriterion("platform_key <>", value, "platformKey"); + return (Criteria) this; + } + + public Criteria andPlatformKeyGreaterThan(String value) { + addCriterion("platform_key >", value, "platformKey"); + return (Criteria) this; + } + + public Criteria andPlatformKeyGreaterThanOrEqualTo(String value) { + addCriterion("platform_key >=", value, "platformKey"); + return (Criteria) this; + } + + public Criteria andPlatformKeyLessThan(String value) { + addCriterion("platform_key <", value, "platformKey"); + return (Criteria) this; + } + + public Criteria andPlatformKeyLessThanOrEqualTo(String value) { + addCriterion("platform_key <=", value, "platformKey"); + return (Criteria) this; + } + + public Criteria andPlatformKeyLike(String value) { + addCriterion("platform_key like", value, "platformKey"); + return (Criteria) this; + } + + public Criteria andPlatformKeyNotLike(String value) { + addCriterion("platform_key not like", value, "platformKey"); + return (Criteria) this; + } + + public Criteria andPlatformKeyIn(List values) { + addCriterion("platform_key in", values, "platformKey"); + return (Criteria) this; + } + + public Criteria andPlatformKeyNotIn(List values) { + addCriterion("platform_key not in", values, "platformKey"); + return (Criteria) this; + } + + public Criteria andPlatformKeyBetween(String value1, String value2) { + addCriterion("platform_key between", value1, value2, "platformKey"); + return (Criteria) this; + } + + public Criteria andPlatformKeyNotBetween(String value1, String value2) { + addCriterion("platform_key not between", value1, value2, "platformKey"); + return (Criteria) this; + } + + public Criteria andPlatformKeyInfoIsNull() { + addCriterion("platform_key_info is null"); + return (Criteria) this; + } + + public Criteria andPlatformKeyInfoIsNotNull() { + addCriterion("platform_key_info is not null"); + return (Criteria) this; + } + + public Criteria andPlatformKeyInfoEqualTo(String value) { + addCriterion("platform_key_info =", value, "platformKeyInfo"); + return (Criteria) this; + } + + public Criteria andPlatformKeyInfoNotEqualTo(String value) { + addCriterion("platform_key_info <>", value, "platformKeyInfo"); + return (Criteria) this; + } + + public Criteria andPlatformKeyInfoGreaterThan(String value) { + addCriterion("platform_key_info >", value, "platformKeyInfo"); + return (Criteria) this; + } + + public Criteria andPlatformKeyInfoGreaterThanOrEqualTo(String value) { + addCriterion("platform_key_info >=", value, "platformKeyInfo"); + return (Criteria) this; + } + + public Criteria andPlatformKeyInfoLessThan(String value) { + addCriterion("platform_key_info <", value, "platformKeyInfo"); + return (Criteria) this; + } + + public Criteria andPlatformKeyInfoLessThanOrEqualTo(String value) { + addCriterion("platform_key_info <=", value, "platformKeyInfo"); + return (Criteria) this; + } + + public Criteria andPlatformKeyInfoLike(String value) { + addCriterion("platform_key_info like", value, "platformKeyInfo"); + return (Criteria) this; + } + + public Criteria andPlatformKeyInfoNotLike(String value) { + addCriterion("platform_key_info not like", value, "platformKeyInfo"); + return (Criteria) this; + } + + public Criteria andPlatformKeyInfoIn(List values) { + addCriterion("platform_key_info in", values, "platformKeyInfo"); + return (Criteria) this; + } + + public Criteria andPlatformKeyInfoNotIn(List values) { + addCriterion("platform_key_info not in", values, "platformKeyInfo"); + return (Criteria) this; + } + + public Criteria andPlatformKeyInfoBetween(String value1, String value2) { + addCriterion("platform_key_info between", value1, value2, "platformKeyInfo"); + return (Criteria) this; + } + + public Criteria andPlatformKeyInfoNotBetween(String value1, String value2) { + addCriterion("platform_key_info not between", value1, value2, "platformKeyInfo"); + return (Criteria) this; + } + + public Criteria andPlatformValueIsNull() { + addCriterion("platform_value is null"); + return (Criteria) this; + } + + public Criteria andPlatformValueIsNotNull() { + addCriterion("platform_value is not null"); + return (Criteria) this; + } + + public Criteria andPlatformValueEqualTo(String value) { + addCriterion("platform_value =", value, "platformValue"); + return (Criteria) this; + } + + public Criteria andPlatformValueNotEqualTo(String value) { + addCriterion("platform_value <>", value, "platformValue"); + return (Criteria) this; + } + + public Criteria andPlatformValueGreaterThan(String value) { + addCriterion("platform_value >", value, "platformValue"); + return (Criteria) this; + } + + public Criteria andPlatformValueGreaterThanOrEqualTo(String value) { + addCriterion("platform_value >=", value, "platformValue"); + return (Criteria) this; + } + + public Criteria andPlatformValueLessThan(String value) { + addCriterion("platform_value <", value, "platformValue"); + return (Criteria) this; + } + + public Criteria andPlatformValueLessThanOrEqualTo(String value) { + addCriterion("platform_value <=", value, "platformValue"); + return (Criteria) this; + } + + public Criteria andPlatformValueLike(String value) { + addCriterion("platform_value like", value, "platformValue"); + return (Criteria) this; + } + + public Criteria andPlatformValueNotLike(String value) { + addCriterion("platform_value not like", value, "platformValue"); + return (Criteria) this; + } + + public Criteria andPlatformValueIn(List values) { + addCriterion("platform_value in", values, "platformValue"); + return (Criteria) this; + } + + public Criteria andPlatformValueNotIn(List values) { + addCriterion("platform_value not in", values, "platformValue"); + return (Criteria) this; + } + + public Criteria andPlatformValueBetween(String value1, String value2) { + addCriterion("platform_value between", value1, value2, "platformValue"); + return (Criteria) this; + } + + public Criteria andPlatformValueNotBetween(String value1, String value2) { + addCriterion("platform_value not between", value1, value2, "platformValue"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/ProductionOrder.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/ProductionOrder.java new file mode 100644 index 0000000..dbd34a6 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/ProductionOrder.java @@ -0,0 +1,319 @@ +package com.reallin.smt.datasource.entities; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 生产工单主表 + */ +public class ProductionOrder { + private Long id; + + private String orderNumber; + + private String sourceType; + + private Long sourceId; + + private String sourceNumber; + + private Long productMaterialId; + + private Long productMaterialExtendId; + + private String productSku; + + private Long bomId; + + private Long outputMaterialId; + + private Long outputMaterialExtendId; + + private String outputSku; + + private BigDecimal orderQuantity; + + private BigDecimal outputQuantity; + + private BigDecimal finishedQuantity; + + private Date planStartDate; + + private Date planEndDate; + + private Date actualStartDate; + + private Date actualEndDate; + + private String priority; + + private String status; + + private Long auditBy; + + private Date auditTime; + + private Long releaseBy; + + private Date releaseTime; + + private String closeReason; + + private String remark; + + private Date createTime; + + private Long creator; + + private Long tenantId; + + private String deleteFlag; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getOrderNumber() { + return orderNumber; + } + + public void setOrderNumber(String orderNumber) { + this.orderNumber = orderNumber == null ? null : orderNumber.trim(); + } + + public String getSourceType() { + return sourceType; + } + + public void setSourceType(String sourceType) { + this.sourceType = sourceType == null ? null : sourceType.trim(); + } + + public Long getSourceId() { + return sourceId; + } + + public void setSourceId(Long sourceId) { + this.sourceId = sourceId; + } + + public String getSourceNumber() { + return sourceNumber; + } + + public void setSourceNumber(String sourceNumber) { + this.sourceNumber = sourceNumber == null ? null : sourceNumber.trim(); + } + + public Long getProductMaterialId() { + return productMaterialId; + } + + public void setProductMaterialId(Long productMaterialId) { + this.productMaterialId = productMaterialId; + } + + public Long getProductMaterialExtendId() { + return productMaterialExtendId; + } + + public void setProductMaterialExtendId(Long productMaterialExtendId) { + this.productMaterialExtendId = productMaterialExtendId; + } + + public String getProductSku() { + return productSku; + } + + public void setProductSku(String productSku) { + this.productSku = productSku == null ? null : productSku.trim(); + } + + public Long getBomId() { + return bomId; + } + + public void setBomId(Long bomId) { + this.bomId = bomId; + } + + public Long getOutputMaterialId() { + return outputMaterialId; + } + + public void setOutputMaterialId(Long outputMaterialId) { + this.outputMaterialId = outputMaterialId; + } + + public Long getOutputMaterialExtendId() { + return outputMaterialExtendId; + } + + public void setOutputMaterialExtendId(Long outputMaterialExtendId) { + this.outputMaterialExtendId = outputMaterialExtendId; + } + + public String getOutputSku() { + return outputSku; + } + + public void setOutputSku(String outputSku) { + this.outputSku = outputSku == null ? null : outputSku.trim(); + } + + public BigDecimal getOrderQuantity() { + return orderQuantity; + } + + public void setOrderQuantity(BigDecimal orderQuantity) { + this.orderQuantity = orderQuantity; + } + + public BigDecimal getOutputQuantity() { + return outputQuantity; + } + + public void setOutputQuantity(BigDecimal outputQuantity) { + this.outputQuantity = outputQuantity; + } + + public BigDecimal getFinishedQuantity() { + return finishedQuantity; + } + + public void setFinishedQuantity(BigDecimal finishedQuantity) { + this.finishedQuantity = finishedQuantity; + } + + public Date getPlanStartDate() { + return planStartDate; + } + + public void setPlanStartDate(Date planStartDate) { + this.planStartDate = planStartDate; + } + + public Date getPlanEndDate() { + return planEndDate; + } + + public void setPlanEndDate(Date planEndDate) { + this.planEndDate = planEndDate; + } + + public Date getActualStartDate() { + return actualStartDate; + } + + public void setActualStartDate(Date actualStartDate) { + this.actualStartDate = actualStartDate; + } + + public Date getActualEndDate() { + return actualEndDate; + } + + public void setActualEndDate(Date actualEndDate) { + this.actualEndDate = actualEndDate; + } + + public String getPriority() { + return priority; + } + + public void setPriority(String priority) { + this.priority = priority == null ? null : priority.trim(); + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status == null ? null : status.trim(); + } + + public Long getAuditBy() { + return auditBy; + } + + public void setAuditBy(Long auditBy) { + this.auditBy = auditBy; + } + + public Date getAuditTime() { + return auditTime; + } + + public void setAuditTime(Date auditTime) { + this.auditTime = auditTime; + } + + public Long getReleaseBy() { + return releaseBy; + } + + public void setReleaseBy(Long releaseBy) { + this.releaseBy = releaseBy; + } + + public Date getReleaseTime() { + return releaseTime; + } + + public void setReleaseTime(Date releaseTime) { + this.releaseTime = releaseTime; + } + + public String getCloseReason() { + return closeReason; + } + + public void setCloseReason(String closeReason) { + this.closeReason = closeReason == null ? null : closeReason.trim(); + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark == null ? null : remark.trim(); + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Long getCreator() { + return creator; + } + + public void setCreator(Long creator) { + this.creator = creator; + } + + public Long getTenantId() { + return tenantId; + } + + public void setTenantId(Long tenantId) { + this.tenantId = tenantId; + } + + public String getDeleteFlag() { + return deleteFlag; + } + + public void setDeleteFlag(String deleteFlag) { + this.deleteFlag = deleteFlag == null ? null : deleteFlag.trim(); + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/ProductionOrderLog.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/ProductionOrderLog.java new file mode 100644 index 0000000..e85da2c --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/ProductionOrderLog.java @@ -0,0 +1,99 @@ +package com.reallin.smt.datasource.entities; + +import java.util.Date; + +/** + * 工单操作日志表 + */ +public class ProductionOrderLog { + private Long id; + + private Long orderId; + + private String orderNumber; + + private String operationType; + + private String operationDesc; + + private Long operator; + + private Date createTime; + + private Long tenantId; + + /** 操作人姓名(非数据库字段,运行时填充) */ + private transient String operatorName; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getOrderId() { + return orderId; + } + + public void setOrderId(Long orderId) { + this.orderId = orderId; + } + + public String getOrderNumber() { + return orderNumber; + } + + public void setOrderNumber(String orderNumber) { + this.orderNumber = orderNumber == null ? null : orderNumber.trim(); + } + + public String getOperationType() { + return operationType; + } + + public void setOperationType(String operationType) { + this.operationType = operationType == null ? null : operationType.trim(); + } + + public String getOperationDesc() { + return operationDesc; + } + + public void setOperationDesc(String operationDesc) { + this.operationDesc = operationDesc == null ? null : operationDesc.trim(); + } + + public Long getOperator() { + return operator; + } + + public void setOperator(Long operator) { + this.operator = operator; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Long getTenantId() { + return tenantId; + } + + public void setTenantId(Long tenantId) { + this.tenantId = tenantId; + } + + public String getOperatorName() { + return operatorName; + } + + public void setOperatorName(String operatorName) { + this.operatorName = operatorName; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/ProductionReport.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/ProductionReport.java new file mode 100644 index 0000000..aa960c6 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/ProductionReport.java @@ -0,0 +1,199 @@ +package com.reallin.smt.datasource.entities; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 完工报告主表 + */ +public class ProductionReport { + private Long id; + + private String reportNumber; + + private Long orderId; + + private String orderNumber; + + private BigDecimal finishedQuantity; + + private BigDecimal defectQuantity; + + private String qualifiedFlag; + + private Long depotId; + + private String inNumber; + + private String auditStatus; + + private Long auditBy; + + private Date auditTime; + + private Long reportBy; + + private Date reportDate; + + private String remark; + + private Date createTime; + + private Long creator; + + private Long tenantId; + + private String deleteFlag; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getReportNumber() { + return reportNumber; + } + + public void setReportNumber(String reportNumber) { + this.reportNumber = reportNumber == null ? null : reportNumber.trim(); + } + + public Long getOrderId() { + return orderId; + } + + public void setOrderId(Long orderId) { + this.orderId = orderId; + } + + public String getOrderNumber() { + return orderNumber; + } + + public void setOrderNumber(String orderNumber) { + this.orderNumber = orderNumber == null ? null : orderNumber.trim(); + } + + public BigDecimal getFinishedQuantity() { + return finishedQuantity; + } + + public void setFinishedQuantity(BigDecimal finishedQuantity) { + this.finishedQuantity = finishedQuantity; + } + + public BigDecimal getDefectQuantity() { + return defectQuantity; + } + + public void setDefectQuantity(BigDecimal defectQuantity) { + this.defectQuantity = defectQuantity; + } + + public String getQualifiedFlag() { + return qualifiedFlag; + } + + public void setQualifiedFlag(String qualifiedFlag) { + this.qualifiedFlag = qualifiedFlag == null ? null : qualifiedFlag.trim(); + } + + public Long getDepotId() { + return depotId; + } + + public void setDepotId(Long depotId) { + this.depotId = depotId; + } + + public String getInNumber() { + return inNumber; + } + + public void setInNumber(String inNumber) { + this.inNumber = inNumber == null ? null : inNumber.trim(); + } + + public String getAuditStatus() { + return auditStatus; + } + + public void setAuditStatus(String auditStatus) { + this.auditStatus = auditStatus == null ? null : auditStatus.trim(); + } + + public Long getAuditBy() { + return auditBy; + } + + public void setAuditBy(Long auditBy) { + this.auditBy = auditBy; + } + + public Date getAuditTime() { + return auditTime; + } + + public void setAuditTime(Date auditTime) { + this.auditTime = auditTime; + } + + public Long getReportBy() { + return reportBy; + } + + public void setReportBy(Long reportBy) { + this.reportBy = reportBy; + } + + public Date getReportDate() { + return reportDate; + } + + public void setReportDate(Date reportDate) { + this.reportDate = reportDate; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark == null ? null : remark.trim(); + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Long getCreator() { + return creator; + } + + public void setCreator(Long creator) { + this.creator = creator; + } + + public Long getTenantId() { + return tenantId; + } + + public void setTenantId(Long tenantId) { + this.tenantId = tenantId; + } + + public String getDeleteFlag() { + return deleteFlag; + } + + public void setDeleteFlag(String deleteFlag) { + this.deleteFlag = deleteFlag == null ? null : deleteFlag.trim(); + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/ProductionReportItem.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/ProductionReportItem.java new file mode 100644 index 0000000..238795f --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/ProductionReportItem.java @@ -0,0 +1,108 @@ +package com.reallin.smt.datasource.entities; + +import java.math.BigDecimal; + +/** + * 完工报告物料消耗明细表 + */ +public class ProductionReportItem { + private Long id; + + private Long reportId; + + private Long materialId; + + private Long materialExtendId; + + private String materialSku; + + private String unit; + + private BigDecimal consumptionQuantity; + + private String remark; + + private Long tenantId; + + private String deleteFlag; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getReportId() { + return reportId; + } + + public void setReportId(Long reportId) { + this.reportId = reportId; + } + + public Long getMaterialId() { + return materialId; + } + + public void setMaterialId(Long materialId) { + this.materialId = materialId; + } + + public Long getMaterialExtendId() { + return materialExtendId; + } + + public void setMaterialExtendId(Long materialExtendId) { + this.materialExtendId = materialExtendId; + } + + public String getMaterialSku() { + return materialSku; + } + + public void setMaterialSku(String materialSku) { + this.materialSku = materialSku == null ? null : materialSku.trim(); + } + + public String getUnit() { + return unit; + } + + public void setUnit(String unit) { + this.unit = unit == null ? null : unit.trim(); + } + + public BigDecimal getConsumptionQuantity() { + return consumptionQuantity; + } + + public void setConsumptionQuantity(BigDecimal consumptionQuantity) { + this.consumptionQuantity = consumptionQuantity; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark == null ? null : remark.trim(); + } + + public Long getTenantId() { + return tenantId; + } + + public void setTenantId(Long tenantId) { + this.tenantId = tenantId; + } + + public String getDeleteFlag() { + return deleteFlag; + } + + public void setDeleteFlag(String deleteFlag) { + this.deleteFlag = deleteFlag == null ? null : deleteFlag.trim(); + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/ProductionRequisition.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/ProductionRequisition.java new file mode 100644 index 0000000..d7a3b4b --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/ProductionRequisition.java @@ -0,0 +1,138 @@ +package com.reallin.smt.datasource.entities; + +import java.util.Date; + +/** + * 生产领料单主表 + */ +public class ProductionRequisition { + private Long id; + + private String requisitionNumber; + + private Long orderId; + + private String orderNumber; + + private Long depotId; + + private String status; + + private Long confirmBy; + + private Date confirmTime; + + private String remark; + + private Date createTime; + + private Long creator; + + private Long tenantId; + + private String deleteFlag; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getRequisitionNumber() { + return requisitionNumber; + } + + public void setRequisitionNumber(String requisitionNumber) { + this.requisitionNumber = requisitionNumber == null ? null : requisitionNumber.trim(); + } + + public Long getOrderId() { + return orderId; + } + + public void setOrderId(Long orderId) { + this.orderId = orderId; + } + + public String getOrderNumber() { + return orderNumber; + } + + public void setOrderNumber(String orderNumber) { + this.orderNumber = orderNumber == null ? null : orderNumber.trim(); + } + + public Long getDepotId() { + return depotId; + } + + public void setDepotId(Long depotId) { + this.depotId = depotId; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status == null ? null : status.trim(); + } + + public Long getConfirmBy() { + return confirmBy; + } + + public void setConfirmBy(Long confirmBy) { + this.confirmBy = confirmBy; + } + + public Date getConfirmTime() { + return confirmTime; + } + + public void setConfirmTime(Date confirmTime) { + this.confirmTime = confirmTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark == null ? null : remark.trim(); + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Long getCreator() { + return creator; + } + + public void setCreator(Long creator) { + this.creator = creator; + } + + public Long getTenantId() { + return tenantId; + } + + public void setTenantId(Long tenantId) { + this.tenantId = tenantId; + } + + public String getDeleteFlag() { + return deleteFlag; + } + + public void setDeleteFlag(String deleteFlag) { + this.deleteFlag = deleteFlag == null ? null : deleteFlag.trim(); + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/ProductionRequisitionItem.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/ProductionRequisitionItem.java new file mode 100644 index 0000000..2a9a8b7 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/ProductionRequisitionItem.java @@ -0,0 +1,138 @@ +package com.reallin.smt.datasource.entities; + +import java.math.BigDecimal; + +/** + * 生产领料单明细表 + */ +public class ProductionRequisitionItem { + private Long id; + + private Long requisitionId; + + private Long depotId; + + private Long materialId; + + private Long materialExtendId; + + private String materialSku; + + private String unit; + + private BigDecimal requiredQuantity; + + private BigDecimal issuedQuantity; + + private BigDecimal unitPrice; + + private String remark; + + private Long tenantId; + + private String deleteFlag; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getRequisitionId() { + return requisitionId; + } + + public void setRequisitionId(Long requisitionId) { + this.requisitionId = requisitionId; + } + + public Long getDepotId() { + return depotId; + } + + public void setDepotId(Long depotId) { + this.depotId = depotId; + } + + public Long getMaterialId() { + return materialId; + } + + public void setMaterialId(Long materialId) { + this.materialId = materialId; + } + + public Long getMaterialExtendId() { + return materialExtendId; + } + + public void setMaterialExtendId(Long materialExtendId) { + this.materialExtendId = materialExtendId; + } + + public String getMaterialSku() { + return materialSku; + } + + public void setMaterialSku(String materialSku) { + this.materialSku = materialSku == null ? null : materialSku.trim(); + } + + public String getUnit() { + return unit; + } + + public void setUnit(String unit) { + this.unit = unit == null ? null : unit.trim(); + } + + public BigDecimal getRequiredQuantity() { + return requiredQuantity; + } + + public void setRequiredQuantity(BigDecimal requiredQuantity) { + this.requiredQuantity = requiredQuantity; + } + + public BigDecimal getIssuedQuantity() { + return issuedQuantity; + } + + public void setIssuedQuantity(BigDecimal issuedQuantity) { + this.issuedQuantity = issuedQuantity; + } + + public BigDecimal getUnitPrice() { + return unitPrice; + } + + public void setUnitPrice(BigDecimal unitPrice) { + this.unitPrice = unitPrice; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark == null ? null : remark.trim(); + } + + public Long getTenantId() { + return tenantId; + } + + public void setTenantId(Long tenantId) { + this.tenantId = tenantId; + } + + public String getDeleteFlag() { + return deleteFlag; + } + + public void setDeleteFlag(String deleteFlag) { + this.deleteFlag = deleteFlag == null ? null : deleteFlag.trim(); + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/Role.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/Role.java new file mode 100644 index 0000000..eb6c9da --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/Role.java @@ -0,0 +1,103 @@ +package com.reallin.smt.datasource.entities; + +public class Role { + private Long id; + + private String name; + + private String type; + + private String priceLimit; + + private String value; + + private String description; + + private Boolean enabled; + + private String sort; + + private Long tenantId; + + private String deleteFlag; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name == null ? null : name.trim(); + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type == null ? null : type.trim(); + } + + public String getPriceLimit() { + return priceLimit; + } + + public void setPriceLimit(String priceLimit) { + this.priceLimit = priceLimit == null ? null : priceLimit.trim(); + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value == null ? null : value.trim(); + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description == null ? null : description.trim(); + } + + public Boolean getEnabled() { + return enabled; + } + + public void setEnabled(Boolean enabled) { + this.enabled = enabled; + } + + public String getSort() { + return sort; + } + + public void setSort(String sort) { + this.sort = sort == null ? null : sort.trim(); + } + + public Long getTenantId() { + return tenantId; + } + + public void setTenantId(Long tenantId) { + this.tenantId = tenantId; + } + + public String getDeleteFlag() { + return deleteFlag; + } + + public void setDeleteFlag(String deleteFlag) { + this.deleteFlag = deleteFlag == null ? null : deleteFlag.trim(); + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/RoleEx.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/RoleEx.java new file mode 100644 index 0000000..f739551 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/RoleEx.java @@ -0,0 +1,14 @@ +package com.reallin.smt.datasource.entities; + +public class RoleEx extends Role{ + + private String priceLimitStr; + + public String getPriceLimitStr() { + return priceLimitStr; + } + + public void setPriceLimitStr(String priceLimitStr) { + this.priceLimitStr = priceLimitStr; + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/RoleExample.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/RoleExample.java new file mode 100644 index 0000000..9c15720 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/RoleExample.java @@ -0,0 +1,869 @@ +package com.reallin.smt.datasource.entities; + +import java.util.ArrayList; +import java.util.List; + +public class RoleExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public RoleExample() { + oredCriteria = new ArrayList<>(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList<>(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andNameIsNull() { + addCriterion("name is null"); + return (Criteria) this; + } + + public Criteria andNameIsNotNull() { + addCriterion("name is not null"); + return (Criteria) this; + } + + public Criteria andNameEqualTo(String value) { + addCriterion("name =", value, "name"); + return (Criteria) this; + } + + public Criteria andNameNotEqualTo(String value) { + addCriterion("name <>", value, "name"); + return (Criteria) this; + } + + public Criteria andNameGreaterThan(String value) { + addCriterion("name >", value, "name"); + return (Criteria) this; + } + + public Criteria andNameGreaterThanOrEqualTo(String value) { + addCriterion("name >=", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLessThan(String value) { + addCriterion("name <", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLessThanOrEqualTo(String value) { + addCriterion("name <=", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLike(String value) { + addCriterion("name like", value, "name"); + return (Criteria) this; + } + + public Criteria andNameNotLike(String value) { + addCriterion("name not like", value, "name"); + return (Criteria) this; + } + + public Criteria andNameIn(List values) { + addCriterion("name in", values, "name"); + return (Criteria) this; + } + + public Criteria andNameNotIn(List values) { + addCriterion("name not in", values, "name"); + return (Criteria) this; + } + + public Criteria andNameBetween(String value1, String value2) { + addCriterion("name between", value1, value2, "name"); + return (Criteria) this; + } + + public Criteria andNameNotBetween(String value1, String value2) { + addCriterion("name not between", value1, value2, "name"); + return (Criteria) this; + } + + public Criteria andTypeIsNull() { + addCriterion("type is null"); + return (Criteria) this; + } + + public Criteria andTypeIsNotNull() { + addCriterion("type is not null"); + return (Criteria) this; + } + + public Criteria andTypeEqualTo(String value) { + addCriterion("type =", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotEqualTo(String value) { + addCriterion("type <>", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeGreaterThan(String value) { + addCriterion("type >", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeGreaterThanOrEqualTo(String value) { + addCriterion("type >=", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLessThan(String value) { + addCriterion("type <", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLessThanOrEqualTo(String value) { + addCriterion("type <=", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLike(String value) { + addCriterion("type like", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotLike(String value) { + addCriterion("type not like", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeIn(List values) { + addCriterion("type in", values, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotIn(List values) { + addCriterion("type not in", values, "type"); + return (Criteria) this; + } + + public Criteria andTypeBetween(String value1, String value2) { + addCriterion("type between", value1, value2, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotBetween(String value1, String value2) { + addCriterion("type not between", value1, value2, "type"); + return (Criteria) this; + } + + public Criteria andPriceLimitIsNull() { + addCriterion("price_limit is null"); + return (Criteria) this; + } + + public Criteria andPriceLimitIsNotNull() { + addCriterion("price_limit is not null"); + return (Criteria) this; + } + + public Criteria andPriceLimitEqualTo(String value) { + addCriterion("price_limit =", value, "priceLimit"); + return (Criteria) this; + } + + public Criteria andPriceLimitNotEqualTo(String value) { + addCriterion("price_limit <>", value, "priceLimit"); + return (Criteria) this; + } + + public Criteria andPriceLimitGreaterThan(String value) { + addCriterion("price_limit >", value, "priceLimit"); + return (Criteria) this; + } + + public Criteria andPriceLimitGreaterThanOrEqualTo(String value) { + addCriterion("price_limit >=", value, "priceLimit"); + return (Criteria) this; + } + + public Criteria andPriceLimitLessThan(String value) { + addCriterion("price_limit <", value, "priceLimit"); + return (Criteria) this; + } + + public Criteria andPriceLimitLessThanOrEqualTo(String value) { + addCriterion("price_limit <=", value, "priceLimit"); + return (Criteria) this; + } + + public Criteria andPriceLimitLike(String value) { + addCriterion("price_limit like", value, "priceLimit"); + return (Criteria) this; + } + + public Criteria andPriceLimitNotLike(String value) { + addCriterion("price_limit not like", value, "priceLimit"); + return (Criteria) this; + } + + public Criteria andPriceLimitIn(List values) { + addCriterion("price_limit in", values, "priceLimit"); + return (Criteria) this; + } + + public Criteria andPriceLimitNotIn(List values) { + addCriterion("price_limit not in", values, "priceLimit"); + return (Criteria) this; + } + + public Criteria andPriceLimitBetween(String value1, String value2) { + addCriterion("price_limit between", value1, value2, "priceLimit"); + return (Criteria) this; + } + + public Criteria andPriceLimitNotBetween(String value1, String value2) { + addCriterion("price_limit not between", value1, value2, "priceLimit"); + return (Criteria) this; + } + + public Criteria andValueIsNull() { + addCriterion("value is null"); + return (Criteria) this; + } + + public Criteria andValueIsNotNull() { + addCriterion("value is not null"); + return (Criteria) this; + } + + public Criteria andValueEqualTo(String value) { + addCriterion("value =", value, "value"); + return (Criteria) this; + } + + public Criteria andValueNotEqualTo(String value) { + addCriterion("value <>", value, "value"); + return (Criteria) this; + } + + public Criteria andValueGreaterThan(String value) { + addCriterion("value >", value, "value"); + return (Criteria) this; + } + + public Criteria andValueGreaterThanOrEqualTo(String value) { + addCriterion("value >=", value, "value"); + return (Criteria) this; + } + + public Criteria andValueLessThan(String value) { + addCriterion("value <", value, "value"); + return (Criteria) this; + } + + public Criteria andValueLessThanOrEqualTo(String value) { + addCriterion("value <=", value, "value"); + return (Criteria) this; + } + + public Criteria andValueLike(String value) { + addCriterion("value like", value, "value"); + return (Criteria) this; + } + + public Criteria andValueNotLike(String value) { + addCriterion("value not like", value, "value"); + return (Criteria) this; + } + + public Criteria andValueIn(List values) { + addCriterion("value in", values, "value"); + return (Criteria) this; + } + + public Criteria andValueNotIn(List values) { + addCriterion("value not in", values, "value"); + return (Criteria) this; + } + + public Criteria andValueBetween(String value1, String value2) { + addCriterion("value between", value1, value2, "value"); + return (Criteria) this; + } + + public Criteria andValueNotBetween(String value1, String value2) { + addCriterion("value not between", value1, value2, "value"); + return (Criteria) this; + } + + public Criteria andDescriptionIsNull() { + addCriterion("description is null"); + return (Criteria) this; + } + + public Criteria andDescriptionIsNotNull() { + addCriterion("description is not null"); + return (Criteria) this; + } + + public Criteria andDescriptionEqualTo(String value) { + addCriterion("description =", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionNotEqualTo(String value) { + addCriterion("description <>", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionGreaterThan(String value) { + addCriterion("description >", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionGreaterThanOrEqualTo(String value) { + addCriterion("description >=", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionLessThan(String value) { + addCriterion("description <", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionLessThanOrEqualTo(String value) { + addCriterion("description <=", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionLike(String value) { + addCriterion("description like", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionNotLike(String value) { + addCriterion("description not like", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionIn(List values) { + addCriterion("description in", values, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionNotIn(List values) { + addCriterion("description not in", values, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionBetween(String value1, String value2) { + addCriterion("description between", value1, value2, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionNotBetween(String value1, String value2) { + addCriterion("description not between", value1, value2, "description"); + return (Criteria) this; + } + + public Criteria andEnabledIsNull() { + addCriterion("enabled is null"); + return (Criteria) this; + } + + public Criteria andEnabledIsNotNull() { + addCriterion("enabled is not null"); + return (Criteria) this; + } + + public Criteria andEnabledEqualTo(Boolean value) { + addCriterion("enabled =", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledNotEqualTo(Boolean value) { + addCriterion("enabled <>", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledGreaterThan(Boolean value) { + addCriterion("enabled >", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledGreaterThanOrEqualTo(Boolean value) { + addCriterion("enabled >=", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledLessThan(Boolean value) { + addCriterion("enabled <", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledLessThanOrEqualTo(Boolean value) { + addCriterion("enabled <=", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledIn(List values) { + addCriterion("enabled in", values, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledNotIn(List values) { + addCriterion("enabled not in", values, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledBetween(Boolean value1, Boolean value2) { + addCriterion("enabled between", value1, value2, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledNotBetween(Boolean value1, Boolean value2) { + addCriterion("enabled not between", value1, value2, "enabled"); + return (Criteria) this; + } + + public Criteria andSortIsNull() { + addCriterion("sort is null"); + return (Criteria) this; + } + + public Criteria andSortIsNotNull() { + addCriterion("sort is not null"); + return (Criteria) this; + } + + public Criteria andSortEqualTo(String value) { + addCriterion("sort =", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotEqualTo(String value) { + addCriterion("sort <>", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortGreaterThan(String value) { + addCriterion("sort >", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortGreaterThanOrEqualTo(String value) { + addCriterion("sort >=", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortLessThan(String value) { + addCriterion("sort <", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortLessThanOrEqualTo(String value) { + addCriterion("sort <=", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortLike(String value) { + addCriterion("sort like", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotLike(String value) { + addCriterion("sort not like", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortIn(List values) { + addCriterion("sort in", values, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotIn(List values) { + addCriterion("sort not in", values, "sort"); + return (Criteria) this; + } + + public Criteria andSortBetween(String value1, String value2) { + addCriterion("sort between", value1, value2, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotBetween(String value1, String value2) { + addCriterion("sort not between", value1, value2, "sort"); + return (Criteria) this; + } + + public Criteria andTenantIdIsNull() { + addCriterion("tenant_id is null"); + return (Criteria) this; + } + + public Criteria andTenantIdIsNotNull() { + addCriterion("tenant_id is not null"); + return (Criteria) this; + } + + public Criteria andTenantIdEqualTo(Long value) { + addCriterion("tenant_id =", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotEqualTo(Long value) { + addCriterion("tenant_id <>", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdGreaterThan(Long value) { + addCriterion("tenant_id >", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdGreaterThanOrEqualTo(Long value) { + addCriterion("tenant_id >=", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdLessThan(Long value) { + addCriterion("tenant_id <", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdLessThanOrEqualTo(Long value) { + addCriterion("tenant_id <=", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdIn(List values) { + addCriterion("tenant_id in", values, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotIn(List values) { + addCriterion("tenant_id not in", values, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdBetween(Long value1, Long value2) { + addCriterion("tenant_id between", value1, value2, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotBetween(Long value1, Long value2) { + addCriterion("tenant_id not between", value1, value2, "tenantId"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIsNull() { + addCriterion("delete_flag is null"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIsNotNull() { + addCriterion("delete_flag is not null"); + return (Criteria) this; + } + + public Criteria andDeleteFlagEqualTo(String value) { + addCriterion("delete_flag =", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotEqualTo(String value) { + addCriterion("delete_flag <>", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagGreaterThan(String value) { + addCriterion("delete_flag >", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagGreaterThanOrEqualTo(String value) { + addCriterion("delete_flag >=", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLessThan(String value) { + addCriterion("delete_flag <", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLessThanOrEqualTo(String value) { + addCriterion("delete_flag <=", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLike(String value) { + addCriterion("delete_flag like", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotLike(String value) { + addCriterion("delete_flag not like", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIn(List values) { + addCriterion("delete_flag in", values, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotIn(List values) { + addCriterion("delete_flag not in", values, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagBetween(String value1, String value2) { + addCriterion("delete_flag between", value1, value2, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotBetween(String value1, String value2) { + addCriterion("delete_flag not between", value1, value2, "deleteFlag"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/SaleShipment.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/SaleShipment.java new file mode 100644 index 0000000..5289419 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/SaleShipment.java @@ -0,0 +1,270 @@ +package com.reallin.smt.datasource.entities; + +import java.util.Date; + +/** + * 销售/零售发货通知、发货单主表 + */ +public class SaleShipment { + private Long id; + private String shipmentNumber; + private String sourceType; + private Long deliveryPlanId; + private String deliveryPlanNumber; + private Long saleOutId; + private String saleOutNumber; + private String saleOrderNumber; + private Long customerId; + private String status; + private Date plannedShipTime; + private String logisticsCompany; + private String logisticsNo; + private String receiver; + private String receiverPhone; + private String receiverAddress; + private String noticeRemark; + private Long approveBy; + private Date approveTime; + private String approveRemark; + private Long shipBy; + private Date shipTime; + private Long confirmBy; + private Date confirmTime; + private String differenceRemark; + private Date createTime; + private Long creator; + private Long tenantId; + private String deleteFlag; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getShipmentNumber() { + return shipmentNumber; + } + + public void setShipmentNumber(String shipmentNumber) { + this.shipmentNumber = shipmentNumber == null ? null : shipmentNumber.trim(); + } + + public String getSourceType() { + return sourceType; + } + + public void setSourceType(String sourceType) { + this.sourceType = sourceType == null ? null : sourceType.trim(); + } + + public Long getDeliveryPlanId() { + return deliveryPlanId; + } + + public void setDeliveryPlanId(Long deliveryPlanId) { + this.deliveryPlanId = deliveryPlanId; + } + + public String getDeliveryPlanNumber() { + return deliveryPlanNumber; + } + + public void setDeliveryPlanNumber(String deliveryPlanNumber) { + this.deliveryPlanNumber = deliveryPlanNumber == null ? null : deliveryPlanNumber.trim(); + } + + public Long getSaleOutId() { + return saleOutId; + } + + public void setSaleOutId(Long saleOutId) { + this.saleOutId = saleOutId; + } + + public String getSaleOutNumber() { + return saleOutNumber; + } + + public void setSaleOutNumber(String saleOutNumber) { + this.saleOutNumber = saleOutNumber == null ? null : saleOutNumber.trim(); + } + + public String getSaleOrderNumber() { + return saleOrderNumber; + } + + public void setSaleOrderNumber(String saleOrderNumber) { + this.saleOrderNumber = saleOrderNumber == null ? null : saleOrderNumber.trim(); + } + + public Long getCustomerId() { + return customerId; + } + + public void setCustomerId(Long customerId) { + this.customerId = customerId; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status == null ? null : status.trim(); + } + + public Date getPlannedShipTime() { + return plannedShipTime; + } + + public void setPlannedShipTime(Date plannedShipTime) { + this.plannedShipTime = plannedShipTime; + } + + public String getLogisticsCompany() { + return logisticsCompany; + } + + public void setLogisticsCompany(String logisticsCompany) { + this.logisticsCompany = logisticsCompany == null ? null : logisticsCompany.trim(); + } + + public String getLogisticsNo() { + return logisticsNo; + } + + public void setLogisticsNo(String logisticsNo) { + this.logisticsNo = logisticsNo == null ? null : logisticsNo.trim(); + } + + public String getReceiver() { + return receiver; + } + + public void setReceiver(String receiver) { + this.receiver = receiver == null ? null : receiver.trim(); + } + + public String getReceiverPhone() { + return receiverPhone; + } + + public void setReceiverPhone(String receiverPhone) { + this.receiverPhone = receiverPhone == null ? null : receiverPhone.trim(); + } + + public String getReceiverAddress() { + return receiverAddress; + } + + public void setReceiverAddress(String receiverAddress) { + this.receiverAddress = receiverAddress == null ? null : receiverAddress.trim(); + } + + public String getNoticeRemark() { + return noticeRemark; + } + + public void setNoticeRemark(String noticeRemark) { + this.noticeRemark = noticeRemark == null ? null : noticeRemark.trim(); + } + + public Long getApproveBy() { + return approveBy; + } + + public void setApproveBy(Long approveBy) { + this.approveBy = approveBy; + } + + public Date getApproveTime() { + return approveTime; + } + + public void setApproveTime(Date approveTime) { + this.approveTime = approveTime; + } + + public String getApproveRemark() { + return approveRemark; + } + + public void setApproveRemark(String approveRemark) { + this.approveRemark = approveRemark == null ? null : approveRemark.trim(); + } + + public Long getShipBy() { + return shipBy; + } + + public void setShipBy(Long shipBy) { + this.shipBy = shipBy; + } + + public Date getShipTime() { + return shipTime; + } + + public void setShipTime(Date shipTime) { + this.shipTime = shipTime; + } + + public Long getConfirmBy() { + return confirmBy; + } + + public void setConfirmBy(Long confirmBy) { + this.confirmBy = confirmBy; + } + + public Date getConfirmTime() { + return confirmTime; + } + + public void setConfirmTime(Date confirmTime) { + this.confirmTime = confirmTime; + } + + public String getDifferenceRemark() { + return differenceRemark; + } + + public void setDifferenceRemark(String differenceRemark) { + this.differenceRemark = differenceRemark == null ? null : differenceRemark.trim(); + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Long getCreator() { + return creator; + } + + public void setCreator(Long creator) { + this.creator = creator; + } + + public Long getTenantId() { + return tenantId; + } + + public void setTenantId(Long tenantId) { + this.tenantId = tenantId; + } + + public String getDeleteFlag() { + return deleteFlag; + } + + public void setDeleteFlag(String deleteFlag) { + this.deleteFlag = deleteFlag == null ? null : deleteFlag.trim(); + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/SaleShipmentItem.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/SaleShipmentItem.java new file mode 100644 index 0000000..277f18d --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/SaleShipmentItem.java @@ -0,0 +1,198 @@ +package com.reallin.smt.datasource.entities; + +import java.math.BigDecimal; + +/** + * 销售/零售发货明细 + */ +public class SaleShipmentItem { + private Long id; + private Long shipmentId; + private Long deliveryPlanItemId; + private Long saleOutItemId; + private Long materialId; + private Long materialExtendId; + private String barCode; + private String materialName; + private String standard; + private String model; + private String unit; + private String batchNumber; + private String snList; + private BigDecimal planQuantity; + private BigDecimal actualQuantity; + private BigDecimal shippedQuantity; + private BigDecimal differenceQuantity; + private Long depotId; + private String remark; + private Long tenantId; + private String deleteFlag; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getShipmentId() { + return shipmentId; + } + + public void setShipmentId(Long shipmentId) { + this.shipmentId = shipmentId; + } + + public Long getDeliveryPlanItemId() { + return deliveryPlanItemId; + } + + public void setDeliveryPlanItemId(Long deliveryPlanItemId) { + this.deliveryPlanItemId = deliveryPlanItemId; + } + + public Long getSaleOutItemId() { + return saleOutItemId; + } + + public void setSaleOutItemId(Long saleOutItemId) { + this.saleOutItemId = saleOutItemId; + } + + public Long getMaterialId() { + return materialId; + } + + public void setMaterialId(Long materialId) { + this.materialId = materialId; + } + + public Long getMaterialExtendId() { + return materialExtendId; + } + + public void setMaterialExtendId(Long materialExtendId) { + this.materialExtendId = materialExtendId; + } + + public String getBarCode() { + return barCode; + } + + public void setBarCode(String barCode) { + this.barCode = barCode == null ? null : barCode.trim(); + } + + public String getMaterialName() { + return materialName; + } + + public void setMaterialName(String materialName) { + this.materialName = materialName == null ? null : materialName.trim(); + } + + public String getStandard() { + return standard; + } + + public void setStandard(String standard) { + this.standard = standard == null ? null : standard.trim(); + } + + public String getModel() { + return model; + } + + public void setModel(String model) { + this.model = model == null ? null : model.trim(); + } + + public String getUnit() { + return unit; + } + + public void setUnit(String unit) { + this.unit = unit == null ? null : unit.trim(); + } + + public String getBatchNumber() { + return batchNumber; + } + + public void setBatchNumber(String batchNumber) { + this.batchNumber = batchNumber == null ? null : batchNumber.trim(); + } + + public String getSnList() { + return snList; + } + + public void setSnList(String snList) { + this.snList = snList == null ? null : snList.trim(); + } + + public BigDecimal getPlanQuantity() { + return planQuantity; + } + + public void setPlanQuantity(BigDecimal planQuantity) { + this.planQuantity = planQuantity; + } + + public BigDecimal getActualQuantity() { + return actualQuantity; + } + + public void setActualQuantity(BigDecimal actualQuantity) { + this.actualQuantity = actualQuantity; + } + + public BigDecimal getShippedQuantity() { + return shippedQuantity; + } + + public void setShippedQuantity(BigDecimal shippedQuantity) { + this.shippedQuantity = shippedQuantity; + } + + public BigDecimal getDifferenceQuantity() { + return differenceQuantity; + } + + public void setDifferenceQuantity(BigDecimal differenceQuantity) { + this.differenceQuantity = differenceQuantity; + } + + public Long getDepotId() { + return depotId; + } + + public void setDepotId(Long depotId) { + this.depotId = depotId; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark == null ? null : remark.trim(); + } + + public Long getTenantId() { + return tenantId; + } + + public void setTenantId(Long tenantId) { + this.tenantId = tenantId; + } + + public String getDeleteFlag() { + return deleteFlag; + } + + public void setDeleteFlag(String deleteFlag) { + this.deleteFlag = deleteFlag == null ? null : deleteFlag.trim(); + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/SerialNumber.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/SerialNumber.java new file mode 100644 index 0000000..37e81d1 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/SerialNumber.java @@ -0,0 +1,156 @@ +package com.reallin.smt.datasource.entities; + +import java.math.BigDecimal; +import java.util.Date; + +public class SerialNumber { + private Long id; + + private Long materialId; + + private Long depotId; + + private String serialNumber; + + private String isSell; + + private BigDecimal inPrice; + + private String remark; + + private String deleteFlag; + + private Date createTime; + + private Long creator; + + private Date updateTime; + + private Long updater; + + private String inBillNo; + + private String outBillNo; + + private Long tenantId; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getMaterialId() { + return materialId; + } + + public void setMaterialId(Long materialId) { + this.materialId = materialId; + } + + public Long getDepotId() { + return depotId; + } + + public void setDepotId(Long depotId) { + this.depotId = depotId; + } + + public String getSerialNumber() { + return serialNumber; + } + + public void setSerialNumber(String serialNumber) { + this.serialNumber = serialNumber == null ? null : serialNumber.trim(); + } + + public String getIsSell() { + return isSell; + } + + public void setIsSell(String isSell) { + this.isSell = isSell == null ? null : isSell.trim(); + } + + public BigDecimal getInPrice() { + return inPrice; + } + + public void setInPrice(BigDecimal inPrice) { + this.inPrice = inPrice; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark == null ? null : remark.trim(); + } + + public String getDeleteFlag() { + return deleteFlag; + } + + public void setDeleteFlag(String deleteFlag) { + this.deleteFlag = deleteFlag == null ? null : deleteFlag.trim(); + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Long getCreator() { + return creator; + } + + public void setCreator(Long creator) { + this.creator = creator; + } + + public Date getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } + + public Long getUpdater() { + return updater; + } + + public void setUpdater(Long updater) { + this.updater = updater; + } + + public String getInBillNo() { + return inBillNo; + } + + public void setInBillNo(String inBillNo) { + this.inBillNo = inBillNo == null ? null : inBillNo.trim(); + } + + public String getOutBillNo() { + return outBillNo; + } + + public void setOutBillNo(String outBillNo) { + this.outBillNo = outBillNo == null ? null : outBillNo.trim(); + } + + public Long getTenantId() { + return tenantId; + } + + public void setTenantId(Long tenantId) { + this.tenantId = tenantId; + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/SerialNumberEx.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/SerialNumberEx.java new file mode 100644 index 0000000..76e267a --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/SerialNumberEx.java @@ -0,0 +1,110 @@ +package com.reallin.smt.datasource.entities; + +import java.util.Date; + +/** + * Description + * + * @Author: cjl + * @Date: 2019/1/21 17:32 + */ +public class SerialNumberEx extends SerialNumber{ + /** + * 商品条码 + * */ + private String materialCode; + /** + * 商品名称 + * */ + private String materialName; + /** + * 创建者名称 + * */ + private String creatorName; + /** + * 更新者名称 + * */ + private String updaterName; + /**单据编号*/ + private String depotHeadNumber; + /**单据类型(出库入库)*/ + private String depotHeadType; + + private String depotName; + + private String createTimeStr; + + private String updateTimeStr; + + public String getMaterialCode() { + return materialCode; + } + + public void setMaterialCode(String materialCode) { + this.materialCode = materialCode; + } + + public String getMaterialName() { + return materialName; + } + + public void setMaterialName(String materialName) { + this.materialName = materialName; + } + + public String getCreatorName() { + return creatorName; + } + + public void setCreatorName(String creatorName) { + this.creatorName = creatorName; + } + + public String getUpdaterName() { + return updaterName; + } + + public void setUpdaterName(String updaterName) { + this.updaterName = updaterName; + } + + public String getDepotHeadNumber() { + return depotHeadNumber; + } + + public void setDepotHeadNumber(String depotHeadNumber) { + this.depotHeadNumber = depotHeadNumber; + } + + public String getDepotHeadType() { + return depotHeadType; + } + + public void setDepotHeadType(String depotHeadType) { + this.depotHeadType = depotHeadType; + } + + public String getDepotName() { + return depotName; + } + + public void setDepotName(String depotName) { + this.depotName = depotName; + } + + public String getCreateTimeStr() { + return createTimeStr; + } + + public void setCreateTimeStr(String createTimeStr) { + this.createTimeStr = createTimeStr; + } + + public String getUpdateTimeStr() { + return updateTimeStr; + } + + public void setUpdateTimeStr(String updateTimeStr) { + this.updateTimeStr = updateTimeStr; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/SerialNumberExample.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/SerialNumberExample.java new file mode 100644 index 0000000..f393fb7 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/SerialNumberExample.java @@ -0,0 +1,1161 @@ +package com.reallin.smt.datasource.entities; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +public class SerialNumberExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public SerialNumberExample() { + oredCriteria = new ArrayList<>(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList<>(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andMaterialIdIsNull() { + addCriterion("material_id is null"); + return (Criteria) this; + } + + public Criteria andMaterialIdIsNotNull() { + addCriterion("material_id is not null"); + return (Criteria) this; + } + + public Criteria andMaterialIdEqualTo(Long value) { + addCriterion("material_id =", value, "materialId"); + return (Criteria) this; + } + + public Criteria andMaterialIdNotEqualTo(Long value) { + addCriterion("material_id <>", value, "materialId"); + return (Criteria) this; + } + + public Criteria andMaterialIdGreaterThan(Long value) { + addCriterion("material_id >", value, "materialId"); + return (Criteria) this; + } + + public Criteria andMaterialIdGreaterThanOrEqualTo(Long value) { + addCriterion("material_id >=", value, "materialId"); + return (Criteria) this; + } + + public Criteria andMaterialIdLessThan(Long value) { + addCriterion("material_id <", value, "materialId"); + return (Criteria) this; + } + + public Criteria andMaterialIdLessThanOrEqualTo(Long value) { + addCriterion("material_id <=", value, "materialId"); + return (Criteria) this; + } + + public Criteria andMaterialIdIn(List values) { + addCriterion("material_id in", values, "materialId"); + return (Criteria) this; + } + + public Criteria andMaterialIdNotIn(List values) { + addCriterion("material_id not in", values, "materialId"); + return (Criteria) this; + } + + public Criteria andMaterialIdBetween(Long value1, Long value2) { + addCriterion("material_id between", value1, value2, "materialId"); + return (Criteria) this; + } + + public Criteria andMaterialIdNotBetween(Long value1, Long value2) { + addCriterion("material_id not between", value1, value2, "materialId"); + return (Criteria) this; + } + + public Criteria andDepotIdIsNull() { + addCriterion("depot_id is null"); + return (Criteria) this; + } + + public Criteria andDepotIdIsNotNull() { + addCriterion("depot_id is not null"); + return (Criteria) this; + } + + public Criteria andDepotIdEqualTo(Long value) { + addCriterion("depot_id =", value, "depotId"); + return (Criteria) this; + } + + public Criteria andDepotIdNotEqualTo(Long value) { + addCriterion("depot_id <>", value, "depotId"); + return (Criteria) this; + } + + public Criteria andDepotIdGreaterThan(Long value) { + addCriterion("depot_id >", value, "depotId"); + return (Criteria) this; + } + + public Criteria andDepotIdGreaterThanOrEqualTo(Long value) { + addCriterion("depot_id >=", value, "depotId"); + return (Criteria) this; + } + + public Criteria andDepotIdLessThan(Long value) { + addCriterion("depot_id <", value, "depotId"); + return (Criteria) this; + } + + public Criteria andDepotIdLessThanOrEqualTo(Long value) { + addCriterion("depot_id <=", value, "depotId"); + return (Criteria) this; + } + + public Criteria andDepotIdIn(List values) { + addCriterion("depot_id in", values, "depotId"); + return (Criteria) this; + } + + public Criteria andDepotIdNotIn(List values) { + addCriterion("depot_id not in", values, "depotId"); + return (Criteria) this; + } + + public Criteria andDepotIdBetween(Long value1, Long value2) { + addCriterion("depot_id between", value1, value2, "depotId"); + return (Criteria) this; + } + + public Criteria andDepotIdNotBetween(Long value1, Long value2) { + addCriterion("depot_id not between", value1, value2, "depotId"); + return (Criteria) this; + } + + public Criteria andSerialNumberIsNull() { + addCriterion("serial_number is null"); + return (Criteria) this; + } + + public Criteria andSerialNumberIsNotNull() { + addCriterion("serial_number is not null"); + return (Criteria) this; + } + + public Criteria andSerialNumberEqualTo(String value) { + addCriterion("serial_number =", value, "serialNumber"); + return (Criteria) this; + } + + public Criteria andSerialNumberNotEqualTo(String value) { + addCriterion("serial_number <>", value, "serialNumber"); + return (Criteria) this; + } + + public Criteria andSerialNumberGreaterThan(String value) { + addCriterion("serial_number >", value, "serialNumber"); + return (Criteria) this; + } + + public Criteria andSerialNumberGreaterThanOrEqualTo(String value) { + addCriterion("serial_number >=", value, "serialNumber"); + return (Criteria) this; + } + + public Criteria andSerialNumberLessThan(String value) { + addCriterion("serial_number <", value, "serialNumber"); + return (Criteria) this; + } + + public Criteria andSerialNumberLessThanOrEqualTo(String value) { + addCriterion("serial_number <=", value, "serialNumber"); + return (Criteria) this; + } + + public Criteria andSerialNumberLike(String value) { + addCriterion("serial_number like", value, "serialNumber"); + return (Criteria) this; + } + + public Criteria andSerialNumberNotLike(String value) { + addCriterion("serial_number not like", value, "serialNumber"); + return (Criteria) this; + } + + public Criteria andSerialNumberIn(List values) { + addCriterion("serial_number in", values, "serialNumber"); + return (Criteria) this; + } + + public Criteria andSerialNumberNotIn(List values) { + addCriterion("serial_number not in", values, "serialNumber"); + return (Criteria) this; + } + + public Criteria andSerialNumberBetween(String value1, String value2) { + addCriterion("serial_number between", value1, value2, "serialNumber"); + return (Criteria) this; + } + + public Criteria andSerialNumberNotBetween(String value1, String value2) { + addCriterion("serial_number not between", value1, value2, "serialNumber"); + return (Criteria) this; + } + + public Criteria andIsSellIsNull() { + addCriterion("is_sell is null"); + return (Criteria) this; + } + + public Criteria andIsSellIsNotNull() { + addCriterion("is_sell is not null"); + return (Criteria) this; + } + + public Criteria andIsSellEqualTo(String value) { + addCriterion("is_sell =", value, "isSell"); + return (Criteria) this; + } + + public Criteria andIsSellNotEqualTo(String value) { + addCriterion("is_sell <>", value, "isSell"); + return (Criteria) this; + } + + public Criteria andIsSellGreaterThan(String value) { + addCriterion("is_sell >", value, "isSell"); + return (Criteria) this; + } + + public Criteria andIsSellGreaterThanOrEqualTo(String value) { + addCriterion("is_sell >=", value, "isSell"); + return (Criteria) this; + } + + public Criteria andIsSellLessThan(String value) { + addCriterion("is_sell <", value, "isSell"); + return (Criteria) this; + } + + public Criteria andIsSellLessThanOrEqualTo(String value) { + addCriterion("is_sell <=", value, "isSell"); + return (Criteria) this; + } + + public Criteria andIsSellLike(String value) { + addCriterion("is_sell like", value, "isSell"); + return (Criteria) this; + } + + public Criteria andIsSellNotLike(String value) { + addCriterion("is_sell not like", value, "isSell"); + return (Criteria) this; + } + + public Criteria andIsSellIn(List values) { + addCriterion("is_sell in", values, "isSell"); + return (Criteria) this; + } + + public Criteria andIsSellNotIn(List values) { + addCriterion("is_sell not in", values, "isSell"); + return (Criteria) this; + } + + public Criteria andIsSellBetween(String value1, String value2) { + addCriterion("is_sell between", value1, value2, "isSell"); + return (Criteria) this; + } + + public Criteria andIsSellNotBetween(String value1, String value2) { + addCriterion("is_sell not between", value1, value2, "isSell"); + return (Criteria) this; + } + + public Criteria andInPriceIsNull() { + addCriterion("in_price is null"); + return (Criteria) this; + } + + public Criteria andInPriceIsNotNull() { + addCriterion("in_price is not null"); + return (Criteria) this; + } + + public Criteria andInPriceEqualTo(BigDecimal value) { + addCriterion("in_price =", value, "inPrice"); + return (Criteria) this; + } + + public Criteria andInPriceNotEqualTo(BigDecimal value) { + addCriterion("in_price <>", value, "inPrice"); + return (Criteria) this; + } + + public Criteria andInPriceGreaterThan(BigDecimal value) { + addCriterion("in_price >", value, "inPrice"); + return (Criteria) this; + } + + public Criteria andInPriceGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("in_price >=", value, "inPrice"); + return (Criteria) this; + } + + public Criteria andInPriceLessThan(BigDecimal value) { + addCriterion("in_price <", value, "inPrice"); + return (Criteria) this; + } + + public Criteria andInPriceLessThanOrEqualTo(BigDecimal value) { + addCriterion("in_price <=", value, "inPrice"); + return (Criteria) this; + } + + public Criteria andInPriceIn(List values) { + addCriterion("in_price in", values, "inPrice"); + return (Criteria) this; + } + + public Criteria andInPriceNotIn(List values) { + addCriterion("in_price not in", values, "inPrice"); + return (Criteria) this; + } + + public Criteria andInPriceBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("in_price between", value1, value2, "inPrice"); + return (Criteria) this; + } + + public Criteria andInPriceNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("in_price not between", value1, value2, "inPrice"); + return (Criteria) this; + } + + public Criteria andRemarkIsNull() { + addCriterion("remark is null"); + return (Criteria) this; + } + + public Criteria andRemarkIsNotNull() { + addCriterion("remark is not null"); + return (Criteria) this; + } + + public Criteria andRemarkEqualTo(String value) { + addCriterion("remark =", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotEqualTo(String value) { + addCriterion("remark <>", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThan(String value) { + addCriterion("remark >", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThanOrEqualTo(String value) { + addCriterion("remark >=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThan(String value) { + addCriterion("remark <", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThanOrEqualTo(String value) { + addCriterion("remark <=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLike(String value) { + addCriterion("remark like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotLike(String value) { + addCriterion("remark not like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkIn(List values) { + addCriterion("remark in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotIn(List values) { + addCriterion("remark not in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkBetween(String value1, String value2) { + addCriterion("remark between", value1, value2, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotBetween(String value1, String value2) { + addCriterion("remark not between", value1, value2, "remark"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIsNull() { + addCriterion("delete_flag is null"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIsNotNull() { + addCriterion("delete_flag is not null"); + return (Criteria) this; + } + + public Criteria andDeleteFlagEqualTo(String value) { + addCriterion("delete_flag =", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotEqualTo(String value) { + addCriterion("delete_flag <>", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagGreaterThan(String value) { + addCriterion("delete_flag >", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagGreaterThanOrEqualTo(String value) { + addCriterion("delete_flag >=", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLessThan(String value) { + addCriterion("delete_flag <", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLessThanOrEqualTo(String value) { + addCriterion("delete_flag <=", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLike(String value) { + addCriterion("delete_flag like", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotLike(String value) { + addCriterion("delete_flag not like", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIn(List values) { + addCriterion("delete_flag in", values, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotIn(List values) { + addCriterion("delete_flag not in", values, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagBetween(String value1, String value2) { + addCriterion("delete_flag between", value1, value2, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotBetween(String value1, String value2) { + addCriterion("delete_flag not between", value1, value2, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andCreateTimeIsNull() { + addCriterion("create_time is null"); + return (Criteria) this; + } + + public Criteria andCreateTimeIsNotNull() { + addCriterion("create_time is not null"); + return (Criteria) this; + } + + public Criteria andCreateTimeEqualTo(Date value) { + addCriterion("create_time =", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotEqualTo(Date value) { + addCriterion("create_time <>", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeGreaterThan(Date value) { + addCriterion("create_time >", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeGreaterThanOrEqualTo(Date value) { + addCriterion("create_time >=", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeLessThan(Date value) { + addCriterion("create_time <", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeLessThanOrEqualTo(Date value) { + addCriterion("create_time <=", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeIn(List values) { + addCriterion("create_time in", values, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotIn(List values) { + addCriterion("create_time not in", values, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeBetween(Date value1, Date value2) { + addCriterion("create_time between", value1, value2, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotBetween(Date value1, Date value2) { + addCriterion("create_time not between", value1, value2, "createTime"); + return (Criteria) this; + } + + public Criteria andCreatorIsNull() { + addCriterion("creator is null"); + return (Criteria) this; + } + + public Criteria andCreatorIsNotNull() { + addCriterion("creator is not null"); + return (Criteria) this; + } + + public Criteria andCreatorEqualTo(Long value) { + addCriterion("creator =", value, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorNotEqualTo(Long value) { + addCriterion("creator <>", value, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorGreaterThan(Long value) { + addCriterion("creator >", value, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorGreaterThanOrEqualTo(Long value) { + addCriterion("creator >=", value, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorLessThan(Long value) { + addCriterion("creator <", value, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorLessThanOrEqualTo(Long value) { + addCriterion("creator <=", value, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorIn(List values) { + addCriterion("creator in", values, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorNotIn(List values) { + addCriterion("creator not in", values, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorBetween(Long value1, Long value2) { + addCriterion("creator between", value1, value2, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorNotBetween(Long value1, Long value2) { + addCriterion("creator not between", value1, value2, "creator"); + return (Criteria) this; + } + + public Criteria andUpdateTimeIsNull() { + addCriterion("update_time is null"); + return (Criteria) this; + } + + public Criteria andUpdateTimeIsNotNull() { + addCriterion("update_time is not null"); + return (Criteria) this; + } + + public Criteria andUpdateTimeEqualTo(Date value) { + addCriterion("update_time =", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeNotEqualTo(Date value) { + addCriterion("update_time <>", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeGreaterThan(Date value) { + addCriterion("update_time >", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeGreaterThanOrEqualTo(Date value) { + addCriterion("update_time >=", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeLessThan(Date value) { + addCriterion("update_time <", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeLessThanOrEqualTo(Date value) { + addCriterion("update_time <=", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeIn(List values) { + addCriterion("update_time in", values, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeNotIn(List values) { + addCriterion("update_time not in", values, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeBetween(Date value1, Date value2) { + addCriterion("update_time between", value1, value2, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeNotBetween(Date value1, Date value2) { + addCriterion("update_time not between", value1, value2, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdaterIsNull() { + addCriterion("updater is null"); + return (Criteria) this; + } + + public Criteria andUpdaterIsNotNull() { + addCriterion("updater is not null"); + return (Criteria) this; + } + + public Criteria andUpdaterEqualTo(Long value) { + addCriterion("updater =", value, "updater"); + return (Criteria) this; + } + + public Criteria andUpdaterNotEqualTo(Long value) { + addCriterion("updater <>", value, "updater"); + return (Criteria) this; + } + + public Criteria andUpdaterGreaterThan(Long value) { + addCriterion("updater >", value, "updater"); + return (Criteria) this; + } + + public Criteria andUpdaterGreaterThanOrEqualTo(Long value) { + addCriterion("updater >=", value, "updater"); + return (Criteria) this; + } + + public Criteria andUpdaterLessThan(Long value) { + addCriterion("updater <", value, "updater"); + return (Criteria) this; + } + + public Criteria andUpdaterLessThanOrEqualTo(Long value) { + addCriterion("updater <=", value, "updater"); + return (Criteria) this; + } + + public Criteria andUpdaterIn(List values) { + addCriterion("updater in", values, "updater"); + return (Criteria) this; + } + + public Criteria andUpdaterNotIn(List values) { + addCriterion("updater not in", values, "updater"); + return (Criteria) this; + } + + public Criteria andUpdaterBetween(Long value1, Long value2) { + addCriterion("updater between", value1, value2, "updater"); + return (Criteria) this; + } + + public Criteria andUpdaterNotBetween(Long value1, Long value2) { + addCriterion("updater not between", value1, value2, "updater"); + return (Criteria) this; + } + + public Criteria andInBillNoIsNull() { + addCriterion("in_bill_no is null"); + return (Criteria) this; + } + + public Criteria andInBillNoIsNotNull() { + addCriterion("in_bill_no is not null"); + return (Criteria) this; + } + + public Criteria andInBillNoEqualTo(String value) { + addCriterion("in_bill_no =", value, "inBillNo"); + return (Criteria) this; + } + + public Criteria andInBillNoNotEqualTo(String value) { + addCriterion("in_bill_no <>", value, "inBillNo"); + return (Criteria) this; + } + + public Criteria andInBillNoGreaterThan(String value) { + addCriterion("in_bill_no >", value, "inBillNo"); + return (Criteria) this; + } + + public Criteria andInBillNoGreaterThanOrEqualTo(String value) { + addCriterion("in_bill_no >=", value, "inBillNo"); + return (Criteria) this; + } + + public Criteria andInBillNoLessThan(String value) { + addCriterion("in_bill_no <", value, "inBillNo"); + return (Criteria) this; + } + + public Criteria andInBillNoLessThanOrEqualTo(String value) { + addCriterion("in_bill_no <=", value, "inBillNo"); + return (Criteria) this; + } + + public Criteria andInBillNoLike(String value) { + addCriterion("in_bill_no like", value, "inBillNo"); + return (Criteria) this; + } + + public Criteria andInBillNoNotLike(String value) { + addCriterion("in_bill_no not like", value, "inBillNo"); + return (Criteria) this; + } + + public Criteria andInBillNoIn(List values) { + addCriterion("in_bill_no in", values, "inBillNo"); + return (Criteria) this; + } + + public Criteria andInBillNoNotIn(List values) { + addCriterion("in_bill_no not in", values, "inBillNo"); + return (Criteria) this; + } + + public Criteria andInBillNoBetween(String value1, String value2) { + addCriterion("in_bill_no between", value1, value2, "inBillNo"); + return (Criteria) this; + } + + public Criteria andInBillNoNotBetween(String value1, String value2) { + addCriterion("in_bill_no not between", value1, value2, "inBillNo"); + return (Criteria) this; + } + + public Criteria andOutBillNoIsNull() { + addCriterion("out_bill_no is null"); + return (Criteria) this; + } + + public Criteria andOutBillNoIsNotNull() { + addCriterion("out_bill_no is not null"); + return (Criteria) this; + } + + public Criteria andOutBillNoEqualTo(String value) { + addCriterion("out_bill_no =", value, "outBillNo"); + return (Criteria) this; + } + + public Criteria andOutBillNoNotEqualTo(String value) { + addCriterion("out_bill_no <>", value, "outBillNo"); + return (Criteria) this; + } + + public Criteria andOutBillNoGreaterThan(String value) { + addCriterion("out_bill_no >", value, "outBillNo"); + return (Criteria) this; + } + + public Criteria andOutBillNoGreaterThanOrEqualTo(String value) { + addCriterion("out_bill_no >=", value, "outBillNo"); + return (Criteria) this; + } + + public Criteria andOutBillNoLessThan(String value) { + addCriterion("out_bill_no <", value, "outBillNo"); + return (Criteria) this; + } + + public Criteria andOutBillNoLessThanOrEqualTo(String value) { + addCriterion("out_bill_no <=", value, "outBillNo"); + return (Criteria) this; + } + + public Criteria andOutBillNoLike(String value) { + addCriterion("out_bill_no like", value, "outBillNo"); + return (Criteria) this; + } + + public Criteria andOutBillNoNotLike(String value) { + addCriterion("out_bill_no not like", value, "outBillNo"); + return (Criteria) this; + } + + public Criteria andOutBillNoIn(List values) { + addCriterion("out_bill_no in", values, "outBillNo"); + return (Criteria) this; + } + + public Criteria andOutBillNoNotIn(List values) { + addCriterion("out_bill_no not in", values, "outBillNo"); + return (Criteria) this; + } + + public Criteria andOutBillNoBetween(String value1, String value2) { + addCriterion("out_bill_no between", value1, value2, "outBillNo"); + return (Criteria) this; + } + + public Criteria andOutBillNoNotBetween(String value1, String value2) { + addCriterion("out_bill_no not between", value1, value2, "outBillNo"); + return (Criteria) this; + } + + public Criteria andTenantIdIsNull() { + addCriterion("tenant_id is null"); + return (Criteria) this; + } + + public Criteria andTenantIdIsNotNull() { + addCriterion("tenant_id is not null"); + return (Criteria) this; + } + + public Criteria andTenantIdEqualTo(Long value) { + addCriterion("tenant_id =", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotEqualTo(Long value) { + addCriterion("tenant_id <>", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdGreaterThan(Long value) { + addCriterion("tenant_id >", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdGreaterThanOrEqualTo(Long value) { + addCriterion("tenant_id >=", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdLessThan(Long value) { + addCriterion("tenant_id <", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdLessThanOrEqualTo(Long value) { + addCriterion("tenant_id <=", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdIn(List values) { + addCriterion("tenant_id in", values, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotIn(List values) { + addCriterion("tenant_id not in", values, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdBetween(Long value1, Long value2) { + addCriterion("tenant_id between", value1, value2, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotBetween(Long value1, Long value2) { + addCriterion("tenant_id not between", value1, value2, "tenantId"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/Supplier.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/Supplier.java new file mode 100644 index 0000000..e140180 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/Supplier.java @@ -0,0 +1,265 @@ +package com.reallin.smt.datasource.entities; + +import java.math.BigDecimal; + +public class Supplier { + private Long id; + + private String supplier; + + private String contacts; + + private String phoneNum; + + private String email; + + private String description; + + private Byte isystem; + + private String type; + + private Long categoryId; + + private Boolean enabled; + + private BigDecimal advanceIn; + + private BigDecimal beginNeedGet; + + private BigDecimal beginNeedPay; + + private BigDecimal allNeedGet; + + private BigDecimal allNeedPay; + + private String fax; + + private String telephone; + + private String address; + + private String taxNum; + + private String bankName; + + private String accountNumber; + + private BigDecimal taxRate; + + private String sort; + + private Long creator; + + private Long tenantId; + + private String deleteFlag; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getSupplier() { + return supplier; + } + + public void setSupplier(String supplier) { + this.supplier = supplier == null ? null : supplier.trim(); + } + + public String getContacts() { + return contacts; + } + + public void setContacts(String contacts) { + this.contacts = contacts == null ? null : contacts.trim(); + } + + public String getPhoneNum() { + return phoneNum; + } + + public void setPhoneNum(String phoneNum) { + this.phoneNum = phoneNum == null ? null : phoneNum.trim(); + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email == null ? null : email.trim(); + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description == null ? null : description.trim(); + } + + public Byte getIsystem() { + return isystem; + } + + public void setIsystem(Byte isystem) { + this.isystem = isystem; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type == null ? null : type.trim(); + } + + public Long getCategoryId() { + return categoryId; + } + + public void setCategoryId(Long categoryId) { + this.categoryId = categoryId; + } + + public Boolean getEnabled() { + return enabled; + } + + public void setEnabled(Boolean enabled) { + this.enabled = enabled; + } + + public BigDecimal getAdvanceIn() { + return advanceIn; + } + + public void setAdvanceIn(BigDecimal advanceIn) { + this.advanceIn = advanceIn; + } + + public BigDecimal getBeginNeedGet() { + return beginNeedGet; + } + + public void setBeginNeedGet(BigDecimal beginNeedGet) { + this.beginNeedGet = beginNeedGet; + } + + public BigDecimal getBeginNeedPay() { + return beginNeedPay; + } + + public void setBeginNeedPay(BigDecimal beginNeedPay) { + this.beginNeedPay = beginNeedPay; + } + + public BigDecimal getAllNeedGet() { + return allNeedGet; + } + + public void setAllNeedGet(BigDecimal allNeedGet) { + this.allNeedGet = allNeedGet; + } + + public BigDecimal getAllNeedPay() { + return allNeedPay; + } + + public void setAllNeedPay(BigDecimal allNeedPay) { + this.allNeedPay = allNeedPay; + } + + public String getFax() { + return fax; + } + + public void setFax(String fax) { + this.fax = fax == null ? null : fax.trim(); + } + + public String getTelephone() { + return telephone; + } + + public void setTelephone(String telephone) { + this.telephone = telephone == null ? null : telephone.trim(); + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address == null ? null : address.trim(); + } + + public String getTaxNum() { + return taxNum; + } + + public void setTaxNum(String taxNum) { + this.taxNum = taxNum == null ? null : taxNum.trim(); + } + + public String getBankName() { + return bankName; + } + + public void setBankName(String bankName) { + this.bankName = bankName == null ? null : bankName.trim(); + } + + public String getAccountNumber() { + return accountNumber; + } + + public void setAccountNumber(String accountNumber) { + this.accountNumber = accountNumber == null ? null : accountNumber.trim(); + } + + public BigDecimal getTaxRate() { + return taxRate; + } + + public void setTaxRate(BigDecimal taxRate) { + this.taxRate = taxRate; + } + + public String getSort() { + return sort; + } + + public void setSort(String sort) { + this.sort = sort == null ? null : sort.trim(); + } + + public Long getCreator() { + return creator; + } + + public void setCreator(Long creator) { + this.creator = creator; + } + + public Long getTenantId() { + return tenantId; + } + + public void setTenantId(Long tenantId) { + this.tenantId = tenantId; + } + + public String getDeleteFlag() { + return deleteFlag; + } + + public void setDeleteFlag(String deleteFlag) { + this.deleteFlag = deleteFlag == null ? null : deleteFlag.trim(); + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/SupplierExample.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/SupplierExample.java new file mode 100644 index 0000000..8b22847 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/SupplierExample.java @@ -0,0 +1,1840 @@ +package com.reallin.smt.datasource.entities; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + +public class SupplierExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public SupplierExample() { + oredCriteria = new ArrayList<>(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList<>(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andSupplierIsNull() { + addCriterion("supplier is null"); + return (Criteria) this; + } + + public Criteria andSupplierIsNotNull() { + addCriterion("supplier is not null"); + return (Criteria) this; + } + + public Criteria andSupplierEqualTo(String value) { + addCriterion("supplier =", value, "supplier"); + return (Criteria) this; + } + + public Criteria andSupplierNotEqualTo(String value) { + addCriterion("supplier <>", value, "supplier"); + return (Criteria) this; + } + + public Criteria andSupplierGreaterThan(String value) { + addCriterion("supplier >", value, "supplier"); + return (Criteria) this; + } + + public Criteria andSupplierGreaterThanOrEqualTo(String value) { + addCriterion("supplier >=", value, "supplier"); + return (Criteria) this; + } + + public Criteria andSupplierLessThan(String value) { + addCriterion("supplier <", value, "supplier"); + return (Criteria) this; + } + + public Criteria andSupplierLessThanOrEqualTo(String value) { + addCriterion("supplier <=", value, "supplier"); + return (Criteria) this; + } + + public Criteria andSupplierLike(String value) { + addCriterion("supplier like", value, "supplier"); + return (Criteria) this; + } + + public Criteria andSupplierNotLike(String value) { + addCriterion("supplier not like", value, "supplier"); + return (Criteria) this; + } + + public Criteria andSupplierIn(List values) { + addCriterion("supplier in", values, "supplier"); + return (Criteria) this; + } + + public Criteria andSupplierNotIn(List values) { + addCriterion("supplier not in", values, "supplier"); + return (Criteria) this; + } + + public Criteria andSupplierBetween(String value1, String value2) { + addCriterion("supplier between", value1, value2, "supplier"); + return (Criteria) this; + } + + public Criteria andSupplierNotBetween(String value1, String value2) { + addCriterion("supplier not between", value1, value2, "supplier"); + return (Criteria) this; + } + + public Criteria andContactsIsNull() { + addCriterion("contacts is null"); + return (Criteria) this; + } + + public Criteria andContactsIsNotNull() { + addCriterion("contacts is not null"); + return (Criteria) this; + } + + public Criteria andContactsEqualTo(String value) { + addCriterion("contacts =", value, "contacts"); + return (Criteria) this; + } + + public Criteria andContactsNotEqualTo(String value) { + addCriterion("contacts <>", value, "contacts"); + return (Criteria) this; + } + + public Criteria andContactsGreaterThan(String value) { + addCriterion("contacts >", value, "contacts"); + return (Criteria) this; + } + + public Criteria andContactsGreaterThanOrEqualTo(String value) { + addCriterion("contacts >=", value, "contacts"); + return (Criteria) this; + } + + public Criteria andContactsLessThan(String value) { + addCriterion("contacts <", value, "contacts"); + return (Criteria) this; + } + + public Criteria andContactsLessThanOrEqualTo(String value) { + addCriterion("contacts <=", value, "contacts"); + return (Criteria) this; + } + + public Criteria andContactsLike(String value) { + addCriterion("contacts like", value, "contacts"); + return (Criteria) this; + } + + public Criteria andContactsNotLike(String value) { + addCriterion("contacts not like", value, "contacts"); + return (Criteria) this; + } + + public Criteria andContactsIn(List values) { + addCriterion("contacts in", values, "contacts"); + return (Criteria) this; + } + + public Criteria andContactsNotIn(List values) { + addCriterion("contacts not in", values, "contacts"); + return (Criteria) this; + } + + public Criteria andContactsBetween(String value1, String value2) { + addCriterion("contacts between", value1, value2, "contacts"); + return (Criteria) this; + } + + public Criteria andContactsNotBetween(String value1, String value2) { + addCriterion("contacts not between", value1, value2, "contacts"); + return (Criteria) this; + } + + public Criteria andPhoneNumIsNull() { + addCriterion("phone_num is null"); + return (Criteria) this; + } + + public Criteria andPhoneNumIsNotNull() { + addCriterion("phone_num is not null"); + return (Criteria) this; + } + + public Criteria andPhoneNumEqualTo(String value) { + addCriterion("phone_num =", value, "phoneNum"); + return (Criteria) this; + } + + public Criteria andPhoneNumNotEqualTo(String value) { + addCriterion("phone_num <>", value, "phoneNum"); + return (Criteria) this; + } + + public Criteria andPhoneNumGreaterThan(String value) { + addCriterion("phone_num >", value, "phoneNum"); + return (Criteria) this; + } + + public Criteria andPhoneNumGreaterThanOrEqualTo(String value) { + addCriterion("phone_num >=", value, "phoneNum"); + return (Criteria) this; + } + + public Criteria andPhoneNumLessThan(String value) { + addCriterion("phone_num <", value, "phoneNum"); + return (Criteria) this; + } + + public Criteria andPhoneNumLessThanOrEqualTo(String value) { + addCriterion("phone_num <=", value, "phoneNum"); + return (Criteria) this; + } + + public Criteria andPhoneNumLike(String value) { + addCriterion("phone_num like", value, "phoneNum"); + return (Criteria) this; + } + + public Criteria andPhoneNumNotLike(String value) { + addCriterion("phone_num not like", value, "phoneNum"); + return (Criteria) this; + } + + public Criteria andPhoneNumIn(List values) { + addCriterion("phone_num in", values, "phoneNum"); + return (Criteria) this; + } + + public Criteria andPhoneNumNotIn(List values) { + addCriterion("phone_num not in", values, "phoneNum"); + return (Criteria) this; + } + + public Criteria andPhoneNumBetween(String value1, String value2) { + addCriterion("phone_num between", value1, value2, "phoneNum"); + return (Criteria) this; + } + + public Criteria andPhoneNumNotBetween(String value1, String value2) { + addCriterion("phone_num not between", value1, value2, "phoneNum"); + return (Criteria) this; + } + + public Criteria andEmailIsNull() { + addCriterion("email is null"); + return (Criteria) this; + } + + public Criteria andEmailIsNotNull() { + addCriterion("email is not null"); + return (Criteria) this; + } + + public Criteria andEmailEqualTo(String value) { + addCriterion("email =", value, "email"); + return (Criteria) this; + } + + public Criteria andEmailNotEqualTo(String value) { + addCriterion("email <>", value, "email"); + return (Criteria) this; + } + + public Criteria andEmailGreaterThan(String value) { + addCriterion("email >", value, "email"); + return (Criteria) this; + } + + public Criteria andEmailGreaterThanOrEqualTo(String value) { + addCriterion("email >=", value, "email"); + return (Criteria) this; + } + + public Criteria andEmailLessThan(String value) { + addCriterion("email <", value, "email"); + return (Criteria) this; + } + + public Criteria andEmailLessThanOrEqualTo(String value) { + addCriterion("email <=", value, "email"); + return (Criteria) this; + } + + public Criteria andEmailLike(String value) { + addCriterion("email like", value, "email"); + return (Criteria) this; + } + + public Criteria andEmailNotLike(String value) { + addCriterion("email not like", value, "email"); + return (Criteria) this; + } + + public Criteria andEmailIn(List values) { + addCriterion("email in", values, "email"); + return (Criteria) this; + } + + public Criteria andEmailNotIn(List values) { + addCriterion("email not in", values, "email"); + return (Criteria) this; + } + + public Criteria andEmailBetween(String value1, String value2) { + addCriterion("email between", value1, value2, "email"); + return (Criteria) this; + } + + public Criteria andEmailNotBetween(String value1, String value2) { + addCriterion("email not between", value1, value2, "email"); + return (Criteria) this; + } + + public Criteria andDescriptionIsNull() { + addCriterion("description is null"); + return (Criteria) this; + } + + public Criteria andDescriptionIsNotNull() { + addCriterion("description is not null"); + return (Criteria) this; + } + + public Criteria andDescriptionEqualTo(String value) { + addCriterion("description =", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionNotEqualTo(String value) { + addCriterion("description <>", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionGreaterThan(String value) { + addCriterion("description >", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionGreaterThanOrEqualTo(String value) { + addCriterion("description >=", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionLessThan(String value) { + addCriterion("description <", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionLessThanOrEqualTo(String value) { + addCriterion("description <=", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionLike(String value) { + addCriterion("description like", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionNotLike(String value) { + addCriterion("description not like", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionIn(List values) { + addCriterion("description in", values, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionNotIn(List values) { + addCriterion("description not in", values, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionBetween(String value1, String value2) { + addCriterion("description between", value1, value2, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionNotBetween(String value1, String value2) { + addCriterion("description not between", value1, value2, "description"); + return (Criteria) this; + } + + public Criteria andIsystemIsNull() { + addCriterion("isystem is null"); + return (Criteria) this; + } + + public Criteria andIsystemIsNotNull() { + addCriterion("isystem is not null"); + return (Criteria) this; + } + + public Criteria andIsystemEqualTo(Byte value) { + addCriterion("isystem =", value, "isystem"); + return (Criteria) this; + } + + public Criteria andIsystemNotEqualTo(Byte value) { + addCriterion("isystem <>", value, "isystem"); + return (Criteria) this; + } + + public Criteria andIsystemGreaterThan(Byte value) { + addCriterion("isystem >", value, "isystem"); + return (Criteria) this; + } + + public Criteria andIsystemGreaterThanOrEqualTo(Byte value) { + addCriterion("isystem >=", value, "isystem"); + return (Criteria) this; + } + + public Criteria andIsystemLessThan(Byte value) { + addCriterion("isystem <", value, "isystem"); + return (Criteria) this; + } + + public Criteria andIsystemLessThanOrEqualTo(Byte value) { + addCriterion("isystem <=", value, "isystem"); + return (Criteria) this; + } + + public Criteria andIsystemIn(List values) { + addCriterion("isystem in", values, "isystem"); + return (Criteria) this; + } + + public Criteria andIsystemNotIn(List values) { + addCriterion("isystem not in", values, "isystem"); + return (Criteria) this; + } + + public Criteria andIsystemBetween(Byte value1, Byte value2) { + addCriterion("isystem between", value1, value2, "isystem"); + return (Criteria) this; + } + + public Criteria andIsystemNotBetween(Byte value1, Byte value2) { + addCriterion("isystem not between", value1, value2, "isystem"); + return (Criteria) this; + } + + public Criteria andTypeIsNull() { + addCriterion("type is null"); + return (Criteria) this; + } + + public Criteria andTypeIsNotNull() { + addCriterion("type is not null"); + return (Criteria) this; + } + + public Criteria andTypeEqualTo(String value) { + addCriterion("type =", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotEqualTo(String value) { + addCriterion("type <>", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeGreaterThan(String value) { + addCriterion("type >", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeGreaterThanOrEqualTo(String value) { + addCriterion("type >=", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLessThan(String value) { + addCriterion("type <", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLessThanOrEqualTo(String value) { + addCriterion("type <=", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLike(String value) { + addCriterion("type like", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotLike(String value) { + addCriterion("type not like", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeIn(List values) { + addCriterion("type in", values, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotIn(List values) { + addCriterion("type not in", values, "type"); + return (Criteria) this; + } + + public Criteria andTypeBetween(String value1, String value2) { + addCriterion("type between", value1, value2, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotBetween(String value1, String value2) { + addCriterion("type not between", value1, value2, "type"); + return (Criteria) this; + } + + public Criteria andEnabledIsNull() { + addCriterion("enabled is null"); + return (Criteria) this; + } + + public Criteria andEnabledIsNotNull() { + addCriterion("enabled is not null"); + return (Criteria) this; + } + + public Criteria andEnabledEqualTo(Boolean value) { + addCriterion("enabled =", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledNotEqualTo(Boolean value) { + addCriterion("enabled <>", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledGreaterThan(Boolean value) { + addCriterion("enabled >", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledGreaterThanOrEqualTo(Boolean value) { + addCriterion("enabled >=", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledLessThan(Boolean value) { + addCriterion("enabled <", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledLessThanOrEqualTo(Boolean value) { + addCriterion("enabled <=", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledIn(List values) { + addCriterion("enabled in", values, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledNotIn(List values) { + addCriterion("enabled not in", values, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledBetween(Boolean value1, Boolean value2) { + addCriterion("enabled between", value1, value2, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledNotBetween(Boolean value1, Boolean value2) { + addCriterion("enabled not between", value1, value2, "enabled"); + return (Criteria) this; + } + + public Criteria andAdvanceInIsNull() { + addCriterion("advance_in is null"); + return (Criteria) this; + } + + public Criteria andAdvanceInIsNotNull() { + addCriterion("advance_in is not null"); + return (Criteria) this; + } + + public Criteria andAdvanceInEqualTo(BigDecimal value) { + addCriterion("advance_in =", value, "advanceIn"); + return (Criteria) this; + } + + public Criteria andAdvanceInNotEqualTo(BigDecimal value) { + addCriterion("advance_in <>", value, "advanceIn"); + return (Criteria) this; + } + + public Criteria andAdvanceInGreaterThan(BigDecimal value) { + addCriterion("advance_in >", value, "advanceIn"); + return (Criteria) this; + } + + public Criteria andAdvanceInGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("advance_in >=", value, "advanceIn"); + return (Criteria) this; + } + + public Criteria andAdvanceInLessThan(BigDecimal value) { + addCriterion("advance_in <", value, "advanceIn"); + return (Criteria) this; + } + + public Criteria andAdvanceInLessThanOrEqualTo(BigDecimal value) { + addCriterion("advance_in <=", value, "advanceIn"); + return (Criteria) this; + } + + public Criteria andAdvanceInIn(List values) { + addCriterion("advance_in in", values, "advanceIn"); + return (Criteria) this; + } + + public Criteria andAdvanceInNotIn(List values) { + addCriterion("advance_in not in", values, "advanceIn"); + return (Criteria) this; + } + + public Criteria andAdvanceInBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("advance_in between", value1, value2, "advanceIn"); + return (Criteria) this; + } + + public Criteria andAdvanceInNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("advance_in not between", value1, value2, "advanceIn"); + return (Criteria) this; + } + + public Criteria andBeginNeedGetIsNull() { + addCriterion("begin_need_get is null"); + return (Criteria) this; + } + + public Criteria andBeginNeedGetIsNotNull() { + addCriterion("begin_need_get is not null"); + return (Criteria) this; + } + + public Criteria andBeginNeedGetEqualTo(BigDecimal value) { + addCriterion("begin_need_get =", value, "beginNeedGet"); + return (Criteria) this; + } + + public Criteria andBeginNeedGetNotEqualTo(BigDecimal value) { + addCriterion("begin_need_get <>", value, "beginNeedGet"); + return (Criteria) this; + } + + public Criteria andBeginNeedGetGreaterThan(BigDecimal value) { + addCriterion("begin_need_get >", value, "beginNeedGet"); + return (Criteria) this; + } + + public Criteria andBeginNeedGetGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("begin_need_get >=", value, "beginNeedGet"); + return (Criteria) this; + } + + public Criteria andBeginNeedGetLessThan(BigDecimal value) { + addCriterion("begin_need_get <", value, "beginNeedGet"); + return (Criteria) this; + } + + public Criteria andBeginNeedGetLessThanOrEqualTo(BigDecimal value) { + addCriterion("begin_need_get <=", value, "beginNeedGet"); + return (Criteria) this; + } + + public Criteria andBeginNeedGetIn(List values) { + addCriterion("begin_need_get in", values, "beginNeedGet"); + return (Criteria) this; + } + + public Criteria andBeginNeedGetNotIn(List values) { + addCriterion("begin_need_get not in", values, "beginNeedGet"); + return (Criteria) this; + } + + public Criteria andBeginNeedGetBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("begin_need_get between", value1, value2, "beginNeedGet"); + return (Criteria) this; + } + + public Criteria andBeginNeedGetNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("begin_need_get not between", value1, value2, "beginNeedGet"); + return (Criteria) this; + } + + public Criteria andBeginNeedPayIsNull() { + addCriterion("begin_need_pay is null"); + return (Criteria) this; + } + + public Criteria andBeginNeedPayIsNotNull() { + addCriterion("begin_need_pay is not null"); + return (Criteria) this; + } + + public Criteria andBeginNeedPayEqualTo(BigDecimal value) { + addCriterion("begin_need_pay =", value, "beginNeedPay"); + return (Criteria) this; + } + + public Criteria andBeginNeedPayNotEqualTo(BigDecimal value) { + addCriterion("begin_need_pay <>", value, "beginNeedPay"); + return (Criteria) this; + } + + public Criteria andBeginNeedPayGreaterThan(BigDecimal value) { + addCriterion("begin_need_pay >", value, "beginNeedPay"); + return (Criteria) this; + } + + public Criteria andBeginNeedPayGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("begin_need_pay >=", value, "beginNeedPay"); + return (Criteria) this; + } + + public Criteria andBeginNeedPayLessThan(BigDecimal value) { + addCriterion("begin_need_pay <", value, "beginNeedPay"); + return (Criteria) this; + } + + public Criteria andBeginNeedPayLessThanOrEqualTo(BigDecimal value) { + addCriterion("begin_need_pay <=", value, "beginNeedPay"); + return (Criteria) this; + } + + public Criteria andBeginNeedPayIn(List values) { + addCriterion("begin_need_pay in", values, "beginNeedPay"); + return (Criteria) this; + } + + public Criteria andBeginNeedPayNotIn(List values) { + addCriterion("begin_need_pay not in", values, "beginNeedPay"); + return (Criteria) this; + } + + public Criteria andBeginNeedPayBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("begin_need_pay between", value1, value2, "beginNeedPay"); + return (Criteria) this; + } + + public Criteria andBeginNeedPayNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("begin_need_pay not between", value1, value2, "beginNeedPay"); + return (Criteria) this; + } + + public Criteria andAllNeedGetIsNull() { + addCriterion("all_need_get is null"); + return (Criteria) this; + } + + public Criteria andAllNeedGetIsNotNull() { + addCriterion("all_need_get is not null"); + return (Criteria) this; + } + + public Criteria andAllNeedGetEqualTo(BigDecimal value) { + addCriterion("all_need_get =", value, "allNeedGet"); + return (Criteria) this; + } + + public Criteria andAllNeedGetNotEqualTo(BigDecimal value) { + addCriterion("all_need_get <>", value, "allNeedGet"); + return (Criteria) this; + } + + public Criteria andAllNeedGetGreaterThan(BigDecimal value) { + addCriterion("all_need_get >", value, "allNeedGet"); + return (Criteria) this; + } + + public Criteria andAllNeedGetGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("all_need_get >=", value, "allNeedGet"); + return (Criteria) this; + } + + public Criteria andAllNeedGetLessThan(BigDecimal value) { + addCriterion("all_need_get <", value, "allNeedGet"); + return (Criteria) this; + } + + public Criteria andAllNeedGetLessThanOrEqualTo(BigDecimal value) { + addCriterion("all_need_get <=", value, "allNeedGet"); + return (Criteria) this; + } + + public Criteria andAllNeedGetIn(List values) { + addCriterion("all_need_get in", values, "allNeedGet"); + return (Criteria) this; + } + + public Criteria andAllNeedGetNotIn(List values) { + addCriterion("all_need_get not in", values, "allNeedGet"); + return (Criteria) this; + } + + public Criteria andAllNeedGetBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("all_need_get between", value1, value2, "allNeedGet"); + return (Criteria) this; + } + + public Criteria andAllNeedGetNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("all_need_get not between", value1, value2, "allNeedGet"); + return (Criteria) this; + } + + public Criteria andAllNeedPayIsNull() { + addCriterion("all_need_pay is null"); + return (Criteria) this; + } + + public Criteria andAllNeedPayIsNotNull() { + addCriterion("all_need_pay is not null"); + return (Criteria) this; + } + + public Criteria andAllNeedPayEqualTo(BigDecimal value) { + addCriterion("all_need_pay =", value, "allNeedPay"); + return (Criteria) this; + } + + public Criteria andAllNeedPayNotEqualTo(BigDecimal value) { + addCriterion("all_need_pay <>", value, "allNeedPay"); + return (Criteria) this; + } + + public Criteria andAllNeedPayGreaterThan(BigDecimal value) { + addCriterion("all_need_pay >", value, "allNeedPay"); + return (Criteria) this; + } + + public Criteria andAllNeedPayGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("all_need_pay >=", value, "allNeedPay"); + return (Criteria) this; + } + + public Criteria andAllNeedPayLessThan(BigDecimal value) { + addCriterion("all_need_pay <", value, "allNeedPay"); + return (Criteria) this; + } + + public Criteria andAllNeedPayLessThanOrEqualTo(BigDecimal value) { + addCriterion("all_need_pay <=", value, "allNeedPay"); + return (Criteria) this; + } + + public Criteria andAllNeedPayIn(List values) { + addCriterion("all_need_pay in", values, "allNeedPay"); + return (Criteria) this; + } + + public Criteria andAllNeedPayNotIn(List values) { + addCriterion("all_need_pay not in", values, "allNeedPay"); + return (Criteria) this; + } + + public Criteria andAllNeedPayBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("all_need_pay between", value1, value2, "allNeedPay"); + return (Criteria) this; + } + + public Criteria andAllNeedPayNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("all_need_pay not between", value1, value2, "allNeedPay"); + return (Criteria) this; + } + + public Criteria andFaxIsNull() { + addCriterion("fax is null"); + return (Criteria) this; + } + + public Criteria andFaxIsNotNull() { + addCriterion("fax is not null"); + return (Criteria) this; + } + + public Criteria andFaxEqualTo(String value) { + addCriterion("fax =", value, "fax"); + return (Criteria) this; + } + + public Criteria andFaxNotEqualTo(String value) { + addCriterion("fax <>", value, "fax"); + return (Criteria) this; + } + + public Criteria andFaxGreaterThan(String value) { + addCriterion("fax >", value, "fax"); + return (Criteria) this; + } + + public Criteria andFaxGreaterThanOrEqualTo(String value) { + addCriterion("fax >=", value, "fax"); + return (Criteria) this; + } + + public Criteria andFaxLessThan(String value) { + addCriterion("fax <", value, "fax"); + return (Criteria) this; + } + + public Criteria andFaxLessThanOrEqualTo(String value) { + addCriterion("fax <=", value, "fax"); + return (Criteria) this; + } + + public Criteria andFaxLike(String value) { + addCriterion("fax like", value, "fax"); + return (Criteria) this; + } + + public Criteria andFaxNotLike(String value) { + addCriterion("fax not like", value, "fax"); + return (Criteria) this; + } + + public Criteria andFaxIn(List values) { + addCriterion("fax in", values, "fax"); + return (Criteria) this; + } + + public Criteria andFaxNotIn(List values) { + addCriterion("fax not in", values, "fax"); + return (Criteria) this; + } + + public Criteria andFaxBetween(String value1, String value2) { + addCriterion("fax between", value1, value2, "fax"); + return (Criteria) this; + } + + public Criteria andFaxNotBetween(String value1, String value2) { + addCriterion("fax not between", value1, value2, "fax"); + return (Criteria) this; + } + + public Criteria andTelephoneIsNull() { + addCriterion("telephone is null"); + return (Criteria) this; + } + + public Criteria andTelephoneIsNotNull() { + addCriterion("telephone is not null"); + return (Criteria) this; + } + + public Criteria andTelephoneEqualTo(String value) { + addCriterion("telephone =", value, "telephone"); + return (Criteria) this; + } + + public Criteria andTelephoneNotEqualTo(String value) { + addCriterion("telephone <>", value, "telephone"); + return (Criteria) this; + } + + public Criteria andTelephoneGreaterThan(String value) { + addCriterion("telephone >", value, "telephone"); + return (Criteria) this; + } + + public Criteria andTelephoneGreaterThanOrEqualTo(String value) { + addCriterion("telephone >=", value, "telephone"); + return (Criteria) this; + } + + public Criteria andTelephoneLessThan(String value) { + addCriterion("telephone <", value, "telephone"); + return (Criteria) this; + } + + public Criteria andTelephoneLessThanOrEqualTo(String value) { + addCriterion("telephone <=", value, "telephone"); + return (Criteria) this; + } + + public Criteria andTelephoneLike(String value) { + addCriterion("telephone like", value, "telephone"); + return (Criteria) this; + } + + public Criteria andTelephoneNotLike(String value) { + addCriterion("telephone not like", value, "telephone"); + return (Criteria) this; + } + + public Criteria andTelephoneIn(List values) { + addCriterion("telephone in", values, "telephone"); + return (Criteria) this; + } + + public Criteria andTelephoneNotIn(List values) { + addCriterion("telephone not in", values, "telephone"); + return (Criteria) this; + } + + public Criteria andTelephoneBetween(String value1, String value2) { + addCriterion("telephone between", value1, value2, "telephone"); + return (Criteria) this; + } + + public Criteria andTelephoneNotBetween(String value1, String value2) { + addCriterion("telephone not between", value1, value2, "telephone"); + return (Criteria) this; + } + + public Criteria andAddressIsNull() { + addCriterion("address is null"); + return (Criteria) this; + } + + public Criteria andAddressIsNotNull() { + addCriterion("address is not null"); + return (Criteria) this; + } + + public Criteria andAddressEqualTo(String value) { + addCriterion("address =", value, "address"); + return (Criteria) this; + } + + public Criteria andAddressNotEqualTo(String value) { + addCriterion("address <>", value, "address"); + return (Criteria) this; + } + + public Criteria andAddressGreaterThan(String value) { + addCriterion("address >", value, "address"); + return (Criteria) this; + } + + public Criteria andAddressGreaterThanOrEqualTo(String value) { + addCriterion("address >=", value, "address"); + return (Criteria) this; + } + + public Criteria andAddressLessThan(String value) { + addCriterion("address <", value, "address"); + return (Criteria) this; + } + + public Criteria andAddressLessThanOrEqualTo(String value) { + addCriterion("address <=", value, "address"); + return (Criteria) this; + } + + public Criteria andAddressLike(String value) { + addCriterion("address like", value, "address"); + return (Criteria) this; + } + + public Criteria andAddressNotLike(String value) { + addCriterion("address not like", value, "address"); + return (Criteria) this; + } + + public Criteria andAddressIn(List values) { + addCriterion("address in", values, "address"); + return (Criteria) this; + } + + public Criteria andAddressNotIn(List values) { + addCriterion("address not in", values, "address"); + return (Criteria) this; + } + + public Criteria andAddressBetween(String value1, String value2) { + addCriterion("address between", value1, value2, "address"); + return (Criteria) this; + } + + public Criteria andAddressNotBetween(String value1, String value2) { + addCriterion("address not between", value1, value2, "address"); + return (Criteria) this; + } + + public Criteria andTaxNumIsNull() { + addCriterion("tax_num is null"); + return (Criteria) this; + } + + public Criteria andTaxNumIsNotNull() { + addCriterion("tax_num is not null"); + return (Criteria) this; + } + + public Criteria andTaxNumEqualTo(String value) { + addCriterion("tax_num =", value, "taxNum"); + return (Criteria) this; + } + + public Criteria andTaxNumNotEqualTo(String value) { + addCriterion("tax_num <>", value, "taxNum"); + return (Criteria) this; + } + + public Criteria andTaxNumGreaterThan(String value) { + addCriterion("tax_num >", value, "taxNum"); + return (Criteria) this; + } + + public Criteria andTaxNumGreaterThanOrEqualTo(String value) { + addCriterion("tax_num >=", value, "taxNum"); + return (Criteria) this; + } + + public Criteria andTaxNumLessThan(String value) { + addCriterion("tax_num <", value, "taxNum"); + return (Criteria) this; + } + + public Criteria andTaxNumLessThanOrEqualTo(String value) { + addCriterion("tax_num <=", value, "taxNum"); + return (Criteria) this; + } + + public Criteria andTaxNumLike(String value) { + addCriterion("tax_num like", value, "taxNum"); + return (Criteria) this; + } + + public Criteria andTaxNumNotLike(String value) { + addCriterion("tax_num not like", value, "taxNum"); + return (Criteria) this; + } + + public Criteria andTaxNumIn(List values) { + addCriterion("tax_num in", values, "taxNum"); + return (Criteria) this; + } + + public Criteria andTaxNumNotIn(List values) { + addCriterion("tax_num not in", values, "taxNum"); + return (Criteria) this; + } + + public Criteria andTaxNumBetween(String value1, String value2) { + addCriterion("tax_num between", value1, value2, "taxNum"); + return (Criteria) this; + } + + public Criteria andTaxNumNotBetween(String value1, String value2) { + addCriterion("tax_num not between", value1, value2, "taxNum"); + return (Criteria) this; + } + + public Criteria andBankNameIsNull() { + addCriterion("bank_name is null"); + return (Criteria) this; + } + + public Criteria andBankNameIsNotNull() { + addCriterion("bank_name is not null"); + return (Criteria) this; + } + + public Criteria andBankNameEqualTo(String value) { + addCriterion("bank_name =", value, "bankName"); + return (Criteria) this; + } + + public Criteria andBankNameNotEqualTo(String value) { + addCriterion("bank_name <>", value, "bankName"); + return (Criteria) this; + } + + public Criteria andBankNameGreaterThan(String value) { + addCriterion("bank_name >", value, "bankName"); + return (Criteria) this; + } + + public Criteria andBankNameGreaterThanOrEqualTo(String value) { + addCriterion("bank_name >=", value, "bankName"); + return (Criteria) this; + } + + public Criteria andBankNameLessThan(String value) { + addCriterion("bank_name <", value, "bankName"); + return (Criteria) this; + } + + public Criteria andBankNameLessThanOrEqualTo(String value) { + addCriterion("bank_name <=", value, "bankName"); + return (Criteria) this; + } + + public Criteria andBankNameLike(String value) { + addCriterion("bank_name like", value, "bankName"); + return (Criteria) this; + } + + public Criteria andBankNameNotLike(String value) { + addCriterion("bank_name not like", value, "bankName"); + return (Criteria) this; + } + + public Criteria andBankNameIn(List values) { + addCriterion("bank_name in", values, "bankName"); + return (Criteria) this; + } + + public Criteria andBankNameNotIn(List values) { + addCriterion("bank_name not in", values, "bankName"); + return (Criteria) this; + } + + public Criteria andBankNameBetween(String value1, String value2) { + addCriterion("bank_name between", value1, value2, "bankName"); + return (Criteria) this; + } + + public Criteria andBankNameNotBetween(String value1, String value2) { + addCriterion("bank_name not between", value1, value2, "bankName"); + return (Criteria) this; + } + + public Criteria andAccountNumberIsNull() { + addCriterion("account_number is null"); + return (Criteria) this; + } + + public Criteria andAccountNumberIsNotNull() { + addCriterion("account_number is not null"); + return (Criteria) this; + } + + public Criteria andAccountNumberEqualTo(String value) { + addCriterion("account_number =", value, "accountNumber"); + return (Criteria) this; + } + + public Criteria andAccountNumberNotEqualTo(String value) { + addCriterion("account_number <>", value, "accountNumber"); + return (Criteria) this; + } + + public Criteria andAccountNumberGreaterThan(String value) { + addCriterion("account_number >", value, "accountNumber"); + return (Criteria) this; + } + + public Criteria andAccountNumberGreaterThanOrEqualTo(String value) { + addCriterion("account_number >=", value, "accountNumber"); + return (Criteria) this; + } + + public Criteria andAccountNumberLessThan(String value) { + addCriterion("account_number <", value, "accountNumber"); + return (Criteria) this; + } + + public Criteria andAccountNumberLessThanOrEqualTo(String value) { + addCriterion("account_number <=", value, "accountNumber"); + return (Criteria) this; + } + + public Criteria andAccountNumberLike(String value) { + addCriterion("account_number like", value, "accountNumber"); + return (Criteria) this; + } + + public Criteria andAccountNumberNotLike(String value) { + addCriterion("account_number not like", value, "accountNumber"); + return (Criteria) this; + } + + public Criteria andAccountNumberIn(List values) { + addCriterion("account_number in", values, "accountNumber"); + return (Criteria) this; + } + + public Criteria andAccountNumberNotIn(List values) { + addCriterion("account_number not in", values, "accountNumber"); + return (Criteria) this; + } + + public Criteria andAccountNumberBetween(String value1, String value2) { + addCriterion("account_number between", value1, value2, "accountNumber"); + return (Criteria) this; + } + + public Criteria andAccountNumberNotBetween(String value1, String value2) { + addCriterion("account_number not between", value1, value2, "accountNumber"); + return (Criteria) this; + } + + public Criteria andTaxRateIsNull() { + addCriterion("tax_rate is null"); + return (Criteria) this; + } + + public Criteria andTaxRateIsNotNull() { + addCriterion("tax_rate is not null"); + return (Criteria) this; + } + + public Criteria andTaxRateEqualTo(BigDecimal value) { + addCriterion("tax_rate =", value, "taxRate"); + return (Criteria) this; + } + + public Criteria andTaxRateNotEqualTo(BigDecimal value) { + addCriterion("tax_rate <>", value, "taxRate"); + return (Criteria) this; + } + + public Criteria andTaxRateGreaterThan(BigDecimal value) { + addCriterion("tax_rate >", value, "taxRate"); + return (Criteria) this; + } + + public Criteria andTaxRateGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("tax_rate >=", value, "taxRate"); + return (Criteria) this; + } + + public Criteria andTaxRateLessThan(BigDecimal value) { + addCriterion("tax_rate <", value, "taxRate"); + return (Criteria) this; + } + + public Criteria andTaxRateLessThanOrEqualTo(BigDecimal value) { + addCriterion("tax_rate <=", value, "taxRate"); + return (Criteria) this; + } + + public Criteria andTaxRateIn(List values) { + addCriterion("tax_rate in", values, "taxRate"); + return (Criteria) this; + } + + public Criteria andTaxRateNotIn(List values) { + addCriterion("tax_rate not in", values, "taxRate"); + return (Criteria) this; + } + + public Criteria andTaxRateBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("tax_rate between", value1, value2, "taxRate"); + return (Criteria) this; + } + + public Criteria andTaxRateNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("tax_rate not between", value1, value2, "taxRate"); + return (Criteria) this; + } + + public Criteria andSortIsNull() { + addCriterion("sort is null"); + return (Criteria) this; + } + + public Criteria andSortIsNotNull() { + addCriterion("sort is not null"); + return (Criteria) this; + } + + public Criteria andSortEqualTo(String value) { + addCriterion("sort =", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotEqualTo(String value) { + addCriterion("sort <>", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortGreaterThan(String value) { + addCriterion("sort >", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortGreaterThanOrEqualTo(String value) { + addCriterion("sort >=", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortLessThan(String value) { + addCriterion("sort <", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortLessThanOrEqualTo(String value) { + addCriterion("sort <=", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortLike(String value) { + addCriterion("sort like", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotLike(String value) { + addCriterion("sort not like", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortIn(List values) { + addCriterion("sort in", values, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotIn(List values) { + addCriterion("sort not in", values, "sort"); + return (Criteria) this; + } + + public Criteria andSortBetween(String value1, String value2) { + addCriterion("sort between", value1, value2, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotBetween(String value1, String value2) { + addCriterion("sort not between", value1, value2, "sort"); + return (Criteria) this; + } + + public Criteria andCreatorIsNull() { + addCriterion("creator is null"); + return (Criteria) this; + } + + public Criteria andCreatorIsNotNull() { + addCriterion("creator is not null"); + return (Criteria) this; + } + + public Criteria andCreatorEqualTo(Long value) { + addCriterion("creator =", value, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorNotEqualTo(Long value) { + addCriterion("creator <>", value, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorGreaterThan(Long value) { + addCriterion("creator >", value, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorGreaterThanOrEqualTo(Long value) { + addCriterion("creator >=", value, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorLessThan(Long value) { + addCriterion("creator <", value, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorLessThanOrEqualTo(Long value) { + addCriterion("creator <=", value, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorIn(List values) { + addCriterion("creator in", values, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorNotIn(List values) { + addCriterion("creator not in", values, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorBetween(Long value1, Long value2) { + addCriterion("creator between", value1, value2, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorNotBetween(Long value1, Long value2) { + addCriterion("creator not between", value1, value2, "creator"); + return (Criteria) this; + } + + public Criteria andTenantIdIsNull() { + addCriterion("tenant_id is null"); + return (Criteria) this; + } + + public Criteria andTenantIdIsNotNull() { + addCriterion("tenant_id is not null"); + return (Criteria) this; + } + + public Criteria andTenantIdEqualTo(Long value) { + addCriterion("tenant_id =", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotEqualTo(Long value) { + addCriterion("tenant_id <>", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdGreaterThan(Long value) { + addCriterion("tenant_id >", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdGreaterThanOrEqualTo(Long value) { + addCriterion("tenant_id >=", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdLessThan(Long value) { + addCriterion("tenant_id <", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdLessThanOrEqualTo(Long value) { + addCriterion("tenant_id <=", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdIn(List values) { + addCriterion("tenant_id in", values, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotIn(List values) { + addCriterion("tenant_id not in", values, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdBetween(Long value1, Long value2) { + addCriterion("tenant_id between", value1, value2, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotBetween(Long value1, Long value2) { + addCriterion("tenant_id not between", value1, value2, "tenantId"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIsNull() { + addCriterion("delete_flag is null"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIsNotNull() { + addCriterion("delete_flag is not null"); + return (Criteria) this; + } + + public Criteria andDeleteFlagEqualTo(String value) { + addCriterion("delete_flag =", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotEqualTo(String value) { + addCriterion("delete_flag <>", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagGreaterThan(String value) { + addCriterion("delete_flag >", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagGreaterThanOrEqualTo(String value) { + addCriterion("delete_flag >=", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLessThan(String value) { + addCriterion("delete_flag <", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLessThanOrEqualTo(String value) { + addCriterion("delete_flag <=", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLike(String value) { + addCriterion("delete_flag like", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotLike(String value) { + addCriterion("delete_flag not like", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIn(List values) { + addCriterion("delete_flag in", values, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotIn(List values) { + addCriterion("delete_flag not in", values, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagBetween(String value1, String value2) { + addCriterion("delete_flag between", value1, value2, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotBetween(String value1, String value2) { + addCriterion("delete_flag not between", value1, value2, "deleteFlag"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/SysDictData.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/SysDictData.java new file mode 100644 index 0000000..b51782a --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/SysDictData.java @@ -0,0 +1,150 @@ +package com.reallin.smt.datasource.entities; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Size; + +/** + * 字典数据表 sys_dict_data + * + * @author jishenghua + */ +@ApiModel(value = "SysDictData", description = "字典数据表 sys_dict_data") +public class SysDictData extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** 字典编码 */ + @ApiModelProperty("字典编码") + private Long dictCode; + + /** 字典排序 */ + @ApiModelProperty("字典排序") + private Long dictSort; + + /** 字典标签 */ + @ApiModelProperty("字典标签") + private String dictLabel; + + /** 字典键值 */ + @ApiModelProperty("字典键值") + private String dictValue; + + /** 字典类型 */ + @ApiModelProperty("字典类型") + private String dictType; + + /** 样式属性(其他样式扩展) */ + @ApiModelProperty("样式属性(其他样式扩展)") + private String cssClass; + + /** 表格字典样式 */ + @ApiModelProperty("表格字典样式") + private String listClass; + + /** 是否默认(Y是 N否) */ + @ApiModelProperty("是否默认(Y是 N否)") + private String isDefault; + + /** 状态(0正常 1停用) */ + @ApiModelProperty("状态(0正常 1停用)") + private String status; + + public Long getDictCode() + { + return dictCode; + } + + public void setDictCode(Long dictCode) + { + this.dictCode = dictCode; + } + + public Long getDictSort() + { + return dictSort; + } + + public void setDictSort(Long dictSort) + { + this.dictSort = dictSort; + } + + @NotBlank(message = "字典标签不能为空") + @Size(min = 0, max = 100, message = "字典标签长度不能超过100个字符") + public String getDictLabel() + { + return dictLabel; + } + + public void setDictLabel(String dictLabel) + { + this.dictLabel = dictLabel; + } + + @NotBlank(message = "字典键值不能为空") + @Size(min = 0, max = 100, message = "字典键值长度不能超过100个字符") + public String getDictValue() + { + return dictValue; + } + + public void setDictValue(String dictValue) + { + this.dictValue = dictValue; + } + + @NotBlank(message = "字典类型不能为空") + @Size(min = 0, max = 100, message = "字典类型长度不能超过100个字符") + public String getDictType() + { + return dictType; + } + + public void setDictType(String dictType) + { + this.dictType = dictType; + } + + @Size(min = 0, max = 100, message = "样式属性长度不能超过100个字符") + public String getCssClass() + { + return cssClass; + } + + public void setCssClass(String cssClass) + { + this.cssClass = cssClass; + } + + public String getListClass() + { + return listClass; + } + + public void setListClass(String listClass) + { + this.listClass = listClass; + } + + public String getIsDefault() + { + return isDefault; + } + + public void setIsDefault(String isDefault) + { + this.isDefault = isDefault; + } + + public String getStatus() + { + return status; + } + + public void setStatus(String status) + { + this.status = status; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/SysDictType.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/SysDictType.java new file mode 100644 index 0000000..3050afa --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/SysDictType.java @@ -0,0 +1,89 @@ +package com.reallin.smt.datasource.entities; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Pattern; +import javax.validation.constraints.Size; + +/** + * 字典类型表 sys_dict_type + * + * @author jishenghua + */ +@ApiModel(value = "SysDictType", description = "字典类型表 sys_dict_type") +public class SysDictType extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** 字典主键 */ + @ApiModelProperty("字典主键") + private Long dictId; + + /** 字典名称 */ + @ApiModelProperty("字典名称") + private String dictName; + + /** 字典类型 */ + @ApiModelProperty("字典类型") + private String dictType; + + /** 状态(0正常 1停用) */ + @ApiModelProperty("状态(0正常 1停用)") + private String status; + + private String deleteFlag; + + public Long getDictId() + { + return dictId; + } + + public void setDictId(Long dictId) + { + this.dictId = dictId; + } + + @NotBlank(message = "字典名称不能为空") + @Size(min = 0, max = 100, message = "字典类型名称长度不能超过100个字符") + public String getDictName() + { + return dictName; + } + + public void setDictName(String dictName) + { + this.dictName = dictName; + } + + @NotBlank(message = "字典类型不能为空") + @Size(min = 0, max = 100, message = "字典类型类型长度不能超过100个字符") + @Pattern(regexp = "^[a-z][a-z0-9_]*$", message = "字典类型必须以字母开头,且只能为(小写字母,数字,下滑线)") + public String getDictType() + { + return dictType; + } + + public void setDictType(String dictType) + { + this.dictType = dictType; + } + + public String getStatus() + { + return status; + } + + public void setStatus(String status) + { + this.status = status; + } + + public String getDeleteFlag() { + return deleteFlag; + } + + public void setDeleteFlag(String deleteFlag) { + this.deleteFlag = deleteFlag; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/SysLoginModel.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/SysLoginModel.java new file mode 100644 index 0000000..fc0776a --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/SysLoginModel.java @@ -0,0 +1,55 @@ +package com.reallin.smt.datasource.entities; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +/** + * 登录表单 + * + * @Author scott + * @since 2019-01-18 + */ +@ApiModel(value="登录对象", description="登录对象") +public class SysLoginModel { + @ApiModelProperty(value = "账号") + private String username; + @ApiModelProperty(value = "密码") + private String password; + @ApiModelProperty(value = "验证码") + private String captcha; + @ApiModelProperty(value = "验证码key") + private String checkKey; + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getCaptcha() { + return captcha; + } + + public void setCaptcha(String captcha) { + this.captcha = captcha; + } + + public String getCheckKey() { + return checkKey; + } + + public void setCheckKey(String checkKey) { + this.checkKey = checkKey; + } + +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/SystemConfig.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/SystemConfig.java new file mode 100644 index 0000000..7078ffb --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/SystemConfig.java @@ -0,0 +1,263 @@ +package com.reallin.smt.datasource.entities; + +public class SystemConfig { + private Long id; + + private String companyName; + + private String companyContacts; + + private String companyAddress; + + private String companyTel; + + private String companyFax; + + private String companyPostCode; + + private String saleAgreement; + + private String depotFlag; + + private String customerFlag; + + private String minusStockFlag; + + private String purchaseBySaleFlag; + + private String multiLevelApprovalFlag; + + private String multiBillType; + + private String forceApprovalFlag; + + private String updateUnitPriceFlag; + + private String overLinkBillFlag; + + private String inOutManageFlag; + + private String multiAccountFlag; + + private String moveAvgPriceFlag; + + private String auditPrintFlag; + + private String zeroChangeAmountFlag; + + private String customerStaticPriceFlag; + + private String materialPriceTaxFlag; + + private Long tenantId; + + private String deleteFlag; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getCompanyName() { + return companyName; + } + + public void setCompanyName(String companyName) { + this.companyName = companyName == null ? null : companyName.trim(); + } + + public String getCompanyContacts() { + return companyContacts; + } + + public void setCompanyContacts(String companyContacts) { + this.companyContacts = companyContacts == null ? null : companyContacts.trim(); + } + + public String getCompanyAddress() { + return companyAddress; + } + + public void setCompanyAddress(String companyAddress) { + this.companyAddress = companyAddress == null ? null : companyAddress.trim(); + } + + public String getCompanyTel() { + return companyTel; + } + + public void setCompanyTel(String companyTel) { + this.companyTel = companyTel == null ? null : companyTel.trim(); + } + + public String getCompanyFax() { + return companyFax; + } + + public void setCompanyFax(String companyFax) { + this.companyFax = companyFax == null ? null : companyFax.trim(); + } + + public String getCompanyPostCode() { + return companyPostCode; + } + + public void setCompanyPostCode(String companyPostCode) { + this.companyPostCode = companyPostCode == null ? null : companyPostCode.trim(); + } + + public String getSaleAgreement() { + return saleAgreement; + } + + public void setSaleAgreement(String saleAgreement) { + this.saleAgreement = saleAgreement == null ? null : saleAgreement.trim(); + } + + public String getDepotFlag() { + return depotFlag; + } + + public void setDepotFlag(String depotFlag) { + this.depotFlag = depotFlag == null ? null : depotFlag.trim(); + } + + public String getCustomerFlag() { + return customerFlag; + } + + public void setCustomerFlag(String customerFlag) { + this.customerFlag = customerFlag == null ? null : customerFlag.trim(); + } + + public String getMinusStockFlag() { + return minusStockFlag; + } + + public void setMinusStockFlag(String minusStockFlag) { + this.minusStockFlag = minusStockFlag == null ? null : minusStockFlag.trim(); + } + + public String getPurchaseBySaleFlag() { + return purchaseBySaleFlag; + } + + public void setPurchaseBySaleFlag(String purchaseBySaleFlag) { + this.purchaseBySaleFlag = purchaseBySaleFlag == null ? null : purchaseBySaleFlag.trim(); + } + + public String getMultiLevelApprovalFlag() { + return multiLevelApprovalFlag; + } + + public void setMultiLevelApprovalFlag(String multiLevelApprovalFlag) { + this.multiLevelApprovalFlag = multiLevelApprovalFlag == null ? null : multiLevelApprovalFlag.trim(); + } + + public String getMultiBillType() { + return multiBillType; + } + + public void setMultiBillType(String multiBillType) { + this.multiBillType = multiBillType == null ? null : multiBillType.trim(); + } + + public String getForceApprovalFlag() { + return forceApprovalFlag; + } + + public void setForceApprovalFlag(String forceApprovalFlag) { + this.forceApprovalFlag = forceApprovalFlag == null ? null : forceApprovalFlag.trim(); + } + + public String getUpdateUnitPriceFlag() { + return updateUnitPriceFlag; + } + + public void setUpdateUnitPriceFlag(String updateUnitPriceFlag) { + this.updateUnitPriceFlag = updateUnitPriceFlag == null ? null : updateUnitPriceFlag.trim(); + } + + public String getOverLinkBillFlag() { + return overLinkBillFlag; + } + + public void setOverLinkBillFlag(String overLinkBillFlag) { + this.overLinkBillFlag = overLinkBillFlag == null ? null : overLinkBillFlag.trim(); + } + + public String getInOutManageFlag() { + return inOutManageFlag; + } + + public void setInOutManageFlag(String inOutManageFlag) { + this.inOutManageFlag = inOutManageFlag == null ? null : inOutManageFlag.trim(); + } + + public String getMultiAccountFlag() { + return multiAccountFlag; + } + + public void setMultiAccountFlag(String multiAccountFlag) { + this.multiAccountFlag = multiAccountFlag == null ? null : multiAccountFlag.trim(); + } + + public String getMoveAvgPriceFlag() { + return moveAvgPriceFlag; + } + + public void setMoveAvgPriceFlag(String moveAvgPriceFlag) { + this.moveAvgPriceFlag = moveAvgPriceFlag == null ? null : moveAvgPriceFlag.trim(); + } + + public String getAuditPrintFlag() { + return auditPrintFlag; + } + + public void setAuditPrintFlag(String auditPrintFlag) { + this.auditPrintFlag = auditPrintFlag == null ? null : auditPrintFlag.trim(); + } + + public String getZeroChangeAmountFlag() { + return zeroChangeAmountFlag; + } + + public void setZeroChangeAmountFlag(String zeroChangeAmountFlag) { + this.zeroChangeAmountFlag = zeroChangeAmountFlag == null ? null : zeroChangeAmountFlag.trim(); + } + + public String getCustomerStaticPriceFlag() { + return customerStaticPriceFlag; + } + + public void setCustomerStaticPriceFlag(String customerStaticPriceFlag) { + this.customerStaticPriceFlag = customerStaticPriceFlag == null ? null : customerStaticPriceFlag.trim(); + } + + public String getMaterialPriceTaxFlag() { + return materialPriceTaxFlag; + } + + public void setMaterialPriceTaxFlag(String materialPriceTaxFlag) { + this.materialPriceTaxFlag = materialPriceTaxFlag == null ? null : materialPriceTaxFlag.trim(); + } + + public Long getTenantId() { + return tenantId; + } + + public void setTenantId(Long tenantId) { + this.tenantId = tenantId; + } + + public String getDeleteFlag() { + return deleteFlag; + } + + public void setDeleteFlag(String deleteFlag) { + this.deleteFlag = deleteFlag == null ? null : deleteFlag.trim(); + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/SystemConfigExample.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/SystemConfigExample.java new file mode 100644 index 0000000..0f3f446 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/SystemConfigExample.java @@ -0,0 +1,1999 @@ +package com.reallin.smt.datasource.entities; + +import java.util.ArrayList; +import java.util.List; + +public class SystemConfigExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public SystemConfigExample() { + oredCriteria = new ArrayList<>(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList<>(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andCompanyNameIsNull() { + addCriterion("company_name is null"); + return (Criteria) this; + } + + public Criteria andCompanyNameIsNotNull() { + addCriterion("company_name is not null"); + return (Criteria) this; + } + + public Criteria andCompanyNameEqualTo(String value) { + addCriterion("company_name =", value, "companyName"); + return (Criteria) this; + } + + public Criteria andCompanyNameNotEqualTo(String value) { + addCriterion("company_name <>", value, "companyName"); + return (Criteria) this; + } + + public Criteria andCompanyNameGreaterThan(String value) { + addCriterion("company_name >", value, "companyName"); + return (Criteria) this; + } + + public Criteria andCompanyNameGreaterThanOrEqualTo(String value) { + addCriterion("company_name >=", value, "companyName"); + return (Criteria) this; + } + + public Criteria andCompanyNameLessThan(String value) { + addCriterion("company_name <", value, "companyName"); + return (Criteria) this; + } + + public Criteria andCompanyNameLessThanOrEqualTo(String value) { + addCriterion("company_name <=", value, "companyName"); + return (Criteria) this; + } + + public Criteria andCompanyNameLike(String value) { + addCriterion("company_name like", value, "companyName"); + return (Criteria) this; + } + + public Criteria andCompanyNameNotLike(String value) { + addCriterion("company_name not like", value, "companyName"); + return (Criteria) this; + } + + public Criteria andCompanyNameIn(List values) { + addCriterion("company_name in", values, "companyName"); + return (Criteria) this; + } + + public Criteria andCompanyNameNotIn(List values) { + addCriterion("company_name not in", values, "companyName"); + return (Criteria) this; + } + + public Criteria andCompanyNameBetween(String value1, String value2) { + addCriterion("company_name between", value1, value2, "companyName"); + return (Criteria) this; + } + + public Criteria andCompanyNameNotBetween(String value1, String value2) { + addCriterion("company_name not between", value1, value2, "companyName"); + return (Criteria) this; + } + + public Criteria andCompanyContactsIsNull() { + addCriterion("company_contacts is null"); + return (Criteria) this; + } + + public Criteria andCompanyContactsIsNotNull() { + addCriterion("company_contacts is not null"); + return (Criteria) this; + } + + public Criteria andCompanyContactsEqualTo(String value) { + addCriterion("company_contacts =", value, "companyContacts"); + return (Criteria) this; + } + + public Criteria andCompanyContactsNotEqualTo(String value) { + addCriterion("company_contacts <>", value, "companyContacts"); + return (Criteria) this; + } + + public Criteria andCompanyContactsGreaterThan(String value) { + addCriterion("company_contacts >", value, "companyContacts"); + return (Criteria) this; + } + + public Criteria andCompanyContactsGreaterThanOrEqualTo(String value) { + addCriterion("company_contacts >=", value, "companyContacts"); + return (Criteria) this; + } + + public Criteria andCompanyContactsLessThan(String value) { + addCriterion("company_contacts <", value, "companyContacts"); + return (Criteria) this; + } + + public Criteria andCompanyContactsLessThanOrEqualTo(String value) { + addCriterion("company_contacts <=", value, "companyContacts"); + return (Criteria) this; + } + + public Criteria andCompanyContactsLike(String value) { + addCriterion("company_contacts like", value, "companyContacts"); + return (Criteria) this; + } + + public Criteria andCompanyContactsNotLike(String value) { + addCriterion("company_contacts not like", value, "companyContacts"); + return (Criteria) this; + } + + public Criteria andCompanyContactsIn(List values) { + addCriterion("company_contacts in", values, "companyContacts"); + return (Criteria) this; + } + + public Criteria andCompanyContactsNotIn(List values) { + addCriterion("company_contacts not in", values, "companyContacts"); + return (Criteria) this; + } + + public Criteria andCompanyContactsBetween(String value1, String value2) { + addCriterion("company_contacts between", value1, value2, "companyContacts"); + return (Criteria) this; + } + + public Criteria andCompanyContactsNotBetween(String value1, String value2) { + addCriterion("company_contacts not between", value1, value2, "companyContacts"); + return (Criteria) this; + } + + public Criteria andCompanyAddressIsNull() { + addCriterion("company_address is null"); + return (Criteria) this; + } + + public Criteria andCompanyAddressIsNotNull() { + addCriterion("company_address is not null"); + return (Criteria) this; + } + + public Criteria andCompanyAddressEqualTo(String value) { + addCriterion("company_address =", value, "companyAddress"); + return (Criteria) this; + } + + public Criteria andCompanyAddressNotEqualTo(String value) { + addCriterion("company_address <>", value, "companyAddress"); + return (Criteria) this; + } + + public Criteria andCompanyAddressGreaterThan(String value) { + addCriterion("company_address >", value, "companyAddress"); + return (Criteria) this; + } + + public Criteria andCompanyAddressGreaterThanOrEqualTo(String value) { + addCriterion("company_address >=", value, "companyAddress"); + return (Criteria) this; + } + + public Criteria andCompanyAddressLessThan(String value) { + addCriterion("company_address <", value, "companyAddress"); + return (Criteria) this; + } + + public Criteria andCompanyAddressLessThanOrEqualTo(String value) { + addCriterion("company_address <=", value, "companyAddress"); + return (Criteria) this; + } + + public Criteria andCompanyAddressLike(String value) { + addCriterion("company_address like", value, "companyAddress"); + return (Criteria) this; + } + + public Criteria andCompanyAddressNotLike(String value) { + addCriterion("company_address not like", value, "companyAddress"); + return (Criteria) this; + } + + public Criteria andCompanyAddressIn(List values) { + addCriterion("company_address in", values, "companyAddress"); + return (Criteria) this; + } + + public Criteria andCompanyAddressNotIn(List values) { + addCriterion("company_address not in", values, "companyAddress"); + return (Criteria) this; + } + + public Criteria andCompanyAddressBetween(String value1, String value2) { + addCriterion("company_address between", value1, value2, "companyAddress"); + return (Criteria) this; + } + + public Criteria andCompanyAddressNotBetween(String value1, String value2) { + addCriterion("company_address not between", value1, value2, "companyAddress"); + return (Criteria) this; + } + + public Criteria andCompanyTelIsNull() { + addCriterion("company_tel is null"); + return (Criteria) this; + } + + public Criteria andCompanyTelIsNotNull() { + addCriterion("company_tel is not null"); + return (Criteria) this; + } + + public Criteria andCompanyTelEqualTo(String value) { + addCriterion("company_tel =", value, "companyTel"); + return (Criteria) this; + } + + public Criteria andCompanyTelNotEqualTo(String value) { + addCriterion("company_tel <>", value, "companyTel"); + return (Criteria) this; + } + + public Criteria andCompanyTelGreaterThan(String value) { + addCriterion("company_tel >", value, "companyTel"); + return (Criteria) this; + } + + public Criteria andCompanyTelGreaterThanOrEqualTo(String value) { + addCriterion("company_tel >=", value, "companyTel"); + return (Criteria) this; + } + + public Criteria andCompanyTelLessThan(String value) { + addCriterion("company_tel <", value, "companyTel"); + return (Criteria) this; + } + + public Criteria andCompanyTelLessThanOrEqualTo(String value) { + addCriterion("company_tel <=", value, "companyTel"); + return (Criteria) this; + } + + public Criteria andCompanyTelLike(String value) { + addCriterion("company_tel like", value, "companyTel"); + return (Criteria) this; + } + + public Criteria andCompanyTelNotLike(String value) { + addCriterion("company_tel not like", value, "companyTel"); + return (Criteria) this; + } + + public Criteria andCompanyTelIn(List values) { + addCriterion("company_tel in", values, "companyTel"); + return (Criteria) this; + } + + public Criteria andCompanyTelNotIn(List values) { + addCriterion("company_tel not in", values, "companyTel"); + return (Criteria) this; + } + + public Criteria andCompanyTelBetween(String value1, String value2) { + addCriterion("company_tel between", value1, value2, "companyTel"); + return (Criteria) this; + } + + public Criteria andCompanyTelNotBetween(String value1, String value2) { + addCriterion("company_tel not between", value1, value2, "companyTel"); + return (Criteria) this; + } + + public Criteria andCompanyFaxIsNull() { + addCriterion("company_fax is null"); + return (Criteria) this; + } + + public Criteria andCompanyFaxIsNotNull() { + addCriterion("company_fax is not null"); + return (Criteria) this; + } + + public Criteria andCompanyFaxEqualTo(String value) { + addCriterion("company_fax =", value, "companyFax"); + return (Criteria) this; + } + + public Criteria andCompanyFaxNotEqualTo(String value) { + addCriterion("company_fax <>", value, "companyFax"); + return (Criteria) this; + } + + public Criteria andCompanyFaxGreaterThan(String value) { + addCriterion("company_fax >", value, "companyFax"); + return (Criteria) this; + } + + public Criteria andCompanyFaxGreaterThanOrEqualTo(String value) { + addCriterion("company_fax >=", value, "companyFax"); + return (Criteria) this; + } + + public Criteria andCompanyFaxLessThan(String value) { + addCriterion("company_fax <", value, "companyFax"); + return (Criteria) this; + } + + public Criteria andCompanyFaxLessThanOrEqualTo(String value) { + addCriterion("company_fax <=", value, "companyFax"); + return (Criteria) this; + } + + public Criteria andCompanyFaxLike(String value) { + addCriterion("company_fax like", value, "companyFax"); + return (Criteria) this; + } + + public Criteria andCompanyFaxNotLike(String value) { + addCriterion("company_fax not like", value, "companyFax"); + return (Criteria) this; + } + + public Criteria andCompanyFaxIn(List values) { + addCriterion("company_fax in", values, "companyFax"); + return (Criteria) this; + } + + public Criteria andCompanyFaxNotIn(List values) { + addCriterion("company_fax not in", values, "companyFax"); + return (Criteria) this; + } + + public Criteria andCompanyFaxBetween(String value1, String value2) { + addCriterion("company_fax between", value1, value2, "companyFax"); + return (Criteria) this; + } + + public Criteria andCompanyFaxNotBetween(String value1, String value2) { + addCriterion("company_fax not between", value1, value2, "companyFax"); + return (Criteria) this; + } + + public Criteria andCompanyPostCodeIsNull() { + addCriterion("company_post_code is null"); + return (Criteria) this; + } + + public Criteria andCompanyPostCodeIsNotNull() { + addCriterion("company_post_code is not null"); + return (Criteria) this; + } + + public Criteria andCompanyPostCodeEqualTo(String value) { + addCriterion("company_post_code =", value, "companyPostCode"); + return (Criteria) this; + } + + public Criteria andCompanyPostCodeNotEqualTo(String value) { + addCriterion("company_post_code <>", value, "companyPostCode"); + return (Criteria) this; + } + + public Criteria andCompanyPostCodeGreaterThan(String value) { + addCriterion("company_post_code >", value, "companyPostCode"); + return (Criteria) this; + } + + public Criteria andCompanyPostCodeGreaterThanOrEqualTo(String value) { + addCriterion("company_post_code >=", value, "companyPostCode"); + return (Criteria) this; + } + + public Criteria andCompanyPostCodeLessThan(String value) { + addCriterion("company_post_code <", value, "companyPostCode"); + return (Criteria) this; + } + + public Criteria andCompanyPostCodeLessThanOrEqualTo(String value) { + addCriterion("company_post_code <=", value, "companyPostCode"); + return (Criteria) this; + } + + public Criteria andCompanyPostCodeLike(String value) { + addCriterion("company_post_code like", value, "companyPostCode"); + return (Criteria) this; + } + + public Criteria andCompanyPostCodeNotLike(String value) { + addCriterion("company_post_code not like", value, "companyPostCode"); + return (Criteria) this; + } + + public Criteria andCompanyPostCodeIn(List values) { + addCriterion("company_post_code in", values, "companyPostCode"); + return (Criteria) this; + } + + public Criteria andCompanyPostCodeNotIn(List values) { + addCriterion("company_post_code not in", values, "companyPostCode"); + return (Criteria) this; + } + + public Criteria andCompanyPostCodeBetween(String value1, String value2) { + addCriterion("company_post_code between", value1, value2, "companyPostCode"); + return (Criteria) this; + } + + public Criteria andCompanyPostCodeNotBetween(String value1, String value2) { + addCriterion("company_post_code not between", value1, value2, "companyPostCode"); + return (Criteria) this; + } + + public Criteria andSaleAgreementIsNull() { + addCriterion("sale_agreement is null"); + return (Criteria) this; + } + + public Criteria andSaleAgreementIsNotNull() { + addCriterion("sale_agreement is not null"); + return (Criteria) this; + } + + public Criteria andSaleAgreementEqualTo(String value) { + addCriterion("sale_agreement =", value, "saleAgreement"); + return (Criteria) this; + } + + public Criteria andSaleAgreementNotEqualTo(String value) { + addCriterion("sale_agreement <>", value, "saleAgreement"); + return (Criteria) this; + } + + public Criteria andSaleAgreementGreaterThan(String value) { + addCriterion("sale_agreement >", value, "saleAgreement"); + return (Criteria) this; + } + + public Criteria andSaleAgreementGreaterThanOrEqualTo(String value) { + addCriterion("sale_agreement >=", value, "saleAgreement"); + return (Criteria) this; + } + + public Criteria andSaleAgreementLessThan(String value) { + addCriterion("sale_agreement <", value, "saleAgreement"); + return (Criteria) this; + } + + public Criteria andSaleAgreementLessThanOrEqualTo(String value) { + addCriterion("sale_agreement <=", value, "saleAgreement"); + return (Criteria) this; + } + + public Criteria andSaleAgreementLike(String value) { + addCriterion("sale_agreement like", value, "saleAgreement"); + return (Criteria) this; + } + + public Criteria andSaleAgreementNotLike(String value) { + addCriterion("sale_agreement not like", value, "saleAgreement"); + return (Criteria) this; + } + + public Criteria andSaleAgreementIn(List values) { + addCriterion("sale_agreement in", values, "saleAgreement"); + return (Criteria) this; + } + + public Criteria andSaleAgreementNotIn(List values) { + addCriterion("sale_agreement not in", values, "saleAgreement"); + return (Criteria) this; + } + + public Criteria andSaleAgreementBetween(String value1, String value2) { + addCriterion("sale_agreement between", value1, value2, "saleAgreement"); + return (Criteria) this; + } + + public Criteria andSaleAgreementNotBetween(String value1, String value2) { + addCriterion("sale_agreement not between", value1, value2, "saleAgreement"); + return (Criteria) this; + } + + public Criteria andDepotFlagIsNull() { + addCriterion("depot_flag is null"); + return (Criteria) this; + } + + public Criteria andDepotFlagIsNotNull() { + addCriterion("depot_flag is not null"); + return (Criteria) this; + } + + public Criteria andDepotFlagEqualTo(String value) { + addCriterion("depot_flag =", value, "depotFlag"); + return (Criteria) this; + } + + public Criteria andDepotFlagNotEqualTo(String value) { + addCriterion("depot_flag <>", value, "depotFlag"); + return (Criteria) this; + } + + public Criteria andDepotFlagGreaterThan(String value) { + addCriterion("depot_flag >", value, "depotFlag"); + return (Criteria) this; + } + + public Criteria andDepotFlagGreaterThanOrEqualTo(String value) { + addCriterion("depot_flag >=", value, "depotFlag"); + return (Criteria) this; + } + + public Criteria andDepotFlagLessThan(String value) { + addCriterion("depot_flag <", value, "depotFlag"); + return (Criteria) this; + } + + public Criteria andDepotFlagLessThanOrEqualTo(String value) { + addCriterion("depot_flag <=", value, "depotFlag"); + return (Criteria) this; + } + + public Criteria andDepotFlagLike(String value) { + addCriterion("depot_flag like", value, "depotFlag"); + return (Criteria) this; + } + + public Criteria andDepotFlagNotLike(String value) { + addCriterion("depot_flag not like", value, "depotFlag"); + return (Criteria) this; + } + + public Criteria andDepotFlagIn(List values) { + addCriterion("depot_flag in", values, "depotFlag"); + return (Criteria) this; + } + + public Criteria andDepotFlagNotIn(List values) { + addCriterion("depot_flag not in", values, "depotFlag"); + return (Criteria) this; + } + + public Criteria andDepotFlagBetween(String value1, String value2) { + addCriterion("depot_flag between", value1, value2, "depotFlag"); + return (Criteria) this; + } + + public Criteria andDepotFlagNotBetween(String value1, String value2) { + addCriterion("depot_flag not between", value1, value2, "depotFlag"); + return (Criteria) this; + } + + public Criteria andCustomerFlagIsNull() { + addCriterion("customer_flag is null"); + return (Criteria) this; + } + + public Criteria andCustomerFlagIsNotNull() { + addCriterion("customer_flag is not null"); + return (Criteria) this; + } + + public Criteria andCustomerFlagEqualTo(String value) { + addCriterion("customer_flag =", value, "customerFlag"); + return (Criteria) this; + } + + public Criteria andCustomerFlagNotEqualTo(String value) { + addCriterion("customer_flag <>", value, "customerFlag"); + return (Criteria) this; + } + + public Criteria andCustomerFlagGreaterThan(String value) { + addCriterion("customer_flag >", value, "customerFlag"); + return (Criteria) this; + } + + public Criteria andCustomerFlagGreaterThanOrEqualTo(String value) { + addCriterion("customer_flag >=", value, "customerFlag"); + return (Criteria) this; + } + + public Criteria andCustomerFlagLessThan(String value) { + addCriterion("customer_flag <", value, "customerFlag"); + return (Criteria) this; + } + + public Criteria andCustomerFlagLessThanOrEqualTo(String value) { + addCriterion("customer_flag <=", value, "customerFlag"); + return (Criteria) this; + } + + public Criteria andCustomerFlagLike(String value) { + addCriterion("customer_flag like", value, "customerFlag"); + return (Criteria) this; + } + + public Criteria andCustomerFlagNotLike(String value) { + addCriterion("customer_flag not like", value, "customerFlag"); + return (Criteria) this; + } + + public Criteria andCustomerFlagIn(List values) { + addCriterion("customer_flag in", values, "customerFlag"); + return (Criteria) this; + } + + public Criteria andCustomerFlagNotIn(List values) { + addCriterion("customer_flag not in", values, "customerFlag"); + return (Criteria) this; + } + + public Criteria andCustomerFlagBetween(String value1, String value2) { + addCriterion("customer_flag between", value1, value2, "customerFlag"); + return (Criteria) this; + } + + public Criteria andCustomerFlagNotBetween(String value1, String value2) { + addCriterion("customer_flag not between", value1, value2, "customerFlag"); + return (Criteria) this; + } + + public Criteria andMinusStockFlagIsNull() { + addCriterion("minus_stock_flag is null"); + return (Criteria) this; + } + + public Criteria andMinusStockFlagIsNotNull() { + addCriterion("minus_stock_flag is not null"); + return (Criteria) this; + } + + public Criteria andMinusStockFlagEqualTo(String value) { + addCriterion("minus_stock_flag =", value, "minusStockFlag"); + return (Criteria) this; + } + + public Criteria andMinusStockFlagNotEqualTo(String value) { + addCriterion("minus_stock_flag <>", value, "minusStockFlag"); + return (Criteria) this; + } + + public Criteria andMinusStockFlagGreaterThan(String value) { + addCriterion("minus_stock_flag >", value, "minusStockFlag"); + return (Criteria) this; + } + + public Criteria andMinusStockFlagGreaterThanOrEqualTo(String value) { + addCriterion("minus_stock_flag >=", value, "minusStockFlag"); + return (Criteria) this; + } + + public Criteria andMinusStockFlagLessThan(String value) { + addCriterion("minus_stock_flag <", value, "minusStockFlag"); + return (Criteria) this; + } + + public Criteria andMinusStockFlagLessThanOrEqualTo(String value) { + addCriterion("minus_stock_flag <=", value, "minusStockFlag"); + return (Criteria) this; + } + + public Criteria andMinusStockFlagLike(String value) { + addCriterion("minus_stock_flag like", value, "minusStockFlag"); + return (Criteria) this; + } + + public Criteria andMinusStockFlagNotLike(String value) { + addCriterion("minus_stock_flag not like", value, "minusStockFlag"); + return (Criteria) this; + } + + public Criteria andMinusStockFlagIn(List values) { + addCriterion("minus_stock_flag in", values, "minusStockFlag"); + return (Criteria) this; + } + + public Criteria andMinusStockFlagNotIn(List values) { + addCriterion("minus_stock_flag not in", values, "minusStockFlag"); + return (Criteria) this; + } + + public Criteria andMinusStockFlagBetween(String value1, String value2) { + addCriterion("minus_stock_flag between", value1, value2, "minusStockFlag"); + return (Criteria) this; + } + + public Criteria andMinusStockFlagNotBetween(String value1, String value2) { + addCriterion("minus_stock_flag not between", value1, value2, "minusStockFlag"); + return (Criteria) this; + } + + public Criteria andPurchaseBySaleFlagIsNull() { + addCriterion("purchase_by_sale_flag is null"); + return (Criteria) this; + } + + public Criteria andPurchaseBySaleFlagIsNotNull() { + addCriterion("purchase_by_sale_flag is not null"); + return (Criteria) this; + } + + public Criteria andPurchaseBySaleFlagEqualTo(String value) { + addCriterion("purchase_by_sale_flag =", value, "purchaseBySaleFlag"); + return (Criteria) this; + } + + public Criteria andPurchaseBySaleFlagNotEqualTo(String value) { + addCriterion("purchase_by_sale_flag <>", value, "purchaseBySaleFlag"); + return (Criteria) this; + } + + public Criteria andPurchaseBySaleFlagGreaterThan(String value) { + addCriterion("purchase_by_sale_flag >", value, "purchaseBySaleFlag"); + return (Criteria) this; + } + + public Criteria andPurchaseBySaleFlagGreaterThanOrEqualTo(String value) { + addCriterion("purchase_by_sale_flag >=", value, "purchaseBySaleFlag"); + return (Criteria) this; + } + + public Criteria andPurchaseBySaleFlagLessThan(String value) { + addCriterion("purchase_by_sale_flag <", value, "purchaseBySaleFlag"); + return (Criteria) this; + } + + public Criteria andPurchaseBySaleFlagLessThanOrEqualTo(String value) { + addCriterion("purchase_by_sale_flag <=", value, "purchaseBySaleFlag"); + return (Criteria) this; + } + + public Criteria andPurchaseBySaleFlagLike(String value) { + addCriterion("purchase_by_sale_flag like", value, "purchaseBySaleFlag"); + return (Criteria) this; + } + + public Criteria andPurchaseBySaleFlagNotLike(String value) { + addCriterion("purchase_by_sale_flag not like", value, "purchaseBySaleFlag"); + return (Criteria) this; + } + + public Criteria andPurchaseBySaleFlagIn(List values) { + addCriterion("purchase_by_sale_flag in", values, "purchaseBySaleFlag"); + return (Criteria) this; + } + + public Criteria andPurchaseBySaleFlagNotIn(List values) { + addCriterion("purchase_by_sale_flag not in", values, "purchaseBySaleFlag"); + return (Criteria) this; + } + + public Criteria andPurchaseBySaleFlagBetween(String value1, String value2) { + addCriterion("purchase_by_sale_flag between", value1, value2, "purchaseBySaleFlag"); + return (Criteria) this; + } + + public Criteria andPurchaseBySaleFlagNotBetween(String value1, String value2) { + addCriterion("purchase_by_sale_flag not between", value1, value2, "purchaseBySaleFlag"); + return (Criteria) this; + } + + public Criteria andMultiLevelApprovalFlagIsNull() { + addCriterion("multi_level_approval_flag is null"); + return (Criteria) this; + } + + public Criteria andMultiLevelApprovalFlagIsNotNull() { + addCriterion("multi_level_approval_flag is not null"); + return (Criteria) this; + } + + public Criteria andMultiLevelApprovalFlagEqualTo(String value) { + addCriterion("multi_level_approval_flag =", value, "multiLevelApprovalFlag"); + return (Criteria) this; + } + + public Criteria andMultiLevelApprovalFlagNotEqualTo(String value) { + addCriterion("multi_level_approval_flag <>", value, "multiLevelApprovalFlag"); + return (Criteria) this; + } + + public Criteria andMultiLevelApprovalFlagGreaterThan(String value) { + addCriterion("multi_level_approval_flag >", value, "multiLevelApprovalFlag"); + return (Criteria) this; + } + + public Criteria andMultiLevelApprovalFlagGreaterThanOrEqualTo(String value) { + addCriterion("multi_level_approval_flag >=", value, "multiLevelApprovalFlag"); + return (Criteria) this; + } + + public Criteria andMultiLevelApprovalFlagLessThan(String value) { + addCriterion("multi_level_approval_flag <", value, "multiLevelApprovalFlag"); + return (Criteria) this; + } + + public Criteria andMultiLevelApprovalFlagLessThanOrEqualTo(String value) { + addCriterion("multi_level_approval_flag <=", value, "multiLevelApprovalFlag"); + return (Criteria) this; + } + + public Criteria andMultiLevelApprovalFlagLike(String value) { + addCriterion("multi_level_approval_flag like", value, "multiLevelApprovalFlag"); + return (Criteria) this; + } + + public Criteria andMultiLevelApprovalFlagNotLike(String value) { + addCriterion("multi_level_approval_flag not like", value, "multiLevelApprovalFlag"); + return (Criteria) this; + } + + public Criteria andMultiLevelApprovalFlagIn(List values) { + addCriterion("multi_level_approval_flag in", values, "multiLevelApprovalFlag"); + return (Criteria) this; + } + + public Criteria andMultiLevelApprovalFlagNotIn(List values) { + addCriterion("multi_level_approval_flag not in", values, "multiLevelApprovalFlag"); + return (Criteria) this; + } + + public Criteria andMultiLevelApprovalFlagBetween(String value1, String value2) { + addCriterion("multi_level_approval_flag between", value1, value2, "multiLevelApprovalFlag"); + return (Criteria) this; + } + + public Criteria andMultiLevelApprovalFlagNotBetween(String value1, String value2) { + addCriterion("multi_level_approval_flag not between", value1, value2, "multiLevelApprovalFlag"); + return (Criteria) this; + } + + public Criteria andMultiBillTypeIsNull() { + addCriterion("multi_bill_type is null"); + return (Criteria) this; + } + + public Criteria andMultiBillTypeIsNotNull() { + addCriterion("multi_bill_type is not null"); + return (Criteria) this; + } + + public Criteria andMultiBillTypeEqualTo(String value) { + addCriterion("multi_bill_type =", value, "multiBillType"); + return (Criteria) this; + } + + public Criteria andMultiBillTypeNotEqualTo(String value) { + addCriterion("multi_bill_type <>", value, "multiBillType"); + return (Criteria) this; + } + + public Criteria andMultiBillTypeGreaterThan(String value) { + addCriterion("multi_bill_type >", value, "multiBillType"); + return (Criteria) this; + } + + public Criteria andMultiBillTypeGreaterThanOrEqualTo(String value) { + addCriterion("multi_bill_type >=", value, "multiBillType"); + return (Criteria) this; + } + + public Criteria andMultiBillTypeLessThan(String value) { + addCriterion("multi_bill_type <", value, "multiBillType"); + return (Criteria) this; + } + + public Criteria andMultiBillTypeLessThanOrEqualTo(String value) { + addCriterion("multi_bill_type <=", value, "multiBillType"); + return (Criteria) this; + } + + public Criteria andMultiBillTypeLike(String value) { + addCriterion("multi_bill_type like", value, "multiBillType"); + return (Criteria) this; + } + + public Criteria andMultiBillTypeNotLike(String value) { + addCriterion("multi_bill_type not like", value, "multiBillType"); + return (Criteria) this; + } + + public Criteria andMultiBillTypeIn(List values) { + addCriterion("multi_bill_type in", values, "multiBillType"); + return (Criteria) this; + } + + public Criteria andMultiBillTypeNotIn(List values) { + addCriterion("multi_bill_type not in", values, "multiBillType"); + return (Criteria) this; + } + + public Criteria andMultiBillTypeBetween(String value1, String value2) { + addCriterion("multi_bill_type between", value1, value2, "multiBillType"); + return (Criteria) this; + } + + public Criteria andMultiBillTypeNotBetween(String value1, String value2) { + addCriterion("multi_bill_type not between", value1, value2, "multiBillType"); + return (Criteria) this; + } + + public Criteria andForceApprovalFlagIsNull() { + addCriterion("force_approval_flag is null"); + return (Criteria) this; + } + + public Criteria andForceApprovalFlagIsNotNull() { + addCriterion("force_approval_flag is not null"); + return (Criteria) this; + } + + public Criteria andForceApprovalFlagEqualTo(String value) { + addCriterion("force_approval_flag =", value, "forceApprovalFlag"); + return (Criteria) this; + } + + public Criteria andForceApprovalFlagNotEqualTo(String value) { + addCriterion("force_approval_flag <>", value, "forceApprovalFlag"); + return (Criteria) this; + } + + public Criteria andForceApprovalFlagGreaterThan(String value) { + addCriterion("force_approval_flag >", value, "forceApprovalFlag"); + return (Criteria) this; + } + + public Criteria andForceApprovalFlagGreaterThanOrEqualTo(String value) { + addCriterion("force_approval_flag >=", value, "forceApprovalFlag"); + return (Criteria) this; + } + + public Criteria andForceApprovalFlagLessThan(String value) { + addCriterion("force_approval_flag <", value, "forceApprovalFlag"); + return (Criteria) this; + } + + public Criteria andForceApprovalFlagLessThanOrEqualTo(String value) { + addCriterion("force_approval_flag <=", value, "forceApprovalFlag"); + return (Criteria) this; + } + + public Criteria andForceApprovalFlagLike(String value) { + addCriterion("force_approval_flag like", value, "forceApprovalFlag"); + return (Criteria) this; + } + + public Criteria andForceApprovalFlagNotLike(String value) { + addCriterion("force_approval_flag not like", value, "forceApprovalFlag"); + return (Criteria) this; + } + + public Criteria andForceApprovalFlagIn(List values) { + addCriterion("force_approval_flag in", values, "forceApprovalFlag"); + return (Criteria) this; + } + + public Criteria andForceApprovalFlagNotIn(List values) { + addCriterion("force_approval_flag not in", values, "forceApprovalFlag"); + return (Criteria) this; + } + + public Criteria andForceApprovalFlagBetween(String value1, String value2) { + addCriterion("force_approval_flag between", value1, value2, "forceApprovalFlag"); + return (Criteria) this; + } + + public Criteria andForceApprovalFlagNotBetween(String value1, String value2) { + addCriterion("force_approval_flag not between", value1, value2, "forceApprovalFlag"); + return (Criteria) this; + } + + public Criteria andUpdateUnitPriceFlagIsNull() { + addCriterion("update_unit_price_flag is null"); + return (Criteria) this; + } + + public Criteria andUpdateUnitPriceFlagIsNotNull() { + addCriterion("update_unit_price_flag is not null"); + return (Criteria) this; + } + + public Criteria andUpdateUnitPriceFlagEqualTo(String value) { + addCriterion("update_unit_price_flag =", value, "updateUnitPriceFlag"); + return (Criteria) this; + } + + public Criteria andUpdateUnitPriceFlagNotEqualTo(String value) { + addCriterion("update_unit_price_flag <>", value, "updateUnitPriceFlag"); + return (Criteria) this; + } + + public Criteria andUpdateUnitPriceFlagGreaterThan(String value) { + addCriterion("update_unit_price_flag >", value, "updateUnitPriceFlag"); + return (Criteria) this; + } + + public Criteria andUpdateUnitPriceFlagGreaterThanOrEqualTo(String value) { + addCriterion("update_unit_price_flag >=", value, "updateUnitPriceFlag"); + return (Criteria) this; + } + + public Criteria andUpdateUnitPriceFlagLessThan(String value) { + addCriterion("update_unit_price_flag <", value, "updateUnitPriceFlag"); + return (Criteria) this; + } + + public Criteria andUpdateUnitPriceFlagLessThanOrEqualTo(String value) { + addCriterion("update_unit_price_flag <=", value, "updateUnitPriceFlag"); + return (Criteria) this; + } + + public Criteria andUpdateUnitPriceFlagLike(String value) { + addCriterion("update_unit_price_flag like", value, "updateUnitPriceFlag"); + return (Criteria) this; + } + + public Criteria andUpdateUnitPriceFlagNotLike(String value) { + addCriterion("update_unit_price_flag not like", value, "updateUnitPriceFlag"); + return (Criteria) this; + } + + public Criteria andUpdateUnitPriceFlagIn(List values) { + addCriterion("update_unit_price_flag in", values, "updateUnitPriceFlag"); + return (Criteria) this; + } + + public Criteria andUpdateUnitPriceFlagNotIn(List values) { + addCriterion("update_unit_price_flag not in", values, "updateUnitPriceFlag"); + return (Criteria) this; + } + + public Criteria andUpdateUnitPriceFlagBetween(String value1, String value2) { + addCriterion("update_unit_price_flag between", value1, value2, "updateUnitPriceFlag"); + return (Criteria) this; + } + + public Criteria andUpdateUnitPriceFlagNotBetween(String value1, String value2) { + addCriterion("update_unit_price_flag not between", value1, value2, "updateUnitPriceFlag"); + return (Criteria) this; + } + + public Criteria andOverLinkBillFlagIsNull() { + addCriterion("over_link_bill_flag is null"); + return (Criteria) this; + } + + public Criteria andOverLinkBillFlagIsNotNull() { + addCriterion("over_link_bill_flag is not null"); + return (Criteria) this; + } + + public Criteria andOverLinkBillFlagEqualTo(String value) { + addCriterion("over_link_bill_flag =", value, "overLinkBillFlag"); + return (Criteria) this; + } + + public Criteria andOverLinkBillFlagNotEqualTo(String value) { + addCriterion("over_link_bill_flag <>", value, "overLinkBillFlag"); + return (Criteria) this; + } + + public Criteria andOverLinkBillFlagGreaterThan(String value) { + addCriterion("over_link_bill_flag >", value, "overLinkBillFlag"); + return (Criteria) this; + } + + public Criteria andOverLinkBillFlagGreaterThanOrEqualTo(String value) { + addCriterion("over_link_bill_flag >=", value, "overLinkBillFlag"); + return (Criteria) this; + } + + public Criteria andOverLinkBillFlagLessThan(String value) { + addCriterion("over_link_bill_flag <", value, "overLinkBillFlag"); + return (Criteria) this; + } + + public Criteria andOverLinkBillFlagLessThanOrEqualTo(String value) { + addCriterion("over_link_bill_flag <=", value, "overLinkBillFlag"); + return (Criteria) this; + } + + public Criteria andOverLinkBillFlagLike(String value) { + addCriterion("over_link_bill_flag like", value, "overLinkBillFlag"); + return (Criteria) this; + } + + public Criteria andOverLinkBillFlagNotLike(String value) { + addCriterion("over_link_bill_flag not like", value, "overLinkBillFlag"); + return (Criteria) this; + } + + public Criteria andOverLinkBillFlagIn(List values) { + addCriterion("over_link_bill_flag in", values, "overLinkBillFlag"); + return (Criteria) this; + } + + public Criteria andOverLinkBillFlagNotIn(List values) { + addCriterion("over_link_bill_flag not in", values, "overLinkBillFlag"); + return (Criteria) this; + } + + public Criteria andOverLinkBillFlagBetween(String value1, String value2) { + addCriterion("over_link_bill_flag between", value1, value2, "overLinkBillFlag"); + return (Criteria) this; + } + + public Criteria andOverLinkBillFlagNotBetween(String value1, String value2) { + addCriterion("over_link_bill_flag not between", value1, value2, "overLinkBillFlag"); + return (Criteria) this; + } + + public Criteria andInOutManageFlagIsNull() { + addCriterion("in_out_manage_flag is null"); + return (Criteria) this; + } + + public Criteria andInOutManageFlagIsNotNull() { + addCriterion("in_out_manage_flag is not null"); + return (Criteria) this; + } + + public Criteria andInOutManageFlagEqualTo(String value) { + addCriterion("in_out_manage_flag =", value, "inOutManageFlag"); + return (Criteria) this; + } + + public Criteria andInOutManageFlagNotEqualTo(String value) { + addCriterion("in_out_manage_flag <>", value, "inOutManageFlag"); + return (Criteria) this; + } + + public Criteria andInOutManageFlagGreaterThan(String value) { + addCriterion("in_out_manage_flag >", value, "inOutManageFlag"); + return (Criteria) this; + } + + public Criteria andInOutManageFlagGreaterThanOrEqualTo(String value) { + addCriterion("in_out_manage_flag >=", value, "inOutManageFlag"); + return (Criteria) this; + } + + public Criteria andInOutManageFlagLessThan(String value) { + addCriterion("in_out_manage_flag <", value, "inOutManageFlag"); + return (Criteria) this; + } + + public Criteria andInOutManageFlagLessThanOrEqualTo(String value) { + addCriterion("in_out_manage_flag <=", value, "inOutManageFlag"); + return (Criteria) this; + } + + public Criteria andInOutManageFlagLike(String value) { + addCriterion("in_out_manage_flag like", value, "inOutManageFlag"); + return (Criteria) this; + } + + public Criteria andInOutManageFlagNotLike(String value) { + addCriterion("in_out_manage_flag not like", value, "inOutManageFlag"); + return (Criteria) this; + } + + public Criteria andInOutManageFlagIn(List values) { + addCriterion("in_out_manage_flag in", values, "inOutManageFlag"); + return (Criteria) this; + } + + public Criteria andInOutManageFlagNotIn(List values) { + addCriterion("in_out_manage_flag not in", values, "inOutManageFlag"); + return (Criteria) this; + } + + public Criteria andInOutManageFlagBetween(String value1, String value2) { + addCriterion("in_out_manage_flag between", value1, value2, "inOutManageFlag"); + return (Criteria) this; + } + + public Criteria andInOutManageFlagNotBetween(String value1, String value2) { + addCriterion("in_out_manage_flag not between", value1, value2, "inOutManageFlag"); + return (Criteria) this; + } + + public Criteria andMultiAccountFlagIsNull() { + addCriterion("multi_account_flag is null"); + return (Criteria) this; + } + + public Criteria andMultiAccountFlagIsNotNull() { + addCriterion("multi_account_flag is not null"); + return (Criteria) this; + } + + public Criteria andMultiAccountFlagEqualTo(String value) { + addCriterion("multi_account_flag =", value, "multiAccountFlag"); + return (Criteria) this; + } + + public Criteria andMultiAccountFlagNotEqualTo(String value) { + addCriterion("multi_account_flag <>", value, "multiAccountFlag"); + return (Criteria) this; + } + + public Criteria andMultiAccountFlagGreaterThan(String value) { + addCriterion("multi_account_flag >", value, "multiAccountFlag"); + return (Criteria) this; + } + + public Criteria andMultiAccountFlagGreaterThanOrEqualTo(String value) { + addCriterion("multi_account_flag >=", value, "multiAccountFlag"); + return (Criteria) this; + } + + public Criteria andMultiAccountFlagLessThan(String value) { + addCriterion("multi_account_flag <", value, "multiAccountFlag"); + return (Criteria) this; + } + + public Criteria andMultiAccountFlagLessThanOrEqualTo(String value) { + addCriterion("multi_account_flag <=", value, "multiAccountFlag"); + return (Criteria) this; + } + + public Criteria andMultiAccountFlagLike(String value) { + addCriterion("multi_account_flag like", value, "multiAccountFlag"); + return (Criteria) this; + } + + public Criteria andMultiAccountFlagNotLike(String value) { + addCriterion("multi_account_flag not like", value, "multiAccountFlag"); + return (Criteria) this; + } + + public Criteria andMultiAccountFlagIn(List values) { + addCriterion("multi_account_flag in", values, "multiAccountFlag"); + return (Criteria) this; + } + + public Criteria andMultiAccountFlagNotIn(List values) { + addCriterion("multi_account_flag not in", values, "multiAccountFlag"); + return (Criteria) this; + } + + public Criteria andMultiAccountFlagBetween(String value1, String value2) { + addCriterion("multi_account_flag between", value1, value2, "multiAccountFlag"); + return (Criteria) this; + } + + public Criteria andMultiAccountFlagNotBetween(String value1, String value2) { + addCriterion("multi_account_flag not between", value1, value2, "multiAccountFlag"); + return (Criteria) this; + } + + public Criteria andMoveAvgPriceFlagIsNull() { + addCriterion("move_avg_price_flag is null"); + return (Criteria) this; + } + + public Criteria andMoveAvgPriceFlagIsNotNull() { + addCriterion("move_avg_price_flag is not null"); + return (Criteria) this; + } + + public Criteria andMoveAvgPriceFlagEqualTo(String value) { + addCriterion("move_avg_price_flag =", value, "moveAvgPriceFlag"); + return (Criteria) this; + } + + public Criteria andMoveAvgPriceFlagNotEqualTo(String value) { + addCriterion("move_avg_price_flag <>", value, "moveAvgPriceFlag"); + return (Criteria) this; + } + + public Criteria andMoveAvgPriceFlagGreaterThan(String value) { + addCriterion("move_avg_price_flag >", value, "moveAvgPriceFlag"); + return (Criteria) this; + } + + public Criteria andMoveAvgPriceFlagGreaterThanOrEqualTo(String value) { + addCriterion("move_avg_price_flag >=", value, "moveAvgPriceFlag"); + return (Criteria) this; + } + + public Criteria andMoveAvgPriceFlagLessThan(String value) { + addCriterion("move_avg_price_flag <", value, "moveAvgPriceFlag"); + return (Criteria) this; + } + + public Criteria andMoveAvgPriceFlagLessThanOrEqualTo(String value) { + addCriterion("move_avg_price_flag <=", value, "moveAvgPriceFlag"); + return (Criteria) this; + } + + public Criteria andMoveAvgPriceFlagLike(String value) { + addCriterion("move_avg_price_flag like", value, "moveAvgPriceFlag"); + return (Criteria) this; + } + + public Criteria andMoveAvgPriceFlagNotLike(String value) { + addCriterion("move_avg_price_flag not like", value, "moveAvgPriceFlag"); + return (Criteria) this; + } + + public Criteria andMoveAvgPriceFlagIn(List values) { + addCriterion("move_avg_price_flag in", values, "moveAvgPriceFlag"); + return (Criteria) this; + } + + public Criteria andMoveAvgPriceFlagNotIn(List values) { + addCriterion("move_avg_price_flag not in", values, "moveAvgPriceFlag"); + return (Criteria) this; + } + + public Criteria andMoveAvgPriceFlagBetween(String value1, String value2) { + addCriterion("move_avg_price_flag between", value1, value2, "moveAvgPriceFlag"); + return (Criteria) this; + } + + public Criteria andMoveAvgPriceFlagNotBetween(String value1, String value2) { + addCriterion("move_avg_price_flag not between", value1, value2, "moveAvgPriceFlag"); + return (Criteria) this; + } + + public Criteria andAuditPrintFlagIsNull() { + addCriterion("audit_print_flag is null"); + return (Criteria) this; + } + + public Criteria andAuditPrintFlagIsNotNull() { + addCriterion("audit_print_flag is not null"); + return (Criteria) this; + } + + public Criteria andAuditPrintFlagEqualTo(String value) { + addCriterion("audit_print_flag =", value, "auditPrintFlag"); + return (Criteria) this; + } + + public Criteria andAuditPrintFlagNotEqualTo(String value) { + addCriterion("audit_print_flag <>", value, "auditPrintFlag"); + return (Criteria) this; + } + + public Criteria andAuditPrintFlagGreaterThan(String value) { + addCriterion("audit_print_flag >", value, "auditPrintFlag"); + return (Criteria) this; + } + + public Criteria andAuditPrintFlagGreaterThanOrEqualTo(String value) { + addCriterion("audit_print_flag >=", value, "auditPrintFlag"); + return (Criteria) this; + } + + public Criteria andAuditPrintFlagLessThan(String value) { + addCriterion("audit_print_flag <", value, "auditPrintFlag"); + return (Criteria) this; + } + + public Criteria andAuditPrintFlagLessThanOrEqualTo(String value) { + addCriterion("audit_print_flag <=", value, "auditPrintFlag"); + return (Criteria) this; + } + + public Criteria andAuditPrintFlagLike(String value) { + addCriterion("audit_print_flag like", value, "auditPrintFlag"); + return (Criteria) this; + } + + public Criteria andAuditPrintFlagNotLike(String value) { + addCriterion("audit_print_flag not like", value, "auditPrintFlag"); + return (Criteria) this; + } + + public Criteria andAuditPrintFlagIn(List values) { + addCriterion("audit_print_flag in", values, "auditPrintFlag"); + return (Criteria) this; + } + + public Criteria andAuditPrintFlagNotIn(List values) { + addCriterion("audit_print_flag not in", values, "auditPrintFlag"); + return (Criteria) this; + } + + public Criteria andAuditPrintFlagBetween(String value1, String value2) { + addCriterion("audit_print_flag between", value1, value2, "auditPrintFlag"); + return (Criteria) this; + } + + public Criteria andAuditPrintFlagNotBetween(String value1, String value2) { + addCriterion("audit_print_flag not between", value1, value2, "auditPrintFlag"); + return (Criteria) this; + } + + public Criteria andZeroChangeAmountFlagIsNull() { + addCriterion("zero_change_amount_flag is null"); + return (Criteria) this; + } + + public Criteria andZeroChangeAmountFlagIsNotNull() { + addCriterion("zero_change_amount_flag is not null"); + return (Criteria) this; + } + + public Criteria andZeroChangeAmountFlagEqualTo(String value) { + addCriterion("zero_change_amount_flag =", value, "zeroChangeAmountFlag"); + return (Criteria) this; + } + + public Criteria andZeroChangeAmountFlagNotEqualTo(String value) { + addCriterion("zero_change_amount_flag <>", value, "zeroChangeAmountFlag"); + return (Criteria) this; + } + + public Criteria andZeroChangeAmountFlagGreaterThan(String value) { + addCriterion("zero_change_amount_flag >", value, "zeroChangeAmountFlag"); + return (Criteria) this; + } + + public Criteria andZeroChangeAmountFlagGreaterThanOrEqualTo(String value) { + addCriterion("zero_change_amount_flag >=", value, "zeroChangeAmountFlag"); + return (Criteria) this; + } + + public Criteria andZeroChangeAmountFlagLessThan(String value) { + addCriterion("zero_change_amount_flag <", value, "zeroChangeAmountFlag"); + return (Criteria) this; + } + + public Criteria andZeroChangeAmountFlagLessThanOrEqualTo(String value) { + addCriterion("zero_change_amount_flag <=", value, "zeroChangeAmountFlag"); + return (Criteria) this; + } + + public Criteria andZeroChangeAmountFlagLike(String value) { + addCriterion("zero_change_amount_flag like", value, "zeroChangeAmountFlag"); + return (Criteria) this; + } + + public Criteria andZeroChangeAmountFlagNotLike(String value) { + addCriterion("zero_change_amount_flag not like", value, "zeroChangeAmountFlag"); + return (Criteria) this; + } + + public Criteria andZeroChangeAmountFlagIn(List values) { + addCriterion("zero_change_amount_flag in", values, "zeroChangeAmountFlag"); + return (Criteria) this; + } + + public Criteria andZeroChangeAmountFlagNotIn(List values) { + addCriterion("zero_change_amount_flag not in", values, "zeroChangeAmountFlag"); + return (Criteria) this; + } + + public Criteria andZeroChangeAmountFlagBetween(String value1, String value2) { + addCriterion("zero_change_amount_flag between", value1, value2, "zeroChangeAmountFlag"); + return (Criteria) this; + } + + public Criteria andZeroChangeAmountFlagNotBetween(String value1, String value2) { + addCriterion("zero_change_amount_flag not between", value1, value2, "zeroChangeAmountFlag"); + return (Criteria) this; + } + + public Criteria andCustomerStaticPriceFlagIsNull() { + addCriterion("customer_static_price_flag is null"); + return (Criteria) this; + } + + public Criteria andCustomerStaticPriceFlagIsNotNull() { + addCriterion("customer_static_price_flag is not null"); + return (Criteria) this; + } + + public Criteria andCustomerStaticPriceFlagEqualTo(String value) { + addCriterion("customer_static_price_flag =", value, "customerStaticPriceFlag"); + return (Criteria) this; + } + + public Criteria andCustomerStaticPriceFlagNotEqualTo(String value) { + addCriterion("customer_static_price_flag <>", value, "customerStaticPriceFlag"); + return (Criteria) this; + } + + public Criteria andCustomerStaticPriceFlagGreaterThan(String value) { + addCriterion("customer_static_price_flag >", value, "customerStaticPriceFlag"); + return (Criteria) this; + } + + public Criteria andCustomerStaticPriceFlagGreaterThanOrEqualTo(String value) { + addCriterion("customer_static_price_flag >=", value, "customerStaticPriceFlag"); + return (Criteria) this; + } + + public Criteria andCustomerStaticPriceFlagLessThan(String value) { + addCriterion("customer_static_price_flag <", value, "customerStaticPriceFlag"); + return (Criteria) this; + } + + public Criteria andCustomerStaticPriceFlagLessThanOrEqualTo(String value) { + addCriterion("customer_static_price_flag <=", value, "customerStaticPriceFlag"); + return (Criteria) this; + } + + public Criteria andCustomerStaticPriceFlagLike(String value) { + addCriterion("customer_static_price_flag like", value, "customerStaticPriceFlag"); + return (Criteria) this; + } + + public Criteria andCustomerStaticPriceFlagNotLike(String value) { + addCriterion("customer_static_price_flag not like", value, "customerStaticPriceFlag"); + return (Criteria) this; + } + + public Criteria andCustomerStaticPriceFlagIn(List values) { + addCriterion("customer_static_price_flag in", values, "customerStaticPriceFlag"); + return (Criteria) this; + } + + public Criteria andCustomerStaticPriceFlagNotIn(List values) { + addCriterion("customer_static_price_flag not in", values, "customerStaticPriceFlag"); + return (Criteria) this; + } + + public Criteria andCustomerStaticPriceFlagBetween(String value1, String value2) { + addCriterion("customer_static_price_flag between", value1, value2, "customerStaticPriceFlag"); + return (Criteria) this; + } + + public Criteria andCustomerStaticPriceFlagNotBetween(String value1, String value2) { + addCriterion("customer_static_price_flag not between", value1, value2, "customerStaticPriceFlag"); + return (Criteria) this; + } + + public Criteria andMaterialPriceTaxFlagIsNull() { + addCriterion("material_price_tax_flag is null"); + return (Criteria) this; + } + + public Criteria andMaterialPriceTaxFlagIsNotNull() { + addCriterion("material_price_tax_flag is not null"); + return (Criteria) this; + } + + public Criteria andMaterialPriceTaxFlagEqualTo(String value) { + addCriterion("material_price_tax_flag =", value, "materialPriceTaxFlag"); + return (Criteria) this; + } + + public Criteria andMaterialPriceTaxFlagNotEqualTo(String value) { + addCriterion("material_price_tax_flag <>", value, "materialPriceTaxFlag"); + return (Criteria) this; + } + + public Criteria andMaterialPriceTaxFlagGreaterThan(String value) { + addCriterion("material_price_tax_flag >", value, "materialPriceTaxFlag"); + return (Criteria) this; + } + + public Criteria andMaterialPriceTaxFlagGreaterThanOrEqualTo(String value) { + addCriterion("material_price_tax_flag >=", value, "materialPriceTaxFlag"); + return (Criteria) this; + } + + public Criteria andMaterialPriceTaxFlagLessThan(String value) { + addCriterion("material_price_tax_flag <", value, "materialPriceTaxFlag"); + return (Criteria) this; + } + + public Criteria andMaterialPriceTaxFlagLessThanOrEqualTo(String value) { + addCriterion("material_price_tax_flag <=", value, "materialPriceTaxFlag"); + return (Criteria) this; + } + + public Criteria andMaterialPriceTaxFlagLike(String value) { + addCriterion("material_price_tax_flag like", value, "materialPriceTaxFlag"); + return (Criteria) this; + } + + public Criteria andMaterialPriceTaxFlagNotLike(String value) { + addCriterion("material_price_tax_flag not like", value, "materialPriceTaxFlag"); + return (Criteria) this; + } + + public Criteria andMaterialPriceTaxFlagIn(List values) { + addCriterion("material_price_tax_flag in", values, "materialPriceTaxFlag"); + return (Criteria) this; + } + + public Criteria andMaterialPriceTaxFlagNotIn(List values) { + addCriterion("material_price_tax_flag not in", values, "materialPriceTaxFlag"); + return (Criteria) this; + } + + public Criteria andMaterialPriceTaxFlagBetween(String value1, String value2) { + addCriterion("material_price_tax_flag between", value1, value2, "materialPriceTaxFlag"); + return (Criteria) this; + } + + public Criteria andMaterialPriceTaxFlagNotBetween(String value1, String value2) { + addCriterion("material_price_tax_flag not between", value1, value2, "materialPriceTaxFlag"); + return (Criteria) this; + } + + public Criteria andTenantIdIsNull() { + addCriterion("tenant_id is null"); + return (Criteria) this; + } + + public Criteria andTenantIdIsNotNull() { + addCriterion("tenant_id is not null"); + return (Criteria) this; + } + + public Criteria andTenantIdEqualTo(Long value) { + addCriterion("tenant_id =", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotEqualTo(Long value) { + addCriterion("tenant_id <>", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdGreaterThan(Long value) { + addCriterion("tenant_id >", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdGreaterThanOrEqualTo(Long value) { + addCriterion("tenant_id >=", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdLessThan(Long value) { + addCriterion("tenant_id <", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdLessThanOrEqualTo(Long value) { + addCriterion("tenant_id <=", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdIn(List values) { + addCriterion("tenant_id in", values, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotIn(List values) { + addCriterion("tenant_id not in", values, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdBetween(Long value1, Long value2) { + addCriterion("tenant_id between", value1, value2, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotBetween(Long value1, Long value2) { + addCriterion("tenant_id not between", value1, value2, "tenantId"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIsNull() { + addCriterion("delete_flag is null"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIsNotNull() { + addCriterion("delete_flag is not null"); + return (Criteria) this; + } + + public Criteria andDeleteFlagEqualTo(String value) { + addCriterion("delete_flag =", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotEqualTo(String value) { + addCriterion("delete_flag <>", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagGreaterThan(String value) { + addCriterion("delete_flag >", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagGreaterThanOrEqualTo(String value) { + addCriterion("delete_flag >=", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLessThan(String value) { + addCriterion("delete_flag <", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLessThanOrEqualTo(String value) { + addCriterion("delete_flag <=", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLike(String value) { + addCriterion("delete_flag like", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotLike(String value) { + addCriterion("delete_flag not like", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIn(List values) { + addCriterion("delete_flag in", values, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotIn(List values) { + addCriterion("delete_flag not in", values, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagBetween(String value1, String value2) { + addCriterion("delete_flag between", value1, value2, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotBetween(String value1, String value2) { + addCriterion("delete_flag not between", value1, value2, "deleteFlag"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/Tenant.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/Tenant.java new file mode 100644 index 0000000..d2b12df --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/Tenant.java @@ -0,0 +1,105 @@ +package com.reallin.smt.datasource.entities; + +import java.util.Date; + +public class Tenant { + private Long id; + + private Long tenantId; + + private String loginName; + + private Integer userNumLimit; + + private String type; + + private Boolean enabled; + + private Date createTime; + + private Date expireTime; + + private String remark; + + private String deleteFlag; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getTenantId() { + return tenantId; + } + + public void setTenantId(Long tenantId) { + this.tenantId = tenantId; + } + + public String getLoginName() { + return loginName; + } + + public void setLoginName(String loginName) { + this.loginName = loginName == null ? null : loginName.trim(); + } + + public Integer getUserNumLimit() { + return userNumLimit; + } + + public void setUserNumLimit(Integer userNumLimit) { + this.userNumLimit = userNumLimit; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type == null ? null : type.trim(); + } + + public Boolean getEnabled() { + return enabled; + } + + public void setEnabled(Boolean enabled) { + this.enabled = enabled; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Date getExpireTime() { + return expireTime; + } + + public void setExpireTime(Date expireTime) { + this.expireTime = expireTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark == null ? null : remark.trim(); + } + + public String getDeleteFlag() { + return deleteFlag; + } + + public void setDeleteFlag(String deleteFlag) { + this.deleteFlag = deleteFlag == null ? null : deleteFlag.trim(); + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/TenantEx.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/TenantEx.java new file mode 100644 index 0000000..0303867 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/TenantEx.java @@ -0,0 +1,54 @@ +package com.reallin.smt.datasource.entities; + +public class TenantEx extends Tenant{ + + private String createTimeStr; + + private String expireTimeStr; + + private Integer userCount; + + private Long roleId; + + private String roleName; + + public String getCreateTimeStr() { + return createTimeStr; + } + + public void setCreateTimeStr(String createTimeStr) { + this.createTimeStr = createTimeStr; + } + + public String getExpireTimeStr() { + return expireTimeStr; + } + + public void setExpireTimeStr(String expireTimeStr) { + this.expireTimeStr = expireTimeStr; + } + + public Integer getUserCount() { + return userCount; + } + + public void setUserCount(Integer userCount) { + this.userCount = userCount; + } + + public Long getRoleId() { + return roleId; + } + + public void setRoleId(Long roleId) { + this.roleId = roleId; + } + + public String getRoleName() { + return roleName; + } + + public void setRoleName(String roleName) { + this.roleName = roleName; + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/TenantExample.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/TenantExample.java new file mode 100644 index 0000000..bfaf742 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/TenantExample.java @@ -0,0 +1,840 @@ +package com.reallin.smt.datasource.entities; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +public class TenantExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public TenantExample() { + oredCriteria = new ArrayList<>(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList<>(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andTenantIdIsNull() { + addCriterion("tenant_id is null"); + return (Criteria) this; + } + + public Criteria andTenantIdIsNotNull() { + addCriterion("tenant_id is not null"); + return (Criteria) this; + } + + public Criteria andTenantIdEqualTo(Long value) { + addCriterion("tenant_id =", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotEqualTo(Long value) { + addCriterion("tenant_id <>", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdGreaterThan(Long value) { + addCriterion("tenant_id >", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdGreaterThanOrEqualTo(Long value) { + addCriterion("tenant_id >=", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdLessThan(Long value) { + addCriterion("tenant_id <", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdLessThanOrEqualTo(Long value) { + addCriterion("tenant_id <=", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdIn(List values) { + addCriterion("tenant_id in", values, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotIn(List values) { + addCriterion("tenant_id not in", values, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdBetween(Long value1, Long value2) { + addCriterion("tenant_id between", value1, value2, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotBetween(Long value1, Long value2) { + addCriterion("tenant_id not between", value1, value2, "tenantId"); + return (Criteria) this; + } + + public Criteria andLoginNameIsNull() { + addCriterion("login_name is null"); + return (Criteria) this; + } + + public Criteria andLoginNameIsNotNull() { + addCriterion("login_name is not null"); + return (Criteria) this; + } + + public Criteria andLoginNameEqualTo(String value) { + addCriterion("login_name =", value, "loginName"); + return (Criteria) this; + } + + public Criteria andLoginNameNotEqualTo(String value) { + addCriterion("login_name <>", value, "loginName"); + return (Criteria) this; + } + + public Criteria andLoginNameGreaterThan(String value) { + addCriterion("login_name >", value, "loginName"); + return (Criteria) this; + } + + public Criteria andLoginNameGreaterThanOrEqualTo(String value) { + addCriterion("login_name >=", value, "loginName"); + return (Criteria) this; + } + + public Criteria andLoginNameLessThan(String value) { + addCriterion("login_name <", value, "loginName"); + return (Criteria) this; + } + + public Criteria andLoginNameLessThanOrEqualTo(String value) { + addCriterion("login_name <=", value, "loginName"); + return (Criteria) this; + } + + public Criteria andLoginNameLike(String value) { + addCriterion("login_name like", value, "loginName"); + return (Criteria) this; + } + + public Criteria andLoginNameNotLike(String value) { + addCriterion("login_name not like", value, "loginName"); + return (Criteria) this; + } + + public Criteria andLoginNameIn(List values) { + addCriterion("login_name in", values, "loginName"); + return (Criteria) this; + } + + public Criteria andLoginNameNotIn(List values) { + addCriterion("login_name not in", values, "loginName"); + return (Criteria) this; + } + + public Criteria andLoginNameBetween(String value1, String value2) { + addCriterion("login_name between", value1, value2, "loginName"); + return (Criteria) this; + } + + public Criteria andLoginNameNotBetween(String value1, String value2) { + addCriterion("login_name not between", value1, value2, "loginName"); + return (Criteria) this; + } + + public Criteria andUserNumLimitIsNull() { + addCriterion("user_num_limit is null"); + return (Criteria) this; + } + + public Criteria andUserNumLimitIsNotNull() { + addCriterion("user_num_limit is not null"); + return (Criteria) this; + } + + public Criteria andUserNumLimitEqualTo(Integer value) { + addCriterion("user_num_limit =", value, "userNumLimit"); + return (Criteria) this; + } + + public Criteria andUserNumLimitNotEqualTo(Integer value) { + addCriterion("user_num_limit <>", value, "userNumLimit"); + return (Criteria) this; + } + + public Criteria andUserNumLimitGreaterThan(Integer value) { + addCriterion("user_num_limit >", value, "userNumLimit"); + return (Criteria) this; + } + + public Criteria andUserNumLimitGreaterThanOrEqualTo(Integer value) { + addCriterion("user_num_limit >=", value, "userNumLimit"); + return (Criteria) this; + } + + public Criteria andUserNumLimitLessThan(Integer value) { + addCriterion("user_num_limit <", value, "userNumLimit"); + return (Criteria) this; + } + + public Criteria andUserNumLimitLessThanOrEqualTo(Integer value) { + addCriterion("user_num_limit <=", value, "userNumLimit"); + return (Criteria) this; + } + + public Criteria andUserNumLimitIn(List values) { + addCriterion("user_num_limit in", values, "userNumLimit"); + return (Criteria) this; + } + + public Criteria andUserNumLimitNotIn(List values) { + addCriterion("user_num_limit not in", values, "userNumLimit"); + return (Criteria) this; + } + + public Criteria andUserNumLimitBetween(Integer value1, Integer value2) { + addCriterion("user_num_limit between", value1, value2, "userNumLimit"); + return (Criteria) this; + } + + public Criteria andUserNumLimitNotBetween(Integer value1, Integer value2) { + addCriterion("user_num_limit not between", value1, value2, "userNumLimit"); + return (Criteria) this; + } + + public Criteria andTypeIsNull() { + addCriterion("type is null"); + return (Criteria) this; + } + + public Criteria andTypeIsNotNull() { + addCriterion("type is not null"); + return (Criteria) this; + } + + public Criteria andTypeEqualTo(String value) { + addCriterion("type =", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotEqualTo(String value) { + addCriterion("type <>", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeGreaterThan(String value) { + addCriterion("type >", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeGreaterThanOrEqualTo(String value) { + addCriterion("type >=", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLessThan(String value) { + addCriterion("type <", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLessThanOrEqualTo(String value) { + addCriterion("type <=", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLike(String value) { + addCriterion("type like", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotLike(String value) { + addCriterion("type not like", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeIn(List values) { + addCriterion("type in", values, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotIn(List values) { + addCriterion("type not in", values, "type"); + return (Criteria) this; + } + + public Criteria andTypeBetween(String value1, String value2) { + addCriterion("type between", value1, value2, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotBetween(String value1, String value2) { + addCriterion("type not between", value1, value2, "type"); + return (Criteria) this; + } + + public Criteria andEnabledIsNull() { + addCriterion("enabled is null"); + return (Criteria) this; + } + + public Criteria andEnabledIsNotNull() { + addCriterion("enabled is not null"); + return (Criteria) this; + } + + public Criteria andEnabledEqualTo(Boolean value) { + addCriterion("enabled =", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledNotEqualTo(Boolean value) { + addCriterion("enabled <>", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledGreaterThan(Boolean value) { + addCriterion("enabled >", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledGreaterThanOrEqualTo(Boolean value) { + addCriterion("enabled >=", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledLessThan(Boolean value) { + addCriterion("enabled <", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledLessThanOrEqualTo(Boolean value) { + addCriterion("enabled <=", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledIn(List values) { + addCriterion("enabled in", values, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledNotIn(List values) { + addCriterion("enabled not in", values, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledBetween(Boolean value1, Boolean value2) { + addCriterion("enabled between", value1, value2, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledNotBetween(Boolean value1, Boolean value2) { + addCriterion("enabled not between", value1, value2, "enabled"); + return (Criteria) this; + } + + public Criteria andCreateTimeIsNull() { + addCriterion("create_time is null"); + return (Criteria) this; + } + + public Criteria andCreateTimeIsNotNull() { + addCriterion("create_time is not null"); + return (Criteria) this; + } + + public Criteria andCreateTimeEqualTo(Date value) { + addCriterion("create_time =", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotEqualTo(Date value) { + addCriterion("create_time <>", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeGreaterThan(Date value) { + addCriterion("create_time >", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeGreaterThanOrEqualTo(Date value) { + addCriterion("create_time >=", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeLessThan(Date value) { + addCriterion("create_time <", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeLessThanOrEqualTo(Date value) { + addCriterion("create_time <=", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeIn(List values) { + addCriterion("create_time in", values, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotIn(List values) { + addCriterion("create_time not in", values, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeBetween(Date value1, Date value2) { + addCriterion("create_time between", value1, value2, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotBetween(Date value1, Date value2) { + addCriterion("create_time not between", value1, value2, "createTime"); + return (Criteria) this; + } + + public Criteria andExpireTimeIsNull() { + addCriterion("expire_time is null"); + return (Criteria) this; + } + + public Criteria andExpireTimeIsNotNull() { + addCriterion("expire_time is not null"); + return (Criteria) this; + } + + public Criteria andExpireTimeEqualTo(Date value) { + addCriterion("expire_time =", value, "expireTime"); + return (Criteria) this; + } + + public Criteria andExpireTimeNotEqualTo(Date value) { + addCriterion("expire_time <>", value, "expireTime"); + return (Criteria) this; + } + + public Criteria andExpireTimeGreaterThan(Date value) { + addCriterion("expire_time >", value, "expireTime"); + return (Criteria) this; + } + + public Criteria andExpireTimeGreaterThanOrEqualTo(Date value) { + addCriterion("expire_time >=", value, "expireTime"); + return (Criteria) this; + } + + public Criteria andExpireTimeLessThan(Date value) { + addCriterion("expire_time <", value, "expireTime"); + return (Criteria) this; + } + + public Criteria andExpireTimeLessThanOrEqualTo(Date value) { + addCriterion("expire_time <=", value, "expireTime"); + return (Criteria) this; + } + + public Criteria andExpireTimeIn(List values) { + addCriterion("expire_time in", values, "expireTime"); + return (Criteria) this; + } + + public Criteria andExpireTimeNotIn(List values) { + addCriterion("expire_time not in", values, "expireTime"); + return (Criteria) this; + } + + public Criteria andExpireTimeBetween(Date value1, Date value2) { + addCriterion("expire_time between", value1, value2, "expireTime"); + return (Criteria) this; + } + + public Criteria andExpireTimeNotBetween(Date value1, Date value2) { + addCriterion("expire_time not between", value1, value2, "expireTime"); + return (Criteria) this; + } + + public Criteria andRemarkIsNull() { + addCriterion("remark is null"); + return (Criteria) this; + } + + public Criteria andRemarkIsNotNull() { + addCriterion("remark is not null"); + return (Criteria) this; + } + + public Criteria andRemarkEqualTo(String value) { + addCriterion("remark =", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotEqualTo(String value) { + addCriterion("remark <>", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThan(String value) { + addCriterion("remark >", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThanOrEqualTo(String value) { + addCriterion("remark >=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThan(String value) { + addCriterion("remark <", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThanOrEqualTo(String value) { + addCriterion("remark <=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLike(String value) { + addCriterion("remark like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotLike(String value) { + addCriterion("remark not like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkIn(List values) { + addCriterion("remark in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotIn(List values) { + addCriterion("remark not in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkBetween(String value1, String value2) { + addCriterion("remark between", value1, value2, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotBetween(String value1, String value2) { + addCriterion("remark not between", value1, value2, "remark"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIsNull() { + addCriterion("delete_flag is null"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIsNotNull() { + addCriterion("delete_flag is not null"); + return (Criteria) this; + } + + public Criteria andDeleteFlagEqualTo(String value) { + addCriterion("delete_flag =", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotEqualTo(String value) { + addCriterion("delete_flag <>", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagGreaterThan(String value) { + addCriterion("delete_flag >", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagGreaterThanOrEqualTo(String value) { + addCriterion("delete_flag >=", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLessThan(String value) { + addCriterion("delete_flag <", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLessThanOrEqualTo(String value) { + addCriterion("delete_flag <=", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLike(String value) { + addCriterion("delete_flag like", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotLike(String value) { + addCriterion("delete_flag not like", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIn(List values) { + addCriterion("delete_flag in", values, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotIn(List values) { + addCriterion("delete_flag not in", values, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagBetween(String value1, String value2) { + addCriterion("delete_flag between", value1, value2, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotBetween(String value1, String value2) { + addCriterion("delete_flag not between", value1, value2, "deleteFlag"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/Unit.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/Unit.java new file mode 100644 index 0000000..bc5ed57 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/Unit.java @@ -0,0 +1,125 @@ +package com.reallin.smt.datasource.entities; + +import java.math.BigDecimal; + +public class Unit { + private Long id; + + private String name; + + private String basicUnit; + + private String otherUnit; + + private String otherUnitTwo; + + private String otherUnitThree; + + private BigDecimal ratio; + + private BigDecimal ratioTwo; + + private BigDecimal ratioThree; + + private Boolean enabled; + + private Long tenantId; + + private String deleteFlag; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name == null ? null : name.trim(); + } + + public String getBasicUnit() { + return basicUnit; + } + + public void setBasicUnit(String basicUnit) { + this.basicUnit = basicUnit == null ? null : basicUnit.trim(); + } + + public String getOtherUnit() { + return otherUnit; + } + + public void setOtherUnit(String otherUnit) { + this.otherUnit = otherUnit == null ? null : otherUnit.trim(); + } + + public String getOtherUnitTwo() { + return otherUnitTwo; + } + + public void setOtherUnitTwo(String otherUnitTwo) { + this.otherUnitTwo = otherUnitTwo == null ? null : otherUnitTwo.trim(); + } + + public String getOtherUnitThree() { + return otherUnitThree; + } + + public void setOtherUnitThree(String otherUnitThree) { + this.otherUnitThree = otherUnitThree == null ? null : otherUnitThree.trim(); + } + + public BigDecimal getRatio() { + return ratio; + } + + public void setRatio(BigDecimal ratio) { + this.ratio = ratio; + } + + public BigDecimal getRatioTwo() { + return ratioTwo; + } + + public void setRatioTwo(BigDecimal ratioTwo) { + this.ratioTwo = ratioTwo; + } + + public BigDecimal getRatioThree() { + return ratioThree; + } + + public void setRatioThree(BigDecimal ratioThree) { + this.ratioThree = ratioThree; + } + + public Boolean getEnabled() { + return enabled; + } + + public void setEnabled(Boolean enabled) { + this.enabled = enabled; + } + + public Long getTenantId() { + return tenantId; + } + + public void setTenantId(Long tenantId) { + this.tenantId = tenantId; + } + + public String getDeleteFlag() { + return deleteFlag; + } + + public void setDeleteFlag(String deleteFlag) { + this.deleteFlag = deleteFlag == null ? null : deleteFlag.trim(); + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/UnitExample.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/UnitExample.java new file mode 100644 index 0000000..7dc9233 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/UnitExample.java @@ -0,0 +1,980 @@ +package com.reallin.smt.datasource.entities; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + +public class UnitExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public UnitExample() { + oredCriteria = new ArrayList<>(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList<>(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andNameIsNull() { + addCriterion("name is null"); + return (Criteria) this; + } + + public Criteria andNameIsNotNull() { + addCriterion("name is not null"); + return (Criteria) this; + } + + public Criteria andNameEqualTo(String value) { + addCriterion("name =", value, "name"); + return (Criteria) this; + } + + public Criteria andNameNotEqualTo(String value) { + addCriterion("name <>", value, "name"); + return (Criteria) this; + } + + public Criteria andNameGreaterThan(String value) { + addCriterion("name >", value, "name"); + return (Criteria) this; + } + + public Criteria andNameGreaterThanOrEqualTo(String value) { + addCriterion("name >=", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLessThan(String value) { + addCriterion("name <", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLessThanOrEqualTo(String value) { + addCriterion("name <=", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLike(String value) { + addCriterion("name like", value, "name"); + return (Criteria) this; + } + + public Criteria andNameNotLike(String value) { + addCriterion("name not like", value, "name"); + return (Criteria) this; + } + + public Criteria andNameIn(List values) { + addCriterion("name in", values, "name"); + return (Criteria) this; + } + + public Criteria andNameNotIn(List values) { + addCriterion("name not in", values, "name"); + return (Criteria) this; + } + + public Criteria andNameBetween(String value1, String value2) { + addCriterion("name between", value1, value2, "name"); + return (Criteria) this; + } + + public Criteria andNameNotBetween(String value1, String value2) { + addCriterion("name not between", value1, value2, "name"); + return (Criteria) this; + } + + public Criteria andBasicUnitIsNull() { + addCriterion("basic_unit is null"); + return (Criteria) this; + } + + public Criteria andBasicUnitIsNotNull() { + addCriterion("basic_unit is not null"); + return (Criteria) this; + } + + public Criteria andBasicUnitEqualTo(String value) { + addCriterion("basic_unit =", value, "basicUnit"); + return (Criteria) this; + } + + public Criteria andBasicUnitNotEqualTo(String value) { + addCriterion("basic_unit <>", value, "basicUnit"); + return (Criteria) this; + } + + public Criteria andBasicUnitGreaterThan(String value) { + addCriterion("basic_unit >", value, "basicUnit"); + return (Criteria) this; + } + + public Criteria andBasicUnitGreaterThanOrEqualTo(String value) { + addCriterion("basic_unit >=", value, "basicUnit"); + return (Criteria) this; + } + + public Criteria andBasicUnitLessThan(String value) { + addCriterion("basic_unit <", value, "basicUnit"); + return (Criteria) this; + } + + public Criteria andBasicUnitLessThanOrEqualTo(String value) { + addCriterion("basic_unit <=", value, "basicUnit"); + return (Criteria) this; + } + + public Criteria andBasicUnitLike(String value) { + addCriterion("basic_unit like", value, "basicUnit"); + return (Criteria) this; + } + + public Criteria andBasicUnitNotLike(String value) { + addCriterion("basic_unit not like", value, "basicUnit"); + return (Criteria) this; + } + + public Criteria andBasicUnitIn(List values) { + addCriterion("basic_unit in", values, "basicUnit"); + return (Criteria) this; + } + + public Criteria andBasicUnitNotIn(List values) { + addCriterion("basic_unit not in", values, "basicUnit"); + return (Criteria) this; + } + + public Criteria andBasicUnitBetween(String value1, String value2) { + addCriterion("basic_unit between", value1, value2, "basicUnit"); + return (Criteria) this; + } + + public Criteria andBasicUnitNotBetween(String value1, String value2) { + addCriterion("basic_unit not between", value1, value2, "basicUnit"); + return (Criteria) this; + } + + public Criteria andOtherUnitIsNull() { + addCriterion("other_unit is null"); + return (Criteria) this; + } + + public Criteria andOtherUnitIsNotNull() { + addCriterion("other_unit is not null"); + return (Criteria) this; + } + + public Criteria andOtherUnitEqualTo(String value) { + addCriterion("other_unit =", value, "otherUnit"); + return (Criteria) this; + } + + public Criteria andOtherUnitNotEqualTo(String value) { + addCriterion("other_unit <>", value, "otherUnit"); + return (Criteria) this; + } + + public Criteria andOtherUnitGreaterThan(String value) { + addCriterion("other_unit >", value, "otherUnit"); + return (Criteria) this; + } + + public Criteria andOtherUnitGreaterThanOrEqualTo(String value) { + addCriterion("other_unit >=", value, "otherUnit"); + return (Criteria) this; + } + + public Criteria andOtherUnitLessThan(String value) { + addCriterion("other_unit <", value, "otherUnit"); + return (Criteria) this; + } + + public Criteria andOtherUnitLessThanOrEqualTo(String value) { + addCriterion("other_unit <=", value, "otherUnit"); + return (Criteria) this; + } + + public Criteria andOtherUnitLike(String value) { + addCriterion("other_unit like", value, "otherUnit"); + return (Criteria) this; + } + + public Criteria andOtherUnitNotLike(String value) { + addCriterion("other_unit not like", value, "otherUnit"); + return (Criteria) this; + } + + public Criteria andOtherUnitIn(List values) { + addCriterion("other_unit in", values, "otherUnit"); + return (Criteria) this; + } + + public Criteria andOtherUnitNotIn(List values) { + addCriterion("other_unit not in", values, "otherUnit"); + return (Criteria) this; + } + + public Criteria andOtherUnitBetween(String value1, String value2) { + addCriterion("other_unit between", value1, value2, "otherUnit"); + return (Criteria) this; + } + + public Criteria andOtherUnitNotBetween(String value1, String value2) { + addCriterion("other_unit not between", value1, value2, "otherUnit"); + return (Criteria) this; + } + + public Criteria andOtherUnitTwoIsNull() { + addCriterion("other_unit_two is null"); + return (Criteria) this; + } + + public Criteria andOtherUnitTwoIsNotNull() { + addCriterion("other_unit_two is not null"); + return (Criteria) this; + } + + public Criteria andOtherUnitTwoEqualTo(String value) { + addCriterion("other_unit_two =", value, "otherUnitTwo"); + return (Criteria) this; + } + + public Criteria andOtherUnitTwoNotEqualTo(String value) { + addCriterion("other_unit_two <>", value, "otherUnitTwo"); + return (Criteria) this; + } + + public Criteria andOtherUnitTwoGreaterThan(String value) { + addCriterion("other_unit_two >", value, "otherUnitTwo"); + return (Criteria) this; + } + + public Criteria andOtherUnitTwoGreaterThanOrEqualTo(String value) { + addCriterion("other_unit_two >=", value, "otherUnitTwo"); + return (Criteria) this; + } + + public Criteria andOtherUnitTwoLessThan(String value) { + addCriterion("other_unit_two <", value, "otherUnitTwo"); + return (Criteria) this; + } + + public Criteria andOtherUnitTwoLessThanOrEqualTo(String value) { + addCriterion("other_unit_two <=", value, "otherUnitTwo"); + return (Criteria) this; + } + + public Criteria andOtherUnitTwoLike(String value) { + addCriterion("other_unit_two like", value, "otherUnitTwo"); + return (Criteria) this; + } + + public Criteria andOtherUnitTwoNotLike(String value) { + addCriterion("other_unit_two not like", value, "otherUnitTwo"); + return (Criteria) this; + } + + public Criteria andOtherUnitTwoIn(List values) { + addCriterion("other_unit_two in", values, "otherUnitTwo"); + return (Criteria) this; + } + + public Criteria andOtherUnitTwoNotIn(List values) { + addCriterion("other_unit_two not in", values, "otherUnitTwo"); + return (Criteria) this; + } + + public Criteria andOtherUnitTwoBetween(String value1, String value2) { + addCriterion("other_unit_two between", value1, value2, "otherUnitTwo"); + return (Criteria) this; + } + + public Criteria andOtherUnitTwoNotBetween(String value1, String value2) { + addCriterion("other_unit_two not between", value1, value2, "otherUnitTwo"); + return (Criteria) this; + } + + public Criteria andOtherUnitThreeIsNull() { + addCriterion("other_unit_three is null"); + return (Criteria) this; + } + + public Criteria andOtherUnitThreeIsNotNull() { + addCriterion("other_unit_three is not null"); + return (Criteria) this; + } + + public Criteria andOtherUnitThreeEqualTo(String value) { + addCriterion("other_unit_three =", value, "otherUnitThree"); + return (Criteria) this; + } + + public Criteria andOtherUnitThreeNotEqualTo(String value) { + addCriterion("other_unit_three <>", value, "otherUnitThree"); + return (Criteria) this; + } + + public Criteria andOtherUnitThreeGreaterThan(String value) { + addCriterion("other_unit_three >", value, "otherUnitThree"); + return (Criteria) this; + } + + public Criteria andOtherUnitThreeGreaterThanOrEqualTo(String value) { + addCriterion("other_unit_three >=", value, "otherUnitThree"); + return (Criteria) this; + } + + public Criteria andOtherUnitThreeLessThan(String value) { + addCriterion("other_unit_three <", value, "otherUnitThree"); + return (Criteria) this; + } + + public Criteria andOtherUnitThreeLessThanOrEqualTo(String value) { + addCriterion("other_unit_three <=", value, "otherUnitThree"); + return (Criteria) this; + } + + public Criteria andOtherUnitThreeLike(String value) { + addCriterion("other_unit_three like", value, "otherUnitThree"); + return (Criteria) this; + } + + public Criteria andOtherUnitThreeNotLike(String value) { + addCriterion("other_unit_three not like", value, "otherUnitThree"); + return (Criteria) this; + } + + public Criteria andOtherUnitThreeIn(List values) { + addCriterion("other_unit_three in", values, "otherUnitThree"); + return (Criteria) this; + } + + public Criteria andOtherUnitThreeNotIn(List values) { + addCriterion("other_unit_three not in", values, "otherUnitThree"); + return (Criteria) this; + } + + public Criteria andOtherUnitThreeBetween(String value1, String value2) { + addCriterion("other_unit_three between", value1, value2, "otherUnitThree"); + return (Criteria) this; + } + + public Criteria andOtherUnitThreeNotBetween(String value1, String value2) { + addCriterion("other_unit_three not between", value1, value2, "otherUnitThree"); + return (Criteria) this; + } + + public Criteria andRatioIsNull() { + addCriterion("ratio is null"); + return (Criteria) this; + } + + public Criteria andRatioIsNotNull() { + addCriterion("ratio is not null"); + return (Criteria) this; + } + + public Criteria andRatioEqualTo(BigDecimal value) { + addCriterion("ratio =", value, "ratio"); + return (Criteria) this; + } + + public Criteria andRatioNotEqualTo(BigDecimal value) { + addCriterion("ratio <>", value, "ratio"); + return (Criteria) this; + } + + public Criteria andRatioGreaterThan(BigDecimal value) { + addCriterion("ratio >", value, "ratio"); + return (Criteria) this; + } + + public Criteria andRatioGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("ratio >=", value, "ratio"); + return (Criteria) this; + } + + public Criteria andRatioLessThan(BigDecimal value) { + addCriterion("ratio <", value, "ratio"); + return (Criteria) this; + } + + public Criteria andRatioLessThanOrEqualTo(BigDecimal value) { + addCriterion("ratio <=", value, "ratio"); + return (Criteria) this; + } + + public Criteria andRatioIn(List values) { + addCriterion("ratio in", values, "ratio"); + return (Criteria) this; + } + + public Criteria andRatioNotIn(List values) { + addCriterion("ratio not in", values, "ratio"); + return (Criteria) this; + } + + public Criteria andRatioBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("ratio between", value1, value2, "ratio"); + return (Criteria) this; + } + + public Criteria andRatioNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("ratio not between", value1, value2, "ratio"); + return (Criteria) this; + } + + public Criteria andRatioTwoIsNull() { + addCriterion("ratio_two is null"); + return (Criteria) this; + } + + public Criteria andRatioTwoIsNotNull() { + addCriterion("ratio_two is not null"); + return (Criteria) this; + } + + public Criteria andRatioTwoEqualTo(BigDecimal value) { + addCriterion("ratio_two =", value, "ratioTwo"); + return (Criteria) this; + } + + public Criteria andRatioTwoNotEqualTo(BigDecimal value) { + addCriterion("ratio_two <>", value, "ratioTwo"); + return (Criteria) this; + } + + public Criteria andRatioTwoGreaterThan(BigDecimal value) { + addCriterion("ratio_two >", value, "ratioTwo"); + return (Criteria) this; + } + + public Criteria andRatioTwoGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("ratio_two >=", value, "ratioTwo"); + return (Criteria) this; + } + + public Criteria andRatioTwoLessThan(BigDecimal value) { + addCriterion("ratio_two <", value, "ratioTwo"); + return (Criteria) this; + } + + public Criteria andRatioTwoLessThanOrEqualTo(BigDecimal value) { + addCriterion("ratio_two <=", value, "ratioTwo"); + return (Criteria) this; + } + + public Criteria andRatioTwoIn(List values) { + addCriterion("ratio_two in", values, "ratioTwo"); + return (Criteria) this; + } + + public Criteria andRatioTwoNotIn(List values) { + addCriterion("ratio_two not in", values, "ratioTwo"); + return (Criteria) this; + } + + public Criteria andRatioTwoBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("ratio_two between", value1, value2, "ratioTwo"); + return (Criteria) this; + } + + public Criteria andRatioTwoNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("ratio_two not between", value1, value2, "ratioTwo"); + return (Criteria) this; + } + + public Criteria andRatioThreeIsNull() { + addCriterion("ratio_three is null"); + return (Criteria) this; + } + + public Criteria andRatioThreeIsNotNull() { + addCriterion("ratio_three is not null"); + return (Criteria) this; + } + + public Criteria andRatioThreeEqualTo(BigDecimal value) { + addCriterion("ratio_three =", value, "ratioThree"); + return (Criteria) this; + } + + public Criteria andRatioThreeNotEqualTo(BigDecimal value) { + addCriterion("ratio_three <>", value, "ratioThree"); + return (Criteria) this; + } + + public Criteria andRatioThreeGreaterThan(BigDecimal value) { + addCriterion("ratio_three >", value, "ratioThree"); + return (Criteria) this; + } + + public Criteria andRatioThreeGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("ratio_three >=", value, "ratioThree"); + return (Criteria) this; + } + + public Criteria andRatioThreeLessThan(BigDecimal value) { + addCriterion("ratio_three <", value, "ratioThree"); + return (Criteria) this; + } + + public Criteria andRatioThreeLessThanOrEqualTo(BigDecimal value) { + addCriterion("ratio_three <=", value, "ratioThree"); + return (Criteria) this; + } + + public Criteria andRatioThreeIn(List values) { + addCriterion("ratio_three in", values, "ratioThree"); + return (Criteria) this; + } + + public Criteria andRatioThreeNotIn(List values) { + addCriterion("ratio_three not in", values, "ratioThree"); + return (Criteria) this; + } + + public Criteria andRatioThreeBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("ratio_three between", value1, value2, "ratioThree"); + return (Criteria) this; + } + + public Criteria andRatioThreeNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("ratio_three not between", value1, value2, "ratioThree"); + return (Criteria) this; + } + + public Criteria andEnabledIsNull() { + addCriterion("enabled is null"); + return (Criteria) this; + } + + public Criteria andEnabledIsNotNull() { + addCriterion("enabled is not null"); + return (Criteria) this; + } + + public Criteria andEnabledEqualTo(Boolean value) { + addCriterion("enabled =", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledNotEqualTo(Boolean value) { + addCriterion("enabled <>", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledGreaterThan(Boolean value) { + addCriterion("enabled >", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledGreaterThanOrEqualTo(Boolean value) { + addCriterion("enabled >=", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledLessThan(Boolean value) { + addCriterion("enabled <", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledLessThanOrEqualTo(Boolean value) { + addCriterion("enabled <=", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledIn(List values) { + addCriterion("enabled in", values, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledNotIn(List values) { + addCriterion("enabled not in", values, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledBetween(Boolean value1, Boolean value2) { + addCriterion("enabled between", value1, value2, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledNotBetween(Boolean value1, Boolean value2) { + addCriterion("enabled not between", value1, value2, "enabled"); + return (Criteria) this; + } + + public Criteria andTenantIdIsNull() { + addCriterion("tenant_id is null"); + return (Criteria) this; + } + + public Criteria andTenantIdIsNotNull() { + addCriterion("tenant_id is not null"); + return (Criteria) this; + } + + public Criteria andTenantIdEqualTo(Long value) { + addCriterion("tenant_id =", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotEqualTo(Long value) { + addCriterion("tenant_id <>", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdGreaterThan(Long value) { + addCriterion("tenant_id >", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdGreaterThanOrEqualTo(Long value) { + addCriterion("tenant_id >=", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdLessThan(Long value) { + addCriterion("tenant_id <", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdLessThanOrEqualTo(Long value) { + addCriterion("tenant_id <=", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdIn(List values) { + addCriterion("tenant_id in", values, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotIn(List values) { + addCriterion("tenant_id not in", values, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdBetween(Long value1, Long value2) { + addCriterion("tenant_id between", value1, value2, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotBetween(Long value1, Long value2) { + addCriterion("tenant_id not between", value1, value2, "tenantId"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIsNull() { + addCriterion("delete_flag is null"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIsNotNull() { + addCriterion("delete_flag is not null"); + return (Criteria) this; + } + + public Criteria andDeleteFlagEqualTo(String value) { + addCriterion("delete_flag =", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotEqualTo(String value) { + addCriterion("delete_flag <>", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagGreaterThan(String value) { + addCriterion("delete_flag >", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagGreaterThanOrEqualTo(String value) { + addCriterion("delete_flag >=", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLessThan(String value) { + addCriterion("delete_flag <", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLessThanOrEqualTo(String value) { + addCriterion("delete_flag <=", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLike(String value) { + addCriterion("delete_flag like", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotLike(String value) { + addCriterion("delete_flag not like", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIn(List values) { + addCriterion("delete_flag in", values, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotIn(List values) { + addCriterion("delete_flag not in", values, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagBetween(String value1, String value2) { + addCriterion("delete_flag between", value1, value2, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotBetween(String value1, String value2) { + addCriterion("delete_flag not between", value1, value2, "deleteFlag"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/User.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/User.java new file mode 100644 index 0000000..4484ee9 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/User.java @@ -0,0 +1,173 @@ +package com.reallin.smt.datasource.entities; + +public class User { + private Long id; + + private String username; + + private String loginName; + + private String password; + + private String leaderFlag; + + private String position; + + private String department; + + private String email; + + private String phonenum; + + private Byte ismanager; + + private Byte isystem; + + private Byte status; + + private String description; + + private String remark; + + private String weixinOpenId; + + private Long tenantId; + + private String deleteFlag; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username == null ? null : username.trim(); + } + + public String getLoginName() { + return loginName; + } + + public void setLoginName(String loginName) { + this.loginName = loginName == null ? null : loginName.trim(); + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password == null ? null : password.trim(); + } + + public String getLeaderFlag() { + return leaderFlag; + } + + public void setLeaderFlag(String leaderFlag) { + this.leaderFlag = leaderFlag == null ? null : leaderFlag.trim(); + } + + public String getPosition() { + return position; + } + + public void setPosition(String position) { + this.position = position == null ? null : position.trim(); + } + + public String getDepartment() { + return department; + } + + public void setDepartment(String department) { + this.department = department == null ? null : department.trim(); + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email == null ? null : email.trim(); + } + + public String getPhonenum() { + return phonenum; + } + + public void setPhonenum(String phonenum) { + this.phonenum = phonenum == null ? null : phonenum.trim(); + } + + public Byte getIsmanager() { + return ismanager; + } + + public void setIsmanager(Byte ismanager) { + this.ismanager = ismanager; + } + + public Byte getIsystem() { + return isystem; + } + + public void setIsystem(Byte isystem) { + this.isystem = isystem; + } + + public Byte getStatus() { + return status; + } + + public void setStatus(Byte status) { + this.status = status; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description == null ? null : description.trim(); + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark == null ? null : remark.trim(); + } + + public String getWeixinOpenId() { + return weixinOpenId; + } + + public void setWeixinOpenId(String weixinOpenId) { + this.weixinOpenId = weixinOpenId == null ? null : weixinOpenId.trim(); + } + + public Long getTenantId() { + return tenantId; + } + + public void setTenantId(Long tenantId) { + this.tenantId = tenantId; + } + + public String getDeleteFlag() { + return deleteFlag; + } + + public void setDeleteFlag(String deleteFlag) { + this.deleteFlag = deleteFlag == null ? null : deleteFlag.trim(); + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/UserBusiness.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/UserBusiness.java new file mode 100644 index 0000000..a75969f --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/UserBusiness.java @@ -0,0 +1,73 @@ +package com.reallin.smt.datasource.entities; + +public class UserBusiness { + private Long id; + + private String type; + + private String keyId; + + private String value; + + private String btnStr; + + private Long tenantId; + + private String deleteFlag; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type == null ? null : type.trim(); + } + + public String getKeyId() { + return keyId; + } + + public void setKeyId(String keyId) { + this.keyId = keyId == null ? null : keyId.trim(); + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value == null ? null : value.trim(); + } + + public String getBtnStr() { + return btnStr; + } + + public void setBtnStr(String btnStr) { + this.btnStr = btnStr == null ? null : btnStr.trim(); + } + + public Long getTenantId() { + return tenantId; + } + + public void setTenantId(Long tenantId) { + this.tenantId = tenantId; + } + + public String getDeleteFlag() { + return deleteFlag; + } + + public void setDeleteFlag(String deleteFlag) { + this.deleteFlag = deleteFlag == null ? null : deleteFlag.trim(); + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/UserBusinessExample.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/UserBusinessExample.java new file mode 100644 index 0000000..1906c81 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/UserBusinessExample.java @@ -0,0 +1,669 @@ +package com.reallin.smt.datasource.entities; + +import java.util.ArrayList; +import java.util.List; + +public class UserBusinessExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public UserBusinessExample() { + oredCriteria = new ArrayList<>(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList<>(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andTypeIsNull() { + addCriterion("type is null"); + return (Criteria) this; + } + + public Criteria andTypeIsNotNull() { + addCriterion("type is not null"); + return (Criteria) this; + } + + public Criteria andTypeEqualTo(String value) { + addCriterion("type =", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotEqualTo(String value) { + addCriterion("type <>", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeGreaterThan(String value) { + addCriterion("type >", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeGreaterThanOrEqualTo(String value) { + addCriterion("type >=", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLessThan(String value) { + addCriterion("type <", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLessThanOrEqualTo(String value) { + addCriterion("type <=", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLike(String value) { + addCriterion("type like", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotLike(String value) { + addCriterion("type not like", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeIn(List values) { + addCriterion("type in", values, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotIn(List values) { + addCriterion("type not in", values, "type"); + return (Criteria) this; + } + + public Criteria andTypeBetween(String value1, String value2) { + addCriterion("type between", value1, value2, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotBetween(String value1, String value2) { + addCriterion("type not between", value1, value2, "type"); + return (Criteria) this; + } + + public Criteria andKeyIdIsNull() { + addCriterion("key_id is null"); + return (Criteria) this; + } + + public Criteria andKeyIdIsNotNull() { + addCriterion("key_id is not null"); + return (Criteria) this; + } + + public Criteria andKeyIdEqualTo(String value) { + addCriterion("key_id =", value, "keyId"); + return (Criteria) this; + } + + public Criteria andKeyIdNotEqualTo(String value) { + addCriterion("key_id <>", value, "keyId"); + return (Criteria) this; + } + + public Criteria andKeyIdGreaterThan(String value) { + addCriterion("key_id >", value, "keyId"); + return (Criteria) this; + } + + public Criteria andKeyIdGreaterThanOrEqualTo(String value) { + addCriterion("key_id >=", value, "keyId"); + return (Criteria) this; + } + + public Criteria andKeyIdLessThan(String value) { + addCriterion("key_id <", value, "keyId"); + return (Criteria) this; + } + + public Criteria andKeyIdLessThanOrEqualTo(String value) { + addCriterion("key_id <=", value, "keyId"); + return (Criteria) this; + } + + public Criteria andKeyIdLike(String value) { + addCriterion("key_id like", value, "keyId"); + return (Criteria) this; + } + + public Criteria andKeyIdNotLike(String value) { + addCriterion("key_id not like", value, "keyId"); + return (Criteria) this; + } + + public Criteria andKeyIdIn(List values) { + addCriterion("key_id in", values, "keyId"); + return (Criteria) this; + } + + public Criteria andKeyIdNotIn(List values) { + addCriterion("key_id not in", values, "keyId"); + return (Criteria) this; + } + + public Criteria andKeyIdBetween(String value1, String value2) { + addCriterion("key_id between", value1, value2, "keyId"); + return (Criteria) this; + } + + public Criteria andKeyIdNotBetween(String value1, String value2) { + addCriterion("key_id not between", value1, value2, "keyId"); + return (Criteria) this; + } + + public Criteria andValueIsNull() { + addCriterion("value is null"); + return (Criteria) this; + } + + public Criteria andValueIsNotNull() { + addCriterion("value is not null"); + return (Criteria) this; + } + + public Criteria andValueEqualTo(String value) { + addCriterion("value =", value, "value"); + return (Criteria) this; + } + + public Criteria andValueNotEqualTo(String value) { + addCriterion("value <>", value, "value"); + return (Criteria) this; + } + + public Criteria andValueGreaterThan(String value) { + addCriterion("value >", value, "value"); + return (Criteria) this; + } + + public Criteria andValueGreaterThanOrEqualTo(String value) { + addCriterion("value >=", value, "value"); + return (Criteria) this; + } + + public Criteria andValueLessThan(String value) { + addCriterion("value <", value, "value"); + return (Criteria) this; + } + + public Criteria andValueLessThanOrEqualTo(String value) { + addCriterion("value <=", value, "value"); + return (Criteria) this; + } + + public Criteria andValueLike(String value) { + addCriterion("value like", value, "value"); + return (Criteria) this; + } + + public Criteria andValueNotLike(String value) { + addCriterion("value not like", value, "value"); + return (Criteria) this; + } + + public Criteria andValueIn(List values) { + addCriterion("value in", values, "value"); + return (Criteria) this; + } + + public Criteria andValueNotIn(List values) { + addCriterion("value not in", values, "value"); + return (Criteria) this; + } + + public Criteria andValueBetween(String value1, String value2) { + addCriterion("value between", value1, value2, "value"); + return (Criteria) this; + } + + public Criteria andValueNotBetween(String value1, String value2) { + addCriterion("value not between", value1, value2, "value"); + return (Criteria) this; + } + + public Criteria andBtnStrIsNull() { + addCriterion("btn_str is null"); + return (Criteria) this; + } + + public Criteria andBtnStrIsNotNull() { + addCriterion("btn_str is not null"); + return (Criteria) this; + } + + public Criteria andBtnStrEqualTo(String value) { + addCriterion("btn_str =", value, "btnStr"); + return (Criteria) this; + } + + public Criteria andBtnStrNotEqualTo(String value) { + addCriterion("btn_str <>", value, "btnStr"); + return (Criteria) this; + } + + public Criteria andBtnStrGreaterThan(String value) { + addCriterion("btn_str >", value, "btnStr"); + return (Criteria) this; + } + + public Criteria andBtnStrGreaterThanOrEqualTo(String value) { + addCriterion("btn_str >=", value, "btnStr"); + return (Criteria) this; + } + + public Criteria andBtnStrLessThan(String value) { + addCriterion("btn_str <", value, "btnStr"); + return (Criteria) this; + } + + public Criteria andBtnStrLessThanOrEqualTo(String value) { + addCriterion("btn_str <=", value, "btnStr"); + return (Criteria) this; + } + + public Criteria andBtnStrLike(String value) { + addCriterion("btn_str like", value, "btnStr"); + return (Criteria) this; + } + + public Criteria andBtnStrNotLike(String value) { + addCriterion("btn_str not like", value, "btnStr"); + return (Criteria) this; + } + + public Criteria andBtnStrIn(List values) { + addCriterion("btn_str in", values, "btnStr"); + return (Criteria) this; + } + + public Criteria andBtnStrNotIn(List values) { + addCriterion("btn_str not in", values, "btnStr"); + return (Criteria) this; + } + + public Criteria andBtnStrBetween(String value1, String value2) { + addCriterion("btn_str between", value1, value2, "btnStr"); + return (Criteria) this; + } + + public Criteria andBtnStrNotBetween(String value1, String value2) { + addCriterion("btn_str not between", value1, value2, "btnStr"); + return (Criteria) this; + } + + public Criteria andTenantIdIsNull() { + addCriterion("tenant_id is null"); + return (Criteria) this; + } + + public Criteria andTenantIdIsNotNull() { + addCriterion("tenant_id is not null"); + return (Criteria) this; + } + + public Criteria andTenantIdEqualTo(Long value) { + addCriterion("tenant_id =", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotEqualTo(Long value) { + addCriterion("tenant_id <>", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdGreaterThan(Long value) { + addCriterion("tenant_id >", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdGreaterThanOrEqualTo(Long value) { + addCriterion("tenant_id >=", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdLessThan(Long value) { + addCriterion("tenant_id <", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdLessThanOrEqualTo(Long value) { + addCriterion("tenant_id <=", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdIn(List values) { + addCriterion("tenant_id in", values, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotIn(List values) { + addCriterion("tenant_id not in", values, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdBetween(Long value1, Long value2) { + addCriterion("tenant_id between", value1, value2, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotBetween(Long value1, Long value2) { + addCriterion("tenant_id not between", value1, value2, "tenantId"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIsNull() { + addCriterion("delete_flag is null"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIsNotNull() { + addCriterion("delete_flag is not null"); + return (Criteria) this; + } + + public Criteria andDeleteFlagEqualTo(String value) { + addCriterion("delete_flag =", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotEqualTo(String value) { + addCriterion("delete_flag <>", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagGreaterThan(String value) { + addCriterion("delete_flag >", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagGreaterThanOrEqualTo(String value) { + addCriterion("delete_flag >=", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLessThan(String value) { + addCriterion("delete_flag <", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLessThanOrEqualTo(String value) { + addCriterion("delete_flag <=", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLike(String value) { + addCriterion("delete_flag like", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotLike(String value) { + addCriterion("delete_flag not like", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIn(List values) { + addCriterion("delete_flag in", values, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotIn(List values) { + addCriterion("delete_flag not in", values, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagBetween(String value1, String value2) { + addCriterion("delete_flag between", value1, value2, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotBetween(String value1, String value2) { + addCriterion("delete_flag not between", value1, value2, "deleteFlag"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/UserEx.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/UserEx.java new file mode 100644 index 0000000..c8a8033 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/UserEx.java @@ -0,0 +1,138 @@ +package com.reallin.smt.datasource.entities; + +import java.util.Date; + +/** + * Description + * + * @Author: cjl + * @Date: 2019/3/8 15:12 + */ +public class UserEx extends User{ + //部门简称 + private String orgAbr; + //部门id + private Long orgaId; + //用户在部门中排序 + private String userBlngOrgaDsplSeq; + //部门用户关联关系id + private Long orgaUserRelId; + + private Long roleId; + + private String roleName; + + private String userType; + + private Integer userNumLimit; + + private String expireTime; + + private String leaderFlagStr; + + /** + * 验证码 + */ + private String code; + + /** + * 唯一标识 + */ + private String uuid; + + public String getOrgAbr() { + return orgAbr; + } + + public void setOrgAbr(String orgAbr) { + this.orgAbr = orgAbr; + } + + public Long getOrgaId() { + return orgaId; + } + + public void setOrgaId(Long orgaId) { + this.orgaId = orgaId; + } + + public String getUserBlngOrgaDsplSeq() { + return userBlngOrgaDsplSeq; + } + + public void setUserBlngOrgaDsplSeq(String userBlngOrgaDsplSeq) { + this.userBlngOrgaDsplSeq = userBlngOrgaDsplSeq; + } + + public Long getOrgaUserRelId() { + return orgaUserRelId; + } + + public void setOrgaUserRelId(Long orgaUserRelId) { + this.orgaUserRelId = orgaUserRelId; + } + + public Long getRoleId() { + return roleId; + } + + public void setRoleId(Long roleId) { + this.roleId = roleId; + } + + public String getRoleName() { + return roleName; + } + + public void setRoleName(String roleName) { + this.roleName = roleName; + } + + public String getUserType() { + return userType; + } + + public void setUserType(String userType) { + this.userType = userType; + } + + public Integer getUserNumLimit() { + return userNumLimit; + } + + public void setUserNumLimit(Integer userNumLimit) { + this.userNumLimit = userNumLimit; + } + + public String getExpireTime() { + return expireTime; + } + + public void setExpireTime(String expireTime) { + this.expireTime = expireTime; + } + + public String getLeaderFlagStr() { + return leaderFlagStr; + } + + public void setLeaderFlagStr(String leaderFlagStr) { + this.leaderFlagStr = leaderFlagStr; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getUuid() { + return uuid; + } + + public void setUuid(String uuid) { + this.uuid = uuid; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/UserExample.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/UserExample.java new file mode 100644 index 0000000..1cfba1b --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/entities/UserExample.java @@ -0,0 +1,1339 @@ +package com.reallin.smt.datasource.entities; + +import java.util.ArrayList; +import java.util.List; + +public class UserExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public UserExample() { + oredCriteria = new ArrayList<>(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList<>(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andUsernameIsNull() { + addCriterion("username is null"); + return (Criteria) this; + } + + public Criteria andUsernameIsNotNull() { + addCriterion("username is not null"); + return (Criteria) this; + } + + public Criteria andUsernameEqualTo(String value) { + addCriterion("username =", value, "username"); + return (Criteria) this; + } + + public Criteria andUsernameNotEqualTo(String value) { + addCriterion("username <>", value, "username"); + return (Criteria) this; + } + + public Criteria andUsernameGreaterThan(String value) { + addCriterion("username >", value, "username"); + return (Criteria) this; + } + + public Criteria andUsernameGreaterThanOrEqualTo(String value) { + addCriterion("username >=", value, "username"); + return (Criteria) this; + } + + public Criteria andUsernameLessThan(String value) { + addCriterion("username <", value, "username"); + return (Criteria) this; + } + + public Criteria andUsernameLessThanOrEqualTo(String value) { + addCriterion("username <=", value, "username"); + return (Criteria) this; + } + + public Criteria andUsernameLike(String value) { + addCriterion("username like", value, "username"); + return (Criteria) this; + } + + public Criteria andUsernameNotLike(String value) { + addCriterion("username not like", value, "username"); + return (Criteria) this; + } + + public Criteria andUsernameIn(List values) { + addCriterion("username in", values, "username"); + return (Criteria) this; + } + + public Criteria andUsernameNotIn(List values) { + addCriterion("username not in", values, "username"); + return (Criteria) this; + } + + public Criteria andUsernameBetween(String value1, String value2) { + addCriterion("username between", value1, value2, "username"); + return (Criteria) this; + } + + public Criteria andUsernameNotBetween(String value1, String value2) { + addCriterion("username not between", value1, value2, "username"); + return (Criteria) this; + } + + public Criteria andLoginNameIsNull() { + addCriterion("login_name is null"); + return (Criteria) this; + } + + public Criteria andLoginNameIsNotNull() { + addCriterion("login_name is not null"); + return (Criteria) this; + } + + public Criteria andLoginNameEqualTo(String value) { + addCriterion("login_name =", value, "loginName"); + return (Criteria) this; + } + + public Criteria andLoginNameNotEqualTo(String value) { + addCriterion("login_name <>", value, "loginName"); + return (Criteria) this; + } + + public Criteria andLoginNameGreaterThan(String value) { + addCriterion("login_name >", value, "loginName"); + return (Criteria) this; + } + + public Criteria andLoginNameGreaterThanOrEqualTo(String value) { + addCriterion("login_name >=", value, "loginName"); + return (Criteria) this; + } + + public Criteria andLoginNameLessThan(String value) { + addCriterion("login_name <", value, "loginName"); + return (Criteria) this; + } + + public Criteria andLoginNameLessThanOrEqualTo(String value) { + addCriterion("login_name <=", value, "loginName"); + return (Criteria) this; + } + + public Criteria andLoginNameLike(String value) { + addCriterion("login_name like", value, "loginName"); + return (Criteria) this; + } + + public Criteria andLoginNameNotLike(String value) { + addCriterion("login_name not like", value, "loginName"); + return (Criteria) this; + } + + public Criteria andLoginNameIn(List values) { + addCriterion("login_name in", values, "loginName"); + return (Criteria) this; + } + + public Criteria andLoginNameNotIn(List values) { + addCriterion("login_name not in", values, "loginName"); + return (Criteria) this; + } + + public Criteria andLoginNameBetween(String value1, String value2) { + addCriterion("login_name between", value1, value2, "loginName"); + return (Criteria) this; + } + + public Criteria andLoginNameNotBetween(String value1, String value2) { + addCriterion("login_name not between", value1, value2, "loginName"); + return (Criteria) this; + } + + public Criteria andPasswordIsNull() { + addCriterion("password is null"); + return (Criteria) this; + } + + public Criteria andPasswordIsNotNull() { + addCriterion("password is not null"); + return (Criteria) this; + } + + public Criteria andPasswordEqualTo(String value) { + addCriterion("password =", value, "password"); + return (Criteria) this; + } + + public Criteria andPasswordNotEqualTo(String value) { + addCriterion("password <>", value, "password"); + return (Criteria) this; + } + + public Criteria andPasswordGreaterThan(String value) { + addCriterion("password >", value, "password"); + return (Criteria) this; + } + + public Criteria andPasswordGreaterThanOrEqualTo(String value) { + addCriterion("password >=", value, "password"); + return (Criteria) this; + } + + public Criteria andPasswordLessThan(String value) { + addCriterion("password <", value, "password"); + return (Criteria) this; + } + + public Criteria andPasswordLessThanOrEqualTo(String value) { + addCriterion("password <=", value, "password"); + return (Criteria) this; + } + + public Criteria andPasswordLike(String value) { + addCriterion("password like", value, "password"); + return (Criteria) this; + } + + public Criteria andPasswordNotLike(String value) { + addCriterion("password not like", value, "password"); + return (Criteria) this; + } + + public Criteria andPasswordIn(List values) { + addCriterion("password in", values, "password"); + return (Criteria) this; + } + + public Criteria andPasswordNotIn(List values) { + addCriterion("password not in", values, "password"); + return (Criteria) this; + } + + public Criteria andPasswordBetween(String value1, String value2) { + addCriterion("password between", value1, value2, "password"); + return (Criteria) this; + } + + public Criteria andPasswordNotBetween(String value1, String value2) { + addCriterion("password not between", value1, value2, "password"); + return (Criteria) this; + } + + public Criteria andLeaderFlagIsNull() { + addCriterion("leader_flag is null"); + return (Criteria) this; + } + + public Criteria andLeaderFlagIsNotNull() { + addCriterion("leader_flag is not null"); + return (Criteria) this; + } + + public Criteria andLeaderFlagEqualTo(String value) { + addCriterion("leader_flag =", value, "leaderFlag"); + return (Criteria) this; + } + + public Criteria andLeaderFlagNotEqualTo(String value) { + addCriterion("leader_flag <>", value, "leaderFlag"); + return (Criteria) this; + } + + public Criteria andLeaderFlagGreaterThan(String value) { + addCriterion("leader_flag >", value, "leaderFlag"); + return (Criteria) this; + } + + public Criteria andLeaderFlagGreaterThanOrEqualTo(String value) { + addCriterion("leader_flag >=", value, "leaderFlag"); + return (Criteria) this; + } + + public Criteria andLeaderFlagLessThan(String value) { + addCriterion("leader_flag <", value, "leaderFlag"); + return (Criteria) this; + } + + public Criteria andLeaderFlagLessThanOrEqualTo(String value) { + addCriterion("leader_flag <=", value, "leaderFlag"); + return (Criteria) this; + } + + public Criteria andLeaderFlagLike(String value) { + addCriterion("leader_flag like", value, "leaderFlag"); + return (Criteria) this; + } + + public Criteria andLeaderFlagNotLike(String value) { + addCriterion("leader_flag not like", value, "leaderFlag"); + return (Criteria) this; + } + + public Criteria andLeaderFlagIn(List values) { + addCriterion("leader_flag in", values, "leaderFlag"); + return (Criteria) this; + } + + public Criteria andLeaderFlagNotIn(List values) { + addCriterion("leader_flag not in", values, "leaderFlag"); + return (Criteria) this; + } + + public Criteria andLeaderFlagBetween(String value1, String value2) { + addCriterion("leader_flag between", value1, value2, "leaderFlag"); + return (Criteria) this; + } + + public Criteria andLeaderFlagNotBetween(String value1, String value2) { + addCriterion("leader_flag not between", value1, value2, "leaderFlag"); + return (Criteria) this; + } + + public Criteria andPositionIsNull() { + addCriterion("position is null"); + return (Criteria) this; + } + + public Criteria andPositionIsNotNull() { + addCriterion("position is not null"); + return (Criteria) this; + } + + public Criteria andPositionEqualTo(String value) { + addCriterion("position =", value, "position"); + return (Criteria) this; + } + + public Criteria andPositionNotEqualTo(String value) { + addCriterion("position <>", value, "position"); + return (Criteria) this; + } + + public Criteria andPositionGreaterThan(String value) { + addCriterion("position >", value, "position"); + return (Criteria) this; + } + + public Criteria andPositionGreaterThanOrEqualTo(String value) { + addCriterion("position >=", value, "position"); + return (Criteria) this; + } + + public Criteria andPositionLessThan(String value) { + addCriterion("position <", value, "position"); + return (Criteria) this; + } + + public Criteria andPositionLessThanOrEqualTo(String value) { + addCriterion("position <=", value, "position"); + return (Criteria) this; + } + + public Criteria andPositionLike(String value) { + addCriterion("position like", value, "position"); + return (Criteria) this; + } + + public Criteria andPositionNotLike(String value) { + addCriterion("position not like", value, "position"); + return (Criteria) this; + } + + public Criteria andPositionIn(List values) { + addCriterion("position in", values, "position"); + return (Criteria) this; + } + + public Criteria andPositionNotIn(List values) { + addCriterion("position not in", values, "position"); + return (Criteria) this; + } + + public Criteria andPositionBetween(String value1, String value2) { + addCriterion("position between", value1, value2, "position"); + return (Criteria) this; + } + + public Criteria andPositionNotBetween(String value1, String value2) { + addCriterion("position not between", value1, value2, "position"); + return (Criteria) this; + } + + public Criteria andDepartmentIsNull() { + addCriterion("department is null"); + return (Criteria) this; + } + + public Criteria andDepartmentIsNotNull() { + addCriterion("department is not null"); + return (Criteria) this; + } + + public Criteria andDepartmentEqualTo(String value) { + addCriterion("department =", value, "department"); + return (Criteria) this; + } + + public Criteria andDepartmentNotEqualTo(String value) { + addCriterion("department <>", value, "department"); + return (Criteria) this; + } + + public Criteria andDepartmentGreaterThan(String value) { + addCriterion("department >", value, "department"); + return (Criteria) this; + } + + public Criteria andDepartmentGreaterThanOrEqualTo(String value) { + addCriterion("department >=", value, "department"); + return (Criteria) this; + } + + public Criteria andDepartmentLessThan(String value) { + addCriterion("department <", value, "department"); + return (Criteria) this; + } + + public Criteria andDepartmentLessThanOrEqualTo(String value) { + addCriterion("department <=", value, "department"); + return (Criteria) this; + } + + public Criteria andDepartmentLike(String value) { + addCriterion("department like", value, "department"); + return (Criteria) this; + } + + public Criteria andDepartmentNotLike(String value) { + addCriterion("department not like", value, "department"); + return (Criteria) this; + } + + public Criteria andDepartmentIn(List values) { + addCriterion("department in", values, "department"); + return (Criteria) this; + } + + public Criteria andDepartmentNotIn(List values) { + addCriterion("department not in", values, "department"); + return (Criteria) this; + } + + public Criteria andDepartmentBetween(String value1, String value2) { + addCriterion("department between", value1, value2, "department"); + return (Criteria) this; + } + + public Criteria andDepartmentNotBetween(String value1, String value2) { + addCriterion("department not between", value1, value2, "department"); + return (Criteria) this; + } + + public Criteria andEmailIsNull() { + addCriterion("email is null"); + return (Criteria) this; + } + + public Criteria andEmailIsNotNull() { + addCriterion("email is not null"); + return (Criteria) this; + } + + public Criteria andEmailEqualTo(String value) { + addCriterion("email =", value, "email"); + return (Criteria) this; + } + + public Criteria andEmailNotEqualTo(String value) { + addCriterion("email <>", value, "email"); + return (Criteria) this; + } + + public Criteria andEmailGreaterThan(String value) { + addCriterion("email >", value, "email"); + return (Criteria) this; + } + + public Criteria andEmailGreaterThanOrEqualTo(String value) { + addCriterion("email >=", value, "email"); + return (Criteria) this; + } + + public Criteria andEmailLessThan(String value) { + addCriterion("email <", value, "email"); + return (Criteria) this; + } + + public Criteria andEmailLessThanOrEqualTo(String value) { + addCriterion("email <=", value, "email"); + return (Criteria) this; + } + + public Criteria andEmailLike(String value) { + addCriterion("email like", value, "email"); + return (Criteria) this; + } + + public Criteria andEmailNotLike(String value) { + addCriterion("email not like", value, "email"); + return (Criteria) this; + } + + public Criteria andEmailIn(List values) { + addCriterion("email in", values, "email"); + return (Criteria) this; + } + + public Criteria andEmailNotIn(List values) { + addCriterion("email not in", values, "email"); + return (Criteria) this; + } + + public Criteria andEmailBetween(String value1, String value2) { + addCriterion("email between", value1, value2, "email"); + return (Criteria) this; + } + + public Criteria andEmailNotBetween(String value1, String value2) { + addCriterion("email not between", value1, value2, "email"); + return (Criteria) this; + } + + public Criteria andPhonenumIsNull() { + addCriterion("phonenum is null"); + return (Criteria) this; + } + + public Criteria andPhonenumIsNotNull() { + addCriterion("phonenum is not null"); + return (Criteria) this; + } + + public Criteria andPhonenumEqualTo(String value) { + addCriterion("phonenum =", value, "phonenum"); + return (Criteria) this; + } + + public Criteria andPhonenumNotEqualTo(String value) { + addCriterion("phonenum <>", value, "phonenum"); + return (Criteria) this; + } + + public Criteria andPhonenumGreaterThan(String value) { + addCriterion("phonenum >", value, "phonenum"); + return (Criteria) this; + } + + public Criteria andPhonenumGreaterThanOrEqualTo(String value) { + addCriterion("phonenum >=", value, "phonenum"); + return (Criteria) this; + } + + public Criteria andPhonenumLessThan(String value) { + addCriterion("phonenum <", value, "phonenum"); + return (Criteria) this; + } + + public Criteria andPhonenumLessThanOrEqualTo(String value) { + addCriterion("phonenum <=", value, "phonenum"); + return (Criteria) this; + } + + public Criteria andPhonenumLike(String value) { + addCriterion("phonenum like", value, "phonenum"); + return (Criteria) this; + } + + public Criteria andPhonenumNotLike(String value) { + addCriterion("phonenum not like", value, "phonenum"); + return (Criteria) this; + } + + public Criteria andPhonenumIn(List values) { + addCriterion("phonenum in", values, "phonenum"); + return (Criteria) this; + } + + public Criteria andPhonenumNotIn(List values) { + addCriterion("phonenum not in", values, "phonenum"); + return (Criteria) this; + } + + public Criteria andPhonenumBetween(String value1, String value2) { + addCriterion("phonenum between", value1, value2, "phonenum"); + return (Criteria) this; + } + + public Criteria andPhonenumNotBetween(String value1, String value2) { + addCriterion("phonenum not between", value1, value2, "phonenum"); + return (Criteria) this; + } + + public Criteria andIsmanagerIsNull() { + addCriterion("ismanager is null"); + return (Criteria) this; + } + + public Criteria andIsmanagerIsNotNull() { + addCriterion("ismanager is not null"); + return (Criteria) this; + } + + public Criteria andIsmanagerEqualTo(Byte value) { + addCriterion("ismanager =", value, "ismanager"); + return (Criteria) this; + } + + public Criteria andIsmanagerNotEqualTo(Byte value) { + addCriterion("ismanager <>", value, "ismanager"); + return (Criteria) this; + } + + public Criteria andIsmanagerGreaterThan(Byte value) { + addCriterion("ismanager >", value, "ismanager"); + return (Criteria) this; + } + + public Criteria andIsmanagerGreaterThanOrEqualTo(Byte value) { + addCriterion("ismanager >=", value, "ismanager"); + return (Criteria) this; + } + + public Criteria andIsmanagerLessThan(Byte value) { + addCriterion("ismanager <", value, "ismanager"); + return (Criteria) this; + } + + public Criteria andIsmanagerLessThanOrEqualTo(Byte value) { + addCriterion("ismanager <=", value, "ismanager"); + return (Criteria) this; + } + + public Criteria andIsmanagerIn(List values) { + addCriterion("ismanager in", values, "ismanager"); + return (Criteria) this; + } + + public Criteria andIsmanagerNotIn(List values) { + addCriterion("ismanager not in", values, "ismanager"); + return (Criteria) this; + } + + public Criteria andIsmanagerBetween(Byte value1, Byte value2) { + addCriterion("ismanager between", value1, value2, "ismanager"); + return (Criteria) this; + } + + public Criteria andIsmanagerNotBetween(Byte value1, Byte value2) { + addCriterion("ismanager not between", value1, value2, "ismanager"); + return (Criteria) this; + } + + public Criteria andIsystemIsNull() { + addCriterion("isystem is null"); + return (Criteria) this; + } + + public Criteria andIsystemIsNotNull() { + addCriterion("isystem is not null"); + return (Criteria) this; + } + + public Criteria andIsystemEqualTo(Byte value) { + addCriterion("isystem =", value, "isystem"); + return (Criteria) this; + } + + public Criteria andIsystemNotEqualTo(Byte value) { + addCriterion("isystem <>", value, "isystem"); + return (Criteria) this; + } + + public Criteria andIsystemGreaterThan(Byte value) { + addCriterion("isystem >", value, "isystem"); + return (Criteria) this; + } + + public Criteria andIsystemGreaterThanOrEqualTo(Byte value) { + addCriterion("isystem >=", value, "isystem"); + return (Criteria) this; + } + + public Criteria andIsystemLessThan(Byte value) { + addCriterion("isystem <", value, "isystem"); + return (Criteria) this; + } + + public Criteria andIsystemLessThanOrEqualTo(Byte value) { + addCriterion("isystem <=", value, "isystem"); + return (Criteria) this; + } + + public Criteria andIsystemIn(List values) { + addCriterion("isystem in", values, "isystem"); + return (Criteria) this; + } + + public Criteria andIsystemNotIn(List values) { + addCriterion("isystem not in", values, "isystem"); + return (Criteria) this; + } + + public Criteria andIsystemBetween(Byte value1, Byte value2) { + addCriterion("isystem between", value1, value2, "isystem"); + return (Criteria) this; + } + + public Criteria andIsystemNotBetween(Byte value1, Byte value2) { + addCriterion("isystem not between", value1, value2, "isystem"); + return (Criteria) this; + } + + public Criteria andStatusIsNull() { + addCriterion("status is null"); + return (Criteria) this; + } + + public Criteria andStatusIsNotNull() { + addCriterion("status is not null"); + return (Criteria) this; + } + + public Criteria andStatusEqualTo(Byte value) { + addCriterion("status =", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusNotEqualTo(Byte value) { + addCriterion("status <>", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusGreaterThan(Byte value) { + addCriterion("status >", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusGreaterThanOrEqualTo(Byte value) { + addCriterion("status >=", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusLessThan(Byte value) { + addCriterion("status <", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusLessThanOrEqualTo(Byte value) { + addCriterion("status <=", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusIn(List values) { + addCriterion("status in", values, "status"); + return (Criteria) this; + } + + public Criteria andStatusNotIn(List values) { + addCriterion("status not in", values, "status"); + return (Criteria) this; + } + + public Criteria andStatusBetween(Byte value1, Byte value2) { + addCriterion("status between", value1, value2, "status"); + return (Criteria) this; + } + + public Criteria andStatusNotBetween(Byte value1, Byte value2) { + addCriterion("status not between", value1, value2, "status"); + return (Criteria) this; + } + + public Criteria andDescriptionIsNull() { + addCriterion("description is null"); + return (Criteria) this; + } + + public Criteria andDescriptionIsNotNull() { + addCriterion("description is not null"); + return (Criteria) this; + } + + public Criteria andDescriptionEqualTo(String value) { + addCriterion("description =", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionNotEqualTo(String value) { + addCriterion("description <>", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionGreaterThan(String value) { + addCriterion("description >", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionGreaterThanOrEqualTo(String value) { + addCriterion("description >=", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionLessThan(String value) { + addCriterion("description <", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionLessThanOrEqualTo(String value) { + addCriterion("description <=", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionLike(String value) { + addCriterion("description like", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionNotLike(String value) { + addCriterion("description not like", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionIn(List values) { + addCriterion("description in", values, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionNotIn(List values) { + addCriterion("description not in", values, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionBetween(String value1, String value2) { + addCriterion("description between", value1, value2, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionNotBetween(String value1, String value2) { + addCriterion("description not between", value1, value2, "description"); + return (Criteria) this; + } + + public Criteria andRemarkIsNull() { + addCriterion("remark is null"); + return (Criteria) this; + } + + public Criteria andRemarkIsNotNull() { + addCriterion("remark is not null"); + return (Criteria) this; + } + + public Criteria andRemarkEqualTo(String value) { + addCriterion("remark =", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotEqualTo(String value) { + addCriterion("remark <>", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThan(String value) { + addCriterion("remark >", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThanOrEqualTo(String value) { + addCriterion("remark >=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThan(String value) { + addCriterion("remark <", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThanOrEqualTo(String value) { + addCriterion("remark <=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLike(String value) { + addCriterion("remark like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotLike(String value) { + addCriterion("remark not like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkIn(List values) { + addCriterion("remark in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotIn(List values) { + addCriterion("remark not in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkBetween(String value1, String value2) { + addCriterion("remark between", value1, value2, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotBetween(String value1, String value2) { + addCriterion("remark not between", value1, value2, "remark"); + return (Criteria) this; + } + + public Criteria andWeixinOpenIdIsNull() { + addCriterion("weixin_open_id is null"); + return (Criteria) this; + } + + public Criteria andWeixinOpenIdIsNotNull() { + addCriterion("weixin_open_id is not null"); + return (Criteria) this; + } + + public Criteria andWeixinOpenIdEqualTo(String value) { + addCriterion("weixin_open_id =", value, "weixinOpenId"); + return (Criteria) this; + } + + public Criteria andWeixinOpenIdNotEqualTo(String value) { + addCriterion("weixin_open_id <>", value, "weixinOpenId"); + return (Criteria) this; + } + + public Criteria andWeixinOpenIdGreaterThan(String value) { + addCriterion("weixin_open_id >", value, "weixinOpenId"); + return (Criteria) this; + } + + public Criteria andWeixinOpenIdGreaterThanOrEqualTo(String value) { + addCriterion("weixin_open_id >=", value, "weixinOpenId"); + return (Criteria) this; + } + + public Criteria andWeixinOpenIdLessThan(String value) { + addCriterion("weixin_open_id <", value, "weixinOpenId"); + return (Criteria) this; + } + + public Criteria andWeixinOpenIdLessThanOrEqualTo(String value) { + addCriterion("weixin_open_id <=", value, "weixinOpenId"); + return (Criteria) this; + } + + public Criteria andWeixinOpenIdLike(String value) { + addCriterion("weixin_open_id like", value, "weixinOpenId"); + return (Criteria) this; + } + + public Criteria andWeixinOpenIdNotLike(String value) { + addCriterion("weixin_open_id not like", value, "weixinOpenId"); + return (Criteria) this; + } + + public Criteria andWeixinOpenIdIn(List values) { + addCriterion("weixin_open_id in", values, "weixinOpenId"); + return (Criteria) this; + } + + public Criteria andWeixinOpenIdNotIn(List values) { + addCriterion("weixin_open_id not in", values, "weixinOpenId"); + return (Criteria) this; + } + + public Criteria andWeixinOpenIdBetween(String value1, String value2) { + addCriterion("weixin_open_id between", value1, value2, "weixinOpenId"); + return (Criteria) this; + } + + public Criteria andWeixinOpenIdNotBetween(String value1, String value2) { + addCriterion("weixin_open_id not between", value1, value2, "weixinOpenId"); + return (Criteria) this; + } + + public Criteria andTenantIdIsNull() { + addCriterion("tenant_id is null"); + return (Criteria) this; + } + + public Criteria andTenantIdIsNotNull() { + addCriterion("tenant_id is not null"); + return (Criteria) this; + } + + public Criteria andTenantIdEqualTo(Long value) { + addCriterion("tenant_id =", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotEqualTo(Long value) { + addCriterion("tenant_id <>", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdGreaterThan(Long value) { + addCriterion("tenant_id >", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdGreaterThanOrEqualTo(Long value) { + addCriterion("tenant_id >=", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdLessThan(Long value) { + addCriterion("tenant_id <", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdLessThanOrEqualTo(Long value) { + addCriterion("tenant_id <=", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdIn(List values) { + addCriterion("tenant_id in", values, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotIn(List values) { + addCriterion("tenant_id not in", values, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdBetween(Long value1, Long value2) { + addCriterion("tenant_id between", value1, value2, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotBetween(Long value1, Long value2) { + addCriterion("tenant_id not between", value1, value2, "tenantId"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIsNull() { + addCriterion("delete_flag is null"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIsNotNull() { + addCriterion("delete_flag is not null"); + return (Criteria) this; + } + + public Criteria andDeleteFlagEqualTo(String value) { + addCriterion("delete_flag =", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotEqualTo(String value) { + addCriterion("delete_flag <>", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagGreaterThan(String value) { + addCriterion("delete_flag >", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagGreaterThanOrEqualTo(String value) { + addCriterion("delete_flag >=", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLessThan(String value) { + addCriterion("delete_flag <", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLessThanOrEqualTo(String value) { + addCriterion("delete_flag <=", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagLike(String value) { + addCriterion("delete_flag like", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotLike(String value) { + addCriterion("delete_flag not like", value, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagIn(List values) { + addCriterion("delete_flag in", values, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotIn(List values) { + addCriterion("delete_flag not in", values, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagBetween(String value1, String value2) { + addCriterion("delete_flag between", value1, value2, "deleteFlag"); + return (Criteria) this; + } + + public Criteria andDeleteFlagNotBetween(String value1, String value2) { + addCriterion("delete_flag not between", value1, value2, "deleteFlag"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/AccountHeadMapper.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/AccountHeadMapper.java new file mode 100644 index 0000000..6c8a6cd --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/AccountHeadMapper.java @@ -0,0 +1,30 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.AccountHead; +import com.reallin.smt.datasource.entities.AccountHeadExample; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface AccountHeadMapper { + long countByExample(AccountHeadExample example); + + int deleteByExample(AccountHeadExample example); + + int deleteByPrimaryKey(Long id); + + int insert(AccountHead record); + + int insertSelective(AccountHead record); + + List selectByExample(AccountHeadExample example); + + AccountHead selectByPrimaryKey(Long id); + + int updateByExampleSelective(@Param("record") AccountHead record, @Param("example") AccountHeadExample example); + + int updateByExample(@Param("record") AccountHead record, @Param("example") AccountHeadExample example); + + int updateByPrimaryKeySelective(AccountHead record); + + int updateByPrimaryKey(AccountHead record); +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/AccountHeadMapperEx.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/AccountHeadMapperEx.java new file mode 100644 index 0000000..fd3541b --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/AccountHeadMapperEx.java @@ -0,0 +1,49 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.AccountHead; +import com.reallin.smt.datasource.entities.AccountHeadExample; +import com.reallin.smt.datasource.entities.AccountHeadVo4ListEx; +import com.reallin.smt.datasource.entities.AccountItem; +import org.apache.ibatis.annotations.Param; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +public interface AccountHeadMapperEx { + + List selectByConditionAccountHead( + @Param("type") String type, + @Param("creatorArray") String[] creatorArray, + @Param("billNo") String billNo, + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("organId") Long organId, + @Param("creator") Long creator, + @Param("handsPersonId") Long handsPersonId, + @Param("accountId") Long accountId, + @Param("status") String status, + @Param("remark") String remark, + @Param("number") String number, + @Param("inOutItemId") Long inOutItemId); + + List getDetailByNumber( + @Param("billNo") String billNo); + + int batchDeleteAccountHeadByIds(@Param("updateTime") Date updateTime, @Param("updater") Long updater, @Param("ids") String[] ids); + + List getAccountHeadListByAccountIds(@Param("accountIds") String[] accountIds); + + List getAccountHeadListByOrganIds(@Param("organIds") String[] organIds); + + List getAccountHeadListByHandsPersonIds(@Param("handsPersonIds") String[] handsPersonIds); + + List getFinancialBillPriceByBillIdList( + @Param("idList") List idList); + + List getFinancialBillNoByBillId( + @Param("billId") Long billId); + + BigDecimal getFinancialAllPriceByOrganId( + @Param("organId") Long organId); +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/AccountItemMapper.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/AccountItemMapper.java new file mode 100644 index 0000000..bf5d836 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/AccountItemMapper.java @@ -0,0 +1,30 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.AccountItem; +import com.reallin.smt.datasource.entities.AccountItemExample; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface AccountItemMapper { + long countByExample(AccountItemExample example); + + int deleteByExample(AccountItemExample example); + + int deleteByPrimaryKey(Long id); + + int insert(AccountItem record); + + int insertSelective(AccountItem record); + + List selectByExample(AccountItemExample example); + + AccountItem selectByPrimaryKey(Long id); + + int updateByExampleSelective(@Param("record") AccountItem record, @Param("example") AccountItemExample example); + + int updateByExample(@Param("record") AccountItem record, @Param("example") AccountItemExample example); + + int updateByPrimaryKeySelective(AccountItem record); + + int updateByPrimaryKey(AccountItem record); +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/AccountItemMapperEx.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/AccountItemMapperEx.java new file mode 100644 index 0000000..5241d01 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/AccountItemMapperEx.java @@ -0,0 +1,42 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.AccountItem; +import com.reallin.smt.datasource.entities.AccountItemExample; +import com.reallin.smt.datasource.vo.AccountItemVo4List; +import org.apache.ibatis.annotations.Param; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +public interface AccountItemMapperEx { + + List selectByConditionAccountItem( + @Param("name") String name, + @Param("type") Integer type, + @Param("remark") String remark, + @Param("offset") Integer offset, + @Param("rows") Integer rows); + + Long countsByAccountItem( + @Param("name") String name, + @Param("type") Integer type, + @Param("remark") String remark); + + List getDetailList( + @Param("headerId") Long headerId); + + int batchDeleteAccountItemByIds(@Param("updateTime") Date updateTime, @Param("updater") Long updater, @Param("ids") String[] ids); + + List getAccountItemListByAccountIds(@Param("accountIds") String[] accountIds); + + List getAccountItemListByHeaderIds(@Param("headerIds") String[] headerIds); + + List getAccountItemListByInOutItemIds(@Param("inOutItemIds") String[] inOutItemIds); + + int batchDeleteAccountItemByHeadIds(@Param("updateTime") Date updateTime, @Param("updater") Long updater, @Param("ids") String[] ids); + + BigDecimal getEachAmountByBillId(@Param("billId") Long billId); + + BigDecimal getFinishDebtByOrganId(@Param("organId") Long organId); +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/AccountMapper.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/AccountMapper.java new file mode 100644 index 0000000..012b72c --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/AccountMapper.java @@ -0,0 +1,30 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.Account; +import com.reallin.smt.datasource.entities.AccountExample; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface AccountMapper { + long countByExample(AccountExample example); + + int deleteByExample(AccountExample example); + + int deleteByPrimaryKey(Long id); + + int insert(Account record); + + int insertSelective(Account record); + + List selectByExample(AccountExample example); + + Account selectByPrimaryKey(Long id); + + int updateByExampleSelective(@Param("record") Account record, @Param("example") AccountExample example); + + int updateByExample(@Param("record") Account record, @Param("example") AccountExample example); + + int updateByPrimaryKeySelective(Account record); + + int updateByPrimaryKey(Account record); +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/AccountMapperEx.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/AccountMapperEx.java new file mode 100644 index 0000000..9535887 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/AccountMapperEx.java @@ -0,0 +1,81 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.Account; +import com.reallin.smt.datasource.entities.AccountVo4Sum; +import com.reallin.smt.datasource.entities.DepotHead; +import com.reallin.smt.datasource.vo.AccountVo4InOutList; +import com.reallin.smt.datasource.vo.AccountVo4List; +import org.apache.ibatis.annotations.Param; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +public interface AccountMapperEx { + + List getAccountByParam( + @Param("name") String name, + @Param("serialNo") String serialNo); + + List selectByConditionAccount( + @Param("name") String name, + @Param("serialNo") String serialNo, + @Param("remark") String remark); + + BigDecimal getAccountSum( + @Param("accountId") Long accountId, + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("forceFlag") Boolean forceFlag); + + BigDecimal getAccountSumByHead( + @Param("accountId") Long accountId, + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("forceFlag") Boolean forceFlag); + + BigDecimal getAccountSumByDetail( + @Param("accountId") Long accountId, + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("forceFlag") Boolean forceFlag); + + List getManyAccountSum( + @Param("accountId") Long accountId, + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("forceFlag") Boolean forceFlag); + + List getAccountSumByParam( + @Param("name") String name, + @Param("serialNo") String serialNo, + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("forceFlag") Boolean forceFlag, + @Param("offset") Integer offset, + @Param("rows") Integer rows); + + List getManyAccountSumByParam( + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("forceFlag") Boolean forceFlag); + + List findAccountInOutList( + @Param("accountId") Long accountId, + @Param("number") String number, + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("forceFlag") Boolean forceFlag, + @Param("offset") Integer offset, + @Param("rows") Integer rows); + + int findAccountInOutListCount( + @Param("accountId") Long accountId, + @Param("number") String number, + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("forceFlag") Boolean forceFlag); + + int batchDeleteAccountByIds(@Param("updateTime") Date updateTime, @Param("updater") Long updater, @Param("ids") String ids[]); + +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/AssetManagementMapper.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/AssetManagementMapper.java new file mode 100644 index 0000000..56481d0 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/AssetManagementMapper.java @@ -0,0 +1,77 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.Asset; +import com.reallin.smt.datasource.entities.AssetCategory; +import com.reallin.smt.datasource.entities.AssetDevice; +import com.reallin.smt.datasource.entities.AssetInventory; +import com.reallin.smt.datasource.entities.AssetInventoryDetail; +import com.reallin.smt.datasource.vo.InventoryOperatorOption; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +public interface AssetManagementMapper { + Map selectAssetDashboardSummary(); + List> selectAssetCategoryDistribution(); + List> selectAssetStatusDistribution(); + List> selectAssetDepartmentDistribution(); + List> selectDeviceCategoryDistribution(); + List> selectRecentAssetInventories(); + + List selectAssets(@Param("keyword") String keyword, @Param("categoryId") Long categoryId, + @Param("status") String status); + Asset selectAssetById(@Param("id") Long id); + int countAssetCode(@Param("assetCode") String assetCode, @Param("excludeId") Long excludeId); + int insertAsset(Asset record); + int updateAsset(Asset record); + int deleteAsset(@Param("id") Long id, @Param("userId") Long userId); + + List selectAssetCategories(@Param("keyword") String keyword, + @Param("enabled") Boolean enabled); + AssetCategory selectAssetCategoryById(@Param("id") Long id); + int countAssetCategoryCode(@Param("categoryCode") String categoryCode, + @Param("excludeId") Long excludeId); + int countAssetCategoryName(@Param("categoryName") String categoryName, + @Param("excludeId") Long excludeId); + int countAssetsByCategory(@Param("categoryId") Long categoryId); + int insertAssetCategory(AssetCategory record); + int updateAssetCategory(AssetCategory record); + int deleteAssetCategory(@Param("id") Long id, @Param("userId") Long userId); + + List selectDevices(@Param("keyword") String keyword, @Param("category") String category, + @Param("status") String status); + List selectDeviceOptions(); + AssetDevice selectDeviceById(@Param("id") Long id); + int countDeviceCode(@Param("deviceCode") String deviceCode, @Param("excludeId") Long excludeId); + int insertDevice(AssetDevice record); + int updateDevice(AssetDevice record); + int deleteDevice(@Param("id") Long id, @Param("userId") Long userId); + + List selectInventories(@Param("keyword") String keyword, @Param("status") String status, + @Param("scopeType") String scopeType, + @Param("plannedStart") String plannedStart, + @Param("plannedEnd") String plannedEnd, + @Param("inventoryUserId") Long inventoryUserId); + List selectInventoryOperators(); + InventoryOperatorOption selectInventoryOperatorById(@Param("id") Long id); + AssetInventory selectInventoryById(@Param("id") Long id); + AssetInventory selectInventoryByNo(@Param("inventoryNo") String inventoryNo); + AssetInventory selectInventoryByExternalRequestId(@Param("externalRequestId") String externalRequestId); + int insertInventory(AssetInventory record); + int updateInventory(AssetInventory record); + int deleteInventory(@Param("id") Long id, @Param("userId") Long userId); + + List selectInventoryDetails(@Param("inventoryId") Long inventoryId, + @Param("inventoryStatus") String inventoryStatus, + @Param("keyword") String keyword); + List> selectInventoryDetailImages(@Param("inventoryId") Long inventoryId); + AssetInventoryDetail selectInventoryDetail(@Param("id") Long id, @Param("inventoryId") Long inventoryId, + @Param("targetCode") String targetCode); + int insertInventoryDetail(AssetInventoryDetail record); + int updateInventoryDetail(AssetInventoryDetail record); + Map countInventoryDetails(@Param("inventoryId") Long inventoryId); + int updateDeviceInventoryTime(@Param("deviceId") Long deviceId); + int countLinkedDevices(@Param("assetId") Long assetId); + int countOpenInventoryTarget(@Param("targetType") String targetType, @Param("targetId") Long targetId); +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/CustomerCategoryMapper.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/CustomerCategoryMapper.java new file mode 100644 index 0000000..a3671c8 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/CustomerCategoryMapper.java @@ -0,0 +1,21 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.CustomerCategory; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface CustomerCategoryMapper { + int deleteByPrimaryKey(Long id); + + int insert(CustomerCategory record); + + int insertSelective(CustomerCategory record); + + CustomerCategory selectByPrimaryKey(Long id); + + int updateByPrimaryKeySelective(CustomerCategory record); + + int updateByPrimaryKey(CustomerCategory record); + + List selectAll(); +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/CustomerCategoryMapperEx.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/CustomerCategoryMapperEx.java new file mode 100644 index 0000000..afac6df --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/CustomerCategoryMapperEx.java @@ -0,0 +1,18 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.CustomerCategory; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; +import java.util.List; + +public interface CustomerCategoryMapperEx { + + List selectByCondition( + @Param("categoryName") String categoryName, + @Param("parentId") Long parentId); + + int batchDeleteByIds(@Param("updateTime") Date updateTime, @Param("updater") Long updater, @Param("ids") String ids[]); + + List getTreeList(); +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/CustomerContactMapper.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/CustomerContactMapper.java new file mode 100644 index 0000000..ee0741f --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/CustomerContactMapper.java @@ -0,0 +1,21 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.CustomerContact; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface CustomerContactMapper { + int deleteByPrimaryKey(Long id); + + int insert(CustomerContact record); + + int insertSelective(CustomerContact record); + + CustomerContact selectByPrimaryKey(Long id); + + int updateByPrimaryKeySelective(CustomerContact record); + + int updateByPrimaryKey(CustomerContact record); + + List selectByCustomerId(@Param("customerId") Long customerId); +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/CustomerContactMapperEx.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/CustomerContactMapperEx.java new file mode 100644 index 0000000..58e2116 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/CustomerContactMapperEx.java @@ -0,0 +1,18 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.CustomerContact; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; +import java.util.List; + +public interface CustomerContactMapperEx { + + List selectByCondition( + @Param("customerId") Long customerId, + @Param("contactName") String contactName); + + int batchDeleteByIds(@Param("updateTime") Date updateTime, @Param("updater") Long updater, @Param("ids") String ids[]); + + int deleteByCustomerId(@Param("customerId") Long customerId); +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/DeliveryPlanMapper.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/DeliveryPlanMapper.java new file mode 100644 index 0000000..e506f0f --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/DeliveryPlanMapper.java @@ -0,0 +1,44 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.DeliveryPlan; +import com.reallin.smt.datasource.entities.DeliveryPlanItem; +import com.reallin.smt.datasource.vo.DeliveryPlanVo4List; +import org.apache.ibatis.annotations.Param; + +import java.math.BigDecimal; +import java.util.List; + +public interface DeliveryPlanMapper { + DeliveryPlan selectByPrimaryKey(@Param("id") Long id); + + List selectList(@Param("planNumber") String planNumber, + @Param("sourceBillNumber") String sourceBillNumber, + @Param("saleOrderNumber") String saleOrderNumber, + @Param("sourceType") String sourceType, + @Param("status") String status, + @Param("beginTime") String beginTime, + @Param("endTime") String endTime); + + int insertSelective(DeliveryPlan record); + + int updateByPrimaryKeySelective(DeliveryPlan record); + + int batchInsertItems(@Param("list") List list); + + int batchDeleteItemsByPlanId(@Param("planId") Long planId); + + int updateItemPlanQuantity(@Param("id") Long id, + @Param("planQuantity") BigDecimal planQuantity, + @Param("remark") String remark); + + List selectItemsByPlanId(@Param("planId") Long planId); + + List selectBillItemsForPlan(@Param("sourceBillId") Long sourceBillId); + + BigDecimal getPlannedQuantityBySourceItemId(@Param("sourceItemId") Long sourceItemId, + @Param("excludePlanId") Long excludePlanId); + + BigDecimal getShippedQuantityByPlanItemId(@Param("planItemId") Long planItemId); + + BigDecimal getCommittedQuantityByPlanItemId(@Param("planItemId") Long planItemId); +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/DepotHeadMapper.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/DepotHeadMapper.java new file mode 100644 index 0000000..727e2d2 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/DepotHeadMapper.java @@ -0,0 +1,30 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.DepotHead; +import com.reallin.smt.datasource.entities.DepotHeadExample; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface DepotHeadMapper { + long countByExample(DepotHeadExample example); + + int deleteByExample(DepotHeadExample example); + + int deleteByPrimaryKey(Long id); + + int insert(DepotHead record); + + int insertSelective(DepotHead record); + + List selectByExample(DepotHeadExample example); + + DepotHead selectByPrimaryKey(Long id); + + int updateByExampleSelective(@Param("record") DepotHead record, @Param("example") DepotHeadExample example); + + int updateByExample(@Param("record") DepotHead record, @Param("example") DepotHeadExample example); + + int updateByPrimaryKeySelective(DepotHead record); + + int updateByPrimaryKey(DepotHead record); +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/DepotHeadMapperEx.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/DepotHeadMapperEx.java new file mode 100644 index 0000000..99b788f --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/DepotHeadMapperEx.java @@ -0,0 +1,311 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.DepotHead; +import com.reallin.smt.datasource.vo.*; +import org.apache.ibatis.annotations.Param; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * Description + * + * @Author: cjl + * @Date: 2019/1/25 14:50 + */ +public interface DepotHeadMapperEx { + List selectByConditionDepotHead( + @Param("type") String type, + @Param("subType") String subType, + @Param("creatorArray") String[] creatorArray, + @Param("hasDebt") String hasDebt, + @Param("hasLastDebt") String hasLastDebt, + @Param("statusArray") String[] statusArray, + @Param("purchaseStatusArray") String[] purchaseStatusArray, + @Param("number") String number, + @Param("linkApply") String linkApply, + @Param("linkNumber") String linkNumber, + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("materialParam") String materialParam, + @Param("organId") Long organId, + @Param("organArray") String[] organArray, + @Param("creator") Long creator, + @Param("depotId") Long depotId, + @Param("depotArray") String[] depotArray, + @Param("accountId") Long accountId, + @Param("salesMan") String salesMan, + @Param("remark") String remark); + + List findMaterialsListMapByHeaderIdList( + @Param("idList") List idList); + + List getMaterialCountListByHeaderIdList( + @Param("idList") List idList); + + List findInOutDetail( + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("type") String type, + @Param("creatorArray") String[] creatorArray, + @Param("organArray") String[] organArray, + @Param("categoryList") List categoryList, + @Param("forceFlag") Boolean forceFlag, + @Param("inOutManageFlag") Boolean inOutManageFlag, + @Param("materialParam") String materialParam, + @Param("depotList") List depotList, + @Param("oId") Integer oId, + @Param("number") String number, + @Param("creator") Long creator, + @Param("remark") String remark, + @Param("column") String column, + @Param("order") String order, + @Param("offset") Integer offset, + @Param("rows") Integer rows); + + int findInOutDetailCount( + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("type") String type, + @Param("creatorArray") String[] creatorArray, + @Param("organArray") String[] organArray, + @Param("categoryList") List categoryList, + @Param("forceFlag") Boolean forceFlag, + @Param("inOutManageFlag") Boolean inOutManageFlag, + @Param("materialParam") String materialParam, + @Param("depotList") List depotList, + @Param("oId") Integer oId, + @Param("number") String number, + @Param("creator") Long creator, + @Param("remark") String remark); + + List findInOutDetailStatistic( + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("type") String type, + @Param("creatorArray") String[] creatorArray, + @Param("organArray") String[] organArray, + @Param("categoryList") List categoryList, + @Param("forceFlag") Boolean forceFlag, + @Param("inOutManageFlag") Boolean inOutManageFlag, + @Param("materialParam") String materialParam, + @Param("depotList") List depotList, + @Param("oId") Integer oId, + @Param("number") String number, + @Param("creator") Long creator, + @Param("remark") String remark); + + List findInOutMaterialCount( + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("type") String type, + @Param("categoryList") List categoryList, + @Param("forceFlag") Boolean forceFlag, + @Param("inOutManageFlag") Boolean inOutManageFlag, + @Param("materialParam") String materialParam, + @Param("depotList") List depotList, + @Param("oId") Integer oId, + @Param("creatorArray") String[] creatorArray, + @Param("organArray") String[] organArray, + @Param("column") String column, + @Param("order") String order, + @Param("offset") Integer offset, + @Param("rows") Integer rows); + + int findInOutMaterialCountTotal( + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("type") String type, + @Param("categoryList") List categoryList, + @Param("forceFlag") Boolean forceFlag, + @Param("inOutManageFlag") Boolean inOutManageFlag, + @Param("materialParam") String materialParam, + @Param("depotList") List depotList, + @Param("oId") Integer oId, + @Param("creatorArray") String[] creatorArray, + @Param("organArray") String[] organArray); + + List findInOutMaterialCountStatistic( + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("type") String type, + @Param("categoryList") List categoryList, + @Param("forceFlag") Boolean forceFlag, + @Param("inOutManageFlag") Boolean inOutManageFlag, + @Param("materialParam") String materialParam, + @Param("depotList") List depotList, + @Param("oId") Integer oId, + @Param("creatorArray") String[] creatorArray, + @Param("organArray") String[] organArray); + + List findAllocationDetail( + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("subType") String subType, + @Param("number") String number, + @Param("creatorArray") String[] creatorArray, + @Param("categoryList") List categoryList, + @Param("forceFlag") Boolean forceFlag, + @Param("materialParam") String materialParam, + @Param("depotList") List depotList, + @Param("depotFList") List depotFList, + @Param("remark") String remark, + @Param("column") String column, + @Param("order") String order, + @Param("offset") Integer offset, + @Param("rows") Integer rows); + + int findAllocationDetailCount( + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("subType") String subType, + @Param("number") String number, + @Param("creatorArray") String[] creatorArray, + @Param("categoryList") List categoryList, + @Param("forceFlag") Boolean forceFlag, + @Param("materialParam") String materialParam, + @Param("depotList") List depotList, + @Param("depotFList") List depotFList, + @Param("remark") String remark); + + List findAllocationStatistic( + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("subType") String subType, + @Param("number") String number, + @Param("creatorArray") String[] creatorArray, + @Param("categoryList") List categoryList, + @Param("forceFlag") Boolean forceFlag, + @Param("materialParam") String materialParam, + @Param("depotList") List depotList, + @Param("depotFList") List depotFList, + @Param("remark") String remark); + + List getStatementAccount( + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("organId") Integer organId, + @Param("organArray") String[] organArray, + @Param("hasDebt") Integer hasDebt, + @Param("supplierType") String supplierType, + @Param("type") String type, + @Param("subType") String subType, + @Param("typeBack") String typeBack, + @Param("subTypeBack") String subTypeBack, + @Param("billType") String billType, + @Param("offset") Integer offset, + @Param("rows") Integer rows); + + int getStatementAccountCount( + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("organId") Integer organId, + @Param("organArray") String[] organArray, + @Param("hasDebt") Integer hasDebt, + @Param("supplierType") String supplierType, + @Param("type") String type, + @Param("subType") String subType, + @Param("typeBack") String typeBack, + @Param("subTypeBack") String subTypeBack, + @Param("billType") String billType); + + List getStatementAccountTotalPay( + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("organId") Integer organId, + @Param("organArray") String[] organArray, + @Param("hasDebt") Integer hasDebt, + @Param("supplierType") String supplierType, + @Param("type") String type, + @Param("subType") String subType, + @Param("typeBack") String typeBack, + @Param("subTypeBack") String subTypeBack, + @Param("billType") String billType); + + List getDetailByNumber( + @Param("number") String number); + + int batchDeleteDepotHeadByIds(@Param("updateTime") Date updateTime, @Param("updater") Long updater, @Param("ids") String ids[]); + + List getDepotHeadListByAccountIds(@Param("accountIds") String[] accountIds); + + List getDepotHeadListByOrganIds(@Param("organIds") String[] organIds); + + List getDepotHeadListByCreator(@Param("creatorArray") String[] creatorArray); + + List getBuyAndSaleStatisticsList( + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("creatorArray") String[] creatorArray, + @Param("forceFlag") Boolean forceFlag); + + List debtList( + @Param("organId") Long organId, + @Param("creatorArray") String[] creatorArray, + @Param("status") String status, + @Param("number") String number, + @Param("type") String type, + @Param("subType") String subType, + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("materialParam") String materialParam, + @Param("depotArray") String[] depotArray, + @Param("offset") Integer offset, + @Param("rows") Integer rows); + + int debtListCount( + @Param("organId") Long organId, + @Param("creatorArray") String[] creatorArray, + @Param("status") String status, + @Param("number") String number, + @Param("type") String type, + @Param("subType") String subType, + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("materialParam") String materialParam, + @Param("depotArray") String[] depotArray); + + List getFinishDepositByNumberList( + @Param("numberList") List numberList); + + BigDecimal getFinishDepositByNumberExceptCurrent( + @Param("linkNumber") String linkNumber, + @Param("number") String number); + + void setAccountIdToNull( + @Param("id") Long id); + + int getSerialNumberBySell( + @Param("number") String number); + + List waitBillList( + @Param("type") String type, + @Param("subTypeArray") String[] subTypeArray, + @Param("creatorArray") String[] creatorArray, + @Param("statusArray") String[] statusArray, + @Param("number") String number, + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("materialParam") String materialParam, + @Param("depotArray") String[] depotArray, + @Param("offset") Integer offset, + @Param("rows") Integer rows); + + Long waitBillCount( + @Param("type") String type, + @Param("subTypeArray") String[] subTypeArray, + @Param("creatorArray") String[] creatorArray, + @Param("statusArray") String[] statusArray, + @Param("number") String number, + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("materialParam") String materialParam, + @Param("depotArray") String[] depotArray); + + BigDecimal getBillAllPriceByOrganId( + @Param("organId") Long organId); + + BigDecimal getAllDepositByLinkNumber( + @Param("linkNumber") String linkNumber); +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/DepotItemMapper.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/DepotItemMapper.java new file mode 100644 index 0000000..2af21be --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/DepotItemMapper.java @@ -0,0 +1,30 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.DepotItem; +import com.reallin.smt.datasource.entities.DepotItemExample; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface DepotItemMapper { + long countByExample(DepotItemExample example); + + int deleteByExample(DepotItemExample example); + + int deleteByPrimaryKey(Long id); + + int insert(DepotItem record); + + int insertSelective(DepotItem record); + + List selectByExample(DepotItemExample example); + + DepotItem selectByPrimaryKey(Long id); + + int updateByExampleSelective(@Param("record") DepotItem record, @Param("example") DepotItemExample example); + + int updateByExample(@Param("record") DepotItem record, @Param("example") DepotItemExample example); + + int updateByPrimaryKeySelective(DepotItem record); + + int updateByPrimaryKey(DepotItem record); +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/DepotItemMapperEx.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/DepotItemMapperEx.java new file mode 100644 index 0000000..e5361a4 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/DepotItemMapperEx.java @@ -0,0 +1,263 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.*; +import com.reallin.smt.datasource.vo.*; +import org.apache.ibatis.annotations.Param; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * Description + * + * @Author: cjl + * @Date: 2019/1/24 16:59 + */ +public interface DepotItemMapperEx { + + int batchInsert(List depotItemList); + + List selectByConditionDepotItem( + @Param("name") String name, + @Param("type") Integer type, + @Param("remark") String remark, + @Param("offset") Integer offset, + @Param("rows") Integer rows); + + Long countsByDepotItem( + @Param("name") String name, + @Param("type") Integer type, + @Param("remark") String remark); + + List findDetailByDepotIdsAndMaterialIdList( + @Param("depotIdArray") Long[] depotIdArray, + @Param("forceFlag") Boolean forceFlag, + @Param("inOutManageFlag") Boolean inOutManageFlag, + @Param("sku") String sku, + @Param("batchNumber") String batchNumber, + @Param("number") String number, + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("mId") Long mId, + @Param("offset") Integer offset, + @Param("rows") Integer rows); + + Long findDetailByDepotIdsAndMaterialIdCount( + @Param("depotIdArray") Long[] depotIdArray, + @Param("forceFlag") Boolean forceFlag, + @Param("inOutManageFlag") Boolean inOutManageFlag, + @Param("sku") String sku, + @Param("batchNumber") String batchNumber, + @Param("number") String number, + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("mId") Long mId); + + List getDetailList( + @Param("headerId") Long headerId); + + List getBillDetailListByIds( + @Param("idList") List idList); + + List getInOutStock( + @Param("materialParam") String materialParam, + @Param("categoryIdList") List categoryIdList, + @Param("endTime") String endTime, + @Param("offset") Integer offset, + @Param("rows") Integer rows); + + int getInOutStockCount( + @Param("materialParam") String materialParam, + @Param("categoryIdList") List categoryIdList, + @Param("endTime") String endTime); + + List getListWithBuyOrSale( + @Param("materialParam") String materialParam, + @Param("billType") String billType, + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("creatorArray") String[] creatorArray, + @Param("organId") Long organId, + @Param("organArray") String[] organArray, + @Param("categoryList") List categoryList, + @Param("depotList") List depotList, + @Param("forceFlag") Boolean forceFlag, + @Param("offset") Integer offset, + @Param("rows") Integer rows); + + int getListWithBuyOrSaleCount( + @Param("materialParam") String materialParam, + @Param("billType") String billType, + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("creatorArray") String[] creatorArray, + @Param("organId") Long organId, + @Param("organArray") String[] organArray, + @Param("categoryList") List categoryList, + @Param("depotList") List depotList, + @Param("forceFlag") Boolean forceFlag); + + BigDecimal buyOrSaleNumber( + @Param("type") String type, + @Param("subType") String subType, + @Param("meId") Long meId, + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("creatorArray") String[] creatorArray, + @Param("organId") Long organId, + @Param("organArray") String [] organArray, + @Param("depotList") List depotList, + @Param("forceFlag") Boolean forceFlag, + @Param("sumType") String sumType); + + BigDecimal buyOrSalePrice( + @Param("type") String type, + @Param("subType") String subType, + @Param("meId") Long meId, + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("creatorArray") String[] creatorArray, + @Param("organId") Long organId, + @Param("organArray") String [] organArray, + @Param("depotList") List depotList, + @Param("forceFlag") Boolean forceFlag, + @Param("sumType") String sumType); + + BigDecimal buyOrSalePriceTotal( + @Param("type") String type, + @Param("subType") String subType, + @Param("materialParam") String materialParam, + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("creatorArray") String[] creatorArray, + @Param("organId") Long organId, + @Param("organArray") String [] organArray, + @Param("categoryList") List categoryList, + @Param("depotList") List depotList, + @Param("forceFlag") Boolean forceFlag); + + List inOrOutPriceList( + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("creatorArray") String[] creatorArray, + @Param("forceFlag") Boolean forceFlag); + + BigDecimal getSkuStockCheckSumByDepotList( + @Param("depotList") List depotList, + @Param("meId") Long meId, + @Param("forceFlag") Boolean forceFlag, + @Param("beginTime") String beginTime, + @Param("endTime") String endTime); + + BigDecimal getStockCheckSumByDepotList( + @Param("depotList") List depotList, + @Param("mId") Long mId, + @Param("forceFlag") Boolean forceFlag, + @Param("beginTime") String beginTime, + @Param("endTime") String endTime); + + DepotItemVo4Stock getSkuStockByParamWithDepotList( + @Param("depotList") List depotList, + @Param("meId") Long meId, + @Param("forceFlag") Boolean forceFlag, + @Param("inOutManageFlag") Boolean inOutManageFlag, + @Param("beginTime") String beginTime, + @Param("endTime") String endTime); + + DepotItemVo4Stock getStockByParamWithDepotList( + @Param("depotList") List depotList, + @Param("mId") Long mId, + @Param("forceFlag") Boolean forceFlag, + @Param("inOutManageFlag") Boolean inOutManageFlag, + @Param("beginTime") String beginTime, + @Param("endTime") String endTime); + + /** + * 通过单据主表id查询所有单据子表数据 + * @param depotheadId + * @param enableSerialNumber + * @return + */ + List findDepotItemListBydepotheadId(@Param("depotheadId")Long depotheadId, + @Param("enableSerialNumber")String enableSerialNumber); + /** + * 根据单据主表id删除单据子表数据 + * */ + int batchDeleteDepotItemByDepotHeadIds(@Param("depotheadIds")Long []depotHeadIds); + + int batchDeleteDepotItemByIds(@Param("updateTime") Date updateTime, @Param("updater") Long updater, @Param("ids") String ids[]); + + List getDepotItemListListByDepotIds(@Param("depotIds") String[] depotIds); + + List getDepotItemListListByMaterialIds(@Param("materialIds") String[] materialIds); + + List findStockWarningCount( + @Param("offset") Integer offset, + @Param("rows") Integer rows, + @Param("materialParam") String materialParam, + @Param("depotList") List depotList, + @Param("categoryList") List categoryList); + + int findStockWarningCountTotal( + @Param("materialParam") String materialParam, + @Param("depotList") List depotList, + @Param("categoryList") List categoryList); + + BigDecimal getFinishNumber( + @Param("meId") Long meId, + @Param("linkId") Long linkId, + @Param("linkStr") String linkStr, + @Param("noType") String noType, + @Param("goToType") String goToType); + + BigDecimal getRealFinishNumber( + @Param("meId") Long meId, + @Param("linkId") Long linkId, + @Param("linkStr") String linkStr, + @Param("linkType") String linkType, + @Param("currentHeaderId") Long currentHeaderId, + @Param("goToType") String goToType); + + List getBatchNumberList( + @Param("number") String number, + @Param("name") String name, + @Param("depotId") Long depotId, + @Param("barCode") String barCode, + @Param("batchNumber") String batchNumber, + @Param("forceFlag") Boolean forceFlag, + @Param("inOutManageFlag") Boolean inOutManageFlag); + + Long getCountByMaterialAndDepot( + @Param("mId") Long mId, + @Param("depotId") Long depotId); + + List getLinkBillDetailMaterialSum( + @Param("linkStr") String linkStr); + + List getBatchBillDetailMaterialSum( + @Param("linkStr") String linkStr, + @Param("linkType") String linkType, + @Param("type") String type); + + Long getCountByMaterialAndBatchNumber( + @Param("meId") Long meId, + @Param("batchNumber") String batchNumber); + + List getDepotItemByBatchNumber( + @Param("materialExtendId") Long materialExtendId, + @Param("batchNumber") String batchNumber); + + List getBillItemByParam( + @Param("barCodeList") List barCodeList); + + BigDecimal getCurrentStockByParam( + @Param("depotId") Long depotId, + @Param("mId") Long mId); + + BigDecimal getLastUnitPriceByParam( + @Param("organId") Long organId, + @Param("meId") Long meId, + @Param("type") String type, + @Param("subType") String subType); +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/DepotMapper.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/DepotMapper.java new file mode 100644 index 0000000..3b942ed --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/DepotMapper.java @@ -0,0 +1,30 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.Depot; +import com.reallin.smt.datasource.entities.DepotExample; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface DepotMapper { + long countByExample(DepotExample example); + + int deleteByExample(DepotExample example); + + int deleteByPrimaryKey(Long id); + + int insert(Depot record); + + int insertSelective(Depot record); + + List selectByExample(DepotExample example); + + Depot selectByPrimaryKey(Long id); + + int updateByExampleSelective(@Param("record") Depot record, @Param("example") DepotExample example); + + int updateByExample(@Param("record") Depot record, @Param("example") DepotExample example); + + int updateByPrimaryKeySelective(Depot record); + + int updateByPrimaryKey(Depot record); +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/DepotMapperEx.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/DepotMapperEx.java new file mode 100644 index 0000000..41b3c3f --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/DepotMapperEx.java @@ -0,0 +1,20 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.Depot; +import com.reallin.smt.datasource.entities.DepotEx; +import com.reallin.smt.datasource.entities.DepotExample; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; +import java.util.List; +import java.util.Map; + +public interface DepotMapperEx { + + List selectByConditionDepot( + @Param("name") String name, + @Param("type") Integer type, + @Param("remark") String remark); + + int batchDeleteDepotByIds(@Param("updateTime") Date updateTime, @Param("updater") Long updater, @Param("ids") String ids[]); +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/FunctionMapper.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/FunctionMapper.java new file mode 100644 index 0000000..3a4aea4 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/FunctionMapper.java @@ -0,0 +1,30 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.Function; +import com.reallin.smt.datasource.entities.FunctionExample; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface FunctionMapper { + long countByExample(FunctionExample example); + + int deleteByExample(FunctionExample example); + + int deleteByPrimaryKey(Long id); + + int insert(Function record); + + int insertSelective(Function record); + + List selectByExample(FunctionExample example); + + Function selectByPrimaryKey(Long id); + + int updateByExampleSelective(@Param("record") Function record, @Param("example") FunctionExample example); + + int updateByExample(@Param("record") Function record, @Param("example") FunctionExample example); + + int updateByPrimaryKeySelective(Function record); + + int updateByPrimaryKey(Function record); +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/FunctionMapperEx.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/FunctionMapperEx.java new file mode 100644 index 0000000..d433893 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/FunctionMapperEx.java @@ -0,0 +1,20 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.FunctionEx; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; +import java.util.List; + +public interface FunctionMapperEx { + + List selectByConditionFunction( + @Param("name") String name, + @Param("nameEn") String nameEn, + @Param("type") String type); + + List getFirstNodeIdList(); + + int batchDeleteFunctionByIds(@Param("updateTime") Date updateTime, @Param("updater") Long updater, @Param("ids") String ids[]); + +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/InOutItemMapper.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/InOutItemMapper.java new file mode 100644 index 0000000..8d7535e --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/InOutItemMapper.java @@ -0,0 +1,30 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.InOutItem; +import com.reallin.smt.datasource.entities.InOutItemExample; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface InOutItemMapper { + long countByExample(InOutItemExample example); + + int deleteByExample(InOutItemExample example); + + int deleteByPrimaryKey(Long id); + + int insert(InOutItem record); + + int insertSelective(InOutItem record); + + List selectByExample(InOutItemExample example); + + InOutItem selectByPrimaryKey(Long id); + + int updateByExampleSelective(@Param("record") InOutItem record, @Param("example") InOutItemExample example); + + int updateByExample(@Param("record") InOutItem record, @Param("example") InOutItemExample example); + + int updateByPrimaryKeySelective(InOutItem record); + + int updateByPrimaryKey(InOutItem record); +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/InOutItemMapperEx.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/InOutItemMapperEx.java new file mode 100644 index 0000000..4c9ccf7 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/InOutItemMapperEx.java @@ -0,0 +1,18 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.InOutItem; +import com.reallin.smt.datasource.entities.InOutItemExample; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; +import java.util.List; + +public interface InOutItemMapperEx { + + List selectByConditionInOutItem( + @Param("name") String name, + @Param("type") String type, + @Param("remark") String remark); + + int batchDeleteInOutItemByIds(@Param("updateTime") Date updateTime, @Param("updater") Long updater, @Param("ids") String ids[]); +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/LogMapper.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/LogMapper.java new file mode 100644 index 0000000..6377db0 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/LogMapper.java @@ -0,0 +1,30 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.Log; +import com.reallin.smt.datasource.entities.LogExample; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface LogMapper { + long countByExample(LogExample example); + + int deleteByExample(LogExample example); + + int deleteByPrimaryKey(Long id); + + int insert(Log record); + + int insertSelective(Log record); + + List selectByExample(LogExample example); + + Log selectByPrimaryKey(Long id); + + int updateByExampleSelective(@Param("record") Log record, @Param("example") LogExample example); + + int updateByExample(@Param("record") Log record, @Param("example") LogExample example); + + int updateByPrimaryKeySelective(Log record); + + int updateByPrimaryKey(Log record); +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/LogMapperEx.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/LogMapperEx.java new file mode 100644 index 0000000..3079eff --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/LogMapperEx.java @@ -0,0 +1,29 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.Log; +import com.reallin.smt.datasource.entities.LogExample; +import com.reallin.smt.datasource.vo.LogVo4List; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface LogMapperEx { + + List selectByConditionLog( + @Param("operation") String operation, + @Param("userInfo") String userInfo, + @Param("clientIp") String clientIp, + @Param("tenantLoginName") String tenantLoginName, + @Param("tenantType") String tenantType, + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("content") String content); + + Long getCountByIpAndDate( + @Param("userId") Long userId, + @Param("moduleName") String moduleName, + @Param("clientIp") String clientIp, + @Param("createTime") String createTime); + + int insertLogWithUserId(Log log); +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MaterialAttributeMapper.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MaterialAttributeMapper.java new file mode 100644 index 0000000..d0cc62c --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MaterialAttributeMapper.java @@ -0,0 +1,30 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.MaterialAttribute; +import com.reallin.smt.datasource.entities.MaterialAttributeExample; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface MaterialAttributeMapper { + long countByExample(MaterialAttributeExample example); + + int deleteByExample(MaterialAttributeExample example); + + int deleteByPrimaryKey(Long id); + + int insert(MaterialAttribute record); + + int insertSelective(MaterialAttribute record); + + List selectByExample(MaterialAttributeExample example); + + MaterialAttribute selectByPrimaryKey(Long id); + + int updateByExampleSelective(@Param("record") MaterialAttribute record, @Param("example") MaterialAttributeExample example); + + int updateByExample(@Param("record") MaterialAttribute record, @Param("example") MaterialAttributeExample example); + + int updateByPrimaryKeySelective(MaterialAttribute record); + + int updateByPrimaryKey(MaterialAttribute record); +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MaterialAttributeMapperEx.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MaterialAttributeMapperEx.java new file mode 100644 index 0000000..cb50ebc --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MaterialAttributeMapperEx.java @@ -0,0 +1,16 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.MaterialAttribute; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface MaterialAttributeMapperEx { + + List selectByConditionMaterialAttribute( + @Param("attributeName") String attributeName, + @Param("attributeValue") String attributeValue); + + int batchDeleteMaterialAttributeByIds( + @Param("ids") String ids[]); +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MaterialCategoryMapper.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MaterialCategoryMapper.java new file mode 100644 index 0000000..e1acabd --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MaterialCategoryMapper.java @@ -0,0 +1,30 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.MaterialCategory; +import com.reallin.smt.datasource.entities.MaterialCategoryExample; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface MaterialCategoryMapper { + long countByExample(MaterialCategoryExample example); + + int deleteByExample(MaterialCategoryExample example); + + int deleteByPrimaryKey(Long id); + + int insert(MaterialCategory record); + + int insertSelective(MaterialCategory record); + + List selectByExample(MaterialCategoryExample example); + + MaterialCategory selectByPrimaryKey(Long id); + + int updateByExampleSelective(@Param("record") MaterialCategory record, @Param("example") MaterialCategoryExample example); + + int updateByExample(@Param("record") MaterialCategory record, @Param("example") MaterialCategoryExample example); + + int updateByPrimaryKeySelective(MaterialCategory record); + + int updateByPrimaryKey(MaterialCategory record); +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MaterialCategoryMapperEx.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MaterialCategoryMapperEx.java new file mode 100644 index 0000000..1f87c53 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MaterialCategoryMapperEx.java @@ -0,0 +1,36 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.MaterialCategory; +import com.reallin.smt.datasource.vo.TreeNode; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * Description + * + * @Author: cjl + * @Date: 2019/2/18 17:23 + */ +public interface MaterialCategoryMapperEx { + List selectByConditionMaterialCategory( + @Param("name") String name, + @Param("parentId") Integer parentId); + + List getNodeTree(@Param("currentId")Long currentId); + List getNextNodeTree(Map parameterMap); + + int addMaterialCategory(MaterialCategory mc); + + int batchDeleteMaterialCategoryByIds(@Param("updateTime") Date updateTime, @Param("updater") Long updater, @Param("ids") String ids[]); + + int editMaterialCategory(MaterialCategory mc); + + List getMaterialCategoryBySerialNo(@Param("serialNo") String serialNo, @Param("id") Long id); + + List getMaterialCategoryListByCategoryIds(@Param("parentIds") String[] categoryIds); + + List getListByParentId(@Param("parentId") Long parentId); +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MaterialCurrentStockMapper.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MaterialCurrentStockMapper.java new file mode 100644 index 0000000..6c2f98a --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MaterialCurrentStockMapper.java @@ -0,0 +1,30 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.MaterialCurrentStock; +import com.reallin.smt.datasource.entities.MaterialCurrentStockExample; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface MaterialCurrentStockMapper { + long countByExample(MaterialCurrentStockExample example); + + int deleteByExample(MaterialCurrentStockExample example); + + int deleteByPrimaryKey(Long id); + + int insert(MaterialCurrentStock record); + + int insertSelective(MaterialCurrentStock record); + + List selectByExample(MaterialCurrentStockExample example); + + MaterialCurrentStock selectByPrimaryKey(Long id); + + int updateByExampleSelective(@Param("record") MaterialCurrentStock record, @Param("example") MaterialCurrentStockExample example); + + int updateByExample(@Param("record") MaterialCurrentStock record, @Param("example") MaterialCurrentStockExample example); + + int updateByPrimaryKeySelective(MaterialCurrentStock record); + + int updateByPrimaryKey(MaterialCurrentStock record); +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MaterialCurrentStockMapperEx.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MaterialCurrentStockMapperEx.java new file mode 100644 index 0000000..11d7e99 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MaterialCurrentStockMapperEx.java @@ -0,0 +1,23 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.MaterialCurrentStock; +import org.apache.ibatis.annotations.Param; + +import java.math.BigDecimal; +import java.util.List; + +public interface MaterialCurrentStockMapperEx { + + int batchInsert(List list); + + List getCurrentStockMapByIdList( + @Param("materialIdList") List materialIdList); + + void updateUnitPriceByMId( + @Param("currentUnitPrice") BigDecimal currentUnitPrice, + @Param("materialId") Long materialId); + + BigDecimal getCurrentUnitPriceByMId(@Param("materialId") Long materialId); + + void batchDeleteByDepots(@Param("ids") String ids[]); +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MaterialExtendMapper.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MaterialExtendMapper.java new file mode 100644 index 0000000..4ddf427 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MaterialExtendMapper.java @@ -0,0 +1,30 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.MaterialExtend; +import com.reallin.smt.datasource.entities.MaterialExtendExample; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface MaterialExtendMapper { + long countByExample(MaterialExtendExample example); + + int deleteByExample(MaterialExtendExample example); + + int deleteByPrimaryKey(Long id); + + int insert(MaterialExtend record); + + int insertSelective(MaterialExtend record); + + List selectByExample(MaterialExtendExample example); + + MaterialExtend selectByPrimaryKey(Long id); + + int updateByExampleSelective(@Param("record") MaterialExtend record, @Param("example") MaterialExtendExample example); + + int updateByExample(@Param("record") MaterialExtend record, @Param("example") MaterialExtendExample example); + + int updateByPrimaryKeySelective(MaterialExtend record); + + int updateByPrimaryKey(MaterialExtend record); +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MaterialExtendMapperEx.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MaterialExtendMapperEx.java new file mode 100644 index 0000000..27aafb5 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MaterialExtendMapperEx.java @@ -0,0 +1,30 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.MaterialExtend; +import com.reallin.smt.datasource.vo.MaterialExtendVo4List; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; +import java.util.List; + +public interface MaterialExtendMapperEx { + + int batchDeleteMaterialExtendByIds(@Param("ids") String ids[]); + + List getDetailList( + @Param("materialId") Long materialId); + + Long getMaxTimeByTenantAndTime( + @Param("tenantId") Long tenantId, + @Param("lastTime") Long lastTime, + @Param("syncNum") Long syncNum); + + List getListByMId(@Param("ids") Long ids[]); + + int batchDeleteMaterialExtendByMIds(@Param("ids") String ids[]); + + int specialUpdatePrice(MaterialExtend record); + + List getBasicInfoByMid( + @Param("materialId") Long materialId); +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MaterialInitialStockMapper.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MaterialInitialStockMapper.java new file mode 100644 index 0000000..e764a57 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MaterialInitialStockMapper.java @@ -0,0 +1,30 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.MaterialInitialStock; +import com.reallin.smt.datasource.entities.MaterialInitialStockExample; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface MaterialInitialStockMapper { + long countByExample(MaterialInitialStockExample example); + + int deleteByExample(MaterialInitialStockExample example); + + int deleteByPrimaryKey(Long id); + + int insert(MaterialInitialStock record); + + int insertSelective(MaterialInitialStock record); + + List selectByExample(MaterialInitialStockExample example); + + MaterialInitialStock selectByPrimaryKey(Long id); + + int updateByExampleSelective(@Param("record") MaterialInitialStock record, @Param("example") MaterialInitialStockExample example); + + int updateByExample(@Param("record") MaterialInitialStock record, @Param("example") MaterialInitialStockExample example); + + int updateByPrimaryKeySelective(MaterialInitialStock record); + + int updateByPrimaryKey(MaterialInitialStock record); +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MaterialInitialStockMapperEx.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MaterialInitialStockMapperEx.java new file mode 100644 index 0000000..dbf166b --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MaterialInitialStockMapperEx.java @@ -0,0 +1,20 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.MaterialCurrentStock; +import com.reallin.smt.datasource.entities.MaterialInitialStock; +import com.reallin.smt.datasource.entities.MaterialInitialStockExample; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface MaterialInitialStockMapperEx { + + int batchInsert(List list); + + List getInitialStockMapByIdList( + @Param("materialIdList") List materialIdList); + + List getListExceptZero(); + + void batchDeleteByDepots(@Param("ids") String ids[]); +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MaterialMapper.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MaterialMapper.java new file mode 100644 index 0000000..5ad529a --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MaterialMapper.java @@ -0,0 +1,30 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.Material; +import com.reallin.smt.datasource.entities.MaterialExample; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface MaterialMapper { + long countByExample(MaterialExample example); + + int deleteByExample(MaterialExample example); + + int deleteByPrimaryKey(Long id); + + int insert(Material record); + + int insertSelective(Material record); + + List selectByExample(MaterialExample example); + + Material selectByPrimaryKey(Long id); + + int updateByExampleSelective(@Param("record") Material record, @Param("example") MaterialExample example); + + int updateByExample(@Param("record") Material record, @Param("example") MaterialExample example); + + int updateByPrimaryKeySelective(Material record); + + int updateByPrimaryKey(Material record); +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MaterialMapperEx.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MaterialMapperEx.java new file mode 100644 index 0000000..75e32f6 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MaterialMapperEx.java @@ -0,0 +1,173 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.*; +import com.reallin.smt.datasource.vo.MaterialDepotStock; +import com.reallin.smt.datasource.vo.MaterialVoSearch; +import org.apache.ibatis.annotations.Param; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * Description + * + * @Author: cjl + * @Date: 2019/1/22 14:54 + */ +public interface MaterialMapperEx { + + List selectByConditionMaterial( + @Param("materialParam") String materialParam, + @Param("standard") String standard, + @Param("model") String model, + @Param("color") String color, + @Param("brand") String brand, + @Param("mfrs") String mfrs, + @Param("otherField1") String otherField1, + @Param("otherField2") String otherField2, + @Param("otherField3") String otherField3, + @Param("weight") String weight, + @Param("expiryNum") String expiryNum, + @Param("enableSerialNumber") String enableSerialNumber, + @Param("enableBatchNumber") String enableBatchNumber, + @Param("position") String position, + @Param("enabled") String enabled, + @Param("remark") String remark, + @Param("idList") List idList, + @Param("mpList") String mpList); + + Long insertSelectiveEx(Material record); + + List findUnitList(@Param("mId") Long mId); + + List findById(@Param("id") Long id); + + List findByIdWithBarCode(@Param("meId") Long meId); + + List getMaterialByParam(@Param("materialParam") String materialParam); + + List findBySelectWithBarCode(@Param("idList") List idList, + @Param("q") String q, + @Param("standardOrModel") String standardOrModel, + @Param("color") String color, + @Param("brand") String brand, + @Param("mfrs") String mfrs, + @Param("otherField1") String otherField1, + @Param("otherField2") String otherField2, + @Param("otherField3") String otherField3, + @Param("enableSerialNumber") String enableSerialNumber, + @Param("enableBatchNumber") String enableBatchNumber, + @Param("offset") Integer offset, + @Param("rows") Integer rows); + + int findBySelectWithBarCodeCount(@Param("idList") List idList, + @Param("q") String q, + @Param("standardOrModel") String standardOrModel, + @Param("color") String color, + @Param("brand") String brand, + @Param("mfrs") String mfrs, + @Param("otherField1") String otherField1, + @Param("otherField2") String otherField2, + @Param("otherField3") String otherField3, + @Param("enableSerialNumber") String enableSerialNumber, + @Param("enableBatchNumber") String enableBatchNumber); + + List exportExcel( + @Param("materialParam") String materialParam, + @Param("color") String color, + @Param("materialOther") String materialOther, + @Param("weight") String weight, + @Param("expiryNum") String expiryNum, + @Param("enabled") String enabled, + @Param("enableSerialNumber") String enableSerialNumber, + @Param("enableBatchNumber") String enableBatchNumber, + @Param("remark") String remark, + @Param("idList") List idList); + + List getOtherMaterialList(); + + /** + * 通过商品名称查询商品信息 + * */ + List findByMaterialName(@Param("name") String name); + /** + * 获取开启序列号并且状态正常的商品列表 + * */ + List getMaterialEnableSerialNumberList(@Param("q") String q, + @Param("offset") Integer offset, + @Param("rows") Integer rows); + + Long getMaterialEnableSerialNumberCount(@Param("q") String q); + + int batchDeleteMaterialByIds(@Param("updateTime") Date updateTime, @Param("updater") Long updater, @Param("ids") String ids[]); + + List getMaterialListByCategoryIds(@Param("categoryIds") String[] categoryIds); + + List getMaterialListByUnitIds(@Param("unitIds") String[] unitIds); + + List getBarCodeList(); + + List getMaterialByMeId( + @Param("meId") Long meId); + + List getMaterialNameList(); + + int setUnitIdToNull(@Param("id") Long id); + + int setExpiryNumToNull(@Param("id") Long id); + + List getMaterialByBarCode(@Param("barCodeArray") String [] barCodeArray); + + List getMaterialByBarCodeAndWithOutMId( + @Param("barCodeArray") String [] barCodeArray, + @Param("mId") Long mId); + + List getInitialStockWithMaterial( + @Param("depotList") List depotList); + + List getListWithStock( + @Param("depotList") List depotList, + @Param("idList") List idList, + @Param("position") String position, + @Param("materialParam") String materialParam, + @Param("zeroStock") Integer zeroStock, + @Param("column") String column, + @Param("order") String order, + @Param("offset") Integer offset, + @Param("rows") Integer rows); + + int getListWithStockCount( + @Param("depotList") List depotList, + @Param("idList") List idList, + @Param("position") String position, + @Param("materialParam") String materialParam, + @Param("zeroStock") Integer zeroStock); + + MaterialVo4Unit getTotalStockAndPrice( + @Param("depotList") List depotList, + @Param("idList") List idList, + @Param("position") String position, + @Param("materialParam") String materialParam); + + int checkIsExist( + @Param("id") Long id, + @Param("name") String name, + @Param("model") String model, + @Param("color") String color, + @Param("standard") String standard, + @Param("mfrs") String mfrs, + @Param("otherField1") String otherField1, + @Param("otherField2") String otherField2, + @Param("otherField3") String otherField3, + @Param("unit") String unit, + @Param("unitId") Long unitId); + + MaterialExtend getMaterialExtendBySerialNumber( + @Param("serialNumber") String serialNumber); + + List getMaterialDepotStock( + @Param("depotIdArray") Long[] depotIdArray, + @Param("mId") Long mId); +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MaterialPropertyMapper.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MaterialPropertyMapper.java new file mode 100644 index 0000000..725e7b4 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MaterialPropertyMapper.java @@ -0,0 +1,30 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.MaterialProperty; +import com.reallin.smt.datasource.entities.MaterialPropertyExample; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface MaterialPropertyMapper { + long countByExample(MaterialPropertyExample example); + + int deleteByExample(MaterialPropertyExample example); + + int deleteByPrimaryKey(Long id); + + int insert(MaterialProperty record); + + int insertSelective(MaterialProperty record); + + List selectByExample(MaterialPropertyExample example); + + MaterialProperty selectByPrimaryKey(Long id); + + int updateByExampleSelective(@Param("record") MaterialProperty record, @Param("example") MaterialPropertyExample example); + + int updateByExample(@Param("record") MaterialProperty record, @Param("example") MaterialPropertyExample example); + + int updateByPrimaryKeySelective(MaterialProperty record); + + int updateByPrimaryKey(MaterialProperty record); +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MaterialPropertyMapperEx.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MaterialPropertyMapperEx.java new file mode 100644 index 0000000..356f1f6 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MaterialPropertyMapperEx.java @@ -0,0 +1,22 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.MaterialProperty; +import com.reallin.smt.datasource.entities.MaterialPropertyExample; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; +import java.util.List; + +public interface MaterialPropertyMapperEx { + + List selectByConditionMaterialProperty( + @Param("name") String name); + + int batchDeleteMaterialPropertyByIds(@Param("updateTime") Date updateTime, @Param("updater") Long updater, @Param("ids") String ids[]); + + int getCountByNativeName(@Param("nativeName") String nativeName); + + void updateMaterialPropertyByNativeName( + @Param("nativeName") String nativeName, + @Param("anotherName") String anotherName); +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MsgMapper.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MsgMapper.java new file mode 100644 index 0000000..f406489 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MsgMapper.java @@ -0,0 +1,30 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.Msg; +import com.reallin.smt.datasource.entities.MsgExample; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface MsgMapper { + long countByExample(MsgExample example); + + int deleteByExample(MsgExample example); + + int deleteByPrimaryKey(Long id); + + int insert(Msg record); + + int insertSelective(Msg record); + + List selectByExample(MsgExample example); + + Msg selectByPrimaryKey(Long id); + + int updateByExampleSelective(@Param("record") Msg record, @Param("example") MsgExample example); + + int updateByExample(@Param("record") Msg record, @Param("example") MsgExample example); + + int updateByPrimaryKeySelective(Msg record); + + int updateByPrimaryKey(Msg record); +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MsgMapperEx.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MsgMapperEx.java new file mode 100644 index 0000000..76d99f2 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/MsgMapperEx.java @@ -0,0 +1,20 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.Msg; +import com.reallin.smt.datasource.entities.MsgEx; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface MsgMapperEx { + + List selectByConditionMsg( + @Param("userId") Long userId, + @Param("name") String name); + + int batchDeleteMsgByIds(@Param("ids") String ids[]); + + Long getMsgCountByStatus( + @Param("status") String status, + @Param("userId") Long userId); +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/OrgaUserRelMapper.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/OrgaUserRelMapper.java new file mode 100644 index 0000000..49e0b6c --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/OrgaUserRelMapper.java @@ -0,0 +1,96 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.OrgaUserRel; +import com.reallin.smt.datasource.entities.OrgaUserRelExample; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface OrgaUserRelMapper { + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table tbl_orga_user_rel + * + * @mbggenerated + */ + int countByExample(OrgaUserRelExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table tbl_orga_user_rel + * + * @mbggenerated + */ + int deleteByExample(OrgaUserRelExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table tbl_orga_user_rel + * + * @mbggenerated + */ + int deleteByPrimaryKey(Long id); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table tbl_orga_user_rel + * + * @mbggenerated + */ + int insert(OrgaUserRel record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table tbl_orga_user_rel + * + * @mbggenerated + */ + int insertSelective(OrgaUserRel record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table tbl_orga_user_rel + * + * @mbggenerated + */ + List selectByExample(OrgaUserRelExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table tbl_orga_user_rel + * + * @mbggenerated + */ + OrgaUserRel selectByPrimaryKey(Long id); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table tbl_orga_user_rel + * + * @mbggenerated + */ + int updateByExampleSelective(@Param("record") OrgaUserRel record, @Param("example") OrgaUserRelExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table tbl_orga_user_rel + * + * @mbggenerated + */ + int updateByExample(@Param("record") OrgaUserRel record, @Param("example") OrgaUserRelExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table tbl_orga_user_rel + * + * @mbggenerated + */ + int updateByPrimaryKeySelective(OrgaUserRel record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table tbl_orga_user_rel + * + * @mbggenerated + */ + int updateByPrimaryKey(OrgaUserRel record); +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/OrgaUserRelMapperEx.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/OrgaUserRelMapperEx.java new file mode 100644 index 0000000..b2c2ccc --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/OrgaUserRelMapperEx.java @@ -0,0 +1,14 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.OrgaUserRel; /** + * Description + * + * @Author: cjl + * @Date: 2019/3/12 9:13 + */ +public interface OrgaUserRelMapperEx { + + int addOrgaUserRel(OrgaUserRel orgaUserRel); + + int updateOrgaUserRel(OrgaUserRel orgaUserRel); +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/OrganizationMapper.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/OrganizationMapper.java new file mode 100644 index 0000000..1ac4c44 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/OrganizationMapper.java @@ -0,0 +1,30 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.Organization; +import com.reallin.smt.datasource.entities.OrganizationExample; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface OrganizationMapper { + long countByExample(OrganizationExample example); + + int deleteByExample(OrganizationExample example); + + int deleteByPrimaryKey(Long id); + + int insert(Organization record); + + int insertSelective(Organization record); + + List selectByExample(OrganizationExample example); + + Organization selectByPrimaryKey(Long id); + + int updateByExampleSelective(@Param("record") Organization record, @Param("example") OrganizationExample example); + + int updateByExample(@Param("record") Organization record, @Param("example") OrganizationExample example); + + int updateByPrimaryKeySelective(Organization record); + + int updateByPrimaryKey(Organization record); +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/OrganizationMapperEx.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/OrganizationMapperEx.java new file mode 100644 index 0000000..090cfb8 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/OrganizationMapperEx.java @@ -0,0 +1,33 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.MaterialCategory; +import com.reallin.smt.datasource.entities.Organization; +import com.reallin.smt.datasource.vo.TreeNode; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * Description + * + * @Author: cjl + * @Date: 2019/3/6 15:51 + */ +public interface OrganizationMapperEx { + + + List getNodeTree(@Param("currentId")Long currentId); + List getNextNodeTree(Map parameterMap); + + int addOrganization(Organization org); + + List getOrganizationByParentIds(@Param("ids") String ids[]); + + int batchDeleteOrganizationByIds(@Param("updateTime") Date updateTime, @Param("updater") Long updater, @Param("ids") String ids[]); + + int editOrganization(Organization org); + + List getOrganizationRootByIds(@Param("ids") String ids[]); +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/PackBomMapper.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/PackBomMapper.java new file mode 100644 index 0000000..bb275b7 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/PackBomMapper.java @@ -0,0 +1,44 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.PackBom; +import com.reallin.smt.datasource.entities.PackBomItem; +import com.reallin.smt.datasource.vo.PackBomVo4List; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; +import java.util.List; + +/** + * 生产方案 Mapper + */ +public interface PackBomMapper { + + PackBom selectByPrimaryKey(Long id); + + List selectList( + @Param("bomNumber") String bomNumber, + @Param("bomName") String bomName, + @Param("outputMaterialParam") String outputMaterialParam, + @Param("enabled") Boolean enabled); + + int insertSelective(PackBom record); + + int updateByPrimaryKeySelective(PackBom record); + + int batchDeleteByIds(@Param("updateTime") Date updateTime, @Param("updater") Long updater, @Param("ids") String[] ids); + + int checkNumberExist(@Param("id") Long id, @Param("bomNumber") String bomNumber); + + List selectEnabledByOutputMaterialId(@Param("outputMaterialId") Long outputMaterialId); + + /** + * 明细 + */ + int insertItemSelective(PackBomItem item); + + int batchInsertItems(@Param("list") List list); + + List selectItemsByBomId(@Param("bomId") Long bomId); + + int batchDeleteItemsByBomId(@Param("bomId") Long bomId); +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/PersonMapper.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/PersonMapper.java new file mode 100644 index 0000000..49ee2e3 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/PersonMapper.java @@ -0,0 +1,30 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.Person; +import com.reallin.smt.datasource.entities.PersonExample; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface PersonMapper { + long countByExample(PersonExample example); + + int deleteByExample(PersonExample example); + + int deleteByPrimaryKey(Long id); + + int insert(Person record); + + int insertSelective(Person record); + + List selectByExample(PersonExample example); + + Person selectByPrimaryKey(Long id); + + int updateByExampleSelective(@Param("record") Person record, @Param("example") PersonExample example); + + int updateByExample(@Param("record") Person record, @Param("example") PersonExample example); + + int updateByPrimaryKeySelective(Person record); + + int updateByPrimaryKey(Person record); +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/PersonMapperEx.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/PersonMapperEx.java new file mode 100644 index 0000000..4c7aaf9 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/PersonMapperEx.java @@ -0,0 +1,17 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.Person; +import com.reallin.smt.datasource.entities.PersonExample; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; +import java.util.List; + +public interface PersonMapperEx { + + List selectByConditionPerson( + @Param("name") String name, + @Param("type") String type); + + int batchDeletePersonByIds(@Param("ids") String ids[]); +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/PlatformConfigMapper.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/PlatformConfigMapper.java new file mode 100644 index 0000000..0bdacdf --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/PlatformConfigMapper.java @@ -0,0 +1,30 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.PlatformConfig; +import com.reallin.smt.datasource.entities.PlatformConfigExample; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface PlatformConfigMapper { + long countByExample(PlatformConfigExample example); + + int deleteByExample(PlatformConfigExample example); + + int deleteByPrimaryKey(Long id); + + int insert(PlatformConfig record); + + int insertSelective(PlatformConfig record); + + List selectByExample(PlatformConfigExample example); + + PlatformConfig selectByPrimaryKey(Long id); + + int updateByExampleSelective(@Param("record") PlatformConfig record, @Param("example") PlatformConfigExample example); + + int updateByExample(@Param("record") PlatformConfig record, @Param("example") PlatformConfigExample example); + + int updateByPrimaryKeySelective(PlatformConfig record); + + int updateByPrimaryKey(PlatformConfig record); +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/PlatformConfigMapperEx.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/PlatformConfigMapperEx.java new file mode 100644 index 0000000..f30e785 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/PlatformConfigMapperEx.java @@ -0,0 +1,14 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.PlatformConfig; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; +import java.util.List; + +public interface PlatformConfigMapperEx { + + List selectByConditionPlatformConfig( + @Param("platformKey") String platformKey); + +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/ProductionOrderMapper.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/ProductionOrderMapper.java new file mode 100644 index 0000000..3bece90 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/ProductionOrderMapper.java @@ -0,0 +1,49 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.ProductionOrder; +import com.reallin.smt.datasource.entities.ProductionOrderLog; +import com.reallin.smt.datasource.vo.ProductionOrderVo4List; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; +import java.util.List; + +/** + * 生产工单 Mapper + */ +public interface ProductionOrderMapper { + + ProductionOrder selectByPrimaryKey(Long id); + + List selectList( + @Param("orderNumber") String orderNumber, + @Param("sourceNumber") String sourceNumber, + @Param("status") String status, + @Param("priority") String priority, + @Param("productMaterialParam") String productMaterialParam, + @Param("beginTime") String beginTime, + @Param("endTime") String endTime); + + List selectBySourceNumber(@Param("sourceNumber") String sourceNumber); + + int insertSelective(ProductionOrder record); + + int updateByPrimaryKeySelective(ProductionOrder record); + + int updateStatusById(@Param("id") Long id, @Param("status") String status); + + int batchDeleteByIds(@Param("updateTime") Date updateTime, @Param("updater") Long updater, @Param("ids") String[] ids); + + int checkNumberExist(@Param("id") Long id, @Param("orderNumber") String orderNumber); + + int checkBomReferenced(@Param("ids") String[] ids); + + List selectByIds(@Param("ids") List ids); + + /** + * 工单日志 + */ + int insertLog(ProductionOrderLog log); + + List selectLogsByOrderId(@Param("orderId") Long orderId); +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/ProductionReportMapper.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/ProductionReportMapper.java new file mode 100644 index 0000000..5669331 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/ProductionReportMapper.java @@ -0,0 +1,47 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.ProductionReport; +import com.reallin.smt.datasource.entities.ProductionReportItem; +import com.reallin.smt.datasource.vo.ProductionReportVo4List; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; +import java.util.List; + +/** + * 完工报告 Mapper + */ +public interface ProductionReportMapper { + + ProductionReport selectByPrimaryKey(Long id); + + List selectList( + @Param("reportNumber") String reportNumber, + @Param("orderNumber") String orderNumber, + @Param("auditStatus") String auditStatus, + @Param("beginTime") String beginTime, + @Param("endTime") String endTime); + + List selectByOrderId(@Param("orderId") Long orderId); + + int insertSelective(ProductionReport record); + + int updateByPrimaryKeySelective(ProductionReport record); + + int updateAuditStatusById(@Param("id") Long id, @Param("auditStatus") String auditStatus); + + int batchDeleteByIds(@Param("updateTime") Date updateTime, @Param("updater") Long updater, @Param("ids") String[] ids); + + int checkNumberExist(@Param("id") Long id, @Param("reportNumber") String reportNumber); + + /** + * 明细 + */ + int insertItemSelective(ProductionReportItem item); + + int batchInsertItems(@Param("list") List list); + + List selectItemsByReportId(@Param("reportId") Long reportId); + + int batchDeleteItemsByReportId(@Param("reportId") Long reportId); +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/ProductionRequisitionMapper.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/ProductionRequisitionMapper.java new file mode 100644 index 0000000..a939750 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/ProductionRequisitionMapper.java @@ -0,0 +1,50 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.ProductionRequisition; +import com.reallin.smt.datasource.entities.ProductionRequisitionItem; +import com.reallin.smt.datasource.vo.ProductionRequisitionVo4List; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; +import java.util.List; + +/** + * 生产领料单 Mapper + */ +public interface ProductionRequisitionMapper { + + ProductionRequisition selectByPrimaryKey(Long id); + + List selectList( + @Param("requisitionNumber") String requisitionNumber, + @Param("orderNumber") String orderNumber, + @Param("status") String status, + @Param("depotId") Long depotId, + @Param("beginTime") String beginTime, + @Param("endTime") String endTime); + + List selectByOrderId(@Param("orderId") Long orderId); + + int insertSelective(ProductionRequisition record); + + int updateByPrimaryKeySelective(ProductionRequisition record); + + int updateStatusById(@Param("id") Long id, @Param("status") String status); + + int batchDeleteByIds(@Param("updateTime") Date updateTime, @Param("updater") Long updater, @Param("ids") String[] ids); + + int checkNumberExist(@Param("id") Long id, @Param("requisitionNumber") String requisitionNumber); + + /** + * 明细 + */ + int insertItemSelective(ProductionRequisitionItem item); + + int batchInsertItems(@Param("list") List list); + + List selectItemsByRequisitionId(@Param("requisitionId") Long requisitionId); + + int updateItemSelective(ProductionRequisitionItem item); + + int batchDeleteItemsByRequisitionId(@Param("requisitionId") Long requisitionId); +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/RoleMapper.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/RoleMapper.java new file mode 100644 index 0000000..484fd4b --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/RoleMapper.java @@ -0,0 +1,30 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.Role; +import com.reallin.smt.datasource.entities.RoleExample; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface RoleMapper { + long countByExample(RoleExample example); + + int deleteByExample(RoleExample example); + + int deleteByPrimaryKey(Long id); + + int insert(Role record); + + int insertSelective(Role record); + + List selectByExample(RoleExample example); + + Role selectByPrimaryKey(Long id); + + int updateByExampleSelective(@Param("record") Role record, @Param("example") RoleExample example); + + int updateByExample(@Param("record") Role record, @Param("example") RoleExample example); + + int updateByPrimaryKeySelective(Role record); + + int updateByPrimaryKey(Role record); +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/RoleMapperEx.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/RoleMapperEx.java new file mode 100644 index 0000000..3c83787 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/RoleMapperEx.java @@ -0,0 +1,21 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.Role; +import com.reallin.smt.datasource.entities.RoleEx; +import com.reallin.smt.datasource.entities.RoleExample; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; +import java.util.List; + +public interface RoleMapperEx { + + List selectByConditionRole( + @Param("name") String name, + @Param("description") String description); + + int batchDeleteRoleByIds(@Param("updateTime") Date updateTime, @Param("updater") Long updater, @Param("ids") String ids[]); + + Role getRoleWithoutTenant( + @Param("roleId") Long roleId); +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/SaleShipmentMapper.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/SaleShipmentMapper.java new file mode 100644 index 0000000..58a0917 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/SaleShipmentMapper.java @@ -0,0 +1,41 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.SaleShipment; +import com.reallin.smt.datasource.entities.SaleShipmentItem; +import com.reallin.smt.datasource.vo.SaleShipmentVo4List; +import org.apache.ibatis.annotations.Param; + +import java.math.BigDecimal; +import java.util.List; + +public interface SaleShipmentMapper { + SaleShipment selectByPrimaryKey(@Param("id") Long id); + + List selectList(@Param("shipmentNumber") String shipmentNumber, + @Param("saleOutNumber") String saleOutNumber, + @Param("saleOrderNumber") String saleOrderNumber, + @Param("status") String status, + @Param("logisticsNo") String logisticsNo, + @Param("beginTime") String beginTime, + @Param("endTime") String endTime); + + int insertSelective(SaleShipment record); + + int updateByPrimaryKeySelective(SaleShipment record); + + int insertItemSelective(SaleShipmentItem item); + + int batchInsertItems(@Param("list") List list); + + int batchDeleteItemsByShipmentId(@Param("shipmentId") Long shipmentId); + + List selectItemsByShipmentId(@Param("shipmentId") Long shipmentId); + + List selectSaleOutItemsForShipment(@Param("saleOutId") Long saleOutId); + + BigDecimal getConfirmedQuantityBySaleOutItemId(@Param("saleOutItemId") Long saleOutItemId, + @Param("excludeShipmentId") Long excludeShipmentId); + + BigDecimal getActuallyShippedQuantityBySaleOutItemId(@Param("saleOutItemId") Long saleOutItemId, + @Param("excludeShipmentId") Long excludeShipmentId); +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/SequenceMapperEx.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/SequenceMapperEx.java new file mode 100644 index 0000000..91a5008 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/SequenceMapperEx.java @@ -0,0 +1,13 @@ +package com.reallin.smt.datasource.mappers; + +import org.apache.ibatis.annotations.Param; + +public interface SequenceMapperEx { + + void updateBuildOnlyNumber(); + + /** + * 获得一个全局唯一的数作为订单号的追加 + * */ + Long getBuildOnlyNumber(@Param("seq_name") String seq_name); +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/SerialNumberMapper.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/SerialNumberMapper.java new file mode 100644 index 0000000..5223917 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/SerialNumberMapper.java @@ -0,0 +1,30 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.SerialNumber; +import com.reallin.smt.datasource.entities.SerialNumberExample; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface SerialNumberMapper { + long countByExample(SerialNumberExample example); + + int deleteByExample(SerialNumberExample example); + + int deleteByPrimaryKey(Long id); + + int insert(SerialNumber record); + + int insertSelective(SerialNumber record); + + List selectByExample(SerialNumberExample example); + + SerialNumber selectByPrimaryKey(Long id); + + int updateByExampleSelective(@Param("record") SerialNumber record, @Param("example") SerialNumberExample example); + + int updateByExample(@Param("record") SerialNumber record, @Param("example") SerialNumberExample example); + + int updateByPrimaryKeySelective(SerialNumber record); + + int updateByPrimaryKey(SerialNumber record); +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/SerialNumberMapperEx.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/SerialNumberMapperEx.java new file mode 100644 index 0000000..147ff2f --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/SerialNumberMapperEx.java @@ -0,0 +1,72 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.SerialNumber; +import com.reallin.smt.datasource.entities.SerialNumberEx; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; +import java.util.List; + +/** + * Description + * + * @Author: cjl + * @Date: 2019/1/21 17:09 + */ +public interface SerialNumberMapperEx { + /** + * 新增序列号信息 + * */ + int addSerialNumber(SerialNumberEx serialNumberEx); + /** + * 修改序列号信息 + * */ + int updateSerialNumber(SerialNumberEx serialNumberEx); + /** + * 查询指定商品下有效的序列号数量 + * 未删除为卖出的视为有效 + * */ + int findSerialNumberByMaterialId(@Param("materialId") Long materialId); + + List getMinSerialNumberByMaterialIdAndSn( + @Param("materialId") Long materialId, + @Param("snArray") String snArray[]); + /** + * 卖出: update tbl_serial_number set is_Sell='1' ,depothead_Id='depotheadId' where 1=1 and material_Id='materialId' + * and is_Sell !='1' and delete_Flag !='1' {limit 0,count} + * */ + int sellSerialNumber( + @Param("idList") List idList, + @Param("outBillNo")String outBillNo, + @Param("updateTime") Date updateTime, + @Param("updater") Long updater); + /** + * 赎回:update tbl_serial_number set is_Sell='0',depothead_Id=null where 1=1 and material_Id='materialId' + * and depothead_Id='depotheadId' and is_Sell !='0' and delete_Flag !='1' {limit 0,count} + * */ + int cancelSerialNumber(@Param("materialId")Long materialId, @Param("outBillNo")String outBillNo, @Param("count")Integer count, @Param("updateTime") Date updateTime,@Param("updater") Long updater); + /** + * 批量添加序列号 + * */ + int batAddSerialNumber(@Param("list") List list); + + List getEnableSerialNumberList(@Param("number") String number, + @Param("name") String name, + @Param("nameArray") String [] nameArray, + @Param("depotId") Long depotId, + @Param("barCode") String barCode, + @Param("offset") Integer offset, @Param("rows") Integer rows); + + Long getEnableSerialNumberCount(@Param("number") String number, + @Param("name") String name, + @Param("nameArray") String [] nameArray, + @Param("depotId") Long depotId, + @Param("barCode") String barCode); + + int getIsNotSellCountByParam( + @Param("materialId") Long materialId, + @Param("serialNumber") String serialNumber); + + List getIsSellListByInBillNo( + @Param("inBillNo") String inBillNo); +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/SupplierMapper.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/SupplierMapper.java new file mode 100644 index 0000000..3ab7f0e --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/SupplierMapper.java @@ -0,0 +1,30 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.Supplier; +import com.reallin.smt.datasource.entities.SupplierExample; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface SupplierMapper { + long countByExample(SupplierExample example); + + int deleteByExample(SupplierExample example); + + int deleteByPrimaryKey(Long id); + + int insert(Supplier record); + + int insertSelective(Supplier record); + + List selectByExample(SupplierExample example); + + Supplier selectByPrimaryKey(Long id); + + int updateByExampleSelective(@Param("record") Supplier record, @Param("example") SupplierExample example); + + int updateByExample(@Param("record") Supplier record, @Param("example") SupplierExample example); + + int updateByPrimaryKeySelective(Supplier record); + + int updateByPrimaryKey(Supplier record); +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/SupplierMapperEx.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/SupplierMapperEx.java new file mode 100644 index 0000000..c54ee9f --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/SupplierMapperEx.java @@ -0,0 +1,47 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.Supplier; +import com.reallin.smt.datasource.entities.SupplierExample; +import com.reallin.smt.datasource.vo.SupplierSimple; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; +import java.util.List; + +public interface SupplierMapperEx { + + List selectByConditionSupplier( + @Param("supplier") String supplier, + @Param("type") String type, + @Param("contacts") String contacts, + @Param("phonenum") String phonenum, + @Param("telephone") String telephone, + @Param("creatorArray") String[] creatorArray, + @Param("categoryId") Long categoryId); + + List findByAll( + @Param("supplier") String supplier, + @Param("type") String type, + @Param("phonenum") String phonenum, + @Param("telephone") String telephone); + + int batchDeleteSupplierByIds(@Param("updateTime") Date updateTime, @Param("updater") Long updater, @Param("ids") String ids[]); + + Supplier getSupplierByNameAndType( + @Param("supplier") String supplier, + @Param("type") String type); + + List getAllCustomer(); + + List findByTypeAndKey( + @Param("type") String type, + @Param("key") String key, + @Param("limit") Integer limit); + + Supplier getInfoById( + @Param("id") Long id); + + Supplier getInfoByName( + @Param("name") String name, + @Param("type") String type); +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/SysDictDataMapper.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/SysDictDataMapper.java new file mode 100644 index 0000000..d2588b4 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/SysDictDataMapper.java @@ -0,0 +1,103 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.SysDictData; +import com.reallin.smt.datasource.entities.SysDictType; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 字典表 数据层 + * + * @author jishenghua + */ +public interface SysDictDataMapper +{ + /** + * 根据条件分页查询字典数据 + * + * @param dictData 字典数据信息 + * @return 字典数据集合信息 + */ + public List selectDictDataList(SysDictData dictData); + + /** + * 根据字典类型查询字典数据 + * + * @param dictType 字典类型 + * @return 字典数据集合信息 + */ + public List selectDictDataByType(String dictType); + + /** + * 根据字典类型和字典键值查询字典数据信息 + * + * @param dictType 字典类型 + * @param dictValue 字典键值 + * @return 字典标签 + */ + public String selectDictLabel(@Param("dictType") String dictType, @Param("dictValue") String dictValue); + + /** + * 根据字典数据ID查询信息 + * + * @param dictCode 字典数据ID + * @return 字典数据 + */ + public SysDictData selectDictDataById(Long dictCode); + + /** + * 查询字典数据 + * + * @param dictType 字典类型 + * @return 字典数据 + */ + public int countDictDataByType(String dictType); + + /** + * 通过字典ID删除字典数据信息 + * + * @param dictCode 字典数据ID + * @return 结果 + */ + public int deleteDictDataById(Long dictCode); + + /** + * 批量删除字典数据信息 + * + * @param dictCodes 需要删除的字典数据ID + * @return 结果 + */ + public int deleteDictDataByIds(Long[] dictCodes); + + /** + * 新增字典数据信息 + * + * @param dictData 字典数据信息 + * @return 结果 + */ + public int insertDictData(SysDictData dictData); + + /** + * 修改字典数据信息 + * + * @param dictData 字典数据信息 + * @return 结果 + */ + public int updateDictData(SysDictData dictData); + + /** + * 同步修改字典类型 + * + * @param oldDictType 旧字典类型 + * @param newDictType 新旧字典类型 + * @return 结果 + */ + public int updateDictDataType(@Param("oldDictType") String oldDictType, @Param("newDictType") String newDictType); + + int batchDeleteDictDataByIds( + @Param("ids") String ids[]); + + List getDictDataListByIds( + @Param("idList") List idList); +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/SysDictTypeMapper.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/SysDictTypeMapper.java new file mode 100644 index 0000000..bb7a057 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/SysDictTypeMapper.java @@ -0,0 +1,91 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.SysDictType; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 字典表 数据层 + * + * @author jishenghua + */ +public interface SysDictTypeMapper +{ + /** + * 根据条件分页查询字典类型 + * + * @param dictType 字典类型信息 + * @return 字典类型集合信息 + */ + public List selectDictTypeList(SysDictType dictType); + + /** + * 根据所有字典类型 + * + * @return 字典类型集合信息 + */ + public List selectDictTypeAll(); + + /** + * 根据字典类型ID查询信息 + * + * @param dictId 字典类型ID + * @return 字典类型 + */ + public SysDictType selectDictTypeById(Long dictId); + + /** + * 根据字典类型查询信息 + * + * @param dictType 字典类型 + * @return 字典类型 + */ + public SysDictType selectDictTypeByType(String dictType); + + /** + * 通过字典ID删除字典信息 + * + * @param dictId 字典ID + * @return 结果 + */ + public int deleteDictTypeById(Long dictId); + + /** + * 批量删除字典类型信息 + * + * @param dictIds 需要删除的字典ID + * @return 结果 + */ + public int deleteDictTypeByIds(Long[] dictIds); + + /** + * 新增字典类型信息 + * + * @param dictType 字典类型信息 + * @return 结果 + */ + public int insertDictType(SysDictType dictType); + + /** + * 修改字典类型信息 + * + * @param dictType 字典类型信息 + * @return 结果 + */ + public int updateDictType(SysDictType dictType); + + /** + * 校验字典类型称是否唯一 + * + * @param dictType 字典类型 + * @return 结果 + */ + public SysDictType checkDictTypeUnique(String dictType); + + int batchDeleteDictTypeByIds( + @Param("ids") String ids[]); + + List getDictTypeListByIds( + @Param("idList") List idList); +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/SystemConfigMapper.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/SystemConfigMapper.java new file mode 100644 index 0000000..add352f --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/SystemConfigMapper.java @@ -0,0 +1,30 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.SystemConfig; +import com.reallin.smt.datasource.entities.SystemConfigExample; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface SystemConfigMapper { + long countByExample(SystemConfigExample example); + + int deleteByExample(SystemConfigExample example); + + int deleteByPrimaryKey(Long id); + + int insert(SystemConfig record); + + int insertSelective(SystemConfig record); + + List selectByExample(SystemConfigExample example); + + SystemConfig selectByPrimaryKey(Long id); + + int updateByExampleSelective(@Param("record") SystemConfig record, @Param("example") SystemConfigExample example); + + int updateByExample(@Param("record") SystemConfig record, @Param("example") SystemConfigExample example); + + int updateByPrimaryKeySelective(SystemConfig record); + + int updateByPrimaryKey(SystemConfig record); +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/SystemConfigMapperEx.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/SystemConfigMapperEx.java new file mode 100644 index 0000000..98bf3db --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/SystemConfigMapperEx.java @@ -0,0 +1,16 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.SystemConfig; +import com.reallin.smt.datasource.entities.SystemConfigExample; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; +import java.util.List; + +public interface SystemConfigMapperEx { + + List selectByConditionSystemConfig( + @Param("companyName") String companyName); + + int batchDeleteSystemConfigByIds(@Param("updateTime") Date updateTime, @Param("updater") Long updater, @Param("ids") String ids[]); +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/TenantMapper.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/TenantMapper.java new file mode 100644 index 0000000..1700161 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/TenantMapper.java @@ -0,0 +1,30 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.Tenant; +import com.reallin.smt.datasource.entities.TenantExample; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface TenantMapper { + long countByExample(TenantExample example); + + int deleteByExample(TenantExample example); + + int deleteByPrimaryKey(Long id); + + int insert(Tenant record); + + int insertSelective(Tenant record); + + List selectByExample(TenantExample example); + + Tenant selectByPrimaryKey(Long id); + + int updateByExampleSelective(@Param("record") Tenant record, @Param("example") TenantExample example); + + int updateByExample(@Param("record") Tenant record, @Param("example") TenantExample example); + + int updateByPrimaryKeySelective(Tenant record); + + int updateByPrimaryKey(Tenant record); +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/TenantMapperEx.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/TenantMapperEx.java new file mode 100644 index 0000000..c6f334d --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/TenantMapperEx.java @@ -0,0 +1,16 @@ +package com.reallin.smt.datasource.mappers; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.reallin.smt.datasource.entities.TenantEx; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface TenantMapperEx { + + List selectByConditionTenant( + @Param("loginName") String loginName, + @Param("type") String type, + @Param("enabled") String enabled, + @Param("remark") String remark); +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/UnitMapper.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/UnitMapper.java new file mode 100644 index 0000000..90bc2e8 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/UnitMapper.java @@ -0,0 +1,30 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.Unit; +import com.reallin.smt.datasource.entities.UnitExample; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface UnitMapper { + long countByExample(UnitExample example); + + int deleteByExample(UnitExample example); + + int deleteByPrimaryKey(Long id); + + int insert(Unit record); + + int insertSelective(Unit record); + + List selectByExample(UnitExample example); + + Unit selectByPrimaryKey(Long id); + + int updateByExampleSelective(@Param("record") Unit record, @Param("example") UnitExample example); + + int updateByExample(@Param("record") Unit record, @Param("example") UnitExample example); + + int updateByPrimaryKeySelective(Unit record); + + int updateByPrimaryKey(Unit record); +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/UnitMapperEx.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/UnitMapperEx.java new file mode 100644 index 0000000..2218905 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/UnitMapperEx.java @@ -0,0 +1,20 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.Unit; +import com.reallin.smt.datasource.entities.UnitExample; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; +import java.util.List; + +public interface UnitMapperEx { + + List selectByConditionUnit( + @Param("name") String name); + + int batchDeleteUnitByIds(@Param("updateTime") Date updateTime, @Param("updater") Long updater, @Param("ids") String ids[]); + + void updateRatioTwoById(@Param("id") Long id); + + void updateRatioThreeById(@Param("id") Long id); +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/UserBusinessMapper.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/UserBusinessMapper.java new file mode 100644 index 0000000..a61468a --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/UserBusinessMapper.java @@ -0,0 +1,30 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.UserBusiness; +import com.reallin.smt.datasource.entities.UserBusinessExample; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface UserBusinessMapper { + long countByExample(UserBusinessExample example); + + int deleteByExample(UserBusinessExample example); + + int deleteByPrimaryKey(Long id); + + int insert(UserBusiness record); + + int insertSelective(UserBusiness record); + + List selectByExample(UserBusinessExample example); + + UserBusiness selectByPrimaryKey(Long id); + + int updateByExampleSelective(@Param("record") UserBusiness record, @Param("example") UserBusinessExample example); + + int updateByExample(@Param("record") UserBusiness record, @Param("example") UserBusinessExample example); + + int updateByPrimaryKeySelective(UserBusiness record); + + int updateByPrimaryKey(UserBusiness record); +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/UserBusinessMapperEx.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/UserBusinessMapperEx.java new file mode 100644 index 0000000..f55806c --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/UserBusinessMapperEx.java @@ -0,0 +1,31 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.UserBusiness; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; +import java.util.List; + +/** + * Description + * + * @Author: qiankunpingtai + * @Date: 2019/3/29 15:09 + */ +public interface UserBusinessMapperEx { + + int batchDeleteUserBusinessByIds(@Param("updateTime") Date updateTime, @Param("updater") Long updater, @Param("ids") String ids[]); + + List getBasicDataByKeyIdAndType( + @Param("keyId") String keyId, + @Param("type") String type); + + void updateValueByTypeAndKeyId(@Param("type") String type, @Param("keyId") String keyId, @Param("ubValue") String ubValue); + + List getUBKeyIdByTypeAndOneValue( + @Param("type") String type, + @Param("oneValue") String oneValue); + + List getOldListByType( + @Param("type") String type); +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/UserMapper.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/UserMapper.java new file mode 100644 index 0000000..52d0813 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/UserMapper.java @@ -0,0 +1,30 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.User; +import com.reallin.smt.datasource.entities.UserExample; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface UserMapper { + long countByExample(UserExample example); + + int deleteByExample(UserExample example); + + int deleteByPrimaryKey(Long id); + + int insert(User record); + + int insertSelective(User record); + + List selectByExample(UserExample example); + + User selectByPrimaryKey(Long id); + + int updateByExampleSelective(@Param("record") User record, @Param("example") UserExample example); + + int updateByExample(@Param("record") User record, @Param("example") UserExample example); + + int updateByPrimaryKeySelective(User record); + + int updateByPrimaryKey(User record); +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/UserMapperEx.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/UserMapperEx.java new file mode 100644 index 0000000..8132aec --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/mappers/UserMapperEx.java @@ -0,0 +1,45 @@ +package com.reallin.smt.datasource.mappers; + +import com.reallin.smt.datasource.entities.User; +import com.reallin.smt.datasource.entities.UserEx; +import com.reallin.smt.datasource.entities.UserExample; +import com.reallin.smt.datasource.vo.TreeNode; +import com.reallin.smt.datasource.vo.TreeNodeEx; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; +import java.util.List; +import java.util.Map; + +public interface UserMapperEx { + + List selectByConditionUser( + @Param("userName") String userName, + @Param("loginName") String loginName); + + Long countsByUser( + @Param("userName") String userName, + @Param("loginName") String loginName); + + List getUserListByUserNameOrLoginName(@Param("userName") String userName, + @Param("loginName") String loginName); + + int batDeleteOrUpdateUser(@Param("ids") String[] ids); + + List getNodeTree(); + List getNextNodeTree(Map parameterMap); + + void disableUserByLimit(@Param("tenantId") Long tenantId); + + List getListByOrgaId( + @Param("id") Long id, + @Param("orgaId") Long orgaId); + + User getUserByWeixinOpenId( + @Param("weixinOpenId") String weixinOpenId); + + int updateUserWithWeixinOpenId( + @Param("loginName") String loginName, + @Param("password") String password, + @Param("weixinOpenId") String weixinOpenId); +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/AccountItemVo4List.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/AccountItemVo4List.java new file mode 100644 index 0000000..4c2f05c --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/AccountItemVo4List.java @@ -0,0 +1,36 @@ +package com.reallin.smt.datasource.vo; + +import com.reallin.smt.datasource.entities.AccountItem; + +public class AccountItemVo4List extends AccountItem { + + private String accountName; + + private String inOutItemName; + + private String billNumber; + + public String getAccountName() { + return accountName; + } + + public void setAccountName(String accountName) { + this.accountName = accountName; + } + + public String getInOutItemName() { + return inOutItemName; + } + + public void setInOutItemName(String inOutItemName) { + this.inOutItemName = inOutItemName; + } + + public String getBillNumber() { + return billNumber; + } + + public void setBillNumber(String billNumber) { + this.billNumber = billNumber; + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/AccountVo4InOutList.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/AccountVo4InOutList.java new file mode 100644 index 0000000..4573ab0 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/AccountVo4InOutList.java @@ -0,0 +1,126 @@ +package com.reallin.smt.datasource.vo; + +import java.math.BigDecimal; + +public class AccountVo4InOutList { + + private Long accountId; + + private String number; + + private String type; + + private String fromType; + + private String supplierName; + + private BigDecimal changeAmount; + + private BigDecimal balance; + + private String operTime; + + private String aList; + + private String amList; + + private String remark; + + private Long tenantId; + + public Long getAccountId() { + return accountId; + } + + public void setAccountId(Long accountId) { + this.accountId = accountId; + } + + public String getNumber() { + return number; + } + + public void setNumber(String number) { + this.number = number; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getFromType() { + return fromType; + } + + public void setFromType(String fromType) { + this.fromType = fromType; + } + + public String getSupplierName() { + return supplierName; + } + + public void setSupplierName(String supplierName) { + this.supplierName = supplierName; + } + + public BigDecimal getChangeAmount() { + return changeAmount; + } + + public void setChangeAmount(BigDecimal changeAmount) { + this.changeAmount = changeAmount; + } + + public BigDecimal getBalance() { + return balance; + } + + public void setBalance(BigDecimal balance) { + this.balance = balance; + } + + public String getOperTime() { + return operTime; + } + + public void setOperTime(String operTime) { + this.operTime = operTime; + } + + public String getaList() { + return aList; + } + + public void setaList(String aList) { + this.aList = aList; + } + + public String getAmList() { + return amList; + } + + public void setAmList(String amList) { + this.amList = amList; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public Long getTenantId() { + return tenantId; + } + + public void setTenantId(Long tenantId) { + this.tenantId = tenantId; + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/AccountVo4List.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/AccountVo4List.java new file mode 100644 index 0000000..eb4c8ae --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/AccountVo4List.java @@ -0,0 +1,16 @@ +package com.reallin.smt.datasource.vo; + +import com.reallin.smt.datasource.entities.Account; + +public class AccountVo4List extends Account{ + + private String thisMonthAmount; + + public String getThisMonthAmount() { + return thisMonthAmount; + } + + public void setThisMonthAmount(String thisMonthAmount) { + this.thisMonthAmount = thisMonthAmount; + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/BillListCacheVo.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/BillListCacheVo.java new file mode 100644 index 0000000..5b1c13e --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/BillListCacheVo.java @@ -0,0 +1,34 @@ +package com.reallin.smt.datasource.vo; + +public class BillListCacheVo { + + private String number; + + private String organName; + + private String operTimeStr; + + public String getNumber() { + return number; + } + + public void setNumber(String number) { + this.number = number; + } + + public String getOrganName() { + return organName; + } + + public void setOrganName(String organName) { + this.organName = organName; + } + + public String getOperTimeStr() { + return operTimeStr; + } + + public void setOperTimeStr(String operTimeStr) { + this.operTimeStr = operTimeStr; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/DeliveryPlanVo4List.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/DeliveryPlanVo4List.java new file mode 100644 index 0000000..427743b --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/DeliveryPlanVo4List.java @@ -0,0 +1,53 @@ +package com.reallin.smt.datasource.vo; + +import com.reallin.smt.datasource.entities.DeliveryPlan; + +import java.math.BigDecimal; + +public class DeliveryPlanVo4List extends DeliveryPlan { + private String customerName; + private String creatorName; + private String materialsList; + private BigDecimal planQuantity; + private BigDecimal shippedQuantity; + + public String getCustomerName() { + return customerName; + } + + public void setCustomerName(String customerName) { + this.customerName = customerName; + } + + public String getCreatorName() { + return creatorName; + } + + public void setCreatorName(String creatorName) { + this.creatorName = creatorName; + } + + public String getMaterialsList() { + return materialsList; + } + + public void setMaterialsList(String materialsList) { + this.materialsList = materialsList; + } + + public BigDecimal getPlanQuantity() { + return planQuantity; + } + + public void setPlanQuantity(BigDecimal planQuantity) { + this.planQuantity = planQuantity; + } + + public BigDecimal getShippedQuantity() { + return shippedQuantity; + } + + public void setShippedQuantity(BigDecimal shippedQuantity) { + this.shippedQuantity = shippedQuantity; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/DepotHeadVo4InDetail.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/DepotHeadVo4InDetail.java new file mode 100644 index 0000000..64a9e42 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/DepotHeadVo4InDetail.java @@ -0,0 +1,228 @@ +package com.reallin.smt.datasource.vo; + + +import java.math.BigDecimal; +import java.util.Date; + +public class DepotHeadVo4InDetail { + + private String number; + + private String barCode; + + private String mname; + + private String model; + + private String standard; + + private String color; + + private String brand; + + private String mfrs; + + private BigDecimal unitPrice; + + private String sku; + + private String mUnit; + + private String newRemark; + + private BigDecimal operNumber; + + private BigDecimal allPrice; + + private BigDecimal taxRate; + + private BigDecimal taxMoney; + + private BigDecimal taxLastMoney; + + private String sname; + + private String dname; + + private String operTime; + + private String newType; + + private Long tenantId; + + public String getNumber() { + return number; + } + + public void setNumber(String number) { + this.number = number; + } + + public String getBarCode() { + return barCode; + } + + public void setBarCode(String barCode) { + this.barCode = barCode; + } + + public String getMname() { + return mname; + } + + public void setMname(String mname) { + this.mname = mname; + } + + public String getModel() { + return model; + } + + public void setModel(String model) { + this.model = model; + } + + public String getStandard() { + return standard; + } + + public void setStandard(String standard) { + this.standard = standard; + } + + public String getColor() { + return color; + } + + public void setColor(String color) { + this.color = color; + } + + public String getBrand() { + return brand; + } + + public void setBrand(String brand) { + this.brand = brand; + } + + public String getMfrs() { + return mfrs; + } + + public void setMfrs(String mfrs) { + this.mfrs = mfrs; + } + + public BigDecimal getUnitPrice() { + return unitPrice; + } + + public void setUnitPrice(BigDecimal unitPrice) { + this.unitPrice = unitPrice; + } + + public String getSku() { + return sku; + } + + public void setSku(String sku) { + this.sku = sku; + } + + public String getmUnit() { + return mUnit; + } + + public void setmUnit(String mUnit) { + this.mUnit = mUnit; + } + + public String getNewRemark() { + return newRemark; + } + + public void setNewRemark(String newRemark) { + this.newRemark = newRemark; + } + + public BigDecimal getOperNumber() { + return operNumber; + } + + public void setOperNumber(BigDecimal operNumber) { + this.operNumber = operNumber; + } + + public BigDecimal getAllPrice() { + return allPrice; + } + + public void setAllPrice(BigDecimal allPrice) { + this.allPrice = allPrice; + } + + public BigDecimal getTaxRate() { + return taxRate; + } + + public void setTaxRate(BigDecimal taxRate) { + this.taxRate = taxRate; + } + + public BigDecimal getTaxMoney() { + return taxMoney; + } + + public void setTaxMoney(BigDecimal taxMoney) { + this.taxMoney = taxMoney; + } + + public BigDecimal getTaxLastMoney() { + return taxLastMoney; + } + + public void setTaxLastMoney(BigDecimal taxLastMoney) { + this.taxLastMoney = taxLastMoney; + } + + public String getSname() { + return sname; + } + + public void setSname(String sname) { + this.sname = sname; + } + + public String getDname() { + return dname; + } + + public void setDname(String dname) { + this.dname = dname; + } + + public String getOperTime() { + return operTime; + } + + public void setOperTime(String operTime) { + this.operTime = operTime; + } + + public String getNewType() { + return newType; + } + + public void setNewType(String newType) { + this.newType = newType; + } + + public Long getTenantId() { + return tenantId; + } + + public void setTenantId(Long tenantId) { + this.tenantId = tenantId; + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/DepotHeadVo4InOutMCount.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/DepotHeadVo4InOutMCount.java new file mode 100644 index 0000000..eee1d25 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/DepotHeadVo4InOutMCount.java @@ -0,0 +1,136 @@ +package com.reallin.smt.datasource.vo; + +import java.math.BigDecimal; + +public class DepotHeadVo4InOutMCount { + + private Long materialId; + + private String barCode; + + private String mName; + + private String model; + + private String standard; + + private String color; + + private String brand; + + private String mfrs; + + private String categoryName; + + private String materialUnit; + + private BigDecimal numSum; + + private BigDecimal priceSum; + + private Long tenantId; + + public Long getMaterialId() { + return materialId; + } + + public void setMaterialId(Long materialId) { + this.materialId = materialId; + } + + public String getBarCode() { + return barCode; + } + + public void setBarCode(String barCode) { + this.barCode = barCode; + } + + public String getmName() { + return mName; + } + + public void setmName(String mName) { + this.mName = mName; + } + + public String getModel() { + return model; + } + + public void setModel(String model) { + this.model = model; + } + + public String getStandard() { + return standard; + } + + public void setStandard(String standard) { + this.standard = standard; + } + + public String getColor() { + return color; + } + + public void setColor(String color) { + this.color = color; + } + + public String getBrand() { + return brand; + } + + public void setBrand(String brand) { + this.brand = brand; + } + + public String getMfrs() { + return mfrs; + } + + public void setMfrs(String mfrs) { + this.mfrs = mfrs; + } + + public String getCategoryName() { + return categoryName; + } + + public void setCategoryName(String categoryName) { + this.categoryName = categoryName; + } + + public String getMaterialUnit() { + return materialUnit; + } + + public void setMaterialUnit(String materialUnit) { + this.materialUnit = materialUnit; + } + + public BigDecimal getNumSum() { + return numSum; + } + + public void setNumSum(BigDecimal numSum) { + this.numSum = numSum; + } + + public BigDecimal getPriceSum() { + return priceSum; + } + + public void setPriceSum(BigDecimal priceSum) { + this.priceSum = priceSum; + } + + public Long getTenantId() { + return tenantId; + } + + public void setTenantId(Long tenantId) { + this.tenantId = tenantId; + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/DepotHeadVo4List.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/DepotHeadVo4List.java new file mode 100644 index 0000000..5051dbb --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/DepotHeadVo4List.java @@ -0,0 +1,270 @@ +package com.reallin.smt.datasource.vo; + +import com.reallin.smt.datasource.entities.DepotHead; + +import java.math.BigDecimal; +import java.util.Date; + +public class DepotHeadVo4List extends DepotHead{ + + private String projectName; + + private String organName; + + private String userName; + + private String accountName; + + private String allocationProjectName; + + private String materialsList; + + private String salesManStr; + + private String operTimeStr; + + private BigDecimal finishDebt; + + private String depotHeadType; + + private String creatorName; + + private String contacts; + + private String telephone; + + private String address; + + private BigDecimal finishDeposit; + + private BigDecimal needDebt; + + private BigDecimal materialCount; + + /** + * 是否有付款单或收款单 + */ + private Boolean hasFinancialFlag; + + /** + * 是否有退款单 + */ + private Boolean hasBackFlag; + + /** + * 实际欠款 + */ + private BigDecimal realNeedDebt; + + /** + * 开户行 + */ + private String bankName; + + /** + * 账号 + */ + private String accountNumber; + + /** + * 纳税人识别号 + */ + private String taxNum; + + /** + * 联系电话 + */ + private String phoneNum; + + public String getProjectName() { + return projectName; + } + + public void setProjectName(String projectName) { + this.projectName = projectName; + } + + public String getOrganName() { + return organName; + } + + public void setOrganName(String organName) { + this.organName = organName; + } + + public String getUserName() { + return userName; + } + + public void setUserName(String userName) { + this.userName = userName; + } + + public String getAccountName() { + return accountName; + } + + public void setAccountName(String accountName) { + this.accountName = accountName; + } + + public String getAllocationProjectName() { + return allocationProjectName; + } + + public void setAllocationProjectName(String allocationProjectName) { + this.allocationProjectName = allocationProjectName; + } + + public String getMaterialsList() { + return materialsList; + } + + public void setMaterialsList(String materialsList) { + this.materialsList = materialsList; + } + + public String getSalesManStr() { + return salesManStr; + } + + public void setSalesManStr(String salesManStr) { + this.salesManStr = salesManStr; + } + + public String getOperTimeStr() { + return operTimeStr; + } + + public void setOperTimeStr(String operTimeStr) { + this.operTimeStr = operTimeStr; + } + + public BigDecimal getFinishDebt() { + return finishDebt; + } + + public void setFinishDebt(BigDecimal finishDebt) { + this.finishDebt = finishDebt; + } + + public String getDepotHeadType() { + return depotHeadType; + } + + public void setDepotHeadType(String depotHeadType) { + this.depotHeadType = depotHeadType; + } + + public String getCreatorName() { + return creatorName; + } + + public void setCreatorName(String creatorName) { + this.creatorName = creatorName; + } + + public String getContacts() { + return contacts; + } + + public void setContacts(String contacts) { + this.contacts = contacts; + } + + public String getTelephone() { + return telephone; + } + + public void setTelephone(String telephone) { + this.telephone = telephone; + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public BigDecimal getFinishDeposit() { + return finishDeposit; + } + + public void setFinishDeposit(BigDecimal finishDeposit) { + this.finishDeposit = finishDeposit; + } + + public BigDecimal getNeedDebt() { + return needDebt; + } + + public void setNeedDebt(BigDecimal needDebt) { + this.needDebt = needDebt; + } + + public BigDecimal getMaterialCount() { + return materialCount; + } + + public void setMaterialCount(BigDecimal materialCount) { + this.materialCount = materialCount; + } + + public Boolean getHasFinancialFlag() { + return hasFinancialFlag; + } + + public void setHasFinancialFlag(Boolean hasFinancialFlag) { + this.hasFinancialFlag = hasFinancialFlag; + } + + public Boolean getHasBackFlag() { + return hasBackFlag; + } + + public void setHasBackFlag(Boolean hasBackFlag) { + this.hasBackFlag = hasBackFlag; + } + + public BigDecimal getRealNeedDebt() { + return realNeedDebt; + } + + public void setRealNeedDebt(BigDecimal realNeedDebt) { + this.realNeedDebt = realNeedDebt; + } + + public String getBankName() { + return bankName; + } + + public void setBankName(String bankName) { + this.bankName = bankName; + } + + public String getAccountNumber() { + return accountNumber; + } + + public void setAccountNumber(String accountNumber) { + this.accountNumber = accountNumber; + } + + public String getTaxNum() { + return taxNum; + } + + public void setTaxNum(String taxNum) { + this.taxNum = taxNum; + } + + public String getPhoneNum() { + return phoneNum; + } + + public void setPhoneNum(String phoneNum) { + this.phoneNum = phoneNum; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/DepotHeadVo4StatementAccount.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/DepotHeadVo4StatementAccount.java new file mode 100644 index 0000000..f809d35 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/DepotHeadVo4StatementAccount.java @@ -0,0 +1,185 @@ +package com.reallin.smt.datasource.vo; + + +import java.math.BigDecimal; + +public class DepotHeadVo4StatementAccount { + + private Long id; + + private String supplier; + + private String contacts; + + private String telephone; + + private String phoneNum; + + private String email; + + /** + * 起始期初金额 + */ + private BigDecimal beginNeed; + + /** + * 上期欠款金额 + */ + private BigDecimal preDebtMoney; + + /** + * 上期退货的欠款金额 + */ + private BigDecimal preReturnDebtMoney; + + + /** + * 上期收付款 + */ + private BigDecimal preBackMoney; + + /** + * 期初应收 + */ + private BigDecimal preNeed; + + /** + * 本期欠款 + */ + private BigDecimal debtMoney; + + /** + * 本期退货的欠款金额 + */ + private BigDecimal returnDebtMoney; + + /** + * 本期收付款 + */ + private BigDecimal backMoney; + + /** + * 期末应收 + */ + private BigDecimal allNeed; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getSupplier() { + return supplier; + } + + public void setSupplier(String supplier) { + this.supplier = supplier; + } + + public String getContacts() { + return contacts; + } + + public void setContacts(String contacts) { + this.contacts = contacts; + } + + public String getTelephone() { + return telephone; + } + + public void setTelephone(String telephone) { + this.telephone = telephone; + } + + public String getPhoneNum() { + return phoneNum; + } + + public void setPhoneNum(String phoneNum) { + this.phoneNum = phoneNum; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public BigDecimal getBeginNeed() { + return beginNeed; + } + + public void setBeginNeed(BigDecimal beginNeed) { + this.beginNeed = beginNeed; + } + + public BigDecimal getPreDebtMoney() { + return preDebtMoney; + } + + public void setPreDebtMoney(BigDecimal preDebtMoney) { + this.preDebtMoney = preDebtMoney; + } + + public BigDecimal getPreReturnDebtMoney() { + return preReturnDebtMoney; + } + + public void setPreReturnDebtMoney(BigDecimal preReturnDebtMoney) { + this.preReturnDebtMoney = preReturnDebtMoney; + } + + public BigDecimal getPreBackMoney() { + return preBackMoney; + } + + public void setPreBackMoney(BigDecimal preBackMoney) { + this.preBackMoney = preBackMoney; + } + + public BigDecimal getPreNeed() { + return preNeed; + } + + public void setPreNeed(BigDecimal preNeed) { + this.preNeed = preNeed; + } + + public BigDecimal getDebtMoney() { + return debtMoney; + } + + public void setDebtMoney(BigDecimal debtMoney) { + this.debtMoney = debtMoney; + } + + public BigDecimal getReturnDebtMoney() { + return returnDebtMoney; + } + + public void setReturnDebtMoney(BigDecimal returnDebtMoney) { + this.returnDebtMoney = returnDebtMoney; + } + + public BigDecimal getBackMoney() { + return backMoney; + } + + public void setBackMoney(BigDecimal backMoney) { + this.backMoney = backMoney; + } + + public BigDecimal getAllNeed() { + return allNeed; + } + + public void setAllNeed(BigDecimal allNeed) { + this.allNeed = allNeed; + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/DepotItemStockWarningCount.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/DepotItemStockWarningCount.java new file mode 100644 index 0000000..e9b19a6 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/DepotItemStockWarningCount.java @@ -0,0 +1,207 @@ +package com.reallin.smt.datasource.vo; + + +import java.math.BigDecimal; + +public class DepotItemStockWarningCount { + + private Long MId; + + private String barCode; + + private String MName; + + private String MModel; + + private String MaterialUnit; + + private String MColor; + + private String MStandard; + + private String MMfrs; + + private String brand; + + private String unitName; + + private String MaterialOther; + + private String MOtherField1; + + private String MOtherField2; + + private String MOtherField3; + + private String depotName; + + private BigDecimal currentNumber; + + private BigDecimal lowSafeStock; + + private BigDecimal highSafeStock; + + private BigDecimal lowCritical; + + private BigDecimal highCritical; + + public Long getMId() { + return MId; + } + + public void setMId(Long MId) { + this.MId = MId; + } + + public String getBarCode() { + return barCode; + } + + public void setBarCode(String barCode) { + this.barCode = barCode; + } + + public String getMName() { + return MName; + } + + public void setMName(String MName) { + this.MName = MName; + } + + public String getMModel() { + return MModel; + } + + public void setMModel(String MModel) { + this.MModel = MModel; + } + + public String getMaterialUnit() { + return MaterialUnit; + } + + public void setMaterialUnit(String materialUnit) { + MaterialUnit = materialUnit; + } + + public String getMColor() { + return MColor; + } + + public void setMColor(String MColor) { + this.MColor = MColor; + } + + public String getMStandard() { + return MStandard; + } + + public void setMStandard(String MStandard) { + this.MStandard = MStandard; + } + + public String getMMfrs() { + return MMfrs; + } + + public void setMMfrs(String MMfrs) { + this.MMfrs = MMfrs; + } + + public String getBrand() { + return brand; + } + + public void setBrand(String brand) { + this.brand = brand; + } + + public String getUnitName() { + return unitName; + } + + public void setUnitName(String unitName) { + this.unitName = unitName; + } + + public String getMaterialOther() { + return MaterialOther; + } + + public void setMaterialOther(String materialOther) { + MaterialOther = materialOther; + } + + public String getMOtherField1() { + return MOtherField1; + } + + public void setMOtherField1(String MOtherField1) { + this.MOtherField1 = MOtherField1; + } + + public String getMOtherField2() { + return MOtherField2; + } + + public void setMOtherField2(String MOtherField2) { + this.MOtherField2 = MOtherField2; + } + + public String getMOtherField3() { + return MOtherField3; + } + + public void setMOtherField3(String MOtherField3) { + this.MOtherField3 = MOtherField3; + } + + public String getDepotName() { + return depotName; + } + + public void setDepotName(String depotName) { + this.depotName = depotName; + } + + public BigDecimal getCurrentNumber() { + return currentNumber; + } + + public void setCurrentNumber(BigDecimal currentNumber) { + this.currentNumber = currentNumber; + } + + public BigDecimal getLowSafeStock() { + return lowSafeStock; + } + + public void setLowSafeStock(BigDecimal lowSafeStock) { + this.lowSafeStock = lowSafeStock; + } + + public BigDecimal getHighSafeStock() { + return highSafeStock; + } + + public void setHighSafeStock(BigDecimal highSafeStock) { + this.highSafeStock = highSafeStock; + } + + public BigDecimal getLowCritical() { + return lowCritical; + } + + public void setLowCritical(BigDecimal lowCritical) { + this.lowCritical = lowCritical; + } + + public BigDecimal getHighCritical() { + return highCritical; + } + + public void setHighCritical(BigDecimal highCritical) { + this.highCritical = highCritical; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/DepotItemVo4Stock.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/DepotItemVo4Stock.java new file mode 100644 index 0000000..2e22834 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/DepotItemVo4Stock.java @@ -0,0 +1,80 @@ +package com.reallin.smt.datasource.vo; + + +import java.math.BigDecimal; + +public class DepotItemVo4Stock { + + private BigDecimal inTotal; + private BigDecimal outTotal; + private BigDecimal transfInTotal; + private BigDecimal transfOutTotal; + private BigDecimal assemInTotal; + private BigDecimal assemOutTotal; + private BigDecimal disAssemInTotal; + private BigDecimal disAssemOutTotal; + + public BigDecimal getInTotal() { + return inTotal; + } + + public void setInTotal(BigDecimal inTotal) { + this.inTotal = inTotal; + } + + public BigDecimal getOutTotal() { + return outTotal; + } + + public void setOutTotal(BigDecimal outTotal) { + this.outTotal = outTotal; + } + + public BigDecimal getTransfInTotal() { + return transfInTotal; + } + + public void setTransfInTotal(BigDecimal transfInTotal) { + this.transfInTotal = transfInTotal; + } + + public BigDecimal getTransfOutTotal() { + return transfOutTotal; + } + + public void setTransfOutTotal(BigDecimal transfOutTotal) { + this.transfOutTotal = transfOutTotal; + } + + public BigDecimal getAssemInTotal() { + return assemInTotal; + } + + public void setAssemInTotal(BigDecimal assemInTotal) { + this.assemInTotal = assemInTotal; + } + + public BigDecimal getAssemOutTotal() { + return assemOutTotal; + } + + public void setAssemOutTotal(BigDecimal assemOutTotal) { + this.assemOutTotal = assemOutTotal; + } + + public BigDecimal getDisAssemInTotal() { + return disAssemInTotal; + } + + public void setDisAssemInTotal(BigDecimal disAssemInTotal) { + this.disAssemInTotal = disAssemInTotal; + } + + public BigDecimal getDisAssemOutTotal() { + return disAssemOutTotal; + } + + public void setDisAssemOutTotal(BigDecimal disAssemOutTotal) { + this.disAssemOutTotal = disAssemOutTotal; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/DepotItemVoBatchNumberList.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/DepotItemVoBatchNumberList.java new file mode 100644 index 0000000..d3834bc --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/DepotItemVoBatchNumberList.java @@ -0,0 +1,108 @@ +package com.reallin.smt.datasource.vo; + + +import java.math.BigDecimal; +import java.util.Date; + +public class DepotItemVoBatchNumberList { + + private String id; + private String barCode; + private String name; + private String standard; + private String model; + private Long unitId; + private String commodityUnit; + private String batchNumber; + private Date expirationDate; + private String expirationDateStr; + private BigDecimal totalNum; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getBarCode() { + return barCode; + } + + public void setBarCode(String barCode) { + this.barCode = barCode; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getStandard() { + return standard; + } + + public void setStandard(String standard) { + this.standard = standard; + } + + public String getModel() { + return model; + } + + public void setModel(String model) { + this.model = model; + } + + public Long getUnitId() { + return unitId; + } + + public void setUnitId(Long unitId) { + this.unitId = unitId; + } + + public String getCommodityUnit() { + return commodityUnit; + } + + public void setCommodityUnit(String commodityUnit) { + this.commodityUnit = commodityUnit; + } + + public String getBatchNumber() { + return batchNumber; + } + + public void setBatchNumber(String batchNumber) { + this.batchNumber = batchNumber; + } + + public Date getExpirationDate() { + return expirationDate; + } + + public void setExpirationDate(Date expirationDate) { + this.expirationDate = expirationDate; + } + + public String getExpirationDateStr() { + return expirationDateStr; + } + + public void setExpirationDateStr(String expirationDateStr) { + this.expirationDateStr = expirationDateStr; + } + + public BigDecimal getTotalNum() { + return totalNum; + } + + public void setTotalNum(BigDecimal totalNum) { + this.totalNum = totalNum; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/FinishDepositVo.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/FinishDepositVo.java new file mode 100644 index 0000000..e1c8c61 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/FinishDepositVo.java @@ -0,0 +1,26 @@ +package com.reallin.smt.datasource.vo; + +import java.math.BigDecimal; + +public class FinishDepositVo { + + private String number; + + private BigDecimal finishDeposit; + + public String getNumber() { + return number; + } + + public void setNumber(String number) { + this.number = number; + } + + public BigDecimal getFinishDeposit() { + return finishDeposit; + } + + public void setFinishDeposit(BigDecimal finishDeposit) { + this.finishDeposit = finishDeposit; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/InOutPriceVo.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/InOutPriceVo.java new file mode 100644 index 0000000..3399263 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/InOutPriceVo.java @@ -0,0 +1,27 @@ +package com.reallin.smt.datasource.vo; + +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * @Author jishenghua + * @Date 2024-04-26 22:23 + */ +@Data +public class InOutPriceVo { + + private Long id; + + private BigDecimal discountLastMoney; + + private BigDecimal totalPrice; + + private String type; + + private String subType; + + private Date operTime; + +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/InventoryOperatorOption.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/InventoryOperatorOption.java new file mode 100644 index 0000000..ce559b3 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/InventoryOperatorOption.java @@ -0,0 +1,14 @@ +package com.reallin.smt.datasource.vo; + +import lombok.Data; + +/** + * 盘点操作账号下拉选项,数据来源为系统账号表 tbl_user。 + */ +@Data +public class InventoryOperatorOption { + private Long id; + private String name; + private String loginName; + private String department; +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/LogVo4List.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/LogVo4List.java new file mode 100644 index 0000000..73846ea --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/LogVo4List.java @@ -0,0 +1,36 @@ +package com.reallin.smt.datasource.vo; + +import com.reallin.smt.datasource.entities.Log; + +public class LogVo4List extends Log { + + private String loginName; + + private String userName; + + private String createTimeStr; + + public String getLoginName() { + return loginName; + } + + public void setLoginName(String loginName) { + this.loginName = loginName; + } + + public String getUserName() { + return userName; + } + + public void setUserName(String userName) { + this.userName = userName; + } + + public String getCreateTimeStr() { + return createTimeStr; + } + + public void setCreateTimeStr(String createTimeStr) { + this.createTimeStr = createTimeStr; + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/MaterialCountVo.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/MaterialCountVo.java new file mode 100644 index 0000000..b6f8e1e --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/MaterialCountVo.java @@ -0,0 +1,26 @@ +package com.reallin.smt.datasource.vo; + +import java.math.BigDecimal; + +public class MaterialCountVo { + + private Long headerId; + + private BigDecimal materialCount; + + public Long getHeaderId() { + return headerId; + } + + public void setHeaderId(Long headerId) { + this.headerId = headerId; + } + + public BigDecimal getMaterialCount() { + return materialCount; + } + + public void setMaterialCount(BigDecimal materialCount) { + this.materialCount = materialCount; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/MaterialDepotStock.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/MaterialDepotStock.java new file mode 100644 index 0000000..6544067 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/MaterialDepotStock.java @@ -0,0 +1,28 @@ +package com.reallin.smt.datasource.vo; + +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class MaterialDepotStock { + + private Long id; + + private Long materialId; + + private Long depotId; + + private String depotName; + + private BigDecimal currentNumber; + + private BigDecimal currentUnitPrice; + + private BigDecimal purchaseDecimal; + + private BigDecimal unitPrice; + + private BigDecimal allPrice; + +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/MaterialExtendVo4List.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/MaterialExtendVo4List.java new file mode 100644 index 0000000..cc49108 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/MaterialExtendVo4List.java @@ -0,0 +1,68 @@ +package com.reallin.smt.datasource.vo; + +import com.reallin.smt.datasource.entities.MaterialExtend; + +import java.math.BigDecimal; + +public class MaterialExtendVo4List extends MaterialExtend { + + private String supplier; + + private String originPlace; + + private String unit; + + private String brandName; + + private BigDecimal guaranteePeriod; + + private BigDecimal memberDecimal; + + public String getSupplier() { + return supplier; + } + + public void setSupplier(String supplier) { + this.supplier = supplier; + } + + public String getOriginPlace() { + return originPlace; + } + + public void setOriginPlace(String originPlace) { + this.originPlace = originPlace; + } + + public String getUnit() { + return unit; + } + + public void setUnit(String unit) { + this.unit = unit; + } + + public String getBrandName() { + return brandName; + } + + public void setBrandName(String brandName) { + this.brandName = brandName; + } + + public BigDecimal getGuaranteePeriod() { + return guaranteePeriod; + } + + public void setGuaranteePeriod(BigDecimal guaranteePeriod) { + this.guaranteePeriod = guaranteePeriod; + } + + public BigDecimal getMemberDecimal() { + return memberDecimal; + } + + public void setMemberDecimal(BigDecimal memberDecimal) { + this.memberDecimal = memberDecimal; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/MaterialVoSearch.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/MaterialVoSearch.java new file mode 100644 index 0000000..a78657f --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/MaterialVoSearch.java @@ -0,0 +1,84 @@ +package com.reallin.smt.datasource.vo; + +public class MaterialVoSearch { + + private String barCode; + + private String name; + + private String mnemonic; + + private String brand; + + private String standard; + + private String model; + + private String color; + + private String unit; + + public String getBarCode() { + return barCode; + } + + public void setBarCode(String barCode) { + this.barCode = barCode; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getMnemonic() { + return mnemonic; + } + + public void setMnemonic(String mnemonic) { + this.mnemonic = mnemonic; + } + + public String getStandard() { + return standard; + } + + public void setStandard(String standard) { + this.standard = standard; + } + + public String getModel() { + return model; + } + + public void setModel(String model) { + this.model = model; + } + + public String getColor() { + return color; + } + + public void setColor(String color) { + this.color = color; + } + + public String getUnit() { + return unit; + } + + public void setUnit(String unit) { + this.unit = unit; + } + + public String getBrand() { + return brand; + } + + public void setBrand(String brand) { + this.brand = brand; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/MaterialsListVo.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/MaterialsListVo.java new file mode 100644 index 0000000..9b8dd65 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/MaterialsListVo.java @@ -0,0 +1,24 @@ +package com.reallin.smt.datasource.vo; + +public class MaterialsListVo { + + private Long headerId; + + private String materialsList; + + public Long getHeaderId() { + return headerId; + } + + public void setHeaderId(Long headerId) { + this.headerId = headerId; + } + + public String getMaterialsList() { + return materialsList; + } + + public void setMaterialsList(String materialsList) { + this.materialsList = materialsList; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/NodeAttributes.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/NodeAttributes.java new file mode 100644 index 0000000..8ad0348 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/NodeAttributes.java @@ -0,0 +1,30 @@ +package com.reallin.smt.datasource.vo; + +/** + * Description + * + * @Author: qiankunpingtai + * @Date: 2019/3/13 18:11 + */ +public class NodeAttributes { + //编号 + private String no; + //类型 + private Integer type; + + public String getNo() { + return no; + } + + public void setNo(String no) { + this.no = no; + } + + public Integer getType() { + return type; + } + + public void setType(Integer type) { + this.type = type; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/PackBomVo4List.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/PackBomVo4List.java new file mode 100644 index 0000000..67fa525 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/PackBomVo4List.java @@ -0,0 +1,48 @@ +package com.reallin.smt.datasource.vo; + +import com.reallin.smt.datasource.entities.PackBom; + +/** + * 生产方案列表VO + */ +public class PackBomVo4List extends PackBom { + + /** + * 兼容字段:生产成品名称 + */ + private String productMaterialName; + + /** + * 生产成品名称 + */ + private String outputMaterialName; + + /** + * 组成物料数 + */ + private Integer itemCount; + + public String getProductMaterialName() { + return productMaterialName; + } + + public void setProductMaterialName(String productMaterialName) { + this.productMaterialName = productMaterialName; + } + + public String getOutputMaterialName() { + return outputMaterialName; + } + + public void setOutputMaterialName(String outputMaterialName) { + this.outputMaterialName = outputMaterialName; + } + + public Integer getItemCount() { + return itemCount; + } + + public void setItemCount(Integer itemCount) { + this.itemCount = itemCount; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/ProductionOrderVo4List.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/ProductionOrderVo4List.java new file mode 100644 index 0000000..d28f01f --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/ProductionOrderVo4List.java @@ -0,0 +1,89 @@ +package com.reallin.smt.datasource.vo; + +import com.reallin.smt.datasource.entities.ProductionOrder; + +import java.math.BigDecimal; + +/** + * 生产工单列表VO + */ +public class ProductionOrderVo4List extends ProductionOrder { + + /** + * 兼容字段:生产成品名称 + */ + private String productMaterialName; + + /** + * 生产成品名称 + */ + private String outputMaterialName; + + /** + * BOM方案名称 + */ + private String bomName; + + /** + * 创建人名称 + */ + private String creatorName; + + /** + * 审批人名称 + */ + private String auditByName; + + /** + * 完工进度百分比 + */ + private BigDecimal progress; + + public String getProductMaterialName() { + return productMaterialName; + } + + public void setProductMaterialName(String productMaterialName) { + this.productMaterialName = productMaterialName; + } + + public String getOutputMaterialName() { + return outputMaterialName; + } + + public void setOutputMaterialName(String outputMaterialName) { + this.outputMaterialName = outputMaterialName; + } + + public String getBomName() { + return bomName; + } + + public void setBomName(String bomName) { + this.bomName = bomName; + } + + public String getCreatorName() { + return creatorName; + } + + public void setCreatorName(String creatorName) { + this.creatorName = creatorName; + } + + public String getAuditByName() { + return auditByName; + } + + public void setAuditByName(String auditByName) { + this.auditByName = auditByName; + } + + public BigDecimal getProgress() { + return progress; + } + + public void setProgress(BigDecimal progress) { + this.progress = progress; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/ProductionReportVo4List.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/ProductionReportVo4List.java new file mode 100644 index 0000000..3263601 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/ProductionReportVo4List.java @@ -0,0 +1,61 @@ +package com.reallin.smt.datasource.vo; + +import com.reallin.smt.datasource.entities.ProductionReport; + +/** + * 完工报告列表VO + */ +public class ProductionReportVo4List extends ProductionReport { + + /** + * 生产成品名称 + */ + private String outputMaterialName; + + /** + * 仓库名称 + */ + private String depotName; + + /** + * 报工人名称 + */ + private String reportByName; + + /** + * 审核人名称 + */ + private String auditByName; + + public String getOutputMaterialName() { + return outputMaterialName; + } + + public void setOutputMaterialName(String outputMaterialName) { + this.outputMaterialName = outputMaterialName; + } + + public String getDepotName() { + return depotName; + } + + public void setDepotName(String depotName) { + this.depotName = depotName; + } + + public String getReportByName() { + return reportByName; + } + + public void setReportByName(String reportByName) { + this.reportByName = reportByName; + } + + public String getAuditByName() { + return auditByName; + } + + public void setAuditByName(String auditByName) { + this.auditByName = auditByName; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/ProductionRequisitionVo4List.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/ProductionRequisitionVo4List.java new file mode 100644 index 0000000..46b023f --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/ProductionRequisitionVo4List.java @@ -0,0 +1,89 @@ +package com.reallin.smt.datasource.vo; + +import com.reallin.smt.datasource.entities.ProductionRequisition; + +import java.math.BigDecimal; + +/** + * 生产领料单列表VO + */ +public class ProductionRequisitionVo4List extends ProductionRequisition { + + /** + * 仓库名称 + */ + private String depotName; + + /** + * 创建人名称 + */ + private String creatorName; + + /** + * 确认人名称 + */ + private String confirmByName; + + /** + * 物料信息汇总 + */ + private String materialsList; + + /** + * 明细条数 + */ + private Integer itemCount; + + /** + * 申请数量合计 + */ + private BigDecimal totalRequiredQuantity; + + public String getDepotName() { + return depotName; + } + + public void setDepotName(String depotName) { + this.depotName = depotName; + } + + public String getCreatorName() { + return creatorName; + } + + public void setCreatorName(String creatorName) { + this.creatorName = creatorName; + } + + public String getConfirmByName() { + return confirmByName; + } + + public void setConfirmByName(String confirmByName) { + this.confirmByName = confirmByName; + } + + public String getMaterialsList() { + return materialsList; + } + + public void setMaterialsList(String materialsList) { + this.materialsList = materialsList; + } + + public Integer getItemCount() { + return itemCount; + } + + public void setItemCount(Integer itemCount) { + this.itemCount = itemCount; + } + + public BigDecimal getTotalRequiredQuantity() { + return totalRequiredQuantity; + } + + public void setTotalRequiredQuantity(BigDecimal totalRequiredQuantity) { + this.totalRequiredQuantity = totalRequiredQuantity; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/SaleShipmentVo4List.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/SaleShipmentVo4List.java new file mode 100644 index 0000000..bd8a2ba --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/SaleShipmentVo4List.java @@ -0,0 +1,89 @@ +package com.reallin.smt.datasource.vo; + +import com.reallin.smt.datasource.entities.SaleShipment; + +import java.math.BigDecimal; + +public class SaleShipmentVo4List extends SaleShipment { + private String customerName; + private String creatorName; + private String approveByName; + private String shipByName; + private String confirmByName; + private String materialsList; + private BigDecimal planQuantity; + private BigDecimal actualQuantity; + private BigDecimal differenceQuantity; + + public String getCustomerName() { + return customerName; + } + + public void setCustomerName(String customerName) { + this.customerName = customerName; + } + + public String getCreatorName() { + return creatorName; + } + + public void setCreatorName(String creatorName) { + this.creatorName = creatorName; + } + + public String getApproveByName() { + return approveByName; + } + + public void setApproveByName(String approveByName) { + this.approveByName = approveByName; + } + + public String getShipByName() { + return shipByName; + } + + public void setShipByName(String shipByName) { + this.shipByName = shipByName; + } + + public String getConfirmByName() { + return confirmByName; + } + + public void setConfirmByName(String confirmByName) { + this.confirmByName = confirmByName; + } + + public String getMaterialsList() { + return materialsList; + } + + public void setMaterialsList(String materialsList) { + this.materialsList = materialsList; + } + + public BigDecimal getPlanQuantity() { + return planQuantity; + } + + public void setPlanQuantity(BigDecimal planQuantity) { + this.planQuantity = planQuantity; + } + + public BigDecimal getActualQuantity() { + return actualQuantity; + } + + public void setActualQuantity(BigDecimal actualQuantity) { + this.actualQuantity = actualQuantity; + } + + public BigDecimal getDifferenceQuantity() { + return differenceQuantity; + } + + public void setDifferenceQuantity(BigDecimal differenceQuantity) { + this.differenceQuantity = differenceQuantity; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/SupplierSimple.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/SupplierSimple.java new file mode 100644 index 0000000..3bbe359 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/SupplierSimple.java @@ -0,0 +1,12 @@ +package com.reallin.smt.datasource.vo; + +import lombok.Data; + +@Data +public class SupplierSimple { + + private Long id; + + private String supplier; + +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/TreeNode.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/TreeNode.java new file mode 100644 index 0000000..6629b68 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/TreeNode.java @@ -0,0 +1,114 @@ +package com.reallin.smt.datasource.vo; + +import java.util.List; + +/** + * Description + * 树形结构基本元素 + * @Author: cjl + * @Date: 2019/2/19 11:27 + */ +public class TreeNode { + /** + * id主键 + * */ + private Long id; + private Long key; + private Long value; + /** + * title显示的文本 + * */ + private String title; + /** + *state节点状态,'open' 或 'closed',默认:'open'。如果为'closed'的时候,将不自动展开该节点。 + * */ + private String state="open"; + /** + *iconCls 节点图标id + * */ + private String iconCls; + /** + * checked 是否被选中 + * */ + private boolean checked; + /** + *attributes 自定义属性 + * */ + private String attributes; + /** + * children 子节点 + * */ + private List children; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getKey() { + return key; + } + + public void setKey(Long key) { + this.key = key; + } + + public Long getValue() { + return value; + } + + public void setValue(Long value) { + this.value = value; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + + public String getIconCls() { + return iconCls; + } + + public void setIconCls(String iconCls) { + this.iconCls = iconCls; + } + + public boolean isChecked() { + return checked; + } + + public void setChecked(boolean checked) { + this.checked = checked; + } + + public String getAttributes() { + return attributes; + } + + public void setAttributes(String attributes) { + this.attributes = attributes; + } + + public List getChildren() { + return children; + } + + public void setChildren(List children) { + this.children = children; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/TreeNodeEx.java b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/TreeNodeEx.java new file mode 100644 index 0000000..62df71b --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/datasource/vo/TreeNodeEx.java @@ -0,0 +1,96 @@ +package com.reallin.smt.datasource.vo; + +import java.util.List; + +/** + * Description + * + * @Author: qiankunpingtai + * @Date: 2019/3/13 18:10 + */ +public class TreeNodeEx { + /** + * id主键 + * */ + private Long id; + /** + * text显示的文本 + * */ + private String text; + /** + *state节点状态,'open' 或 'closed',默认:'open'。如果为'closed'的时候,将不自动展开该节点。 + * */ + private String state="open"; + /** + *iconCls 节点图标id + * */ + private String iconCls; + /** + * checked 是否被选中 + * */ + private boolean checked; + /** + *attributes 自定义属性 + * */ + private NodeAttributes attributes; + /** + * children 子节点 + * */ + private List children; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getText() { + return text; + } + + public void setText(String text) { + this.text = text; + } + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + + public String getIconCls() { + return iconCls; + } + + public void setIconCls(String iconCls) { + this.iconCls = iconCls; + } + + public boolean isChecked() { + return checked; + } + + public void setChecked(boolean checked) { + this.checked = checked; + } + + public NodeAttributes getAttributes() { + return attributes; + } + + public void setAttributes(NodeAttributes attributes) { + this.attributes = attributes; + } + + public List getChildren() { + return children; + } + + public void setChildren(List children) { + this.children = children; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/exception/BusinessParamCheckingException.java b/smtERP-boot/src/main/java/com/reallin/smt/exception/BusinessParamCheckingException.java new file mode 100644 index 0000000..7252326 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/exception/BusinessParamCheckingException.java @@ -0,0 +1,32 @@ +package com.reallin.smt.exception; + +import lombok.Getter; +import lombok.extern.slf4j.Slf4j; + +import java.util.HashMap; +import java.util.Map; + +@Slf4j +@Getter +public class BusinessParamCheckingException extends Exception { + + private static final long serialVersionUID = 1L; + private int code; + private Map data; + + public BusinessParamCheckingException(int code, String reason) { + super(reason); + Map objectMap = new HashMap<>(); + objectMap.put("message", reason); + this.code = code; + this.data = objectMap; + } + + public BusinessParamCheckingException(int code, String reason, Throwable throwable) { + super(reason, throwable); + Map objectMap = new HashMap<>(); + objectMap.put("message", reason); + this.code = code; + this.data = objectMap; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/exception/BusinessRunTimeException.java b/smtERP-boot/src/main/java/com/reallin/smt/exception/BusinessRunTimeException.java new file mode 100644 index 0000000..4dec442 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/exception/BusinessRunTimeException.java @@ -0,0 +1,32 @@ +package com.reallin.smt.exception; + +import lombok.Getter; +import lombok.extern.slf4j.Slf4j; + +import java.util.HashMap; +import java.util.Map; + +@Slf4j +@Getter +public class BusinessRunTimeException extends RuntimeException { + + private static final long serialVersionUID = 1L; + private int code; + private Map data; + + public BusinessRunTimeException(int code, String reason) { + super(reason); + Map objectMap = new HashMap<>(); + objectMap.put("message", reason); + this.code = code; + this.data = objectMap; + } + + public BusinessRunTimeException(int code, String reason, Throwable throwable) { + super(reason, throwable); + Map objectMap = new HashMap<>(); + objectMap.put("message", reason); + this.code = code; + this.data = objectMap; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/exception/GlobalExceptionHandler.java b/smtERP-boot/src/main/java/com/reallin/smt/exception/GlobalExceptionHandler.java new file mode 100644 index 0000000..9227833 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/exception/GlobalExceptionHandler.java @@ -0,0 +1,44 @@ +package com.reallin.smt.exception; + +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.constants.ExceptionConstants; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestControllerAdvice; + +import javax.servlet.http.HttpServletRequest; + +@Slf4j +@RestControllerAdvice +public class GlobalExceptionHandler { + + @ExceptionHandler(value = Exception.class) + @ResponseBody + public Object handleException(Exception e, HttpServletRequest request) { + JSONObject status = new JSONObject(); + + // 针对业务参数异常的处理 + if (e instanceof BusinessParamCheckingException) { + status.put(ExceptionConstants.GLOBAL_RETURNS_CODE, ((BusinessParamCheckingException) e).getCode()); + status.put(ExceptionConstants.GLOBAL_RETURNS_DATA, ((BusinessParamCheckingException) e).getData()); + return status; + } + + //针对业务运行时异常的处理 + if (e instanceof BusinessRunTimeException) { + status.put(ExceptionConstants.GLOBAL_RETURNS_CODE, ((BusinessRunTimeException) e).getCode()); + status.put(ExceptionConstants.GLOBAL_RETURNS_DATA, ((BusinessRunTimeException) e).getData()); + return status; + } + + status.put(ExceptionConstants.GLOBAL_RETURNS_CODE, ExceptionConstants.SERVICE_SYSTEM_ERROR_CODE); + status.put(ExceptionConstants.GLOBAL_RETURNS_DATA, ExceptionConstants.SERVICE_SYSTEM_ERROR_MSG); + log.error("Global Exception Occured => url : {}, msg : {}", request.getRequestURL(), e.getMessage()); + /** + * 这里输出完整的堆栈信息,否则有些异常完全不知道哪里出错了。 + */ + log.error("Global Exception Occured => url : {}", request.getRequestURL(), e); + return status; + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/exception/JshException.java b/smtERP-boot/src/main/java/com/reallin/smt/exception/JshException.java new file mode 100644 index 0000000..8200c4a --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/exception/JshException.java @@ -0,0 +1,27 @@ +package com.reallin.smt.exception; + +import com.reallin.smt.constants.ExceptionConstants; +import org.slf4j.Logger; + +/** + * 封装日志打印,收集日志 + * author: ji shenghua, qq 752718 920 + */ +public class JshException { + + public static void readFail(Logger logger, Exception e) { + logger.error("异常码[{}],异常提示[{}],异常[{}]", + ExceptionConstants.DATA_READ_FAIL_CODE, ExceptionConstants.DATA_READ_FAIL_MSG,e); + throw new BusinessRunTimeException(ExceptionConstants.DATA_READ_FAIL_CODE, + ExceptionConstants.DATA_READ_FAIL_MSG); + } + + public static void writeFail(Logger logger, Exception e) { + logger.error("异常码[{}],异常提示[{}],异常[{}]", + ExceptionConstants.DATA_WRITE_FAIL_CODE,ExceptionConstants.DATA_WRITE_FAIL_MSG,e); + throw new BusinessRunTimeException(ExceptionConstants.DATA_WRITE_FAIL_CODE, + ExceptionConstants.DATA_WRITE_FAIL_MSG); + } + + +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/exception/LegacyInventoryBusinessException.java b/smtERP-boot/src/main/java/com/reallin/smt/exception/LegacyInventoryBusinessException.java new file mode 100644 index 0000000..6b079a0 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/exception/LegacyInventoryBusinessException.java @@ -0,0 +1,10 @@ +package com.reallin.smt.exception; + +/** + * 需要原样返回给旧盘点客户端的业务错误。 + */ +public class LegacyInventoryBusinessException extends RuntimeException { + public LegacyInventoryBusinessException(String message) { + super(message); + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/exception/UtilException.java b/smtERP-boot/src/main/java/com/reallin/smt/exception/UtilException.java new file mode 100644 index 0000000..212c1a1 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/exception/UtilException.java @@ -0,0 +1,26 @@ +package com.reallin.smt.exception; + +/** + * 工具类异常 + * + * @author ji-sheng-hua + */ +public class UtilException extends RuntimeException +{ + private static final long serialVersionUID = 8247610319171014183L; + + public UtilException(Throwable e) + { + super(e.getMessage(), e); + } + + public UtilException(String message) + { + super(message); + } + + public UtilException(String message, Throwable throwable) + { + super(message, throwable); + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/filter/LogCostFilter.java b/smtERP-boot/src/main/java/com/reallin/smt/filter/LogCostFilter.java new file mode 100644 index 0000000..7542296 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/filter/LogCostFilter.java @@ -0,0 +1,123 @@ +package com.reallin.smt.filter; + +import com.reallin.smt.service.RedisService; +import com.reallin.smt.service.LegacyInventoryAuthService; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.util.StringUtils; + +import javax.annotation.Resource; +import javax.servlet.*; +import javax.servlet.annotation.WebFilter; +import javax.servlet.annotation.WebInitParam; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.security.MessageDigest; + +@WebFilter(filterName = "LogCostFilter", urlPatterns = {"/*"}, + initParams = {@WebInitParam(name = "filterPath", + value = "/apis/platformConfig/getPlatform#/apis/v2/api-docs#/apis/webjars#" + + "/apis/systemConfig/static#/apis/api/plugin/wechat/weChat/share#" + + "/apis/api/plugin/general-ledger/pdf/voucher")}) +public class LogCostFilter implements Filter { + + private static final String FILTER_PATH = "filterPath"; + + private String[] allowUrls; + @Resource + private RedisService redisService; + @Resource + private LegacyInventoryAuthService legacyInventoryAuthService; + @Value("${security.sync.api-key:}") + private String syncApiKey; + + @Override + public void init(FilterConfig filterConfig) throws ServletException { + String filterPath = filterConfig.getInitParameter(FILTER_PATH); + if (!StringUtils.isEmpty(filterPath)) { + allowUrls = filterPath.contains("#") ? filterPath.split("#") : new String[]{filterPath}; + } + } + + @Override + public void doFilter(ServletRequest request, ServletResponse response, + FilterChain chain) throws IOException, ServletException { + HttpServletRequest servletRequest = (HttpServletRequest) request; + HttpServletResponse servletResponse = (HttpServletResponse) response; + String requestUrl = servletRequest.getRequestURI(); + if(requestUrl.contains("..") || requestUrl.contains("%2e") || requestUrl.contains("%2E")) { + servletResponse.setStatus(500); + servletResponse.getWriter().write("loginOut"); + return; + } + String path = requestUrl.substring(servletRequest.getContextPath().length()); + // Static Excel templates contain no business data; direct browser downloads have no token header. + if ("GET".equals(servletRequest.getMethod()) + && (path.equals("/smtInbound/template") || path.equals("/headquartersInbound/template"))) { + chain.doFilter(request, response); + return; + } + boolean inventoryPath = path.startsWith("/n2tpm/webmvc/Inventory/") + || path.startsWith("/webmvc/Inventory/"); + if (inventoryPath) { + boolean login = path.equals("/n2tpm/webmvc/Inventory/Login") || path.equals("/webmvc/Inventory/Login"); + if ((login && "POST".equals(servletRequest.getMethod())) + || legacyInventoryAuthService.authenticatedUser(servletRequest) != null) { + chain.doFilter(request, response); + } else { + servletResponse.setStatus(HttpServletResponse.SC_UNAUTHORIZED); + servletResponse.setContentType("application/json;charset=UTF-8"); + servletResponse.getWriter().write("{\"code\":\"401\",\"msg\":\"Authentication required\",\"data\":null}"); + } + return; + } + boolean syncPath = path.equals("/smtInbound/sync") || path.equals("/headquartersInbound/sync"); + if (syncPath && "POST".equals(servletRequest.getMethod()) && validSyncKey(servletRequest)) { + chain.doFilter(request, response); + return; + } + //具体,比如:处理若用户未登录,则跳转到登录页 + Object userId = redisService.getObjectFromSessionByKey(servletRequest,"userId"); + if(userId!=null) { //如果已登录,不阻止 + chain.doFilter(request, response); + return; + } + if (syncPath) { + servletResponse.setStatus(HttpServletResponse.SC_UNAUTHORIZED); + servletResponse.getWriter().write("loginOut"); + return; + } + if (requestUrl.equals("/apis/doc.html") || requestUrl.equals("/apis/user/login") + || requestUrl.equals("/apis/user/register") || requestUrl.equals("/apis/user/weixinLogin") + || requestUrl.equals("/apis/user/weixinBind") || requestUrl.equals("/apis/user/registerUser") + || requestUrl.equals("/apis/user/randomImage")) { + chain.doFilter(request, response); + return; + } + if (null != allowUrls && allowUrls.length > 0) { + for (String url : allowUrls) { + if (requestUrl.equals(url) || requestUrl.startsWith(url + "/")) { + chain.doFilter(request, response); + return; + } + } + } + servletResponse.setStatus(500); + if(!requestUrl.equals("/apis/user/logout") && !requestUrl.equals("/apis/function/findMenuByPNumber")) { + servletResponse.getWriter().write("loginOut"); + } + } + + private boolean validSyncKey(HttpServletRequest request) { + String supplied = request.getHeader("X-Sync-Api-Key"); + return syncApiKey != null && !syncApiKey.isEmpty() && supplied != null + && MessageDigest.isEqual(syncApiKey.getBytes(StandardCharsets.UTF_8), + supplied.getBytes(StandardCharsets.UTF_8)); + } + + @Override + public void destroy() { + + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/service/AccountHeadService.java b/smtERP-boot/src/main/java/com/reallin/smt/service/AccountHeadService.java new file mode 100644 index 0000000..2cb8ff0 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/service/AccountHeadService.java @@ -0,0 +1,433 @@ +package com.reallin.smt.service; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.constants.BusinessConstants; +import com.reallin.smt.constants.ExceptionConstants; +import com.reallin.smt.datasource.entities.*; +import com.reallin.smt.datasource.mappers.AccountHeadMapper; +import com.reallin.smt.datasource.mappers.AccountHeadMapperEx; +import com.reallin.smt.datasource.mappers.AccountItemMapperEx; +import com.reallin.smt.datasource.mappers.AccountMapper; +import com.reallin.smt.exception.BusinessRunTimeException; +import com.reallin.smt.exception.JshException; +import com.reallin.smt.utils.PageUtils; +import com.reallin.smt.utils.StringUtil; +import com.reallin.smt.utils.Tools; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import static com.reallin.smt.utils.Tools.getCenternTime; + +@Service +public class AccountHeadService { + private Logger logger = LoggerFactory.getLogger(AccountHeadService.class); + @Resource + private AccountHeadMapper accountHeadMapper; + @Resource + private AccountHeadMapperEx accountHeadMapperEx; + @Resource + private OrgaUserRelService orgaUserRelService; + @Resource + private AccountItemService accountItemService; + @Resource + private UserService userService; + @Resource + private SupplierService supplierService; + @Resource + private SystemConfigService systemConfigService; + @Resource + private LogService logService; + @Resource + private AccountItemMapperEx accountItemMapperEx; + @Resource + private AccountMapper accountMapper; + + public AccountHead getAccountHead(long id) throws Exception { + AccountHead result=null; + try{ + result=accountHeadMapper.selectByPrimaryKey(id); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return result; + } + + public List getAccountHeadListByIds(String ids)throws Exception { + List idList = StringUtil.strToLongList(ids); + List list = new ArrayList<>(); + try{ + AccountHeadExample example = new AccountHeadExample(); + example.createCriteria().andIdIn(idList); + list = accountHeadMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public List getAccountHead() throws Exception{ + AccountHeadExample example = new AccountHeadExample(); + List list=null; + try{ + list=accountHeadMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public List select(String type, String billNo, String beginTime, String endTime, + Long organId, Long creator, Long handsPersonId, Long accountId, String status, + String remark, String number, Long inOutItemId) throws Exception{ + List list = new ArrayList<>(); + try{ + String [] creatorArray = getCreatorArray(); + beginTime = Tools.parseDayToTime(beginTime,BusinessConstants.DAY_FIRST_TIME); + endTime = Tools.parseDayToTime(endTime,BusinessConstants.DAY_LAST_TIME); + PageUtils.startPage(); + list = accountHeadMapperEx.selectByConditionAccountHead(type, creatorArray, billNo, + beginTime, endTime, organId, creator, handsPersonId, accountId, status, remark, number, inOutItemId); + if (null != list) { + for (AccountHeadVo4ListEx ah : list) { + if(ah.getChangeAmount() != null) { + if(BusinessConstants.TYPE_MONEY_IN.equals(ah.getType())) { + ah.setChangeAmount(ah.getChangeAmount()); + } else if(BusinessConstants.TYPE_MONEY_OUT.equals(ah.getType())) { + ah.setChangeAmount(BigDecimal.ZERO.subtract(ah.getChangeAmount())); + } else { + ah.setChangeAmount(ah.getChangeAmount().abs()); + } + } + if(ah.getTotalPrice() != null) { + if(BusinessConstants.TYPE_MONEY_IN.equals(ah.getType())) { + ah.setTotalPrice(ah.getTotalPrice()); + } else if(BusinessConstants.TYPE_MONEY_OUT.equals(ah.getType())) { + ah.setTotalPrice(BigDecimal.ZERO.subtract(ah.getTotalPrice())); + } else { + ah.setTotalPrice(ah.getTotalPrice().abs()); + } + } + if(ah.getBillTime() !=null) { + ah.setBillTimeStr(getCenternTime(ah.getBillTime())); + } + } + } + } catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + /** + * 根据角色类型获取操作员数组 + * @return + * @throws Exception + */ + public String[] getCreatorArray() throws Exception { + return null; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int insertAccountHead(JSONObject obj, HttpServletRequest request) throws Exception{ + AccountHead accountHead = JSONObject.parseObject(obj.toJSONString(), AccountHead.class); + int result=0; + try{ + User userInfo=userService.getCurrentUser(); + accountHead.setCreator(userInfo==null?null:userInfo.getId()); + result = accountHeadMapper.insertSelective(accountHead); + logService.insertLog("财务单据", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_ADD).append(accountHead.getBillNo()).toString(), request); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int updateAccountHead(JSONObject obj, HttpServletRequest request)throws Exception { + AccountHead accountHead = JSONObject.parseObject(obj.toJSONString(), AccountHead.class); + int result=0; + try{ + result = accountHeadMapper.updateByPrimaryKeySelective(accountHead); + logService.insertLog("财务单据", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_EDIT).append(accountHead.getBillNo()).toString(), request); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int deleteAccountHead(Long id, HttpServletRequest request)throws Exception { + return batchDeleteAccountHeadByIds(id.toString()); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteAccountHead(String ids, HttpServletRequest request)throws Exception { + return batchDeleteAccountHeadByIds(ids); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteAccountHeadByIds(String ids)throws Exception { + StringBuffer sb = new StringBuffer(); + sb.append(BusinessConstants.LOG_OPERATION_TYPE_DELETE); + User userInfo=userService.getCurrentUser(); + String [] idArray=ids.split(","); + List list = getAccountHeadListByIds(ids); + for(AccountHead accountHead: list){ + if(!"0".equals(accountHead.getStatus())) { + throw new BusinessRunTimeException(ExceptionConstants.ACCOUNT_HEAD_UN_AUDIT_DELETE_FAILED_CODE, + String.format(ExceptionConstants.ACCOUNT_HEAD_UN_AUDIT_DELETE_FAILED_MSG)); + } + } + //删除主表 + accountItemMapperEx.batchDeleteAccountItemByHeadIds(new Date(),userInfo==null?null:userInfo.getId(),idArray); + //删除子表 + accountHeadMapperEx.batchDeleteAccountHeadByIds(new Date(),userInfo==null?null:userInfo.getId(),idArray); + //路径列表 + List pathList = new ArrayList<>(); + for(AccountHead accountHead: list){ + sb.append("[").append(accountHead.getBillNo()).append("]"); + if(StringUtil.isNotEmpty(accountHead.getFileName())) { + pathList.add(accountHead.getFileName()); + } + if("收预付款".equals(accountHead.getType())){ + if (accountHead.getOrganId() != null) { + //更新会员预付款 + supplierService.updateAdvanceIn(accountHead.getOrganId()); + } + } + } + //逻辑删除文件 + systemConfigService.deleteFileByPathList(pathList); + logService.insertLog("财务单据", sb.toString(), + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); + return 1; + } + + /** + * 校验单据编号是否存在 + * @param id + * @param billNo + * @return + * @throws Exception + */ + public int checkIsBillNoExist(Long id, String billNo)throws Exception { + AccountHeadExample example = new AccountHeadExample(); + example.createCriteria().andIdNotEqualTo(id).andBillNoEqualTo(billNo).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list = null; + try{ + list = accountHeadMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list==null?0:list.size(); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchSetStatus(String status, String accountHeadIds)throws Exception { + int result = 0; + List ahIds = new ArrayList<>(); + List noList = new ArrayList<>(); + List ids = StringUtil.strToLongList(accountHeadIds); + for(Long id: ids) { + AccountHead accountHead = getAccountHead(id); + if("0".equals(status)){ + //进行反审核操作 + if("1".equals(accountHead.getStatus())) { + ahIds.add(id); + noList.add(accountHead.getBillNo()); + } else { + throw new BusinessRunTimeException(ExceptionConstants.ACCOUNT_HEAD_AUDIT_TO_UN_AUDIT_FAILED_CODE, + String.format(ExceptionConstants.ACCOUNT_HEAD_AUDIT_TO_UN_AUDIT_FAILED_MSG)); + } + } else if("1".equals(status)){ + //进行审核操作 + if("0".equals(accountHead.getStatus())) { + ahIds.add(id); + noList.add(accountHead.getBillNo()); + } else { + throw new BusinessRunTimeException(ExceptionConstants.ACCOUNT_HEAD_UN_AUDIT_TO_AUDIT_FAILED_CODE, + String.format(ExceptionConstants.ACCOUNT_HEAD_UN_AUDIT_TO_AUDIT_FAILED_MSG)); + } + } + } + if(!ahIds.isEmpty()) { + AccountHead accountHead = new AccountHead(); + accountHead.setStatus(status); + AccountHeadExample example = new AccountHeadExample(); + example.createCriteria().andIdIn(ahIds); + result = accountHeadMapper.updateByExampleSelective(accountHead, example); + //记录日志 + if(!noList.isEmpty() && ("0".equals(status) || "1".equals(status))) { + String statusStr = status.equals("1")?"[审核]":"[反审核]"; + logService.insertLog("财务单据", + new StringBuffer(statusStr).append(String.join(", ", noList)).toString(), + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); + } + } else { + result = 1; + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public void addAccountHeadAndDetail(String beanJson, String rows, HttpServletRequest request) throws Exception { + AccountHead accountHead = JSONObject.parseObject(beanJson, AccountHead.class); + //校验单号是否重复 + if(checkIsBillNoExist(0L, accountHead.getBillNo())>0) { + throw new BusinessRunTimeException(ExceptionConstants.ACCOUNT_HEAD_BILL_NO_EXIST_CODE, + String.format(ExceptionConstants.ACCOUNT_HEAD_BILL_NO_EXIST_MSG)); + } + //校验付款账户和明细中的账户重复(转账单据) + if(BusinessConstants.TYPE_GIRO.equals(accountHead.getType())) { + JSONArray rowArr = JSONArray.parseArray(rows); + if (null != rowArr && rowArr.size()>0) { + for (int i = 0; i < rowArr.size(); i++) { + JSONObject object = JSONObject.parseObject(rowArr.getString(i)); + if (object.get("accountId") != null && !object.get("accountId").equals("")) { + Long accoutId = object.getLong("accountId"); + String accountName = accountMapper.selectByPrimaryKey(accoutId).getName(); + if(accoutId.equals(accountHead.getAccountId())) { + throw new BusinessRunTimeException(ExceptionConstants.ACCOUNT_HEAD_ACCOUNT_REPEAT_CODE, + String.format(ExceptionConstants.ACCOUNT_HEAD_ACCOUNT_REPEAT_MSG, accountName)); + } + } + } + } + } + User userInfo=userService.getCurrentUser(); + accountHead.setCreator(userInfo==null?null:userInfo.getId()); + if(StringUtil.isEmpty(accountHead.getStatus())) { + accountHead.setStatus(BusinessConstants.BILLS_STATUS_UN_AUDIT); + } + accountHeadMapper.insertSelective(accountHead); + //根据单据编号查询单据id + AccountHeadExample dhExample = new AccountHeadExample(); + dhExample.createCriteria().andBillNoEqualTo(accountHead.getBillNo()).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list = accountHeadMapper.selectByExample(dhExample); + if(list!=null) { + Long headId = list.get(0).getId(); + String type = list.get(0).getType(); + /**处理单据子表信息*/ + accountItemService.saveDetials(rows, headId, type, request); + } + if("收预付款".equals(accountHead.getType())){ + //更新会员预付款 + supplierService.updateAdvanceIn(accountHead.getOrganId()); + } + String statusStr = accountHead.getStatus().equals("1")?"[审核]":""; + logService.insertLog("财务单据", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_ADD).append(accountHead.getBillNo()).append(statusStr).toString(), request); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public void updateAccountHeadAndDetail(String beanJson, String rows, HttpServletRequest request) throws Exception { + AccountHead accountHead = JSONObject.parseObject(beanJson, AccountHead.class); + //校验单号是否重复 + if(checkIsBillNoExist(accountHead.getId(), accountHead.getBillNo())>0) { + throw new BusinessRunTimeException(ExceptionConstants.ACCOUNT_HEAD_BILL_NO_EXIST_CODE, + String.format(ExceptionConstants.ACCOUNT_HEAD_BILL_NO_EXIST_MSG)); + } + accountHeadMapper.updateByPrimaryKeySelective(accountHead); + //根据单据编号查询单据id + AccountHeadExample dhExample = new AccountHeadExample(); + dhExample.createCriteria().andBillNoEqualTo(accountHead.getBillNo()).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list = accountHeadMapper.selectByExample(dhExample); + if(list!=null) { + Long headId = list.get(0).getId(); + String type = list.get(0).getType(); + /**处理单据子表信息*/ + accountItemService.saveDetials(rows, headId, type, request); + } + if("收预付款".equals(accountHead.getType())){ + //更新会员预付款 + supplierService.updateAdvanceIn(accountHead.getOrganId()); + } + String statusStr = accountHead.getStatus().equals("1")?"[审核]":""; + logService.insertLog("财务单据", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_EDIT).append(accountHead.getBillNo()).append(statusStr).toString(), request); + } + + public List getDetailByNumber(String billNo)throws Exception { + List resList = new ArrayList(); + List list = null; + try{ + list = accountHeadMapperEx.getDetailByNumber(billNo); + }catch(Exception e){ + JshException.readFail(logger, e); + } + if (null != list) { + for (AccountHeadVo4ListEx ah : list) { + if(ah.getChangeAmount() != null) { + if(BusinessConstants.TYPE_MONEY_IN.equals(ah.getType())) { + ah.setChangeAmount(ah.getChangeAmount()); + } else if(BusinessConstants.TYPE_MONEY_OUT.equals(ah.getType())) { + ah.setChangeAmount(BigDecimal.ZERO.subtract(ah.getChangeAmount())); + } else { + ah.setChangeAmount(ah.getChangeAmount().abs()); + } + } + if(ah.getTotalPrice() != null) { + if(BusinessConstants.TYPE_MONEY_IN.equals(ah.getType())) { + ah.setTotalPrice(ah.getTotalPrice()); + } else if(BusinessConstants.TYPE_MONEY_OUT.equals(ah.getType())) { + ah.setTotalPrice(BigDecimal.ZERO.subtract(ah.getTotalPrice())); + } else { + ah.setTotalPrice(ah.getTotalPrice().abs()); + } + } + if(ah.getBillTime() !=null) { + ah.setBillTimeStr(getCenternTime(ah.getBillTime())); + } + resList.add(ah); + } + } + return resList; + } + + + /** + * 根据单据id获取对应的收付款金额 + * @param billId + * @return + */ + public BigDecimal getFinancialBillPriceByBillId(Long billId) { + BigDecimal eachAmount = BigDecimal.ZERO; + if(billId!=null) { + List idList = new ArrayList<>(); + idList.add(billId); + List list = getFinancialBillPriceByBillIdList(idList); + if(list!=null && !list.isEmpty()) { + for (AccountItem accountItem : list) { + if(accountItem!=null && accountItem.getBillId()!=null) { + if(accountItem.getBillId().equals(billId)) { + eachAmount = accountItem.getEachAmount().abs(); + } + } + } + } + } + return eachAmount; + } + + public List getFinancialBillPriceByBillIdList(List idList) { + return accountHeadMapperEx.getFinancialBillPriceByBillIdList(idList); + } + + public List getFinancialBillNoByBillId(Long billId) { + return accountHeadMapperEx.getFinancialBillNoByBillId(billId); + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/service/AccountItemService.java b/smtERP-boot/src/main/java/com/reallin/smt/service/AccountItemService.java new file mode 100644 index 0000000..77dde75 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/service/AccountItemService.java @@ -0,0 +1,201 @@ +package com.reallin.smt.service; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.constants.BusinessConstants; +import com.reallin.smt.constants.ExceptionConstants; +import com.reallin.smt.datasource.entities.AccountItem; +import com.reallin.smt.datasource.entities.AccountItemExample; +import com.reallin.smt.datasource.entities.DepotHead; +import com.reallin.smt.datasource.entities.User; +import com.reallin.smt.datasource.mappers.AccountItemMapper; +import com.reallin.smt.datasource.mappers.AccountItemMapperEx; +import com.reallin.smt.datasource.vo.AccountItemVo4List; +import com.reallin.smt.exception.BusinessRunTimeException; +import com.reallin.smt.exception.JshException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +@Service +public class AccountItemService { + private Logger logger = LoggerFactory.getLogger(AccountItemService.class); + + @Resource + private AccountItemMapper accountItemMapper; + @Resource + private AccountItemMapperEx accountItemMapperEx; + @Resource + private LogService logService; + @Resource + private UserService userService; + @Resource + private DepotHeadService depotHeadService; + + public List getAccountItem()throws Exception { + AccountItemExample example = new AccountItemExample(); + example.createCriteria().andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list=null; + try{ + list=accountItemMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public List select(String name, Integer type, String remark, int offset, int rows)throws Exception { + List list=null; + try{ + list = accountItemMapperEx.selectByConditionAccountItem(name, type, remark, offset, rows); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public int checkIsNameExist(Long id, String name)throws Exception { + AccountItemExample example = new AccountItemExample(); + example.createCriteria().andIdNotEqualTo(id).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list = null; + try{ + list = accountItemMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list==null?0:list.size(); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int insertAccountItemWithObj(AccountItem accountItem)throws Exception { + int result=0; + try{ + result = accountItemMapper.insertSelective(accountItem); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int updateAccountItemWithObj(AccountItem accountItem)throws Exception { + int result=0; + try{ + result = accountItemMapper.updateByPrimaryKeySelective(accountItem); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + public List getDetailList(Long headerId) { + List list=null; + try{ + list = accountItemMapperEx.getDetailList(headerId); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public void saveDetials(String rows, Long headerId, String type, HttpServletRequest request) throws Exception { + //删除单据的明细 + deleteAccountItemHeadId(headerId); + JSONArray rowArr = JSONArray.parseArray(rows); + if (null != rowArr && rowArr.size()>0) { + List accountItemList = new ArrayList<>(); + for (int i = 0; i < rowArr.size(); i++) { + AccountItem accountItem = new AccountItem(); + JSONObject tempInsertedJson = JSONObject.parseObject(rowArr.getString(i)); + accountItem.setHeaderId(headerId); + if (tempInsertedJson.get("accountId") != null && !tempInsertedJson.get("accountId").equals("")) { + accountItem.setAccountId(tempInsertedJson.getLong("accountId")); + } + if (tempInsertedJson.get("inOutItemId") != null && !tempInsertedJson.get("inOutItemId").equals("")) { + accountItem.setInOutItemId(tempInsertedJson.getLong("inOutItemId")); + } + if (tempInsertedJson.get("billNumber") != null && !tempInsertedJson.get("billNumber").equals("")) { + String billNo = tempInsertedJson.getString("billNumber"); + accountItem.setBillId(depotHeadService.getDepotHead(billNo).getId()); + } + if (tempInsertedJson.get("needDebt") != null && !tempInsertedJson.get("needDebt").equals("")) { + accountItem.setNeedDebt(tempInsertedJson.getBigDecimal("needDebt")); + } + if (tempInsertedJson.get("finishDebt") != null && !tempInsertedJson.get("finishDebt").equals("")) { + accountItem.setFinishDebt(tempInsertedJson.getBigDecimal("finishDebt")); + } + if (tempInsertedJson.get("eachAmount") != null && !tempInsertedJson.get("eachAmount").equals("")) { + BigDecimal eachAmount = tempInsertedJson.getBigDecimal("eachAmount"); + if (type.equals("付款")) { + eachAmount = BigDecimal.ZERO.subtract(eachAmount); + } + accountItem.setEachAmount(eachAmount); + } else { + accountItem.setEachAmount(BigDecimal.ZERO); + } + accountItem.setRemark(tempInsertedJson.getString("remark")); + accountItemList.add(accountItem); + } + for (AccountItem accountItem : accountItemList) { + this.insertAccountItemWithObj(accountItem); + } + //更新业务单据的最终欠款 + for (AccountItem accountItem : accountItemList) { + if(accountItem.getBillId()!=null) { + DepotHead dh = depotHeadService.getDepotHead(accountItem.getBillId()); + if(dh!=null) { + BigDecimal debt = depotHeadService.getDebtByBill(dh); + if(debt.compareTo(BigDecimal.ZERO)!=0) { + depotHeadService.updateLastDebtByBillId(debt, accountItem.getBillId()); + } + } + } + } + } else { + throw new BusinessRunTimeException(ExceptionConstants.ACCOUNT_HEAD_ROW_FAILED_CODE, + String.format(ExceptionConstants.ACCOUNT_HEAD_ROW_FAILED_MSG)); + } + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public void deleteAccountItemHeadId(Long headerId)throws Exception { + AccountItemExample example = new AccountItemExample(); + example.createCriteria().andHeaderIdEqualTo(headerId); + try{ + accountItemMapper.deleteByExample(example); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteAccountItemByIds(String ids) throws Exception{ + logService.insertLog("财务明细", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_DELETE).append(ids).toString(), + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); + User userInfo=userService.getCurrentUser(); + String [] idArray=ids.split(","); + int result=0; + try{ + result = accountItemMapperEx.batchDeleteAccountItemByIds(new Date(),userInfo==null?null:userInfo.getId(),idArray); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + public BigDecimal getEachAmountByBillId(Long billId) { + return accountItemMapperEx.getEachAmountByBillId(billId).abs(); + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/service/AccountService.java b/smtERP-boot/src/main/java/com/reallin/smt/service/AccountService.java new file mode 100644 index 0000000..f0f9ee3 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/service/AccountService.java @@ -0,0 +1,583 @@ +package com.reallin.smt.service; + +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.base.PageDomain; +import com.reallin.smt.base.TableSupport; +import com.reallin.smt.constants.BusinessConstants; +import com.reallin.smt.constants.ExceptionConstants; +import com.reallin.smt.datasource.entities.*; +import com.reallin.smt.datasource.mappers.*; +import com.reallin.smt.datasource.vo.AccountVo4InOutList; +import com.reallin.smt.datasource.vo.AccountVo4List; +import com.reallin.smt.exception.BusinessRunTimeException; +import com.reallin.smt.exception.JshException; +import com.reallin.smt.utils.PageUtils; +import com.reallin.smt.utils.StringUtil; +import com.reallin.smt.utils.Tools; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.math.BigDecimal; +import java.text.DecimalFormat; +import java.util.*; + +@Service +public class AccountService { + private Logger logger = LoggerFactory.getLogger(AccountService.class); + + @Resource + private AccountMapper accountMapper; + + @Resource + private AccountMapperEx accountMapperEx; + + @Resource + private DepotHeadMapper depotHeadMapper; + @Resource + private DepotHeadMapperEx depotHeadMapperEx; + + @Resource + private AccountHeadMapper accountHeadMapper; + @Resource + private AccountHeadMapperEx accountHeadMapperEx; + + @Resource + private AccountItemMapper accountItemMapper; + @Resource + private AccountItemMapperEx accountItemMapperEx; + @Resource + private LogService logService; + @Resource + private UserService userService; + @Resource + private SystemConfigService systemConfigService; + + public Account getAccount(long id) throws Exception{ + return accountMapper.selectByPrimaryKey(id); + } + + public List getAccountListByIds(String ids)throws Exception { + List idList = StringUtil.strToLongList(ids); + List list = new ArrayList<>(); + try{ + AccountExample example = new AccountExample(); + example.createCriteria().andIdIn(idList); + list = accountMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public List getAccount() throws Exception{ + List list=null; + try{ + AccountExample example = new AccountExample(); + example.createCriteria().andEnabledEqualTo(true).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + example.setOrderByClause("sort asc, id desc"); + list=accountMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public List getAccountByParam(String name, String serialNo) throws Exception{ + List list=null; + try{ + list=accountMapperEx.getAccountByParam(name, serialNo); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public List select(String name, String serialNo, String remark) throws Exception{ + List list = null; + try{ + PageUtils.startPage(); + list = accountMapperEx.selectByConditionAccount(name, serialNo, remark); + String timeStr = Tools.getCurrentMonth(); + String bTime = Tools.firstDayOfMonth(timeStr) + BusinessConstants.DAY_FIRST_TIME; + String eTime = Tools.lastDayOfMonth(timeStr) + BusinessConstants.DAY_LAST_TIME; + Boolean forceFlag = systemConfigService.getForceApprovalFlag(); + Map thisMonthAccountSumMap = new HashMap<>(); + Map thisMonthAccountSumByHeadMap = new HashMap<>(); + Map thisMonthAccountSumByDetailMap = new HashMap<>(); + Map currentAccountSumMap = new HashMap<>(); + Map currentAccountSumByHeadMap = new HashMap<>(); + Map currentAccountSumByDetailMap = new HashMap<>(); + PageDomain pageDomain = TableSupport.buildPageRequest(); + int offset = (pageDomain.getCurrentPage() - 1) * pageDomain.getPageSize(); + int rows = pageDomain.getPageSize(); + List thisMonthAmountList = accountMapperEx.getAccountSumByParam(name, serialNo, bTime, eTime, forceFlag, offset, rows); + List currentAmountList = accountMapperEx.getAccountSumByParam(name, serialNo, null, null, forceFlag, offset, rows); + List thisMonthManyAmountList = accountMapperEx.getManyAccountSumByParam(bTime, eTime, forceFlag); + List currentManyAmountList = accountMapperEx.getManyAccountSumByParam(null, null, forceFlag); + for (AccountVo4Sum thisMonthAmount: thisMonthAmountList) { + thisMonthAccountSumMap.put(thisMonthAmount.getId(), thisMonthAmount.getAccountSum()); + thisMonthAccountSumByHeadMap.put(thisMonthAmount.getId(), thisMonthAmount.getAccountSumByHead()); + thisMonthAccountSumByDetailMap.put(thisMonthAmount.getId(), thisMonthAmount.getAccountSumByDetail()); + } + for (AccountVo4Sum currentAmount: currentAmountList) { + currentAccountSumMap.put(currentAmount.getId(), currentAmount.getAccountSum()); + currentAccountSumByHeadMap.put(currentAmount.getId(), currentAmount.getAccountSumByHead()); + currentAccountSumByDetailMap.put(currentAmount.getId(), currentAmount.getAccountSumByDetail()); + } + if (null != list) { + for (AccountVo4List al : list) { + DecimalFormat df = new DecimalFormat(".##"); + BigDecimal thisMonthAmount = thisMonthAccountSumMap.get(al.getId()) + .add(thisMonthAccountSumByHeadMap.get(al.getId())) + .add(thisMonthAccountSumByDetailMap.get(al.getId())) + .add(getManyAccountSumParse(al.getId(), thisMonthManyAmountList)); + String thisMonthAmountFmt = "0"; + if ((thisMonthAmount.compareTo(BigDecimal.ZERO))!=0) { + thisMonthAmountFmt = df.format(thisMonthAmount); + } + al.setThisMonthAmount(thisMonthAmountFmt); //本月发生额 + BigDecimal currentAmount = currentAccountSumMap.get(al.getId()) + .add(currentAccountSumByHeadMap.get(al.getId())) + .add(currentAccountSumByDetailMap.get(al.getId())) + .add(getManyAccountSumParse(al.getId(), currentManyAmountList)) + .add(al.getInitialAmount()) ; + al.setCurrentAmount(currentAmount); + } + } + } catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int insertAccount(JSONObject obj, HttpServletRequest request)throws Exception { + Account account = JSONObject.parseObject(obj.toJSONString(), Account.class); + if(account.getInitialAmount() == null) { + account.setInitialAmount(BigDecimal.ZERO); + } + List accountList = getAccountByParam(null, null); + if(accountList.size() == 0) { + account.setIsDefault(true); + } else { + account.setIsDefault(false); + } + account.setEnabled(true); + int result=0; + try{ + result = accountMapper.insertSelective(account); + logService.insertLog("账户", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_ADD).append(account.getName()).toString(), request); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int updateAccount(JSONObject obj, HttpServletRequest request)throws Exception { + Account account = JSONObject.parseObject(obj.toJSONString(), Account.class); + int result=0; + try{ + result = accountMapper.updateByPrimaryKeySelective(account); + logService.insertLog("账户", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_EDIT).append(account.getName()).toString(), request); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int deleteAccount(Long id, HttpServletRequest request) throws Exception{ + return batchDeleteAccountByIds(id.toString()); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteAccount(String ids, HttpServletRequest request)throws Exception { + return batchDeleteAccountByIds(ids); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteAccountByIds(String ids) throws Exception{ + int result=0; + String [] idArray=ids.split(","); + //校验财务主表 tbl_accounthead + List accountHeadList=null; + try{ + accountHeadList = accountHeadMapperEx.getAccountHeadListByAccountIds(idArray); + }catch(Exception e){ + JshException.readFail(logger, e); + } + if(accountHeadList!=null&&accountHeadList.size()>0){ + logger.error("异常码[{}],异常提示[{}],参数,AccountIds[{}]", + ExceptionConstants.DELETE_FORCE_CONFIRM_CODE,ExceptionConstants.DELETE_FORCE_CONFIRM_MSG,ids); + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, + ExceptionConstants.DELETE_FORCE_CONFIRM_MSG); + } + //校验财务子表 tbl_accountitem + List accountItemList=null; + try{ + accountItemList = accountItemMapperEx.getAccountItemListByAccountIds(idArray); + }catch(Exception e){ + JshException.readFail(logger, e); + } + if(accountItemList!=null&&accountItemList.size()>0){ + logger.error("异常码[{}],异常提示[{}],参数,AccountIds[{}]", + ExceptionConstants.DELETE_FORCE_CONFIRM_CODE,ExceptionConstants.DELETE_FORCE_CONFIRM_MSG,ids); + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, + ExceptionConstants.DELETE_FORCE_CONFIRM_MSG); + } + //校验单据主表 tbl_depot_head + List depotHeadList =null; + try{ + depotHeadList = depotHeadMapperEx.getDepotHeadListByAccountIds(idArray); + }catch(Exception e){ + JshException.readFail(logger, e); + } + if(depotHeadList!=null&&depotHeadList.size()>0){ + logger.error("异常码[{}],异常提示[{}],参数,AccountIds[{}]", + ExceptionConstants.DELETE_FORCE_CONFIRM_CODE,ExceptionConstants.DELETE_FORCE_CONFIRM_MSG,ids); + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, + ExceptionConstants.DELETE_FORCE_CONFIRM_MSG); + } + //记录日志 + StringBuffer sb = new StringBuffer(); + sb.append(BusinessConstants.LOG_OPERATION_TYPE_DELETE); + List list = getAccountListByIds(ids); + for(Account account: list){ + sb.append("[").append(account.getName()).append("]"); + } + logService.insertLog("账户", sb.toString(), + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); + User userInfo=userService.getCurrentUser(); + //校验通过执行删除操作 + try{ + result = accountMapperEx.batchDeleteAccountByIds(new Date(),userInfo==null?null:userInfo.getId(),idArray); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + public int checkIsNameExist(Long id, String name)throws Exception { + AccountExample example = new AccountExample(); + example.createCriteria().andIdNotEqualTo(id).andNameEqualTo(name).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list=null; + try{ + list = accountMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list==null?0:list.size(); + } + + public List findBySelect()throws Exception { + AccountExample example = new AccountExample(); + example.createCriteria().andEnabledEqualTo(true).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + example.setOrderByClause("sort asc, id desc"); + List list=null; + try{ + list = accountMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + /** + * 单个账户的金额求和-入库和出库 + * @return + */ + public BigDecimal getAccountSum(Long accountId, String beginTime, String endTime, Boolean forceFlag) { + return accountMapperEx.getAccountSum(accountId, beginTime, endTime, forceFlag); + } + + /** + * 单个账户的金额求和-收入、支出、转账的单据表头的合计 + * @return + */ + public BigDecimal getAccountSumByHead(Long accountId, String beginTime, String endTime, Boolean forceFlag) { + return accountMapperEx.getAccountSumByHead(accountId, beginTime, endTime, forceFlag); + } + + /** + * 单个账户的金额求和-收款、付款、转账、收预付款的单据明细的合计 + * @return + */ + public BigDecimal getAccountSumByDetail(Long accountId, String beginTime, String endTime, Boolean forceFlag) { + return accountMapperEx.getAccountSumByDetail(accountId, beginTime, endTime, forceFlag); + } + + /** + * 单个账户的金额求和-多账户的明细合计 + * @return + */ + public BigDecimal getManyAccountSum(Long accountId, String beginTime, String endTime, Boolean forceFlag) { + BigDecimal accountSum = BigDecimal.ZERO; + List dataList = accountMapperEx.getManyAccountSum(accountId, beginTime, endTime, forceFlag); + if (dataList != null) { + for (DepotHead depotHead : dataList) { + if(depotHead != null) { + String accountIdList = depotHead.getAccountIdList(); + String accountMoneyList = depotHead.getAccountMoneyList(); + if(StringUtil.isNotEmpty(accountIdList) && StringUtil.isNotEmpty(accountMoneyList)) { + String[] aList = accountIdList.split(","); + String[] amList = accountMoneyList.split(","); + for (int i = 0; i < aList.length; i++) { + if (aList[i].equals(accountId.toString())) { + if(amList.length>0) { + accountSum = accountSum.add(new BigDecimal(amList[i])); + } + } + } + } + } + } + } + return accountSum; + } + + /** + * 单个账户的金额求和-多账户的明细合计(格式化) + * @return + */ + public BigDecimal getManyAccountSumParse(Long accountId, List manyAmountList) { + BigDecimal accountSum = BigDecimal.ZERO; + if (manyAmountList != null) { + for (DepotHead depotHead : manyAmountList) { + String accountIdList = depotHead.getAccountIdList(); + String accountMoneyList = depotHead.getAccountMoneyList(); + if(StringUtil.isNotEmpty(accountIdList) && StringUtil.isNotEmpty(accountMoneyList)) { + String[] aList = accountIdList.split(","); + String[] amList = accountMoneyList.split(","); + for (int i = 0; i < aList.length; i++) { + if (aList[i].equals(accountId.toString())) { + if(amList.length>0) { + accountSum = accountSum.add(new BigDecimal(amList[i])); + } + } + } + } + } + } + return accountSum; + } + + public List findAccountInOutList(Long accountId, String number, String beginTime, String endTime, + Boolean forceFlag, Integer offset, Integer rows) throws Exception{ + List list=null; + try{ + list = accountMapperEx.findAccountInOutList(accountId, number, beginTime, endTime, forceFlag, offset, rows); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public int findAccountInOutListCount(Long accountId, String number, String beginTime, String endTime, Boolean forceFlag) throws Exception{ + int result=0; + try{ + result = accountMapperEx.findAccountInOutListCount(accountId, number, beginTime, endTime, forceFlag); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int updateIsDefault(Long accountId) throws Exception{ + int result=0; + try{ + //全部取消默认 + Account allAccount = new Account(); + allAccount.setIsDefault(false); + AccountExample allExample = new AccountExample(); + allExample.createCriteria(); + accountMapper.updateByExampleSelective(allAccount, allExample); + //给指定账户设为默认 + Account account = new Account(); + account.setIsDefault(true); + AccountExample example = new AccountExample(); + example.createCriteria().andIdEqualTo(accountId); + accountMapper.updateByExampleSelective(account, example); + logService.insertLog("账户",BusinessConstants.LOG_OPERATION_TYPE_EDIT+accountId, + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); + result = 1; + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + public Map getAccountMap() throws Exception { + List accountList = getAccount(); + Map accountMap = new HashMap<>(); + for(Account account : accountList){ + accountMap.put(account.getId(), account.getName()); + } + return accountMap; + } + + public String getAccountStrByIdAndMoney(Map accountMap, String accountIdList, String accountMoneyList){ + StringBuffer sb = new StringBuffer(); + List idList = StringUtil.strToLongList(accountIdList); + List moneyList = StringUtil.strToBigDecimalList(accountMoneyList); + for (int i = 0; i < idList.size(); i++) { + Long id = idList.get(i); + BigDecimal money = moneyList.get(i).abs(); + sb.append(accountMap.get(id) + "(" + money + "元) "); + } + return sb.toString(); + } + + public List listWithBalance(String name, String serialNo) throws Exception { + List list = null; + try{ + PageUtils.startPage(); + list = accountMapperEx.selectByConditionAccount(name, serialNo, null); + String timeStr = Tools.getCurrentMonth(); + String bTime = Tools.firstDayOfMonth(timeStr) + BusinessConstants.DAY_FIRST_TIME; + String eTime = Tools.lastDayOfMonth(timeStr) + BusinessConstants.DAY_LAST_TIME; + Boolean forceFlag = systemConfigService.getForceApprovalFlag(); + Map thisMonthAccountSumMap = new HashMap<>(); + Map thisMonthAccountSumByHeadMap = new HashMap<>(); + Map thisMonthAccountSumByDetailMap = new HashMap<>(); + Map currentAccountSumMap = new HashMap<>(); + Map currentAccountSumByHeadMap = new HashMap<>(); + Map currentAccountSumByDetailMap = new HashMap<>(); + PageDomain pageDomain = TableSupport.buildPageRequest(); + int offset = (pageDomain.getCurrentPage() - 1) * pageDomain.getPageSize(); + int rows = pageDomain.getPageSize(); + List thisMonthAmountList = accountMapperEx.getAccountSumByParam(name, serialNo, bTime, eTime, forceFlag, offset, rows); + List currentAmountList = accountMapperEx.getAccountSumByParam(name, serialNo, null, null, forceFlag, offset, rows); + List thisMonthManyAmountList = accountMapperEx.getManyAccountSumByParam(bTime, eTime, forceFlag); + List currentManyAmountList = accountMapperEx.getManyAccountSumByParam(null, null, forceFlag); + for (AccountVo4Sum thisMonthAmount: thisMonthAmountList) { + thisMonthAccountSumMap.put(thisMonthAmount.getId(), thisMonthAmount.getAccountSum()); + thisMonthAccountSumByHeadMap.put(thisMonthAmount.getId(), thisMonthAmount.getAccountSumByHead()); + thisMonthAccountSumByDetailMap.put(thisMonthAmount.getId(), thisMonthAmount.getAccountSumByDetail()); + } + for (AccountVo4Sum currentAmount: currentAmountList) { + currentAccountSumMap.put(currentAmount.getId(), currentAmount.getAccountSum()); + currentAccountSumByHeadMap.put(currentAmount.getId(), currentAmount.getAccountSumByHead()); + currentAccountSumByDetailMap.put(currentAmount.getId(), currentAmount.getAccountSumByDetail()); + } + if (null != list) { + for (AccountVo4List al : list) { + DecimalFormat df = new DecimalFormat(".##"); + BigDecimal thisMonthAmount = thisMonthAccountSumMap.get(al.getId()) + .add(thisMonthAccountSumByHeadMap.get(al.getId())) + .add(thisMonthAccountSumByDetailMap.get(al.getId())) + .add(getManyAccountSumParse(al.getId(), thisMonthManyAmountList)); + String thisMonthAmountFmt = "0"; + if ((thisMonthAmount.compareTo(BigDecimal.ZERO))!=0) { + thisMonthAmountFmt = df.format(thisMonthAmount); + } + al.setThisMonthAmount(thisMonthAmountFmt); //本月发生额 + BigDecimal currentAmount = currentAccountSumMap.get(al.getId()) + .add(currentAccountSumByHeadMap.get(al.getId())) + .add(currentAccountSumByDetailMap.get(al.getId())) + .add(getManyAccountSumParse(al.getId(), currentManyAmountList)) + .add(al.getInitialAmount()); + al.setCurrentAmount(currentAmount); + } + } + } catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public Map getStatistics(String name, String serialNo) { + Map map = new HashMap<>(); + try { + List list = getAccountByParam(name, serialNo); + String timeStr = Tools.getCurrentMonth(); + String bTime = Tools.firstDayOfMonth(timeStr) + BusinessConstants.DAY_FIRST_TIME; + String eTime = Tools.lastDayOfMonth(timeStr) + BusinessConstants.DAY_LAST_TIME; + BigDecimal allMonthAmount = BigDecimal.ZERO; + BigDecimal allCurrentAmount = BigDecimal.ZERO; + Boolean forceFlag = systemConfigService.getForceApprovalFlag(); + Map thisMonthAccountSumMap = new HashMap<>(); + Map thisMonthAccountSumByHeadMap = new HashMap<>(); + Map thisMonthAccountSumByDetailMap = new HashMap<>(); + Map currentAccountSumMap = new HashMap<>(); + Map currentAccountSumByHeadMap = new HashMap<>(); + Map currentAccountSumByDetailMap = new HashMap<>(); + List thisMonthAmountList = accountMapperEx.getAccountSumByParam(name, serialNo, bTime, eTime, forceFlag, null, null); + List currentAmountList = accountMapperEx.getAccountSumByParam(name, serialNo, null, null, forceFlag, null, null); + List thisMonthManyAmountList = accountMapperEx.getManyAccountSumByParam(bTime, eTime, forceFlag); + List currentManyAmountList = accountMapperEx.getManyAccountSumByParam(null, null, forceFlag); + for (AccountVo4Sum thisMonthAmount: thisMonthAmountList) { + thisMonthAccountSumMap.put(thisMonthAmount.getId(), thisMonthAmount.getAccountSum()); + thisMonthAccountSumByHeadMap.put(thisMonthAmount.getId(), thisMonthAmount.getAccountSumByHead()); + thisMonthAccountSumByDetailMap.put(thisMonthAmount.getId(), thisMonthAmount.getAccountSumByDetail()); + } + for (AccountVo4Sum currentAmount: currentAmountList) { + currentAccountSumMap.put(currentAmount.getId(), currentAmount.getAccountSum()); + currentAccountSumByHeadMap.put(currentAmount.getId(), currentAmount.getAccountSumByHead()); + currentAccountSumByDetailMap.put(currentAmount.getId(), currentAmount.getAccountSumByDetail()); + } + if (null != list) { + for (Account a : list) { + BigDecimal monthAmount = thisMonthAccountSumMap.get(a.getId()) + .add(thisMonthAccountSumByHeadMap.get(a.getId())) + .add(thisMonthAccountSumByDetailMap.get(a.getId())) + .add(getManyAccountSumParse(a.getId(), thisMonthManyAmountList)); + BigDecimal currentAmount = currentAccountSumMap.get(a.getId()) + .add(currentAccountSumByHeadMap.get(a.getId())) + .add(currentAccountSumByDetailMap.get(a.getId())) + .add(getManyAccountSumParse(a.getId(), currentManyAmountList)) + .add(a.getInitialAmount()); + allMonthAmount = allMonthAmount.add(monthAmount); + allCurrentAmount = allCurrentAmount.add(currentAmount); + } + } + map.put("allMonthAmount", priceFormat(allMonthAmount)); //本月发生额 + map.put("allCurrentAmount", priceFormat(allCurrentAmount)); //当前总金额 + } catch (Exception e) { + JshException.readFail(logger, e); + } + return map; + } + + /** + * 价格格式化 + * @param price + * @return + */ + private String priceFormat(BigDecimal price) { + String priceFmt = "0"; + DecimalFormat df = new DecimalFormat(".##"); + if ((price.compareTo(BigDecimal.ZERO))!=0) { + priceFmt = df.format(price); + } + return priceFmt; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchSetStatus(Boolean status, String ids)throws Exception { + logService.insertLog("账户", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_ENABLED).toString(), + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); + List accountIds = StringUtil.strToLongList(ids); + Account account = new Account(); + account.setEnabled(status); + AccountExample example = new AccountExample(); + example.createCriteria().andIdIn(accountIds); + int result=0; + try{ + result = accountMapper.updateByExampleSelective(account, example); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/service/AssetManagementService.java b/smtERP-boot/src/main/java/com/reallin/smt/service/AssetManagementService.java new file mode 100644 index 0000000..a06938b --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/service/AssetManagementService.java @@ -0,0 +1,628 @@ +package com.reallin.smt.service; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.constants.ExceptionConstants; +import com.reallin.smt.datasource.entities.Asset; +import com.reallin.smt.datasource.entities.AssetCategory; +import com.reallin.smt.datasource.entities.AssetDevice; +import com.reallin.smt.datasource.entities.AssetInventory; +import com.reallin.smt.datasource.entities.AssetInventoryDetail; +import com.reallin.smt.datasource.entities.User; +import com.reallin.smt.datasource.mappers.AssetManagementMapper; +import com.reallin.smt.datasource.vo.InventoryOperatorOption; +import com.reallin.smt.exception.BusinessRunTimeException; +import com.reallin.smt.utils.PageUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.math.BigDecimal; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashSet; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.ThreadLocalRandom; + +/** + * 资产管理业务。盘点单创建时固化台账快照,确保历史盘点结果可追溯。 + */ +@Service +public class AssetManagementService { + public static final String STATUS_DRAFT = "DRAFT"; + public static final String STATUS_ACCEPTED = "ACCEPTED"; + public static final String STATUS_IN_PROGRESS = "IN_PROGRESS"; + public static final String STATUS_PENDING_AUDIT = "PENDING_AUDIT"; + public static final String STATUS_COMPLETED = "COMPLETED"; + public static final String STATUS_CLOSED = "CLOSED"; + + @Resource + private AssetManagementMapper mapper; + @Resource + private UserService userService; + @Resource + private LogService logService; + + private User currentUser() throws Exception { + User user = userService.getCurrentUser(); + if (user == null) { + throw businessError("无法获取当前用户信息"); + } + return user; + } + + public List listAssets(String keyword, Long categoryId, String status) throws Exception { + currentUser(); + PageUtils.startPage(); + return mapper.selectAssets(keyword, categoryId, status); + } + + public Map assetDashboard() throws Exception { + currentUser(); + Map data = new HashMap<>(); + data.put("summary", mapper.selectAssetDashboardSummary()); + data.put("categoryDistribution", mapper.selectAssetCategoryDistribution()); + data.put("statusDistribution", mapper.selectAssetStatusDistribution()); + data.put("departmentDistribution", mapper.selectAssetDepartmentDistribution()); + data.put("deviceCategoryDistribution", mapper.selectDeviceCategoryDistribution()); + data.put("recentInventories", mapper.selectRecentAssetInventories()); + data.put("updatedAt", new Date()); + return data; + } + + public List assetOptions() throws Exception { + currentUser(); + return mapper.selectAssets(null, null, null); + } + + public List assetCategoryOptions() throws Exception { + currentUser(); + return mapper.selectAssetCategories(null, true); + } + + public List listAssetCategories(String keyword) throws Exception { + currentUser(); + return mapper.selectAssetCategories(keyword, null); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int saveAssetCategory(JSONObject json) throws Exception { + User user = currentUser(); + AssetCategory record = json.toJavaObject(AssetCategory.class); + require(record.getCategoryCode(), "种类编码不能为空"); + require(record.getCategoryName(), "种类名称不能为空"); + record.setCategoryCode(record.getCategoryCode().trim().toUpperCase(Locale.ROOT)); + record.setCategoryName(record.getCategoryName().trim()); + if (mapper.countAssetCategoryCode(record.getCategoryCode(), record.getId()) > 0) { + throw businessError("种类编码已存在"); + } + if (mapper.countAssetCategoryName(record.getCategoryName(), record.getId()) > 0) { + throw businessError("种类名称已存在"); + } + if (record.getSort() == null) record.setSort(100); + if (record.getEnabled() == null) record.setEnabled(true); + record.setUpdater(user.getId()); + if (record.getId() == null) { + record.setCreator(user.getId()); + return mapper.insertAssetCategory(record); + } + if (mapper.selectAssetCategoryById(record.getId()) == null) throw businessError("资产种类不存在"); + return mapper.updateAssetCategory(record); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int deleteAssetCategory(Long id) throws Exception { + User user = currentUser(); + AssetCategory category = mapper.selectAssetCategoryById(id); + if (category == null) throw businessError("资产种类不存在"); + if (mapper.countAssetsByCategory(id) > 0) throw businessError("该种类下仍有资产,不能删除"); + return mapper.deleteAssetCategory(id, user.getId()); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int saveAsset(JSONObject json) throws Exception { + User user = currentUser(); + Asset record = json.toJavaObject(Asset.class); + require(record.getAssetCode(), "资产编号不能为空"); + require(record.getAssetName(), "资产名称不能为空"); + if (record.getCategoryId() == null) throw businessError("请选择资产种类"); + AssetCategory category = mapper.selectAssetCategoryById(record.getCategoryId()); + if (category == null || !Boolean.TRUE.equals(category.getEnabled())) { + throw businessError("选择的资产种类不存在或已停用"); + } + if (mapper.countAssetCode(record.getAssetCode().trim(), record.getId()) > 0) { + throw businessError("资产编号已存在"); + } + record.setAssetCode(record.getAssetCode().trim()); + record.setAssetCategory(category.getCategoryName()); + record.setUpdater(user.getId()); + if (record.getQuantity() == null) record.setQuantity(BigDecimal.ONE); + if (record.getOriginalValue() == null) record.setOriginalValue(BigDecimal.ZERO); + if (isBlank(record.getUnit())) record.setUnit("项"); + if (isBlank(record.getStatus())) record.setStatus("IN_USE"); + int result; + if (record.getId() == null) { + record.setCreator(user.getId()); + if (isBlank(record.getSource())) record.setSource("MANUAL"); + result = mapper.insertAsset(record); + } else { + ensureAsset(record.getId()); + result = mapper.updateAsset(record); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int deleteAsset(Long id) throws Exception { + User user = currentUser(); + ensureAsset(id); + if (mapper.countLinkedDevices(id) > 0) throw businessError("该资产仍关联设备,不能删除"); + if (mapper.countOpenInventoryTarget("ASSET", id) > 0) throw businessError("该资产存在未关结的盘点任务,不能删除"); + int result = mapper.deleteAsset(id, user.getId()); + logService.insertLog("资产台账", "删除资产[" + id + "]", currentRequest()); + return result; + } + + public List listDevices(String keyword, String category, String status) throws Exception { + currentUser(); + PageUtils.startPage(); + return mapper.selectDevices(keyword, category, status); + } + + public List deviceOptions() throws Exception { + currentUser(); + return mapper.selectDeviceOptions(); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int saveDevice(JSONObject json) throws Exception { + User user = currentUser(); + AssetDevice record = json.toJavaObject(AssetDevice.class); + require(record.getDeviceCode(), "设备编号不能为空"); + require(record.getDeviceName(), "设备名称不能为空"); + if (mapper.countDeviceCode(record.getDeviceCode().trim(), record.getId()) > 0) { + throw businessError("设备编号已存在"); + } + if (record.getAssetId() != null) ensureAsset(record.getAssetId()); + record.setDeviceCode(record.getDeviceCode().trim()); + record.setUpdater(user.getId()); + if (isBlank(record.getStatus())) record.setStatus("IN_USE"); + if (record.getId() == null) { + record.setCreator(user.getId()); + return mapper.insertDevice(record); + } + ensureDevice(record.getId()); + return mapper.updateDevice(record); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int deleteDevice(Long id) throws Exception { + User user = currentUser(); + ensureDevice(id); + if (mapper.countOpenInventoryTarget("DEVICE", id) > 0) throw businessError("该设备存在未关结的盘点任务,不能删除"); + int result = mapper.deleteDevice(id, user.getId()); + logService.insertLog("设备台账", "删除设备[" + id + "]", currentRequest()); + return result; + } + + public List listInventories(String keyword, String status, String scopeType, + String plannedStart, String plannedEnd, + Long inventoryUserId) throws Exception { + currentUser(); + PageUtils.startPage(); + return mapper.selectInventories(keyword, status, scopeType, plannedStart, plannedEnd, + inventoryUserId); + } + + public List inventoryOperatorOptions() throws Exception { + currentUser(); + return mapper.selectInventoryOperators(); + } + + public List listInventoryDetails(Long inventoryId, String detailStatus, + String keyword) throws Exception { + currentUser(); + ensureInventory(inventoryId); + PageUtils.startPage(); + List details = mapper.selectInventoryDetails(inventoryId, detailStatus, keyword); + Map> images = new HashMap<>(); + for (Map row : mapper.selectInventoryDetailImages(inventoryId)) { + Long detailId = safeLong(firstValue(row, "detailId", "DETAILID", "detail_id")); + Object path = firstValue(row, "filePath", "FILEPATH", "file_path"); + if (detailId != null && path != null && !isBlank(path.toString())) { + images.computeIfAbsent(detailId, key -> new ArrayList<>()) + .add("/apis/systemConfig/static/" + path.toString().replace('\\', '/')); + } + } + for (AssetInventoryDetail detail : details) { + detail.setImageUrls(images.getOrDefault(detail.getId(), java.util.Collections.emptyList())); + if ("SURPLUS".equals(detail.getInventoryStatus()) || "SHORTAGE".equals(detail.getInventoryStatus())) { + detail.setInventoryStatus("ABNORMAL"); + } + } + return details; + } + + /** + * 创建盘点单及快照。externalRequestId 用于协同服务重试幂等。 + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public AssetInventory createInventory(JSONObject json, String defaultSource) throws Exception { + User user = currentUser(); + AssetInventory input = json == null ? new AssetInventory() : json.toJavaObject(AssetInventory.class); + if (isBlank(input.getExternalRequestId()) == false) { + AssetInventory existing = mapper.selectInventoryByExternalRequestId(input.getExternalRequestId()); + if (existing != null) return existing; + } + boolean specifiedTargets = json != null && (json.containsKey("assetIds") || json.containsKey("deviceIds")); + Set assetIds = idSet(json, "assetIds"); + Set deviceIds = idSet(json, "deviceIds"); + if (specifiedTargets && assetIds.isEmpty() && deviceIds.isEmpty()) { + throw businessError("请至少选择一项资产或设备"); + } + String scope = specifiedTargets ? selectedScope(assetIds, deviceIds) : normalizeScope(input.getScopeType()); + List assets = ("ASSET".equals(scope) || "ALL".equals(scope)) + ? mapper.selectAssets(null, null, null) : java.util.Collections.emptyList(); + List devices = ("DEVICE".equals(scope) || "ALL".equals(scope)) + ? mapper.selectDeviceOptions() : java.util.Collections.emptyList(); + if (specifiedTargets) { + assets.removeIf(asset -> !assetIds.contains(asset.getId())); + devices.removeIf(device -> !deviceIds.contains(device.getId())); + if (assets.size() != assetIds.size() || devices.size() != deviceIds.size()) { + throw businessError("选择的资产或设备不存在或已停用"); + } + } + if (assets.isEmpty() && devices.isEmpty()) { + throw businessError("无可创建盘点任务的台账数据,请先维护资产或设备信息"); + } + Date now = new Date(); + Date plannedAt = input.getPlannedAt() == null ? now : input.getPlannedAt(); + Date deadline = input.getDeadline(); + InventoryOperatorOption inventoryOperator = null; + if ("MANUAL".equals(defaultSource)) { + require(input.getPlanName(), "请输入计划名称"); + if (input.getPlannedAt() == null || deadline == null) { + throw businessError("请选择计划开始时间和计划结束时间"); + } + if (!plannedAt.before(deadline)) throw businessError("计划结束时间必须晚于计划开始时间"); + if (input.getInventoryUserId() == null) throw businessError("请选择盘点操作人员"); + } else if (deadline == null) { + deadline = new Date(plannedAt.getTime() + 7L * 24 * 60 * 60 * 1000); + } + if (input.getInventoryUserId() != null) { + inventoryOperator = mapper.selectInventoryOperatorById(input.getInventoryUserId()); + if (inventoryOperator == null) { + throw businessError("\u9009\u62e9\u7684\u76d8\u70b9\u8d26\u53f7\u4e0d\u5b58\u5728\u6216\u5df2\u5220\u9664"); + } + } + AssetInventory inventory = new AssetInventory(); + inventory.setInventoryNo(nextInventoryNo()); + inventory.setPlanName(isBlank(input.getPlanName()) ? "资产盘点-" + new SimpleDateFormat("yyyyMMdd").format(now) : input.getPlanName()); + inventory.setScopeType(scope); + inventory.setPlannedAt(plannedAt); + inventory.setDeadline(deadline); + inventory.setStatus(STATUS_DRAFT); + inventory.setTotalCount(assets.size() + devices.size()); + inventory.setInventoriedCount(0); + inventory.setNormalCount(0); + inventory.setAbnormalCount(0); + inventory.setInventoryUserId(inventoryOperator == null ? null : inventoryOperator.getId()); + inventory.setInventoryUserName(inventoryOperator == null ? "待分配" : inventoryOperator.getName()); + inventory.setSource(isBlank(input.getSource()) ? defaultSource : input.getSource()); + inventory.setExternalRequestId(input.getExternalRequestId()); + inventory.setRemark(input.getRemark()); + inventory.setCreator(user.getId()); + mapper.insertInventory(inventory); + for (Asset asset : assets) mapper.insertInventoryDetail(toDetail(inventory, asset)); + for (AssetDevice device : devices) mapper.insertInventoryDetail(toDetail(inventory, device)); + logService.insertLog("资产盘点", "创建盘点单[" + inventory.getInventoryNo() + "]", currentRequest()); + return inventory; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public AssetInventory startInventory(Long id) throws Exception { + User user = currentUser(); + AssetInventory inventory = ensureInventory(id); + if (!STATUS_DRAFT.equals(inventory.getStatus()) && !STATUS_ACCEPTED.equals(inventory.getStatus())) { + throw businessError("只有草稿或待盘点状态的盘点单可以开始盘点"); + } + inventory.setStatus(STATUS_IN_PROGRESS); + inventory.setStartedAt(new Date()); + inventory.setUpdater(user.getId()); + mapper.updateInventory(inventory); + return inventory; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public AssetInventory recordInventory(JSONObject json) throws Exception { + User user = currentUser(); + Long inventoryId = json.getLong("inventoryId"); + Long detailId = json.getLong("id"); + String targetCode = json.getString("targetCode"); + AssetInventory inventory = ensureInventory(inventoryId); + if (STATUS_DRAFT.equals(inventory.getStatus()) || STATUS_ACCEPTED.equals(inventory.getStatus())) { + inventory.setStatus(STATUS_IN_PROGRESS); + inventory.setStartedAt(new Date()); + inventory.setUpdater(user.getId()); + mapper.updateInventory(inventory); + } + if (!STATUS_IN_PROGRESS.equals(inventory.getStatus())) throw businessError("当前盘点单不能继续盘点"); + AssetInventoryDetail detail = mapper.selectInventoryDetail(detailId, inventoryId, targetCode); + if (detail == null) throw businessError("盘点明细不存在或编码不属于当前盘点单"); + detail.setActualQuantity(json.getBigDecimal("actualQuantity") == null ? detail.getBookQuantity() : json.getBigDecimal("actualQuantity")); + detail.setActualDepartment(isBlank(json.getString("actualDepartment")) ? detail.getBookDepartment() : json.getString("actualDepartment")); + detail.setActualLocation(isBlank(json.getString("actualLocation")) ? detail.getBookLocation() : json.getString("actualLocation")); + detail.setRemark(json.getString("remark")); + detail.setInventoryStatus(resolveDetailStatus(json.getString("inventoryStatus"), detail)); + detail.setInventoryTime(new Date()); + detail.setInventoryUserId(user.getId()); + detail.setInventoryUserName(user.getUsername()); + mapper.updateInventoryDetail(detail); + if ("DEVICE".equals(detail.getTargetType())) mapper.updateDeviceInventoryTime(detail.getTargetId()); + refreshInventoryCounters(inventory, user.getId()); + return mapper.selectInventoryById(inventoryId); + } + + /** + * 接收外部盘点服务的单项回传,同时兼容原设备项目的字段名称。 + * 同一明细重复回传时直接返回当前盘点单,避免重复计数。 + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public AssetInventory recordInventoryFromCollaboration(JSONObject json) throws Exception { + User user = currentUser(); + JSONObject input = json == null ? new JSONObject() : json; + Long inventoryId = safeLong(input.get("inventoryId")); + AssetInventory inventory = inventoryId == null ? null : mapper.selectInventoryById(inventoryId); + if (inventory == null) { + String inventoryNo = firstNotBlank(input.getString("inventoryNo"), input.getString("inventoryDoc")); + if (!isBlank(inventoryNo)) inventory = mapper.selectInventoryByNo(inventoryNo); + } + if (inventory == null) throw businessError("盘点单不存在,请传入有效的 inventoryId 或 inventoryNo"); + + Long detailId = safeLong(input.get("detailId")); + if (detailId == null) detailId = safeLong(input.get("id")); + String targetCode = firstNotBlank(input.getString("targetCode"), input.getString("deviceSn"), + input.getString("deviceCode"), input.getString("assetCode")); + if (detailId == null && isBlank(targetCode)) { + throw businessError("请传入 detailId 或资产/设备编码"); + } + AssetInventoryDetail detail = mapper.selectInventoryDetail(detailId, inventory.getId(), targetCode); + if (detail == null) throw businessError("盘点明细不存在,请传入有效的 detailId 或资产/设备编码"); + if (!"PENDING".equals(detail.getInventoryStatus())) { + return mapper.selectInventoryById(inventory.getId()); + } + + JSONObject record = new JSONObject(); + record.put("inventoryId", inventory.getId()); + record.put("id", detail.getId()); + record.put("targetCode", detail.getTargetCode()); + record.put("actualQuantity", input.getBigDecimal("actualQuantity") == null + ? detail.getBookQuantity() : input.getBigDecimal("actualQuantity")); + record.put("actualDepartment", firstNotBlank(input.getString("actualDepartment"), input.getString("useDept"))); + record.put("actualLocation", firstNotBlank(input.getString("actualLocation"), input.getString("usePlace"))); + record.put("inventoryStatus", collaborationDetailStatus(input.getString("inventoryStatus"))); + record.put("remark", input.getString("remark")); + return recordInventory(record); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public AssetInventory submitInventory(Long id) throws Exception { + User user = currentUser(); + AssetInventory inventory = ensureInventory(id); + if (!STATUS_IN_PROGRESS.equals(inventory.getStatus())) throw businessError("只有盘点中单据可以提审"); + refreshInventoryCounters(inventory, user.getId()); + inventory = mapper.selectInventoryById(id); + if (inventory.getInventoriedCount() == null || !inventory.getInventoriedCount().equals(inventory.getTotalCount())) { + throw businessError("仍有未盘点明细,不能提审"); + } + inventory.setStatus(STATUS_PENDING_AUDIT); + inventory.setCompletedAt(new Date()); + inventory.setUpdater(user.getId()); + mapper.updateInventory(inventory); + return inventory; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public AssetInventory auditInventory(Long id, boolean approved, String remark) throws Exception { + User user = currentUser(); + AssetInventory inventory = ensureInventory(id); + if (!STATUS_PENDING_AUDIT.equals(inventory.getStatus())) throw businessError("只有待审核盘点单可以审核"); + inventory.setStatus(approved ? STATUS_COMPLETED : STATUS_IN_PROGRESS); + inventory.setAuditUserId(user.getId()); + inventory.setAuditTime(new Date()); + inventory.setRemark(isBlank(remark) ? inventory.getRemark() : remark); + inventory.setUpdater(user.getId()); + mapper.updateInventory(inventory); + return inventory; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public AssetInventory closeInventory(Long id) throws Exception { + User user = currentUser(); + AssetInventory inventory = ensureInventory(id); + if (STATUS_CLOSED.equals(inventory.getStatus())) return inventory; + inventory.setStatus(STATUS_CLOSED); + inventory.setUpdater(user.getId()); + mapper.updateInventory(inventory); + return inventory; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int deleteInventory(Long id) throws Exception { + User user = currentUser(); + AssetInventory inventory = ensureInventory(id); + if (!STATUS_DRAFT.equals(inventory.getStatus())) throw businessError("只能删除草稿状态的盘点单"); + return mapper.deleteInventory(id, user.getId()); + } + + private void refreshInventoryCounters(AssetInventory inventory, Long userId) { + Map counts = mapper.countInventoryDetails(inventory.getId()); + inventory.setTotalCount(number(counts, "totalCount", "TOTALCOUNT")); + inventory.setInventoriedCount(number(counts, "inventoriedCount", "INVENTORIEDCOUNT")); + inventory.setNormalCount(number(counts, "normalCount", "NORMALCOUNT")); + inventory.setAbnormalCount(number(counts, "abnormalCount", "ABNORMALCOUNT")); + inventory.setUpdater(userId); + mapper.updateInventory(inventory); + } + + private AssetInventoryDetail toDetail(AssetInventory inventory, Asset asset) { + AssetInventoryDetail detail = baseDetail(inventory); + detail.setTargetType("ASSET"); + detail.setTargetId(asset.getId()); + detail.setTargetCode(asset.getAssetCode()); + detail.setTargetName(asset.getAssetName()); + detail.setModel(asset.getSpecification()); + detail.setBookQuantity(asset.getQuantity() == null ? BigDecimal.ONE : asset.getQuantity()); + detail.setBookDepartment(asset.getUseDepartment()); + detail.setBookLocation(asset.getLocation()); + return detail; + } + + private AssetInventoryDetail toDetail(AssetInventory inventory, AssetDevice device) { + AssetInventoryDetail detail = baseDetail(inventory); + detail.setTargetType("DEVICE"); + detail.setTargetId(device.getId()); + detail.setTargetCode(device.getDeviceCode()); + detail.setTargetName(device.getDeviceName()); + detail.setModel(device.getModel()); + detail.setBookQuantity(BigDecimal.ONE); + detail.setBookDepartment(device.getUseDepartment()); + detail.setBookLocation(device.getLocation()); + return detail; + } + + private AssetInventoryDetail baseDetail(AssetInventory inventory) { + AssetInventoryDetail detail = new AssetInventoryDetail(); + detail.setInventoryId(inventory.getId()); + detail.setInventoryStatus("PENDING"); + detail.setActualQuantity(BigDecimal.ZERO); + return detail; + } + + private String resolveDetailStatus(String requested, AssetInventoryDetail detail) { + if (!isBlank(requested) && ("NORMAL".equals(requested) || "INVENTORIED".equals(requested) + || "ABNORMAL".equals(requested))) return requested; + int compared = detail.getActualQuantity().compareTo(detail.getBookQuantity()); + if (compared != 0) return "ABNORMAL"; + boolean placeChanged = !same(detail.getBookLocation(), detail.getActualLocation()) + || !same(detail.getBookDepartment(), detail.getActualDepartment()); + return placeChanged ? "ABNORMAL" : "NORMAL"; + } + + private Asset ensureAsset(Long id) { + Asset record = mapper.selectAssetById(id); + if (record == null) throw businessError("资产不存在"); + return record; + } + + private AssetDevice ensureDevice(Long id) { + AssetDevice record = mapper.selectDeviceById(id); + if (record == null) throw businessError("设备不存在"); + return record; + } + + private AssetInventory ensureInventory(Long id) { + if (id == null) throw businessError("盘点单ID不能为空"); + AssetInventory record = mapper.selectInventoryById(id); + if (record == null) throw businessError("盘点单不存在"); + return record; + } + + private String nextInventoryNo() { + return "PD" + new SimpleDateFormat("yyyyMMddHHmmss", Locale.CHINA).format(new Date()) + + String.format("%03d", ThreadLocalRandom.current().nextInt(1000)); + } + + private static String normalizeScope(String value) { + if ("ASSET".equalsIgnoreCase(value)) return "ASSET"; + if ("ALL".equalsIgnoreCase(value)) return "ALL"; + return "DEVICE"; + } + + private static Set idSet(JSONObject json, String key) { + Set result = new HashSet<>(); + if (json == null) return result; + JSONArray values = json.getJSONArray(key); + if (values == null) return result; + for (Object value : values) { + if (value != null) result.add(Long.valueOf(value.toString())); + } + return result; + } + + private static String selectedScope(Set assetIds, Set deviceIds) { + if (!assetIds.isEmpty() && !deviceIds.isEmpty()) return "ALL"; + return assetIds.isEmpty() ? "DEVICE" : "ASSET"; + } + + private static String collaborationDetailStatus(String value) { + if ("NORMAL".equalsIgnoreCase(value) || "ABNORMAL".equalsIgnoreCase(value)) { + return value.toUpperCase(Locale.ROOT); + } + if ("SURPLUS".equalsIgnoreCase(value) || "SHORTAGE".equalsIgnoreCase(value)) return "ABNORMAL"; + return "INVENTORIED"; + } + + private static Object firstValue(Map row, String... keys) { + for (String key : keys) { + if (row.containsKey(key)) return row.get(key); + } + return null; + } + + private static Long safeLong(Object value) { + if (value == null || isBlank(value.toString())) return null; + try { + return Long.valueOf(value.toString()); + } catch (NumberFormatException ignored) { + return null; + } + } + + private static String firstNotBlank(String... values) { + if (values != null) for (String value : values) { + if (!isBlank(value)) return value; + } + return null; + } + + private static int number(Map map, String... keys) { + if (map != null) for (String key : keys) { + Object value = map.get(key); + if (value instanceof Number) return ((Number) value).intValue(); + if (value != null) return Integer.parseInt(value.toString()); + } + return 0; + } + + private static void require(String value, String message) { + if (isBlank(value)) throw businessError(message); + } + + private static boolean isBlank(String value) { + return value == null || value.trim().isEmpty(); + } + + private static boolean same(String first, String second) { + String left = first == null ? "" : first.trim(); + String right = second == null ? "" : second.trim(); + return left.equals(right); + } + + private static BusinessRunTimeException businessError(String message) { + return new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, message); + } + + private static HttpServletRequest currentRequest() { + ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); + return attributes == null ? null : attributes.getRequest(); + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/service/CustomerCategoryService.java b/smtERP-boot/src/main/java/com/reallin/smt/service/CustomerCategoryService.java new file mode 100644 index 0000000..8e53272 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/service/CustomerCategoryService.java @@ -0,0 +1,132 @@ +package com.reallin.smt.service; + +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.constants.BusinessConstants; +import com.reallin.smt.datasource.entities.CustomerCategory; +import com.reallin.smt.datasource.entities.User; +import com.reallin.smt.datasource.mappers.CustomerCategoryMapper; +import com.reallin.smt.datasource.mappers.CustomerCategoryMapperEx; +import com.reallin.smt.exception.JshException; +import com.reallin.smt.utils.PageUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +@Service +public class CustomerCategoryService { + private Logger logger = LoggerFactory.getLogger(CustomerCategoryService.class); + + @Resource + private CustomerCategoryMapper customerCategoryMapper; + + @Resource + private CustomerCategoryMapperEx customerCategoryMapperEx; + + @Resource + private LogService logService; + + @Resource + private UserService userService; + + public CustomerCategory getCustomerCategory(Long id) throws Exception { + CustomerCategory result = null; + try { + result = customerCategoryMapper.selectByPrimaryKey(id); + } catch (Exception e) { + JshException.readFail(logger, e); + } + return result; + } + + public List select(String categoryName, Long parentId) throws Exception { + List list = new ArrayList<>(); + try { + PageUtils.startPage(); + list = customerCategoryMapperEx.selectByCondition(categoryName, parentId); + } catch (Exception e) { + JshException.readFail(logger, e); + } + return list; + } + + public List getTreeList() throws Exception { + List list = new ArrayList<>(); + try { + list = customerCategoryMapperEx.getTreeList(); + } catch (Exception e) { + JshException.readFail(logger, e); + } + return list; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int insertCustomerCategory(JSONObject obj, HttpServletRequest request) throws Exception { + CustomerCategory category = JSONObject.parseObject(obj.toJSONString(), CustomerCategory.class); + int result = 0; + try { + category.setEnabled(true); + User userInfo = userService.getCurrentUser(); + category.setCreator(userInfo == null ? null : userInfo.getId()); + result = customerCategoryMapper.insertSelective(category); + logService.insertLog("客户分类", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_ADD).append(category.getCategoryName()).toString(), request); + } catch (Exception e) { + JshException.writeFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int updateCustomerCategory(JSONObject obj, HttpServletRequest request) throws Exception { + CustomerCategory category = JSONObject.parseObject(obj.toJSONString(), CustomerCategory.class); + int result = 0; + try { + result = customerCategoryMapper.updateByPrimaryKeySelective(category); + logService.insertLog("客户分类", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_EDIT).append(category.getCategoryName()).toString(), request); + } catch (Exception e) { + JshException.writeFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int deleteCustomerCategory(Long id, HttpServletRequest request) throws Exception { + return batchDeleteByIds(id.toString(), request); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteByIds(String ids, HttpServletRequest request) throws Exception { + int result = 0; + String[] idArray = ids.split(","); + + // 记录日志 + StringBuffer sb = new StringBuffer(); + sb.append(BusinessConstants.LOG_OPERATION_TYPE_DELETE); + for (String idStr : idArray) { + CustomerCategory category = getCustomerCategory(Long.parseLong(idStr)); + if (category != null) { + sb.append("[").append(category.getCategoryName()).append("]"); + } + } + logService.insertLog("客户分类", sb.toString(), + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); + + User userInfo = userService.getCurrentUser(); + try { + result = customerCategoryMapperEx.batchDeleteByIds(new Date(), userInfo == null ? null : userInfo.getId(), idArray); + } catch (Exception e) { + JshException.writeFail(logger, e); + } + return result; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/service/CustomerContactService.java b/smtERP-boot/src/main/java/com/reallin/smt/service/CustomerContactService.java new file mode 100644 index 0000000..7c88cac --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/service/CustomerContactService.java @@ -0,0 +1,144 @@ +package com.reallin.smt.service; + +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.constants.BusinessConstants; +import com.reallin.smt.datasource.entities.CustomerContact; +import com.reallin.smt.datasource.entities.User; +import com.reallin.smt.datasource.mappers.CustomerContactMapper; +import com.reallin.smt.datasource.mappers.CustomerContactMapperEx; +import com.reallin.smt.exception.JshException; +import com.reallin.smt.utils.PageUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +@Service +public class CustomerContactService { + private Logger logger = LoggerFactory.getLogger(CustomerContactService.class); + + @Resource + private CustomerContactMapper customerContactMapper; + + @Resource + private CustomerContactMapperEx customerContactMapperEx; + + @Resource + private LogService logService; + + @Resource + private UserService userService; + + public CustomerContact getCustomerContact(Long id) throws Exception { + CustomerContact result = null; + try { + result = customerContactMapper.selectByPrimaryKey(id); + } catch (Exception e) { + JshException.readFail(logger, e); + } + return result; + } + + public List selectByCustomerId(Long customerId) throws Exception { + List list = new ArrayList<>(); + try { + list = customerContactMapper.selectByCustomerId(customerId); + } catch (Exception e) { + JshException.readFail(logger, e); + } + return list; + } + + public List select(Long customerId, String contactName) throws Exception { + List list = new ArrayList<>(); + try { + PageUtils.startPage(); + list = customerContactMapperEx.selectByCondition(customerId, contactName); + } catch (Exception e) { + JshException.readFail(logger, e); + } + return list; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int insertCustomerContact(JSONObject obj, HttpServletRequest request) throws Exception { + CustomerContact contact = JSONObject.parseObject(obj.toJSONString(), CustomerContact.class); + int result = 0; + try { + User userInfo = userService.getCurrentUser(); + contact.setCreator(userInfo == null ? null : userInfo.getId()); + result = customerContactMapper.insertSelective(contact); + logService.insertLog("客户联系人", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_ADD).append(contact.getContactName()).toString(), request); + } catch (Exception e) { + JshException.writeFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int updateCustomerContact(JSONObject obj, HttpServletRequest request) throws Exception { + CustomerContact contact = JSONObject.parseObject(obj.toJSONString(), CustomerContact.class); + int result = 0; + try { + result = customerContactMapper.updateByPrimaryKeySelective(contact); + logService.insertLog("客户联系人", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_EDIT).append(contact.getContactName()).toString(), request); + } catch (Exception e) { + JshException.writeFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int deleteCustomerContact(Long id, HttpServletRequest request) throws Exception { + return batchDeleteByIds(id.toString(), request); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteByIds(String ids, HttpServletRequest request) throws Exception { + int result = 0; + String[] idArray = ids.split(","); + + // 记录日志 + StringBuffer sb = new StringBuffer(); + sb.append(BusinessConstants.LOG_OPERATION_TYPE_DELETE); + for (String idStr : idArray) { + CustomerContact contact = getCustomerContact(Long.parseLong(idStr)); + if (contact != null) { + sb.append("[").append(contact.getContactName()).append("]"); + } + } + logService.insertLog("客户联系人", sb.toString(), + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); + + User userInfo = userService.getCurrentUser(); + try { + result = customerContactMapperEx.batchDeleteByIds(new Date(), userInfo == null ? null : userInfo.getId(), idArray); + } catch (Exception e) { + JshException.writeFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int deleteByCustomerId(Long customerId, HttpServletRequest request) throws Exception { + int result = 0; + try { + result = customerContactMapperEx.deleteByCustomerId(customerId); + logService.insertLog("客户联系人", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_DELETE).append("[批量删除]").toString(), request); + } catch (Exception e) { + JshException.writeFail(logger, e); + } + return result; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/service/DashboardService.java b/smtERP-boot/src/main/java/com/reallin/smt/service/DashboardService.java new file mode 100644 index 0000000..8374549 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/service/DashboardService.java @@ -0,0 +1,189 @@ +package com.reallin.smt.service; + +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +@Service +public class DashboardService { + @Resource + private JdbcTemplate jdbcTemplate; + public Map getOperationOverview() { + // SMT 当前为单公司部署,首页看板按全库业务数据统计,不按租户过滤。 + Long tenantId = null; + Map result = new LinkedHashMap<>(); + + Map headquartersInbound = depotSummary("总部入库", "1", tenantId, true); + Map purchaseInbound = depotSummary("采购", "1", tenantId, false); + Map saleOrder = depotSummary("销售订单", "1','2','3", tenantId, false); + Map shipment = shipmentSummary(tenantId); + + result.put("headquartersInbound", headquartersInbound); + result.put("purchaseInbound", purchaseInbound); + result.put("saleOrder", saleOrder); + result.put("shipment", shipment); + result.put("topProducts", topProducts(tenantId)); + result.put("monthlyTrend", monthlyTrend(tenantId)); + result.put("recentDocuments", recentDocuments(tenantId)); + return result; + } + + private Map depotSummary(String subType, String statuses, Long tenantId, boolean headquarters) { + String quantityExpression = headquarters ? "abs(i.qty)" : "abs(i.oper_number)"; + String itemTable = headquarters ? "tbl_headquarters_inbound_item" : "tbl_depot_item"; + String sql = "select count(distinct h.id) documentCount, coalesce(sum(" + quantityExpression + "),0) quantity, " + + "coalesce(sum(abs(h.total_price)),0) amount, max(h.oper_time) latestTime " + + "from tbl_depot_head h join " + itemTable + " i on i.header_id=h.id and ifnull(i.delete_flag,'0')<>'1' " + + "where h.sub_type=? and h.status in ('" + statuses + "') and ifnull(h.delete_flag,'0')<>'1'"; + List args = new ArrayList<>(); + args.add(subType); + if (tenantId != null) { + sql += " and h.tenant_id=?"; + args.add(tenantId); + } + return jdbcTemplate.queryForMap(sql, args.toArray()); + } + + private Map shipmentSummary(Long tenantId) { + String sql = "select count(distinct s.id) documentCount, coalesce(sum(abs(i.actual_quantity)),0) quantity, " + + "max(s.ship_time) latestTime from tbl_sale_shipment s join tbl_sale_shipment_item i " + + "on i.shipment_id=s.id and ifnull(i.delete_flag,'0')<>'1' " + + "where s.status in ('2','3') and ifnull(s.delete_flag,'0')<>'1'"; + List args = new ArrayList<>(); + if (tenantId != null) { + sql += " and s.tenant_id=?"; + args.add(tenantId); + } + return jdbcTemplate.queryForMap(sql, args.toArray()); + } + + private List> topProducts(Long tenantId) { + String sql = "select coalesce(nullif(i.material_name,''),'未命名商品') materialName, " + + "coalesce(nullif(i.model,''),nullif(i.standard,''),'—') specification, " + + "coalesce(sum(abs(i.actual_quantity)),0) quantity, count(distinct s.id) shipmentCount " + + "from tbl_sale_shipment s join tbl_sale_shipment_item i on i.shipment_id=s.id " + + "where s.status in ('2','3') and ifnull(s.delete_flag,'0')<>'1' and ifnull(i.delete_flag,'0')<>'1'"; + List args = new ArrayList<>(); + if (tenantId != null) { + sql += " and s.tenant_id=?"; + args.add(tenantId); + } + sql += " group by i.material_name, i.model, i.standard order by quantity desc limit 10"; + return jdbcTemplate.queryForList(sql, args.toArray()); + } + + private List> monthlyTrend(Long tenantId) { + Calendar calendar = Calendar.getInstance(); + calendar.set(Calendar.DAY_OF_MONTH, 1); + calendar.add(Calendar.MONTH, -5); + SimpleDateFormat keyFormat = new SimpleDateFormat("yyyy-MM"); + Map> months = new LinkedHashMap<>(); + for (int index = 0; index < 6; index++) { + String month = keyFormat.format(calendar.getTime()); + Map row = new LinkedHashMap<>(); + row.put("month", month); + row.put("inbound", 0); + row.put("ordered", 0); + row.put("shipped", 0); + months.put(month, row); + calendar.add(Calendar.MONTH, 1); + } + + mergeDepotMonthly(months, "总部入库", "1", "inbound", tenantId, true); + mergeDepotMonthly(months, "采购", "1", "inbound", tenantId, false); + mergeDepotMonthly(months, "销售订单", "1','2','3", "ordered", tenantId, false); + + String shipmentSql = "select date_format(s.ship_time,'%Y-%m') month, coalesce(sum(abs(i.actual_quantity)),0) value " + + "from tbl_sale_shipment s join tbl_sale_shipment_item i on i.shipment_id=s.id " + + "where s.status in ('2','3') and s.ship_time>=date_sub(date_format(curdate(),'%Y-%m-01'), interval 5 month) " + + "and ifnull(s.delete_flag,'0')<>'1' and ifnull(i.delete_flag,'0')<>'1'"; + List args = new ArrayList<>(); + if (tenantId != null) { + shipmentSql += " and s.tenant_id=?"; + args.add(tenantId); + } + shipmentSql += " group by date_format(s.ship_time,'%Y-%m')"; + mergeRows(months, jdbcTemplate.queryForList(shipmentSql, args.toArray()), "shipped", false); + return new ArrayList<>(months.values()); + } + + private void mergeDepotMonthly(Map> months, String subType, String statuses, + String field, Long tenantId, boolean headquarters) { + String itemTable = headquarters ? "tbl_headquarters_inbound_item" : "tbl_depot_item"; + String quantity = headquarters ? "i.qty" : "i.oper_number"; + String sql = "select date_format(h.oper_time,'%Y-%m') month, coalesce(sum(abs(" + quantity + ")),0) value " + + "from tbl_depot_head h join " + itemTable + " i on i.header_id=h.id " + + "where h.sub_type=? and h.status in ('" + statuses + "') " + + "and h.oper_time>=date_sub(date_format(curdate(),'%Y-%m-01'), interval 5 month) " + + "and ifnull(h.delete_flag,'0')<>'1' and ifnull(i.delete_flag,'0')<>'1'"; + List args = new ArrayList<>(); + args.add(subType); + if (tenantId != null) { + sql += " and h.tenant_id=?"; + args.add(tenantId); + } + sql += " group by date_format(h.oper_time,'%Y-%m')"; + mergeRows(months, jdbcTemplate.queryForList(sql, args.toArray()), field, true); + } + + private void mergeRows(Map> months, List> rows, + String field, boolean add) { + for (Map source : rows) { + Map target = months.get(String.valueOf(source.get("month"))); + if (target == null) { + continue; + } + double value = ((Number) source.get("value")).doubleValue(); + if (add && target.get(field) instanceof Number) { + value += ((Number) target.get(field)).doubleValue(); + } + target.put(field, value); + } + } + + private List> recentDocuments(Long tenantId) { + List> rows = new ArrayList<>(); + addRecentDepot(rows, "总部入库", "总部入库", "1", tenantId); + addRecentDepot(rows, "采购入库", "采购", "1", tenantId); + addRecentDepot(rows, "销售订单", "销售订单", "1','2','3", tenantId); + + String sql = "select '实际发货' stage, s.shipment_number number, s.ship_time operTime, " + + "coalesce(sum(abs(i.actual_quantity)),0) quantity, s.status status from tbl_sale_shipment s " + + "join tbl_sale_shipment_item i on i.shipment_id=s.id where s.status in ('2','3') " + + "and ifnull(s.delete_flag,'0')<>'1' and ifnull(i.delete_flag,'0')<>'1'"; + List args = new ArrayList<>(); + if (tenantId != null) { + sql += " and s.tenant_id=?"; + args.add(tenantId); + } + sql += " group by s.id, s.shipment_number, s.ship_time, s.status order by s.ship_time desc limit 3"; + rows.addAll(jdbcTemplate.queryForList(sql, args.toArray())); + rows.sort((left, right) -> String.valueOf(right.get("operTime")).compareTo(String.valueOf(left.get("operTime")))); + return rows.size() > 8 ? new ArrayList<>(rows.subList(0, 8)) : rows; + } + + private void addRecentDepot(List> rows, String stage, String subType, + String statuses, Long tenantId) { + String itemTable = "总部入库".equals(subType) ? "tbl_headquarters_inbound_item" : "tbl_depot_item"; + String quantity = "总部入库".equals(subType) ? "i.qty" : "i.oper_number"; + String sql = "select '" + stage + "' stage, h.number, h.oper_time operTime, " + + "coalesce(sum(abs(" + quantity + ")),0) quantity, h.status from tbl_depot_head h " + + "join " + itemTable + " i on i.header_id=h.id where h.sub_type=? and h.status in ('" + statuses + "') " + + "and ifnull(h.delete_flag,'0')<>'1' and ifnull(i.delete_flag,'0')<>'1'"; + List args = new ArrayList<>(); + args.add(subType); + if (tenantId != null) { + sql += " and h.tenant_id=?"; + args.add(tenantId); + } + sql += " group by h.id, h.number, h.oper_time, h.status order by h.oper_time desc limit 3"; + rows.addAll(jdbcTemplate.queryForList(sql, args.toArray())); + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/service/DeliveryPlanService.java b/smtERP-boot/src/main/java/com/reallin/smt/service/DeliveryPlanService.java new file mode 100644 index 0000000..3db9218 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/service/DeliveryPlanService.java @@ -0,0 +1,316 @@ +package com.reallin.smt.service; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.constants.BusinessConstants; +import com.reallin.smt.constants.ExceptionConstants; +import com.reallin.smt.datasource.entities.DeliveryPlan; +import com.reallin.smt.datasource.entities.DeliveryPlanItem; +import com.reallin.smt.datasource.entities.DepotHead; +import com.reallin.smt.datasource.entities.User; +import com.reallin.smt.datasource.mappers.DeliveryPlanMapper; +import com.reallin.smt.datasource.vo.DeliveryPlanVo4List; +import com.reallin.smt.exception.BusinessRunTimeException; +import com.reallin.smt.utils.PageUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; + +@Service +public class DeliveryPlanService { + + public static final String STATUS_WAIT_SHIPMENT = "0"; + public static final String STATUS_PART_SHIPMENT = "1"; + public static final String STATUS_FINISHED = "2"; + + @Resource + private DeliveryPlanMapper deliveryPlanMapper; + @Resource + private DepotHeadService depotHeadService; + @Resource + private SequenceService sequenceService; + @Resource + private UserService userService; + @Resource + private LogService logService; + + public List select(String planNumber, String sourceBillNumber, String saleOrderNumber, + String sourceType, String status, String beginTime, String endTime) { + PageUtils.startPage(); + return deliveryPlanMapper.selectList(planNumber, sourceBillNumber, saleOrderNumber, sourceType, status, + beginTime, endTime); + } + + public JSONObject getDetail(Long id) { + DeliveryPlan plan = getExistingPlan(id); + JSONObject obj = new JSONObject(); + obj.put("info", plan); + obj.put("rows", deliveryPlanMapper.selectItemsByPlanId(id)); + return obj; + } + + public List getSourceItems(Long sourceBillId) { + DepotHead sourceBill = getValidSourceBill(sourceBillId); + List sourceItems = deliveryPlanMapper.selectBillItemsForPlan(sourceBill.getId()); + List rows = new ArrayList<>(); + for (DeliveryPlanItem item : sourceItems) { + BigDecimal remaining = safe(item.getPlanQuantity()) + .subtract(safe(deliveryPlanMapper.getPlannedQuantityBySourceItemId(item.getSourceItemId(), null))); + if (remaining.compareTo(BigDecimal.ZERO) > 0) { + item.setPlanQuantity(remaining); + item.setShippedQuantity(BigDecimal.ZERO); + rows.add(item); + } + } + return rows; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int createFromSourceBill(JSONObject obj, HttpServletRequest request) throws Exception { + Long sourceBillId = obj.getLong("sourceBillId"); + DepotHead sourceBill = getValidSourceBill(sourceBillId); + User user = userService.getCurrentUser(); + + DeliveryPlan plan = new DeliveryPlan(); + plan.setPlanNumber("JH" + sequenceService.buildOnlyNumber()); + plan.setSourceType(getSourceType(sourceBill)); + plan.setSourceBillId(sourceBill.getId()); + plan.setSourceBillNumber(sourceBill.getNumber()); + plan.setSaleOrderNumber(sourceBill.getLinkNumber()); + plan.setCustomerId(sourceBill.getOrganId()); + plan.setStatus(STATUS_WAIT_SHIPMENT); + plan.setPlannedDeliveryTime(obj.getDate("plannedDeliveryTime")); + plan.setAdjustReason(obj.getString("adjustReason")); + plan.setRemark(obj.getString("remark")); + plan.setCreateTime(new Date()); + plan.setCreator(user == null ? null : user.getId()); + plan.setTenantId(sourceBill.getTenantId()); + plan.setDeleteFlag("0"); + deliveryPlanMapper.insertSelective(plan); + + List sourceItems = deliveryPlanMapper.selectBillItemsForPlan(sourceBill.getId()); + Map sourceMap = sourceItems.stream() + .collect(Collectors.toMap(DeliveryPlanItem::getSourceItemId, item -> item, (a, b) -> a)); + List rows = parseItems(obj.getJSONArray("rows"), sourceMap, plan.getId(), null); + if (rows.isEmpty()) { + for (DeliveryPlanItem source : sourceItems) { + BigDecimal remaining = safe(source.getPlanQuantity()) + .subtract(safe(deliveryPlanMapper.getPlannedQuantityBySourceItemId(source.getSourceItemId(), null))); + if (remaining.compareTo(BigDecimal.ZERO) > 0) { + rows.add(buildPlanItem(source, plan.getId(), remaining)); + } + } + } + if (rows.isEmpty()) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "该出库单没有可编制交货计划的数量"); + } + deliveryPlanMapper.batchInsertItems(rows); + logService.insertLog("交货计划管理", "新增交货计划[" + plan.getPlanNumber() + "]", request); + return 1; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchCreateFromSourceBill(JSONObject obj, HttpServletRequest request) throws Exception { + JSONArray ids = obj.getJSONArray("sourceBillIds"); + if (ids == null || ids.isEmpty()) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "请选择需要转交货计划的出库单"); + } + int count = 0; + for (int i = 0; i < ids.size(); i++) { + JSONObject item = new JSONObject(); + item.put("sourceBillId", ids.getLong(i)); + item.put("remark", obj.getString("remark")); + createFromSourceBill(item, request); + count++; + } + return count; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int adjustPlan(JSONObject obj, HttpServletRequest request) throws Exception { + DeliveryPlan old = getExistingPlan(obj.getLong("id")); + if (STATUS_FINISHED.equals(old.getStatus())) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "已完成的交货计划不能调整"); + } + Date plannedDeliveryTime = obj.getDate("plannedDeliveryTime"); + if (plannedDeliveryTime == null) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "计划交货时间不能为空"); + } + String adjustReason = obj.getString("adjustReason"); + if (adjustReason == null || adjustReason.trim().isEmpty()) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "调整原因不能为空"); + } + JSONArray requestRows = obj.getJSONArray("rows"); + if (requestRows == null || requestRows.isEmpty()) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "交货计划明细不能为空"); + } + DeliveryPlan update = new DeliveryPlan(); + update.setId(old.getId()); + update.setPlannedDeliveryTime(plannedDeliveryTime); + update.setAdjustReason(adjustReason.trim()); + update.setRemark(obj.getString("remark")); + deliveryPlanMapper.updateByPrimaryKeySelective(update); + + if (!requestRows.isEmpty()) { + List currentItems = deliveryPlanMapper.selectItemsByPlanId(old.getId()); + Map currentMap = currentItems.stream() + .collect(Collectors.toMap(DeliveryPlanItem::getSourceItemId, item -> item, (a, b) -> a)); + List sourceItems = deliveryPlanMapper.selectBillItemsForPlan(old.getSourceBillId()); + Map sourceMap = sourceItems.stream() + .collect(Collectors.toMap(DeliveryPlanItem::getSourceItemId, item -> item, (a, b) -> a)); + for (int i = 0; i < requestRows.size(); i++) { + JSONObject row = requestRows.getJSONObject(i); + Long sourceItemId = row.getLong("sourceItemId"); + DeliveryPlanItem current = currentMap.get(sourceItemId); + DeliveryPlanItem source = sourceMap.get(sourceItemId); + if (current == null || source == null) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, + "交货计划明细来源不能为空"); + } + BigDecimal planQuantity = row.getBigDecimal("planQuantity"); + if (planQuantity == null || planQuantity.compareTo(BigDecimal.ZERO) <= 0) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, + source.getMaterialName() + " 计划数量必须大于0"); + } + BigDecimal committedQuantity = safe(deliveryPlanMapper.getCommittedQuantityByPlanItemId(current.getId())); + if (planQuantity.compareTo(committedQuantity) < 0) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, + source.getMaterialName() + " 计划数量不能小于已创建发货通知/已发货数量 " + committedQuantity); + } + BigDecimal otherPlanQuantity = safe(deliveryPlanMapper + .getPlannedQuantityBySourceItemId(sourceItemId, old.getId())); + BigDecimal maxQuantity = safe(source.getPlanQuantity()).subtract(otherPlanQuantity); + if (planQuantity.compareTo(maxQuantity) > 0) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, + source.getMaterialName() + " 累计计划数量不能大于销售出库数量 " + source.getPlanQuantity()); + } + deliveryPlanMapper.updateItemPlanQuantity(current.getId(), planQuantity, row.getString("remark")); + } + } + logService.insertLog("交货计划管理", "调整交货计划[" + old.getPlanNumber() + "]", request); + return 1; + } + + public DeliveryPlan getExistingPlan(Long id) { + if (id == null) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "交货计划不存在"); + } + DeliveryPlan plan = deliveryPlanMapper.selectByPrimaryKey(id); + if (plan == null || "1".equals(plan.getDeleteFlag())) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "交货计划不存在"); + } + return plan; + } + + public void refreshPlanStatus(Long planId) { + List rows = deliveryPlanMapper.selectItemsByPlanId(planId); + boolean hasShipped = false; + boolean allFinished = true; + for (DeliveryPlanItem row : rows) { + BigDecimal shipped = safe(deliveryPlanMapper.getShippedQuantityByPlanItemId(row.getId())); + if (shipped.compareTo(BigDecimal.ZERO) > 0) { + hasShipped = true; + } + if (shipped.compareTo(safe(row.getPlanQuantity())) < 0) { + allFinished = false; + } + } + DeliveryPlan update = new DeliveryPlan(); + update.setId(planId); + update.setStatus(allFinished ? STATUS_FINISHED : (hasShipped ? STATUS_PART_SHIPMENT : STATUS_WAIT_SHIPMENT)); + deliveryPlanMapper.updateByPrimaryKeySelective(update); + } + + private DepotHead getValidSourceBill(Long sourceBillId) { + if (sourceBillId == null) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "请选择出库单"); + } + DepotHead sourceBill; + try { + sourceBill = depotHeadService.getDepotHead(sourceBillId); + } catch (Exception e) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "出库单不存在"); + } + if (sourceBill == null || "1".equals(sourceBill.getDeleteFlag())) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "出库单不存在"); + } + if (!BusinessConstants.DEPOTHEAD_TYPE_OUT.equals(sourceBill.getType()) + || (!BusinessConstants.SUB_TYPE_SALES.equals(sourceBill.getSubType()) + && !BusinessConstants.SUB_TYPE_RETAIL.equals(sourceBill.getSubType()))) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "只能针对销售出库或零售出库编制交货计划"); + } + if (!isApprovedSourceStatus(sourceBill.getStatus())) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "只有已审核出库单才能编制交货计划"); + } + return sourceBill; + } + + private boolean isApprovedSourceStatus(String status) { + return "1".equals(status) || "2".equals(status) || "3".equals(status); + } + + private String getSourceType(DepotHead sourceBill) { + return BusinessConstants.SUB_TYPE_RETAIL.equals(sourceBill.getSubType()) ? "retail" : "sale"; + } + + private List parseItems(JSONArray arr, Map sourceMap, + Long planId, Long excludePlanId) { + List rows = new ArrayList<>(); + if (arr == null || arr.isEmpty()) { + return rows; + } + for (int i = 0; i < arr.size(); i++) { + JSONObject row = arr.getJSONObject(i); + Long sourceItemId = row.getLong("sourceItemId"); + DeliveryPlanItem source = sourceMap.get(sourceItemId); + if (source == null) { + continue; + } + BigDecimal planQuantity = row.getBigDecimal("planQuantity"); + BigDecimal remaining = safe(source.getPlanQuantity()) + .subtract(safe(deliveryPlanMapper.getPlannedQuantityBySourceItemId(sourceItemId, excludePlanId))); + if (planQuantity == null || planQuantity.compareTo(BigDecimal.ZERO) <= 0) { + continue; + } + if (planQuantity.compareTo(remaining) > 0) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, + source.getMaterialName() + " 计划数量不能大于剩余可计划数量 " + remaining); + } + DeliveryPlanItem item = buildPlanItem(source, planId, planQuantity); + item.setRemark(row.getString("remark")); + rows.add(item); + } + return rows; + } + + private DeliveryPlanItem buildPlanItem(DeliveryPlanItem source, Long planId, BigDecimal planQuantity) { + DeliveryPlanItem item = new DeliveryPlanItem(); + item.setPlanId(planId); + item.setSourceItemId(source.getSourceItemId()); + item.setMaterialId(source.getMaterialId()); + item.setMaterialExtendId(source.getMaterialExtendId()); + item.setBarCode(source.getBarCode()); + item.setMaterialName(source.getMaterialName()); + item.setStandard(source.getStandard()); + item.setModel(source.getModel()); + item.setUnit(source.getUnit()); + item.setBatchNumber(source.getBatchNumber()); + item.setSnList(source.getSnList()); + item.setPlanQuantity(safe(planQuantity)); + item.setShippedQuantity(BigDecimal.ZERO); + item.setDepotId(source.getDepotId()); + item.setRemark(source.getRemark()); + item.setTenantId(source.getTenantId()); + item.setDeleteFlag("0"); + return item; + } + + private BigDecimal safe(BigDecimal value) { + return value == null ? BigDecimal.ZERO : value; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/service/DepotHeadService.java b/smtERP-boot/src/main/java/com/reallin/smt/service/DepotHeadService.java new file mode 100644 index 0000000..122abc3 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/service/DepotHeadService.java @@ -0,0 +1,2014 @@ +package com.reallin.smt.service; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.constants.BusinessConstants; +import com.reallin.smt.constants.ExceptionConstants; +import com.reallin.smt.datasource.entities.*; +import com.reallin.smt.datasource.mappers.DepotHeadMapper; +import com.reallin.smt.datasource.mappers.DepotHeadMapperEx; +import com.reallin.smt.datasource.mappers.DepotItemMapperEx; +import com.reallin.smt.datasource.vo.*; +import com.reallin.smt.exception.BusinessRunTimeException; +import com.reallin.smt.exception.JshException; +import com.reallin.smt.utils.ExcelUtils; +import com.reallin.smt.utils.PageUtils; +import com.reallin.smt.utils.StringUtil; +import com.reallin.smt.utils.Tools; +import jxl.Workbook; +import jxl.write.WritableWorkbook; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.math.BigDecimal; +import java.sql.Timestamp; +import java.util.*; +import java.util.stream.Collectors; + +import static com.reallin.smt.utils.Tools.getCenternTime; +import static com.reallin.smt.utils.Tools.getNow3; + +@Service +public class DepotHeadService { + private Logger logger = LoggerFactory.getLogger(DepotHeadService.class); + + @Resource + private DepotHeadMapper depotHeadMapper; + @Resource + private DepotHeadMapperEx depotHeadMapperEx; + @Resource + private UserService userService; + @Resource + private RoleService roleService; + @Resource + private DepotService depotService; + @Resource + DepotItemService depotItemService; + @Resource + private SupplierService supplierService; + @Resource + private UserBusinessService userBusinessService; + @Resource + private SystemConfigService systemConfigService; + @Resource + private SerialNumberService serialNumberService; + @Resource + private OrgaUserRelService orgaUserRelService; + @Resource + private PersonService personService; + @Resource + private AccountService accountService; + @Resource + private AccountHeadService accountHeadService; + @Resource + private AccountItemService accountItemService; + @Resource + private SequenceService sequenceService; + @Resource + private RedisService redisService; + @Resource + DepotItemMapperEx depotItemMapperEx; + @Resource + private LogService logService; + @Value(value="${file.exportTmp}") + private String fileExportTmp; + + public DepotHead getDepotHead(long id)throws Exception { + DepotHead result=null; + try{ + result=depotHeadMapper.selectByPrimaryKey(id); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return result; + } + + public List getDepotHead()throws Exception { + DepotHeadExample example = new DepotHeadExample(); + example.createCriteria().andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list=null; + try{ + list=depotHeadMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public List select(String type, String subType, String hasDebt, String hasLastDebt, String status, String purchaseStatus, String number, String linkApply, String linkNumber, + String beginTime, String endTime, String materialParam, Long organId, Long creator, Long depotId, Long accountId, String salesMan, String remark) throws Exception { + List list = new ArrayList<>(); + try{ + HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + Long userId = userService.getUserId(request); + String priceLimit = userService.getRoleTypeByUserId(userId).getPriceLimit(); + String billCategory = getBillCategory(subType); + // 单据列表默认查询当前租户的全部仓库和操作员;仍可通过 depotId/creator 参数手动筛选。 + String [] depotArray = null; + String [] creatorArray = null; + String [] statusArray = StringUtil.isNotEmpty(status) ? status.split(",") : null; + String [] purchaseStatusArray = StringUtil.isNotEmpty(purchaseStatus) ? purchaseStatus.split(",") : null; + String [] organArray = getOrganArray(subType, purchaseStatus); + //以销定购,查看全部数据 + creatorArray = StringUtil.isNotEmpty(purchaseStatus) ? null: creatorArray; + Map personMap = personService.getPersonMap(); + Map accountMap = accountService.getAccountMap(); + beginTime = Tools.parseDayToTime(beginTime,BusinessConstants.DAY_FIRST_TIME); + endTime = Tools.parseDayToTime(endTime,BusinessConstants.DAY_LAST_TIME); + PageUtils.startPage(); + list = depotHeadMapperEx.selectByConditionDepotHead(type, subType, creatorArray, hasDebt, hasLastDebt, + statusArray, purchaseStatusArray, number, linkApply, linkNumber, beginTime, endTime, + materialParam, organId, organArray, creator, depotId, depotArray, accountId, salesMan, remark); + if (null != list) { + List idList = new ArrayList<>(); + List numberList = new ArrayList<>(); + for (DepotHeadVo4List dh : list) { + idList.add(dh.getId()); + numberList.add(dh.getNumber()); + } + //通过批量查询去构造map + Map finishDepositMap = getFinishDepositMapByNumberList(numberList); + Map financialBillPriceMap = getFinancialBillPriceMapByBillIdList(idList); + Map billSizeMap = getBillSizeMapByLinkNumberList(numberList); + Map materialsListMap = findMaterialsListMapByHeaderIdList(idList); + Map materialCountListMap = getMaterialCountListMapByHeaderIdList(idList); + for (DepotHeadVo4List dh : list) { + if(accountMap!=null && StringUtil.isNotEmpty(dh.getAccountIdList()) && StringUtil.isNotEmpty(dh.getAccountMoneyList())) { + String accountStr = accountService.getAccountStrByIdAndMoney(accountMap, dh.getAccountIdList(), dh.getAccountMoneyList()); + dh.setAccountName(accountStr); + } + if(dh.getAccountIdList() != null) { + String accountidlistStr = dh.getAccountIdList().replace("[", "").replace("]", "").replaceAll("\"", ""); + dh.setAccountIdList(accountidlistStr); + } + if(dh.getAccountMoneyList() != null) { + String accountmoneylistStr = dh.getAccountMoneyList().replace("[", "").replace("]", "").replaceAll("\"", ""); + dh.setAccountMoneyList(accountmoneylistStr); + } + if(dh.getChangeAmount() != null) { + dh.setChangeAmount(roleService.parseBillPriceByLimit(dh.getChangeAmount().abs(), billCategory, priceLimit, request)); + } else { + dh.setChangeAmount(BigDecimal.ZERO); + } + if(dh.getTotalPrice() != null) { + BigDecimal lastTotalPrice = BusinessConstants.SUB_TYPE_CHECK_ENTER.equals(dh.getSubType())|| + BusinessConstants.SUB_TYPE_REPLAY.equals(dh.getSubType())?dh.getTotalPrice():dh.getTotalPrice().abs(); + dh.setTotalPrice(roleService.parseBillPriceByLimit(lastTotalPrice, billCategory, priceLimit, request)); + } + BigDecimal discountLastMoney = dh.getDiscountLastMoney()!=null?dh.getDiscountLastMoney():BigDecimal.ZERO; + dh.setDiscountLastMoney(roleService.parseBillPriceByLimit(discountLastMoney, billCategory, priceLimit, request)); + BigDecimal backAmount = dh.getBackAmount()!=null?dh.getBackAmount():BigDecimal.ZERO; + dh.setBackAmount(roleService.parseBillPriceByLimit(backAmount, billCategory, priceLimit, request)); + if(dh.getDeposit() == null) { + dh.setDeposit(BigDecimal.ZERO); + } else { + dh.setDeposit(roleService.parseBillPriceByLimit(dh.getDeposit(), billCategory, priceLimit, request)); + } + //已经完成的欠款 + if(finishDepositMap!=null) { + BigDecimal finishDeposit = finishDepositMap.get(dh.getNumber()) != null ? finishDepositMap.get(dh.getNumber()) : BigDecimal.ZERO; + dh.setFinishDeposit(roleService.parseBillPriceByLimit(finishDeposit, billCategory, priceLimit, request)); + } + //欠款计算 + BigDecimal otherMoney = dh.getOtherMoney()!=null?dh.getOtherMoney():BigDecimal.ZERO; + BigDecimal deposit = dh.getDeposit()!=null?dh.getDeposit():BigDecimal.ZERO; + BigDecimal changeAmount = dh.getChangeAmount()!=null?dh.getChangeAmount():BigDecimal.ZERO; + BigDecimal debt = discountLastMoney.add(otherMoney).subtract((deposit.add(changeAmount))); + dh.setDebt(roleService.parseBillPriceByLimit(debt, billCategory, priceLimit, request)); + //最终欠款的金额 + //TODO 暂时还是先通过计算获取,半年后改成从数据库直接去读last_dept time:20260601 + if(financialBillPriceMap!=null) { + BigDecimal financialBillPrice = financialBillPriceMap.get(dh.getId())!=null?financialBillPriceMap.get(dh.getId()):BigDecimal.ZERO; + BigDecimal lastDebt = debt.subtract(financialBillPrice); + dh.setLastDebt(roleService.parseBillPriceByLimit(lastDebt, billCategory, priceLimit, request)); + } + //是否有退款单 + if(billSizeMap!=null) { + Integer billListSize = billSizeMap.get(dh.getNumber()); + dh.setHasBackFlag(billListSize!=null && billListSize>0); + } + if(StringUtil.isNotEmpty(dh.getSalesMan())) { + dh.setSalesManStr(personService.getPersonByMapAndIds(personMap,dh.getSalesMan())); + } + if(dh.getOperTime() != null) { + dh.setOperTimeStr(getCenternTime(dh.getOperTime())); + } + //商品信息简述 + if(materialsListMap!=null) { + dh.setMaterialsList(materialsListMap.get(dh.getId())); + } + //商品总数量 + if(materialCountListMap!=null) { + dh.setMaterialCount(materialCountListMap.get(dh.getId())); + } + //以销定购的情况(不能显示销售单据的金额和客户名称) + if(StringUtil.isNotEmpty(purchaseStatus)) { + dh.setOrganName("****"); + dh.setTotalPrice(null); + dh.setDiscountLastMoney(null); + } + } + } + } catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + /** + * 根据单据类型获取仓库数组 + * @param subType + * @return + * @throws Exception + */ + public String[] getDepotArray(String subType) throws Exception { + return null; + } + + /** + * 根据角色类型获取操作员数组 + * @return + * @throws Exception + */ + public String[] getCreatorArray() throws Exception { + return null; + } + + /** + * 根据角色类型获取操作员数组 + * @param organizationId + * @return + * @throws Exception + */ + public String[] getCreatorArrayByOrg(Long organizationId) throws Exception { + List userIdList = orgaUserRelService.getUserIdListByOrgId(organizationId); + if(userIdList.size()>0) { + List userIdStrList = userIdList.stream().map(Object::toString).collect(Collectors.toList()); + return StringUtil.listToStringArray(userIdStrList); + } else { + return "-1".split(","); + } + } + + /** + * 获取部门数组 + * @return + */ + public String[] getOrganArray(String subType, String purchaseStatus) throws Exception { + return null; + } + + /** + * 根据角色类型获取操作员 + * @return + * @throws Exception + */ + public String getCreatorByCurrentUser() throws Exception { + return ""; + } + + public Map getFinishDepositMapByNumberList(List numberList) { + Map finishDepositMap = new HashMap<>(); + if(numberList.size()>0) { + List list = depotHeadMapperEx.getFinishDepositByNumberList(numberList); + if(list!=null && list.size()>0) { + for (FinishDepositVo finishDepositVo : list) { + if(finishDepositVo!=null) { + finishDepositMap.put(finishDepositVo.getNumber(), finishDepositVo.getFinishDeposit()); + } + } + } + } + return finishDepositMap; + } + + public Map getBillSizeMapByLinkNumberList(List numberList) throws Exception { + Map billListMap = new HashMap<>(); + if(numberList.size()>0) { + List list = getBillListByLinkNumberList(numberList); + if(list!=null && list.size()>0) { + for (DepotHead depotHead : list) { + if(depotHead!=null) { + billListMap.put(depotHead.getLinkNumber(), list.size()); + } + } + } + } + return billListMap; + } + + public Map getFinancialBillPriceMapByBillIdList(List idList) { + Map billListMap = new HashMap<>(); + if(!idList.isEmpty()) { + List list = accountHeadService.getFinancialBillPriceByBillIdList(idList); + if(list!=null && !list.isEmpty()) { + for (AccountItem accountItem : list) { + if(accountItem!=null) { + billListMap.put(accountItem.getBillId(), accountItem.getEachAmount().abs()); + } + } + } + } + return billListMap; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int insertDepotHead(JSONObject obj, HttpServletRequest request)throws Exception { + DepotHead depotHead = JSONObject.parseObject(obj.toJSONString(), DepotHead.class); + forceHiddenPaymentAmountToZero(depotHead); + depotHead.setCreateTime(new Timestamp(System.currentTimeMillis())); + depotHead.setStatus(BusinessConstants.BILLS_STATUS_UN_AUDIT); + int result=0; + try{ + result=depotHeadMapper.insert(depotHead); + logService.insertLog("单据", BusinessConstants.LOG_OPERATION_TYPE_ADD, request); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int updateDepotHead(JSONObject obj, HttpServletRequest request) throws Exception{ + DepotHead depotHead = JSONObject.parseObject(obj.toJSONString(), DepotHead.class); + forceHiddenPaymentAmountToZero(depotHead); + DepotHead dh=null; + try{ + dh = depotHeadMapper.selectByPrimaryKey(depotHead.getId()); + }catch(Exception e){ + JshException.readFail(logger, e); + } + depotHead.setStatus(dh.getStatus()); + depotHead.setCreateTime(dh.getCreateTime()); + int result=0; + try{ + result = depotHeadMapper.updateByPrimaryKey(depotHead); + logService.insertLog("单据", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_EDIT).append(depotHead.getId()).toString(), request); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int deleteDepotHead(Long id, HttpServletRequest request)throws Exception { + return batchDeleteBillByIds(id.toString()); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteDepotHead(String ids, HttpServletRequest request)throws Exception { + return batchDeleteBillByIds(ids); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteBillByIds(String ids)throws Exception { + StringBuffer sb = new StringBuffer(); + sb.append(BusinessConstants.LOG_OPERATION_TYPE_DELETE); + List dhList = getDepotHeadListByIds(ids); + for(DepotHead depotHead: dhList){ + //只有未审核的单据才能被删除 + if(!"0".equals(depotHead.getStatus())) { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_UN_AUDIT_DELETE_FAILED_CODE, + String.format(ExceptionConstants.DEPOT_HEAD_UN_AUDIT_DELETE_FAILED_MSG)); + } + //检查有没有被财务单据关联 + List ahList = accountHeadService.getFinancialBillNoByBillId(depotHead.getId()); + if (!ahList.isEmpty()) { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_FINANCIAL_ASSOCIATED_CODE, + String.format(ExceptionConstants.DEPOT_HEAD_FINANCIAL_ASSOCIATED_MSG, depotHead.getNumber(), ahList.get(0).getBillNo())); + } + } + for(DepotHead depotHead: dhList){ + sb.append("[").append(depotHead.getNumber()).append("]"); + User userInfo = userService.getCurrentUser(); + //删除入库单据,先校验序列号是否出库,如果未出库则同时删除序列号,如果已出库则不能删除单据 + if (BusinessConstants.DEPOTHEAD_TYPE_IN.equals(depotHead.getType())) { + List depotItemList = depotItemMapperEx.findDepotItemListBydepotheadId(depotHead.getId(), BusinessConstants.ENABLE_SERIAL_NUMBER_ENABLED); + if (depotItemList != null && depotItemList.size() > 0) { + //单据明细里面存在序列号商品 + int serialNumberSellCount = depotHeadMapperEx.getSerialNumberBySell(depotHead.getNumber()); + if (serialNumberSellCount > 0) { + //已出库则不能删除单据 + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_SERIAL_IS_SELL_CODE, + String.format(ExceptionConstants.DEPOT_HEAD_SERIAL_IS_SELL_MSG, depotHead.getNumber())); + } else { + //删除序列号 + SerialNumberExample example = new SerialNumberExample(); + example.createCriteria().andInBillNoEqualTo(depotHead.getNumber()); + serialNumberService.deleteByExample(example); + } + } + } + //删除出库数据回收序列号 + if (BusinessConstants.DEPOTHEAD_TYPE_OUT.equals(depotHead.getType()) + && !BusinessConstants.SUB_TYPE_TRANSFER.equals(depotHead.getSubType())) { + //查询单据子表列表 + List depotItemList = depotItemMapperEx.findDepotItemListBydepotheadId(depotHead.getId(), BusinessConstants.ENABLE_SERIAL_NUMBER_ENABLED); + /**回收序列号*/ + if (depotItemList != null && depotItemList.size() > 0) { + for (DepotItem depotItem : depotItemList) { + //BasicNumber=OperNumber*ratio + serialNumberService.cancelSerialNumber(depotItem.getMaterialId(), depotHead.getNumber(), (depotItem.getBasicNumber() == null ? 0 : depotItem.getBasicNumber()).intValue(), userInfo); + } + } + } + List list = depotItemService.getListByHeaderId(depotHead.getId()); + //删除单据子表数据 + depotItemMapperEx.batchDeleteDepotItemByDepotHeadIds(new Long[]{depotHead.getId()}); + //删除单据主表信息 + batchDeleteDepotHeadByIds(depotHead.getId().toString()); + //将关联的单据置为审核状态-针对采购入库、销售出库、盘点复盘、其它入库、其它出库 + if(StringUtil.isNotEmpty(depotHead.getLinkNumber())){ + if((BusinessConstants.DEPOTHEAD_TYPE_IN.equals(depotHead.getType()) && + BusinessConstants.SUB_TYPE_PURCHASE.equals(depotHead.getSubType())) + || (BusinessConstants.DEPOTHEAD_TYPE_OUT.equals(depotHead.getType()) && + BusinessConstants.SUB_TYPE_SALES.equals(depotHead.getSubType())) + || (BusinessConstants.DEPOTHEAD_TYPE_OTHER.equals(depotHead.getType()) && + BusinessConstants.SUB_TYPE_REPLAY.equals(depotHead.getSubType())) + || (BusinessConstants.DEPOTHEAD_TYPE_IN.equals(depotHead.getType()) && + BusinessConstants.SUB_TYPE_OTHER.equals(depotHead.getSubType())) + || (BusinessConstants.DEPOTHEAD_TYPE_OUT.equals(depotHead.getType()) && + BusinessConstants.SUB_TYPE_OTHER.equals(depotHead.getSubType()))) { + String status = BusinessConstants.BILLS_STATUS_AUDIT; + //查询除当前单据之外的关联单据列表 + List exceptCurrentList = getListByLinkNumberExceptCurrent(depotHead.getLinkNumber(), depotHead.getNumber(), depotHead.getType()); + if(exceptCurrentList!=null && exceptCurrentList.size()>0) { + status = BusinessConstants.BILLS_STATUS_SKIPING; + } + DepotHead dh = new DepotHead(); + dh.setStatus(status); + DepotHeadExample example = new DepotHeadExample(); + example.createCriteria().andNumberEqualTo(depotHead.getLinkNumber()); + depotHeadMapper.updateByExampleSelective(dh, example); + } + } + //将关联的单据置为审核状态-针对请购单转采购订单的情况 + if(StringUtil.isNotEmpty(depotHead.getLinkApply())){ + if(BusinessConstants.DEPOTHEAD_TYPE_OTHER.equals(depotHead.getType()) && + BusinessConstants.SUB_TYPE_PURCHASE_ORDER.equals(depotHead.getSubType())) { + String status = BusinessConstants.BILLS_STATUS_AUDIT; + //查询除当前单据之外的关联单据列表 + List exceptCurrentList = getListByLinkApplyExceptCurrent(depotHead.getLinkApply(), depotHead.getNumber(), depotHead.getType()); + if(exceptCurrentList!=null && exceptCurrentList.size()>0) { + status = BusinessConstants.BILLS_STATUS_SKIPING; + } + DepotHead dh = new DepotHead(); + dh.setStatus(status); + DepotHeadExample example = new DepotHeadExample(); + example.createCriteria().andNumberEqualTo(depotHead.getLinkApply()); + depotHeadMapper.updateByExampleSelective(dh, example); + } + } + //将关联的销售订单单据置为未采购状态-针对销售订单转采购订单的情况 + if(StringUtil.isNotEmpty(depotHead.getLinkNumber())){ + if(BusinessConstants.DEPOTHEAD_TYPE_OTHER.equals(depotHead.getType()) && + BusinessConstants.SUB_TYPE_PURCHASE_ORDER.equals(depotHead.getSubType())) { + DepotHead dh = new DepotHead(); + //获取分批操作后单据的商品和商品数量(汇总) + List batchList = depotItemMapperEx.getBatchBillDetailMaterialSum(depotHead.getLinkNumber(), "normal", depotHead.getType()); + if(batchList.size()>0) { + dh.setPurchaseStatus(BusinessConstants.PURCHASE_STATUS_SKIPING); + } else { + dh.setPurchaseStatus(BusinessConstants.PURCHASE_STATUS_UN_AUDIT); + } + DepotHeadExample example = new DepotHeadExample(); + example.createCriteria().andNumberEqualTo(depotHead.getLinkNumber()); + depotHeadMapper.updateByExampleSelective(dh, example); + } + } + //对于零售出库单据,更新会员的预收款信息 + if (BusinessConstants.DEPOTHEAD_TYPE_OUT.equals(depotHead.getType()) + && BusinessConstants.SUB_TYPE_RETAIL.equals(depotHead.getSubType())){ + if(BusinessConstants.PAY_TYPE_PREPAID.equals(depotHead.getPayType())) { + if (depotHead.getOrganId() != null) { + //更新会员预付款 + supplierService.updateAdvanceIn(depotHead.getOrganId()); + } + } + } + for (DepotItem depotItem : list) { + //更新当前库存 + depotItemService.updateCurrentStock(depotItem); + //更新当前成本价 + depotItemService.updateCurrentUnitPrice(depotItem); + } + } + //路径列表 + List pathList = new ArrayList<>(); + for(DepotHead depotHead: dhList){ + if(StringUtil.isNotEmpty(depotHead.getFileName())) { + pathList.add(depotHead.getFileName()); + } + } + //逻辑删除文件 + systemConfigService.deleteFileByPathList(pathList); + logService.insertLog("单据", sb.toString(), + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); + return 1; + } + + /** + * 删除单据主表信息 + * @param ids + * @return + * @throws Exception + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteDepotHeadByIds(String ids)throws Exception { + User userInfo=userService.getCurrentUser(); + String [] idArray=ids.split(","); + int result=0; + try{ + result = depotHeadMapperEx.batchDeleteDepotHeadByIds(new Date(),userInfo==null?null:userInfo.getId(),idArray); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + public List getDepotHeadListByIds(String ids)throws Exception { + List idList = StringUtil.strToLongList(ids); + List list = new ArrayList<>(); + try{ + DepotHeadExample example = new DepotHeadExample(); + example.createCriteria().andIdIn(idList); + list = depotHeadMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + /** + * 校验单据编号是否存在 + * @param id + * @param number + * @return + * @throws Exception + */ + public int checkIsBillNumberExist(Long id, String number)throws Exception { + DepotHeadExample example = new DepotHeadExample(); + example.createCriteria().andIdNotEqualTo(id).andNumberEqualTo(number).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list = null; + try{ + list = depotHeadMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list==null?0:list.size(); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchForceClose(String ids, HttpServletRequest request) throws Exception { + int result = 0; + StringBuilder billNoStr = new StringBuilder(); + List idList = StringUtil.strToLongList(ids); + for(Long id: idList) { + DepotHead depotHead = getDepotHead(id); + //状态里面不包含部分不能强制结单 + if(!"3".equals(depotHead.getStatus())) { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_FORCE_CLOSE_FAILED_CODE, + String.format(ExceptionConstants.DEPOT_HEAD_FORCE_CLOSE_FAILED_MSG, depotHead.getNumber())); + } else { + billNoStr.append(depotHead.getNumber()).append(" "); + } + } + if(idList.size()>0) { + DepotHead depotHead = new DepotHead(); + //完成状态 + depotHead.setStatus("2"); + //给备注后面追加:强制结单 + String remark = StringUtil.isNotEmpty(depotHead.getRemark())? depotHead.getRemark() + "[强制结单]": "[强制结单]"; + depotHead.setRemark(remark); + DepotHeadExample example = new DepotHeadExample(); + example.createCriteria().andIdIn(idList); + result = depotHeadMapper.updateByExampleSelective(depotHead, example); + //记录日志 + String billNos = billNoStr.toString(); + if(StringUtil.isNotEmpty(billNos)) { + logService.insertLog("单据", "强制结单:" + billNos, + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); + } + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchForceClosePurchase(String ids, HttpServletRequest request) throws Exception { + int result = 0; + StringBuilder billNoStr = new StringBuilder(); + List idList = StringUtil.strToLongList(ids); + for(Long id: idList) { + DepotHead depotHead = getDepotHead(id); + //状态里面不包含部分不能强制结单 + if(!"3".equals(depotHead.getPurchaseStatus())) { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_FORCE_CLOSE_FAILED_CODE, + String.format(ExceptionConstants.DEPOT_HEAD_FORCE_CLOSE_FAILED_MSG, depotHead.getNumber())); + } else { + billNoStr.append(depotHead.getNumber()).append(" "); + } + } + if(idList.size()>0) { + DepotHead depotHead = new DepotHead(); + //完成状态 + depotHead.setPurchaseStatus("2"); + //给备注后面追加:强制结单-以销定购 + String remark = StringUtil.isNotEmpty(depotHead.getRemark())? depotHead.getRemark() + "[强制结单-以销定购]": "[强制结单-以销定购]"; + depotHead.setRemark(remark); + DepotHeadExample example = new DepotHeadExample(); + example.createCriteria().andIdIn(idList); + result = depotHeadMapper.updateByExampleSelective(depotHead, example); + //记录日志 + String billNos = billNoStr.toString(); + if(StringUtil.isNotEmpty(billNos)) { + logService.insertLog("单据", "强制结单-以销定购:" + billNos, + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); + } + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchSetLastDebt(String ids, HttpServletRequest request) throws Exception { + int result = 0; + StringBuilder billNoStr = new StringBuilder(); + List idList = StringUtil.strToLongList(ids); + for(Long id: idList) { + DepotHead dh = getDepotHead(id); + BigDecimal debt = getDebtByBill(dh); + if(debt.compareTo(BigDecimal.ZERO)!=0) { + //更新最终欠款 + updateLastDebtByBillId(debt, id); + billNoStr.append(dh.getNumber()).append(" "); + } + result = 1; + } + //记录日志 + String billNos = billNoStr.toString(); + if(StringUtil.isNotEmpty(billNos)) { + logService.insertLog("单据", "修正最终欠款:" + billNos, + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchSetLastDeposit(String ids, HttpServletRequest request) throws Exception { + int result = 0; + StringBuilder billNoStr = new StringBuilder(); + List idList = StringUtil.strToLongList(ids); + for(Long id: idList) { + DepotHead dh = getDepotHead(id); + //订单中的原订金 + BigDecimal originalDeposit = dh.getChangeAmount()!=null?dh.getChangeAmount().abs():BigDecimal.ZERO; + if(originalDeposit.compareTo(BigDecimal.ZERO)!=0) { + //更新剩余订金 + updateLastDepositByNumber(dh.getNumber()); + billNoStr.append(dh.getNumber()).append(" "); + } + result = 1; + } + //记录日志 + String billNos = billNoStr.toString(); + if(StringUtil.isNotEmpty(billNos)) { + logService.insertLog("单据", "修正剩余订金:" + billNos, + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); + } + return result; + } + + /** + * 获取单据的本次欠款 + * @param dh + * @return + */ + public BigDecimal getDebtByBill(DepotHead dh) { + BigDecimal discountLastMoney = dh.getDiscountLastMoney()!=null? dh.getDiscountLastMoney():BigDecimal.ZERO; + BigDecimal otherMoney = dh.getOtherMoney()!=null? dh.getOtherMoney():BigDecimal.ZERO; + BigDecimal deposit = dh.getDeposit()!=null? dh.getDeposit():BigDecimal.ZERO; + BigDecimal changeAmount = dh.getChangeAmount()!=null? dh.getChangeAmount().abs():BigDecimal.ZERO; + //本次欠款 + return discountLastMoney.add(otherMoney).subtract((deposit.add(changeAmount))); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchSetStatus(String status, String depotHeadIDs)throws Exception { + int result = 0; + boolean forceApprovalFlag = systemConfigService.getForceApprovalFlag(); + boolean minusStockFlag = systemConfigService.getMinusStockFlag(); + boolean inOutManageFlag = systemConfigService.getInOutManageFlag(); + List dhIds = new ArrayList<>(); + List noList = new ArrayList<>(); + List ids = StringUtil.strToLongList(depotHeadIDs); + for(Long id: ids) { + DepotHead depotHead = getDepotHead(id); + if("0".equals(status)){ + //进行反审核操作 + if("1".equals(depotHead.getStatus()) && "0".equals(depotHead.getPurchaseStatus())) { + dhIds.add(id); + noList.add(depotHead.getNumber()); + } else if("2".equals(depotHead.getPurchaseStatus())) { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_PURCHASE_STATUS_TWO_CODE, + String.format(ExceptionConstants.DEPOT_HEAD_PURCHASE_STATUS_TWO_MSG)); + } else if("3".equals(depotHead.getPurchaseStatus())) { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_PURCHASE_STATUS_THREE_CODE, + String.format(ExceptionConstants.DEPOT_HEAD_PURCHASE_STATUS_THREE_MSG)); + } else { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_AUDIT_TO_UN_AUDIT_FAILED_CODE, + String.format(ExceptionConstants.DEPOT_HEAD_AUDIT_TO_UN_AUDIT_FAILED_MSG)); + } + } else if("1".equals(status)){ + //进行审核操作 + if("0".equals(depotHead.getStatus())) { + dhIds.add(id); + noList.add(depotHead.getNumber()); + } else { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_UN_AUDIT_TO_AUDIT_FAILED_CODE, + String.format(ExceptionConstants.DEPOT_HEAD_UN_AUDIT_TO_AUDIT_FAILED_MSG)); + } + } + // 开启强审核,并且没有开启负库存: + // 1、开启出入库管理,销售出库和采购退货单据审核的时候不做校验,其它出库做校验; + // 2、未开启出入库管理,销售出库、采购退货和其它出库单据审核的时候都做校验。 + if("1".equals(status)) { + if(forceApprovalFlag && !minusStockFlag) { + if(inOutManageFlag) { + if("出库".equals(depotHead.getType()) && "其它".equals(depotHead.getSubType())) { + //校验单据中的商品库存是否不足 + depotItemService.checkMaterialStock(depotHead.getNumber(), depotHead.getId()); + } + } else { + if(("出库".equals(depotHead.getType()) && "销售".equals(depotHead.getSubType())) + || ("出库".equals(depotHead.getType()) && "采购退货".equals(depotHead.getSubType())) + || "出库".equals(depotHead.getType()) && "其它".equals(depotHead.getSubType())) { + //校验单据中的商品库存是否不足 + depotItemService.checkMaterialStock(depotHead.getNumber(), depotHead.getId()); + } + } + } + } + } + if(!dhIds.isEmpty()) { + DepotHead depotHead = new DepotHead(); + depotHead.setStatus(status); + DepotHeadExample example = new DepotHeadExample(); + example.createCriteria().andIdIn(dhIds); + result = depotHeadMapper.updateByExampleSelective(depotHead, example); + //更新当前库存 + if(systemConfigService.getForceApprovalFlag()) { + for(Long dhId: dhIds) { + DepotHead currentHead = getDepotHead(dhId); + if (isShipmentDeferredStockBill(currentHead)) { + continue; + } + List list = depotItemService.getListByHeaderId(dhId); + for (DepotItem depotItem : list) { + depotItemService.updateCurrentStock(depotItem); + } + } + } + //记录日志 + if(!noList.isEmpty() && ("0".equals(status) || "1".equals(status))) { + String statusStr = status.equals("1")?"[审核]":"[反审核]"; + logService.insertLog("单据", + new StringBuffer(statusStr).append(String.join(", ", noList)).toString(), + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); + } + } + return result; + } + + private boolean isShipmentDeferredStockBill(DepotHead depotHead) { + return depotHead != null + && "出库".equals(depotHead.getType()) + && ("销售".equals(depotHead.getSubType()) || "零售".equals(depotHead.getSubType())); + } + + public Map findMaterialsListMapByHeaderIdList(List idList)throws Exception { + Map materialsListMap = new HashMap<>(); + if(idList.size()>0) { + List list = depotHeadMapperEx.findMaterialsListMapByHeaderIdList(idList); + for (MaterialsListVo materialsListVo : list) { + String materialsList = materialsListVo.getMaterialsList(); + if(StringUtil.isNotEmpty(materialsList)) { + materialsList = materialsList.replace(",",","); + } + materialsListMap.put(materialsListVo.getHeaderId(), materialsList); + } + } + return materialsListMap; + } + + public Map getMaterialCountListMapByHeaderIdList(List idList)throws Exception { + Map materialCountListMap = new HashMap<>(); + if(idList.size()>0) { + List list = depotHeadMapperEx.getMaterialCountListByHeaderIdList(idList); + for(MaterialCountVo materialCountVo : list){ + materialCountListMap.put(materialCountVo.getHeaderId(), materialCountVo.getMaterialCount()); + } + } + return materialCountListMap; + } + + public List findInOutDetail(String beginTime, String endTime, String type, String[] creatorArray, + String[] organArray, List categoryList, Boolean forceFlag, Boolean inOutManageFlag, + String materialParam, List depotList, Integer oId, String number, + Long creator, String remark, String column, String order, Integer offset, Integer rows) throws Exception{ + List list = null; + try{ + list =depotHeadMapperEx.findInOutDetail(beginTime, endTime, type, creatorArray, organArray, categoryList, forceFlag, inOutManageFlag, + materialParam, depotList, oId, number, creator, remark, column, order, offset, rows); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public int findInOutDetailCount(String beginTime, String endTime, String type, String[] creatorArray, + String[] organArray, List categoryList, Boolean forceFlag, Boolean inOutManageFlag, String materialParam, List depotList, Integer oId, String number, + Long creator, String remark) throws Exception{ + int result = 0; + try{ + result =depotHeadMapperEx.findInOutDetailCount(beginTime, endTime, type, creatorArray, organArray, categoryList, forceFlag, inOutManageFlag, + materialParam, depotList, oId, number, creator, remark); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return result; + } + + public DepotHeadVo4InDetail findInOutDetailStatistic(String beginTime, String endTime, String type, String [] creatorArray, + String [] organArray, List categoryList, Boolean forceFlag, Boolean inOutManageFlag, + String materialParam, List depotList, Integer oId, String number, + Long creator, String remark) throws Exception{ + DepotHeadVo4InDetail item = new DepotHeadVo4InDetail(); + try{ + List list =depotHeadMapperEx.findInOutDetailStatistic(beginTime, endTime, type, creatorArray, organArray, categoryList, forceFlag, inOutManageFlag, + materialParam, depotList, oId, number, creator, remark); + if(list.size()>0) { + item.setOperNumber(list.get(0).getOperNumber()); + item.setAllPrice(list.get(0).getAllPrice()); + } + }catch(Exception e){ + JshException.readFail(logger, e); + } + return item; + } + + public List findInOutMaterialCount(String beginTime, String endTime, String type, List categoryList, + Boolean forceFlag, Boolean inOutManageFlag, String materialParam, + List depotList, Long organizationId, Integer oId, String column, String order, + Integer offset, Integer rows)throws Exception { + List list = null; + try{ + String [] creatorArray = getCreatorArray(); + if(creatorArray == null && organizationId != null) { + creatorArray = getCreatorArrayByOrg(organizationId); + } + String subType = "出库".equals(type)? "销售" : ""; + String [] organArray = getOrganArray(subType, ""); + list =depotHeadMapperEx.findInOutMaterialCount(beginTime, endTime, type, categoryList, forceFlag, inOutManageFlag, materialParam, depotList, oId, + creatorArray, organArray, column, order, offset, rows); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public int findInOutMaterialCountTotal(String beginTime, String endTime, String type, List categoryList, + Boolean forceFlag, Boolean inOutManageFlag, String materialParam, + List depotList, Long organizationId, Integer oId)throws Exception { + int result = 0; + try{ + String [] creatorArray = getCreatorArray(); + if(creatorArray == null && organizationId != null) { + creatorArray = getCreatorArrayByOrg(organizationId); + } + String subType = "出库".equals(type)? "销售" : ""; + String [] organArray = getOrganArray(subType, ""); + result =depotHeadMapperEx.findInOutMaterialCountTotal(beginTime, endTime, type, categoryList, forceFlag, inOutManageFlag, materialParam, depotList, oId, + creatorArray, organArray); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return result; + } + + public DepotHeadVo4InOutMCount findInOutMaterialCountStatistic(String beginTime, String endTime, String type, List categoryList, + Boolean forceFlag, Boolean inOutManageFlag, String materialParam, + List depotList, Long organizationId, Integer oId) throws Exception { + DepotHeadVo4InOutMCount item = new DepotHeadVo4InOutMCount(); + try{ + String [] creatorArray = getCreatorArray(); + if(creatorArray == null && organizationId != null) { + creatorArray = getCreatorArrayByOrg(organizationId); + } + String subType = "出库".equals(type)? "销售" : ""; + String [] organArray = getOrganArray(subType, ""); + List list = depotHeadMapperEx.findInOutMaterialCountStatistic(beginTime, endTime, type, categoryList, + forceFlag, inOutManageFlag, materialParam, depotList, oId, creatorArray, organArray); + if(list.size()>0) { + item.setNumSum(list.get(0).getNumSum()); + item.setPriceSum(list.get(0).getPriceSum()); + } + }catch(Exception e){ + JshException.readFail(logger, e); + } + return item; + } + + public List findAllocationDetail(String beginTime, String endTime, String subType, String number, + String [] creatorArray, List categoryList, Boolean forceFlag, String materialParam, List depotList, List depotFList, + String remark, String column, String order, Integer offset, Integer rows) throws Exception{ + List list = null; + try{ + list =depotHeadMapperEx.findAllocationDetail(beginTime, endTime, subType, number, creatorArray, categoryList, forceFlag, + materialParam, depotList, depotFList, remark, column, order, offset, rows); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public int findAllocationDetailCount(String beginTime, String endTime, String subType, String number, + String [] creatorArray, List categoryList, Boolean forceFlag, String materialParam, List depotList, List depotFList, + String remark) throws Exception{ + int result = 0; + try{ + result =depotHeadMapperEx.findAllocationDetailCount(beginTime, endTime, subType, number, creatorArray, categoryList, forceFlag, + materialParam, depotList, depotFList, remark); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return result; + } + + public DepotHeadVo4InDetail findAllocationStatistic(String beginTime, String endTime, String subType, String number, + String [] creatorArray, List categoryList, Boolean forceFlag, String materialParam, List depotList, List depotFList, + String remark) throws Exception{ + DepotHeadVo4InDetail item = new DepotHeadVo4InDetail(); + try{ + List list =depotHeadMapperEx.findAllocationStatistic(beginTime, endTime, subType, number, creatorArray, categoryList, forceFlag, + materialParam, depotList, depotFList, remark); + if(list.size()>0) { + item.setOperNumber(list.get(0).getOperNumber()); + item.setAllPrice(list.get(0).getAllPrice()); + } + }catch(Exception e){ + JshException.readFail(logger, e); + } + return item; + } + + public List getStatementAccount(String beginTime, String endTime, Integer organId, String [] organArray, + Integer hasDebt, String supplierType, String type, String subType, String typeBack, + String subTypeBack, String billType, Integer offset, Integer rows) { + List list = null; + try{ + list = depotHeadMapperEx.getStatementAccount(beginTime, endTime, organId, organArray, hasDebt, supplierType, type, subType,typeBack, subTypeBack, billType, offset, rows); + } catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public int getStatementAccountCount(String beginTime, String endTime, Integer organId, String [] organArray, + Integer hasDebt, String supplierType, String type, String subType, String typeBack, String subTypeBack, String billType) { + int result = 0; + try{ + result = depotHeadMapperEx.getStatementAccountCount(beginTime, endTime, organId, organArray, hasDebt, supplierType, type, subType,typeBack, subTypeBack, billType); + } catch(Exception e){ + JshException.readFail(logger, e); + } + return result; + } + + public List getStatementAccountTotalPay(String beginTime, String endTime, Integer organId, String [] organArray, + Integer hasDebt, String supplierType, String type, String subType, + String typeBack, String subTypeBack, String billType) { + List list = null; + try{ + list = depotHeadMapperEx.getStatementAccountTotalPay(beginTime, endTime, organId, organArray, hasDebt, supplierType, type, subType,typeBack, subTypeBack, billType); + } catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public int getNeedCount(String supplierType) throws Exception { + String beginTime = Tools.parseDayToTime(Tools.getYearBegin(), BusinessConstants.DAY_FIRST_TIME); + String endTime = Tools.getCenternTime(new Date()); + if (("客户").equals(supplierType)) { + return getNeedCountByCondition(beginTime, endTime, "客户", "出库", "销售", "入库", "销售退货", "收款") + + getNeedCountByCondition(beginTime, endTime, "会员", "出库", "零售", "", "", "收款"); + } else if (("供应商").equals(supplierType)) { + return getNeedCountByCondition(beginTime, endTime, "供应商", "入库", "采购", "出库", "采购退货", "付款") + + getNeedCountByCondition(beginTime, endTime, "会员", "入库", "零售退货", "", "", "付款"); + } + return getNeedCountByCondition(beginTime, endTime, supplierType, "", "", "", "", ""); + } + + private int getNeedCountByCondition(String beginTime, String endTime, String supplierType, String type, + String subType, String typeBack, String subTypeBack, String billType) throws Exception { + String [] organArray = getOrganArray(subType, ""); + return getStatementAccountCount(beginTime, endTime, null, organArray, + 1, supplierType, type, subType,typeBack, subTypeBack, billType); + } + + public List getDetailByNumber(String number, HttpServletRequest request)throws Exception { + List resList = new ArrayList<>(); + try{ + Long userId = userService.getUserId(request); + String priceLimit = userService.getRoleTypeByUserId(userId).getPriceLimit(); + Map personMap = personService.getPersonMap(); + Map accountMap = accountService.getAccountMap(); + List list = depotHeadMapperEx.getDetailByNumber(number); + if (null != list) { + List idList = new ArrayList<>(); + List numberList = new ArrayList<>(); + for (DepotHeadVo4List dh : list) { + idList.add(dh.getId()); + numberList.add(dh.getNumber()); + } + //通过批量查询去构造map + Map billSizeMap = getBillSizeMapByLinkNumberList(numberList); + Map materialsListMap = findMaterialsListMapByHeaderIdList(idList); + Map materialCountListMap = getMaterialCountListMapByHeaderIdList(idList); + DepotHeadVo4List dh = list.get(0); + String billCategory = getBillCategory(dh.getSubType()); + if(accountMap!=null && StringUtil.isNotEmpty(dh.getAccountIdList()) && StringUtil.isNotEmpty(dh.getAccountMoneyList())) { + String accountStr = accountService.getAccountStrByIdAndMoney(accountMap, dh.getAccountIdList(), dh.getAccountMoneyList()); + dh.setAccountName(accountStr); + } + if(dh.getAccountIdList() != null) { + String accountidlistStr = dh.getAccountIdList().replace("[", "").replace("]", "").replaceAll("\"", ""); + dh.setAccountIdList(accountidlistStr); + } + if(dh.getAccountMoneyList() != null) { + String accountmoneylistStr = dh.getAccountMoneyList().replace("[", "").replace("]", "").replaceAll("\"", ""); + dh.setAccountMoneyList(accountmoneylistStr); + } + if(dh.getChangeAmount() != null) { + dh.setChangeAmount(roleService.parseBillPriceByLimit(dh.getChangeAmount().abs(), billCategory, priceLimit, request)); + } else { + dh.setChangeAmount(BigDecimal.ZERO); + } + if(dh.getTotalPrice() != null) { + dh.setTotalPrice(roleService.parseBillPriceByLimit(dh.getTotalPrice().abs(), billCategory, priceLimit, request)); + } + BigDecimal discountLastMoney = dh.getDiscountLastMoney()!=null?dh.getDiscountLastMoney():BigDecimal.ZERO; + dh.setDiscountLastMoney(roleService.parseBillPriceByLimit(discountLastMoney, billCategory, priceLimit, request)); + BigDecimal backAmount = dh.getBackAmount()!=null?dh.getBackAmount():BigDecimal.ZERO; + dh.setBackAmount(roleService.parseBillPriceByLimit(backAmount, billCategory, priceLimit, request)); + if(dh.getDeposit() == null) { + dh.setDeposit(BigDecimal.ZERO); + } else { + dh.setDeposit(roleService.parseBillPriceByLimit(dh.getDeposit(), billCategory, priceLimit, request)); + } + //欠款计算 + BigDecimal otherMoney = dh.getOtherMoney()!=null?dh.getOtherMoney():BigDecimal.ZERO; + BigDecimal deposit = dh.getDeposit()!=null?dh.getDeposit():BigDecimal.ZERO; + BigDecimal changeAmount = dh.getChangeAmount()!=null?dh.getChangeAmount():BigDecimal.ZERO; + BigDecimal debt = discountLastMoney.add(otherMoney).subtract((deposit.add(changeAmount))); + dh.setDebt(roleService.parseBillPriceByLimit(debt, billCategory, priceLimit, request)); + //是否有退款单 + if(billSizeMap!=null) { + Integer billListSize = billSizeMap.get(dh.getNumber()); + dh.setHasBackFlag(billListSize!=null && billListSize>0); + } + if(StringUtil.isNotEmpty(dh.getSalesMan())) { + dh.setSalesManStr(personService.getPersonByMapAndIds(personMap,dh.getSalesMan())); + } + if(dh.getOperTime() != null) { + dh.setOperTimeStr(getCenternTime(dh.getOperTime())); + } + //商品信息简述 + if(materialsListMap!=null) { + dh.setMaterialsList(materialsListMap.get(dh.getId())); + } + //商品总数量 + if(materialCountListMap!=null) { + dh.setMaterialCount(materialCountListMap.get(dh.getId())); + } + User creatorUser = userService.getUser(dh.getCreator()); + if(creatorUser!=null) { + dh.setCreatorName(creatorUser.getUsername()); + } + resList.add(dh); + } + }catch(Exception e){ + JshException.readFail(logger, e); + } + return resList; + } + + /** + * 查询除当前单据之外的关联单据列表 + * @param linkNumber + * @param number + * @return + * @throws Exception + */ + public List getListByLinkNumberExceptCurrent(String linkNumber, String number, String type)throws Exception { + DepotHeadExample example = new DepotHeadExample(); + example.createCriteria().andLinkNumberEqualTo(linkNumber).andNumberNotEqualTo(number).andTypeEqualTo(type) + .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + return depotHeadMapper.selectByExample(example); + } + + /** + * 查询除当前单据之外的关联单据列表 + * @param linkApply + * @param number + * @return + * @throws Exception + */ + public List getListByLinkApplyExceptCurrent(String linkApply, String number, String type)throws Exception { + DepotHeadExample example = new DepotHeadExample(); + example.createCriteria().andLinkApplyEqualTo(linkApply).andNumberNotEqualTo(number).andTypeEqualTo(type) + .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + return depotHeadMapper.selectByExample(example); + } + + /** + * 根据原单号查询关联的单据列表(批量) + * @param linkNumberList + * @return + * @throws Exception + */ + public List getBillListByLinkNumberList(List linkNumberList)throws Exception { + if(linkNumberList!=null && linkNumberList.size()>0) { + DepotHeadExample example = new DepotHeadExample(); + example.createCriteria().andLinkNumberIn(linkNumberList).andSubTypeLike("退货").andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + return depotHeadMapper.selectByExample(example); + } else { + return new ArrayList<>(); + } + } + + /** + * 根据原单号查询关联的单据列表 + * @param linkNumber + * @return + * @throws Exception + */ + public List getBillListByLinkNumber(String linkNumber)throws Exception { + DepotHeadExample example = new DepotHeadExample(); + example.createCriteria().andLinkNumberEqualTo(linkNumber).andSubTypeLike("退货").andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + return depotHeadMapper.selectByExample(example); + } + + /** + * 新增单据主表及单据子表信息 + * @param beanJson + * @param rows + * @param request + * @throws Exception + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public void addDepotHeadAndDetail(String beanJson, String rows, + HttpServletRequest request) throws Exception { + /**处理单据主表数据*/ + DepotHead depotHead = JSONObject.parseObject(beanJson, DepotHead.class); + forceHiddenPaymentAmountToZero(depotHead); + //判断用户是否已经登录过,登录过不再处理 + User userInfo=userService.getCurrentUser(); + //通过redis去校验重复 + checkExistByRedis(userInfo, depotHead); + //校验单号是否重复 + if(checkIsBillNumberExist(0L, depotHead.getNumber())>0) { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_BILL_NUMBER_EXIST_CODE, + String.format(ExceptionConstants.DEPOT_HEAD_BILL_NUMBER_EXIST_MSG)); + } + //校验是否同时录入关联请购单号和关联订单号 + if(StringUtil.isNotEmpty(depotHead.getLinkNumber()) && StringUtil.isNotEmpty(depotHead.getLinkApply())) { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_ITEM_EXIST_REPEAT_NO_FAILED_CODE, + String.format(ExceptionConstants.DEPOT_ITEM_EXIST_REPEAT_NO_FAILED_MSG)); + } + String subType = depotHead.getSubType(); + //结算账户校验 + if("采购".equals(subType) || "采购退货".equals(subType) || "销售".equals(subType) || "销售退货".equals(subType)) { + if (StringUtil.isEmpty(depotHead.getAccountIdList()) && depotHead.getAccountId() == null) { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_ACCOUNT_FAILED_CODE, + String.format(ExceptionConstants.DEPOT_HEAD_ACCOUNT_FAILED_MSG)); + } + } + depotHead.setCreator(userInfo==null?null:userInfo.getId()); + depotHead.setCreateTime(new Timestamp(System.currentTimeMillis())); + if(StringUtil.isEmpty(depotHead.getStatus())) { + depotHead.setStatus(BusinessConstants.BILLS_STATUS_UN_AUDIT); + } + depotHead.setLastDeposit(BigDecimal.ZERO); + depotHead.setPurchaseStatus(BusinessConstants.BILLS_STATUS_UN_AUDIT); + depotHead.setPayType(depotHead.getPayType()==null?"现付":depotHead.getPayType()); + if(StringUtil.isNotEmpty(depotHead.getAccountIdList())){ + depotHead.setAccountIdList(depotHead.getAccountIdList().replace("[", "").replace("]", "").replaceAll("\"", "")); + } + if(StringUtil.isNotEmpty(depotHead.getAccountMoneyList())) { + //校验多账户的结算金额 + String accountMoneyList = depotHead.getAccountMoneyList().replace("[", "").replace("]", "").replaceAll("\"", ""); + BigDecimal sum = StringUtil.getArrSum(accountMoneyList.split(",")); + BigDecimal manyAccountSum = sum.abs(); + if(manyAccountSum.compareTo(depotHead.getChangeAmount().abs())!=0) { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_MANY_ACCOUNT_FAILED_CODE, + String.format(ExceptionConstants.DEPOT_HEAD_MANY_ACCOUNT_FAILED_MSG)); + } + depotHead.setAccountMoneyList(accountMoneyList); + } + //校验累计扣除订金是否超出订单中的金额 + if(depotHead.getDeposit()!=null && StringUtil.isNotEmpty(depotHead.getLinkNumber())) { + BigDecimal finishDeposit = depotHeadMapperEx.getFinishDepositByNumberExceptCurrent(depotHead.getLinkNumber(), depotHead.getNumber()); + //订单中的订金金额 + BigDecimal changeAmount = getDepotHead(depotHead.getLinkNumber()).getChangeAmount(); + if(changeAmount!=null) { + BigDecimal preDeposit = changeAmount.abs(); + if(depotHead.getDeposit().add(finishDeposit).compareTo(preDeposit)>0) { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_DEPOSIT_OVER_PRE_CODE, + String.format(ExceptionConstants.DEPOT_HEAD_DEPOSIT_OVER_PRE_MSG)); + } + } + } + //校验附件的数量 + if(StringUtil.isNotEmpty(depotHead.getFileName())) { + String[] fileArr = depotHead.getFileName().split(","); + if(fileArr.length>4) { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_FILE_NUM_LIMIT_CODE, + String.format(ExceptionConstants.DEPOT_HEAD_FILE_NUM_LIMIT_MSG, 4)); + } + } + depotHeadMapper.insertSelective(depotHead); + /**入库和出库处理预付款信息*/ + if(BusinessConstants.PAY_TYPE_PREPAID.equals(depotHead.getPayType())){ + if(depotHead.getOrganId()!=null) { + BigDecimal currentAdvanceIn = supplierService.getSupplier(depotHead.getOrganId()).getAdvanceIn(); + if(currentAdvanceIn.compareTo(depotHead.getTotalPrice())>=0) { + //更新会员的预付款 + supplierService.updateAdvanceIn(depotHead.getOrganId()); + } else { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_MEMBER_PAY_LACK_CODE, + String.format(ExceptionConstants.DEPOT_HEAD_MEMBER_PAY_LACK_MSG)); + } + } + } + //根据单据编号查询单据id + DepotHeadExample dhExample = new DepotHeadExample(); + dhExample.createCriteria().andNumberEqualTo(depotHead.getNumber()).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list = depotHeadMapper.selectByExample(dhExample); + if(list!=null) { + Long headId = list.get(0).getId(); + /*入库和出库处理单据子表信息*/ + depotItemService.saveDetials(rows,headId, "add", null, request); + /*更新最终欠款*/ + updateLastDebtByBillId(depotHead.getDebt(), headId); + /*更新剩余订金*/ + updateLastDepositByNumber(depotHead.getLinkNumber()); + } + String statusStr = depotHead.getStatus().equals("1")?"[审核]":""; + logService.insertLog("单据", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_ADD).append(depotHead.getNumber()).append(statusStr).toString(), + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); + } + + /** + * 更新单据主表及单据子表信息 + * @param beanJson + * @param rows + * @param request + * @throws Exception + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public void updateDepotHeadAndDetail(String beanJson, String rows,HttpServletRequest request)throws Exception { + /**更新单据主表信息*/ + DepotHead depotHead = JSONObject.parseObject(beanJson, DepotHead.class); + forceHiddenPaymentAmountToZero(depotHead); + //判断用户是否已经登录过,登录过不再处理 + User userInfo=userService.getCurrentUser(); + //通过redis去校验重复 + checkExistByRedis(userInfo, depotHead); + //校验单号是否重复 + if(checkIsBillNumberExist(depotHead.getId(), depotHead.getNumber())>0) { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_BILL_NUMBER_EXIST_CODE, + String.format(ExceptionConstants.DEPOT_HEAD_BILL_NUMBER_EXIST_MSG)); + } + //校验是否同时录入关联请购单号和关联订单号 + if(StringUtil.isNotEmpty(depotHead.getLinkNumber()) && StringUtil.isNotEmpty(depotHead.getLinkApply())) { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_ITEM_EXIST_REPEAT_NO_FAILED_CODE, + String.format(ExceptionConstants.DEPOT_ITEM_EXIST_REPEAT_NO_FAILED_MSG)); + } + //校验单据状态,如果不是未审核则提示 + if(!"0".equals(getDepotHead(depotHead.getId()).getStatus())) { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_BILL_CANNOT_EDIT_CODE, + String.format(ExceptionConstants.DEPOT_HEAD_BILL_CANNOT_EDIT_MSG)); + } + //获取之前的关联单据信息 + DepotHead preDepotHead = getDepotHead(depotHead.getId()); + //获取之前的会员id + Long preOrganId = getDepotHead(depotHead.getId()).getOrganId(); + String subType = depotHead.getSubType(); + //结算账户校验 + if("采购".equals(subType) || "采购退货".equals(subType) || "销售".equals(subType) || "销售退货".equals(subType)) { + if (StringUtil.isEmpty(depotHead.getAccountIdList()) && depotHead.getAccountId() == null) { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_ACCOUNT_FAILED_CODE, + String.format(ExceptionConstants.DEPOT_HEAD_ACCOUNT_FAILED_MSG)); + } + } + if(StringUtil.isNotEmpty(depotHead.getAccountIdList())){ + depotHead.setAccountIdList(depotHead.getAccountIdList().replace("[", "").replace("]", "").replaceAll("\"", "")); + } + if(StringUtil.isNotEmpty(depotHead.getAccountMoneyList())) { + //校验多账户的结算金额 + String accountMoneyList = depotHead.getAccountMoneyList().replace("[", "").replace("]", "").replaceAll("\"", ""); + BigDecimal sum = StringUtil.getArrSum(accountMoneyList.split(",")); + BigDecimal manyAccountSum = sum.abs(); + if(manyAccountSum.compareTo(depotHead.getChangeAmount().abs())!=0) { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_MANY_ACCOUNT_FAILED_CODE, + String.format(ExceptionConstants.DEPOT_HEAD_MANY_ACCOUNT_FAILED_MSG)); + } + depotHead.setAccountMoneyList(accountMoneyList); + } + //校验累计扣除订金是否超出订单中的金额 + if(depotHead.getDeposit()!=null && StringUtil.isNotEmpty(depotHead.getLinkNumber())) { + BigDecimal finishDeposit = depotHeadMapperEx.getFinishDepositByNumberExceptCurrent(depotHead.getLinkNumber(), depotHead.getNumber()); + //订单中的订金金额 + BigDecimal changeAmount = getDepotHead(depotHead.getLinkNumber()).getChangeAmount(); + if(changeAmount!=null) { + BigDecimal preDeposit = changeAmount.abs(); + if(depotHead.getDeposit().add(finishDeposit).compareTo(preDeposit)>0) { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_DEPOSIT_OVER_PRE_CODE, + String.format(ExceptionConstants.DEPOT_HEAD_DEPOSIT_OVER_PRE_MSG)); + } + } + } + //校验附件的数量 + if(StringUtil.isNotEmpty(depotHead.getFileName())) { + String[] fileArr = depotHead.getFileName().split(","); + if(fileArr.length>4) { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_FILE_NUM_LIMIT_CODE, + String.format(ExceptionConstants.DEPOT_HEAD_FILE_NUM_LIMIT_MSG, 4)); + } + } + depotHeadMapper.updateByPrimaryKeySelective(depotHead); + //如果存在多账户结算需要将原账户的id置空 + if(StringUtil.isNotEmpty(depotHead.getAccountIdList())) { + depotHeadMapperEx.setAccountIdToNull(depotHead.getId()); + } + /**入库和出库处理预付款信息*/ + if(BusinessConstants.PAY_TYPE_PREPAID.equals(depotHead.getPayType())){ + if(depotHead.getOrganId()!=null){ + BigDecimal currentAdvanceIn = supplierService.getSupplier(depotHead.getOrganId()).getAdvanceIn(); + if(currentAdvanceIn.compareTo(depotHead.getTotalPrice())>=0) { + //更新会员的预付款 + supplierService.updateAdvanceIn(depotHead.getOrganId()); + if(null != preOrganId && !preOrganId.equals(depotHead.getOrganId())) { + //更新之前会员的预付款 + supplierService.updateAdvanceIn(preOrganId); + } + } else { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_MEMBER_PAY_LACK_CODE, + String.format(ExceptionConstants.DEPOT_HEAD_MEMBER_PAY_LACK_MSG)); + } + } + } + /*入库和出库处理单据子表信息*/ + depotItemService.saveDetials(rows,depotHead.getId(), "update", preDepotHead, request); + /*更新最终欠款*/ + updateLastDebtByBillId(depotHead.getDebt(), depotHead.getId()); + /*更新剩余订金*/ + updateLastDepositByNumber(depotHead.getLinkNumber()); + String statusStr = depotHead.getStatus().equals("1")?"[审核]":""; + logService.insertLog("单据", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_EDIT).append(depotHead.getNumber()).append(statusStr).toString(), + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); + } + + /** Purchase order, sale order, purchase in and sale out hide payment input on the frontend. */ + private void forceHiddenPaymentAmountToZero(DepotHead depotHead) { + if (BusinessConstants.SUB_TYPE_PURCHASE_ORDER.equals(depotHead.getSubType()) + || BusinessConstants.SUB_TYPE_SALES_ORDER.equals(depotHead.getSubType()) + || BusinessConstants.SUB_TYPE_PURCHASE.equals(depotHead.getSubType()) + || BusinessConstants.SUB_TYPE_SALES.equals(depotHead.getSubType())) { + depotHead.setChangeAmount(BigDecimal.ZERO); + } + if (BusinessConstants.SUB_TYPE_PURCHASE.equals(depotHead.getSubType()) + || BusinessConstants.SUB_TYPE_SALES.equals(depotHead.getSubType())) { + BigDecimal discountLastMoney = nullToZero(depotHead.getDiscountLastMoney()); + BigDecimal otherMoney = nullToZero(depotHead.getOtherMoney()); + BigDecimal deposit = nullToZero(depotHead.getDeposit()); + depotHead.setDebt(discountLastMoney.add(otherMoney).subtract(deposit)); + } + } + + /** + * 通过redis去校验重复 + * @param userInfo + * @param depotHead + */ + private void checkExistByRedis(User userInfo, DepotHead depotHead) { + String keyNo = userInfo.getLoginName() + "_" + depotHead.getNumber(); + String keyValue = redisService.getCacheObject(keyNo); + if(StringUtil.isNotEmpty(keyValue)) { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_SUBMIT_REPEAT_FAILED_CODE, + String.format(ExceptionConstants.DEPOT_HEAD_SUBMIT_REPEAT_FAILED_MSG)); + } else { + redisService.storageKeyWithTime(keyNo, depotHead.getNumber(), 2L); + } + } + + /** + * 更新最终欠款 + * @param billId + * @return + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public void updateLastDebtByBillId(BigDecimal debt, Long billId) throws Exception { + BigDecimal financialBillPrice = accountHeadService.getFinancialBillPriceByBillId(billId); + if(debt!=null && financialBillPrice!=null) { + DepotHead dh = new DepotHead(); + dh.setId(billId); + dh.setLastDebt(debt.subtract(financialBillPrice)); + depotHeadMapper.updateByPrimaryKeySelective(dh); + } + } + + /** + * 更新剩余订金 + * @param linkNumber + * @return + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public void updateLastDepositByNumber(String linkNumber) throws Exception { + if(StringUtil.isNotEmpty(linkNumber)) { + DepotHead originalBill = getDepotHead(linkNumber); + //订单中的原订金 + BigDecimal originalDeposit = originalBill.getChangeAmount()!=null?originalBill.getChangeAmount().abs():BigDecimal.ZERO; + BigDecimal allDeposit = depotHeadMapperEx.getAllDepositByLinkNumber(linkNumber); + if(allDeposit != null) { + DepotHead dh = new DepotHead(); + dh.setId(originalBill.getId()); + dh.setLastDeposit(originalDeposit.subtract(allDeposit)); + depotHeadMapper.updateByPrimaryKeySelective(dh); + } + } + } + + public Map getBuyAndSaleStatistics(String today, String monthFirstDay, String yesterdayBegin, String yesterdayEnd, + String yearBegin, String yearEnd, HttpServletRequest request) throws Exception { + Long userId = userService.getUserId(request); + String priceLimit = userService.getRoleTypeByUserId(userId).getPriceLimit(); + Boolean forceFlag = systemConfigService.getForceApprovalFlag(); + String[] creatorArray = getCreatorArray(); + List inOutPriceVoList = depotHeadMapperEx.getBuyAndSaleStatisticsList(yearBegin, yearEnd, creatorArray, forceFlag); + + String[] periods = {"today", "month", "yesterday", "year"}; + String[] types = {"Buy", "BuyBack", "Sale", "SaleBack", "RetailSale", "RetailSaleBack"}; + + Map statistics = new HashMap<>(); + + // 初始化 statistics Map + for (String period : periods) { + for (String type : types) { + statistics.put(period + type, BigDecimal.ZERO); + } + } + + Date todayDate = Tools.strToDate(today); + Date monthFirstDate = Tools.strToDate(monthFirstDay); + Date yesterdayStartDate = Tools.strToDate(yesterdayBegin); + Date yesterdayEndDate = Tools.strToDate(yesterdayEnd); + Date yearStartDate = Tools.strToDate(yearBegin); + Date yearEndDate = Tools.strToDate(yearEnd); + + for (InOutPriceVo item : inOutPriceVoList) { + Date operTime = item.getOperTime(); + BigDecimal discountLastMoney = nullToZero(item.getDiscountLastMoney()); + BigDecimal totalPriceAbs = nullToZero(item.getTotalPrice()).abs(); + + if (isWithinRange(operTime, todayDate, Tools.strToDate(getNow3()))) { + updateStatistics(statistics, item, "today", discountLastMoney, totalPriceAbs); + } + + if (isWithinRange(operTime, monthFirstDate, Tools.strToDate(getNow3()))) { + updateStatistics(statistics, item, "month", discountLastMoney, totalPriceAbs); + } + + if (isWithinRange(operTime, yesterdayStartDate, yesterdayEndDate)) { + updateStatistics(statistics, item, "yesterday", discountLastMoney, totalPriceAbs); + } + + if (isWithinRange(operTime, yearStartDate, yearEndDate)) { + updateStatistics(statistics, item, "year", discountLastMoney, totalPriceAbs); + } + } + + Map result = new HashMap<>(); + for (String period : periods) { + result.put(period + "Buy", roleService.parseHomePriceByLimit(statistics.get(period + "Buy").subtract(statistics.get(period + "BuyBack")), "buy", priceLimit, "***", request)); + result.put(period + "Sale", roleService.parseHomePriceByLimit(statistics.get(period + "Sale").subtract(statistics.get(period + "SaleBack")), "sale", priceLimit, "***", request)); + result.put(period + "RetailSale", roleService.parseHomePriceByLimit(statistics.get(period + "RetailSale").subtract(statistics.get(period + "RetailSaleBack")), "retail", priceLimit, "***", request)); + } + + return result; + } + + private boolean isWithinRange(Date operTime, Date startDate, Date endDate) { + return operTime.compareTo(startDate) >= 0 && operTime.compareTo(endDate) <= 0; + } + + private BigDecimal nullToZero(BigDecimal value) { + return value == null ? BigDecimal.ZERO : value; + } + + private void updateStatistics(Map statistics, InOutPriceVo item, String period, BigDecimal discountLastMoney, BigDecimal totalPriceAbs) { + switch (item.getType()) { + case "入库": + switch (item.getSubType()) { + case "采购": + statistics.put(period + "Buy", statistics.get(period + "Buy").add(discountLastMoney)); + break; + case "销售退货": + statistics.put(period + "SaleBack", statistics.get(period + "SaleBack").add(discountLastMoney)); + break; + case "零售退货": + statistics.put(period + "RetailSaleBack", statistics.get(period + "RetailSaleBack").add(totalPriceAbs)); + break; + } + break; + case "出库": + switch (item.getSubType()) { + case "采购退货": + statistics.put(period + "BuyBack", statistics.get(period + "BuyBack").add(discountLastMoney)); + break; + case "销售": + statistics.put(period + "Sale", statistics.get(period + "Sale").add(discountLastMoney)); + break; + case "零售": + statistics.put(period + "RetailSale", statistics.get(period + "RetailSale").add(totalPriceAbs)); + break; + } + break; + } + } + + + public DepotHead getDepotHead(String number)throws Exception { + DepotHead depotHead = new DepotHead(); + try{ + DepotHeadExample example = new DepotHeadExample(); + example.createCriteria().andNumberEqualTo(number).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list = depotHeadMapper.selectByExample(example); + if(null!=list && list.size()>0) { + depotHead = list.get(0); + } + }catch(Exception e){ + JshException.readFail(logger, e); + } + return depotHead; + } + + public List debtList(Long organId, String materialParam, String number, String beginTime, String endTime, + String status, String type, String subType, Integer offset, Integer rows) { + List resList = new ArrayList<>(); + try{ + String depotIds = depotService.findDepotStrByCurrentUser(); + String [] depotArray=depotIds.split(","); + String [] creatorArray = getCreatorArray(); + beginTime = Tools.parseDayToTime(beginTime,BusinessConstants.DAY_FIRST_TIME); + endTime = Tools.parseDayToTime(endTime,BusinessConstants.DAY_LAST_TIME); + List list=depotHeadMapperEx.debtList(organId, creatorArray, status, number, type, subType, + beginTime, endTime, materialParam, depotArray, offset, rows); + if (null != list) { + resList = parseDebtBillList(list); + } + }catch(Exception e){ + JshException.readFail(logger, e); + } + return resList; + } + + public int debtListCount(Long organId, String materialParam, String number, String beginTime, String endTime, + String status, String type, String subType) { + int total = 0; + try { + String depotIds = depotService.findDepotStrByCurrentUser(); + String[] depotArray = depotIds.split(","); + String[] creatorArray = getCreatorArray(); + beginTime = Tools.parseDayToTime(beginTime, BusinessConstants.DAY_FIRST_TIME); + endTime = Tools.parseDayToTime(endTime, BusinessConstants.DAY_LAST_TIME); + total = depotHeadMapperEx.debtListCount(organId, creatorArray, status, number, type, subType, + beginTime, endTime, materialParam, depotArray); + } catch(Exception e){ + JshException.readFail(logger, e); + } + return total; + } + + public void debtExport(Long organId, String materialParam, String number, String type, String subType, + String beginTime, String endTime, String status, String mpList, + HttpServletRequest request, HttpServletResponse response) { + try { + Long userId = userService.getUserId(request); + String priceLimit = userService.getRoleTypeByUserId(userId).getPriceLimit(); + String billCategory = getBillCategory(subType); + String depotIds = depotService.findDepotStrByCurrentUser(); + String[] depotArray = depotIds.split(","); + String[] creatorArray = getCreatorArray(); + status = StringUtil.isNotEmpty(status) ? status : null; + beginTime = Tools.parseDayToTime(beginTime, BusinessConstants.DAY_FIRST_TIME); + endTime = Tools.parseDayToTime(endTime, BusinessConstants.DAY_LAST_TIME); + List dhList = new ArrayList<>(); + List list = depotHeadMapperEx.debtList(organId, creatorArray, status, number, type, subType, + beginTime, endTime, materialParam, depotArray, null, null); + if (null != list) { + dhList = parseDebtBillList(list); + } + //生成Excel文件 + String fileName = "单据信息"; + File file = new File(fileExportTmp + fileName); + WritableWorkbook wtwb = Workbook.createWorkbook(file); + String oneTip = ""; + String sheetOneStr = ""; + if("采购".equals(subType)) { + oneTip = "供应商对账列表"; + sheetOneStr = "供应商,单据编号,关联单据,商品信息,单据日期,操作员,单据金额,本单欠款,已付欠款,待付欠款,备注"; + } else if("出库".equals(type) && "销售".equals(subType)) { + oneTip = "客户对账列表"; + sheetOneStr = "客户,单据编号,关联单据,商品信息,单据日期,操作员,单据金额,本单欠款,已收欠款,待收欠款,备注"; + } + if(StringUtil.isNotEmpty(beginTime) && StringUtil.isNotEmpty(endTime)) { + oneTip = oneTip + "(" + beginTime + "至" + endTime + ")"; + } + List sheetOneList = StringUtil.strToStringList(sheetOneStr); + String[] sheetOneArr = StringUtil.listToStringArray(sheetOneList); + List idList = new ArrayList<>(); + List billList = new ArrayList<>(); + Map billListCacheVoMap = new HashMap<>(); + for (DepotHeadVo4List dh : dhList) { + idList.add(dh.getId()); + BillListCacheVo billListCacheVo = new BillListCacheVo(); + billListCacheVo.setNumber(dh.getNumber()); + billListCacheVo.setOrganName(dh.getOrganName()); + billListCacheVo.setOperTimeStr(getCenternTime(dh.getOperTime())); + billListCacheVoMap.put(dh.getId(), billListCacheVo); + String[] objs = new String[sheetOneArr.length]; + objs[0] = dh.getOrganName(); + objs[1] = dh.getNumber(); + objs[2] = dh.getLinkNumber(); + objs[3] = dh.getMaterialsList(); + objs[4] = dh.getOperTimeStr(); + objs[5] = dh.getUserName(); + BigDecimal discountLastMoney = dh.getDiscountLastMoney() == null ? BigDecimal.ZERO : dh.getDiscountLastMoney(); + BigDecimal otherMoney = dh.getOtherMoney() == null ? BigDecimal.ZERO : dh.getOtherMoney(); + BigDecimal deposit = dh.getDeposit() == null ? BigDecimal.ZERO : dh.getDeposit(); + objs[6] = parseDecimalToStr(discountLastMoney.add(otherMoney).subtract(deposit), 2); + objs[7] = parseDecimalToStr(dh.getNeedDebt(), 2); + objs[8] = parseDecimalToStr(dh.getFinishDebt(), 2); + objs[9] = parseDecimalToStr(dh.getDebt(), 2); + objs[10] = dh.getRemark(); + billList.add(objs); + } + ExcelUtils.exportObjectsManySheet(wtwb, oneTip, sheetOneArr, "单据列表", 0, billList); + //导出明细数据 + if(idList.size()>0) { + List dataList = depotItemMapperEx.getBillDetailListByIds(idList); + String twoTip = ""; + String sheetTwoStr = ""; + if ("采购".equals(subType)) { + twoTip = "供应商单据明细"; + sheetTwoStr = "供应商,单据编号,单据日期,仓库名称,条码,名称,规格,型号,颜色,品牌,制造商," + mpList + ",单位,序列号,批号,有效期,多属性,数量,单价,金额,税率(%),税额,价税合计,重量,备注"; + } else if ("销售".equals(subType)) { + twoTip = "客户单据明细"; + sheetTwoStr = "客户,单据编号,单据日期,仓库名称,条码,名称,规格,型号,颜色,品牌,制造商," + mpList + ",单位,序列号,批号,有效期,多属性,数量,单价,金额,税率(%),税额,价税合计,重量,备注"; + } + if (StringUtil.isNotEmpty(beginTime) && StringUtil.isNotEmpty(endTime)) { + twoTip = twoTip + "(" + beginTime + "至" + endTime + ")"; + } + List sheetTwoList = StringUtil.strToStringList(sheetTwoStr); + String[] sheetTwoArr = StringUtil.listToStringArray(sheetTwoList); + List billDetail = new ArrayList<>(); + for (DepotItemVo4WithInfoEx diEx : dataList) { + String[] objs = new String[sheetTwoArr.length]; + BillListCacheVo billListCacheVo = billListCacheVoMap.get(diEx.getHeaderId()); + objs[0] = billListCacheVo != null ? billListCacheVo.getOrganName() : ""; + objs[1] = billListCacheVo != null ? billListCacheVo.getNumber() : ""; + objs[2] = billListCacheVo != null ? billListCacheVo.getOperTimeStr() : ""; + objs[3] = diEx.getDepotId() == null ? "" : diEx.getDepotName(); + objs[4] = diEx.getBarCode(); + objs[5] = diEx.getMName(); + objs[6] = diEx.getMStandard(); + objs[7] = diEx.getMModel(); + objs[8] = diEx.getMColor(); + objs[9] = diEx.getBrand(); + objs[10] = diEx.getMMfrs(); + objs[11] = diEx.getMOtherField1(); + objs[12] = diEx.getMOtherField2(); + objs[13] = diEx.getMOtherField3(); + objs[14] = diEx.getMaterialUnit(); + objs[15] = diEx.getSnList(); + objs[16] = diEx.getBatchNumber(); + objs[17] = Tools.parseDateToStr(diEx.getExpirationDate()); + objs[18] = diEx.getSku(); + objs[19] = parseDecimalToStr(diEx.getOperNumber(), 2); + objs[20] = parseDecimalToStr(roleService.parseBillPriceByLimit(diEx.getUnitPrice(), billCategory, priceLimit, request), 2); + objs[21] = parseDecimalToStr(roleService.parseBillPriceByLimit(diEx.getAllPrice(), billCategory, priceLimit, request), 2); + objs[22] = parseDecimalToStr(roleService.parseBillPriceByLimit(diEx.getTaxRate(), billCategory, priceLimit, request), 2); + objs[23] = parseDecimalToStr(roleService.parseBillPriceByLimit(diEx.getTaxMoney(), billCategory, priceLimit, request), 2); + objs[24] = parseDecimalToStr(roleService.parseBillPriceByLimit(diEx.getTaxLastMoney(), billCategory, priceLimit, request), 2); + BigDecimal allWeight = diEx.getBasicNumber() == null || diEx.getWeight() == null ? BigDecimal.ZERO : diEx.getBasicNumber().multiply(diEx.getWeight()); + objs[25] = parseDecimalToStr(allWeight, 2); + objs[26] = diEx.getRemark(); + billDetail.add(objs); + } + ExcelUtils.exportObjectsManySheet(wtwb, twoTip, sheetTwoArr, "单据明细", 1, billDetail); + } + wtwb.write(); + wtwb.close(); + ExcelUtils.downloadExcel(file, file.getName(), response); + } catch(Exception e){ + JshException.readFail(logger, e); + } + } + + public List parseDebtBillList(List list) throws Exception { + List idList = new ArrayList<>(); + List dhList = new ArrayList<>(); + for (DepotHeadVo4List dh : list) { + idList.add(dh.getId()); + } + //通过批量查询去构造map + Map materialsListMap = findMaterialsListMapByHeaderIdList(idList); + for (DepotHeadVo4List dh : list) { + if(dh.getChangeAmount() != null) { + dh.setChangeAmount(dh.getChangeAmount().abs()); + } + if(dh.getTotalPrice() != null) { + dh.setTotalPrice(dh.getTotalPrice().abs()); + } + if(dh.getDeposit() == null) { + dh.setDeposit(BigDecimal.ZERO); + } + if(dh.getOperTime() != null) { + dh.setOperTimeStr(getCenternTime(dh.getOperTime())); + } + BigDecimal discountLastMoney = dh.getDiscountLastMoney()!=null?dh.getDiscountLastMoney():BigDecimal.ZERO; + BigDecimal otherMoney = dh.getOtherMoney()!=null?dh.getOtherMoney():BigDecimal.ZERO; + BigDecimal deposit = dh.getDeposit()!=null?dh.getDeposit():BigDecimal.ZERO; + BigDecimal changeAmount = dh.getChangeAmount()!=null?dh.getChangeAmount().abs():BigDecimal.ZERO; + if (BusinessConstants.SUB_TYPE_RETAIL.equals(dh.getSubType()) + || BusinessConstants.SUB_TYPE_RETAIL_RETURN.equals(dh.getSubType())) { + changeAmount = BigDecimal.ZERO; + } + //本单欠款(如果退货则为负数) + dh.setNeedDebt(discountLastMoney.add(otherMoney).subtract(deposit.add(changeAmount))); + if(BusinessConstants.SUB_TYPE_PURCHASE_RETURN.equals(dh.getSubType()) || BusinessConstants.SUB_TYPE_SALES_RETURN.equals(dh.getSubType())) { + dh.setNeedDebt(BigDecimal.ZERO.subtract(dh.getNeedDebt())); + } + BigDecimal needDebt = dh.getNeedDebt()!=null?dh.getNeedDebt():BigDecimal.ZERO; + BigDecimal finishDebt = accountItemService.getEachAmountByBillId(dh.getId()); + finishDebt = finishDebt!=null?finishDebt:BigDecimal.ZERO; + //已收欠款 + dh.setFinishDebt(finishDebt); + //待收欠款 + dh.setDebt(needDebt.subtract(finishDebt)); + //商品信息简述 + if(materialsListMap!=null) { + dh.setMaterialsList(materialsListMap.get(dh.getId())); + } + dhList.add(dh); + } + return dhList; + } + + public String getBillCategory(String subType) { + if(subType.equals("零售") || subType.equals("零售退货")) { + return "retail"; + } else if(subType.equals("销售订单") || subType.equals("销售") || subType.equals("销售退货")) { + return "sale"; + } else { + return "buy"; + } + } + + /** + * 格式化金额样式 + * @param decimal + * @param num + * @return + */ + private String parseDecimalToStr(BigDecimal decimal, Integer num) { + return decimal == null ? "" : decimal.setScale(num, BigDecimal.ROUND_HALF_UP).toString(); + } + + private String parseStatusToStr(String status, String type) { + if(StringUtil.isNotEmpty(status)) { + if("purchase".equals(type)) { + switch (status) { + case "2": + return "完成采购"; + case "3": + return "部分采购"; + } + } else if("sale".equals(type)) { + switch (status) { + case "2": + return "完成销售"; + case "3": + return "部分销售"; + } + } + switch (status) { + case "0": + return "未审核"; + case "1": + return "已审核"; + case "9": + return "审核中"; + } + } + return ""; + } + + public List waitBillList(String number, String materialParam, String type, String subType, + String beginTime, String endTime, String status, int offset, int rows) { + List resList = new ArrayList<>(); + try{ + String [] depotArray = getDepotArray("其它"); + //给仓管可以看全部的单据(此时可以通过分配仓库去控制权限) + String [] creatorArray = null; + String [] subTypeArray = StringUtil.isNotEmpty(subType) ? subType.split(",") : null; + String [] statusArray = StringUtil.isNotEmpty(status) ? status.split(",") : null; + Map accountMap = accountService.getAccountMap(); + beginTime = Tools.parseDayToTime(beginTime,BusinessConstants.DAY_FIRST_TIME); + endTime = Tools.parseDayToTime(endTime,BusinessConstants.DAY_LAST_TIME); + List list = depotHeadMapperEx.waitBillList(type, subTypeArray, creatorArray, statusArray, number, beginTime, endTime, + materialParam, depotArray, offset, rows); + if (null != list) { + List idList = new ArrayList<>(); + for (DepotHeadVo4List dh : list) { + idList.add(dh.getId()); + } + //通过批量查询去构造map + Map materialsListMap = findMaterialsListMapByHeaderIdList(idList); + Map materialCountListMap = getMaterialCountListMapByHeaderIdList(idList); + for (DepotHeadVo4List dh : list) { + if(accountMap!=null && StringUtil.isNotEmpty(dh.getAccountIdList()) && StringUtil.isNotEmpty(dh.getAccountMoneyList())) { + String accountStr = accountService.getAccountStrByIdAndMoney(accountMap, dh.getAccountIdList(), dh.getAccountMoneyList()); + dh.setAccountName(accountStr); + } + if(dh.getOperTime() != null) { + dh.setOperTimeStr(getCenternTime(dh.getOperTime())); + } + //商品信息简述 + if(materialsListMap!=null) { + dh.setMaterialsList(materialsListMap.get(dh.getId())); + } + //商品总数量 + if(materialCountListMap!=null) { + dh.setMaterialCount(materialCountListMap.get(dh.getId())); + } + resList.add(dh); + } + } + }catch(Exception e){ + JshException.readFail(logger, e); + } + return resList; + } + + public Long waitBillCount(String number, String materialParam, String type, String subType, + String beginTime, String endTime, String status) { + Long result=null; + try{ + String [] depotArray = getDepotArray("其它"); + //给仓管可以看全部的单据(此时可以通过分配仓库去控制权限) + String [] creatorArray = null; + String [] subTypeArray = StringUtil.isNotEmpty(subType) ? subType.split(",") : null; + String [] statusArray = StringUtil.isNotEmpty(status) ? status.split(",") : null; + beginTime = Tools.parseDayToTime(beginTime,BusinessConstants.DAY_FIRST_TIME); + endTime = Tools.parseDayToTime(endTime,BusinessConstants.DAY_LAST_TIME); + result=depotHeadMapperEx.waitBillCount(type, subTypeArray, creatorArray, statusArray, number, beginTime, endTime, + materialParam, depotArray); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public void batchAddDepotHeadAndDetail(String ids, HttpServletRequest request) throws Exception { + List dhList = getDepotHeadListByIds(ids); + StringBuilder sb = new StringBuilder(); + User userInfo=userService.getCurrentUser(); + for(DepotHead depotHead : dhList) { + String prefixNo = BusinessConstants.DEPOTHEAD_TYPE_IN.equals(depotHead.getType())?"QTRK":"QTCK"; + //关联单据单号 + String oldNumber = depotHead.getNumber(); + //校验单据最新状态不能进行批量操作 + if("0".equals(depotHead.getStatus()) || "2".equals(depotHead.getStatus()) || "9".equals(depotHead.getStatus())) { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_ITEM_EXIST_NEW_STATUS_FAILED_CODE, + String.format(ExceptionConstants.DEPOT_ITEM_EXIST_NEW_STATUS_FAILED_MSG, oldNumber, depotHead.getType())); + } + //校验是否是部分入库或者部分出库 + if("3".equals(depotHead.getStatus())) { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_ITEM_EXIST_PARTIALLY_STATUS_FAILED_CODE, + String.format(ExceptionConstants.DEPOT_ITEM_EXIST_PARTIALLY_STATUS_FAILED_MSG, oldNumber, depotHead.getType())); + } + depotHead.setLinkNumber(oldNumber); + //给单号重新赋值 + String number = prefixNo + sequenceService.buildOnlyNumber(); + depotHead.setNumber(number); + depotHead.setDefaultNumber(number); + depotHead.setOperTime(new Date()); + depotHead.setSubType(BusinessConstants.SUB_TYPE_OTHER); + depotHead.setChangeAmount(BigDecimal.ZERO); + depotHead.setTotalPrice(BigDecimal.ZERO); + depotHead.setDiscountLastMoney(BigDecimal.ZERO); + depotHead.setCreator(userInfo==null?null:userInfo.getId()); + depotHead.setOrganId(null); + depotHead.setAccountId(null); + depotHead.setAccountIdList(null); + depotHead.setAccountMoneyList(null); + depotHead.setFileName(null); + depotHead.setSalesMan(null); + depotHead.setStatus("0"); + depotHead.setTenantId(null); + //查询明细 + List itemList = depotItemService.getDetailList(depotHead.getId()); + depotHead.setId(null); + JSONArray rowArr = new JSONArray(); + for(DepotItemVo4WithInfoEx item: itemList) { + if("1".equals(item.getEnableSerialNumber())) { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_ITEM_EXIST_SERIAL_NUMBER_FAILED_CODE, + String.format(ExceptionConstants.DEPOT_ITEM_EXIST_SERIAL_NUMBER_FAILED_MSG, oldNumber)); + } + if("1".equals(item.getEnableBatchNumber())) { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_ITEM_EXIST_BATCH_NUMBER_FAILED_CODE, + String.format(ExceptionConstants.DEPOT_ITEM_EXIST_BATCH_NUMBER_FAILED_MSG, oldNumber)); + } + item.setUnitPrice(BigDecimal.ZERO); + item.setAllPrice(BigDecimal.ZERO); + item.setLinkId(item.getId()); + item.setTenantId(null); + String itemStr = JSONObject.toJSONString(item); + JSONObject itemObj = JSONObject.parseObject(itemStr); + itemObj.put("unit", itemObj.getString("materialUnit")); + rowArr.add(itemObj.toJSONString()); + } + String rows = rowArr.toJSONString(); + //新增其它入库单或其它出库单 + sb.append("[").append(depotHead.getNumber()).append("]"); + depotHeadMapper.insertSelective(depotHead); + //根据单据编号查询单据id + DepotHeadExample dhExample = new DepotHeadExample(); + dhExample.createCriteria().andNumberEqualTo(depotHead.getNumber()).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list = depotHeadMapper.selectByExample(dhExample); + if(list!=null) { + Long headId = list.get(0).getId(); + /**入库和出库处理单据子表信息*/ + depotItemService.saveDetials(rows, headId, "add", null, request); + } + } + logService.insertLog("单据", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_BATCH_ADD).append(sb).toString(), + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); + } + + /** + * 快捷编辑单据 + * @param id 单据id + * @param remark 备注内容 + * @param request 请求对象 + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public void quickEditDepotHead(Long id, String remark, HttpServletRequest request) throws Exception { + try { + // 查询单据获取编号 + DepotHead oldDepotHead = depotHeadMapper.selectByPrimaryKey(id); + if (oldDepotHead == null) { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_EDIT_FAILED_CODE, + ExceptionConstants.DEPOT_HEAD_EDIT_FAILED_MSG); + } + DepotHead depotHead = new DepotHead(); + depotHead.setId(id); + depotHead.setRemark(remark); + depotHeadMapper.updateByPrimaryKeySelective(depotHead); + // 记录日志,使用单据编号 + String oldRemark = StringUtil.isNotEmpty(oldDepotHead.getRemark())? ",原备注为:"+oldDepotHead.getRemark():""; + logService.insertLog("单据", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_EDIT).append("备注,单据编号:") + .append(oldDepotHead.getNumber()).append(oldRemark).toString(), + request); + } catch (Exception e) { + JshException.writeFail(logger, e); + } + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/service/DepotItemService.java b/smtERP-boot/src/main/java/com/reallin/smt/service/DepotItemService.java new file mode 100644 index 0000000..b0d0f88 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/service/DepotItemService.java @@ -0,0 +1,1567 @@ +package com.reallin.smt.service; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.constants.BusinessConstants; +import com.reallin.smt.constants.ExceptionConstants; +import com.reallin.smt.datasource.entities.*; +import com.reallin.smt.datasource.mappers.*; +import com.reallin.smt.datasource.vo.*; +import com.reallin.smt.exception.BusinessRunTimeException; +import com.reallin.smt.exception.JshException; +import com.reallin.smt.utils.StringUtil; +import com.reallin.smt.utils.Tools; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.math.BigDecimal; +import java.util.*; + +@Service +public class DepotItemService { + private Logger logger = LoggerFactory.getLogger(DepotItemService.class); + + private final static String TYPE = "入库"; + private final static String SUM_TYPE = "number"; + private final static String IN = "in"; + private final static String OUT = "out"; + + @Resource + private DepotItemMapper depotItemMapper; + @Resource + private DepotItemMapperEx depotItemMapperEx; + @Resource + private MaterialService materialService; + @Resource + private MaterialExtendService materialExtendService; + @Resource + private SerialNumberMapperEx serialNumberMapperEx; + @Resource + private DepotHeadService depotHeadService; + @Resource + private DepotHeadMapper depotHeadMapper; + @Resource + private SerialNumberService serialNumberService; + @Resource + private UserService userService; + @Resource + private SystemConfigService systemConfigService; + @Resource + private DepotService depotService; + @Resource + private UnitService unitService; + @Resource + private MaterialCurrentStockMapper materialCurrentStockMapper; + @Resource + private MaterialCurrentStockMapperEx materialCurrentStockMapperEx; + @Resource + private LogService logService; + + public DepotItem getDepotItem(long id)throws Exception { + DepotItem result=null; + try{ + result=depotItemMapper.selectByPrimaryKey(id); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return result; + } + + public List getDepotItem()throws Exception { + DepotItemExample example = new DepotItemExample(); + example.createCriteria().andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list=null; + try{ + list=depotItemMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public List select(String name, Integer type, String remark, int offset, int rows)throws Exception { + List list=null; + try{ + list=depotItemMapperEx.selectByConditionDepotItem(name, type, remark, offset, rows); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public Long countDepotItem(String name, Integer type, String remark) throws Exception{ + Long result =null; + try{ + result=depotItemMapperEx.countsByDepotItem(name, type, remark); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int insertDepotItem(JSONObject obj, HttpServletRequest request)throws Exception { + DepotItem depotItem = JSONObject.parseObject(obj.toJSONString(), DepotItem.class); + int result =0; + try{ + result=depotItemMapper.insertSelective(depotItem); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int updateDepotItem(JSONObject obj, HttpServletRequest request)throws Exception { + DepotItem depotItem = JSONObject.parseObject(obj.toJSONString(), DepotItem.class); + int result =0; + try{ + result=depotItemMapper.updateByPrimaryKeySelective(depotItem); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int deleteDepotItem(Long id, HttpServletRequest request)throws Exception { + int result =0; + try{ + result=depotItemMapper.deleteByPrimaryKey(id); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteDepotItem(String ids, HttpServletRequest request)throws Exception { + List idList = StringUtil.strToLongList(ids); + DepotItemExample example = new DepotItemExample(); + example.createCriteria().andIdIn(idList); + int result =0; + try{ + result=depotItemMapper.deleteByExample(example); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + public int checkIsNameExist(Long id, String name)throws Exception { + DepotItemExample example = new DepotItemExample(); + example.createCriteria().andIdNotEqualTo(id).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list =null; + try{ + list=depotItemMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list==null?0:list.size(); + } + + public List findDetailByDepotIdsAndMaterialIdList(String depotIds, Boolean forceFlag, Boolean inOutManageFlag, String sku, String batchNumber, + String number, String beginTime, String endTime, Long mId, Integer offset, Integer rows)throws Exception { + String[] depotIdArrOld = null; + if(StringUtil.isNotEmpty(depotIds)) { + depotIdArrOld = depotIds.split(","); + } + List depotList = depotService.parseDepotListByArr(depotIdArrOld); + Long[] depotIdArray = StringUtil.listToLongArray(depotList); + List list =null; + try{ + list = depotItemMapperEx.findDetailByDepotIdsAndMaterialIdList(depotIdArray, forceFlag, inOutManageFlag, sku, batchNumber, number, beginTime, endTime, mId, offset, rows); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public Long findDetailByDepotIdsAndMaterialIdCount(String depotIds, Boolean forceFlag, Boolean inOutManageFlag, String sku, String batchNumber, + String number, String beginTime, String endTime, Long mId)throws Exception { + String[] depotIdArrOld = null; + if(StringUtil.isNotEmpty(depotIds)) { + depotIdArrOld = depotIds.split(","); + } + List depotList = depotService.parseDepotListByArr(depotIdArrOld); + Long[] depotIdArray = StringUtil.listToLongArray(depotList); + Long result =null; + try{ + result = depotItemMapperEx.findDetailByDepotIdsAndMaterialIdCount(depotIdArray, forceFlag, inOutManageFlag, sku, batchNumber, number, beginTime, endTime, mId); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int insertDepotItemWithObj(DepotItem depotItem)throws Exception { + int result =0; + try{ + result = depotItemMapper.insertSelective(depotItem); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int updateDepotItemWithObj(DepotItem depotItem)throws Exception { + int result =0; + try{ + result = depotItemMapper.updateByPrimaryKeySelective(depotItem); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + public List getListByHeaderId(Long headerId)throws Exception { + List list =null; + try{ + DepotItemExample example = new DepotItemExample(); + example.createCriteria().andHeaderIdEqualTo(headerId).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + list = depotItemMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + /** + * 查询当前单据中指定商品的明细信息 + * @param headerId + * @param meId + * @return + * @throws Exception + */ + public DepotItem getItemByHeaderIdAndMaterial(Long headerId, Long meId)throws Exception { + DepotItem depotItem = new DepotItem(); + try{ + DepotItemExample example = new DepotItemExample(); + example.createCriteria().andHeaderIdEqualTo(headerId).andMaterialExtendIdEqualTo(meId).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list = depotItemMapper.selectByExample(example); + if(list!=null && list.size()>0) { + depotItem = list.get(0); + } + }catch(Exception e){ + JshException.readFail(logger, e); + } + return depotItem; + } + + /** + * 查询被关联订单中指定商品的明细信息 + * @param linkStr + * @param meId + * @return + * @throws Exception + */ + public DepotItem getPreItemByHeaderIdAndMaterial(String linkStr, Long meId, Long linkId)throws Exception { + DepotItem depotItem = new DepotItem(); + try{ + DepotHead depotHead = depotHeadService.getDepotHead(linkStr); + if(null!=depotHead && null!=depotHead.getId()) { + DepotItemExample example = new DepotItemExample(); + example.createCriteria().andHeaderIdEqualTo(depotHead.getId()).andMaterialExtendIdEqualTo(meId).andIdEqualTo(linkId).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list = depotItemMapper.selectByExample(example); + if(list!=null && list.size()>0) { + depotItem = list.get(0); + } + } + }catch(Exception e){ + JshException.readFail(logger, e); + } + return depotItem; + } + + public List getDetailList(Long headerId)throws Exception { + List list =null; + try{ + list = depotItemMapperEx.getDetailList(headerId); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public List getInOutStock(String materialParam, List categoryIdList, String endTime, Integer offset, Integer rows)throws Exception { + List list =null; + try{ + list = depotItemMapperEx.getInOutStock(materialParam, categoryIdList, endTime, offset, rows); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public int getInOutStockCount(String materialParam, List categoryIdList, String endTime)throws Exception { + int result=0; + try{ + result = depotItemMapperEx.getInOutStockCount(materialParam, categoryIdList, endTime); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return result; + } + + public List getListWithBuyOrSale(String materialParam, String billType, + String beginTime, String endTime, String[] creatorArray, Long organId, String[] organArray, List categoryList, List depotList, Boolean forceFlag, Integer offset, Integer rows)throws Exception { + List list =null; + try{ + list = depotItemMapperEx.getListWithBuyOrSale(materialParam, billType, beginTime, endTime, creatorArray, organId, organArray, categoryList, depotList, forceFlag, offset, rows); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public int getListWithBuyOrSaleCount(String materialParam, String billType, + String beginTime, String endTime, String[] creatorArray, Long organId, String[] organArray, List categoryList, List depotList, Boolean forceFlag)throws Exception { + int result=0; + try{ + result = depotItemMapperEx.getListWithBuyOrSaleCount(materialParam, billType, beginTime, endTime, creatorArray, organId, organArray, categoryList, depotList, forceFlag); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return result; + } + + public BigDecimal buyOrSale(String type, String subType, Long meId, String beginTime, String endTime, + String[] creatorArray, Long organId, String [] organArray, List depotList, Boolean forceFlag, String sumType) throws Exception{ + BigDecimal result= BigDecimal.ZERO; + try{ + if (SUM_TYPE.equals(sumType)) { + result= depotItemMapperEx.buyOrSaleNumber(type, subType, meId, beginTime, endTime, creatorArray, organId, organArray, depotList, forceFlag, sumType); + } else { + result= depotItemMapperEx.buyOrSalePrice(type, subType, meId, beginTime, endTime, creatorArray, organId, organArray, depotList, forceFlag, sumType); + } + }catch(Exception e){ + JshException.readFail(logger, e); + } + return result; + } + + public BigDecimal buyOrSalePriceTotal(String type, String subType, String materialParam, String beginTime, String endTime, + String[] creatorArray, Long organId, String [] organArray, List categoryList, List depotList, Boolean forceFlag) throws Exception{ + BigDecimal result= BigDecimal.ZERO; + try{ + result= depotItemMapperEx.buyOrSalePriceTotal(type, subType, materialParam, beginTime, endTime, creatorArray, organId, organArray, categoryList, depotList, forceFlag); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return result; + + } + + /** + * 统计采购、销售、零售的总金额列表 + * @param beginTime + * @param endTime + * @return + * @throws Exception + */ + public List inOrOutPriceList(String beginTime, String endTime) throws Exception{ + List result = new ArrayList<>(); + try{ + String [] creatorArray = depotHeadService.getCreatorArray(); + Boolean forceFlag = systemConfigService.getForceApprovalFlag(); + result = depotItemMapperEx.inOrOutPriceList(beginTime, endTime, creatorArray, forceFlag); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public void saveDetials(String rows, Long headerId, String actionType, DepotHead preDepotHead, HttpServletRequest request) throws Exception{ + //查询单据主表信息 + DepotHead depotHead =depotHeadMapper.selectByPrimaryKey(headerId); + //删除序列号和回收序列号 + deleteOrCancelSerialNumber(actionType, depotHead, headerId); + //删除单据的明细 + deleteDepotItemHeadId(headerId); + JSONArray rowArr = JSONArray.parseArray(rows); + if (null != rowArr && rowArr.size()>0) { + //针对组装单、拆卸单校验是否存在组合件和普通子件 + checkAssembleWithMaterialType(rowArr, depotHead.getSubType()); + //校验多行明细当中是否存在重复的序列号 + checkSerialNumberRepeatWithCurrent(rowArr); + List depotItemList = new ArrayList<>(); + for (int i = 0; i < rowArr.size(); i++) { + DepotItem depotItem = new DepotItem(); + JSONObject rowObj = JSONObject.parseObject(rowArr.getString(i)); + depotItem.setHeaderId(headerId); + String barCode = rowObj.getString("barCode"); + MaterialExtend materialExtend = materialExtendService.getInfoByBarCode(barCode); + if(materialExtend == null) { + throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_BARCODE_IS_NOT_EXIST_CODE, + String.format(ExceptionConstants.MATERIAL_BARCODE_IS_NOT_EXIST_MSG, barCode)); + } + depotItem.setMaterialId(materialExtend.getMaterialId()); + depotItem.setMaterialExtendId(materialExtend.getId()); + depotItem.setMaterialUnit(rowObj.getString("unit")); + Material material= materialService.getMaterial(depotItem.getMaterialId()); + if (BusinessConstants.ENABLE_SERIAL_NUMBER_ENABLED.equals(material.getEnableSerialNumber()) || + BusinessConstants.ENABLE_BATCH_NUMBER_ENABLED.equals(material.getEnableBatchNumber())) { + //组装拆卸单不能选择批号或序列号商品 + if(BusinessConstants.SUB_TYPE_ASSEMBLE.equals(depotHead.getSubType()) || + BusinessConstants.SUB_TYPE_DISASSEMBLE.equals(depotHead.getSubType())) { + throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_ASSEMBLE_SELECT_ERROR_CODE, + String.format(ExceptionConstants.MATERIAL_ASSEMBLE_SELECT_ERROR_MSG, barCode)); + } + //调拨单不能选择批号或序列号商品(该场景走出库和入库单) + if(BusinessConstants.SUB_TYPE_TRANSFER.equals(depotHead.getSubType())) { + throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_TRANSFER_SELECT_ERROR_CODE, + String.format(ExceptionConstants.MATERIAL_TRANSFER_SELECT_ERROR_MSG, barCode)); + } + //盘点业务不能选择批号或序列号商品(该场景走出库和入库单) + if(BusinessConstants.SUB_TYPE_CHECK_ENTER.equals(depotHead.getSubType()) + ||BusinessConstants.SUB_TYPE_REPLAY.equals(depotHead.getSubType())) { + throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_STOCK_CHECK_ERROR_CODE, + String.format(ExceptionConstants.MATERIAL_STOCK_CHECK_ERROR_MSG, barCode)); + } + } + if (StringUtil.isExist(rowObj.get("snList"))) { + depotItem.setSnList(rowObj.getString("snList")); + if(StringUtil.isExist(rowObj.get("depotId"))) { + String [] snArray = depotItem.getSnList().split(","); + int operNum = rowObj.getInteger("operNumber"); + if(snArray.length == operNum) { + Long depotId = rowObj.getLong("depotId"); + BigDecimal inPrice = BigDecimal.ZERO; + if (StringUtil.isExist(rowObj.get("unitPrice"))) { + inPrice = rowObj.getBigDecimal("unitPrice"); + } + serialNumberService.addSerialNumberByBill(depotHead.getType(), depotHead.getSubType(), + depotHead.getNumber(), materialExtend.getMaterialId(), depotId, inPrice, depotItem.getSnList()); + } else { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_SN_NUMBERE_FAILED_CODE, + String.format(ExceptionConstants.DEPOT_HEAD_SN_NUMBERE_FAILED_MSG, barCode)); + } + } + } else { + //入库或出库 + if (BusinessConstants.DEPOTHEAD_TYPE_IN.equals(depotHead.getType()) || + BusinessConstants.DEPOTHEAD_TYPE_OUT.equals(depotHead.getType())) { + //序列号不能为空 + if (BusinessConstants.ENABLE_SERIAL_NUMBER_ENABLED.equals(material.getEnableSerialNumber())) { + //如果开启出入库管理,并且类型等于采购、采购退货、销售、销售退货,则跳过 + if(systemConfigService.getInOutManageFlag() && + (BusinessConstants.SUB_TYPE_PURCHASE.equals(depotHead.getSubType()) + ||BusinessConstants.SUB_TYPE_PURCHASE_RETURN.equals(depotHead.getSubType()) + ||BusinessConstants.SUB_TYPE_SALES.equals(depotHead.getSubType()) + ||BusinessConstants.SUB_TYPE_SALES_RETURN.equals(depotHead.getSubType()))) { + //跳过 + } else { + throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_SERIAL_NUMBERE_EMPTY_CODE, + String.format(ExceptionConstants.MATERIAL_SERIAL_NUMBERE_EMPTY_MSG, barCode)); + } + } + } + } + if (StringUtil.isExist(rowObj.get("batchNumber"))) { + depotItem.setBatchNumber(rowObj.getString("batchNumber")); + } else { + //入库或出库 + if(BusinessConstants.DEPOTHEAD_TYPE_IN.equals(depotHead.getType()) || + BusinessConstants.DEPOTHEAD_TYPE_OUT.equals(depotHead.getType())) { + //批号不能为空 + if (BusinessConstants.ENABLE_BATCH_NUMBER_ENABLED.equals(material.getEnableBatchNumber())) { + //如果开启出入库管理,并且类型等于采购、采购退货、销售、销售退货,则跳过 + if(systemConfigService.getInOutManageFlag() && + (BusinessConstants.SUB_TYPE_PURCHASE.equals(depotHead.getSubType()) + ||BusinessConstants.SUB_TYPE_PURCHASE_RETURN.equals(depotHead.getSubType()) + ||BusinessConstants.SUB_TYPE_SALES.equals(depotHead.getSubType()) + ||BusinessConstants.SUB_TYPE_SALES_RETURN.equals(depotHead.getSubType()))) { + //跳过 + } else { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_BATCH_NUMBERE_EMPTY_CODE, + String.format(ExceptionConstants.DEPOT_HEAD_BATCH_NUMBERE_EMPTY_MSG, barCode)); + } + } + } + } + if (StringUtil.isExist(rowObj.get("expirationDate"))) { + depotItem.setExpirationDate(rowObj.getDate("expirationDate")); + } + if (StringUtil.isExist(rowObj.get("sku"))) { + depotItem.setSku(rowObj.getString("sku")); + } + if (StringUtil.isExist(rowObj.get("linkId"))) { + depotItem.setLinkId(rowObj.getLong("linkId")); + } + //以下进行单位换算 + Unit unitInfo = materialService.findUnit(materialExtend.getMaterialId()); //查询多单位信息 + if (StringUtil.isExist(rowObj.get("operNumber"))) { + depotItem.setOperNumber(rowObj.getBigDecimal("operNumber")); + String unit = rowObj.get("unit").toString(); + BigDecimal oNumber = rowObj.getBigDecimal("operNumber"); + if (StringUtil.isNotEmpty(unitInfo.getName())) { + String basicUnit = unitInfo.getBasicUnit(); //基本单位 + if (unit.equals(basicUnit)) { //如果等于基本单位 + depotItem.setBasicNumber(oNumber); //数量一致 + } else if (unit.equals(unitInfo.getOtherUnit())) { //如果等于副单位 + depotItem.setBasicNumber(oNumber.multiply(unitInfo.getRatio())); //数量乘以比例 + } else if (unit.equals(unitInfo.getOtherUnitTwo())) { //如果等于副单位2 + depotItem.setBasicNumber(oNumber.multiply(unitInfo.getRatioTwo())); //数量乘以比例 + } else if (unit.equals(unitInfo.getOtherUnitThree())) { //如果等于副单位3 + depotItem.setBasicNumber(oNumber.multiply(unitInfo.getRatioThree())); //数量乘以比例 + } else { + depotItem.setBasicNumber(oNumber); //数量一致 + } + } else { + depotItem.setBasicNumber(oNumber); //其他情况 + } + } + //如果数量+已完成数量>原订单数量,给出预警(判断前提是存在关联订单|关联请购单) + String linkStr = StringUtil.isNotEmpty(depotHead.getLinkNumber())? depotHead.getLinkNumber(): depotHead.getLinkApply(); + if (StringUtil.isNotEmpty(linkStr) && StringUtil.isExist(rowObj.get("preNumber")) && StringUtil.isExist(rowObj.get("finishNumber"))) { + if("add".equals(actionType)) { + //在新增模式进行状态赋值 + BigDecimal preNumber = rowObj.getBigDecimal("preNumber"); + BigDecimal finishNumber = rowObj.getBigDecimal("finishNumber"); + if(depotItem.getOperNumber().add(finishNumber).compareTo(preNumber)>0) { + if(!systemConfigService.getOverLinkBillFlag()) { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_NUMBER_NEED_EDIT_FAILED_CODE, + String.format(ExceptionConstants.DEPOT_HEAD_NUMBER_NEED_EDIT_FAILED_MSG, barCode)); + } + } + } else if("update".equals(actionType)) { + //当前单据的类型 + String currentSubType = depotHead.getSubType(); + //在更新模式进行状态赋值 + String unit = rowObj.get("unit").toString(); + Long preHeaderId = depotHeadService.getDepotHead(linkStr).getId(); + if(null!=preHeaderId) { + //前一个单据的数量 + BigDecimal preNumber = getPreItemByHeaderIdAndMaterial(linkStr, depotItem.getMaterialExtendId(), depotItem.getLinkId()).getOperNumber(); + //除去此单据之外的已入库|已出库 + BigDecimal realFinishNumber = getRealFinishNumber(currentSubType, depotItem.getMaterialExtendId(), depotItem.getLinkId(), preHeaderId, headerId, unitInfo, unit); + if(preNumber!=null) { + if (depotItem.getOperNumber().add(realFinishNumber).compareTo(preNumber) > 0) { + if (!systemConfigService.getOverLinkBillFlag()) { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_NUMBER_NEED_EDIT_FAILED_CODE, + String.format(ExceptionConstants.DEPOT_HEAD_NUMBER_NEED_EDIT_FAILED_MSG, barCode)); + } + } + } else { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_ITEM_PRE_BILL_IS_CHANGE_CODE, + ExceptionConstants.DEPOT_ITEM_PRE_BILL_IS_CHANGE_MSG); + } + } + } + } + if (StringUtil.isExist(rowObj.get("unitPrice"))) { + BigDecimal unitPrice = rowObj.getBigDecimal("unitPrice"); + depotItem.setUnitPrice(unitPrice); + if(materialExtend.getLowDecimal()!=null) { + //零售或销售单价低于最低售价,进行提示 + if("零售".equals(depotHead.getSubType()) || "销售".equals(depotHead.getSubType())) { + if (unitPrice.compareTo(materialExtend.getLowDecimal()) < 0) { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_UNIT_PRICE_LOW_CODE, + String.format(ExceptionConstants.DEPOT_HEAD_UNIT_PRICE_LOW_MSG, barCode)); + } + } + } + } + //如果是销售出库、销售退货、零售出库、零售退货则给采购单价字段赋值(如果是批次商品,则要根据批号去找之前的入库价) + if(BusinessConstants.SUB_TYPE_SALES.equals(depotHead.getSubType()) || + BusinessConstants.SUB_TYPE_SALES_RETURN.equals(depotHead.getSubType()) || + BusinessConstants.SUB_TYPE_RETAIL.equals(depotHead.getSubType()) || + BusinessConstants.SUB_TYPE_RETAIL_RETURN.equals(depotHead.getSubType())) { + boolean moveAvgPriceFlag = systemConfigService.getMoveAvgPriceFlag(); + BigDecimal currentUnitPrice = materialCurrentStockMapperEx.getCurrentUnitPriceByMId(materialExtend.getMaterialId()); + currentUnitPrice = unitService.parseUnitPriceByUnit(currentUnitPrice, unitInfo, depotItem.getMaterialUnit()); + BigDecimal unitPrice = moveAvgPriceFlag? currentUnitPrice: materialExtend.getPurchaseDecimal(); + depotItem.setPurchaseUnitPrice(unitPrice); + if(StringUtil.isNotEmpty(depotItem.getBatchNumber())) { + depotItem.setPurchaseUnitPrice(getDepotItemByBatchNumber(depotItem.getMaterialExtendId(),depotItem.getBatchNumber()).getUnitPrice()); + } + } + if (StringUtil.isExist(rowObj.get("taxUnitPrice"))) { + depotItem.setTaxUnitPrice(rowObj.getBigDecimal("taxUnitPrice")); + } + if (StringUtil.isExist(rowObj.get("allPrice"))) { + depotItem.setAllPrice(rowObj.getBigDecimal("allPrice")); + } + if (StringUtil.isExist(rowObj.get("depotId"))) { + depotItem.setDepotId(rowObj.getLong("depotId")); + } else { + if(!BusinessConstants.SUB_TYPE_PURCHASE_APPLY.equals(depotHead.getSubType()) + && !BusinessConstants.SUB_TYPE_PURCHASE_ORDER.equals(depotHead.getSubType()) + && !BusinessConstants.SUB_TYPE_SALES_ORDER.equals(depotHead.getSubType())) { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_DEPOT_FAILED_CODE, + String.format(ExceptionConstants.DEPOT_HEAD_DEPOT_FAILED_MSG)); + } + } + if(BusinessConstants.SUB_TYPE_TRANSFER.equals(depotHead.getSubType())) { + if (StringUtil.isExist(rowObj.get("anotherDepotId"))) { + if(rowObj.getLong("anotherDepotId").equals(rowObj.getLong("depotId"))) { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_ANOTHER_DEPOT_EQUAL_FAILED_CODE, + String.format(ExceptionConstants.DEPOT_HEAD_ANOTHER_DEPOT_EQUAL_FAILED_MSG)); + } else { + depotItem.setAnotherDepotId(rowObj.getLong("anotherDepotId")); + } + } else { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_ANOTHER_DEPOT_FAILED_CODE, + String.format(ExceptionConstants.DEPOT_HEAD_ANOTHER_DEPOT_FAILED_MSG)); + } + } + if (StringUtil.isExist(rowObj.get("taxRate"))) { + depotItem.setTaxRate(rowObj.getBigDecimal("taxRate")); + } + if (StringUtil.isExist(rowObj.get("taxMoney"))) { + depotItem.setTaxMoney(rowObj.getBigDecimal("taxMoney")); + } + if (StringUtil.isExist(rowObj.get("taxLastMoney"))) { + depotItem.setTaxLastMoney(rowObj.getBigDecimal("taxLastMoney")); + } + if (StringUtil.isExist(rowObj.get("mType"))) { + depotItem.setMaterialType(rowObj.getString("mType")); + } + if (StringUtil.isExist(rowObj.get("remark"))) { + depotItem.setRemark(rowObj.getString("remark")); + } + //出库时判断库存是否充足 + if(BusinessConstants.DEPOTHEAD_TYPE_OUT.equals(depotHead.getType())){ + String stockMsg = material.getName() + "-" + barCode; + BigDecimal stock = getCurrentStockByParam(depotItem.getDepotId(),depotItem.getMaterialId()); + if(StringUtil.isNotEmpty(depotItem.getSku())) { + //对于sku商品要换个方式计算库存 + stock = getSkuStockByParam(depotItem.getDepotId(),depotItem.getMaterialExtendId(),null,null); + } + if(StringUtil.isNotEmpty(depotItem.getBatchNumber())) { + //对于批次商品要换个方式计算库存 + stock = getOneBatchNumberStock(depotItem.getDepotId(), barCode, depotItem.getBatchNumber()); + stockMsg += "-批号" + depotItem.getBatchNumber(); + } + BigDecimal thisRealNumber = depotItem.getBasicNumber()==null?BigDecimal.ZERO:depotItem.getBasicNumber(); + if(StringUtil.isNotEmpty(depotItem.getBatchNumber())) { + //对于批次商品,直接使用当前填写的数量 + thisRealNumber = depotItem.getOperNumber()==null?BigDecimal.ZERO:depotItem.getOperNumber(); + } + if(systemConfigService.getForceApprovalFlag() && "0".equals(depotHead.getStatus())) { + //如果开启强审核,并且没有保存的同时审核,则跳过库存判断 + } else { + if(!systemConfigService.getMinusStockFlag() && stock.compareTo(thisRealNumber)<0){ + //如果开启出入库管理,并且类型等于采购退货、销售,则跳过 + if(systemConfigService.getInOutManageFlag() && + (BusinessConstants.SUB_TYPE_PURCHASE_RETURN.equals(depotHead.getSubType()) + ||BusinessConstants.SUB_TYPE_SALES.equals(depotHead.getSubType()))) { + //跳过 + } else { + throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_STOCK_NOT_ENOUGH_CODE, + String.format(ExceptionConstants.MATERIAL_STOCK_NOT_ENOUGH_MSG, stockMsg)); + } + } + } + //出库时处理序列号 + if(!BusinessConstants.SUB_TYPE_TRANSFER.equals(depotHead.getSubType())) { + //判断商品是否开启序列号,开启的售出序列号,未开启的跳过 + if(BusinessConstants.ENABLE_SERIAL_NUMBER_ENABLED.equals(material.getEnableSerialNumber())) { + //如果开启出入库管理,并且类型等于采购、采购退货、销售、销售退货,则跳过 + if(systemConfigService.getInOutManageFlag() && + (BusinessConstants.SUB_TYPE_PURCHASE.equals(depotHead.getSubType()) + ||BusinessConstants.SUB_TYPE_PURCHASE_RETURN.equals(depotHead.getSubType()) + ||BusinessConstants.SUB_TYPE_SALES.equals(depotHead.getSubType()) + ||BusinessConstants.SUB_TYPE_SALES_RETURN.equals(depotHead.getSubType()))) { + //跳过 + } else { + //售出序列号,获得当前操作人 + User userInfo = userService.getCurrentUser(); + serialNumberService.checkAndUpdateSerialNumber(depotItem, depotHead.getNumber(), userInfo, StringUtil.toNull(depotItem.getSnList())); + } + } + } + } + depotItemList.add(depotItem); + } + //批量写入单据明细数据 + depotItemMapperEx.batchInsert(depotItemList); + for (DepotItem depotItem : depotItemList) { + //更新当前库存 + updateCurrentStock(depotItem); + //更新当前成本价 + updateCurrentUnitPrice(depotItem); + //更新商品的价格 + updateMaterialExtendPrice(depotItem.getMaterialExtendId(), depotHead.getSubType(), depotHead.getBillType(), depotItem.getUnitPrice()); + } + //如果关联单据号非空则更新订单的状态,单据类型:采购入库单、销售出库单、盘点复盘单、其它入库单、其它出库单 + if(BusinessConstants.SUB_TYPE_PURCHASE.equals(depotHead.getSubType()) + || BusinessConstants.SUB_TYPE_SALES.equals(depotHead.getSubType()) + || BusinessConstants.SUB_TYPE_REPLAY.equals(depotHead.getSubType()) + || BusinessConstants.SUB_TYPE_OTHER.equals(depotHead.getSubType())) { + if(StringUtil.isNotEmpty(depotHead.getLinkNumber())) { + //单据状态:是否全部完成 2-全部完成 3-部分完成(针对订单的分批出入库) + String billStatus = getBillStatusByParam(depotHead, depotHead.getLinkNumber(), "normal"); + changeBillStatus(depotHead.getLinkNumber(), billStatus); + if(preDepotHead!=null && StringUtil.isNotEmpty(preDepotHead.getLinkNumber()) && !preDepotHead.getLinkNumber().equals(depotHead.getLinkNumber())) { + String preBillStatus = getBillStatusByParam(preDepotHead, preDepotHead.getLinkNumber(), "normal"); + changeBillStatus(preDepotHead.getLinkNumber(), preBillStatus); + } + } + } + //当前单据类型为采购订单的逻辑 + if(BusinessConstants.SUB_TYPE_PURCHASE_ORDER.equals(depotHead.getSubType())) { + //如果关联单据号非空则更新订单的状态,此处针对销售订单转采购订单的场景 + if(StringUtil.isNotEmpty(depotHead.getLinkNumber())) { + String billStatus = getBillStatusByParam(depotHead, depotHead.getLinkNumber(), "normal"); + changeBillPurchaseStatus(depotHead.getLinkNumber(), billStatus); + if(preDepotHead!=null && StringUtil.isNotEmpty(preDepotHead.getLinkNumber()) && !preDepotHead.getLinkNumber().equals(depotHead.getLinkNumber())) { + String preBillStatus = getBillStatusByParam(preDepotHead, preDepotHead.getLinkNumber(), "normal"); + if(preBillStatus.equals(BusinessConstants.BILLS_STATUS_AUDIT)) { + //采购进度不存在已审核状态,需要转为未采购-0 + preBillStatus = BusinessConstants.BILLS_STATUS_UN_AUDIT; + } + changeBillPurchaseStatus(preDepotHead.getLinkNumber(), preBillStatus); + } + } + //如果关联单据号非空则更新订单的状态,此处针对请购单转采购订单的场景 + if(StringUtil.isNotEmpty(depotHead.getLinkApply())) { + String billStatus = getBillStatusByParam(depotHead, depotHead.getLinkApply(), "apply"); + changeBillStatus(depotHead.getLinkApply(), billStatus); + if(preDepotHead!=null && StringUtil.isNotEmpty(preDepotHead.getLinkApply()) && !preDepotHead.getLinkApply().equals(depotHead.getLinkApply())) { + String preBillStatus = getBillStatusByParam(preDepotHead, preDepotHead.getLinkApply(), "apply"); + changeBillStatus(preDepotHead.getLinkApply(), preBillStatus); + } + } + } + } else { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_ROW_FAILED_CODE, + String.format(ExceptionConstants.DEPOT_HEAD_ROW_FAILED_MSG)); + } + } + /** + * 判断单据的状态 + * 通过数组对比:原单据的商品和商品数量(汇总) 与 分批操作后单据的商品和商品数量(汇总) + * @param depotHead + * @param linkStr + * @return + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public String getBillStatusByParam(DepotHead depotHead, String linkStr, String linkType) { + String res = BusinessConstants.BILLS_STATUS_SKIPED; + //获取原单据的商品和商品数量(汇总) + List linkList = depotItemMapperEx.getLinkBillDetailMaterialSum(linkStr); + //获取分批操作后单据的商品和商品数量(汇总) + List batchList = depotItemMapperEx.getBatchBillDetailMaterialSum(linkStr, linkType, depotHead.getType()); + if(batchList.isEmpty()) { + //从未进行过分批操作 + res = BusinessConstants.BILLS_STATUS_AUDIT; + } else { + //将分批操作后的单据的商品和商品数据构造成Map + Map materialSumMap = new HashMap<>(); + for(DepotItemVo4MaterialAndSum materialAndSum : batchList) { + materialSumMap.put(materialAndSum.getMaterialExtendId(), materialAndSum.getOperNumber()); + } + for(DepotItemVo4MaterialAndSum materialAndSum : linkList) { + //过滤掉原单里面有数量为0的商品 + if(materialAndSum.getOperNumber().compareTo(BigDecimal.ZERO) != 0) { + BigDecimal materialSum = materialSumMap.get(materialAndSum.getMaterialExtendId()); + if (materialSum != null) { + if (materialSum.compareTo(materialAndSum.getOperNumber()) < 0) { + res = BusinessConstants.BILLS_STATUS_SKIPING; + } + } else { + res = BusinessConstants.BILLS_STATUS_SKIPING; + } + } + } + } + return res; + } + + /** + * 更新单据状态 + * @param linkStr + * @param billStatus + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public void changeBillStatus(String linkStr, String billStatus) { + DepotHead depotHeadOrders = new DepotHead(); + depotHeadOrders.setStatus(billStatus); + DepotHeadExample example = new DepotHeadExample(); + List linkNoList = StringUtil.strToStringList(linkStr); + example.createCriteria().andNumberIn(linkNoList); + try{ + depotHeadMapper.updateByExampleSelective(depotHeadOrders, example); + }catch(Exception e){ + logger.error("异常码[{}],异常提示[{}],异常[{}]", + ExceptionConstants.DATA_WRITE_FAIL_CODE,ExceptionConstants.DATA_WRITE_FAIL_MSG,e); + throw new BusinessRunTimeException(ExceptionConstants.DATA_WRITE_FAIL_CODE, + ExceptionConstants.DATA_WRITE_FAIL_MSG); + } + } + + /** + * 更新单据状态,此处针对销售订单转采购订单的场景 + * @param linkStr + * @param billStatus + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public void changeBillPurchaseStatus(String linkStr, String billStatus) { + DepotHead depotHeadOrders = new DepotHead(); + depotHeadOrders.setPurchaseStatus(billStatus); + DepotHeadExample example = new DepotHeadExample(); + List linkNoList = StringUtil.strToStringList(linkStr); + example.createCriteria().andNumberIn(linkNoList); + try{ + depotHeadMapper.updateByExampleSelective(depotHeadOrders, example); + }catch(Exception e){ + logger.error("异常码[{}],异常提示[{}],异常[{}]", + ExceptionConstants.DATA_WRITE_FAIL_CODE,ExceptionConstants.DATA_WRITE_FAIL_MSG,e); + throw new BusinessRunTimeException(ExceptionConstants.DATA_WRITE_FAIL_CODE, + ExceptionConstants.DATA_WRITE_FAIL_MSG); + } + } + + /** + * 根据批号查询单据明细信息 + * @param materialExtendId + * @param batchNumber + * @return + */ + public DepotItem getDepotItemByBatchNumber(Long materialExtendId, String batchNumber) { + List depotItemList = depotItemMapperEx.getDepotItemByBatchNumber(materialExtendId, batchNumber); + if(null != depotItemList && depotItemList.size() > 0){ + return depotItemList.get(0); + } else { + return new DepotItem(); + } + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public void deleteDepotItemHeadId(Long headerId)throws Exception { + try{ + //1、查询删除前的单据明细 + List depotItemList = getListByHeaderId(headerId); + //2、删除单据明细 + DepotItemExample example = new DepotItemExample(); + example.createCriteria().andHeaderIdEqualTo(headerId); + depotItemMapper.deleteByExample(example); + //3、计算删除之后单据明细中商品的库存 + for(DepotItem depotItem : depotItemList){ + updateCurrentStock(depotItem); + } + }catch(Exception e){ + JshException.writeFail(logger, e); + } + } + + /** + * 删除序列号和回收序列号 + * @param actionType + * @throws Exception + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public void deleteOrCancelSerialNumber(String actionType, DepotHead depotHead, Long headerId) throws Exception { + if(actionType.equals("update")) { + User userInfo = userService.getCurrentUser(); + if(BusinessConstants.DEPOTHEAD_TYPE_IN.equals(depotHead.getType())){ + //入库逻辑 + //判断如果有序列号被出库了就不允许修改该单据 + List snList = serialNumberMapperEx.getIsSellListByInBillNo(depotHead.getNumber()); + if(!snList.isEmpty()){ + String sn = snList.get(0).getSerialNumber(); + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_SN_NOT_ALLOW_UPDATE_CODE, + String.format(ExceptionConstants.DEPOT_HEAD_SN_NOT_ALLOW_UPDATE_MSG, sn)); + } else { + String number = depotHead.getNumber(); + SerialNumberExample example = new SerialNumberExample(); + example.createCriteria().andInBillNoEqualTo(number); + serialNumberService.deleteByExample(example); + } + } else if(BusinessConstants.DEPOTHEAD_TYPE_OUT.equals(depotHead.getType())){ + //出库逻辑 + DepotItemExample example = new DepotItemExample(); + example.createCriteria().andHeaderIdEqualTo(headerId).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List depotItemList = depotItemMapper.selectByExample(example); + if(null != depotItemList && depotItemList.size() > 0){ + for (DepotItem depotItem : depotItemList){ + if(StringUtil.isNotEmpty(depotItem.getSnList())){ + serialNumberService.cancelSerialNumber(depotItem.getMaterialId(), depotHead.getNumber(), (depotItem.getBasicNumber() == null ? 0 : depotItem.getBasicNumber()).intValue(), userInfo); + } + } + } + } + } + } + + /** + * 针对组装单、拆卸单校验是否存在组合件和普通子件 + * @param rowArr + * @param subType + */ + public void checkAssembleWithMaterialType(JSONArray rowArr, String subType) { + if(BusinessConstants.SUB_TYPE_ASSEMBLE.equals(subType) || + BusinessConstants.SUB_TYPE_DISASSEMBLE.equals(subType)) { + if(rowArr.size() > 1) { + JSONObject firstRowObj = JSONObject.parseObject(rowArr.getString(0)); + JSONObject secondRowObj = JSONObject.parseObject(rowArr.getString(1)); + String firstMaterialType = firstRowObj.getString("mType"); + String secondMaterialType = secondRowObj.getString("mType"); + if(!"组合件".equals(firstMaterialType) || !"普通子件".equals(secondMaterialType)) { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_CHECK_ASSEMBLE_EMPTY_CODE, + String.format(ExceptionConstants.DEPOT_HEAD_CHECK_ASSEMBLE_EMPTY_MSG)); + } + } else { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_CHECK_ASSEMBLE_EMPTY_CODE, + String.format(ExceptionConstants.DEPOT_HEAD_CHECK_ASSEMBLE_EMPTY_MSG)); + } + } + } + + /** + * 校验多行明细当中是否存在重复的序列号 + * @param rowArr + */ + public void checkSerialNumberRepeatWithCurrent(JSONArray rowArr) { + List allSnArr = new ArrayList<>(); + for (int i = 0; i < rowArr.size(); i++) { + JSONObject rowObj = JSONObject.parseObject(rowArr.getString(i)); + if(StringUtil.isNotEmpty(rowObj.getString("snList"))) { + String snList = rowObj.getString("snList"); + snList = snList.replaceAll(",", ","); + List snArr = StringUtil.strToStringList(snList); + if(snArr!=null && !snArr.isEmpty()) { + allSnArr.addAll(snArr); + } + } + } + Set seen = new HashSet<>(); + Set duplicates = new HashSet<>(); + for (String str : allSnArr) { + if (!seen.add(str)) { + duplicates.add(str); + } + } + if(!duplicates.isEmpty()) { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_CHECK_SERIAL_NUMBER_REPEAT_CODE, + String.format(ExceptionConstants.DEPOT_HEAD_CHECK_SERIAL_NUMBER_REPEAT_MSG, String.join(", ", duplicates))); + } + } + + /** + * 更新商品的价格 + * @param meId + * @param subType + * @param unitPrice + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public void updateMaterialExtendPrice(Long meId, String subType, String billType, BigDecimal unitPrice) throws Exception { + if(systemConfigService.getUpdateUnitPriceFlag()) { + if (unitPrice!=null) { + MaterialExtend materialExtend = new MaterialExtend(); + materialExtend.setId(meId); + if(BusinessConstants.SUB_TYPE_PURCHASE.equals(subType)) { + materialExtend.setPurchaseDecimal(unitPrice); + } + if(BusinessConstants.SUB_TYPE_SALES.equals(subType)) { + materialExtend.setWholesaleDecimal(unitPrice); + } + if(BusinessConstants.SUB_TYPE_RETAIL.equals(subType)) { + materialExtend.setCommodityDecimal(unitPrice); + } + //其它入库-生产入库的情况更新采购单价 + if(BusinessConstants.SUB_TYPE_OTHER.equals(subType)) { + if(BusinessConstants.BILL_TYPE_PRODUCE_IN.equals(billType)) { + materialExtend.setPurchaseDecimal(unitPrice); + } + } + materialExtendService.updateMaterialExtend(materialExtend); + } + } + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public List findStockWarningCount(Integer offset, Integer rows, String materialParam, List depotList, List categoryList) { + List list = null; + try{ + list =depotItemMapperEx.findStockWarningCount(offset, rows, materialParam, depotList, categoryList); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int findStockWarningCountTotal(String materialParam, List depotList, List categoryList) { + int result = 0; + try{ + result =depotItemMapperEx.findStockWarningCountTotal(materialParam, depotList, categoryList); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return result; + } + + /** + * 库存统计-sku + * @param depotId + * @param meId + * @param beginTime + * @param endTime + * @return + */ + public BigDecimal getSkuStockByParam(Long depotId, Long meId, String beginTime, String endTime) throws Exception { + Boolean forceFlag = systemConfigService.getForceApprovalFlag(); + Boolean inOutManageFlag = systemConfigService.getInOutManageFlag(); + List depotList = depotService.parseDepotList(depotId); + //盘点复盘后数量的变动 + BigDecimal stockCheckSum = depotItemMapperEx.getSkuStockCheckSumByDepotList(depotList, meId, forceFlag, beginTime, endTime); + DepotItemVo4Stock stockObj = depotItemMapperEx.getSkuStockByParamWithDepotList(depotList, meId, forceFlag, inOutManageFlag, beginTime, endTime); + BigDecimal stockSum = BigDecimal.ZERO; + if(stockObj!=null) { + BigDecimal inTotal = stockObj.getInTotal(); + BigDecimal transfInTotal = stockObj.getTransfInTotal(); + BigDecimal assemInTotal = stockObj.getAssemInTotal(); + BigDecimal disAssemInTotal = stockObj.getDisAssemInTotal(); + BigDecimal outTotal = stockObj.getOutTotal(); + BigDecimal transfOutTotal = stockObj.getTransfOutTotal(); + BigDecimal assemOutTotal = stockObj.getAssemOutTotal(); + BigDecimal disAssemOutTotal = stockObj.getDisAssemOutTotal(); + stockSum = inTotal.add(transfInTotal).add(assemInTotal).add(disAssemInTotal) + .subtract(outTotal).subtract(transfOutTotal).subtract(assemOutTotal).subtract(disAssemOutTotal); + } + return stockCheckSum.add(stockSum); + } + + /** + * 库存统计-单仓库 + * @param depotId + * @param mId + * @param beginTime + * @param endTime + * @return + */ + public BigDecimal getStockByParam(Long depotId, Long mId, String beginTime, String endTime) throws Exception { + List depotList = depotService.parseDepotList(depotId); + return getStockByParamWithDepotList(depotList, mId, beginTime, endTime); + } + + /** + * 库存统计-多仓库 + * @param depotList + * @param mId + * @param beginTime + * @param endTime + * @return + */ + public BigDecimal getStockByParamWithDepotList(List depotList, Long mId, String beginTime, String endTime) throws Exception { + Boolean forceFlag = systemConfigService.getForceApprovalFlag(); + Boolean inOutManageFlag = systemConfigService.getInOutManageFlag(); + //初始库存 + BigDecimal initStock = materialService.getInitStockByMidAndDepotList(depotList, mId); + //盘点复盘后数量的变动 + BigDecimal stockCheckSum = depotItemMapperEx.getStockCheckSumByDepotList(depotList, mId, forceFlag, beginTime, endTime); + DepotItemVo4Stock stockObj = depotItemMapperEx.getStockByParamWithDepotList(depotList, mId, forceFlag, inOutManageFlag, beginTime, endTime); + BigDecimal stockSum = BigDecimal.ZERO; + if(stockObj!=null) { + BigDecimal inTotal = stockObj.getInTotal(); + BigDecimal transfInTotal = stockObj.getTransfInTotal(); + BigDecimal assemInTotal = stockObj.getAssemInTotal(); + BigDecimal disAssemInTotal = stockObj.getDisAssemInTotal(); + BigDecimal outTotal = stockObj.getOutTotal(); + BigDecimal transfOutTotal = stockObj.getTransfOutTotal(); + BigDecimal assemOutTotal = stockObj.getAssemOutTotal(); + BigDecimal disAssemOutTotal = stockObj.getDisAssemOutTotal(); + stockSum = inTotal.add(transfInTotal).add(assemInTotal).add(disAssemInTotal) + .subtract(outTotal).subtract(transfOutTotal).subtract(assemOutTotal).subtract(disAssemOutTotal); + } + return initStock.add(stockCheckSum).add(stockSum); + } + + /** + * 统计时间段内的入库和出库数量-多仓库 + * @param depotList + * @param mId + * @param beginTime + * @param endTime + * @return + */ + public Map getIntervalMapByParamWithDepotList(List depotList, Long mId, String beginTime, String endTime) throws Exception { + Boolean forceFlag = systemConfigService.getForceApprovalFlag(); + Boolean inOutManageFlag = systemConfigService.getInOutManageFlag(); + Map intervalMap = new HashMap<>(); + BigDecimal inSum = BigDecimal.ZERO; + BigDecimal outSum = BigDecimal.ZERO; + //盘点复盘后数量的变动 + BigDecimal stockCheckSum = depotItemMapperEx.getStockCheckSumByDepotList(depotList, mId, forceFlag, beginTime, endTime); + DepotItemVo4Stock stockObj = depotItemMapperEx.getStockByParamWithDepotList(depotList, mId, forceFlag, inOutManageFlag, beginTime, endTime); + if(stockObj!=null) { + BigDecimal inTotal = stockObj.getInTotal(); + BigDecimal transfInTotal = stockObj.getTransfInTotal(); + BigDecimal assemInTotal = stockObj.getAssemInTotal(); + BigDecimal disAssemInTotal = stockObj.getDisAssemInTotal(); + inSum = inTotal.add(transfInTotal).add(assemInTotal).add(disAssemInTotal); + BigDecimal outTotal = stockObj.getOutTotal(); + BigDecimal transfOutTotal = stockObj.getTransfOutTotal(); + BigDecimal assemOutTotal = stockObj.getAssemOutTotal(); + BigDecimal disAssemOutTotal = stockObj.getDisAssemOutTotal(); + outSum = outTotal.add(transfOutTotal).add(assemOutTotal).add(disAssemOutTotal); + } + if(stockCheckSum.compareTo(BigDecimal.ZERO)>0) { + inSum = inSum.add(stockCheckSum); + } else { + //盘点复盘数量为负数代表出库 + outSum = outSum.subtract(stockCheckSum); + } + intervalMap.put("inSum", inSum); + intervalMap.put("outSum", outSum); + return intervalMap; + } + + /** + * 根据单据明细来批量更新当前库存 + * @param depotItem + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public void updateCurrentStock(DepotItem depotItem) throws Exception { + BigDecimal currentUnitPrice = materialCurrentStockMapperEx.getCurrentUnitPriceByMId(depotItem.getMaterialId()); + updateCurrentStockFun(depotItem.getMaterialId(), depotItem.getDepotId(), currentUnitPrice); + if(depotItem.getAnotherDepotId()!=null){ + updateCurrentStockFun(depotItem.getMaterialId(), depotItem.getAnotherDepotId(), currentUnitPrice); + } + } + + public void applyShipmentStockOut(DepotItem depotItem, BigDecimal actualQuantity) throws Exception { + if (depotItem == null || depotItem.getMaterialId() == null || depotItem.getDepotId() == null || actualQuantity == null) { + return; + } + BigDecimal outNumber = actualQuantity; + if (depotItem.getOperNumber() != null && depotItem.getOperNumber().compareTo(BigDecimal.ZERO) != 0 + && depotItem.getBasicNumber() != null) { + outNumber = actualQuantity.multiply(depotItem.getBasicNumber()) + .divide(depotItem.getOperNumber(), 6, BigDecimal.ROUND_HALF_UP); + } + MaterialCurrentStockExample example = new MaterialCurrentStockExample(); + example.createCriteria().andMaterialIdEqualTo(depotItem.getMaterialId()) + .andDepotIdEqualTo(depotItem.getDepotId()) + .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list = materialCurrentStockMapper.selectByExample(example); + BigDecimal currentUnitPrice = materialCurrentStockMapperEx.getCurrentUnitPriceByMId(depotItem.getMaterialId()); + MaterialCurrentStock stock = new MaterialCurrentStock(); + stock.setMaterialId(depotItem.getMaterialId()); + stock.setDepotId(depotItem.getDepotId()); + stock.setCurrentUnitPrice(currentUnitPrice); + if (list != null && !list.isEmpty()) { + MaterialCurrentStock old = list.get(0); + stock.setId(old.getId()); + BigDecimal currentNumber = old.getCurrentNumber() == null ? BigDecimal.ZERO : old.getCurrentNumber(); + stock.setCurrentNumber(currentNumber.subtract(outNumber)); + materialCurrentStockMapper.updateByPrimaryKeySelective(stock); + } else { + stock.setCurrentNumber(BigDecimal.ZERO.subtract(outNumber)); + materialCurrentStockMapper.insertSelective(stock); + } + } + + /** + * 根据单据明细来批量更新当前成本价 + * @param depotItem + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public void updateCurrentUnitPrice(DepotItem depotItem) throws Exception { + Boolean forceFlag = systemConfigService.getForceApprovalFlag(); + //此处给出入库管理的传值默认为false,不然会导致查询不到销售相关的单据 + Boolean inOutManageFlag = false; + //查询多单位信息 + Unit unitInfo = materialService.findUnit(depotItem.getMaterialId()); + List itemList = findDetailByDepotIdsAndMaterialIdList(null, forceFlag, inOutManageFlag, null, + null, null, null, null, depotItem.getMaterialId(), null, null); + Collections.reverse(itemList); //倒序之后变成按时间从前往后排序 + BigDecimal currentNumber = BigDecimal.ZERO; + BigDecimal currentUnitPrice = BigDecimal.ZERO; + BigDecimal currentAllPrice = BigDecimal.ZERO; + for(DepotItemVo4DetailByTypeAndMId item: itemList) { + BigDecimal basicNumber = item.getBnum()!=null?item.getBnum():BigDecimal.ZERO; + //数量*单价 另外计算新的成本价 + BigDecimal allPrice = unitService.parseAllPriceByUnit(item.getAllPrice()!=null?item.getAllPrice():BigDecimal.ZERO, unitInfo, item.getMaterialUnit()); + if(basicNumber.compareTo(BigDecimal.ZERO)!=0 && allPrice.compareTo(BigDecimal.ZERO)!=0) { + //入库 + if (BusinessConstants.DEPOTHEAD_TYPE_IN.equals(item.getType())) { + //零售退货、销售退货 + if (BusinessConstants.SUB_TYPE_RETAIL_RETURN.equals(item.getSubType()) || BusinessConstants.SUB_TYPE_SALES_RETURN.equals(item.getSubType())) { + //数量*当前的成本单价 + currentNumber = currentNumber.add(basicNumber); + currentAllPrice = currentAllPrice.add(basicNumber.multiply(currentUnitPrice)); + } else { + currentAllPrice = currentAllPrice.add(allPrice); + currentNumber = currentNumber.add(basicNumber); + //只有当前库存总金额和当前库存数量都大于0才计算移动平均价 + if (currentAllPrice.compareTo(BigDecimal.ZERO) > 0 && currentNumber.compareTo(BigDecimal.ZERO) > 0) { + currentUnitPrice = currentAllPrice.divide(currentNumber, 4, BigDecimal.ROUND_HALF_UP); + } else { + currentUnitPrice = item.getUnitPrice(); + } + } + } + //出库 + if (BusinessConstants.DEPOTHEAD_TYPE_OUT.equals(item.getType())) { + //采购退货 + if (BusinessConstants.SUB_TYPE_PURCHASE_RETURN.equals(item.getSubType())) { + currentAllPrice = currentAllPrice.add(allPrice); + currentNumber = currentNumber.add(basicNumber); + //只有当前库存总金额和当前库存数量都大于0才计算移动平均价 + if (currentAllPrice.compareTo(BigDecimal.ZERO) > 0 && currentNumber.compareTo(BigDecimal.ZERO) > 0) { + currentUnitPrice = currentAllPrice.divide(currentNumber, 4, BigDecimal.ROUND_HALF_UP); + } else { + currentUnitPrice = item.getUnitPrice(); + } + } else { + //数量*当前的成本单价 + currentNumber = currentNumber.add(basicNumber); + currentAllPrice = currentAllPrice.add(basicNumber.multiply(currentUnitPrice)); + } + } + //特殊情况:1-组装单 2-拆卸单 3-盘点复盘 + if(BusinessConstants.SUB_TYPE_ASSEMBLE.equals(item.getSubType())|| + BusinessConstants.SUB_TYPE_DISASSEMBLE.equals(item.getSubType())|| + BusinessConstants.SUB_TYPE_REPLAY.equals(item.getSubType())) { + //数量*当前的成本单价 + currentNumber = currentNumber.add(basicNumber); + currentAllPrice = currentAllPrice.add(basicNumber.multiply(currentUnitPrice)); + } + //防止单价金额溢出 + if(currentUnitPrice.compareTo(BigDecimal.valueOf(100000000))>0 || currentUnitPrice.compareTo(BigDecimal.valueOf(-100000000))<0) { + currentUnitPrice = BigDecimal.ZERO; + } + } + } + //更新实时库存中的当前单价 + materialCurrentStockMapperEx.updateUnitPriceByMId(currentUnitPrice, depotItem.getMaterialId()); + } + + /** + * 根据商品和仓库来更新当前库存 + * @param mId + * @param dId + */ + public void updateCurrentStockFun(Long mId, Long dId, BigDecimal currentUnitPrice) throws Exception { + if(mId!=null && dId!=null) { + MaterialCurrentStockExample example = new MaterialCurrentStockExample(); + example.createCriteria().andMaterialIdEqualTo(mId).andDepotIdEqualTo(dId) + .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list = materialCurrentStockMapper.selectByExample(example); + MaterialCurrentStock materialCurrentStock = new MaterialCurrentStock(); + materialCurrentStock.setMaterialId(mId); + materialCurrentStock.setDepotId(dId); + materialCurrentStock.setCurrentNumber(getStockByParam(dId,mId,null,null)); + materialCurrentStock.setCurrentUnitPrice(currentUnitPrice); + if(list!=null && list.size()>0) { + Long mcsId = list.get(0).getId(); + materialCurrentStock.setId(mcsId); + materialCurrentStockMapper.updateByPrimaryKeySelective(materialCurrentStock); + } else { + materialCurrentStockMapper.insertSelective(materialCurrentStock); + } + } + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public BigDecimal getFinishPurchaseNumber(Long meId, Long id, String number, String linkType, String subType) { + BigDecimal count = BigDecimal.ZERO; + // 针对以销定购的情况 + if(BusinessConstants.SUB_TYPE_SALES_ORDER.equals(subType)) { + String goToType = BusinessConstants.SUB_TYPE_PURCHASE_ORDER; + String noType = "normal"; + count = depotItemMapperEx.getFinishNumber(meId, id, number, noType, goToType); + } + return count; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public BigDecimal getFinishNumber(Long meId, Long id, String number, String linkType, String subType) { + String goToType = ""; + if("other".equals(linkType)) { + //采购入库、采购退货、销售出库、销售退货都转其它入库 + if(BusinessConstants.SUB_TYPE_PURCHASE.equals(subType) + || BusinessConstants.SUB_TYPE_PURCHASE_RETURN.equals(subType) + || BusinessConstants.SUB_TYPE_SALES.equals(subType) + || BusinessConstants.SUB_TYPE_SALES_RETURN.equals(subType)) { + goToType = BusinessConstants.SUB_TYPE_OTHER; + } + } else if("basic".equals(linkType)||"purchase".equals(linkType)) { + //采购订单转采购入库 + if(BusinessConstants.SUB_TYPE_PURCHASE_ORDER.equals(subType)) { + goToType = BusinessConstants.SUB_TYPE_PURCHASE; + } + //销售订单转销售出库 + if(BusinessConstants.SUB_TYPE_SALES_ORDER.equals(subType)) { + goToType = BusinessConstants.SUB_TYPE_SALES; + } + //采购入库转采购退货 + if(BusinessConstants.SUB_TYPE_PURCHASE.equals(subType)) { + goToType = BusinessConstants.SUB_TYPE_PURCHASE_RETURN; + } + //销售出库转销售退货 + if(BusinessConstants.SUB_TYPE_SALES.equals(subType)) { + goToType = BusinessConstants.SUB_TYPE_SALES_RETURN; + } + } + String noType = "normal"; + if(BusinessConstants.SUB_TYPE_PURCHASE_APPLY.equals(subType)) { + noType = "apply"; + } + return depotItemMapperEx.getFinishNumber(meId, id, number, noType, goToType); + } + + /** + * 除去此单据之外的已入库|已出库|已转采购 + * @param currentSubType + * @param meId + * @param linkId + * @param preHeaderId + * @param currentHeaderId + * @param unitInfo + * @param materialUnit + * @return + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public BigDecimal getRealFinishNumber(String currentSubType, Long meId, Long linkId, Long preHeaderId, Long currentHeaderId, Unit unitInfo, String materialUnit) { + String goToType = currentSubType; + DepotHead depotHead =depotHeadMapper.selectByPrimaryKey(preHeaderId); + String linkStr = depotHead.getNumber(); //订单号 + String linkType = "normal"; + if(BusinessConstants.SUB_TYPE_PURCHASE_APPLY.equals(depotHead.getSubType())) { + linkType = "apply"; + } + BigDecimal count = depotItemMapperEx.getRealFinishNumber(meId, linkId, linkStr, linkType, currentHeaderId, goToType); + //根据多单位情况进行数量的转换 + if(materialUnit.equals(unitInfo.getOtherUnit()) && unitInfo.getRatio()!=null && unitInfo.getRatio().compareTo(BigDecimal.ZERO)!=0) { + count = count.divide(unitInfo.getRatio(),2,BigDecimal.ROUND_HALF_UP); + } + if(materialUnit.equals(unitInfo.getOtherUnitTwo()) && unitInfo.getRatioTwo()!=null && unitInfo.getRatioTwo().compareTo(BigDecimal.ZERO)!=0) { + count = count.divide(unitInfo.getRatioTwo(),2,BigDecimal.ROUND_HALF_UP); + } + if(materialUnit.equals(unitInfo.getOtherUnitThree()) && unitInfo.getRatioThree()!=null && unitInfo.getRatioThree().compareTo(BigDecimal.ZERO)!=0) { + count = count.divide(unitInfo.getRatioThree(),2,BigDecimal.ROUND_HALF_UP); + } + return count; + } + + public List getBatchNumberList(String number, String name, Long depotId, String barCode, + String batchNumber, Boolean forceFlag, Boolean inOutManageFlag) throws Exception { + List reslist = new ArrayList<>(); + List list = depotItemMapperEx.getBatchNumberList(StringUtil.toNull(number), name, + depotId, barCode, batchNumber, forceFlag, inOutManageFlag); + for(DepotItemVoBatchNumberList bn: list) { + if(bn.getTotalNum()!=null && bn.getTotalNum().compareTo(BigDecimal.ZERO)>0) { + bn.setExpirationDateStr(Tools.parseDateToStr(bn.getExpirationDate())); + if(bn.getUnitId()!=null) { + Unit unit = unitService.getUnit(bn.getUnitId()); + String commodityUnit = bn.getCommodityUnit(); + bn.setTotalNum(unitService.parseStockByUnit(bn.getTotalNum(), unit, commodityUnit)); + } + reslist.add(bn); + } + } + return reslist; + } + + /** + * 查询某个批号的商品库存 + * @param depotId + * @param barCode + * @param batchNumber + * @return + * @throws Exception + */ + public BigDecimal getOneBatchNumberStock(Long depotId, String barCode, String batchNumber) throws Exception { + BigDecimal totalNum = BigDecimal.ZERO; + Boolean forceFlag = systemConfigService.getForceApprovalFlag(); + Boolean inOutManageFlag = systemConfigService.getInOutManageFlag(); + List list = depotItemMapperEx.getBatchNumberList(null, null, + depotId, barCode, batchNumber, forceFlag, inOutManageFlag); + if(list!=null && list.size()>0) { + DepotItemVoBatchNumberList bn = list.get(0); + totalNum = bn.getTotalNum(); + if(bn.getTotalNum()!=null && bn.getTotalNum().compareTo(BigDecimal.ZERO)>0) { + if(bn.getUnitId()!=null) { + Unit unit = unitService.getUnit(bn.getUnitId()); + String commodityUnit = bn.getCommodityUnit(); + totalNum = unitService.parseStockByUnit(bn.getTotalNum(), unit, commodityUnit); + } + } + } + return totalNum; + } + + public Long getCountByMaterialAndDepot(Long mId, Long depotId) { + return depotItemMapperEx.getCountByMaterialAndDepot(mId, depotId); + } + + public JSONObject parseMapByExcelData(List barCodeList, List> detailList, String prefixNo) throws Exception { + JSONObject map = new JSONObject(); + JSONArray arr = new JSONArray(); + List list = depotItemMapperEx.getBillItemByParam(barCodeList); + Map materialMap = new HashMap<>(); + Map depotMap = new HashMap<>(); + for (MaterialVo4Unit material: list) { + materialMap.put(material.getmBarCode(), material); + } + JSONArray depotArr = depotService.findDepotByCurrentUser(); + for (Object depotObj: depotArr) { + if(depotObj!=null) { + JSONObject depotObject = JSONObject.parseObject(depotObj.toString()); + depotMap.put(depotObject.getString("depotName"), depotObject.getLong("id")); + } + } + for (Map detailMap: detailList) { + JSONObject item = new JSONObject(); + String barCode = detailMap.get("barCode"); + if(StringUtil.isNotEmpty(barCode)) { + MaterialVo4Unit m = materialMap.get(barCode); + if(m!=null) { + //判断仓库是否存在 + String depotName = detailMap.get("depotName"); + if(StringUtil.isNotEmpty(depotName)) { + if(depotMap.get(depotName)!=null) { + item.put("depotName", depotName); + item.put("depotId", depotMap.get(depotName)); + } else { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_ITEM_DEPOTNAME_IS_NOT_EXIST_CODE, + String.format(ExceptionConstants.DEPOT_ITEM_DEPOTNAME_IS_NOT_EXIST_MSG, depotName)); + } + } + item.put("barCode", barCode); + item.put("name", m.getName()); + item.put("standard", m.getStandard()); + if(StringUtil.isNotEmpty(m.getModel())) { + item.put("model", m.getModel()); + } + if(StringUtil.isNotEmpty(m.getColor())) { + item.put("color", m.getColor()); + } + if(StringUtil.isNotEmpty(m.getSku())) { + item.put("sku", m.getSku()); + } + BigDecimal stock = BigDecimal.ZERO; + if(StringUtil.isNotEmpty(m.getSku())){ + stock = getSkuStockByParam(null, m.getMeId(),null,null); + } else { + stock = getCurrentStockByParam(null, m.getId()); + } + item.put("stock", stock); + item.put("unit", m.getCommodityUnit()); + BigDecimal operNumber = BigDecimal.ZERO; + BigDecimal unitPrice = BigDecimal.ZERO; + BigDecimal taxRate = BigDecimal.ZERO; + if(StringUtil.isNotEmpty(detailMap.get("num"))) { + operNumber = new BigDecimal(detailMap.get("num")); + } + if(StringUtil.isNotEmpty(detailMap.get("unitPrice"))) { + unitPrice = new BigDecimal(detailMap.get("unitPrice")); + } else { + if("CGDD".equals(prefixNo)) { + unitPrice = m.getPurchaseDecimal(); + } else if("XSDD".equals(prefixNo)) { + unitPrice = m.getWholesaleDecimal(); + } + } + if(StringUtil.isNotEmpty(detailMap.get("taxRate"))) { + taxRate = new BigDecimal(detailMap.get("taxRate")); + } + String remark = detailMap.get("remark"); + item.put("operNumber", operNumber); + item.put("unitPrice", unitPrice); + BigDecimal allPrice = BigDecimal.ZERO; + if(unitPrice!=null && unitPrice.compareTo(BigDecimal.ZERO)!=0) { + allPrice = unitPrice.multiply(operNumber).setScale(2, BigDecimal.ROUND_HALF_UP); + } + BigDecimal taxMoney = BigDecimal.ZERO; + BigDecimal taxLastMoney = BigDecimal.ZERO; + if(systemConfigService.getMaterialPriceTaxFlag()) { + //商品价格含税-开启 + if(taxRate.compareTo(BigDecimal.ZERO) != 0) { + BigDecimal taxRatePercent = taxRate.divide(BigDecimal.valueOf(100), 2, BigDecimal.ROUND_HALF_UP); + taxMoney = allPrice.divide(BigDecimal.ONE.add(taxRatePercent), 2, BigDecimal.ROUND_HALF_UP) + .multiply(taxRatePercent).setScale(2, BigDecimal.ROUND_HALF_UP); + } + taxLastMoney = allPrice; + } else { + if(taxRate.compareTo(BigDecimal.ZERO) != 0) { + taxMoney = taxRate.multiply(allPrice).divide(BigDecimal.valueOf(100), 2, BigDecimal.ROUND_HALF_UP); + } + taxLastMoney = allPrice.add(taxMoney); + } + item.put("allPrice", allPrice); + item.put("taxRate", taxRate); + item.put("taxMoney", taxMoney); + item.put("taxLastMoney", taxLastMoney); + item.put("remark", remark); + arr.add(item); + } else { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_ITEM_BARCODE_IS_NOT_EXIST_CODE, + String.format(ExceptionConstants.DEPOT_ITEM_BARCODE_IS_NOT_EXIST_MSG, barCode)); + } + } + } + map.put("rows", arr); + return map; + } + + public BigDecimal getLastUnitPriceByParam(Long organId, Long meId, String prefixNo) { + String type = ""; + String subType = ""; + if("XSDD".equals(prefixNo)) { + type = "其它"; + subType = "销售订单"; + } else if("XSCK".equals(prefixNo)) { + type = "出库"; + subType = "销售"; + } else if("XSTH".equals(prefixNo)) { + type = "入库"; + subType = "销售退货"; + } else if("QTCK".equals(prefixNo)) { + type = "出库"; + subType = "其它"; + } + return depotItemMapperEx.getLastUnitPriceByParam(organId, meId, type, subType); + } + + public BigDecimal getCurrentStockByParam(Long depotId, Long mId) { + BigDecimal stock = depotItemMapperEx.getCurrentStockByParam(depotId, mId); + return stock!=null? stock: BigDecimal.ZERO; + } + + /** + * 校验单据中的商品库存是否不足 + * @param number + * @param headerId + * @return + * @throws Exception + */ + public void checkMaterialStock(String number, Long headerId) throws Exception { + List depotItemList = getListByHeaderId(headerId); + for (DepotItem depotItem : depotItemList) { + Material material = materialService.getMaterial(depotItem.getMaterialId()); + MaterialExtend materialExtend = materialExtendService.getMaterialExtend(depotItem.getMaterialExtendId()); + String stockMsg = material.getName() + "-" + materialExtend.getBarCode(); + BigDecimal stock = getCurrentStockByParam(depotItem.getDepotId(),depotItem.getMaterialId()); + if(StringUtil.isNotEmpty(depotItem.getSku())) { + //对于sku商品要换个方式计算库存 + stock = getSkuStockByParam(depotItem.getDepotId(),depotItem.getMaterialExtendId(),null,null); + } + if(StringUtil.isNotEmpty(depotItem.getBatchNumber())) { + //对于批次商品要换个方式计算库存 + stock = getOneBatchNumberStock(depotItem.getDepotId(), materialExtend.getBarCode(), depotItem.getBatchNumber()); + stockMsg += "-批号" + depotItem.getBatchNumber(); + } + BigDecimal thisRealNumber = depotItem.getBasicNumber()==null?BigDecimal.ZERO:depotItem.getBasicNumber(); + if(StringUtil.isNotEmpty(depotItem.getBatchNumber())) { + //对于批次商品,直接使用当前填写的数量 + thisRealNumber = depotItem.getOperNumber()==null?BigDecimal.ZERO:depotItem.getOperNumber(); + } + if(stock.compareTo(thisRealNumber)<0){ + throw new BusinessRunTimeException(ExceptionConstants.BILL_MATERIAL_STOCK_NOT_ENOUGH_CODE, + String.format(ExceptionConstants.BILL_MATERIAL_STOCK_NOT_ENOUGH_MSG, number, stockMsg)); + } + } + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/service/DepotService.java b/smtERP-boot/src/main/java/com/reallin/smt/service/DepotService.java new file mode 100644 index 0000000..28422b9 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/service/DepotService.java @@ -0,0 +1,367 @@ +package com.reallin.smt.service; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.constants.BusinessConstants; +import com.reallin.smt.constants.ExceptionConstants; +import com.reallin.smt.datasource.entities.*; +import com.reallin.smt.datasource.mappers.*; +import com.reallin.smt.exception.BusinessRunTimeException; +import com.reallin.smt.exception.JshException; +import com.reallin.smt.utils.PageUtils; +import com.reallin.smt.utils.StringUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +@Service +public class DepotService { + private Logger logger = LoggerFactory.getLogger(DepotService.class); + + @Resource + private DepotMapper depotMapper; + @Resource + private DepotMapperEx depotMapperEx; + @Resource + private UserService userService; + @Resource + private SystemConfigService systemConfigService; + @Resource + private UserBusinessService userBusinessService; + @Resource + private LogService logService; + @Resource + private DepotItemMapperEx depotItemMapperEx; + @Resource + private MaterialInitialStockMapperEx materialInitialStockMapperEx; + @Resource + private MaterialCurrentStockMapperEx materialCurrentStockMapperEx; + + public Depot getDepot(long id)throws Exception { + Depot result=null; + try{ + result=depotMapper.selectByPrimaryKey(id); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return result; + } + + public List getDepotListByIds(String ids)throws Exception { + List idList = StringUtil.strToLongList(ids); + DepotExample example = new DepotExample(); + example.createCriteria().andIdIn(idList); + return depotMapper.selectByExample(example); + } + + public List getDepot()throws Exception { + DepotExample example = new DepotExample(); + example.createCriteria().andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list=null; + try{ + list=depotMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public List getAllList()throws Exception { + DepotExample example = new DepotExample(); + example.createCriteria().andEnabledEqualTo(true).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + example.setOrderByClause("sort asc, id desc"); + List list=null; + try{ + list=depotMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public List select(String name, Integer type, String remark)throws Exception { + List list=null; + try{ + PageUtils.startPage(); + list=depotMapperEx.selectByConditionDepot(name, type, remark); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int insertDepot(JSONObject obj, HttpServletRequest request)throws Exception { + Depot depot = JSONObject.parseObject(obj.toJSONString(), Depot.class); + int result=0; + try{ + depot.setType(0); + List depotList = getDepot(); + if(depotList.size() == 0) { + depot.setIsDefault(true); + } else { + depot.setIsDefault(false); + } + depot.setEnabled(true); + result=depotMapper.insertSelective(depot); + //新增仓库时给当前用户自动授权 + Long userId = userService.getUserId(request); + Long depotId = getIdByName(depot.getName()); + String ubKey = "[" + depotId + "]"; + List ubList = userBusinessService.getBasicData(userId.toString(), "UserDepot"); + if(ubList ==null || ubList.size() == 0) { + JSONObject ubObj = new JSONObject(); + ubObj.put("type", "UserDepot"); + ubObj.put("keyId", userId); + ubObj.put("value", ubKey); + userBusinessService.insertUserBusiness(ubObj, request); + } else { + UserBusiness ubInfo = ubList.get(0); + JSONObject ubObj = new JSONObject(); + ubObj.put("id", ubInfo.getId()); + ubObj.put("type", ubInfo.getType()); + ubObj.put("keyId", ubInfo.getKeyId()); + ubObj.put("value", ubInfo.getValue() + ubKey); + userBusinessService.updateUserBusiness(ubObj, request); + } + logService.insertLog("仓库", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_ADD).append(depot.getName()).toString(), request); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int updateDepot(JSONObject obj, HttpServletRequest request) throws Exception{ + Depot depot = JSONObject.parseObject(obj.toJSONString(), Depot.class); + int result=0; + try{ + result= depotMapper.updateByPrimaryKeySelective(depot); + logService.insertLog("仓库", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_EDIT).append(depot.getName()).toString(), request); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int deleteDepot(Long id, HttpServletRequest request)throws Exception { + return batchDeleteDepotByIds(id.toString()); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteDepot(String ids, HttpServletRequest request) throws Exception{ + return batchDeleteDepotByIds(ids); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteDepotByIds(String ids)throws Exception { + int result=0; + String [] idArray=ids.split(","); + //校验单据子表 tbl_depot_item + List depotItemList = depotItemMapperEx.getDepotItemListListByDepotIds(idArray); + if(depotItemList!=null&&depotItemList.size()>0){ + logger.error("异常码[{}],异常提示[{}],参数,DepotIds[{}]", + ExceptionConstants.DELETE_FORCE_CONFIRM_CODE,ExceptionConstants.DELETE_FORCE_CONFIRM_MSG,ids); + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, + ExceptionConstants.DELETE_FORCE_CONFIRM_MSG); + } + try{ + //记录日志 + StringBuffer sb = new StringBuffer(); + sb.append(BusinessConstants.LOG_OPERATION_TYPE_DELETE); + List list = getDepotListByIds(ids); + for(Depot depot: list){ + sb.append("[").append(depot.getName()).append("]"); + } + User userInfo=userService.getCurrentUser(); + //校验通过执行删除操作 + //删除仓库关联的商品的初始库存 + materialInitialStockMapperEx.batchDeleteByDepots(idArray); + //删除仓库关联的商品的当前库存 + materialCurrentStockMapperEx.batchDeleteByDepots(idArray); + //删除仓库 + result = depotMapperEx.batchDeleteDepotByIds(new Date(),userInfo==null?null:userInfo.getId(),idArray); + //记录日志 + logService.insertLog("仓库", sb.toString(), + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); + } catch (Exception e) { + JshException.writeFail(logger, e); + } + return result; + } + + public int checkIsNameExist(Long id, String name)throws Exception { + DepotExample example = new DepotExample(); + example.createCriteria().andIdNotEqualTo(id).andNameEqualTo(name).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list=null; + try{ + list= depotMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list==null?0:list.size(); + } + + public List findUserDepot()throws Exception{ + DepotExample example = new DepotExample(); + example.createCriteria().andTypeEqualTo(0).andEnabledEqualTo(true) + .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + example.setOrderByClause("sort asc, id desc"); + List list=null; + try{ + list= depotMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int updateIsDefault(Long depotId) throws Exception{ + int result=0; + try{ + //全部取消默认 + Depot allDepot = new Depot(); + allDepot.setIsDefault(false); + DepotExample allExample = new DepotExample(); + allExample.createCriteria(); + depotMapper.updateByExampleSelective(allDepot, allExample); + //给指定仓库设为默认 + Depot depot = new Depot(); + depot.setIsDefault(true); + DepotExample example = new DepotExample(); + example.createCriteria().andIdEqualTo(depotId); + depotMapper.updateByExampleSelective(depot, example); + logService.insertLog("仓库",BusinessConstants.LOG_OPERATION_TYPE_EDIT+depotId, + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); + result = 1; + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + /** + * 根据名称获取id + * @param name + */ + public Long getIdByName(String name){ + Long id = 0L; + DepotExample example = new DepotExample(); + example.createCriteria().andNameEqualTo(name).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list = depotMapper.selectByExample(example); + if(list!=null && list.size()>0) { + id = list.get(0).getId(); + } + return id; + } + + /** + * 根据单个仓库查询 + * @param depotId + * @return + * @throws Exception + */ + public List parseDepotList(Long depotId) throws Exception { + List depotList = new ArrayList<>(); + if(depotId !=null) { + depotList.add(depotId); + } else { + //未选择仓库时默认为当前用户有权限的仓库 + JSONArray depotArr = findDepotByCurrentUser(); + for(Object obj: depotArr) { + JSONObject object = JSONObject.parseObject(obj.toString()); + depotList.add(object.getLong("id")); + } + } + return depotList; + } + + /** + * 根据多个仓库查询 + * @param depotIdArr + * @return + * @throws Exception + */ + public List parseDepotListByArr(String[] depotIdArr) throws Exception { + List depotList = new ArrayList<>(); + if(depotIdArr !=null) { + for (int i = 0; i < depotIdArr.length; i++) { + depotList.add(Long.parseLong(depotIdArr[i])); + } + } else { + //未选择仓库时默认为当前用户有权限的仓库 + JSONArray depotArr = findDepotByCurrentUser(); + for(Object obj: depotArr) { + JSONObject object = JSONObject.parseObject(obj.toString()); + depotList.add(object.getLong("id")); + } + } + return depotList; + } + + public JSONArray findDepotByCurrentUser() throws Exception { + JSONArray arr = new JSONArray(); + List dataList = findUserDepot(); + if (null != dataList) { + for (Depot depot : dataList) { + JSONObject item = new JSONObject(); + item.put("id", depot.getId()); + item.put("depotName", depot.getName()); + item.put("isDefault", depot.getIsDefault()); + arr.add(item); + } + } + return arr; + } + + /** + * 当前用户有权限使用的仓库列表的id,用逗号隔开 + * @return + * @throws Exception + */ + public String findDepotStrByCurrentUser() throws Exception { + JSONArray arr = findDepotByCurrentUser(); + StringBuffer sb = new StringBuffer(); + for(Object object: arr) { + JSONObject obj = (JSONObject)object; + sb.append(obj.getLong("id")).append(","); + } + String depotStr = sb.toString(); + if(StringUtil.isNotEmpty(depotStr)){ + depotStr = depotStr.substring(0, depotStr.length()-1); + } + return depotStr; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchSetStatus(Boolean status, String ids)throws Exception { + logService.insertLog("仓库", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_ENABLED).toString(), + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); + List depotIds = StringUtil.strToLongList(ids); + Depot depot = new Depot(); + depot.setEnabled(status); + DepotExample example = new DepotExample(); + example.createCriteria().andIdIn(depotIds); + int result=0; + try{ + result = depotMapper.updateByExampleSelective(depot, example); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/service/FunctionService.java b/smtERP-boot/src/main/java/com/reallin/smt/service/FunctionService.java new file mode 100644 index 0000000..000e47c --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/service/FunctionService.java @@ -0,0 +1,283 @@ +package com.reallin.smt.service; + +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.constants.BusinessConstants; +import com.reallin.smt.datasource.entities.*; +import com.reallin.smt.datasource.mappers.FunctionMapper; +import com.reallin.smt.datasource.mappers.FunctionMapperEx; +import com.reallin.smt.exception.JshException; +import com.reallin.smt.utils.PageUtils; +import com.reallin.smt.utils.StringUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.*; + +@Service +public class FunctionService { + private Logger logger = LoggerFactory.getLogger(FunctionService.class); + + @Resource + private FunctionMapper functionsMapper; + + @Resource + private FunctionMapperEx functionMapperEx; + + @Resource + private UserService userService; + + @Resource + private UserBusinessService userBusinessService; + + @Resource + private SystemConfigService systemConfigService; + + @Resource + private LogService logService; + + public Function getFunction(long id)throws Exception { + Function result=null; + try{ + result=functionsMapper.selectByPrimaryKey(id); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return result; + } + + public List getFunctionListByIds(String ids)throws Exception { + List idList = StringUtil.strToLongList(ids); + List list = new ArrayList<>(); + try{ + FunctionExample example = new FunctionExample(); + example.createCriteria().andIdIn(idList); + list = functionsMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public List getFunction()throws Exception { + FunctionExample example = new FunctionExample(); + example.createCriteria().andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list=null; + try{ + list=functionsMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public List select(String name, String nameEn, String type)throws Exception { + List list=null; + try{ + if(BusinessConstants.DEFAULT_MANAGER.equals(userService.getCurrentUser().getLoginName())) { + PageUtils.startPage(); + list = functionMapperEx.selectByConditionFunction(name, nameEn, type); + } + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int insertFunction(JSONObject obj, HttpServletRequest request)throws Exception { + Function functions = JSONObject.parseObject(obj.toJSONString(), Function.class); + int result=0; + try{ + if(BusinessConstants.DEFAULT_MANAGER.equals(userService.getCurrentUser().getLoginName())) { + functions.setState(false); + functions.setType("电脑版"); + result = functionsMapper.insertSelective(functions); + logService.insertLog("功能", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_ADD).append(functions.getName()).toString(), request); + } + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int updateFunction(JSONObject obj, HttpServletRequest request) throws Exception{ + Function functions = JSONObject.parseObject(obj.toJSONString(), Function.class); + int result=0; + try{ + if(BusinessConstants.DEFAULT_MANAGER.equals(userService.getCurrentUser().getLoginName())) { + result = functionsMapper.updateByPrimaryKeySelective(functions); + logService.insertLog("功能", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_EDIT).append(functions.getName()).toString(), request); + } + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int deleteFunction(Long id, HttpServletRequest request)throws Exception { + return batchDeleteFunctionByIds(id.toString()); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteFunction(String ids, HttpServletRequest request)throws Exception { + return batchDeleteFunctionByIds(ids); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteFunctionByIds(String ids)throws Exception { + StringBuffer sb = new StringBuffer(); + sb.append(BusinessConstants.LOG_OPERATION_TYPE_DELETE); + List list = getFunctionListByIds(ids); + for(Function functions: list){ + sb.append("[").append(functions.getName()).append("]"); + } + User userInfo=userService.getCurrentUser(); + String [] idArray=ids.split(","); + int result=0; + try{ + if(BusinessConstants.DEFAULT_MANAGER.equals(userService.getCurrentUser().getLoginName())) { + result = functionMapperEx.batchDeleteFunctionByIds(new Date(), userInfo == null ? null : userInfo.getId(), idArray); + logService.insertLog("功能", sb.toString(), + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); + } + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + public int checkIsNameExist(Long id, String name)throws Exception { + FunctionExample example = new FunctionExample(); + example.createCriteria().andIdNotEqualTo(id).andNameEqualTo(name).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list=null; + try{ + list = functionsMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list==null?0:list.size(); + } + + public int checkIsNumberExist(Long id, String number)throws Exception { + FunctionExample example = new FunctionExample(); + example.createCriteria().andIdNotEqualTo(id).andNumberEqualTo(number).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list=null; + try{ + list = functionsMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list==null?0:list.size(); + } + + public List getRoleFunction(String pNumber)throws Exception { + FunctionExample example = new FunctionExample(); + example.createCriteria().andEnabledEqualTo(true).andParentNumberEqualTo(pNumber) + .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + example.setOrderByClause("Sort"); + List list=null; + try{ + list = functionsMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public List findRoleFunction(String pnumber, List funIdList)throws Exception{ + List list=null; + try{ + Boolean multiLevelApprovalFlag = systemConfigService.getMultiLevelApprovalFlag(); + FunctionExample example = new FunctionExample(); + FunctionExample.Criteria criteria = example.createCriteria(); + criteria.andEnabledEqualTo(true).andParentNumberEqualTo(pnumber) + .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + if("0".equals(pnumber)) { + if(!multiLevelApprovalFlag) { + criteria.andUrlNotEqualTo("/workflow"); + } + } + if(funIdList!=null && funIdList.size()>0) { + criteria.andIdIn(funIdList); + } + example.setOrderByClause("Sort"); + list =functionsMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public List findByIds(String functionsIds)throws Exception{ + List idList = StringUtil.strToLongList(functionsIds); + FunctionExample example = new FunctionExample(); + example.createCriteria().andEnabledEqualTo(true).andIdIn(idList).andPushBtnIsNotNull().andPushBtnNotEqualTo("") + .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + example.setOrderByClause("Sort asc"); + List list=null; + try{ + list =functionsMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + /** + * 获取当前用户所拥有的功能id列表 + * @return + */ + public List getCurrentUserFunIdList() throws Exception { + List funIdList = new ArrayList<>(); + Long roleId = 0L; + String fc = ""; + User userInfo = userService.getCurrentUser(); + //获取当前用户所有的角色id + List roleList = userBusinessService.getBasicData(userInfo.getId().toString(), "UserRole"); + if(roleList!=null && roleList.size()>0){ + String value = roleList.get(0).getValue(); + if(StringUtil.isNotEmpty(value)){ + String roleIdStr = value.replace("[", "").replace("]", ""); + roleId = Long.parseLong(roleIdStr); + } + } + //当前用户所拥有的功能列表,格式如:[1][2][5] + List funList = userBusinessService.getBasicData(roleId.toString(), "RoleFunctions"); + if(funList!=null && funList.size()>0){ + fc = funList.get(0).getValue(); + } + if(StringUtil.isNotEmpty(fc)) { + fc = fc.substring(1, fc.length() - 1); + fc = fc.replace("][",","); + funIdList = StringUtil.strToLongList(fc); + } + return funIdList; + } + + /** + * 获取当前用户所拥有的功能id的map + * @return + */ + public Map getCurrentUserFunIdMap() throws Exception { + Map funIdMap = new HashMap<>(); + List list = getCurrentUserFunIdList(); + if(list.size()>0) { + for(Long funId: list) { + funIdMap.put(funId, funId); + } + return funIdMap; + } else { + return null; + } + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/service/InOutItemService.java b/smtERP-boot/src/main/java/com/reallin/smt/service/InOutItemService.java new file mode 100644 index 0000000..00aafdd --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/service/InOutItemService.java @@ -0,0 +1,245 @@ +package com.reallin.smt.service; + +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.constants.BusinessConstants; +import com.reallin.smt.constants.ExceptionConstants; +import com.reallin.smt.datasource.entities.AccountItem; +import com.reallin.smt.datasource.entities.InOutItem; +import com.reallin.smt.datasource.entities.InOutItemExample; +import com.reallin.smt.datasource.entities.User; +import com.reallin.smt.datasource.mappers.AccountItemMapperEx; +import com.reallin.smt.datasource.mappers.InOutItemMapper; +import com.reallin.smt.datasource.mappers.InOutItemMapperEx; +import com.reallin.smt.exception.BusinessRunTimeException; +import com.reallin.smt.exception.JshException; +import com.reallin.smt.utils.PageUtils; +import com.reallin.smt.utils.StringUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +@Service +public class InOutItemService { + private Logger logger = LoggerFactory.getLogger(InOutItemService.class); + + @Resource + private InOutItemMapper inOutItemMapper; + + @Resource + private InOutItemMapperEx inOutItemMapperEx; + @Resource + private UserService userService; + @Resource + private LogService logService; + @Resource + private AccountItemMapperEx accountItemMapperEx; + + public InOutItem getInOutItem(long id)throws Exception { + InOutItem result=null; + try{ + result=inOutItemMapper.selectByPrimaryKey(id); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return result; + } + + public List getInOutItemListByIds(String ids)throws Exception { + List idList = StringUtil.strToLongList(ids); + List list = new ArrayList<>(); + try{ + InOutItemExample example = new InOutItemExample(); + example.createCriteria().andIdIn(idList); + list = inOutItemMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public List getInOutItem()throws Exception { + InOutItemExample example = new InOutItemExample(); + example.createCriteria().andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list=null; + try{ + list=inOutItemMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public List select(String name, String type, String remark)throws Exception { + List list=null; + try{ + PageUtils.startPage(); + list=inOutItemMapperEx.selectByConditionInOutItem(name, type, remark); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int insertInOutItem(JSONObject obj, HttpServletRequest request)throws Exception { + InOutItem inOutItem = JSONObject.parseObject(obj.toJSONString(), InOutItem.class); + int exist = checkIsNameAndTypeExist(inOutItem.getId(), inOutItem.getName(), inOutItem.getType()); + if(exist>0) { + //存在 + throw new BusinessRunTimeException(ExceptionConstants.IN_OUT_ITEM_NAME_EXIST_FAILED_CODE, + ExceptionConstants.IN_OUT_ITEM_NAME_EXIST_FAILED_MSG); + } + int result=0; + try{ + inOutItem.setEnabled(true); + result=inOutItemMapper.insertSelective(inOutItem); + logService.insertLog("收支项目", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_ADD).append(inOutItem.getName()).toString(), request); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int updateInOutItem(JSONObject obj, HttpServletRequest request)throws Exception { + InOutItem inOutItem = JSONObject.parseObject(obj.toJSONString(), InOutItem.class); + int exist = checkIsNameAndTypeExist(inOutItem.getId(), inOutItem.getName(), inOutItem.getType()); + if(exist>0) { + //存在 + throw new BusinessRunTimeException(ExceptionConstants.IN_OUT_ITEM_NAME_EXIST_FAILED_CODE, + ExceptionConstants.IN_OUT_ITEM_NAME_EXIST_FAILED_MSG); + } + int result=0; + try{ + result=inOutItemMapper.updateByPrimaryKeySelective(inOutItem); + logService.insertLog("收支项目", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_EDIT).append(inOutItem.getName()).toString(), request); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int deleteInOutItem(Long id, HttpServletRequest request)throws Exception { + return batchDeleteInOutItemByIds(id.toString()); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteInOutItem(String ids, HttpServletRequest request)throws Exception { + return batchDeleteInOutItemByIds(ids); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteInOutItemByIds(String ids)throws Exception { + int result = 0; + String [] idArray=ids.split(","); + //校验财务子表 tbl_accountitem + List accountItemList=null; + try{ + accountItemList=accountItemMapperEx.getAccountItemListByInOutItemIds(idArray); + }catch(Exception e){ + JshException.readFail(logger, e); + } + if(accountItemList!=null&&accountItemList.size()>0){ + logger.error("异常码[{}],异常提示[{}],参数,InOutItemIds[{}]", + ExceptionConstants.DELETE_FORCE_CONFIRM_CODE,ExceptionConstants.DELETE_FORCE_CONFIRM_MSG,ids); + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, + ExceptionConstants.DELETE_FORCE_CONFIRM_MSG); + } + //校验通过执行删除操作 + StringBuffer sb = new StringBuffer(); + sb.append(BusinessConstants.LOG_OPERATION_TYPE_DELETE); + List list = getInOutItemListByIds(ids); + for(InOutItem inOutItem: list){ + sb.append("[").append(inOutItem.getName()).append("]"); + } + logService.insertLog("收支项目", sb.toString(), + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); + User userInfo=userService.getCurrentUser(); + try{ + result=inOutItemMapperEx.batchDeleteInOutItemByIds(new Date(),userInfo==null?null:userInfo.getId(),idArray); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return result; + } + + public int checkIsNameAndTypeExist(Long id, String name, String type)throws Exception { + id = id==null?0L:id; + InOutItemExample example = new InOutItemExample(); + example.createCriteria().andIdNotEqualTo(id).andNameEqualTo(name).andTypeEqualTo(type).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list = null; + try{ + list=inOutItemMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + + return list==null?0:list.size(); + } + + public int checkIsNameExist(Long id, String name)throws Exception { + InOutItemExample example = new InOutItemExample(); + example.createCriteria().andIdNotEqualTo(id).andNameEqualTo(name).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list = null; + try{ + list=inOutItemMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + + return list==null?0:list.size(); + } + + public List findBySelect(String type)throws Exception { + InOutItemExample example = new InOutItemExample(); + if (type.equals("in")) { + example.createCriteria().andTypeEqualTo("收入").andEnabledEqualTo(true) + .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + } else if (type.equals("out")) { + example.createCriteria().andTypeEqualTo("支出").andEnabledEqualTo(true) + .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + } else { + example.createCriteria().andEnabledEqualTo(true) + .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + } + example.setOrderByClause("sort asc, id desc"); + List list = null; + try{ + list=inOutItemMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchSetStatus(Boolean status, String ids)throws Exception { + logService.insertLog("收支项目", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_ENABLED).toString(), + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); + List inOutItemIds = StringUtil.strToLongList(ids); + InOutItem inOutItem = new InOutItem(); + inOutItem.setEnabled(status); + InOutItemExample example = new InOutItemExample(); + example.createCriteria().andIdIn(inOutItemIds); + int result=0; + try{ + result = inOutItemMapper.updateByExampleSelective(inOutItem, example); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/service/LegacyInventoryAuthService.java b/smtERP-boot/src/main/java/com/reallin/smt/service/LegacyInventoryAuthService.java new file mode 100644 index 0000000..9790b58 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/service/LegacyInventoryAuthService.java @@ -0,0 +1,49 @@ +package com.reallin.smt.service; + +import com.reallin.smt.exception.LegacyInventoryBusinessException; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.UUID; + +/** Scoped tokens cannot be used as ERP sessions or renewed indefinitely. */ +@Service +public class LegacyInventoryAuthService { + public static final String HEADER = "X-Inventory-Token"; + private static final String PREFIX = "inventory:token:"; + + @Resource + private RedisService redisService; + @Value("${security.inventory.token-ttl-seconds:3600}") + private long tokenTtlSeconds; + + public String issueToken(Object userId) { + String token = UUID.randomUUID().toString().replace("-", ""); + redisService.storageKeyWithTime(PREFIX + token, userId.toString(), Math.max(60L, tokenTtlSeconds)); + return token; + } + + public Object authenticatedUser(HttpServletRequest request) { + String token = request.getHeader(HEADER); + if (token != null) { + if (!token.matches("[a-f0-9]{32}")) return null; + return redisService.getCacheObject(PREFIX + token); + } + return redisService.getObjectFromSessionByKey(request, "userId"); + } + + public long requireCurrentUserId() { + ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); + Object userId = attributes == null ? null : authenticatedUser(attributes.getRequest()); + if (userId == null) throw new LegacyInventoryBusinessException("登录已过期,请重新登录"); + try { + return Long.parseLong(userId.toString()); + } catch (NumberFormatException e) { + throw new LegacyInventoryBusinessException("登录身份无效,请重新登录"); + } + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/service/LegacyInventoryService.java b/smtERP-boot/src/main/java/com/reallin/smt/service/LegacyInventoryService.java new file mode 100644 index 0000000..47ace5b --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/service/LegacyInventoryService.java @@ -0,0 +1,407 @@ +package com.reallin.smt.service; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.exception.LegacyInventoryBusinessException; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.DigestUtils; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.math.BigDecimal; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Date; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +/** + * 原 n2tpm 盘点接口协议适配服务。 + */ +@Service +public class LegacyInventoryService { + private static final String STATUS_DRAFT = "DRAFT"; + private static final String STATUS_ACCEPTED = "ACCEPTED"; + private static final String STATUS_IN_PROGRESS = "IN_PROGRESS"; + private static final String STATUS_PENDING_AUDIT = "PENDING_AUDIT"; + private static final String STATUS_COMPLETED = "COMPLETED"; + private static final String STATUS_CLOSED = "CLOSED"; + + @Resource + private JdbcTemplate jdbcTemplate; + @Resource + private SystemConfigService systemConfigService; + @Resource + private LegacyInventoryAuthService legacyInventoryAuthService; + @Resource + private LoginAttemptService loginAttemptService; + + public Object login(JSONObject input) { + String loginName = required(input, "USER_NAME"); + String password = required(input, "PASSWORD"); + if (loginAttemptService.getRemainingDelaySeconds(loginName) > 0) { + throw new LegacyInventoryBusinessException("登录尝试过于频繁,请稍后重试"); + } + List> users = jdbcTemplate.queryForList( + "SELECT id, username, login_name, password FROM tbl_user " + + "WHERE login_name=? AND IFNULL(delete_flag,'0')!='1' AND IFNULL(status,0)=0 " + + "ORDER BY id LIMIT 1", loginName); + if (users.isEmpty()) throw new LegacyInventoryBusinessException("用户名错误"); + Map user = users.get(0); + String storedPassword = string(user.get("password")); + String encrypted = DigestUtils.md5DigestAsHex(password.getBytes(java.nio.charset.StandardCharsets.UTF_8)); + Map result = new LinkedHashMap<>(); + if (storedPassword != null && storedPassword.equalsIgnoreCase(encrypted)) { + loginAttemptService.clear(loginName); + result.put("TOKEN", legacyInventoryAuthService.issueToken(user.get("id"))); + result.put("USER_ID", string(user.get("id"))); + result.put("DATA_AUTH", string(user.get("id"))); + result.put("RESULT", "true"); + } else { + loginAttemptService.recordPasswordFailure(loginName); + result.put("USER_ID", ""); + result.put("DATA_AUTH", ""); + result.put("RESULT", "false"); + } + return result; + } + + public Object getInventory(JSONObject input) { + required(input, "DATA_AUTH"); + long userId = longValue(required(input, "USER_ID"), "USER_ID"); + requireUser(userId); + String baseSql = "SELECT * FROM tbl_asset_inventory WHERE " + + "IFNULL(delete_flag,'0')!='1' AND status NOT IN (?,?)"; + List> rows = jdbcTemplate.queryForList(baseSql + + " AND inventory_user_id=? ORDER BY id DESC", + STATUS_PENDING_AUDIT, STATUS_CLOSED, userId); + List> result = new ArrayList<>(); + for (Map row : rows) result.add(toLegacyInventory(row)); + return result; + } + + public Object getInventoryDetail(JSONObject input) { + String dataAuth = required(input, "DATA_AUTH"); + String inventoryNo = required(input, "INVENTORY_DOC"); + Map inventory = requireInventory(inventoryNo); + long inventoryId = longValue(inventory.get("id"), "盘点单ID"); + List> rows = jdbcTemplate.queryForList( + "SELECT d.*, dev.location setup_location, dev.status device_status, " + + "COALESCE(u.username,d.inventory_user_name) operator_name " + + "FROM tbl_asset_inventory_detail d " + + "LEFT JOIN tbl_asset_device dev ON d.target_type='DEVICE' AND dev.id=d.target_id " + + "LEFT JOIN tbl_user u ON u.id=d.inventory_user_id " + + "WHERE d.inventory_id=? ORDER BY d.inventory_status='PENDING' DESC,d.id", + inventoryId); + List> result = new ArrayList<>(); + for (Map row : rows) result.add(toLegacyDetail(row, inventoryNo, dataAuth)); + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public Object saveDeviceInventoryInfo(JSONObject input) { + JSONArray data = input == null ? null : input.getJSONArray("DATA"); + if (data == null || data.isEmpty()) throw new LegacyInventoryBusinessException("DATA不能为空"); + for (int index = 0; index < data.size(); index++) { + JSONObject item = data.getJSONObject(index); + required(item, "DATA_AUTH"); + long userId = longValue(required(item, "USER_ID"), "USER_ID"); + requireUser(userId); + String inventoryNo = required(item, "INVENTORY_DOC"); + String deviceSn = required(item, "DEVICE_SN"); + String usePlace = optional(item, "USE_PLACE"); + String remark = optional(item, "REMARK"); + Date inventoryTime = new Date(longValue(required(item, "INVENTORY_TIME"), "INVENTORY_TIME")); + + Map inventory = requireInventory(inventoryNo); + String status = string(inventory.get("status")); + if (!STATUS_ACCEPTED.equals(status) && !STATUS_IN_PROGRESS.equals(status)) { + throw new LegacyInventoryBusinessException("该订单状态不允许盘点"); + } + long inventoryId = longValue(inventory.get("id"), "盘点单ID"); + List> details = jdbcTemplate.queryForList( + "SELECT * FROM tbl_asset_inventory_detail WHERE inventory_id=? AND target_code=? LIMIT 1", + inventoryId, deviceSn); + if (details.isEmpty()) throw new LegacyInventoryBusinessException("盘点明细不存在"); + Map detail = details.get(0); + if (!"PENDING".equals(string(detail.get("inventory_status")))) { + throw new LegacyInventoryBusinessException("NG:该设备已被盘点,不可重复盘点"); + } + String operatorName = string(requireUser(userId).get("username")); + jdbcTemplate.update("UPDATE tbl_asset_inventory_detail SET actual_quantity=book_quantity, " + + "inventory_status='INVENTORIED', actual_location=?, inventory_time=?, inventory_user_id=?, " + + "inventory_user_name=?, remark=?, update_time=NOW() WHERE id=? AND inventory_id=?", + usePlace, new Timestamp(inventoryTime.getTime()), userId, operatorName, remark, + detail.get("id"), inventoryId); + if ("DEVICE".equals(string(detail.get("target_type")))) { + jdbcTemplate.update("UPDATE tbl_asset_device SET last_inventory_time=?, update_time=NOW() " + + "WHERE id=?", new Timestamp(inventoryTime.getTime()), + detail.get("target_id")); + } + Map counts = jdbcTemplate.queryForMap( + "SELECT COUNT(1) total_count, SUM(CASE WHEN inventory_status!='PENDING' THEN 1 ELSE 0 END) inventoried_count, " + + "SUM(CASE WHEN inventory_status='NORMAL' THEN 1 ELSE 0 END) normal_count, " + + "SUM(CASE WHEN inventory_status IN ('SURPLUS','SHORTAGE','ABNORMAL') THEN 1 ELSE 0 END) abnormal_count " + + "FROM tbl_asset_inventory_detail WHERE inventory_id=?", inventoryId); + int total = number(counts.get("total_count")); + int inventoried = number(counts.get("inventoried_count")); + String nextStatus = total == inventoried ? STATUS_COMPLETED : STATUS_IN_PROGRESS; + jdbcTemplate.update("UPDATE tbl_asset_inventory SET status=?, total_count=?, inventoried_count=?, " + + "normal_count=?, abnormal_count=?, started_at=COALESCE(started_at,?), " + + "completed_at=CASE WHEN ?=? THEN ? ELSE completed_at END, updater=?, update_time=NOW() " + + "WHERE id=?", + nextStatus, total, inventoried, number(counts.get("normal_count")), + number(counts.get("abnormal_count")), new Timestamp(inventoryTime.getTime()), + total, inventoried, new Timestamp(inventoryTime.getTime()), userId, inventoryId); + insertOperation(inventoryId, "4", userId, inventoryTime, "盘点设备:" + deviceSn); + } + return "OK"; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public Object acceptInventory(JSONObject input) { + required(input, "DATA_AUTH"); + long userId = longValue(required(input, "USER_ID"), "USER_ID"); + requireUser(userId); + String inventoryNo = required(input, "INVENTORY_DOC"); + Map inventory = requireInventory(inventoryNo); + if (!STATUS_DRAFT.equals(string(inventory.get("status")))) { + throw new LegacyInventoryBusinessException("待接单才允许接单"); + } + long inventoryId = longValue(inventory.get("id"), "盘点单ID"); + jdbcTemplate.update("UPDATE tbl_asset_inventory SET status=?, updater=?, update_time=NOW() " + + "WHERE id=?", STATUS_ACCEPTED, userId, inventoryId); + insertOperation(inventoryId, "2", userId, new Date(), "接收盘点单"); + return "OK"; + } + + public Object getDevice(JSONObject input) { + requireUser(legacyInventoryAuthService.requireCurrentUserId()); + List> rows = jdbcTemplate.queryForList( + "SELECT * FROM tbl_asset_device WHERE IFNULL(delete_flag,'0')!='1' ORDER BY id DESC"); + List> result = new ArrayList<>(); + for (Map row : rows) { + Map item = new LinkedHashMap<>(); + item.put("DEVICE_SN", string(row.get("device_code"))); + item.put("MEMO", string(row.get("remark"))); + item.put("SETUP_LOCATION", string(row.get("location"))); + item.put("DEVICE_TYPE", string(row.get("device_category"))); + item.put("DEVICE_NAME", string(row.get("device_name"))); + item.put("DEVICE_STATUS", legacyDeviceStatus(string(row.get("status")))); + item.put("DEPT_NAME", string(row.get("use_department"))); + item.put("CHARGE_MAN", string(row.get("keeper"))); + item.put("DEVICE_MODEL", string(row.get("model"))); + item.put("DEVICE_GENRE", string(row.get("device_category"))); + item.put("USER_ID", ""); + result.add(item); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public Object uploadPicture(String userIdText, String dataAuth, String inventoryNo, String deviceSn, + List files, HttpServletRequest request) throws Exception { + if (blank(dataAuth)) throw new LegacyInventoryBusinessException("DATA_AUTH不能为空"); + long userId = longValue(userIdText, "USER_ID"); + requireUser(userId); + Map inventory = requireInventory(inventoryNo); + long inventoryId = longValue(inventory.get("id"), "盘点单ID"); + List> details = jdbcTemplate.queryForList( + "SELECT * FROM tbl_asset_inventory_detail WHERE inventory_id=? AND target_code=? LIMIT 1", + inventoryId, deviceSn); + if (details.isEmpty()) throw new LegacyInventoryBusinessException("盘点明细不存在"); + Map detail = details.get(0); + long detailId = longValue(detail.get("id"), "盘点明细ID"); + String groupId = string(detail.get("image_group_id")); + if (blank(groupId)) { + groupId = UUID.randomUUID().toString().replace("-", ""); + jdbcTemplate.update("UPDATE tbl_asset_inventory_detail SET image_group_id=?, update_time=NOW() " + + "WHERE id=?", groupId, detailId); + } + for (MultipartFile file : files == null ? Collections.emptyList() : files) { + if (file == null || file.isEmpty()) continue; + String path = systemConfigService.uploadLocal(file, "asset-inventory", request); + if (blank(path)) throw new LegacyInventoryBusinessException("图片上传失败"); + jdbcTemplate.update("INSERT INTO tbl_asset_inventory_file " + + "(group_id,inventory_detail_id,original_name,file_path,content_type,file_size,creator,create_time) " + + "VALUES (?,?,?,?,?,?,?,NOW())", groupId, detailId, file.getOriginalFilename(), path, + file.getContentType(), file.getSize(), userId); + } + List> storedFiles = jdbcTemplate.queryForList( + "SELECT file_path FROM tbl_asset_inventory_file WHERE group_id=? AND inventory_detail_id=? " + + "ORDER BY id", groupId, detailId); + List urls = new ArrayList<>(); + String baseUrl = request.getScheme() + "://" + request.getServerName() + + ((request.getScheme().equals("http") && request.getServerPort() == 80) || + (request.getScheme().equals("https") && request.getServerPort() == 443) + ? "" : ":" + request.getServerPort()) + request.getContextPath() + "/systemConfig/static/"; + for (Map file : storedFiles) urls.add(baseUrl + string(file.get("file_path"))); + return urls; + } + + private Map toLegacyInventory(Map row) { + Map item = new LinkedHashMap<>(); + item.put("ID", string(row.get("id"))); + item.put("INVENTORY_DOC", string(row.get("inventory_no"))); + item.put("DEPT_ID", null); + item.put("CREATE_USER", string(row.get("creator"))); + item.put("CREATE_TIME", row.get("create_time")); + item.put("EDIT_USER", string(row.get("updater"))); + item.put("EDIT_TIME", row.get("update_time")); + item.put("DATA_AUTH", string(row.get("inventory_user_id"))); + item.put("PLAN_NAME", string(row.get("plan_name"))); + item.put("STATUS", legacyInventoryStatus(string(row.get("status")))); + item.put("DEVICE_COUNT", row.get("total_count")); + item.put("INVENTORY_COUNT", row.get("inventoried_count")); + item.put("INVENTORY_CYCLE", null); + item.put("INVENTORY_USER", string(row.get("inventory_user_id"))); + item.put("INVENTORY_TYPE", string(row.get("scope_type"))); + item.put("LAST_INVENTORY_TIME", null); + item.put("INVENTORY_BEGINTIME", row.get("planned_at")); + item.put("INVENTORY_ENDTIME", row.get("deadline")); + item.put("INVENTORY_THISTIME", row.get("started_at")); + item.put("INVENTORY_TIME", row.get("planned_at")); + item.put("DATA_VERSION", 0L); + item.put("INVENTORY_THISENDTIME", row.get("completed_at")); + item.put("CHECK_EMP", string(row.get("audit_user_id"))); + item.put("CHECK_TIME", row.get("audit_time")); + item.put("INVENTORY_DOC_TYPE", "1"); + item.put("REMARK", string(row.get("remark"))); + item.put("INVENTORY_USER_NAME", string(row.get("inventory_user_name"))); + return item; + } + + private Map toLegacyDetail(Map row, String inventoryNo, String dataAuth) { + Map item = new LinkedHashMap<>(); + item.put("ID", string(row.get("id"))); + item.put("DEPT_ID", null); + item.put("CREATE_USER", null); + item.put("CREATE_TIME", row.get("create_time")); + item.put("EDIT_USER", null); + item.put("EDIT_TIME", row.get("update_time")); + item.put("DATA_AUTH", dataAuth); + item.put("DEVICE_NAME", string(row.get("target_name"))); + item.put("DEVICE_MODEL", string(row.get("model"))); + item.put("DEVICE_TYPE", string(row.get("target_type"))); + item.put("INVENTORY_STATUS", "PENDING".equals(string(row.get("inventory_status"))) ? "2" : "1"); + item.put("INVENTORY_ID", string(row.get("inventory_id"))); + item.put("INVENTORY_USER", string(row.get("inventory_user_id"))); + item.put("INVENTORY_TIME", row.get("inventory_time")); + item.put("REMARK", string(row.get("remark"))); + item.put("USE_DEPT", firstNotBlank(string(row.get("actual_department")), string(row.get("book_department")))); + item.put("USE_PLACE", firstNotBlank(string(row.get("actual_location")), string(row.get("book_location")))); + item.put("DEVICE_ID", string(row.get("target_id"))); + item.put("DEVICE_SN", string(row.get("target_code"))); + item.put("QUANTITY", row.get("book_quantity")); + item.put("DATA_VERSION", 0L); + item.put("USE_IMAGE", string(row.get("image_group_id"))); + item.put("SETUP_LOCATION", firstNotBlank(string(row.get("setup_location")), string(row.get("book_location")))); + item.put("DEVICE_STATUS_NAME", deviceStatusName(string(row.get("device_status")))); + item.put("INVENTORY_USER_NAME", string(row.get("operator_name"))); + item.put("INVENTORY_DOC", inventoryNo); + return item; + } + + private Map requireInventory(String inventoryNo) { + if (blank(inventoryNo)) throw new LegacyInventoryBusinessException("INVENTORY_DOC不能为空"); + List> rows = jdbcTemplate.queryForList( + "SELECT * FROM tbl_asset_inventory WHERE inventory_no=? " + + "AND IFNULL(delete_flag,'0')!='1' LIMIT 1", inventoryNo); + if (rows.isEmpty()) throw new LegacyInventoryBusinessException("盘点单不存在"); + long userId = legacyInventoryAuthService.requireCurrentUserId(); + requireUser(userId); + Object inventoryUserId = rows.get(0).get("inventory_user_id"); + if (inventoryUserId == null || longValue(inventoryUserId, "盘点人ID") != userId) { + throw new LegacyInventoryBusinessException("无权操作他人的盘点单"); + } + return rows.get(0); + } + + private Map requireUser(long userId) { + if (userId != legacyInventoryAuthService.requireCurrentUserId()) { + throw new LegacyInventoryBusinessException("USER_ID与登录身份不一致"); + } + List> rows = jdbcTemplate.queryForList( + "SELECT id,username,login_name,department,isystem FROM tbl_user WHERE id=? " + + "AND IFNULL(delete_flag,'0')!='1' AND IFNULL(status,0)=0 LIMIT 1", userId); + if (rows.isEmpty()) throw new LegacyInventoryBusinessException("用户不存在"); + return rows.get(0); + } + + private void insertOperation(long inventoryId, String operateType, long userId, + Date operateTime, String remark) { + jdbcTemplate.update("INSERT INTO tbl_asset_inventory_operation " + + "(inventory_id,operate_type,operator_user_id,operate_time,remark) VALUES (?,?,?,?,?)", + inventoryId, operateType, userId, new Timestamp(operateTime.getTime()), remark); + } + + private String required(JSONObject input, String key) { + String value = input == null ? null : input.getString(key); + if (blank(value)) throw new LegacyInventoryBusinessException(key + "不能为空"); + return value.trim(); + } + + private String optional(JSONObject input, String key) { + if (input == null || input.get(key) == null) return ""; + return input.getString(key); + } + + private long longValue(Object value, String fieldName) { + try { + return Long.parseLong(string(value)); + } catch (Exception e) { + throw new LegacyInventoryBusinessException(fieldName + "格式错误"); + } + } + + private int number(Object value) { + if (value == null) return 0; + if (value instanceof Number) return ((Number) value).intValue(); + return new BigDecimal(value.toString()).intValue(); + } + + private String string(Object value) { + return value == null ? null : String.valueOf(value); + } + + private boolean blank(String value) { + return value == null || value.trim().isEmpty(); + } + + private String firstNotBlank(String first, String second) { + return blank(first) ? second : first; + } + + private String legacyInventoryStatus(String status) { + if (STATUS_DRAFT.equals(status)) return "1"; + if (STATUS_ACCEPTED.equals(status)) return "2"; + if (STATUS_IN_PROGRESS.equals(status)) return "3"; + if (STATUS_PENDING_AUDIT.equals(status)) return "4"; + if (STATUS_COMPLETED.equals(status)) return "5"; + if (STATUS_CLOSED.equals(status)) return "6"; + return status; + } + + private String legacyDeviceStatus(String status) { + if ("IDLE".equals(status)) return "0"; + if ("IN_USE".equals(status)) return "1"; + if ("REPAIR".equals(status) || "STOPPED".equals(status)) return "2"; + if ("SCRAPPED".equals(status)) return "3"; + return status; + } + + private String deviceStatusName(String status) { + if ("IDLE".equals(status)) return "闲置"; + if ("IN_USE".equals(status)) return "在用"; + if ("REPAIR".equals(status)) return "维修中"; + if ("STOPPED".equals(status)) return "停用"; + if ("SCRAPPED".equals(status)) return "已报废"; + return blank(status) ? " " : status; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/service/LogService.java b/smtERP-boot/src/main/java/com/reallin/smt/service/LogService.java new file mode 100644 index 0000000..4fa857b --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/service/LogService.java @@ -0,0 +1,184 @@ +package com.reallin.smt.service; + +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.constants.BusinessConstants; +import com.reallin.smt.datasource.entities.Log; +import com.reallin.smt.datasource.entities.LogExample; +import com.reallin.smt.datasource.mappers.LogMapper; +import com.reallin.smt.datasource.mappers.LogMapperEx; +import com.reallin.smt.datasource.vo.LogVo4List; +import com.reallin.smt.exception.JshException; +import com.reallin.smt.utils.PageUtils; +import com.reallin.smt.utils.StringUtil; +import com.reallin.smt.utils.Tools; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.Date; +import java.util.List; + +import static com.reallin.smt.utils.Tools.getLocalIp; + +@Service +public class LogService { + private Logger logger = LoggerFactory.getLogger(LogService.class); + @Resource + private LogMapper logMapper; + + @Resource + private LogMapperEx logMapperEx; + + @Resource + private UserService userService; + + @Resource + private RedisService redisService; + + public Log getLog(long id)throws Exception { + Log result=null; + try{ + result=logMapper.selectByPrimaryKey(id); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return result; + } + + public List getLog()throws Exception { + LogExample example = new LogExample(); + List list=null; + try{ + list=logMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public List select(String operation, String userInfo, String clientIp, String tenantLoginName, String tenantType, + String beginTime, String endTime, String content)throws Exception { + List list=null; + try{ + beginTime = Tools.parseDayToTime(beginTime,BusinessConstants.DAY_FIRST_TIME); + endTime = Tools.parseDayToTime(endTime,BusinessConstants.DAY_LAST_TIME); + PageUtils.startPage(); + list=logMapperEx.selectByConditionLog(operation, userInfo, clientIp, tenantLoginName, tenantType, beginTime, endTime, + content); + if (null != list) { + for (LogVo4List log : list) { + log.setCreateTimeStr(Tools.getCenternTime(log.getCreateTime())); + } + } + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int insertLog(JSONObject obj, HttpServletRequest request) throws Exception{ + Log log = JSONObject.parseObject(obj.toJSONString(), Log.class); + int result=0; + try{ + result=logMapper.insertSelective(log); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int updateLog(JSONObject obj, HttpServletRequest request)throws Exception { + Log log = JSONObject.parseObject(obj.toJSONString(), Log.class); + int result=0; + try{ + result=logMapper.updateByPrimaryKeySelective(log); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int deleteLog(Long id, HttpServletRequest request)throws Exception { + int result=0; + try{ + result=logMapper.deleteByPrimaryKey(id); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteLog(String ids, HttpServletRequest request)throws Exception { + List idList = StringUtil.strToLongList(ids); + LogExample example = new LogExample(); + example.createCriteria().andIdIn(idList); + int result=0; + try{ + result=logMapper.deleteByExample(example); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + public void insertLog(String moduleName, String content, HttpServletRequest request)throws Exception{ + try{ + Long userId = userService.getUserId(request); + if(userId!=null) { + String clientIp = getLocalIp(request); + String createTime = Tools.getNow3(); + Long count = logMapperEx.getCountByIpAndDate(userId, moduleName, clientIp, createTime); + if(count > 0) { + //如果某个用户某个IP在同1秒内连续操作两遍,此时需要删除该redis记录,使其退出,防止恶意攻击 + redisService.deleteObjectByUserAndIp(userId, clientIp); + } else { + Log log = new Log(); + log.setUserId(userId); + log.setOperation(moduleName); + log.setClientIp(getLocalIp(request)); + log.setCreateTime(new Date()); + Byte status = 0; + log.setStatus(status); + log.setContent(content); + logMapper.insertSelective(log); + } + } + }catch(Exception e){ + JshException.writeFail(logger, e); + } + } + + /** 保存接口切面采集的请求日志,日志写入失败不得影响业务请求。 */ + public void insertApiLog(Log log) { + try { + logMapper.insertSelective(log); + } catch (Exception e) { + logger.warn("保存接口请求日志失败: {}", log.getRequestUrl(), e); + } + } + + public void insertLogWithUserId(Long userId, Long tenantId, String moduleName, String content, HttpServletRequest request)throws Exception{ + try{ + if(userId!=null) { + Log log = new Log(); + log.setUserId(userId); + log.setOperation(moduleName); + log.setClientIp(getLocalIp(request)); + log.setCreateTime(new Date()); + Byte status = 0; + log.setStatus(status); + log.setContent(content); + logMapperEx.insertLogWithUserId(log); + } + }catch(Exception e){ + JshException.writeFail(logger, e); + } + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/service/LoginAttemptService.java b/smtERP-boot/src/main/java/com/reallin/smt/service/LoginAttemptService.java new file mode 100644 index 0000000..0a5d93e --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/service/LoginAttemptService.java @@ -0,0 +1,106 @@ +package com.reallin.smt.service; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.nio.charset.StandardCharsets; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.util.Locale; +import java.util.concurrent.TimeUnit; + +/** + * 按登录账号记录连续密码错误,并执行递增等待。 + */ +@Service +public class LoginAttemptService { + + private static final String FAILURE_KEY_PREFIX = "login:failure:"; + private static final String LOCK_KEY_PREFIX = "login:lock:"; + + @Resource + private RedisService redisService; + + @Value("${login.security.failure-window-seconds:600}") + private long failureWindowSeconds; + + @Value("${login.security.max-failures-before-delay:3}") + private long maxFailuresBeforeDelay; + + @Value("${login.security.base-delay-seconds:30}") + private long baseDelaySeconds; + + @Value("${login.security.max-delay-seconds:1800}") + private long maxDelaySeconds; + + /** + * 返回账号当前还需等待的秒数;未锁定时返回 0。 + */ + public long getRemainingDelaySeconds(String loginName) { + Long seconds = redisService.getExpire(lockKey(loginName), TimeUnit.SECONDS); + return seconds == null || seconds < 0 ? 0 : seconds; + } + + /** + * 记录一次密码错误,达到阈值后返回本次等待秒数。 + */ + public long recordPasswordFailure(String loginName) { + Long failures = redisService.incrementCacheObject( + failureKey(loginName), failureWindowSeconds, TimeUnit.SECONDS); + long failureCount = failures == null ? 1 : failures; + long delaySeconds = calculateDelaySeconds(failureCount); + if (delaySeconds > 0) { + redisService.storageKeyWithTime(lockKey(loginName), "1", delaySeconds); + // 等待结束后仍保留一个失败统计窗口,使再次输错可以继续增加等待时间。 + redisService.expire(failureKey(loginName), delaySeconds + failureWindowSeconds, TimeUnit.SECONDS); + } + return delaySeconds; + } + + /** + * 登录成功后清除该账号的错误记录和等待状态。 + */ + public void clear(String loginName) { + redisService.deleteObject(failureKey(loginName)); + redisService.deleteObject(lockKey(loginName)); + } + + long calculateDelaySeconds(long failureCount) { + long threshold = Math.max(1, maxFailuresBeforeDelay); + long baseDelay = Math.max(1, baseDelaySeconds); + long maximumDelay = Math.max(baseDelay, maxDelaySeconds); + if (failureCount < threshold) { + return 0; + } + long exponent = Math.min(failureCount - threshold, 30); + long multiplier = 1L << exponent; + if (baseDelay > maximumDelay / multiplier) { + return maximumDelay; + } + return Math.min(baseDelay * multiplier, maximumDelay); + } + + private String failureKey(String loginName) { + return FAILURE_KEY_PREFIX + accountKey(loginName); + } + + private String lockKey(String loginName) { + return LOCK_KEY_PREFIX + accountKey(loginName); + } + + private String accountKey(String loginName) { + String normalized = loginName == null ? "" : loginName.trim().toLowerCase(Locale.ROOT); + try { + MessageDigest digest = MessageDigest.getInstance("SHA-256"); + byte[] bytes = digest.digest(normalized.getBytes(StandardCharsets.UTF_8)); + StringBuilder result = new StringBuilder(bytes.length * 2); + for (byte value : bytes) { + result.append(String.format("%02x", value & 0xff)); + } + return result.toString(); + } catch (NoSuchAlgorithmException e) { + throw new IllegalStateException("SHA-256 algorithm is unavailable", e); + } + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/service/MaterialAttributeService.java b/smtERP-boot/src/main/java/com/reallin/smt/service/MaterialAttributeService.java new file mode 100644 index 0000000..b41f6f5 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/service/MaterialAttributeService.java @@ -0,0 +1,164 @@ +package com.reallin.smt.service; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.constants.BusinessConstants; +import com.reallin.smt.datasource.entities.MaterialAttribute; +import com.reallin.smt.datasource.entities.MaterialAttributeExample; +import com.reallin.smt.datasource.mappers.MaterialAttributeMapper; +import com.reallin.smt.datasource.mappers.MaterialAttributeMapperEx; +import com.reallin.smt.exception.BusinessRunTimeException; +import com.reallin.smt.exception.JshException; +import com.reallin.smt.utils.PageUtils; +import com.reallin.smt.utils.StringUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.List; + +@Service +public class MaterialAttributeService { + private Logger logger = LoggerFactory.getLogger(MaterialAttributeService.class); + + @Resource + private LogService logService; + + @Resource + private MaterialAttributeMapper materialAttributeMapper; + + @Resource + private MaterialAttributeMapperEx materialAttributeMapperEx; + + public MaterialAttribute getMaterialAttribute(long id)throws Exception { + MaterialAttribute result=null; + try{ + result=materialAttributeMapper.selectByPrimaryKey(id); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return result; + } + + public List getMaterialAttribute() throws Exception{ + MaterialAttributeExample example = new MaterialAttributeExample(); + example.createCriteria().andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + example.setOrderByClause("id desc"); + List list=null; + try{ + list=materialAttributeMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public List select(String attributeName, String attributeValue) throws Exception{ + List list = new ArrayList<>(); + try{ + PageUtils.startPage(); + list = materialAttributeMapperEx.selectByConditionMaterialAttribute(attributeName, attributeValue); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int insertMaterialAttribute(JSONObject obj, HttpServletRequest request)throws Exception { + MaterialAttribute m = JSONObject.parseObject(obj.toJSONString(), MaterialAttribute.class); + try{ + materialAttributeMapper.insertSelective(m); + logService.insertLog("商品属性", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_ADD).append(m.getAttributeName()).toString(), request); + return 1; + } + catch (BusinessRunTimeException ex) { + throw new BusinessRunTimeException(ex.getCode(), ex.getMessage()); + } + catch(Exception e){ + JshException.writeFail(logger, e); + return 0; + } + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int updateMaterialAttribute(JSONObject obj, HttpServletRequest request) throws Exception{ + MaterialAttribute materialAttribute = JSONObject.parseObject(obj.toJSONString(), MaterialAttribute.class); + try{ + materialAttributeMapper.updateByPrimaryKeySelective(materialAttribute); + logService.insertLog("商品属性", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_EDIT).append(materialAttribute.getAttributeName()).toString(), request); + return 1; + }catch(Exception e){ + JshException.writeFail(logger, e); + return 0; + } + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int deleteMaterialAttribute(Long id, HttpServletRequest request)throws Exception { + return batchDeleteMaterialAttributeByIds(id.toString()); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteMaterialAttribute(String ids, HttpServletRequest request)throws Exception { + return batchDeleteMaterialAttributeByIds(ids); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteMaterialAttributeByIds(String ids) throws Exception{ + String [] idArray=ids.split(","); + try{ + return materialAttributeMapperEx.batchDeleteMaterialAttributeByIds(idArray); + }catch(Exception e){ + JshException.writeFail(logger, e); + return 0; + } + } + + public int checkIsNameExist(Long id, String name)throws Exception { + MaterialAttributeExample example = new MaterialAttributeExample(); + example.createCriteria().andIdNotEqualTo(id).andAttributeNameEqualTo(name).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list =null; + try{ + list = materialAttributeMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list==null?0:list.size(); + } + + public JSONArray getValueArrById(Long id) { + JSONArray valueArr = new JSONArray(); + MaterialAttribute ma = getInfoById(id); + if(ma!=null) { + String value = ma.getAttributeValue(); + if(StringUtil.isNotEmpty(value)){ + String[] arr = value.split("\\|"); + for(String v: arr) { + JSONObject item = new JSONObject(); + item.put("value",v); + item.put("name",v); + valueArr.add(item); + } + } + } + return valueArr; + } + + public MaterialAttribute getInfoById(Long id) { + MaterialAttributeExample example = new MaterialAttributeExample(); + example.createCriteria().andIdEqualTo(id).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list = materialAttributeMapper.selectByExample(example); + if(list!=null && list.size()>0) { + return list.get(0); + } else { + return null; + } + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/service/MaterialCategoryService.java b/smtERP-boot/src/main/java/com/reallin/smt/service/MaterialCategoryService.java new file mode 100644 index 0000000..276f4b7 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/service/MaterialCategoryService.java @@ -0,0 +1,304 @@ +package com.reallin.smt.service; + +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.constants.BusinessConstants; +import com.reallin.smt.constants.ExceptionConstants; +import com.reallin.smt.datasource.entities.Material; +import com.reallin.smt.datasource.entities.MaterialCategory; +import com.reallin.smt.datasource.entities.MaterialCategoryExample; +import com.reallin.smt.datasource.entities.User; +import com.reallin.smt.datasource.mappers.MaterialCategoryMapper; +import com.reallin.smt.datasource.mappers.MaterialCategoryMapperEx; +import com.reallin.smt.datasource.mappers.MaterialMapperEx; +import com.reallin.smt.datasource.vo.TreeNode; +import com.reallin.smt.exception.BusinessRunTimeException; +import com.reallin.smt.exception.JshException; +import com.reallin.smt.utils.PageUtils; +import com.reallin.smt.utils.StringUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +@Service +public class MaterialCategoryService { + private Logger logger = LoggerFactory.getLogger(MaterialCategoryService.class); + + @Resource + private MaterialCategoryMapper materialCategoryMapper; + @Resource + private MaterialCategoryMapperEx materialCategoryMapperEx; + @Resource + private UserService userService; + @Resource + private LogService logService; + @Resource + private MaterialMapperEx materialMapperEx; + + public MaterialCategory getMaterialCategory(long id)throws Exception { + MaterialCategory result=null; + try{ + result=materialCategoryMapper.selectByPrimaryKey(id); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return result; + } + + public List getMaterialCategoryListByIds(String ids)throws Exception { + List idList = StringUtil.strToLongList(ids); + List list = new ArrayList<>(); + try{ + MaterialCategoryExample example = new MaterialCategoryExample(); + example.createCriteria().andIdIn(idList); + list = materialCategoryMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public List getMaterialCategory()throws Exception { + MaterialCategoryExample example = new MaterialCategoryExample(); + List list=null; + try{ + list=materialCategoryMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public List getAllList(Long parentId)throws Exception { + List list=null; + try{ + list = getMCList(parentId); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public List getMCList(Long parentId)throws Exception { + List res= new ArrayList(); + List list=null; + MaterialCategoryExample example = new MaterialCategoryExample(); + example.createCriteria().andParentIdEqualTo(parentId).andIdNotEqualTo(1L); + example.setOrderByClause("id"); + list=materialCategoryMapper.selectByExample(example); + if(list!=null && list.size()>0) { + res.addAll(list); + for(MaterialCategory mc : list) { + List mcList = getMCList(mc.getId()); + if(mcList!=null && mcList.size()>0) { + res.addAll(mcList); + } + } + } + return res; + } + + public List select(String name, Integer parentId) throws Exception{ + List list=null; + try{ + PageUtils.startPage(); + list=materialCategoryMapperEx.selectByConditionMaterialCategory(name, parentId); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int insertMaterialCategory(JSONObject obj, HttpServletRequest request)throws Exception { + MaterialCategory materialCategory = JSONObject.parseObject(obj.toJSONString(), MaterialCategory.class); + materialCategory.setCreateTime(new Date()); + materialCategory.setUpdateTime(new Date()); + int result=0; + try{ + result=materialCategoryMapper.insertSelective(materialCategory); + logService.insertLog("商品类型", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_ADD).append(materialCategory.getName()).toString(), request); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int updateMaterialCategory(JSONObject obj, HttpServletRequest request) throws Exception{ + MaterialCategory materialCategory = JSONObject.parseObject(obj.toJSONString(), MaterialCategory.class); + materialCategory.setUpdateTime(new Date()); + int result=0; + try{ + result=materialCategoryMapperEx.editMaterialCategory(materialCategory); + logService.insertLog("商品类型", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_EDIT).append(materialCategory.getName()).toString(), request); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int deleteMaterialCategory(Long id, HttpServletRequest request)throws Exception { + return batchDeleteMaterialCategoryByIds(id.toString()); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteMaterialCategory(String ids, HttpServletRequest request)throws Exception { + return batchDeleteMaterialCategoryByIds(ids); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteMaterialCategoryByIds(String ids) throws Exception { + int result=0; + String [] idArray=ids.split(","); + //校验产品表 tbl_material + List materialList=null; + try{ + materialList= materialMapperEx.getMaterialListByCategoryIds(idArray); + }catch(Exception e){ + JshException.readFail(logger, e); + } + if(materialList!=null&&materialList.size()>0){ + logger.error("异常码[{}],异常提示[{}],参数,CategoryIds[{}]", + ExceptionConstants.DELETE_FORCE_CONFIRM_CODE,ExceptionConstants.DELETE_FORCE_CONFIRM_MSG,ids); + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, + ExceptionConstants.DELETE_FORCE_CONFIRM_MSG); + } + StringBuffer sb = new StringBuffer(); + sb.append(BusinessConstants.LOG_OPERATION_TYPE_DELETE); + List list = getMaterialCategoryListByIds(ids); + for(MaterialCategory materialCategory: list){ + sb.append("[").append(materialCategory.getName()).append("]"); + } + logService.insertLog("商品类型", sb.toString(), + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); + //更新时间 + Date updateDate =new Date(); + //更新人 + User userInfo=userService.getCurrentUser(); + Long updater=userInfo==null?null:userInfo.getId(); + String strArray[]=ids.split(","); + if(strArray.length<1){ + return 0; + } + List mcList = materialCategoryMapperEx.getMaterialCategoryListByCategoryIds(idArray); + if(mcList!=null && mcList.size()>0) { + logger.error("异常码[{}],异常提示[{}]", + ExceptionConstants.MATERIAL_CATEGORY_CHILD_NOT_SUPPORT_DELETE_CODE,ExceptionConstants.MATERIAL_CATEGORY_CHILD_NOT_SUPPORT_DELETE_MSG); + throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_CATEGORY_CHILD_NOT_SUPPORT_DELETE_CODE, + ExceptionConstants.MATERIAL_CATEGORY_CHILD_NOT_SUPPORT_DELETE_MSG); + } else { + result=materialCategoryMapperEx.batchDeleteMaterialCategoryByIds(updateDate,updater,strArray); + } + return result; + } + + public int checkIsNameExist(Long id, String name, Long parentId)throws Exception { + MaterialCategoryExample example = new MaterialCategoryExample(); + if(parentId!=null) { + example.createCriteria().andIdNotEqualTo(id).andNameEqualTo(name).andParentIdEqualTo(parentId).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + } else { + example.createCriteria().andIdNotEqualTo(id).andNameEqualTo(name).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + } + List list=null; + try{ + list= materialCategoryMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list==null?0:list.size(); + } + + public List findById(Long id)throws Exception { + List list=null; + if(id!=null) { + MaterialCategoryExample example = new MaterialCategoryExample(); + example.createCriteria().andIdEqualTo(id); + try{ + list=materialCategoryMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + } + return list; + } + /** + * description: + * 获取商品类别树数据 + */ + public List getMaterialCategoryTree(Long id) throws Exception{ + List list=null; + try{ + list=materialCategoryMapperEx.getNodeTree(id); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + /** + * 根据商品类别编号判断商品类别是否已存在 + * */ + public void checkMaterialCategorySerialNo(MaterialCategory mc)throws Exception { + if(mc==null){ + return; + } + if(StringUtil.isEmpty(mc.getSerialNo())){ + return; + } + //根据商品类别编号查询商品类别 + List mList=null; + try{ + mList= materialCategoryMapperEx.getMaterialCategoryBySerialNo(mc.getSerialNo(), mc.getId()); + }catch(Exception e){ + JshException.readFail(logger, e); + } + if(mList==null||mList.size()<1){ + //未查询到对应数据,编号可用 + return; + } + if(mList.size()>1){ + //查询到的数据条数大于1,编号已存在 + throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_CATEGORY_SERIAL_ALREADY_EXISTS_CODE, + ExceptionConstants.MATERIAL_CATEGORY_SERIAL_ALREADY_EXISTS_MSG); + } + if(mc.getId()==null){ + //新增时,编号已存在 + throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_CATEGORY_SERIAL_ALREADY_EXISTS_CODE, + ExceptionConstants.MATERIAL_CATEGORY_SERIAL_ALREADY_EXISTS_MSG); + } + /** + * 包装类型用equals来比较 + * */ + if(mc.getId().equals(mList.get(0).getId())){ + //修改时,相同编号,id不同 + throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_CATEGORY_SERIAL_ALREADY_EXISTS_CODE, + ExceptionConstants.MATERIAL_CATEGORY_SERIAL_ALREADY_EXISTS_MSG); + } + } + + /** + * 根据名称获取类型 + * @param name + */ + public Long getCategoryIdByName(String name){ + Long categoryId = null; + MaterialCategoryExample example = new MaterialCategoryExample(); + example.createCriteria().andNameEqualTo(name).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list = materialCategoryMapper.selectByExample(example); + if(list!=null && list.size()>0) { + categoryId = list.get(0).getId(); + } + return categoryId; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/service/MaterialExtendService.java b/smtERP-boot/src/main/java/com/reallin/smt/service/MaterialExtendService.java new file mode 100644 index 0000000..daf9a27 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/service/MaterialExtendService.java @@ -0,0 +1,422 @@ +package com.reallin.smt.service; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.reallin.smt.constants.BusinessConstants; +import com.reallin.smt.constants.ExceptionConstants; +import com.reallin.smt.datasource.entities.MaterialExtend; +import com.reallin.smt.datasource.entities.MaterialExtendExample; +import com.reallin.smt.datasource.entities.User; +import com.reallin.smt.datasource.mappers.MaterialExtendMapper; +import com.reallin.smt.datasource.mappers.MaterialExtendMapperEx; +import com.reallin.smt.datasource.vo.MaterialExtendVo4List; +import com.reallin.smt.exception.BusinessRunTimeException; +import com.reallin.smt.exception.JshException; +import com.reallin.smt.utils.StringUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.*; + + +@Service +public class MaterialExtendService { + private Logger logger = LoggerFactory.getLogger(MaterialExtendService.class); + + @Resource + private MaterialExtendMapper materialExtendMapper; + @Resource + private MaterialExtendMapperEx materialExtendMapperEx; + @Resource + private UserService userService; + @Resource + private RedisService redisService; + + public MaterialExtend getMaterialExtend(long id)throws Exception { + MaterialExtend result=null; + try{ + result=materialExtendMapper.selectByPrimaryKey(id); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return result; + } + public List getDetailList(Long materialId) { + List list=null; + try{ + list = materialExtendMapperEx.getDetailList(materialId); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public List getListByMIds(List idList) { + List meList = null; + try{ + Long [] idArray= StringUtil.listToLongArray(idList); + if(idArray!=null && idArray.length>0) { + meList = materialExtendMapperEx.getListByMId(idArray); + } + }catch(Exception e){ + JshException.readFail(logger, e); + } + return meList; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public String saveDetials(JSONObject obj, String sortList, Long materialId, String type) throws Exception { + HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + JSONArray meArr = obj.getJSONArray("meList"); + JSONArray insertedJson = new JSONArray(); + JSONArray updatedJson = new JSONArray(); + JSONArray deletedJson = obj.getJSONArray("meDeleteIdList"); + JSONArray sortJson = JSONArray.parseArray(sortList); + if (null != meArr) { + if("insert".equals(type)){ + for (int i = 0; i < meArr.size(); i++) { + JSONObject tempJson = meArr.getJSONObject(i); + insertedJson.add(tempJson); + } + } else if("update".equals(type)){ + for (int i = 0; i < meArr.size(); i++) { + JSONObject tempJson = meArr.getJSONObject(i); + String tempId = tempJson.getString("id"); + if(tempId.length()>19){ + insertedJson.add(tempJson); + } else { + updatedJson.add(tempJson); + } + } + //针对多属性商品要考虑到有条码被删的情况,需要和原来的条码明细进行对比 + if(StringUtil.isNotEmpty(obj.getString("manySku"))) { + //1.先查询原来的条码列表 + List meList = materialExtendMapperEx.getDetailList(materialId); + //2.构造新的条码列表map + Map barCodeMap = new HashMap<>(); + for (int i = 0; i < meArr.size(); i++) { + JSONObject tempJson = meArr.getJSONObject(i); + barCodeMap.put(tempJson.getString("barCode"),tempJson.getString("barCode")); + } + //3.如果老的条码在新的里面不存在,则丢入删除队列 + for(MaterialExtendVo4List me: meList) { + if(barCodeMap.get(me.getBarCode()) == null) { + deletedJson.add(me.getId()); + } + } + } + } + } + if (null != deletedJson) { + StringBuffer bf=new StringBuffer(); + for (int i = 0; i < deletedJson.size(); i++) { + bf.append(deletedJson.getString(i)); + if(i<(deletedJson.size()-1)){ + bf.append(","); + } + } + if(StringUtil.isNotEmpty(bf.toString())) { + this.batchDeleteMaterialExtendByIds(bf.toString(), request); + } + } + if (null != insertedJson) { + for (int i = 0; i < insertedJson.size(); i++) { + MaterialExtend materialExtend = new MaterialExtend(); + JSONObject tempInsertedJson = JSONObject.parseObject(insertedJson.getString(i)); + materialExtend.setMaterialId(materialId); + if (StringUtils.isNotEmpty(tempInsertedJson.getString("barCode"))) { + int exist = checkIsBarCodeExist(0L, tempInsertedJson.getString("barCode")); + if(exist>0) { + throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_BARCODE_EXISTS_CODE, + String.format(ExceptionConstants.MATERIAL_BARCODE_EXISTS_MSG,tempInsertedJson.getString("barCode"))); + } else { + materialExtend.setBarCode(tempInsertedJson.getString("barCode")); + } + } + if (StringUtils.isNotEmpty(tempInsertedJson.getString("commodityUnit"))) { + materialExtend.setCommodityUnit(tempInsertedJson.getString("commodityUnit")); + } + if (tempInsertedJson.get("sku")!=null) { + materialExtend.setSku(tempInsertedJson.getString("sku")); + } + if (StringUtils.isNotEmpty(tempInsertedJson.getString("purchaseDecimal"))) { + materialExtend.setPurchaseDecimal(tempInsertedJson.getBigDecimal("purchaseDecimal")); + } + if (StringUtils.isNotEmpty(tempInsertedJson.getString("commodityDecimal"))) { + materialExtend.setCommodityDecimal(tempInsertedJson.getBigDecimal("commodityDecimal")); + } + if (StringUtils.isNotEmpty(tempInsertedJson.getString("wholesaleDecimal"))) { + materialExtend.setWholesaleDecimal(tempInsertedJson.getBigDecimal("wholesaleDecimal")); + } + if (StringUtils.isNotEmpty(tempInsertedJson.getString("lowDecimal"))) { + materialExtend.setLowDecimal(tempInsertedJson.getBigDecimal("lowDecimal")); + } + this.insertMaterialExtend(materialExtend); + } + } + if (null != updatedJson) { + for (int i = 0; i < updatedJson.size(); i++) { + JSONObject tempUpdatedJson = JSONObject.parseObject(updatedJson.getString(i)); + MaterialExtend materialExtend = new MaterialExtend(); + materialExtend.setId(tempUpdatedJson.getLong("id")); + if (StringUtils.isNotEmpty(tempUpdatedJson.getString("barCode"))) { + int exist = checkIsBarCodeExist(tempUpdatedJson.getLong("id"), tempUpdatedJson.getString("barCode")); + if(exist>0) { + throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_BARCODE_EXISTS_CODE, + String.format(ExceptionConstants.MATERIAL_BARCODE_EXISTS_MSG,tempUpdatedJson.getString("barCode"))); + } else { + materialExtend.setBarCode(tempUpdatedJson.getString("barCode")); + } + } + if (StringUtils.isNotEmpty(tempUpdatedJson.getString("commodityUnit"))) { + materialExtend.setCommodityUnit(tempUpdatedJson.getString("commodityUnit")); + } + if (tempUpdatedJson.get("sku")!=null) { + materialExtend.setSku(tempUpdatedJson.getString("sku")); + } + if (StringUtils.isNotEmpty(tempUpdatedJson.getString("purchaseDecimal"))) { + materialExtend.setPurchaseDecimal(tempUpdatedJson.getBigDecimal("purchaseDecimal")); + } + if (StringUtils.isNotEmpty(tempUpdatedJson.getString("commodityDecimal"))) { + materialExtend.setCommodityDecimal(tempUpdatedJson.getBigDecimal("commodityDecimal")); + } + if (StringUtils.isNotEmpty(tempUpdatedJson.getString("wholesaleDecimal"))) { + materialExtend.setWholesaleDecimal(tempUpdatedJson.getBigDecimal("wholesaleDecimal")); + } + if (StringUtils.isNotEmpty(tempUpdatedJson.getString("lowDecimal"))) { + materialExtend.setLowDecimal(tempUpdatedJson.getBigDecimal("lowDecimal")); + } + this.updateMaterialExtend(materialExtend); + //如果金额为空,此处单独置空 + materialExtendMapperEx.specialUpdatePrice(materialExtend); + } + } + //处理条码的排序,基本单位排第一个 + if (null != sortJson && sortJson.size()>0) { + //此处为更新的逻辑 + for (int i = 0; i < sortJson.size(); i++) { + JSONObject tempSortJson = JSONObject.parseObject(sortJson.getString(i)); + MaterialExtend materialExtend = new MaterialExtend(); + if(StringUtil.isExist(tempSortJson.get("id"))) { + materialExtend.setId(tempSortJson.getLong("id")); + } + if(StringUtil.isExist(tempSortJson.get("defaultFlag"))) { + materialExtend.setDefaultFlag(tempSortJson.getString("defaultFlag")); + } + this.updateMaterialExtend(materialExtend); + } + } else { + //新增的时候将第一条记录设置为默认基本单位 + MaterialExtendExample example = new MaterialExtendExample(); + example.createCriteria().andMaterialIdEqualTo(materialId).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List meList = materialExtendMapper.selectByExample(example); + if(meList!=null) { + for(int i=0; i 0) { + criteria.andIdNotEqualTo(id).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + } else { + criteria.andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + } + List list =null; + try{ + list = materialExtendMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list==null?0:list.size(); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int deleteMaterialExtend(Long id, HttpServletRequest request)throws Exception { + int result =0; + MaterialExtend materialExtend = new MaterialExtend(); + materialExtend.setId(id); + materialExtend.setDeleteFlag(BusinessConstants.DELETE_FLAG_DELETED); + Long userId = Long.parseLong(redisService.getObjectFromSessionByKey(request,"userId").toString()); + User user = userService.getUser(userId); + materialExtend.setUpdateTime(new Date().getTime()); + materialExtend.setUpdateSerial(user.getLoginName()); + try{ + result= materialExtendMapper.updateByPrimaryKeySelective(materialExtend); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteMaterialExtendByIds(String ids, HttpServletRequest request) throws Exception{ + String [] idArray=ids.split(","); + int result = 0; + try{ + result = materialExtendMapperEx.batchDeleteMaterialExtendByIds(idArray); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + public int insertMaterialExtend(JSONObject obj, HttpServletRequest request) throws Exception{ + MaterialExtend materialExtend = JSONObject.parseObject(obj.toJSONString(), MaterialExtend.class); + int result=0; + try{ + result = materialExtendMapper.insertSelective(materialExtend); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + public int updateMaterialExtend(JSONObject obj, HttpServletRequest request)throws Exception { + MaterialExtend materialExtend = JSONObject.parseObject(obj.toJSONString(), MaterialExtend.class); + int result=0; + try{ + result = materialExtendMapper.updateByPrimaryKeySelective(materialExtend); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + public List getMaterialExtendByTenantAndTime(Long tenantId, Long lastTime, Long syncNum)throws Exception { + List list=new ArrayList(); + try{ + //先获取最大的时间戳,再查两个时间戳之间的数据,这样同步能够防止丢失数据(应为时间戳有重复) + Long maxTime = materialExtendMapperEx.getMaxTimeByTenantAndTime(tenantId, lastTime, syncNum); + if(lastTime!=null && maxTime!=null) { + MaterialExtendExample example = new MaterialExtendExample(); + example.createCriteria().andUpdateTimeGreaterThan(lastTime) + .andUpdateTimeLessThanOrEqualTo(maxTime); + list=materialExtendMapper.selectByExample(example); + } + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public Long selectIdByMaterialIdAndDefaultFlag(Long materialId, String defaultFlag) { + Long id = 0L; + MaterialExtendExample example = new MaterialExtendExample(); + example.createCriteria().andMaterialIdEqualTo(materialId).andDefaultFlagEqualTo(defaultFlag) + .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list = materialExtendMapper.selectByExample(example); + if(list!=null && list.size()>0) { + id = list.get(0).getId(); + } + return id; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public Long selectIdByMaterialIdAndBarCode(Long materialId, String barCode) { + Long id = 0L; + MaterialExtendExample example = new MaterialExtendExample(); + example.createCriteria().andMaterialIdEqualTo(materialId).andBarCodeEqualTo(barCode) + .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list = materialExtendMapper.selectByExample(example); + if(list!=null && list.size()>0) { + id = list.get(0).getId(); + } + return id; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public List getListByMaterialIdAndDefaultFlagAndBarCode(Long materialId, String defaultFlag, String barCode) { + MaterialExtendExample example = new MaterialExtendExample(); + example.createCriteria().andMaterialIdEqualTo(materialId).andDefaultFlagEqualTo(defaultFlag).andBarCodeNotEqualTo(barCode) + .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + return materialExtendMapper.selectByExample(example); + } + + public MaterialExtend getInfoByBarCode(String barCode)throws Exception { + MaterialExtendExample example = new MaterialExtendExample(); + example.createCriteria().andBarCodeEqualTo(barCode) + .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list = materialExtendMapper.selectByExample(example); + if(list!=null && list.size()>0) { + return list.get(0); + } else { + return null; + } + } + + /** + * 商品的副条码和数据库里面的商品条码存在重复(除自身商品之外) + * @param manyBarCode + * @param barCode + * @return + */ + public int getCountByManyBarCodeWithoutUs(String manyBarCode, String barCode) { + MaterialExtendExample example = new MaterialExtendExample(); + example.createCriteria().andBarCodeEqualTo(manyBarCode).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list = materialExtendMapper.selectByExample(example); + if(list!=null && list.size()>0) { + for(MaterialExtend me: list) { + List basicMeList = materialExtendMapperEx.getBasicInfoByMid(me.getMaterialId()); + for(MaterialExtend basicMe: basicMeList) { + if(basicMe!=null && !barCode.equals(basicMe.getBarCode())) { + return 1; + } + } + } + } + return 0; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/service/MaterialPropertyService.java b/smtERP-boot/src/main/java/com/reallin/smt/service/MaterialPropertyService.java new file mode 100644 index 0000000..a6a07ef --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/service/MaterialPropertyService.java @@ -0,0 +1,177 @@ +package com.reallin.smt.service; + +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.constants.BusinessConstants; +import com.reallin.smt.datasource.entities.MaterialProperty; +import com.reallin.smt.datasource.entities.MaterialPropertyExample; +import com.reallin.smt.datasource.entities.User; +import com.reallin.smt.datasource.mappers.MaterialPropertyMapper; +import com.reallin.smt.datasource.mappers.MaterialPropertyMapperEx; +import com.reallin.smt.exception.JshException; +import com.reallin.smt.utils.PageUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.*; + +@Service +public class MaterialPropertyService { + private Logger logger = LoggerFactory.getLogger(MaterialPropertyService.class); + + @Resource + private MaterialPropertyMapper materialPropertyMapper; + + @Resource + private MaterialPropertyMapperEx materialPropertyMapperEx; + @Resource + private UserService userService; + @Resource + private LogService logService; + + public MaterialProperty getMaterialProperty(long id)throws Exception { + MaterialProperty result=null; + try{ + result=materialPropertyMapper.selectByPrimaryKey(id); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return result; + } + + public List getMaterialProperty()throws Exception { + MaterialPropertyExample example = new MaterialPropertyExample(); + example.createCriteria().andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list = new ArrayList<>(); + try{ + buildMaterialProperty(list); + List mpList = materialPropertyMapper.selectByExample(example); + Map mpMap = new HashMap<>(); + for(MaterialProperty mp: mpList) { + mpMap.put(mp.getNativeName(), mp.getAnotherName()); + } + //给list里面的别名和排序做更新 + for(MaterialProperty item: list) { + if(mpMap.get(item.getNativeName())!=null) { + item.setAnotherName(mpMap.get(item.getNativeName())); + } + } + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public List select(String name)throws Exception { + List list = new ArrayList<>(); + try{ + buildMaterialProperty(list); + PageUtils.startPage(); + List mpList = materialPropertyMapperEx.selectByConditionMaterialProperty(name); + Map mpMap = new HashMap<>(); + for(MaterialProperty mp: mpList) { + mpMap.put(mp.getNativeName(), mp.getAnotherName()); + } + //给list里面的别名和排序做更新 + for(MaterialProperty item: list) { + if(mpMap.get(item.getNativeName())!=null) { + item.setAnotherName(mpMap.get(item.getNativeName())); + } + } + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + private void buildMaterialProperty(List list) { + MaterialProperty mp1 = new MaterialProperty(); + MaterialProperty mp2 = new MaterialProperty(); + MaterialProperty mp3 = new MaterialProperty(); + mp1.setId(1L); + mp1.setNativeName("扩展1"); + mp1.setAnotherName("扩展1"); + list.add(mp1); + mp2.setId(2L); + mp2.setNativeName("扩展2"); + mp2.setAnotherName("扩展2"); + list.add(mp2); + mp3.setId(3L); + mp3.setNativeName("扩展3"); + mp3.setAnotherName("扩展3"); + list.add(mp3); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int insertMaterialProperty(JSONObject obj, HttpServletRequest request)throws Exception { + MaterialProperty materialProperty = JSONObject.parseObject(obj.toJSONString(), MaterialProperty.class); + int result=0; + try{ + result = materialPropertyMapper.insertSelective(materialProperty); + logService.insertLog("商品属性", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_ADD).append(materialProperty.getNativeName()).toString(), request); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int updateMaterialProperty(JSONObject obj, HttpServletRequest request)throws Exception { + MaterialProperty materialProperty = JSONObject.parseObject(obj.toJSONString(), MaterialProperty.class); + int result=0; + try{ + result = materialPropertyMapper.updateByPrimaryKeySelective(materialProperty); + logService.insertLog("商品属性", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_EDIT).append(materialProperty.getNativeName()).toString(), request); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int deleteMaterialProperty(Long id, HttpServletRequest request)throws Exception { + return batchDeleteMaterialPropertyByIds(id.toString()); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteMaterialProperty(String ids, HttpServletRequest request)throws Exception { + return batchDeleteMaterialPropertyByIds(ids); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteMaterialPropertyByIds(String ids) throws Exception{ + User userInfo=userService.getCurrentUser(); + String [] idArray=ids.split(","); + int result=0; + try{ + result = materialPropertyMapperEx.batchDeleteMaterialPropertyByIds(new Date(), userInfo == null ? null : userInfo.getId(), idArray); + logService.insertLog("商品属性", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_DELETE).append(ids).toString(), + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + public int checkIsNameExist(Long id, String name)throws Exception { + return 0; + } + + public boolean checkIsNativeNameExist(String nativeName) { + int count = materialPropertyMapperEx.getCountByNativeName(nativeName); + return count>0; + } + + public int updateMaterialPropertyByNativeName(String nativeName, String anotherName) { + materialPropertyMapperEx.updateMaterialPropertyByNativeName(nativeName, anotherName); + return 1; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/service/MaterialService.java b/smtERP-boot/src/main/java/com/reallin/smt/service/MaterialService.java new file mode 100644 index 0000000..42ee0f9 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/service/MaterialService.java @@ -0,0 +1,1539 @@ +package com.reallin.smt.service; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.constants.BusinessConstants; +import com.reallin.smt.constants.ExceptionConstants; +import com.reallin.smt.datasource.entities.*; +import com.reallin.smt.datasource.mappers.*; +import com.reallin.smt.datasource.vo.MaterialDepotStock; +import com.reallin.smt.datasource.vo.MaterialVoSearch; +import com.reallin.smt.exception.BusinessRunTimeException; +import com.reallin.smt.exception.JshException; +import com.reallin.smt.utils.*; +import jxl.Sheet; +import jxl.Workbook; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.math.BigDecimal; +import java.math.BigInteger; +import java.util.*; + +@Service +public class MaterialService { + private Logger logger = LoggerFactory.getLogger(MaterialService.class); + + @Resource + private MaterialMapper materialMapper; + @Resource + private MaterialExtendMapper materialExtendMapper; + @Resource + private MaterialMapperEx materialMapperEx; + @Resource + private MaterialCategoryMapperEx materialCategoryMapperEx; + @Resource + private MaterialExtendMapperEx materialExtendMapperEx; + @Resource + private LogService logService; + @Resource + private UserService userService; + @Resource + private DepotItemMapperEx depotItemMapperEx; + @Resource + private DepotItemService depotItemService; + @Resource + private MaterialCategoryService materialCategoryService; + @Resource + private UnitService unitService; + @Resource + private MaterialInitialStockMapper materialInitialStockMapper; + @Resource + private MaterialInitialStockMapperEx materialInitialStockMapperEx; + @Resource + private MaterialCurrentStockMapper materialCurrentStockMapper; + @Resource + private MaterialCurrentStockMapperEx materialCurrentStockMapperEx; + @Resource + private DepotService depotService; + @Resource + private MaterialExtendService materialExtendService; + @Resource + private SystemConfigService systemConfigService; + @Resource + private RoleService roleService; + + @Value(value="${file.uploadType}") + private Long fileUploadType; + + @Value(value="${file.exportTmp}") + private String fileExportTmp; + + private static final Integer EXPORT_LIMIT = 10000; + + public Material getMaterial(long id)throws Exception { + Material result=null; + try{ + result=materialMapper.selectByPrimaryKey(id); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return result; + } + + public List getMaterialListByIds(String ids)throws Exception { + List idList = StringUtil.strToLongList(ids); + List list = new ArrayList<>(); + try{ + MaterialExample example = new MaterialExample(); + example.createCriteria().andIdIn(idList); + list = materialMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public List getMaterial() throws Exception{ + MaterialExample example = new MaterialExample(); + example.createCriteria().andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list=null; + try{ + list=materialMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public List select(String materialParam, String standard, String model, String color, String brand, String mfrs, + String otherField1, String otherField2, String otherField3, String weight, String expiryNum, String enableSerialNumber, + String enableBatchNumber, String position, String enabled, String remark, String categoryId, + String mpList) + throws Exception{ + String[] mpArr = new String[]{}; + if(StringUtil.isNotEmpty(mpList)){ + mpArr= mpList.split(","); + } + List list = new ArrayList<>(); + try{ + List idList = new ArrayList<>(); + if(StringUtil.isNotEmpty(categoryId)){ + idList = getListByParentId(Long.parseLong(categoryId)); + } + PageUtils.startPage(); + list= materialMapperEx.selectByConditionMaterial(materialParam, standard, model, color, brand, mfrs, + otherField1, otherField2, otherField3, weight, expiryNum, + enableSerialNumber, enableBatchNumber, position, enabled, remark, idList, mpList); + if (null != list && list.size()>0) { + Map initialStockMap = getInitialStockMapByMaterialList(list); + Map currentStockMap = getCurrentStockMapByMaterialList(list); + for (MaterialVo4Unit m : list) { + if(fileUploadType == 2) { + m.setImgSmall("small"); + m.setImgLarge("large"); + } + m.setMaterialOther(getMaterialOtherByParam(mpArr, m)); + m.setInitialStock(initialStockMap.get(m.getId())!=null? initialStockMap.get(m.getId()): BigDecimal.ZERO); + m.setBigUnitInitialStock(getBigUnitStock(m.getInitialStock(), m.getUnitId())); + m.setStock(currentStockMap.get(m.getId())!=null? currentStockMap.get(m.getId()): BigDecimal.ZERO); + m.setBigUnitStock(getBigUnitStock(m.getStock(), m.getUnitId())); + } + } + } catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int insertMaterial(JSONObject obj, HttpServletRequest request)throws Exception { + Material m = JSONObject.parseObject(obj.toJSONString(), Material.class); + m.setEnabled(true); + //构造多属性数组字符串 + m.setAttribute(parseAttributeBySku(obj)); + try{ + materialMapperEx.insertSelectiveEx(m); + Long mId = m.getId(); + materialExtendService.saveDetials(obj, obj.getString("sortList"), mId, "insert"); + if(obj.get("stock")!=null) { + JSONArray stockArr = obj.getJSONArray("stock"); + for (int i = 0; i < stockArr.size(); i++) { + JSONObject jsonObj = stockArr.getJSONObject(i); + if(jsonObj.get("id")!=null && jsonObj.get("initStock")!=null) { + String number = jsonObj.getString("initStock"); + BigDecimal lowSafeStock = null; + BigDecimal highSafeStock = null; + if(jsonObj.get("lowSafeStock")!=null) { + lowSafeStock = jsonObj.getBigDecimal("lowSafeStock"); + } + if(jsonObj.get("highSafeStock")!=null) { + highSafeStock = jsonObj.getBigDecimal("highSafeStock"); + } + Long depotId = jsonObj.getLong("id"); + if(StringUtil.isNotEmpty(number) && Double.parseDouble(number)>0 || lowSafeStock!=null || highSafeStock!=null) { + insertInitialStockByMaterialAndDepot(depotId, mId, parseBigDecimalEx(number), lowSafeStock, highSafeStock); + insertCurrentStockByMaterialAndDepot(depotId, mId, parseBigDecimalEx(number)); + } + } + } + } + logService.insertLog("商品", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_ADD).append(m.getName()).toString(), request); + return 1; + } + catch (BusinessRunTimeException ex) { + throw new BusinessRunTimeException(ex.getCode(), ex.getMessage()); + } + catch(Exception e){ + JshException.writeFail(logger, e); + return 0; + } + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int updateMaterial(JSONObject obj, HttpServletRequest request) throws Exception{ + Material material = JSONObject.parseObject(obj.toJSONString(), Material.class); + //构造多属性数组字符串 + material.setAttribute(parseAttributeBySku(obj)); + try{ + materialMapper.updateByPrimaryKeySelective(material); + if(material.getUnitId() == null) { + materialMapperEx.setUnitIdToNull(material.getId()); + } + if(material.getExpiryNum() == null) { + materialMapperEx.setExpiryNumToNull(material.getId()); + } + materialExtendService.saveDetials(obj, obj.getString("sortList"),material.getId(), "update"); + BigDecimal currentUnitPrice = materialCurrentStockMapperEx.getCurrentUnitPriceByMId(material.getId()); + if(obj.get("stock")!=null) { + JSONArray stockArr = obj.getJSONArray("stock"); + for (int i = 0; i < stockArr.size(); i++) { + JSONObject jsonObj = stockArr.getJSONObject(i); + if (jsonObj.get("id") != null && jsonObj.get("initStock") != null) { + String number = jsonObj.getString("initStock"); + BigDecimal lowSafeStock = null; + BigDecimal highSafeStock = null; + if(jsonObj.get("lowSafeStock")!=null) { + lowSafeStock = jsonObj.getBigDecimal("lowSafeStock"); + } + if(jsonObj.get("highSafeStock")!=null) { + highSafeStock = jsonObj.getBigDecimal("highSafeStock"); + } + Long depotId = jsonObj.getLong("id"); + //初始库存-先清除再插入 + MaterialInitialStockExample example = new MaterialInitialStockExample(); + example.createCriteria().andMaterialIdEqualTo(material.getId()).andDepotIdEqualTo(depotId); + materialInitialStockMapper.deleteByExample(example); + if (StringUtil.isNotEmpty(number) || lowSafeStock!=null || highSafeStock!=null) { + insertInitialStockByMaterialAndDepot(depotId, material.getId(), parseBigDecimalEx(number), lowSafeStock, highSafeStock); + } + //更新当前库存 + depotItemService.updateCurrentStockFun(material.getId(), depotId, currentUnitPrice); + } + } + } + logService.insertLog("商品", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_EDIT).append(material.getName()).toString(), request); + return 1; + }catch(Exception e){ + JshException.writeFail(logger, e); + return 0; + } + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int deleteMaterial(Long id, HttpServletRequest request)throws Exception { + return batchDeleteMaterialByIds(id.toString()); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteMaterial(String ids, HttpServletRequest request)throws Exception { + return batchDeleteMaterialByIds(ids); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteMaterialByIds(String ids) throws Exception{ + String [] idArray=ids.split(","); + //校验单据子表 tbl_depot_item + List depotItemList =null; + try{ + depotItemList= depotItemMapperEx.getDepotItemListListByMaterialIds(idArray); + }catch(Exception e){ + JshException.readFail(logger, e); + } + if(depotItemList!=null&&depotItemList.size()>0){ + logger.error("异常码[{}],异常提示[{}],参数,MaterialIds[{}]", + ExceptionConstants.DELETE_FORCE_CONFIRM_CODE,ExceptionConstants.DELETE_FORCE_CONFIRM_MSG,ids); + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, + ExceptionConstants.DELETE_FORCE_CONFIRM_MSG); + } + //记录日志 + StringBuffer sb = new StringBuffer(); + sb.append(BusinessConstants.LOG_OPERATION_TYPE_DELETE); + //路径列表 + List pathList = new ArrayList<>(); + List list = getMaterialListByIds(ids); + for(Material material: list){ + sb.append("[").append(material.getName()).append("]"); + if(StringUtil.isNotEmpty(material.getImgName())) { + pathList.add(material.getImgName()); + } + } + logService.insertLog("商品", sb.toString(), + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); + User userInfo=userService.getCurrentUser(); + //校验通过执行删除操作 + try{ + //逻辑删除商品 + materialMapperEx.batchDeleteMaterialByIds(new Date(),userInfo==null?null:userInfo.getId(),idArray); + //逻辑删除商品价格扩展 + materialExtendMapperEx.batchDeleteMaterialExtendByMIds(idArray); + //逻辑删除文件 + systemConfigService.deleteFileByPathList(pathList); + return 1; + }catch(Exception e){ + JshException.writeFail(logger, e); + return 0; + } + } + + public int checkIsNameExist(Long id, String name)throws Exception { + MaterialExample example = new MaterialExample(); + example.createCriteria().andIdNotEqualTo(id).andNameEqualTo(name).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list =null; + try{ + list= materialMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list==null?0:list.size(); + } + + public int checkIsExist(Long id, String name, String model, String color, String standard, String mfrs, + String otherField1, String otherField2, String otherField3, String unit, Long unitId)throws Exception { + return materialMapperEx.checkIsExist(id, name, model, color, standard, mfrs, otherField1, + otherField2, otherField3, unit, unitId); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchSetStatus(Boolean status, String ids)throws Exception { + logService.insertLog("商品", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_EDIT).append(ids).toString(), + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); + List materialIds = StringUtil.strToLongList(ids); + Material material = new Material(); + material.setEnabled(status); + MaterialExample example = new MaterialExample(); + example.createCriteria().andIdIn(materialIds); + int result =0; + try{ + result= materialMapper.updateByExampleSelective(material, example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return result; + } + + public Unit findUnit(Long mId)throws Exception{ + Unit unit = new Unit(); + try{ + List list = materialMapperEx.findUnitList(mId); + if(list!=null && list.size()>0) { + unit = list.get(0); + } + }catch(Exception e){ + JshException.readFail(logger, e); + } + return unit; + } + + public List findById(Long id)throws Exception{ + List list =null; + try{ + list= materialMapperEx.findById(id); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public List findByIdWithBarCode(Long meId)throws Exception{ + List list =null; + try{ + list= materialMapperEx.findByIdWithBarCode(meId); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public List getListByParentId(Long parentId) { + List idList = new ArrayList(); + List list = materialCategoryMapperEx.getListByParentId(parentId); + idList.add(parentId); + if(list!=null && list.size()>0) { + getIdListByParentId(idList, parentId); + } + return idList; + } + + public List getIdListByParentId(List idList, Long parentId){ + List list = materialCategoryMapperEx.getListByParentId(parentId); + if(list!=null && list.size()>0) { + for(MaterialCategory mc : list){ + idList.add(mc.getId()); + getIdListByParentId(idList, mc.getId()); + } + } + return idList; + } + + public JSONArray getMaterialByParam(String materialParam) { + JSONArray arr = new JSONArray(); + List list = materialMapperEx.getMaterialByParam(materialParam); + for(MaterialVoSearch item: list) { + JSONObject obj = new JSONObject(); + StringBuilder sb = new StringBuilder(); + sb.append(item.getBarCode()); + sb.append("_").append(item.getName()); + if(StringUtil.isNotEmpty(item.getMnemonic())) { + sb.append("(").append(item.getMnemonic()).append(")"); + } + if(StringUtil.isNotEmpty(item.getStandard())) { + sb.append("(").append(item.getStandard()).append(")"); + } + if(StringUtil.isNotEmpty(item.getModel())) { + sb.append("(").append(item.getModel()).append(")"); + } + if(StringUtil.isNotEmpty(item.getColor())) { + sb.append("(").append(item.getColor()).append(")"); + } + if(StringUtil.isNotEmpty(item.getBrand())) { + sb.append("(").append(item.getBrand()).append(")"); + } + if(StringUtil.isNotEmpty(item.getUnit())) { + sb.append("(").append(item.getUnit()).append(")"); + } + obj.put("barCode", item.getBarCode()); + obj.put("materialStr", sb.toString()); + arr.add(obj); + } + return arr; + } + + public List findBySelectWithBarCode(Long categoryId, String q, String standardOrModel, String color, + String brand, String mfrs, String otherField1, String otherField2, String otherField3, + String enableSerialNumber, String enableBatchNumber, Integer offset, Integer rows) throws Exception{ + List list =null; + try{ + List idList = new ArrayList<>(); + if(categoryId!=null){ + Long parentId = categoryId; + idList = getListByParentId(parentId); + } + if(StringUtil.isNotEmpty(q)) { + q = q.replace("'", ""); + q = q.trim(); + } + list= materialMapperEx.findBySelectWithBarCode(idList, q, standardOrModel, color, brand, mfrs, + otherField1, otherField2, otherField3, enableSerialNumber, enableBatchNumber, offset, rows); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public int findBySelectWithBarCodeCount(Long categoryId, String q, String standardOrModel, String color, + String brand, String mfrs, String otherField1, String otherField2, String otherField3, + String enableSerialNumber, String enableBatchNumber) throws Exception{ + int result=0; + try{ + List idList = new ArrayList<>(); + if(categoryId!=null){ + Long parentId = categoryId; + idList = getListByParentId(parentId); + } + if(StringUtil.isNotEmpty(q)) { + q = q.replace("'", ""); + } + result = materialMapperEx.findBySelectWithBarCodeCount(idList, q, standardOrModel, color, brand, mfrs, + otherField1, otherField2, otherField3, enableSerialNumber, enableBatchNumber); + }catch(Exception e){ + logger.error("异常码[{}],异常提示[{}],异常[{}]", + ExceptionConstants.DATA_READ_FAIL_CODE,ExceptionConstants.DATA_READ_FAIL_MSG,e); + throw new BusinessRunTimeException(ExceptionConstants.DATA_READ_FAIL_CODE, + ExceptionConstants.DATA_READ_FAIL_MSG); + } + return result; + } + + public void exportExcel(String categoryId, String materialParam, String color, String materialOther, String weight, + String expiryNum, String enabled, String enableSerialNumber, String enableBatchNumber, + String remark, String mpList, HttpServletResponse response)throws Exception { + String title = "商品信息"; + List idList = new ArrayList<>(); + if(StringUtil.isNotEmpty(categoryId)){ + idList = getListByParentId(Long.parseLong(categoryId)); + } + //查询商品主条码相关列表 + List dataList = materialMapperEx.exportExcel(materialParam, color, materialOther, weight, expiryNum, enabled, enableSerialNumber, + enableBatchNumber, remark, idList); + if (null != dataList && dataList.size() > EXPORT_LIMIT) { + File file = ExcelUtils.exportObjectsOneSheet(fileExportTmp, title, "单次导出条数超出限制(1万条)", new String[0], title, new ArrayList<>()); + ExcelUtils.downloadExcel(file, file.getName(), response); + return; + } + //查询商品副条码相关列表 + Map otherMaterialMap = new HashMap<>(); + List otherDataList = materialMapperEx.getOtherMaterialList(); + for(MaterialExtend me: otherDataList) { + //遇到多个副条码的情况,只加第一个 + otherMaterialMap.putIfAbsent(me.getMaterialId(), me); + } + String otherField = "扩展1,扩展2,扩展3"; + if(StringUtil.isNotEmpty(mpList)) { + otherField = mpList; + } + String nameStr = "名称*,规格,型号,颜色,品牌,类别,基础重量(kg),保质期(天),基本单位*,副单位,基本条码*,副条码,比例,多属性," + + "采购价,零售价,销售价,最低售价,状态*,序列号,批号,仓位货架,制造商," + otherField + ",备注"; + List nameList = StringUtil.strToStringList(nameStr); + //仓库列表 + List depotList = depotService.getAllList(); + if (nameList != null) { + for(Depot depot: depotList) { + nameList.add(depot.getName()); + } + } + //期初库存缓存 + List misList = materialInitialStockMapperEx.getListExceptZero(); + Map misMap = new HashMap<>(); + if (misList != null) { + for (MaterialInitialStock mis : misList) { + misMap.put(mis.getMaterialId() + "_" + mis.getDepotId(), mis.getNumber()); + } + } + String[] names = StringUtil.listToStringArray(nameList); + List objects = new ArrayList<>(); + if (null != dataList) { + for (MaterialVo4Unit m : dataList) { + Object[] objs = new Object[names.length]; + objs[0] = m.getName(); + objs[1] = m.getStandard(); + objs[2] = m.getModel(); + objs[3] = m.getColor(); + objs[4] = m.getBrand(); + objs[5] = m.getCategoryName(); + objs[6] = m.getWeight() == null ? "" : m.getWeight().setScale(3, BigDecimal.ROUND_HALF_UP); + objs[7] = m.getExpiryNum() == null ? "" : m.getExpiryNum(); + objs[8] = m.getCommodityUnit(); + objs[9] = otherMaterialMap.get(m.getId()) == null ? "" : otherMaterialMap.get(m.getId()).getCommodityUnit(); + objs[10] = m.getmBarCode(); + objs[11] = otherMaterialMap.get(m.getId()) == null ? "" : otherMaterialMap.get(m.getId()).getBarCode(); + objs[12] = m.getRatio() == null ? "" : m.getRatio(); + objs[13] = m.getSku(); + objs[14] = m.getPurchaseDecimal() == null ? "" : m.getPurchaseDecimal().setScale(3, BigDecimal.ROUND_HALF_UP); + objs[15] = m.getCommodityDecimal() == null ? "" : m.getCommodityDecimal().setScale(3, BigDecimal.ROUND_HALF_UP); + objs[16] = m.getWholesaleDecimal() == null ? "" : m.getWholesaleDecimal().setScale(3, BigDecimal.ROUND_HALF_UP); + objs[17] = m.getLowDecimal() == null ? "" : m.getLowDecimal().setScale(3, BigDecimal.ROUND_HALF_UP); + objs[18] = m.getEnabled() ? "1" : "0"; + objs[19] = m.getEnableSerialNumber(); + objs[20] = m.getEnableBatchNumber(); + objs[21] = m.getPosition(); + objs[22] = m.getMfrs(); + objs[23] = m.getOtherField1(); + objs[24] = m.getOtherField2(); + objs[25] = m.getOtherField3(); + objs[26] = m.getRemark(); + //仓库期初库存 + int i = 27; + for(Depot depot: depotList) { + BigDecimal number = misMap.get(m.getId() + "_" + depot.getId()); + objs[i] = number == null ? BigDecimal.ZERO : number.setScale(2, BigDecimal.ROUND_HALF_UP); + i++; + } + objects.add(objs); + } + } + File file = ExcelUtils.exportObjectsOneSheet(fileExportTmp, title, "*导入时本行内容请勿删除,切记!", names, title, objects); + ExcelUtils.downloadExcel(file, file.getName(), response); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public BaseResponseInfo importExcel(MultipartFile file, HttpServletRequest request) throws Exception { + BaseResponseInfo info = new BaseResponseInfo(); + try { + Long beginTime = System.currentTimeMillis(); + //文件扩展名只能为xls + String fileName = file.getOriginalFilename(); + if(StringUtil.isNotEmpty(fileName)) { + String fileExt = fileName.substring(fileName.lastIndexOf(".")+1); + if(!"xls".equals(fileExt)) { + throw new BusinessRunTimeException(ExceptionConstants.FILE_EXTENSION_ERROR_CODE, + ExceptionConstants.FILE_EXTENSION_ERROR_MSG); + } + } + Workbook workbook = Workbook.getWorkbook(file.getInputStream()); + Sheet src = workbook.getSheet(0); + //获取真实的行数,剔除掉空白行 + int rightRows = ExcelUtils.getRightRows(src); + List depotList= depotService.getDepot(); + int depotCount = depotList.size(); + Map depotMap = parseDepotToMap(depotList); + User user = userService.getCurrentUser(); + List mList = new ArrayList<>(); + //单次导入超出1000条 + if(rightRows > 1002) { + throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_IMPORT_OVER_LIMIT_CODE, + String.format(ExceptionConstants.MATERIAL_IMPORT_OVER_LIMIT_MSG)); + } + for (int i = 2; i < rightRows; i++) { + String name = ExcelUtils.getContent(src, i, 0); //名称 + String standard = ExcelUtils.getContent(src, i, 1); //规格 + String model = ExcelUtils.getContent(src, i, 2); //型号 + String color = ExcelUtils.getContent(src, i, 3); //颜色 + String brand = ExcelUtils.getContent(src, i, 4); //品牌 + String categoryName = ExcelUtils.getContent(src, i, 5); //类别 + String weight = ExcelUtils.getContent(src, i, 6); //基础重量(kg) + String expiryNum = ExcelUtils.getContent(src, i, 7); //保质期(天) + String unit = ExcelUtils.getContent(src, i, 8); //基本单位 + //名称为空 + if(StringUtil.isEmpty(name)) { + throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_NAME_EMPTY_CODE, + String.format(ExceptionConstants.MATERIAL_NAME_EMPTY_MSG, i+1)); + } + //名称长度超出 + if(name.length()>100) { + throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_NAME_OVER_CODE, + String.format(ExceptionConstants.MATERIAL_NAME_OVER_MSG, i+1)); + } + //规格长度超出 + if(StringUtil.isNotEmpty(standard) && standard.length()>100) { + throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_STANDARD_OVER_CODE, + String.format(ExceptionConstants.MATERIAL_STANDARD_OVER_MSG, i+1)); + } + //型号长度超出 + if(StringUtil.isNotEmpty(model) && model.length()>100) { + throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_MODEL_OVER_CODE, + String.format(ExceptionConstants.MATERIAL_MODEL_OVER_MSG, i+1)); + } + //基本单位为空 + if(StringUtil.isEmpty(unit)) { + throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_UNIT_EMPTY_CODE, + String.format(ExceptionConstants.MATERIAL_UNIT_EMPTY_MSG, i+1)); + } + MaterialWithInitStock m = new MaterialWithInitStock(); + m.setName(name); + m.setStandard(standard); + m.setModel(model); + m.setColor(color); + m.setBrand(brand); + //通过名称生成助记码 + m.setMnemonic(PinYinUtil.getFirstLettersLo(name)); + Long categoryId = materialCategoryService.getCategoryIdByName(categoryName); + if(null!=categoryId){ + m.setCategoryId(categoryId); + } + if(StringUtil.isNotEmpty(weight)) { + //校验基础重量是否是数字(含小数) + if(!StringUtil.isPositiveBigDecimal(weight)) { + throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_WEIGHT_NOT_DECIMAL_CODE, + String.format(ExceptionConstants.MATERIAL_WEIGHT_NOT_DECIMAL_MSG, i+1)); + } + m.setWeight(new BigDecimal(weight)); + } + if(StringUtil.isNotEmpty(expiryNum)) { + //校验保质期是否是正整数 + if(!StringUtil.isPositiveLong(expiryNum)) { + throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_EXPIRY_NUM_NOT_INTEGER_CODE, + String.format(ExceptionConstants.MATERIAL_EXPIRY_NUM_NOT_INTEGER_MSG, i+1)); + } + m.setExpiryNum(Integer.parseInt(expiryNum)); + } + String manyUnit = ExcelUtils.getContent(src, i, 9); //副单位 + String barCode = ExcelUtils.getContent(src, i, 10); //基础条码 + String manyBarCode = ExcelUtils.getContent(src, i, 11); //副条码 + String ratio = ExcelUtils.getContent(src, i, 12); //比例 + String sku = ExcelUtils.getContent(src, i, 13); //多属性 + String purchaseDecimal = ExcelUtils.getContent(src, i, 14); //采购价 + String commodityDecimal = ExcelUtils.getContent(src, i, 15); //零售价 + String wholesaleDecimal = ExcelUtils.getContent(src, i, 16); //销售价 + String lowDecimal = ExcelUtils.getContent(src, i, 17); //最低售价 + String enabled = ExcelUtils.getContent(src, i, 18); //状态 + String enableSerialNumber = ExcelUtils.getContent(src, i, 19); //序列号 + String enableBatchNumber = ExcelUtils.getContent(src, i, 20); //批号 + String position = ExcelUtils.getContent(src, i, 21); //仓位货架 + String mfrs = ExcelUtils.getContent(src, i, 22); //制造商 + String otherField1 = ExcelUtils.getContent(src, i, 23); //自定义1 + String otherField2 = ExcelUtils.getContent(src, i, 24); //自定义2 + String otherField3 = ExcelUtils.getContent(src, i, 25); //自定义3 + String remark = ExcelUtils.getContent(src, i, 26); //备注 + m.setPosition(StringUtil.isNotEmpty(position)?position:null); + m.setMfrs(StringUtil.isNotEmpty(mfrs)?mfrs:null); + m.setOtherField1(StringUtil.isNotEmpty(otherField1)?otherField1:null); + m.setOtherField2(StringUtil.isNotEmpty(otherField2)?otherField2:null); + m.setOtherField3(StringUtil.isNotEmpty(otherField3)?otherField3:null); + m.setRemark(remark); + //状态格式错误 + if(!"1".equals(enabled) && !"0".equals(enabled)) { + throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_ENABLED_ERROR_CODE, + String.format(ExceptionConstants.MATERIAL_ENABLED_ERROR_MSG, i+1)); + } + //基本条码为空 + if(StringUtil.isEmpty(barCode)) { + throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_BARCODE_EMPTY_CODE, + String.format(ExceptionConstants.MATERIAL_BARCODE_EMPTY_MSG, i+1)); + } + //校验基本条码长度为4到40位 + if(!StringUtil.checkBarCodeLength(barCode)) { + throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_BARCODE_LENGTH_ERROR_CODE, + String.format(ExceptionConstants.MATERIAL_BARCODE_LENGTH_ERROR_MSG, barCode)); + } + //校验副条码长度为4到40位 + if(StringUtil.isNotEmpty(manyBarCode) && !StringUtil.checkBarCodeLength(manyBarCode)) { + throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_BARCODE_LENGTH_ERROR_CODE, + String.format(ExceptionConstants.MATERIAL_BARCODE_LENGTH_ERROR_MSG, manyBarCode)); + } + //批量校验excel中有无重复商品,是指名称、规格、型号、颜色、单位、多属性 + batchCheckExistMaterialListByParam(mList, name, standard, model, color, unit, sku); + //批量校验excel中有无重复条码(1-文档自身校验,2-和数据库里面的商品校验) + batchCheckExistBarCodeByParam(mList, barCode, manyBarCode); + JSONObject materialExObj = new JSONObject(); + JSONObject basicObj = new JSONObject(); + basicObj.put("barCode", barCode); + basicObj.put("commodityUnit", unit); + basicObj.put("sku", sku); + basicObj.put("purchaseDecimal", purchaseDecimal); + basicObj.put("commodityDecimal", commodityDecimal); + basicObj.put("wholesaleDecimal", wholesaleDecimal); + basicObj.put("lowDecimal", lowDecimal); + materialExObj.put("basic", basicObj); + if(StringUtil.isNotEmpty(manyUnit) && StringUtil.isNotEmpty(ratio)){ //多单位 + //校验比例是否是数字(含小数) + if(!StringUtil.isPositiveBigDecimal(ratio.trim())) { + throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_RATIO_NOT_INTEGER_CODE, + String.format(ExceptionConstants.MATERIAL_RATIO_NOT_INTEGER_MSG, i+1)); + } + Long unitId = unitService.getUnitIdByParam(unit, manyUnit, new BigDecimal(ratio.trim())); + if(unitId != null) { + m.setUnitId(unitId); + m.setUnit(""); + } else { + throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_UNIT_MATE_CODE, + String.format(ExceptionConstants.MATERIAL_UNIT_MATE_MSG, manyBarCode)); + } + JSONObject otherObj = new JSONObject(); + otherObj.put("barCode", manyBarCode); + otherObj.put("commodityUnit", manyUnit); + otherObj.put("purchaseDecimal", parsePrice(purchaseDecimal,ratio)); + otherObj.put("commodityDecimal", parsePrice(commodityDecimal,ratio)); + otherObj.put("wholesaleDecimal", parsePrice(wholesaleDecimal,ratio)); + otherObj.put("lowDecimal", parsePrice(lowDecimal,ratio)); + materialExObj.put("other", otherObj); + } else { + m.setUnit(unit); + m.setUnitId(null); + } + m.setMaterialExObj(materialExObj); + m.setEnabled("1".equals(enabled)); + if(StringUtil.isNotEmpty(enableSerialNumber) && "1".equals(enableSerialNumber)) { + m.setEnableSerialNumber("1"); + } else { + m.setEnableSerialNumber("0"); + } + if(StringUtil.isNotEmpty(enableBatchNumber) && "1".equals(enableBatchNumber)) { + m.setEnableBatchNumber("1"); + } else { + m.setEnableBatchNumber("0"); + } + if("1".equals(enableSerialNumber) && "1".equals(enableBatchNumber)) { + throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_ENABLE_MUST_ONE_CODE, + String.format(ExceptionConstants.MATERIAL_ENABLE_MUST_ONE_MSG, barCode)); + } + m.setStockMap(getStockMapCache(src, depotCount, depotMap, i)); + mList.add(m); + } + List deleteInitialStockMaterialIdList = new ArrayList<>(); + List deleteCurrentStockMaterialIdList = new ArrayList<>(); + List insertInitialStockMaterialList = new ArrayList<>(); + List insertCurrentStockMaterialList = new ArrayList<>(); + //防止初始库存和当前库存出现重复 + Map materialDepotInitialMap = new HashMap<>(); + Map materialDepotCurrentMap = new HashMap<>(); + for(MaterialWithInitStock m: mList) { + Long mId = 0L; + //判断该商品是否存在,如果不存在就新增,如果存在就更新 + String basicBarCode = getBasicBarCode(m); + List materials = getMaterialListByParam(m.getName(),m.getStandard(),m.getModel(),m.getColor(),m.getUnit(),m.getUnitId(), basicBarCode); + if(materials.size() == 0) { + materialMapperEx.insertSelectiveEx(m); + mId = m.getId(); + } else { + mId = materials.get(0).getId(); + String materialJson = JSON.toJSONString(m); + Material material = JSONObject.parseObject(materialJson, Material.class); + material.setId(mId); + materialMapper.updateByPrimaryKeySelective(material); + //更新多单位 + if(material.getUnitId() == null) { + materialMapperEx.setUnitIdToNull(material.getId()); + } + //如果之前有保质期,则更新保质期 + if(materials.get(0).getExpiryNum()!=null && material.getExpiryNum() == null) { + materialMapperEx.setExpiryNumToNull(material.getId()); + } + } + //给商品新增或更新条码与价格相关信息 + JSONObject materialExObj = m.getMaterialExObj(); + insertOrUpdateMaterialExtend(materialExObj, "basic", "1", mId, user); + insertOrUpdateMaterialExtend(materialExObj, "other", "0", mId, user); + //给商品更新库存 + Map stockMap = m.getStockMap(); + for(Depot depot: depotList){ + Long depotId = depot.getId(); + String materialDepotKey = mId + "_" + depotId; + //获取初始库存 + BigDecimal initStock = getInitStock(mId, depotId); + //excel里面的当前库存 + BigDecimal stock = stockMap.get(depot.getId()); + //新增或更新初始库存 + if(stock!=null && stock.compareTo(BigDecimal.ZERO)!=0) { + String basicStr = materialExObj.getString("basic"); + MaterialExtend materialExtend = JSONObject.parseObject(basicStr, MaterialExtend.class); + if(StringUtil.isNotEmpty(materialExtend.getSku())) { + throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_SKU_BEGIN_STOCK_FAILED_CODE, + String.format(ExceptionConstants.MATERIAL_SKU_BEGIN_STOCK_FAILED_MSG, materialExtend.getBarCode())); + } + buildChangeInitialStock(deleteInitialStockMaterialIdList, insertInitialStockMaterialList, materialDepotInitialMap, mId, depotId, materialDepotKey, stock); + } else { + if(initStock!=null && initStock.compareTo(BigDecimal.ZERO)!=0) { + buildChangeInitialStock(deleteInitialStockMaterialIdList, insertInitialStockMaterialList, materialDepotInitialMap, mId, depotId, materialDepotKey, stock); + } + } + //新增或更新当前库存 + Long billCount = depotItemService.getCountByMaterialAndDepot(mId, depotId); + if(billCount == 0) { + if(stock!=null && stock.compareTo(BigDecimal.ZERO)!=0) { + buildChangeCurrentStock(deleteCurrentStockMaterialIdList, insertCurrentStockMaterialList, materialDepotCurrentMap, mId, depotId, materialDepotKey, stock); + } else { + if(initStock!=null && initStock.compareTo(BigDecimal.ZERO)!=0) { + buildChangeCurrentStock(deleteCurrentStockMaterialIdList, insertCurrentStockMaterialList, materialDepotCurrentMap, mId, depotId, materialDepotKey, stock); + } + } + } else { + BigDecimal currentNumber = getCurrentStockByMaterialIdAndDepotId(mId, depotId); + //当前库存的更新:减去初始库存,再加上导入的新初始库存 + if(currentNumber!=null && initStock!=null && stock!=null) { + currentNumber = currentNumber.subtract(initStock).add(stock); + } + buildChangeCurrentStock(deleteCurrentStockMaterialIdList, insertCurrentStockMaterialList, materialDepotCurrentMap, mId, depotId, materialDepotKey, currentNumber); + } + } + } + //批量更新库存,先删除后新增 + if(insertInitialStockMaterialList.size()>0) { + batchDeleteInitialStockByMaterialList(deleteInitialStockMaterialIdList); + materialInitialStockMapperEx.batchInsert(insertInitialStockMaterialList); + } + if(insertCurrentStockMaterialList.size()>0) { + batchDeleteCurrentStockByMaterialList(deleteCurrentStockMaterialIdList); + materialCurrentStockMapperEx.batchInsert(insertCurrentStockMaterialList); + } + logService.insertLog("商品", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_IMPORT).append(mList.size()).append(BusinessConstants.LOG_DATA_UNIT).toString(), + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); + Long endTime = System.currentTimeMillis(); + logger.info("导入耗时:{}", endTime-beginTime); + info.code = 200; + info.data = "导入成功"; + } catch (BusinessRunTimeException e) { + info.code = e.getCode(); + info.data = e.getData().get("message"); + } catch (Exception e) { + logger.error(e.getMessage(), e); + info.code = 500; + info.data = "导入失败"; + } + return info; + } + + /** + * 构造初始库存的变化 + */ + private void buildChangeInitialStock(List deleteInitialStockMaterialIdList, List insertInitialStockMaterialList, + Map materialDepotInitialMap, Long mId, Long depotId, String materialDepotKey, BigDecimal stock) { + if(materialDepotInitialMap.get(materialDepotKey)==null) { + MaterialInitialStock materialInitialStock = new MaterialInitialStock(); + materialInitialStock.setMaterialId(mId); + materialInitialStock.setDepotId(depotId); + materialInitialStock.setNumber(stock); + insertInitialStockMaterialList.add(materialInitialStock); + deleteInitialStockMaterialIdList.add(mId); + materialDepotInitialMap.put(materialDepotKey, materialDepotKey); + } + } + + /** + * 构造当前库存的变化 + */ + private void buildChangeCurrentStock(List deleteCurrentStockMaterialIdList, List insertCurrentStockMaterialList, + Map materialDepotCurrentMap, Long mId, Long depotId, String materialDepotKey, BigDecimal stock) { + if(materialDepotCurrentMap.get(materialDepotKey)==null) { + MaterialCurrentStock materialCurrentStock = new MaterialCurrentStock(); + materialCurrentStock.setMaterialId(mId); + materialCurrentStock.setDepotId(depotId); + materialCurrentStock.setCurrentNumber(stock); + insertCurrentStockMaterialList.add(materialCurrentStock); + deleteCurrentStockMaterialIdList.add(mId); + materialDepotCurrentMap.put(materialDepotKey, materialDepotKey); + } + } + + private Map parseDepotToMap(List depotList) { + Map map = new HashMap<>(); + for(Depot depot: depotList) { + map.put(depot.getName(), depot.getId()); + } + return map; + } + + /** + * 缓存各个仓库的库存信息 + * @param src + * @param depotCount + * @param depotMap + * @param i + * @return + * @throws Exception + */ + private Map getStockMapCache(Sheet src, int depotCount, Map depotMap, int i) throws Exception { + Map stockMap = new HashMap<>(); + for(int j = 1; j<= depotCount; j++) { + int col = 26 + j; + if(col < src.getColumns()){ + String depotName = ExcelUtils.getContent(src, 1, col); //获取仓库名称 + if(StringUtil.isNotEmpty(depotName)) { + Long depotId = depotMap.get(depotName); + if(depotId!=null && depotId!=0L){ + String stockStr = ExcelUtils.getContent(src, i, col); + if(StringUtil.isNotEmpty(stockStr)) { + stockMap.put(depotId, parseBigDecimalEx(stockStr)); + } + } + } + } + } + return stockMap; + } + + /** + * 批量校验excel中有无重复商品,是指名称、规格、型号、颜色、单位 + * @param mList + */ + public void batchCheckExistMaterialListByParam(List mList, String name, String standard, + String model, String color, String unit, String sku) { + for(MaterialWithInitStock material: mList){ + String materialSku = ""; + JSONObject materialExObj = material.getMaterialExObj(); + if(materialExObj!=null && materialExObj.get("basic")!=null) { + JSONObject basicObj = materialExObj.getJSONObject("basic"); + if(basicObj!=null && materialExObj.get("sku")!=null) { + materialSku = basicObj.getString("sku"); + } + } + if(name.equals(material.getName()) && + standard.equals(material.getStandard()) && + model.equals(material.getModel()) && + color.equals(material.getColor()) && + unit.equals(material.getUnit()) && + sku.equals(materialSku)) { + String info = name + "-" + standard + "-" + model + "-" + color + "-" + unit + "-" + sku; + throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_EXCEL_IMPORT_EXIST_CODE, + String.format(ExceptionConstants.MATERIAL_EXCEL_IMPORT_EXIST_MSG, info)); + } + } + } + + /** + * 批量校验excel中有无重复条码(1-文档自身校验,2-和数据库里面的商品校验) + * @param mList + */ + public void batchCheckExistBarCodeByParam(List mList, + String barCode, String manyBarCode) throws Exception { + if(StringUtil.isNotEmpty(manyBarCode)) { + if(barCode.equals(manyBarCode)) { + //同一个商品的主副条码重复了,进行提醒 + throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_EXCEL_IMPORT_BARCODE_EXIST_CODE, + String.format(ExceptionConstants.MATERIAL_EXCEL_IMPORT_BARCODE_EXIST_MSG, manyBarCode)); + } + //EXCEL中有副条码在系统中已存在(除自身商品之外) + int count = materialExtendService.getCountByManyBarCodeWithoutUs(manyBarCode, barCode); + if (count>0) { + throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_EXCEL_IMPORT_MANY_BARCODE_EXIST_CODE, + String.format(ExceptionConstants.MATERIAL_EXCEL_IMPORT_MANY_BARCODE_EXIST_MSG, manyBarCode)); + } + } + for(MaterialWithInitStock material: mList){ + JSONObject materialExObj = material.getMaterialExObj(); + String basicBarCode = ""; + String otherBarCode = ""; + if(materialExObj.get("basic")!=null) { + JSONObject basicObj = materialExObj.getJSONObject("basic"); + basicBarCode = basicObj.getString("barCode"); + } + if(materialExObj.get("other")!=null) { + JSONObject otherObj = materialExObj.getJSONObject("other"); + otherBarCode = otherObj.getString("barCode"); + } + if(barCode.equals(basicBarCode) || barCode.equals(otherBarCode)){ + throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_EXCEL_IMPORT_BARCODE_EXIST_CODE, + String.format(ExceptionConstants.MATERIAL_EXCEL_IMPORT_BARCODE_EXIST_MSG, barCode)); + } + if(StringUtil.isNotEmpty(manyBarCode)) { + if(manyBarCode.equals(basicBarCode) || manyBarCode.equals(otherBarCode)){ + throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_EXCEL_IMPORT_BARCODE_EXIST_CODE, + String.format(ExceptionConstants.MATERIAL_EXCEL_IMPORT_BARCODE_EXIST_MSG, manyBarCode)); + } + } + } + } + + /** + * 给商品新增或更新条码与价格相关信息 + * @param materialExObj + * @param type + * @param defaultFlag + * @param mId + * @param user + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public void insertOrUpdateMaterialExtend(JSONObject materialExObj, String type, String defaultFlag, Long mId, User user) throws Exception { + if(StringUtil.isExist(materialExObj.get(type))){ + String basicStr = materialExObj.getString(type); + MaterialExtend materialExtend = JSONObject.parseObject(basicStr, MaterialExtend.class); + materialExtend.setMaterialId(mId); + materialExtend.setDefaultFlag(defaultFlag); + materialExtend.setCreateTime(new Date()); + materialExtend.setUpdateTime(System.currentTimeMillis()); + materialExtend.setCreateSerial(user.getLoginName()); + materialExtend.setUpdateSerial(user.getLoginName()); + Long meId = 0L; + if(StringUtil.isNotEmpty(materialExtend.getSku())){ + //含sku的商品,特殊逻辑 + meId = materialExtendService.selectIdByMaterialIdAndBarCode(mId, materialExtend.getBarCode()); + List meList = materialExtendService.getListByMaterialIdAndDefaultFlagAndBarCode(mId, "1", materialExtend.getBarCode()); + if(meList.size() == 0) { + materialExtend.setDefaultFlag("1"); + } else { + materialExtend.setDefaultFlag("0"); + } + } else { + meId = materialExtendService.selectIdByMaterialIdAndDefaultFlag(mId, defaultFlag); + } + if(meId==0L){ + materialExtendMapper.insertSelective(materialExtend); + } else { + materialExtend.setId(meId); + materialExtendMapper.updateByPrimaryKeySelective(materialExtend); + //如果金额为空,此处单独置空 + materialExtendMapperEx.specialUpdatePrice(materialExtend); + } + } + } + + public String getBasicBarCode(MaterialWithInitStock m) { + String barCode = ""; + JSONObject materialExObj = m.getMaterialExObj(); + if(StringUtil.isExist(materialExObj.get("basic"))) { + String basicStr = materialExObj.getString("basic"); + MaterialExtend basicMaterialExtend = JSONObject.parseObject(basicStr, MaterialExtend.class); + barCode = basicMaterialExtend.getBarCode(); + } + return barCode; + } + + /** + * 根据条件返回产品列表 + * @param name + * @param standard + * @param model + * @param color + * @param unit + * @param unitId + * @return + */ + private List getMaterialListByParam(String name, String standard, String model, String color, String unit, Long unitId, String basicBarCode) throws Exception { + List list = new ArrayList<>(); + MaterialExample example = new MaterialExample(); + MaterialExample.Criteria criteria = example.createCriteria(); + criteria.andNameEqualTo(name); + if (StringUtil.isNotEmpty(model)) { + criteria.andModelEqualTo(model); + } + if (StringUtil.isNotEmpty(color)) { + criteria.andColorEqualTo(color); + } + if (StringUtil.isNotEmpty(standard)) { + criteria.andStandardEqualTo(standard); + } + if (StringUtil.isNotEmpty(unit)) { + criteria.andUnitEqualTo(unit); + } + if (unitId !=null) { + criteria.andUnitIdEqualTo(unitId); + } + criteria.andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + list = materialMapper.selectByExample(example); + if(list.size()==0) { + //如果通过组合条件没有查到该商品,则通过条码再查一次 + MaterialExtend materialExtend = materialExtendService.getInfoByBarCode(basicBarCode); + if(materialExtend != null && materialExtend.getMaterialId()!=null) { + Material material = new Material(); + material.setId(materialExtend.getMaterialId()); + list.add(material); + } + } + return list; + } + + /** + * 写入初始库存 + * @param depotId + * @param mId + * @param stock + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public void insertInitialStockByMaterialAndDepot(Long depotId, Long mId, BigDecimal stock, BigDecimal lowSafeStock, BigDecimal highSafeStock){ + MaterialInitialStock materialInitialStock = new MaterialInitialStock(); + materialInitialStock.setDepotId(depotId); + materialInitialStock.setMaterialId(mId); + stock = stock == null? BigDecimal.ZERO: stock; + materialInitialStock.setNumber(stock); + if(lowSafeStock!=null) { + materialInitialStock.setLowSafeStock(lowSafeStock); + } + if(highSafeStock!=null) { + materialInitialStock.setHighSafeStock(highSafeStock); + } + materialInitialStockMapper.insertSelective(materialInitialStock); //存入初始库存 + } + + /** + * 写入当前库存 + * @param depotId + * @param mId + * @param stock + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public void insertCurrentStockByMaterialAndDepot(Long depotId, Long mId, BigDecimal stock){ + MaterialCurrentStock materialCurrentStock = new MaterialCurrentStock(); + materialCurrentStock.setDepotId(depotId); + materialCurrentStock.setMaterialId(mId); + materialCurrentStock.setCurrentNumber(stock); + materialCurrentStockMapper.insertSelective(materialCurrentStock); //存入初始库存 + } + + /** + * 批量删除初始库存 + * @param mIdList + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public void batchDeleteInitialStockByMaterialList(List mIdList){ + MaterialInitialStockExample example = new MaterialInitialStockExample(); + example.createCriteria().andMaterialIdIn(mIdList); + materialInitialStockMapper.deleteByExample(example); + } + + /** + * 批量删除当前库存 + * @param mIdList + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public void batchDeleteCurrentStockByMaterialList(List mIdList){ + MaterialCurrentStockExample example = new MaterialCurrentStockExample(); + example.createCriteria().andMaterialIdIn(mIdList); + materialCurrentStockMapper.deleteByExample(example); + } + + public List getMaterialEnableSerialNumberList(String q, Integer offset, Integer rows)throws Exception { + List list =null; + try{ + list= materialMapperEx.getMaterialEnableSerialNumberList(q, offset, rows); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public Long getMaterialEnableSerialNumberCount(String q)throws Exception { + Long count =null; + try{ + count= materialMapperEx.getMaterialEnableSerialNumberCount(q); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return count; + } + + public BigDecimal parseBigDecimalEx(String str) throws Exception{ + if(!StringUtil.isEmpty(str)) { + return new BigDecimal(str); + } else { + return null; + } + } + + public BigDecimal parsePrice(String price, String ratio) throws Exception{ + if(StringUtil.isEmpty(price) || StringUtil.isEmpty(ratio)) { + return BigDecimal.ZERO; + } else { + BigDecimal pr=new BigDecimal(price); + BigDecimal r=new BigDecimal(ratio); + return pr.multiply(r); + } + } + + /** + * 根据商品获取初始库存-多仓库 + * @param depotList + * @param materialId + * @return + */ + public BigDecimal getInitStockByMidAndDepotList(List depotList, Long materialId) { + BigDecimal stock = BigDecimal.ZERO; + MaterialInitialStockExample example = new MaterialInitialStockExample(); + if(depotList!=null && depotList.size()>0) { + example.createCriteria().andMaterialIdEqualTo(materialId).andDepotIdIn(depotList) + .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + } else { + example.createCriteria().andMaterialIdEqualTo(materialId) + .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + } + List list = materialInitialStockMapper.selectByExample(example); + if(list!=null && list.size()>0) { + for(MaterialInitialStock ms: list) { + if(ms!=null && null!=ms.getNumber()) { + stock = stock.add(ms.getNumber()); + } + } + } + return stock; + } + + /** + * 根据商品和仓库获取初始库存 + * @param materialId + * @param depotId + * @return + */ + public BigDecimal getInitStock(Long materialId, Long depotId) { + BigDecimal stock = BigDecimal.ZERO; + MaterialInitialStockExample example = new MaterialInitialStockExample(); + example.createCriteria().andMaterialIdEqualTo(materialId).andDepotIdEqualTo(depotId) + .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list = materialInitialStockMapper.selectByExample(example); + if(list!=null && list.size()>0) { + stock = list.get(0).getNumber(); + } + return stock; + } + + /** + * 根据商品和仓库获取当前库存 + * @param materialId + * @param depotId + * @return + */ + public BigDecimal getCurrentStockByMaterialIdAndDepotId(Long materialId, Long depotId) { + BigDecimal stock = BigDecimal.ZERO; + MaterialCurrentStockExample example = new MaterialCurrentStockExample(); + example.createCriteria().andMaterialIdEqualTo(materialId).andDepotIdEqualTo(depotId) + .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list = materialCurrentStockMapper.selectByExample(example); + if(list!=null && list.size()>0) { + stock = list.get(0).getCurrentNumber(); + } else { + stock = getInitStock(materialId,depotId); + } + return stock; + } + + /** + * 根据商品列表获取初始库存Map + * @param list + * @return + */ + public Map getInitialStockMapByMaterialList(List list) { + Map map = new HashMap<>(); + List materialIdList = new ArrayList<>(); + for(MaterialVo4Unit materialVo4Unit: list) { + materialIdList.add(materialVo4Unit.getId()); + } + List mcsList = materialInitialStockMapperEx.getInitialStockMapByIdList(materialIdList); + for(MaterialInitialStock materialInitialStock: mcsList) { + map.put(materialInitialStock.getMaterialId(), materialInitialStock.getNumber()); + } + return map; + } + + /** + * 根据商品列表获取当前库存Map + * @param list + * @return + */ + public Map getCurrentStockMapByMaterialList(List list) { + Map map = new HashMap<>(); + List materialIdList = new ArrayList<>(); + for(MaterialVo4Unit materialVo4Unit: list) { + materialIdList.add(materialVo4Unit.getId()); + } + List mcsList = materialCurrentStockMapperEx.getCurrentStockMapByIdList(materialIdList); + for(MaterialCurrentStock materialCurrentStock: mcsList) { + map.put(materialCurrentStock.getMaterialId(), materialCurrentStock.getCurrentNumber()); + } + return map; + } + + /** + * 根据商品和仓库获取安全库存信息 + * @param materialId + * @param depotId + * @return + */ + public MaterialInitialStock getSafeStock(Long materialId, Long depotId) { + MaterialInitialStock materialInitialStock = new MaterialInitialStock(); + MaterialInitialStockExample example = new MaterialInitialStockExample(); + example.createCriteria().andMaterialIdEqualTo(materialId).andDepotIdEqualTo(depotId) + .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list = materialInitialStockMapper.selectByExample(example); + if(list!=null && list.size()>0) { + materialInitialStock = list.get(0); + } + return materialInitialStock; + } + + public List getMaterialByMeId(Long meId) { + List result = new ArrayList(); + try{ + if(meId!=null) { + result= materialMapperEx.getMaterialByMeId(meId); + } + }catch(Exception e){ + JshException.readFail(logger, e); + } + return result; + } + + public String getMaxBarCode() { + List barCodeOldList = materialMapperEx.getBarCodeList(); + // 使用 Stream API 处理条码列表 + // 使用 BigInteger 处理可能的大数字 + Optional maxBarcode = barCodeOldList.stream() + .filter(StringUtil::isNumeric) // 过滤掉非数字条码 + .map(BigInteger::new) // 使用 BigInteger 构造函数 + .max(Comparator.naturalOrder()); // 获取最大值 + // 如果存在最大值,返回它;否则返回 1000L + BigInteger maxBarCodeOld = maxBarcode.orElse(new BigInteger("1000")); + return maxBarCodeOld.toString(); + } + + public List getMaterialNameList() { + return materialMapperEx.getMaterialNameList(); + } + + public List getMaterialByBarCode(String barCode) { + String [] barCodeArray=barCode.split(","); + return materialMapperEx.getMaterialByBarCode(barCodeArray); + } + + public List getMaterialByBarCodeAndWithOutMId(String barCode, Long mId) { + String [] barCodeArray=barCode.split(","); + return materialMapperEx.getMaterialByBarCodeAndWithOutMId(barCodeArray, mId); + } + + public List getInitialStockWithMaterial(List depotList) { + return materialMapperEx.getInitialStockWithMaterial(depotList); + } + + public List getListWithStock(String priceLimit, List depotList, List idList, String position, String materialParam, + Boolean moveAvgPriceFlag, Integer zeroStock, String column, String order, + Integer offset, Integer rows, HttpServletRequest request) throws Exception { + Map initialStockMap = new HashMap<>(); + List initialStockList = getInitialStockWithMaterial(depotList); + for (MaterialInitialStockWithMaterial mism: initialStockList) { + initialStockMap.put(mism.getMaterialId(), mism.getNumber()); + } + List dataList = materialMapperEx.getListWithStock(depotList, idList, position, materialParam, zeroStock, column, order, offset, rows); + for(MaterialVo4Unit item: dataList) { + if(moveAvgPriceFlag) { + item.setPurchaseDecimal(item.getCurrentUnitPrice()); + item.setCurrentStockPrice(item.getCurrentStockMovePrice()); + } + item.setPurchaseDecimal(roleService.parseStockPriceByLimit(item.getPurchaseDecimal(), priceLimit, request)); + item.setCurrentStockPrice(roleService.parseStockPriceByLimit(item.getCurrentStockPrice(), priceLimit, request)); + item.setUnitName(null!=item.getUnitId()?item.getUnitName() + "[多单位]":item.getUnitName()); + item.setInitialStock(null!=initialStockMap.get(item.getId())?initialStockMap.get(item.getId()):BigDecimal.ZERO); + item.setBigUnitStock(getBigUnitStock(item.getCurrentStock(), item.getUnitId())); + if(fileUploadType == 2) { + item.setImgSmall("small"); + item.setImgLarge("large"); + } + } + return dataList; + } + + public int getListWithStockCount(String priceLimit, List depotList, List idList, String position, String materialParam, Integer zeroStock) { + return materialMapperEx.getListWithStockCount(depotList, idList, position, materialParam, zeroStock); + } + + public MaterialVo4Unit getTotalStockAndPrice(String priceLimit, List depotList, List idList, String position, String materialParam, HttpServletRequest request) throws Exception { + MaterialVo4Unit res = materialMapperEx.getTotalStockAndPrice(depotList, idList, position, materialParam); + res.setCurrentStockMovePrice(roleService.parseStockPriceByLimit(res.getCurrentStockMovePrice(), priceLimit, request)); + res.setCurrentStockPrice(roleService.parseStockPriceByLimit(res.getCurrentStockPrice(), priceLimit, request)); + return res; + } + + /** + * 将小单位的库存换算为大单位的库存 + * @param stock + * @param unitId + * @return + * @throws Exception + */ + public String getBigUnitStock(BigDecimal stock, Long unitId) throws Exception { + String bigUnitStock = ""; + if(null!= unitId) { + Unit unit = unitService.getUnit(unitId); + if(unit.getRatio()!=null && unit.getRatio().compareTo(BigDecimal.ZERO)!=0 && stock!=null) { + bigUnitStock = stock.divide(unit.getRatio(),2,BigDecimal.ROUND_HALF_UP) + unit.getOtherUnit(); + } + } + return bigUnitStock; + } + + /** + * 构造扩展信息 + * @param mpArr + * @param m + * @return + */ + public String getMaterialOtherByParam(String[] mpArr, MaterialVo4Unit m) { + String materialOther = ""; + for (int i = 0; i < mpArr.length; i++) { + if (mpArr[i].equals("自定义1")) { + materialOther = materialOther + ((m.getOtherField1() == null || m.getOtherField1().equals("")) ? "" : "(" + m.getOtherField1() + ")"); + } + if (mpArr[i].equals("自定义2")) { + materialOther = materialOther + ((m.getOtherField2() == null || m.getOtherField2().equals("")) ? "" : "(" + m.getOtherField2() + ")"); + } + if (mpArr[i].equals("自定义3")) { + materialOther = materialOther + ((m.getOtherField3() == null || m.getOtherField3().equals("")) ? "" : "(" + m.getOtherField3() + ")"); + } + } + return materialOther; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchSetMaterialCurrentStock(String ids, List depotList) throws Exception { + int res = 0; + List idList = StringUtil.strToLongList(ids); + for(Long mId: idList) { + BigDecimal currentUnitPrice = materialCurrentStockMapperEx.getCurrentUnitPriceByMId(mId); + for(Depot depot: depotList) { + depotItemService.updateCurrentStockFun(mId, depot.getId(), currentUnitPrice); + res = 1; + } + } + return res; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchSetMaterialCurrentUnitPrice(String ids) throws Exception { + int res = 0; + List idList = StringUtil.strToLongList(ids); + for(Long mId: idList) { + DepotItem depotItem = new DepotItem(); + depotItem.setMaterialId(mId); + depotItemService.updateCurrentUnitPrice(depotItem); + res = 1; + } + return res; + } + + public int batchUpdate(JSONObject jsonObject) { + String ids = jsonObject.getString("ids"); + String materialStr = jsonObject.getString("material"); + List idList = StringUtil.strToLongList(ids); + Material material = JSONObject.parseObject(materialStr, Material.class); + MaterialExample example = new MaterialExample(); + example.createCriteria().andIdIn(idList).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + return materialMapper.updateByExampleSelective(material, example); + } + + public MaterialExtend getMaterialExtendBySerialNumber(String serialNumber) { + return materialMapperEx.getMaterialExtendBySerialNumber(serialNumber); + } + + public BigDecimal getCurrentUnitPriceByMaterialId(Long materialId) { + return materialCurrentStockMapperEx.getCurrentUnitPriceByMId(materialId); + } + + /** + * 构造多属性数组字符串 + * @param obj + * @return + */ + public String parseAttributeBySku(JSONObject obj) { + if(obj!=null) { + JSONObject attributeObj = new JSONObject(); + JSONArray manySku = obj.getJSONArray("manySku"); + JSONArray skuOne = obj.getJSONArray("skuOne"); + JSONArray skuTwo = obj.getJSONArray("skuTwo"); + JSONArray skuThree = obj.getJSONArray("skuThree"); + attributeObj.put("manySku", manySku); + attributeObj.put("skuOne", skuOne); + attributeObj.put("skuTwo", skuTwo); + attributeObj.put("skuThree", skuThree); + return attributeObj.toJSONString(); + } else { + return null; + } + } + + public List getMaterialDepotStock(String depotIds, Long mId, HttpServletRequest request) throws Exception { + String[] depotIdArr = null; + if(StringUtil.isNotEmpty(depotIds)) { + depotIdArr = depotIds.split(","); + } + boolean moveAvgPriceFlag = systemConfigService.getMoveAvgPriceFlag(); + List depotList = depotService.parseDepotListByArr(depotIdArr); + Long[] depotIdArray = StringUtil.listToLongArray(depotList); + Long userId = userService.getUserId(request); + String priceLimit = userService.getRoleTypeByUserId(userId).getPriceLimit(); + PageUtils.startPage(); + List list = materialMapperEx.getMaterialDepotStock(depotIdArray, mId); + for (MaterialDepotStock item: list) { + if(moveAvgPriceFlag) { + item.setUnitPrice(item.getCurrentUnitPrice()); + } else { + item.setUnitPrice(item.getPurchaseDecimal()); + } + item.setUnitPrice(roleService.parseStockPriceByLimit(item.getUnitPrice(), priceLimit, request)); + if(item.getCurrentNumber()!=null && item.getUnitPrice()!=null ) { + item.setAllPrice(item.getCurrentNumber().multiply(item.getUnitPrice())); + } + } + return list; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/service/MsgService.java b/smtERP-boot/src/main/java/com/reallin/smt/service/MsgService.java new file mode 100644 index 0000000..d679587 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/service/MsgService.java @@ -0,0 +1,320 @@ +package com.reallin.smt.service; + +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.constants.BusinessConstants; +import com.reallin.smt.constants.ExceptionConstants; +import com.reallin.smt.datasource.entities.Msg; +import com.reallin.smt.datasource.entities.MsgEx; +import com.reallin.smt.datasource.entities.MsgExample; +import com.reallin.smt.datasource.entities.User; +import com.reallin.smt.datasource.mappers.MsgMapper; +import com.reallin.smt.datasource.mappers.MsgMapperEx; +import com.reallin.smt.exception.BusinessRunTimeException; +import com.reallin.smt.utils.PageUtils; +import com.reallin.smt.utils.StringUtil; +import com.reallin.smt.utils.Tools; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import static com.reallin.smt.utils.Tools.getCenternTime; + +@Service +public class MsgService { + private Logger logger = LoggerFactory.getLogger(MsgService.class); + @Resource + private MsgMapper msgMapper; + + @Resource + private MsgMapperEx msgMapperEx; + + @Resource + private DepotHeadService depotHeadService; + + @Resource + private UserService userService; + + @Resource + private LogService logService; + + public Msg getMsg(long id)throws Exception { + Msg result=null; + try{ + result=msgMapper.selectByPrimaryKey(id); + }catch(Exception e){ + logger.error("异常码[{}],异常提示[{}],异常[{}]", + ExceptionConstants.DATA_READ_FAIL_CODE, ExceptionConstants.DATA_READ_FAIL_MSG,e); + throw new BusinessRunTimeException(ExceptionConstants.DATA_READ_FAIL_CODE, + ExceptionConstants.DATA_READ_FAIL_MSG); + } + return result; + } + + public List getMsg()throws Exception { + MsgExample example = new MsgExample(); + example.createCriteria().andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list=null; + try{ + list=msgMapper.selectByExample(example); + }catch(Exception e){ + logger.error("异常码[{}],异常提示[{}],异常[{}]", + ExceptionConstants.DATA_READ_FAIL_CODE, ExceptionConstants.DATA_READ_FAIL_MSG,e); + throw new BusinessRunTimeException(ExceptionConstants.DATA_READ_FAIL_CODE, + ExceptionConstants.DATA_READ_FAIL_MSG); + } + return list; + } + + public List select(String name)throws Exception { + List list=null; + try{ + User userInfo = userService.getCurrentUser(); + if(!BusinessConstants.DEFAULT_MANAGER.equals(userInfo.getLoginName())) { + PageUtils.startPage(); + list = msgMapperEx.selectByConditionMsg(userInfo.getId(), name); + if (null != list) { + for (MsgEx msgEx : list) { + if (msgEx.getCreateTime() != null) { + msgEx.setCreateTimeStr(getCenternTime(msgEx.getCreateTime())); + } + } + } + } else { + list = new ArrayList<>(); + } + }catch(Exception e){ + logger.error("异常码[{}],异常提示[{}],异常[{}]", + ExceptionConstants.DATA_READ_FAIL_CODE, ExceptionConstants.DATA_READ_FAIL_MSG,e); + throw new BusinessRunTimeException(ExceptionConstants.DATA_READ_FAIL_CODE, + ExceptionConstants.DATA_READ_FAIL_MSG); + } + return list; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int insertMsg(JSONObject obj, HttpServletRequest request)throws Exception { + Msg msg = JSONObject.parseObject(obj.toJSONString(), Msg.class); + int result=0; + try{ + User userInfo = userService.getCurrentUser(); + if(!BusinessConstants.DEFAULT_MANAGER.equals(userInfo.getLoginName())) { + msg.setCreateTime(new Date()); + msg.setStatus("1"); + result=msgMapper.insertSelective(msg); + logService.insertLog("消息", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_ADD).append(msg.getMsgTitle()).toString(), request); + } + }catch(Exception e){ + logger.error("异常码[{}],异常提示[{}],异常[{}]", + ExceptionConstants.DATA_WRITE_FAIL_CODE, ExceptionConstants.DATA_WRITE_FAIL_MSG,e); + throw new BusinessRunTimeException(ExceptionConstants.DATA_WRITE_FAIL_CODE, + ExceptionConstants.DATA_WRITE_FAIL_MSG); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int updateMsg(JSONObject obj, HttpServletRequest request) throws Exception{ + Msg msg = JSONObject.parseObject(obj.toJSONString(), Msg.class); + int result=0; + try{ + result=msgMapper.updateByPrimaryKeySelective(msg); + logService.insertLog("消息", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_EDIT).append(msg.getMsgTitle()).toString(), request); + }catch(Exception e){ + logger.error("异常码[{}],异常提示[{}],异常[{}]", + ExceptionConstants.DATA_WRITE_FAIL_CODE, ExceptionConstants.DATA_WRITE_FAIL_MSG,e); + throw new BusinessRunTimeException(ExceptionConstants.DATA_WRITE_FAIL_CODE, + ExceptionConstants.DATA_WRITE_FAIL_MSG); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int deleteMsg(Long id, HttpServletRequest request)throws Exception { + int result=0; + try{ + result=msgMapper.deleteByPrimaryKey(id); + logService.insertLog("消息", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_DELETE).append(id).toString(), request); + }catch(Exception e){ + logger.error("异常码[{}],异常提示[{}],异常[{}]", + ExceptionConstants.DATA_WRITE_FAIL_CODE, ExceptionConstants.DATA_WRITE_FAIL_MSG,e); + throw new BusinessRunTimeException(ExceptionConstants.DATA_WRITE_FAIL_CODE, + ExceptionConstants.DATA_WRITE_FAIL_MSG); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteMsg(String ids, HttpServletRequest request) throws Exception{ + List idList = StringUtil.strToLongList(ids); + MsgExample example = new MsgExample(); + example.createCriteria().andIdIn(idList); + int result=0; + try{ + result=msgMapper.deleteByExample(example); + logService.insertLog("消息", "批量删除,id集:" + ids, request); + }catch(Exception e){ + logger.error("异常码[{}],异常提示[{}],异常[{}]", + ExceptionConstants.DATA_WRITE_FAIL_CODE, ExceptionConstants.DATA_WRITE_FAIL_MSG,e); + throw new BusinessRunTimeException(ExceptionConstants.DATA_WRITE_FAIL_CODE, + ExceptionConstants.DATA_WRITE_FAIL_MSG); + } + return result; + } + + public int checkIsNameExist(Long id, String name)throws Exception { + MsgExample example = new MsgExample(); + example.createCriteria().andIdNotEqualTo(id).andMsgTitleEqualTo(name).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list=null; + try{ + list= msgMapper.selectByExample(example); + }catch(Exception e){ + logger.error("异常码[{}],异常提示[{}],异常[{}]", + ExceptionConstants.DATA_READ_FAIL_CODE, ExceptionConstants.DATA_READ_FAIL_MSG,e); + throw new BusinessRunTimeException(ExceptionConstants.DATA_READ_FAIL_CODE, + ExceptionConstants.DATA_READ_FAIL_MSG); + } + return list==null?0:list.size(); + } + + /** + * create by: qiankunpingtai + * 逻辑删除角色信息 + * create time: 2019/3/28 15:44 + * @Param: ids + * @return int + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteMsgByIds(String ids) throws Exception{ + logService.insertLog("序列号", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_DELETE).append(ids).toString(), + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); + String [] idArray=ids.split(","); + int result=0; + try{ + result=msgMapperEx.batchDeleteMsgByIds(idArray); + }catch(Exception e){ + logger.error("异常码[{}],异常提示[{}],异常[{}]", + ExceptionConstants.DATA_WRITE_FAIL_CODE, ExceptionConstants.DATA_WRITE_FAIL_MSG,e); + throw new BusinessRunTimeException(ExceptionConstants.DATA_WRITE_FAIL_CODE, + ExceptionConstants.DATA_WRITE_FAIL_MSG); + } + return result; + } + + public List getMsgByStatus(String status)throws Exception { + List resList=new ArrayList<>(); + try{ + User userInfo = userService.getCurrentUser(); + if(!BusinessConstants.DEFAULT_MANAGER.equals(userInfo.getLoginName())) { + MsgExample example = new MsgExample(); + example.createCriteria().andStatusEqualTo(status).andUserIdEqualTo(userInfo.getId()) + .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + example.setOrderByClause("id desc"); + List list = msgMapper.selectByExample(example); + if (null != list) { + for (Msg msg : list) { + if (msg.getCreateTime() != null) { + MsgEx msgEx = new MsgEx(); + msgEx.setId(msg.getId()); + msgEx.setMsgTitle(msg.getMsgTitle()); + msgEx.setMsgContent(msg.getMsgContent()); + msgEx.setStatus(msg.getStatus()); + msgEx.setType(msg.getType()); + msgEx.setCreateTimeStr(Tools.getCenternTime(msg.getCreateTime())); + resList.add(msgEx); + } + } + } + } + }catch(Exception e){ + logger.error("异常码[{}],异常提示[{}],异常[{}]", + ExceptionConstants.DATA_READ_FAIL_CODE, ExceptionConstants.DATA_READ_FAIL_MSG,e); + throw new BusinessRunTimeException(ExceptionConstants.DATA_READ_FAIL_CODE, + ExceptionConstants.DATA_READ_FAIL_MSG); + } + return resList; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public void batchUpdateStatus(String ids, String status) throws Exception{ + List idList = StringUtil.strToLongList(ids); + Msg msg = new Msg(); + msg.setStatus(status); + MsgExample example = new MsgExample(); + example.createCriteria().andIdIn(idList); + try{ + msgMapper.updateByExampleSelective(msg, example); + }catch(Exception e){ + logger.error("异常码[{}],异常提示[{}],异常[{}]", + ExceptionConstants.DATA_WRITE_FAIL_CODE, ExceptionConstants.DATA_WRITE_FAIL_MSG,e); + throw new BusinessRunTimeException(ExceptionConstants.DATA_WRITE_FAIL_CODE, + ExceptionConstants.DATA_WRITE_FAIL_MSG); + } + } + + public Long getMsgCountByStatus(String status)throws Exception { + Long result=null; + try{ + User userInfo=userService.getCurrentUser(); + if(!BusinessConstants.DEFAULT_MANAGER.equals(userInfo.getLoginName())) { + result = msgMapperEx.getMsgCountByStatus(status, userInfo.getId()); + } + }catch(Exception e){ + logger.error("异常码[{}],异常提示[{}],异常[{}]", + ExceptionConstants.DATA_READ_FAIL_CODE, ExceptionConstants.DATA_READ_FAIL_MSG,e); + throw new BusinessRunTimeException(ExceptionConstants.DATA_READ_FAIL_CODE, + ExceptionConstants.DATA_READ_FAIL_MSG); + } + return result; + } + + public Integer getMsgCountByType(String type)throws Exception { + int msgCount = 0; + try{ + User userInfo = userService.getCurrentUser(); + if(!BusinessConstants.DEFAULT_MANAGER.equals(userInfo.getLoginName())) { + MsgExample example = new MsgExample(); + example.createCriteria().andTypeEqualTo(type).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list = msgMapper.selectByExample(example); + msgCount = list.size(); + } + }catch(Exception e){ + logger.error("异常码[{}],异常提示[{}],异常[{}]", + ExceptionConstants.DATA_READ_FAIL_CODE, ExceptionConstants.DATA_READ_FAIL_MSG,e); + throw new BusinessRunTimeException(ExceptionConstants.DATA_READ_FAIL_CODE, + ExceptionConstants.DATA_READ_FAIL_MSG); + } + return msgCount; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public void readAllMsg() throws Exception{ + try{ + User userInfo = userService.getCurrentUser(); + if(!BusinessConstants.DEFAULT_MANAGER.equals(userInfo.getLoginName())) { + Msg msg = new Msg(); + msg.setStatus("2"); + MsgExample example = new MsgExample(); + example.createCriteria(); + msgMapper.updateByExampleSelective(msg, example); + } + }catch(Exception e){ + logger.error("异常码[{}],异常提示[{}],异常[{}]", + ExceptionConstants.DATA_WRITE_FAIL_CODE, ExceptionConstants.DATA_WRITE_FAIL_MSG,e); + throw new BusinessRunTimeException(ExceptionConstants.DATA_WRITE_FAIL_CODE, + ExceptionConstants.DATA_WRITE_FAIL_MSG); + } + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/service/OrgaUserRelService.java b/smtERP-boot/src/main/java/com/reallin/smt/service/OrgaUserRelService.java new file mode 100644 index 0000000..190bc39 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/service/OrgaUserRelService.java @@ -0,0 +1,216 @@ +package com.reallin.smt.service; + +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.constants.BusinessConstants; +import com.reallin.smt.datasource.entities.OrgaUserRel; +import com.reallin.smt.datasource.entities.OrgaUserRelExample; +import com.reallin.smt.datasource.entities.User; +import com.reallin.smt.datasource.mappers.OrgaUserRelMapper; +import com.reallin.smt.datasource.mappers.OrgaUserRelMapperEx; +import com.reallin.smt.exception.JshException; +import com.reallin.smt.utils.StringUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * Description + * + * @Author: cjl + * @Date: 2019/3/11 18:11 + */ +@Service +public class OrgaUserRelService { + private Logger logger = LoggerFactory.getLogger(OrganizationService.class); + + @Resource + private OrgaUserRelMapper orgaUserRelMapper; + @Resource + private OrgaUserRelMapperEx orgaUserRelMapperEx; + @Resource + private UserService userService; + @Resource + private OrganizationService organizationService; + @Resource + private LogService logService; + + public OrgaUserRel getOrgaUserRel(long id) throws Exception{ + return orgaUserRelMapper.selectByPrimaryKey(id); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int insertOrgaUserRel(JSONObject obj, HttpServletRequest request) throws Exception{ + OrgaUserRel orgaUserRel = JSONObject.parseObject(obj.toJSONString(), OrgaUserRel.class); + int result=0; + try{ + result=orgaUserRelMapper.insertSelective(orgaUserRel); + logService.insertLog("用户与部门关系", BusinessConstants.LOG_OPERATION_TYPE_ADD, request); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int updateOrgaUserRel(JSONObject obj, HttpServletRequest request) throws Exception{ + OrgaUserRel orgaUserRel = JSONObject.parseObject(obj.toJSONString(), OrgaUserRel.class); + int result=0; + try{ + result=orgaUserRelMapper.updateByPrimaryKeySelective(orgaUserRel); + logService.insertLog("用户与部门关系", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_EDIT).append(orgaUserRel.getId()).toString(), request); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int deleteOrgaUserRel(Long id, HttpServletRequest request)throws Exception { + int result=0; + try{ + result=orgaUserRelMapper.deleteByPrimaryKey(id); + logService.insertLog("用户与部门关系", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_DELETE).append(id).toString(), request); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteOrgaUserRel(String ids, HttpServletRequest request)throws Exception { + List idList = StringUtil.strToLongList(ids); + OrgaUserRelExample example = new OrgaUserRelExample(); + example.createCriteria().andIdIn(idList); + int result=0; + try{ + result=orgaUserRelMapper.deleteByExample(example); + logService.insertLog("用户与部门关系", "批量删除,id集:" + ids, request); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + /** + * create by: cjl + * description: + * 新增部门用户关联关系,反显id + * create time: 2019/3/12 9:40 + * @Param: orgaUserRel + * @return void + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public OrgaUserRel addOrgaUserRel(OrgaUserRel orgaUserRel) throws Exception{ + Date date = new Date(); + User userInfo=userService.getCurrentUser(); + //创建时间 + if(orgaUserRel.getCreateTime()==null){ + orgaUserRel.setCreateTime(date); + } + //创建人 + if(orgaUserRel.getCreator()==null){ + orgaUserRel.setCreator(userInfo==null?null:userInfo.getId()); + } + //更新时间 + if(orgaUserRel.getUpdateTime()==null){ + orgaUserRel.setUpdateTime(date); + } + //更新人 + if(orgaUserRel.getUpdater()==null){ + orgaUserRel.setUpdater(userInfo==null?null:userInfo.getId()); + } + orgaUserRel.setDeleteFlag(BusinessConstants.DELETE_FLAG_EXISTS); + int result=0; + try{ + result=orgaUserRelMapperEx.addOrgaUserRel(orgaUserRel); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + if(result>0){ + return orgaUserRel; + } + return null; + } + /** + * create by: cjl + * description: + * 更新部门用户关联关系 + * create time: 2019/3/12 9:40 + * @Param: orgaUserRel + * @return void + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public OrgaUserRel updateOrgaUserRel(OrgaUserRel orgaUserRel) throws Exception{ + User userInfo=userService.getCurrentUser(); + //更新时间 + if(orgaUserRel.getUpdateTime()==null){ + orgaUserRel.setUpdateTime(new Date()); + } + //更新人 + if(orgaUserRel.getUpdater()==null){ + orgaUserRel.setUpdater(userInfo==null?null:userInfo.getId()); + } + int result=0; + try{ + result=orgaUserRelMapperEx.updateOrgaUserRel(orgaUserRel); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + if(result>0){ + return orgaUserRel; + } + return null; + } + + /** + * 根据用户id获取用户id列表 + * @param userId + * @return + * @throws Exception + */ + public String getUserIdListByUserId(Long userId) throws Exception{ + String users = ""; + OrgaUserRelExample example = new OrgaUserRelExample(); + example.createCriteria().andUserIdEqualTo(userId); + List list = orgaUserRelMapper.selectByExample(example); + if(list!=null && list.size()>0) { + OrgaUserRel our = list.get(0); + List userIdList = getUserIdListByOrgId(our.getOrgaId()); + for(Long u: userIdList){ + users = users + u + ","; + } + if(users.length()>0){ + users = users.substring(0,users.length()-1); + } + } + return users; + } + + /** + * 根据组织id获取所属的用户id列表(包含组织的递归) + * @param orgId + * @return + */ + public List getUserIdListByOrgId(Long orgId) { + List orgIdList = organizationService.getOrgIdByParentId(orgId); + List userIdList = new ArrayList(); + OrgaUserRelExample example = new OrgaUserRelExample(); + if(orgIdList!=null && orgIdList.size()>0) { + example.createCriteria().andOrgaIdIn(orgIdList).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + } else { + example.createCriteria().andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + } + List list = orgaUserRelMapper.selectByExample(example); + if(list!=null && list.size()>0) { + for(OrgaUserRel our: list) { + userIdList.add(our.getUserId()); + } + } + return userIdList; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/service/OrganizationService.java b/smtERP-boot/src/main/java/com/reallin/smt/service/OrganizationService.java new file mode 100644 index 0000000..1cf326f --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/service/OrganizationService.java @@ -0,0 +1,258 @@ +package com.reallin.smt.service; + +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.constants.BusinessConstants; +import com.reallin.smt.constants.ExceptionConstants; +import com.reallin.smt.datasource.entities.Organization; +import com.reallin.smt.datasource.entities.OrganizationExample; +import com.reallin.smt.datasource.entities.User; +import com.reallin.smt.datasource.mappers.OrganizationMapper; +import com.reallin.smt.datasource.mappers.OrganizationMapperEx; +import com.reallin.smt.datasource.vo.TreeNode; +import com.reallin.smt.exception.BusinessRunTimeException; +import com.reallin.smt.exception.JshException; +import com.reallin.smt.utils.StringUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @Author: jsh + */ +@Service +public class OrganizationService { + private Logger logger = LoggerFactory.getLogger(OrganizationService.class); + + @Resource + private OrganizationMapper organizationMapper; + @Resource + private OrganizationMapperEx organizationMapperEx; + @Resource + private UserService userService; + @Resource + private LogService logService; + + public Organization getOrganization(long id) throws Exception { + return organizationMapper.selectByPrimaryKey(id); + } + + public List getOrganizationListByIds(String ids)throws Exception { + List idList = StringUtil.strToLongList(ids); + List list = new ArrayList<>(); + try{ + OrganizationExample example = new OrganizationExample(); + example.createCriteria().andIdIn(idList); + list = organizationMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int insertOrganization(JSONObject obj, HttpServletRequest request)throws Exception { + Organization organization = JSONObject.parseObject(obj.toJSONString(), Organization.class); + organization.setCreateTime(new Date()); + organization.setUpdateTime(new Date()); + int result=0; + try{ + result=organizationMapper.insertSelective(organization); + logService.insertLog("部门", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_ADD).append(organization.getOrgAbr()).toString(),request); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int updateOrganization(JSONObject obj, HttpServletRequest request)throws Exception { + Organization organization = JSONObject.parseObject(obj.toJSONString(), Organization.class); + organization.setUpdateTime(new Date()); + int result=0; + try{ + result=organizationMapperEx.editOrganization(organization); + logService.insertLog("部门", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_EDIT).append(organization.getOrgAbr()).toString(), request); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int deleteOrganization(Long id, HttpServletRequest request)throws Exception { + return batchDeleteOrganizationByIds(id.toString()); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteOrganization(String ids, HttpServletRequest request)throws Exception { + return batchDeleteOrganizationByIds(ids); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteOrganizationByIds(String ids) throws Exception{ + StringBuffer sb = new StringBuffer(); + sb.append(BusinessConstants.LOG_OPERATION_TYPE_DELETE); + List list = getOrganizationListByIds(ids); + for(Organization organization: list){ + sb.append("[").append(organization.getOrgAbr()).append("]"); + } + logService.insertLog("部门", sb.toString(), + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); + User userInfo=userService.getCurrentUser(); + String [] idArray=ids.split(","); + int result=0; + List organList = organizationMapperEx.getOrganizationByParentIds(idArray); + if(organList!=null && organList.size()>0) { + //如果存在子部门则不能删除 + logger.error("异常码[{}],异常提示[{}]", + ExceptionConstants.ORGANIZATION_CHILD_NOT_ALLOWED_DELETE_CODE,ExceptionConstants.ORGANIZATION_CHILD_NOT_ALLOWED_DELETE_MSG); + throw new BusinessRunTimeException(ExceptionConstants.ORGANIZATION_CHILD_NOT_ALLOWED_DELETE_CODE, + ExceptionConstants.ORGANIZATION_CHILD_NOT_ALLOWED_DELETE_MSG); + } else { + result=organizationMapperEx.batchDeleteOrganizationByIds( + new Date(),userInfo==null?null:userInfo.getId(),idArray); + } + return result; + } + + public int checkIsNameExist(Long id, String name)throws Exception { + OrganizationExample example = new OrganizationExample(); + example.createCriteria().andIdNotEqualTo(id).andOrgAbrEqualTo(name).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list=null; + try{ + list= organizationMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list==null?0:list.size(); + } + + public List getOrganizationTree(Long id)throws Exception { + List list=null; + try{ + list=organizationMapperEx.getNodeTree(id); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public List findById(Long id) throws Exception{ + OrganizationExample example = new OrganizationExample(); + example.createCriteria().andIdEqualTo(id); + List list=null; + try{ + list=organizationMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public List findByParentId(Long parentId)throws Exception { + List list=null; + if(parentId!=null){ + OrganizationExample example = new OrganizationExample(); + example.createCriteria().andIdEqualTo(parentId).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + try{ + list=organizationMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + } + return list; + } + + public List findByOrgNo(String orgNo)throws Exception { + OrganizationExample example = new OrganizationExample(); + example.createCriteria().andOrgNoEqualTo(orgNo).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list=null; + try{ + list=organizationMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + /** + * create by: cjl + * description: + * 检查部门编号是否已经存在 + * create time: 2019/3/7 10:01 + * @Param: orgNo + * @return void + */ + public void checkOrgNoIsExists(String orgNo,Long id)throws Exception { + List orgList=findByOrgNo(orgNo); + if(orgList!=null&&orgList.size()>0){ + if(orgList.size()>1){ + logger.error("异常码[{}],异常提示[{}],参数,orgNo[{}]", + ExceptionConstants.ORGANIZATION_NO_ALREADY_EXISTS_CODE,ExceptionConstants.ORGANIZATION_NO_ALREADY_EXISTS_MSG,orgNo); + //获取的数据条数大于1,部门编号已存在 + throw new BusinessRunTimeException(ExceptionConstants.ORGANIZATION_NO_ALREADY_EXISTS_CODE, + ExceptionConstants.ORGANIZATION_NO_ALREADY_EXISTS_MSG); + } + if(id!=null){ + if(!orgList.get(0).getId().equals(id)){ + //数据条数等于1,但是和编辑的数据的id不相同 + logger.error("异常码[{}],异常提示[{}],参数,orgNo[{}],id[{}]", + ExceptionConstants.ORGANIZATION_NO_ALREADY_EXISTS_CODE,ExceptionConstants.ORGANIZATION_NO_ALREADY_EXISTS_MSG,orgNo,id); + throw new BusinessRunTimeException(ExceptionConstants.ORGANIZATION_NO_ALREADY_EXISTS_CODE, + ExceptionConstants.ORGANIZATION_NO_ALREADY_EXISTS_MSG); + } + }else{ + logger.error("异常码[{}],异常提示[{}],参数,orgNo[{}]", + ExceptionConstants.ORGANIZATION_NO_ALREADY_EXISTS_CODE,ExceptionConstants.ORGANIZATION_NO_ALREADY_EXISTS_MSG,orgNo); + //数据条数等于1,但此时是新增 + throw new BusinessRunTimeException(ExceptionConstants.ORGANIZATION_NO_ALREADY_EXISTS_CODE, + ExceptionConstants.ORGANIZATION_NO_ALREADY_EXISTS_MSG); + } + } + + } + + /** + * 根据父级id递归获取子集组织id + * @return + */ + public List getOrgIdByParentId(Long orgId) { + List idList = new ArrayList<>(); + if(orgId!=null) { + OrganizationExample example = new OrganizationExample(); + example.createCriteria().andIdEqualTo(orgId).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List orgList = organizationMapper.selectByExample(example); + if(orgList!=null && !orgList.isEmpty()) { + idList.add(orgId); + getOrgIdByParentNo(idList, orgList.get(0).getId()); + } + } + return idList; + } + + /** + * 根据组织编号递归获取下级编号 + * @param id + * @return + */ + public void getOrgIdByParentNo(List idList,Long id) { + OrganizationExample example = new OrganizationExample(); + example.createCriteria().andParentIdEqualTo(id).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List orgList = organizationMapper.selectByExample(example); + if(orgList!=null && orgList.size()>0) { + for(Organization o: orgList) { + idList.add(o.getId()); + getOrgIdByParentNo(idList, o.getId()); + } + } + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/service/PackBomService.java b/smtERP-boot/src/main/java/com/reallin/smt/service/PackBomService.java new file mode 100644 index 0000000..dd7d3a5 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/service/PackBomService.java @@ -0,0 +1,306 @@ +package com.reallin.smt.service; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.constants.BusinessConstants; +import com.reallin.smt.constants.ExceptionConstants; +import com.reallin.smt.datasource.entities.MaterialVo4Unit; +import com.reallin.smt.datasource.entities.PackBom; +import com.reallin.smt.datasource.entities.PackBomItem; +import com.reallin.smt.datasource.entities.User; +import com.reallin.smt.datasource.mappers.PackBomMapper; +import com.reallin.smt.datasource.mappers.ProductionOrderMapper; +import com.reallin.smt.datasource.vo.PackBomVo4List; +import com.reallin.smt.exception.BusinessRunTimeException; +import com.reallin.smt.exception.JshException; +import com.reallin.smt.utils.PageUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * 生产方案Service + */ +@Service +public class PackBomService { + private Logger logger = LoggerFactory.getLogger(PackBomService.class); + + @Resource + private PackBomMapper packBomMapper; + + @Resource + private ProductionOrderMapper productionOrderMapper; + + @Resource + private UserService userService; + + @Resource + private LogService logService; + + @Resource + private MaterialService materialService; + + public PackBom getPackBom(Long id) throws Exception { + PackBom result = null; + try { + result = packBomMapper.selectByPrimaryKey(id); + } catch (Exception e) { + JshException.readFail(logger, e); + } + return result; + } + + public List select(String bomNumber, String bomName, + String outputMaterialParam, Boolean enabled) throws Exception { + List list = null; + try { + PageUtils.startPage(); + list = packBomMapper.selectList(bomNumber, bomName, outputMaterialParam, enabled); + } catch (Exception e) { + JshException.readFail(logger, e); + } + return list; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int addPackBom(JSONObject obj, HttpServletRequest request) throws Exception { + PackBom packBom = JSONObject.parseObject(obj.toJSONString(), PackBom.class); + int result = 0; + try { + //校验编号是否重复 + if (checkNumberExist(0L, packBom.getBomNumber()) > 0) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, + "生产方案编号已存在"); + } + normalizeProductionBom(packBom); + checkPackBom(packBom); + User userInfo = userService.getCurrentUser(); + packBom.setCreator(userInfo == null ? null : userInfo.getId()); + packBom.setCreateTime(new Date()); + if (packBom.getEnabled() == null) { + packBom.setEnabled(true); + } + result = packBomMapper.insertSelective(packBom); + //保存组成物料明细 + saveItems(packBom.getId(), obj, request); + logService.insertLog("生产方案", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_ADD).append(packBom.getBomNumber()).toString(), request); + } catch (BusinessRunTimeException e) { + throw e; + } catch (Exception e) { + JshException.writeFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int updatePackBom(JSONObject obj, HttpServletRequest request) throws Exception { + PackBom packBom = JSONObject.parseObject(obj.toJSONString(), PackBom.class); + int result = 0; + try { + if (checkNumberExist(packBom.getId(), packBom.getBomNumber()) > 0) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, + "生产方案编号已存在"); + } + normalizeProductionBom(packBom); + checkPackBom(packBom); + result = packBomMapper.updateByPrimaryKeySelective(packBom); + //重新保存组成物料明细 + packBomMapper.batchDeleteItemsByBomId(packBom.getId()); + saveItems(packBom.getId(), obj, request); + logService.insertLog("生产方案", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_EDIT).append(packBom.getBomNumber()).toString(), request); + } catch (BusinessRunTimeException e) { + throw e; + } catch (Exception e) { + JshException.writeFail(logger, e); + } + return result; + } + + /** + * 校验必填项 + */ + private void checkPackBom(PackBom packBom) { + if (packBom.getOutputMaterialId() == null) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "请选择生产成品"); + } + } + + /** + * 新生产模型只有一个成品。旧 product_* 字段保留并同步成相同值,兼容历史表结构。 + */ + private void normalizeProductionBom(PackBom packBom) { + packBom.setProductMaterialId(packBom.getOutputMaterialId()); + packBom.setProductMaterialExtendId(packBom.getOutputMaterialExtendId()); + packBom.setProductSku(packBom.getOutputSku()); + packBom.setOutputNumber(BigDecimal.ONE); + } + + /** + * 保存组成物料明细 + */ + private void saveItems(Long bomId, JSONObject obj, HttpServletRequest request) throws Exception { + JSONArray rows = obj.getJSONArray("rows"); + if (rows == null || rows.size() == 0) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "请至少添加一种组成物料"); + } + List itemList = new ArrayList<>(); + for (int i = 0; i < rows.size(); i++) { + JSONObject itemObj = rows.getJSONObject(i); + // 可编辑表格会给新行生成仅供前端使用的临时 id,可能超过 Java Long 范围。 + // 明细保存时统一由数据库生成主键,不解析也不复用前端临时 id。 + itemObj.remove("id"); + PackBomItem item = JSONObject.parseObject(itemObj.toJSONString(), PackBomItem.class); + if (item.getMaterialId() == null) { + String barCode = itemObj.getString("barCode"); + List materialList = materialService.getMaterialByBarCode(barCode); + if (materialList == null || materialList.size() == 0) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, + "第" + (i + 1) + "行组成物料条码不存在:" + barCode); + } + MaterialVo4Unit material = materialList.get(0); + item.setMaterialId(material.getId()); + item.setMaterialExtendId(material.getMeId()); + item.setMaterialSku(material.getSku()); + if (item.getUnit() == null || "".equals(item.getUnit())) { + item.setUnit(material.getCommodityUnit()); + } + } + if (item.getQuantity() == null || item.getQuantity().compareTo(BigDecimal.ZERO) <= 0) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, + "第" + (i + 1) + "行组成比例必须大于0"); + } + if (item.getMaterialId().equals(obj.getLong("outputMaterialId"))) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, + "第" + (i + 1) + "行组成物料不能与生产成品相同"); + } + item.setBomId(bomId); + item.setDeleteFlag(BusinessConstants.DELETE_FLAG_EXISTS); + itemList.add(item); + } + if (itemList.size() > 0) { + packBomMapper.batchInsertItems(itemList); + } + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int deletePackBom(Long id, HttpServletRequest request) throws Exception { + return batchDeletePackBomByIds(id.toString()); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeletePackBom(String ids, HttpServletRequest request) throws Exception { + return batchDeletePackBomByIds(ids); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeletePackBomByIds(String ids) throws Exception { + int result = 0; + try { + String[] idArray = ids.split(","); + //校验是否被工单引用 + if (productionOrderMapper.checkBomReferenced(idArray) > 0) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, + "存在工单引用了该生产方案,无法删除"); + } + User userInfo = userService.getCurrentUser(); + result = packBomMapper.batchDeleteByIds(new Date(), userInfo == null ? null : userInfo.getId(), idArray); + } catch (Exception e) { + JshException.writeFail(logger, e); + } + return result; + } + + public int checkNumberExist(Long id, String bomNumber) throws Exception { + return packBomMapper.checkNumberExist(id, bomNumber); + } + + /** + * 获取生产方案详情(主表+组成物料明细) + */ + public JSONObject getPackBomDetail(Long id) throws Exception { + JSONObject result = new JSONObject(); + PackBom packBom = packBomMapper.selectByPrimaryKey(id); + //回显生产成品条码 + JSONObject bomObj = JSONObject.parseObject(JSONObject.toJSONString(packBom)); + MaterialVo4Unit output = getMaterialInfo(packBom == null ? null : packBom.getOutputMaterialExtendId()); + bomObj.put("outputBarCode", output == null ? "" : output.getmBarCode()); + result.put("bom", bomObj); + List itemList = packBomMapper.selectItemsByBomId(id); + JSONArray rows = new JSONArray(); + if (itemList != null) { + for (PackBomItem item : itemList) { + JSONObject itemObj = JSONObject.parseObject(JSONObject.toJSONString(item)); + MaterialVo4Unit info = getMaterialInfo(item.getMaterialExtendId()); + itemObj.put("barCode", info == null ? "" : info.getmBarCode()); + itemObj.put("name", info == null ? "" : info.getName()); + rows.add(itemObj); + } + } + result.put("rows", rows); + return result; + } + + /** + * 根据商品扩展id查询商品信息 + */ + private MaterialVo4Unit getMaterialInfo(Long materialExtendId) { + List list = materialService.getMaterialByMeId(materialExtendId); + if (list != null && list.size() > 0) { + return list.get(0); + } + return null; + } + + /** + * 根据生产成品查询启用的生产方案列表 + */ + public List getBomListByOutput(Long outputMaterialId) throws Exception { + List result = new ArrayList<>(); + try { + List list = packBomMapper.selectEnabledByOutputMaterialId(outputMaterialId); + if (list != null) { + for (PackBom bom : list) { + JSONObject bomObj = JSONObject.parseObject(JSONObject.toJSONString(bom)); + MaterialVo4Unit output = getMaterialInfo(bom.getOutputMaterialExtendId()); + bomObj.put("outputMaterialName", output == null ? "" : output.getName()); + bomObj.put("outputBarCode", output == null ? "" : output.getmBarCode()); + result.add(bomObj); + } + } + } catch (Exception e) { + JshException.readFail(logger, e); + } + return result; + } + + /** + * 批量设置启用状态 + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchSetStatus(Boolean status, String ids) throws Exception { + int result = 0; + try { + String[] idArray = ids.split(","); + for (String id : idArray) { + PackBom packBom = new PackBom(); + packBom.setId(Long.parseLong(id)); + packBom.setEnabled(status); + packBomMapper.updateByPrimaryKeySelective(packBom); + result++; + } + } catch (Exception e) { + JshException.writeFail(logger, e); + } + return result; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/service/PersonService.java b/smtERP-boot/src/main/java/com/reallin/smt/service/PersonService.java new file mode 100644 index 0000000..bcda07e --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/service/PersonService.java @@ -0,0 +1,245 @@ +package com.reallin.smt.service; + +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.constants.BusinessConstants; +import com.reallin.smt.constants.ExceptionConstants; +import com.reallin.smt.datasource.entities.AccountHead; +import com.reallin.smt.datasource.entities.DepotHead; +import com.reallin.smt.datasource.entities.Person; +import com.reallin.smt.datasource.entities.PersonExample; +import com.reallin.smt.datasource.mappers.AccountHeadMapperEx; +import com.reallin.smt.datasource.mappers.DepotHeadMapperEx; +import com.reallin.smt.datasource.mappers.PersonMapper; +import com.reallin.smt.datasource.mappers.PersonMapperEx; +import com.reallin.smt.exception.BusinessRunTimeException; +import com.reallin.smt.exception.JshException; +import com.reallin.smt.utils.PageUtils; +import com.reallin.smt.utils.StringUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Service +public class PersonService { + private Logger logger = LoggerFactory.getLogger(PersonService.class); + + @Resource + private PersonMapper personMapper; + + @Resource + private PersonMapperEx personMapperEx; + @Resource + private UserService userService; + @Resource + private LogService logService; + @Resource + private AccountHeadMapperEx accountHeadMapperEx; + @Resource + private DepotHeadMapperEx depotHeadMapperEx; + + public Person getPerson(long id)throws Exception { + Person result=null; + try{ + result=personMapper.selectByPrimaryKey(id); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return result; + } + + public List getPersonListByIds(String ids)throws Exception { + List idList = StringUtil.strToLongList(ids); + List list = new ArrayList<>(); + try{ + PersonExample example = new PersonExample(); + example.createCriteria().andIdIn(idList); + list = personMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public List getPerson()throws Exception { + PersonExample example = new PersonExample(); + example.createCriteria().andEnabledEqualTo(true).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list=null; + try{ + list=personMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public List select(String name, String type)throws Exception { + List list=null; + try{ + PageUtils.startPage(); + list=personMapperEx.selectByConditionPerson(name, type); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int insertPerson(JSONObject obj, HttpServletRequest request)throws Exception { + Person person = JSONObject.parseObject(obj.toJSONString(), Person.class); + int result=0; + try{ + person.setEnabled(true); + result=personMapper.insertSelective(person); + logService.insertLog("经手人", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_ADD).append(person.getName()).toString(), request); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int updatePerson(JSONObject obj, HttpServletRequest request)throws Exception { + Person person = JSONObject.parseObject(obj.toJSONString(), Person.class); + int result=0; + try{ + result=personMapper.updateByPrimaryKeySelective(person); + logService.insertLog("经手人", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_EDIT).append(person.getName()).toString(), request); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int deletePerson(Long id, HttpServletRequest request)throws Exception { + return batchDeletePersonByIds(id.toString()); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeletePerson(String ids, HttpServletRequest request) throws Exception{ + return batchDeletePersonByIds(ids); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeletePersonByIds(String ids)throws Exception { + int result =0; + String [] idArray=ids.split(","); + //校验财务主表 tbl_accounthead + List accountHeadList =null; + try{ + accountHeadList=accountHeadMapperEx.getAccountHeadListByHandsPersonIds(idArray); + }catch(Exception e){ + JshException.readFail(logger, e); + } + if(accountHeadList!=null&&accountHeadList.size()>0){ + logger.error("异常码[{}],异常提示[{}],参数,HandsPersonIds[{}]", + ExceptionConstants.DELETE_FORCE_CONFIRM_CODE,ExceptionConstants.DELETE_FORCE_CONFIRM_MSG,ids); + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, + ExceptionConstants.DELETE_FORCE_CONFIRM_MSG); + } + //校验单据主表 tbl_depot_head + List depotHeadList =null; + try{ + depotHeadList=depotHeadMapperEx.getDepotHeadListByCreator(idArray); + }catch(Exception e){ + JshException.readFail(logger, e); + } + if(depotHeadList!=null&&depotHeadList.size()>0){ + logger.error("异常码[{}],异常提示[{}],参数,HandsPersonIds[{}]", + ExceptionConstants.DELETE_FORCE_CONFIRM_CODE,ExceptionConstants.DELETE_FORCE_CONFIRM_MSG,ids); + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, + ExceptionConstants.DELETE_FORCE_CONFIRM_MSG); + } + //记录日志 + StringBuffer sb = new StringBuffer(); + sb.append(BusinessConstants.LOG_OPERATION_TYPE_DELETE); + List list = getPersonListByIds(ids); + for(Person person: list){ + sb.append("[").append(person.getName()).append("]"); + } + logService.insertLog("经手人", sb.toString(), + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); + //删除经手人 + try{ + result=personMapperEx.batchDeletePersonByIds(idArray); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + public int checkIsNameExist(Long id, String name) throws Exception{ + PersonExample example = new PersonExample(); + example.createCriteria().andIdNotEqualTo(id).andNameEqualTo(name).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list =null; + try{ + list=personMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list==null?0:list.size(); + } + + public Map getPersonMap() throws Exception { + List personList = getPerson(); + Map personMap = new HashMap<>(); + for(Person person : personList){ + personMap.put(person.getId(), person.getName()); + } + return personMap; + } + + public String getPersonByMapAndIds(Map personMap, String personIds)throws Exception { + List ids = StringUtil.strToLongList(personIds); + StringBuffer sb = new StringBuffer(); + for(Long id: ids){ + sb.append(personMap.get(id) + " "); + } + return sb.toString(); + } + + public List getPersonByType(String type)throws Exception { + PersonExample example = new PersonExample(); + example.createCriteria().andTypeEqualTo(type).andEnabledEqualTo(true) + .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + example.setOrderByClause("sort asc, id desc"); + List list =null; + try{ + list=personMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchSetStatus(Boolean status, String ids)throws Exception { + logService.insertLog("经手人", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_ENABLED).toString(), + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); + List personIds = StringUtil.strToLongList(ids); + Person person = new Person(); + person.setEnabled(status); + PersonExample example = new PersonExample(); + example.createCriteria().andIdIn(personIds); + int result=0; + try{ + result = personMapper.updateByExampleSelective(person, example); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/service/PlatformConfigService.java b/smtERP-boot/src/main/java/com/reallin/smt/service/PlatformConfigService.java new file mode 100644 index 0000000..4a96686 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/service/PlatformConfigService.java @@ -0,0 +1,258 @@ +package com.reallin.smt.service; + +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.constants.BusinessConstants; +import com.reallin.smt.datasource.entities.PlatformConfig; +import com.reallin.smt.datasource.entities.PlatformConfigExample; +import com.reallin.smt.datasource.mappers.PlatformConfigMapper; +import com.reallin.smt.datasource.mappers.PlatformConfigMapperEx; +import com.reallin.smt.exception.JshException; +import com.reallin.smt.utils.HttpClient; +import com.reallin.smt.utils.PageUtils; +import com.reallin.smt.utils.StringUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.mail.*; +import javax.mail.internet.*; +import java.util.List; +import java.util.Properties; + +@Service +public class PlatformConfigService { + private Logger logger = LoggerFactory.getLogger(PlatformConfigService.class); + + @Resource + private UserService userService; + + @Resource + private RedisService redisService; + + @Resource + private PlatformConfigMapper platformConfigMapper; + + @Resource + private PlatformConfigMapperEx platformConfigMapperEx; + + public PlatformConfig getPlatformConfig(long id)throws Exception { + PlatformConfig result=null; + try{ + if(BusinessConstants.DEFAULT_MANAGER.equals(userService.getCurrentUser().getLoginName())) { + result = platformConfigMapper.selectByPrimaryKey(id); + } + }catch(Exception e){ + JshException.readFail(logger, e); + } + return result; + } + + public List getPlatformConfig()throws Exception { + PlatformConfigExample example = new PlatformConfigExample(); + example.createCriteria(); + List list=null; + try{ + if(BusinessConstants.DEFAULT_MANAGER.equals(userService.getCurrentUser().getLoginName())) { + list = platformConfigMapper.selectByExample(example); + } + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public List select(String platformKey)throws Exception { + List list=null; + try{ + if(BusinessConstants.DEFAULT_MANAGER.equals(userService.getCurrentUser().getLoginName())) { + PageUtils.startPage(); + list = platformConfigMapperEx.selectByConditionPlatformConfig(platformKey); + } + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int insertPlatformConfig(JSONObject obj, HttpServletRequest request) throws Exception{ + PlatformConfig platformConfig = JSONObject.parseObject(obj.toJSONString(), PlatformConfig.class); + int result=0; + try{ + if(BusinessConstants.DEFAULT_MANAGER.equals(userService.getCurrentUser().getLoginName())) { + result = platformConfigMapper.insertSelective(platformConfig); + } + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int updatePlatformConfig(JSONObject obj, HttpServletRequest request) throws Exception{ + PlatformConfig platformConfig = JSONObject.parseObject(obj.toJSONString(), PlatformConfig.class); + int result=0; + try{ + if(BusinessConstants.DEFAULT_MANAGER.equals(userService.getCurrentUser().getLoginName())) { + result = platformConfigMapper.updateByPrimaryKeySelective(platformConfig); + } + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int deletePlatformConfig(Long id, HttpServletRequest request)throws Exception { + int result=0; + try{ + if(BusinessConstants.DEFAULT_MANAGER.equals(userService.getCurrentUser().getLoginName())) { + result = platformConfigMapper.deleteByPrimaryKey(id); + } + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeletePlatformConfig(String ids, HttpServletRequest request)throws Exception { + List idList = StringUtil.strToLongList(ids); + PlatformConfigExample example = new PlatformConfigExample(); + example.createCriteria().andIdIn(idList); + int result=0; + try{ + if(BusinessConstants.DEFAULT_MANAGER.equals(userService.getCurrentUser().getLoginName())) { + result = platformConfigMapper.deleteByExample(example); + } + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + public int updatePlatformConfigByKey(String platformKey, String platformValue)throws Exception { + int result=0; + try{ + if(BusinessConstants.DEFAULT_MANAGER.equals(userService.getCurrentUser().getLoginName())) { + PlatformConfig platformConfig = new PlatformConfig(); + platformConfig.setPlatformValue(platformValue); + PlatformConfigExample example = new PlatformConfigExample(); + example.createCriteria().andPlatformKeyEqualTo(platformKey); + result = platformConfigMapper.updateByExampleSelective(platformConfig, example); + } + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + public PlatformConfig getInfoByKey(String platformKey)throws Exception { + PlatformConfig platformConfig = new PlatformConfig(); + try{ + if(platformKey.contains("aliOss") || platformKey.contains("weixin")) { + platformConfig = null; + } else { + PlatformConfigExample example = new PlatformConfigExample(); + example.createCriteria().andPlatformKeyEqualTo(platformKey); + List list=platformConfigMapper.selectByExample(example); + if(list!=null && list.size()>0){ + platformConfig = list.get(0); + } + } + }catch(Exception e){ + JshException.readFail(logger, e); + } + return platformConfig; + } + + /** + * 根据key查询平台信息-内部专用方法 + * @param platformKey + * @return + * @throws Exception + */ + public PlatformConfig getPlatformConfigByKey(String platformKey)throws Exception { + PlatformConfig platformConfig = new PlatformConfig(); + try{ + PlatformConfigExample example = new PlatformConfigExample(); + example.createCriteria().andPlatformKeyEqualTo(platformKey); + List list=platformConfigMapper.selectByExample(example); + if(list!=null && list.size()>0){ + platformConfig = list.get(0); + } + }catch(Exception e){ + JshException.readFail(logger, e); + } + return platformConfig; + } + + /** + * 获取微信token信息 + * @return + * @throws Exception + */ + public String getAccessToken() throws Exception { + String accessToken = ""; + if(redisService.getCacheObject("weixinToken")==null) { + //1-获取token + String weixinToken = getPlatformConfigByKey("weixinUrl").getPlatformValue() + BusinessConstants.WEIXIN_TOKEN; + String weixinAppid = getPlatformConfigByKey("weixinAppid").getPlatformValue(); + String weixinSecret = getPlatformConfigByKey("weixinSecret").getPlatformValue(); + String url = weixinToken + "?grant_type=client_credential&appid=" + weixinAppid + "&secret=" + weixinSecret; + JSONObject jsonObject = HttpClient.httpGet(url); + logger.info("获取到微信token信息:{}", jsonObject); + if (jsonObject != null) { + accessToken = jsonObject.getString("access_token"); + Long expiresIn = jsonObject.getLong("expires_in") - 10; + if (StringUtil.isNotEmpty(accessToken)) { + //存redis + redisService.storageKeyWithTime("weixinToken", accessToken, expiresIn); + } + } + } else { + accessToken = redisService.getCacheObject("weixinToken"); + } + return accessToken; + } + + /** + * 发送邮件(该方法将在一个单独的线程中执行) + * @return + * @throws Exception + */ + @Async + public void sendEmail(String emailFrom, String emailAuthCode, String emailSmtpHost, String toEmail, String emailSubject, String emailBody) { + // 配置邮件服务器属性 + Properties properties = new Properties(); + properties.put("mail.smtp.host", emailSmtpHost); // 网易邮箱SMTP服务器 + properties.put("mail.smtp.port", "465"); // SSL端口 + properties.put("mail.smtp.auth", "true"); // 需要认证 + properties.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); // 使用SSL + properties.put("mail.smtp.socketFactory.port", "465"); // SSL端口 + try { + // 创建会话 + Session session = Session.getInstance(properties, new Authenticator() { + @Override + protected PasswordAuthentication getPasswordAuthentication() { + return new PasswordAuthentication(emailFrom, emailAuthCode); + } + }); + // 创建邮件 + Message message = new MimeMessage(session); + message.setFrom(new InternetAddress(emailFrom)); + message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(toEmail)); + message.setSubject(emailSubject); + message.setText(emailBody); + // 发送邮件 + Transport.send(message); + logger.info("邮件发送成功!"); + } catch (Exception e) { + logger.error("邮件发送失败: " + e.getMessage()); + } + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/service/ProductionOrderService.java b/smtERP-boot/src/main/java/com/reallin/smt/service/ProductionOrderService.java new file mode 100644 index 0000000..1cfe9b6 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/service/ProductionOrderService.java @@ -0,0 +1,451 @@ +package com.reallin.smt.service; + +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.constants.BusinessConstants; +import com.reallin.smt.constants.ExceptionConstants; +import com.reallin.smt.datasource.entities.DepotHead; +import com.reallin.smt.datasource.entities.DepotItem; +import com.reallin.smt.datasource.entities.MaterialVo4Unit; +import com.reallin.smt.datasource.entities.PackBom; +import com.reallin.smt.datasource.entities.ProductionOrder; +import com.reallin.smt.datasource.entities.ProductionOrderLog; +import com.reallin.smt.datasource.entities.User; +import com.reallin.smt.datasource.mappers.PackBomMapper; +import com.reallin.smt.datasource.mappers.ProductionOrderMapper; +import com.reallin.smt.datasource.vo.DepotHeadVo4List; +import com.reallin.smt.datasource.vo.ProductionOrderVo4List; +import com.reallin.smt.exception.BusinessRunTimeException; +import com.reallin.smt.exception.JshException; +import com.reallin.smt.utils.PageUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.math.BigDecimal; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * 生产工单Service + */ +@Service +public class ProductionOrderService { + private Logger logger = LoggerFactory.getLogger(ProductionOrderService.class); + + @Resource + private ProductionOrderMapper productionOrderMapper; + + @Resource + private PackBomMapper packBomMapper; + + @Resource + private UserService userService; + + @Resource + private LogService logService; + + @Resource + private DepotHeadService depotHeadService; + + @Resource + private DepotItemService depotItemService; + + @Resource + private MaterialService materialService; + + public ProductionOrder getProductionOrder(Long id) throws Exception { + ProductionOrder result = null; + try { + result = productionOrderMapper.selectByPrimaryKey(id); + } catch (BusinessRunTimeException e) { + throw e; + } catch (Exception e) { + JshException.readFail(logger, e); + } + return result; + } + + public List select(String orderNumber, String sourceNumber, String status, + String priority, String productMaterialParam, + String beginTime, String endTime) throws Exception { + List list = null; + try { + PageUtils.startPage(); + list = productionOrderMapper.selectList(orderNumber, sourceNumber, status, priority, + productMaterialParam, beginTime, endTime); + } catch (BusinessRunTimeException e) { + throw e; + } catch (Exception e) { + JshException.readFail(logger, e); + } + return list; + } + + /** + * 创建工单(手工备货/销售订单转工单) + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int createOrder(JSONObject obj, HttpServletRequest request) throws Exception { + ProductionOrder order = JSONObject.parseObject(obj.toJSONString(), ProductionOrder.class); + int result = 0; + try { + if (order.getOrderNumber() == null || "".equals(order.getOrderNumber())) { + order.setOrderNumber(generateOrderNumber()); + } + if (checkNumberExist(null, order.getOrderNumber()) > 0) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "工单编号已存在"); + } + normalizeProductionOrder(order); + checkOrder(order); + //来源销售订单时,回填来源单据id + if (BusinessConstants.SUB_TYPE_SALES_ORDER.equals(order.getSourceType())) { + List headList = depotHeadService.getDetailByNumber(order.getSourceNumber(), request); + if (headList == null || headList.size() == 0) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "销售订单不存在"); + } + //校验是否已转过工单 + List existList = productionOrderMapper.selectBySourceNumber(order.getSourceNumber()); + if (existList != null && existList.size() > 0) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "该销售订单已生成工单,不能重复生成"); + } + order.setSourceId(headList.get(0).getId()); + } + User userInfo = userService.getCurrentUser(); + order.setCreator(userInfo == null ? null : userInfo.getId()); + order.setCreateTime(new Date()); + order.setStatus(BusinessConstants.PRODUCTION_ORDER_STATUS_CREATED); + if (order.getFinishedQuantity() == null) { + order.setFinishedQuantity(BigDecimal.ZERO); + } + order.setDeleteFlag(BusinessConstants.DELETE_FLAG_EXISTS); + result = productionOrderMapper.insertSelective(order); + //写操作日志 + saveOrderLog(order.getId(), order.getOrderNumber(), "创建工单", + "创建生产工单,数量:" + order.getOrderQuantity(), userInfo, request); + logService.insertLog("生产工单", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_ADD).append(order.getOrderNumber()).toString(), request); + } catch (BusinessRunTimeException e) { + throw e; + } catch (Exception e) { + JshException.writeFail(logger, e); + } + return result; + } + + /** + * 修改工单(仅未下达可改数量/日期/备注) + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int updateOrder(JSONObject obj, HttpServletRequest request) throws Exception { + ProductionOrder order = JSONObject.parseObject(obj.toJSONString(), ProductionOrder.class); + int result = 0; + try { + ProductionOrder dbOrder = getProductionOrder(order.getId()); + if (dbOrder == null) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "工单不存在"); + } + if (!BusinessConstants.PRODUCTION_ORDER_STATUS_CREATED.equals(dbOrder.getStatus())) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "只有已创建状态的工单才能修改"); + } + normalizeProductionOrder(order); + checkOrder(order); + result = productionOrderMapper.updateByPrimaryKeySelective(order); + saveOrderLog(order.getId(), dbOrder.getOrderNumber(), "修改工单", + "修改工单信息", userService.getCurrentUser(), request); + } catch (BusinessRunTimeException e) { + throw e; + } catch (Exception e) { + JshException.writeFail(logger, e); + } + return result; + } + + /** + * 审批下达 0->1 + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int approveRelease(Long id, HttpServletRequest request) throws Exception { + int result = 0; + try { + ProductionOrder dbOrder = getProductionOrder(id); + checkOrderStatus(dbOrder, BusinessConstants.PRODUCTION_ORDER_STATUS_CREATED, "只有已创建状态的工单才能审批下达"); + User userInfo = userService.getCurrentUser(); + ProductionOrder order = new ProductionOrder(); + order.setId(id); + order.setStatus(BusinessConstants.PRODUCTION_ORDER_STATUS_RELEASED); + order.setAuditBy(userInfo == null ? null : userInfo.getId()); + order.setAuditTime(new Date()); + order.setReleaseBy(userInfo == null ? null : userInfo.getId()); + order.setReleaseTime(new Date()); + result = productionOrderMapper.updateByPrimaryKeySelective(order); + saveOrderLog(id, dbOrder.getOrderNumber(), "审批下达", + "工单审批通过并下达", userInfo, request); + } catch (BusinessRunTimeException e) { + throw e; + } catch (Exception e) { + JshException.writeFail(logger, e); + } + return result; + } + + /** + * 开工 1->2 + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int startProduce(Long id, HttpServletRequest request) throws Exception { + int result = 0; + try { + ProductionOrder dbOrder = getProductionOrder(id); + checkOrderStatus(dbOrder, BusinessConstants.PRODUCTION_ORDER_STATUS_RELEASED, "只有已下达状态的工单才能开工"); + ProductionOrder order = new ProductionOrder(); + order.setId(id); + order.setStatus(BusinessConstants.PRODUCTION_ORDER_STATUS_PRODUCING); + order.setActualStartDate(new Date()); + result = productionOrderMapper.updateByPrimaryKeySelective(order); + saveOrderLog(id, dbOrder.getOrderNumber(), "开工", + "工单开工,开始生产", userService.getCurrentUser(), request); + } catch (BusinessRunTimeException e) { + throw e; + } catch (Exception e) { + JshException.writeFail(logger, e); + } + return result; + } + + /** + * 关闭工单:已完工3->4 或 取消0->4 + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int closeOrder(Long id, String closeReason, HttpServletRequest request) throws Exception { + int result = 0; + try { + ProductionOrder dbOrder = getProductionOrder(id); + if (dbOrder == null) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "工单不存在"); + } + String status = dbOrder.getStatus(); + if (!BusinessConstants.PRODUCTION_ORDER_STATUS_FINISHED.equals(status) + && !BusinessConstants.PRODUCTION_ORDER_STATUS_CREATED.equals(status)) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "只有已完工或已创建状态的工单才能关闭"); + } + ProductionOrder order = new ProductionOrder(); + order.setId(id); + order.setStatus(BusinessConstants.PRODUCTION_ORDER_STATUS_CLOSED); + order.setCloseReason(closeReason); + if (BusinessConstants.PRODUCTION_ORDER_STATUS_FINISHED.equals(status)) { + order.setActualEndDate(new Date()); + } + result = productionOrderMapper.updateByPrimaryKeySelective(order); + String operationDesc = BusinessConstants.PRODUCTION_ORDER_STATUS_CREATED.equals(status) + ? "取消工单,原因:" + closeReason : "完工关闭,原因:" + closeReason; + saveOrderLog(id, dbOrder.getOrderNumber(), "关闭工单", operationDesc, userService.getCurrentUser(), request); + } catch (BusinessRunTimeException e) { + throw e; + } catch (Exception e) { + JshException.writeFail(logger, e); + } + return result; + } + + /** + * 删除工单(仅已创建可删除) + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int deleteOrder(Long id, HttpServletRequest request) throws Exception { + int result = 0; + try { + ProductionOrder dbOrder = getProductionOrder(id); + if (dbOrder == null) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "工单不存在"); + } + if (!BusinessConstants.PRODUCTION_ORDER_STATUS_CREATED.equals(dbOrder.getStatus())) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "只有已创建状态的工单才能删除"); + } + User userInfo = userService.getCurrentUser(); + result = productionOrderMapper.batchDeleteByIds(new Date(), + userInfo == null ? null : userInfo.getId(), new String[]{id.toString()}); + } catch (BusinessRunTimeException e) { + throw e; + } catch (Exception e) { + JshException.writeFail(logger, e); + } + return result; + } + + /** + * 批量删除工单 + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteOrder(String ids, HttpServletRequest request) throws Exception { + int result = 0; + try { + String[] idArray = ids.split(","); + for (String id : idArray) { + ProductionOrder dbOrder = getProductionOrder(Long.parseLong(id)); + if (dbOrder != null && !BusinessConstants.PRODUCTION_ORDER_STATUS_CREATED.equals(dbOrder.getStatus())) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, + "工单[" + dbOrder.getOrderNumber() + "]不是已创建状态,不能删除"); + } + } + User userInfo = userService.getCurrentUser(); + result = productionOrderMapper.batchDeleteByIds(new Date(), + userInfo == null ? null : userInfo.getId(), idArray); + } catch (BusinessRunTimeException e) { + throw e; + } catch (Exception e) { + JshException.writeFail(logger, e); + } + return result; + } + + /** + * 工单详情(含操作日志) + */ + public JSONObject getOrderDetail(Long id) throws Exception { + JSONObject result = new JSONObject(); + ProductionOrder order = productionOrderMapper.selectByPrimaryKey(id); + JSONObject orderObj = JSONObject.parseObject(JSONObject.toJSONString(order)); + if (order != null) { + MaterialVo4Unit output = getMaterialInfo(order.getOutputMaterialExtendId()); + orderObj.put("outputBarCode", output == null ? "" : output.getmBarCode()); + orderObj.put("outputMaterialName", output == null ? "" : output.getName()); + // 格式化日期字段 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + if (order.getCreateTime() != null) { + orderObj.put("createTime", sdf.format(order.getCreateTime())); + } + if (order.getPlanStartDate() != null) { + orderObj.put("planStartDate", sdf.format(order.getPlanStartDate()).substring(0, 10)); + } + if (order.getPlanEndDate() != null) { + orderObj.put("planEndDate", sdf.format(order.getPlanEndDate()).substring(0, 10)); + } + if (order.getActualStartDate() != null) { + orderObj.put("actualStartDate", sdf.format(order.getActualStartDate()).substring(0, 10)); + } + if (order.getActualEndDate() != null) { + orderObj.put("actualEndDate", sdf.format(order.getActualEndDate()).substring(0, 10)); + } + // 解析操作人名称 + if (order.getReleaseBy() != null) { + User releaseUser = userService.getUser(order.getReleaseBy()); + orderObj.put("releaseBy", releaseUser == null ? "" : releaseUser.getLoginName()); + } + if (order.getAuditBy() != null) { + User auditUser = userService.getUser(order.getAuditBy()); + orderObj.put("auditBy", auditUser == null ? "" : auditUser.getLoginName()); + } + } + result.put("order", orderObj); + List logList = productionOrderMapper.selectLogsByOrderId(id); + // 格式化日志时间和操作人 + if (logList != null) { + SimpleDateFormat logSdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + for (ProductionOrderLog log : logList) { + if (log.getOperator() != null) { + User logUser = userService.getUser(log.getOperator()); + if (logUser != null) { + log.setOperatorName(logUser.getLoginName()); + } + } + } + } + result.put("logs", logList == null ? new ArrayList<>() : logList); + return result; + } + + /** + * 根据商品扩展id查询商品信息 + */ + private MaterialVo4Unit getMaterialInfo(Long materialExtendId) { + List list = materialService.getMaterialByMeId(materialExtendId); + if (list != null && list.size() > 0) { + return list.get(0); + } + return null; + } + + /** + * 工单号是否已存在 + */ + public int checkNumberExist(Long id, String orderNumber) throws Exception { + return productionOrderMapper.checkNumberExist(id, orderNumber); + } + + /** + * 校验必填项 + */ + private void checkOrder(ProductionOrder order) { + if (order.getOutputMaterialId() == null) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "请选择生产成品"); + } + if (order.getBomId() == null) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "请选择生产方案"); + } + PackBom bom = packBomMapper.selectByPrimaryKey(order.getBomId()); + if (bom == null || !Boolean.TRUE.equals(bom.getEnabled())) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "生产方案不存在或未启用"); + } + if (!order.getOutputMaterialId().equals(bom.getOutputMaterialId())) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "生产方案与生产成品不匹配"); + } + if (order.getOrderQuantity() == null || order.getOrderQuantity().compareTo(BigDecimal.ZERO) <= 0) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "计划生产数量必须大于0"); + } + } + + /** + * 工单以 output_* 作为生产成品,计划数量与预计产量均为成品数量。 + * product_* 仅同步保留以兼容历史表结构。 + */ + private void normalizeProductionOrder(ProductionOrder order) { + if (order.getOutputMaterialId() == null && order.getProductMaterialId() != null) { + order.setOutputMaterialId(order.getProductMaterialId()); + order.setOutputMaterialExtendId(order.getProductMaterialExtendId()); + order.setOutputSku(order.getProductSku()); + } + order.setProductMaterialId(order.getOutputMaterialId()); + order.setProductMaterialExtendId(order.getOutputMaterialExtendId()); + order.setProductSku(order.getOutputSku()); + order.setOutputQuantity(order.getOrderQuantity()); + } + + /** + * 校验工单状态 + */ + private void checkOrderStatus(ProductionOrder dbOrder, String expectStatus, String errorMsg) { + if (dbOrder == null) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "工单不存在"); + } + if (!expectStatus.equals(dbOrder.getStatus())) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, errorMsg); + } + } + + /** + * 写工单操作日志 + */ + public void saveOrderLog(Long orderId, String orderNumber, String operationType, + String operationDesc, User userInfo, HttpServletRequest request) throws Exception { + ProductionOrderLog orderLog = new ProductionOrderLog(); + orderLog.setOrderId(orderId); + orderLog.setOrderNumber(orderNumber); + orderLog.setOperationType(operationType); + orderLog.setOperationDesc(operationDesc); + orderLog.setOperator(userInfo == null ? null : userInfo.getId()); + orderLog.setCreateTime(new Date()); + productionOrderMapper.insertLog(orderLog); + } + + /** + * 生成工单号:GD+时间戳 + */ + public String generateOrderNumber() { + return "GD" + new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date()); + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/service/ProductionReportService.java b/smtERP-boot/src/main/java/com/reallin/smt/service/ProductionReportService.java new file mode 100644 index 0000000..ced53db --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/service/ProductionReportService.java @@ -0,0 +1,347 @@ +package com.reallin.smt.service; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.constants.BusinessConstants; +import com.reallin.smt.constants.ExceptionConstants; +import com.reallin.smt.datasource.entities.DepotHead; +import com.reallin.smt.datasource.entities.DepotItem; +import com.reallin.smt.datasource.entities.Material; +import com.reallin.smt.datasource.entities.MaterialVo4Unit; +import com.reallin.smt.datasource.entities.ProductionOrder; +import com.reallin.smt.datasource.entities.ProductionReport; +import com.reallin.smt.datasource.entities.ProductionReportItem; +import com.reallin.smt.datasource.entities.User; +import com.reallin.smt.datasource.mappers.DepotHeadMapper; +import com.reallin.smt.datasource.mappers.DepotItemMapper; +import com.reallin.smt.datasource.mappers.ProductionOrderMapper; +import com.reallin.smt.datasource.mappers.ProductionReportMapper; +import com.reallin.smt.datasource.vo.ProductionReportVo4List; +import com.reallin.smt.exception.BusinessRunTimeException; +import com.reallin.smt.exception.JshException; +import com.reallin.smt.utils.PageUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.math.BigDecimal; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * 完工报告Service + */ +@Service +public class ProductionReportService { + private Logger logger = LoggerFactory.getLogger(ProductionReportService.class); + + @Resource + private ProductionReportMapper productionReportMapper; + + @Resource + private ProductionOrderMapper productionOrderMapper; + + @Resource + private DepotHeadMapper depotHeadMapper; + + @Resource + private DepotItemMapper depotItemMapper; + + @Resource + private DepotItemService depotItemService; + + @Resource + private MaterialService materialService; + + @Resource + private ProductionOrderService productionOrderService; + + @Resource + private UserService userService; + + @Resource + private LogService logService; + + public ProductionReport getProductionReport(Long id) throws Exception { + ProductionReport result = null; + try { + result = productionReportMapper.selectByPrimaryKey(id); + } catch (BusinessRunTimeException e) { + throw e; + } catch (Exception e) { + JshException.readFail(logger, e); + } + return result; + } + + public List select(String reportNumber, String orderNumber, String auditStatus, + String beginTime, String endTime) throws Exception { + List list = null; + try { + PageUtils.startPage(); + list = productionReportMapper.selectList(reportNumber, orderNumber, auditStatus, beginTime, endTime); + } catch (BusinessRunTimeException e) { + throw e; + } catch (Exception e) { + JshException.readFail(logger, e); + } + return list; + } + + /** + * 新增完工报告:对已下达/生产中工单报工 + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int addReport(JSONObject obj, HttpServletRequest request) throws Exception { + ProductionReport report = JSONObject.parseObject(obj.toJSONString(), ProductionReport.class); + int result = 0; + try { + ProductionOrder order = productionOrderMapper.selectByPrimaryKey(report.getOrderId()); + if (order == null) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "工单不存在"); + } + if (!BusinessConstants.PRODUCTION_ORDER_STATUS_RELEASED.equals(order.getStatus()) + && !BusinessConstants.PRODUCTION_ORDER_STATUS_PRODUCING.equals(order.getStatus())) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "只有已下达或生产中的工单才能报工"); + } + if (report.getFinishedQuantity() == null || report.getFinishedQuantity().compareTo(BigDecimal.ZERO) <= 0) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "良品数必须大于0"); + } + User userInfo = userService.getCurrentUser(); + report.setReportNumber(generateReportNumber()); + report.setOrderNumber(order.getOrderNumber()); + report.setAuditStatus("0"); + report.setReportBy(userInfo == null ? null : userInfo.getId()); + report.setReportDate(new Date()); + report.setCreateTime(new Date()); + report.setCreator(userInfo == null ? null : userInfo.getId()); + report.setDeleteFlag(BusinessConstants.DELETE_FLAG_EXISTS); + result = productionReportMapper.insertSelective(report); + //保存物料消耗明细 + JSONArray rows = obj.getJSONArray("rows"); + if (rows != null && rows.size() > 0) { + List itemList = new ArrayList<>(); + for (int i = 0; i < rows.size(); i++) { + JSONObject rowObj = rows.getJSONObject(i); + // Editable-table row ids are UI-only; item ids are generated by the database. + rowObj.remove("id"); + ProductionReportItem item = JSONObject.parseObject(rowObj.toJSONString(), ProductionReportItem.class); + if (item.getMaterialId() == null) { + continue; + } + item.setReportId(report.getId()); + itemList.add(item); + } + if (itemList.size() > 0) { + productionReportMapper.batchInsertItems(itemList); + } + } + productionOrderService.saveOrderLog(order.getId(), order.getOrderNumber(), "完工报工", + "提交完工报告[" + report.getReportNumber() + "],良品数:" + report.getFinishedQuantity() + + ",不良品数:" + report.getDefectQuantity(), userInfo, request); + } catch (BusinessRunTimeException e) { + throw e; + } catch (Exception e) { + JshException.writeFail(logger, e); + } + return result; + } + + /** + * 审核完工报告 + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int auditReport(Long id, String auditResult, HttpServletRequest request) throws Exception { + int result = 0; + try { + ProductionReport report = getProductionReport(id); + if (report == null) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "完工报告不存在"); + } + if (!"0".equals(report.getAuditStatus())) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "只有待审核状态的完工报告才能审核"); + } + ProductionOrder order = productionOrderMapper.selectByPrimaryKey(report.getOrderId()); + if (order == null) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "工单不存在"); + } + User userInfo = userService.getCurrentUser(); + //驳回 + if ("reject".equals(auditResult)) { + ProductionReport updateReport = new ProductionReport(); + updateReport.setId(id); + updateReport.setAuditStatus("2"); + updateReport.setAuditBy(userInfo == null ? null : userInfo.getId()); + updateReport.setAuditTime(new Date()); + result = productionReportMapper.updateByPrimaryKeySelective(updateReport); + productionOrderService.saveOrderLog(order.getId(), order.getOrderNumber(), "报工驳回", + "完工报告[" + report.getReportNumber() + "]审核被驳回", userInfo, request); + return result; + } + //通过且质检合格:生成入库单、增加成品库存、工单完工 + if ("1".equals(report.getQualifiedFlag())) { + if (report.getDepotId() == null) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "请选择入库仓库"); + } + //校验完工数量不超预计数量 + BigDecimal finishedTotal = (order.getFinishedQuantity() == null ? BigDecimal.ZERO : order.getFinishedQuantity()) + .add(report.getFinishedQuantity()); + if (order.getOutputQuantity() != null + && finishedTotal.compareTo(order.getOutputQuantity()) > 0) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, + "累计完工数量超过工单预计成品数量,无法审核通过"); + } + //1.生成生产入库单主表 + DepotHead depotHead = new DepotHead(); + depotHead.setType(BusinessConstants.DEPOTHEAD_TYPE_IN); + depotHead.setSubType(BusinessConstants.BILL_TYPE_PRODUCE_IN); + depotHead.setNumber(generateInNumber()); + depotHead.setCreateTime(new Date()); + depotHead.setOperTime(new Date()); + depotHead.setCreator(userInfo == null ? null : userInfo.getId()); + depotHead.setStatus(BusinessConstants.BILLS_STATUS_AUDIT); + depotHead.setDeleteFlag(BusinessConstants.DELETE_FLAG_EXISTS); + depotHeadMapper.insertSelective(depotHead); + //2.生成入库明细(生产成品) + DepotItem depotItem = new DepotItem(); + depotItem.setHeaderId(depotHead.getId()); + depotItem.setMaterialId(order.getOutputMaterialId()); + depotItem.setMaterialExtendId(order.getOutputMaterialExtendId()); + depotItem.setMaterialUnit(getMaterialUnit(order.getOutputMaterialId())); + depotItem.setSku(order.getOutputSku()); + depotItem.setOperNumber(report.getFinishedQuantity()); + depotItem.setBasicNumber(report.getFinishedQuantity()); + depotItem.setUnitPrice(BigDecimal.ZERO); + depotItem.setAllPrice(BigDecimal.ZERO); + depotItem.setDepotId(report.getDepotId()); + depotItem.setDeleteFlag(BusinessConstants.DELETE_FLAG_EXISTS); + depotItemMapper.insertSelective(depotItem); + //3.更新成品库存 + depotItemService.updateCurrentStock(depotItem); + //4.更新工单完工数量与状态 + ProductionOrder updateOrder = new ProductionOrder(); + updateOrder.setId(order.getId()); + updateOrder.setFinishedQuantity(finishedTotal); + boolean completed = order.getOutputQuantity() == null + || finishedTotal.compareTo(order.getOutputQuantity()) >= 0; + updateOrder.setStatus(completed + ? BusinessConstants.PRODUCTION_ORDER_STATUS_FINISHED + : BusinessConstants.PRODUCTION_ORDER_STATUS_PRODUCING); + if (completed) { + updateOrder.setActualEndDate(new Date()); + } + productionOrderMapper.updateByPrimaryKeySelective(updateOrder); + //5.更新报告状态 + ProductionReport updateReport = new ProductionReport(); + updateReport.setId(id); + updateReport.setAuditStatus("1"); + updateReport.setAuditBy(userInfo == null ? null : userInfo.getId()); + updateReport.setAuditTime(new Date()); + updateReport.setInNumber(depotHead.getNumber()); + result = productionReportMapper.updateByPrimaryKeySelective(updateReport); + productionOrderService.saveOrderLog(order.getId(), order.getOrderNumber(), "完工入库", + "完工报告[" + report.getReportNumber() + "]审核通过,入库单号[" + depotHead.getNumber() + + "],累计完工数量:" + finishedTotal + + (completed ? ",工单已完工" : ",工单继续生产"), userInfo, request); + } else { + //质检不合格:不生成入库单,工单保持生产中,支持重新报工 + ProductionReport updateReport = new ProductionReport(); + updateReport.setId(id); + updateReport.setAuditStatus("1"); + updateReport.setAuditBy(userInfo == null ? null : userInfo.getId()); + updateReport.setAuditTime(new Date()); + result = productionReportMapper.updateByPrimaryKeySelective(updateReport); + productionOrderService.saveOrderLog(order.getId(), order.getOrderNumber(), "报工审核", + "完工报告[" + report.getReportNumber() + "]质检不合格,不生成入库单,工单保持生产中", + userInfo, request); + } + } catch (BusinessRunTimeException e) { + throw e; + } catch (Exception e) { + JshException.writeFail(logger, e); + } + return result; + } + + private String getMaterialUnit(Long materialId) throws Exception { + Material material = materialService.getMaterial(materialId); + return material == null ? null : material.getUnit(); + } + + /** + * 删除完工报告(仅待审核可删除) + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int deleteReport(Long id, HttpServletRequest request) throws Exception { + int result = 0; + try { + ProductionReport report = getProductionReport(id); + if (report == null) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "完工报告不存在"); + } + if (!"0".equals(report.getAuditStatus())) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "只有待审核状态的完工报告才能删除"); + } + User userInfo = userService.getCurrentUser(); + result = productionReportMapper.batchDeleteByIds(new Date(), + userInfo == null ? null : userInfo.getId(), new String[]{id.toString()}); + } catch (BusinessRunTimeException e) { + throw e; + } catch (Exception e) { + JshException.writeFail(logger, e); + } + return result; + } + + /** + * 完工报告详情 + */ + public JSONObject getDetail(Long id) throws Exception { + JSONObject result = new JSONObject(); + ProductionReport report = productionReportMapper.selectByPrimaryKey(id); + result.put("report", report); + List itemList = productionReportMapper.selectItemsByReportId(id); + JSONArray rows = new JSONArray(); + if (itemList != null) { + for (ProductionReportItem item : itemList) { + JSONObject itemObj = JSONObject.parseObject(JSONObject.toJSONString(item)); + MaterialVo4Unit info = getMaterialInfo(item.getMaterialExtendId()); + itemObj.put("barCode", info == null ? "" : info.getmBarCode()); + itemObj.put("name", info == null ? "" : info.getName()); + rows.add(itemObj); + } + } + result.put("rows", rows); + return result; + } + + /** + * 根据商品扩展id查询商品信息 + */ + private MaterialVo4Unit getMaterialInfo(Long materialExtendId) { + List list = materialService.getMaterialByMeId(materialExtendId); + if (list != null && list.size() > 0) { + return list.get(0); + } + return null; + } + + /** + * 生成完工报告号:BG+时间戳 + */ + public String generateReportNumber() { + return "BG" + new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date()); + } + + /** + * 生成生产入库单号:CG+时间戳 + */ + public String generateInNumber() { + return "CG" + new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date()); + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/service/ProductionRequisitionService.java b/smtERP-boot/src/main/java/com/reallin/smt/service/ProductionRequisitionService.java new file mode 100644 index 0000000..ab317ec --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/service/ProductionRequisitionService.java @@ -0,0 +1,475 @@ +package com.reallin.smt.service; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.constants.BusinessConstants; +import com.reallin.smt.constants.ExceptionConstants; +import com.reallin.smt.datasource.entities.DepotHead; +import com.reallin.smt.datasource.entities.DepotItem; +import com.reallin.smt.datasource.entities.MaterialVo4Unit; +import com.reallin.smt.datasource.entities.PackBomItem; +import com.reallin.smt.datasource.entities.ProductionOrder; +import com.reallin.smt.datasource.entities.ProductionRequisition; +import com.reallin.smt.datasource.entities.ProductionRequisitionItem; +import com.reallin.smt.datasource.entities.User; +import com.reallin.smt.datasource.mappers.DepotHeadMapper; +import com.reallin.smt.datasource.mappers.DepotItemMapper; +import com.reallin.smt.datasource.mappers.PackBomMapper; +import com.reallin.smt.datasource.mappers.ProductionOrderMapper; +import com.reallin.smt.datasource.mappers.ProductionRequisitionMapper; +import com.reallin.smt.datasource.vo.ProductionRequisitionVo4List; +import com.reallin.smt.exception.BusinessRunTimeException; +import com.reallin.smt.exception.JshException; +import com.reallin.smt.utils.PageUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.math.BigDecimal; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 生产领料单Service + */ +@Service +public class ProductionRequisitionService { + private Logger logger = LoggerFactory.getLogger(ProductionRequisitionService.class); + + @Resource + private ProductionRequisitionMapper productionRequisitionMapper; + + @Resource + private ProductionOrderMapper productionOrderMapper; + + @Resource + private PackBomMapper packBomMapper; + + @Resource + private DepotHeadMapper depotHeadMapper; + + @Resource + private DepotItemMapper depotItemMapper; + + @Resource + private DepotItemService depotItemService; + + @Resource + private MaterialService materialService; + + @Resource + private ProductionOrderService productionOrderService; + + @Resource + private UserService userService; + + @Resource + private LogService logService; + + public ProductionRequisition getProductionRequisition(Long id) throws Exception { + ProductionRequisition result = null; + try { + result = productionRequisitionMapper.selectByPrimaryKey(id); + } catch (BusinessRunTimeException e) { + throw e; + } catch (Exception e) { + JshException.readFail(logger, e); + } + return result; + } + + public List select(String requisitionNumber, String orderNumber, String status, + Long depotId, String beginTime, String endTime) throws Exception { + List list = null; + try { + PageUtils.startPage(); + list = productionRequisitionMapper.selectList(requisitionNumber, orderNumber, status, depotId, + beginTime, endTime); + } catch (BusinessRunTimeException e) { + throw e; + } catch (Exception e) { + JshException.readFail(logger, e); + } + return list; + } + + /** + * 从工单生成领料单:按生产方案明细计算组成物料需求数量 + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int generateRequisition(Long orderId, Long depotId, HttpServletRequest request) throws Exception { + int result = 0; + try { + ProductionOrder order = productionOrderMapper.selectByPrimaryKey(orderId); + if (order == null) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "工单不存在"); + } + if (!BusinessConstants.PRODUCTION_ORDER_STATUS_RELEASED.equals(order.getStatus()) + && !BusinessConstants.PRODUCTION_ORDER_STATUS_PRODUCING.equals(order.getStatus())) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "只有已下达或生产中的工单才能生成领料单"); + } + //同一工单只能有一张待确认或已发料的领料单 + List existList = productionRequisitionMapper.selectByOrderId(orderId); + if (existList != null && existList.size() > 0) { + for (ProductionRequisition exist : existList) { + if ("0".equals(exist.getStatus()) || "1".equals(exist.getStatus())) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, + "该工单已存在待确认或已发料的领料单,不能重复生成"); + } + } + } + User userInfo = userService.getCurrentUser(); + ProductionRequisition requisition = new ProductionRequisition(); + requisition.setRequisitionNumber(generateRequisitionNumber()); + requisition.setOrderId(orderId); + requisition.setOrderNumber(order.getOrderNumber()); + requisition.setDepotId(depotId); + requisition.setStatus("0"); + requisition.setCreateTime(new Date()); + requisition.setCreator(userInfo == null ? null : userInfo.getId()); + requisition.setDeleteFlag(BusinessConstants.DELETE_FLAG_EXISTS); + result = productionRequisitionMapper.insertSelective(requisition); + + List itemList = buildRequisitionItems(requisition.getId(), order, depotId); + if (itemList.size() > 0) { + productionRequisitionMapper.batchInsertItems(itemList); + } + productionOrderService.saveOrderLog(orderId, order.getOrderNumber(), "生成领料单", + "生成领料单[" + requisition.getRequisitionNumber() + "]", userInfo, request); + logService.insertLog("生产领料", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_ADD).append(requisition.getRequisitionNumber()).toString(), request); + } catch (BusinessRunTimeException e) { + throw e; + } catch (Exception e) { + JshException.writeFail(logger, e); + } + return result; + } + + /** + * 构建领料明细:组成物料单位用量 × 计划生产数量 + */ + private List buildRequisitionItems(Long requisitionId, ProductionOrder order, Long defaultDepotId) throws Exception { + List itemList = new ArrayList<>(); + //组成物料:单位用量 × 计划生产数量 + if (order.getBomId() != null) { + List bomItems = packBomMapper.selectItemsByBomId(order.getBomId()); + if (bomItems != null && bomItems.size() > 0) { + for (PackBomItem bomItem : bomItems) { + ProductionRequisitionItem item = new ProductionRequisitionItem(); + item.setRequisitionId(requisitionId); + item.setDepotId(defaultDepotId); + item.setMaterialId(bomItem.getMaterialId()); + item.setMaterialExtendId(bomItem.getMaterialExtendId()); + item.setMaterialSku(bomItem.getMaterialSku()); + item.setUnit(bomItem.getUnit()); + BigDecimal quantity = (bomItem.getQuantity() == null ? BigDecimal.ZERO : bomItem.getQuantity()) + .multiply(order.getOrderQuantity()); + item.setRequiredQuantity(quantity); + item.setIssuedQuantity(quantity); + item.setDeleteFlag(BusinessConstants.DELETE_FLAG_EXISTS); + itemList.add(item); + } + } + } + return itemList; + } + + /** + * 修改领料单(仅待确认可改实发数、仓库) + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int updateRequisition(JSONObject obj, HttpServletRequest request) throws Exception { + ProductionRequisition requisition = JSONObject.parseObject(obj.toJSONString(), ProductionRequisition.class); + int result = 0; + try { + ProductionRequisition dbRequisition = getProductionRequisition(requisition.getId()); + if (dbRequisition == null) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "领料单不存在"); + } + if (!"0".equals(dbRequisition.getStatus())) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "只有待确认状态的领料单才能修改"); + } + result = productionRequisitionMapper.updateByPrimaryKeySelective(requisition); + //更新明细的实发数 + JSONArray rows = obj.getJSONArray("rows"); + if (rows != null && rows.size() > 0) { + for (int i = 0; i < rows.size(); i++) { + JSONObject rowObj = rows.getJSONObject(i); + Long itemId = rowObj.getLong("id"); + if (itemId == null) { + continue; + } + ProductionRequisitionItem item = new ProductionRequisitionItem(); + item.setId(itemId); + if (rowObj.getBigDecimal("issuedQuantity") != null) { + item.setIssuedQuantity(rowObj.getBigDecimal("issuedQuantity")); + } + if (rowObj.getLong("depotId") != null) { + item.setDepotId(rowObj.getLong("depotId")); + } + if (rowObj.getString("remark") != null) { + item.setRemark(rowObj.getString("remark")); + } + productionRequisitionMapper.updateItemSelective(item); + } + } + } catch (BusinessRunTimeException e) { + throw e; + } catch (Exception e) { + JshException.writeFail(logger, e); + } + return result; + } + + /** + * 仓库确认发料 0->1:生成生产领料出库单并扣减库存 + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int confirmIssue(Long id, HttpServletRequest request) throws Exception { + int result = 0; + try { + ProductionRequisition requisition = getProductionRequisition(id); + if (requisition == null) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "领料单不存在"); + } + if (!"0".equals(requisition.getStatus())) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "只有待确认状态的领料单才能确认发料"); + } + List itemList = productionRequisitionMapper.selectItemsByRequisitionId(id); + if (itemList == null || itemList.size() == 0) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "领料单没有明细,无法确认发料"); + } + checkIssueStock(requisition, itemList); + User userInfo = userService.getCurrentUser(); + //1.生成出库单主表 + DepotHead depotHead = new DepotHead(); + depotHead.setType(BusinessConstants.DEPOTHEAD_TYPE_OUT); + depotHead.setSubType(BusinessConstants.SUB_TYPE_PRODUCE_REQUISITION); + depotHead.setNumber(generateRequisitionNumber()); + depotHead.setCreateTime(new Date()); + depotHead.setOperTime(new Date()); + depotHead.setCreator(userInfo == null ? null : userInfo.getId()); + depotHead.setStatus(BusinessConstants.BILLS_STATUS_AUDIT); + depotHead.setDeleteFlag(BusinessConstants.DELETE_FLAG_EXISTS); + depotHeadMapper.insertSelective(depotHead); + //2.生成出库单明细并扣减库存 + for (ProductionRequisitionItem item : itemList) { + BigDecimal issuedQuantity = item.getIssuedQuantity() == null ? BigDecimal.ZERO : item.getIssuedQuantity(); + if (issuedQuantity.compareTo(BigDecimal.ZERO) <= 0) { + continue; + } + DepotItem depotItem = new DepotItem(); + depotItem.setHeaderId(depotHead.getId()); + depotItem.setMaterialId(item.getMaterialId()); + depotItem.setMaterialExtendId(item.getMaterialExtendId()); + depotItem.setMaterialUnit(item.getUnit()); + depotItem.setSku(item.getMaterialSku()); + depotItem.setOperNumber(issuedQuantity); + depotItem.setBasicNumber(issuedQuantity); + depotItem.setUnitPrice(item.getUnitPrice() == null ? BigDecimal.ZERO : item.getUnitPrice()); + depotItem.setAllPrice(issuedQuantity.multiply(depotItem.getUnitPrice())); + depotItem.setDepotId(getItemDepotId(requisition, item)); + depotItem.setDeleteFlag(BusinessConstants.DELETE_FLAG_EXISTS); + depotItemMapper.insertSelective(depotItem); + //更新库存 + depotItemService.updateCurrentStock(depotItem); + } + //3.更新领料单状态 + ProductionRequisition update = new ProductionRequisition(); + update.setId(id); + update.setStatus("1"); + update.setConfirmBy(userInfo == null ? null : userInfo.getId()); + update.setConfirmTime(new Date()); + result = productionRequisitionMapper.updateByPrimaryKeySelective(update); + //4.写工单日志 + productionOrderService.saveOrderLog(requisition.getOrderId(), requisition.getOrderNumber(), "领料发料", + "领料单[" + requisition.getRequisitionNumber() + "]确认发料,出库单号[" + depotHead.getNumber() + "]", + userInfo, request); + } catch (BusinessRunTimeException e) { + throw e; + } catch (Exception e) { + JshException.writeFail(logger, e); + } + return result; + } + + /** + * 确认发料前按明细仓库校验库存,避免同一物料拆多行时逐行校验漏算。 + */ + private void checkIssueStock(ProductionRequisition requisition, List itemList) throws Exception { + Map issuedMap = new HashMap<>(); + Map stockMap = new HashMap<>(); + for (ProductionRequisitionItem item : itemList) { + BigDecimal issuedQuantity = item.getIssuedQuantity() == null ? BigDecimal.ZERO : item.getIssuedQuantity(); + if (issuedQuantity.compareTo(BigDecimal.ZERO) <= 0) { + continue; + } + Long depotId = getItemDepotId(requisition, item); + if (depotId == null) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, + "请选择物料[" + getMaterialDisplayName(item) + "]的发料仓库"); + } + String stockKey = buildStockKey(depotId, item); + BigDecimal issuedSum = issuedMap.get(stockKey); + if (issuedSum == null) { + issuedSum = BigDecimal.ZERO; + } + issuedSum = issuedSum.add(issuedQuantity); + issuedMap.put(stockKey, issuedSum); + + BigDecimal stock = stockMap.get(stockKey); + if (stock == null) { + stock = getItemStock(depotId, item); + stockMap.put(stockKey, stock); + } + if (stock.compareTo(issuedSum) < 0) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, + "物料[" + getMaterialDisplayName(item) + "]库存不足,发料仓库ID[" + depotId + + "],可用库存[" + formatQuantity(stock) + "],本次需发[" + formatQuantity(issuedSum) + "]"); + } + } + } + + private Long getItemDepotId(ProductionRequisition requisition, ProductionRequisitionItem item) { + return item.getDepotId() == null ? requisition.getDepotId() : item.getDepotId(); + } + + private String buildStockKey(Long depotId, ProductionRequisitionItem item) { + if (isSkuItem(item)) { + return depotId + "_sku_" + item.getMaterialExtendId(); + } + return depotId + "_material_" + item.getMaterialId(); + } + + private BigDecimal getItemStock(Long depotId, ProductionRequisitionItem item) throws Exception { + BigDecimal stock; + if (isSkuItem(item)) { + stock = depotItemService.getSkuStockByParam(depotId, item.getMaterialExtendId(), null, null); + } else { + stock = depotItemService.getStockByParam(depotId, item.getMaterialId(), null, null); + } + return stock == null ? BigDecimal.ZERO : stock; + } + + private boolean isSkuItem(ProductionRequisitionItem item) { + return item.getMaterialExtendId() != null + && item.getMaterialSku() != null + && !item.getMaterialSku().trim().isEmpty(); + } + + private String getMaterialDisplayName(ProductionRequisitionItem item) { + MaterialVo4Unit info = getMaterialInfo(item.getMaterialExtendId()); + if (info != null && info.getName() != null) { + return info.getName(); + } + return item.getMaterialSku() == null ? String.valueOf(item.getMaterialId()) : item.getMaterialSku(); + } + + private String formatQuantity(BigDecimal value) { + return value == null ? "0" : value.stripTrailingZeros().toPlainString(); + } + + /** + * 驳回领料单 0->2 + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int rejectRequisition(Long id, String rejectReason, HttpServletRequest request) throws Exception { + int result = 0; + try { + ProductionRequisition requisition = getProductionRequisition(id); + if (requisition == null) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "领料单不存在"); + } + if (!"0".equals(requisition.getStatus())) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "只有待确认状态的领料单才能驳回"); + } + ProductionRequisition update = new ProductionRequisition(); + update.setId(id); + update.setStatus("2"); + update.setRemark(rejectReason); + result = productionRequisitionMapper.updateByPrimaryKeySelective(update); + productionOrderService.saveOrderLog(requisition.getOrderId(), requisition.getOrderNumber(), "领料驳回", + "领料单[" + requisition.getRequisitionNumber() + "]被驳回:" + rejectReason, + userService.getCurrentUser(), request); + } catch (BusinessRunTimeException e) { + throw e; + } catch (Exception e) { + JshException.writeFail(logger, e); + } + return result; + } + + /** + * 删除领料单(仅待确认可删除) + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int deleteRequisition(Long id, HttpServletRequest request) throws Exception { + int result = 0; + try { + ProductionRequisition requisition = getProductionRequisition(id); + if (requisition == null) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "领料单不存在"); + } + if (!"0".equals(requisition.getStatus())) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "只有待确认状态的领料单才能删除"); + } + User userInfo = userService.getCurrentUser(); + result = productionRequisitionMapper.batchDeleteByIds(new Date(), + userInfo == null ? null : userInfo.getId(), new String[]{id.toString()}); + } catch (BusinessRunTimeException e) { + throw e; + } catch (Exception e) { + JshException.writeFail(logger, e); + } + return result; + } + + /** + * 领料单详情 + */ + public JSONObject getDetail(Long id) throws Exception { + JSONObject result = new JSONObject(); + ProductionRequisition requisition = productionRequisitionMapper.selectByPrimaryKey(id); + result.put("requisition", requisition); + List itemList = productionRequisitionMapper.selectItemsByRequisitionId(id); + JSONArray rows = new JSONArray(); + if (itemList != null) { + for (ProductionRequisitionItem item : itemList) { + JSONObject itemObj = JSONObject.parseObject(JSONObject.toJSONString(item)); + MaterialVo4Unit info = getMaterialInfo(item.getMaterialExtendId()); + itemObj.put("depotId", item.getDepotId() == null ? requisition.getDepotId() : item.getDepotId()); + itemObj.put("barCode", info == null ? "" : info.getmBarCode()); + itemObj.put("name", info == null ? "" : info.getName()); + rows.add(itemObj); + } + } + result.put("rows", rows); + return result; + } + + /** + * 根据商品扩展id查询商品信息 + */ + private MaterialVo4Unit getMaterialInfo(Long materialExtendId) { + List list = materialService.getMaterialByMeId(materialExtendId); + if (list != null && list.size() > 0) { + return list.get(0); + } + return null; + } + + /** + * 生成领料单号:LL+时间戳 + */ + public String generateRequisitionNumber() { + return "LL" + new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date()); + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/service/RedisService.java b/smtERP-boot/src/main/java/com/reallin/smt/service/RedisService.java new file mode 100644 index 0000000..85c3656 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/service/RedisService.java @@ -0,0 +1,247 @@ +package com.reallin.smt.service; + +import com.reallin.smt.constants.BusinessConstants; +import com.reallin.smt.utils.StringUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.data.redis.connection.DataType; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.core.ValueOperations; +import org.springframework.data.redis.serializer.RedisSerializer; +import org.springframework.data.redis.serializer.StringRedisSerializer; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.Collection; +import java.util.Set; +import java.util.concurrent.TimeUnit; + +/** + * Description + * + * @author jisheng hua + * @Date: 2021/1/28 18:10 + */ +@Component +public class RedisService { + + @Resource + public RedisTemplate redisTemplate; + + public static final String ACCESS_TOKEN = "X-Access-Token"; + @Value("${security.session.timeout-seconds:259200}") + private long sessionTimeoutSeconds; + + @Autowired(required = false) + public void setRedisTemplate(RedisTemplate redisTemplate) { + RedisSerializer stringSerializer = new StringRedisSerializer(); + redisTemplate.setKeySerializer(stringSerializer); + redisTemplate.setValueSerializer(stringSerializer); + redisTemplate.setHashKeySerializer(stringSerializer); + redisTemplate.setHashValueSerializer(stringSerializer); + this.redisTemplate = redisTemplate; + } + + /** + * @author jisheng hua + * description: + * 从session中获取信息 + *@date: 2021/1/28 18:10 + * @Param: request + * @Param: key + * @return Object + */ + public Object getObjectFromSessionByKey(HttpServletRequest request, String key){ + Object obj=null; + if(request==null){ + return null; + } + String token = request.getHeader(ACCESS_TOKEN); + if(token!=null) { + //开启redis,用户数据放在redis中,从redis中获取 + if(redisTemplate.opsForHash().hasKey(token,key)){ + //redis中存在,拿出来使用 + obj=redisTemplate.opsForHash().get(token,key); + redisTemplate.expire(token, Math.max(60L, sessionTimeoutSeconds), TimeUnit.SECONDS); + } + } + return obj; + } + + /** + * 缓存基本的对象,Integer、String、实体类等 + * + * @param key 缓存的键值 + * @param value 缓存的值 + */ + public void setCacheObject(final String key, final T value) { + redisTemplate.opsForValue().set(key, value); + } + + /** + * 获得缓存的基本对象。 + * + * @param key 缓存键值 + * @return 缓存键值对应的数据 + */ + public T getCacheObject(final String key) + { + ValueOperations operation = redisTemplate.opsForValue(); + return operation.get(key); + } + + /** + * 缓存计数加一,并刷新有效时间。 + * + * @param key 缓存键值 + * @param timeout 有效时间 + * @param timeUnit 时间单位 + * @return 加一后的计数 + */ + public Long incrementCacheObject(final String key, long timeout, TimeUnit timeUnit) { + Long count = redisTemplate.opsForValue().increment(key, 1L); + redisTemplate.expire(key, timeout, timeUnit); + return count; + } + + /** + * 获取缓存键剩余的有效时间。 + */ + public Long getExpire(final String key, TimeUnit timeUnit) { + return redisTemplate.getExpire(key, timeUnit); + } + + /** + * 刷新缓存键的有效时间。 + */ + public void expire(final String key, long timeout, TimeUnit timeUnit) { + redisTemplate.expire(key, timeout, timeUnit); + } + + /** + * @author jisheng hua + * description: + * 将信息放入session或者redis中 + *@date: 2021/1/28 18:10 + * @Param: request + * @Param: key + * @Param: obj + * @return + */ + public void storageObjectBySession(String token, String key, Object obj) { + //开启redis,用户数据放到redis中 + redisTemplate.opsForHash().put(token, key, obj.toString()); + redisTemplate.expire(token, Math.max(60L, sessionTimeoutSeconds), TimeUnit.SECONDS); + } + + /** + * @author jisheng hua + * description: + * 将信息放入session或者redis中 + * @date: 2024/5/28 20:10 + * @return + */ + public void storageCaptchaObject(String verifyKey, String codeNum) { + //把验证码放到redis中 + redisTemplate.opsForValue().set(verifyKey, codeNum, BusinessConstants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES); + } + + /** + * 带有效时间缓存数据 + * @param key + * @param value + * @param time 单位秒 + */ + public void storageKeyWithTime(String key, String value, Long time) { + redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS); + } + + /** + * 删除单个对象 + * + * @param key + */ + public boolean deleteObject(final String key) + { + return redisTemplate.delete(key); + } + + /** + * 删除集合对象 + * + * @param collection 多个对象 + * @return + */ + public boolean deleteObject(final Collection collection) { + return redisTemplate.delete(collection) > 0; + } + + /** + * @author jisheng hua + * description: + * 将信息从session或者redis中移除 + *@date: 2021/1/28 18:10 + * @Param: request + * @Param: key + * @Param: obj + * @return + */ + public void deleteObjectBySession(HttpServletRequest request, String key){ + if(request!=null){ + String token = request.getHeader(ACCESS_TOKEN); + if(StringUtil.isNotEmpty(token)){ + //开启redis,用户数据放在redis中,从redis中删除 + redisTemplate.opsForHash().delete(token, key); + } + } + } + + /** + * @author jisheng hua + * 将信息从redis中移除,比对user和ip + * @param userId + * @param clientIp + */ + public void deleteObjectByUserAndIp(Long userId, String clientIp){ + Set tokens = redisTemplate.keys("*"); + for(String token : tokens) { + // 检查键是否存在且为哈希类型 + if (redisTemplate.hasKey(token) && redisTemplate.type(token) == DataType.HASH) { + Object userIdValue = redisTemplate.opsForHash().get(token, "userId"); + Object clientIpValue = redisTemplate.opsForHash().get(token, "clientIp"); + if(userIdValue!=null && clientIpValue!=null && userIdValue.equals(userId.toString()) && clientIpValue.equals(clientIp)) { + redisTemplate.opsForHash().delete(token, "userId"); + } + } + } + } + + /** + * @author jisheng hua + * 将信息从redis中移除,比对user + * @param userId + */ + public void deleteObjectByUser(Long userId){ + Set tokens = redisTemplate.keys("*"); + for(String token : tokens) { + // 检查键是否存在且为哈希类型 + if (redisTemplate.hasKey(token) && redisTemplate.type(token) == DataType.HASH) { + Object userIdValue = redisTemplate.opsForHash().get(token, "userId"); + if(userIdValue!=null && userIdValue.equals(userId.toString())) { + redisTemplate.opsForHash().delete(token, "userId"); + } + } + } + } + + /** + * 获得缓存的基本对象列表 + * + * @param pattern 字符串前缀 + * @return 对象列表 + */ + public Collection keys(final String pattern) { + return redisTemplate.keys(pattern); + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/service/RoleService.java b/smtERP-boot/src/main/java/com/reallin/smt/service/RoleService.java new file mode 100644 index 0000000..e0bd740 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/service/RoleService.java @@ -0,0 +1,317 @@ +package com.reallin.smt.service; + +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.constants.BusinessConstants; +import com.reallin.smt.datasource.entities.Role; +import com.reallin.smt.datasource.entities.RoleEx; +import com.reallin.smt.datasource.entities.RoleExample; +import com.reallin.smt.datasource.entities.User; +import com.reallin.smt.datasource.mappers.RoleMapper; +import com.reallin.smt.datasource.mappers.RoleMapperEx; +import com.reallin.smt.exception.JshException; +import com.reallin.smt.utils.PageUtils; +import com.reallin.smt.utils.StringUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +@Service +public class RoleService { + private Logger logger = LoggerFactory.getLogger(RoleService.class); + @Resource + private RoleMapper roleMapper; + + @Resource + private RoleMapperEx roleMapperEx; + @Resource + private LogService logService; + @Resource + private UserService userService; + + //超管的专用角色 + private static Long MANAGE_ROLE_ID = 4L; + + public Role getRole(long id)throws Exception { + Role result=null; + try{ + result=roleMapper.selectByPrimaryKey(id); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return result; + } + + public List getRoleListByIds(String ids)throws Exception { + List idList = StringUtil.strToLongList(ids); + List list = new ArrayList<>(); + try{ + RoleExample example = new RoleExample(); + example.createCriteria().andIdIn(idList); + list = roleMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public List allList()throws Exception { + RoleExample example = new RoleExample(); + example.createCriteria().andEnabledEqualTo(true).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + example.setOrderByClause("sort asc, id desc"); + List list=null; + try{ + list=roleMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public List tenantRoleList() { + try { + return allList(); + } catch (Exception e) { + JshException.readFail(logger, e); + return new ArrayList<>(); + } + } + + public List select(String name, String description)throws Exception { + List list=null; + try{ + PageUtils.startPage(); + list=roleMapperEx.selectByConditionRole(name, description); + for(RoleEx roleEx: list) { + String priceLimit = roleEx.getPriceLimit(); + if(StringUtil.isNotEmpty(priceLimit)) { + String priceLimitStr = priceLimit + .replace("1", "屏蔽首页采购价") + .replace("2", "屏蔽首页零售价") + .replace("3", "屏蔽首页销售价") + .replace("4", "屏蔽单据采购价") + .replace("5", "屏蔽单据零售价") + .replace("6", "屏蔽单据销售价") + .replace("7", "屏蔽库存成本价"); + roleEx.setPriceLimitStr(priceLimitStr); + } + } + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int insertRole(JSONObject obj, HttpServletRequest request)throws Exception { + Role role = JSONObject.parseObject(obj.toJSONString(), Role.class); + int result=0; + try{ + role.setEnabled(true); + result=roleMapper.insertSelective(role); + logService.insertLog("角色", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_ADD).append(role.getName()).toString(), request); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int updateRole(JSONObject obj, HttpServletRequest request) throws Exception{ + Role role = JSONObject.parseObject(obj.toJSONString(), Role.class); + int result=0; + try{ + result=roleMapper.updateByPrimaryKeySelective(role); + logService.insertLog("角色", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_EDIT).append(role.getName()).toString(), request); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int deleteRole(Long id, HttpServletRequest request)throws Exception { + return batchDeleteRoleByIds(id.toString()); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteRole(String ids, HttpServletRequest request) throws Exception{ + return batchDeleteRoleByIds(ids); + } + + public int checkIsNameExist(Long id, String name) throws Exception{ + RoleExample example = new RoleExample(); + example.createCriteria().andIdNotEqualTo(id).andNameEqualTo(name).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list =null; + try{ + list=roleMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list==null?0:list.size(); + } + + public List findUserRole()throws Exception{ + RoleExample example = new RoleExample(); + example.setOrderByClause("Id"); + example.createCriteria().andEnabledEqualTo(true).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list=null; + try{ + list=roleMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + /** + * create by: qiankunpingtai + * 逻辑删除角色信息 + * create time: 2019/3/28 15:44 + * @Param: ids + * @return int + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteRoleByIds(String ids) throws Exception{ + StringBuffer sb = new StringBuffer(); + sb.append(BusinessConstants.LOG_OPERATION_TYPE_DELETE); + List list = getRoleListByIds(ids); + for(Role role: list){ + sb.append("[").append(role.getName()).append("]"); + } + logService.insertLog("角色", sb.toString(), + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); + User userInfo=userService.getCurrentUser(); + String [] idArray=ids.split(","); + int result=0; + try{ + result=roleMapperEx.batchDeleteRoleByIds(new Date(),userInfo==null?null:userInfo.getId(),idArray); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + public Role getRoleWithoutTenant(Long roleId) { + return roleMapperEx.getRoleWithoutTenant(roleId); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchSetStatus(Boolean status, String ids)throws Exception { + logService.insertLog("角色", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_ENABLED).toString(), + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); + List roleIds = StringUtil.strToLongList(ids); + Role role = new Role(); + role.setEnabled(status); + RoleExample example = new RoleExample(); + example.createCriteria().andIdIn(roleIds); + int result=0; + try{ + result = roleMapper.updateByExampleSelective(role, example); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + /** + * 根据权限进行屏蔽价格-首页 + * @param price + * @param type + * @return + */ + public Object parseHomePriceByLimit(BigDecimal price, String type, String priceLimit, String emptyInfo, HttpServletRequest request) throws Exception { + if(StringUtil.isNotEmpty(priceLimit)) { + if("buy".equals(type) && priceLimit.contains("1")) { + return emptyInfo; + } + if("retail".equals(type) && priceLimit.contains("2")) { + return emptyInfo; + } + if("sale".equals(type) && priceLimit.contains("3")) { + return emptyInfo; + } + } + return price; + } + + /** + * 根据权限进行屏蔽价格-单据 + * @param price + * @param billCategory + * @param priceLimit + * @param request + * @return + * @throws Exception + */ + public BigDecimal parseBillPriceByLimit(BigDecimal price, String billCategory, String priceLimit, HttpServletRequest request) throws Exception { + if(StringUtil.isNotEmpty(priceLimit)) { + if("buy".equals(billCategory) && priceLimit.contains("4")) { + return BigDecimal.ZERO; + } + if("retail".equals(billCategory) && priceLimit.contains("5")) { + return BigDecimal.ZERO; + } + if("sale".equals(billCategory) && priceLimit.contains("6")) { + return BigDecimal.ZERO; + } + } + return price; + } + + /** + * 根据权限进行屏蔽成本价-库存报表 + * @param price + * @param priceLimit + * @param request + * @return + * @throws Exception + */ + public BigDecimal parseStockPriceByLimit(BigDecimal price, String priceLimit, HttpServletRequest request) throws Exception { + if(StringUtil.isNotEmpty(priceLimit)) { + if(priceLimit.contains("7")) { + return null; + } + } + return price; + } + + /** + * 根据权限进行屏蔽价格-物料 + * @param price + * @param type + * @return + */ + public Object parseMaterialPriceByLimit(BigDecimal price, String type, String emptyInfo, HttpServletRequest request) throws Exception { + Long userId = userService.getUserId(request); + String priceLimit = userService.getRoleTypeByUserId(userId).getPriceLimit(); + if(StringUtil.isNotEmpty(priceLimit)) { + if("buy".equals(type) && priceLimit.contains("4")) { + return emptyInfo; + } + if("retail".equals(type) && priceLimit.contains("5")) { + return emptyInfo; + } + if("sale".equals(type) && priceLimit.contains("6")) { + return emptyInfo; + } + } + return price; + } + + public String getCurrentPriceLimit(HttpServletRequest request) throws Exception { + Long userId = userService.getUserId(request); + return userService.getRoleTypeByUserId(userId).getPriceLimit(); + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/service/SaleShipmentService.java b/smtERP-boot/src/main/java/com/reallin/smt/service/SaleShipmentService.java new file mode 100644 index 0000000..fde32f1 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/service/SaleShipmentService.java @@ -0,0 +1,512 @@ +package com.reallin.smt.service; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.constants.ExceptionConstants; +import com.reallin.smt.datasource.entities.DeliveryPlan; +import com.reallin.smt.datasource.entities.DeliveryPlanItem; +import com.reallin.smt.datasource.entities.DepotHead; +import com.reallin.smt.datasource.entities.SaleShipment; +import com.reallin.smt.datasource.entities.SaleShipmentItem; +import com.reallin.smt.datasource.entities.User; +import com.reallin.smt.datasource.mappers.DeliveryPlanMapper; +import com.reallin.smt.datasource.mappers.SaleShipmentMapper; +import com.reallin.smt.datasource.vo.SaleShipmentVo4List; +import com.reallin.smt.exception.BusinessRunTimeException; +import com.reallin.smt.utils.PageUtils; +import com.reallin.smt.utils.StringUtil; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; + +@Service +public class SaleShipmentService { + + public static final String STATUS_WAIT_APPROVE = "0"; + public static final String STATUS_WAIT_SHIP = "1"; + public static final String STATUS_SHIPPED = "2"; + public static final String STATUS_PART_SHIPPED = "3"; + public static final String STATUS_REJECTED = "4"; + + @Resource + private SaleShipmentMapper saleShipmentMapper; + @Resource + private DeliveryPlanMapper deliveryPlanMapper; + @Resource + private DeliveryPlanService deliveryPlanService; + @Resource + private DepotHeadService depotHeadService; + @Resource + private DepotItemService depotItemService; + @Resource + private SequenceService sequenceService; + @Resource + private UserService userService; + @Resource + private LogService logService; + + public List select(String shipmentNumber, String saleOutNumber, String saleOrderNumber, + String status, String logisticsNo, String beginTime, String endTime) { + PageUtils.startPage(); + return saleShipmentMapper.selectList(shipmentNumber, saleOutNumber, saleOrderNumber, status, + logisticsNo, beginTime, endTime); + } + + public JSONObject getDetail(Long id) { + SaleShipment shipment = getExistingShipment(id); + JSONObject obj = new JSONObject(); + obj.put("info", shipment); + obj.put("rows", saleShipmentMapper.selectItemsByShipmentId(id)); + return obj; + } + + public List getSaleOutItems(Long saleOutId) { + DepotHead saleOut = getValidSaleOut(saleOutId); + List sourceItems = saleShipmentMapper.selectSaleOutItemsForShipment(saleOut.getId()); + List rows = new ArrayList<>(); + for (SaleShipmentItem item : sourceItems) { + BigDecimal remaining = safe(item.getPlanQuantity()).subtract(safe(item.getShippedQuantity())); + if (remaining.compareTo(BigDecimal.ZERO) > 0) { + item.setPlanQuantity(remaining); + item.setActualQuantity(remaining); + item.setDifferenceQuantity(BigDecimal.ZERO); + rows.add(item); + } + } + return rows; + } + + public List getDeliveryPlanItems(Long deliveryPlanId) { + DeliveryPlan plan = deliveryPlanService.getExistingPlan(deliveryPlanId); + List sourceItems = deliveryPlanMapper.selectItemsByPlanId(plan.getId()); + List rows = new ArrayList<>(); + for (DeliveryPlanItem item : sourceItems) { + BigDecimal remaining = safe(item.getPlanQuantity()).subtract(safe(item.getShippedQuantity())); + if (remaining.compareTo(BigDecimal.ZERO) > 0) { + rows.add(buildShipmentItem(item, null, remaining, remaining)); + } + } + return rows; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int createFromSaleOut(JSONObject obj, HttpServletRequest request) throws Exception { + if (Boolean.TRUE.equals(Boolean.TRUE)) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "请先转交货计划,再由交货计划转发货"); + } + Long saleOutId = obj.getLong("saleOutId"); + DepotHead saleOut = getValidSaleOut(saleOutId); + User user = userService.getCurrentUser(); + + SaleShipment shipment = new SaleShipment(); + shipment.setShipmentNumber("FHTZ" + sequenceService.buildOnlyNumber()); + shipment.setSourceType(getSourceType(saleOut)); + shipment.setSaleOutId(saleOut.getId()); + shipment.setSaleOutNumber(saleOut.getNumber()); + shipment.setSaleOrderNumber(saleOut.getLinkNumber()); + shipment.setCustomerId(saleOut.getOrganId()); + shipment.setStatus(STATUS_WAIT_APPROVE); + shipment.setPlannedShipTime(obj.getDate("plannedShipTime")); + shipment.setLogisticsCompany(obj.getString("logisticsCompany")); + shipment.setLogisticsNo(obj.getString("logisticsNo")); + shipment.setReceiver(obj.getString("receiver")); + shipment.setReceiverPhone(obj.getString("receiverPhone")); + shipment.setReceiverAddress(obj.getString("receiverAddress")); + shipment.setNoticeRemark(obj.getString("noticeRemark")); + shipment.setCreateTime(new Date()); + shipment.setCreator(user == null ? null : user.getId()); + shipment.setDeleteFlag("0"); + saleShipmentMapper.insertSelective(shipment); + + List sourceItems = saleShipmentMapper.selectSaleOutItemsForShipment(saleOut.getId()); + Map sourceMap = sourceItems.stream() + .collect(Collectors.toMap(SaleShipmentItem::getSaleOutItemId, item -> item, (a, b) -> a)); + List rows = parseNoticeItems(obj.getJSONArray("rows"), sourceMap, shipment.getId(), null); + if (rows.isEmpty()) { + for (SaleShipmentItem source : sourceItems) { + BigDecimal remaining = safe(source.getPlanQuantity()).subtract(safe(source.getShippedQuantity())); + if (remaining.compareTo(BigDecimal.ZERO) > 0) { + rows.add(buildShipmentItem(source, shipment.getId(), remaining, BigDecimal.ZERO)); + } + } + } + if (rows.isEmpty()) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "该销售出库单没有可发货数量"); + } + saleShipmentMapper.batchInsertItems(rows); + logService.insertLog("发货管理", "新增发货通知[" + shipment.getShipmentNumber() + "]", request); + return 1; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchCreateFromSaleOut(JSONObject obj, HttpServletRequest request) throws Exception { + if (Boolean.TRUE.equals(Boolean.TRUE)) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "请先转交货计划,再由交货计划转发货"); + } + JSONArray shipments = obj.getJSONArray("shipments"); + if (shipments != null && !shipments.isEmpty()) { + int count = 0; + for (int i = 0; i < shipments.size(); i++) { + JSONObject source = shipments.getJSONObject(i); + JSONObject item = new JSONObject(); + item.put("saleOutId", source.getLong("saleOutId")); + item.put("noticeRemark", source.getString("noticeRemark")); + createFromSaleOut(item, request); + count++; + } + return count; + } + JSONArray saleOutIds = obj.getJSONArray("saleOutIds"); + if (saleOutIds == null || saleOutIds.isEmpty()) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "请选择需要转发货的销售出库单"); + } + int count = 0; + for (int i = 0; i < saleOutIds.size(); i++) { + Long saleOutId = saleOutIds.getLong(i); + JSONObject item = new JSONObject(); + item.put("saleOutId", saleOutId); + createFromSaleOut(item, request); + count++; + } + return count; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int createFromDeliveryPlan(JSONObject obj, HttpServletRequest request) throws Exception { + Long deliveryPlanId = obj.getLong("deliveryPlanId"); + DeliveryPlan plan = deliveryPlanService.getExistingPlan(deliveryPlanId); + DepotHead saleOut = getValidSaleOut(plan.getSourceBillId()); + User user = userService.getCurrentUser(); + + SaleShipment shipment = new SaleShipment(); + shipment.setShipmentNumber("FHTZ" + sequenceService.buildOnlyNumber()); + shipment.setSourceType(plan.getSourceType()); + shipment.setDeliveryPlanId(plan.getId()); + shipment.setDeliveryPlanNumber(plan.getPlanNumber()); + shipment.setSaleOutId(saleOut.getId()); + shipment.setSaleOutNumber(saleOut.getNumber()); + shipment.setSaleOrderNumber(saleOut.getLinkNumber()); + shipment.setCustomerId(saleOut.getOrganId()); + shipment.setStatus(STATUS_WAIT_APPROVE); + shipment.setPlannedShipTime(obj.getDate("plannedShipTime")); + shipment.setLogisticsCompany(obj.getString("logisticsCompany")); + shipment.setLogisticsNo(obj.getString("logisticsNo")); + shipment.setReceiver(obj.getString("receiver")); + shipment.setReceiverPhone(obj.getString("receiverPhone")); + shipment.setReceiverAddress(obj.getString("receiverAddress")); + shipment.setNoticeRemark(obj.getString("noticeRemark")); + shipment.setCreateTime(new Date()); + shipment.setCreator(user == null ? null : user.getId()); + shipment.setDeleteFlag("0"); + saleShipmentMapper.insertSelective(shipment); + + List sourceItems = deliveryPlanMapper.selectItemsByPlanId(plan.getId()); + Map sourceMap = sourceItems.stream() + .collect(Collectors.toMap(DeliveryPlanItem::getId, item -> item, (a, b) -> a)); + List rows = parsePlanNoticeItems(obj.getJSONArray("rows"), sourceMap, shipment.getId()); + if (rows.isEmpty()) { + for (DeliveryPlanItem source : sourceItems) { + BigDecimal remaining = safe(source.getPlanQuantity()).subtract(safe(source.getShippedQuantity())); + if (remaining.compareTo(BigDecimal.ZERO) > 0) { + rows.add(buildShipmentItem(source, shipment.getId(), remaining, BigDecimal.ZERO)); + } + } + } + if (rows.isEmpty()) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "该交货计划没有可发货数量"); + } + saleShipmentMapper.batchInsertItems(rows); + logService.insertLog("发货管理", "由交货计划生成发货通知[" + shipment.getShipmentNumber() + "]", request); + return 1; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int approve(Long id, Boolean pass, String remark, HttpServletRequest request) throws Exception { + SaleShipment old = getExistingShipment(id); + if (!STATUS_WAIT_APPROVE.equals(old.getStatus())) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "只有待审批的发货通知才能审批"); + } + User user = userService.getCurrentUser(); + SaleShipment update = new SaleShipment(); + update.setId(id); + update.setStatus(Boolean.FALSE.equals(pass) ? STATUS_REJECTED : STATUS_WAIT_SHIP); + update.setApproveBy(user == null ? null : user.getId()); + update.setApproveTime(new Date()); + update.setApproveRemark(remark); + saleShipmentMapper.updateByPrimaryKeySelective(update); + logService.insertLog("发货管理", (Boolean.FALSE.equals(pass) ? "驳回" : "审批") + "发货通知[" + old.getShipmentNumber() + "]", request); + return 1; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int confirmShipment(JSONObject obj, HttpServletRequest request) throws Exception { + Long id = obj.getLong("id"); + SaleShipment old = getExistingShipment(id); + if (!STATUS_WAIT_SHIP.equals(old.getStatus())) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "只有待发货状态的通知才能确认发货"); + } + List currentItems = saleShipmentMapper.selectItemsByShipmentId(id); + Map currentMap = currentItems.stream() + .collect(Collectors.toMap(SaleShipmentItem::getSaleOutItemId, item -> item, (a, b) -> a)); + List rows = parseConfirmItems(obj.getJSONArray("rows"), currentMap, id); + if (rows.isEmpty()) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "发货明细不能为空"); + } + boolean allFull = true; + for (SaleShipmentItem item : rows) { + if (safe(item.getActualQuantity()).compareTo(safe(item.getPlanQuantity())) < 0) { + allFull = false; + break; + } + } + User user = userService.getCurrentUser(); + SaleShipment update = new SaleShipment(); + update.setId(id); + update.setStatus(allFull ? STATUS_SHIPPED : STATUS_PART_SHIPPED); + update.setLogisticsCompany(obj.getString("logisticsCompany")); + update.setLogisticsNo(obj.getString("logisticsNo")); + update.setReceiver(obj.getString("receiver")); + update.setReceiverPhone(obj.getString("receiverPhone")); + update.setReceiverAddress(obj.getString("receiverAddress")); + update.setDifferenceRemark(obj.getString("differenceRemark")); + update.setShipBy(user == null ? null : user.getId()); + update.setShipTime(new Date()); + update.setConfirmBy(user == null ? null : user.getId()); + update.setConfirmTime(new Date()); + saleShipmentMapper.updateByPrimaryKeySelective(update); + saleShipmentMapper.batchDeleteItemsByShipmentId(id); + saleShipmentMapper.batchInsertItems(rows); + for (SaleShipmentItem item : rows) { + if (safe(item.getActualQuantity()).compareTo(BigDecimal.ZERO) > 0) { + depotItemService.applyShipmentStockOut(depotItemService.getDepotItem(item.getSaleOutItemId()), item.getActualQuantity()); + } + } + if (old.getDeliveryPlanId() != null) { + deliveryPlanService.refreshPlanStatus(old.getDeliveryPlanId()); + } + logService.insertLog("发货管理", "确认发货[" + old.getShipmentNumber() + "]", request); + return 1; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int deleteShipment(Long id, HttpServletRequest request) throws Exception { + SaleShipment old = getExistingShipment(id); + if (!STATUS_WAIT_APPROVE.equals(old.getStatus()) && !STATUS_REJECTED.equals(old.getStatus())) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "只有待审批或已驳回的发货通知才能删除"); + } + SaleShipment update = new SaleShipment(); + update.setId(id); + update.setDeleteFlag("1"); + saleShipmentMapper.updateByPrimaryKeySelective(update); + saleShipmentMapper.batchDeleteItemsByShipmentId(id); + logService.insertLog("发货管理", "删除发货通知[" + old.getShipmentNumber() + "]", request); + return 1; + } + + private DepotHead getValidSaleOut(Long saleOutId) { + if (saleOutId == null) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "请选择销售出库单"); + } + DepotHead saleOut; + try { + saleOut = depotHeadService.getDepotHead(saleOutId); + } catch (Exception e) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "销售出库单不存在"); + } + if (saleOut == null || "1".equals(saleOut.getDeleteFlag())) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "销售出库单不存在"); + } + if (!"出库".equals(saleOut.getType()) || (!"销售".equals(saleOut.getSubType()) && !"零售".equals(saleOut.getSubType()))) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "只能针对销售出库或零售出库创建发货通知"); + } + if (!STATUS_WAIT_SHIP.equals(saleOut.getStatus())) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "只有已审核状态的销售出库单才能创建发货通知"); + } + return saleOut; + } + + private String getSourceType(DepotHead saleOut) { + return "零售".equals(saleOut.getSubType()) ? "retail" : "sale"; + } + + private SaleShipment getExistingShipment(Long id) { + if (id == null) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "发货通知不存在"); + } + SaleShipment shipment = saleShipmentMapper.selectByPrimaryKey(id); + if (shipment == null || "1".equals(shipment.getDeleteFlag())) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "发货通知不存在"); + } + return shipment; + } + + private List parseNoticeItems(JSONArray arr, Map sourceMap, + Long shipmentId, Long excludeShipmentId) { + List rows = new ArrayList<>(); + if (arr == null || arr.isEmpty()) { + return rows; + } + for (int i = 0; i < arr.size(); i++) { + JSONObject row = arr.getJSONObject(i); + Long saleOutItemId = row.getLong("saleOutItemId"); + SaleShipmentItem source = sourceMap.get(saleOutItemId); + if (source == null) { + continue; + } + BigDecimal planQuantity = row.getBigDecimal("planQuantity"); + if (planQuantity == null) { + planQuantity = row.getBigDecimal("actualQuantity"); + } + BigDecimal remaining = safe(source.getPlanQuantity()).subtract(saleShipmentMapper + .getConfirmedQuantityBySaleOutItemId(saleOutItemId, excludeShipmentId)); + if (planQuantity == null || planQuantity.compareTo(BigDecimal.ZERO) <= 0) { + continue; + } + if (planQuantity.compareTo(remaining) > 0) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, + source.getMaterialName() + " 本次发货数量不能大于剩余可发数量 " + remaining); + } + SaleShipmentItem item = buildShipmentItem(source, shipmentId, planQuantity, BigDecimal.ZERO); + item.setRemark(row.getString("remark")); + rows.add(item); + } + return rows; + } + + private List parseConfirmItems(JSONArray arr, Map currentMap, + Long shipmentId) { + List rows = new ArrayList<>(); + if (arr == null || arr.isEmpty()) { + return rows; + } + for (int i = 0; i < arr.size(); i++) { + JSONObject row = arr.getJSONObject(i); + Long saleOutItemId = row.getLong("saleOutItemId"); + SaleShipmentItem current = currentMap.get(saleOutItemId); + if (current == null) { + continue; + } + BigDecimal actualQuantity = row.getBigDecimal("actualQuantity"); + if (actualQuantity == null) { + actualQuantity = BigDecimal.ZERO; + } + if (actualQuantity.compareTo(BigDecimal.ZERO) < 0) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, + current.getMaterialName() + " 实际发货数量不能小于0"); + } + if (actualQuantity.compareTo(safe(current.getPlanQuantity())) > 0) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, + current.getMaterialName() + " 实际发货数量不能大于本批计划发货数量 " + + current.getPlanQuantity()); + } + BigDecimal otherActiveQuantity = saleShipmentMapper + .getActuallyShippedQuantityBySaleOutItemId(saleOutItemId, shipmentId); + BigDecimal saleOutQuantity; + try { + saleOutQuantity = depotItemService.getDepotItem(saleOutItemId).getOperNumber(); + } catch (Exception e) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, "销售出库明细不存在"); + } + BigDecimal maxQuantity = safe(saleOutQuantity).subtract(safe(otherActiveQuantity)); + if (actualQuantity.compareTo(maxQuantity) > 0) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, + current.getMaterialName() + " 实际发货数量不能大于剩余可发数量 " + maxQuantity); + } + SaleShipmentItem item = buildShipmentItem(current, shipmentId, safe(current.getPlanQuantity()), actualQuantity); + item.setRemark(row.getString("remark")); + rows.add(item); + } + return rows; + } + + private List parsePlanNoticeItems(JSONArray arr, Map sourceMap, + Long shipmentId) { + List rows = new ArrayList<>(); + if (arr == null || arr.isEmpty()) { + return rows; + } + for (int i = 0; i < arr.size(); i++) { + JSONObject row = arr.getJSONObject(i); + Long deliveryPlanItemId = row.getLong("deliveryPlanItemId"); + DeliveryPlanItem source = sourceMap.get(deliveryPlanItemId); + if (source == null) { + continue; + } + BigDecimal planQuantity = row.getBigDecimal("planQuantity"); + BigDecimal remaining = safe(source.getPlanQuantity()).subtract(safe( + deliveryPlanMapper.getCommittedQuantityByPlanItemId(deliveryPlanItemId))); + if (planQuantity == null || planQuantity.compareTo(BigDecimal.ZERO) <= 0) { + continue; + } + if (planQuantity.compareTo(remaining) > 0) { + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, + source.getMaterialName() + " 本次发货数量不能大于交货计划剩余数量 " + remaining); + } + SaleShipmentItem item = buildShipmentItem(source, shipmentId, planQuantity, BigDecimal.ZERO); + item.setRemark(row.getString("remark")); + rows.add(item); + } + return rows; + } + + private SaleShipmentItem buildShipmentItem(SaleShipmentItem source, Long shipmentId, + BigDecimal planQuantity, BigDecimal actualQuantity) { + SaleShipmentItem item = new SaleShipmentItem(); + item.setShipmentId(shipmentId); + item.setDeliveryPlanItemId(source.getDeliveryPlanItemId()); + item.setSaleOutItemId(source.getSaleOutItemId()); + item.setMaterialId(source.getMaterialId()); + item.setMaterialExtendId(source.getMaterialExtendId()); + item.setBarCode(source.getBarCode()); + item.setMaterialName(source.getMaterialName()); + item.setStandard(source.getStandard()); + item.setModel(source.getModel()); + item.setUnit(source.getUnit()); + item.setBatchNumber(source.getBatchNumber()); + item.setSnList(source.getSnList()); + item.setPlanQuantity(safe(planQuantity)); + item.setActualQuantity(safe(actualQuantity)); + item.setShippedQuantity(safe(source.getShippedQuantity())); + item.setDifferenceQuantity(safe(actualQuantity).subtract(safe(planQuantity))); + item.setDepotId(source.getDepotId()); + item.setRemark(source.getRemark()); + item.setTenantId(source.getTenantId()); + item.setDeleteFlag("0"); + return item; + } + + private SaleShipmentItem buildShipmentItem(DeliveryPlanItem source, Long shipmentId, + BigDecimal planQuantity, BigDecimal actualQuantity) { + SaleShipmentItem item = new SaleShipmentItem(); + item.setShipmentId(shipmentId); + item.setDeliveryPlanItemId(source.getId()); + item.setSaleOutItemId(source.getSourceItemId()); + item.setMaterialId(source.getMaterialId()); + item.setMaterialExtendId(source.getMaterialExtendId()); + item.setBarCode(source.getBarCode()); + item.setMaterialName(source.getMaterialName()); + item.setStandard(source.getStandard()); + item.setModel(source.getModel()); + item.setUnit(source.getUnit()); + item.setBatchNumber(source.getBatchNumber()); + item.setSnList(source.getSnList()); + item.setPlanQuantity(safe(planQuantity)); + item.setActualQuantity(safe(actualQuantity)); + item.setShippedQuantity(safe(source.getShippedQuantity())); + item.setDifferenceQuantity(safe(actualQuantity).subtract(safe(planQuantity))); + item.setDepotId(source.getDepotId()); + item.setRemark(source.getRemark()); + item.setTenantId(source.getTenantId()); + item.setDeleteFlag("0"); + return item; + } + + private BigDecimal safe(BigDecimal value) { + return value == null ? BigDecimal.ZERO : value; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/service/SequenceService.java b/smtERP-boot/src/main/java/com/reallin/smt/service/SequenceService.java new file mode 100644 index 0000000..6c44e7d --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/service/SequenceService.java @@ -0,0 +1,138 @@ +package com.reallin.smt.service; + +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.constants.BusinessConstants; +import com.reallin.smt.constants.ExceptionConstants; +import com.reallin.smt.datasource.entities.SerialNumber; +import com.reallin.smt.datasource.entities.SerialNumberEx; +import com.reallin.smt.datasource.mappers.SequenceMapperEx; +import com.reallin.smt.exception.BusinessRunTimeException; +import com.reallin.smt.utils.RedisLockUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.List; +import java.util.UUID; + +/** + * Description + * + * @Author: jishenghua + * @Date: 2021/3/16 16:33 + */ +@Service +public class SequenceService { + private Logger logger = LoggerFactory.getLogger(SequenceService.class); + + @Resource + private SequenceMapperEx sequenceMapperEx; + + @Resource + private RedisLockUtil redisLockUtil; + + private static final long LOCK_EXPIRE_TIME = 3000; // 锁有效期3秒 + private static final long LOCK_WAIT_TIME = 100; // 等待锁时间100ms + + public SerialNumber getSequence(long id)throws Exception { + return null; + } + + public List select(String name, Integer offset, Integer rows)throws Exception { + return null; + } + + public Long countSequence(String name)throws Exception { + return null; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int insertSequence(JSONObject obj, HttpServletRequest request)throws Exception { + return 0; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int updateSequence(JSONObject obj, HttpServletRequest request) throws Exception{ + return 0; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int deleteSequence(Long id, HttpServletRequest request)throws Exception { + return 0; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteSequence(String ids, HttpServletRequest request)throws Exception { + return 0; + } + + public int checkIsNameExist(Long id, String serialNumber)throws Exception { + return 0; + } + + /** + * 获取唯一单据编号 + */ + public String buildOnlyNumber() throws Exception { + String lockKey = "sequence:lock:" + BusinessConstants.DEPOT_NUMBER_SEQ; + String requestId = UUID.randomUUID().toString(); // 唯一请求ID + boolean locked = false; + try { + // 尝试获取分布式锁 + locked = redisLockUtil.tryLock( + lockKey, + requestId, + LOCK_EXPIRE_TIME, + LOCK_WAIT_TIME + ); + if (!locked) { + throw new BusinessRunTimeException(ExceptionConstants.SEQUENCE_ONLY_FAILED_CODE, ExceptionConstants.SEQUENCE_ONLY_FAILED_MSG); + } + // 执行业务逻辑 + return doGenerateSequence(); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + throw new BusinessRunTimeException(ExceptionConstants.SEQUENCE_ONLY_BREAK_CODE, ExceptionConstants.SEQUENCE_ONLY_BREAK_MSG); + } finally { + // 释放锁 + if (locked) { + redisLockUtil.unlock(lockKey, requestId); + } + } + } + + /** + * 实际生成单据编号 + */ + private String doGenerateSequence() throws Exception { + try { + // 执行数据库更新 + sequenceMapperEx.updateBuildOnlyNumber(); + Long number = sequenceMapperEx.getBuildOnlyNumber(BusinessConstants.DEPOT_NUMBER_SEQ); + // 格式化返回 + return formatNumber(number); + } catch (Exception e) { + logger.error("生成单据编号失败", e); + throw new BusinessRunTimeException(ExceptionConstants.SEQUENCE_ONLY_BREAK_CODE, ExceptionConstants.SEQUENCE_ONLY_BREAK_MSG); + } + } + + /** + * 格式化数字 + */ + private String formatNumber(Long number) { + if (number < BusinessConstants.SEQ_TO_STRING_MIN_LENGTH) { + StringBuffer sb = new StringBuffer(number.toString()); + int len = BusinessConstants.SEQ_TO_STRING_MIN_LENGTH.toString().length() - sb.length(); + for (int i = 0; i < len; i++) { + sb.insert(0, BusinessConstants.SEQ_TO_STRING_LESS_INSERT); + } + return sb.toString(); + } else { + return number.toString(); + } + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/service/SerialNumberService.java b/smtERP-boot/src/main/java/com/reallin/smt/service/SerialNumberService.java new file mode 100644 index 0000000..9edd799 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/service/SerialNumberService.java @@ -0,0 +1,294 @@ +package com.reallin.smt.service; + +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.constants.BusinessConstants; +import com.reallin.smt.constants.ExceptionConstants; +import com.reallin.smt.datasource.entities.*; +import com.reallin.smt.datasource.mappers.*; +import com.reallin.smt.exception.BusinessRunTimeException; +import com.reallin.smt.exception.JshException; +import com.reallin.smt.utils.StringUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +@Service +public class SerialNumberService { + private Logger logger = LoggerFactory.getLogger(SerialNumberService.class); + + @Resource + private SerialNumberMapper serialNumberMapper; + @Resource + private SerialNumberMapperEx serialNumberMapperEx; + @Resource + private MaterialMapperEx materialMapperEx; + @Resource + private MaterialService materialService; + @Resource + private UserService userService; + @Resource + private LogService logService; + + public SerialNumber getSerialNumber(long id)throws Exception { + SerialNumber result=null; + try{ + result=serialNumberMapper.selectByPrimaryKey(id); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return result; + } + + public List getSerialNumberListByIds(String ids)throws Exception { + List idList = StringUtil.strToLongList(ids); + List list = new ArrayList<>(); + try{ + SerialNumberExample example = new SerialNumberExample(); + example.createCriteria().andIdIn(idList); + list = serialNumberMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public List getSerialNumber()throws Exception { + SerialNumberExample example = new SerialNumberExample(); + List list=null; + try{ + list=serialNumberMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public List select(String serialNumber, String materialName, Integer offset, Integer rows)throws Exception { + return null; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int insertSerialNumber(JSONObject obj, HttpServletRequest request)throws Exception { + return 0; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int updateSerialNumber(JSONObject obj, HttpServletRequest request) throws Exception{ + return 0; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int deleteSerialNumber(Long id, HttpServletRequest request)throws Exception { + return 0; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteSerialNumber(String ids, HttpServletRequest request)throws Exception { + return 0; + } + + public int checkIsNameExist(Long id, String serialNumber)throws Exception { + return 0; + } + + /** + * 根据商品名称判断给商品添加序列号是否可行 + * 1、根据商品名称必须查询到唯一的商品 + * 2、该商品必须已经启用序列号 + * 3、该商品已绑定序列号数量小于商品现有库存 + * 用商品的库存去限制序列号的添加有点不合乎道理,去掉此限制 + * @return Long 满足使用条件的商品的id + */ + public Long getSerialNumberMaterialIdByBarCode(String materialCode)throws Exception{ + if(StringUtil.isNotEmpty(materialCode)){ + //计算商品库存和目前占用的可用序列号数量关系 + //库存=入库-出库 + //入库数量 + Long materialId = 0L; + List list = materialService.getMaterialByBarCode(materialCode); + if(list!=null && list.size()>0) { + materialId = list.get(0).getId(); + } + return materialId; + } + return null; + } + + /** + * 出库时判断序列号库存是否足够, + * 同时将对应的序列号绑定单据 + */ + public void checkAndUpdateSerialNumber(DepotItem depotItem, String outBillNo,User userInfo, String snList) throws Exception{ + if(depotItem!=null){ + sellSerialNumber(depotItem.getMaterialId(), outBillNo, snList,userInfo); + } + } + + /** + * 出售序列号 + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public void sellSerialNumber(Long materialId, String outBillNo, String snList, User user) throws Exception{ + //将中文的逗号批量替换为英文逗号 + snList = snList.replaceAll(",",","); + String [] snArray=snList.split(","); + for (String sn : snArray) { + int isNotSellCount = serialNumberMapperEx.getIsNotSellCountByParam(materialId, sn); + if (isNotSellCount == 0) { + //如果序列号不存在或者已售出则进行提示,不再进行后续的出售操作 + throw new BusinessRunTimeException(ExceptionConstants.SERIAL_NUMBERE_NOT_EXISTS_CODE, + String.format(ExceptionConstants.SERIAL_NUMBERE_NOT_EXISTS_MSG, sn)); + } + } + List minList = serialNumberMapperEx.getMinSerialNumberByMaterialIdAndSn(materialId, snArray); + List idList = new ArrayList<>(); + for (SerialNumber serialNumber : minList) { + idList.add(serialNumber.getId()); + } + serialNumberMapperEx.sellSerialNumber(idList, outBillNo, new Date(), user == null ? null : user.getId()); + } + + /** + * 赎回序列号 + * @Param: materialId + * @Param: depotheadId + * @Param: isSell 赎回'0' + * @Param: Count 卖出或者赎回的数量 + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int cancelSerialNumber(Long materialId, String outBillNo,int count,User user) throws Exception{ + int result=0; + try{ + result = serialNumberMapperEx.cancelSerialNumber(materialId,outBillNo,count,new Date(),user==null?null:user.getId()); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + /** + * 批量添加序列号,最多500个 + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batAddSerialNumber(String materialCode, String serialNumberPrefix, Integer batAddTotal, String remark)throws Exception { + int result=0; + try { + if (StringUtil.isNotEmpty(materialCode)) { + //查询商品id + Long materialId = getSerialNumberMaterialIdByBarCode(materialCode); + List list = null; + //当前用户 + User userInfo = userService.getCurrentUser(); + Long userId = userInfo == null ? null : userInfo.getId(); + Date date = null; + Long million = null; + synchronized (this) { + date = new Date(); + million = date.getTime(); + } + int insertNum = 0; + StringBuffer prefixBuf = new StringBuffer(serialNumberPrefix).append(million); + list = new ArrayList(); + int forNum = BusinessConstants.BATCH_INSERT_MAX_NUMBER >= batAddTotal ? batAddTotal : BusinessConstants.BATCH_INSERT_MAX_NUMBER; + for (int i = 0; i < forNum; i++) { + insertNum++; + SerialNumberEx each = new SerialNumberEx(); + each.setMaterialId(materialId); + each.setCreator(userId); + each.setCreateTime(date); + each.setUpdater(userId); + each.setUpdateTime(date); + each.setRemark(remark); + each.setSerialNumber(new StringBuffer(prefixBuf.toString()).append(insertNum).toString()); + list.add(each); + } + result = serialNumberMapperEx.batAddSerialNumber(list); + logService.insertLog("序列号", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_BATCH_ADD).append(batAddTotal).append(BusinessConstants.LOG_DATA_UNIT).toString(), + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); + } + } catch (Exception e) { + JshException.writeFail(logger, e); + } + return result; + } + + public List getEnableSerialNumberList(String number, String name, String [] nameArray, Long depotId, String barCode, Integer offset, Integer rows)throws Exception { + List list =null; + try{ + list = serialNumberMapperEx.getEnableSerialNumberList(StringUtil.toNull(number), StringUtil.toNull(name), nameArray, depotId, barCode, offset, rows); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public Long getEnableSerialNumberCount(String number, String name, String [] nameArray, Long depotId, String barCode)throws Exception { + Long count = 0L; + try{ + count = serialNumberMapperEx.getEnableSerialNumberCount(StringUtil.toNull(number), StringUtil.toNull(name), nameArray, depotId, barCode); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return count; + } + + public void addSerialNumberByBill(String type, String subType, String inBillNo, Long materialId, Long depotId, BigDecimal inPrice, String snList) throws Exception { + //录入序列号的时候不能和库里面的重复-入库 + if ((BusinessConstants.SUB_TYPE_PURCHASE.equals(subType) || + BusinessConstants.SUB_TYPE_OTHER.equals(subType) || + BusinessConstants.SUB_TYPE_SALES_RETURN.equals(subType)|| + BusinessConstants.SUB_TYPE_RETAIL_RETURN.equals(subType)) && + BusinessConstants.DEPOTHEAD_TYPE_IN.equals(type)) { + //将中文的逗号批量替换为英文逗号 + snList = snList.replaceAll(",", ","); + List snArr = StringUtil.strToStringList(snList); + for (String sn : snArr) { + List list = new ArrayList<>(); + SerialNumberExample example = new SerialNumberExample(); + example.createCriteria().andMaterialIdEqualTo(materialId).andSerialNumberEqualTo(sn.trim()).andIsSellEqualTo("0") + .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + list = serialNumberMapper.selectByExample(example); + //判断如果不存在重复序列号就新增 + if (list == null || list.size() == 0) { + SerialNumber serialNumber = new SerialNumber(); + serialNumber.setMaterialId(materialId); + serialNumber.setDepotId(depotId); + serialNumber.setSerialNumber(sn); + serialNumber.setInPrice(inPrice); + Date date = new Date(); + serialNumber.setCreateTime(date); + serialNumber.setUpdateTime(date); + User userInfo = userService.getCurrentUser(); + serialNumber.setCreator(userInfo == null ? null : userInfo.getId()); + serialNumber.setUpdater(userInfo == null ? null : userInfo.getId()); + serialNumber.setInBillNo(inBillNo); + serialNumberMapper.insertSelective(serialNumber); + } else { + if(!inBillNo.equals(list.get(0).getInBillNo())) { + throw new BusinessRunTimeException(ExceptionConstants.SERIAL_NUMBERE_ALREADY_EXISTS_CODE, + String.format(ExceptionConstants.SERIAL_NUMBERE_ALREADY_EXISTS_MSG, sn)); + } + } + } + } + } + + /** + * 直接删除序列号 + * @param example + */ + public void deleteByExample(SerialNumberExample example) { + serialNumberMapper.deleteByExample(example); + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/service/SmtInboundService.java b/smtERP-boot/src/main/java/com/reallin/smt/service/SmtInboundService.java new file mode 100644 index 0000000..8a8f42e --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/service/SmtInboundService.java @@ -0,0 +1,440 @@ +package com.reallin.smt.service; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.exception.BusinessRunTimeException; +import org.apache.poi.ss.usermodel.*; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.jdbc.support.GeneratedKeyHolder; +import org.springframework.jdbc.support.KeyHolder; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.InputStream; +import java.math.BigDecimal; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; +import java.sql.PreparedStatement; +import java.sql.Statement; +import java.sql.Timestamp; +import java.text.SimpleDateFormat; +import java.util.*; + +@Service +public class SmtInboundService { + private static final String DEFAULT_SUPPLIER = "浙江瑞银电子有限公司"; + private static final String[] TEMPLATE_HEADERS = { + "单据编号", "单据日期", "成品物料代码", "成品名称", "规格型号", + "出货量", "商品单价", "未税金额", "价税合计", "来源单据号" + }; + + @Resource + private JdbcTemplate jdbcTemplate; + @Resource + private UserService userService; + + @Value("${smt.syncCreatorId:63}") + private Long syncCreatorId; + + public Long creatorId(HttpServletRequest request) { + try { + Long id = userService.getUserId(request); + return id == null ? syncCreatorId : id; + } catch (Exception e) { + return syncCreatorId; + } + } + + public String nextNumber(String businessDate) { + Date date = parseDate(businessDate); + String prefix = new SimpleDateFormat("'SM'yyMMdd").format(date); + String max = jdbcTemplate.queryForObject( + "select max(number) from tbl_depot_head where sub_type='总部入库' and delete_flag<>'1' and number like ?", + String.class, prefix + "%"); + int sequence = 1; + if (max != null && max.matches("SM\\d{10}")) { + sequence = Integer.parseInt(max.substring(8)) + 1; + } + return prefix + String.format("%04d", sequence); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public Long save(JSONObject info, JSONArray rows, Long creatorId) { + validate(info, rows); + Long id = info.getLong("id"); + String number = info.getString("number").trim(); + Timestamp operTime = new Timestamp(parseDate(info.getString("operTime")).getTime()); + BigDecimal total = sum(rows, "totalMoney", "allPrice").negate(); + Long supplierId = defaultSupplierId(); + if (id == null) { + List> existing = jdbcTemplate.queryForList( + "select id,status from tbl_depot_head where number=? and sub_type='总部入库' and delete_flag<>'1' limit 1", + number); + if (!existing.isEmpty()) { + if (!"0".equals(String.valueOf(existing.get(0).get("status")))) { + throw new BusinessRunTimeException(500, "单据 " + number + " 已审核,不能覆盖"); + } + id = ((Number) existing.get(0).get("id")).longValue(); + } + } + if (id == null) { + KeyHolder keyHolder = new GeneratedKeyHolder(); + jdbcTemplate.update(connection -> { + PreparedStatement ps = connection.prepareStatement( + "insert into tbl_depot_head(type,sub_type,default_number,number,create_time,oper_time,creator," + + "organ_id,total_price,discount_last_money,other_money,deposit,change_amount,pay_type,remark," + + "status,purchase_status,source,delete_flag) " + + "values('入库','总部入库',?,?,now(),?,?,?,?,0,0,0,0,'现付',?,'0','0','0','0')", + Statement.RETURN_GENERATED_KEYS); + ps.setString(1, number); + ps.setString(2, number); + ps.setTimestamp(3, operTime); + ps.setLong(4, creatorId); + ps.setLong(5, supplierId); + ps.setBigDecimal(6, total); + ps.setString(7, info.getString("remark")); + return ps; + }, keyHolder); + id = Objects.requireNonNull(keyHolder.getKey()).longValue(); + } else { + String status = jdbcTemplate.queryForObject("select status from tbl_depot_head where id=?", String.class, id); + if (!"0".equals(status)) { + throw new BusinessRunTimeException(500, "已审核单据不能修改"); + } + jdbcTemplate.update("update tbl_depot_head set number=?,default_number=?,oper_time=?,organ_id=?,total_price=?," + + "discount_last_money=0,other_money=0,deposit=0,change_amount=0,remark=? where id=?", + number, number, operTime, supplierId, total, info.getString("remark"), id); + } + replaceRows(id, rows); + return id; + } + + private void replaceRows(Long headerId, JSONArray rows) { + jdbcTemplate.update("delete from tbl_headquarters_inbound_item where header_id=?", headerId); + for (int i = 0; i < rows.size(); i++) { + JSONObject row = rows.getJSONObject(i); + String code = first(row, "materialCode", "barCode"); + String name = first(row, "materialName", "name"); + String specification = first(row, "specification", "standard", "model"); + BigDecimal qty = decimal(row, "qtyPriceAmount", "qty", "operNumber"); + BigDecimal price = decimal(row, "finallyPrice", "unitPrice"); + BigDecimal net = decimal(row, "totalNetMoney"); + BigDecimal money = decimal(row, "totalMoney", "allPrice"); + Long depotId = row.getLong("depotId"); + if (money == null && qty != null && price != null) money = qty.multiply(price); + JSONObject itemJson = new JSONObject(true); + itemJson.put("成品物料代码", code); + itemJson.put("成品名称", name); + itemJson.put("规格型号", specification); + itemJson.put("出货量", qty); + itemJson.put("商品单价", price); + itemJson.put("未税金额", net); + itemJson.put("价税合计", money); + jdbcTemplate.update("insert into tbl_headquarters_inbound_item(header_id,material_code,material_name,specification,qty," + + "unit_price,total_net_money,total_money,depot_id,item_json,source_doc_no,delete_flag) values(?,?,?,?,?,?,?,?,?,?,?,'0')", + headerId, code, name, specification, qty, price, net, money, depotId, itemJson.toJSONString(), + first(row, "sourceDocNo", "source_doc_no")); + } + } + + public List> details(Long headerId) { + return jdbcTemplate.queryForList("select hi.id,cast(hi.depot_id as char) depotId,d.name depotName," + + "hi.material_code barCode,hi.material_code materialCode," + + "hi.material_name name,hi.material_name materialName,hi.specification standard,hi.specification," + + "hi.qty operNumber,hi.qty qtyPriceAmount,hi.unit_price unitPrice,hi.unit_price finallyPrice," + + "hi.total_net_money totalNetMoney,hi.total_money allPrice,hi.total_money totalMoney," + + "hi.item_json itemJson,hi.source_doc_no sourceDocNo from tbl_headquarters_inbound_item hi " + + "left join tbl_depot d on d.id=hi.depot_id and d.delete_flag<>'1' " + + "where hi.header_id=? and hi.delete_flag<>'1' order by hi.id", + headerId); + } + + public Map summary(Long headerId) { + List> rows = jdbcTemplate.queryForList( + "select group_concat(concat(material_code,' ',material_name) separator ', ') materials," + + "coalesce(sum(qty),0) material_count from tbl_headquarters_inbound_item " + + "where header_id=? and delete_flag<>'1'", headerId); + return rows.isEmpty() ? Collections.emptyMap() : rows.get(0); + } + + public Map importExcel(MultipartFile file, Long creatorId) throws Exception { + List list = new ArrayList<>(); + try (InputStream in = file.getInputStream(); Workbook workbook = WorkbookFactory.create(in)) { + Sheet sheet = workbook.getSheetAt(0); + DataFormatter formatter = new DataFormatter(); + for (int i = 1; i <= sheet.getLastRowNum(); i++) { + Row row = sheet.getRow(i); + if (row == null || formatter.formatCellValue(row.getCell(0)).trim().isEmpty()) continue; + JSONObject item = new JSONObject(); + item.put("docNo", formatter.formatCellValue(row.getCell(0)).trim()); + Cell dateCell = row.getCell(1); + item.put("businessDate", dateCell != null && DateUtil.isCellDateFormatted(dateCell) + ? new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(dateCell.getDateCellValue()) + : formatter.formatCellValue(dateCell).trim()); + item.put("materialCode", formatter.formatCellValue(row.getCell(2)).trim()); + item.put("materialName", formatter.formatCellValue(row.getCell(3)).trim()); + item.put("specification", formatter.formatCellValue(row.getCell(4)).trim()); + item.put("qtyPriceAmount", numeric(row.getCell(5), formatter)); + item.put("finallyPrice", numeric(row.getCell(6), formatter)); + item.put("totalNetMoney", numeric(row.getCell(7), formatter)); + item.put("totalMoney", numeric(row.getCell(8), formatter)); + item.put("sourceDocNo", formatter.formatCellValue(row.getCell(9)).trim()); + list.add(item); + } + } + return sync(list, creatorId); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public Map sync(List payload, Long creatorId) { + LinkedHashMap> grouped = new LinkedHashMap<>(); + for (JSONObject row : payload) { + String docNo = row.getString("docNo"); + if (docNo == null || docNo.trim().isEmpty()) throw new IllegalArgumentException("单据编号不能为空"); + grouped.computeIfAbsent(docNo.trim(), k -> new ArrayList<>()).add(row); + } + int created = 0, overwritten = 0; + List audited = new ArrayList<>(); + for (Map.Entry> entry : grouped.entrySet()) { + List> found = jdbcTemplate.queryForList( + "select id,status from tbl_depot_head where number=? and sub_type='总部入库' and delete_flag<>'1' limit 1", + entry.getKey()); + if (!found.isEmpty() && !"0".equals(String.valueOf(found.get(0).get("status")))) { + audited.add(entry.getKey()); + continue; + } + JSONObject info = new JSONObject(); + if (!found.isEmpty()) info.put("id", ((Number) found.get(0).get("id")).longValue()); + info.put("number", entry.getKey()); + info.put("operTime", entry.getValue().get(0).getString("businessDate")); + info.put("remark", "SMT平台/Excel同步"); + JSONArray detailRows = new JSONArray(); + detailRows.addAll(entry.getValue()); + save(info, detailRows, creatorId); + if (found.isEmpty()) created++; else overwritten++; + } + Map result = new LinkedHashMap<>(); + result.put("created", created); + result.put("overwritten", overwritten); + result.put("rejected", audited.size()); + result.put("auditedDocNos", audited); + String summary = String.format("同步完成:新增%d,覆盖%d,已审核跳过%d", created, overwritten, audited.size()); + result.put("message", audited.isEmpty() ? summary : summary + ";冲突单号:" + String.join(", ", audited)); + return result; + } + + public void exportTemplate(HttpServletResponse response) throws Exception { + try (Workbook workbook = new XSSFWorkbook()) { + Sheet sheet = workbook.createSheet("Sheet1"); + Row header = sheet.createRow(0); + for (int i = 0; i < TEMPLATE_HEADERS.length; i++) { + header.createCell(i).setCellValue(TEMPLATE_HEADERS[i]); + sheet.setColumnWidth(i, i == 3 || i == 4 ? 6000 : 4500); + } + String fileName = URLEncoder.encode("总部入库导入模板.xlsx", StandardCharsets.UTF_8.name()); + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setHeader("Content-Disposition", "attachment;filename=" + fileName); + workbook.write(response.getOutputStream()); + } + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public void prepareForApproval(Long headerId) { + List> rows = jdbcTemplate.queryForList( + "select * from tbl_headquarters_inbound_item where header_id=? and delete_flag<>'1' order by id", headerId); + if (rows.isEmpty()) return; + jdbcTemplate.update("delete from tbl_depot_item where header_id=?", headerId); + BigDecimal total = BigDecimal.ZERO; + for (Map row : rows) { + String code = String.valueOf(row.get("material_code")); + String name = String.valueOf(row.get("material_name")); + String specification = row.get("specification") == null ? null : String.valueOf(row.get("specification")); + BigDecimal price = bd(row.get("unit_price")); + Long depotId = validateDepot(row.get("depot_id"), code); + Long[] material = upsertMaterial(code, name, specification, price); + BigDecimal qty = bd(row.get("qty")); + BigDecimal money = bd(row.get("total_money")); + if (money == null) money = qty.multiply(price == null ? BigDecimal.ZERO : price); + total = total.add(money); + jdbcTemplate.update("insert into tbl_depot_item(header_id,material_id,material_extend_id,material_unit," + + "oper_number,basic_number,unit_price,purchase_unit_price,tax_unit_price,all_price,depot_id," + + "tax_money,tax_last_money,delete_flag) values(?,?,?,'件',?,?,?,?,?,?,?,?,?,'0')", + headerId, material[0], material[1], qty, qty, price, price, price, money, depotId, + money.subtract(bd(row.get("total_net_money")) == null ? money : bd(row.get("total_net_money"))), + money); + } + BigDecimal payableAmount = total.abs(); + jdbcTemplate.update("update tbl_depot_head set total_price=?,discount_last_money=?,other_money=0," + + "deposit=0,change_amount=0,debt=?,last_debt=? where id=?", + total.negate(), payableAmount, payableAmount, payableAmount, headerId); + } + + private Long validateDepot(Object depotValue, String materialCode) { + if (!(depotValue instanceof Number)) { + throw new BusinessRunTimeException(500, "商品 " + materialCode + " 未填写入库仓库,请编辑单据后再审核"); + } + Long depotId = ((Number) depotValue).longValue(); + Integer count = jdbcTemplate.queryForObject( + "select count(1) from tbl_depot where id=? and enabled=1 and delete_flag<>'1'", Integer.class, depotId); + if (count == null || count == 0) { + throw new BusinessRunTimeException(500, "商品 " + materialCode + " 选择的入库仓库不存在或已停用,请重新选择"); + } + return depotId; + } + + private Long defaultSupplierId() { + List ids = jdbcTemplate.query( + "select id from tbl_supplier where supplier=? and enabled=1 and delete_flag<>'1' order by id limit 1", + (rs, n) -> rs.getLong(1), DEFAULT_SUPPLIER); + if (ids.isEmpty()) { + throw new BusinessRunTimeException(500, "默认供应商不存在或未启用:" + DEFAULT_SUPPLIER); + } + return ids.get(0); + } + + private Long[] upsertMaterial(String code, String name, String specification, BigDecimal price) { + List> list = jdbcTemplate.queryForList( + "select m.id material_id,me.id extend_id from tbl_material_extend me join tbl_material m on m.id=me.material_id " + + "where me.bar_code=? and me.delete_flag<>'1' and m.delete_flag<>'1' limit 1", code); + Long materialId; + Long extendId; + if (list.isEmpty()) { + throw new BusinessRunTimeException(500, "商品条码不存在:" + code + ",请重新绑定正确商品,或点击新增商品信息后再审核"); + } else { + materialId = ((Number) list.get(0).get("material_id")).longValue(); + extendId = ((Number) list.get(0).get("extend_id")).longValue(); + } + return new Long[]{materialId, extendId}; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public Map createMaterialIfMissing(JSONObject item) { + String code = first(item, "materialCode", "barCode"); + String name = first(item, "materialName", "name"); + String specification = first(item, "specification", "standard", "model"); + BigDecimal price = decimal(item, "finallyPrice", "unitPrice"); + if (code == null || name == null) { + throw new IllegalArgumentException("成品物料代码和成品名称不能为空"); + } + List> existing = jdbcTemplate.queryForList( + "select m.id material_id,me.id extend_id,m.name from tbl_material_extend me " + + "join tbl_material m on m.id=me.material_id " + + "where me.bar_code=? and me.delete_flag<>'1' and m.delete_flag<>'1' limit 1", code); + Map result = new LinkedHashMap<>(); + if (!existing.isEmpty()) { + result.put("created", false); + result.put("materialId", existing.get(0).get("material_id")); + result.put("materialName", existing.get(0).get("name")); + result.put("message", "商品条码已存在,未新增、未覆盖原商品信息"); + return result; + } + Long categoryId = finishedMaterialCategoryId(); + KeyHolder materialKey = new GeneratedKeyHolder(); + jdbcTemplate.update(c -> { + PreparedStatement ps = c.prepareStatement("insert into tbl_material(category_id,name,model,standard,unit,enabled," + + "enable_serial_number,enable_batch_number,delete_flag) values(?,?,?,?,'件',1,'0','0','0')", + Statement.RETURN_GENERATED_KEYS); + if (categoryId == null) ps.setNull(1, java.sql.Types.BIGINT); else ps.setLong(1, categoryId); + ps.setString(2, name); + ps.setString(3, specification); + ps.setString(4, specification); + return ps; + }, materialKey); + Long materialId = Objects.requireNonNull(materialKey.getKey()).longValue(); + KeyHolder extendKey = new GeneratedKeyHolder(); + jdbcTemplate.update(c -> { + PreparedStatement ps = c.prepareStatement("insert into tbl_material_extend(material_id,bar_code,commodity_unit," + + "purchase_decimal,commodity_decimal,wholesale_decimal,default_flag,create_time,delete_flag) " + + "values(?,?,'件',?,?,?,'1',now(),'0')", Statement.RETURN_GENERATED_KEYS); + ps.setLong(1, materialId); + ps.setString(2, code); + ps.setBigDecimal(3, price); + ps.setBigDecimal(4, price); + ps.setBigDecimal(5, price); + return ps; + }, extendKey); + result.put("created", true); + result.put("materialId", materialId); + result.put("materialExtendId", Objects.requireNonNull(extendKey.getKey()).longValue()); + result.put("message", "商品信息新增成功"); + return result; + } + + private Long finishedMaterialCategoryId() { + List ids = jdbcTemplate.query( + "select id from tbl_material_category where name='成品' and delete_flag<>'1' order by id limit 1", + (rs, n) -> rs.getLong(1)); + return ids.isEmpty() ? null : ids.get(0); + } + + private void validate(JSONObject info, JSONArray rows) { + if (info == null || info.getString("number") == null || info.getString("number").trim().isEmpty()) + throw new IllegalArgumentException("单据编号不能为空"); + if (!info.getString("number").matches("SM\\d{10}")) + throw new IllegalArgumentException("单据编号格式应为 SM+6位日期+4位流水号,例如 SM2503070001"); + if (rows == null || rows.isEmpty()) throw new IllegalArgumentException("至少需要一条入库明细"); + for (int i = 0; i < rows.size(); i++) { + JSONObject row = rows.getJSONObject(i); + if (first(row, "materialCode", "barCode") == null || first(row, "materialName", "name") == null) + throw new IllegalArgumentException("第 " + (i + 1) + " 行物料代码和成品名称不能为空"); + BigDecimal qty = decimal(row, "qtyPriceAmount", "qty", "operNumber"); + if (qty == null || qty.compareTo(BigDecimal.ZERO) <= 0) + throw new IllegalArgumentException("第 " + (i + 1) + " 行出货量必须大于0"); + } + } + + private Date parseDate(String value) { + if (value == null || value.trim().isEmpty()) return new Date(); + String[] patterns = {"yyyy-MM-dd HH:mm:ss.SSS", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd"}; + for (String pattern : patterns) { + try { + return new SimpleDateFormat(pattern).parse(value.trim()); + } catch (java.text.ParseException ignored) { + // 当前格式不匹配时继续尝试下一格式,全部失败后统一报错。 + } + } + throw new IllegalArgumentException("无法识别单据日期:" + value); + } + + private BigDecimal numeric(Cell cell, DataFormatter formatter) { + if (cell == null) return null; + if (cell.getCellType() == CellType.NUMERIC) return BigDecimal.valueOf(cell.getNumericCellValue()); + String value = formatter.formatCellValue(cell).trim(); + return value.isEmpty() ? null : new BigDecimal(value.replace(",", "")); + } + + private BigDecimal sum(JSONArray rows, String... keys) { + BigDecimal result = BigDecimal.ZERO; + for (int i = 0; i < rows.size(); i++) { + BigDecimal value = decimal(rows.getJSONObject(i), keys); + if (value != null) result = result.add(value); + } + return result; + } + + private String first(JSONObject row, String... keys) { + for (String key : keys) { + String value = row.getString(key); + if (value != null && !value.trim().isEmpty()) return value.trim(); + } + return null; + } + + private BigDecimal decimal(JSONObject row, String... keys) { + for (String key : keys) { + Object value = row.get(key); + if (value != null && !String.valueOf(value).trim().isEmpty()) return new BigDecimal(String.valueOf(value).replace(",", "")); + } + return null; + } + + private BigDecimal bd(Object value) { + return value == null ? null : new BigDecimal(String.valueOf(value)); + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/service/SupplierService.java b/smtERP-boot/src/main/java/com/reallin/smt/service/SupplierService.java new file mode 100644 index 0000000..8163814 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/service/SupplierService.java @@ -0,0 +1,725 @@ +package com.reallin.smt.service; + +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.constants.BusinessConstants; +import com.reallin.smt.constants.ExceptionConstants; +import com.reallin.smt.datasource.entities.*; +import com.reallin.smt.datasource.mappers.*; +import com.reallin.smt.datasource.vo.DepotHeadVo4StatementAccount; +import com.reallin.smt.datasource.vo.SupplierSimple; +import com.reallin.smt.exception.BusinessRunTimeException; +import com.reallin.smt.exception.JshException; +import com.reallin.smt.utils.*; +import jxl.Sheet; +import jxl.Workbook; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.io.File; +import java.math.BigDecimal; +import java.util.*; + + +@Service +public class SupplierService { + private Logger logger = LoggerFactory.getLogger(SupplierService.class); + + @Resource + private SupplierMapper supplierMapper; + + @Resource + private SupplierMapperEx supplierMapperEx; + @Resource + private LogService logService; + @Resource + private UserService userService; + @Resource + private AccountHeadMapperEx accountHeadMapperEx; + @Resource + private DepotHeadMapperEx depotHeadMapperEx; + @Resource + private AccountItemMapperEx accountItemMapperEx; + @Resource + private DepotHeadService depotHeadService; + @Resource + private UserBusinessService userBusinessService; + @Resource + private UserBusinessMapper userBusinessMapper; + + @Value(value="${file.exportTmp}") + private String fileExportTmp; + + public Supplier getSupplier(long id)throws Exception { + Supplier result=null; + try{ + result=supplierMapper.selectByPrimaryKey(id); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return result; + } + + public List getSupplierListByIds(String ids)throws Exception { + List idList = StringUtil.strToLongList(ids); + List list = new ArrayList<>(); + try{ + SupplierExample example = new SupplierExample(); + example.createCriteria().andIdIn(idList); + list = supplierMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public List getSupplier()throws Exception { + SupplierExample example = new SupplierExample(); + example.createCriteria().andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list=null; + try{ + list=supplierMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public List select(String supplier, String type, String contacts, String phonenum, String telephone, Long categoryId) throws Exception{ + List list = new ArrayList<>(); + try{ + String [] creatorArray = depotHeadService.getCreatorArray(); + PageUtils.startPage(); + list = supplierMapperEx.selectByConditionSupplier(supplier, type, contacts, phonenum, telephone, creatorArray, categoryId); + for(Supplier s : list) { + Integer supplierId = s.getId().intValue(); + String beginTime = Tools.getYearBegin(); + String endTime = Tools.getCenternTime(new Date()); + BigDecimal sum = BigDecimal.ZERO; + String supplierType = type; + String inOutType = ""; + String subType = ""; + String typeBack = ""; + String subTypeBack = ""; + String billType = ""; + if (("供应商").equals(supplierType)) { + inOutType = "入库"; + subType = "采购"; + typeBack = "出库"; + subTypeBack = "采购退货"; + billType = "付款"; + } else if (("客户").equals(supplierType)) { + inOutType = "出库"; + subType = "销售"; + typeBack = "入库"; + subTypeBack = "销售退货"; + billType = "收款"; + } + List saList = depotHeadService.getStatementAccount(beginTime, endTime, supplierId, null, + 1, supplierType, inOutType, subType, typeBack, subTypeBack, billType, null, null); + if(saList.size()>0) { + DepotHeadVo4StatementAccount item = saList.get(0); + //期初 = 起始期初金额+上期欠款金额-上期退货的欠款金额-上期收付款 + BigDecimal preNeed = item.getBeginNeed().add(item.getPreDebtMoney()).subtract(item.getPreReturnDebtMoney()).subtract(item.getPreBackMoney()); + item.setPreNeed(preNeed); + //实际欠款 = 本期欠款-本期退货的欠款金额 + BigDecimal realDebtMoney = item.getDebtMoney().subtract(item.getReturnDebtMoney()); + item.setDebtMoney(realDebtMoney); + //期末 = 期初+实际欠款-本期收款 + BigDecimal allNeedGet = preNeed.add(realDebtMoney).subtract(item.getBackMoney()); + sum = sum.add(allNeedGet); + } + if(("客户").equals(s.getType())) { + s.setAllNeedGet(sum); + } else if(("供应商").equals(s.getType())) { + s.setAllNeedPay(sum); + } + } + } catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int insertSupplier(JSONObject obj, HttpServletRequest request)throws Exception { + Supplier supplier = JSONObject.parseObject(obj.toJSONString(), Supplier.class); + int result=0; + try{ + supplier.setEnabled(true); + User userInfo=userService.getCurrentUser(); + supplier.setCreator(userInfo==null?null:userInfo.getId()); + result=supplierMapper.insertSelective(supplier); + //新增客户时给当前用户和租户自动授权 + setUserCustomerPermission(request, supplier); + logService.insertLog("商家", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_ADD).append(supplier.getSupplier()).toString(),request); + // 将生成的ID回写到obj中 + obj.put("id", supplier.getId()); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int updateSupplier(JSONObject obj, HttpServletRequest request)throws Exception { + Supplier supplier = JSONObject.parseObject(obj.toJSONString(), Supplier.class); + if(supplier.getBeginNeedPay() == null) { + supplier.setBeginNeedPay(BigDecimal.ZERO); + } + if(supplier.getBeginNeedGet() == null) { + supplier.setBeginNeedGet(BigDecimal.ZERO); + } + int result=0; + try{ + result=supplierMapper.updateByPrimaryKeySelective(supplier); + logService.insertLog("商家", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_EDIT).append(supplier.getSupplier()).toString(), request); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int deleteSupplier(Long id, HttpServletRequest request)throws Exception { + return batchDeleteSupplierByIds(id.toString()); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteSupplier(String ids, HttpServletRequest request) throws Exception{ + return batchDeleteSupplierByIds(ids); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteSupplierByIds(String ids)throws Exception { + int result=0; + String [] idArray=ids.split(","); + //校验财务主表 tbl_accounthead + List accountHeadList=null; + try{ + accountHeadList = accountHeadMapperEx.getAccountHeadListByOrganIds(idArray); + }catch(Exception e){ + JshException.readFail(logger, e); + } + if(accountHeadList!=null&&accountHeadList.size()>0){ + logger.error("异常码[{}],异常提示[{}],参数,OrganIds[{}]", + ExceptionConstants.DELETE_FORCE_CONFIRM_CODE,ExceptionConstants.DELETE_FORCE_CONFIRM_MSG,ids); + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, + ExceptionConstants.DELETE_FORCE_CONFIRM_MSG); + } + //校验单据主表 tbl_depot_head + List depotHeadList=null; + try{ + depotHeadList = depotHeadMapperEx.getDepotHeadListByOrganIds(idArray); + }catch(Exception e){ + JshException.readFail(logger, e); + } + if(depotHeadList!=null&&depotHeadList.size()>0){ + logger.error("异常码[{}],异常提示[{}],参数,OrganIds[{}]", + ExceptionConstants.DELETE_FORCE_CONFIRM_CODE,ExceptionConstants.DELETE_FORCE_CONFIRM_MSG,ids); + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, + ExceptionConstants.DELETE_FORCE_CONFIRM_MSG); + } + //记录日志 + StringBuffer sb = new StringBuffer(); + sb.append(BusinessConstants.LOG_OPERATION_TYPE_DELETE); + List list = getSupplierListByIds(ids); + for(Supplier supplier: list){ + sb.append("[").append(supplier.getSupplier()).append("]"); + } + logService.insertLog("商家", sb.toString(), + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); + User userInfo=userService.getCurrentUser(); + //校验通过执行删除操作 + try{ + result = supplierMapperEx.batchDeleteSupplierByIds(new Date(),userInfo==null?null:userInfo.getId(),idArray); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + public int checkIsNameExist(Long id, String name)throws Exception { + SupplierExample example = new SupplierExample(); + example.createCriteria().andIdNotEqualTo(id).andSupplierEqualTo(name).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list=null; + try{ + list= supplierMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list==null?0:list.size(); + } + + public int checkIsNameAndTypeExist(Long id, String name, String type)throws Exception { + name = name == null? "": name; + SupplierExample example = new SupplierExample(); + example.createCriteria().andIdNotEqualTo(id).andSupplierEqualTo(name).andTypeEqualTo(type) + .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list=null; + try{ + list= supplierMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list==null?0:list.size(); + } + + /** + * 更新会员的预付款 + * @param supplierId + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public void updateAdvanceIn(Long supplierId) { + try{ + //查询会员在收预付款单据的总金额 + BigDecimal financialAllPrice = accountHeadMapperEx.getFinancialAllPriceByOrganId(supplierId); + //查询会员在零售出库单据的总金额 + BigDecimal billAllPrice = depotHeadMapperEx.getBillAllPriceByOrganId(supplierId); + Supplier supplier = new Supplier(); + supplier.setId(supplierId); + supplier.setAdvanceIn(financialAllPrice.subtract(billAllPrice)); + supplierMapper.updateByPrimaryKeySelective(supplier); + } catch (Exception e){ + JshException.writeFail(logger, e); + } + } + + public List findBySelectCus(String key, Long organId, Integer limit)throws Exception { + List list=null; + try{ + list = supplierMapperEx.findByTypeAndKey("客户", key, limit); + if(organId!=null) { + list = addOrganToList(list, organId); + } + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public List findBySelectSup(String key, Long organId, Integer limit)throws Exception { + List list=null; + try{ + list = supplierMapperEx.findByTypeAndKey("供应商", key, limit); + if(organId!=null) { + list = addOrganToList(list, organId); + } + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public List findBySelectRetail(String key, Long organId, Integer limit)throws Exception { + List list=null; + try{ + list = supplierMapperEx.findByTypeAndKey("会员", key, limit); + if(organId!=null) { + list = addOrganToList(list, organId); + } + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + /** + * 给列表追加供应商信息 + * @param list + * @param organId + * @return + */ + public List addOrganToList(List list, Long organId) { + boolean isExist = false; + for(Supplier supplier: list) { + if(supplier.getId().equals(organId)) { + isExist = true; + } + } + if(!isExist) { + //列表里面不存在则追加 + Supplier info = supplierMapperEx.getInfoById(organId); + if(info!=null) { + list.add(info); + } + } + return list; + } + + public List findById(Long supplierId)throws Exception { + SupplierExample example = new SupplierExample(); + example.createCriteria().andIdEqualTo(supplierId) + .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + example.setOrderByClause("sort asc, id desc"); + List list=null; + try{ + list = supplierMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchSetStatus(Boolean status, String ids)throws Exception { + logService.insertLog("商家", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_ENABLED).toString(), + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); + List supplierIds = StringUtil.strToLongList(ids); + Supplier supplier = new Supplier(); + supplier.setEnabled(status); + SupplierExample example = new SupplierExample(); + example.createCriteria().andIdIn(supplierIds); + int result=0; + try{ + result = supplierMapper.updateByExampleSelective(supplier, example); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + public List findUserCustomer()throws Exception{ + SupplierExample example = new SupplierExample(); + example.createCriteria().andTypeEqualTo("客户") + .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + example.setOrderByClause("sort asc, id desc"); + List list=null; + try{ + list = supplierMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public List findByAll(String supplier, String type, String phonenum, String telephone) throws Exception{ + List list=null; + try{ + list = supplierMapperEx.findByAll(supplier, type, phonenum, telephone); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public Map getBeginNeedByOrganId(Long organId) throws Exception { + Supplier supplier = getSupplier(organId); + Map map = new HashMap<>(); + BigDecimal needDebt = BigDecimal.ZERO; + if("供应商".equals(supplier.getType())) { + needDebt = supplier.getBeginNeedPay(); + } else if("客户".equals(supplier.getType())) { + needDebt = supplier.getBeginNeedGet(); + } + BigDecimal finishDebt = accountItemMapperEx.getFinishDebtByOrganId(organId).abs(); + BigDecimal eachAmount = BigDecimal.ZERO; + if(needDebt != null) { + eachAmount = needDebt.subtract(finishDebt); + } + //应收欠款 + map.put("needDebt", needDebt); + //已收欠款 + map.put("finishDebt", finishDebt); + //本次收款 + map.put("eachAmount", eachAmount); + return map; + } + + /** + * 校验文件格式 + * @param file + */ + public void checkFileExt(MultipartFile file) { + //文件扩展名只能为xls + String fileName = file.getOriginalFilename(); + if(StringUtil.isNotEmpty(fileName)) { + String fileExt = fileName.substring(fileName.lastIndexOf(".")+1); + if(!"xls".equals(fileExt)) { + throw new BusinessRunTimeException(ExceptionConstants.FILE_EXTENSION_ERROR_CODE, + ExceptionConstants.FILE_EXTENSION_ERROR_MSG); + } + } + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public void importVendor(MultipartFile file, HttpServletRequest request) throws Exception{ + String type = "供应商"; + User userInfo = userService.getCurrentUser(); + Workbook workbook = Workbook.getWorkbook(file.getInputStream()); + Sheet src = workbook.getSheet(0); + //'名称', '联系人', '手机号码', '联系电话', '电子邮箱', '传真', '期初应付', '纳税人识别号', '税率(%)', '开户行', '账号', '地址', '备注', '排序', '状态' + List sList = new ArrayList<>(); + for (int i = 2; i < src.getRows(); i++) { + String supplierName = ExcelUtils.getContent(src, i, 0); + String enabled = ExcelUtils.getContent(src, i, 14); + if(StringUtil.isNotEmpty(supplierName) && StringUtil.isNotEmpty(enabled)) { + Supplier s = new Supplier(); + s.setType(type); + s.setSupplier(supplierName); + s.setContacts(ExcelUtils.getContent(src, i, 1)); + s.setTelephone(ExcelUtils.getContent(src, i, 2)); + s.setPhoneNum(ExcelUtils.getContent(src, i, 3)); + s.setEmail(ExcelUtils.getContent(src, i, 4)); + s.setFax(ExcelUtils.getContent(src, i, 5)); + s.setBeginNeedPay(parseBigDecimalEx(ExcelUtils.getContent(src, i, 6))); + s.setTaxNum(ExcelUtils.getContent(src, i, 7)); + s.setTaxRate(parseBigDecimalEx(ExcelUtils.getContent(src, i, 8))); + s.setBankName(ExcelUtils.getContent(src, i, 9)); + s.setAccountNumber(ExcelUtils.getContent(src, i, 10)); + s.setAddress(ExcelUtils.getContent(src, i, 11)); + s.setDescription(ExcelUtils.getContent(src, i, 12)); + s.setSort(ExcelUtils.getContent(src, i, 13)); + s.setCreator(userInfo==null?null:userInfo.getId()); + s.setEnabled("1".equals(enabled)); + sList.add(s); + } + } + importExcel(sList, type, request); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public void importCustomer(MultipartFile file, HttpServletRequest request) throws Exception{ + String type = "客户"; + User userInfo = userService.getCurrentUser(); + Workbook workbook = Workbook.getWorkbook(file.getInputStream()); + Sheet src = workbook.getSheet(0); + //'名称', '联系人', '手机号码', '联系电话', '电子邮箱', '传真', '期初应收', '纳税人识别号', '税率(%)', '开户行', '账号', '地址', '备注', '排序', '状态' + List sList = new ArrayList<>(); + for (int i = 2; i < src.getRows(); i++) { + String supplierName = ExcelUtils.getContent(src, i, 0); + String enabled = ExcelUtils.getContent(src, i, 14); + if(StringUtil.isNotEmpty(supplierName) && StringUtil.isNotEmpty(enabled)) { + Supplier s = new Supplier(); + s.setType(type); + s.setSupplier(supplierName); + s.setContacts(ExcelUtils.getContent(src, i, 1)); + s.setTelephone(ExcelUtils.getContent(src, i, 2)); + s.setPhoneNum(ExcelUtils.getContent(src, i, 3)); + s.setEmail(ExcelUtils.getContent(src, i, 4)); + s.setFax(ExcelUtils.getContent(src, i, 5)); + s.setBeginNeedGet(parseBigDecimalEx(ExcelUtils.getContent(src, i, 6))); + s.setTaxNum(ExcelUtils.getContent(src, i, 7)); + s.setTaxRate(parseBigDecimalEx(ExcelUtils.getContent(src, i, 8))); + s.setBankName(ExcelUtils.getContent(src, i, 9)); + s.setAccountNumber(ExcelUtils.getContent(src, i, 10)); + s.setAddress(ExcelUtils.getContent(src, i, 11)); + s.setDescription(ExcelUtils.getContent(src, i, 12)); + s.setSort(ExcelUtils.getContent(src, i, 13)); + s.setCreator(userInfo==null?null:userInfo.getId()); + s.setEnabled("1".equals(enabled)); + sList.add(s); + } + } + importExcel(sList, type, request); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public void importMember(MultipartFile file, HttpServletRequest request) throws Exception{ + String type = "会员"; + User userInfo = userService.getCurrentUser(); + Workbook workbook = Workbook.getWorkbook(file.getInputStream()); + Sheet src = workbook.getSheet(0); + //'名称', '联系人', '手机号码', '联系电话', '电子邮箱', '备注', '排序', '状态' + List sList = new ArrayList<>(); + for (int i = 2; i < src.getRows(); i++) { + String supplierName = ExcelUtils.getContent(src, i, 0); + String enabled = ExcelUtils.getContent(src, i, 7); + if(StringUtil.isNotEmpty(supplierName) && StringUtil.isNotEmpty(enabled)) { + Supplier s = new Supplier(); + s.setType(type); + s.setSupplier(supplierName); + s.setContacts(ExcelUtils.getContent(src, i, 1)); + s.setTelephone(ExcelUtils.getContent(src, i, 2)); + s.setPhoneNum(ExcelUtils.getContent(src, i, 3)); + s.setEmail(ExcelUtils.getContent(src, i, 4)); + s.setDescription(ExcelUtils.getContent(src, i, 5)); + s.setSort(ExcelUtils.getContent(src, i, 6)); + s.setCreator(userInfo==null?null:userInfo.getId()); + s.setEnabled("1".equals(enabled)); + sList.add(s); + } + } + importExcel(sList, type, request); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public BaseResponseInfo importExcel(List mList, String type, HttpServletRequest request) throws Exception { + logService.insertLog(type, + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_IMPORT).append(mList.size()).append(BusinessConstants.LOG_DATA_UNIT).toString(), + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); + BaseResponseInfo info = new BaseResponseInfo(); + Map data = new HashMap<>(); + try { + for(Supplier supplier: mList) { + SupplierExample example = new SupplierExample(); + example.createCriteria().andSupplierEqualTo(supplier.getSupplier()).andTypeEqualTo(type).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list= supplierMapper.selectByExample(example); + if(list.size() <= 0) { + supplierMapper.insertSelective(supplier); + //新增客户时给当前用户和租户自动授权 + setUserCustomerPermission(request, supplier); + } else { + Long id = list.get(0).getId(); + supplier.setId(id); + supplierMapper.updateByPrimaryKeySelective(supplier); + } + } + info.code = 200; + data.put("message", "成功"); + } catch (Exception e) { + logger.error(e.getMessage(), e); + info.code = 500; + data.put("message", e.getMessage()); + } + info.data = data; + return info; + } + + public BigDecimal parseBigDecimalEx(String str)throws Exception{ + if(!StringUtil.isEmpty(str)) { + return new BigDecimal(str); + } else { + return null; + } + } + + public File exportExcel(List dataList, String type) throws Exception { + if("供应商".equals(type)) { + return exportExcelVendorOrCustomer(dataList, type); + } else if("客户".equals(type)) { + return exportExcelVendorOrCustomer(dataList, type); + } else { + //会员 + String[] names = {"会员卡号*", "联系人", "手机号码", "联系电话", "电子邮箱", "备注", "排序", "状态*"}; + String title = "信息内容"; + List objects = new ArrayList<>(); + if (null != dataList) { + for (Supplier s : dataList) { + Object[] objs = new Object[names.length]; + objs[0] = s.getSupplier(); + objs[1] = s.getContacts(); + objs[2] = s.getTelephone(); + objs[3] = s.getPhoneNum(); + objs[4] = s.getEmail(); + objs[5] = s.getDescription(); + objs[6] = s.getSort(); + objs[7] = s.getEnabled() ? "1" : "0"; + objects.add(objs); + } + } + return ExcelUtils.exportObjectsOneSheet(fileExportTmp, title, "*导入时本行内容请勿删除,切记!", names, title, objects); + } + } + + private File exportExcelVendorOrCustomer(List dataList, String type) throws Exception { + String beginNeedStr = ""; + if("供应商".equals(type)) { + beginNeedStr = "期初应付"; + } else if("客户".equals(type)) { + beginNeedStr = "期初应收"; + } + String[] names = {"名称*", "联系人", "手机号码", "联系电话", "电子邮箱", "传真", beginNeedStr, + "纳税人识别号", "税率(%)", "开户行", "账号", "地址", "备注", "排序", "状态*"}; + String title = "信息内容"; + List objects = new ArrayList<>(); + if (null != dataList) { + for (Supplier s : dataList) { + Object[] objs = new Object[names.length]; + objs[0] = s.getSupplier(); + objs[1] = s.getContacts(); + objs[2] = s.getTelephone(); + objs[3] = s.getPhoneNum(); + objs[4] = s.getEmail(); + objs[5] = s.getFax(); + if(("客户").equals(s.getType())) { + objs[6] = s.getBeginNeedGet() == null? "" : s.getBeginNeedGet().setScale(2,BigDecimal.ROUND_HALF_UP); + } else if(("供应商").equals(s.getType())) { + objs[6] = s.getBeginNeedPay() == null? "" : s.getBeginNeedPay().setScale(2,BigDecimal.ROUND_HALF_UP); + } + objs[7] = s.getTaxNum(); + objs[8] = s.getTaxRate() == null? "" : s.getTaxRate().setScale(2,BigDecimal.ROUND_HALF_UP); + objs[9] = s.getBankName(); + objs[10] = s.getAccountNumber(); + objs[11] = s.getAddress(); + objs[12] = s.getDescription(); + objs[13] = s.getSort(); + objs[14] = s.getEnabled() ? "1" : "0"; + objects.add(objs); + } + } + return ExcelUtils.exportObjectsOneSheet(fileExportTmp, title, "*导入时本行内容请勿删除,切记!", names, title, objects); + } + + /** + * 新增客户时给当前用户和租户自动授权 + * @param request + * @param supplier + * @throws Exception + */ + private void setUserCustomerPermission(HttpServletRequest request, Supplier supplier) throws Exception { + if("客户".equals(supplier.getType())) { + User user = userService.getCurrentUser(); + Supplier sInfo = supplierMapperEx.getSupplierByNameAndType(supplier.getSupplier(), supplier.getType()); + String ubKey = "[" + sInfo.getId() + "]"; + //授权当前用户 + setPermissionByParam(user.getId(), ubKey); + } + } + + /** + * 权限授权操作 + * @param userId + * @param ubKey + * @throws Exception + */ + private void setPermissionByParam(Long userId, String ubKey) throws Exception { + List ubList = userBusinessService.getBasicData(userId.toString(), "UserCustomer"); + if(ubList ==null || ubList.size() == 0) { + JSONObject ubObj = new JSONObject(); + ubObj.put("type", "UserCustomer"); + ubObj.put("keyId", userId); + ubObj.put("value", ubKey); + UserBusiness userBusiness = JSONObject.parseObject(ubObj.toJSONString(), UserBusiness.class); + userBusinessMapper.insertSelective(userBusiness); + } else { + UserBusiness ubInfo = ubList.get(0); + JSONObject ubObj = new JSONObject(); + ubObj.put("id", ubInfo.getId()); + ubObj.put("type", ubInfo.getType()); + ubObj.put("keyId", ubInfo.getKeyId()); + ubObj.put("value", ubInfo.getValue() + ubKey); + UserBusiness userBusiness = JSONObject.parseObject(ubObj.toJSONString(), UserBusiness.class); + userBusinessMapper.updateByPrimaryKeySelective(userBusiness); + } + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchSetAdvanceIn(String ids) throws Exception { + int res = 0; + List idList = StringUtil.strToLongList(ids); + for(Long sId: idList) { + updateAdvanceIn(sId); + res = 1; + } + return res; + } + + public List getAllCustomer() { + return supplierMapperEx.getAllCustomer(); + } + + public Supplier getInfoByName(String name, String type) { + return supplierMapperEx.getInfoByName(name, type); + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/service/SysDictDataService.java b/smtERP-boot/src/main/java/com/reallin/smt/service/SysDictDataService.java new file mode 100644 index 0000000..3cb7639 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/service/SysDictDataService.java @@ -0,0 +1,165 @@ +package com.reallin.smt.service; + +import com.reallin.smt.constants.BusinessConstants; +import com.reallin.smt.datasource.entities.SysDictData; +import com.reallin.smt.datasource.mappers.SysDictDataMapper; +import com.reallin.smt.exception.JshException; +import com.reallin.smt.utils.DictUtils; +import com.reallin.smt.utils.PageUtils; +import com.reallin.smt.utils.StringUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.List; + +/** + * 字典 业务层处理 + * + * @author jishenghua + */ +@Service +public class SysDictDataService { + + private Logger logger = LoggerFactory.getLogger(SysDictDataService.class); + + @Resource + private LogService logService; + + @Resource + private SysDictDataMapper dictDataMapper; + + /** + * 根据条件分页查询字典数据 + * + * @param dictData 字典数据信息 + * @return 字典数据集合信息 + */ + public List selectDictDataList(SysDictData dictData) + { + PageUtils.startPage(); + return dictDataMapper.selectDictDataList(dictData); + } + + /** + * 根据字典类型和字典键值查询字典数据信息 + * + * @param dictType 字典类型 + * @param dictValue 字典键值 + * @return 字典标签 + */ + public String selectDictLabel(String dictType, String dictValue) + { + return dictDataMapper.selectDictLabel(dictType, dictValue); + } + + /** + * 根据字典数据ID查询信息 + * + * @param dictCode 字典数据ID + * @return 字典数据 + */ + public SysDictData selectDictDataById(Long dictCode) + { + return dictDataMapper.selectDictDataById(dictCode); + } + + /** + * 批量删除字典数据信息 + * + * @param dictCodes 需要删除的字典数据ID + */ + public void deleteDictDataByIds(Long[] dictCodes) + { + for (Long dictCode : dictCodes) + { + SysDictData data = selectDictDataById(dictCode); + dictDataMapper.deleteDictDataById(dictCode); + List dictDatas = dictDataMapper.selectDictDataByType(data.getDictType()); + DictUtils.setDictCache(data.getDictType(), dictDatas); + } + } + + /** + * 新增保存字典数据信息 + * + * @param data 字典数据信息 + * @return 结果 + */ + public int insertDictData(SysDictData data) + { + int row = dictDataMapper.insertDictData(data); + if (row > 0) + { + List dictDatas = dictDataMapper.selectDictDataByType(data.getDictType()); + DictUtils.setDictCache(data.getDictType(), dictDatas); + } + return row; + } + + /** + * 修改保存字典数据信息 + * + * @param data 字典数据信息 + * @return 结果 + */ + public int updateDictData(SysDictData data) + { + int row = dictDataMapper.updateDictData(data); + if (row > 0) + { + List dictDatas = dictDataMapper.selectDictDataByType(data.getDictType()); + DictUtils.setDictCache(data.getDictType(), dictDatas); + } + return row; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int deleteDictData(Long id, HttpServletRequest request) throws Exception { + return batchDeleteDictDataByIds(id.toString()); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteDictData(String ids, HttpServletRequest request) throws Exception { + return batchDeleteDictDataByIds(ids); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteDictDataByIds(String ids)throws Exception { + int result = 0; + String[] idArray = ids.split(","); + try { + //记录日志 + String dictType = ""; + StringBuffer sb = new StringBuffer(); + sb.append(BusinessConstants.LOG_OPERATION_TYPE_DELETE); + List list = getDictDataListByIds(ids); + if(!list.isEmpty()) { + dictType = list.get(0).getDictType(); + sb.append("字典:").append(dictType).append("下的数据:"); + } + for(SysDictData sysDictData: list){ + sb.append("[").append(sysDictData.getDictLabel()).append("]"); + } + result = dictDataMapper.batchDeleteDictDataByIds(idArray); + List dictDatas = dictDataMapper.selectDictDataByType(dictType); + DictUtils.setDictCache(dictType, dictDatas); + //记录日志 + logService.insertLog("字典数据", sb.toString(), + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); + } catch (Exception e) { + JshException.writeFail(logger, e); + } + return result; + } + + public List getDictDataListByIds(String ids)throws Exception { + List idList = StringUtil.strToLongList(ids); + return dictDataMapper.getDictDataListByIds(idList); + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/service/SysDictTypeService.java b/smtERP-boot/src/main/java/com/reallin/smt/service/SysDictTypeService.java new file mode 100644 index 0000000..7d3d394 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/service/SysDictTypeService.java @@ -0,0 +1,257 @@ +package com.reallin.smt.service; + +import com.alibaba.fastjson.JSONArray; +import com.reallin.smt.constants.BusinessConstants; +import com.reallin.smt.constants.ExceptionConstants; +import com.reallin.smt.datasource.entities.Depot; +import com.reallin.smt.datasource.entities.DepotExample; +import com.reallin.smt.datasource.entities.SysDictData; +import com.reallin.smt.datasource.entities.SysDictType; +import com.reallin.smt.datasource.mappers.SysDictDataMapper; +import com.reallin.smt.datasource.mappers.SysDictTypeMapper; +import com.reallin.smt.exception.BusinessRunTimeException; +import com.reallin.smt.exception.JshException; +import com.reallin.smt.utils.DictUtils; +import com.reallin.smt.utils.PageUtils; +import com.reallin.smt.utils.StringUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.annotation.PostConstruct; +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.*; +import java.util.stream.Collectors; + +/** + * 字典 业务层处理 + * + * @author jishenghua + */ +@Service +public class SysDictTypeService { + + private Logger logger = LoggerFactory.getLogger(SysDictTypeService.class); + + @Resource + private LogService logService; + + @Resource + private SysDictTypeMapper dictTypeMapper; + + @Resource + private SysDictDataMapper dictDataMapper; + + @Resource + private RedisService redisService; + + /** + * 项目启动时,初始化字典到缓存 + */ + @PostConstruct + public void init() + { + loadingDictCache(); + } + + /** + * 根据条件分页查询字典类型 + * + * @param dictType 字典类型信息 + * @return 字典类型集合信息 + */ + public List selectDictTypeList(SysDictType dictType) + { + PageUtils.startPage(); + return dictTypeMapper.selectDictTypeList(dictType); + } + + /** + * 根据所有字典类型 + * + * @return 字典类型集合信息 + */ + public List selectDictTypeAll() + { + return dictTypeMapper.selectDictTypeAll(); + } + + /** + * 根据字典类型查询字典数据 + * + * @param dictType 字典类型 + * @return 字典数据集合信息 + */ + public List selectDictDataByType(String dictType) + { + List dictDatas = DictUtils.getDictCache(dictType); + if (dictDatas!=null && !dictDatas.isEmpty()) { + return dictDatas; + } + dictDatas = dictDataMapper.selectDictDataByType(dictType); + if (dictDatas!=null && !dictDatas.isEmpty()) { + DictUtils.setDictCache(dictType, dictDatas); + return dictDatas; + } + return null; + } + + /** + * 根据字典类型ID查询信息 + * + * @param dictId 字典类型ID + * @return 字典类型 + */ + public SysDictType selectDictTypeById(Long dictId) + { + return dictTypeMapper.selectDictTypeById(dictId); + } + + /** + * 根据字典类型查询信息 + * + * @param dictType 字典类型 + * @return 字典类型 + */ + public SysDictType selectDictTypeByType(String dictType) + { + return dictTypeMapper.selectDictTypeByType(dictType); + } + + /** + * 加载字典缓存数据 + */ + public void loadingDictCache() + { + SysDictData dictData = new SysDictData(); + dictData.setStatus("0"); + Map> dictDataMap = dictDataMapper.selectDictDataList(dictData).stream().collect(Collectors.groupingBy(SysDictData::getDictType)); + for (Map.Entry> entry : dictDataMap.entrySet()) + { + DictUtils.setDictCache(entry.getKey(), entry.getValue().stream().sorted(Comparator.comparing(SysDictData::getDictSort)).collect(Collectors.toList())); + } + } + + /** + * 清空字典缓存数据 + */ + public void clearDictCache() + { + DictUtils.clearDictCache(); + } + + /** + * 重置字典缓存数据 + */ + public void resetDictCache() + { + clearDictCache(); + loadingDictCache(); + } + + /** + * 新增保存字典类型信息 + * + * @param dict 字典类型信息 + * @return 结果 + */ + public int insertDictType(SysDictType dict) + { + int row = dictTypeMapper.insertDictType(dict); + if (row > 0) + { + DictUtils.setDictCache(dict.getDictType(), null); + } + return row; + } + + /** + * 修改保存字典类型信息 + * + * @param dict 字典类型信息 + * @return 结果 + */ + @Transactional + public int updateDictType(SysDictType dict) + { + SysDictType oldDict = dictTypeMapper.selectDictTypeById(dict.getDictId()); + dictDataMapper.updateDictDataType(oldDict.getDictType(), dict.getDictType()); + int row = dictTypeMapper.updateDictType(dict); + if (row > 0) + { + List dictDatas = dictDataMapper.selectDictDataByType(dict.getDictType()); + DictUtils.setDictCache(dict.getDictType(), dictDatas); + } + return row; + } + + /** + * 校验字典类型称是否唯一 + * + * @param dict 字典类型 + * @return 结果 + */ + public boolean checkDictTypeUnique(SysDictType dict) + { + Long dictId = StringUtil.isNull(dict.getDictId()) ? -1L : dict.getDictId(); + SysDictType dictType = dictTypeMapper.checkDictTypeUnique(dict.getDictType()); + if (StringUtil.isNotNull(dictType) && dictType.getDictId().longValue() != dictId.longValue()) + { + return false; + } + return true; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int deleteDictType(Long id, HttpServletRequest request) throws Exception { + return batchDeleteDictTypeByIds(id.toString()); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteDictType(String ids, HttpServletRequest request) throws Exception { + return batchDeleteDictTypeByIds(ids); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteDictTypeByIds(String ids)throws Exception { + int result=0; + String [] idArray=ids.split(","); + List dictTypeList = new ArrayList<>(); + for (String dictId : idArray) { + SysDictType dictType = selectDictTypeById(Long.valueOf(dictId)); + dictTypeList.add(dictType.getDictType()); + if (dictDataMapper.countDictDataByType(dictType.getDictType()) > 0) { + throw new BusinessRunTimeException(ExceptionConstants.DICT_TYPE_ALREADY_USED_CODE, + String.format(ExceptionConstants.DICT_TYPE_ALREADY_USED_MSG, dictType.getDictName())); + } + } + try { + //记录日志 + StringBuffer sb = new StringBuffer(); + sb.append(BusinessConstants.LOG_OPERATION_TYPE_DELETE); + List list = getDictTypeListByIds(ids); + for(SysDictType sysDictType: list){ + sb.append("[").append(sysDictType.getDictName()).append("]"); + } + result = dictTypeMapper.batchDeleteDictTypeByIds(idArray); + for (String dictType : dictTypeList) { + DictUtils.removeDictCache(dictType); + } + //记录日志 + logService.insertLog("字典类型", sb.toString(), + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); + } catch (Exception e) { + JshException.writeFail(logger, e); + } + return result; + } + + public List getDictTypeListByIds(String ids)throws Exception { + List idList = StringUtil.strToLongList(ids); + return dictTypeMapper.getDictTypeListByIds(idList); + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/service/SystemConfigService.java b/smtERP-boot/src/main/java/com/reallin/smt/service/SystemConfigService.java new file mode 100644 index 0000000..2574833 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/service/SystemConfigService.java @@ -0,0 +1,681 @@ +package com.reallin.smt.service; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.aliyun.oss.ClientException; +import com.aliyun.oss.OSS; +import com.aliyun.oss.OSSClientBuilder; +import com.aliyun.oss.OSSException; +import com.aliyun.oss.model.CopyObjectResult; +import com.aliyun.oss.model.PutObjectRequest; +import com.reallin.smt.constants.BusinessConstants; +import com.reallin.smt.datasource.entities.SystemConfig; +import com.reallin.smt.datasource.entities.SystemConfigExample; +import com.reallin.smt.datasource.entities.User; +import com.reallin.smt.datasource.mappers.SystemConfigMapper; +import com.reallin.smt.datasource.mappers.SystemConfigMapperEx; +import com.reallin.smt.exception.JshException; +import com.reallin.smt.utils.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.FileCopyUtils; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import javax.imageio.ImageIO; +import javax.imageio.stream.ImageOutputStream; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.awt.*; +import java.awt.image.BufferedImage; +import java.io.*; +import java.net.HttpURLConnection; +import java.net.URL; +import java.nio.file.*; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +@Service +public class SystemConfigService { + private Logger logger = LoggerFactory.getLogger(SystemConfigService.class); + + @Resource + private SystemConfigMapper systemConfigMapper; + @Resource + private SystemConfigMapperEx systemConfigMapperEx; + @Resource + private PlatformConfigService platformConfigService; + @Resource + private UserService userService; + @Resource + private LogService logService; + + @Value(value="${file.uploadType}") + private Long fileUploadType; + + @Value(value="${file.path}") + private String filePath; + + @Value(value="${file.exportTmp}") + private String fileExportTmp; + + private static String DELETED = "deleted"; + + public SystemConfig getSystemConfig(long id)throws Exception { + SystemConfig result=null; + try{ + result=systemConfigMapper.selectByPrimaryKey(id); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return result; + } + + public List getSystemConfig()throws Exception { + SystemConfigExample example = new SystemConfigExample(); + example.createCriteria().andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list=null; + try{ + list=systemConfigMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + public List select(String companyName)throws Exception { + List list=null; + try{ + PageUtils.startPage(); + list=systemConfigMapperEx.selectByConditionSystemConfig(companyName); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int insertSystemConfig(JSONObject obj, HttpServletRequest request) throws Exception{ + SystemConfig systemConfig = JSONObject.parseObject(obj.toJSONString(), SystemConfig.class); + int result=0; + try{ + result=systemConfigMapper.insertSelective(systemConfig); + String logInfo = StringUtil.isNotEmpty(systemConfig.getCompanyName())?systemConfig.getCompanyName():"配置信息"; + logService.insertLogWithUserId(userService.getCurrentUser().getId(), userService.getCurrentUser().getTenantId(), "系统配置", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_ADD).append(logInfo).toString(), request); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int updateSystemConfig(JSONObject obj, HttpServletRequest request) throws Exception{ + SystemConfig systemConfig = JSONObject.parseObject(obj.toJSONString(), SystemConfig.class); + int result=0; + try{ + result = systemConfigMapper.updateByPrimaryKeySelective(systemConfig); + String logInfo = StringUtil.isNotEmpty(systemConfig.getCompanyName())?systemConfig.getCompanyName():"配置信息"; + logService.insertLogWithUserId(userService.getCurrentUser().getId(), userService.getCurrentUser().getTenantId(), "系统配置", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_EDIT).append(logInfo).toString(), request); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int deleteSystemConfig(Long id, HttpServletRequest request)throws Exception { + return batchDeleteSystemConfigByIds(id.toString()); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteSystemConfig(String ids, HttpServletRequest request)throws Exception { + return batchDeleteSystemConfigByIds(ids); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteSystemConfigByIds(String ids)throws Exception { + logService.insertLog("系统配置", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_DELETE).append(ids).toString(), + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); + User userInfo=userService.getCurrentUser(); + String [] idArray=ids.split(","); + int result=0; + try{ + result = systemConfigMapperEx.batchDeleteSystemConfigByIds(new Date(), userInfo == null ? null : userInfo.getId(), idArray); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + public int checkIsNameExist(Long id, String name) throws Exception{ + SystemConfigExample example = new SystemConfigExample(); + example.createCriteria().andIdNotEqualTo(id).andCompanyNameEqualTo(name).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list =null; + try{ + list=systemConfigMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list==null?0:list.size(); + } + + /** + * 本地文件上传 + * @param mf 文件 + * @param bizPath 自定义路径 + * @return + */ + public String uploadLocal(MultipartFile mf, String bizPath, HttpServletRequest request) throws Exception { + try { + if(StringUtil.isEmpty(bizPath)){ + bizPath = ""; + } + // Validate bizPath to prevent directory traversal + if (bizPath.contains("..") || bizPath.contains("/")) { + throw new IllegalArgumentException("Invalid bizPath"); + } + String ctxPath = filePath; + String fileName = null; + File file = new File(ctxPath + File.separator + bizPath + File.separator ); + if (!file.exists()) { + file.mkdirs();// 创建文件根目录 + } + String orgName = mf.getOriginalFilename();// 获取文件名 + orgName = FileUtils.getFileName(orgName); + + // Validate file extension to allow only specific types + String[] allowedExtensions = {".gif", ".jpg", ".jpeg", ".png", ".pdf", ".txt",".doc",".docx",".xls",".xlsx", + ".ppt",".pptx",".zip",".rar",".mp3",".mp4",".avi"}; + boolean isValidExtension = false; + for (String ext : allowedExtensions) { + if (orgName.toLowerCase().endsWith(ext)) { + isValidExtension = true; + break; + } + } + if (!isValidExtension) { + throw new IllegalArgumentException("Invalid file type"); + } + + if(orgName.contains(".")){ + fileName = orgName.substring(0, orgName.lastIndexOf(".")) + "_" + System.currentTimeMillis() + orgName.substring(orgName.indexOf(".")); + }else{ + fileName = orgName+ "_" + System.currentTimeMillis(); + } + String savePath = file.getPath() + File.separator + fileName; + File savefile = new File(savePath); + FileCopyUtils.copy(mf.getBytes(), savefile); + + // 返回路径 + String dbpath = null; + if(StringUtil.isNotEmpty(bizPath)){ + dbpath = bizPath + File.separator + fileName; + }else{ + dbpath = fileName; + } + if (dbpath.contains("\\")) { + dbpath = dbpath.replace("\\", "/"); + } + return dbpath; + } catch (IOException e) { + logger.error(e.getMessage(), e); + } + return ""; + } + + /** + * 阿里Oss文件上传 + * @param mf 文件 + * @param bizPath 自定义路径 + * @return + */ + public String uploadAliOss(MultipartFile mf, String bizPath, HttpServletRequest request) throws Exception { + if(StringUtil.isEmpty(bizPath)){ + bizPath = ""; + } + // Validate bizPath to prevent directory traversal + if (bizPath.contains("..") || bizPath.contains("/")) { + throw new IllegalArgumentException("Invalid bizPath"); + } + String endpoint = platformConfigService.getPlatformConfigByKey("aliOss_endpoint").getPlatformValue(); + String accessKeyId = platformConfigService.getPlatformConfigByKey("aliOss_accessKeyId").getPlatformValue(); + String accessKeySecret = platformConfigService.getPlatformConfigByKey("aliOss_accessKeySecret").getPlatformValue(); + String bucketName = platformConfigService.getPlatformConfigByKey("aliOss_bucketName").getPlatformValue(); + // 填写Object完整路径,完整路径中不能包含Bucket名称,例如exampledir/exampleobject.txt。 + String fileName = ""; + String orgName = mf.getOriginalFilename();// 获取文件名 + orgName = FileUtils.getFileName(orgName); + + // Validate file extension to allow only specific types + String[] allowedExtensions = {".gif", ".jpg", ".jpeg", ".png", ".pdf", ".txt",".doc",".docx",".xls",".xlsx", + ".ppt",".pptx",".zip",".rar",".mp3",".mp4",".avi"}; + boolean isValidExtension = false; + for (String ext : allowedExtensions) { + if (orgName.toLowerCase().endsWith(ext)) { + isValidExtension = true; + break; + } + } + if (!isValidExtension) { + throw new IllegalArgumentException("Invalid file type"); + } + + if(orgName.contains(".")){ + fileName = orgName.substring(0, orgName.lastIndexOf(".")) + "_" + System.currentTimeMillis() + orgName.substring(orgName.indexOf(".")); + }else{ + fileName = orgName+ "_" + System.currentTimeMillis(); + } + String filePathStr = StringUtil.isNotEmpty(filePath)? filePath.substring(1):""; + String objectName = filePathStr + "/" + bizPath + "/" + fileName; + String smallObjectName = filePathStr + "-small/" + bizPath + "/" + fileName; + // 如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件流。 + byte [] byteArr = mf.getBytes(); + + // 创建OSSClient实例。 + OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); + + try { + // 保存原文件 + InputStream inputStream = new ByteArrayInputStream(byteArr); + PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, inputStream); + ossClient.putObject(putObjectRequest); + // 如果是图片-保存缩略图 + int index = fileName.lastIndexOf("."); + String ext = fileName.substring(index + 1); + if(ext.contains("gif") || ext.contains("jpg") || ext.contains("jpeg") || ext.contains("png") + || ext.contains("GIF") || ext.contains("JPG") || ext.contains("JPEG") || ext.contains("PNG")) { + String fileUrl = getFileUrlAliOss(bizPath + "/" + fileName); + URL url = new URL(fileUrl); + HttpURLConnection conn = (HttpURLConnection) url.openConnection(); + conn.setRequestMethod("GET"); + conn.setConnectTimeout(5 * 1000); + InputStream imgInputStream = conn.getInputStream();// 通过输入流获取图片数据 + BufferedImage smallImage = getImageMini(imgInputStream, 80); + ByteArrayOutputStream bs = new ByteArrayOutputStream(); + ImageOutputStream imOut = ImageIO.createImageOutputStream(bs); + ImageIO.write(smallImage, ext, imOut); + InputStream isImg = new ByteArrayInputStream(bs.toByteArray()); + PutObjectRequest putSmallObjectRequest = new PutObjectRequest(bucketName, smallObjectName, isImg); + ossClient.putObject(putSmallObjectRequest); + } + // 返回路径 + return bizPath + "/" + fileName; + } catch (OSSException oe) { + logger.error("Caught an OSSException, which means your request made it to OSS, " + + "but was rejected with an error response for some reason."); + logger.error("Error Message:" + oe.getErrorMessage()); + logger.error("Error Code:" + oe.getErrorCode()); + logger.error("Request ID:" + oe.getRequestId()); + logger.error("Host ID:" + oe.getHostId()); + } catch (ClientException ce) { + logger.error("Caught an ClientException, which means the client encountered " + + "a serious internal problem while trying to communicate with OSS, " + + "such as not being able to access the network."); + System.out.println("Error Message:" + ce.getMessage()); + } finally { + if (ossClient != null) { + ossClient.shutdown(); + } + } + return ""; + } + + public String getFileUrlLocal(String imgPath) { + return filePath + File.separator + imgPath; + } + + public String getFileUrlAliOss(String imgPath) throws Exception { + String linkUrl = platformConfigService.getPlatformConfigByKey("aliOss_linkUrl").getPlatformValue(); + return linkUrl + filePath + "/" + imgPath; + } + + /** + * 逻辑删除文件 + * @param pathList + */ + public void deleteFileByPathList(List pathList) throws Exception { + if(fileUploadType == 1) { + //本地 + for(String pathStr: pathList) { + if(StringUtil.isNotEmpty(pathStr)) { + String[] pathArr = pathStr.split(","); + for (String path : pathArr) { + // 提取文件的路径 + String pathDir = getDirByPath(path); + if (StringUtil.isNotEmpty(pathDir)) { + // 源文件路径 + Path sourcePath = Paths.get(filePath + File.separator + path); + // 目标文件路径(注意这里是新文件的完整路径,包括文件名) + Path targetPath = Paths.get(filePath + File.separator + DELETED + File.separator + path); + try { + File file = new File(filePath + File.separator + DELETED + File.separator + pathDir); + if (!file.exists()) { + file.mkdirs();// 创建文件根目录 + } + // 复制文件,如果目标文件已存在则替换它 + Files.copy(sourcePath, targetPath, StandardCopyOption.REPLACE_EXISTING); + // 删除源文件 + Files.delete(sourcePath); + logger.info("File copied successfully."); + } catch (NoSuchFileException e) { + logger.error("Source file not found: " + e.getMessage()); + } catch (IOException e) { + logger.error("An I/O error occurred: " + e.getMessage()); + } catch (SecurityException e) { + logger.error("No permission to copy file: " + e.getMessage()); + } + } + } + } + } + } else if(fileUploadType == 2) { + //oss + String endpoint = platformConfigService.getPlatformConfigByKey("aliOss_endpoint").getPlatformValue(); + String accessKeyId = platformConfigService.getPlatformConfigByKey("aliOss_accessKeyId").getPlatformValue(); + String accessKeySecret = platformConfigService.getPlatformConfigByKey("aliOss_accessKeySecret").getPlatformValue(); + String bucketName = platformConfigService.getPlatformConfigByKey("aliOss_bucketName").getPlatformValue(); + for(String pathStr: pathList) { + if(StringUtil.isNotEmpty(pathStr)) { + String[] pathArr = pathStr.split(","); + for (String path : pathArr) { + if(StringUtil.isNotEmpty(path)) { + // 创建OSSClient实例。 + OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); + try { + String filePathStr = StringUtil.isNotEmpty(filePath) ? filePath.substring(1) : ""; + String sourceObjectKey = filePathStr + "/" + path; + String sourceSmallObjectKey = filePathStr + "-small/" + path; + String destinationObjectKey = DELETED + "/list/" + sourceObjectKey; + String destinationSmallObjectKey = DELETED + "/list/" + sourceSmallObjectKey; + this.copySourceToDest(ossClient, bucketName, sourceObjectKey, destinationObjectKey); + this.copySourceToDest(ossClient, bucketName, sourceSmallObjectKey, destinationSmallObjectKey); + } catch (Exception e) { + logger.error(e.getMessage()); + } finally { + // 关闭OSSClient。 + if (ossClient != null) { + ossClient.shutdown(); + } + } + } + } + } + } + } + } + + /** + * + * @param ossClient + * @param bucketName + * @param sourceObjectKey 源文件路径,包括目录和文件名 + * @param destinationObjectKey 目标文件路径,包括新目录和文件名 + */ + public void copySourceToDest(OSS ossClient, String bucketName, String sourceObjectKey, String destinationObjectKey) { + // 复制文件 + CopyObjectResult copyResult = ossClient.copyObject(bucketName, sourceObjectKey, bucketName, destinationObjectKey); + // 确认复制成功 + if (copyResult != null && copyResult.getETag() != null) { + logger.info("文件复制成功,ETag: " + copyResult.getETag()); + // 删除源文件 + ossClient.deleteObject(bucketName, sourceObjectKey); + logger.info("源文件已删除:" + sourceObjectKey); + } else { + logger.info("文件复制失败"); + } + } + + public String getDirByPath(String path) { + if(path.lastIndexOf("/")>-1) { + return path.substring(0, path.lastIndexOf("/")); + } else { + return null; + } + } + + public BufferedImage getImageMini(InputStream inputStream, int w) throws Exception { + BufferedImage img = ImageIO.read(inputStream); + //获取图片的长和宽 + int width = img.getWidth(); + int height = img.getHeight(); + int tempw = 0; + int temph = 0; + if(width>height){ + tempw = w; + temph = height* w/width; + }else{ + tempw = w*width/height; + temph = w; + } + Image _img = img.getScaledInstance(tempw, temph, Image.SCALE_DEFAULT); + BufferedImage image = new BufferedImage(tempw, temph, BufferedImage.TYPE_INT_RGB); + Graphics2D graphics = image.createGraphics(); + graphics.drawImage(_img, 0, 0, null); + graphics.dispose(); + return image; + } + + /** + * 获取仓库开关 + * @return + * @throws Exception + */ + public boolean getDepotFlag() throws Exception { + boolean depotFlag = false; + List list = getSystemConfig(); + if(list.size()>0) { + String flag = list.get(0).getDepotFlag(); + if(("1").equals(flag)) { + depotFlag = true; + } + } + return depotFlag; + } + + /** + * 获取客户开关 + * @return + * @throws Exception + */ + public boolean getCustomerFlag() throws Exception { + boolean customerFlag = false; + List list = getSystemConfig(); + if(list.size()>0) { + String flag = list.get(0).getCustomerFlag(); + if(("1").equals(flag)) { + customerFlag = true; + } + } + return customerFlag; + } + + /** + * 获取负库存开关 + * @return + * @throws Exception + */ + public boolean getMinusStockFlag() throws Exception { + boolean minusStockFlag = false; + List list = getSystemConfig(); + if(list.size()>0) { + String flag = list.get(0).getMinusStockFlag(); + if(("1").equals(flag)) { + minusStockFlag = true; + } + } + return minusStockFlag; + } + + /** + * 获取更新单价开关 + * @return + * @throws Exception + */ + public boolean getUpdateUnitPriceFlag() throws Exception { + boolean updateUnitPriceFlag = true; + List list = getSystemConfig(); + if(list.size()>0) { + String flag = list.get(0).getUpdateUnitPriceFlag(); + if(("0").equals(flag)) { + updateUnitPriceFlag = false; + } + } + return updateUnitPriceFlag; + } + + /** + * 获取超出关联单据开关 + * @return + * @throws Exception + */ + public boolean getOverLinkBillFlag() throws Exception { + boolean overLinkBillFlag = false; + List list = getSystemConfig(); + if(list.size()>0) { + String flag = list.get(0).getOverLinkBillFlag(); + if(("1").equals(flag)) { + overLinkBillFlag = true; + } + } + return overLinkBillFlag; + } + + /** + * 获取强审核开关 + * @return + * @throws Exception + */ + public boolean getForceApprovalFlag() throws Exception { + boolean forceApprovalFlag = false; + List list = getSystemConfig(); + if(list.size()>0) { + String flag = list.get(0).getForceApprovalFlag(); + if(("1").equals(flag)) { + forceApprovalFlag = true; + } + } + return forceApprovalFlag; + } + + /** + * 获取多级审核开关 + * @return + * @throws Exception + */ + public boolean getMultiLevelApprovalFlag() throws Exception { + boolean multiLevelApprovalFlag = false; + List list = getSystemConfig(); + if(list.size()>0) { + String flag = list.get(0).getMultiLevelApprovalFlag(); + if(("1").equals(flag)) { + multiLevelApprovalFlag = true; + } + } + return multiLevelApprovalFlag; + } + + /** + * 获取出入库管理开关 + * @return + * @throws Exception + */ + public boolean getInOutManageFlag() throws Exception { + boolean inOutManageFlag = false; + List list = getSystemConfig(); + if(list.size()>0) { + String flag = list.get(0).getInOutManageFlag(); + if(("1").equals(flag)) { + inOutManageFlag = true; + } + } + return inOutManageFlag; + } + + /** + * 获取移动平均价开关 + * @return + * @throws Exception + */ + public boolean getMoveAvgPriceFlag() throws Exception { + boolean moveAvgPriceFlag = false; + List list = getSystemConfig(); + if(list.size()>0) { + String flag = list.get(0).getMoveAvgPriceFlag(); + if(("1").equals(flag)) { + moveAvgPriceFlag = true; + } + } + return moveAvgPriceFlag; + } + + /** + * 获取客户静态单价开关 + * @return + * @throws Exception + */ + public boolean getCustomerStaticPriceFlag() throws Exception { + boolean customerStaticPriceFlag = false; + List list = getSystemConfig(); + if(list.size()>0) { + String flag = list.get(0).getCustomerStaticPriceFlag(); + if(("1").equals(flag)) { + customerStaticPriceFlag = true; + } + } + return customerStaticPriceFlag; + } + + /** + * 获取商品价格含税开关 + * @return + * @throws Exception + */ + public boolean getMaterialPriceTaxFlag() throws Exception { + boolean materialPriceTaxFlag = false; + List list = getSystemConfig(); + if(list.size()>0) { + String flag = list.get(0).getMaterialPriceTaxFlag(); + if(("1").equals(flag)) { + materialPriceTaxFlag = true; + } + } + return materialPriceTaxFlag; + } + + /** + * Excel导出统一方法 + * @param title + * @param head + * @param tip + * @param arr + * @param response + * @throws Exception + */ + public void exportExcelByParam(String title, String head, String tip, JSONArray arr, HttpServletResponse response) throws Exception { + List nameList = StringUtil.strToStringList(head); + String[] names = StringUtil.listToStringArray(nameList); + List objects = new ArrayList<>(); + if (null != arr) { + for (Object object: arr) { + List list = (List) object; + Object[] objs = new Object[names.length]; + for (int i = 0; i < list.size(); i++) { + if(null != list.get(i)) { + objs[i] = list.get(i); + } + } + objects.add(objs); + } + } + File file = ExcelUtils.exportObjectsOneSheet(fileExportTmp, title, tip, names, title, objects); + ExcelUtils.downloadExcel(file, file.getName(), response); + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/service/TenantService.java b/smtERP-boot/src/main/java/com/reallin/smt/service/TenantService.java new file mode 100644 index 0000000..e06166d --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/service/TenantService.java @@ -0,0 +1,204 @@ +package com.reallin.smt.service; + +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.constants.BusinessConstants; +import com.reallin.smt.datasource.entities.Tenant; +import com.reallin.smt.datasource.entities.TenantEx; +import com.reallin.smt.datasource.entities.TenantExample; +import com.reallin.smt.datasource.entities.UserEx; +import com.reallin.smt.datasource.mappers.TenantMapper; +import com.reallin.smt.datasource.mappers.TenantMapperEx; +import com.reallin.smt.datasource.mappers.UserBusinessMapperEx; +import com.reallin.smt.datasource.mappers.UserMapperEx; +import com.reallin.smt.exception.JshException; +import com.reallin.smt.utils.PageUtils; +import com.reallin.smt.utils.StringUtil; +import com.reallin.smt.utils.Tools; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.List; + +@Service +public class TenantService { + private Logger logger = LoggerFactory.getLogger(TenantService.class); + + @Resource + private TenantMapper tenantMapper; + + @Resource + private TenantMapperEx tenantMapperEx; + + @Resource + private UserMapperEx userMapperEx; + + @Resource + private UserBusinessMapperEx userBusinessMapperEx; + + @Resource + private UserService userService; + + @Resource + private LogService logService; + + @Value("${manage.roleId}") + private Integer manageRoleId; + + public Tenant getTenant(long id)throws Exception { + Tenant result=null; + try{ + result=tenantMapper.selectByPrimaryKey(id); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return result; + } + + public List getTenant()throws Exception { + TenantExample example = new TenantExample(); + example.createCriteria().andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list=null; + try{ + list=tenantMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public List select(String loginName, String type, String enabled, String remark)throws Exception { + List list = null; + try{ + if(BusinessConstants.DEFAULT_MANAGER.equals(userService.getCurrentUser().getLoginName())) { + PageUtils.startPage(); + list = tenantMapperEx.selectByConditionTenant(loginName, type, enabled, remark); + if (null != list) { + for (TenantEx tenantEx : list) { + tenantEx.setCreateTimeStr(Tools.getCenternTime(tenantEx.getCreateTime())); + tenantEx.setExpireTimeStr(Tools.getCenternTime(tenantEx.getExpireTime())); + } + } + } + } catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int insertTenant(JSONObject obj, HttpServletRequest request)throws Exception { + UserEx ue = JSONObject.parseObject(obj.toJSONString(), UserEx.class); + ue.setUsername(ue.getLoginName()); + userService.checkLoginName(ue); //检查登录名 + userService.registerUser(ue,manageRoleId,request); + return 1; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int updateTenant(JSONObject obj, HttpServletRequest request)throws Exception { + Tenant tenant = JSONObject.parseObject(obj.toJSONString(), Tenant.class); + int result=0; + try{ + if(BusinessConstants.DEFAULT_MANAGER.equals(userService.getCurrentUser().getLoginName())) { + //如果租户下的用户限制数量为1,则将该租户之外的用户全部禁用 + if (1 == tenant.getUserNumLimit()) { + userMapperEx.disableUserByLimit(tenant.getTenantId()); + } + result = tenantMapper.updateByPrimaryKeySelective(tenant); + //更新租户对应的角色 + if(obj.get("roleId")!=null) { + String ubValue = "[" + obj.getString("roleId") + "]"; + userBusinessMapperEx.updateValueByTypeAndKeyId("UserRole", tenant.getTenantId().toString(), ubValue); + } + } + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int deleteTenant(Long id, HttpServletRequest request)throws Exception { + int result=0; + try{ + if(BusinessConstants.DEFAULT_MANAGER.equals(userService.getCurrentUser().getLoginName())) { + result = tenantMapper.deleteByPrimaryKey(id); + } + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteTenant(String ids, HttpServletRequest request)throws Exception { + List idList = StringUtil.strToLongList(ids); + TenantExample example = new TenantExample(); + example.createCriteria().andIdIn(idList); + int result=0; + try{ + if(BusinessConstants.DEFAULT_MANAGER.equals(userService.getCurrentUser().getLoginName())) { + result = tenantMapper.deleteByExample(example); + } + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + public int checkIsNameExist(Long id, String name)throws Exception { + TenantExample example = new TenantExample(); + example.createCriteria().andIdNotEqualTo(id).andLoginNameEqualTo(name).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list=null; + try{ + list= tenantMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list==null?0:list.size(); + } + + public Tenant getTenantByTenantId(long tenantId) { + Tenant tenant = new Tenant(); + TenantExample example = new TenantExample(); + example.createCriteria().andTenantIdEqualTo(tenantId).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list = tenantMapper.selectByExample(example); + if(list.size()>0) { + tenant = list.get(0); + } + return tenant; + } + + public int batchSetStatus(Boolean status, String ids)throws Exception { + int result=0; + try{ + if(BusinessConstants.DEFAULT_MANAGER.equals(userService.getCurrentUser().getLoginName())) { + String statusStr = ""; + if (status) { + statusStr = "批量启用"; + } else { + statusStr = "批量禁用"; + } + logService.insertLog("用户", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_EDIT).append(ids).append("-").append(statusStr).toString(), + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); + List idList = StringUtil.strToLongList(ids); + Tenant tenant = new Tenant(); + tenant.setEnabled(status); + TenantExample example = new TenantExample(); + example.createCriteria().andIdIn(idList); + result = tenantMapper.updateByExampleSelective(tenant, example); + } + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/service/UnitService.java b/smtERP-boot/src/main/java/com/reallin/smt/service/UnitService.java new file mode 100644 index 0000000..8053c97 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/service/UnitService.java @@ -0,0 +1,313 @@ +package com.reallin.smt.service; + +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.constants.BusinessConstants; +import com.reallin.smt.constants.ExceptionConstants; +import com.reallin.smt.datasource.entities.Material; +import com.reallin.smt.datasource.entities.Unit; +import com.reallin.smt.datasource.entities.UnitExample; +import com.reallin.smt.datasource.entities.User; +import com.reallin.smt.datasource.mappers.MaterialMapperEx; +import com.reallin.smt.datasource.mappers.UnitMapper; +import com.reallin.smt.datasource.mappers.UnitMapperEx; +import com.reallin.smt.exception.BusinessRunTimeException; +import com.reallin.smt.exception.JshException; +import com.reallin.smt.utils.PageUtils; +import com.reallin.smt.utils.StringUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.math.BigDecimal; +import java.util.*; + +@Service +public class UnitService { + private Logger logger = LoggerFactory.getLogger(UnitService.class); + + @Resource + private UnitMapper unitMapper; + + @Resource + private UnitMapperEx unitMapperEx; + @Resource + private UserService userService; + @Resource + private LogService logService; + @Resource + private MaterialMapperEx materialMapperEx; + + public Unit getUnit(long id)throws Exception { + Unit result=null; + try{ + result=unitMapper.selectByPrimaryKey(id); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return result; + } + + public List getUnitListByIds(String ids)throws Exception { + List idList = StringUtil.strToLongList(ids); + List list = new ArrayList<>(); + try{ + UnitExample example = new UnitExample(); + example.createCriteria().andIdIn(idList); + list = unitMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public List getUnit()throws Exception { + UnitExample example = new UnitExample(); + example.createCriteria().andEnabledEqualTo(true).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list=null; + try{ + list=unitMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public List select(String name)throws Exception { + List list=null; + try{ + PageUtils.startPage(); + list=unitMapperEx.selectByConditionUnit(name); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int insertUnit(JSONObject obj, HttpServletRequest request)throws Exception { + Unit unit = JSONObject.parseObject(obj.toJSONString(), Unit.class); + int result=0; + try{ + parseNameByUnit(unit); + unit.setEnabled(true); + result=unitMapper.insertSelective(unit); + logService.insertLog("多单位", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_ADD).append(unit.getName()).toString(), request); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int updateUnit(JSONObject obj, HttpServletRequest request)throws Exception { + Unit unit = JSONObject.parseObject(obj.toJSONString(), Unit.class); + int result=0; + try{ + parseNameByUnit(unit); + result=unitMapper.updateByPrimaryKeySelective(unit); + if(unit.getRatioTwo()==null) { + unitMapperEx.updateRatioTwoById(unit.getId()); + } + if(unit.getRatioThree()==null) { + unitMapperEx.updateRatioThreeById(unit.getId()); + } + logService.insertLog("多单位", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_EDIT).append(unit.getName()).toString(), request); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + /** + * 根据单位信息生成名称的格式 + * @param unit + */ + private void parseNameByUnit(Unit unit) { + String unitName = unit.getBasicUnit() + "/" + "(" + unit.getOtherUnit() + "=" + unit.getRatio().toString() + unit.getBasicUnit() + ")"; + if(StringUtil.isNotEmpty(unit.getOtherUnitTwo()) && unit.getRatioTwo()!=null) { + unitName += "/" + "(" + unit.getOtherUnitTwo() + "=" + unit.getRatioTwo().toString() + unit.getBasicUnit() + ")"; + if(StringUtil.isNotEmpty(unit.getOtherUnitThree()) && unit.getRatioThree()!=null) { + unitName += "/" + "(" + unit.getOtherUnitThree() + "=" + unit.getRatioThree().toString() + unit.getBasicUnit() + ")"; + } + } + unit.setName(unitName); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int deleteUnit(Long id, HttpServletRequest request)throws Exception { + return batchDeleteUnitByIds(id.toString()); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteUnit(String ids, HttpServletRequest request) throws Exception{ + return batchDeleteUnitByIds(ids); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteUnitByIds(String ids)throws Exception { + int result=0; + String [] idArray=ids.split(","); + //校验产品表 tbl_material + List materialList=null; + try{ + materialList=materialMapperEx.getMaterialListByUnitIds(idArray); + }catch(Exception e){ + JshException.readFail(logger, e); + } + if(materialList!=null&&materialList.size()>0){ + logger.error("异常码[{}],异常提示[{}],参数,UnitIds[{}]", + ExceptionConstants.DELETE_FORCE_CONFIRM_CODE,ExceptionConstants.DELETE_FORCE_CONFIRM_MSG,ids); + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, + ExceptionConstants.DELETE_FORCE_CONFIRM_MSG); + } + //记录日志 + StringBuffer sb = new StringBuffer(); + sb.append(BusinessConstants.LOG_OPERATION_TYPE_DELETE); + List list = getUnitListByIds(ids); + for(Unit unit: list){ + sb.append("[").append(unit.getName()).append("]"); + } + logService.insertLog("多单位", sb.toString(), + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); + User userInfo=userService.getCurrentUser(); + //校验通过执行删除操作 + try{ + result=unitMapperEx.batchDeleteUnitByIds(new Date(),userInfo==null?null:userInfo.getId(),idArray); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + public int checkIsNameExist(Long id, String name)throws Exception { + UnitExample example = new UnitExample(); + example.createCriteria().andIdNotEqualTo(id).andNameEqualTo(name).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list=null; + try{ + list=unitMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list==null?0:list.size(); + } + + /** + * 根据条件查询单位id + * @param basicUnit + * @param otherUnit + * @param ratio + * @return + */ + public Long getUnitIdByParam(String basicUnit, String otherUnit, BigDecimal ratio){ + Long unitId = null; + UnitExample example = new UnitExample(); + example.createCriteria().andBasicUnitEqualTo(basicUnit).andOtherUnitEqualTo(otherUnit).andRatioEqualTo(ratio) + .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list = unitMapper.selectByExample(example); + if(list!=null && list.size()>0) { + unitId = list.get(0).getId(); + } + return unitId; + } + + /** + * 根据多单位的比例进行库存换算(保留两位小数) + * @param stock + * @param unitInfo + * @param materialUnit + * @return + */ + public BigDecimal parseStockByUnit(BigDecimal stock, Unit unitInfo, String materialUnit) { + if(stock!=null && unitInfo!=null && StringUtil.isNotEmpty(materialUnit)) { + if (materialUnit.equals(unitInfo.getOtherUnit()) && unitInfo.getRatio() != null && unitInfo.getRatio().compareTo(BigDecimal.ZERO) != 0) { + stock = stock.divide(unitInfo.getRatio(), 2, BigDecimal.ROUND_HALF_UP); + } + if (materialUnit.equals(unitInfo.getOtherUnitTwo()) && unitInfo.getRatioTwo() != null && unitInfo.getRatioTwo().compareTo(BigDecimal.ZERO) != 0) { + stock = stock.divide(unitInfo.getRatioTwo(), 2, BigDecimal.ROUND_HALF_UP); + } + if (materialUnit.equals(unitInfo.getOtherUnitThree()) && unitInfo.getRatioThree() != null && unitInfo.getRatioThree().compareTo(BigDecimal.ZERO) != 0) { + stock = stock.divide(unitInfo.getRatioThree(), 2, BigDecimal.ROUND_HALF_UP); + } + } + return stock; + } + + /** + * 根据多单位的比例进行单价换算(保留两位小数),变大 + * @param unitPrice + * @param unitInfo + * @param materialUnit + * @return + */ + public BigDecimal parseUnitPriceByUnit(BigDecimal unitPrice, Unit unitInfo, String materialUnit) { + if(unitPrice!=null) { + if (materialUnit.equals(unitInfo.getOtherUnit()) && unitInfo.getRatio() != null && unitInfo.getRatio().compareTo(BigDecimal.ZERO) != 0) { + unitPrice = unitPrice.multiply(unitInfo.getRatio()); + } + if (materialUnit.equals(unitInfo.getOtherUnitTwo()) && unitInfo.getRatioTwo() != null && unitInfo.getRatioTwo().compareTo(BigDecimal.ZERO) != 0) { + unitPrice = unitPrice.multiply(unitInfo.getRatioTwo()); + } + if (materialUnit.equals(unitInfo.getOtherUnitThree()) && unitInfo.getRatioThree() != null && unitInfo.getRatioThree().compareTo(BigDecimal.ZERO) != 0) { + unitPrice = unitPrice.multiply(unitInfo.getRatioThree()); + } + } + return unitPrice; + } + + /** + * 根据多单位的比例进行总金额换算(保留两位小数),变小 + * @param allPrice + * @param unitInfo + * @param materialUnit + * @return + */ + public BigDecimal parseAllPriceByUnit(BigDecimal allPrice, Unit unitInfo, String materialUnit) { + if(allPrice!=null) { + if (materialUnit.equals(unitInfo.getOtherUnit()) && unitInfo.getRatio() != null && unitInfo.getRatio().compareTo(BigDecimal.ZERO) != 0) { + allPrice = allPrice.divide(unitInfo.getRatio(), 2, BigDecimal.ROUND_HALF_UP); + } + if (materialUnit.equals(unitInfo.getOtherUnitTwo()) && unitInfo.getRatioTwo() != null && unitInfo.getRatioTwo().compareTo(BigDecimal.ZERO) != 0) { + allPrice = allPrice.divide(unitInfo.getRatioTwo(), 2, BigDecimal.ROUND_HALF_UP); + } + if (materialUnit.equals(unitInfo.getOtherUnitThree()) && unitInfo.getRatioThree() != null && unitInfo.getRatioThree().compareTo(BigDecimal.ZERO) != 0) { + allPrice = allPrice.divide(unitInfo.getRatioThree(), 2, BigDecimal.ROUND_HALF_UP); + } + } + return allPrice; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchSetStatus(Boolean status, String ids)throws Exception { + logService.insertLog("多单位", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_ENABLED).toString(), + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); + List unitIds = StringUtil.strToLongList(ids); + Unit unit = new Unit(); + unit.setEnabled(status); + UnitExample example = new UnitExample(); + example.createCriteria().andIdIn(unitIds); + int result=0; + try{ + result = unitMapper.updateByExampleSelective(unit, example); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + public Map getUnitMap() throws Exception { + List unitList = getUnit(); + Map unitMap = new HashMap<>(); + for(Unit unit : unitList){ + unitMap.put(unit.getId(), unit); + } + return unitMap; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/service/UserBusinessService.java b/smtERP-boot/src/main/java/com/reallin/smt/service/UserBusinessService.java new file mode 100644 index 0000000..21166cd --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/service/UserBusinessService.java @@ -0,0 +1,244 @@ +package com.reallin.smt.service; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.constants.BusinessConstants; +import com.reallin.smt.datasource.entities.User; +import com.reallin.smt.datasource.entities.UserBusiness; +import com.reallin.smt.datasource.entities.UserBusinessExample; +import com.reallin.smt.datasource.mappers.UserBusinessMapper; +import com.reallin.smt.datasource.mappers.UserBusinessMapperEx; +import com.reallin.smt.exception.JshException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Service +public class UserBusinessService { + private Logger logger = LoggerFactory.getLogger(UserBusinessService.class); + + @Resource + private UserBusinessMapper userBusinessMapper; + @Resource + private UserBusinessMapperEx userBusinessMapperEx; + @Resource + private LogService logService; + @Resource + private UserService userService; + + public UserBusiness getUserBusiness(long id)throws Exception { + UserBusiness result=null; + try{ + result=userBusinessMapper.selectByPrimaryKey(id); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return result; + } + + public List getUserBusiness()throws Exception { + UserBusinessExample example = new UserBusinessExample(); + example.createCriteria().andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list=null; + try{ + list=userBusinessMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int insertUserBusiness(JSONObject obj, HttpServletRequest request) throws Exception { + UserBusiness userBusiness = JSONObject.parseObject(obj.toJSONString(), UserBusiness.class); + int result=0; + try{ + String value = userBusiness.getValue(); + String newValue = value.replaceAll(",","\\]\\["); + newValue = newValue.replaceAll("\\[0\\]","").replaceAll("\\[\\]",""); + userBusiness.setValue(newValue); + result=userBusinessMapper.insertSelective(userBusiness); + logService.insertLog("关联关系", BusinessConstants.LOG_OPERATION_TYPE_ADD, request); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int updateUserBusiness(JSONObject obj, HttpServletRequest request) throws Exception { + UserBusiness userBusiness = JSONObject.parseObject(obj.toJSONString(), UserBusiness.class); + int result=0; + try{ + String value = userBusiness.getValue(); + String newValue = value.replaceAll(",","\\]\\["); + newValue = newValue.replaceAll("\\[0\\]","").replaceAll("\\[\\]",""); + userBusiness.setValue(newValue); + result=userBusinessMapper.updateByPrimaryKeySelective(userBusiness); + logService.insertLog("关联关系", BusinessConstants.LOG_OPERATION_TYPE_EDIT, request); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int deleteUserBusiness(Long id, HttpServletRequest request)throws Exception { + return batchDeleteUserBusinessByIds(id.toString()); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteUserBusiness(String ids, HttpServletRequest request)throws Exception { + return batchDeleteUserBusinessByIds(ids); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteUserBusinessByIds(String ids) throws Exception{ + logService.insertLog("关联关系", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_DELETE).append(ids).toString(), + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); + User userInfo=userService.getCurrentUser(); + String [] idArray=ids.split(","); + int result=0; + try{ + result= userBusinessMapperEx.batchDeleteUserBusinessByIds(new Date(),userInfo==null?null:userInfo.getId(),idArray); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + public int checkIsNameExist(Long id, String name)throws Exception { + return 1; + } + + public List getBasicData(String keyId, String type)throws Exception{ + List list=null; + try{ + list= userBusinessMapperEx.getBasicDataByKeyIdAndType(keyId, type); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public String getUBValueByTypeAndKeyId(String type, String keyId) throws Exception { + String ubValue = ""; + List ubList = getBasicData(keyId, type); + if(ubList!=null && ubList.size()>0) { + ubValue = ubList.get(0).getValue(); + } + return ubValue; + } + + public Long checkIsValueExist(String type, String keyId)throws Exception { + UserBusinessExample example = new UserBusinessExample(); + example.createCriteria().andTypeEqualTo(type).andKeyIdEqualTo(keyId) + .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list=null; + try{ + list= userBusinessMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + Long id = null; + if(list!=null&&list.size() > 0) { + id = list.get(0).getId(); + } + return id; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int updateBtnStr(String keyId, String type, String btnStr) throws Exception{ + logService.insertLog("关联关系", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_EDIT).append("角色的按钮权限").toString(), + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); + UserBusiness userBusiness = new UserBusiness(); + userBusiness.setBtnStr(btnStr); + UserBusinessExample example = new UserBusinessExample(); + example.createCriteria().andKeyIdEqualTo(keyId).andTypeEqualTo(type); + int result=0; + try{ + result= userBusinessMapper.updateByExampleSelective(userBusiness, example); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + public List getUBKeyIdByTypeAndOneValue(String type, String oneValue) { + return userBusinessMapperEx.getUBKeyIdByTypeAndOneValue(type, oneValue); + } + + public int updateOneValueByKeyIdAndType(String type, JSONArray keyIdArr, String oneValue) { + int res = 0; + try { + Map keyIdMap = new HashMap<>(); + List oldUbList = userBusinessMapperEx.getOldListByType(type); + for(Object keyIdObj: keyIdArr) { + String keyId = keyIdObj.toString(); + keyIdMap.put(keyId, keyId); + List ubList = userBusinessMapperEx.getBasicDataByKeyIdAndType(keyId, type); + if(ubList.size()>0) { + String valueStr = ubList.get(0).getValue(); + Boolean flag = valueStr.contains("[" + oneValue + "]"); + if(flag) { + //存在则忽略 + } else { + //不存在则追加并更新 + valueStr = valueStr + "[" + oneValue + "]"; + UserBusiness userBusiness = new UserBusiness(); + userBusiness.setId(ubList.get(0).getId()); + userBusiness.setValue(valueStr); + userBusinessMapper.updateByPrimaryKeySelective(userBusiness); + } + } else { + //新增数据 + UserBusiness userBusiness = new UserBusiness(); + userBusiness.setType(type); + userBusiness.setKeyId(keyId); + userBusiness.setValue("[" + oneValue + "]"); + userBusinessMapper.insertSelective(userBusiness); + } + } + //检查被移除的keyId + for(UserBusiness item: oldUbList) { + String oldValue = item.getValue(); + String oldkeyId = item.getKeyId(); + if(keyIdMap.get(oldkeyId) == null) { + //处理被删除的keyId + String valueStr = "[" + oneValue + "]"; + if(oldValue.equals(valueStr)) { + //说明value里面只有一条数据,需要进行逻辑删除 + UserBusiness userBusiness = new UserBusiness(); + userBusiness.setId(item.getId()); + userBusiness.setDeleteFlag("1"); + userBusinessMapper.updateByPrimaryKeySelective(userBusiness); + } else { + //多条进行替换后再更新 + String newValue = oldValue.replace(valueStr, ""); + UserBusiness userBusiness = new UserBusiness(); + userBusiness.setId(item.getId()); + userBusiness.setValue(newValue); + userBusinessMapper.updateByPrimaryKeySelective(userBusiness); + } + } + } + res = 1; + } catch (Exception e) { + res = 0; + logger.error(e.getMessage(), e); + } + return res; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/service/UserService.java b/smtERP-boot/src/main/java/com/reallin/smt/service/UserService.java new file mode 100644 index 0000000..ac6a57d --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/service/UserService.java @@ -0,0 +1,941 @@ +package com.reallin.smt.service; + +import com.reallin.smt.datasource.entities.*; +import com.reallin.smt.utils.*; +import org.springframework.util.StringUtils; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.constants.BusinessConstants; +import com.reallin.smt.constants.ExceptionConstants; +import com.reallin.smt.datasource.mappers.UserMapper; +import com.reallin.smt.datasource.mappers.UserMapperEx; +import com.reallin.smt.datasource.vo.TreeNodeEx; +import com.reallin.smt.exception.BusinessRunTimeException; +import com.reallin.smt.exception.JshException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.security.NoSuchAlgorithmException; +import java.util.*; + +@Service +public class UserService { + private Logger logger = LoggerFactory.getLogger(UserService.class); + + @Resource + private UserMapper userMapper; + @Resource + private UserMapperEx userMapperEx; + @Resource + private OrgaUserRelService orgaUserRelService; + @Resource + private LogService logService; + @Resource + private UserService userService; + @Resource + private UserBusinessService userBusinessService; + @Resource + private RoleService roleService; + @Resource + private FunctionService functionService; + @Resource + private PlatformConfigService platformConfigService; + @Resource + private RedisService redisService; + @Resource + private LoginAttemptService loginAttemptService; + + public User getUser(long id)throws Exception { + User result=null; + try{ + //先校验是否登录,然后才能查询用户数据 + HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest(); + Long userId = this.getUserId(request); + if(userId!=null) { + result = userMapper.selectByPrimaryKey(id); + } + }catch(Exception e){ + JshException.readFail(logger, e); + } + return result; + } + + public List getUserListByIds(String ids)throws Exception { + List idList = StringUtil.strToLongList(ids); + List list = new ArrayList<>(); + try{ + UserExample example = new UserExample(); + example.createCriteria().andIdIn(idList); + list = userMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public List getUser(HttpServletRequest request) throws Exception { + List list=null; + try{ + //先校验是否登录,然后才能查询用户数据 + Long userId = this.getUserId(request); + if(userId!=null) { + UserExample example = new UserExample(); + example.createCriteria().andStatusEqualTo(BusinessConstants.USER_STATUS_NORMAL).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + list = userMapper.selectByExample(example); + } + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public List select(String userName, String loginName)throws Exception { + List list=null; + try { + //先校验是否登录,然后才能查询用户数据 + HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest(); + Long userId = this.getUserId(request); + if(userId!=null) { + PageUtils.startPage(); + list = userMapperEx.selectByConditionUser(userName, loginName); + for (UserEx ue : list) { + String userType = ""; + userType = ue.getIsystem() != null && ue.getIsystem() == 1 ? "系统管理员" : "普通用户"; + ue.setUserType(userType); + //是否经理 + String leaderFlagStr = ""; + if ("1".equals(ue.getLeaderFlag())) { + leaderFlagStr = "是"; + } else { + leaderFlagStr = "否"; + } + ue.setLeaderFlagStr(leaderFlagStr); + } + } + } catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public Long countUser(String userName, String loginName)throws Exception { + Long result=null; + try{ + result=userMapperEx.countsByUser(userName, loginName); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int insertUser(JSONObject obj, HttpServletRequest request)throws Exception { + User user = JSONObject.parseObject(obj.toJSONString(), User.class); + String password = "123456"; + //因密码用MD5加密,需要对密码进行转化 + try { + password = Tools.md5Encryp(password); + user.setPassword(password); + } catch (NoSuchAlgorithmException e) { + logger.error(">>>>>>>>>>>>>>转化MD5字符串错误 :" + e.getMessage()); + } + int result=0; + try{ + result=userMapper.insertSelective(user); + logService.insertLog("用户", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_ADD).append(user.getLoginName()).toString(), request); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int updateUser(JSONObject obj, HttpServletRequest request) throws Exception{ + User user = JSONObject.parseObject(obj.toJSONString(), User.class); + int result=0; + try{ + //判断是否登录过 + Object userId = redisService.getObjectFromSessionByKey(request,"userId"); + if (userId != null) { + result = userMapper.updateByPrimaryKeySelective(user); + logService.insertLog("用户", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_EDIT).append(user.getLoginName()).toString(), request); + } + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int updateUserByObj(User user, HttpServletRequest request) throws Exception{ + int result=0; + try{ + //判断是否登录过 + Object userId = redisService.getObjectFromSessionByKey(request,"userId"); + if (userId != null) { + result = userMapper.updateByPrimaryKeySelective(user); + logService.insertLog("用户", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_EDIT).append(user.getId()).toString(), + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); + } + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int resetPwd(String md5Pwd, Long id, HttpServletRequest request) throws Exception{ + int result=0; + User u = getUser(id); + String loginName = u.getLoginName(); + if("admin".equals(loginName)){ + logger.info("禁止重置超管密码"); + } else { + User user = new User(); + user.setId(id); + user.setPassword(md5Pwd); + try{ + //判断是否登录过 + Object userId = redisService.getObjectFromSessionByKey(request,"userId"); + if (userId != null) { + result = userMapper.updateByPrimaryKeySelective(user); + logService.insertLog("用户", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_EDIT).append(id).toString(), + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); + } + }catch(Exception e){ + JshException.writeFail(logger, e); + } + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int deleteUser(Long id, HttpServletRequest request)throws Exception { + return batDeleteUser(id.toString(), request); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteUser(String ids, HttpServletRequest request)throws Exception { + return batDeleteUser(ids, request); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batDeleteUser(String ids, HttpServletRequest request) throws Exception{ + int result=0; + StringBuffer sb = new StringBuffer(); + sb.append(BusinessConstants.LOG_OPERATION_TYPE_DELETE); + List list = getUserListByIds(ids); + for(User user: list){ + sb.append("[").append(user.getLoginName()).append("]"); + } + String[] idsArray =ids.split(","); + try{ + //判断是否登录过 + Object userId = redisService.getObjectFromSessionByKey(request,"userId"); + if (userId != null) { + result = userMapperEx.batDeleteOrUpdateUser(idsArray); + if(result>0) { + //从redis中移除这些用户的登录状态 + for (String idStr : idsArray) { + redisService.deleteObjectByUser(Long.valueOf(idStr)); + } + } + logService.insertLog("用户", sb.toString(), + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); + } + }catch(Exception e){ + JshException.writeFail(logger, e); + } + if(result<1){ + logger.error("异常码[{}],异常提示[{}],参数,ids:[{}]", + ExceptionConstants.USER_DELETE_FAILED_CODE,ExceptionConstants.USER_DELETE_FAILED_MSG,ids); + throw new BusinessRunTimeException(ExceptionConstants.USER_DELETE_FAILED_CODE, + ExceptionConstants.USER_DELETE_FAILED_MSG); + } + return result; + } + + /** + * 校验验证码 + * @param code 验证码 + * @param uuid 唯一标识 + * @return 结果 + */ + public void validateCaptcha(String code, String uuid) throws Exception { + PlatformConfig platformConfig = platformConfigService.getInfoByKey("checkcode_flag"); + if(platformConfig!=null && "1".equals(platformConfig.getPlatformValue())) { + if(StringUtil.isNotEmpty(code) && StringUtil.isNotEmpty(uuid)) { + code = code.trim(); + uuid = uuid.trim(); + String verifyKey = BusinessConstants.CAPTCHA_CODE_KEY + uuid; + String captcha = redisService.getCacheObject(verifyKey); + redisService.deleteObject(verifyKey); + if (captcha == null) { + logger.error("异常码[{}],异常提示[{}]", ExceptionConstants.USER_JCAPTCHA_EXPIRE_CODE, ExceptionConstants.USER_JCAPTCHA_EXPIRE_MSG); + throw new BusinessRunTimeException(ExceptionConstants.USER_JCAPTCHA_EXPIRE_CODE, ExceptionConstants.USER_JCAPTCHA_EXPIRE_MSG); + } + if (!code.equalsIgnoreCase(captcha)) { + logger.error("异常码[{}],异常提示[{}]", ExceptionConstants.USER_JCAPTCHA_ERROR_CODE, ExceptionConstants.USER_JCAPTCHA_ERROR_MSG); + throw new BusinessRunTimeException(ExceptionConstants.USER_JCAPTCHA_ERROR_CODE, ExceptionConstants.USER_JCAPTCHA_ERROR_MSG); + } + } else { + logger.error("异常码[{}],异常提示[{}]", ExceptionConstants.USER_JCAPTCHA_EMPTY_CODE, ExceptionConstants.USER_JCAPTCHA_EMPTY_MSG); + throw new BusinessRunTimeException(ExceptionConstants.USER_JCAPTCHA_EMPTY_CODE, ExceptionConstants.USER_JCAPTCHA_EMPTY_MSG); + } + } + } + + /** + * 用户登录 + * @param loginName + * @param password + * @param request + * @return + * @throws Exception + */ + public Map login(String loginName, String password, HttpServletRequest request) throws Exception { + Map data = new HashMap<>(); + String msgTip = ""; + User user = null; + long remainingDelaySeconds = loginAttemptService.getRemainingDelaySeconds(loginName); + if (remainingDelaySeconds > 0) { + data.put("msgTip", "user login locked"); + data.put("retryAfterSeconds", remainingDelaySeconds); + return data; + } + //判断用户是否已经登录过,登录过不再处理 + Object userId = redisService.getObjectFromSessionByKey(request,"userId"); + if (userId != null) { + logger.info("====用户已经登录过, login 方法调用结束===="); + msgTip = "user already login"; + } + //获取用户状态 + int userStatus = -1; + try { + redisService.deleteObjectBySession(request,"userId"); + userStatus = validateUser(loginName, password); + } catch (Exception e) { + logger.error(">>>>>>>>>>>>>用户 " + loginName + " 登录 login 方法 访问服务层异常====", e); + msgTip = "access service exception"; + } + String token = UUID.randomUUID().toString().replaceAll("-", "") + ""; + switch (userStatus) { + case ExceptionCodeConstants.UserExceptionCode.USER_NOT_EXIST: + msgTip = "user is not exist"; + break; + case ExceptionCodeConstants.UserExceptionCode.USER_PASSWORD_ERROR: + msgTip = "user password error"; + long delaySeconds = loginAttemptService.recordPasswordFailure(loginName); + if (delaySeconds > 0) { + msgTip = "user login locked"; + data.put("retryAfterSeconds", delaySeconds); + } + break; + case ExceptionCodeConstants.UserExceptionCode.BLACK_USER: + msgTip = "user is black"; + break; + case ExceptionCodeConstants.UserExceptionCode.USER_ACCESS_EXCEPTION: + msgTip = "access service error"; + break; + case ExceptionCodeConstants.UserExceptionCode.USER_CONDITION_FIT: + msgTip = "user can login"; + loginAttemptService.clear(loginName); + //验证通过 ,可以登录,放入session,记录登录日志 + user = getUserByLoginName(loginName); + redisService.storageObjectBySession(token,"userId",user.getId()); + break; + default: + break; + } + data.put("msgTip", msgTip); + if(user!=null){ + //校验下密码是不是过于简单 + boolean pwdSimple = false; + if(user.getPassword().equals(Tools.md5Encryp(BusinessConstants.USER_DEFAULT_PASSWORD))) { + pwdSimple = true; + } + user.setPassword(null); + if(BusinessConstants.DEFAULT_MANAGER.equals(user.getLoginName())) { + //如果是管理员,则发送登录邮件 + sendEmailToCurrentUser(request, user); + } + redisService.storageObjectBySession(token,"clientIp", Tools.getLocalIp(request)); + logService.insertLogWithUserId(user.getId(), user.getTenantId(), "用户", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_LOGIN).append(user.getLoginName()).toString(), + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); + data.put("token", token); + data.put("user", user); + data.put("pwdSimple", pwdSimple); + } + return data; + } + + public int validateUser(String loginName, String password) throws Exception { + /**默认是可以登录的*/ + List list = null; + try { + UserExample example = new UserExample(); + example.createCriteria().andLoginNameEqualTo(loginName).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + list = userMapper.selectByExample(example); + if (null != list && list.size() == 0) { + return ExceptionCodeConstants.UserExceptionCode.USER_NOT_EXIST; + } else if(list.size() ==1) { + if(list.get(0).getStatus()!=0) { + return ExceptionCodeConstants.UserExceptionCode.BLACK_USER; + } + } + } catch (Exception e) { + logger.error(">>>>>>>>访问验证用户姓名是否存在后台信息异常", e); + return ExceptionCodeConstants.UserExceptionCode.USER_ACCESS_EXCEPTION; + } + try { + UserExample example = new UserExample(); + example.createCriteria().andLoginNameEqualTo(loginName).andPasswordEqualTo(password) + .andStatusEqualTo(BusinessConstants.USER_STATUS_NORMAL).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + list = userMapper.selectByExample(example); + if (null != list && list.size() == 0) { + return ExceptionCodeConstants.UserExceptionCode.USER_PASSWORD_ERROR; + } + } catch (Exception e) { + logger.error(">>>>>>>>>>访问验证用户密码后台信息异常", e); + return ExceptionCodeConstants.UserExceptionCode.USER_ACCESS_EXCEPTION; + } + return ExceptionCodeConstants.UserExceptionCode.USER_CONDITION_FIT; + } + + public User getUserByLoginName(String loginName)throws Exception { + UserExample example = new UserExample(); + example.createCriteria().andLoginNameEqualTo(loginName).andStatusEqualTo(BusinessConstants.USER_STATUS_NORMAL) + .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list=null; + try{ + list= userMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + User user =null; + if(list!=null&&list.size()>0){ + user = list.get(0); + } + return user; + } + + /** + * 发送邮件给当前用户 + * @param request + * @param user + * @throws Exception + */ + private void sendEmailToCurrentUser(HttpServletRequest request, User user) throws Exception { + String platformName = platformConfigService.getPlatformConfigByKey("platform_name").getPlatformValue(); + String emailFrom = platformConfigService.getPlatformConfigByKey("email_from").getPlatformValue(); + String emailAuthCode = platformConfigService.getPlatformConfigByKey("email_auth_code").getPlatformValue(); + String emailSmtpHost = platformConfigService.getPlatformConfigByKey("email_smtp_host").getPlatformValue(); + if(StringUtil.isNotEmpty(emailFrom) && StringUtil.isNotEmpty(emailAuthCode) && StringUtil.isNotEmpty(emailSmtpHost) + && StringUtil.isNotEmpty(user.getEmail())) { + String emailSubject = "用户" + user.getLoginName() + "成功登录" + platformName; + String emailBody = "用户" + user.getLoginName() + "成功登录" + platformName + ",登录时间:" + Tools.getCenternTime(new Date()) + + ",登录IP:" + Tools.getLocalIp(request); + platformConfigService.sendEmail(emailFrom, emailAuthCode, emailSmtpHost, user.getEmail(), emailSubject, emailBody); + } + } + + public int checkIsNameExist(Long id, String name)throws Exception { + UserExample example = new UserExample(); + List userStatus = new ArrayList<>(); + userStatus.add(BusinessConstants.USER_STATUS_NORMAL); + example.createCriteria().andIdNotEqualTo(id).andLoginNameEqualTo(name).andStatusIn(userStatus) + .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list=null; + try{ + list= userMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list==null?0:list.size(); + } + /** + * create by: cjl + * description: + * 获取当前用户信息 + * create time: 2019/1/24 10:01 + * @Param: + * @return com.reallin.smt.datasource.entities.User + */ + public User getCurrentUser()throws Exception{ + HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest(); + Long userId = Long.parseLong(redisService.getObjectFromSessionByKey(request,"userId").toString()); + return getUser(userId); + } + + /** + * 根据用户名查询id + * @param loginName + * @return + */ + public Long getIdByLoginName(String loginName) { + Long userId = 0L; + UserExample example = new UserExample(); + example.createCriteria().andLoginNameEqualTo(loginName).andStatusEqualTo(BusinessConstants.USER_STATUS_NORMAL) + .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list = userMapper.selectByExample(example); + if(list!=null) { + userId = list.get(0).getId(); + } + return userId; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public void addUserAndOrgUserRel(UserEx ue, HttpServletRequest request) throws Exception{ + if(BusinessConstants.DEFAULT_MANAGER.equals(ue.getLoginName())) { + throw new BusinessRunTimeException(ExceptionConstants.USER_NAME_LIMIT_USE_CODE, + ExceptionConstants.USER_NAME_LIMIT_USE_MSG); + } else { + logService.insertLog("用户", + BusinessConstants.LOG_OPERATION_TYPE_ADD, + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); + //校验角色和部门的选择逻辑 + checkRoleAndOrg(ue); + //检查用户名和登录名 + checkLoginName(ue); + //新增用户信息 + ue= this.addUser(ue); + if(ue==null){ + logger.error("异常码[{}],异常提示[{}],参数,[{}]", + ExceptionConstants.USER_ADD_FAILED_CODE,ExceptionConstants.USER_ADD_FAILED_MSG); + throw new BusinessRunTimeException(ExceptionConstants.USER_ADD_FAILED_CODE, + ExceptionConstants.USER_ADD_FAILED_MSG); + } + //用户id,根据用户名查询id + Long userId = getIdByLoginName(ue.getLoginName()); + if(ue.getRoleId()!=null){ + JSONObject ubObj = new JSONObject(); + ubObj.put("type", "UserRole"); + ubObj.put("keyid", userId); + ubObj.put("value", "[" + ue.getRoleId() + "]"); + userBusinessService.insertUserBusiness(ubObj, request); + } + if(ue.getOrgaId()!=null && "1".equals(ue.getLeaderFlag())){ + //检查当前部门是否存在经理 + List checkList = userMapperEx.getListByOrgaId(ue.getId(), ue.getOrgaId()); + if(checkList.size()>0) { + throw new BusinessRunTimeException(ExceptionConstants.USER_LEADER_IS_EXIST_CODE, + ExceptionConstants.USER_LEADER_IS_EXIST_MSG); + } + } + //新增用户和部门关联关系 + OrgaUserRel oul=new OrgaUserRel(); + //部门id + oul.setOrgaId(ue.getOrgaId()); + oul.setUserId(userId); + //用户在部门中的排序 + oul.setUserBlngOrgaDsplSeq(ue.getUserBlngOrgaDsplSeq()); + oul=orgaUserRelService.addOrgaUserRel(oul); + if(oul==null){ + logger.error("异常码[{}],异常提示[{}],参数,[{}]", + ExceptionConstants.ORGA_USER_REL_ADD_FAILED_CODE,ExceptionConstants.ORGA_USER_REL_ADD_FAILED_MSG); + throw new BusinessRunTimeException(ExceptionConstants.ORGA_USER_REL_ADD_FAILED_CODE, + ExceptionConstants.ORGA_USER_REL_ADD_FAILED_MSG); + } + } + } + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public UserEx addUser(UserEx ue) throws Exception{ + /** + * 新增用户默认设置 + * 1是否系统自带默认为非系统自带 + * 2是否管理者默认为员工 + * 3默认用户状态为正常 + * */ + ue.setIsystem(BusinessConstants.USER_NOT_SYSTEM); + if(ue.getIsmanager()==null){ + ue.setIsmanager(BusinessConstants.USER_NOT_MANAGER); + } + ue.setStatus(BusinessConstants.USER_STATUS_NORMAL); + int result=0; + try{ + result= userMapper.insertSelective(ue); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + if(result>0){ + return ue; + } + return null; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public void registerUser(UserEx ue, Integer manageRoleId, HttpServletRequest request) throws Exception{ + /** + * 多次创建事务,事物之间无法协同,应该在入口处创建一个事务以做协调 + */ + if(BusinessConstants.DEFAULT_MANAGER.equals(ue.getLoginName())) { + throw new BusinessRunTimeException(ExceptionConstants.USER_NAME_LIMIT_USE_CODE, + ExceptionConstants.USER_NAME_LIMIT_USE_MSG); + } else { + ue.setPassword(ue.getPassword()); + ue.setIsystem(BusinessConstants.USER_NOT_SYSTEM); + if (ue.getIsmanager() == null) { + ue.setIsmanager(BusinessConstants.USER_NOT_MANAGER); + } + ue.setStatus(BusinessConstants.USER_STATUS_NORMAL); + try{ + userMapper.insertSelective(ue); + Long userId = getIdByLoginName(ue.getLoginName()); + ue.setId(userId); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + //新增用户与角色的关系 + JSONObject ubObj = new JSONObject(); + ubObj.put("type", "UserRole"); + ubObj.put("keyid", ue.getId()); + JSONArray ubArr = new JSONArray(); + ubArr.add(manageRoleId); + ubObj.put("value", ubArr.toString()); + userBusinessService.insertUserBusiness(ubObj, null); + } + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public void updateUserTenant(User user) throws Exception{ + UserExample example = new UserExample(); + example.createCriteria().andIdEqualTo(user.getId()); + try{ + userMapper.updateByPrimaryKeySelective(user); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public void updateUserAndOrgUserRel(UserEx ue, HttpServletRequest request) throws Exception{ + if(BusinessConstants.DEFAULT_MANAGER.equals(ue.getLoginName())) { + throw new BusinessRunTimeException(ExceptionConstants.USER_NAME_LIMIT_USE_CODE, + ExceptionConstants.USER_NAME_LIMIT_USE_MSG); + } else { + logService.insertLog("用户", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_EDIT).append(ue.getId()).toString(), + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); + //校验角色和部门的选择逻辑 + checkRoleAndOrg(ue); + //检查用户名和登录名 + checkLoginName(ue); + //更新用户信息 + ue = this.updateUser(ue); + if (ue == null) { + logger.error("异常码[{}],异常提示[{}],参数,[{}]", + ExceptionConstants.USER_EDIT_FAILED_CODE, ExceptionConstants.USER_EDIT_FAILED_MSG); + throw new BusinessRunTimeException(ExceptionConstants.USER_EDIT_FAILED_CODE, + ExceptionConstants.USER_EDIT_FAILED_MSG); + } + if(ue.getRoleId()!=null){ + JSONObject ubObj = new JSONObject(); + ubObj.put("type", "UserRole"); + ubObj.put("keyid", ue.getId()); + ubObj.put("value", "[" + ue.getRoleId() + "]"); + Long ubId = userBusinessService.checkIsValueExist("UserRole", ue.getId().toString()); + if(ubId!=null) { + ubObj.put("id", ubId); + userBusinessService.updateUserBusiness(ubObj, request); + } else { + userBusinessService.insertUserBusiness(ubObj, request); + } + } + if(ue.getOrgaId()!=null && "1".equals(ue.getLeaderFlag())){ + //检查当前部门是否存在经理 + List checkList = userMapperEx.getListByOrgaId(ue.getId(), ue.getOrgaId()); + if(checkList.size()>0) { + throw new BusinessRunTimeException(ExceptionConstants.USER_LEADER_IS_EXIST_CODE, + ExceptionConstants.USER_LEADER_IS_EXIST_MSG); + } + } + //更新用户和部门关联关系 + OrgaUserRel oul = new OrgaUserRel(); + //部门和用户关联关系id + oul.setId(ue.getOrgaUserRelId()); + //部门id + oul.setOrgaId(ue.getOrgaId()); + //用户id + oul.setUserId(ue.getId()); + //用户在部门中的排序 + oul.setUserBlngOrgaDsplSeq(ue.getUserBlngOrgaDsplSeq()); + if (oul.getId() != null) { + //已存在部门和用户的关联关系,更新 + oul = orgaUserRelService.updateOrgaUserRel(oul); + } else { + //不存在部门和用户的关联关系,新建 + oul = orgaUserRelService.addOrgaUserRel(oul); + } + if (oul == null) { + logger.error("异常码[{}],异常提示[{}],参数,[{}]", + ExceptionConstants.ORGA_USER_REL_EDIT_FAILED_CODE, ExceptionConstants.ORGA_USER_REL_EDIT_FAILED_MSG); + throw new BusinessRunTimeException(ExceptionConstants.ORGA_USER_REL_EDIT_FAILED_CODE, + ExceptionConstants.ORGA_USER_REL_EDIT_FAILED_MSG); + } + } + } + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public UserEx updateUser(UserEx ue)throws Exception{ + int result =0; + try{ + result=userMapper.updateByPrimaryKeySelective(ue); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + if(result>0){ + return ue; + } + return null; + } + + /** + * 校验角色和部门的选择逻辑:如果角色的数据类型是本部门数据,此时如果未选择部门,则异常 + * @param ue + */ + private void checkRoleAndOrg(UserEx ue) throws Exception { + // 单机版只按角色菜单授权,不再启用角色数据范围限制。 + } + /** + * 检查登录名不能重复 + * create time: 2019/3/12 11:36 + * @Param: userEx + * @return void + */ + public void checkLoginName(UserEx userEx)throws Exception{ + List list=null; + if(userEx==null){ + return; + } + Long userId=userEx.getId(); + //检查登录名 + if(!StringUtils.isEmpty(userEx.getLoginName())){ + String loginName=userEx.getLoginName(); + list=this.getUserListByloginName(loginName); + if(list!=null&&list.size()>0){ + if(list.size()>1){ + //超过一条数据存在,该登录名已存在 + logger.error("异常码[{}],异常提示[{}],参数,loginName:[{}]", + ExceptionConstants.USER_LOGIN_NAME_ALREADY_EXISTS_CODE,ExceptionConstants.USER_LOGIN_NAME_ALREADY_EXISTS_MSG,loginName); + throw new BusinessRunTimeException(ExceptionConstants.USER_LOGIN_NAME_ALREADY_EXISTS_CODE, + ExceptionConstants.USER_LOGIN_NAME_ALREADY_EXISTS_MSG); + } + //一条数据,新增时抛出异常,修改时和当前的id不同时抛出异常 + if(list.size()==1){ + if(userId==null||(userId!=null&&!userId.equals(list.get(0).getId()))){ + logger.error("异常码[{}],异常提示[{}],参数,loginName:[{}]", + ExceptionConstants.USER_LOGIN_NAME_ALREADY_EXISTS_CODE,ExceptionConstants.USER_LOGIN_NAME_ALREADY_EXISTS_MSG,loginName); + throw new BusinessRunTimeException(ExceptionConstants.USER_LOGIN_NAME_ALREADY_EXISTS_CODE, + ExceptionConstants.USER_LOGIN_NAME_ALREADY_EXISTS_MSG); + } + } + } + } + } + /** + * 通过登录名获取用户列表 + * */ + public List getUserListByloginName(String loginName){ + List list =null; + try{ + list=userMapperEx.getUserListByUserNameOrLoginName(null,loginName); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public List getOrganizationUserTree()throws Exception { + List list =null; + try{ + list=userMapperEx.getNodeTree(); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + /** + * 根据用户id查询角色信息 + * @param userId + * @return + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public Role getRoleTypeByUserId(long userId) throws Exception { + Role role = new Role(); + List list = userBusinessService.getBasicData(String.valueOf(userId), "UserRole"); + UserBusiness ub = null; + if(list.size() > 0) { + ub = list.get(0); + String values = ub.getValue(); + String roleId = null; + if(values!=null) { + values = values.replaceAll("\\[\\]",",").replace("[","").replace("]",""); + } + String [] valueArray=values.split(","); + if(valueArray.length>0) { + roleId = valueArray[0]; + } + role = roleService.getRoleWithoutTenant(Long.parseLong(roleId)); + } + return role; + } + + /** + * 获取用户id + * @param request + * @return + */ + public Long getUserId(HttpServletRequest request) throws Exception{ + Object userIdObj = redisService.getObjectFromSessionByKey(request,"userId"); + Long userId = null; + if(userIdObj != null) { + userId = Long.parseLong(userIdObj.toString()); + } + return userId; + } + + /** + * 用户的按钮权限 + * @param userId + * @return + * @throws Exception + */ + public JSONArray getBtnStrArrById(Long userId) throws Exception { + JSONArray btnStrArr = new JSONArray(); + List userRoleList = userBusinessService.getBasicData(userId.toString(), "UserRole"); + if(userRoleList!=null && userRoleList.size()>0) { + String roleValue = userRoleList.get(0).getValue(); + if(StringUtil.isNotEmpty(roleValue) && roleValue.indexOf("[")>-1 && roleValue.indexOf("]")>-1){ + roleValue = roleValue.replace("[", "").replace("]", ""); //角色id-单个 + List roleFunctionsList = userBusinessService.getBasicData(roleValue, "RoleFunctions"); + if(roleFunctionsList!=null && roleFunctionsList.size()>0) { + String btnStr = roleFunctionsList.get(0).getBtnStr(); + if(StringUtil.isNotEmpty(btnStr)){ + btnStrArr = JSONArray.parseArray(btnStr); + } + } + } + } + //将数组中的funId转为url + JSONArray btnStrWithUrlArr = new JSONArray(); + if(btnStrArr.size()>0) { + List functionList = functionService.getFunction(); + Map functionMap = new HashMap<>(); + for (Function function: functionList) { + functionMap.put(function.getId(), function.getUrl()); + } + for (Object obj : btnStrArr) { + JSONObject btnStrObj = JSONObject.parseObject(obj.toString()); + Long funId = btnStrObj.getLong("funId"); + JSONObject btnStrWithUrlObj = new JSONObject(); + btnStrWithUrlObj.put("url", functionMap.get(funId)); + btnStrWithUrlObj.put("btnStr", btnStrObj.getString("btnStr")); + btnStrWithUrlArr.add(btnStrWithUrlObj); + } + } + return btnStrWithUrlArr; + } + + /** + * 判断当前用户是否拥有权限管理按钮权限。 + * 默认管理员作为初始授权入口,始终拥有该权限。 + * + * @return true-可查看并分配全部菜单,false-只能分配自身已有菜单 + */ + public boolean hasPermissionManagement() throws Exception { + User userInfo = getCurrentUser(); + if(userInfo == null) { + return false; + } + if(BusinessConstants.DEFAULT_MANAGER.equals(userInfo.getLoginName())) { + return true; + } + JSONArray btnStrArr = getBtnStrArrById(userInfo.getId()); + for(Object obj : btnStrArr) { + JSONObject btnObj = JSONObject.parseObject(obj.toString()); + if(BusinessConstants.PERMISSION_MANAGEMENT_URL.equals(btnObj.getString("url"))) { + String btnStr = btnObj.getString("btnStr"); + if(StringUtil.isNotEmpty(btnStr) + && ("," + btnStr + ",").contains("," + BusinessConstants.PERMISSION_MANAGEMENT_BUTTON + ",")) { + return true; + } + } + } + return false; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchSetStatus(Byte status, String ids, HttpServletRequest request)throws Exception { + int result=0; + List list = getUserListByIds(ids); + StringBuilder userStr = new StringBuilder(); + List idList = new ArrayList<>(); + for(User user: list) { + idList.add(user.getId()); + userStr.append(user.getLoginName()).append(" "); + } + String statusStr =""; + if(status == 0) { + statusStr ="批量启用"; + } else if(status == 2) { + statusStr ="批量禁用"; + } + if(idList.size()>0) { + User user = new User(); + user.setStatus(status); + UserExample example = new UserExample(); + example.createCriteria().andIdIn(idList); + result = userMapper.updateByExampleSelective(user, example); + logService.insertLog("用户", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_EDIT).append(userStr).append("-").append(statusStr).toString(), + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); + } else { + result = 1; + } + return result; + } + + public User getUserByWeixinCode(String weixinCode) throws Exception { + String weixinLogin = platformConfigService.getPlatformConfigByKey("weixinUrl").getPlatformValue() + BusinessConstants.WEIXIN_LOGIN; + String weixinAppid = platformConfigService.getPlatformConfigByKey("weixinAppid").getPlatformValue(); + String weixinSecret = platformConfigService.getPlatformConfigByKey("weixinSecret").getPlatformValue(); + String url = weixinLogin + "?appid=" + weixinAppid + "&secret=" + weixinSecret + "&js_code=" + weixinCode + + "&grant_type=authorization_code"; + JSONObject jsonObject = HttpClient.httpGet(url); + if(jsonObject!=null) { + String weixinOpenId = jsonObject.getString("openid"); + if(StringUtil.isNotEmpty(weixinOpenId)) { + return userMapperEx.getUserByWeixinOpenId(weixinOpenId); + } + } + return null; + } + + public int weixinBind(String loginName, String password, String weixinCode) throws Exception { + String weixinUrl = platformConfigService.getPlatformConfigByKey("weixinUrl").getPlatformValue() + BusinessConstants.WEIXIN_LOGIN; + String weixinAppid = platformConfigService.getPlatformConfigByKey("weixinAppid").getPlatformValue(); + String weixinSecret = platformConfigService.getPlatformConfigByKey("weixinSecret").getPlatformValue(); + String url = weixinUrl + "?appid=" + weixinAppid + "&secret=" + weixinSecret + "&js_code=" + weixinCode + + "&grant_type=authorization_code"; + JSONObject jsonObject = HttpClient.httpGet(url); + if(jsonObject!=null) { + String weixinOpenId = jsonObject.getString("openid"); + if(StringUtil.isNotEmpty(weixinOpenId)) { + return userMapperEx.updateUserWithWeixinOpenId(loginName, password, weixinOpenId); + } + } + return 0; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/utils/AnnotationUtils.java b/smtERP-boot/src/main/java/com/reallin/smt/utils/AnnotationUtils.java new file mode 100644 index 0000000..eb0cf3c --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/utils/AnnotationUtils.java @@ -0,0 +1,28 @@ +package com.reallin.smt.utils; + +import java.lang.annotation.Annotation; +import java.lang.annotation.Documented; + +/** + * @author jishenghua qq752718920 2018-10-7 15:26:27 + */ +public class AnnotationUtils { + public static A getAnnotation(Class cls, Class annotationClass) { + A res = cls.getAnnotation(annotationClass); + if (res == null) { + for (Annotation annotation : cls.getAnnotations()) { + if (annotation instanceof Documented) { + break; + } + res = getAnnotation(annotation.annotationType(), annotationClass); + if (res != null) + break; + } + } + return res; + } + + public static A getAnnotation(T obj, Class annotationClass) { + return getAnnotation(obj.getClass(), annotationClass); + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/utils/BaseResponseInfo.java b/smtERP-boot/src/main/java/com/reallin/smt/utils/BaseResponseInfo.java new file mode 100644 index 0000000..77509fe --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/utils/BaseResponseInfo.java @@ -0,0 +1,11 @@ +package com.reallin.smt.utils; + +public class BaseResponseInfo { + public int code; + public Object data; + + public BaseResponseInfo() { + code = 400; + data = null; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/utils/ColumnPropertyUtil.java b/smtERP-boot/src/main/java/com/reallin/smt/utils/ColumnPropertyUtil.java new file mode 100644 index 0000000..fea1771 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/utils/ColumnPropertyUtil.java @@ -0,0 +1,65 @@ +package com.reallin.smt.utils; + +/** + * @author jishenghua qq752718920 2018-10-7 15:26:27 + */ +public class ColumnPropertyUtil { + + /** + * 将数据库字段转换成属性 + */ + public static String columnToProperty(String column) { + StringBuilder result = new StringBuilder(); + // 快速检查 + if (StringUtil.isEmpty(column)) { + // 没必要转换 + return ""; + } else if (!column.contains("_")) { + // 不做转换 + return column; + } else { + // 用下划线将原始字符串分割 + String[] columns = column.split("_"); + for (String columnSplit : columns) { + // 跳过原始字符串中开头、结尾的下换线或双重下划线 + if (StringUtil.isEmpty(columnSplit)) { + continue; + } + // 处理真正的驼峰片段 + if (result.length() == 0) { + // 第一个驼峰片段,全部字母都小写 + result.append(columnSplit.toLowerCase()); + } else { + // 其他的驼峰片段,首字母大写 + result.append(columnSplit.substring(0, 1).toUpperCase()).append(columnSplit.substring(1).toLowerCase()); + } + } + return result.toString(); + } + + } + + + /** + * 驼峰转换下划线 + */ + public static String propertyToColumn(String property) { + if (StringUtil.isEmpty(property)) { + return ""; + } + StringBuilder column = new StringBuilder(); + column.append(property.substring(0, 1).toLowerCase()); + for (int i = 1; i < property.length(); i++) { + String s = property.substring(i, i + 1); + // 在小写字母前添加下划线 + if (!Character.isDigit(s.charAt(0)) && s.equals(s.toUpperCase())) { + column.append("_"); + } + // 其他字符直接转成小写 + column.append(s.toLowerCase()); + } + + return column.toString(); + } + +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/utils/ComputerInfo.java b/smtERP-boot/src/main/java/com/reallin/smt/utils/ComputerInfo.java new file mode 100644 index 0000000..699f9ef --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/utils/ComputerInfo.java @@ -0,0 +1,137 @@ +package com.reallin.smt.utils; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.net.InetAddress; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/* + * <取网卡物理地址-- + * 1.在Windows,Linux系统下均可用; + * 2.通过ipconifg,ifconfig获得计算机信息; + * 3.再用模式匹配方式查找MAC地址,与操作系统的语言无关> + * + * //* Description: <取计算机名--从环境变量中取> + * abstract 限制继承/创建实例 + */ +public abstract class ComputerInfo { + private static String macAddressStr = null; + private static String computerName = System.getenv().get("COMPUTERNAME"); + + private static final String[] windowsCommand = { "ipconfig", "/all" }; + private static final String[] linuxCommand = { "/sbin/ifconfig", "-a" }; + private static final Pattern macPattern = Pattern.compile(".*((:?[0-9a-f]{2}[-:]){5}[0-9a-f]{2}).*", + Pattern.CASE_INSENSITIVE); + + /** + * 获取多个网卡地址 + * + * @return + * @throws IOException + */ + private final static List getMacAddressList() throws IOException { + final ArrayList macAddressList = new ArrayList(); + final String os = System.getProperty("os.name"); + final String command[]; + + if (os.startsWith("Windows")) { + command = windowsCommand; + } else if (os.startsWith("Linux")) { + command = linuxCommand; + } else { + throw new IOException("Unknow operating system:" + os); + } + // 执行命令 + final Process process = Runtime.getRuntime().exec(command); + + BufferedReader bufReader = new BufferedReader(new InputStreamReader(process.getInputStream())); + for (String line = null; (line = bufReader.readLine()) != null;) { + Matcher matcher = macPattern.matcher(line); + if (matcher.matches()) { + macAddressList.add(matcher.group(1)); + // macAddressList.add(matcher.group(1).replaceAll("[-:]", + // ""));//去掉MAC中的“-” + } + } + + process.destroy(); + bufReader.close(); + return macAddressList; + } + + /** + * 获取一个网卡地址(多个网卡时从中获取一个) + * + * @return + */ + public static String getMacAddress() { + if (macAddressStr == null || macAddressStr.equals("")) { + StringBuffer sb = new StringBuffer(); // 存放多个网卡地址用,目前只取一个非0000000000E0隧道的值 + try { + List macList = getMacAddressList(); + for (Iterator iter = macList.iterator(); iter.hasNext();) { + String amac = iter.next(); + if (!amac.equals("0000000000E0")) { + sb.append(amac); + break; + } + } + } catch (IOException ignored) { + } + + macAddressStr = sb.toString(); + + } + + return macAddressStr; + } + + /** + * 获取电脑名 + * + * @return + */ + public static String getComputerName() { + if (computerName == null || computerName.equals("")) { + computerName = System.getenv().get("COMPUTERNAME"); + } + return computerName; + } + + /** + * 获取客户端IP地址 + * + * @return + */ + public static String getIpAddrAndName() throws IOException { + return InetAddress.getLocalHost().toString(); + } + + /** + * 获取客户端IP地址 + * + * @return + */ + public static String getIpAddr() throws IOException { + return InetAddress.getLocalHost().getHostAddress().toString(); + } + + /** + * 限制创建实例 + */ + private ComputerInfo() { + + } + + public static void main(String[] args) throws IOException { + System.out.println(ComputerInfo.getMacAddress()); + System.out.println(ComputerInfo.getComputerName()); + System.out.println(ComputerInfo.getIpAddr()); + System.out.println(ComputerInfo.getIpAddrAndName()); + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/utils/Constants.java b/smtERP-boot/src/main/java/com/reallin/smt/utils/Constants.java new file mode 100644 index 0000000..84f7227 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/utils/Constants.java @@ -0,0 +1,34 @@ +package com.reallin.smt.utils; + +import java.util.UUID; + +/** + * by jishenghua qq-752718920 2018-10-7 12:01:36 + */ +public class Constants { + + //查询参数 + public final static String PAGE_SIZE = "pageSize"; + public final static String CURRENT_PAGE = "currentPage"; + public final static String ORDER = "order"; + public final static String FILTER = "filter"; + public final static String SPLIT = ","; + public final static String SEARCH = "search"; + public final static String DEVICE_ID = "deviceId"; + public final static String OFFSET = "offset"; + public final static String ROWS = "rows"; + public final static String IS_RECURSION = "isRecursion"; + public final static String IS_RECURSION_VALUE = "1"; + public final static String IS_QUERYBYNODEID = "isquerybyid"; + public final static String IS_QUERYBYNODEID_VALUE = "1"; + + //级联类别 + public final static String TYPE = "type"; + + //转发 + public final static String TEAM = "team"; + + //增加了角色等级常量 + public final static String LEVEL="level"; + +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/utils/Convert.java b/smtERP-boot/src/main/java/com/reallin/smt/utils/Convert.java new file mode 100644 index 0000000..cf4e31c --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/utils/Convert.java @@ -0,0 +1,536 @@ +package com.reallin.smt.utils; + +import com.reallin.smt.utils.StringUtil; + +import java.math.BigDecimal; +import java.text.NumberFormat; + +/** + * 类型转换器 + * + * @author ji-sheng-hua + */ +public class Convert +{ + /** + * 转换为字符串
+ * 如果给定的值为null,或者转换失败,返回默认值
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * @param defaultValue 转换错误时的默认值 + * @return 结果 + */ + public static String toStr(Object value, String defaultValue) + { + if (null == value) + { + return defaultValue; + } + if (value instanceof String) + { + return (String) value; + } + return value.toString(); + } + + /** + * 转换为字符串
+ * 如果给定的值为null,或者转换失败,返回默认值null
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * @return 结果 + */ + public static String toStr(Object value) + { + return toStr(value, null); + } + + /** + * 转换为字符
+ * 如果给定的值为null,或者转换失败,返回默认值
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * @param defaultValue 转换错误时的默认值 + * @return 结果 + */ + public static Character toChar(Object value, Character defaultValue) + { + if (null == value) + { + return defaultValue; + } + if (value instanceof Character) + { + return (Character) value; + } + + final String valueStr = toStr(value, null); + return StringUtil.isEmpty(valueStr) ? defaultValue : valueStr.charAt(0); + } + + /** + * 转换为字符
+ * 如果给定的值为null,或者转换失败,返回默认值null
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * @return 结果 + */ + public static Character toChar(Object value) + { + return toChar(value, null); + } + + /** + * 转换为byte
+ * 如果给定的值为null,或者转换失败,返回默认值
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * @param defaultValue 转换错误时的默认值 + * @return 结果 + */ + public static Byte toByte(Object value, Byte defaultValue) + { + if (value == null) + { + return defaultValue; + } + if (value instanceof Byte) + { + return (Byte) value; + } + if (value instanceof Number) + { + return ((Number) value).byteValue(); + } + final String valueStr = toStr(value, null); + if (StringUtil.isEmpty(valueStr)) + { + return defaultValue; + } + try + { + return Byte.parseByte(valueStr); + } + catch (Exception e) + { + return defaultValue; + } + } + + /** + * 转换为byte
+ * 如果给定的值为null,或者转换失败,返回默认值null
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * @return 结果 + */ + public static Byte toByte(Object value) + { + return toByte(value, null); + } + + /** + * 转换为Short
+ * 如果给定的值为null,或者转换失败,返回默认值
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * @param defaultValue 转换错误时的默认值 + * @return 结果 + */ + public static Short toShort(Object value, Short defaultValue) + { + if (value == null) + { + return defaultValue; + } + if (value instanceof Short) + { + return (Short) value; + } + if (value instanceof Number) + { + return ((Number) value).shortValue(); + } + final String valueStr = toStr(value, null); + if (StringUtil.isEmpty(valueStr)) + { + return defaultValue; + } + try + { + return Short.parseShort(valueStr.trim()); + } + catch (Exception e) + { + return defaultValue; + } + } + + /** + * 转换为Short
+ * 如果给定的值为null,或者转换失败,返回默认值null
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * @return 结果 + */ + public static Short toShort(Object value) + { + return toShort(value, null); + } + + /** + * 转换为Number
+ * 如果给定的值为空,或者转换失败,返回默认值
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * @param defaultValue 转换错误时的默认值 + * @return 结果 + */ + public static Number toNumber(Object value, Number defaultValue) + { + if (value == null) + { + return defaultValue; + } + if (value instanceof Number) + { + return (Number) value; + } + final String valueStr = toStr(value, null); + if (StringUtil.isEmpty(valueStr)) + { + return defaultValue; + } + try + { + return NumberFormat.getInstance().parse(valueStr); + } + catch (Exception e) + { + return defaultValue; + } + } + + /** + * 转换为Number
+ * 如果给定的值为空,或者转换失败,返回默认值null
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * @return 结果 + */ + public static Number toNumber(Object value) + { + return toNumber(value, null); + } + + /** + * 转换为int
+ * 如果给定的值为空,或者转换失败,返回默认值
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * @param defaultValue 转换错误时的默认值 + * @return 结果 + */ + public static Integer toInt(Object value, Integer defaultValue) + { + if (value == null) + { + return defaultValue; + } + if (value instanceof Integer) + { + return (Integer) value; + } + if (value instanceof Number) + { + return ((Number) value).intValue(); + } + final String valueStr = toStr(value, null); + if (StringUtil.isEmpty(valueStr)) + { + return defaultValue; + } + try + { + return Integer.parseInt(valueStr.trim()); + } + catch (Exception e) + { + return defaultValue; + } + } + + /** + * 转换为int
+ * 如果给定的值为null,或者转换失败,返回默认值null
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * @return 结果 + */ + public static Integer toInt(Object value) + { + return toInt(value, null); + } + + /** + * 转换为Integer数组
+ * + * @param str 被转换的值 + * @return 结果 + */ + public static Integer[] toIntArray(String str) + { + return toIntArray(",", str); + } + + /** + * 转换为Long数组
+ * + * @param str 被转换的值 + * @return 结果 + */ + public static Long[] toLongArray(String str) + { + return toLongArray(",", str); + } + + /** + * 转换为Integer数组
+ * + * @param split 分隔符 + * @param split 被转换的值 + * @return 结果 + */ + public static Integer[] toIntArray(String split, String str) + { + if (StringUtil.isEmpty(str)) + { + return new Integer[] {}; + } + String[] arr = str.split(split); + final Integer[] ints = new Integer[arr.length]; + for (int i = 0; i < arr.length; i++) + { + final Integer v = toInt(arr[i], 0); + ints[i] = v; + } + return ints; + } + + /** + * 转换为Long数组
+ * + * @param split 分隔符 + * @param str 被转换的值 + * @return 结果 + */ + public static Long[] toLongArray(String split, String str) + { + if (StringUtil.isEmpty(str)) + { + return new Long[] {}; + } + String[] arr = str.split(split); + final Long[] longs = new Long[arr.length]; + for (int i = 0; i < arr.length; i++) + { + final Long v = toLong(arr[i], null); + longs[i] = v; + } + return longs; + } + + /** + * 转换为String数组
+ * + * @param str 被转换的值 + * @return 结果 + */ + public static String[] toStrArray(String str) + { + return toStrArray(",", str); + } + + /** + * 转换为String数组
+ * + * @param split 分隔符 + * @param split 被转换的值 + * @return 结果 + */ + public static String[] toStrArray(String split, String str) + { + return str.split(split); + } + + /** + * 转换为long
+ * 如果给定的值为空,或者转换失败,返回默认值
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * @param defaultValue 转换错误时的默认值 + * @return 结果 + */ + public static Long toLong(Object value, Long defaultValue) + { + if (value == null) + { + return defaultValue; + } + if (value instanceof Long) + { + return (Long) value; + } + if (value instanceof Number) + { + return ((Number) value).longValue(); + } + final String valueStr = toStr(value, null); + if (StringUtil.isEmpty(valueStr)) + { + return defaultValue; + } + try + { + // 支持科学计数法 + return new BigDecimal(valueStr.trim()).longValue(); + } + catch (Exception e) + { + return defaultValue; + } + } + + /** + * 转换为long
+ * 如果给定的值为null,或者转换失败,返回默认值null
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * @return 结果 + */ + public static Long toLong(Object value) + { + return toLong(value, null); + } + + /** + * 转换为double
+ * 如果给定的值为空,或者转换失败,返回默认值
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * @param defaultValue 转换错误时的默认值 + * @return 结果 + */ + public static Double toDouble(Object value, Double defaultValue) + { + if (value == null) + { + return defaultValue; + } + if (value instanceof Double) + { + return (Double) value; + } + if (value instanceof Number) + { + return ((Number) value).doubleValue(); + } + final String valueStr = toStr(value, null); + if (StringUtil.isEmpty(valueStr)) + { + return defaultValue; + } + try + { + // 支持科学计数法 + return new BigDecimal(valueStr.trim()).doubleValue(); + } + catch (Exception e) + { + return defaultValue; + } + } + + /** + * 转换为double
+ * 如果给定的值为空,或者转换失败,返回默认值null
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * @return 结果 + */ + public static Double toDouble(Object value) + { + return toDouble(value, null); + } + + /** + * 转换为boolean
+ * String支持的值为:true、false、yes、ok、no,1,0 如果给定的值为空,或者转换失败,返回默认值
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * @param defaultValue 转换错误时的默认值 + * @return 结果 + */ + public static Boolean toBool(Object value, Boolean defaultValue) + { + if (value == null) + { + return defaultValue; + } + if (value instanceof Boolean) + { + return (Boolean) value; + } + String valueStr = toStr(value, null); + if (StringUtil.isEmpty(valueStr)) + { + return defaultValue; + } + valueStr = valueStr.trim().toLowerCase(); + switch (valueStr) + { + case "true": + case "yes": + case "ok": + case "1": + return true; + case "false": + case "no": + case "0": + return false; + default: + return defaultValue; + } + } + + /** + * 转换为boolean
+ * 如果给定的值为空,或者转换失败,返回默认值null
+ * 转换失败不会报错 + * + * @param value 被转换的值 + * @return 结果 + */ + public static Boolean toBool(Object value) + { + return toBool(value, null); + } + +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/utils/DictUtils.java b/smtERP-boot/src/main/java/com/reallin/smt/utils/DictUtils.java new file mode 100644 index 0000000..579c13e --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/utils/DictUtils.java @@ -0,0 +1,249 @@ +package com.reallin.smt.utils; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.constants.BusinessConstants; +import com.reallin.smt.datasource.entities.SysDictData; +import com.reallin.smt.service.RedisService; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +/** + * 字典工具类 + * + * @author shenghua.ji + */ +public class DictUtils { + /** + * 分隔符 + */ + public static final String SEPARATOR = ","; + + /** + * 设置字典缓存 + * + * @param key 参数键 + * @param dictDatas 字典数据列表 + */ + public static void setDictCache(String key, List dictDatas) + { + String dictDatasStr = JSONObject.toJSONString(dictDatas); + StringUtil.getBean(RedisService.class).setCacheObject(getCacheKey(key), dictDatasStr); + } + + /** + * 获取字典缓存 + * + * @param key 参数键 + * @return dictDatas 字典数据列表 + */ + public static List getDictCache(String key) + { + List list = new ArrayList<>(); + String strCache = StringUtil.getBean(RedisService.class).getCacheObject(getCacheKey(key)); + if(StringUtil.isNotEmpty(strCache)) { + JSONArray arrayCache = JSONArray.parseArray(strCache); + if (StringUtil.isNotNull(arrayCache)) + { + for (Object item: arrayCache) { + SysDictData sysDictData = JSONObject.parseObject(item.toString(), SysDictData.class); + list.add(sysDictData); + } + return list; + } + } + return null; + } + + /** + * 根据字典类型和字典值获取字典标签 + * + * @param dictType 字典类型 + * @param dictValue 字典值 + * @return 字典标签 + */ + public static String getDictLabel(String dictType, String dictValue) + { + if (StringUtil.isEmpty(dictValue)) + { + return StringUtil.EMPTY; + } + return getDictLabel(dictType, dictValue, SEPARATOR); + } + + /** + * 根据字典类型和字典标签获取字典值 + * + * @param dictType 字典类型 + * @param dictLabel 字典标签 + * @return 字典值 + */ + public static String getDictValue(String dictType, String dictLabel) + { + if (StringUtil.isEmpty(dictLabel)) + { + return StringUtil.EMPTY; + } + return getDictValue(dictType, dictLabel, SEPARATOR); + } + + /** + * 根据字典类型和字典值获取字典标签 + * + * @param dictType 字典类型 + * @param dictValue 字典值 + * @param separator 分隔符 + * @return 字典标签 + */ + public static String getDictLabel(String dictType, String dictValue, String separator) + { + StringBuilder propertyString = new StringBuilder(); + List datas = getDictCache(dictType); + if (StringUtil.isNull(datas)) + { + return StringUtil.EMPTY; + } + if (StringUtil.containsAny(separator, dictValue)) + { + for (SysDictData dict : datas) + { + for (String value : dictValue.split(separator)) + { + if (value.equals(dict.getDictValue())) + { + propertyString.append(dict.getDictLabel()).append(separator); + break; + } + } + } + } + else + { + for (SysDictData dict : datas) + { + if (dictValue.equals(dict.getDictValue())) + { + return dict.getDictLabel(); + } + } + } + return StringUtil.stripEnd(propertyString.toString(), separator); + } + + /** + * 根据字典类型和字典标签获取字典值 + * + * @param dictType 字典类型 + * @param dictLabel 字典标签 + * @param separator 分隔符 + * @return 字典值 + */ + public static String getDictValue(String dictType, String dictLabel, String separator) + { + StringBuilder propertyString = new StringBuilder(); + List datas = getDictCache(dictType); + if (StringUtil.isNull(datas)) + { + return StringUtil.EMPTY; + } + if (StringUtil.containsAny(separator, dictLabel)) + { + for (SysDictData dict : datas) + { + for (String label : dictLabel.split(separator)) + { + if (label.equals(dict.getDictLabel())) + { + propertyString.append(dict.getDictValue()).append(separator); + break; + } + } + } + } + else + { + for (SysDictData dict : datas) + { + if (dictLabel.equals(dict.getDictLabel())) + { + return dict.getDictValue(); + } + } + } + return StringUtil.stripEnd(propertyString.toString(), separator); + } + + /** + * 根据字典类型获取字典所有值 + * + * @param dictType 字典类型 + * @return 字典值 + */ + public static String getDictValues(String dictType) + { + StringBuilder propertyString = new StringBuilder(); + List datas = getDictCache(dictType); + if (StringUtil.isNull(datas)) + { + return StringUtil.EMPTY; + } + for (SysDictData dict : datas) + { + propertyString.append(dict.getDictValue()).append(SEPARATOR); + } + return StringUtil.stripEnd(propertyString.toString(), SEPARATOR); + } + + /** + * 根据字典类型获取字典所有标签 + * + * @param dictType 字典类型 + * @return 字典值 + */ + public static String getDictLabels(String dictType) + { + StringBuilder propertyString = new StringBuilder(); + List datas = getDictCache(dictType); + if (StringUtil.isNull(datas)) + { + return StringUtil.EMPTY; + } + for (SysDictData dict : datas) + { + propertyString.append(dict.getDictLabel()).append(SEPARATOR); + } + return StringUtil.stripEnd(propertyString.toString(), SEPARATOR); + } + + /** + * 删除指定字典缓存 + * + * @param key 字典键 + */ + public static void removeDictCache(String key) + { + StringUtil.getBean(RedisService.class).deleteObject(getCacheKey(key)); + } + + /** + * 清空字典缓存 + */ + public static void clearDictCache() + { + Collection keys = StringUtil.getBean(RedisService.class).keys(BusinessConstants.SYS_DICT_KEY + "*"); + StringUtil.getBean(RedisService.class).deleteObject(keys); + } + + /** + * 设置cache key + * + * @param configKey 参数键 + * @return 缓存键key + */ + public static String getCacheKey(String configKey) + { + return BusinessConstants.SYS_DICT_KEY + configKey; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/utils/ErpInfo.java b/smtERP-boot/src/main/java/com/reallin/smt/utils/ErpInfo.java new file mode 100644 index 0000000..6d2cfe5 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/utils/ErpInfo.java @@ -0,0 +1,37 @@ +package com.reallin.smt.utils; + +/** + * + */ +public enum ErpInfo { + //通过构造传递参数 + OK(200, "成功"), + BAD_REQUEST(400, "请求错误或参数错误"), + UNAUTHORIZED(401, "未认证用户"), + INVALID_VERIFY_CODE(461, "错误的验证码"), + ERROR(500, "服务内部错误"), + WARING_MSG(201, "提醒信息"), + REDIRECT(301, "session失效,重定向"), + FORWARD_REDIRECT(302, "转发请求session失效"), + FORWARD_FAILED(303, "转发请求失败!"), + TEST_USER(-1, "演示用户禁止操作"); + + public final int code; + public final String name; + + public int getCode() { + return code; + } + + public String getName() { + return name; + } + + /** + * 定义枚举构造函数 + */ + ErpInfo(int code, String name) { + this.code = code; + this.name = name; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/utils/ExcelUtils.java b/smtERP-boot/src/main/java/com/reallin/smt/utils/ExcelUtils.java new file mode 100644 index 0000000..2fc827b --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/utils/ExcelUtils.java @@ -0,0 +1,246 @@ +package com.reallin.smt.utils; + +import java.io.*; +import java.math.BigDecimal; +import java.text.DecimalFormat; +import java.util.*; + +import jxl.*; +import lombok.extern.slf4j.Slf4j; +import org.springframework.util.StringUtils; +import jxl.format.*; +import jxl.write.Label; +import jxl.write.WritableCellFormat; +import jxl.write.WritableFont; +import jxl.write.WritableSheet; +import jxl.write.WritableWorkbook; + +import javax.servlet.http.HttpServletResponse; + +@Slf4j +public class ExcelUtils { + + public static InputStream getPathByFileName(String template, String tmpFileName) { + File tmpFile = new File(template, tmpFileName); + InputStream path = null; + //判断文件或文件夹是否存在 + if (tmpFile.exists()) { + try { + path = new FileInputStream(tmpFile); + } catch (FileNotFoundException e) { + log.error("", e); + } + } + return path; + } + + /** + * 导出excel,带多sheet + * + * @param wtwb + * @param tip + * @param names + * @param title + * @param index + * @param objects + * @return + * @throws Exception + */ + public static void exportObjectsManySheet(WritableWorkbook wtwb, String tip, + String[] names, String title, int index, List objects) throws Exception { + WritableSheet sheet = wtwb.createSheet(title, index); + sheet.getSettings().setDefaultColumnWidth(12); + + // 标题的格式-红色 + WritableFont redWF = new WritableFont(WritableFont.ARIAL, 12, + WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE, + Colour.RED); + WritableCellFormat redWFFC = new WritableCellFormat(redWF); + redWFFC.setVerticalAlignment(VerticalAlignment.CENTRE); + redWFFC.setBorder(Border.ALL, BorderLineStyle.THIN); + + // 标题的格式-黑色 + WritableFont blackWF = new WritableFont(WritableFont.ARIAL, 12, + WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE, + Colour.BLACK); + WritableCellFormat blackWFFC = new WritableCellFormat(blackWF); + blackWFFC.setVerticalAlignment(VerticalAlignment.CENTRE); + blackWFFC.setBorder(Border.ALL, BorderLineStyle.THIN); + + // 设置字体以及单元格格式 + WritableFont wfont = new WritableFont(WritableFont.createFont("楷书"), 12); + WritableCellFormat format = new WritableCellFormat(wfont); + format.setAlignment(Alignment.LEFT); + format.setVerticalAlignment(VerticalAlignment.TOP); + format.setBorder(jxl.format.Border.ALL,jxl.format.BorderLineStyle.THIN); + + // 第一行写入提示 + if(com.reallin.smt.utils.StringUtil.isNotEmpty(tip) && tip.contains("*")) { + sheet.addCell(new Label(0, 0, tip, redWFFC)); + } else { + sheet.addCell(new Label(0, 0, tip, blackWFFC)); + } + + // 第二行写入标题 + for (int i = 0; i < names.length; i++) { + if(StringUtil.isNotEmpty(names[i]) && names[i].contains("*")) { + sheet.addCell(new Label(i, 1, names[i], redWFFC)); + } else { + sheet.addCell(new Label(i, 1, names[i], blackWFFC)); + } + } + + // 其余行依次写入数据 + int rowNum = 2; + for (int j = 0; j < objects.size(); j++) { + String[] obj = objects.get(j); + for (int h = 0; h < obj.length; h++) { + sheet.addCell(new Label(h, rowNum, obj[h], format)); + } + rowNum = rowNum + 1; + } + } + + /** + * 导出excel,带单个sheet + * + * @param fileName + * @param names + * @param title + * @param objects + * @return + * @throws Exception + */ + + public static File exportObjectsOneSheet(String path, String fileName, String tip, + String[] names, String title, List objects) throws Exception { + FileUtils.makedir(path); + File excelFile = new File(path + File.separator + fileName); + WritableWorkbook wtwb = Workbook.createWorkbook(excelFile); + WritableSheet sheet = wtwb.createSheet(title, 0); + sheet.getSettings().setDefaultColumnWidth(12); + + // 标题的格式-红色 + WritableFont redWF = new WritableFont(WritableFont.ARIAL, 12, + WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE, Colour.RED); + WritableCellFormat redWFFC = new WritableCellFormat(redWF); + redWFFC.setVerticalAlignment(VerticalAlignment.CENTRE); + redWFFC.setBorder(jxl.format.Border.ALL,jxl.format.BorderLineStyle.THIN); + + // 标题的格式-黑色 + WritableFont blackWF = new WritableFont(WritableFont.ARIAL, 12, + WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE, Colour.BLACK); + WritableCellFormat blackWFFC = new WritableCellFormat(blackWF); + blackWFFC.setVerticalAlignment(VerticalAlignment.CENTRE); + blackWFFC.setBorder(jxl.format.Border.ALL,jxl.format.BorderLineStyle.THIN); + + // 设置字体以及单元格格式 + WritableFont wfont = new WritableFont(WritableFont.createFont("楷书"), 12); + WritableCellFormat format = new WritableCellFormat(wfont); + format.setAlignment(Alignment.LEFT); + format.setVerticalAlignment(VerticalAlignment.TOP); + format.setBorder(jxl.format.Border.ALL,jxl.format.BorderLineStyle.THIN); + + // 第一行写入提示 + if(StringUtil.isNotEmpty(tip) && tip.contains("*")) { + sheet.addCell(new Label(0, 0, tip, redWFFC)); + } else { + sheet.addCell(new Label(0, 0, tip, blackWFFC)); + } + + // 第二行写入标题 + for (int i = 0; i < names.length; i++) { + if(StringUtil.isNotEmpty(names[i]) && names[i].contains("*")) { + sheet.addCell(new Label(i, 1, names[i], redWFFC)); + } else { + sheet.addCell(new Label(i, 1, names[i], blackWFFC)); + } + } + + // 其余行依次写入数据 + int rowNum = 2; + for (int j = 0; j < objects.size(); j++) { + Object[] obj = objects.get(j); + for (int h = 0; h < obj.length; h++) { + if(obj[h] instanceof String) { + sheet.addCell(new Label(h, rowNum, obj[h].toString(), format)); + } else if(obj[h] instanceof BigDecimal || obj[h] instanceof Double || obj[h] instanceof Integer || obj[h] instanceof Long) { + sheet.addCell(new jxl.write.Number(h, rowNum, Double.parseDouble(obj[h].toString()), format)); + } else { + String cont = obj[h]!=null?obj[h].toString():""; + sheet.addCell(new Label(h, rowNum, cont, format)); + } + } + rowNum = rowNum + 1; + } + wtwb.write(); + wtwb.close(); + return excelFile; + } + + public static String getContent(Sheet src, int rowNum, int colNum) { + if(colNum < src.getRow(rowNum).length) { + return src.getRow(rowNum)[colNum].getContents().trim(); + } else { + return null; + } + } + + public static String getContentNumber(Sheet src, int rowNum, int colNum) { + if(colNum < src.getRow(rowNum).length) { + Cell cell = src.getCell(colNum, rowNum); + if(cell.getType() == CellType.NUMBER) { + NumberCell numCell = (NumberCell)cell; + double value = numCell.getValue(); // 获取完整精度的数值 + DecimalFormat df = new DecimalFormat("#.######"); // 设置足够多的小数位 + return df.format(value); + } else { + return cell.getContents().trim(); // 获取原始字符串内容 + } + } else { + return null; + } + } + + /** + * 获取真实的行数,剔除掉空白行 + * @param src + * @return + */ + public static int getRightRows(Sheet src) { + int rsRows = src.getRows(); //行数 + int rsCols = src.getColumns(); //列数 + int nullCellNum; + int rightRows = rsRows; + for (int i = 1; i < rsRows; i++) { //统计行中为空的单元格数 + nullCellNum = 0; + for (int j = 0; j < rsCols; j++) { + String val = src.getCell(j, i).getContents().trim(); + if (StringUtils.isEmpty(val)) { + nullCellNum++; + } + } + if (nullCellNum >= rsCols) { //如果nullCellNum大于或等于总的列数 + rightRows--; //行数减一 + } + } + return rightRows; + } + + public static void downloadExcel(File excelFile, String fileName, HttpServletResponse response) throws Exception{ + response.setContentType("application/octet-stream"); + fileName = new String(fileName.getBytes("gbk"),"ISO8859_1"); + response.setHeader("Content-Disposition", "attachment;filename=\"" + fileName + ".xls" + "\""); + FileInputStream fis = new FileInputStream(excelFile); + OutputStream out = response.getOutputStream(); + + int SIZE = 1024 * 1024; + byte[] bytes = new byte[SIZE]; + int LENGTH = -1; + while((LENGTH = fis.read(bytes)) != -1){ + out.write(bytes,0,LENGTH); + } + out.flush(); + fis.close(); + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/utils/ExceptionCodeConstants.java b/smtERP-boot/src/main/java/com/reallin/smt/utils/ExceptionCodeConstants.java new file mode 100644 index 0000000..af6fab8 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/utils/ExceptionCodeConstants.java @@ -0,0 +1,43 @@ +package com.reallin.smt.utils; + +public interface ExceptionCodeConstants { + /** + * 用户错误码定义 + */ + public class UserExceptionCode { + /** + * 用户不存在 + */ + public static final int USER_NOT_EXIST = 1; + + /** + * 用户密码错误 + */ + public static final int USER_PASSWORD_ERROR = 2; + + /** + * 用户被加入黑名单 + */ + public static final int BLACK_USER = 3; + + /** + * 可以登录 + */ + public static final int USER_CONDITION_FIT = 4; + + /** + * 访问数据库异常 + */ + public static final int USER_ACCESS_EXCEPTION = 5; + + /** + * 租户被加入黑名单 + */ + public static final int BLACK_TENANT = 6; + + /** + * 租户已经过期 + */ + public static final int EXPIRE_TENANT = 7; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/utils/ExtJsonUtils.java b/smtERP-boot/src/main/java/com/reallin/smt/utils/ExtJsonUtils.java new file mode 100644 index 0000000..e435346 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/utils/ExtJsonUtils.java @@ -0,0 +1,141 @@ +package com.reallin.smt.utils; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.parser.ParserConfig; +import com.alibaba.fastjson.parser.deserializer.ExtraProcessor; +import com.alibaba.fastjson.parser.deserializer.FieldDeserializer; +import com.alibaba.fastjson.serializer.*; + +import java.io.IOException; +import java.lang.reflect.Type; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +/** + * @author jishenghua qq752718920 2018-10-7 15:26:27 + */ +public class ExtJsonUtils { + private static class NPFloatCodec extends FloatCodec { + public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType) throws IOException { + SerializeWriter out = serializer.getWriter(); + + if (object == null) { + if (serializer.isEnabled(SerializerFeature.WriteNullNumberAsZero)) { + out.write('0'); + } else { + out.writeNull(); + } + return; + } + + float floatValue = (Float) object; + + if (Float.isNaN(floatValue)) { + out.writeNull(); + } else if (Float.isInfinite(floatValue)) { + out.writeNull(); + } else { + String floatText = Float.toString(floatValue); + out.write(floatText); + + if (serializer.isEnabled(SerializerFeature.WriteClassName)) { + out.write('F'); + } + } + } + } + + private static class NPDoubleSerializer extends DoubleSerializer { + public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType) throws IOException { + SerializeWriter out = serializer.getWriter(); + + if (object == null) { + if (!serializer.isEnabled(SerializerFeature.WriteNullNumberAsZero)) { + out.writeNull(); + } else { + out.write('0'); + } + return; + } + + double doubleValue = (Double) object; + + if (Double.isNaN(doubleValue)) { + out.writeNull(); + } else if (Double.isInfinite(doubleValue)) { + out.writeNull(); + } else { + String doubleText; + doubleText = Double.toString(doubleValue); + out.append(doubleText); + + if (serializer.isEnabled(SerializerFeature.WriteClassName)) { + out.write('D'); + } + } + } + } + + private static final String EXT_NAME = "ext"; + + static class ExtFilter extends AfterFilter implements PropertyFilter { + static { + SerializeConfig.getGlobalInstance().put(Float.class, new NPFloatCodec()); + SerializeConfig.getGlobalInstance().put(float.class, new NPFloatCodec()); + SerializeConfig.getGlobalInstance().put(Double.class, new NPDoubleSerializer()); + SerializeConfig.getGlobalInstance().put(double.class, new NPDoubleSerializer()); + } + + private Map map = new HashMap<>(); + + private Map> ignoredKey = new HashMap<>(); + + @Override + public boolean apply(Object object, String name, Object value) { + if (name.equals(EXT_NAME) && value instanceof String) { + map.put(object, JSON.parseObject((String) value)); + return false; + } + if (!map.containsKey(object)) { + ignoredKey.put(object, new HashSet()); + } + ignoredKey.get(object).add(name); +// if (value instanceof Float || value instanceof Double) { +// if (!floatMap.containsKey(object)) { +// floatMap.put(object, new HashMap()); +// } +// floatMap.get(object).put(name, value); +// return false; +// } + return true; + } + + @Override + public void writeAfter(Object object) { + if (map.containsKey(object)) { + Set ignoredKeys; + if (ignoredKey.containsKey(object)) { + ignoredKeys = ignoredKey.get(object); + } else { + ignoredKeys = new HashSet<>(); + } + for (Map.Entry entry : map.get(object).entrySet()) { + if (!ignoredKeys.contains(entry.getKey())) { + writeKeyValue(entry.getKey(), entry.getValue()); + } + } + } + } + } + + public static String toJSONString(Object object) { + return JSON.toJSONString(object, new ExtFilter()); + } + + public interface ExtExtractor { + String getExt(Object bean); + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/utils/FileUtils.java b/smtERP-boot/src/main/java/com/reallin/smt/utils/FileUtils.java new file mode 100644 index 0000000..8a6bfa2 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/utils/FileUtils.java @@ -0,0 +1,320 @@ +package com.reallin.smt.utils; + +import java.io.*; +import java.util.*; + +/** + * + * 文件处理工具类 + * + */ +public class FileUtils { + + /** + * 功 能: 创建文件夹 + * + * @param path + * 参 数:要创建的文件夹名称 + * @return 返回值: 如果成功true;否则false 如:FileUtils.mkdir("/usr/apps/upload/"); + */ + public static boolean makedir(String path) { + File file = new File(path); + if (!file.exists()) + return file.mkdirs(); + else + return true; + } + + /** + * 保存文件 + * + * @param stream + * @param path + * 存放路径 + * @param filename + * 文件名 + * @throws IOException + */ + public static void SaveFileFromInputStream(InputStream stream, String path, String filename) + throws IOException { + File file = new File(path); + boolean flag=true; + if(!file.exists()){ + flag=file.mkdirs(); + } + if(flag){ + FileOutputStream fs = new FileOutputStream(new File(path+filename)); + byte[] buffer = new byte[1024 * 1024]; + int byteread = 0; + while ((byteread = stream.read(buffer)) != -1) { + fs.write(buffer, 0, byteread); + fs.flush(); + } + fs.close(); + stream.close(); + } + } + + + /** + * 列出某个目录下的所有文件,子目录不列出 + * @param folderPath:文件夹路径 + * @return + */ + public static List listFile(String folderPath){ + List fileList = new ArrayList(); //FileViewer.getListFiles(destPath, null, false); + File f = new File(folderPath); + File[] t = f.listFiles(); + for(int i = 0; i < t.length; i++){ + fileList.add(t[i].getAbsolutePath()); + } + return fileList; + } + + + /** + * 判断文件是否存在 + * + * @param fileName + * @return + */ + public static boolean exists(String fileName) { + File file = new File(fileName); + if (file.exists()) { + return true; + } else { + return false; + } + } + + /** + * 获取文件扩展名 + * + * @param fileName + * @return + * */ + public static String getFileExtendName(String fileName) { + if (fileName == null) { + return ""; + } else { + return fileName.substring(fileName.lastIndexOf(".") + 1, fileName + .length()); + } + } + + /** + * 创建一个新文件,如果存在则报错 + * + * @param filePath + * @param fileName + * @return + */ + public static void createFile(String filePath, String fileName) + throws RuntimeException { + String file = null; + if (filePath == null) { + file = fileName; + } else { + file = filePath + File.separator + fileName; + } + createFile(file); + } + + /** + * 创建一个新文件(含路径),如果存在则报错 + * + * @param fileName + * 含有路径的文件名 + * @return + */ + public static void createFile(String fileName) throws RuntimeException { + File f = new File(fileName); + if (f.exists()) { + throw new RuntimeException("FILE_EXIST_ERROR"); + } else { + try { + File fileFolder = f.getParentFile(); + if (!fileFolder.exists()) + fileFolder.mkdirs(); + f.createNewFile(); + } catch (IOException ie) { + System.out.println("文件" + fileName + "创建失败:" + ie.getMessage()); + throw new RuntimeException("FILE_CREATE_ERROR"); + } + } + } + + + /** + * 创建目录,如果存在则不创建 + * + * @param path + * @return 返回结果null则创建成功,否则返回的是错误信息 + * @return + */ + public static String createDir(String path, boolean isCreateSubPah) { + String msg = null; + File dir = new File(path); + + if (dir == null) { + msg = "不能创建空目录"; + return msg; + } + if (dir.isFile()) { + msg = "已有同名文件存在"; + return msg; + } + if (!dir.exists()) { + if (isCreateSubPah && !dir.mkdirs()) { + msg = "目录创建失败,原因不明"; + } else if (!dir.mkdir()) { + msg = "目录创建失败,原因不明"; + } + } + return msg; + } + + /** + * 删除指定目录或文件。 如果要删除是目录,同时删除子目录下所有的文件 + * + * @file:File 目录 + * */ + public static void delFileOrFolder(String fileName) { + if (!exists(fileName)) + return; + File file = new File(fileName); + delFileOrFolder(file); + } + + /** + * 删除指定目录或文件。 如果要删除是目录,同时删除子目录下所有的文件 + * + * @file:File 目录 + * */ + public static void delFileOrFolder(File file) { + if (!file.exists()) + return; + if (file.isFile()) { + file.delete(); + } else { + File[] sub = file.listFiles(); + if (sub == null || sub.length <= 0) { + file.delete(); + } else { + for (int i = 0; i < sub.length; i++) { + delFileOrFolder(sub[i]); + } + file.delete(); + } + } + } + + /** + * 从Properties格式配置文件中获取所有参数并保存到HashMap中。 + * 配置中的key值即map表中的key值,如果配置文件保存时用的中文,则返回结果也会转成中文。 + * + * @param file + * @return + * @throws IOException + */ + @SuppressWarnings("unchecked") + public static HashMap readPropertyFile(String file, String charsetName) throws IOException { + if (charsetName==null || charsetName.trim().length()==0){ + charsetName="gbk"; + } + HashMap map = new HashMap(); + InputStream is =null; + if(file.startsWith("file:")) + is=new FileInputStream(new File(file.substring(5))); + else + is=FileUtils.class.getClassLoader().getResourceAsStream(file); + Properties properties = new Properties(); + properties.load(is); + Enumeration en = properties.propertyNames(); + while (en.hasMoreElements()) { + String key = (String) en.nextElement(); + String code = new String(properties.getProperty(key).getBytes( + "ISO-8859-1"), charsetName); + map.put(key, code); + } + return map; + } + /** + * + * @param path + * 文件路径 + * @param suffix + * 后缀名 + * @param isdepth + * 是否遍历子目录 + * @return + */ + @SuppressWarnings("unchecked") + public static List getListFiles(String path, String suffix, boolean isdepth) { + File file = new File(path); + return FileUtils.listFile(file, suffix, isdepth); + } + + /** + * @param f + * @param suffix:后缀名 + * @param isdepth:是否遍历子目录 + * @return + */ + @SuppressWarnings("unchecked") + public static List listFile(File f, String suffix, boolean isdepth) { + // 是目录,同时需要遍历子目录 + List fileList = new ArrayList(); + if (f.isDirectory() && isdepth == true) { + File[] t = f.listFiles(); + for (int i = 0; i < t.length; i++) { + listFile(t[i], suffix, isdepth); + } + } else { + String filePath = f.getAbsolutePath(); + + if (suffix != null) { + int begIndex = filePath.lastIndexOf(".");// 最后一个.(即后缀名前面的.)的索引 + String tempsuffix = ""; + + if (begIndex != -1)// 防止是文件但却没有后缀名结束的文件 + { + tempsuffix = filePath.substring(begIndex + 1, filePath + .length()); + } + + if (tempsuffix.equals(suffix)) { + fileList.add(filePath); + } + } else { + // 后缀名为null则为所有文件 + fileList.add(filePath); + } + + } + + return fileList; + } + + /** + * 判断文件名是否带盘符,重新处理 + * @param fileName + * @return + */ + public static String getFileName(String fileName){ + //判断是否带有盘符信息 + // Check for Unix-style path + int unixSep = fileName.lastIndexOf('/'); + // Check for Windows-style path + int winSep = fileName.lastIndexOf('\\'); + // Cut off at latest possible point + int pos = (winSep > unixSep ? winSep : unixSep); + if (pos != -1) { + // Any sort of path separator found... + fileName = fileName.substring(pos + 1); + } + //替换上传文件名字的特殊字符 + fileName = fileName.replace("=","").replace(",","").replace("&",""); + return fileName; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/utils/HttpClient.java b/smtERP-boot/src/main/java/com/reallin/smt/utils/HttpClient.java new file mode 100644 index 0000000..892e05c --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/utils/HttpClient.java @@ -0,0 +1,90 @@ +package com.reallin.smt.utils; + +import com.alibaba.fastjson.JSONObject; +import org.apache.http.HttpEntity; +import org.apache.http.client.config.RequestConfig; +import org.apache.http.client.entity.EntityBuilder; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.ContentType; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClientBuilder; +import org.apache.http.util.EntityUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; +import java.nio.charset.StandardCharsets; + +import static org.apache.http.HttpStatus.SC_OK; + +public final class HttpClient { + private static Logger logger = LoggerFactory.getLogger(HttpClient.class); + + private static final RequestConfig REQUEST_CONFIG = RequestConfig.custom().setSocketTimeout(15000).setConnectTimeout(10000).build(); + + /** + * 采用Get方式发送请求,获取响应数据 + * @param url + * @return + */ + public static JSONObject httpGet(String url){ + CloseableHttpClient client = HttpClientBuilder.create().build(); + HttpGet httpGet = new HttpGet(url); + httpGet.setConfig(REQUEST_CONFIG); + try { + CloseableHttpResponse chr = client.execute(httpGet); + int statusCode = chr.getStatusLine().getStatusCode(); + if (SC_OK != statusCode) { + throw new RuntimeException(String.format("%s查询出现异常", url)); + } + String entity = EntityUtils.toString(chr.getEntity(), StandardCharsets.UTF_8); + JSONObject object = JSONObject.parseObject(entity); + return object; + } catch (Exception e) { + logger.error(e.getMessage(), e); + throw new RuntimeException(String.format("%s", url) + "查询出现异常"); + } finally { + try { + client.close(); + } catch (IOException e) { + logger.error(e.getMessage(), e); + } + } + } + + /** + * 采用Post方式发送请求,获取响应数据 + * + * @param url url地址 + * @param param 参数值键值对的字符串 + * @return + */ + public static String httpPost(String url, String param) { + CloseableHttpClient client = HttpClientBuilder.create().build(); + try { + HttpPost post = new HttpPost(url); + EntityBuilder builder = EntityBuilder.create(); + builder.setContentType(ContentType.APPLICATION_JSON); + builder.setText(param); + post.setEntity(builder.build()); + + CloseableHttpResponse response = client.execute(post); + int statusCode = response.getStatusLine().getStatusCode(); + + HttpEntity entity = response.getEntity(); + String data = EntityUtils.toString(entity, StandardCharsets.UTF_8); + logger.info("状态:"+statusCode+",数据:"+data); + return data; + } catch(Exception e){ + throw new RuntimeException("HTTP POST 请求失败", e); + } finally { + try{ + client.close(); + } catch (IOException ex) { + logger.warn("关闭 HTTP 客户端失败", ex); + } + } + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/utils/JsonUtils.java b/smtERP-boot/src/main/java/com/reallin/smt/utils/JsonUtils.java new file mode 100644 index 0000000..ea31397 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/utils/JsonUtils.java @@ -0,0 +1,22 @@ +package com.reallin.smt.utils; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; + +/** + * Created by jishenghua 2018-5-11 09:48:08 + * + * @author jishenghua + */ +public class JsonUtils { + + public static JSONObject ok(){ + JSONObject obj = new JSONObject(); + JSONObject tmp = new JSONObject(); + tmp.put("message", "成功"); + obj.put("code", 200); + obj.put("data", tmp); + return obj; + } + +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/utils/LegacyInventoryResponse.java b/smtERP-boot/src/main/java/com/reallin/smt/utils/LegacyInventoryResponse.java new file mode 100644 index 0000000..2e48469 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/utils/LegacyInventoryResponse.java @@ -0,0 +1,36 @@ +package com.reallin.smt.utils; + +/** + * 原 n2tpm 盘点接口的响应包装。 + */ +public class LegacyInventoryResponse { + private final String code; + private final String msg; + private final Object data; + + private LegacyInventoryResponse(String code, String msg, Object data) { + this.code = code; + this.msg = msg; + this.data = data; + } + + public static LegacyInventoryResponse success(Object data) { + return new LegacyInventoryResponse("200", "操作成功", data); + } + + public static LegacyInventoryResponse fail(String message) { + return new LegacyInventoryResponse("500", message, null); + } + + public String getCode() { + return code; + } + + public String getMsg() { + return msg; + } + + public Object getData() { + return data; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/utils/OrderUtils.java b/smtERP-boot/src/main/java/com/reallin/smt/utils/OrderUtils.java new file mode 100644 index 0000000..581de55 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/utils/OrderUtils.java @@ -0,0 +1,69 @@ +package com.reallin.smt.utils; + +/** + * @author jishenghua qq752718920 2018-10-7 15:26:27 + */ +public class OrderUtils { + + /** + * 将指定字段排序 + * + * @param orders 格式 属性名,排序方式 例如( name,asc或ip,desc) + * @return 排序字符串 例如:(name asc 或 ip desc) + */ + public static String getOrderString(String orders) { + if (StringUtil.isNotEmpty(orders)) { + String[] splits = orders.split(Constants.SPLIT); + if (splits.length == 2) { + String column = ColumnPropertyUtil.propertyToColumn(splits[0]); + if (column.equals("audit_status")) { + // TODO: 2015/12/24 这么处理不好,得相伴办法调整 + return "IF(`audit_status`=3,-1,`audit_status`) " + splits[1]; + } else if (column.equals("create_time") || column.equals("modify_time")) { + // TODO: 2015/12/24 这么处理不好,得相伴办法调整 + return column + " " + splits[1]; + } else { + return "convert(" + column + " using gbk) " + splits[1]; + } + } + } + return ""; + } + + public static String getJoinTablesOrderString(String orders, String tableName) { + if (StringUtil.isNotEmpty(orders)) { + String[] splits = orders.split(Constants.SPLIT); + if (splits.length == 2) { + return "convert(" + tableName + "." + ColumnPropertyUtil.propertyToColumn(splits[0]) + " using gbk) " + splits[1]; + } + } + return ""; + } + + + /** + * 将指定字段排序 + * inet_aton:mysql将IP 转成 long类别函数 + * + * @param orders 格式 属性名,排序方式 例如( name,asc或ip,desc) + * @param ipPropertyName 如果需要按IP属性排序,需要将属性名传入(可不传) + * @return 排序字符串 例如:(name asc 或 ip desc) + */ + public static String getOrderString(String orders, String... ipPropertyName) { + if (StringUtil.isNotEmpty(orders)) { + String[] splits = orders.split(Constants.SPLIT); + if (splits.length == 2) { + String column = ColumnPropertyUtil.propertyToColumn(splits[0]); + if (ipPropertyName != null && ipPropertyName.length > 0) { + for (String ip : ipPropertyName) { + if (ip.equals(column)) { + return "inet_aton(" + column + ") " + splits[1]; + } + } + } + return column + " " + splits[1]; + } + } + return ""; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/utils/PageQueryInfo.java b/smtERP-boot/src/main/java/com/reallin/smt/utils/PageQueryInfo.java new file mode 100644 index 0000000..363fbe1 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/utils/PageQueryInfo.java @@ -0,0 +1,30 @@ +package com.reallin.smt.utils; + +import java.util.List; + +/** + * 分页查询结果 + * + * @author jishenghua qq752718920 2018-10-7 15:26:27 + */ +public class PageQueryInfo { + + private Long total; + private List rows; + + public Long getTotal() { + return total; + } + + public void setTotal(Long total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/utils/PageUtils.java b/smtERP-boot/src/main/java/com/reallin/smt/utils/PageUtils.java new file mode 100644 index 0000000..b40f944 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/utils/PageUtils.java @@ -0,0 +1,34 @@ +package com.reallin.smt.utils; + +import com.github.pagehelper.PageHelper; +import com.reallin.smt.base.PageDomain; +import com.reallin.smt.base.TableSupport; + +/** + * 分页工具类 + * + * @author ji-sheng-hua + */ +public class PageUtils extends PageHelper +{ + /** + * 设置请求分页数据 + */ + public static void startPage() + { + PageDomain pageDomain = TableSupport.buildPageRequest(); + Integer currentPage = pageDomain.getCurrentPage(); + Integer pageSize = pageDomain.getPageSize(); + String orderBy = SqlUtil.escapeOrderBySql(pageDomain.getOrderBy()); + Boolean reasonable = pageDomain.getReasonable(); + PageHelper.startPage(currentPage, pageSize, orderBy).setReasonable(reasonable); + } + + /** + * 清理分页的线程变量 + */ + public static void clearPage() + { + PageHelper.clearPage(); + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/utils/ParamUtils.java b/smtERP-boot/src/main/java/com/reallin/smt/utils/ParamUtils.java new file mode 100644 index 0000000..1de8d99 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/utils/ParamUtils.java @@ -0,0 +1,57 @@ +package com.reallin.smt.utils; + +import javax.servlet.http.HttpServletRequest; +import java.util.Collections; +import java.util.Enumeration; +import java.util.HashMap; + +/** + * @author jishenghua qq752718920 2018-10-7 15:26:27 + */ +public class ParamUtils { + public static String getPageOffset(Integer currentPage, Integer pageSize) { + if (currentPage != null && pageSize != null) { + int offset = (currentPage - 1) * pageSize; + if (offset <= 0) { + return "0"; + } else { + return new StringBuffer().append(offset).toString(); + } + } + return null; + } + public static Integer getNumberPageOffset(Integer currentPage, Integer pageSize) { + if (currentPage != null && pageSize != null) { + int offset = (currentPage - 1) * pageSize; + if (offset <= 0) { + return 0; + } else { + return offset; + } + } + return null; + } + public static Integer getNumberPageRows(Integer currentPage, Integer pageSize) { + if (currentPage != null && pageSize != null) { + int rows = (currentPage) * pageSize; + if (rows <= 0) { + return 0; + } else { + return rows; + } + } + return null; + } + + public static HashMap requestToMap(HttpServletRequest request) { + + HashMap parameterMap = new HashMap(); + Enumeration names = request.getParameterNames(); + if (names != null) { + for (String name : Collections.list(names)) { + parameterMap.put(name, request.getParameter(name)); + } + } + return parameterMap; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/utils/PinYinUtil.java b/smtERP-boot/src/main/java/com/reallin/smt/utils/PinYinUtil.java new file mode 100644 index 0000000..321fcc1 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/utils/PinYinUtil.java @@ -0,0 +1,52 @@ +package com.reallin.smt.utils; + +import lombok.extern.slf4j.Slf4j; +import net.sourceforge.pinyin4j.PinyinHelper; +import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType; +import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; +import net.sourceforge.pinyin4j.format.HanyuPinyinToneType; +import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination; + +/** + * @Author jishenghua + * @Date 2024-01-08 23:03 + */ +@Slf4j +public class PinYinUtil { + + public static String getFirstLettersLo(String ChineseLanguage) { + return getFirstLetters(ChineseLanguage, HanyuPinyinCaseType.LOWERCASE); + } + + public static String getFirstLetters(String chineseLanguage, HanyuPinyinCaseType caseType) { + char[] cl_chars = chineseLanguage.trim().toCharArray(); + StringBuilder pinyin = new StringBuilder(); + HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat(); + // 输出拼音全部大写 + defaultFormat.setCaseType(caseType); + // 不带声调 + defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE); + try { + for (char cl_char : cl_chars) { + String str = String.valueOf(cl_char); + if (str.matches("[\u4e00-\u9fa5]+")) { + // 如果字符是中文,则将中文转为汉语拼音,并取第一个字母 + pinyin.append(PinyinHelper.toHanyuPinyinStringArray(cl_char, defaultFormat)[0].substring(0, 1)); + } else if (str.matches("[0-9]+")) { + // 如果字符是数字,取数字 + pinyin.append(cl_char); + } else if (str.matches("[a-zA-Z]+")) { + // 如果字符是字母,取字母 + pinyin.append(cl_char); + } else { + // 否则不转换 + //如果是标点符号的话,带着 + pinyin.append(cl_char); + } + } + } catch (BadHanyuPinyinOutputFormatCombination e) { + log.error(chineseLanguage + "转拼音失败!", e); + } + return pinyin.toString(); + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/utils/QueryUtils.java b/smtERP-boot/src/main/java/com/reallin/smt/utils/QueryUtils.java new file mode 100644 index 0000000..093b99d --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/utils/QueryUtils.java @@ -0,0 +1,142 @@ +package com.reallin.smt.utils; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import org.springframework.util.Assert; + +import java.util.List; +import java.util.Map; + +import static com.reallin.smt.utils.Constants.CURRENT_PAGE; +import static com.reallin.smt.utils.Constants.PAGE_SIZE; + +/** + * @author jishenghua qq752718920 2018-10-7 15:26:27 + */ +public class QueryUtils { + public static String filterSqlSpecialChar(String search) { + return search != null ? search + .replaceAll("_", "\\\\_") + .replaceAll("!", "\\\\!") + .replaceAll("\\[", "\\\\[") + .replaceAll("\\]", "\\\\]") + .replaceAll("\\^", "\\\\^") : null; + } + + public static T list2One(List list, String label) { + Assert.notNull(label); + Assert.notEmpty(list, label + "对应的记录不存在"); + Assert.isTrue(list.size() == 1, label + "对应的记录不止一个"); + return list.get(0); + } + + public static T list2One(List list, String label, T defaultValue) { + Assert.notNull(list); + Assert.notNull(label); + if (list.isEmpty()) + return defaultValue; + else { + Assert.isTrue(list.size() == 1, label + "对应的记录不止一个"); + return list.get(0); + } + } + + public static List search(Map map) { + List search = null; + + String str = map.get(Constants.SEARCH); + if (StringUtil.isNotEmpty(str)) { + search = StringUtil.searchCondition(str); + } + return search; + } + + public static int rows(Map map) { + return Integer.parseInt(map.get(PAGE_SIZE)); + } + + public static int offset(Map map) { + return (currentPage(map) - 1) * pageSize(map); + } + + public static int pageSize(Map map) { + return Integer.parseInt(map.get(PAGE_SIZE)); + } + + public static int currentPage(Map map) { + int val = Integer.parseInt(map.get(CURRENT_PAGE)); + if (val < 1) + throw new RuntimeException("当前页数目:" + val + " 必须大于0"); + return val; + } + + public static String order(Map map) { + String orderString = OrderUtils.getOrderString(map.get(Constants.ORDER)); + return orderString.trim().isEmpty() ? null : orderString; + } + + public static Integer level(Map map) { + String levelString = map.get(Constants.LEVEL); + return StringUtil.isEmpty(levelString) ? null : Integer.parseInt(levelString); + } + + public static boolean isRecursion(Map map) { + String isRecursion = map.get(Constants.IS_RECURSION); + return StringUtil.isNotEmpty(isRecursion) && Constants.IS_RECURSION_VALUE.equals(isRecursion); + } + + public static int type(Map map) { + return Integer.parseInt(map.get(Constants.TYPE)); + } + + public static String filter(Map map) { + if (map.containsKey(Constants.FILTER)) { + JSONArray array = JSON.parseArray(map.get(Constants.FILTER)); + if (array.isEmpty()) { + return null; + } else { + boolean first = true; + StringBuilder builder = new StringBuilder(); + for (int idx = 0; idx < array.size(); ++idx) { + JSONObject object = array.getJSONObject(idx); + if (object.get("value") instanceof JSONArray) { + + JSONArray value = object.getJSONArray("value"); + + if (!value.isEmpty()) { + if (!first) { + builder.append(" AND "); + } else { + first = false; + } + + String key = object.getString("name"); + + builder.append("("); + + builder.append("`").append(key).append("`"); + + builder.append(" IN "); + + builder.append("("); + + for (int vidx = 0; vidx < value.size(); ++vidx) { + if (vidx != 0) { + builder.append(","); + } + builder.append(value.getString(vidx)); + } + builder.append(")"); + + builder.append(")"); + } + } + } + return builder.toString(); + } + } else { + return null; + } + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/utils/RandImageUtil.java b/smtERP-boot/src/main/java/com/reallin/smt/utils/RandImageUtil.java new file mode 100644 index 0000000..4242608 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/utils/RandImageUtil.java @@ -0,0 +1,140 @@ +package com.reallin.smt.utils; + +import javax.imageio.ImageIO; +import javax.servlet.http.HttpServletResponse; +import java.awt.*; +import java.awt.image.BufferedImage; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.util.Base64; +import java.util.Random; + +/** + * 登录验证码工具类 + */ +public class RandImageUtil { + + public static final String key = "JEECG_LOGIN_KEY"; + + /** + * 定义图形大小 + */ + private static final int width = 105; + /** + * 定义图形大小 + */ + private static final int height = 35; + + /** + * 定义干扰线数量 + */ + private static final int count = 200; + + /** + * 干扰线的长度=1.414*lineWidth + */ + private static final int lineWidth = 2; + + /** + * 图片格式 + */ + private static final String IMG_FORMAT = "JPEG"; + + /** + * base64 图片前缀 + */ + private static final String BASE64_PRE = "data:image/jpg;base64,"; + + /** + * 直接通过response 返回图片 + * @param response + * @param resultCode + * @throws IOException + */ + public static void generate(HttpServletResponse response, String resultCode) throws IOException { + BufferedImage image = getImageBuffer(resultCode); + // 输出图象到页面 + ImageIO.write(image, IMG_FORMAT, response.getOutputStream()); + } + + /** + * 生成base64字符串 + * @param resultCode + * @return + * @throws IOException + */ + public static String generate(String resultCode) throws IOException { + BufferedImage image = getImageBuffer(resultCode); + + ByteArrayOutputStream byteStream = new ByteArrayOutputStream(); + //写入流中 + ImageIO.write(image, IMG_FORMAT, byteStream); + //转换成字节 + byte[] bytes = byteStream.toByteArray(); + //转换成base64串 + String base64 = Base64.getEncoder().encodeToString(bytes).trim(); + base64 = base64.replaceAll("\n", "").replaceAll("\r", "");//删除 \r\n + + //写到指定位置 + //ImageIO.write(bufferedImage, "png", new File("")); + + return BASE64_PRE+base64; + } + + private static BufferedImage getImageBuffer(String resultCode){ + // 在内存中创建图象 + final BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); + // 获取图形上下文 + final Graphics2D graphics = (Graphics2D) image.getGraphics(); + // 设定背景颜色 + graphics.setColor(Color.WHITE); // ---1 + graphics.fillRect(0, 0, width, height); + // 设定边框颜色 +// graphics.setColor(getRandColor(100, 200)); // ---2 + graphics.drawRect(0, 0, width - 1, height - 1); + + final Random random = new Random(); + // 随机产生干扰线,使图象中的认证码不易被其它程序探测到 + for (int i = 0; i < count; i++) { + graphics.setColor(getRandColor(150, 200)); // ---3 + + final int x = random.nextInt(width - lineWidth - 1) + 1; // 保证画在边框之内 + final int y = random.nextInt(height - lineWidth - 1) + 1; + final int xl = random.nextInt(lineWidth); + final int yl = random.nextInt(lineWidth); + graphics.drawLine(x, y, x + xl, y + yl); + } + // 取随机产生的认证码 + for (int i = 0; i < resultCode.length(); i++) { + // 将认证码显示到图象中,调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成 + // graphics.setColor(new Color(20 + random.nextInt(130), 20 + random + // .nextInt(130), 20 + random.nextInt(130))); + // 设置字体颜色 + graphics.setColor(Color.BLACK); + // 设置字体样式 +// graphics.setFont(new Font("Arial Black", Font.ITALIC, 18)); + graphics.setFont(new Font("Times New Roman", Font.BOLD, 24)); + // 设置字符,字符间距,上边距 + graphics.drawString(String.valueOf(resultCode.charAt(i)), (23 * i) + 8, 26); + } + // 图象生效 + graphics.dispose(); + return image; + } + + private static Color getRandColor(int fc, int bc) { // 取得给定范围随机颜色 + final Random random = new Random(); + if (fc > 255) { + fc = 255; + } + if (bc > 255) { + bc = 255; + } + + final int r = fc + random.nextInt(bc - fc); + final int g = fc + random.nextInt(bc - fc); + final int b = fc + random.nextInt(bc - fc); + + return new Color(r, g, b); + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/utils/RedisLockUtil.java b/smtERP-boot/src/main/java/com/reallin/smt/utils/RedisLockUtil.java new file mode 100644 index 0000000..c342862 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/utils/RedisLockUtil.java @@ -0,0 +1,120 @@ +package com.reallin.smt.utils; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.core.script.DefaultRedisScript; +import org.springframework.stereotype.Component; + +import java.util.Collections; + +@Slf4j +@Component +public class RedisLockUtil { + + @Autowired + private RedisTemplate redisTemplate; + + private static final String UNLOCK_LUA_SCRIPT = + "if redis.call('get', KEYS[1]) == ARGV[1] then " + + " return redis.call('del', KEYS[1]) " + + "else " + + " return 0 " + + "end"; + + private static final String LOCK_LUA_SCRIPT = + "local key = KEYS[1] " + + "local value = ARGV[1] " + + "local expire = ARGV[2] " + + "local result = redis.call('setnx', key, value) " + + "if result == 1 then " + + " redis.call('pexpire', key, expire) " + + " return 1 " + + "else " + + " local currentValue = redis.call('get', key) " + + " if currentValue == value then " + + " redis.call('pexpire', key, expire) " + + " return 1 " + + " else " + + " return 0 " + + " end " + + "end"; + + /** + * 尝试获取分布式锁(支持锁重入) + * @param lockKey 锁的key + * @param requestId 请求ID(可使用UUID) + * @param expireMillis 锁的过期时间(毫秒) + * @param waitMillis 等待时间(毫秒) + * @return 是否获取成功 + */ + public boolean tryLock(String lockKey, String requestId, + long expireMillis, long waitMillis) + throws InterruptedException { + + long startTime = System.currentTimeMillis(); + + while (System.currentTimeMillis() - startTime < waitMillis) { + // 使用Lua脚本保证原子性 + DefaultRedisScript script = new DefaultRedisScript<>(); + script.setScriptText(LOCK_LUA_SCRIPT); + script.setResultType(Long.class); + + Long result = redisTemplate.execute( + script, + Collections.singletonList(lockKey), + requestId, + String.valueOf(expireMillis) + ); + + if (result != null && result == 1L) { + return true; // 获取锁成功 + } + + // 短暂休眠后重试 + Thread.sleep(10); + } + + return false; // 获取锁失败 + } + + /** + * 释放分布式锁 + */ + public boolean unlock(String lockKey, String requestId) { + try { + DefaultRedisScript script = new DefaultRedisScript<>(); + script.setScriptText(UNLOCK_LUA_SCRIPT); + script.setResultType(Long.class); + + Long result = redisTemplate.execute( + script, + Collections.singletonList(lockKey), + requestId + ); + + return result != null && result == 1L; + } catch (Exception e) { + log.error("释放锁失败, lockKey: {}", lockKey, e); + return false; + } + } + + /** + * 快速获取锁(立即返回,不等待) + */ + public boolean lockFast(String lockKey, String requestId, long expireMillis) { + DefaultRedisScript script = new DefaultRedisScript<>(); + script.setScriptText(LOCK_LUA_SCRIPT); + script.setResultType(Long.class); + + Long result = redisTemplate.execute( + script, + Collections.singletonList(lockKey), + requestId, + String.valueOf(expireMillis) + ); + + return result != null && result == 1L; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/utils/RegExpTools.java b/smtERP-boot/src/main/java/com/reallin/smt/utils/RegExpTools.java new file mode 100644 index 0000000..aae9039 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/utils/RegExpTools.java @@ -0,0 +1,154 @@ +package com.reallin.smt.utils; + +import org.springframework.util.Assert; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by Adm on 2015/12/14. + * + * @author yubiao + *

+ * mysql匹配正则表达式 + */ +public class RegExpTools { + /** + * @param search 模糊匹配字符串数组 + */ + public static String regexp(List search) { + if (search == null || search.isEmpty()) + return null; + String regexp = ""; + for (String s : search) { + if (!regexp.isEmpty()) { + regexp = regexp + "|"; + } + regexp = regexp + ".*"; + regexp = regexp + s.replaceAll("\\.", "\\\\."); + regexp = regexp + ".*"; + } + return regexp; + } + + /** + * @param key json字段key + * @param search 模糊匹配字符串数组 + * json的mysql匹配正则表达式 + */ + public static String regexp(String key, List search) { + if (search == null || search.isEmpty()) + return null; + StringBuilder sb = new StringBuilder(); + for (String s : search) { + if (sb.length() == 0) { + sb.append(".*\\\"").append(key).append("\\\":\\\"[a-zA-Z0-9]*("); + } else { + sb.append("|"); + } + sb.append(s); + } + sb.append(")[a-zA-Z0-9]*\\\".*"); + return sb.toString(); + } + + public static class RegExp { + public static final String ANY = ".*"; + public static final String QUOTE = "\\\""; + public static final String LFT_PAREN = "("; + public static final String RHT_PAREN = ")"; + public static final String COLON = ":"; + public static final String OR = "|"; + + private final StringBuilder builder = new StringBuilder(); + + public RegExp any() { + builder.append(ANY); + return this; + } + + public RegExp lftParen() { + builder.append(LFT_PAREN); + return this; + } + + public RegExp rhtParen() { + builder.append(RHT_PAREN); + return this; + } + + public RegExp colon() { + builder.append(COLON); + return this; + + } + + public RegExp quote() { + builder.append(QUOTE); + return this; + } + + public RegExp quote(String str) { + Assert.notNull(str, "str为空"); + builder.append(QUOTE).append(str).append(QUOTE); + return this; + } + + public RegExp value(String str) { + Assert.notNull(str, "str为空"); + builder.append(str); + return this; + } + + public RegExp or() { + builder.append(OR); + return this; + } + + public RegExp or(List values) { + Assert.notEmpty(values, "values必须非空"); + lftParen(); + boolean first = true; + for (String value : values) { + if (first) { + builder.append(value); + first = false; + } else { + builder.append(OR).append(value); + } + } + rhtParen(); + return this; + } + + @Override + public String toString() { + return builder.toString(); + } + + public static void main(String[] args) { + List values = new ArrayList(); + + values.add("310"); + values.add(String.valueOf(2)); + values.add(String.valueOf(3)); + + RegExp exp = new RegExp(); + + exp.any(); + exp.quote("fullKbNum").colon() + .quote() + .value("[a-zA-Z0-9]*").or(values).value("[a-zA-Z0-9]*") + .quote(); + exp.or(); + exp.quote("gbId[a-f0-9-]{36}").colon() + .quote() + .value("[0-9]*").or(values).value("[0-9]*") + .quote(); + exp.any(); + + System.out.println(exp); + } + + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/utils/ResponseCode.java b/smtERP-boot/src/main/java/com/reallin/smt/utils/ResponseCode.java new file mode 100644 index 0000000..cc5e095 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/utils/ResponseCode.java @@ -0,0 +1,24 @@ +package com.reallin.smt.utils; + +import com.alibaba.fastjson.annotation.JSONCreator; +import com.alibaba.fastjson.annotation.JSONField; + +/** + * @author jishenghua qq752718920 2018-10-7 15:26:27 + */ +public class ResponseCode { + + public final int code; + public final Object data; + + /** + * + * @param code + * @param data + */ + @JSONCreator + public ResponseCode(@JSONField(name = "code") int code, @JSONField(name = "data")Object data) { + this.code = code; + this.data = data; + } +} \ No newline at end of file diff --git a/smtERP-boot/src/main/java/com/reallin/smt/utils/ResponseJsonUtil.java b/smtERP-boot/src/main/java/com/reallin/smt/utils/ResponseJsonUtil.java new file mode 100644 index 0000000..4f9fe15 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/utils/ResponseJsonUtil.java @@ -0,0 +1,64 @@ +package com.reallin.smt.utils; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.serializer.SerializerFeature; +import com.alibaba.fastjson.serializer.ValueFilter; + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; +import java.util.TimeZone; + +public class ResponseJsonUtil { + public static final SimpleDateFormat FORMAT = new SimpleDateFormat("yyyy-MM-dd"); + + static { + FORMAT.setTimeZone(TimeZone.getTimeZone("GMT+8")); + } + + /** + * 响应过滤器 + */ + public static final class ResponseFilter extends ExtJsonUtils.ExtFilter implements ValueFilter { + @Override + public Object process(Object object, String name, Object value) { + if (name.equals("createTime") || name.equals("modifyTime")||name.equals("updateTime")) { + return value; + } else if (value instanceof Date) { + return FORMAT.format(value); + } else { + return value; + } + } + } + + /** + * 成功的json串 + * @param responseCode + * @return + */ + public static String backJson(ResponseCode responseCode) { + if (responseCode != null) { + return JSON.toJSONString(responseCode, new ResponseFilter(), + SerializerFeature.DisableCircularReferenceDetect, + SerializerFeature.WriteNonStringKeyAsString); + } + return null; + } + + public static String returnJson(Map map, String message, int code) { + map.put("message", message); + return backJson(new ResponseCode(code, map)); + } + + public static String returnStr(Map objectMap, int res) { + if(res > 0) { + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else if(res == -1) { + return returnJson(objectMap, ErpInfo.TEST_USER.name, ErpInfo.TEST_USER.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/utils/ServletUtils.java b/smtERP-boot/src/main/java/com/reallin/smt/utils/ServletUtils.java new file mode 100644 index 0000000..1a826db --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/utils/ServletUtils.java @@ -0,0 +1,123 @@ +package com.reallin.smt.utils; + +import org.springframework.web.context.request.RequestAttributes; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import java.io.IOException; + +/** + * 客户端工具类 + * + * @author ji-sheng-hua + */ +public class ServletUtils +{ + /** + * 定义移动端请求的所有可能类型 + */ + private final static String[] agent = { "Android", "iPhone", "iPod", "iPad", "Windows Phone", "MQQBrowser" }; + + /** + * 获取String参数 + */ + public static String getParameter(String name) + { + return getRequest().getParameter(name); + } + + /** + * 获取String参数 + */ + public static String getParameter(String name, String defaultValue) + { + return Convert.toStr(getRequest().getParameter(name), defaultValue); + } + + /** + * 获取Integer参数 + */ + public static Integer getParameterToInt(String name) + { + return Convert.toInt(getRequest().getParameter(name)); + } + + /** + * 获取Integer参数 + */ + public static Integer getParameterToInt(String name, Integer defaultValue) + { + return Convert.toInt(getRequest().getParameter(name), defaultValue); + } + + /** + * 获取Boolean参数 + */ + public static Boolean getParameterToBool(String name) + { + return Convert.toBool(getRequest().getParameter(name)); + } + + /** + * 获取Boolean参数 + */ + public static Boolean getParameterToBool(String name, Boolean defaultValue) + { + return Convert.toBool(getRequest().getParameter(name), defaultValue); + } + + /** + * 获取request + */ + public static HttpServletRequest getRequest() + { + return getRequestAttributes().getRequest(); + } + + /** + * 获取response + */ + public static HttpServletResponse getResponse() + { + return getRequestAttributes().getResponse(); + } + + /** + * 获取session + */ + public static HttpSession getSession() + { + return getRequest().getSession(); + } + + public static ServletRequestAttributes getRequestAttributes() + { + RequestAttributes attributes = RequestContextHolder.getRequestAttributes(); + return (ServletRequestAttributes) attributes; + } + + /** + * 将字符串渲染到客户端 + * + * @param response 渲染对象 + * @param string 待渲染的字符串 + * @return null + */ + public static String renderString(HttpServletResponse response, String string) + { + try + { + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().print(string); + } + catch (IOException e) + { + org.slf4j.LoggerFactory.getLogger(ServletUtils.class).warn("写入响应失败", e); + } + return null; + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/utils/SqlUtil.java b/smtERP-boot/src/main/java/com/reallin/smt/utils/SqlUtil.java new file mode 100644 index 0000000..7ab3105 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/utils/SqlUtil.java @@ -0,0 +1,52 @@ +package com.reallin.smt.utils; + +import com.reallin.smt.exception.UtilException; + +/** + * sql操作工具类 + * + * @author ji-sheng-hua + */ +public class SqlUtil +{ + /** + * 定义常用的 sql关键字 + */ + public static String SQL_REGEX = "and |extractvalue|updatexml|exec |insert |select |delete |update |drop |count |chr |mid |master |truncate |char |declare |or |+|user()"; + + /** + * 仅允许字段名(可带表别名)和可选排序方向,支持逗号分隔多个字段。 + */ + public static final String SQL_PATTERN = "(?i)\\s*[a-z_][a-z0-9_]*(\\.[a-z_][a-z0-9_]*)?" + + "(\\s+(asc|desc))?(\\s*,\\s*[a-z_][a-z0-9_]*(\\.[a-z_][a-z0-9_]*)?" + + "(\\s+(asc|desc))?)*\\s*"; + + /** + * 限制orderBy最大长度 + */ + private static final int ORDER_BY_MAX_LENGTH = 500; + + /** + * 检查字符,防止注入绕过 + */ + public static String escapeOrderBySql(String value) + { + if (StringUtil.length(value) > ORDER_BY_MAX_LENGTH) + { + throw new UtilException("参数已超过最大限制,不能进行查询"); + } + if (StringUtil.isNotEmpty(value) && !isValidOrderBySql(value)) + { + throw new UtilException("参数不符合规范,不能进行查询"); + } + return value; + } + + /** + * 验证 order by 语法是否符合规范 + */ + public static boolean isValidOrderBySql(String value) + { + return value != null && value.length() <= ORDER_BY_MAX_LENGTH && value.matches(SQL_PATTERN); + } +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/utils/StringUtil.java b/smtERP-boot/src/main/java/com/reallin/smt/utils/StringUtil.java new file mode 100644 index 0000000..13464d8 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/utils/StringUtil.java @@ -0,0 +1,526 @@ +package com.reallin.smt.utils; + +import org.springframework.beans.BeansException; +import org.springframework.beans.factory.config.BeanFactoryPostProcessor; +import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; +import org.springframework.stereotype.Component; +import org.springframework.util.StringUtils; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; + +import java.math.BigDecimal; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.regex.Pattern; + +/** + * @author jishenghua qq752718920 2018-10-7 15:26:27 + */ +@Component +public class StringUtil implements BeanFactoryPostProcessor { + + private static ConfigurableListableBeanFactory beanFactory; + + private StringUtil() { + + } + + public static final String EMPTY = ""; + + private static String DEFAULT_FORMAT = "yyyy-MM-dd HH:mm:ss"; + + public final static String regex = "'|#|%|;|--| and | and|and | or | or|or | not | not|not " + + "| use | use|use | insert | insert|insert | delete | delete|delete | update | update|update " + + "| select | select|select | count | count|count | group | group|group | union | union|union " + + "| create | create|create | drop | drop|drop | truncate | truncate|truncate | alter | alter|alter " + + "| grant | grant|grant | execute | execute|execute | exec | exec|exec | xp_cmdshell | xp_cmdshell|xp_cmdshell " + + "| call | call|call | declare | declare|declare | source | source|source | sql | sql|sql "; + + /** 下划线 */ + private static final char SEPARATOR = '_'; + + @Override + public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException + { + StringUtil.beanFactory = beanFactory; + } + + public static String filterNull(String str) { + if (str == null) { + return ""; + } else { + return str.trim(); + } + } + + public static boolean stringEquels(String source,String target) { + if(isEmpty(source)||isEmpty(target)){ + return false; + }else{ + return source.equals(target); + } + } + + public static int length(CharSequence cs) { + return cs == null ? 0 : cs.length(); + } + + /** + * 驼峰转下划线命名 + */ + public static String toUnderScoreCase(String str) + { + if (str == null) + { + return null; + } + StringBuilder sb = new StringBuilder(); + // 前置字符是否大写 + boolean preCharIsUpperCase = true; + // 当前字符是否大写 + boolean curreCharIsUpperCase = true; + // 下一字符是否大写 + boolean nexteCharIsUpperCase = true; + for (int i = 0; i < str.length(); i++) + { + char c = str.charAt(i); + if (i > 0) + { + preCharIsUpperCase = Character.isUpperCase(str.charAt(i - 1)); + } + else + { + preCharIsUpperCase = false; + } + + curreCharIsUpperCase = Character.isUpperCase(c); + + if (i < (str.length() - 1)) + { + nexteCharIsUpperCase = Character.isUpperCase(str.charAt(i + 1)); + } + + if (preCharIsUpperCase && curreCharIsUpperCase && !nexteCharIsUpperCase) + { + sb.append(SEPARATOR); + } + else if ((i != 0 && !preCharIsUpperCase) && curreCharIsUpperCase) + { + sb.append(SEPARATOR); + } + sb.append(Character.toLowerCase(c)); + } + + return sb.toString(); + } + + /** + * * 判断一个对象是否为空 + * + * @param object Object + * @return true:为空 false:非空 + */ + public static boolean isNull(Object object) + { + return object == null; + } + + /** + * * 判断一个对象是否非空 + * + * @param object Object + * @return true:非空 false:空 + */ + public static boolean isNotNull(Object object) + { + return !isNull(object); + } + + public static boolean isEmpty(String str) { + return str == null || "".equals(str.trim()); + } + + public static boolean isNotEmpty(String str) { + return !isEmpty(str); + } + + public static String getSysDate(String format) { + if (StringUtil.isEmpty(format)) { + format = DEFAULT_FORMAT; + } + SimpleDateFormat df = new SimpleDateFormat(format); + return df.format(new Date()); + } + + public static Date getDateByString(String date, String format) { + if (StringUtil.isEmpty(format)) { + format = DEFAULT_FORMAT; + } + if (StringUtil.isNotEmpty(date)) { + SimpleDateFormat sdf = new SimpleDateFormat(format); + try { + return sdf.parse(date); + } catch (ParseException e) { + throw new RuntimeException("转换为日期类型错误:DATE:" + date + " FORMAT:" + format); + } + } else { + return null; + } + } + + public static Date getDateByLongDate(Long millis) { + if (millis == null) { + return new Date(); + } + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(millis); + return cal.getTime(); + + } + + public static UUID stringToUUID(String id) { + if (StringUtil.isNotEmpty(id)) { + return UUID.fromString(id); + } else { + return null; + } + } + + public static Integer parseInteger(String str) { + if (StringUtil.isNotEmpty(str)) { + return Integer.parseInt(str); + } else { + return null; + } + } + + public static Long parseStrLong(String str) { + if (StringUtil.isNotEmpty(str)) { + return Long.parseLong(str); + } else { + return null; + } + } + + public static List listToUUID(List listStrs) { + if (listStrs != null && listStrs.size() > 0) { + List uuidList = new ArrayList(); + for (String str : listStrs) { + uuidList.add(UUID.fromString(str)); + } + return uuidList; + } else { + return null; + } + } + + public static List arrayToUUIDList(String[] uuids) { + if (uuids != null && uuids.length > 0) { + List uuidList = new ArrayList(); + for (String str : uuids) { + uuidList.add(UUID.fromString(str)); + } + return uuidList; + } else { + return null; + } + } + + //是否是JSON + public static boolean containsAny(String str, String... flag) { + if (str != null) { + if (flag == null || flag.length == 0) { + flag = "[-{-}-]-,".split("-"); + } + for (String s : flag) { + if (str.contains(s)) { + return true; + } + } + } + return false; + } + + public static String getModifyOrgOperateData(UUID resourceId, UUID orgId) { + if (resourceId != null && orgId != null) { + Map map = new HashMap(); + map.put(resourceId, orgId); + return JSON.toJSONString(map); + } + return ""; + } + + public static String[] listToStringArray(List list) { + if (list != null && !list.isEmpty()) { + return list.toArray(new String[list.size()]); + } + return new String[0]; + } + + public static Long[] listToLongArray(List list) { + if (list != null && !list.isEmpty()) { + return list.toArray(new Long[list.size()]); + } + return new Long[0]; + } + + public static List stringToListArray(String[] strings) { + if (strings != null && strings.length > 0) { + return Arrays.asList(strings); + } + return new ArrayList(); + } + + public static BigDecimal getArrSum(String[] strings) { + BigDecimal sum = BigDecimal.ZERO; + for(int i=0;i数据格式 + * String str = "1,2,3,4,5,6" -> List listLong [1,2,3,4,5,6]; + * + * @param strArr + * @return + */ + public static List strToLongList(String strArr) { + List idList=new ArrayList(); + String[] d=strArr.split(","); + for (int i = 0, size = d.length; i < size; i++) { + if(d[i]!=null) { + idList.add(Long.parseLong(d[i])); + } + } + return idList; + } + + /** + * String字符串转成List数据格式 + * String str = "1,2,3,4,5,6" -> List listBigDecimal [1,2,3,4,5,6]; + * + * @param strArr + * @return + */ + public static List strToBigDecimalList(String strArr) { + List idList=new ArrayList<>(); + String[] d=strArr.split(","); + for (int i = 0, size = d.length; i < size; i++) { + if(d[i]!=null) { + idList.add(new BigDecimal(d[i])); + } + } + return idList; + } + + /** + * String字符串转成List数据格式 + * String str = "1,2,3,4,5,6" -> List listLong [1,2,3,4,5,6]; + * + * @param strArr + * @return + */ + public static List strToStringList(String strArr) { + if(StringUtils.isEmpty(strArr)){ + return null; + } + List idList=new ArrayList(); + String[] d=strArr.split(","); + for (int i = 0, size = d.length; i < size; i++) { + if(d[i]!=null) { + idList.add(d[i].toString()); + } + } + return idList; + } + + public static List searchCondition(String search) { + if (isEmpty(search)) { + return new ArrayList(); + }else{ + //String[] split = search.split(" "); + String[] split = search.split("#"); + return stringToListArray(split); + } + } + + public static String getInfo(String search, String key){ + String value = null; + if(StringUtil.isNotEmpty(search)) { + search = search.replace("{}",""); + if(StringUtil.isNotEmpty(search)) { + JSONObject obj = JSONObject.parseObject(search); + if (obj.get(key) != null) { + value = obj.getString(key).trim(); + if (value.equals("")) { + value = null; + } + } else { + value = null; + } + } + } + return value; + } + + public static String toNull(String value) { + if(isEmpty(value)) { + value = null; + } else { + value = value.trim(); + } + return value; + } + + public static boolean isExist(Object value) { + if(value!=null) { + String str = value.toString(); + if("".equals(str.trim())) { + return false; + } else { + return true; + } + } else { + return false; + } + } + + /** + * 判断对象是否为正整数 + * @param value + * @return + */ + public static boolean isPositiveLong(Object value) { + if(value!=null) { + String str = value.toString(); + if(isNotEmpty(str)) { + if((str.matches("[0-9]+"))&&(Long.parseLong(str)>0)) { + return true; + } else { + return false; + } + } else { + return false; + } + } else { + return false; + } + } + + /** + * 校验条码长度为4到40位 + * @param value + * @return + */ + public static boolean checkBarCodeLength(Object value) { + if(value!=null) { + String str = value.toString(); + if(isNotEmpty(str)) { + if(str.length()>=4 && str.length()<=40 ) { + return true; + } else { + return false; + } + } else { + return false; + } + } else { + return false; + } + } + + /** + * 判断对象是否为数字(含小数) + * @param str + * @return + */ + public static boolean isPositiveBigDecimal(String str){ + Pattern pattern = Pattern.compile("[0-9]*"); + if(str.indexOf(".")>0){//判断是否有小数点 + if(str.indexOf(".")==str.lastIndexOf(".") && str.split("\\.").length==2){ //判断是否只有一个小数点 + return pattern.matcher(str.replace(".","")).matches(); + }else { + return false; + } + }else { + return pattern.matcher(str).matches(); + } + } + + /** + * sql注入过滤,保障sql的安全执行 + * @param originStr + * @return + */ + public static String safeSqlParse(String originStr){ + return originStr.replaceAll("(?i)" + regex, ""); + } + + /** + * 判断字符串是否为纯数字 + * @param str 输入的字符串 + * @return 如果字符串为纯数字,返回 true;否则返回 false + */ + public static boolean isNumeric(String str) { + if (str == null || str.isEmpty()) { + return false; + } + // 使用正则表达式判断字符串是否为纯数字 + return str.matches("\\d+"); + } + + /** + * 获取对象 + * + * @param name + * @return Object 一个以所给名字注册的bean的实例 + * @throws org.springframework.beans.BeansException + * + */ + @SuppressWarnings("unchecked") + public static T getBean(String name) throws BeansException + { + return (T) beanFactory.getBean(name); + } + + /** + * 获取类型为requiredType的对象 + * + * @param clz + * @return + * @throws org.springframework.beans.BeansException + * + */ + public static T getBean(Class clz) throws BeansException + { + T result = (T) beanFactory.getBean(clz); + return result; + } + + public static String stripEnd(String str, String stripChars) { + int end = length(str); + if (end == 0) { + return str; + } else { + if (stripChars == null) { + while(end != 0 && Character.isWhitespace(str.charAt(end - 1))) { + --end; + } + } else { + if (stripChars.isEmpty()) { + return str; + } + + while(end != 0 && stripChars.indexOf(str.charAt(end - 1)) != -1) { + --end; + } + } + + return str.substring(0, end); + } + } + +} diff --git a/smtERP-boot/src/main/java/com/reallin/smt/utils/Tools.java b/smtERP-boot/src/main/java/com/reallin/smt/utils/Tools.java new file mode 100644 index 0000000..6e1eaf0 --- /dev/null +++ b/smtERP-boot/src/main/java/com/reallin/smt/utils/Tools.java @@ -0,0 +1,675 @@ +package com.reallin.smt.utils; + +import org.springframework.util.StringUtils; +import javax.servlet.http.HttpServletRequest; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.math.BigInteger; +import java.net.InetAddress; +import java.net.URLDecoder; +import java.net.URLEncoder; +import java.net.UnknownHostException; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.regex.Pattern; + +/** + * 工具类 + * + * @author jishenghua qq:7-5-2-7-1-8-9-2-0 + */ +public class Tools { + /** + * 获得32位唯一序列号 + * + * @return 32为ID字符串 + */ + public static String getUUID_32() { + return UUID.randomUUID().toString().replaceAll("-", ""); + } + + /** + * 获得当天时间,格式为yyyy-MM-dd + * + * @return 格式化后的日期格式 + */ + public static String getNow() { + return new SimpleDateFormat("yyyy-MM-dd").format(new Date()); + } + + /** + * 获取昨天的日期字符串 + * @return + */ + public static String getYesterday(){ + Date date=new Date();//取时间 + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + //把日期往后增加一天.整数往后推,负数往前移动(1:表示明天、-1:表示昨天,0:表示今天) + calendar.add(Calendar.DATE,-1); + //这个时间就是日期往前推一天的结果 + date=calendar.getTime(); + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); + return formatter.format(date); + } + + /** + * 获取当年的第一天 + * @return + */ + public static String getYearBegin(){ + String yearStr = new SimpleDateFormat("yyyy").format(new Date()); + return yearStr + "-01-01"; + } + + /** + * 获取当年的最后一天 + * @return + */ + public static String getYearEnd(){ + String yearStr = new SimpleDateFormat("yyyy").format(new Date()); + return yearStr + "-12-31"; + } + + /** + * 获取当前月 yyyy-MM + * + * @return + */ + public static String getCurrentMonth() { + return new SimpleDateFormat("yyyy-MM").format(new Date()); + } + + /** + * 获得指定时间,格式为yyyy-MM-dd HH:mm:ss或yyyy-MM-dd + * + * @return 格式化后的日期格式 + */ + public static String dateToStr(Date date, String format) { + if(date!=null) { + return new SimpleDateFormat(format).format(date); + } else { + return ""; + } + } + + /** + * 将日期的字符串格式转为时间格式 + * @param dateString + * @return + * @throws ParseException + */ + public static Date strToDate(String dateString) throws ParseException { + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 日期格式 + return formatter.parse(dateString); // 字符串转换为Date + } + /** + * 获取指定日期格式 yyyy-MM-dd + * + * @return + */ + public static String parseDateToStr(Date date) { + if(date!=null) { + return new SimpleDateFormat("yyyy-MM-dd").format(date); + } else { + return ""; + } + } + + /** + * 获得当天时间,格式为yyyyMMddHHmmss + * + * @return 格式化后的日期格式 + */ + public static String getNow2(Date date) { + return new SimpleDateFormat("yyyyMMddHHmmss").format(date); + } + + /** + * 获得当天时间,格式为yyyy-MM-dd HH:mm:ss + * + * @return 格式化后的日期格式 + */ + public static String getNow3() { + return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); + } + + /** + * 获得指定时间,格式为yyyy-MM-dd HH:mm:ss + * + * @return 格式化后的日期格式 + */ + public static String getCenternTime(Date date) { + return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date); + } + + public static String parseDayToTime(String day, String timeStr) { + if(StringUtil.isNotEmpty(day)){ + return day + timeStr; + } else { + return null; + } + } + + /** + * 获得指定时间,格式为mm:ss + * + * @return 格式化后的日期格式 + */ + public static String getTimeInfo(Date date) { + return new SimpleDateFormat("mm:ss").format(date); + } + + /** + * 获取当前日期是星期几 + * return 星期几 + */ + public static String getWeekDay() { + Calendar c = Calendar.getInstance(Locale.CHINA); + c.setTime(new Date()); + int day = c.get(Calendar.DAY_OF_WEEK); + String weekDay = ""; + switch (day) { + case 1: + weekDay = "星期日"; + break; + case 2: + weekDay = "星期一"; + break; + case 3: + weekDay = "星期二"; + break; + case 4: + weekDay = "星期三"; + break; + case 5: + weekDay = "星期四"; + break; + case 6: + weekDay = "星期五"; + break; + case 7: + weekDay = "星期六"; + break; + default: + break; + } + return weekDay; + } + + /** + * 判断字符串是否全部为数字 + * + * @param checkStr + * @return boolean值 + */ + public static boolean checkStrIsNum(String checkStr) { + if (checkStr == null || checkStr.length() == 0) + return false; + return Pattern.compile("^[0-9]*.{1}[0-9]*$").matcher(checkStr).matches(); +// return Pattern.compile(":^[0-9]+(.[0-9])*$").matcher(checkStr).matches(); + } + + /** + * 获得前一天的时间 + * + * @return 前一天日期 + */ + public static String getPreviousDate() { + Calendar cal = Calendar.getInstance(); + cal.add(Calendar.DATE, -1); + return new SimpleDateFormat("yyyy-MM").format(cal.getTime()); + } + + /** + * 获取当前月份的前6个月(含当前月) + * @param size 月数 + * @return + */ + public static List getLastMonths(int size) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM"); + Calendar c = Calendar.getInstance(); + c.setTime(new Date()); + List list = new ArrayList(size); + for (int i=0;i cutLeng) + return beforeStr.substring(0, cutLeng) + "..."; + return beforeStr; + } + + /** + * 生成随机字符串,字母和数字混合 + * + * @return 组合后的字符串 ^[0-9a-zA-Z] + */ + public static String getRandomChar() { + //生成一个0、1、2的随机数字 + int rand = (int) Math.round(Math.random() * 1); + long itmp = 0; + char ctmp = '\u0000'; + switch (rand) { + //生成大写字母 + 1000以内数字 + case 1: + itmp = Math.round(Math.random() * 25 + 65); + ctmp = (char) itmp; + return String.valueOf(ctmp) + (int) Math.random() * 1000; + //生成小写字母 + case 2: + itmp = Math.round(Math.random() * 25 + 97); + ctmp = (char) itmp; + return String.valueOf(ctmp) + (int) Math.random() * 1000; + //生成数字 + default: + itmp = Math.round(Math.random() * 1000); + return itmp + ""; + } + } + + /** + * 判断首字母以数字开头,字符串包括数字、字母%以及空格 + * + * @param str 检查字符串 + * @return 是否以数字开头 + */ + public static boolean CheckIsStartWithNum(String str) { + return Pattern.compile("^[0-9][a-zA-Z0-9%,\\s]*$").matcher(str).matches(); + } + + /** + * 判断首字母以","开头,字符串包括数字、字母%以及空格 + * + * @param str 检查字符串 + * @return 是否以数字开头 + */ + public static boolean CheckIsStartWithSpec(String str) { + return Pattern.compile("^[,][a-zA-Z0-9%,\\s]*$").matcher(str).matches(); + } + + /** + * 字符转码 + * + * @param aValue + * @return + * @see 转码后的字符串 + */ + public static String encodeValue(String aValue) { + if (aValue.trim().length() == 0) { + return ""; + } + String valueAfterTransCode = null; + try { + valueAfterTransCode = URLEncoder.encode(aValue, "UTF-8"); + } catch (UnsupportedEncodingException e) { + e.getMessage(); + } + return valueAfterTransCode; + } + + /** + * 字符转码 + * + * @param aValue + * @return + * @see 转码后的字符串 + */ + public static String decodeValue(String aValue) { + if (aValue.trim().length() == 0) { + return ""; + } + String valueAfterTransCode = null; + try { + valueAfterTransCode = URLDecoder.decode(aValue, "UTF-8"); + } catch (UnsupportedEncodingException e) { + e.getMessage(); + } + return valueAfterTransCode; + } + + /** + * 去除str中的' + * + * @param str + * @return 除去'后的字符串 + * @see [类、类#方法、类#成员] + */ + public static String afterDealStr(String str) { + return str.replace("'", ""); + } + + /** + * 从Request对象中获得客户端IP,处理了HTTP代理服务器和Nginx的反向代理截取了ip + * + * @param request + * @return ip + */ + public static String getLocalIp(HttpServletRequest request) { + String remoteAddr = getIpAddr(request); + String forwarded = request.getHeader("X-Forwarded-For"); + String realIp = request.getHeader("X-Real-IP"); + + String ip = null; + if (realIp == null) { + if (forwarded == null) { + ip = remoteAddr; + } else { + ip = remoteAddr + "/" + forwarded.split(",")[0]; + } + } else { + if (realIp.equals(forwarded)) { + ip = realIp; + } else { + if (forwarded != null) { + forwarded = forwarded.split(",")[0]; + } + ip = realIp + "/" + forwarded; + } + } + return ip; + } + /** + * 获取访问者IP + * + * 在一般情况下使用Request.getRemoteAddr()即可,但是经过nginx等反向代理软件后,这个方法会失效。 + * + * 本方法先从Header中获取X-Real-IP,如果不存在再从X-Forwarded-For获得第一个IP(用,分割), + * 如果还不存在则调用Request .getRemoteAddr()。 + * + * @param request + * @return + */ + public static String getIpAddr(HttpServletRequest request) { + String ip = request.getHeader("X-Real-IP"); + if (!StringUtils.isEmpty(ip) && !"unknown".equalsIgnoreCase(ip)) { + return ip; + } + ip = request.getHeader("X-Forwarded-For"); + if (!StringUtils.isEmpty(ip) && !"unknown".equalsIgnoreCase(ip)) { + // 多次反向代理后会有多个IP值,第一个为真实IP。 + int index = ip.indexOf(','); + if (index != -1) { + return ip.substring(0, index); + } else { + return ip; + } + } else { + return request.getRemoteAddr(); + } + } + + /** + * 转化前台批量传入的ID值 + * + * @param data + * @return 转化后的ID值数组 + */ + public static int[] changeDataForm(String data) { + String[] dataStr = data.split(","); + int[] dataInt = new int[dataStr.length]; + for (int i = 0; i < dataStr.length; i++) + dataInt[i] = Integer.parseInt(dataStr[i]); + return dataInt; + } + + /** + * 写理财日志内容转化特殊字符 + * + * @param str 需要转化的字符 + * @return 转化后的字符 + */ + public static String htmlspecialchars(String str) { + str = str.replaceAll("&", "&"); + str = str.replaceAll("<", "<"); + str = str.replaceAll(">", ">"); + str = str.replaceAll("\"", """); + return str; + } + + /** + * 根据消费日期获取消费月 + * + * @param consumeDate 消费日期 + * @return 返回消费月信息 + */ + public static String getConsumeMonth(String consumeDate) { + return consumeDate.substring(0, 7); + } + + /** + * 获取当前日期的前XX个月 + * + * @param beforeMonth + * @return 前XX个月字符串 + */ + public static String getBeforeMonth(int beforeMonth) { + Calendar c = Calendar.getInstance(); + c.add(Calendar.MONTH, -beforeMonth); + return new SimpleDateFormat("yyyy-MM").format(c.getTime()); + } + + /** + * 根据月份获取当月第一天 + * @param monthTime + * @return + * @throws ParseException + */ + public static String firstDayOfMonth(String monthTime) throws ParseException { + return monthTime + "-01"; + } + + /** + * 根据月份获取当月最后一天 + * @param monthTime + * @return + * @throws ParseException + */ + public static String lastDayOfMonth(String monthTime) throws ParseException { + Date date = new SimpleDateFormat("yyyy-MM").parse(monthTime); + Calendar cal = Calendar.getInstance(); + cal.setTime(date); + cal.set(Calendar.DAY_OF_MONTH, 1); + cal.roll(Calendar.DAY_OF_MONTH, -1); + return new SimpleDateFormat("yyyy-MM-dd").format(cal.getTime()); + } + + /** + * 获取email用户姓名 + * + * @param emailAddress + */ + public static String getEmailUserName(String emailAddress) { + return emailAddress.substring(0, emailAddress.lastIndexOf("@")); + } + + /** + * 判断userTel是否合法,userTel只能是数字 + * + * @param userTel + * @return true 合法 false不合法 + */ + public static boolean isTelNumber(String userTel) { + String reg_phone = "^(\\(\\d{3,4}\\)|\\d{3,4}-)?\\d{7,8}$"; + String reg_tel = "^(1[0-9][0-9]|1[0-9][0|3|6|8|9])\\d{8}$"; + boolean b_phpne = Pattern.compile(reg_phone).matcher(userTel).matches(); + boolean b_tel = Pattern.compile(reg_tel).matcher(userTel).matches(); + return (b_phpne || b_tel); + } + + /** + * 模糊判断电话号码是否合法,只能是数字 + * + * @param userTel + * @return + */ + public static boolean isTelNumberBySlur(String userTel) { + return Pattern.compile("^([\\s0-9]{0,12}$)").matcher(userTel).matches(); + } + + /** + * 获取当前时间的字符串类型 + * + * @return 处理后的字符串类型 + */ + public static String getNowTime() { + return new SimpleDateFormat("yyyyMMddHHmmss").format(Calendar.getInstance().getTime()); + } + + /** + * 判断字符串中是否含有中文 + * + * @param str + * @return + * @author jishenghua + */ + public static boolean isContainsChinese(String str) { + return Pattern.compile("[\u4e00-\u9fa5]").matcher(str).matches(); + } + + /** + * 过滤html文件中的文本 + * + * @param content + * @return过滤后的文本 + */ + public static String filterText(String content) { + return content.replace("/<(?:.|\\s)*?>/g", ""); + } + + /** + * 去掉字符串中所有符号,不论是全角,还是半角的,或是货币符号或者空格等 + * + * @param s + * @return + * @author jishenghua + */ + public static String removeSymbolForString(String s) { + StringBuffer buffer = new StringBuffer(); + char[] chars = s.toCharArray(); + for (int i = 0; i < chars.length; i++) { + if ((chars[i] >= 19968 && chars[i] <= 40869) || (chars[i] >= 97 && chars[i] <= 122) || (chars[i] >= 65 && chars[i] <= 90)) { + buffer.append(chars[i]); + } + } + return buffer.toString(); + } + + /** + * 获取一个字符串的MD5 + * + * @param msg + * @return 加密后的MD5字符串 + * @throws NoSuchAlgorithmException + */ + public static String md5Encryp(String msg) throws NoSuchAlgorithmException { + // 生成一个MD5加密计算摘要 + MessageDigest md = MessageDigest.getInstance("MD5"); + // 计算md5函数 + md.update(msg.getBytes()); + return new BigInteger(1, md.digest()).toString(16); + } + + /** + * 判断是否插件URL + * + * @return + */ + public static boolean isPluginUrl(String url) { + if (url != null && (url.startsWith("/plugin"))) { + return true; + } + return false; + } + + /** + * 处理字符串null值 + * + * @param beforeStr 处理前字符串 + * @return 处理后的字符串 + */ + public static String dealNullStr(String beforeStr) { + if (null == beforeStr || beforeStr.length() == 0) + return ""; + return beforeStr; + } + + /** + * 根据token截取租户id + * @param token + * @return + */ + public static Long getTenantIdByToken(String token) { + Long tenantId = 0L; + if(StringUtil.isNotEmpty(token) && token.indexOf("_")>-1) { + String[] tokenArr = token.split("_"); + if (tokenArr.length == 2) { + tenantId = Long.parseLong(tokenArr[1]); + } + } + return tenantId; + } + + /** + * 使用参数Format将字符串转为Date + * + * @param strDate + * @param pattern + * @return + * @throws ParseException + * @author jishenghua + */ + public static Date parse(String strDate, String pattern) + throws ParseException { + return new SimpleDateFormat(pattern).parse(strDate); + } + + public static Date addDays(Date date, int num) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); //需要将date数据转移到Calender对象中操作 + calendar.add(calendar.DATE, num);//把日期往后增加n天.正数往后推,负数往前移动 + date=calendar.getTime(); //这个时间就是日期往后推一天的结果 + return date; + } + + /** + * 生成随机数字和字母组合 + * @param length + * @return + */ + public static String getCharAndNum(int length) { + Random random = new Random(); + StringBuffer valSb = new StringBuffer(); + String charStr = "0123456789abcdefghijklmnopqrstuvwxyz"; + int charLength = charStr.length(); + for (int i = 0; i < length; i++) { + int index = random.nextInt(charLength); + valSb.append(charStr.charAt(index)); + } + return valSb.toString(); + } + + public static void main(String[] args) { + Date date = new Date(); + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String dateString = formatter.format(date); + System.out.println(dateString); + } +} diff --git a/smtERP-boot/src/main/resources/application.yml b/smtERP-boot/src/main/resources/application.yml new file mode 100644 index 0000000..4c65ec1 --- /dev/null +++ b/smtERP-boot/src/main/resources/application.yml @@ -0,0 +1,76 @@ +# 服务端口 +server: + port: 27210 + servlet: + # 登录超时 - 秒 + session: + timeout: 36000 + # 服务路径 + context-path: /apis + tomcat: + # 文件上传临时路径 + basedir: /data/app/P072/tmp/tomcat + +spring: + datasource: + # 数据库连接 + url: jdbc:mysql://127.0.0.1:3306/app072?useUnicode=true&characterEncoding=utf8&useCursorFetch=true&defaultFetchSize=500&allowMultiQueries=false&rewriteBatchedStatements=true&useSSL=false + driver-class-name: com.mysql.cj.jdbc.Driver + username: ${DB_USERNAME} + password: ${DB_PASSWORD} + redis: + host: 10.20.120.47 + port: 6379 + password: ${REDIS_PASSWORD} + servlet: + multipart: + # 文件上传限制 (byte) + max-file-size: 10485760 + max-request-size: 10485760 + +# mybatis-plus 配置 +mybatis-plus: + mapper-locations: classpath:./mapper_xml/*.xml + +# 租户对应的角色 id +manage: + roleId: 10 + +# 同一账号连续输错密码时的递增等待策略 +login: + security: + # 在该时间内再次输错视为连续失败 + failure-window-seconds: 600 + # 从第几次连续输错开始限制登录 + max-failures-before-delay: 3 + # 首次限制时的等待秒数,后续连续输错按 2 倍递增 + base-delay-seconds: 30 + # 单次最长等待秒数 + max-delay-seconds: 1800 + +# SMT 外部平台推送接口在无登录会话时使用的制单人 +smt: + syncCreatorId: 63 + +# 外部同步需设置独立密钥;为空时仅允许 ERP 登录会话调用。 +security: + sync: + api-key: ${SYNC_API_KEY:} + inventory: + token-ttl-seconds: ${INVENTORY_TOKEN_TTL_SECONDS:3600} + session: + timeout-seconds: ${ERP_SESSION_TIMEOUT_SECONDS:259200} + +# 插件配置 +plugin: + runMode: prod + pluginPath: plugins + pluginConfigFilePath: pluginConfig + +file: + # 文件上传方式 1-本机 2-oss + uploadType: 1 + # 文件上传根目录 + path: /data/app/P072/upload + # 文件导出缓存 + exportTmp: /data/app/P072/export diff --git a/smtERP-boot/src/main/resources/changeLog.md b/smtERP-boot/src/main/resources/changeLog.md new file mode 100644 index 0000000..be3dc4e --- /dev/null +++ b/smtERP-boot/src/main/resources/changeLog.md @@ -0,0 +1,16 @@ +******************************************1.0.0******************************************* + +Product Name: smt-erp +Release Version: 1.0.0 +Release Date: 2026-10-12 +Copyright: 浙江瑞银电子有限公司 + +Change detail: +1. changeLog +项目初始化 + +配置文件: +无 + +数据库变更: +无 \ No newline at end of file diff --git a/smtERP-boot/src/main/resources/db/migration/V20260910__smt_inbound.sql b/smtERP-boot/src/main/resources/db/migration/V20260910__smt_inbound.sql new file mode 100644 index 0000000..b08b01e --- /dev/null +++ b/smtERP-boot/src/main/resources/db/migration/V20260910__smt_inbound.sql @@ -0,0 +1,18 @@ +CREATE TABLE IF NOT EXISTS `tbl_smt_inbound_item` ( + `id` bigint NOT NULL AUTO_INCREMENT, + `header_id` bigint NOT NULL, + `material_code` varchar(100) NOT NULL COMMENT 'ERP条码/物料代码', + `material_name` varchar(200) NOT NULL COMMENT '成品名称', + `specification` varchar(200) DEFAULT NULL COMMENT '规格型号', + `qty` decimal(24,6) NOT NULL, + `unit_price` decimal(24,6) DEFAULT NULL, + `total_net_money` decimal(24,6) DEFAULT NULL, + `total_money` decimal(24,6) DEFAULT NULL, + `source_doc_no` varchar(100) DEFAULT NULL, + `tenant_id` bigint DEFAULT NULL, + `delete_flag` varchar(1) DEFAULT '0', + PRIMARY KEY (`id`), + KEY `idx_smt_inbound_header` (`header_id`), + KEY `idx_smt_inbound_code` (`material_code`), + KEY `idx_smt_inbound_tenant` (`tenant_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COMMENT='SMT其他入库待审核明细'; diff --git a/smtERP-boot/src/main/resources/db/migration/V20260914__disable_tenant_features.sql b/smtERP-boot/src/main/resources/db/migration/V20260914__disable_tenant_features.sql new file mode 100644 index 0000000..5ce9932 --- /dev/null +++ b/smtERP-boot/src/main/resources/db/migration/V20260914__disable_tenant_features.sql @@ -0,0 +1,8 @@ +-- 本地化单租户部署:关闭租户管理菜单和公开租户注册入口。 +UPDATE tbl_function +SET enabled = 0 +WHERE name = '租户管理' OR component = '/system/TenantList'; + +UPDATE tbl_platform_config +SET platform_value = '0' +WHERE platform_key = 'register_flag'; diff --git a/smtERP-boot/src/main/resources/db/migration/V2026091501__production_requisition_item_depot.sql b/smtERP-boot/src/main/resources/db/migration/V2026091501__production_requisition_item_depot.sql new file mode 100644 index 0000000..2ab8db9 --- /dev/null +++ b/smtERP-boot/src/main/resources/db/migration/V2026091501__production_requisition_item_depot.sql @@ -0,0 +1,14 @@ +-- 生产领料支持按明细行选择发料仓库。 +SET NAMES utf8mb4; + +ALTER TABLE tbl_production_requisition_item + ADD COLUMN depot_id bigint(20) NULL DEFAULT NULL COMMENT '发料仓库id' AFTER requisition_id; + +-- 历史数据沿用领料单主表仓库,避免旧单据确认发料时缺少明细仓库。 +UPDATE tbl_production_requisition_item pri +JOIN tbl_production_requisition pr ON pr.id = pri.requisition_id +SET pri.depot_id = pr.depot_id +WHERE pri.depot_id IS NULL + AND pr.depot_id IS NOT NULL; + +CREATE INDEX idx_pri_depot_id ON tbl_production_requisition_item(depot_id); diff --git a/smtERP-boot/src/main/resources/db/migration/V2026091502__sale_shipment.sql b/smtERP-boot/src/main/resources/db/migration/V2026091502__sale_shipment.sql new file mode 100644 index 0000000..5d55494 --- /dev/null +++ b/smtERP-boot/src/main/resources/db/migration/V2026091502__sale_shipment.sql @@ -0,0 +1,66 @@ +SET NAMES utf8mb4; + +CREATE TABLE IF NOT EXISTS tbl_sale_shipment ( + id bigint(20) NOT NULL AUTO_INCREMENT, + shipment_number varchar(64) NOT NULL COMMENT '发货通知单号', + sale_out_id bigint(20) NOT NULL COMMENT '销售出库单id', + sale_out_number varchar(64) NOT NULL COMMENT '销售出库单号', + sale_order_number varchar(64) DEFAULT NULL COMMENT '关联销售订单/交货计划单号', + customer_id bigint(20) DEFAULT NULL COMMENT '客户id', + status varchar(2) NOT NULL DEFAULT '0' COMMENT '状态:0待审批、1待发货、2已发货、3部分发货、4已驳回', + planned_ship_time datetime DEFAULT NULL COMMENT '计划发货时间', + logistics_company varchar(100) DEFAULT NULL COMMENT '物流公司', + logistics_no varchar(100) DEFAULT NULL COMMENT '物流单号', + receiver varchar(100) DEFAULT NULL COMMENT '收货人', + receiver_phone varchar(100) DEFAULT NULL COMMENT '收货电话', + receiver_address varchar(255) DEFAULT NULL COMMENT '收货地址', + notice_remark varchar(500) DEFAULT NULL COMMENT '发货通知备注', + approve_by bigint(20) DEFAULT NULL COMMENT '审批人', + approve_time datetime DEFAULT NULL COMMENT '审批时间', + approve_remark varchar(500) DEFAULT NULL COMMENT '审批备注', + ship_by bigint(20) DEFAULT NULL COMMENT '发货执行人', + ship_time datetime DEFAULT NULL COMMENT '发货时间', + confirm_by bigint(20) DEFAULT NULL COMMENT '确认人', + confirm_time datetime DEFAULT NULL COMMENT '确认时间', + difference_remark varchar(500) DEFAULT NULL COMMENT '差异处理说明', + create_time datetime DEFAULT NULL COMMENT '创建时间', + creator bigint(20) DEFAULT NULL COMMENT '创建人', + tenant_id bigint(20) DEFAULT NULL COMMENT '租户id', + delete_flag varchar(1) DEFAULT '0' COMMENT '删除标记', + PRIMARY KEY (id), + UNIQUE KEY uk_sale_shipment_number (shipment_number), + KEY idx_sale_shipment_sale_out_id (sale_out_id), + KEY idx_sale_shipment_sale_out_number (sale_out_number), + KEY idx_sale_shipment_status (status) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='销售发货通知/发货单'; + +CREATE TABLE IF NOT EXISTS tbl_sale_shipment_item ( + id bigint(20) NOT NULL AUTO_INCREMENT, + shipment_id bigint(20) NOT NULL COMMENT '发货通知id', + sale_out_item_id bigint(20) NOT NULL COMMENT '销售出库明细id', + material_id bigint(20) DEFAULT NULL COMMENT '商品id', + material_extend_id bigint(20) DEFAULT NULL COMMENT '商品扩展id', + bar_code varchar(100) DEFAULT NULL COMMENT '条码', + material_name varchar(100) DEFAULT NULL COMMENT '商品名称', + standard varchar(100) DEFAULT NULL COMMENT '规格', + model varchar(100) DEFAULT NULL COMMENT '型号', + unit varchar(50) DEFAULT NULL COMMENT '单位', + batch_number varchar(100) DEFAULT NULL COMMENT '批号', + sn_list varchar(1000) DEFAULT NULL COMMENT '序列号', + plan_quantity decimal(24,6) DEFAULT 0 COMMENT '通知发货数量', + actual_quantity decimal(24,6) DEFAULT 0 COMMENT '实际发货数量', + shipped_quantity decimal(24,6) DEFAULT 0 COMMENT '创建时已通知/已发货数量', + difference_quantity decimal(24,6) DEFAULT 0 COMMENT '差异数量=实际-通知', + depot_id bigint(20) DEFAULT NULL COMMENT '出库仓库id', + remark varchar(500) DEFAULT NULL COMMENT '备注', + tenant_id bigint(20) DEFAULT NULL COMMENT '租户id', + delete_flag varchar(1) DEFAULT '0' COMMENT '删除标记', + PRIMARY KEY (id), + KEY idx_sale_shipment_item_shipment_id (shipment_id), + KEY idx_sale_shipment_item_sale_out_item_id (sale_out_item_id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='销售发货明细'; + +INSERT INTO jsh_function (number, name, parent_number, url, component, state, sort, enabled, type, push_btn, icon, delete_flag) +SELECT '060304', '发货管理', '0603', '/bill/sale_shipment', '/bill/SaleShipmentList', b'0', '0395', b'1', '电脑版', '1,2,7', 'car', '0' +FROM dual +WHERE NOT EXISTS (SELECT 1 FROM jsh_function WHERE number = '060304' OR url = '/bill/sale_shipment'); diff --git a/smtERP-boot/src/main/resources/db/migration/V20260915__production_plan_model.sql b/smtERP-boot/src/main/resources/db/migration/V20260915__production_plan_model.sql new file mode 100644 index 0000000..26a8a2c --- /dev/null +++ b/smtERP-boot/src/main/resources/db/migration/V20260915__production_plan_model.sql @@ -0,0 +1,43 @@ +-- 将旧“包装方案”模型升级为通用“生产方案”:一个生产成品 + 多个组成物料。 +-- 对旧方案中待包装产品与包装后成品不同的数据,将待包装产品迁移为组成物料。 +INSERT INTO tbl_pack_bom_item + (bom_id, material_id, material_extend_id, material_sku, unit, quantity, tenant_id, delete_flag) +SELECT pb.id, + pb.product_material_id, + pb.product_material_extend_id, + pb.product_sku, + m.unit, + CASE + WHEN IFNULL(pb.output_number, 0) > 0 THEN 1 / pb.output_number + ELSE 1 + END, + pb.tenant_id, + '0' +FROM tbl_pack_bom pb +JOIN tbl_material m ON m.id = pb.product_material_id +WHERE IFNULL(pb.delete_flag, '0') != '1' + AND pb.product_material_id IS NOT NULL + AND pb.output_material_id IS NOT NULL + AND pb.product_material_id != pb.output_material_id + AND NOT EXISTS ( + SELECT 1 + FROM tbl_pack_bom_item pbi + WHERE pbi.bom_id = pb.id + AND pbi.material_id = pb.product_material_id + AND IFNULL(pbi.delete_flag, '0') != '1' + ); + +-- product_* 和 output_number 作为兼容字段保留,新模型下分别同步成品和固定为1。 +UPDATE tbl_pack_bom +SET product_material_id = output_material_id, + product_material_extend_id = output_material_extend_id, + product_sku = output_sku, + output_number = 1 +WHERE IFNULL(delete_flag, '0') != '1' + AND output_material_id IS NOT NULL; + +-- 更新生产管理菜单名称。 +UPDATE tbl_function +SET name = '生产方案' +WHERE component = '/production/PackBomList' + OR url = '/production/pack_bom'; diff --git a/smtERP-boot/src/main/resources/db/migration/V20260916_2__headquarters_inbound_menu.sql b/smtERP-boot/src/main/resources/db/migration/V20260916_2__headquarters_inbound_menu.sql new file mode 100644 index 0000000..13eeaba --- /dev/null +++ b/smtERP-boot/src/main/resources/db/migration/V20260916_2__headquarters_inbound_menu.sql @@ -0,0 +1,39 @@ +CREATE TABLE IF NOT EXISTS tbl_headquarters_inbound_item ( + id bigint NOT NULL AUTO_INCREMENT, + header_id bigint NOT NULL, + material_code varchar(100) NOT NULL, + material_name varchar(200) NOT NULL, + specification varchar(200) DEFAULT NULL, + qty decimal(24,6) NOT NULL, + unit_price decimal(24,6) DEFAULT NULL, + total_net_money decimal(24,6) DEFAULT NULL, + total_money decimal(24,6) DEFAULT NULL, + source_doc_no varchar(100) DEFAULT NULL, + delete_flag varchar(1) DEFAULT '0', + PRIMARY KEY (id), + KEY idx_headquarters_inbound_header (header_id), + KEY idx_headquarters_inbound_code (material_code) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COMMENT='总部入库明细'; + +INSERT INTO tbl_function + (number, name, parent_number, url, component, state, sort, enabled, type, push_btn, icon, delete_flag) +SELECT '080110', '总部入库', '0801', '/bill/headquarters_in', '/bill/HeadquartersInList', b'0', '0810', b'1', '电脑版', '1,2,3,7', 'profile', '0' +WHERE NOT EXISTS (SELECT 1 FROM tbl_function WHERE url = '/bill/headquarters_in'); + +-- 默认授予管理员角色完整权限;其他角色仍由“系统管理-角色管理”按需分配。 +UPDATE tbl_user_business ub +JOIN tbl_role r ON r.id = CAST(ub.key_id AS UNSIGNED) +JOIN tbl_function f ON f.url = '/bill/headquarters_in' +SET ub.value = CONCAT(IFNULL(ub.value, ''), '[', f.id, ']'), + ub.btn_str = CASE + WHEN ub.btn_str IS NULL OR ub.btn_str = '' THEN + CONCAT('[{"funId":', f.id, ',"btnStr":"1,2,3,7"}]') + ELSE + CONCAT(LEFT(ub.btn_str, CHAR_LENGTH(ub.btn_str) - 1), + ',{"funId":', f.id, ',"btnStr":"1,2,3,7"}]') + END +WHERE ub.type = 'RoleFunctions' + AND IFNULL(ub.delete_flag, '0') != '1' + AND IFNULL(r.delete_flag, '0') != '1' + AND r.name IN ('admin', '管理员') + AND LOCATE(CONCAT('[', f.id, ']'), IFNULL(ub.value, '')) = 0; diff --git a/smtERP-boot/src/main/resources/db/migration/V20260916_3__headquarters_inbound_item_json.sql b/smtERP-boot/src/main/resources/db/migration/V20260916_3__headquarters_inbound_item_json.sql new file mode 100644 index 0000000..01a63f7 --- /dev/null +++ b/smtERP-boot/src/main/resources/db/migration/V20260916_3__headquarters_inbound_item_json.sql @@ -0,0 +1,14 @@ +ALTER TABLE tbl_headquarters_inbound_item + ADD COLUMN item_json json DEFAULT NULL COMMENT '入库商品原始信息' AFTER total_money; + +UPDATE tbl_headquarters_inbound_item +SET item_json = JSON_OBJECT( + '成品物料代码', material_code, + '成品名称', material_name, + '规格型号', specification, + '出货量', qty, + '商品单价', unit_price, + '未税金额', total_net_money, + '价税合计', total_money +) +WHERE item_json IS NULL; diff --git a/smtERP-boot/src/main/resources/db/migration/V20260916_4__headquarters_inbound_depot.sql b/smtERP-boot/src/main/resources/db/migration/V20260916_4__headquarters_inbound_depot.sql new file mode 100644 index 0000000..bce6f6b --- /dev/null +++ b/smtERP-boot/src/main/resources/db/migration/V20260916_4__headquarters_inbound_depot.sql @@ -0,0 +1,3 @@ +ALTER TABLE tbl_headquarters_inbound_item + ADD COLUMN depot_id bigint DEFAULT NULL COMMENT '入库仓库id' AFTER total_money, + ADD KEY idx_headquarters_inbound_depot (depot_id); diff --git a/smtERP-boot/src/main/resources/db/migration/V20260917_2__delivery_plan_tbl_function.sql b/smtERP-boot/src/main/resources/db/migration/V20260917_2__delivery_plan_tbl_function.sql new file mode 100644 index 0000000..6271e4f --- /dev/null +++ b/smtERP-boot/src/main/resources/db/migration/V20260917_2__delivery_plan_tbl_function.sql @@ -0,0 +1,23 @@ +SET NAMES utf8mb4; + +INSERT INTO tbl_function + (number, name, parent_number, url, component, state, sort, enabled, type, push_btn, icon, delete_flag) +SELECT '060303', '交货计划管理', '0603', '/bill/delivery_plan', '/bill/DeliveryPlanList', b'0', '0394', b'1', '电脑版', '1,2,7', 'profile', '0' +WHERE NOT EXISTS (SELECT 1 FROM tbl_function WHERE number = '060303' OR url = '/bill/delivery_plan'); + +UPDATE tbl_user_business ub +JOIN tbl_role r ON r.id = CAST(ub.key_id AS UNSIGNED) +JOIN tbl_function f ON f.url = '/bill/delivery_plan' +SET ub.value = CONCAT(IFNULL(ub.value, ''), '[', f.id, ']'), + ub.btn_str = CASE + WHEN ub.btn_str IS NULL OR ub.btn_str = '' THEN + CONCAT('[{"funId":', f.id, ',"btnStr":"1,2,7"}]') + ELSE + CONCAT(LEFT(ub.btn_str, CHAR_LENGTH(ub.btn_str) - 1), + ',{"funId":', f.id, ',"btnStr":"1,2,7"}]') + END +WHERE ub.type = 'RoleFunctions' + AND IFNULL(ub.delete_flag, '0') != '1' + AND IFNULL(r.delete_flag, '0') != '1' + AND r.name IN ('admin', '管理员') + AND LOCATE(CONCAT('[', f.id, ']'), IFNULL(ub.value, '')) = 0; diff --git a/smtERP-boot/src/main/resources/db/migration/V20260917_3__function_i18n.sql b/smtERP-boot/src/main/resources/db/migration/V20260917_3__function_i18n.sql new file mode 100644 index 0000000..5b695a7 --- /dev/null +++ b/smtERP-boot/src/main/resources/db/migration/V20260917_3__function_i18n.sql @@ -0,0 +1,80 @@ +-- Menu/resource names are presentation data. Keep both languages in the database; +-- business data such as material names, customer names and remarks remains unchanged. +ALTER TABLE tbl_function + ADD COLUMN name_en varchar(100) DEFAULT NULL COMMENT 'English menu/resource name'; + +-- Existing records remain usable in Chinese until their English name is maintained. +-- New records should provide both name and name_en. + +UPDATE tbl_function SET name_en = CASE url + WHEN '/system' THEN 'System Management' + WHEN '/system/role' THEN 'Role Management' + WHEN '/system/user' THEN 'User Management' + WHEN '/system/log' THEN 'Log Management' + WHEN '/system/function' THEN 'Resource Menu' + WHEN '/system/tenant' THEN 'Tenant Management' + WHEN '/material' THEN 'Material Management' + WHEN '/material/material_category' THEN 'Material Categories' + WHEN '/material/material' THEN 'Materials' + WHEN '/material/material_property' THEN 'Material Properties' + WHEN '/material/material_attribute' THEN 'Material Attributes' + WHEN '/systemA' THEN 'Basic Data' + WHEN '/system/vendor' THEN 'Suppliers' + WHEN '/system/depot' THEN 'Warehouses' + WHEN '/system/person' THEN 'Business Persons' + WHEN '/system/in_out_item' THEN 'Income/Expense Items' + WHEN '/system/account' THEN 'Settlement Accounts' + WHEN '/system/customer' THEN 'Customers' + WHEN '/system/member' THEN 'Members' + WHEN '/system/unit' THEN 'Multiple Units' + WHEN '/system/system_config' THEN 'System Configuration' + WHEN '/system/organization' THEN 'Departments' + WHEN '/system/plugin' THEN 'Plugins' + WHEN '/system/platform_config' THEN 'Platform Configuration' + WHEN '/system/dict' THEN 'Dictionaries' + WHEN '/bill' THEN 'Purchase Management' + WHEN '/bill/purchase_in' THEN 'Purchase Inbound' + WHEN '/bill/purchase_back' THEN 'Purchase Return' + WHEN '/bill/purchase_order' THEN 'Purchase Orders' + WHEN '/bill/purchase_apply' THEN 'Purchase Requests' + WHEN '/billB' THEN 'Sales Management' + WHEN '/bill/sale_out' THEN 'Sales Outbound' + WHEN '/bill/sale_back' THEN 'Sales Return' + WHEN '/bill/sale_order' THEN 'Sales Orders' + WHEN '/bill/delivery_plan' THEN 'Delivery Plans' + WHEN '/bill/sale_shipment' THEN 'Sales Shipments' + WHEN '/billC' THEN 'Retail Management' + WHEN '/bill/retail_out' THEN 'Retail Outbound' + WHEN '/bill/retail_back' THEN 'Retail Return' + WHEN '/billD' THEN 'Warehouse Management' + WHEN '/bill/allocation_out' THEN 'Transfer Outbound' + WHEN '/bill/other_in' THEN 'Other Inbound' + WHEN '/bill/other_out' THEN 'Other Outbound' + WHEN '/bill/assemble' THEN 'Assembly' + WHEN '/bill/disassemble' THEN 'Disassembly' + WHEN '/bill/headquarters_in' THEN 'Headquarters Inbound' + WHEN '/financial' THEN 'Finance Management' + WHEN '/financial/item_in' THEN 'Income Voucher' + WHEN '/financial/item_out' THEN 'Expense Voucher' + WHEN '/financial/money_in' THEN 'Receipt Voucher' + WHEN '/financial/money_out' THEN 'Payment Voucher' + WHEN '/financial/giro' THEN 'Transfer Voucher' + WHEN '/financial/advance_in' THEN 'Advance Receipt' + WHEN '/report' THEN 'Reports' + WHEN '/report/in_out_stock_report' THEN 'Inventory In/Out Statistics' + WHEN '/report/account_report' THEN 'Account Statistics' + WHEN '/report/buy_in_report' THEN 'Purchase Statistics' + WHEN '/report/sale_out_report' THEN 'Sales Statistics' + WHEN '/report/retail_out_report' THEN 'Retail Statistics' + WHEN '/report/in_detail' THEN 'Inbound Details' + WHEN '/report/out_detail' THEN 'Outbound Details' + WHEN '/report/in_material_count' THEN 'Inbound Summary' + WHEN '/report/out_material_count' THEN 'Outbound Summary' + WHEN '/report/customer_account' THEN 'Customer Reconciliation' + WHEN '/report/vendor_account' THEN 'Supplier Reconciliation' + WHEN '/report/stock_warning_report' THEN 'Stock Warnings' + WHEN '/report/material_stock' THEN 'Material Stock' + WHEN '/report/allocation_detail' THEN 'Transfer Details' + ELSE name_en +END +WHERE name_en IS NULL OR name_en = ''; diff --git a/smtERP-boot/src/main/resources/db/migration/V20260917__delivery_plan_shipment_flow.sql b/smtERP-boot/src/main/resources/db/migration/V20260917__delivery_plan_shipment_flow.sql new file mode 100644 index 0000000..bf7f81a --- /dev/null +++ b/smtERP-boot/src/main/resources/db/migration/V20260917__delivery_plan_shipment_flow.sql @@ -0,0 +1,61 @@ +SET NAMES utf8mb4; + +CREATE TABLE IF NOT EXISTS tbl_delivery_plan ( + id bigint(20) NOT NULL AUTO_INCREMENT, + plan_number varchar(64) NOT NULL COMMENT '交货计划单号', + source_type varchar(20) NOT NULL COMMENT '来源类型:sale销售出库、retail零售出库', + source_bill_id bigint(20) NOT NULL COMMENT '来源出库单id', + source_bill_number varchar(64) NOT NULL COMMENT '来源出库单号', + sale_order_number varchar(64) DEFAULT NULL COMMENT '关联销售订单号', + customer_id bigint(20) DEFAULT NULL COMMENT '客户/会员id', + status varchar(2) NOT NULL DEFAULT '0' COMMENT '状态:0待发货、1部分发货、2已完成', + planned_delivery_time datetime DEFAULT NULL COMMENT '计划交货时间', + adjust_reason varchar(500) DEFAULT NULL COMMENT '调整原因', + remark varchar(500) DEFAULT NULL COMMENT '备注', + create_time datetime DEFAULT NULL COMMENT '创建时间', + creator bigint(20) DEFAULT NULL COMMENT '创建人', + tenant_id bigint(20) DEFAULT NULL COMMENT '租户id', + delete_flag varchar(1) DEFAULT '0' COMMENT '删除标记', + PRIMARY KEY (id), + UNIQUE KEY uk_delivery_plan_number (plan_number), + KEY idx_delivery_plan_source_bill_id (source_bill_id), + KEY idx_delivery_plan_source_bill_number (source_bill_number), + KEY idx_delivery_plan_status (status) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='交货计划主表'; + +CREATE TABLE IF NOT EXISTS tbl_delivery_plan_item ( + id bigint(20) NOT NULL AUTO_INCREMENT, + plan_id bigint(20) NOT NULL COMMENT '交货计划id', + source_item_id bigint(20) NOT NULL COMMENT '来源出库明细id', + material_id bigint(20) DEFAULT NULL COMMENT '商品id', + material_extend_id bigint(20) DEFAULT NULL COMMENT '商品扩展id', + bar_code varchar(100) DEFAULT NULL COMMENT '条码', + material_name varchar(100) DEFAULT NULL COMMENT '商品名称', + standard varchar(100) DEFAULT NULL COMMENT '规格', + model varchar(100) DEFAULT NULL COMMENT '型号', + unit varchar(50) DEFAULT NULL COMMENT '单位', + batch_number varchar(100) DEFAULT NULL COMMENT '批号', + sn_list varchar(1000) DEFAULT NULL COMMENT '序列号', + plan_quantity decimal(24,6) DEFAULT 0 COMMENT '计划数量', + shipped_quantity decimal(24,6) DEFAULT 0 COMMENT '已发货数量', + depot_id bigint(20) DEFAULT NULL COMMENT '出库仓库id', + remark varchar(500) DEFAULT NULL COMMENT '备注', + tenant_id bigint(20) DEFAULT NULL COMMENT '租户id', + delete_flag varchar(1) DEFAULT '0' COMMENT '删除标记', + PRIMARY KEY (id), + KEY idx_delivery_plan_item_plan_id (plan_id), + KEY idx_delivery_plan_item_source_item_id (source_item_id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='交货计划明细'; + +ALTER TABLE tbl_sale_shipment + ADD COLUMN source_type varchar(20) DEFAULT 'sale' COMMENT '来源类型:sale销售出库、retail零售出库' AFTER shipment_number, + ADD COLUMN delivery_plan_id bigint(20) DEFAULT NULL COMMENT '交货计划id' AFTER source_type, + ADD COLUMN delivery_plan_number varchar(64) DEFAULT NULL COMMENT '交货计划单号' AFTER delivery_plan_id; + +ALTER TABLE tbl_sale_shipment_item + ADD COLUMN delivery_plan_item_id bigint(20) DEFAULT NULL COMMENT '交货计划明细id' AFTER shipment_id; + +INSERT INTO jsh_function (number, name, parent_number, url, component, state, sort, enabled, type, push_btn, icon, delete_flag) +SELECT '060303', '交货计划管理', '0603', '/bill/delivery_plan', '/bill/DeliveryPlanList', b'0', '0394', b'1', '电脑版', '1,2,7', 'profile', '0' +FROM dual +WHERE NOT EXISTS (SELECT 1 FROM jsh_function WHERE number = '060303' OR url = '/bill/delivery_plan'); diff --git a/smtERP-boot/src/main/resources/db/migration/V20260918_2__asset_management_demo_data.sql b/smtERP-boot/src/main/resources/db/migration/V20260918_2__asset_management_demo_data.sql new file mode 100644 index 0000000..88c3f54 --- /dev/null +++ b/smtERP-boot/src/main/resources/db/migration/V20260918_2__asset_management_demo_data.sql @@ -0,0 +1,68 @@ +SET NAMES utf8mb4; + +-- 专业 SMT 场景演示数据。全部语句均可重复执行,不会生成重复台账。 +SET @tenant_id := COALESCE((SELECT tenant_id FROM tbl_person ORDER BY id LIMIT 1), 63); +SET @creator_id := COALESCE((SELECT id FROM tbl_user ORDER BY id LIMIT 1), 1); + +INSERT INTO tbl_person (type, name, enabled, sort, tenant_id, delete_flag) +SELECT seed.type, seed.name, b'1', seed.sort, @tenant_id, '0' +FROM ( + SELECT '资产管理员' type, '张伟' name, '10' sort + UNION ALL SELECT '设备工程师', '陈晨', '20' + UNION ALL SELECT '生产主管', '王磊', '30' + UNION ALL SELECT 'IT运维工程师', '赵敏', '40' +) seed +WHERE NOT EXISTS ( + SELECT 1 FROM tbl_person p + WHERE p.tenant_id=@tenant_id AND p.name=seed.name AND IFNULL(p.delete_flag,'0')!='1' +); + +INSERT INTO tbl_asset + (asset_code, asset_name, asset_category, specification, unit, quantity, original_value, purchase_date, + use_department, keeper, location, status, source, remark, creator, delete_flag, create_time, update_time) +SELECT seed.asset_code, seed.asset_name, seed.asset_category, seed.specification, '台', 1, seed.original_value, + seed.purchase_date, seed.use_department, seed.keeper, seed.location, seed.status, 'DEMO', seed.remark, + @creator_id, '0', NOW(), NOW() +FROM ( + SELECT 'FA-SMT-2024-001' asset_code, 'SMT 高速贴片生产线' asset_name, '生产设备' asset_category, + 'Panasonic NPM-D3A 双轨配置' specification, 2850000.00 original_value, '2024-03-18' purchase_date, + 'SMT生产部' use_department, '王磊' keeper, '一车间 SMT-01 线' location, 'IN_USE' status, + '关键设备,按月盘点并执行点检保养' remark + UNION ALL SELECT 'FA-SMT-2024-002', '十温区氮气回流焊系统', '生产设备', 'HELLER 1936MK7', 980000.00, '2024-03-18', 'SMT生产部', '王磊', '一车间 SMT-01 线', 'IN_USE', '炉温曲线纳入工艺受控文件' + UNION ALL SELECT 'FA-QC-2024-003', '在线 3D AOI 检测系统', '检测设备', 'Koh Young Zenith 2', 1350000.00, '2024-04-06', '品质部', '陈晨', '一车间 AOI 检测区', 'IN_USE', '用于焊后外观与三维缺陷检测' + UNION ALL SELECT 'FA-QC-2024-004', '在线 3D SPI 检测系统', '检测设备', 'Koh Young KY8030-3', 1120000.00, '2024-04-06', '品质部', '陈晨', '一车间 印刷检测区', 'IN_USE', '用于锡膏体积、高度及偏移检测' + UNION ALL SELECT 'FA-UTIL-2023-005', '螺杆式空气压缩机', '动力设备', 'Atlas Copco GA22 VSD+', 186000.00, '2023-11-20', '设备动力部', '陈晨', '动力站 1 号机位', 'IN_USE', '为 SMT 车间提供稳定压缩空气' + UNION ALL SELECT 'FA-IT-2025-006', 'MES 数据库服务器', 'IT设备', 'Dell PowerEdge R760', 168000.00, '2025-01-15', '信息技术部', '赵敏', '数据中心 A03 机柜', 'IN_USE', '双机热备主节点,纳入信息安全资产清单' + UNION ALL SELECT 'FA-WH-2024-007', '电动平衡重式叉车', '物流设备', 'Toyota 8FBE20', 145000.00, '2024-07-22', '仓储物流部', '张伟', '原材料仓充电区', 'IN_USE', '额定载荷 2.0 吨,持证人员操作' + UNION ALL SELECT 'FA-TOOL-2025-008', '全自动钢网清洗机', '工装设备', 'SAWA SC-A1000', 78000.00, '2025-02-10', 'SMT生产部', '王磊', '一车间 钢网房', 'IN_USE', '用于钢网水基闭环清洗与烘干' +) seed +WHERE NOT EXISTS ( + SELECT 1 FROM tbl_asset a WHERE a.asset_code=seed.asset_code AND IFNULL(a.delete_flag,'0')!='1' +); + +INSERT INTO tbl_asset_device + (asset_id, device_code, device_name, device_category, model, serial_number, manufacturer, purchase_date, + enabled_date, use_department, keeper, location, status, next_maintenance_date, remark, + creator, delete_flag, create_time, update_time) +SELECT (SELECT a.id FROM tbl_asset a WHERE a.asset_code=seed.asset_code AND IFNULL(a.delete_flag,'0')!='1' ORDER BY a.id DESC LIMIT 1), + seed.device_code, seed.device_name, seed.device_category, seed.model, seed.serial_number, seed.manufacturer, + seed.purchase_date, seed.enabled_date, seed.use_department, seed.keeper, seed.location, seed.status, + seed.next_maintenance_date, seed.remark, @creator_id, '0', NOW(), NOW() +FROM ( + SELECT 'FA-SMT-2024-001' asset_code, 'SMT-L01-PRINTER-01' device_code, '全自动锡膏印刷机' device_name, '印刷设备' device_category, + 'DEK NeoHorizon 03iX' model, 'DEK24NH03187' serial_number, 'ASMPT' manufacturer, '2024-03-18' purchase_date, + '2024-04-08' enabled_date, 'SMT生产部' use_department, '王磊' keeper, '一车间 SMT-01 线前段' location, + 'IN_USE' status, '2026-10-08' next_maintenance_date, '配置 2D 检测与自动擦网单元' remark + UNION ALL SELECT 'FA-SMT-2024-001', 'SMT-L01-MOUNTER-A', '高速模块贴片机 A', '贴装设备', 'Panasonic NPM-D3A', 'NPMD3A24031801', 'Panasonic', '2024-03-18', '2024-04-08', 'SMT生产部', '王磊', '一车间 SMT-01 线 A 工位', 'IN_USE', '2026-10-15', '前段高速贴装,配置 16 头轻量贴装头' + UNION ALL SELECT 'FA-SMT-2024-001', 'SMT-L01-MOUNTER-B', '多功能贴片机 B', '贴装设备', 'Panasonic NPM-W2S', 'NPMW2S24031802', 'Panasonic', '2024-03-18', '2024-04-08', 'SMT生产部', '王磊', '一车间 SMT-01 线 B 工位', 'IN_USE', '2026-10-16', '负责异形件及高精度元件贴装' + UNION ALL SELECT 'FA-SMT-2024-002', 'SMT-L01-REFLOW-01', '十温区氮气回流焊炉', '焊接设备', 'HELLER 1936MK7', 'HLR1936-2403268', 'Heller Industries', '2024-03-18', '2024-04-10', 'SMT生产部', '王磊', '一车间 SMT-01 线后段', 'IN_USE', '2026-10-20', '氮气闭环控制,支持双轨独立调宽' + UNION ALL SELECT 'FA-QC-2024-003', 'QC-AOI-01', '在线 3D AOI', '检测设备', 'Zenith 2', 'KY-Z2-24040615', 'Koh Young', '2024-04-06', '2024-04-18', '品质部', '陈晨', '一车间 AOI 检测区', 'IN_USE', '2026-11-05', '具备 AI 缺陷复判和 SPC 数据接口' + UNION ALL SELECT 'FA-QC-2024-004', 'QC-SPI-01', '在线 3D SPI', '检测设备', 'KY8030-3', 'KY-8030-24040608', 'Koh Young', '2024-04-06', '2024-04-18', '品质部', '陈晨', '一车间 印刷检测区', 'IN_USE', '2026-11-06', '与印刷机闭环反馈锡膏偏移数据' + UNION ALL SELECT 'FA-UTIL-2023-005', 'UTIL-AIR-01', '变频螺杆空压机', '动力设备', 'GA22 VSD+', 'AC-GA22-2311209', 'Atlas Copco', '2023-11-20', '2023-12-01', '设备动力部', '陈晨', '动力站 1 号机位', 'IN_USE', '2026-10-01', '运行压力 0.72MPa,接入能源管理系统' + UNION ALL SELECT 'FA-IT-2025-006', 'IT-MES-DB-01', 'MES 数据库主服务器', '服务器', 'PowerEdge R760', 'CN-R760-25011501', 'Dell', '2025-01-15', '2025-01-22', '信息技术部', '赵敏', '数据中心 A03-U18', 'IN_USE', '2026-12-15', '双路 CPU、512GB 内存、全闪存 RAID10' + UNION ALL SELECT 'FA-WH-2024-007', 'WH-FORKLIFT-01', '2 吨电动叉车', '物流设备', '8FBE20', 'TY-8FBE20-240722', 'Toyota', '2024-07-22', '2024-08-01', '仓储物流部', '张伟', '原材料仓充电区', 'IN_USE', '2026-10-25', '锂电池版本,配置蓝光安全警示灯' + UNION ALL SELECT 'FA-TOOL-2025-008', 'TOOL-STENCIL-CLEAN-01', '全自动钢网清洗机', '工装设备', 'SC-A1000', 'SAWA-A1000-250210', 'SAWA', '2025-02-10', '2025-02-18', 'SMT生产部', '王磊', '一车间 钢网房', 'IN_USE', '2026-11-10', '水基清洗、漂洗、热风干燥一体化' +) seed +WHERE NOT EXISTS ( + SELECT 1 FROM tbl_asset_device d WHERE d.device_code=seed.device_code AND IFNULL(d.delete_flag,'0')!='1' +); diff --git a/smtERP-boot/src/main/resources/db/migration/V20260918_3__legacy_inventory_api.sql b/smtERP-boot/src/main/resources/db/migration/V20260918_3__legacy_inventory_api.sql new file mode 100644 index 0000000..c9f6dcf --- /dev/null +++ b/smtERP-boot/src/main/resources/db/migration/V20260918_3__legacy_inventory_api.sql @@ -0,0 +1,30 @@ +SET NAMES utf8mb4; + +ALTER TABLE tbl_asset_inventory_detail + ADD COLUMN image_group_id varchar(64) DEFAULT NULL COMMENT '原盘点接口图片组ID' AFTER remark; + +CREATE TABLE IF NOT EXISTS tbl_asset_inventory_file ( + id bigint(20) NOT NULL AUTO_INCREMENT, + group_id varchar(64) NOT NULL, + inventory_detail_id bigint(20) NOT NULL, + original_name varchar(255) DEFAULT NULL, + file_path varchar(500) NOT NULL, + content_type varchar(100) DEFAULT NULL, + file_size bigint(20) DEFAULT NULL, + creator bigint(20) DEFAULT NULL, + create_time datetime DEFAULT NULL, + PRIMARY KEY (id), + KEY idx_asset_inventory_file_group (group_id), + KEY idx_asset_inventory_file_detail (inventory_detail_id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='盘点现场图片'; + +CREATE TABLE IF NOT EXISTS tbl_asset_inventory_operation ( + id bigint(20) NOT NULL AUTO_INCREMENT, + inventory_id bigint(20) NOT NULL, + operate_type varchar(8) NOT NULL COMMENT '2接单、3转单、4盘点', + operator_user_id bigint(20) DEFAULT NULL, + operate_time datetime NOT NULL, + remark varchar(500) DEFAULT NULL, + PRIMARY KEY (id), + KEY idx_asset_inventory_operation (inventory_id, operate_time) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='盘点执行记录'; diff --git a/smtERP-boot/src/main/resources/db/migration/V20260918__asset_management.sql b/smtERP-boot/src/main/resources/db/migration/V20260918__asset_management.sql new file mode 100644 index 0000000..0b1b6e7 --- /dev/null +++ b/smtERP-boot/src/main/resources/db/migration/V20260918__asset_management.sql @@ -0,0 +1,163 @@ +SET NAMES utf8mb4; + +CREATE TABLE IF NOT EXISTS tbl_asset ( + id bigint(20) NOT NULL AUTO_INCREMENT, + asset_code varchar(64) NOT NULL COMMENT '资产编号', + asset_name varchar(150) NOT NULL COMMENT '资产名称', + asset_category varchar(100) DEFAULT NULL COMMENT '资产分类', + specification varchar(150) DEFAULT NULL COMMENT '规格型号', + unit varchar(20) DEFAULT '项' COMMENT '计量单位', + quantity decimal(24,6) NOT NULL DEFAULT 1 COMMENT '账面数量', + original_value decimal(24,6) NOT NULL DEFAULT 0 COMMENT '资产原值', + purchase_date date DEFAULT NULL COMMENT '购置日期', + use_department varchar(100) DEFAULT NULL COMMENT '使用部门', + keeper varchar(100) DEFAULT NULL COMMENT '保管人', + location varchar(255) DEFAULT NULL COMMENT '存放地点', + status varchar(32) NOT NULL DEFAULT 'IN_USE' COMMENT '状态:IDLE/IN_USE/REPAIR/SCRAPPED', + source varchar(32) DEFAULT 'MANUAL' COMMENT '数据来源', + remark varchar(500) DEFAULT NULL COMMENT '备注', + creator bigint(20) DEFAULT NULL, + updater bigint(20) DEFAULT NULL, + delete_flag varchar(1) DEFAULT '0', + create_time datetime DEFAULT NULL, + update_time datetime DEFAULT NULL, + PRIMARY KEY (id), + KEY idx_asset_code (asset_code), + KEY idx_asset_status (status) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='资产台账'; + +CREATE TABLE IF NOT EXISTS tbl_asset_device ( + id bigint(20) NOT NULL AUTO_INCREMENT, + asset_id bigint(20) DEFAULT NULL COMMENT '关联资产id', + device_code varchar(64) NOT NULL COMMENT '设备编号', + device_name varchar(150) NOT NULL COMMENT '设备名称', + device_category varchar(100) DEFAULT NULL COMMENT '设备分类', + model varchar(150) DEFAULT NULL COMMENT '设备型号', + serial_number varchar(150) DEFAULT NULL COMMENT '出厂序列号', + manufacturer varchar(150) DEFAULT NULL COMMENT '制造商', + purchase_date date DEFAULT NULL, + enabled_date date DEFAULT NULL COMMENT '启用日期', + use_department varchar(100) DEFAULT NULL, + keeper varchar(100) DEFAULT NULL, + location varchar(255) DEFAULT NULL, + status varchar(32) NOT NULL DEFAULT 'IN_USE' COMMENT '状态:IDLE/IN_USE/REPAIR/STOPPED/SCRAPPED', + last_inventory_time datetime DEFAULT NULL COMMENT '最近盘点时间', + next_maintenance_date date DEFAULT NULL COMMENT '下次保养日期', + remark varchar(500) DEFAULT NULL, + creator bigint(20) DEFAULT NULL, + updater bigint(20) DEFAULT NULL, + delete_flag varchar(1) DEFAULT '0', + create_time datetime DEFAULT NULL, + update_time datetime DEFAULT NULL, + PRIMARY KEY (id), + KEY idx_asset_device_code (device_code), + KEY idx_asset_device_asset (asset_id), + KEY idx_asset_device_status (status) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='设备台账'; + +CREATE TABLE IF NOT EXISTS tbl_asset_inventory ( + id bigint(20) NOT NULL AUTO_INCREMENT, + inventory_no varchar(64) NOT NULL COMMENT '盘点单号', + plan_name varchar(150) NOT NULL COMMENT '盘点计划名称', + scope_type varchar(16) NOT NULL DEFAULT 'DEVICE' COMMENT '范围:ASSET/DEVICE/ALL', + planned_at datetime DEFAULT NULL COMMENT '计划盘点时间', + deadline datetime DEFAULT NULL COMMENT '截止时间', + status varchar(32) NOT NULL DEFAULT 'DRAFT' COMMENT 'DRAFT/ACCEPTED/IN_PROGRESS/PENDING_AUDIT/COMPLETED/CLOSED', + total_count int NOT NULL DEFAULT 0, + inventoried_count int NOT NULL DEFAULT 0, + normal_count int NOT NULL DEFAULT 0, + abnormal_count int NOT NULL DEFAULT 0, + inventory_user_id bigint(20) DEFAULT NULL, + inventory_user_name varchar(100) DEFAULT NULL, + started_at datetime DEFAULT NULL, + completed_at datetime DEFAULT NULL, + audit_user_id bigint(20) DEFAULT NULL, + audit_time datetime DEFAULT NULL, + source varchar(32) DEFAULT 'MANUAL' COMMENT 'MANUAL/COLLABORATION/TPM_DOUBLE', + external_request_id varchar(100) DEFAULT NULL COMMENT '协同服务请求号(幂等键)', + remark varchar(500) DEFAULT NULL, + creator bigint(20) DEFAULT NULL, + updater bigint(20) DEFAULT NULL, + delete_flag varchar(1) DEFAULT '0', + create_time datetime DEFAULT NULL, + update_time datetime DEFAULT NULL, + PRIMARY KEY (id), + UNIQUE KEY uk_asset_inventory_no (inventory_no), + UNIQUE KEY uk_asset_inventory_external (external_request_id), + KEY idx_asset_inventory_status (status) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='资产盘点单'; + +CREATE TABLE IF NOT EXISTS tbl_asset_inventory_detail ( + id bigint(20) NOT NULL AUTO_INCREMENT, + inventory_id bigint(20) NOT NULL, + target_type varchar(16) NOT NULL COMMENT 'ASSET/DEVICE', + target_id bigint(20) NOT NULL, + target_code varchar(64) NOT NULL, + target_name varchar(150) NOT NULL, + model varchar(150) DEFAULT NULL, + book_quantity decimal(24,6) NOT NULL DEFAULT 1, + actual_quantity decimal(24,6) NOT NULL DEFAULT 0, + inventory_status varchar(32) NOT NULL DEFAULT 'PENDING' COMMENT 'PENDING/NORMAL/SURPLUS/SHORTAGE/ABNORMAL', + book_department varchar(100) DEFAULT NULL, + actual_department varchar(100) DEFAULT NULL, + book_location varchar(255) DEFAULT NULL, + actual_location varchar(255) DEFAULT NULL, + inventory_time datetime DEFAULT NULL, + inventory_user_id bigint(20) DEFAULT NULL, + inventory_user_name varchar(100) DEFAULT NULL, + remark varchar(500) DEFAULT NULL, + create_time datetime DEFAULT NULL, + update_time datetime DEFAULT NULL, + PRIMARY KEY (id), + UNIQUE KEY uk_asset_inventory_target (inventory_id, target_type, target_id), + KEY idx_asset_inventory_detail_status (inventory_id, inventory_status), + KEY idx_asset_inventory_detail_code (target_code) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='资产盘点快照明细'; + +INSERT INTO tbl_function + (number, name, name_en, parent_number, url, component, state, sort, enabled, type, push_btn, icon, delete_flag) +SELECT '0902', '资产管理', 'Asset Management', '0', '/assetManagement', '/layouts/TabLayout', b'0', '0490', b'1', '电脑版', '', 'bank', '0' +WHERE NOT EXISTS (SELECT 1 FROM tbl_function WHERE number='0902' OR url='/assetManagement'); + +INSERT INTO tbl_function + (number, name, name_en, parent_number, url, component, state, sort, enabled, type, push_btn, icon, delete_flag) +SELECT '090201', '资产台账', 'Asset Ledger', '0902', '/asset/ledger', '/asset/AssetList', b'0', '0491', b'1', '电脑版', '1,2,3', 'profile', '0' +WHERE NOT EXISTS (SELECT 1 FROM tbl_function WHERE number='090201' OR url='/asset/ledger'); + +INSERT INTO tbl_function + (number, name, name_en, parent_number, url, component, state, sort, enabled, type, push_btn, icon, delete_flag) +SELECT '090202', '设备台账', 'Device Ledger', '0902', '/asset/device', '/asset/DeviceList', b'0', '0492', b'1', '电脑版', '1,2,3', 'tool', '0' +WHERE NOT EXISTS (SELECT 1 FROM tbl_function WHERE number='090202' OR url='/asset/device'); + +INSERT INTO tbl_function + (number, name, name_en, parent_number, url, component, state, sort, enabled, type, push_btn, icon, delete_flag) +SELECT '090203', '资产盘点', 'Asset Inventory', '0902', '/asset/inventory', '/asset/InventoryList', b'0', '0493', b'1', '电脑版', '1,2,3,4,5,6', 'scan', '0' +WHERE NOT EXISTS (SELECT 1 FROM tbl_function WHERE number='090203' OR url='/asset/inventory'); + +UPDATE tbl_user_business ub +JOIN tbl_role r ON r.id=CAST(ub.key_id AS UNSIGNED) +JOIN tbl_function f ON f.number='0902' +SET ub.value=CONCAT(IFNULL(ub.value,''), '[', f.id, ']') +WHERE ub.type='RoleFunctions' AND IFNULL(ub.delete_flag,'0')!='1' AND IFNULL(r.delete_flag,'0')!='1' + AND r.name IN ('admin','管理员') AND LOCATE(CONCAT('[',f.id,']'),IFNULL(ub.value,''))=0; + +UPDATE tbl_user_business ub +JOIN tbl_role r ON r.id=CAST(ub.key_id AS UNSIGNED) +JOIN tbl_function f ON f.number='090201' +SET ub.value=CONCAT(IFNULL(ub.value,''), '[', f.id, ']') +WHERE ub.type='RoleFunctions' AND IFNULL(ub.delete_flag,'0')!='1' AND IFNULL(r.delete_flag,'0')!='1' + AND r.name IN ('admin','管理员') AND LOCATE(CONCAT('[',f.id,']'),IFNULL(ub.value,''))=0; + +UPDATE tbl_user_business ub +JOIN tbl_role r ON r.id=CAST(ub.key_id AS UNSIGNED) +JOIN tbl_function f ON f.number='090202' +SET ub.value=CONCAT(IFNULL(ub.value,''), '[', f.id, ']') +WHERE ub.type='RoleFunctions' AND IFNULL(ub.delete_flag,'0')!='1' AND IFNULL(r.delete_flag,'0')!='1' + AND r.name IN ('admin','管理员') AND LOCATE(CONCAT('[',f.id,']'),IFNULL(ub.value,''))=0; + +UPDATE tbl_user_business ub +JOIN tbl_role r ON r.id=CAST(ub.key_id AS UNSIGNED) +JOIN tbl_function f ON f.number='090203' +SET ub.value=CONCAT(IFNULL(ub.value,''), '[', f.id, ']') +WHERE ub.type='RoleFunctions' AND IFNULL(ub.delete_flag,'0')!='1' AND IFNULL(r.delete_flag,'0')!='1' + AND r.name IN ('admin','管理员') AND LOCATE(CONCAT('[',f.id,']'),IFNULL(ub.value,''))=0; diff --git a/smtERP-boot/src/main/resources/db/migration/V20260920__fill_function_name_en.sql b/smtERP-boot/src/main/resources/db/migration/V20260920__fill_function_name_en.sql new file mode 100644 index 0000000..bef64a0 --- /dev/null +++ b/smtERP-boot/src/main/resources/db/migration/V20260920__fill_function_name_en.sql @@ -0,0 +1,86 @@ +-- Fill the English display name for every active resource menu. +-- The URL is used as the stable key because legacy data contains duplicate menu numbers. +UPDATE tbl_function +SET name_en = CASE url + WHEN '/billB' THEN 'Sales Management' + WHEN '/bill' THEN 'Purchase Management' + WHEN '/production' THEN 'Production Management' + WHEN '/billD' THEN 'Warehouse Management' + WHEN '/financial' THEN 'Finance Management' + WHEN '/assetManagement' THEN 'Asset Management' + WHEN '/material' THEN 'Product Management' + WHEN '/report' THEN 'Reports' + WHEN '/systemA' THEN 'Master Data' + WHEN '/system' THEN 'System Management' + WHEN '/billC' THEN 'Retail Management' + WHEN '/system/role' THEN 'Role Management' + WHEN '/system/user' THEN 'User Management' + WHEN '/system/organization' THEN 'Department Management' + WHEN '/system/log' THEN 'Log Management' + WHEN '/material/material_property' THEN 'Product Properties' + WHEN '/system/system_config' THEN 'System Configuration' + WHEN '/system/function' THEN 'Resource Menus' + WHEN '/system/tenant' THEN 'Tenant Management' + WHEN '/system/plugin' THEN 'Plugin Management' + WHEN '/system/dict' THEN 'Dictionary Management' + WHEN '/system/platform_config' THEN 'Platform Configuration' + WHEN '/material/material_category' THEN 'Product Categories' + WHEN '/material/material' THEN 'Product Information' + WHEN '/system/unit' THEN 'Multiple Units' + WHEN '/material/material_attribute' THEN 'Product Attributes' + WHEN '/system/vendor' THEN 'Suppliers' + WHEN '/system/customer' THEN 'Customers' + WHEN '/system/member' THEN 'Members' + WHEN '/system/customerCategory' THEN 'Customer Categories' + WHEN '/system/depot' THEN 'Warehouses' + WHEN '/system/in_out_item' THEN 'Income and Expense Items' + WHEN '/system/account' THEN 'Settlement Accounts' + WHEN '/system/person' THEN 'Operators' + WHEN '/bill/purchase_apply' THEN 'Purchase Requisitions' + WHEN '/bill/purchase_order' THEN 'Purchase Orders' + WHEN '/bill/purchase_in' THEN 'Purchase Receipts' + WHEN '/bill/purchase_back' THEN 'Purchase Returns' + WHEN '/bill/sale_order' THEN 'Sales Orders' + WHEN '/bill/sale_out' THEN 'Sales Shipments' + WHEN '/bill/delivery_plan' THEN 'Delivery Plans' + WHEN '/bill/sale_shipment' THEN 'Shipment Management' + WHEN '/bill/sale_back' THEN 'Sales Returns' + WHEN '/bill/retail_out' THEN 'Retail Shipments' + WHEN '/bill/retail_back' THEN 'Retail Returns' + WHEN '/financial/item_in' THEN 'Income Vouchers' + WHEN '/financial/item_out' THEN 'Expense Vouchers' + WHEN '/financial/money_in' THEN 'Receipt Vouchers' + WHEN '/financial/money_out' THEN 'Payment Vouchers' + WHEN '/production/pack_bom' THEN 'Production BOMs' + WHEN '/production/order' THEN 'Production Orders' + WHEN '/production/requisition' THEN 'Material Requisitions' + WHEN '/production/report' THEN 'Production Reports' + WHEN '/financial/giro' THEN 'Transfer Vouchers' + WHEN '/asset/ledger' THEN 'Asset Ledger' + WHEN '/asset/device' THEN 'Device Ledger' + WHEN '/asset/inventory' THEN 'Asset Inventory' + WHEN '/financial/advance_in' THEN 'Advance Receipts' + WHEN '/report/material_stock' THEN 'Product Inventory' + WHEN '/report/account_report' THEN 'Account Summary' + WHEN '/report/retail_out_report' THEN 'Retail Summary' + WHEN '/report/buy_in_report' THEN 'Purchase Summary' + WHEN '/report/sale_out_report' THEN 'Sales Summary' + WHEN '/report/in_detail' THEN 'Inbound Details' + WHEN '/report/out_detail' THEN 'Outbound Details' + WHEN '/report/allocation_detail' THEN 'Transfer Details' + WHEN '/report/in_material_count' THEN 'Inbound Summary' + WHEN '/report/out_material_count' THEN 'Outbound Summary' + WHEN '/report/in_out_stock_report' THEN 'Inventory Transaction Summary' + WHEN '/report/customer_account' THEN 'Customer Reconciliation' + WHEN '/report/vendor_account' THEN 'Supplier Reconciliation' + WHEN '/report/stock_warning_report' THEN 'Stock Alerts' + WHEN '/bill/other_in' THEN 'Other Receipts' + WHEN '/bill/other_out' THEN 'Other Shipments' + WHEN '/bill/allocation_out' THEN 'Stock Transfers' + WHEN '/bill/assemble' THEN 'Assembly Orders' + WHEN '/bill/headquarters_in' THEN 'Headquarters Receipts' + WHEN '/bill/disassemble' THEN 'Disassembly Orders' + ELSE name_en +END +WHERE IFNULL(delete_flag, '0') != '1'; + diff --git a/smtERP-boot/src/main/resources/db/migration/V20260921_2__log_api_fields_and_monthly_partitions.sql b/smtERP-boot/src/main/resources/db/migration/V20260921_2__log_api_fields_and_monthly_partitions.sql new file mode 100644 index 0000000..096cf64 --- /dev/null +++ b/smtERP-boot/src/main/resources/db/migration/V20260921_2__log_api_fields_and_monthly_partitions.sql @@ -0,0 +1,150 @@ +-- 日志扩展字段及按创建时间的月分区。 +-- MySQL 分区表要求所有唯一键包含分区键,因此主键调整为 (id, create_time)。 +ALTER TABLE tbl_log + ADD COLUMN request_url VARCHAR(1000) NULL COMMENT '请求URL' AFTER tenant_id, + ADD COLUMN request_params LONGTEXT NULL COMMENT '请求入参' AFTER request_url, + ADD COLUMN response_params LONGTEXT NULL COMMENT '请求出参' AFTER request_params; + +UPDATE tbl_log SET create_time = CURRENT_TIMESTAMP WHERE create_time IS NULL; + +ALTER TABLE tbl_log + MODIFY COLUMN create_time DATETIME NOT NULL COMMENT '创建时间', + DROP PRIMARY KEY, + ADD PRIMARY KEY (id, create_time), + PARTITION BY RANGE COLUMNS(create_time) ( + PARTITION p_before_2025 VALUES LESS THAN ('2025-01-01'), + PARTITION p202501 VALUES LESS THAN ('2025-02-01'), + PARTITION p202502 VALUES LESS THAN ('2025-03-01'), + PARTITION p202503 VALUES LESS THAN ('2025-04-01'), + PARTITION p202504 VALUES LESS THAN ('2025-05-01'), + PARTITION p202505 VALUES LESS THAN ('2025-06-01'), + PARTITION p202506 VALUES LESS THAN ('2025-07-01'), + PARTITION p202507 VALUES LESS THAN ('2025-08-01'), + PARTITION p202508 VALUES LESS THAN ('2025-09-01'), + PARTITION p202509 VALUES LESS THAN ('2025-10-01'), + PARTITION p202510 VALUES LESS THAN ('2025-11-01'), + PARTITION p202511 VALUES LESS THAN ('2025-12-01'), + PARTITION p202512 VALUES LESS THAN ('2026-01-01'), + PARTITION p202601 VALUES LESS THAN ('2026-02-01'), + PARTITION p202602 VALUES LESS THAN ('2026-03-01'), + PARTITION p202603 VALUES LESS THAN ('2026-04-01'), + PARTITION p202604 VALUES LESS THAN ('2026-05-01'), + PARTITION p202605 VALUES LESS THAN ('2026-06-01'), + PARTITION p202606 VALUES LESS THAN ('2026-07-01'), + PARTITION p202607 VALUES LESS THAN ('2026-08-01'), + PARTITION p202608 VALUES LESS THAN ('2026-09-01'), + PARTITION p202609 VALUES LESS THAN ('2026-10-01'), + PARTITION p202610 VALUES LESS THAN ('2026-11-01'), + PARTITION p202611 VALUES LESS THAN ('2026-12-01'), + PARTITION p202612 VALUES LESS THAN ('2027-01-01'), + PARTITION p202701 VALUES LESS THAN ('2027-02-01'), + PARTITION p202702 VALUES LESS THAN ('2027-03-01'), + PARTITION p202703 VALUES LESS THAN ('2027-04-01'), + PARTITION p202704 VALUES LESS THAN ('2027-05-01'), + PARTITION p202705 VALUES LESS THAN ('2027-06-01'), + PARTITION p202706 VALUES LESS THAN ('2027-07-01'), + PARTITION p202707 VALUES LESS THAN ('2027-08-01'), + PARTITION p202708 VALUES LESS THAN ('2027-09-01'), + PARTITION p202709 VALUES LESS THAN ('2027-10-01'), + PARTITION p202710 VALUES LESS THAN ('2027-11-01'), + PARTITION p202711 VALUES LESS THAN ('2027-12-01'), + PARTITION p202712 VALUES LESS THAN ('2028-01-01'), + PARTITION p202801 VALUES LESS THAN ('2028-02-01'), + PARTITION p202802 VALUES LESS THAN ('2028-03-01'), + PARTITION p202803 VALUES LESS THAN ('2028-04-01'), + PARTITION p202804 VALUES LESS THAN ('2028-05-01'), + PARTITION p202805 VALUES LESS THAN ('2028-06-01'), + PARTITION p202806 VALUES LESS THAN ('2028-07-01'), + PARTITION p202807 VALUES LESS THAN ('2028-08-01'), + PARTITION p202808 VALUES LESS THAN ('2028-09-01'), + PARTITION p202809 VALUES LESS THAN ('2028-10-01'), + PARTITION p202810 VALUES LESS THAN ('2028-11-01'), + PARTITION p202811 VALUES LESS THAN ('2028-12-01'), + PARTITION p202812 VALUES LESS THAN ('2029-01-01'), + PARTITION p202901 VALUES LESS THAN ('2029-02-01'), + PARTITION p202902 VALUES LESS THAN ('2029-03-01'), + PARTITION p202903 VALUES LESS THAN ('2029-04-01'), + PARTITION p202904 VALUES LESS THAN ('2029-05-01'), + PARTITION p202905 VALUES LESS THAN ('2029-06-01'), + PARTITION p202906 VALUES LESS THAN ('2029-07-01'), + PARTITION p202907 VALUES LESS THAN ('2029-08-01'), + PARTITION p202908 VALUES LESS THAN ('2029-09-01'), + PARTITION p202909 VALUES LESS THAN ('2029-10-01'), + PARTITION p202910 VALUES LESS THAN ('2029-11-01'), + PARTITION p202911 VALUES LESS THAN ('2029-12-01'), + PARTITION p202912 VALUES LESS THAN ('2030-01-01'), + PARTITION p203001 VALUES LESS THAN ('2030-02-01'), + PARTITION p203002 VALUES LESS THAN ('2030-03-01'), + PARTITION p203003 VALUES LESS THAN ('2030-04-01'), + PARTITION p203004 VALUES LESS THAN ('2030-05-01'), + PARTITION p203005 VALUES LESS THAN ('2030-06-01'), + PARTITION p203006 VALUES LESS THAN ('2030-07-01'), + PARTITION p203007 VALUES LESS THAN ('2030-08-01'), + PARTITION p203008 VALUES LESS THAN ('2030-09-01'), + PARTITION p203009 VALUES LESS THAN ('2030-10-01'), + PARTITION p203010 VALUES LESS THAN ('2030-11-01'), + PARTITION p203011 VALUES LESS THAN ('2030-12-01'), + PARTITION p203012 VALUES LESS THAN ('2031-01-01'), + PARTITION p203101 VALUES LESS THAN ('2031-02-01'), + PARTITION p203102 VALUES LESS THAN ('2031-03-01'), + PARTITION p203103 VALUES LESS THAN ('2031-04-01'), + PARTITION p203104 VALUES LESS THAN ('2031-05-01'), + PARTITION p203105 VALUES LESS THAN ('2031-06-01'), + PARTITION p203106 VALUES LESS THAN ('2031-07-01'), + PARTITION p203107 VALUES LESS THAN ('2031-08-01'), + PARTITION p203108 VALUES LESS THAN ('2031-09-01'), + PARTITION p203109 VALUES LESS THAN ('2031-10-01'), + PARTITION p203110 VALUES LESS THAN ('2031-11-01'), + PARTITION p203111 VALUES LESS THAN ('2031-12-01'), + PARTITION p203112 VALUES LESS THAN ('2032-01-01'), + PARTITION p203201 VALUES LESS THAN ('2032-02-01'), + PARTITION p203202 VALUES LESS THAN ('2032-03-01'), + PARTITION p203203 VALUES LESS THAN ('2032-04-01'), + PARTITION p203204 VALUES LESS THAN ('2032-05-01'), + PARTITION p203205 VALUES LESS THAN ('2032-06-01'), + PARTITION p203206 VALUES LESS THAN ('2032-07-01'), + PARTITION p203207 VALUES LESS THAN ('2032-08-01'), + PARTITION p203208 VALUES LESS THAN ('2032-09-01'), + PARTITION p203209 VALUES LESS THAN ('2032-10-01'), + PARTITION p203210 VALUES LESS THAN ('2032-11-01'), + PARTITION p203211 VALUES LESS THAN ('2032-12-01'), + PARTITION p203212 VALUES LESS THAN ('2033-01-01'), + PARTITION p203301 VALUES LESS THAN ('2033-02-01'), + PARTITION p203302 VALUES LESS THAN ('2033-03-01'), + PARTITION p203303 VALUES LESS THAN ('2033-04-01'), + PARTITION p203304 VALUES LESS THAN ('2033-05-01'), + PARTITION p203305 VALUES LESS THAN ('2033-06-01'), + PARTITION p203306 VALUES LESS THAN ('2033-07-01'), + PARTITION p203307 VALUES LESS THAN ('2033-08-01'), + PARTITION p203308 VALUES LESS THAN ('2033-09-01'), + PARTITION p203309 VALUES LESS THAN ('2033-10-01'), + PARTITION p203310 VALUES LESS THAN ('2033-11-01'), + PARTITION p203311 VALUES LESS THAN ('2033-12-01'), + PARTITION p203312 VALUES LESS THAN ('2034-01-01'), + PARTITION p203401 VALUES LESS THAN ('2034-02-01'), + PARTITION p203402 VALUES LESS THAN ('2034-03-01'), + PARTITION p203403 VALUES LESS THAN ('2034-04-01'), + PARTITION p203404 VALUES LESS THAN ('2034-05-01'), + PARTITION p203405 VALUES LESS THAN ('2034-06-01'), + PARTITION p203406 VALUES LESS THAN ('2034-07-01'), + PARTITION p203407 VALUES LESS THAN ('2034-08-01'), + PARTITION p203408 VALUES LESS THAN ('2034-09-01'), + PARTITION p203409 VALUES LESS THAN ('2034-10-01'), + PARTITION p203410 VALUES LESS THAN ('2034-11-01'), + PARTITION p203411 VALUES LESS THAN ('2034-12-01'), + PARTITION p203412 VALUES LESS THAN ('2035-01-01'), + PARTITION p203501 VALUES LESS THAN ('2035-02-01'), + PARTITION p203502 VALUES LESS THAN ('2035-03-01'), + PARTITION p203503 VALUES LESS THAN ('2035-04-01'), + PARTITION p203504 VALUES LESS THAN ('2035-05-01'), + PARTITION p203505 VALUES LESS THAN ('2035-06-01'), + PARTITION p203506 VALUES LESS THAN ('2035-07-01'), + PARTITION p203507 VALUES LESS THAN ('2035-08-01'), + PARTITION p203508 VALUES LESS THAN ('2035-09-01'), + PARTITION p203509 VALUES LESS THAN ('2035-10-01'), + PARTITION p203510 VALUES LESS THAN ('2035-11-01'), + PARTITION p203511 VALUES LESS THAN ('2035-12-01'), + PARTITION p203512 VALUES LESS THAN ('2036-01-01'), + PARTITION p_future VALUES LESS THAN (MAXVALUE) +); + diff --git a/smtERP-boot/src/main/resources/db/migration/V20260921_3__remove_asset_tenant_id.sql b/smtERP-boot/src/main/resources/db/migration/V20260921_3__remove_asset_tenant_id.sql new file mode 100644 index 0000000..7225296 --- /dev/null +++ b/smtERP-boot/src/main/resources/db/migration/V20260921_3__remove_asset_tenant_id.sql @@ -0,0 +1,186 @@ +SET NAMES utf8mb4; + +-- Remove legacy tenant indexes when upgrading an existing database. +SET @ddl := IF( + EXISTS(SELECT 1 FROM information_schema.statistics WHERE table_schema=DATABASE() AND table_name='tbl_asset' AND index_name='idx_asset_tenant_code'), + 'ALTER TABLE tbl_asset DROP INDEX idx_asset_tenant_code', + 'SELECT 1' +); +PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +SET @ddl := IF( + EXISTS(SELECT 1 FROM information_schema.statistics WHERE table_schema=DATABASE() AND table_name='tbl_asset' AND index_name='idx_asset_status'), + 'ALTER TABLE tbl_asset DROP INDEX idx_asset_status', + 'SELECT 1' +); +PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +SET @ddl := IF( + EXISTS(SELECT 1 FROM information_schema.statistics WHERE table_schema=DATABASE() AND table_name='tbl_asset_device' AND index_name='idx_asset_device_tenant_code'), + 'ALTER TABLE tbl_asset_device DROP INDEX idx_asset_device_tenant_code', + 'SELECT 1' +); +PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +SET @ddl := IF( + NOT EXISTS(SELECT 1 FROM information_schema.statistics WHERE table_schema=DATABASE() AND table_name='tbl_asset' AND index_name='idx_asset_status'), + 'ALTER TABLE tbl_asset ADD INDEX idx_asset_status (status)', + 'SELECT 1' +); +PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +SET @ddl := IF( + EXISTS(SELECT 1 FROM information_schema.statistics WHERE table_schema=DATABASE() AND table_name='tbl_asset_device' AND index_name='idx_asset_device_asset'), + 'ALTER TABLE tbl_asset_device DROP INDEX idx_asset_device_asset', + 'SELECT 1' +); +PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +SET @ddl := IF( + EXISTS(SELECT 1 FROM information_schema.statistics WHERE table_schema=DATABASE() AND table_name='tbl_asset_device' AND index_name='idx_asset_device_status'), + 'ALTER TABLE tbl_asset_device DROP INDEX idx_asset_device_status', + 'SELECT 1' +); +PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +SET @ddl := IF( + EXISTS(SELECT 1 FROM information_schema.statistics WHERE table_schema=DATABASE() AND table_name='tbl_asset_inventory' AND index_name='uk_asset_inventory_external'), + 'ALTER TABLE tbl_asset_inventory DROP INDEX uk_asset_inventory_external', + 'SELECT 1' +); +PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +SET @ddl := IF( + EXISTS(SELECT 1 FROM information_schema.statistics WHERE table_schema=DATABASE() AND table_name='tbl_asset_inventory' AND index_name='idx_asset_inventory_status'), + 'ALTER TABLE tbl_asset_inventory DROP INDEX idx_asset_inventory_status', + 'SELECT 1' +); +PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +SET @ddl := IF( + EXISTS(SELECT 1 FROM information_schema.statistics WHERE table_schema=DATABASE() AND table_name='tbl_asset_inventory_detail' AND index_name='idx_asset_inventory_detail_code'), + 'ALTER TABLE tbl_asset_inventory_detail DROP INDEX idx_asset_inventory_detail_code', + 'SELECT 1' +); +PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +SET @ddl := IF( + EXISTS(SELECT 1 FROM information_schema.statistics WHERE table_schema=DATABASE() AND table_name='tbl_asset_inventory_file' AND index_name='idx_asset_inventory_file_group'), + 'ALTER TABLE tbl_asset_inventory_file DROP INDEX idx_asset_inventory_file_group', + 'SELECT 1' +); +PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +SET @ddl := IF( + EXISTS(SELECT 1 FROM information_schema.statistics WHERE table_schema=DATABASE() AND table_name='tbl_asset_inventory_operation' AND index_name='idx_asset_inventory_operation'), + 'ALTER TABLE tbl_asset_inventory_operation DROP INDEX idx_asset_inventory_operation', + 'SELECT 1' +); +PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +-- Drop tenant columns from all asset-management tables. +SET @ddl := IF( + EXISTS(SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='tbl_asset' AND column_name='tenant_id'), + 'ALTER TABLE tbl_asset DROP COLUMN tenant_id', + 'SELECT 1' +); +PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +SET @ddl := IF( + EXISTS(SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='tbl_asset_device' AND column_name='tenant_id'), + 'ALTER TABLE tbl_asset_device DROP COLUMN tenant_id', + 'SELECT 1' +); +PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +SET @ddl := IF( + EXISTS(SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='tbl_asset_inventory' AND column_name='tenant_id'), + 'ALTER TABLE tbl_asset_inventory DROP COLUMN tenant_id', + 'SELECT 1' +); +PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +SET @ddl := IF( + EXISTS(SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='tbl_asset_inventory_detail' AND column_name='tenant_id'), + 'ALTER TABLE tbl_asset_inventory_detail DROP COLUMN tenant_id', + 'SELECT 1' +); +PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +SET @ddl := IF( + EXISTS(SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='tbl_asset_inventory_file' AND column_name='tenant_id'), + 'ALTER TABLE tbl_asset_inventory_file DROP COLUMN tenant_id', + 'SELECT 1' +); +PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +SET @ddl := IF( + EXISTS(SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='tbl_asset_inventory_operation' AND column_name='tenant_id'), + 'ALTER TABLE tbl_asset_inventory_operation DROP COLUMN tenant_id', + 'SELECT 1' +); +PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +-- Add replacement indexes that no longer include tenant_id. +SET @ddl := IF( + NOT EXISTS(SELECT 1 FROM information_schema.statistics WHERE table_schema=DATABASE() AND table_name='tbl_asset' AND index_name='idx_asset_code'), + 'ALTER TABLE tbl_asset ADD INDEX idx_asset_code (asset_code)', + 'SELECT 1' +); +PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +SET @ddl := IF( + NOT EXISTS(SELECT 1 FROM information_schema.statistics WHERE table_schema=DATABASE() AND table_name='tbl_asset_device' AND index_name='idx_asset_device_code'), + 'ALTER TABLE tbl_asset_device ADD INDEX idx_asset_device_code (device_code)', + 'SELECT 1' +); +PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +SET @ddl := IF( + NOT EXISTS(SELECT 1 FROM information_schema.statistics WHERE table_schema=DATABASE() AND table_name='tbl_asset_device' AND index_name='idx_asset_device_asset'), + 'ALTER TABLE tbl_asset_device ADD INDEX idx_asset_device_asset (asset_id)', + 'SELECT 1' +); +PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +SET @ddl := IF( + NOT EXISTS(SELECT 1 FROM information_schema.statistics WHERE table_schema=DATABASE() AND table_name='tbl_asset_device' AND index_name='idx_asset_device_status'), + 'ALTER TABLE tbl_asset_device ADD INDEX idx_asset_device_status (status)', + 'SELECT 1' +); +PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +SET @ddl := IF( + NOT EXISTS(SELECT 1 FROM information_schema.statistics WHERE table_schema=DATABASE() AND table_name='tbl_asset_inventory' AND index_name='uk_asset_inventory_external'), + 'ALTER TABLE tbl_asset_inventory ADD UNIQUE INDEX uk_asset_inventory_external (external_request_id)', + 'SELECT 1' +); +PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +SET @ddl := IF( + NOT EXISTS(SELECT 1 FROM information_schema.statistics WHERE table_schema=DATABASE() AND table_name='tbl_asset_inventory' AND index_name='idx_asset_inventory_status'), + 'ALTER TABLE tbl_asset_inventory ADD INDEX idx_asset_inventory_status (status)', + 'SELECT 1' +); +PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +SET @ddl := IF( + NOT EXISTS(SELECT 1 FROM information_schema.statistics WHERE table_schema=DATABASE() AND table_name='tbl_asset_inventory_detail' AND index_name='idx_asset_inventory_detail_code'), + 'ALTER TABLE tbl_asset_inventory_detail ADD INDEX idx_asset_inventory_detail_code (target_code)', + 'SELECT 1' +); +PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +SET @ddl := IF( + NOT EXISTS(SELECT 1 FROM information_schema.statistics WHERE table_schema=DATABASE() AND table_name='tbl_asset_inventory_file' AND index_name='idx_asset_inventory_file_group'), + 'ALTER TABLE tbl_asset_inventory_file ADD INDEX idx_asset_inventory_file_group (group_id)', + 'SELECT 1' +); +PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +SET @ddl := IF( + NOT EXISTS(SELECT 1 FROM information_schema.statistics WHERE table_schema=DATABASE() AND table_name='tbl_asset_inventory_operation' AND index_name='idx_asset_inventory_operation'), + 'ALTER TABLE tbl_asset_inventory_operation ADD INDEX idx_asset_inventory_operation (inventory_id, operate_time)', + 'SELECT 1' +); +PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt; diff --git a/smtERP-boot/src/main/resources/db/migration/V20260921__simplify_inventory_detail_status.sql b/smtERP-boot/src/main/resources/db/migration/V20260921__simplify_inventory_detail_status.sql new file mode 100644 index 0000000..f689cb4 --- /dev/null +++ b/smtERP-boot/src/main/resources/db/migration/V20260921__simplify_inventory_detail_status.sql @@ -0,0 +1,5 @@ +SET NAMES utf8mb4; + +UPDATE tbl_asset_inventory_detail +SET inventory_status='ABNORMAL', update_time=NOW() +WHERE inventory_status IN ('SURPLUS', 'SHORTAGE'); diff --git a/smtERP-boot/src/main/resources/db/migration/V20260928__asset_category_and_external_source.sql b/smtERP-boot/src/main/resources/db/migration/V20260928__asset_category_and_external_source.sql new file mode 100644 index 0000000..454f4f3 --- /dev/null +++ b/smtERP-boot/src/main/resources/db/migration/V20260928__asset_category_and_external_source.sql @@ -0,0 +1,92 @@ +SET NAMES utf8mb4; + +CREATE TABLE IF NOT EXISTS tbl_asset_category ( + id bigint(20) NOT NULL AUTO_INCREMENT, + category_code varchar(64) NOT NULL COMMENT '种类编码', + category_name varchar(100) NOT NULL COMMENT '种类名称', + description varchar(500) DEFAULT NULL COMMENT '种类说明', + sort int NOT NULL DEFAULT 100, + enabled bit(1) NOT NULL DEFAULT b'1', + creator bigint(20) DEFAULT NULL, + updater bigint(20) DEFAULT NULL, + delete_flag varchar(1) DEFAULT '0', + create_time datetime DEFAULT NULL, + update_time datetime DEFAULT NULL, + PRIMARY KEY (id), + UNIQUE KEY uk_asset_category_code (category_code), + UNIQUE KEY uk_asset_category_name (category_name), + KEY idx_asset_category_enabled (enabled, sort) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='资产种类'; + +SET @ddl := IF( + EXISTS(SELECT 1 FROM information_schema.tables WHERE table_schema=DATABASE() AND table_name='tbl_asset') + AND NOT EXISTS(SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='tbl_asset' AND column_name='category_id'), + 'ALTER TABLE tbl_asset ADD COLUMN category_id bigint(20) DEFAULT NULL COMMENT ''资产种类ID'' AFTER asset_name', + 'SELECT 1' +); +PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +SET @ddl := IF( + EXISTS(SELECT 1 FROM information_schema.tables WHERE table_schema=DATABASE() AND table_name='tbl_asset') + AND NOT EXISTS(SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='tbl_asset' AND column_name='external_source'), + 'ALTER TABLE tbl_asset ADD COLUMN external_source varchar(32) DEFAULT NULL COMMENT ''外部数据来源'' AFTER source', + 'SELECT 1' +); +PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +SET @ddl := IF( + EXISTS(SELECT 1 FROM information_schema.tables WHERE table_schema=DATABASE() AND table_name='tbl_asset') + AND NOT EXISTS(SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='tbl_asset' AND column_name='external_id'), + 'ALTER TABLE tbl_asset ADD COLUMN external_id varchar(64) DEFAULT NULL COMMENT ''外部数据ID'' AFTER external_source', + 'SELECT 1' +); +PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +INSERT INTO tbl_asset_category + (category_code,category_name,description,sort,enabled,delete_flag,create_time,update_time) +SELECT seed.category_code,seed.category_name,seed.description,seed.sort,b'1','0',NOW(),NOW() +FROM ( + SELECT 'UNCATEGORIZED' category_code,'未分类' category_name,'尚未归入具体种类的资产' description,10 sort + UNION ALL SELECT 'HARDWARE','硬件资产','从 Smart Asset System 硬件台账同步',20 + UNION ALL SELECT 'SOFTWARE','软件资产','从 Smart Asset System 软件台账同步',30 + UNION ALL SELECT 'SIM_CARD','SIM卡','从 Smart Asset System SIM 卡台账同步',40 +) seed +WHERE NOT EXISTS ( + SELECT 1 FROM tbl_asset_category c + WHERE c.category_code=seed.category_code OR c.category_name=seed.category_name +); + +INSERT INTO tbl_asset_category + (category_code,category_name,description,sort,enabled,delete_flag,create_time,update_time) +SELECT CONCAT('LEGACY_',UPPER(SUBSTRING(MD5(a.asset_category),1,12))), + a.asset_category,'由原资产分类字段自动迁移',100,b'1','0',NOW(),NOW() +FROM tbl_asset a +WHERE a.asset_category IS NOT NULL AND TRIM(a.asset_category)!='' +GROUP BY a.asset_category +HAVING NOT EXISTS ( + SELECT 1 FROM tbl_asset_category c WHERE c.category_name=a.asset_category +); + +UPDATE tbl_asset a +JOIN tbl_asset_category c ON c.category_name=a.asset_category +SET a.category_id=c.id +WHERE a.category_id IS NULL; + +UPDATE tbl_asset a +JOIN tbl_asset_category c ON c.category_code='UNCATEGORIZED' +SET a.category_id=c.id,a.asset_category=c.category_name +WHERE a.category_id IS NULL; + +SET @ddl := IF( + NOT EXISTS(SELECT 1 FROM information_schema.statistics WHERE table_schema=DATABASE() AND table_name='tbl_asset' AND index_name='idx_asset_category'), + 'ALTER TABLE tbl_asset ADD INDEX idx_asset_category (category_id)', + 'SELECT 1' +); +PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +SET @ddl := IF( + NOT EXISTS(SELECT 1 FROM information_schema.statistics WHERE table_schema=DATABASE() AND table_name='tbl_asset' AND index_name='uk_asset_external_source'), + 'ALTER TABLE tbl_asset ADD UNIQUE INDEX uk_asset_external_source (external_source,external_id)', + 'SELECT 1' +); +PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt; diff --git a/smtERP-boot/src/main/resources/db/migration/V20260929_2__asset_dashboard_menu.sql b/smtERP-boot/src/main/resources/db/migration/V20260929_2__asset_dashboard_menu.sql new file mode 100644 index 0000000..3772258 --- /dev/null +++ b/smtERP-boot/src/main/resources/db/migration/V20260929_2__asset_dashboard_menu.sql @@ -0,0 +1,13 @@ +SET NAMES utf8mb4; + +INSERT INTO tbl_function + (number, name, name_en, parent_number, url, component, state, sort, enabled, type, push_btn, icon, delete_flag) +SELECT '090200', '资产汇总', 'Asset Overview', '0902', '/asset', '/asset/AssetDashboard', b'0', '0490', b'1', '电脑版', '', 'dashboard', '0' +WHERE NOT EXISTS (SELECT 1 FROM tbl_function WHERE number='090200' OR url='/asset'); + +UPDATE tbl_user_business ub +JOIN tbl_role r ON r.id=CAST(ub.key_id AS UNSIGNED) +JOIN tbl_function f ON f.number='090200' +SET ub.value=CONCAT(IFNULL(ub.value,''), '[', f.id, ']') +WHERE ub.type='RoleFunctions' AND IFNULL(ub.delete_flag,'0')!='1' AND IFNULL(r.delete_flag,'0')!='1' + AND r.name IN ('admin','管理员') AND LOCATE(CONCAT('[',f.id,']'),IFNULL(ub.value,''))=0; diff --git a/smtERP-boot/src/main/resources/db/migration/V20260929__asset_datetime_precision.sql b/smtERP-boot/src/main/resources/db/migration/V20260929__asset_datetime_precision.sql new file mode 100644 index 0000000..b78182f --- /dev/null +++ b/smtERP-boot/src/main/resources/db/migration/V20260929__asset_datetime_precision.sql @@ -0,0 +1,7 @@ +-- 资产购置日期及设备保养日期需要保存到秒,避免 DATE 类型丢失时间部分。 +ALTER TABLE tbl_asset + MODIFY COLUMN purchase_date DATETIME NULL COMMENT '购置日期'; + +ALTER TABLE tbl_asset_device + MODIFY COLUMN purchase_date DATETIME NULL COMMENT '购置日期', + MODIFY COLUMN next_maintenance_date DATETIME NULL COMMENT '下次保养时间'; diff --git a/smtERP-boot/src/main/resources/i18n/messages_en_US.properties b/smtERP-boot/src/main/resources/i18n/messages_en_US.properties new file mode 100644 index 0000000..71817e4 --- /dev/null +++ b/smtERP-boot/src/main/resources/i18n/messages_en_US.properties @@ -0,0 +1,4 @@ +i18n.language=en-US +common.success=Operation successful +common.failure=Operation failed +common.menu=Menu diff --git a/smtERP-boot/src/main/resources/i18n/messages_zh_CN.properties b/smtERP-boot/src/main/resources/i18n/messages_zh_CN.properties new file mode 100644 index 0000000..b79f988 --- /dev/null +++ b/smtERP-boot/src/main/resources/i18n/messages_zh_CN.properties @@ -0,0 +1,4 @@ +i18n.language=zh-CN +common.success=操作成功 +common.failure=操作失败 +common.menu=菜单 diff --git a/smtERP-boot/src/main/resources/logback-spring.xml b/smtERP-boot/src/main/resources/logback-spring.xml new file mode 100644 index 0000000..a8a6d6c --- /dev/null +++ b/smtERP-boot/src/main/resources/logback-spring.xml @@ -0,0 +1,34 @@ + + + + + + + ${LOG_PATTERN} + + + + + ${LOG_FILE}.log + + ${LOG_PATTERN} + + + ${LOG_FILE}.%d{yyyy-MM-dd}.%i.log + 10 + 1GB + + 100MB + + + + + + + + + + + + + diff --git a/smtERP-boot/src/main/resources/mapper_xml/AccountHeadMapper.xml b/smtERP-boot/src/main/resources/mapper_xml/AccountHeadMapper.xml new file mode 100644 index 0000000..4ec1221 --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/AccountHeadMapper.xml @@ -0,0 +1,400 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + id, type, organ_id, hands_person_id, creator, change_amount, discount_money, total_price, + account_id, bill_no, bill_time, remark, file_name, status, source, tenant_id, delete_flag + + + + + delete from tbl_account_head + where id = #{id,jdbcType=BIGINT} + + + delete from tbl_account_head + + + + + + insert into tbl_account_head (id, type, organ_id, + hands_person_id, creator, change_amount, + discount_money, total_price, account_id, + bill_no, bill_time, remark, + file_name, status, source, + tenant_id, delete_flag) + values (#{id,jdbcType=BIGINT}, #{type,jdbcType=VARCHAR}, #{organId,jdbcType=BIGINT}, + #{handsPersonId,jdbcType=BIGINT}, #{creator,jdbcType=BIGINT}, #{changeAmount,jdbcType=DECIMAL}, + #{discountMoney,jdbcType=DECIMAL}, #{totalPrice,jdbcType=DECIMAL}, #{accountId,jdbcType=BIGINT}, + #{billNo,jdbcType=VARCHAR}, #{billTime,jdbcType=TIMESTAMP}, #{remark,jdbcType=VARCHAR}, + #{fileName,jdbcType=VARCHAR}, #{status,jdbcType=VARCHAR}, #{source,jdbcType=VARCHAR}, + #{tenantId,jdbcType=BIGINT}, #{deleteFlag,jdbcType=VARCHAR}) + + + insert into tbl_account_head + + + id, + + + type, + + + organ_id, + + + hands_person_id, + + + creator, + + + change_amount, + + + discount_money, + + + total_price, + + + account_id, + + + bill_no, + + + bill_time, + + + remark, + + + file_name, + + + status, + + + source, + + + tenant_id, + + + delete_flag, + + + + + #{id,jdbcType=BIGINT}, + + + #{type,jdbcType=VARCHAR}, + + + #{organId,jdbcType=BIGINT}, + + + #{handsPersonId,jdbcType=BIGINT}, + + + #{creator,jdbcType=BIGINT}, + + + #{changeAmount,jdbcType=DECIMAL}, + + + #{discountMoney,jdbcType=DECIMAL}, + + + #{totalPrice,jdbcType=DECIMAL}, + + + #{accountId,jdbcType=BIGINT}, + + + #{billNo,jdbcType=VARCHAR}, + + + #{billTime,jdbcType=TIMESTAMP}, + + + #{remark,jdbcType=VARCHAR}, + + + #{fileName,jdbcType=VARCHAR}, + + + #{status,jdbcType=VARCHAR}, + + + #{source,jdbcType=VARCHAR}, + + + #{tenantId,jdbcType=BIGINT}, + + + #{deleteFlag,jdbcType=VARCHAR}, + + + + + + update tbl_account_head + + + id = #{record.id,jdbcType=BIGINT}, + + + type = #{record.type,jdbcType=VARCHAR}, + + + organ_id = #{record.organId,jdbcType=BIGINT}, + + + hands_person_id = #{record.handsPersonId,jdbcType=BIGINT}, + + + creator = #{record.creator,jdbcType=BIGINT}, + + + change_amount = #{record.changeAmount,jdbcType=DECIMAL}, + + + discount_money = #{record.discountMoney,jdbcType=DECIMAL}, + + + total_price = #{record.totalPrice,jdbcType=DECIMAL}, + + + account_id = #{record.accountId,jdbcType=BIGINT}, + + + bill_no = #{record.billNo,jdbcType=VARCHAR}, + + + bill_time = #{record.billTime,jdbcType=TIMESTAMP}, + + + remark = #{record.remark,jdbcType=VARCHAR}, + + + file_name = #{record.fileName,jdbcType=VARCHAR}, + + + status = #{record.status,jdbcType=VARCHAR}, + + + source = #{record.source,jdbcType=VARCHAR}, + + + tenant_id = #{record.tenantId,jdbcType=BIGINT}, + + + delete_flag = #{record.deleteFlag,jdbcType=VARCHAR}, + + + + + + + + update tbl_account_head + set id = #{record.id,jdbcType=BIGINT}, + type = #{record.type,jdbcType=VARCHAR}, + organ_id = #{record.organId,jdbcType=BIGINT}, + hands_person_id = #{record.handsPersonId,jdbcType=BIGINT}, + creator = #{record.creator,jdbcType=BIGINT}, + change_amount = #{record.changeAmount,jdbcType=DECIMAL}, + discount_money = #{record.discountMoney,jdbcType=DECIMAL}, + total_price = #{record.totalPrice,jdbcType=DECIMAL}, + account_id = #{record.accountId,jdbcType=BIGINT}, + bill_no = #{record.billNo,jdbcType=VARCHAR}, + bill_time = #{record.billTime,jdbcType=TIMESTAMP}, + remark = #{record.remark,jdbcType=VARCHAR}, + file_name = #{record.fileName,jdbcType=VARCHAR}, + status = #{record.status,jdbcType=VARCHAR}, + source = #{record.source,jdbcType=VARCHAR}, + tenant_id = #{record.tenantId,jdbcType=BIGINT}, + delete_flag = #{record.deleteFlag,jdbcType=VARCHAR} + + + + + + update tbl_account_head + + + type = #{type,jdbcType=VARCHAR}, + + + organ_id = #{organId,jdbcType=BIGINT}, + + + hands_person_id = #{handsPersonId,jdbcType=BIGINT}, + + + creator = #{creator,jdbcType=BIGINT}, + + + change_amount = #{changeAmount,jdbcType=DECIMAL}, + + + discount_money = #{discountMoney,jdbcType=DECIMAL}, + + + total_price = #{totalPrice,jdbcType=DECIMAL}, + + + account_id = #{accountId,jdbcType=BIGINT}, + + + bill_no = #{billNo,jdbcType=VARCHAR}, + + + bill_time = #{billTime,jdbcType=TIMESTAMP}, + + + remark = #{remark,jdbcType=VARCHAR}, + + + file_name = #{fileName,jdbcType=VARCHAR}, + + + status = #{status,jdbcType=VARCHAR}, + + + source = #{source,jdbcType=VARCHAR}, + + + tenant_id = #{tenantId,jdbcType=BIGINT}, + + + delete_flag = #{deleteFlag,jdbcType=VARCHAR}, + + + where id = #{id,jdbcType=BIGINT} + + + update tbl_account_head + set type = #{type,jdbcType=VARCHAR}, + organ_id = #{organId,jdbcType=BIGINT}, + hands_person_id = #{handsPersonId,jdbcType=BIGINT}, + creator = #{creator,jdbcType=BIGINT}, + change_amount = #{changeAmount,jdbcType=DECIMAL}, + discount_money = #{discountMoney,jdbcType=DECIMAL}, + total_price = #{totalPrice,jdbcType=DECIMAL}, + account_id = #{accountId,jdbcType=BIGINT}, + bill_no = #{billNo,jdbcType=VARCHAR}, + bill_time = #{billTime,jdbcType=TIMESTAMP}, + remark = #{remark,jdbcType=VARCHAR}, + file_name = #{fileName,jdbcType=VARCHAR}, + status = #{status,jdbcType=VARCHAR}, + source = #{source,jdbcType=VARCHAR}, + tenant_id = #{tenantId,jdbcType=BIGINT}, + delete_flag = #{deleteFlag,jdbcType=VARCHAR} + where id = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/smtERP-boot/src/main/resources/mapper_xml/AccountHeadMapperEx.xml b/smtERP-boot/src/main/resources/mapper_xml/AccountHeadMapperEx.xml new file mode 100644 index 0000000..ca5f596 --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/AccountHeadMapperEx.xml @@ -0,0 +1,179 @@ + + + + + + + + + + + + + + + + + + + + update tbl_account_head + set delete_flag='1' + where 1=1 + and id in ( + + #{id} + + ) + + + + + + + + + + + diff --git a/smtERP-boot/src/main/resources/mapper_xml/AccountItemMapper.xml b/smtERP-boot/src/main/resources/mapper_xml/AccountItemMapper.xml new file mode 100644 index 0000000..0182e6b --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/AccountItemMapper.xml @@ -0,0 +1,306 @@ + + + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + id, header_id, account_id, in_out_item_id, bill_id, need_debt, finish_debt, each_amount, + remark, tenant_id, delete_flag + + + + + delete from tbl_account_item + where id = #{id,jdbcType=BIGINT} + + + delete from tbl_account_item + + + + + + insert into tbl_account_item (id, header_id, account_id, + in_out_item_id, bill_id, need_debt, + finish_debt, each_amount, remark, + tenant_id, delete_flag) + values (#{id,jdbcType=BIGINT}, #{headerId,jdbcType=BIGINT}, #{accountId,jdbcType=BIGINT}, + #{inOutItemId,jdbcType=BIGINT}, #{billId,jdbcType=BIGINT}, #{needDebt,jdbcType=DECIMAL}, + #{finishDebt,jdbcType=DECIMAL}, #{eachAmount,jdbcType=DECIMAL}, #{remark,jdbcType=VARCHAR}, + #{tenantId,jdbcType=BIGINT}, #{deleteFlag,jdbcType=VARCHAR}) + + + insert into tbl_account_item + + + id, + + + header_id, + + + account_id, + + + in_out_item_id, + + + bill_id, + + + need_debt, + + + finish_debt, + + + each_amount, + + + remark, + + + tenant_id, + + + delete_flag, + + + + + #{id,jdbcType=BIGINT}, + + + #{headerId,jdbcType=BIGINT}, + + + #{accountId,jdbcType=BIGINT}, + + + #{inOutItemId,jdbcType=BIGINT}, + + + #{billId,jdbcType=BIGINT}, + + + #{needDebt,jdbcType=DECIMAL}, + + + #{finishDebt,jdbcType=DECIMAL}, + + + #{eachAmount,jdbcType=DECIMAL}, + + + #{remark,jdbcType=VARCHAR}, + + + #{tenantId,jdbcType=BIGINT}, + + + #{deleteFlag,jdbcType=VARCHAR}, + + + + + + update tbl_account_item + + + id = #{record.id,jdbcType=BIGINT}, + + + header_id = #{record.headerId,jdbcType=BIGINT}, + + + account_id = #{record.accountId,jdbcType=BIGINT}, + + + in_out_item_id = #{record.inOutItemId,jdbcType=BIGINT}, + + + bill_id = #{record.billId,jdbcType=BIGINT}, + + + need_debt = #{record.needDebt,jdbcType=DECIMAL}, + + + finish_debt = #{record.finishDebt,jdbcType=DECIMAL}, + + + each_amount = #{record.eachAmount,jdbcType=DECIMAL}, + + + remark = #{record.remark,jdbcType=VARCHAR}, + + + tenant_id = #{record.tenantId,jdbcType=BIGINT}, + + + delete_flag = #{record.deleteFlag,jdbcType=VARCHAR}, + + + + + + + + update tbl_account_item + set id = #{record.id,jdbcType=BIGINT}, + header_id = #{record.headerId,jdbcType=BIGINT}, + account_id = #{record.accountId,jdbcType=BIGINT}, + in_out_item_id = #{record.inOutItemId,jdbcType=BIGINT}, + bill_id = #{record.billId,jdbcType=BIGINT}, + need_debt = #{record.needDebt,jdbcType=DECIMAL}, + finish_debt = #{record.finishDebt,jdbcType=DECIMAL}, + each_amount = #{record.eachAmount,jdbcType=DECIMAL}, + remark = #{record.remark,jdbcType=VARCHAR}, + tenant_id = #{record.tenantId,jdbcType=BIGINT}, + delete_flag = #{record.deleteFlag,jdbcType=VARCHAR} + + + + + + update tbl_account_item + + + header_id = #{headerId,jdbcType=BIGINT}, + + + account_id = #{accountId,jdbcType=BIGINT}, + + + in_out_item_id = #{inOutItemId,jdbcType=BIGINT}, + + + bill_id = #{billId,jdbcType=BIGINT}, + + + need_debt = #{needDebt,jdbcType=DECIMAL}, + + + finish_debt = #{finishDebt,jdbcType=DECIMAL}, + + + each_amount = #{eachAmount,jdbcType=DECIMAL}, + + + remark = #{remark,jdbcType=VARCHAR}, + + + tenant_id = #{tenantId,jdbcType=BIGINT}, + + + delete_flag = #{deleteFlag,jdbcType=VARCHAR}, + + + where id = #{id,jdbcType=BIGINT} + + + update tbl_account_item + set header_id = #{headerId,jdbcType=BIGINT}, + account_id = #{accountId,jdbcType=BIGINT}, + in_out_item_id = #{inOutItemId,jdbcType=BIGINT}, + bill_id = #{billId,jdbcType=BIGINT}, + need_debt = #{needDebt,jdbcType=DECIMAL}, + finish_debt = #{finishDebt,jdbcType=DECIMAL}, + each_amount = #{eachAmount,jdbcType=DECIMAL}, + remark = #{remark,jdbcType=VARCHAR}, + tenant_id = #{tenantId,jdbcType=BIGINT}, + delete_flag = #{deleteFlag,jdbcType=VARCHAR} + where id = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/smtERP-boot/src/main/resources/mapper_xml/AccountItemMapperEx.xml b/smtERP-boot/src/main/resources/mapper_xml/AccountItemMapperEx.xml new file mode 100644 index 0000000..3f2e06d --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/AccountItemMapperEx.xml @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + + update tbl_account_item + set delete_flag='1' + where 1=1 + and id in ( + + #{id} + + ) + + + + + + + update tbl_account_item + set delete_flag='1' + where 1=1 + and header_id in ( + + #{id} + + ) + + + + + + \ No newline at end of file diff --git a/smtERP-boot/src/main/resources/mapper_xml/AccountMapper.xml b/smtERP-boot/src/main/resources/mapper_xml/AccountMapper.xml new file mode 100644 index 0000000..0a320de --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/AccountMapper.xml @@ -0,0 +1,306 @@ + + + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + id, name, serial_no, initial_amount, current_amount, remark, enabled, sort, is_default, + tenant_id, delete_flag + + + + + delete from tbl_account + where id = #{id,jdbcType=BIGINT} + + + delete from tbl_account + + + + + + insert into tbl_account (id, name, serial_no, + initial_amount, current_amount, remark, + enabled, sort, is_default, tenant_id, + delete_flag) + values (#{id,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR}, #{serialNo,jdbcType=VARCHAR}, + #{initialAmount,jdbcType=DECIMAL}, #{currentAmount,jdbcType=DECIMAL}, #{remark,jdbcType=VARCHAR}, + #{enabled,jdbcType=BIT}, #{sort,jdbcType=VARCHAR}, #{isDefault,jdbcType=BIT}, #{tenantId,jdbcType=BIGINT}, + #{deleteFlag,jdbcType=VARCHAR}) + + + insert into tbl_account + + + id, + + + name, + + + serial_no, + + + initial_amount, + + + current_amount, + + + remark, + + + enabled, + + + sort, + + + is_default, + + + tenant_id, + + + delete_flag, + + + + + #{id,jdbcType=BIGINT}, + + + #{name,jdbcType=VARCHAR}, + + + #{serialNo,jdbcType=VARCHAR}, + + + #{initialAmount,jdbcType=DECIMAL}, + + + #{currentAmount,jdbcType=DECIMAL}, + + + #{remark,jdbcType=VARCHAR}, + + + #{enabled,jdbcType=BIT}, + + + #{sort,jdbcType=VARCHAR}, + + + #{isDefault,jdbcType=BIT}, + + + #{tenantId,jdbcType=BIGINT}, + + + #{deleteFlag,jdbcType=VARCHAR}, + + + + + + update tbl_account + + + id = #{record.id,jdbcType=BIGINT}, + + + name = #{record.name,jdbcType=VARCHAR}, + + + serial_no = #{record.serialNo,jdbcType=VARCHAR}, + + + initial_amount = #{record.initialAmount,jdbcType=DECIMAL}, + + + current_amount = #{record.currentAmount,jdbcType=DECIMAL}, + + + remark = #{record.remark,jdbcType=VARCHAR}, + + + enabled = #{record.enabled,jdbcType=BIT}, + + + sort = #{record.sort,jdbcType=VARCHAR}, + + + is_default = #{record.isDefault,jdbcType=BIT}, + + + tenant_id = #{record.tenantId,jdbcType=BIGINT}, + + + delete_flag = #{record.deleteFlag,jdbcType=VARCHAR}, + + + + + + + + update tbl_account + set id = #{record.id,jdbcType=BIGINT}, + name = #{record.name,jdbcType=VARCHAR}, + serial_no = #{record.serialNo,jdbcType=VARCHAR}, + initial_amount = #{record.initialAmount,jdbcType=DECIMAL}, + current_amount = #{record.currentAmount,jdbcType=DECIMAL}, + remark = #{record.remark,jdbcType=VARCHAR}, + enabled = #{record.enabled,jdbcType=BIT}, + sort = #{record.sort,jdbcType=VARCHAR}, + is_default = #{record.isDefault,jdbcType=BIT}, + tenant_id = #{record.tenantId,jdbcType=BIGINT}, + delete_flag = #{record.deleteFlag,jdbcType=VARCHAR} + + + + + + update tbl_account + + + name = #{name,jdbcType=VARCHAR}, + + + serial_no = #{serialNo,jdbcType=VARCHAR}, + + + initial_amount = #{initialAmount,jdbcType=DECIMAL}, + + + current_amount = #{currentAmount,jdbcType=DECIMAL}, + + + remark = #{remark,jdbcType=VARCHAR}, + + + enabled = #{enabled,jdbcType=BIT}, + + + sort = #{sort,jdbcType=VARCHAR}, + + + is_default = #{isDefault,jdbcType=BIT}, + + + tenant_id = #{tenantId,jdbcType=BIGINT}, + + + delete_flag = #{deleteFlag,jdbcType=VARCHAR}, + + + where id = #{id,jdbcType=BIGINT} + + + update tbl_account + set name = #{name,jdbcType=VARCHAR}, + serial_no = #{serialNo,jdbcType=VARCHAR}, + initial_amount = #{initialAmount,jdbcType=DECIMAL}, + current_amount = #{currentAmount,jdbcType=DECIMAL}, + remark = #{remark,jdbcType=VARCHAR}, + enabled = #{enabled,jdbcType=BIT}, + sort = #{sort,jdbcType=VARCHAR}, + is_default = #{isDefault,jdbcType=BIT}, + tenant_id = #{tenantId,jdbcType=BIGINT}, + delete_flag = #{deleteFlag,jdbcType=VARCHAR} + where id = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/smtERP-boot/src/main/resources/mapper_xml/AccountMapperEx.xml b/smtERP-boot/src/main/resources/mapper_xml/AccountMapperEx.xml new file mode 100644 index 0000000..655e782 --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/AccountMapperEx.xml @@ -0,0 +1,510 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + update tbl_account + set delete_flag='1' + where 1=1 + and id in ( + + #{id} + + ) + + \ No newline at end of file diff --git a/smtERP-boot/src/main/resources/mapper_xml/AssetManagementMapper.xml b/smtERP-boot/src/main/resources/mapper_xml/AssetManagementMapper.xml new file mode 100644 index 0000000..417af31 --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/AssetManagementMapper.xml @@ -0,0 +1,438 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + INSERT INTO tbl_asset (asset_code, asset_name, category_id, asset_category, specification, unit, quantity, original_value, + purchase_date, use_department, keeper, location, status, source, external_source, external_id, + remark, creator, delete_flag, create_time, update_time) + VALUES (#{assetCode}, #{assetName}, #{categoryId}, #{assetCategory}, #{specification}, #{unit}, #{quantity}, #{originalValue}, + #{purchaseDate}, #{useDepartment}, #{keeper}, #{location}, #{status}, #{source}, #{externalSource}, #{externalId}, + #{remark}, #{creator}, '0', NOW(), NOW()) + + + UPDATE tbl_asset SET asset_code=#{assetCode}, asset_name=#{assetName}, category_id=#{categoryId}, + asset_category=#{assetCategory}, + specification=#{specification}, unit=#{unit}, quantity=#{quantity}, original_value=#{originalValue}, + purchase_date=#{purchaseDate}, use_department=#{useDepartment}, keeper=#{keeper}, location=#{location}, + status=#{status}, source=#{source}, remark=#{remark}, updater=#{updater}, update_time=NOW() + WHERE id=#{id} AND IFNULL(delete_flag, '0') != '1' + + + UPDATE tbl_asset SET delete_flag='1', updater=#{userId}, update_time=NOW() + WHERE id=#{id} AND IFNULL(delete_flag, '0') != '1' + + + + + + + + + INSERT INTO tbl_asset_category + (category_code,category_name,description,sort,enabled,creator,delete_flag,create_time,update_time) + VALUES + (#{categoryCode},#{categoryName},#{description},#{sort},#{enabled},#{creator},'0',NOW(),NOW()) + + + UPDATE tbl_asset_category + SET category_code=#{categoryCode},category_name=#{categoryName},description=#{description}, + sort=#{sort},enabled=#{enabled},updater=#{updater},update_time=NOW() + WHERE id=#{id} AND IFNULL(delete_flag,'0')!='1' + + + UPDATE tbl_asset_category + SET delete_flag='1',updater=#{userId},update_time=NOW() + WHERE id=#{id} AND IFNULL(delete_flag,'0')!='1' + + + + + + + + INSERT INTO tbl_asset_device (asset_id, device_code, device_name, device_category, model, serial_number, manufacturer, + purchase_date, enabled_date, use_department, keeper, location, status, next_maintenance_date, remark, + creator, delete_flag, create_time, update_time) + VALUES (#{assetId}, #{deviceCode}, #{deviceName}, #{deviceCategory}, #{model}, #{serialNumber}, #{manufacturer}, + #{purchaseDate}, #{enabledDate}, #{useDepartment}, #{keeper}, #{location}, #{status}, #{nextMaintenanceDate}, #{remark}, + #{creator}, '0', NOW(), NOW()) + + + UPDATE tbl_asset_device SET asset_id=#{assetId}, device_code=#{deviceCode}, device_name=#{deviceName}, + device_category=#{deviceCategory}, model=#{model}, serial_number=#{serialNumber}, manufacturer=#{manufacturer}, + purchase_date=#{purchaseDate}, enabled_date=#{enabledDate}, use_department=#{useDepartment}, keeper=#{keeper}, + location=#{location}, status=#{status}, next_maintenance_date=#{nextMaintenanceDate}, remark=#{remark}, + updater=#{updater}, update_time=NOW() + WHERE id=#{id} AND IFNULL(delete_flag,'0')!='1' + + + UPDATE tbl_asset_device SET delete_flag='1', updater=#{userId}, update_time=NOW() + WHERE id=#{id} AND IFNULL(delete_flag,'0')!='1' + + + + + + + + + + INSERT INTO tbl_asset_inventory (inventory_no, plan_name, scope_type, planned_at, deadline, status, total_count, + inventoried_count, normal_count, abnormal_count, inventory_user_id, inventory_user_name, started_at, completed_at, + audit_user_id, audit_time, source, external_request_id, remark, creator, delete_flag, create_time, update_time) + VALUES (#{inventoryNo}, #{planName}, #{scopeType}, #{plannedAt}, #{deadline}, #{status}, #{totalCount}, + #{inventoriedCount}, #{normalCount}, #{abnormalCount}, #{inventoryUserId}, #{inventoryUserName}, #{startedAt}, #{completedAt}, + #{auditUserId}, #{auditTime}, #{source}, #{externalRequestId}, #{remark}, #{creator}, '0', NOW(), NOW()) + + + UPDATE tbl_asset_inventory SET plan_name=#{planName}, scope_type=#{scopeType}, planned_at=#{plannedAt}, + deadline=#{deadline}, status=#{status}, total_count=#{totalCount}, inventoried_count=#{inventoriedCount}, + normal_count=#{normalCount}, abnormal_count=#{abnormalCount}, inventory_user_id=#{inventoryUserId}, + inventory_user_name=#{inventoryUserName}, started_at=#{startedAt}, completed_at=#{completedAt}, + audit_user_id=#{auditUserId}, audit_time=#{auditTime}, remark=#{remark}, updater=#{updater}, update_time=NOW() + WHERE id=#{id} AND IFNULL(delete_flag,'0')!='1' + + + UPDATE tbl_asset_inventory SET delete_flag='1', updater=#{userId}, update_time=NOW() + WHERE id=#{id} AND status='DRAFT' AND IFNULL(delete_flag,'0')!='1' + + + + + + + INSERT INTO tbl_asset_inventory_detail (inventory_id, target_type, target_id, target_code, target_name, model, + book_quantity, actual_quantity, inventory_status, book_department, actual_department, book_location, + actual_location, inventory_time, inventory_user_id, inventory_user_name, remark, create_time, update_time) + VALUES (#{inventoryId}, #{targetType}, #{targetId}, #{targetCode}, #{targetName}, #{model}, + #{bookQuantity}, #{actualQuantity}, #{inventoryStatus}, #{bookDepartment}, #{actualDepartment}, #{bookLocation}, + #{actualLocation}, #{inventoryTime}, #{inventoryUserId}, #{inventoryUserName}, #{remark}, NOW(), NOW()) + + + UPDATE tbl_asset_inventory_detail SET actual_quantity=#{actualQuantity}, inventory_status=#{inventoryStatus}, + actual_department=#{actualDepartment}, actual_location=#{actualLocation}, inventory_time=#{inventoryTime}, + inventory_user_id=#{inventoryUserId}, inventory_user_name=#{inventoryUserName}, remark=#{remark}, update_time=NOW() + WHERE id=#{id} AND inventory_id=#{inventoryId} + + + + UPDATE tbl_asset_device SET last_inventory_time=NOW(), update_time=NOW() + WHERE id=#{deviceId} AND IFNULL(delete_flag,'0')!='1' + + + + diff --git a/smtERP-boot/src/main/resources/mapper_xml/CustomerCategoryMapper.xml b/smtERP-boot/src/main/resources/mapper_xml/CustomerCategoryMapper.xml new file mode 100644 index 0000000..14d296a --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/CustomerCategoryMapper.xml @@ -0,0 +1,183 @@ + + + + + + + + + + + + + + + + + + + + id, category_name, parent_id, level, sort, description, enabled, creator, tenant_id, delete_flag, create_time, update_time + + + + + + delete from tbl_customer_category + where id = #{id,jdbcType=BIGINT} + + + + insert into jsh_customer_category (category_name, parent_id, level, + sort, description, enabled, + creator, tenant_id, delete_flag, + create_time, update_time) + values (#{categoryName,jdbcType=VARCHAR}, #{parentId,jdbcType=BIGINT}, #{level,jdbcType=INTEGER}, + #{sort,jdbcType=VARCHAR}, #{description,jdbcType=VARCHAR}, #{enabled,jdbcType=BIT}, + #{creator,jdbcType=BIGINT}, #{tenantId,jdbcType=BIGINT}, #{deleteFlag,jdbcType=VARCHAR}, + #{createTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}) + + + + insert into tbl_customer_category + + + category_name, + + + parent_id, + + + level, + + + sort, + + + description, + + + enabled, + + + creator, + + + tenant_id, + + + delete_flag, + + + create_time, + + + update_time, + + + + + #{categoryName,jdbcType=VARCHAR}, + + + #{parentId,jdbcType=BIGINT}, + + + #{level,jdbcType=INTEGER}, + + + #{sort,jdbcType=VARCHAR}, + + + #{description,jdbcType=VARCHAR}, + + + #{enabled,jdbcType=BIT}, + + + #{creator,jdbcType=BIGINT}, + + + #{tenantId,jdbcType=BIGINT}, + + + #{deleteFlag,jdbcType=VARCHAR}, + + + #{createTime,jdbcType=TIMESTAMP}, + + + #{updateTime,jdbcType=TIMESTAMP}, + + + + + + update tbl_customer_category + + + category_name = #{categoryName,jdbcType=VARCHAR}, + + + parent_id = #{parentId,jdbcType=BIGINT}, + + + level = #{level,jdbcType=INTEGER}, + + + sort = #{sort,jdbcType=VARCHAR}, + + + description = #{description,jdbcType=VARCHAR}, + + + enabled = #{enabled,jdbcType=BIT}, + + + creator = #{creator,jdbcType=BIGINT}, + + + tenant_id = #{tenantId,jdbcType=BIGINT}, + + + delete_flag = #{deleteFlag,jdbcType=VARCHAR}, + + + create_time = #{createTime,jdbcType=TIMESTAMP}, + + + update_time = #{updateTime,jdbcType=TIMESTAMP}, + + + where id = #{id,jdbcType=BIGINT} + + + + update tbl_customer_category + set category_name = #{categoryName,jdbcType=VARCHAR}, + parent_id = #{parentId,jdbcType=BIGINT}, + level = #{level,jdbcType=INTEGER}, + sort = #{sort,jdbcType=VARCHAR}, + description = #{description,jdbcType=VARCHAR}, + enabled = #{enabled,jdbcType=BIT}, + creator = #{creator,jdbcType=BIGINT}, + tenant_id = #{tenantId,jdbcType=BIGINT}, + delete_flag = #{deleteFlag,jdbcType=VARCHAR}, + create_time = #{createTime,jdbcType=TIMESTAMP}, + update_time = #{updateTime,jdbcType=TIMESTAMP} + where id = #{id,jdbcType=BIGINT} + + + + diff --git a/smtERP-boot/src/main/resources/mapper_xml/CustomerCategoryMapperEx.xml b/smtERP-boot/src/main/resources/mapper_xml/CustomerCategoryMapperEx.xml new file mode 100644 index 0000000..258b71b --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/CustomerCategoryMapperEx.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + update tbl_customer_category + set delete_flag='1', update_time = NOW() + where id in ( + + #{id} + + ) + + + + + diff --git a/smtERP-boot/src/main/resources/mapper_xml/CustomerContactMapper.xml b/smtERP-boot/src/main/resources/mapper_xml/CustomerContactMapper.xml new file mode 100644 index 0000000..cc9bcc9 --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/CustomerContactMapper.xml @@ -0,0 +1,231 @@ + + + + + + + + + + + + + + + + + + + + + + + + id, customer_id, contact_name, position, phone, telephone, email, wechat, qq, is_primary, + remark, creator, tenant_id, delete_flag, create_time, update_time + + + + + + delete from tbl_customer_contact + where id = #{id,jdbcType=BIGINT} + + + + insert into jsh_customer_contact (customer_id, contact_name, position, + phone, telephone, email, + wechat, qq, is_primary, + remark, creator, tenant_id, + delete_flag, create_time, update_time) + values (#{customerId,jdbcType=BIGINT}, #{contactName,jdbcType=VARCHAR}, #{position,jdbcType=VARCHAR}, + #{phone,jdbcType=VARCHAR}, #{telephone,jdbcType=VARCHAR}, #{email,jdbcType=VARCHAR}, + #{wechat,jdbcType=VARCHAR}, #{qq,jdbcType=VARCHAR}, #{isPrimary,jdbcType=BIT}, + #{remark,jdbcType=VARCHAR}, #{creator,jdbcType=BIGINT}, #{tenantId,jdbcType=BIGINT}, + #{deleteFlag,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}) + + + + insert into tbl_customer_contact + + + customer_id, + + + contact_name, + + + position, + + + phone, + + + telephone, + + + email, + + + wechat, + + + qq, + + + is_primary, + + + remark, + + + creator, + + + tenant_id, + + + delete_flag, + + + create_time, + + + update_time, + + + + + #{customerId,jdbcType=BIGINT}, + + + #{contactName,jdbcType=VARCHAR}, + + + #{position,jdbcType=VARCHAR}, + + + #{phone,jdbcType=VARCHAR}, + + + #{telephone,jdbcType=VARCHAR}, + + + #{email,jdbcType=VARCHAR}, + + + #{wechat,jdbcType=VARCHAR}, + + + #{qq,jdbcType=VARCHAR}, + + + #{isPrimary,jdbcType=BIT}, + + + #{remark,jdbcType=VARCHAR}, + + + #{creator,jdbcType=BIGINT}, + + + #{tenantId,jdbcType=BIGINT}, + + + #{deleteFlag,jdbcType=VARCHAR}, + + + #{createTime,jdbcType=TIMESTAMP}, + + + #{updateTime,jdbcType=TIMESTAMP}, + + + + + + update tbl_customer_contact + + + customer_id = #{customerId,jdbcType=BIGINT}, + + + contact_name = #{contactName,jdbcType=VARCHAR}, + + + position = #{position,jdbcType=VARCHAR}, + + + phone = #{phone,jdbcType=VARCHAR}, + + + telephone = #{telephone,jdbcType=VARCHAR}, + + + email = #{email,jdbcType=VARCHAR}, + + + wechat = #{wechat,jdbcType=VARCHAR}, + + + qq = #{qq,jdbcType=VARCHAR}, + + + is_primary = #{isPrimary,jdbcType=BIT}, + + + remark = #{remark,jdbcType=VARCHAR}, + + + creator = #{creator,jdbcType=BIGINT}, + + + tenant_id = #{tenantId,jdbcType=BIGINT}, + + + delete_flag = #{deleteFlag,jdbcType=VARCHAR}, + + + create_time = #{createTime,jdbcType=TIMESTAMP}, + + + update_time = #{updateTime,jdbcType=TIMESTAMP}, + + + where id = #{id,jdbcType=BIGINT} + + + + update tbl_customer_contact + set customer_id = #{customerId,jdbcType=BIGINT}, + contact_name = #{contactName,jdbcType=VARCHAR}, + position = #{position,jdbcType=VARCHAR}, + phone = #{phone,jdbcType=VARCHAR}, + telephone = #{telephone,jdbcType=VARCHAR}, + email = #{email,jdbcType=VARCHAR}, + wechat = #{wechat,jdbcType=VARCHAR}, + qq = #{qq,jdbcType=VARCHAR}, + is_primary = #{isPrimary,jdbcType=BIT}, + remark = #{remark,jdbcType=VARCHAR}, + creator = #{creator,jdbcType=BIGINT}, + tenant_id = #{tenantId,jdbcType=BIGINT}, + delete_flag = #{deleteFlag,jdbcType=VARCHAR}, + create_time = #{createTime,jdbcType=TIMESTAMP}, + update_time = #{updateTime,jdbcType=TIMESTAMP} + where id = #{id,jdbcType=BIGINT} + + + + diff --git a/smtERP-boot/src/main/resources/mapper_xml/CustomerContactMapperEx.xml b/smtERP-boot/src/main/resources/mapper_xml/CustomerContactMapperEx.xml new file mode 100644 index 0000000..c48c5c9 --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/CustomerContactMapperEx.xml @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + update tbl_customer_contact + set delete_flag='1', update_time = NOW() + where id in ( + + #{id} + + ) + + + + update tbl_customer_contact + set delete_flag='1', update_time = NOW() + where customer_id = #{customerId} + + + diff --git a/smtERP-boot/src/main/resources/mapper_xml/DeliveryPlanMapper.xml b/smtERP-boot/src/main/resources/mapper_xml/DeliveryPlanMapper.xml new file mode 100644 index 0000000..c1c4ecb --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/DeliveryPlanMapper.xml @@ -0,0 +1,244 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + insert into tbl_delivery_plan + + plan_number, + source_type, + source_bill_id, + source_bill_number, + sale_order_number, + customer_id, + status, + planned_delivery_time, + adjust_reason, + remark, + create_time, + creator, + tenant_id, + delete_flag, + + + #{planNumber}, + #{sourceType}, + #{sourceBillId}, + #{sourceBillNumber}, + #{saleOrderNumber}, + #{customerId}, + #{status}, + #{plannedDeliveryTime}, + #{adjustReason}, + #{remark}, + #{createTime}, + #{creator}, + #{tenantId}, + #{deleteFlag}, + + + + + update tbl_delivery_plan + + status = #{status}, + planned_delivery_time = #{plannedDeliveryTime}, + adjust_reason = #{adjustReason}, + remark = #{remark}, + delete_flag = #{deleteFlag}, + + where id = #{id} + + + + insert into tbl_delivery_plan_item + (plan_id, source_item_id, material_id, material_extend_id, bar_code, material_name, standard, model, + unit, batch_number, sn_list, plan_quantity, shipped_quantity, depot_id, remark, tenant_id, delete_flag) + values + + (#{item.planId}, #{item.sourceItemId}, #{item.materialId}, #{item.materialExtendId}, #{item.barCode}, + #{item.materialName}, #{item.standard}, #{item.model}, #{item.unit}, #{item.batchNumber}, #{item.snList}, + #{item.planQuantity}, #{item.shippedQuantity}, #{item.depotId}, #{item.remark}, #{item.tenantId}, '0') + + + + + update tbl_delivery_plan_item + set delete_flag = '1' + where plan_id = #{planId} + and ifnull(delete_flag,'0') != '1' + + + + update tbl_delivery_plan_item + set plan_quantity = #{planQuantity}, remark = #{remark} + where id = #{id} + and ifnull(delete_flag,'0') != '1' + + + + + + + + + + + + + diff --git a/smtERP-boot/src/main/resources/mapper_xml/DepotHeadMapper.xml b/smtERP-boot/src/main/resources/mapper_xml/DepotHeadMapper.xml new file mode 100644 index 0000000..bf9d066 --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/DepotHeadMapper.xml @@ -0,0 +1,685 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + id, type, sub_type, default_number, number, create_time, oper_time, organ_id, creator, + account_id, change_amount, back_amount, total_price, pay_type, bill_type, remark, + file_name, sales_man, account_id_list, account_money_list, discount, discount_money, + discount_last_money, other_money, deposit, last_deposit, debt, last_debt, status, + purchase_status, source, link_number, link_apply, tenant_id, delete_flag + + + + + delete from tbl_depot_head + where id = #{id,jdbcType=BIGINT} + + + delete from tbl_depot_head + + + + + + insert into tbl_depot_head (id, type, sub_type, + default_number, number, create_time, + oper_time, organ_id, creator, + account_id, change_amount, back_amount, + total_price, pay_type, bill_type, + remark, file_name, sales_man, + account_id_list, account_money_list, discount, + discount_money, discount_last_money, other_money, + deposit, last_deposit, debt, + last_debt, status, purchase_status, + source, link_number, link_apply, + tenant_id, delete_flag) + values (#{id,jdbcType=BIGINT}, #{type,jdbcType=VARCHAR}, #{subType,jdbcType=VARCHAR}, + #{defaultNumber,jdbcType=VARCHAR}, #{number,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}, + #{operTime,jdbcType=TIMESTAMP}, #{organId,jdbcType=BIGINT}, #{creator,jdbcType=BIGINT}, + #{accountId,jdbcType=BIGINT}, #{changeAmount,jdbcType=DECIMAL}, #{backAmount,jdbcType=DECIMAL}, + #{totalPrice,jdbcType=DECIMAL}, #{payType,jdbcType=VARCHAR}, #{billType,jdbcType=VARCHAR}, + #{remark,jdbcType=VARCHAR}, #{fileName,jdbcType=VARCHAR}, #{salesMan,jdbcType=VARCHAR}, + #{accountIdList,jdbcType=VARCHAR}, #{accountMoneyList,jdbcType=VARCHAR}, #{discount,jdbcType=DECIMAL}, + #{discountMoney,jdbcType=DECIMAL}, #{discountLastMoney,jdbcType=DECIMAL}, #{otherMoney,jdbcType=DECIMAL}, + #{deposit,jdbcType=DECIMAL}, #{lastDeposit,jdbcType=DECIMAL}, #{debt,jdbcType=DECIMAL}, + #{lastDebt,jdbcType=DECIMAL}, #{status,jdbcType=VARCHAR}, #{purchaseStatus,jdbcType=VARCHAR}, + #{source,jdbcType=VARCHAR}, #{linkNumber,jdbcType=VARCHAR}, #{linkApply,jdbcType=VARCHAR}, + #{tenantId,jdbcType=BIGINT}, #{deleteFlag,jdbcType=VARCHAR}) + + + insert into tbl_depot_head + + + id, + + + type, + + + sub_type, + + + default_number, + + + number, + + + create_time, + + + oper_time, + + + organ_id, + + + creator, + + + account_id, + + + change_amount, + + + back_amount, + + + total_price, + + + pay_type, + + + bill_type, + + + remark, + + + file_name, + + + sales_man, + + + account_id_list, + + + account_money_list, + + + discount, + + + discount_money, + + + discount_last_money, + + + other_money, + + + deposit, + + + last_deposit, + + + debt, + + + last_debt, + + + status, + + + purchase_status, + + + source, + + + link_number, + + + link_apply, + + + tenant_id, + + + delete_flag, + + + + + #{id,jdbcType=BIGINT}, + + + #{type,jdbcType=VARCHAR}, + + + #{subType,jdbcType=VARCHAR}, + + + #{defaultNumber,jdbcType=VARCHAR}, + + + #{number,jdbcType=VARCHAR}, + + + #{createTime,jdbcType=TIMESTAMP}, + + + #{operTime,jdbcType=TIMESTAMP}, + + + #{organId,jdbcType=BIGINT}, + + + #{creator,jdbcType=BIGINT}, + + + #{accountId,jdbcType=BIGINT}, + + + #{changeAmount,jdbcType=DECIMAL}, + + + #{backAmount,jdbcType=DECIMAL}, + + + #{totalPrice,jdbcType=DECIMAL}, + + + #{payType,jdbcType=VARCHAR}, + + + #{billType,jdbcType=VARCHAR}, + + + #{remark,jdbcType=VARCHAR}, + + + #{fileName,jdbcType=VARCHAR}, + + + #{salesMan,jdbcType=VARCHAR}, + + + #{accountIdList,jdbcType=VARCHAR}, + + + #{accountMoneyList,jdbcType=VARCHAR}, + + + #{discount,jdbcType=DECIMAL}, + + + #{discountMoney,jdbcType=DECIMAL}, + + + #{discountLastMoney,jdbcType=DECIMAL}, + + + #{otherMoney,jdbcType=DECIMAL}, + + + #{deposit,jdbcType=DECIMAL}, + + + #{lastDeposit,jdbcType=DECIMAL}, + + + #{debt,jdbcType=DECIMAL}, + + + #{lastDebt,jdbcType=DECIMAL}, + + + #{status,jdbcType=VARCHAR}, + + + #{purchaseStatus,jdbcType=VARCHAR}, + + + #{source,jdbcType=VARCHAR}, + + + #{linkNumber,jdbcType=VARCHAR}, + + + #{linkApply,jdbcType=VARCHAR}, + + + #{tenantId,jdbcType=BIGINT}, + + + #{deleteFlag,jdbcType=VARCHAR}, + + + + + + update tbl_depot_head + + + id = #{record.id,jdbcType=BIGINT}, + + + type = #{record.type,jdbcType=VARCHAR}, + + + sub_type = #{record.subType,jdbcType=VARCHAR}, + + + default_number = #{record.defaultNumber,jdbcType=VARCHAR}, + + + number = #{record.number,jdbcType=VARCHAR}, + + + create_time = #{record.createTime,jdbcType=TIMESTAMP}, + + + oper_time = #{record.operTime,jdbcType=TIMESTAMP}, + + + organ_id = #{record.organId,jdbcType=BIGINT}, + + + creator = #{record.creator,jdbcType=BIGINT}, + + + account_id = #{record.accountId,jdbcType=BIGINT}, + + + change_amount = #{record.changeAmount,jdbcType=DECIMAL}, + + + back_amount = #{record.backAmount,jdbcType=DECIMAL}, + + + total_price = #{record.totalPrice,jdbcType=DECIMAL}, + + + pay_type = #{record.payType,jdbcType=VARCHAR}, + + + bill_type = #{record.billType,jdbcType=VARCHAR}, + + + remark = #{record.remark,jdbcType=VARCHAR}, + + + file_name = #{record.fileName,jdbcType=VARCHAR}, + + + sales_man = #{record.salesMan,jdbcType=VARCHAR}, + + + account_id_list = #{record.accountIdList,jdbcType=VARCHAR}, + + + account_money_list = #{record.accountMoneyList,jdbcType=VARCHAR}, + + + discount = #{record.discount,jdbcType=DECIMAL}, + + + discount_money = #{record.discountMoney,jdbcType=DECIMAL}, + + + discount_last_money = #{record.discountLastMoney,jdbcType=DECIMAL}, + + + other_money = #{record.otherMoney,jdbcType=DECIMAL}, + + + deposit = #{record.deposit,jdbcType=DECIMAL}, + + + last_deposit = #{record.lastDeposit,jdbcType=DECIMAL}, + + + debt = #{record.debt,jdbcType=DECIMAL}, + + + last_debt = #{record.lastDebt,jdbcType=DECIMAL}, + + + status = #{record.status,jdbcType=VARCHAR}, + + + purchase_status = #{record.purchaseStatus,jdbcType=VARCHAR}, + + + source = #{record.source,jdbcType=VARCHAR}, + + + link_number = #{record.linkNumber,jdbcType=VARCHAR}, + + + link_apply = #{record.linkApply,jdbcType=VARCHAR}, + + + tenant_id = #{record.tenantId,jdbcType=BIGINT}, + + + delete_flag = #{record.deleteFlag,jdbcType=VARCHAR}, + + + + + + + + update tbl_depot_head + set id = #{record.id,jdbcType=BIGINT}, + type = #{record.type,jdbcType=VARCHAR}, + sub_type = #{record.subType,jdbcType=VARCHAR}, + default_number = #{record.defaultNumber,jdbcType=VARCHAR}, + number = #{record.number,jdbcType=VARCHAR}, + create_time = #{record.createTime,jdbcType=TIMESTAMP}, + oper_time = #{record.operTime,jdbcType=TIMESTAMP}, + organ_id = #{record.organId,jdbcType=BIGINT}, + creator = #{record.creator,jdbcType=BIGINT}, + account_id = #{record.accountId,jdbcType=BIGINT}, + change_amount = #{record.changeAmount,jdbcType=DECIMAL}, + back_amount = #{record.backAmount,jdbcType=DECIMAL}, + total_price = #{record.totalPrice,jdbcType=DECIMAL}, + pay_type = #{record.payType,jdbcType=VARCHAR}, + bill_type = #{record.billType,jdbcType=VARCHAR}, + remark = #{record.remark,jdbcType=VARCHAR}, + file_name = #{record.fileName,jdbcType=VARCHAR}, + sales_man = #{record.salesMan,jdbcType=VARCHAR}, + account_id_list = #{record.accountIdList,jdbcType=VARCHAR}, + account_money_list = #{record.accountMoneyList,jdbcType=VARCHAR}, + discount = #{record.discount,jdbcType=DECIMAL}, + discount_money = #{record.discountMoney,jdbcType=DECIMAL}, + discount_last_money = #{record.discountLastMoney,jdbcType=DECIMAL}, + other_money = #{record.otherMoney,jdbcType=DECIMAL}, + deposit = #{record.deposit,jdbcType=DECIMAL}, + last_deposit = #{record.lastDeposit,jdbcType=DECIMAL}, + debt = #{record.debt,jdbcType=DECIMAL}, + last_debt = #{record.lastDebt,jdbcType=DECIMAL}, + status = #{record.status,jdbcType=VARCHAR}, + purchase_status = #{record.purchaseStatus,jdbcType=VARCHAR}, + source = #{record.source,jdbcType=VARCHAR}, + link_number = #{record.linkNumber,jdbcType=VARCHAR}, + link_apply = #{record.linkApply,jdbcType=VARCHAR}, + tenant_id = #{record.tenantId,jdbcType=BIGINT}, + delete_flag = #{record.deleteFlag,jdbcType=VARCHAR} + + + + + + update tbl_depot_head + + + type = #{type,jdbcType=VARCHAR}, + + + sub_type = #{subType,jdbcType=VARCHAR}, + + + default_number = #{defaultNumber,jdbcType=VARCHAR}, + + + number = #{number,jdbcType=VARCHAR}, + + + create_time = #{createTime,jdbcType=TIMESTAMP}, + + + oper_time = #{operTime,jdbcType=TIMESTAMP}, + + + organ_id = #{organId,jdbcType=BIGINT}, + + + creator = #{creator,jdbcType=BIGINT}, + + + account_id = #{accountId,jdbcType=BIGINT}, + + + change_amount = #{changeAmount,jdbcType=DECIMAL}, + + + back_amount = #{backAmount,jdbcType=DECIMAL}, + + + total_price = #{totalPrice,jdbcType=DECIMAL}, + + + pay_type = #{payType,jdbcType=VARCHAR}, + + + bill_type = #{billType,jdbcType=VARCHAR}, + + + remark = #{remark,jdbcType=VARCHAR}, + + + file_name = #{fileName,jdbcType=VARCHAR}, + + + sales_man = #{salesMan,jdbcType=VARCHAR}, + + + account_id_list = #{accountIdList,jdbcType=VARCHAR}, + + + account_money_list = #{accountMoneyList,jdbcType=VARCHAR}, + + + discount = #{discount,jdbcType=DECIMAL}, + + + discount_money = #{discountMoney,jdbcType=DECIMAL}, + + + discount_last_money = #{discountLastMoney,jdbcType=DECIMAL}, + + + other_money = #{otherMoney,jdbcType=DECIMAL}, + + + deposit = #{deposit,jdbcType=DECIMAL}, + + + last_deposit = #{lastDeposit,jdbcType=DECIMAL}, + + + debt = #{debt,jdbcType=DECIMAL}, + + + last_debt = #{lastDebt,jdbcType=DECIMAL}, + + + status = #{status,jdbcType=VARCHAR}, + + + purchase_status = #{purchaseStatus,jdbcType=VARCHAR}, + + + source = #{source,jdbcType=VARCHAR}, + + + link_number = #{linkNumber,jdbcType=VARCHAR}, + + + link_apply = #{linkApply,jdbcType=VARCHAR}, + + + tenant_id = #{tenantId,jdbcType=BIGINT}, + + + delete_flag = #{deleteFlag,jdbcType=VARCHAR}, + + + where id = #{id,jdbcType=BIGINT} + + + update tbl_depot_head + set type = #{type,jdbcType=VARCHAR}, + sub_type = #{subType,jdbcType=VARCHAR}, + default_number = #{defaultNumber,jdbcType=VARCHAR}, + number = #{number,jdbcType=VARCHAR}, + create_time = #{createTime,jdbcType=TIMESTAMP}, + oper_time = #{operTime,jdbcType=TIMESTAMP}, + organ_id = #{organId,jdbcType=BIGINT}, + creator = #{creator,jdbcType=BIGINT}, + account_id = #{accountId,jdbcType=BIGINT}, + change_amount = #{changeAmount,jdbcType=DECIMAL}, + back_amount = #{backAmount,jdbcType=DECIMAL}, + total_price = #{totalPrice,jdbcType=DECIMAL}, + pay_type = #{payType,jdbcType=VARCHAR}, + bill_type = #{billType,jdbcType=VARCHAR}, + remark = #{remark,jdbcType=VARCHAR}, + file_name = #{fileName,jdbcType=VARCHAR}, + sales_man = #{salesMan,jdbcType=VARCHAR}, + account_id_list = #{accountIdList,jdbcType=VARCHAR}, + account_money_list = #{accountMoneyList,jdbcType=VARCHAR}, + discount = #{discount,jdbcType=DECIMAL}, + discount_money = #{discountMoney,jdbcType=DECIMAL}, + discount_last_money = #{discountLastMoney,jdbcType=DECIMAL}, + other_money = #{otherMoney,jdbcType=DECIMAL}, + deposit = #{deposit,jdbcType=DECIMAL}, + last_deposit = #{lastDeposit,jdbcType=DECIMAL}, + debt = #{debt,jdbcType=DECIMAL}, + last_debt = #{lastDebt,jdbcType=DECIMAL}, + status = #{status,jdbcType=VARCHAR}, + purchase_status = #{purchaseStatus,jdbcType=VARCHAR}, + source = #{source,jdbcType=VARCHAR}, + link_number = #{linkNumber,jdbcType=VARCHAR}, + link_apply = #{linkApply,jdbcType=VARCHAR}, + tenant_id = #{tenantId,jdbcType=BIGINT}, + delete_flag = #{deleteFlag,jdbcType=VARCHAR} + where id = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/smtERP-boot/src/main/resources/mapper_xml/DepotHeadMapperEx.xml b/smtERP-boot/src/main/resources/mapper_xml/DepotHeadMapperEx.xml new file mode 100644 index 0000000..fad2372 --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/DepotHeadMapperEx.xml @@ -0,0 +1,1545 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + update tbl_depot_head + set delete_flag='1' + where 1=1 + and id in ( + + #{id} + + ) + + + + + + + + + + + + + + + + + + update tbl_depot_head dh set dh.account_id = null + where dh.id=#{id} + and ifnull(dh.delete_flag,'0') !='1' + + + + + + + + + + + + diff --git a/smtERP-boot/src/main/resources/mapper_xml/DepotItemMapper.xml b/smtERP-boot/src/main/resources/mapper_xml/DepotItemMapper.xml new file mode 100644 index 0000000..6a1bdad --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/DepotItemMapper.xml @@ -0,0 +1,528 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + id, header_id, material_id, material_extend_id, material_unit, sku, oper_number, + basic_number, unit_price, purchase_unit_price, tax_unit_price, all_price, remark, + depot_id, another_depot_id, tax_rate, tax_money, tax_last_money, material_type, sn_list, + batch_number, expiration_date, link_id, tenant_id, delete_flag + + + + + delete from tbl_depot_item + where id = #{id,jdbcType=BIGINT} + + + delete from tbl_depot_item + + + + + + insert into tbl_depot_item (id, header_id, material_id, + material_extend_id, material_unit, sku, + oper_number, basic_number, unit_price, + purchase_unit_price, tax_unit_price, all_price, + remark, depot_id, another_depot_id, + tax_rate, tax_money, tax_last_money, + material_type, sn_list, batch_number, + expiration_date, link_id, tenant_id, + delete_flag) + values (#{id,jdbcType=BIGINT}, #{headerId,jdbcType=BIGINT}, #{materialId,jdbcType=BIGINT}, + #{materialExtendId,jdbcType=BIGINT}, #{materialUnit,jdbcType=VARCHAR}, #{sku,jdbcType=VARCHAR}, + #{operNumber,jdbcType=DECIMAL}, #{basicNumber,jdbcType=DECIMAL}, #{unitPrice,jdbcType=DECIMAL}, + #{purchaseUnitPrice,jdbcType=DECIMAL}, #{taxUnitPrice,jdbcType=DECIMAL}, #{allPrice,jdbcType=DECIMAL}, + #{remark,jdbcType=VARCHAR}, #{depotId,jdbcType=BIGINT}, #{anotherDepotId,jdbcType=BIGINT}, + #{taxRate,jdbcType=DECIMAL}, #{taxMoney,jdbcType=DECIMAL}, #{taxLastMoney,jdbcType=DECIMAL}, + #{materialType,jdbcType=VARCHAR}, #{snList,jdbcType=VARCHAR}, #{batchNumber,jdbcType=VARCHAR}, + #{expirationDate,jdbcType=TIMESTAMP}, #{linkId,jdbcType=BIGINT}, #{tenantId,jdbcType=BIGINT}, + #{deleteFlag,jdbcType=VARCHAR}) + + + insert into tbl_depot_item + + + id, + + + header_id, + + + material_id, + + + material_extend_id, + + + material_unit, + + + sku, + + + oper_number, + + + basic_number, + + + unit_price, + + + purchase_unit_price, + + + tax_unit_price, + + + all_price, + + + remark, + + + depot_id, + + + another_depot_id, + + + tax_rate, + + + tax_money, + + + tax_last_money, + + + material_type, + + + sn_list, + + + batch_number, + + + expiration_date, + + + link_id, + + + tenant_id, + + + delete_flag, + + + + + #{id,jdbcType=BIGINT}, + + + #{headerId,jdbcType=BIGINT}, + + + #{materialId,jdbcType=BIGINT}, + + + #{materialExtendId,jdbcType=BIGINT}, + + + #{materialUnit,jdbcType=VARCHAR}, + + + #{sku,jdbcType=VARCHAR}, + + + #{operNumber,jdbcType=DECIMAL}, + + + #{basicNumber,jdbcType=DECIMAL}, + + + #{unitPrice,jdbcType=DECIMAL}, + + + #{purchaseUnitPrice,jdbcType=DECIMAL}, + + + #{taxUnitPrice,jdbcType=DECIMAL}, + + + #{allPrice,jdbcType=DECIMAL}, + + + #{remark,jdbcType=VARCHAR}, + + + #{depotId,jdbcType=BIGINT}, + + + #{anotherDepotId,jdbcType=BIGINT}, + + + #{taxRate,jdbcType=DECIMAL}, + + + #{taxMoney,jdbcType=DECIMAL}, + + + #{taxLastMoney,jdbcType=DECIMAL}, + + + #{materialType,jdbcType=VARCHAR}, + + + #{snList,jdbcType=VARCHAR}, + + + #{batchNumber,jdbcType=VARCHAR}, + + + #{expirationDate,jdbcType=TIMESTAMP}, + + + #{linkId,jdbcType=BIGINT}, + + + #{tenantId,jdbcType=BIGINT}, + + + #{deleteFlag,jdbcType=VARCHAR}, + + + + + + update tbl_depot_item + + + id = #{record.id,jdbcType=BIGINT}, + + + header_id = #{record.headerId,jdbcType=BIGINT}, + + + material_id = #{record.materialId,jdbcType=BIGINT}, + + + material_extend_id = #{record.materialExtendId,jdbcType=BIGINT}, + + + material_unit = #{record.materialUnit,jdbcType=VARCHAR}, + + + sku = #{record.sku,jdbcType=VARCHAR}, + + + oper_number = #{record.operNumber,jdbcType=DECIMAL}, + + + basic_number = #{record.basicNumber,jdbcType=DECIMAL}, + + + unit_price = #{record.unitPrice,jdbcType=DECIMAL}, + + + purchase_unit_price = #{record.purchaseUnitPrice,jdbcType=DECIMAL}, + + + tax_unit_price = #{record.taxUnitPrice,jdbcType=DECIMAL}, + + + all_price = #{record.allPrice,jdbcType=DECIMAL}, + + + remark = #{record.remark,jdbcType=VARCHAR}, + + + depot_id = #{record.depotId,jdbcType=BIGINT}, + + + another_depot_id = #{record.anotherDepotId,jdbcType=BIGINT}, + + + tax_rate = #{record.taxRate,jdbcType=DECIMAL}, + + + tax_money = #{record.taxMoney,jdbcType=DECIMAL}, + + + tax_last_money = #{record.taxLastMoney,jdbcType=DECIMAL}, + + + material_type = #{record.materialType,jdbcType=VARCHAR}, + + + sn_list = #{record.snList,jdbcType=VARCHAR}, + + + batch_number = #{record.batchNumber,jdbcType=VARCHAR}, + + + expiration_date = #{record.expirationDate,jdbcType=TIMESTAMP}, + + + link_id = #{record.linkId,jdbcType=BIGINT}, + + + tenant_id = #{record.tenantId,jdbcType=BIGINT}, + + + delete_flag = #{record.deleteFlag,jdbcType=VARCHAR}, + + + + + + + + update tbl_depot_item + set id = #{record.id,jdbcType=BIGINT}, + header_id = #{record.headerId,jdbcType=BIGINT}, + material_id = #{record.materialId,jdbcType=BIGINT}, + material_extend_id = #{record.materialExtendId,jdbcType=BIGINT}, + material_unit = #{record.materialUnit,jdbcType=VARCHAR}, + sku = #{record.sku,jdbcType=VARCHAR}, + oper_number = #{record.operNumber,jdbcType=DECIMAL}, + basic_number = #{record.basicNumber,jdbcType=DECIMAL}, + unit_price = #{record.unitPrice,jdbcType=DECIMAL}, + purchase_unit_price = #{record.purchaseUnitPrice,jdbcType=DECIMAL}, + tax_unit_price = #{record.taxUnitPrice,jdbcType=DECIMAL}, + all_price = #{record.allPrice,jdbcType=DECIMAL}, + remark = #{record.remark,jdbcType=VARCHAR}, + depot_id = #{record.depotId,jdbcType=BIGINT}, + another_depot_id = #{record.anotherDepotId,jdbcType=BIGINT}, + tax_rate = #{record.taxRate,jdbcType=DECIMAL}, + tax_money = #{record.taxMoney,jdbcType=DECIMAL}, + tax_last_money = #{record.taxLastMoney,jdbcType=DECIMAL}, + material_type = #{record.materialType,jdbcType=VARCHAR}, + sn_list = #{record.snList,jdbcType=VARCHAR}, + batch_number = #{record.batchNumber,jdbcType=VARCHAR}, + expiration_date = #{record.expirationDate,jdbcType=TIMESTAMP}, + link_id = #{record.linkId,jdbcType=BIGINT}, + tenant_id = #{record.tenantId,jdbcType=BIGINT}, + delete_flag = #{record.deleteFlag,jdbcType=VARCHAR} + + + + + + update tbl_depot_item + + + header_id = #{headerId,jdbcType=BIGINT}, + + + material_id = #{materialId,jdbcType=BIGINT}, + + + material_extend_id = #{materialExtendId,jdbcType=BIGINT}, + + + material_unit = #{materialUnit,jdbcType=VARCHAR}, + + + sku = #{sku,jdbcType=VARCHAR}, + + + oper_number = #{operNumber,jdbcType=DECIMAL}, + + + basic_number = #{basicNumber,jdbcType=DECIMAL}, + + + unit_price = #{unitPrice,jdbcType=DECIMAL}, + + + purchase_unit_price = #{purchaseUnitPrice,jdbcType=DECIMAL}, + + + tax_unit_price = #{taxUnitPrice,jdbcType=DECIMAL}, + + + all_price = #{allPrice,jdbcType=DECIMAL}, + + + remark = #{remark,jdbcType=VARCHAR}, + + + depot_id = #{depotId,jdbcType=BIGINT}, + + + another_depot_id = #{anotherDepotId,jdbcType=BIGINT}, + + + tax_rate = #{taxRate,jdbcType=DECIMAL}, + + + tax_money = #{taxMoney,jdbcType=DECIMAL}, + + + tax_last_money = #{taxLastMoney,jdbcType=DECIMAL}, + + + material_type = #{materialType,jdbcType=VARCHAR}, + + + sn_list = #{snList,jdbcType=VARCHAR}, + + + batch_number = #{batchNumber,jdbcType=VARCHAR}, + + + expiration_date = #{expirationDate,jdbcType=TIMESTAMP}, + + + link_id = #{linkId,jdbcType=BIGINT}, + + + tenant_id = #{tenantId,jdbcType=BIGINT}, + + + delete_flag = #{deleteFlag,jdbcType=VARCHAR}, + + + where id = #{id,jdbcType=BIGINT} + + + update tbl_depot_item + set header_id = #{headerId,jdbcType=BIGINT}, + material_id = #{materialId,jdbcType=BIGINT}, + material_extend_id = #{materialExtendId,jdbcType=BIGINT}, + material_unit = #{materialUnit,jdbcType=VARCHAR}, + sku = #{sku,jdbcType=VARCHAR}, + oper_number = #{operNumber,jdbcType=DECIMAL}, + basic_number = #{basicNumber,jdbcType=DECIMAL}, + unit_price = #{unitPrice,jdbcType=DECIMAL}, + purchase_unit_price = #{purchaseUnitPrice,jdbcType=DECIMAL}, + tax_unit_price = #{taxUnitPrice,jdbcType=DECIMAL}, + all_price = #{allPrice,jdbcType=DECIMAL}, + remark = #{remark,jdbcType=VARCHAR}, + depot_id = #{depotId,jdbcType=BIGINT}, + another_depot_id = #{anotherDepotId,jdbcType=BIGINT}, + tax_rate = #{taxRate,jdbcType=DECIMAL}, + tax_money = #{taxMoney,jdbcType=DECIMAL}, + tax_last_money = #{taxLastMoney,jdbcType=DECIMAL}, + material_type = #{materialType,jdbcType=VARCHAR}, + sn_list = #{snList,jdbcType=VARCHAR}, + batch_number = #{batchNumber,jdbcType=VARCHAR}, + expiration_date = #{expirationDate,jdbcType=TIMESTAMP}, + link_id = #{linkId,jdbcType=BIGINT}, + tenant_id = #{tenantId,jdbcType=BIGINT}, + delete_flag = #{deleteFlag,jdbcType=VARCHAR} + where id = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/smtERP-boot/src/main/resources/mapper_xml/DepotItemMapperEx.xml b/smtERP-boot/src/main/resources/mapper_xml/DepotItemMapperEx.xml new file mode 100644 index 0000000..83d0c7f --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/DepotItemMapperEx.xml @@ -0,0 +1,1156 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + insert into tbl_depot_item (header_id, material_id, material_extend_id, material_unit, sku, oper_number, + basic_number, unit_price, purchase_unit_price, tax_unit_price, all_price, remark, depot_id, another_depot_id, + tax_rate, tax_money, tax_last_money, material_type, sn_list, batch_number, expiration_date, link_id) + values + + (#{item.headerId,jdbcType=BIGINT}, #{item.materialId,jdbcType=BIGINT}, + #{item.materialExtendId,jdbcType=BIGINT}, #{item.materialUnit,jdbcType=VARCHAR}, #{item.sku,jdbcType=VARCHAR}, + #{item.operNumber,jdbcType=DECIMAL}, #{item.basicNumber,jdbcType=DECIMAL}, #{item.unitPrice,jdbcType=DECIMAL}, + #{item.purchaseUnitPrice,jdbcType=DECIMAL}, #{item.taxUnitPrice,jdbcType=DECIMAL}, #{item.allPrice,jdbcType=DECIMAL}, + #{item.remark,jdbcType=VARCHAR}, #{item.depotId,jdbcType=BIGINT}, #{item.anotherDepotId,jdbcType=BIGINT}, + #{item.taxRate,jdbcType=DECIMAL}, #{item.taxMoney,jdbcType=DECIMAL}, #{item.taxLastMoney,jdbcType=DECIMAL}, + #{item.materialType,jdbcType=VARCHAR}, #{item.snList,jdbcType=VARCHAR}, #{item.batchNumber,jdbcType=VARCHAR}, + #{item.expirationDate,jdbcType=TIMESTAMP}, #{item.linkId,jdbcType=BIGINT}) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + and (dh.sub_type!='采购' and dh.sub_type!='采购退货' and dh.sub_type!='销售' and dh.sub_type!='销售退货') + + + + + + and di.depot_id in #{item} + + + + + + and di.another_depot_id in #{item} + + + + + + + update tbl_depot_item + set delete_flag='1' + where 1=1 + and header_id in + ( + + #{depotheadId} + + ) + + + + update tbl_depot_item + set delete_flag='1' + where 1=1 + and id in ( + + #{id} + + ) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/smtERP-boot/src/main/resources/mapper_xml/DepotMapper.xml b/smtERP-boot/src/main/resources/mapper_xml/DepotMapper.xml new file mode 100644 index 0000000..8c7615a --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/DepotMapper.xml @@ -0,0 +1,338 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + id, name, address, warehousing, truckage, type, sort, remark, principal, enabled, + tenant_id, delete_Flag, is_default + + + + + delete from tbl_depot + where id = #{id,jdbcType=BIGINT} + + + delete from tbl_depot + + + + + + insert into tbl_depot (id, name, address, + warehousing, truckage, type, + sort, remark, principal, + enabled, tenant_id, delete_Flag, + is_default) + values (#{id,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR}, #{address,jdbcType=VARCHAR}, + #{warehousing,jdbcType=DECIMAL}, #{truckage,jdbcType=DECIMAL}, #{type,jdbcType=INTEGER}, + #{sort,jdbcType=VARCHAR}, #{remark,jdbcType=VARCHAR}, #{principal,jdbcType=BIGINT}, + #{enabled,jdbcType=BIT}, #{tenantId,jdbcType=BIGINT}, #{deleteFlag,jdbcType=VARCHAR}, + #{isDefault,jdbcType=BIT}) + + + insert into tbl_depot + + + id, + + + name, + + + address, + + + warehousing, + + + truckage, + + + type, + + + sort, + + + remark, + + + principal, + + + enabled, + + + tenant_id, + + + delete_Flag, + + + is_default, + + + + + #{id,jdbcType=BIGINT}, + + + #{name,jdbcType=VARCHAR}, + + + #{address,jdbcType=VARCHAR}, + + + #{warehousing,jdbcType=DECIMAL}, + + + #{truckage,jdbcType=DECIMAL}, + + + #{type,jdbcType=INTEGER}, + + + #{sort,jdbcType=VARCHAR}, + + + #{remark,jdbcType=VARCHAR}, + + + #{principal,jdbcType=BIGINT}, + + + #{enabled,jdbcType=BIT}, + + + #{tenantId,jdbcType=BIGINT}, + + + #{deleteFlag,jdbcType=VARCHAR}, + + + #{isDefault,jdbcType=BIT}, + + + + + + update tbl_depot + + + id = #{record.id,jdbcType=BIGINT}, + + + name = #{record.name,jdbcType=VARCHAR}, + + + address = #{record.address,jdbcType=VARCHAR}, + + + warehousing = #{record.warehousing,jdbcType=DECIMAL}, + + + truckage = #{record.truckage,jdbcType=DECIMAL}, + + + type = #{record.type,jdbcType=INTEGER}, + + + sort = #{record.sort,jdbcType=VARCHAR}, + + + remark = #{record.remark,jdbcType=VARCHAR}, + + + principal = #{record.principal,jdbcType=BIGINT}, + + + enabled = #{record.enabled,jdbcType=BIT}, + + + tenant_id = #{record.tenantId,jdbcType=BIGINT}, + + + delete_Flag = #{record.deleteFlag,jdbcType=VARCHAR}, + + + is_default = #{record.isDefault,jdbcType=BIT}, + + + + + + + + update tbl_depot + set id = #{record.id,jdbcType=BIGINT}, + name = #{record.name,jdbcType=VARCHAR}, + address = #{record.address,jdbcType=VARCHAR}, + warehousing = #{record.warehousing,jdbcType=DECIMAL}, + truckage = #{record.truckage,jdbcType=DECIMAL}, + type = #{record.type,jdbcType=INTEGER}, + sort = #{record.sort,jdbcType=VARCHAR}, + remark = #{record.remark,jdbcType=VARCHAR}, + principal = #{record.principal,jdbcType=BIGINT}, + enabled = #{record.enabled,jdbcType=BIT}, + tenant_id = #{record.tenantId,jdbcType=BIGINT}, + delete_Flag = #{record.deleteFlag,jdbcType=VARCHAR}, + is_default = #{record.isDefault,jdbcType=BIT} + + + + + + update tbl_depot + + + name = #{name,jdbcType=VARCHAR}, + + + address = #{address,jdbcType=VARCHAR}, + + + warehousing = #{warehousing,jdbcType=DECIMAL}, + + + truckage = #{truckage,jdbcType=DECIMAL}, + + + type = #{type,jdbcType=INTEGER}, + + + sort = #{sort,jdbcType=VARCHAR}, + + + remark = #{remark,jdbcType=VARCHAR}, + + + principal = #{principal,jdbcType=BIGINT}, + + + enabled = #{enabled,jdbcType=BIT}, + + + tenant_id = #{tenantId,jdbcType=BIGINT}, + + + delete_Flag = #{deleteFlag,jdbcType=VARCHAR}, + + + is_default = #{isDefault,jdbcType=BIT}, + + + where id = #{id,jdbcType=BIGINT} + + + update tbl_depot + set name = #{name,jdbcType=VARCHAR}, + address = #{address,jdbcType=VARCHAR}, + warehousing = #{warehousing,jdbcType=DECIMAL}, + truckage = #{truckage,jdbcType=DECIMAL}, + type = #{type,jdbcType=INTEGER}, + sort = #{sort,jdbcType=VARCHAR}, + remark = #{remark,jdbcType=VARCHAR}, + principal = #{principal,jdbcType=BIGINT}, + enabled = #{enabled,jdbcType=BIT}, + tenant_id = #{tenantId,jdbcType=BIGINT}, + delete_Flag = #{deleteFlag,jdbcType=VARCHAR}, + is_default = #{isDefault,jdbcType=BIT} + where id = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/smtERP-boot/src/main/resources/mapper_xml/DepotMapperEx.xml b/smtERP-boot/src/main/resources/mapper_xml/DepotMapperEx.xml new file mode 100644 index 0000000..b7fa179 --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/DepotMapperEx.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + update tbl_depot + set delete_Flag='1' + where 1=1 + and id in ( + + #{id} + + ) + + + + + \ No newline at end of file diff --git a/smtERP-boot/src/main/resources/mapper_xml/FunctionMapper.xml b/smtERP-boot/src/main/resources/mapper_xml/FunctionMapper.xml new file mode 100644 index 0000000..4aadebf --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/FunctionMapper.xml @@ -0,0 +1,353 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + id, number, name, name_en, parent_number, url, component, state, sort, enabled, type, push_btn, + icon, delete_flag + + + + + delete from tbl_function + where id = #{id,jdbcType=BIGINT} + + + delete from tbl_function + + + + + + insert into tbl_function (id, number, name, name_en, + parent_number, url, component, + state, sort, enabled, type, + push_btn, icon, delete_flag + ) + values (#{id,jdbcType=BIGINT}, #{number,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, #{nameEn,jdbcType=VARCHAR}, + #{parentNumber,jdbcType=VARCHAR}, #{url,jdbcType=VARCHAR}, #{component,jdbcType=VARCHAR}, + #{state,jdbcType=BIT}, #{sort,jdbcType=VARCHAR}, #{enabled,jdbcType=BIT}, #{type,jdbcType=VARCHAR}, + #{pushBtn,jdbcType=VARCHAR}, #{icon,jdbcType=VARCHAR}, #{deleteFlag,jdbcType=VARCHAR} + ) + + + insert into tbl_function + + + id, + + + number, + + + name, + + + name_en, + + + parent_number, + + + url, + + + component, + + + state, + + + sort, + + + enabled, + + + type, + + + push_btn, + + + icon, + + + delete_flag, + + + + + #{id,jdbcType=BIGINT}, + + + #{number,jdbcType=VARCHAR}, + + + #{name,jdbcType=VARCHAR}, + + + #{nameEn,jdbcType=VARCHAR}, + + + #{parentNumber,jdbcType=VARCHAR}, + + + #{url,jdbcType=VARCHAR}, + + + #{component,jdbcType=VARCHAR}, + + + #{state,jdbcType=BIT}, + + + #{sort,jdbcType=VARCHAR}, + + + #{enabled,jdbcType=BIT}, + + + #{type,jdbcType=VARCHAR}, + + + #{pushBtn,jdbcType=VARCHAR}, + + + #{icon,jdbcType=VARCHAR}, + + + #{deleteFlag,jdbcType=VARCHAR}, + + + + + + update tbl_function + + + id = #{record.id,jdbcType=BIGINT}, + + + number = #{record.number,jdbcType=VARCHAR}, + + + name = #{record.name,jdbcType=VARCHAR}, + + + name_en = #{record.nameEn,jdbcType=VARCHAR}, + + + parent_number = #{record.parentNumber,jdbcType=VARCHAR}, + + + url = #{record.url,jdbcType=VARCHAR}, + + + component = #{record.component,jdbcType=VARCHAR}, + + + state = #{record.state,jdbcType=BIT}, + + + sort = #{record.sort,jdbcType=VARCHAR}, + + + enabled = #{record.enabled,jdbcType=BIT}, + + + type = #{record.type,jdbcType=VARCHAR}, + + + push_btn = #{record.pushBtn,jdbcType=VARCHAR}, + + + icon = #{record.icon,jdbcType=VARCHAR}, + + + delete_flag = #{record.deleteFlag,jdbcType=VARCHAR}, + + + + + + + + update tbl_function + set id = #{record.id,jdbcType=BIGINT}, + number = #{record.number,jdbcType=VARCHAR}, + name = #{record.name,jdbcType=VARCHAR}, + name_en = #{record.nameEn,jdbcType=VARCHAR}, + parent_number = #{record.parentNumber,jdbcType=VARCHAR}, + url = #{record.url,jdbcType=VARCHAR}, + component = #{record.component,jdbcType=VARCHAR}, + state = #{record.state,jdbcType=BIT}, + sort = #{record.sort,jdbcType=VARCHAR}, + enabled = #{record.enabled,jdbcType=BIT}, + type = #{record.type,jdbcType=VARCHAR}, + push_btn = #{record.pushBtn,jdbcType=VARCHAR}, + icon = #{record.icon,jdbcType=VARCHAR}, + delete_flag = #{record.deleteFlag,jdbcType=VARCHAR} + + + + + + update tbl_function + + + number = #{number,jdbcType=VARCHAR}, + + + name = #{name,jdbcType=VARCHAR}, + + + name_en = #{nameEn,jdbcType=VARCHAR}, + + + parent_number = #{parentNumber,jdbcType=VARCHAR}, + + + url = #{url,jdbcType=VARCHAR}, + + + component = #{component,jdbcType=VARCHAR}, + + + state = #{state,jdbcType=BIT}, + + + sort = #{sort,jdbcType=VARCHAR}, + + + enabled = #{enabled,jdbcType=BIT}, + + + type = #{type,jdbcType=VARCHAR}, + + + push_btn = #{pushBtn,jdbcType=VARCHAR}, + + + icon = #{icon,jdbcType=VARCHAR}, + + + delete_flag = #{deleteFlag,jdbcType=VARCHAR}, + + + where id = #{id,jdbcType=BIGINT} + + + update tbl_function + set number = #{number,jdbcType=VARCHAR}, + name = #{name,jdbcType=VARCHAR}, + name_en = #{nameEn,jdbcType=VARCHAR}, + parent_number = #{parentNumber,jdbcType=VARCHAR}, + url = #{url,jdbcType=VARCHAR}, + component = #{component,jdbcType=VARCHAR}, + state = #{state,jdbcType=BIT}, + sort = #{sort,jdbcType=VARCHAR}, + enabled = #{enabled,jdbcType=BIT}, + type = #{type,jdbcType=VARCHAR}, + push_btn = #{pushBtn,jdbcType=VARCHAR}, + icon = #{icon,jdbcType=VARCHAR}, + delete_flag = #{deleteFlag,jdbcType=VARCHAR} + where id = #{id,jdbcType=BIGINT} + + diff --git a/smtERP-boot/src/main/resources/mapper_xml/FunctionMapperEx.xml b/smtERP-boot/src/main/resources/mapper_xml/FunctionMapperEx.xml new file mode 100644 index 0000000..acc28b6 --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/FunctionMapperEx.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + update tbl_function + set delete_flag='1' + where 1=1 + and id in ( + + #{id} + + ) + + diff --git a/smtERP-boot/src/main/resources/mapper_xml/InOutItemMapper.xml b/smtERP-boot/src/main/resources/mapper_xml/InOutItemMapper.xml new file mode 100644 index 0000000..beb24b6 --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/InOutItemMapper.xml @@ -0,0 +1,258 @@ + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + id, name, type, remark, enabled, sort, tenant_id, delete_flag + + + + + delete from tbl_in_out_item + where id = #{id,jdbcType=BIGINT} + + + delete from tbl_in_out_item + + + + + + insert into tbl_in_out_item (id, name, type, + remark, enabled, sort, + tenant_id, delete_flag) + values (#{id,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR}, #{type,jdbcType=VARCHAR}, + #{remark,jdbcType=VARCHAR}, #{enabled,jdbcType=BIT}, #{sort,jdbcType=VARCHAR}, + #{tenantId,jdbcType=BIGINT}, #{deleteFlag,jdbcType=VARCHAR}) + + + insert into tbl_in_out_item + + + id, + + + name, + + + type, + + + remark, + + + enabled, + + + sort, + + + tenant_id, + + + delete_flag, + + + + + #{id,jdbcType=BIGINT}, + + + #{name,jdbcType=VARCHAR}, + + + #{type,jdbcType=VARCHAR}, + + + #{remark,jdbcType=VARCHAR}, + + + #{enabled,jdbcType=BIT}, + + + #{sort,jdbcType=VARCHAR}, + + + #{tenantId,jdbcType=BIGINT}, + + + #{deleteFlag,jdbcType=VARCHAR}, + + + + + + update tbl_in_out_item + + + id = #{record.id,jdbcType=BIGINT}, + + + name = #{record.name,jdbcType=VARCHAR}, + + + type = #{record.type,jdbcType=VARCHAR}, + + + remark = #{record.remark,jdbcType=VARCHAR}, + + + enabled = #{record.enabled,jdbcType=BIT}, + + + sort = #{record.sort,jdbcType=VARCHAR}, + + + tenant_id = #{record.tenantId,jdbcType=BIGINT}, + + + delete_flag = #{record.deleteFlag,jdbcType=VARCHAR}, + + + + + + + + update tbl_in_out_item + set id = #{record.id,jdbcType=BIGINT}, + name = #{record.name,jdbcType=VARCHAR}, + type = #{record.type,jdbcType=VARCHAR}, + remark = #{record.remark,jdbcType=VARCHAR}, + enabled = #{record.enabled,jdbcType=BIT}, + sort = #{record.sort,jdbcType=VARCHAR}, + tenant_id = #{record.tenantId,jdbcType=BIGINT}, + delete_flag = #{record.deleteFlag,jdbcType=VARCHAR} + + + + + + update tbl_in_out_item + + + name = #{name,jdbcType=VARCHAR}, + + + type = #{type,jdbcType=VARCHAR}, + + + remark = #{remark,jdbcType=VARCHAR}, + + + enabled = #{enabled,jdbcType=BIT}, + + + sort = #{sort,jdbcType=VARCHAR}, + + + tenant_id = #{tenantId,jdbcType=BIGINT}, + + + delete_flag = #{deleteFlag,jdbcType=VARCHAR}, + + + where id = #{id,jdbcType=BIGINT} + + + update tbl_in_out_item + set name = #{name,jdbcType=VARCHAR}, + type = #{type,jdbcType=VARCHAR}, + remark = #{remark,jdbcType=VARCHAR}, + enabled = #{enabled,jdbcType=BIT}, + sort = #{sort,jdbcType=VARCHAR}, + tenant_id = #{tenantId,jdbcType=BIGINT}, + delete_flag = #{deleteFlag,jdbcType=VARCHAR} + where id = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/smtERP-boot/src/main/resources/mapper_xml/InOutItemMapperEx.xml b/smtERP-boot/src/main/resources/mapper_xml/InOutItemMapperEx.xml new file mode 100644 index 0000000..1c70499 --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/InOutItemMapperEx.xml @@ -0,0 +1,33 @@ + + + + + + + update tbl_in_out_item + set delete_flag='1' + where 1=1 + and id in ( + + #{id} + + ) + + \ No newline at end of file diff --git a/smtERP-boot/src/main/resources/mapper_xml/LogMapper.xml b/smtERP-boot/src/main/resources/mapper_xml/LogMapper.xml new file mode 100644 index 0000000..e582c90 --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/LogMapper.xml @@ -0,0 +1,306 @@ + + + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + id, user_id, operation, client_ip, create_time, status, content, tenant_id, + request_url, request_params, response_params + + + + + delete from tbl_log + where id = #{id,jdbcType=BIGINT} + + + delete from tbl_log + + + + + + insert into tbl_log (id, user_id, operation, + client_ip, create_time, status, + content, tenant_id, request_url, + request_params, response_params) + values (#{id,jdbcType=BIGINT}, #{userId,jdbcType=BIGINT}, #{operation,jdbcType=VARCHAR}, + #{clientIp,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}, #{status,jdbcType=TINYINT}, + #{content,jdbcType=VARCHAR}, #{tenantId,jdbcType=BIGINT}, #{requestUrl,jdbcType=VARCHAR}, + #{requestParams,jdbcType=LONGVARCHAR}, #{responseParams,jdbcType=LONGVARCHAR}) + + + insert into tbl_log + + + id, + + + user_id, + + + operation, + + + client_ip, + + + create_time, + + + status, + + + content, + + + tenant_id, + + + request_url, + + + request_params, + + + response_params, + + + + + #{id,jdbcType=BIGINT}, + + + #{userId,jdbcType=BIGINT}, + + + #{operation,jdbcType=VARCHAR}, + + + #{clientIp,jdbcType=VARCHAR}, + + + #{createTime,jdbcType=TIMESTAMP}, + + + #{status,jdbcType=TINYINT}, + + + #{content,jdbcType=VARCHAR}, + + + #{tenantId,jdbcType=BIGINT}, + + + #{requestUrl,jdbcType=VARCHAR}, + + + #{requestParams,jdbcType=LONGVARCHAR}, + + + #{responseParams,jdbcType=LONGVARCHAR}, + + + + + + update tbl_log + + + id = #{record.id,jdbcType=BIGINT}, + + + user_id = #{record.userId,jdbcType=BIGINT}, + + + operation = #{record.operation,jdbcType=VARCHAR}, + + + client_ip = #{record.clientIp,jdbcType=VARCHAR}, + + + create_time = #{record.createTime,jdbcType=TIMESTAMP}, + + + status = #{record.status,jdbcType=TINYINT}, + + + content = #{record.content,jdbcType=VARCHAR}, + + + tenant_id = #{record.tenantId,jdbcType=BIGINT}, + + + request_url = #{record.requestUrl,jdbcType=VARCHAR}, + + + request_params = #{record.requestParams,jdbcType=LONGVARCHAR}, + + + response_params = #{record.responseParams,jdbcType=LONGVARCHAR}, + + + + + + + + update tbl_log + set id = #{record.id,jdbcType=BIGINT}, + user_id = #{record.userId,jdbcType=BIGINT}, + operation = #{record.operation,jdbcType=VARCHAR}, + client_ip = #{record.clientIp,jdbcType=VARCHAR}, + create_time = #{record.createTime,jdbcType=TIMESTAMP}, + status = #{record.status,jdbcType=TINYINT}, + content = #{record.content,jdbcType=VARCHAR}, + tenant_id = #{record.tenantId,jdbcType=BIGINT}, + request_url = #{record.requestUrl,jdbcType=VARCHAR}, + request_params = #{record.requestParams,jdbcType=LONGVARCHAR}, + response_params = #{record.responseParams,jdbcType=LONGVARCHAR} + + + + + + update tbl_log + + + user_id = #{userId,jdbcType=BIGINT}, + + + operation = #{operation,jdbcType=VARCHAR}, + + + client_ip = #{clientIp,jdbcType=VARCHAR}, + + + create_time = #{createTime,jdbcType=TIMESTAMP}, + + + status = #{status,jdbcType=TINYINT}, + + + content = #{content,jdbcType=VARCHAR}, + + + tenant_id = #{tenantId,jdbcType=BIGINT}, + + + request_url = #{requestUrl,jdbcType=VARCHAR}, + + + request_params = #{requestParams,jdbcType=LONGVARCHAR}, + + + response_params = #{responseParams,jdbcType=LONGVARCHAR}, + + + where id = #{id,jdbcType=BIGINT} + + + update tbl_log + set user_id = #{userId,jdbcType=BIGINT}, + operation = #{operation,jdbcType=VARCHAR}, + client_ip = #{clientIp,jdbcType=VARCHAR}, + create_time = #{createTime,jdbcType=TIMESTAMP}, + status = #{status,jdbcType=TINYINT}, + content = #{content,jdbcType=VARCHAR}, + tenant_id = #{tenantId,jdbcType=BIGINT}, + request_url = #{requestUrl,jdbcType=VARCHAR}, + request_params = #{requestParams,jdbcType=LONGVARCHAR}, + response_params = #{responseParams,jdbcType=LONGVARCHAR} + where id = #{id,jdbcType=BIGINT} + + diff --git a/smtERP-boot/src/main/resources/mapper_xml/LogMapperEx.xml b/smtERP-boot/src/main/resources/mapper_xml/LogMapperEx.xml new file mode 100644 index 0000000..c9a9737 --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/LogMapperEx.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + insert into tbl_log (user_id, operation, + client_ip, create_time, status, + content) + values (#{userId,jdbcType=BIGINT}, #{operation,jdbcType=VARCHAR}, + #{clientIp,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}, #{status,jdbcType=TINYINT}, + #{content,jdbcType=VARCHAR}) + + diff --git a/smtERP-boot/src/main/resources/mapper_xml/MaterialAttributeMapper.xml b/smtERP-boot/src/main/resources/mapper_xml/MaterialAttributeMapper.xml new file mode 100644 index 0000000..8c7f6c4 --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/MaterialAttributeMapper.xml @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + id, attribute_name, attribute_value, tenant_id, delete_flag + + + + + delete from tbl_material_attribute + where id = #{id,jdbcType=BIGINT} + + + delete from tbl_material_attribute + + + + + + insert into tbl_material_attribute (id, attribute_name, attribute_value, + tenant_id, delete_flag) + values (#{id,jdbcType=BIGINT}, #{attributeName,jdbcType=VARCHAR}, #{attributeValue,jdbcType=VARCHAR}, + #{tenantId,jdbcType=BIGINT}, #{deleteFlag,jdbcType=VARCHAR}) + + + insert into tbl_material_attribute + + + id, + + + attribute_name, + + + attribute_value, + + + tenant_id, + + + delete_flag, + + + + + #{id,jdbcType=BIGINT}, + + + #{attributeName,jdbcType=VARCHAR}, + + + #{attributeValue,jdbcType=VARCHAR}, + + + #{tenantId,jdbcType=BIGINT}, + + + #{deleteFlag,jdbcType=VARCHAR}, + + + + + + update tbl_material_attribute + + + id = #{record.id,jdbcType=BIGINT}, + + + attribute_name = #{record.attributeName,jdbcType=VARCHAR}, + + + attribute_value = #{record.attributeValue,jdbcType=VARCHAR}, + + + tenant_id = #{record.tenantId,jdbcType=BIGINT}, + + + delete_flag = #{record.deleteFlag,jdbcType=VARCHAR}, + + + + + + + + update tbl_material_attribute + set id = #{record.id,jdbcType=BIGINT}, + attribute_name = #{record.attributeName,jdbcType=VARCHAR}, + attribute_value = #{record.attributeValue,jdbcType=VARCHAR}, + tenant_id = #{record.tenantId,jdbcType=BIGINT}, + delete_flag = #{record.deleteFlag,jdbcType=VARCHAR} + + + + + + update tbl_material_attribute + + + attribute_name = #{attributeName,jdbcType=VARCHAR}, + + + attribute_value = #{attributeValue,jdbcType=VARCHAR}, + + + tenant_id = #{tenantId,jdbcType=BIGINT}, + + + delete_flag = #{deleteFlag,jdbcType=VARCHAR}, + + + where id = #{id,jdbcType=BIGINT} + + + update tbl_material_attribute + set attribute_name = #{attributeName,jdbcType=VARCHAR}, + attribute_value = #{attributeValue,jdbcType=VARCHAR}, + tenant_id = #{tenantId,jdbcType=BIGINT}, + delete_flag = #{deleteFlag,jdbcType=VARCHAR} + where id = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/smtERP-boot/src/main/resources/mapper_xml/MaterialAttributeMapperEx.xml b/smtERP-boot/src/main/resources/mapper_xml/MaterialAttributeMapperEx.xml new file mode 100644 index 0000000..f31262c --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/MaterialAttributeMapperEx.xml @@ -0,0 +1,30 @@ + + + + + + + + update tbl_material_attribute + set delete_flag='1' + where 1=1 + and id in ( + + #{id} + + ) + + \ No newline at end of file diff --git a/smtERP-boot/src/main/resources/mapper_xml/MaterialCategoryMapper.xml b/smtERP-boot/src/main/resources/mapper_xml/MaterialCategoryMapper.xml new file mode 100644 index 0000000..6789da2 --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/MaterialCategoryMapper.xml @@ -0,0 +1,306 @@ + + + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + id, name, category_level, parent_id, sort, serial_no, remark, create_time, update_time, + tenant_id, delete_flag + + + + + delete from tbl_material_category + where id = #{id,jdbcType=BIGINT} + + + delete from tbl_material_category + + + + + + insert into tbl_material_category (id, name, category_level, + parent_id, sort, serial_no, + remark, create_time, update_time, + tenant_id, delete_flag) + values (#{id,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR}, #{categoryLevel,jdbcType=SMALLINT}, + #{parentId,jdbcType=BIGINT}, #{sort,jdbcType=VARCHAR}, #{serialNo,jdbcType=VARCHAR}, + #{remark,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}, + #{tenantId,jdbcType=BIGINT}, #{deleteFlag,jdbcType=VARCHAR}) + + + insert into tbl_material_category + + + id, + + + name, + + + category_level, + + + parent_id, + + + sort, + + + serial_no, + + + remark, + + + create_time, + + + update_time, + + + tenant_id, + + + delete_flag, + + + + + #{id,jdbcType=BIGINT}, + + + #{name,jdbcType=VARCHAR}, + + + #{categoryLevel,jdbcType=SMALLINT}, + + + #{parentId,jdbcType=BIGINT}, + + + #{sort,jdbcType=VARCHAR}, + + + #{serialNo,jdbcType=VARCHAR}, + + + #{remark,jdbcType=VARCHAR}, + + + #{createTime,jdbcType=TIMESTAMP}, + + + #{updateTime,jdbcType=TIMESTAMP}, + + + #{tenantId,jdbcType=BIGINT}, + + + #{deleteFlag,jdbcType=VARCHAR}, + + + + + + update tbl_material_category + + + id = #{record.id,jdbcType=BIGINT}, + + + name = #{record.name,jdbcType=VARCHAR}, + + + category_level = #{record.categoryLevel,jdbcType=SMALLINT}, + + + parent_id = #{record.parentId,jdbcType=BIGINT}, + + + sort = #{record.sort,jdbcType=VARCHAR}, + + + serial_no = #{record.serialNo,jdbcType=VARCHAR}, + + + remark = #{record.remark,jdbcType=VARCHAR}, + + + create_time = #{record.createTime,jdbcType=TIMESTAMP}, + + + update_time = #{record.updateTime,jdbcType=TIMESTAMP}, + + + tenant_id = #{record.tenantId,jdbcType=BIGINT}, + + + delete_flag = #{record.deleteFlag,jdbcType=VARCHAR}, + + + + + + + + update tbl_material_category + set id = #{record.id,jdbcType=BIGINT}, + name = #{record.name,jdbcType=VARCHAR}, + category_level = #{record.categoryLevel,jdbcType=SMALLINT}, + parent_id = #{record.parentId,jdbcType=BIGINT}, + sort = #{record.sort,jdbcType=VARCHAR}, + serial_no = #{record.serialNo,jdbcType=VARCHAR}, + remark = #{record.remark,jdbcType=VARCHAR}, + create_time = #{record.createTime,jdbcType=TIMESTAMP}, + update_time = #{record.updateTime,jdbcType=TIMESTAMP}, + tenant_id = #{record.tenantId,jdbcType=BIGINT}, + delete_flag = #{record.deleteFlag,jdbcType=VARCHAR} + + + + + + update tbl_material_category + + + name = #{name,jdbcType=VARCHAR}, + + + category_level = #{categoryLevel,jdbcType=SMALLINT}, + + + parent_id = #{parentId,jdbcType=BIGINT}, + + + sort = #{sort,jdbcType=VARCHAR}, + + + serial_no = #{serialNo,jdbcType=VARCHAR}, + + + remark = #{remark,jdbcType=VARCHAR}, + + + create_time = #{createTime,jdbcType=TIMESTAMP}, + + + update_time = #{updateTime,jdbcType=TIMESTAMP}, + + + tenant_id = #{tenantId,jdbcType=BIGINT}, + + + delete_flag = #{deleteFlag,jdbcType=VARCHAR}, + + + where id = #{id,jdbcType=BIGINT} + + + update tbl_material_category + set name = #{name,jdbcType=VARCHAR}, + category_level = #{categoryLevel,jdbcType=SMALLINT}, + parent_id = #{parentId,jdbcType=BIGINT}, + sort = #{sort,jdbcType=VARCHAR}, + serial_no = #{serialNo,jdbcType=VARCHAR}, + remark = #{remark,jdbcType=VARCHAR}, + create_time = #{createTime,jdbcType=TIMESTAMP}, + update_time = #{updateTime,jdbcType=TIMESTAMP}, + tenant_id = #{tenantId,jdbcType=BIGINT}, + delete_flag = #{deleteFlag,jdbcType=VARCHAR} + where id = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/smtERP-boot/src/main/resources/mapper_xml/MaterialCategoryMapperEx.xml b/smtERP-boot/src/main/resources/mapper_xml/MaterialCategoryMapperEx.xml new file mode 100644 index 0000000..587bf61 --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/MaterialCategoryMapperEx.xml @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, name + + + + + + + insert into tbl_material_category + (name, category_level, parent_id, sort,status,serial_no,remark, + create_time, update_time) + values + (#{name},#{categoryLevel},#{parentId},#{sort},#{status},#{serialNo},#{remark}, + #{createTime},#{updateTime} + ) + + + update tbl_material_category + set update_time=#{updateTime},delete_flag='1' + where id in ( + + #{id} + + ) + + + update tbl_material_category + set update_time=#{updateTime}, + parent_id=#{parentId},sort=#{sort},serial_no=#{serialNo}, + name=#{name},remark=#{remark} + where id =#{id} + + + + + + + \ No newline at end of file diff --git a/smtERP-boot/src/main/resources/mapper_xml/MaterialCurrentStockMapper.xml b/smtERP-boot/src/main/resources/mapper_xml/MaterialCurrentStockMapper.xml new file mode 100644 index 0000000..7144bd8 --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/MaterialCurrentStockMapper.xml @@ -0,0 +1,243 @@ + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + id, material_id, depot_id, current_number, current_unit_price, tenant_id, delete_flag + + + + + delete from tbl_material_current_stock + where id = #{id,jdbcType=BIGINT} + + + delete from tbl_material_current_stock + + + + + + insert into tbl_material_current_stock (id, material_id, depot_id, + current_number, current_unit_price, tenant_id, + delete_flag) + values (#{id,jdbcType=BIGINT}, #{materialId,jdbcType=BIGINT}, #{depotId,jdbcType=BIGINT}, + #{currentNumber,jdbcType=DECIMAL}, #{currentUnitPrice,jdbcType=DECIMAL}, #{tenantId,jdbcType=BIGINT}, + #{deleteFlag,jdbcType=VARCHAR}) + + + insert into tbl_material_current_stock + + + id, + + + material_id, + + + depot_id, + + + current_number, + + + current_unit_price, + + + tenant_id, + + + delete_flag, + + + + + #{id,jdbcType=BIGINT}, + + + #{materialId,jdbcType=BIGINT}, + + + #{depotId,jdbcType=BIGINT}, + + + #{currentNumber,jdbcType=DECIMAL}, + + + #{currentUnitPrice,jdbcType=DECIMAL}, + + + #{tenantId,jdbcType=BIGINT}, + + + #{deleteFlag,jdbcType=VARCHAR}, + + + + + + update tbl_material_current_stock + + + id = #{record.id,jdbcType=BIGINT}, + + + material_id = #{record.materialId,jdbcType=BIGINT}, + + + depot_id = #{record.depotId,jdbcType=BIGINT}, + + + current_number = #{record.currentNumber,jdbcType=DECIMAL}, + + + current_unit_price = #{record.currentUnitPrice,jdbcType=DECIMAL}, + + + tenant_id = #{record.tenantId,jdbcType=BIGINT}, + + + delete_flag = #{record.deleteFlag,jdbcType=VARCHAR}, + + + + + + + + update tbl_material_current_stock + set id = #{record.id,jdbcType=BIGINT}, + material_id = #{record.materialId,jdbcType=BIGINT}, + depot_id = #{record.depotId,jdbcType=BIGINT}, + current_number = #{record.currentNumber,jdbcType=DECIMAL}, + current_unit_price = #{record.currentUnitPrice,jdbcType=DECIMAL}, + tenant_id = #{record.tenantId,jdbcType=BIGINT}, + delete_flag = #{record.deleteFlag,jdbcType=VARCHAR} + + + + + + update tbl_material_current_stock + + + material_id = #{materialId,jdbcType=BIGINT}, + + + depot_id = #{depotId,jdbcType=BIGINT}, + + + current_number = #{currentNumber,jdbcType=DECIMAL}, + + + current_unit_price = #{currentUnitPrice,jdbcType=DECIMAL}, + + + tenant_id = #{tenantId,jdbcType=BIGINT}, + + + delete_flag = #{deleteFlag,jdbcType=VARCHAR}, + + + where id = #{id,jdbcType=BIGINT} + + + update tbl_material_current_stock + set material_id = #{materialId,jdbcType=BIGINT}, + depot_id = #{depotId,jdbcType=BIGINT}, + current_number = #{currentNumber,jdbcType=DECIMAL}, + current_unit_price = #{currentUnitPrice,jdbcType=DECIMAL}, + tenant_id = #{tenantId,jdbcType=BIGINT}, + delete_flag = #{deleteFlag,jdbcType=VARCHAR} + where id = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/smtERP-boot/src/main/resources/mapper_xml/MaterialCurrentStockMapperEx.xml b/smtERP-boot/src/main/resources/mapper_xml/MaterialCurrentStockMapperEx.xml new file mode 100644 index 0000000..409d2b6 --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/MaterialCurrentStockMapperEx.xml @@ -0,0 +1,49 @@ + + + + + + insert into tbl_material_current_stock (material_id, depot_id, current_number) + values + + (#{item.materialId,jdbcType=BIGINT}, #{item.depotId,jdbcType=BIGINT},#{item.currentNumber,jdbcType=DECIMAL}) + + + + + + + update tbl_material_current_stock set current_unit_price = #{currentUnitPrice} + where material_id = #{materialId} + and ifnull(delete_flag,'0') !='1' + + + + + + update tbl_material_current_stock + set delete_flag='1' + where 1=1 + and depot_id in ( + + #{id} + + ) + + + diff --git a/smtERP-boot/src/main/resources/mapper_xml/MaterialExtendMapper.xml b/smtERP-boot/src/main/resources/mapper_xml/MaterialExtendMapper.xml new file mode 100644 index 0000000..798623d --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/MaterialExtendMapper.xml @@ -0,0 +1,386 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + id, material_id, bar_code, commodity_unit, sku, purchase_decimal, commodity_decimal, + wholesale_decimal, low_decimal, default_flag, create_time, create_serial, update_serial, + update_time, tenant_id, delete_Flag + + + + + delete from tbl_material_extend + where id = #{id,jdbcType=BIGINT} + + + delete from tbl_material_extend + + + + + + insert into tbl_material_extend (id, material_id, bar_code, + commodity_unit, sku, purchase_decimal, + commodity_decimal, wholesale_decimal, low_decimal, + default_flag, create_time, create_serial, + update_serial, update_time, tenant_id, + delete_Flag) + values (#{id,jdbcType=BIGINT}, #{materialId,jdbcType=BIGINT}, #{barCode,jdbcType=VARCHAR}, + #{commodityUnit,jdbcType=VARCHAR}, #{sku,jdbcType=VARCHAR}, #{purchaseDecimal,jdbcType=DECIMAL}, + #{commodityDecimal,jdbcType=DECIMAL}, #{wholesaleDecimal,jdbcType=DECIMAL}, #{lowDecimal,jdbcType=DECIMAL}, + #{defaultFlag,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}, #{createSerial,jdbcType=VARCHAR}, + #{updateSerial,jdbcType=VARCHAR}, #{updateTime,jdbcType=BIGINT}, #{tenantId,jdbcType=BIGINT}, + #{deleteFlag,jdbcType=VARCHAR}) + + + insert into tbl_material_extend + + + id, + + + material_id, + + + bar_code, + + + commodity_unit, + + + sku, + + + purchase_decimal, + + + commodity_decimal, + + + wholesale_decimal, + + + low_decimal, + + + default_flag, + + + create_time, + + + create_serial, + + + update_serial, + + + update_time, + + + tenant_id, + + + delete_Flag, + + + + + #{id,jdbcType=BIGINT}, + + + #{materialId,jdbcType=BIGINT}, + + + #{barCode,jdbcType=VARCHAR}, + + + #{commodityUnit,jdbcType=VARCHAR}, + + + #{sku,jdbcType=VARCHAR}, + + + #{purchaseDecimal,jdbcType=DECIMAL}, + + + #{commodityDecimal,jdbcType=DECIMAL}, + + + #{wholesaleDecimal,jdbcType=DECIMAL}, + + + #{lowDecimal,jdbcType=DECIMAL}, + + + #{defaultFlag,jdbcType=VARCHAR}, + + + #{createTime,jdbcType=TIMESTAMP}, + + + #{createSerial,jdbcType=VARCHAR}, + + + #{updateSerial,jdbcType=VARCHAR}, + + + #{updateTime,jdbcType=BIGINT}, + + + #{tenantId,jdbcType=BIGINT}, + + + #{deleteFlag,jdbcType=VARCHAR}, + + + + + + update tbl_material_extend + + + id = #{record.id,jdbcType=BIGINT}, + + + material_id = #{record.materialId,jdbcType=BIGINT}, + + + bar_code = #{record.barCode,jdbcType=VARCHAR}, + + + commodity_unit = #{record.commodityUnit,jdbcType=VARCHAR}, + + + sku = #{record.sku,jdbcType=VARCHAR}, + + + purchase_decimal = #{record.purchaseDecimal,jdbcType=DECIMAL}, + + + commodity_decimal = #{record.commodityDecimal,jdbcType=DECIMAL}, + + + wholesale_decimal = #{record.wholesaleDecimal,jdbcType=DECIMAL}, + + + low_decimal = #{record.lowDecimal,jdbcType=DECIMAL}, + + + default_flag = #{record.defaultFlag,jdbcType=VARCHAR}, + + + create_time = #{record.createTime,jdbcType=TIMESTAMP}, + + + create_serial = #{record.createSerial,jdbcType=VARCHAR}, + + + update_serial = #{record.updateSerial,jdbcType=VARCHAR}, + + + update_time = #{record.updateTime,jdbcType=BIGINT}, + + + tenant_id = #{record.tenantId,jdbcType=BIGINT}, + + + delete_Flag = #{record.deleteFlag,jdbcType=VARCHAR}, + + + + + + + + update tbl_material_extend + set id = #{record.id,jdbcType=BIGINT}, + material_id = #{record.materialId,jdbcType=BIGINT}, + bar_code = #{record.barCode,jdbcType=VARCHAR}, + commodity_unit = #{record.commodityUnit,jdbcType=VARCHAR}, + sku = #{record.sku,jdbcType=VARCHAR}, + purchase_decimal = #{record.purchaseDecimal,jdbcType=DECIMAL}, + commodity_decimal = #{record.commodityDecimal,jdbcType=DECIMAL}, + wholesale_decimal = #{record.wholesaleDecimal,jdbcType=DECIMAL}, + low_decimal = #{record.lowDecimal,jdbcType=DECIMAL}, + default_flag = #{record.defaultFlag,jdbcType=VARCHAR}, + create_time = #{record.createTime,jdbcType=TIMESTAMP}, + create_serial = #{record.createSerial,jdbcType=VARCHAR}, + update_serial = #{record.updateSerial,jdbcType=VARCHAR}, + update_time = #{record.updateTime,jdbcType=BIGINT}, + tenant_id = #{record.tenantId,jdbcType=BIGINT}, + delete_Flag = #{record.deleteFlag,jdbcType=VARCHAR} + + + + + + update tbl_material_extend + + + material_id = #{materialId,jdbcType=BIGINT}, + + + bar_code = #{barCode,jdbcType=VARCHAR}, + + + commodity_unit = #{commodityUnit,jdbcType=VARCHAR}, + + + sku = #{sku,jdbcType=VARCHAR}, + + + purchase_decimal = #{purchaseDecimal,jdbcType=DECIMAL}, + + + commodity_decimal = #{commodityDecimal,jdbcType=DECIMAL}, + + + wholesale_decimal = #{wholesaleDecimal,jdbcType=DECIMAL}, + + + low_decimal = #{lowDecimal,jdbcType=DECIMAL}, + + + default_flag = #{defaultFlag,jdbcType=VARCHAR}, + + + create_time = #{createTime,jdbcType=TIMESTAMP}, + + + create_serial = #{createSerial,jdbcType=VARCHAR}, + + + update_serial = #{updateSerial,jdbcType=VARCHAR}, + + + update_time = #{updateTime,jdbcType=BIGINT}, + + + tenant_id = #{tenantId,jdbcType=BIGINT}, + + + delete_Flag = #{deleteFlag,jdbcType=VARCHAR}, + + + where id = #{id,jdbcType=BIGINT} + + + update tbl_material_extend + set material_id = #{materialId,jdbcType=BIGINT}, + bar_code = #{barCode,jdbcType=VARCHAR}, + commodity_unit = #{commodityUnit,jdbcType=VARCHAR}, + sku = #{sku,jdbcType=VARCHAR}, + purchase_decimal = #{purchaseDecimal,jdbcType=DECIMAL}, + commodity_decimal = #{commodityDecimal,jdbcType=DECIMAL}, + wholesale_decimal = #{wholesaleDecimal,jdbcType=DECIMAL}, + low_decimal = #{lowDecimal,jdbcType=DECIMAL}, + default_flag = #{defaultFlag,jdbcType=VARCHAR}, + create_time = #{createTime,jdbcType=TIMESTAMP}, + create_serial = #{createSerial,jdbcType=VARCHAR}, + update_serial = #{updateSerial,jdbcType=VARCHAR}, + update_time = #{updateTime,jdbcType=BIGINT}, + tenant_id = #{tenantId,jdbcType=BIGINT}, + delete_Flag = #{deleteFlag,jdbcType=VARCHAR} + where id = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/smtERP-boot/src/main/resources/mapper_xml/MaterialExtendMapperEx.xml b/smtERP-boot/src/main/resources/mapper_xml/MaterialExtendMapperEx.xml new file mode 100644 index 0000000..6ade31c --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/MaterialExtendMapperEx.xml @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + update tbl_material_extend + set delete_Flag='1' + where 1=1 + and ifnull(delete_Flag,'0') !='1' + and id in ( + + #{id} + + ) + + + + update tbl_material_extend + set delete_Flag='1' + where 1=1 + and ifnull(delete_Flag,'0') !='1' + and material_id in ( + + #{id} + + ) + + + + update tbl_material_extend + set purchase_decimal = #{purchaseDecimal,jdbcType=DECIMAL}, + commodity_decimal = #{commodityDecimal,jdbcType=DECIMAL}, + wholesale_decimal = #{wholesaleDecimal,jdbcType=DECIMAL}, + low_decimal = #{lowDecimal,jdbcType=DECIMAL} + where id = #{id,jdbcType=BIGINT} + and ifnull(delete_flag,'0') !='1' + + + + \ No newline at end of file diff --git a/smtERP-boot/src/main/resources/mapper_xml/MaterialInitialStockMapper.xml b/smtERP-boot/src/main/resources/mapper_xml/MaterialInitialStockMapper.xml new file mode 100644 index 0000000..44ed090 --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/MaterialInitialStockMapper.xml @@ -0,0 +1,258 @@ + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + id, material_id, depot_id, number, low_safe_stock, high_safe_stock, tenant_id, delete_flag + + + + + delete from tbl_material_initial_stock + where id = #{id,jdbcType=BIGINT} + + + delete from tbl_material_initial_stock + + + + + + insert into tbl_material_initial_stock (id, material_id, depot_id, + number, low_safe_stock, high_safe_stock, + tenant_id, delete_flag) + values (#{id,jdbcType=BIGINT}, #{materialId,jdbcType=BIGINT}, #{depotId,jdbcType=BIGINT}, + #{number,jdbcType=DECIMAL}, #{lowSafeStock,jdbcType=DECIMAL}, #{highSafeStock,jdbcType=DECIMAL}, + #{tenantId,jdbcType=BIGINT}, #{deleteFlag,jdbcType=VARCHAR}) + + + insert into tbl_material_initial_stock + + + id, + + + material_id, + + + depot_id, + + + number, + + + low_safe_stock, + + + high_safe_stock, + + + tenant_id, + + + delete_flag, + + + + + #{id,jdbcType=BIGINT}, + + + #{materialId,jdbcType=BIGINT}, + + + #{depotId,jdbcType=BIGINT}, + + + #{number,jdbcType=DECIMAL}, + + + #{lowSafeStock,jdbcType=DECIMAL}, + + + #{highSafeStock,jdbcType=DECIMAL}, + + + #{tenantId,jdbcType=BIGINT}, + + + #{deleteFlag,jdbcType=VARCHAR}, + + + + + + update tbl_material_initial_stock + + + id = #{record.id,jdbcType=BIGINT}, + + + material_id = #{record.materialId,jdbcType=BIGINT}, + + + depot_id = #{record.depotId,jdbcType=BIGINT}, + + + number = #{record.number,jdbcType=DECIMAL}, + + + low_safe_stock = #{record.lowSafeStock,jdbcType=DECIMAL}, + + + high_safe_stock = #{record.highSafeStock,jdbcType=DECIMAL}, + + + tenant_id = #{record.tenantId,jdbcType=BIGINT}, + + + delete_flag = #{record.deleteFlag,jdbcType=VARCHAR}, + + + + + + + + update tbl_material_initial_stock + set id = #{record.id,jdbcType=BIGINT}, + material_id = #{record.materialId,jdbcType=BIGINT}, + depot_id = #{record.depotId,jdbcType=BIGINT}, + number = #{record.number,jdbcType=DECIMAL}, + low_safe_stock = #{record.lowSafeStock,jdbcType=DECIMAL}, + high_safe_stock = #{record.highSafeStock,jdbcType=DECIMAL}, + tenant_id = #{record.tenantId,jdbcType=BIGINT}, + delete_flag = #{record.deleteFlag,jdbcType=VARCHAR} + + + + + + update tbl_material_initial_stock + + + material_id = #{materialId,jdbcType=BIGINT}, + + + depot_id = #{depotId,jdbcType=BIGINT}, + + + number = #{number,jdbcType=DECIMAL}, + + + low_safe_stock = #{lowSafeStock,jdbcType=DECIMAL}, + + + high_safe_stock = #{highSafeStock,jdbcType=DECIMAL}, + + + tenant_id = #{tenantId,jdbcType=BIGINT}, + + + delete_flag = #{deleteFlag,jdbcType=VARCHAR}, + + + where id = #{id,jdbcType=BIGINT} + + + update tbl_material_initial_stock + set material_id = #{materialId,jdbcType=BIGINT}, + depot_id = #{depotId,jdbcType=BIGINT}, + number = #{number,jdbcType=DECIMAL}, + low_safe_stock = #{lowSafeStock,jdbcType=DECIMAL}, + high_safe_stock = #{highSafeStock,jdbcType=DECIMAL}, + tenant_id = #{tenantId,jdbcType=BIGINT}, + delete_flag = #{deleteFlag,jdbcType=VARCHAR} + where id = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/smtERP-boot/src/main/resources/mapper_xml/MaterialInitialStockMapperEx.xml b/smtERP-boot/src/main/resources/mapper_xml/MaterialInitialStockMapperEx.xml new file mode 100644 index 0000000..e1f7955 --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/MaterialInitialStockMapperEx.xml @@ -0,0 +1,41 @@ + + + + + + insert into tbl_material_initial_stock (material_id, depot_id, number) + values + + (#{item.materialId,jdbcType=BIGINT}, #{item.depotId,jdbcType=BIGINT},#{item.number,jdbcType=DECIMAL}) + + + + + + + + + + update tbl_material_initial_stock + set delete_flag='1' + where 1=1 + and depot_id in ( + + #{id} + + ) + + + \ No newline at end of file diff --git a/smtERP-boot/src/main/resources/mapper_xml/MaterialMapper.xml b/smtERP-boot/src/main/resources/mapper_xml/MaterialMapper.xml new file mode 100644 index 0000000..a28c5c4 --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/MaterialMapper.xml @@ -0,0 +1,527 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + id, category_id, name, mfrs, model, standard, brand, mnemonic, color, unit, remark, + img_name, unit_id, expiry_num, weight, enabled, other_field1, other_field2, other_field3, + enable_serial_number, enable_batch_number, position, attribute, tenant_id, delete_flag + + + + + delete from tbl_material + where id = #{id,jdbcType=BIGINT} + + + delete from tbl_material + + + + + + insert into tbl_material (id, category_id, name, + mfrs, model, standard, + brand, mnemonic, color, + unit, remark, img_name, + unit_id, expiry_num, weight, + enabled, other_field1, other_field2, + other_field3, enable_serial_number, enable_batch_number, + position, attribute, tenant_id, + delete_flag) + values (#{id,jdbcType=BIGINT}, #{categoryId,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR}, + #{mfrs,jdbcType=VARCHAR}, #{model,jdbcType=VARCHAR}, #{standard,jdbcType=VARCHAR}, + #{brand,jdbcType=VARCHAR}, #{mnemonic,jdbcType=VARCHAR}, #{color,jdbcType=VARCHAR}, + #{unit,jdbcType=VARCHAR}, #{remark,jdbcType=VARCHAR}, #{imgName,jdbcType=VARCHAR}, + #{unitId,jdbcType=BIGINT}, #{expiryNum,jdbcType=INTEGER}, #{weight,jdbcType=DECIMAL}, + #{enabled,jdbcType=BIT}, #{otherField1,jdbcType=VARCHAR}, #{otherField2,jdbcType=VARCHAR}, + #{otherField3,jdbcType=VARCHAR}, #{enableSerialNumber,jdbcType=VARCHAR}, #{enableBatchNumber,jdbcType=VARCHAR}, + #{position,jdbcType=VARCHAR}, #{attribute,jdbcType=VARCHAR}, #{tenantId,jdbcType=BIGINT}, + #{deleteFlag,jdbcType=VARCHAR}) + + + insert into tbl_material + + + id, + + + category_id, + + + name, + + + mfrs, + + + model, + + + standard, + + + brand, + + + mnemonic, + + + color, + + + unit, + + + remark, + + + img_name, + + + unit_id, + + + expiry_num, + + + weight, + + + enabled, + + + other_field1, + + + other_field2, + + + other_field3, + + + enable_serial_number, + + + enable_batch_number, + + + position, + + + attribute, + + + tenant_id, + + + delete_flag, + + + + + #{id,jdbcType=BIGINT}, + + + #{categoryId,jdbcType=BIGINT}, + + + #{name,jdbcType=VARCHAR}, + + + #{mfrs,jdbcType=VARCHAR}, + + + #{model,jdbcType=VARCHAR}, + + + #{standard,jdbcType=VARCHAR}, + + + #{brand,jdbcType=VARCHAR}, + + + #{mnemonic,jdbcType=VARCHAR}, + + + #{color,jdbcType=VARCHAR}, + + + #{unit,jdbcType=VARCHAR}, + + + #{remark,jdbcType=VARCHAR}, + + + #{imgName,jdbcType=VARCHAR}, + + + #{unitId,jdbcType=BIGINT}, + + + #{expiryNum,jdbcType=INTEGER}, + + + #{weight,jdbcType=DECIMAL}, + + + #{enabled,jdbcType=BIT}, + + + #{otherField1,jdbcType=VARCHAR}, + + + #{otherField2,jdbcType=VARCHAR}, + + + #{otherField3,jdbcType=VARCHAR}, + + + #{enableSerialNumber,jdbcType=VARCHAR}, + + + #{enableBatchNumber,jdbcType=VARCHAR}, + + + #{position,jdbcType=VARCHAR}, + + + #{attribute,jdbcType=VARCHAR}, + + + #{tenantId,jdbcType=BIGINT}, + + + #{deleteFlag,jdbcType=VARCHAR}, + + + + + + update tbl_material + + + id = #{record.id,jdbcType=BIGINT}, + + + category_id = #{record.categoryId,jdbcType=BIGINT}, + + + name = #{record.name,jdbcType=VARCHAR}, + + + mfrs = #{record.mfrs,jdbcType=VARCHAR}, + + + model = #{record.model,jdbcType=VARCHAR}, + + + standard = #{record.standard,jdbcType=VARCHAR}, + + + brand = #{record.brand,jdbcType=VARCHAR}, + + + mnemonic = #{record.mnemonic,jdbcType=VARCHAR}, + + + color = #{record.color,jdbcType=VARCHAR}, + + + unit = #{record.unit,jdbcType=VARCHAR}, + + + remark = #{record.remark,jdbcType=VARCHAR}, + + + img_name = #{record.imgName,jdbcType=VARCHAR}, + + + unit_id = #{record.unitId,jdbcType=BIGINT}, + + + expiry_num = #{record.expiryNum,jdbcType=INTEGER}, + + + weight = #{record.weight,jdbcType=DECIMAL}, + + + enabled = #{record.enabled,jdbcType=BIT}, + + + other_field1 = #{record.otherField1,jdbcType=VARCHAR}, + + + other_field2 = #{record.otherField2,jdbcType=VARCHAR}, + + + other_field3 = #{record.otherField3,jdbcType=VARCHAR}, + + + enable_serial_number = #{record.enableSerialNumber,jdbcType=VARCHAR}, + + + enable_batch_number = #{record.enableBatchNumber,jdbcType=VARCHAR}, + + + position = #{record.position,jdbcType=VARCHAR}, + + + attribute = #{record.attribute,jdbcType=VARCHAR}, + + + tenant_id = #{record.tenantId,jdbcType=BIGINT}, + + + delete_flag = #{record.deleteFlag,jdbcType=VARCHAR}, + + + + + + + + update tbl_material + set id = #{record.id,jdbcType=BIGINT}, + category_id = #{record.categoryId,jdbcType=BIGINT}, + name = #{record.name,jdbcType=VARCHAR}, + mfrs = #{record.mfrs,jdbcType=VARCHAR}, + model = #{record.model,jdbcType=VARCHAR}, + standard = #{record.standard,jdbcType=VARCHAR}, + brand = #{record.brand,jdbcType=VARCHAR}, + mnemonic = #{record.mnemonic,jdbcType=VARCHAR}, + color = #{record.color,jdbcType=VARCHAR}, + unit = #{record.unit,jdbcType=VARCHAR}, + remark = #{record.remark,jdbcType=VARCHAR}, + img_name = #{record.imgName,jdbcType=VARCHAR}, + unit_id = #{record.unitId,jdbcType=BIGINT}, + expiry_num = #{record.expiryNum,jdbcType=INTEGER}, + weight = #{record.weight,jdbcType=DECIMAL}, + enabled = #{record.enabled,jdbcType=BIT}, + other_field1 = #{record.otherField1,jdbcType=VARCHAR}, + other_field2 = #{record.otherField2,jdbcType=VARCHAR}, + other_field3 = #{record.otherField3,jdbcType=VARCHAR}, + enable_serial_number = #{record.enableSerialNumber,jdbcType=VARCHAR}, + enable_batch_number = #{record.enableBatchNumber,jdbcType=VARCHAR}, + position = #{record.position,jdbcType=VARCHAR}, + attribute = #{record.attribute,jdbcType=VARCHAR}, + tenant_id = #{record.tenantId,jdbcType=BIGINT}, + delete_flag = #{record.deleteFlag,jdbcType=VARCHAR} + + + + + + update tbl_material + + + category_id = #{categoryId,jdbcType=BIGINT}, + + + name = #{name,jdbcType=VARCHAR}, + + + mfrs = #{mfrs,jdbcType=VARCHAR}, + + + model = #{model,jdbcType=VARCHAR}, + + + standard = #{standard,jdbcType=VARCHAR}, + + + brand = #{brand,jdbcType=VARCHAR}, + + + mnemonic = #{mnemonic,jdbcType=VARCHAR}, + + + color = #{color,jdbcType=VARCHAR}, + + + unit = #{unit,jdbcType=VARCHAR}, + + + remark = #{remark,jdbcType=VARCHAR}, + + + img_name = #{imgName,jdbcType=VARCHAR}, + + + unit_id = #{unitId,jdbcType=BIGINT}, + + + expiry_num = #{expiryNum,jdbcType=INTEGER}, + + + weight = #{weight,jdbcType=DECIMAL}, + + + enabled = #{enabled,jdbcType=BIT}, + + + other_field1 = #{otherField1,jdbcType=VARCHAR}, + + + other_field2 = #{otherField2,jdbcType=VARCHAR}, + + + other_field3 = #{otherField3,jdbcType=VARCHAR}, + + + enable_serial_number = #{enableSerialNumber,jdbcType=VARCHAR}, + + + enable_batch_number = #{enableBatchNumber,jdbcType=VARCHAR}, + + + position = #{position,jdbcType=VARCHAR}, + + + attribute = #{attribute,jdbcType=VARCHAR}, + + + tenant_id = #{tenantId,jdbcType=BIGINT}, + + + delete_flag = #{deleteFlag,jdbcType=VARCHAR}, + + + where id = #{id,jdbcType=BIGINT} + + + update tbl_material + set category_id = #{categoryId,jdbcType=BIGINT}, + name = #{name,jdbcType=VARCHAR}, + mfrs = #{mfrs,jdbcType=VARCHAR}, + model = #{model,jdbcType=VARCHAR}, + standard = #{standard,jdbcType=VARCHAR}, + brand = #{brand,jdbcType=VARCHAR}, + mnemonic = #{mnemonic,jdbcType=VARCHAR}, + color = #{color,jdbcType=VARCHAR}, + unit = #{unit,jdbcType=VARCHAR}, + remark = #{remark,jdbcType=VARCHAR}, + img_name = #{imgName,jdbcType=VARCHAR}, + unit_id = #{unitId,jdbcType=BIGINT}, + expiry_num = #{expiryNum,jdbcType=INTEGER}, + weight = #{weight,jdbcType=DECIMAL}, + enabled = #{enabled,jdbcType=BIT}, + other_field1 = #{otherField1,jdbcType=VARCHAR}, + other_field2 = #{otherField2,jdbcType=VARCHAR}, + other_field3 = #{otherField3,jdbcType=VARCHAR}, + enable_serial_number = #{enableSerialNumber,jdbcType=VARCHAR}, + enable_batch_number = #{enableBatchNumber,jdbcType=VARCHAR}, + position = #{position,jdbcType=VARCHAR}, + attribute = #{attribute,jdbcType=VARCHAR}, + tenant_id = #{tenantId,jdbcType=BIGINT}, + delete_flag = #{deleteFlag,jdbcType=VARCHAR} + where id = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/smtERP-boot/src/main/resources/mapper_xml/MaterialMapperEx.xml b/smtERP-boot/src/main/resources/mapper_xml/MaterialMapperEx.xml new file mode 100644 index 0000000..0478aa3 --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/MaterialMapperEx.xml @@ -0,0 +1,856 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + insert into tbl_material + + + id, + + + category_id, + + + name, + + + mfrs, + + + model, + + + standard, + + + brand, + + + mnemonic, + + + color, + + + unit, + + + remark, + + + img_name, + + + unit_id, + + + expiry_num, + + + weight, + + + enabled, + + + other_field1, + + + other_field2, + + + other_field3, + + + enable_serial_number, + + + enable_batch_number, + + + position, + + + attribute, + + + tenant_id, + + + delete_flag, + + + + + #{id,jdbcType=BIGINT}, + + + #{categoryId,jdbcType=BIGINT}, + + + #{name,jdbcType=VARCHAR}, + + + #{mfrs,jdbcType=VARCHAR}, + + + #{model,jdbcType=VARCHAR}, + + + #{standard,jdbcType=VARCHAR}, + + + #{brand,jdbcType=VARCHAR}, + + + #{mnemonic,jdbcType=VARCHAR}, + + + #{color,jdbcType=VARCHAR}, + + + #{unit,jdbcType=VARCHAR}, + + + #{remark,jdbcType=VARCHAR}, + + + #{imgName,jdbcType=VARCHAR}, + + + #{unitId,jdbcType=BIGINT}, + + + #{expiryNum,jdbcType=INTEGER}, + + + #{weight,jdbcType=DECIMAL}, + + + #{enabled,jdbcType=BIT}, + + + #{otherField1,jdbcType=VARCHAR}, + + + #{otherField2,jdbcType=VARCHAR}, + + + #{otherField3,jdbcType=VARCHAR}, + + + #{enableSerialNumber,jdbcType=VARCHAR}, + + + #{enableBatchNumber,jdbcType=VARCHAR}, + + + #{position,jdbcType=VARCHAR}, + + + #{attribute,jdbcType=VARCHAR}, + + + #{tenantId,jdbcType=BIGINT}, + + + #{deleteFlag,jdbcType=VARCHAR}, + + + + + + + + + + + + + + + + + + + + + + + + + + + + update tbl_material + set delete_flag='1' + where 1=1 + and ifnull(delete_flag,'0') !='1' + and id in ( + + #{id} + + ) + + + + + + + + + + + + + + + + update tbl_material + set unit_id = null + where 1=1 + and ifnull(delete_flag,'0') !='1' + and id = #{id} + + + + update tbl_material + set expiry_num = null + where 1=1 + and ifnull(delete_flag,'0') !='1' + and id = #{id} + + + + + + + + + + + + + + + + + diff --git a/smtERP-boot/src/main/resources/mapper_xml/MaterialPropertyMapper.xml b/smtERP-boot/src/main/resources/mapper_xml/MaterialPropertyMapper.xml new file mode 100644 index 0000000..4b4e636 --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/MaterialPropertyMapper.xml @@ -0,0 +1,243 @@ + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + id, native_name, enabled, sort, another_name, tenant_id, delete_flag + + + + + delete from tbl_material_property + where id = #{id,jdbcType=BIGINT} + + + delete from tbl_material_property + + + + + + insert into tbl_material_property (id, native_name, enabled, + sort, another_name, tenant_id, + delete_flag) + values (#{id,jdbcType=BIGINT}, #{nativeName,jdbcType=VARCHAR}, #{enabled,jdbcType=BIT}, + #{sort,jdbcType=VARCHAR}, #{anotherName,jdbcType=VARCHAR}, #{tenantId,jdbcType=BIGINT}, + #{deleteFlag,jdbcType=VARCHAR}) + + + insert into tbl_material_property + + + id, + + + native_name, + + + enabled, + + + sort, + + + another_name, + + + tenant_id, + + + delete_flag, + + + + + #{id,jdbcType=BIGINT}, + + + #{nativeName,jdbcType=VARCHAR}, + + + #{enabled,jdbcType=BIT}, + + + #{sort,jdbcType=VARCHAR}, + + + #{anotherName,jdbcType=VARCHAR}, + + + #{tenantId,jdbcType=BIGINT}, + + + #{deleteFlag,jdbcType=VARCHAR}, + + + + + + update tbl_material_property + + + id = #{record.id,jdbcType=BIGINT}, + + + native_name = #{record.nativeName,jdbcType=VARCHAR}, + + + enabled = #{record.enabled,jdbcType=BIT}, + + + sort = #{record.sort,jdbcType=VARCHAR}, + + + another_name = #{record.anotherName,jdbcType=VARCHAR}, + + + tenant_id = #{record.tenantId,jdbcType=BIGINT}, + + + delete_flag = #{record.deleteFlag,jdbcType=VARCHAR}, + + + + + + + + update tbl_material_property + set id = #{record.id,jdbcType=BIGINT}, + native_name = #{record.nativeName,jdbcType=VARCHAR}, + enabled = #{record.enabled,jdbcType=BIT}, + sort = #{record.sort,jdbcType=VARCHAR}, + another_name = #{record.anotherName,jdbcType=VARCHAR}, + tenant_id = #{record.tenantId,jdbcType=BIGINT}, + delete_flag = #{record.deleteFlag,jdbcType=VARCHAR} + + + + + + update tbl_material_property + + + native_name = #{nativeName,jdbcType=VARCHAR}, + + + enabled = #{enabled,jdbcType=BIT}, + + + sort = #{sort,jdbcType=VARCHAR}, + + + another_name = #{anotherName,jdbcType=VARCHAR}, + + + tenant_id = #{tenantId,jdbcType=BIGINT}, + + + delete_flag = #{deleteFlag,jdbcType=VARCHAR}, + + + where id = #{id,jdbcType=BIGINT} + + + update tbl_material_property + set native_name = #{nativeName,jdbcType=VARCHAR}, + enabled = #{enabled,jdbcType=BIT}, + sort = #{sort,jdbcType=VARCHAR}, + another_name = #{anotherName,jdbcType=VARCHAR}, + tenant_id = #{tenantId,jdbcType=BIGINT}, + delete_flag = #{deleteFlag,jdbcType=VARCHAR} + where id = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/smtERP-boot/src/main/resources/mapper_xml/MaterialPropertyMapperEx.xml b/smtERP-boot/src/main/resources/mapper_xml/MaterialPropertyMapperEx.xml new file mode 100644 index 0000000..fdd270c --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/MaterialPropertyMapperEx.xml @@ -0,0 +1,40 @@ + + + + + + + update tbl_material_property + set delete_flag='1' + where 1=1 + and id in ( + + #{id} + + ) + + + + + + update tbl_material_property + set another_name = #{anotherName} + where native_name = #{nativeName} + and ifnull(delete_flag,'0') !='1' + + \ No newline at end of file diff --git a/smtERP-boot/src/main/resources/mapper_xml/MsgMapper.xml b/smtERP-boot/src/main/resources/mapper_xml/MsgMapper.xml new file mode 100644 index 0000000..9d3f3bc --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/MsgMapper.xml @@ -0,0 +1,275 @@ + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + id, msg_title, msg_content, create_time, type, user_id, status, tenant_id, delete_Flag + + + + + delete from tbl_msg + where id = #{id,jdbcType=BIGINT} + + + delete from tbl_msg + + + + + + insert into tbl_msg (id, msg_title, msg_content, + create_time, type, user_id, + status, tenant_id, delete_Flag + ) + values (#{id,jdbcType=BIGINT}, #{msgTitle,jdbcType=VARCHAR}, #{msgContent,jdbcType=VARCHAR}, + #{createTime,jdbcType=TIMESTAMP}, #{type,jdbcType=VARCHAR}, #{userId,jdbcType=BIGINT}, + #{status,jdbcType=VARCHAR}, #{tenantId,jdbcType=BIGINT}, #{deleteFlag,jdbcType=VARCHAR} + ) + + + insert into tbl_msg + + + id, + + + msg_title, + + + msg_content, + + + create_time, + + + type, + + + user_id, + + + status, + + + tenant_id, + + + delete_Flag, + + + + + #{id,jdbcType=BIGINT}, + + + #{msgTitle,jdbcType=VARCHAR}, + + + #{msgContent,jdbcType=VARCHAR}, + + + #{createTime,jdbcType=TIMESTAMP}, + + + #{type,jdbcType=VARCHAR}, + + + #{userId,jdbcType=BIGINT}, + + + #{status,jdbcType=VARCHAR}, + + + #{tenantId,jdbcType=BIGINT}, + + + #{deleteFlag,jdbcType=VARCHAR}, + + + + + + update tbl_msg + + + id = #{record.id,jdbcType=BIGINT}, + + + msg_title = #{record.msgTitle,jdbcType=VARCHAR}, + + + msg_content = #{record.msgContent,jdbcType=VARCHAR}, + + + create_time = #{record.createTime,jdbcType=TIMESTAMP}, + + + type = #{record.type,jdbcType=VARCHAR}, + + + user_id = #{record.userId,jdbcType=BIGINT}, + + + status = #{record.status,jdbcType=VARCHAR}, + + + tenant_id = #{record.tenantId,jdbcType=BIGINT}, + + + delete_Flag = #{record.deleteFlag,jdbcType=VARCHAR}, + + + + + + + + update tbl_msg + set id = #{record.id,jdbcType=BIGINT}, + msg_title = #{record.msgTitle,jdbcType=VARCHAR}, + msg_content = #{record.msgContent,jdbcType=VARCHAR}, + create_time = #{record.createTime,jdbcType=TIMESTAMP}, + type = #{record.type,jdbcType=VARCHAR}, + user_id = #{record.userId,jdbcType=BIGINT}, + status = #{record.status,jdbcType=VARCHAR}, + tenant_id = #{record.tenantId,jdbcType=BIGINT}, + delete_Flag = #{record.deleteFlag,jdbcType=VARCHAR} + + + + + + update tbl_msg + + + msg_title = #{msgTitle,jdbcType=VARCHAR}, + + + msg_content = #{msgContent,jdbcType=VARCHAR}, + + + create_time = #{createTime,jdbcType=TIMESTAMP}, + + + type = #{type,jdbcType=VARCHAR}, + + + user_id = #{userId,jdbcType=BIGINT}, + + + status = #{status,jdbcType=VARCHAR}, + + + tenant_id = #{tenantId,jdbcType=BIGINT}, + + + delete_Flag = #{deleteFlag,jdbcType=VARCHAR}, + + + where id = #{id,jdbcType=BIGINT} + + + update tbl_msg + set msg_title = #{msgTitle,jdbcType=VARCHAR}, + msg_content = #{msgContent,jdbcType=VARCHAR}, + create_time = #{createTime,jdbcType=TIMESTAMP}, + type = #{type,jdbcType=VARCHAR}, + user_id = #{userId,jdbcType=BIGINT}, + status = #{status,jdbcType=VARCHAR}, + tenant_id = #{tenantId,jdbcType=BIGINT}, + delete_Flag = #{deleteFlag,jdbcType=VARCHAR} + where id = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/smtERP-boot/src/main/resources/mapper_xml/MsgMapperEx.xml b/smtERP-boot/src/main/resources/mapper_xml/MsgMapperEx.xml new file mode 100644 index 0000000..48e80f4 --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/MsgMapperEx.xml @@ -0,0 +1,45 @@ + + + + + + + + + update tbl_msg + set delete_Flag='1' + where 1=1 + and id in ( + + #{id} + + ) + + + + \ No newline at end of file diff --git a/smtERP-boot/src/main/resources/mapper_xml/OrgaUserRelMapper.xml b/smtERP-boot/src/main/resources/mapper_xml/OrgaUserRelMapper.xml new file mode 100644 index 0000000..52d8670 --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/OrgaUserRelMapper.xml @@ -0,0 +1,351 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + id, orga_id, user_id, user_blng_orga_dspl_seq, delete_flag, create_time, creator, + update_time, updater, tenant_id + + + + + + delete from tbl_orga_user_rel + where id = #{id,jdbcType=BIGINT} + + + + delete from tbl_orga_user_rel + + + + + + + insert into tbl_orga_user_rel (id, orga_id, user_id, + user_blng_orga_dspl_seq, delete_flag, create_time, + creator, update_time, updater, + tenant_id) + values (#{id,jdbcType=BIGINT}, #{orgaId,jdbcType=BIGINT}, #{userId,jdbcType=BIGINT}, + #{userBlngOrgaDsplSeq,jdbcType=VARCHAR}, #{deleteFlag,jdbcType=CHAR}, #{createTime,jdbcType=TIMESTAMP}, + #{creator,jdbcType=BIGINT}, #{updateTime,jdbcType=TIMESTAMP}, #{updater,jdbcType=BIGINT}, + #{tenantId,jdbcType=BIGINT}) + + + + insert into tbl_orga_user_rel + + + id, + + + orga_id, + + + user_id, + + + user_blng_orga_dspl_seq, + + + delete_flag, + + + create_time, + + + creator, + + + update_time, + + + updater, + + + tenant_id, + + + + + #{id,jdbcType=BIGINT}, + + + #{orgaId,jdbcType=BIGINT}, + + + #{userId,jdbcType=BIGINT}, + + + #{userBlngOrgaDsplSeq,jdbcType=VARCHAR}, + + + #{deleteFlag,jdbcType=CHAR}, + + + #{createTime,jdbcType=TIMESTAMP}, + + + #{creator,jdbcType=BIGINT}, + + + #{updateTime,jdbcType=TIMESTAMP}, + + + #{updater,jdbcType=BIGINT}, + + + #{tenantId,jdbcType=BIGINT}, + + + + + + + update tbl_orga_user_rel + + + id = #{record.id,jdbcType=BIGINT}, + + + orga_id = #{record.orgaId,jdbcType=BIGINT}, + + + user_id = #{record.userId,jdbcType=BIGINT}, + + + user_blng_orga_dspl_seq = #{record.userBlngOrgaDsplSeq,jdbcType=VARCHAR}, + + + delete_flag = #{record.deleteFlag,jdbcType=CHAR}, + + + create_time = #{record.createTime,jdbcType=TIMESTAMP}, + + + creator = #{record.creator,jdbcType=BIGINT}, + + + update_time = #{record.updateTime,jdbcType=TIMESTAMP}, + + + updater = #{record.updater,jdbcType=BIGINT}, + + + tenant_id = #{record.tenantId,jdbcType=BIGINT}, + + + + + + + + + update tbl_orga_user_rel + set id = #{record.id,jdbcType=BIGINT}, + orga_id = #{record.orgaId,jdbcType=BIGINT}, + user_id = #{record.userId,jdbcType=BIGINT}, + user_blng_orga_dspl_seq = #{record.userBlngOrgaDsplSeq,jdbcType=VARCHAR}, + delete_flag = #{record.deleteFlag,jdbcType=CHAR}, + create_time = #{record.createTime,jdbcType=TIMESTAMP}, + creator = #{record.creator,jdbcType=BIGINT}, + update_time = #{record.updateTime,jdbcType=TIMESTAMP}, + updater = #{record.updater,jdbcType=BIGINT}, + tenant_id = #{record.tenantId,jdbcType=BIGINT} + + + + + + + update tbl_orga_user_rel + + + orga_id = #{orgaId,jdbcType=BIGINT}, + + + user_id = #{userId,jdbcType=BIGINT}, + + + user_blng_orga_dspl_seq = #{userBlngOrgaDsplSeq,jdbcType=VARCHAR}, + + + delete_flag = #{deleteFlag,jdbcType=CHAR}, + + + create_time = #{createTime,jdbcType=TIMESTAMP}, + + + creator = #{creator,jdbcType=BIGINT}, + + + update_time = #{updateTime,jdbcType=TIMESTAMP}, + + + updater = #{updater,jdbcType=BIGINT}, + + + tenant_id = #{tenantId,jdbcType=BIGINT}, + + + where id = #{id,jdbcType=BIGINT} + + + + update tbl_orga_user_rel + set orga_id = #{orgaId,jdbcType=BIGINT}, + user_id = #{userId,jdbcType=BIGINT}, + user_blng_orga_dspl_seq = #{userBlngOrgaDsplSeq,jdbcType=VARCHAR}, + delete_flag = #{deleteFlag,jdbcType=CHAR}, + create_time = #{createTime,jdbcType=TIMESTAMP}, + creator = #{creator,jdbcType=BIGINT}, + update_time = #{updateTime,jdbcType=TIMESTAMP}, + updater = #{updater,jdbcType=BIGINT}, + tenant_id = #{tenantId,jdbcType=BIGINT} + where id = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/smtERP-boot/src/main/resources/mapper_xml/OrgaUserRelMapperEx.xml b/smtERP-boot/src/main/resources/mapper_xml/OrgaUserRelMapperEx.xml new file mode 100644 index 0000000..f637f37 --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/OrgaUserRelMapperEx.xml @@ -0,0 +1,42 @@ + + + + + + + insert into tbl_orga_user_rel (orga_id, user_id, + user_blng_orga_dspl_seq, delete_flag, create_time, + creator, update_time, updater + ) + values (#{orgaId,jdbcType=BIGINT}, #{userId,jdbcType=BIGINT}, + #{userBlngOrgaDsplSeq,jdbcType=VARCHAR}, #{deleteFlag,jdbcType=CHAR}, #{createTime,jdbcType=TIMESTAMP}, + #{creator,jdbcType=BIGINT}, #{updateTime,jdbcType=TIMESTAMP}, #{updater,jdbcType=BIGINT} + ) + + + update tbl_orga_user_rel + + orga_id = #{orgaId}, + + user_id = #{userId}, + + + user_blng_orga_dspl_seq = #{userBlngOrgaDsplSeq}, + + + delete_flag = #{deleteFlag}, + + + update_time = #{updateTime}, + + + updater = #{updater}, + + + where 1=1 + and id=#{id} + + + + diff --git a/smtERP-boot/src/main/resources/mapper_xml/OrganizationMapper.xml b/smtERP-boot/src/main/resources/mapper_xml/OrganizationMapper.xml new file mode 100644 index 0000000..84b6eab --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/OrganizationMapper.xml @@ -0,0 +1,291 @@ + + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + id, org_no, org_abr, parent_id, sort, remark, create_time, update_time, tenant_id, + delete_flag + + + + + delete from tbl_organization + where id = #{id,jdbcType=BIGINT} + + + delete from tbl_organization + + + + + + insert into tbl_organization (id, org_no, org_abr, + parent_id, sort, remark, + create_time, update_time, tenant_id, + delete_flag) + values (#{id,jdbcType=BIGINT}, #{orgNo,jdbcType=VARCHAR}, #{orgAbr,jdbcType=VARCHAR}, + #{parentId,jdbcType=BIGINT}, #{sort,jdbcType=VARCHAR}, #{remark,jdbcType=VARCHAR}, + #{createTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}, #{tenantId,jdbcType=BIGINT}, + #{deleteFlag,jdbcType=VARCHAR}) + + + insert into tbl_organization + + + id, + + + org_no, + + + org_abr, + + + parent_id, + + + sort, + + + remark, + + + create_time, + + + update_time, + + + tenant_id, + + + delete_flag, + + + + + #{id,jdbcType=BIGINT}, + + + #{orgNo,jdbcType=VARCHAR}, + + + #{orgAbr,jdbcType=VARCHAR}, + + + #{parentId,jdbcType=BIGINT}, + + + #{sort,jdbcType=VARCHAR}, + + + #{remark,jdbcType=VARCHAR}, + + + #{createTime,jdbcType=TIMESTAMP}, + + + #{updateTime,jdbcType=TIMESTAMP}, + + + #{tenantId,jdbcType=BIGINT}, + + + #{deleteFlag,jdbcType=VARCHAR}, + + + + + + update tbl_organization + + + id = #{record.id,jdbcType=BIGINT}, + + + org_no = #{record.orgNo,jdbcType=VARCHAR}, + + + org_abr = #{record.orgAbr,jdbcType=VARCHAR}, + + + parent_id = #{record.parentId,jdbcType=BIGINT}, + + + sort = #{record.sort,jdbcType=VARCHAR}, + + + remark = #{record.remark,jdbcType=VARCHAR}, + + + create_time = #{record.createTime,jdbcType=TIMESTAMP}, + + + update_time = #{record.updateTime,jdbcType=TIMESTAMP}, + + + tenant_id = #{record.tenantId,jdbcType=BIGINT}, + + + delete_flag = #{record.deleteFlag,jdbcType=VARCHAR}, + + + + + + + + update tbl_organization + set id = #{record.id,jdbcType=BIGINT}, + org_no = #{record.orgNo,jdbcType=VARCHAR}, + org_abr = #{record.orgAbr,jdbcType=VARCHAR}, + parent_id = #{record.parentId,jdbcType=BIGINT}, + sort = #{record.sort,jdbcType=VARCHAR}, + remark = #{record.remark,jdbcType=VARCHAR}, + create_time = #{record.createTime,jdbcType=TIMESTAMP}, + update_time = #{record.updateTime,jdbcType=TIMESTAMP}, + tenant_id = #{record.tenantId,jdbcType=BIGINT}, + delete_flag = #{record.deleteFlag,jdbcType=VARCHAR} + + + + + + update tbl_organization + + + org_no = #{orgNo,jdbcType=VARCHAR}, + + + org_abr = #{orgAbr,jdbcType=VARCHAR}, + + + parent_id = #{parentId,jdbcType=BIGINT}, + + + sort = #{sort,jdbcType=VARCHAR}, + + + remark = #{remark,jdbcType=VARCHAR}, + + + create_time = #{createTime,jdbcType=TIMESTAMP}, + + + update_time = #{updateTime,jdbcType=TIMESTAMP}, + + + tenant_id = #{tenantId,jdbcType=BIGINT}, + + + delete_flag = #{deleteFlag,jdbcType=VARCHAR}, + + + where id = #{id,jdbcType=BIGINT} + + + update tbl_organization + set org_no = #{orgNo,jdbcType=VARCHAR}, + org_abr = #{orgAbr,jdbcType=VARCHAR}, + parent_id = #{parentId,jdbcType=BIGINT}, + sort = #{sort,jdbcType=VARCHAR}, + remark = #{remark,jdbcType=VARCHAR}, + create_time = #{createTime,jdbcType=TIMESTAMP}, + update_time = #{updateTime,jdbcType=TIMESTAMP}, + tenant_id = #{tenantId,jdbcType=BIGINT}, + delete_flag = #{deleteFlag,jdbcType=VARCHAR} + where id = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/smtERP-boot/src/main/resources/mapper_xml/OrganizationMapperEx.xml b/smtERP-boot/src/main/resources/mapper_xml/OrganizationMapperEx.xml new file mode 100644 index 0000000..a571797 --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/OrganizationMapperEx.xml @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + id, org_abr,org_no + + + + + + + insert into tbl_organization + (org_no, org_abr, delete_flag, + parent_id, sort, remark, + create_time, update_time) + values + (#{orgNo,jdbcType=VARCHAR}, #{orgAbr,jdbcType=VARCHAR}, #{deleteFlag,jdbcType=CHAR}, + #{parentId,jdbcType=BIGINT}, #{sort,jdbcType=VARCHAR}, #{remark,jdbcType=VARCHAR}, + #{createTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}) + + + + update tbl_organization + set update_Time=#{updateTime},delete_flag='1' + where id in ( + + #{id} + + ) + + + update tbl_organization + set update_time=#{updateTime}, + org_no = #{orgNo},org_abr = #{orgAbr}, + parent_id = #{parentId}, sort = #{sort},remark = #{remark} + where id =#{id} + + + + + diff --git a/smtERP-boot/src/main/resources/mapper_xml/PackBomMapper.xml b/smtERP-boot/src/main/resources/mapper_xml/PackBomMapper.xml new file mode 100644 index 0000000..060eb94 --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/PackBomMapper.xml @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + insert into tbl_pack_bom + + bom_number, + bom_name, + product_material_id, + product_material_extend_id, + product_sku, + output_material_id, + output_material_extend_id, + output_sku, + output_number, + version, + enabled, + remark, + create_time, + creator, + tenant_id, + delete_flag, + + + #{bomNumber,jdbcType=VARCHAR}, + #{bomName,jdbcType=VARCHAR}, + #{productMaterialId,jdbcType=BIGINT}, + #{productMaterialExtendId,jdbcType=BIGINT}, + #{productSku,jdbcType=VARCHAR}, + #{outputMaterialId,jdbcType=BIGINT}, + #{outputMaterialExtendId,jdbcType=BIGINT}, + #{outputSku,jdbcType=VARCHAR}, + #{outputNumber,jdbcType=DECIMAL}, + #{version,jdbcType=VARCHAR}, + #{enabled,jdbcType=BIT}, + #{remark,jdbcType=VARCHAR}, + #{createTime,jdbcType=TIMESTAMP}, + #{creator,jdbcType=BIGINT}, + #{tenantId,jdbcType=BIGINT}, + #{deleteFlag,jdbcType=VARCHAR}, + + + + + update tbl_pack_bom + + bom_number = #{bomNumber,jdbcType=VARCHAR}, + bom_name = #{bomName,jdbcType=VARCHAR}, + product_material_id = #{productMaterialId,jdbcType=BIGINT}, + product_material_extend_id = #{productMaterialExtendId,jdbcType=BIGINT}, + product_sku = #{productSku,jdbcType=VARCHAR}, + output_material_id = #{outputMaterialId,jdbcType=BIGINT}, + output_material_extend_id = #{outputMaterialExtendId,jdbcType=BIGINT}, + output_sku = #{outputSku,jdbcType=VARCHAR}, + output_number = #{outputNumber,jdbcType=DECIMAL}, + version = #{version,jdbcType=VARCHAR}, + enabled = #{enabled,jdbcType=BIT}, + remark = #{remark,jdbcType=VARCHAR}, + create_time = #{createTime,jdbcType=TIMESTAMP}, + creator = #{creator,jdbcType=BIGINT}, + tenant_id = #{tenantId,jdbcType=BIGINT}, + delete_flag = #{deleteFlag,jdbcType=VARCHAR}, + + where id = #{id,jdbcType=BIGINT} + + + + update tbl_pack_bom + set delete_flag = '1' + where id in + + #{id} + + and ifnull(delete_flag,'0') !='1' + + + + + + + + insert into tbl_pack_bom_item + + bom_id, + material_id, + material_extend_id, + material_sku, + unit, + quantity, + remark, + tenant_id, + delete_flag, + + + #{bomId,jdbcType=BIGINT}, + #{materialId,jdbcType=BIGINT}, + #{materialExtendId,jdbcType=BIGINT}, + #{materialSku,jdbcType=VARCHAR}, + #{unit,jdbcType=VARCHAR}, + #{quantity,jdbcType=DECIMAL}, + #{remark,jdbcType=VARCHAR}, + #{tenantId,jdbcType=BIGINT}, + #{deleteFlag,jdbcType=VARCHAR}, + + + + + insert into tbl_pack_bom_item (bom_id, material_id, material_extend_id, material_sku, unit, quantity, remark, delete_flag) + values + + (#{item.bomId}, #{item.materialId}, #{item.materialExtendId}, #{item.materialSku}, #{item.unit}, #{item.quantity}, #{item.remark}, '0') + + + + + + + update tbl_pack_bom_item + set delete_flag = '1' + where bom_id = #{bomId} + and ifnull(delete_flag,'0') !='1' + + diff --git a/smtERP-boot/src/main/resources/mapper_xml/PersonMapper.xml b/smtERP-boot/src/main/resources/mapper_xml/PersonMapper.xml new file mode 100644 index 0000000..8f73d1e --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/PersonMapper.xml @@ -0,0 +1,243 @@ + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + id, type, name, enabled, sort, tenant_id, delete_flag + + + + + delete from tbl_person + where id = #{id,jdbcType=BIGINT} + + + delete from tbl_person + + + + + + insert into tbl_person (id, type, name, + enabled, sort, tenant_id, + delete_flag) + values (#{id,jdbcType=BIGINT}, #{type,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, + #{enabled,jdbcType=BIT}, #{sort,jdbcType=VARCHAR}, #{tenantId,jdbcType=BIGINT}, + #{deleteFlag,jdbcType=VARCHAR}) + + + insert into tbl_person + + + id, + + + type, + + + name, + + + enabled, + + + sort, + + + tenant_id, + + + delete_flag, + + + + + #{id,jdbcType=BIGINT}, + + + #{type,jdbcType=VARCHAR}, + + + #{name,jdbcType=VARCHAR}, + + + #{enabled,jdbcType=BIT}, + + + #{sort,jdbcType=VARCHAR}, + + + #{tenantId,jdbcType=BIGINT}, + + + #{deleteFlag,jdbcType=VARCHAR}, + + + + + + update tbl_person + + + id = #{record.id,jdbcType=BIGINT}, + + + type = #{record.type,jdbcType=VARCHAR}, + + + name = #{record.name,jdbcType=VARCHAR}, + + + enabled = #{record.enabled,jdbcType=BIT}, + + + sort = #{record.sort,jdbcType=VARCHAR}, + + + tenant_id = #{record.tenantId,jdbcType=BIGINT}, + + + delete_flag = #{record.deleteFlag,jdbcType=VARCHAR}, + + + + + + + + update tbl_person + set id = #{record.id,jdbcType=BIGINT}, + type = #{record.type,jdbcType=VARCHAR}, + name = #{record.name,jdbcType=VARCHAR}, + enabled = #{record.enabled,jdbcType=BIT}, + sort = #{record.sort,jdbcType=VARCHAR}, + tenant_id = #{record.tenantId,jdbcType=BIGINT}, + delete_flag = #{record.deleteFlag,jdbcType=VARCHAR} + + + + + + update tbl_person + + + type = #{type,jdbcType=VARCHAR}, + + + name = #{name,jdbcType=VARCHAR}, + + + enabled = #{enabled,jdbcType=BIT}, + + + sort = #{sort,jdbcType=VARCHAR}, + + + tenant_id = #{tenantId,jdbcType=BIGINT}, + + + delete_flag = #{deleteFlag,jdbcType=VARCHAR}, + + + where id = #{id,jdbcType=BIGINT} + + + update tbl_person + set type = #{type,jdbcType=VARCHAR}, + name = #{name,jdbcType=VARCHAR}, + enabled = #{enabled,jdbcType=BIT}, + sort = #{sort,jdbcType=VARCHAR}, + tenant_id = #{tenantId,jdbcType=BIGINT}, + delete_flag = #{deleteFlag,jdbcType=VARCHAR} + where id = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/smtERP-boot/src/main/resources/mapper_xml/PersonMapperEx.xml b/smtERP-boot/src/main/resources/mapper_xml/PersonMapperEx.xml new file mode 100644 index 0000000..6c56bce --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/PersonMapperEx.xml @@ -0,0 +1,29 @@ + + + + + + + update tbl_person + set delete_flag='1' + where 1=1 + and id in ( + + #{id} + + ) + + \ No newline at end of file diff --git a/smtERP-boot/src/main/resources/mapper_xml/PlatformConfigMapper.xml b/smtERP-boot/src/main/resources/mapper_xml/PlatformConfigMapper.xml new file mode 100644 index 0000000..4f6d2c4 --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/PlatformConfigMapper.xml @@ -0,0 +1,196 @@ + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + id, platform_key, platform_key_info, platform_value + + + + + delete from tbl_platform_config + where id = #{id,jdbcType=BIGINT} + + + delete from tbl_platform_config + + + + + + insert into tbl_platform_config (id, platform_key, platform_key_info, + platform_value) + values (#{id,jdbcType=BIGINT}, #{platformKey,jdbcType=VARCHAR}, #{platformKeyInfo,jdbcType=VARCHAR}, + #{platformValue,jdbcType=VARCHAR}) + + + insert into tbl_platform_config + + + id, + + + platform_key, + + + platform_key_info, + + + platform_value, + + + + + #{id,jdbcType=BIGINT}, + + + #{platformKey,jdbcType=VARCHAR}, + + + #{platformKeyInfo,jdbcType=VARCHAR}, + + + #{platformValue,jdbcType=VARCHAR}, + + + + + + update tbl_platform_config + + + id = #{record.id,jdbcType=BIGINT}, + + + platform_key = #{record.platformKey,jdbcType=VARCHAR}, + + + platform_key_info = #{record.platformKeyInfo,jdbcType=VARCHAR}, + + + platform_value = #{record.platformValue,jdbcType=VARCHAR}, + + + + + + + + update tbl_platform_config + set id = #{record.id,jdbcType=BIGINT}, + platform_key = #{record.platformKey,jdbcType=VARCHAR}, + platform_key_info = #{record.platformKeyInfo,jdbcType=VARCHAR}, + platform_value = #{record.platformValue,jdbcType=VARCHAR} + + + + + + update tbl_platform_config + + + platform_key = #{platformKey,jdbcType=VARCHAR}, + + + platform_key_info = #{platformKeyInfo,jdbcType=VARCHAR}, + + + platform_value = #{platformValue,jdbcType=VARCHAR}, + + + where id = #{id,jdbcType=BIGINT} + + + update tbl_platform_config + set platform_key = #{platformKey,jdbcType=VARCHAR}, + platform_key_info = #{platformKeyInfo,jdbcType=VARCHAR}, + platform_value = #{platformValue,jdbcType=VARCHAR} + where id = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/smtERP-boot/src/main/resources/mapper_xml/PlatformConfigMapperEx.xml b/smtERP-boot/src/main/resources/mapper_xml/PlatformConfigMapperEx.xml new file mode 100644 index 0000000..6a529d8 --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/PlatformConfigMapperEx.xml @@ -0,0 +1,17 @@ + + + + + + + \ No newline at end of file diff --git a/smtERP-boot/src/main/resources/mapper_xml/ProductionOrderMapper.xml b/smtERP-boot/src/main/resources/mapper_xml/ProductionOrderMapper.xml new file mode 100644 index 0000000..ece45cf --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/ProductionOrderMapper.xml @@ -0,0 +1,273 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + po.*, + (select m2.name from tbl_material m2 where m2.id = po.output_material_id and ifnull(m2.delete_Flag,'0') !='1') as outputMaterialName, + (select pb.bom_name from tbl_pack_bom pb where pb.id = po.bom_id and ifnull(pb.delete_flag,'0') !='1') as bomName, + (select u.username from tbl_user u where u.id = po.creator) as creatorName, + (select u2.username from tbl_user u2 where u2.id = po.audit_by) as auditByName + + + + + + + + + + + + insert into tbl_production_order + + order_number, + source_type, + source_id, + source_number, + product_material_id, + product_material_extend_id, + product_sku, + bom_id, + output_material_id, + output_material_extend_id, + output_sku, + order_quantity, + output_quantity, + finished_quantity, + plan_start_date, + plan_end_date, + actual_start_date, + actual_end_date, + priority, + status, + audit_by, + audit_time, + release_by, + release_time, + close_reason, + remark, + create_time, + creator, + tenant_id, + delete_flag, + + + #{orderNumber,jdbcType=VARCHAR}, + #{sourceType,jdbcType=VARCHAR}, + #{sourceId,jdbcType=BIGINT}, + #{sourceNumber,jdbcType=VARCHAR}, + #{productMaterialId,jdbcType=BIGINT}, + #{productMaterialExtendId,jdbcType=BIGINT}, + #{productSku,jdbcType=VARCHAR}, + #{bomId,jdbcType=BIGINT}, + #{outputMaterialId,jdbcType=BIGINT}, + #{outputMaterialExtendId,jdbcType=BIGINT}, + #{outputSku,jdbcType=VARCHAR}, + #{orderQuantity,jdbcType=DECIMAL}, + #{outputQuantity,jdbcType=DECIMAL}, + #{finishedQuantity,jdbcType=DECIMAL}, + #{planStartDate,jdbcType=TIMESTAMP}, + #{planEndDate,jdbcType=TIMESTAMP}, + #{actualStartDate,jdbcType=TIMESTAMP}, + #{actualEndDate,jdbcType=TIMESTAMP}, + #{priority,jdbcType=VARCHAR}, + #{status,jdbcType=VARCHAR}, + #{auditBy,jdbcType=BIGINT}, + #{auditTime,jdbcType=TIMESTAMP}, + #{releaseBy,jdbcType=BIGINT}, + #{releaseTime,jdbcType=TIMESTAMP}, + #{closeReason,jdbcType=VARCHAR}, + #{remark,jdbcType=VARCHAR}, + #{createTime,jdbcType=TIMESTAMP}, + #{creator,jdbcType=BIGINT}, + #{tenantId,jdbcType=BIGINT}, + #{deleteFlag,jdbcType=VARCHAR}, + + + + + update tbl_production_order + + order_number = #{orderNumber,jdbcType=VARCHAR}, + source_type = #{sourceType,jdbcType=VARCHAR}, + source_id = #{sourceId,jdbcType=BIGINT}, + source_number = #{sourceNumber,jdbcType=VARCHAR}, + product_material_id = #{productMaterialId,jdbcType=BIGINT}, + product_material_extend_id = #{productMaterialExtendId,jdbcType=BIGINT}, + product_sku = #{productSku,jdbcType=VARCHAR}, + bom_id = #{bomId,jdbcType=BIGINT}, + output_material_id = #{outputMaterialId,jdbcType=BIGINT}, + output_material_extend_id = #{outputMaterialExtendId,jdbcType=BIGINT}, + output_sku = #{outputSku,jdbcType=VARCHAR}, + order_quantity = #{orderQuantity,jdbcType=DECIMAL}, + output_quantity = #{outputQuantity,jdbcType=DECIMAL}, + finished_quantity = #{finishedQuantity,jdbcType=DECIMAL}, + plan_start_date = #{planStartDate,jdbcType=TIMESTAMP}, + plan_end_date = #{planEndDate,jdbcType=TIMESTAMP}, + actual_start_date = #{actualStartDate,jdbcType=TIMESTAMP}, + actual_end_date = #{actualEndDate,jdbcType=TIMESTAMP}, + priority = #{priority,jdbcType=VARCHAR}, + status = #{status,jdbcType=VARCHAR}, + audit_by = #{auditBy,jdbcType=BIGINT}, + audit_time = #{auditTime,jdbcType=TIMESTAMP}, + release_by = #{releaseBy,jdbcType=BIGINT}, + release_time = #{releaseTime,jdbcType=TIMESTAMP}, + close_reason = #{closeReason,jdbcType=VARCHAR}, + remark = #{remark,jdbcType=VARCHAR}, + create_time = #{createTime,jdbcType=TIMESTAMP}, + creator = #{creator,jdbcType=BIGINT}, + tenant_id = #{tenantId,jdbcType=BIGINT}, + delete_flag = #{deleteFlag,jdbcType=VARCHAR}, + + where id = #{id,jdbcType=BIGINT} + + + + update tbl_production_order + set status = #{status} + where id = #{id} + + + + update tbl_production_order + set delete_flag = '1' + where id in + + #{id} + + and ifnull(delete_flag,'0') !='1' + + + + + + + + insert into tbl_production_order_log (order_id, order_number, operation_type, operation_desc, operator, create_time, tenant_id) + values (#{orderId}, #{orderNumber}, #{operationType}, #{operationDesc}, #{operator}, #{createTime}, #{tenantId}) + + + + diff --git a/smtERP-boot/src/main/resources/mapper_xml/ProductionReportMapper.xml b/smtERP-boot/src/main/resources/mapper_xml/ProductionReportMapper.xml new file mode 100644 index 0000000..585d929 --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/ProductionReportMapper.xml @@ -0,0 +1,232 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + rp.*, + (select m.name from tbl_material m where m.id = po.output_material_id and ifnull(m.delete_Flag,'0') !='1') as outputMaterialName, + (select d.name from tbl_depot d where d.id = rp.depot_id and ifnull(d.delete_Flag,'0') !='1') as depotName, + (select u.username from tbl_user u where u.id = rp.report_by) as reportByName, + (select u2.username from tbl_user u2 where u2.id = rp.audit_by) as auditByName + + + + + + + + + + insert into tbl_production_report + + report_number, + order_id, + order_number, + finished_quantity, + defect_quantity, + qualified_flag, + depot_id, + in_number, + audit_status, + audit_by, + audit_time, + report_by, + report_date, + remark, + create_time, + creator, + tenant_id, + delete_flag, + + + #{reportNumber,jdbcType=VARCHAR}, + #{orderId,jdbcType=BIGINT}, + #{orderNumber,jdbcType=VARCHAR}, + #{finishedQuantity,jdbcType=DECIMAL}, + #{defectQuantity,jdbcType=DECIMAL}, + #{qualifiedFlag,jdbcType=VARCHAR}, + #{depotId,jdbcType=BIGINT}, + #{inNumber,jdbcType=VARCHAR}, + #{auditStatus,jdbcType=VARCHAR}, + #{auditBy,jdbcType=BIGINT}, + #{auditTime,jdbcType=TIMESTAMP}, + #{reportBy,jdbcType=BIGINT}, + #{reportDate,jdbcType=TIMESTAMP}, + #{remark,jdbcType=VARCHAR}, + #{createTime,jdbcType=TIMESTAMP}, + #{creator,jdbcType=BIGINT}, + #{tenantId,jdbcType=BIGINT}, + #{deleteFlag,jdbcType=VARCHAR}, + + + + + update tbl_production_report + + report_number = #{reportNumber,jdbcType=VARCHAR}, + order_id = #{orderId,jdbcType=BIGINT}, + order_number = #{orderNumber,jdbcType=VARCHAR}, + finished_quantity = #{finishedQuantity,jdbcType=DECIMAL}, + defect_quantity = #{defectQuantity,jdbcType=DECIMAL}, + qualified_flag = #{qualifiedFlag,jdbcType=VARCHAR}, + depot_id = #{depotId,jdbcType=BIGINT}, + in_number = #{inNumber,jdbcType=VARCHAR}, + audit_status = #{auditStatus,jdbcType=VARCHAR}, + audit_by = #{auditBy,jdbcType=BIGINT}, + audit_time = #{auditTime,jdbcType=TIMESTAMP}, + report_by = #{reportBy,jdbcType=BIGINT}, + report_date = #{reportDate,jdbcType=TIMESTAMP}, + remark = #{remark,jdbcType=VARCHAR}, + create_time = #{createTime,jdbcType=TIMESTAMP}, + creator = #{creator,jdbcType=BIGINT}, + tenant_id = #{tenantId,jdbcType=BIGINT}, + delete_flag = #{deleteFlag,jdbcType=VARCHAR}, + + where id = #{id,jdbcType=BIGINT} + + + + update tbl_production_report + set audit_status = #{auditStatus} + where id = #{id} + + + + update tbl_production_report + set delete_flag = '1' + where id in + + #{id} + + and ifnull(delete_flag,'0') !='1' + + + + + + insert into tbl_production_report_item + + report_id, + material_id, + material_extend_id, + material_sku, + unit, + consumption_quantity, + remark, + tenant_id, + delete_flag, + + + #{reportId,jdbcType=BIGINT}, + #{materialId,jdbcType=BIGINT}, + #{materialExtendId,jdbcType=BIGINT}, + #{materialSku,jdbcType=VARCHAR}, + #{unit,jdbcType=VARCHAR}, + #{consumptionQuantity,jdbcType=DECIMAL}, + #{remark,jdbcType=VARCHAR}, + #{tenantId,jdbcType=BIGINT}, + #{deleteFlag,jdbcType=VARCHAR}, + + + + + insert into tbl_production_report_item (report_id, material_id, material_extend_id, material_sku, unit, consumption_quantity, remark, tenant_id, delete_flag) + values + + (#{item.reportId}, #{item.materialId}, #{item.materialExtendId}, #{item.materialSku}, #{item.unit}, #{item.consumptionQuantity}, #{item.remark}, #{item.tenantId}, '0') + + + + + + + update tbl_production_report_item + set delete_flag = '1' + where report_id = #{reportId} + and ifnull(delete_flag,'0') !='1' + + diff --git a/smtERP-boot/src/main/resources/mapper_xml/ProductionRequisitionMapper.xml b/smtERP-boot/src/main/resources/mapper_xml/ProductionRequisitionMapper.xml new file mode 100644 index 0000000..307efc9 --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/ProductionRequisitionMapper.xml @@ -0,0 +1,245 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + pr.*, + (select group_concat(distinct d.name order by d.name separator ',') + from tbl_production_requisition_item pri + left join tbl_depot d on d.id = ifnull(pri.depot_id, pr.depot_id) and ifnull(d.delete_Flag,'0') !='1' + where pri.requisition_id = pr.id and ifnull(pri.delete_flag,'0') !='1') as depotName, + (select u.username from tbl_user u where u.id = pr.creator) as creatorName, + (select u2.username from tbl_user u2 where u2.id = pr.confirm_by) as confirmByName, + (select group_concat(m.name) from tbl_production_requisition_item pri + left join tbl_material m on m.id = pri.material_id and ifnull(m.delete_Flag,'0') !='1' + where pri.requisition_id = pr.id and ifnull(pri.delete_flag,'0') !='1') as materialsList, + (select count(1) from tbl_production_requisition_item pri where pri.requisition_id = pr.id and ifnull(pri.delete_flag,'0') !='1') as itemCount + + + + + + + + + + insert into tbl_production_requisition + + requisition_number, + order_id, + order_number, + depot_id, + status, + confirm_by, + confirm_time, + remark, + create_time, + creator, + tenant_id, + delete_flag, + + + #{requisitionNumber,jdbcType=VARCHAR}, + #{orderId,jdbcType=BIGINT}, + #{orderNumber,jdbcType=VARCHAR}, + #{depotId,jdbcType=BIGINT}, + #{status,jdbcType=VARCHAR}, + #{confirmBy,jdbcType=BIGINT}, + #{confirmTime,jdbcType=TIMESTAMP}, + #{remark,jdbcType=VARCHAR}, + #{createTime,jdbcType=TIMESTAMP}, + #{creator,jdbcType=BIGINT}, + #{tenantId,jdbcType=BIGINT}, + #{deleteFlag,jdbcType=VARCHAR}, + + + + + update tbl_production_requisition + + requisition_number = #{requisitionNumber,jdbcType=VARCHAR}, + order_id = #{orderId,jdbcType=BIGINT}, + order_number = #{orderNumber,jdbcType=VARCHAR}, + depot_id = #{depotId,jdbcType=BIGINT}, + status = #{status,jdbcType=VARCHAR}, + confirm_by = #{confirmBy,jdbcType=BIGINT}, + confirm_time = #{confirmTime,jdbcType=TIMESTAMP}, + remark = #{remark,jdbcType=VARCHAR}, + create_time = #{createTime,jdbcType=TIMESTAMP}, + creator = #{creator,jdbcType=BIGINT}, + tenant_id = #{tenantId,jdbcType=BIGINT}, + delete_flag = #{deleteFlag,jdbcType=VARCHAR}, + + where id = #{id,jdbcType=BIGINT} + + + + update tbl_production_requisition + set status = #{status} + where id = #{id} + + + + update tbl_production_requisition + set delete_flag = '1' + where id in + + #{id} + + and ifnull(delete_flag,'0') !='1' + + + + + + insert into tbl_production_requisition_item + + requisition_id, + depot_id, + material_id, + material_extend_id, + material_sku, + unit, + required_quantity, + issued_quantity, + unit_price, + remark, + tenant_id, + delete_flag, + + + #{requisitionId,jdbcType=BIGINT}, + #{depotId,jdbcType=BIGINT}, + #{materialId,jdbcType=BIGINT}, + #{materialExtendId,jdbcType=BIGINT}, + #{materialSku,jdbcType=VARCHAR}, + #{unit,jdbcType=VARCHAR}, + #{requiredQuantity,jdbcType=DECIMAL}, + #{issuedQuantity,jdbcType=DECIMAL}, + #{unitPrice,jdbcType=DECIMAL}, + #{remark,jdbcType=VARCHAR}, + #{tenantId,jdbcType=BIGINT}, + #{deleteFlag,jdbcType=VARCHAR}, + + + + + insert into tbl_production_requisition_item (requisition_id, depot_id, material_id, material_extend_id, material_sku, unit, required_quantity, issued_quantity, unit_price, remark, tenant_id, delete_flag) + values + + (#{item.requisitionId}, #{item.depotId}, #{item.materialId}, #{item.materialExtendId}, #{item.materialSku}, #{item.unit}, #{item.requiredQuantity}, #{item.issuedQuantity}, #{item.unitPrice}, #{item.remark}, #{item.tenantId}, '0') + + + + + + + update tbl_production_requisition_item + + material_id = #{materialId,jdbcType=BIGINT}, + depot_id = #{depotId,jdbcType=BIGINT}, + material_extend_id = #{materialExtendId,jdbcType=BIGINT}, + material_sku = #{materialSku,jdbcType=VARCHAR}, + unit = #{unit,jdbcType=VARCHAR}, + required_quantity = #{requiredQuantity,jdbcType=DECIMAL}, + issued_quantity = #{issuedQuantity,jdbcType=DECIMAL}, + unit_price = #{unitPrice,jdbcType=DECIMAL}, + remark = #{remark,jdbcType=VARCHAR}, + + where id = #{id,jdbcType=BIGINT} + + + + update tbl_production_requisition_item + set delete_flag = '1' + where requisition_id = #{requisitionId} + and ifnull(delete_flag,'0') !='1' + + diff --git a/smtERP-boot/src/main/resources/mapper_xml/RoleMapper.xml b/smtERP-boot/src/main/resources/mapper_xml/RoleMapper.xml new file mode 100644 index 0000000..4e1c5b4 --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/RoleMapper.xml @@ -0,0 +1,290 @@ + + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + id, name, type, price_limit, value, description, enabled, sort, tenant_id, delete_flag + + + + + delete from tbl_role + where id = #{id,jdbcType=BIGINT} + + + delete from tbl_role + + + + + + insert into tbl_role (id, name, type, + price_limit, value, description, + enabled, sort, tenant_id, + delete_flag) + values (#{id,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR}, #{type,jdbcType=VARCHAR}, + #{priceLimit,jdbcType=VARCHAR}, #{value,jdbcType=VARCHAR}, #{description,jdbcType=VARCHAR}, + #{enabled,jdbcType=BIT}, #{sort,jdbcType=VARCHAR}, #{tenantId,jdbcType=BIGINT}, + #{deleteFlag,jdbcType=VARCHAR}) + + + insert into tbl_role + + + id, + + + name, + + + type, + + + price_limit, + + + value, + + + description, + + + enabled, + + + sort, + + + tenant_id, + + + delete_flag, + + + + + #{id,jdbcType=BIGINT}, + + + #{name,jdbcType=VARCHAR}, + + + #{type,jdbcType=VARCHAR}, + + + #{priceLimit,jdbcType=VARCHAR}, + + + #{value,jdbcType=VARCHAR}, + + + #{description,jdbcType=VARCHAR}, + + + #{enabled,jdbcType=BIT}, + + + #{sort,jdbcType=VARCHAR}, + + + #{tenantId,jdbcType=BIGINT}, + + + #{deleteFlag,jdbcType=VARCHAR}, + + + + + + update tbl_role + + + id = #{record.id,jdbcType=BIGINT}, + + + name = #{record.name,jdbcType=VARCHAR}, + + + type = #{record.type,jdbcType=VARCHAR}, + + + price_limit = #{record.priceLimit,jdbcType=VARCHAR}, + + + value = #{record.value,jdbcType=VARCHAR}, + + + description = #{record.description,jdbcType=VARCHAR}, + + + enabled = #{record.enabled,jdbcType=BIT}, + + + sort = #{record.sort,jdbcType=VARCHAR}, + + + tenant_id = #{record.tenantId,jdbcType=BIGINT}, + + + delete_flag = #{record.deleteFlag,jdbcType=VARCHAR}, + + + + + + + + update tbl_role + set id = #{record.id,jdbcType=BIGINT}, + name = #{record.name,jdbcType=VARCHAR}, + type = #{record.type,jdbcType=VARCHAR}, + price_limit = #{record.priceLimit,jdbcType=VARCHAR}, + value = #{record.value,jdbcType=VARCHAR}, + description = #{record.description,jdbcType=VARCHAR}, + enabled = #{record.enabled,jdbcType=BIT}, + sort = #{record.sort,jdbcType=VARCHAR}, + tenant_id = #{record.tenantId,jdbcType=BIGINT}, + delete_flag = #{record.deleteFlag,jdbcType=VARCHAR} + + + + + + update tbl_role + + + name = #{name,jdbcType=VARCHAR}, + + + type = #{type,jdbcType=VARCHAR}, + + + price_limit = #{priceLimit,jdbcType=VARCHAR}, + + + value = #{value,jdbcType=VARCHAR}, + + + description = #{description,jdbcType=VARCHAR}, + + + enabled = #{enabled,jdbcType=BIT}, + + + sort = #{sort,jdbcType=VARCHAR}, + + + tenant_id = #{tenantId,jdbcType=BIGINT}, + + + delete_flag = #{deleteFlag,jdbcType=VARCHAR}, + + + where id = #{id,jdbcType=BIGINT} + + + update tbl_role + set name = #{name,jdbcType=VARCHAR}, + type = #{type,jdbcType=VARCHAR}, + price_limit = #{priceLimit,jdbcType=VARCHAR}, + value = #{value,jdbcType=VARCHAR}, + description = #{description,jdbcType=VARCHAR}, + enabled = #{enabled,jdbcType=BIT}, + sort = #{sort,jdbcType=VARCHAR}, + tenant_id = #{tenantId,jdbcType=BIGINT}, + delete_flag = #{deleteFlag,jdbcType=VARCHAR} + where id = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/smtERP-boot/src/main/resources/mapper_xml/RoleMapperEx.xml b/smtERP-boot/src/main/resources/mapper_xml/RoleMapperEx.xml new file mode 100644 index 0000000..e138fb0 --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/RoleMapperEx.xml @@ -0,0 +1,38 @@ + + + + + + + + + update tbl_role + set delete_flag='1' + where 1=1 + and id in ( + + #{id} + + ) + + + \ No newline at end of file diff --git a/smtERP-boot/src/main/resources/mapper_xml/SaleShipmentMapper.xml b/smtERP-boot/src/main/resources/mapper_xml/SaleShipmentMapper.xml new file mode 100644 index 0000000..6d1e2fb --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/SaleShipmentMapper.xml @@ -0,0 +1,350 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + insert into tbl_sale_shipment + + shipment_number, + source_type, + delivery_plan_id, + delivery_plan_number, + sale_out_id, + sale_out_number, + sale_order_number, + customer_id, + status, + planned_ship_time, + logistics_company, + logistics_no, + receiver, + receiver_phone, + receiver_address, + notice_remark, + approve_by, + approve_time, + approve_remark, + ship_by, + ship_time, + confirm_by, + confirm_time, + difference_remark, + create_time, + creator, + tenant_id, + delete_flag, + + + #{shipmentNumber}, + #{sourceType}, + #{deliveryPlanId}, + #{deliveryPlanNumber}, + #{saleOutId}, + #{saleOutNumber}, + #{saleOrderNumber}, + #{customerId}, + #{status}, + #{plannedShipTime}, + #{logisticsCompany}, + #{logisticsNo}, + #{receiver}, + #{receiverPhone}, + #{receiverAddress}, + #{noticeRemark}, + #{approveBy}, + #{approveTime}, + #{approveRemark}, + #{shipBy}, + #{shipTime}, + #{confirmBy}, + #{confirmTime}, + #{differenceRemark}, + #{createTime}, + #{creator}, + #{tenantId}, + #{deleteFlag}, + + + + + update tbl_sale_shipment + + status = #{status}, + planned_ship_time = #{plannedShipTime}, + logistics_company = #{logisticsCompany}, + logistics_no = #{logisticsNo}, + receiver = #{receiver}, + receiver_phone = #{receiverPhone}, + receiver_address = #{receiverAddress}, + notice_remark = #{noticeRemark}, + approve_by = #{approveBy}, + approve_time = #{approveTime}, + approve_remark = #{approveRemark}, + ship_by = #{shipBy}, + ship_time = #{shipTime}, + confirm_by = #{confirmBy}, + confirm_time = #{confirmTime}, + difference_remark = #{differenceRemark}, + delete_flag = #{deleteFlag}, + + where id = #{id} + + + + insert into tbl_sale_shipment_item + + shipment_id, + delivery_plan_item_id, + sale_out_item_id, + material_id, + material_extend_id, + bar_code, + material_name, + standard, + model, + unit, + batch_number, + sn_list, + plan_quantity, + actual_quantity, + shipped_quantity, + difference_quantity, + depot_id, + remark, + tenant_id, + delete_flag, + + + #{shipmentId}, + #{deliveryPlanItemId}, + #{saleOutItemId}, + #{materialId}, + #{materialExtendId}, + #{barCode}, + #{materialName}, + #{standard}, + #{model}, + #{unit}, + #{batchNumber}, + #{snList}, + #{planQuantity}, + #{actualQuantity}, + #{shippedQuantity}, + #{differenceQuantity}, + #{depotId}, + #{remark}, + #{tenantId}, + #{deleteFlag}, + + + + + insert into tbl_sale_shipment_item + (shipment_id, delivery_plan_item_id, sale_out_item_id, material_id, material_extend_id, bar_code, material_name, standard, model, + unit, batch_number, sn_list, plan_quantity, actual_quantity, shipped_quantity, difference_quantity, depot_id, + remark, tenant_id, delete_flag) + values + + (#{item.shipmentId}, #{item.deliveryPlanItemId}, #{item.saleOutItemId}, #{item.materialId}, #{item.materialExtendId}, #{item.barCode}, + #{item.materialName}, #{item.standard}, #{item.model}, #{item.unit}, #{item.batchNumber}, #{item.snList}, + #{item.planQuantity}, #{item.actualQuantity}, #{item.shippedQuantity}, #{item.differenceQuantity}, + #{item.depotId}, #{item.remark}, #{item.tenantId}, '0') + + + + + update tbl_sale_shipment_item + set delete_flag = '1' + where shipment_id = #{shipmentId} + and ifnull(delete_flag,'0') != '1' + + + + + + + + + + + diff --git a/smtERP-boot/src/main/resources/mapper_xml/SequenceMapperEx.xml b/smtERP-boot/src/main/resources/mapper_xml/SequenceMapperEx.xml new file mode 100644 index 0000000..ff6c7f4 --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/SequenceMapperEx.xml @@ -0,0 +1,13 @@ + + + + + + update tbl_sequence set current_val = current_val + 1 where seq_name = 'depot_number_seq' + + + + + \ No newline at end of file diff --git a/smtERP-boot/src/main/resources/mapper_xml/SerialNumberMapper.xml b/smtERP-boot/src/main/resources/mapper_xml/SerialNumberMapper.xml new file mode 100644 index 0000000..71cbe96 --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/SerialNumberMapper.xml @@ -0,0 +1,370 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + id, material_id, depot_id, serial_number, is_sell, in_price, remark, delete_flag, + create_time, creator, update_time, updater, in_bill_no, out_bill_no, tenant_id + + + + + delete from tbl_serial_number + where id = #{id,jdbcType=BIGINT} + + + delete from tbl_serial_number + + + + + + insert into tbl_serial_number (id, material_id, depot_id, + serial_number, is_sell, in_price, + remark, delete_flag, create_time, + creator, update_time, updater, + in_bill_no, out_bill_no, tenant_id + ) + values (#{id,jdbcType=BIGINT}, #{materialId,jdbcType=BIGINT}, #{depotId,jdbcType=BIGINT}, + #{serialNumber,jdbcType=VARCHAR}, #{isSell,jdbcType=VARCHAR}, #{inPrice,jdbcType=DECIMAL}, + #{remark,jdbcType=VARCHAR}, #{deleteFlag,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}, + #{creator,jdbcType=BIGINT}, #{updateTime,jdbcType=TIMESTAMP}, #{updater,jdbcType=BIGINT}, + #{inBillNo,jdbcType=VARCHAR}, #{outBillNo,jdbcType=VARCHAR}, #{tenantId,jdbcType=BIGINT} + ) + + + insert into tbl_serial_number + + + id, + + + material_id, + + + depot_id, + + + serial_number, + + + is_sell, + + + in_price, + + + remark, + + + delete_flag, + + + create_time, + + + creator, + + + update_time, + + + updater, + + + in_bill_no, + + + out_bill_no, + + + tenant_id, + + + + + #{id,jdbcType=BIGINT}, + + + #{materialId,jdbcType=BIGINT}, + + + #{depotId,jdbcType=BIGINT}, + + + #{serialNumber,jdbcType=VARCHAR}, + + + #{isSell,jdbcType=VARCHAR}, + + + #{inPrice,jdbcType=DECIMAL}, + + + #{remark,jdbcType=VARCHAR}, + + + #{deleteFlag,jdbcType=VARCHAR}, + + + #{createTime,jdbcType=TIMESTAMP}, + + + #{creator,jdbcType=BIGINT}, + + + #{updateTime,jdbcType=TIMESTAMP}, + + + #{updater,jdbcType=BIGINT}, + + + #{inBillNo,jdbcType=VARCHAR}, + + + #{outBillNo,jdbcType=VARCHAR}, + + + #{tenantId,jdbcType=BIGINT}, + + + + + + update tbl_serial_number + + + id = #{record.id,jdbcType=BIGINT}, + + + material_id = #{record.materialId,jdbcType=BIGINT}, + + + depot_id = #{record.depotId,jdbcType=BIGINT}, + + + serial_number = #{record.serialNumber,jdbcType=VARCHAR}, + + + is_sell = #{record.isSell,jdbcType=VARCHAR}, + + + in_price = #{record.inPrice,jdbcType=DECIMAL}, + + + remark = #{record.remark,jdbcType=VARCHAR}, + + + delete_flag = #{record.deleteFlag,jdbcType=VARCHAR}, + + + create_time = #{record.createTime,jdbcType=TIMESTAMP}, + + + creator = #{record.creator,jdbcType=BIGINT}, + + + update_time = #{record.updateTime,jdbcType=TIMESTAMP}, + + + updater = #{record.updater,jdbcType=BIGINT}, + + + in_bill_no = #{record.inBillNo,jdbcType=VARCHAR}, + + + out_bill_no = #{record.outBillNo,jdbcType=VARCHAR}, + + + tenant_id = #{record.tenantId,jdbcType=BIGINT}, + + + + + + + + update tbl_serial_number + set id = #{record.id,jdbcType=BIGINT}, + material_id = #{record.materialId,jdbcType=BIGINT}, + depot_id = #{record.depotId,jdbcType=BIGINT}, + serial_number = #{record.serialNumber,jdbcType=VARCHAR}, + is_sell = #{record.isSell,jdbcType=VARCHAR}, + in_price = #{record.inPrice,jdbcType=DECIMAL}, + remark = #{record.remark,jdbcType=VARCHAR}, + delete_flag = #{record.deleteFlag,jdbcType=VARCHAR}, + create_time = #{record.createTime,jdbcType=TIMESTAMP}, + creator = #{record.creator,jdbcType=BIGINT}, + update_time = #{record.updateTime,jdbcType=TIMESTAMP}, + updater = #{record.updater,jdbcType=BIGINT}, + in_bill_no = #{record.inBillNo,jdbcType=VARCHAR}, + out_bill_no = #{record.outBillNo,jdbcType=VARCHAR}, + tenant_id = #{record.tenantId,jdbcType=BIGINT} + + + + + + update tbl_serial_number + + + material_id = #{materialId,jdbcType=BIGINT}, + + + depot_id = #{depotId,jdbcType=BIGINT}, + + + serial_number = #{serialNumber,jdbcType=VARCHAR}, + + + is_sell = #{isSell,jdbcType=VARCHAR}, + + + in_price = #{inPrice,jdbcType=DECIMAL}, + + + remark = #{remark,jdbcType=VARCHAR}, + + + delete_flag = #{deleteFlag,jdbcType=VARCHAR}, + + + create_time = #{createTime,jdbcType=TIMESTAMP}, + + + creator = #{creator,jdbcType=BIGINT}, + + + update_time = #{updateTime,jdbcType=TIMESTAMP}, + + + updater = #{updater,jdbcType=BIGINT}, + + + in_bill_no = #{inBillNo,jdbcType=VARCHAR}, + + + out_bill_no = #{outBillNo,jdbcType=VARCHAR}, + + + tenant_id = #{tenantId,jdbcType=BIGINT}, + + + where id = #{id,jdbcType=BIGINT} + + + update tbl_serial_number + set material_id = #{materialId,jdbcType=BIGINT}, + depot_id = #{depotId,jdbcType=BIGINT}, + serial_number = #{serialNumber,jdbcType=VARCHAR}, + is_sell = #{isSell,jdbcType=VARCHAR}, + in_price = #{inPrice,jdbcType=DECIMAL}, + remark = #{remark,jdbcType=VARCHAR}, + delete_flag = #{deleteFlag,jdbcType=VARCHAR}, + create_time = #{createTime,jdbcType=TIMESTAMP}, + creator = #{creator,jdbcType=BIGINT}, + update_time = #{updateTime,jdbcType=TIMESTAMP}, + updater = #{updater,jdbcType=BIGINT}, + in_bill_no = #{inBillNo,jdbcType=VARCHAR}, + out_bill_no = #{outBillNo,jdbcType=VARCHAR}, + tenant_id = #{tenantId,jdbcType=BIGINT} + where id = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/smtERP-boot/src/main/resources/mapper_xml/SerialNumberMapperEx.xml b/smtERP-boot/src/main/resources/mapper_xml/SerialNumberMapperEx.xml new file mode 100644 index 0000000..7fa0b90 --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/SerialNumberMapperEx.xml @@ -0,0 +1,246 @@ + + + + + + + + + + + + + + + insert into tbl_serial_number + (material_id, serial_number, is_sell, remark,delete_flag, + create_time, creator,update_time, updater,in_bill_no, out_bill_no) + values + (#{materialId},#{serialNumber},#{isSell},#{remark},#{deleteFlag}, + #{createTime},#{creator},#{updateTime},#{updater},#{inBillNo},#{outBillNo} + ) + + + update tbl_serial_number + + + material_id = #{materialId,jdbcType=BIGINT}, + + + serial_number = #{serialNumber,jdbcType=VARCHAR}, + + + is_sell = #{isSell,jdbcType=VARCHAR}, + + + remark = #{remark,jdbcType=VARCHAR}, + + + delete_flag = #{deleteFlag,jdbcType=VARCHAR}, + + + update_time = #{updateTime,jdbcType=TIMESTAMP}, + + + updater = #{updater,jdbcType=BIGINT}, + + + in_bill_no = #{inBillNo,jdbcType=VARCHAR}, + + + out_bill_no = #{outBillNo,jdbcType=VARCHAR} + + + where id = #{id,jdbcType=BIGINT} + + + + + + + + update tbl_serial_number + + is_sell = '1', + + out_bill_no = #{outBillNo}, + + + update_time = #{updateTime}, + + + updater = #{updater}, + + + where is_sell != '1' + + and id in + + #{item} + + + + + + update tbl_serial_number + + is_sell = '0', out_bill_no=null, + + update_time = #{updateTime}, + + + updater = #{updater}, + + + where 1=1 + + and material_id = #{materialId} + + + and out_bill_no = #{outBillNo,jdbcType=VARCHAR} + + and is_sell != '0' + and ifnull(delete_flag,'0') !='1' + + and id in + ( select batchSN.id from + ( select selFrom.id from tbl_serial_number selFrom + where 1=1 + + and selFrom.material_id = #{materialId} + + + and selFrom.out_bill_no = #{outBillNo,jdbcType=VARCHAR} + + and selFrom.is_sell !='0' + and ifnull(selFrom.delete_flag,'0') !='1' + limit 0,#{count} + ) batchSN + ) + + + + insert into tbl_serial_number + (material_id, serial_number, is_sell, remark,delete_flag, + create_time, creator,update_time, updater) + values + + (#{each.materialId},#{each.serialNumber},'0',#{each.remark},'0', + #{each.createTime},#{each.creator},#{each.updateTime},#{each.updater} + ) + + + + + + + + + + + + diff --git a/smtERP-boot/src/main/resources/mapper_xml/SupplierMapper.xml b/smtERP-boot/src/main/resources/mapper_xml/SupplierMapper.xml new file mode 100644 index 0000000..3a4c780 --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/SupplierMapper.xml @@ -0,0 +1,537 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + id, supplier, contacts, phone_num, email, description, isystem, type, category_id, enabled, advance_in, + begin_need_get, begin_need_pay, all_need_get, all_need_pay, fax, telephone, address, + tax_num, bank_name, account_number, tax_rate, sort, creator, tenant_id, delete_flag + + + + + delete from tbl_supplier + where id = #{id,jdbcType=BIGINT} + + + delete from tbl_supplier + + + + + + insert into tbl_supplier (id, supplier, contacts, + phone_num, email, description, + isystem, type, enabled, + advance_in, begin_need_get, begin_need_pay, + all_need_get, all_need_pay, fax, + telephone, address, tax_num, + bank_name, account_number, tax_rate, + sort, creator, tenant_id, + delete_flag) + values (#{id,jdbcType=BIGINT}, #{supplier,jdbcType=VARCHAR}, #{contacts,jdbcType=VARCHAR}, + #{phoneNum,jdbcType=VARCHAR}, #{email,jdbcType=VARCHAR}, #{description,jdbcType=VARCHAR}, + #{isystem,jdbcType=TINYINT}, #{type,jdbcType=VARCHAR}, #{enabled,jdbcType=BIT}, + #{advanceIn,jdbcType=DECIMAL}, #{beginNeedGet,jdbcType=DECIMAL}, #{beginNeedPay,jdbcType=DECIMAL}, + #{allNeedGet,jdbcType=DECIMAL}, #{allNeedPay,jdbcType=DECIMAL}, #{fax,jdbcType=VARCHAR}, + #{telephone,jdbcType=VARCHAR}, #{address,jdbcType=VARCHAR}, #{taxNum,jdbcType=VARCHAR}, + #{bankName,jdbcType=VARCHAR}, #{accountNumber,jdbcType=VARCHAR}, #{taxRate,jdbcType=DECIMAL}, + #{sort,jdbcType=VARCHAR}, #{creator,jdbcType=BIGINT}, #{tenantId,jdbcType=BIGINT}, + #{deleteFlag,jdbcType=VARCHAR}) + + + insert into tbl_supplier + + + id, + + + supplier, + + + contacts, + + + phone_num, + + + email, + + + description, + + + isystem, + + + type, + + + category_id, + + + enabled, + + + advance_in, + + + begin_need_get, + + + begin_need_pay, + + + all_need_get, + + + all_need_pay, + + + fax, + + + telephone, + + + address, + + + tax_num, + + + bank_name, + + + account_number, + + + tax_rate, + + + sort, + + + creator, + + + tenant_id, + + + delete_flag, + + + + + #{id,jdbcType=BIGINT}, + + + #{supplier,jdbcType=VARCHAR}, + + + #{contacts,jdbcType=VARCHAR}, + + + #{phoneNum,jdbcType=VARCHAR}, + + + #{email,jdbcType=VARCHAR}, + + + #{description,jdbcType=VARCHAR}, + + + #{isystem,jdbcType=TINYINT}, + + + #{type,jdbcType=VARCHAR}, + + + #{categoryId,jdbcType=BIGINT}, + + + #{enabled,jdbcType=BIT}, + + + #{advanceIn,jdbcType=DECIMAL}, + + + #{beginNeedGet,jdbcType=DECIMAL}, + + + #{beginNeedPay,jdbcType=DECIMAL}, + + + #{allNeedGet,jdbcType=DECIMAL}, + + + #{allNeedPay,jdbcType=DECIMAL}, + + + #{fax,jdbcType=VARCHAR}, + + + #{telephone,jdbcType=VARCHAR}, + + + #{address,jdbcType=VARCHAR}, + + + #{taxNum,jdbcType=VARCHAR}, + + + #{bankName,jdbcType=VARCHAR}, + + + #{accountNumber,jdbcType=VARCHAR}, + + + #{taxRate,jdbcType=DECIMAL}, + + + #{sort,jdbcType=VARCHAR}, + + + #{creator,jdbcType=BIGINT}, + + + #{tenantId,jdbcType=BIGINT}, + + + #{deleteFlag,jdbcType=VARCHAR}, + + + + + + update tbl_supplier + + + id = #{record.id,jdbcType=BIGINT}, + + + supplier = #{record.supplier,jdbcType=VARCHAR}, + + + contacts = #{record.contacts,jdbcType=VARCHAR}, + + + phone_num = #{record.phoneNum,jdbcType=VARCHAR}, + + + email = #{record.email,jdbcType=VARCHAR}, + + + description = #{record.description,jdbcType=VARCHAR}, + + + isystem = #{record.isystem,jdbcType=TINYINT}, + + + type = #{record.type,jdbcType=VARCHAR}, + + + enabled = #{record.enabled,jdbcType=BIT}, + + + advance_in = #{record.advanceIn,jdbcType=DECIMAL}, + + + begin_need_get = #{record.beginNeedGet,jdbcType=DECIMAL}, + + + begin_need_pay = #{record.beginNeedPay,jdbcType=DECIMAL}, + + + all_need_get = #{record.allNeedGet,jdbcType=DECIMAL}, + + + all_need_pay = #{record.allNeedPay,jdbcType=DECIMAL}, + + + fax = #{record.fax,jdbcType=VARCHAR}, + + + telephone = #{record.telephone,jdbcType=VARCHAR}, + + + address = #{record.address,jdbcType=VARCHAR}, + + + tax_num = #{record.taxNum,jdbcType=VARCHAR}, + + + bank_name = #{record.bankName,jdbcType=VARCHAR}, + + + account_number = #{record.accountNumber,jdbcType=VARCHAR}, + + + tax_rate = #{record.taxRate,jdbcType=DECIMAL}, + + + sort = #{record.sort,jdbcType=VARCHAR}, + + + creator = #{record.creator,jdbcType=BIGINT}, + + + tenant_id = #{record.tenantId,jdbcType=BIGINT}, + + + delete_flag = #{record.deleteFlag,jdbcType=VARCHAR}, + + + + + + + + update tbl_supplier + set id = #{record.id,jdbcType=BIGINT}, + supplier = #{record.supplier,jdbcType=VARCHAR}, + contacts = #{record.contacts,jdbcType=VARCHAR}, + phone_num = #{record.phoneNum,jdbcType=VARCHAR}, + email = #{record.email,jdbcType=VARCHAR}, + description = #{record.description,jdbcType=VARCHAR}, + isystem = #{record.isystem,jdbcType=TINYINT}, + type = #{record.type,jdbcType=VARCHAR}, + enabled = #{record.enabled,jdbcType=BIT}, + advance_in = #{record.advanceIn,jdbcType=DECIMAL}, + begin_need_get = #{record.beginNeedGet,jdbcType=DECIMAL}, + begin_need_pay = #{record.beginNeedPay,jdbcType=DECIMAL}, + all_need_get = #{record.allNeedGet,jdbcType=DECIMAL}, + all_need_pay = #{record.allNeedPay,jdbcType=DECIMAL}, + fax = #{record.fax,jdbcType=VARCHAR}, + telephone = #{record.telephone,jdbcType=VARCHAR}, + address = #{record.address,jdbcType=VARCHAR}, + tax_num = #{record.taxNum,jdbcType=VARCHAR}, + bank_name = #{record.bankName,jdbcType=VARCHAR}, + account_number = #{record.accountNumber,jdbcType=VARCHAR}, + tax_rate = #{record.taxRate,jdbcType=DECIMAL}, + sort = #{record.sort,jdbcType=VARCHAR}, + creator = #{record.creator,jdbcType=BIGINT}, + tenant_id = #{record.tenantId,jdbcType=BIGINT}, + delete_flag = #{record.deleteFlag,jdbcType=VARCHAR} + + + + + + update tbl_supplier + + + supplier = #{supplier,jdbcType=VARCHAR}, + + + contacts = #{contacts,jdbcType=VARCHAR}, + + + phone_num = #{phoneNum,jdbcType=VARCHAR}, + + + email = #{email,jdbcType=VARCHAR}, + + + description = #{description,jdbcType=VARCHAR}, + + + isystem = #{isystem,jdbcType=TINYINT}, + + + type = #{type,jdbcType=VARCHAR}, + + + category_id = #{categoryId,jdbcType=BIGINT}, + + + enabled = #{enabled,jdbcType=BIT}, + + + advance_in = #{advanceIn,jdbcType=DECIMAL}, + + + begin_need_get = #{beginNeedGet,jdbcType=DECIMAL}, + + + begin_need_pay = #{beginNeedPay,jdbcType=DECIMAL}, + + + all_need_get = #{allNeedGet,jdbcType=DECIMAL}, + + + all_need_pay = #{allNeedPay,jdbcType=DECIMAL}, + + + fax = #{fax,jdbcType=VARCHAR}, + + + telephone = #{telephone,jdbcType=VARCHAR}, + + + address = #{address,jdbcType=VARCHAR}, + + + tax_num = #{taxNum,jdbcType=VARCHAR}, + + + bank_name = #{bankName,jdbcType=VARCHAR}, + + + account_number = #{accountNumber,jdbcType=VARCHAR}, + + + tax_rate = #{taxRate,jdbcType=DECIMAL}, + + + sort = #{sort,jdbcType=VARCHAR}, + + + creator = #{creator,jdbcType=BIGINT}, + + + tenant_id = #{tenantId,jdbcType=BIGINT}, + + + delete_flag = #{deleteFlag,jdbcType=VARCHAR}, + + + where id = #{id,jdbcType=BIGINT} + + + update tbl_supplier + set supplier = #{supplier,jdbcType=VARCHAR}, + contacts = #{contacts,jdbcType=VARCHAR}, + phone_num = #{phoneNum,jdbcType=VARCHAR}, + email = #{email,jdbcType=VARCHAR}, + description = #{description,jdbcType=VARCHAR}, + isystem = #{isystem,jdbcType=TINYINT}, + type = #{type,jdbcType=VARCHAR}, + enabled = #{enabled,jdbcType=BIT}, + advance_in = #{advanceIn,jdbcType=DECIMAL}, + begin_need_get = #{beginNeedGet,jdbcType=DECIMAL}, + begin_need_pay = #{beginNeedPay,jdbcType=DECIMAL}, + all_need_get = #{allNeedGet,jdbcType=DECIMAL}, + all_need_pay = #{allNeedPay,jdbcType=DECIMAL}, + fax = #{fax,jdbcType=VARCHAR}, + telephone = #{telephone,jdbcType=VARCHAR}, + address = #{address,jdbcType=VARCHAR}, + tax_num = #{taxNum,jdbcType=VARCHAR}, + bank_name = #{bankName,jdbcType=VARCHAR}, + account_number = #{accountNumber,jdbcType=VARCHAR}, + tax_rate = #{taxRate,jdbcType=DECIMAL}, + sort = #{sort,jdbcType=VARCHAR}, + creator = #{creator,jdbcType=BIGINT}, + tenant_id = #{tenantId,jdbcType=BIGINT}, + delete_flag = #{deleteFlag,jdbcType=VARCHAR} + where id = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/smtERP-boot/src/main/resources/mapper_xml/SupplierMapperEx.xml b/smtERP-boot/src/main/resources/mapper_xml/SupplierMapperEx.xml new file mode 100644 index 0000000..3cc53cd --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/SupplierMapperEx.xml @@ -0,0 +1,115 @@ + + + + + + + + + update tbl_supplier + set delete_flag='1' + where 1=1 + and id in ( + + #{id} + + ) + + + + + + + + + + + + diff --git a/smtERP-boot/src/main/resources/mapper_xml/SysDictDataMapper.xml b/smtERP-boot/src/main/resources/mapper_xml/SysDictDataMapper.xml new file mode 100644 index 0000000..73ad2e6 --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/SysDictDataMapper.xml @@ -0,0 +1,151 @@ + + + + + + + + + + + + + + + + + + + + + + select dict_code, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark + from tbl_sys_dict_data + + + + + + + + + + + + + + delete from tbl_sys_dict_data where dict_code = #{dictCode} + + + + delete from tbl_sys_dict_data where dict_code in + + #{dictCode} + + + + + update tbl_sys_dict_data + + dict_sort = #{dictSort}, + dict_label = #{dictLabel}, + dict_value = #{dictValue}, + dict_type = #{dictType}, + css_class = #{cssClass}, + list_class = #{listClass}, + is_default = #{isDefault}, + status = #{status}, + remark = #{remark}, + update_by = #{updateBy}, + update_time = sysdate() + + where dict_code = #{dictCode} + + + + update tbl_sys_dict_data set dict_type = #{newDictType} where dict_type = #{oldDictType} + + + + insert into tbl_sys_dict_data( + dict_sort, + dict_label, + dict_value, + dict_type, + css_class, + list_class, + is_default, + status, + remark, + create_by, + create_time + )values( + #{dictSort}, + #{dictLabel}, + #{dictValue}, + #{dictType}, + #{cssClass}, + #{listClass}, + #{isDefault}, + #{status}, + #{remark}, + #{createBy}, + sysdate() + ) + + + + update tbl_sys_dict_data + set delete_flag='1' + where 1=1 + and dict_code in ( + + #{id} + + ) + + + + + diff --git a/smtERP-boot/src/main/resources/mapper_xml/SysDictTypeMapper.xml b/smtERP-boot/src/main/resources/mapper_xml/SysDictTypeMapper.xml new file mode 100644 index 0000000..5288b0b --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/SysDictTypeMapper.xml @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + select dict_id, dict_name, dict_type, status, create_by, create_time, update_by, update_time, remark + from tbl_sys_dict_type + + + + + + + + + + + + + + delete from tbl_sys_dict_type where dict_id = #{dictId} + + + + delete from tbl_sys_dict_type where dict_id in + + #{dictId} + + + + + update tbl_sys_dict_type + + dict_name = #{dictName}, + dict_type = #{dictType}, + status = #{status}, + remark = #{remark}, + update_by = #{updateBy}, + update_time = sysdate() + + where dict_id = #{dictId} + + + + insert into tbl_sys_dict_type( + dict_name, + dict_type, + status, + remark, + create_by, + create_time + )values( + #{dictName}, + #{dictType}, + #{status}, + #{remark}, + #{createBy}, + sysdate() + ) + + + + update tbl_sys_dict_type + set delete_flag='1' + where 1=1 + and dict_id in ( + + #{id} + + ) + + + + + diff --git a/smtERP-boot/src/main/resources/mapper_xml/SystemConfigMapper.xml b/smtERP-boot/src/main/resources/mapper_xml/SystemConfigMapper.xml new file mode 100644 index 0000000..c83555f --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/SystemConfigMapper.xml @@ -0,0 +1,547 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + id, company_name, company_contacts, company_address, company_tel, company_fax, company_post_code, + sale_agreement, depot_flag, customer_flag, minus_stock_flag, purchase_by_sale_flag, + multi_level_approval_flag, multi_bill_type, force_approval_flag, update_unit_price_flag, + over_link_bill_flag, in_out_manage_flag, multi_account_flag, move_avg_price_flag, + audit_print_flag, zero_change_amount_flag, customer_static_price_flag, material_price_tax_flag, + tenant_id, delete_flag + + + + + delete from tbl_system_config + where id = #{id,jdbcType=BIGINT} + + + delete from tbl_system_config + + + + + + insert into tbl_system_config (id, company_name, company_contacts, + company_address, company_tel, company_fax, + company_post_code, sale_agreement, depot_flag, + customer_flag, minus_stock_flag, purchase_by_sale_flag, + multi_level_approval_flag, multi_bill_type, + force_approval_flag, update_unit_price_flag, + over_link_bill_flag, in_out_manage_flag, multi_account_flag, + move_avg_price_flag, audit_print_flag, zero_change_amount_flag, + customer_static_price_flag, material_price_tax_flag, + tenant_id, delete_flag) + values (#{id,jdbcType=BIGINT}, #{companyName,jdbcType=VARCHAR}, #{companyContacts,jdbcType=VARCHAR}, + #{companyAddress,jdbcType=VARCHAR}, #{companyTel,jdbcType=VARCHAR}, #{companyFax,jdbcType=VARCHAR}, + #{companyPostCode,jdbcType=VARCHAR}, #{saleAgreement,jdbcType=VARCHAR}, #{depotFlag,jdbcType=VARCHAR}, + #{customerFlag,jdbcType=VARCHAR}, #{minusStockFlag,jdbcType=VARCHAR}, #{purchaseBySaleFlag,jdbcType=VARCHAR}, + #{multiLevelApprovalFlag,jdbcType=VARCHAR}, #{multiBillType,jdbcType=VARCHAR}, + #{forceApprovalFlag,jdbcType=VARCHAR}, #{updateUnitPriceFlag,jdbcType=VARCHAR}, + #{overLinkBillFlag,jdbcType=VARCHAR}, #{inOutManageFlag,jdbcType=VARCHAR}, #{multiAccountFlag,jdbcType=VARCHAR}, + #{moveAvgPriceFlag,jdbcType=VARCHAR}, #{auditPrintFlag,jdbcType=VARCHAR}, #{zeroChangeAmountFlag,jdbcType=VARCHAR}, + #{customerStaticPriceFlag,jdbcType=VARCHAR}, #{materialPriceTaxFlag,jdbcType=VARCHAR}, + #{tenantId,jdbcType=BIGINT}, #{deleteFlag,jdbcType=VARCHAR}) + + + insert into tbl_system_config + + + id, + + + company_name, + + + company_contacts, + + + company_address, + + + company_tel, + + + company_fax, + + + company_post_code, + + + sale_agreement, + + + depot_flag, + + + customer_flag, + + + minus_stock_flag, + + + purchase_by_sale_flag, + + + multi_level_approval_flag, + + + multi_bill_type, + + + force_approval_flag, + + + update_unit_price_flag, + + + over_link_bill_flag, + + + in_out_manage_flag, + + + multi_account_flag, + + + move_avg_price_flag, + + + audit_print_flag, + + + zero_change_amount_flag, + + + customer_static_price_flag, + + + material_price_tax_flag, + + + tenant_id, + + + delete_flag, + + + + + #{id,jdbcType=BIGINT}, + + + #{companyName,jdbcType=VARCHAR}, + + + #{companyContacts,jdbcType=VARCHAR}, + + + #{companyAddress,jdbcType=VARCHAR}, + + + #{companyTel,jdbcType=VARCHAR}, + + + #{companyFax,jdbcType=VARCHAR}, + + + #{companyPostCode,jdbcType=VARCHAR}, + + + #{saleAgreement,jdbcType=VARCHAR}, + + + #{depotFlag,jdbcType=VARCHAR}, + + + #{customerFlag,jdbcType=VARCHAR}, + + + #{minusStockFlag,jdbcType=VARCHAR}, + + + #{purchaseBySaleFlag,jdbcType=VARCHAR}, + + + #{multiLevelApprovalFlag,jdbcType=VARCHAR}, + + + #{multiBillType,jdbcType=VARCHAR}, + + + #{forceApprovalFlag,jdbcType=VARCHAR}, + + + #{updateUnitPriceFlag,jdbcType=VARCHAR}, + + + #{overLinkBillFlag,jdbcType=VARCHAR}, + + + #{inOutManageFlag,jdbcType=VARCHAR}, + + + #{multiAccountFlag,jdbcType=VARCHAR}, + + + #{moveAvgPriceFlag,jdbcType=VARCHAR}, + + + #{auditPrintFlag,jdbcType=VARCHAR}, + + + #{zeroChangeAmountFlag,jdbcType=VARCHAR}, + + + #{customerStaticPriceFlag,jdbcType=VARCHAR}, + + + #{materialPriceTaxFlag,jdbcType=VARCHAR}, + + + #{tenantId,jdbcType=BIGINT}, + + + #{deleteFlag,jdbcType=VARCHAR}, + + + + + + update tbl_system_config + + + id = #{record.id,jdbcType=BIGINT}, + + + company_name = #{record.companyName,jdbcType=VARCHAR}, + + + company_contacts = #{record.companyContacts,jdbcType=VARCHAR}, + + + company_address = #{record.companyAddress,jdbcType=VARCHAR}, + + + company_tel = #{record.companyTel,jdbcType=VARCHAR}, + + + company_fax = #{record.companyFax,jdbcType=VARCHAR}, + + + company_post_code = #{record.companyPostCode,jdbcType=VARCHAR}, + + + sale_agreement = #{record.saleAgreement,jdbcType=VARCHAR}, + + + depot_flag = #{record.depotFlag,jdbcType=VARCHAR}, + + + customer_flag = #{record.customerFlag,jdbcType=VARCHAR}, + + + minus_stock_flag = #{record.minusStockFlag,jdbcType=VARCHAR}, + + + purchase_by_sale_flag = #{record.purchaseBySaleFlag,jdbcType=VARCHAR}, + + + multi_level_approval_flag = #{record.multiLevelApprovalFlag,jdbcType=VARCHAR}, + + + multi_bill_type = #{record.multiBillType,jdbcType=VARCHAR}, + + + force_approval_flag = #{record.forceApprovalFlag,jdbcType=VARCHAR}, + + + update_unit_price_flag = #{record.updateUnitPriceFlag,jdbcType=VARCHAR}, + + + over_link_bill_flag = #{record.overLinkBillFlag,jdbcType=VARCHAR}, + + + in_out_manage_flag = #{record.inOutManageFlag,jdbcType=VARCHAR}, + + + multi_account_flag = #{record.multiAccountFlag,jdbcType=VARCHAR}, + + + move_avg_price_flag = #{record.moveAvgPriceFlag,jdbcType=VARCHAR}, + + + audit_print_flag = #{record.auditPrintFlag,jdbcType=VARCHAR}, + + + zero_change_amount_flag = #{record.zeroChangeAmountFlag,jdbcType=VARCHAR}, + + + customer_static_price_flag = #{record.customerStaticPriceFlag,jdbcType=VARCHAR}, + + + material_price_tax_flag = #{record.materialPriceTaxFlag,jdbcType=VARCHAR}, + + + tenant_id = #{record.tenantId,jdbcType=BIGINT}, + + + delete_flag = #{record.deleteFlag,jdbcType=VARCHAR}, + + + + + + + + update tbl_system_config + set id = #{record.id,jdbcType=BIGINT}, + company_name = #{record.companyName,jdbcType=VARCHAR}, + company_contacts = #{record.companyContacts,jdbcType=VARCHAR}, + company_address = #{record.companyAddress,jdbcType=VARCHAR}, + company_tel = #{record.companyTel,jdbcType=VARCHAR}, + company_fax = #{record.companyFax,jdbcType=VARCHAR}, + company_post_code = #{record.companyPostCode,jdbcType=VARCHAR}, + sale_agreement = #{record.saleAgreement,jdbcType=VARCHAR}, + depot_flag = #{record.depotFlag,jdbcType=VARCHAR}, + customer_flag = #{record.customerFlag,jdbcType=VARCHAR}, + minus_stock_flag = #{record.minusStockFlag,jdbcType=VARCHAR}, + purchase_by_sale_flag = #{record.purchaseBySaleFlag,jdbcType=VARCHAR}, + multi_level_approval_flag = #{record.multiLevelApprovalFlag,jdbcType=VARCHAR}, + multi_bill_type = #{record.multiBillType,jdbcType=VARCHAR}, + force_approval_flag = #{record.forceApprovalFlag,jdbcType=VARCHAR}, + update_unit_price_flag = #{record.updateUnitPriceFlag,jdbcType=VARCHAR}, + over_link_bill_flag = #{record.overLinkBillFlag,jdbcType=VARCHAR}, + in_out_manage_flag = #{record.inOutManageFlag,jdbcType=VARCHAR}, + multi_account_flag = #{record.multiAccountFlag,jdbcType=VARCHAR}, + move_avg_price_flag = #{record.moveAvgPriceFlag,jdbcType=VARCHAR}, + audit_print_flag = #{record.auditPrintFlag,jdbcType=VARCHAR}, + zero_change_amount_flag = #{record.zeroChangeAmountFlag,jdbcType=VARCHAR}, + customer_static_price_flag = #{record.customerStaticPriceFlag,jdbcType=VARCHAR}, + material_price_tax_flag = #{record.materialPriceTaxFlag,jdbcType=VARCHAR}, + tenant_id = #{record.tenantId,jdbcType=BIGINT}, + delete_flag = #{record.deleteFlag,jdbcType=VARCHAR} + + + + + + update tbl_system_config + + + company_name = #{companyName,jdbcType=VARCHAR}, + + + company_contacts = #{companyContacts,jdbcType=VARCHAR}, + + + company_address = #{companyAddress,jdbcType=VARCHAR}, + + + company_tel = #{companyTel,jdbcType=VARCHAR}, + + + company_fax = #{companyFax,jdbcType=VARCHAR}, + + + company_post_code = #{companyPostCode,jdbcType=VARCHAR}, + + + sale_agreement = #{saleAgreement,jdbcType=VARCHAR}, + + + depot_flag = #{depotFlag,jdbcType=VARCHAR}, + + + customer_flag = #{customerFlag,jdbcType=VARCHAR}, + + + minus_stock_flag = #{minusStockFlag,jdbcType=VARCHAR}, + + + purchase_by_sale_flag = #{purchaseBySaleFlag,jdbcType=VARCHAR}, + + + multi_level_approval_flag = #{multiLevelApprovalFlag,jdbcType=VARCHAR}, + + + multi_bill_type = #{multiBillType,jdbcType=VARCHAR}, + + + force_approval_flag = #{forceApprovalFlag,jdbcType=VARCHAR}, + + + update_unit_price_flag = #{updateUnitPriceFlag,jdbcType=VARCHAR}, + + + over_link_bill_flag = #{overLinkBillFlag,jdbcType=VARCHAR}, + + + in_out_manage_flag = #{inOutManageFlag,jdbcType=VARCHAR}, + + + multi_account_flag = #{multiAccountFlag,jdbcType=VARCHAR}, + + + move_avg_price_flag = #{moveAvgPriceFlag,jdbcType=VARCHAR}, + + + audit_print_flag = #{auditPrintFlag,jdbcType=VARCHAR}, + + + zero_change_amount_flag = #{zeroChangeAmountFlag,jdbcType=VARCHAR}, + + + customer_static_price_flag = #{customerStaticPriceFlag,jdbcType=VARCHAR}, + + + material_price_tax_flag = #{materialPriceTaxFlag,jdbcType=VARCHAR}, + + + tenant_id = #{tenantId,jdbcType=BIGINT}, + + + delete_flag = #{deleteFlag,jdbcType=VARCHAR}, + + + where id = #{id,jdbcType=BIGINT} + + + update tbl_system_config + set company_name = #{companyName,jdbcType=VARCHAR}, + company_contacts = #{companyContacts,jdbcType=VARCHAR}, + company_address = #{companyAddress,jdbcType=VARCHAR}, + company_tel = #{companyTel,jdbcType=VARCHAR}, + company_fax = #{companyFax,jdbcType=VARCHAR}, + company_post_code = #{companyPostCode,jdbcType=VARCHAR}, + sale_agreement = #{saleAgreement,jdbcType=VARCHAR}, + depot_flag = #{depotFlag,jdbcType=VARCHAR}, + customer_flag = #{customerFlag,jdbcType=VARCHAR}, + minus_stock_flag = #{minusStockFlag,jdbcType=VARCHAR}, + purchase_by_sale_flag = #{purchaseBySaleFlag,jdbcType=VARCHAR}, + multi_level_approval_flag = #{multiLevelApprovalFlag,jdbcType=VARCHAR}, + multi_bill_type = #{multiBillType,jdbcType=VARCHAR}, + force_approval_flag = #{forceApprovalFlag,jdbcType=VARCHAR}, + update_unit_price_flag = #{updateUnitPriceFlag,jdbcType=VARCHAR}, + over_link_bill_flag = #{overLinkBillFlag,jdbcType=VARCHAR}, + in_out_manage_flag = #{inOutManageFlag,jdbcType=VARCHAR}, + multi_account_flag = #{multiAccountFlag,jdbcType=VARCHAR}, + move_avg_price_flag = #{moveAvgPriceFlag,jdbcType=VARCHAR}, + audit_print_flag = #{auditPrintFlag,jdbcType=VARCHAR}, + zero_change_amount_flag = #{zeroChangeAmountFlag,jdbcType=VARCHAR}, + customer_static_price_flag = #{customerStaticPriceFlag,jdbcType=VARCHAR}, + material_price_tax_flag = #{materialPriceTaxFlag,jdbcType=VARCHAR}, + tenant_id = #{tenantId,jdbcType=BIGINT}, + delete_flag = #{deleteFlag,jdbcType=VARCHAR} + where id = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/smtERP-boot/src/main/resources/mapper_xml/SystemConfigMapperEx.xml b/smtERP-boot/src/main/resources/mapper_xml/SystemConfigMapperEx.xml new file mode 100644 index 0000000..53d6c43 --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/SystemConfigMapperEx.xml @@ -0,0 +1,25 @@ + + + + + + + update tbl_system_config + set delete_flag='1' + where 1=1 + and id in ( + + #{id} + + ) + + \ No newline at end of file diff --git a/smtERP-boot/src/main/resources/mapper_xml/TenantMapper.xml b/smtERP-boot/src/main/resources/mapper_xml/TenantMapper.xml new file mode 100644 index 0000000..6f46b22 --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/TenantMapper.xml @@ -0,0 +1,291 @@ + + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + id, tenant_id, login_name, user_num_limit, type, enabled, create_time, expire_time, + remark, delete_flag + + + + + delete from tbl_tenant + where id = #{id,jdbcType=BIGINT} + + + delete from tbl_tenant + + + + + + insert into tbl_tenant (id, tenant_id, login_name, + user_num_limit, type, enabled, + create_time, expire_time, remark, + delete_flag) + values (#{id,jdbcType=BIGINT}, #{tenantId,jdbcType=BIGINT}, #{loginName,jdbcType=VARCHAR}, + #{userNumLimit,jdbcType=INTEGER}, #{type,jdbcType=VARCHAR}, #{enabled,jdbcType=BIT}, + #{createTime,jdbcType=TIMESTAMP}, #{expireTime,jdbcType=TIMESTAMP}, #{remark,jdbcType=VARCHAR}, + #{deleteFlag,jdbcType=VARCHAR}) + + + insert into tbl_tenant + + + id, + + + tenant_id, + + + login_name, + + + user_num_limit, + + + type, + + + enabled, + + + create_time, + + + expire_time, + + + remark, + + + delete_flag, + + + + + #{id,jdbcType=BIGINT}, + + + #{tenantId,jdbcType=BIGINT}, + + + #{loginName,jdbcType=VARCHAR}, + + + #{userNumLimit,jdbcType=INTEGER}, + + + #{type,jdbcType=VARCHAR}, + + + #{enabled,jdbcType=BIT}, + + + #{createTime,jdbcType=TIMESTAMP}, + + + #{expireTime,jdbcType=TIMESTAMP}, + + + #{remark,jdbcType=VARCHAR}, + + + #{deleteFlag,jdbcType=VARCHAR}, + + + + + + update tbl_tenant + + + id = #{record.id,jdbcType=BIGINT}, + + + tenant_id = #{record.tenantId,jdbcType=BIGINT}, + + + login_name = #{record.loginName,jdbcType=VARCHAR}, + + + user_num_limit = #{record.userNumLimit,jdbcType=INTEGER}, + + + type = #{record.type,jdbcType=VARCHAR}, + + + enabled = #{record.enabled,jdbcType=BIT}, + + + create_time = #{record.createTime,jdbcType=TIMESTAMP}, + + + expire_time = #{record.expireTime,jdbcType=TIMESTAMP}, + + + remark = #{record.remark,jdbcType=VARCHAR}, + + + delete_flag = #{record.deleteFlag,jdbcType=VARCHAR}, + + + + + + + + update tbl_tenant + set id = #{record.id,jdbcType=BIGINT}, + tenant_id = #{record.tenantId,jdbcType=BIGINT}, + login_name = #{record.loginName,jdbcType=VARCHAR}, + user_num_limit = #{record.userNumLimit,jdbcType=INTEGER}, + type = #{record.type,jdbcType=VARCHAR}, + enabled = #{record.enabled,jdbcType=BIT}, + create_time = #{record.createTime,jdbcType=TIMESTAMP}, + expire_time = #{record.expireTime,jdbcType=TIMESTAMP}, + remark = #{record.remark,jdbcType=VARCHAR}, + delete_flag = #{record.deleteFlag,jdbcType=VARCHAR} + + + + + + update tbl_tenant + + + tenant_id = #{tenantId,jdbcType=BIGINT}, + + + login_name = #{loginName,jdbcType=VARCHAR}, + + + user_num_limit = #{userNumLimit,jdbcType=INTEGER}, + + + type = #{type,jdbcType=VARCHAR}, + + + enabled = #{enabled,jdbcType=BIT}, + + + create_time = #{createTime,jdbcType=TIMESTAMP}, + + + expire_time = #{expireTime,jdbcType=TIMESTAMP}, + + + remark = #{remark,jdbcType=VARCHAR}, + + + delete_flag = #{deleteFlag,jdbcType=VARCHAR}, + + + where id = #{id,jdbcType=BIGINT} + + + update tbl_tenant + set tenant_id = #{tenantId,jdbcType=BIGINT}, + login_name = #{loginName,jdbcType=VARCHAR}, + user_num_limit = #{userNumLimit,jdbcType=INTEGER}, + type = #{type,jdbcType=VARCHAR}, + enabled = #{enabled,jdbcType=BIT}, + create_time = #{createTime,jdbcType=TIMESTAMP}, + expire_time = #{expireTime,jdbcType=TIMESTAMP}, + remark = #{remark,jdbcType=VARCHAR}, + delete_flag = #{deleteFlag,jdbcType=VARCHAR} + where id = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/smtERP-boot/src/main/resources/mapper_xml/TenantMapperEx.xml b/smtERP-boot/src/main/resources/mapper_xml/TenantMapperEx.xml new file mode 100644 index 0000000..72fe56a --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/TenantMapperEx.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/smtERP-boot/src/main/resources/mapper_xml/UnitMapper.xml b/smtERP-boot/src/main/resources/mapper_xml/UnitMapper.xml new file mode 100644 index 0000000..11aa44f --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/UnitMapper.xml @@ -0,0 +1,323 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + id, name, basic_unit, other_unit, other_unit_two, other_unit_three, ratio, ratio_two, + ratio_three, enabled, tenant_id, delete_flag + + + + + delete from tbl_unit + where id = #{id,jdbcType=BIGINT} + + + delete from tbl_unit + + + + + + insert into tbl_unit (id, name, basic_unit, + other_unit, other_unit_two, other_unit_three, + ratio, ratio_two, ratio_three, + enabled, tenant_id, delete_flag + ) + values (#{id,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR}, #{basicUnit,jdbcType=VARCHAR}, + #{otherUnit,jdbcType=VARCHAR}, #{otherUnitTwo,jdbcType=VARCHAR}, #{otherUnitThree,jdbcType=VARCHAR}, + #{ratio,jdbcType=DECIMAL}, #{ratioTwo,jdbcType=DECIMAL}, #{ratioThree,jdbcType=DECIMAL}, + #{enabled,jdbcType=BIT}, #{tenantId,jdbcType=BIGINT}, #{deleteFlag,jdbcType=VARCHAR} + ) + + + insert into tbl_unit + + + id, + + + name, + + + basic_unit, + + + other_unit, + + + other_unit_two, + + + other_unit_three, + + + ratio, + + + ratio_two, + + + ratio_three, + + + enabled, + + + tenant_id, + + + delete_flag, + + + + + #{id,jdbcType=BIGINT}, + + + #{name,jdbcType=VARCHAR}, + + + #{basicUnit,jdbcType=VARCHAR}, + + + #{otherUnit,jdbcType=VARCHAR}, + + + #{otherUnitTwo,jdbcType=VARCHAR}, + + + #{otherUnitThree,jdbcType=VARCHAR}, + + + #{ratio,jdbcType=DECIMAL}, + + + #{ratioTwo,jdbcType=DECIMAL}, + + + #{ratioThree,jdbcType=DECIMAL}, + + + #{enabled,jdbcType=BIT}, + + + #{tenantId,jdbcType=BIGINT}, + + + #{deleteFlag,jdbcType=VARCHAR}, + + + + + + update tbl_unit + + + id = #{record.id,jdbcType=BIGINT}, + + + name = #{record.name,jdbcType=VARCHAR}, + + + basic_unit = #{record.basicUnit,jdbcType=VARCHAR}, + + + other_unit = #{record.otherUnit,jdbcType=VARCHAR}, + + + other_unit_two = #{record.otherUnitTwo,jdbcType=VARCHAR}, + + + other_unit_three = #{record.otherUnitThree,jdbcType=VARCHAR}, + + + ratio = #{record.ratio,jdbcType=DECIMAL}, + + + ratio_two = #{record.ratioTwo,jdbcType=DECIMAL}, + + + ratio_three = #{record.ratioThree,jdbcType=DECIMAL}, + + + enabled = #{record.enabled,jdbcType=BIT}, + + + tenant_id = #{record.tenantId,jdbcType=BIGINT}, + + + delete_flag = #{record.deleteFlag,jdbcType=VARCHAR}, + + + + + + + + update tbl_unit + set id = #{record.id,jdbcType=BIGINT}, + name = #{record.name,jdbcType=VARCHAR}, + basic_unit = #{record.basicUnit,jdbcType=VARCHAR}, + other_unit = #{record.otherUnit,jdbcType=VARCHAR}, + other_unit_two = #{record.otherUnitTwo,jdbcType=VARCHAR}, + other_unit_three = #{record.otherUnitThree,jdbcType=VARCHAR}, + ratio = #{record.ratio,jdbcType=DECIMAL}, + ratio_two = #{record.ratioTwo,jdbcType=DECIMAL}, + ratio_three = #{record.ratioThree,jdbcType=DECIMAL}, + enabled = #{record.enabled,jdbcType=BIT}, + tenant_id = #{record.tenantId,jdbcType=BIGINT}, + delete_flag = #{record.deleteFlag,jdbcType=VARCHAR} + + + + + + update tbl_unit + + + name = #{name,jdbcType=VARCHAR}, + + + basic_unit = #{basicUnit,jdbcType=VARCHAR}, + + + other_unit = #{otherUnit,jdbcType=VARCHAR}, + + + other_unit_two = #{otherUnitTwo,jdbcType=VARCHAR}, + + + other_unit_three = #{otherUnitThree,jdbcType=VARCHAR}, + + + ratio = #{ratio,jdbcType=DECIMAL}, + + + ratio_two = #{ratioTwo,jdbcType=DECIMAL}, + + + ratio_three = #{ratioThree,jdbcType=DECIMAL}, + + + enabled = #{enabled,jdbcType=BIT}, + + + tenant_id = #{tenantId,jdbcType=BIGINT}, + + + delete_flag = #{deleteFlag,jdbcType=VARCHAR}, + + + where id = #{id,jdbcType=BIGINT} + + + update tbl_unit + set name = #{name,jdbcType=VARCHAR}, + basic_unit = #{basicUnit,jdbcType=VARCHAR}, + other_unit = #{otherUnit,jdbcType=VARCHAR}, + other_unit_two = #{otherUnitTwo,jdbcType=VARCHAR}, + other_unit_three = #{otherUnitThree,jdbcType=VARCHAR}, + ratio = #{ratio,jdbcType=DECIMAL}, + ratio_two = #{ratioTwo,jdbcType=DECIMAL}, + ratio_three = #{ratioThree,jdbcType=DECIMAL}, + enabled = #{enabled,jdbcType=BIT}, + tenant_id = #{tenantId,jdbcType=BIGINT}, + delete_flag = #{deleteFlag,jdbcType=VARCHAR} + where id = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/smtERP-boot/src/main/resources/mapper_xml/UnitMapperEx.xml b/smtERP-boot/src/main/resources/mapper_xml/UnitMapperEx.xml new file mode 100644 index 0000000..e4e28c8 --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/UnitMapperEx.xml @@ -0,0 +1,36 @@ + + + + + + + update tbl_unit + set delete_flag='1' + where 1=1 + and id in ( + + #{id} + + ) + + + update tbl_unit + set ratio_two=null + where id=#{id} + + + update tbl_unit + set ratio_three=null + where id=#{id} + + \ No newline at end of file diff --git a/smtERP-boot/src/main/resources/mapper_xml/UserBusinessMapper.xml b/smtERP-boot/src/main/resources/mapper_xml/UserBusinessMapper.xml new file mode 100644 index 0000000..643c394 --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/UserBusinessMapper.xml @@ -0,0 +1,243 @@ + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + id, type, key_id, value, btn_str, tenant_id, delete_flag + + + + + delete from tbl_user_business + where id = #{id,jdbcType=BIGINT} + + + delete from tbl_user_business + + + + + + insert into tbl_user_business (id, type, key_id, + value, btn_str, tenant_id, + delete_flag) + values (#{id,jdbcType=BIGINT}, #{type,jdbcType=VARCHAR}, #{keyId,jdbcType=VARCHAR}, + #{value,jdbcType=VARCHAR}, #{btnStr,jdbcType=VARCHAR}, #{tenantId,jdbcType=BIGINT}, + #{deleteFlag,jdbcType=VARCHAR}) + + + insert into tbl_user_business + + + id, + + + type, + + + key_id, + + + value, + + + btn_str, + + + tenant_id, + + + delete_flag, + + + + + #{id,jdbcType=BIGINT}, + + + #{type,jdbcType=VARCHAR}, + + + #{keyId,jdbcType=VARCHAR}, + + + #{value,jdbcType=VARCHAR}, + + + #{btnStr,jdbcType=VARCHAR}, + + + #{tenantId,jdbcType=BIGINT}, + + + #{deleteFlag,jdbcType=VARCHAR}, + + + + + + update tbl_user_business + + + id = #{record.id,jdbcType=BIGINT}, + + + type = #{record.type,jdbcType=VARCHAR}, + + + key_id = #{record.keyId,jdbcType=VARCHAR}, + + + value = #{record.value,jdbcType=VARCHAR}, + + + btn_str = #{record.btnStr,jdbcType=VARCHAR}, + + + tenant_id = #{record.tenantId,jdbcType=BIGINT}, + + + delete_flag = #{record.deleteFlag,jdbcType=VARCHAR}, + + + + + + + + update tbl_user_business + set id = #{record.id,jdbcType=BIGINT}, + type = #{record.type,jdbcType=VARCHAR}, + key_id = #{record.keyId,jdbcType=VARCHAR}, + value = #{record.value,jdbcType=VARCHAR}, + btn_str = #{record.btnStr,jdbcType=VARCHAR}, + tenant_id = #{record.tenantId,jdbcType=BIGINT}, + delete_flag = #{record.deleteFlag,jdbcType=VARCHAR} + + + + + + update tbl_user_business + + + type = #{type,jdbcType=VARCHAR}, + + + key_id = #{keyId,jdbcType=VARCHAR}, + + + value = #{value,jdbcType=VARCHAR}, + + + btn_str = #{btnStr,jdbcType=VARCHAR}, + + + tenant_id = #{tenantId,jdbcType=BIGINT}, + + + delete_flag = #{deleteFlag,jdbcType=VARCHAR}, + + + where id = #{id,jdbcType=BIGINT} + + + update tbl_user_business + set type = #{type,jdbcType=VARCHAR}, + key_id = #{keyId,jdbcType=VARCHAR}, + value = #{value,jdbcType=VARCHAR}, + btn_str = #{btnStr,jdbcType=VARCHAR}, + tenant_id = #{tenantId,jdbcType=BIGINT}, + delete_flag = #{deleteFlag,jdbcType=VARCHAR} + where id = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/smtERP-boot/src/main/resources/mapper_xml/UserBusinessMapperEx.xml b/smtERP-boot/src/main/resources/mapper_xml/UserBusinessMapperEx.xml new file mode 100644 index 0000000..07ae43d --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/UserBusinessMapperEx.xml @@ -0,0 +1,41 @@ + + + + + update tbl_user_business + set delete_flag='1' + where 1=1 + and id in ( + + #{id} + + ) + + + + + + update tbl_user_business + set value= #{ubValue} + where type = #{type} and key_id = #{keyId} + and ifnull(delete_flag,'0') !='1' + + + + + + \ No newline at end of file diff --git a/smtERP-boot/src/main/resources/mapper_xml/UserMapper.xml b/smtERP-boot/src/main/resources/mapper_xml/UserMapper.xml new file mode 100644 index 0000000..1561bf8 --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/UserMapper.xml @@ -0,0 +1,400 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + id, username, login_name, password, leader_flag, position, department, email, phonenum, + ismanager, isystem, status, description, remark, weixin_open_id, tenant_id, delete_flag + + + + + delete from tbl_user + where id = #{id,jdbcType=BIGINT} + + + delete from tbl_user + + + + + + insert into tbl_user (id, username, login_name, + password, leader_flag, position, + department, email, phonenum, + ismanager, isystem, status, + description, remark, weixin_open_id, + tenant_id, delete_flag) + values (#{id,jdbcType=BIGINT}, #{username,jdbcType=VARCHAR}, #{loginName,jdbcType=VARCHAR}, + #{password,jdbcType=VARCHAR}, #{leaderFlag,jdbcType=VARCHAR}, #{position,jdbcType=VARCHAR}, + #{department,jdbcType=VARCHAR}, #{email,jdbcType=VARCHAR}, #{phonenum,jdbcType=VARCHAR}, + #{ismanager,jdbcType=TINYINT}, #{isystem,jdbcType=TINYINT}, #{status,jdbcType=TINYINT}, + #{description,jdbcType=VARCHAR}, #{remark,jdbcType=VARCHAR}, #{weixinOpenId,jdbcType=VARCHAR}, + #{tenantId,jdbcType=BIGINT}, #{deleteFlag,jdbcType=VARCHAR}) + + + insert into tbl_user + + + id, + + + username, + + + login_name, + + + password, + + + leader_flag, + + + position, + + + department, + + + email, + + + phonenum, + + + ismanager, + + + isystem, + + + status, + + + description, + + + remark, + + + weixin_open_id, + + + tenant_id, + + + delete_flag, + + + + + #{id,jdbcType=BIGINT}, + + + #{username,jdbcType=VARCHAR}, + + + #{loginName,jdbcType=VARCHAR}, + + + #{password,jdbcType=VARCHAR}, + + + #{leaderFlag,jdbcType=VARCHAR}, + + + #{position,jdbcType=VARCHAR}, + + + #{department,jdbcType=VARCHAR}, + + + #{email,jdbcType=VARCHAR}, + + + #{phonenum,jdbcType=VARCHAR}, + + + #{ismanager,jdbcType=TINYINT}, + + + #{isystem,jdbcType=TINYINT}, + + + #{status,jdbcType=TINYINT}, + + + #{description,jdbcType=VARCHAR}, + + + #{remark,jdbcType=VARCHAR}, + + + #{weixinOpenId,jdbcType=VARCHAR}, + + + #{tenantId,jdbcType=BIGINT}, + + + #{deleteFlag,jdbcType=VARCHAR}, + + + + + + update tbl_user + + + id = #{record.id,jdbcType=BIGINT}, + + + username = #{record.username,jdbcType=VARCHAR}, + + + login_name = #{record.loginName,jdbcType=VARCHAR}, + + + password = #{record.password,jdbcType=VARCHAR}, + + + leader_flag = #{record.leaderFlag,jdbcType=VARCHAR}, + + + position = #{record.position,jdbcType=VARCHAR}, + + + department = #{record.department,jdbcType=VARCHAR}, + + + email = #{record.email,jdbcType=VARCHAR}, + + + phonenum = #{record.phonenum,jdbcType=VARCHAR}, + + + ismanager = #{record.ismanager,jdbcType=TINYINT}, + + + isystem = #{record.isystem,jdbcType=TINYINT}, + + + status = #{record.status,jdbcType=TINYINT}, + + + description = #{record.description,jdbcType=VARCHAR}, + + + remark = #{record.remark,jdbcType=VARCHAR}, + + + weixin_open_id = #{record.weixinOpenId,jdbcType=VARCHAR}, + + + tenant_id = #{record.tenantId,jdbcType=BIGINT}, + + + delete_flag = #{record.deleteFlag,jdbcType=VARCHAR}, + + + + + + + + update tbl_user + set id = #{record.id,jdbcType=BIGINT}, + username = #{record.username,jdbcType=VARCHAR}, + login_name = #{record.loginName,jdbcType=VARCHAR}, + password = #{record.password,jdbcType=VARCHAR}, + leader_flag = #{record.leaderFlag,jdbcType=VARCHAR}, + position = #{record.position,jdbcType=VARCHAR}, + department = #{record.department,jdbcType=VARCHAR}, + email = #{record.email,jdbcType=VARCHAR}, + phonenum = #{record.phonenum,jdbcType=VARCHAR}, + ismanager = #{record.ismanager,jdbcType=TINYINT}, + isystem = #{record.isystem,jdbcType=TINYINT}, + status = #{record.status,jdbcType=TINYINT}, + description = #{record.description,jdbcType=VARCHAR}, + remark = #{record.remark,jdbcType=VARCHAR}, + weixin_open_id = #{record.weixinOpenId,jdbcType=VARCHAR}, + tenant_id = #{record.tenantId,jdbcType=BIGINT}, + delete_flag = #{record.deleteFlag,jdbcType=VARCHAR} + + + + + + update tbl_user + + + username = #{username,jdbcType=VARCHAR}, + + + login_name = #{loginName,jdbcType=VARCHAR}, + + + password = #{password,jdbcType=VARCHAR}, + + + leader_flag = #{leaderFlag,jdbcType=VARCHAR}, + + + position = #{position,jdbcType=VARCHAR}, + + + department = #{department,jdbcType=VARCHAR}, + + + email = #{email,jdbcType=VARCHAR}, + + + phonenum = #{phonenum,jdbcType=VARCHAR}, + + + ismanager = #{ismanager,jdbcType=TINYINT}, + + + isystem = #{isystem,jdbcType=TINYINT}, + + + status = #{status,jdbcType=TINYINT}, + + + description = #{description,jdbcType=VARCHAR}, + + + remark = #{remark,jdbcType=VARCHAR}, + + + weixin_open_id = #{weixinOpenId,jdbcType=VARCHAR}, + + + tenant_id = #{tenantId,jdbcType=BIGINT}, + + + delete_flag = #{deleteFlag,jdbcType=VARCHAR}, + + + where id = #{id,jdbcType=BIGINT} + + + update tbl_user + set username = #{username,jdbcType=VARCHAR}, + login_name = #{loginName,jdbcType=VARCHAR}, + password = #{password,jdbcType=VARCHAR}, + leader_flag = #{leaderFlag,jdbcType=VARCHAR}, + position = #{position,jdbcType=VARCHAR}, + department = #{department,jdbcType=VARCHAR}, + email = #{email,jdbcType=VARCHAR}, + phonenum = #{phonenum,jdbcType=VARCHAR}, + ismanager = #{ismanager,jdbcType=TINYINT}, + isystem = #{isystem,jdbcType=TINYINT}, + status = #{status,jdbcType=TINYINT}, + description = #{description,jdbcType=VARCHAR}, + remark = #{remark,jdbcType=VARCHAR}, + weixin_open_id = #{weixinOpenId,jdbcType=VARCHAR}, + tenant_id = #{tenantId,jdbcType=BIGINT}, + delete_flag = #{deleteFlag,jdbcType=VARCHAR} + where id = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/smtERP-boot/src/main/resources/mapper_xml/UserMapperEx.xml b/smtERP-boot/src/main/resources/mapper_xml/UserMapperEx.xml new file mode 100644 index 0000000..31d7f07 --- /dev/null +++ b/smtERP-boot/src/main/resources/mapper_xml/UserMapperEx.xml @@ -0,0 +1,163 @@ + + + + + + + + + + + + + + + + + + update tbl_user + set delete_flag = '1' + where id in ( + + #{id} + + ) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + update tbl_user set status='2' + where tenant_id=#{tenantId} and id!=#{tenantId} + + + + + + + + update tbl_user u set u.weixin_open_id = #{weixinOpenId} + where u.login_name = #{loginName} and u.password = #{password} + and u.status=0 + and ifnull(u.delete_flag,'0') !='1' + + \ No newline at end of file diff --git a/smtERP-boot/src/test/java/com/reallin/smt/filter/LogCostFilterTest.java b/smtERP-boot/src/test/java/com/reallin/smt/filter/LogCostFilterTest.java new file mode 100644 index 0000000..318da8c --- /dev/null +++ b/smtERP-boot/src/test/java/com/reallin/smt/filter/LogCostFilterTest.java @@ -0,0 +1,129 @@ +package com.reallin.smt.filter; + +import com.reallin.smt.service.LegacyInventoryAuthService; +import com.reallin.smt.service.RedisService; +import org.junit.Before; +import org.junit.Test; +import org.springframework.mock.web.MockFilterConfig; +import org.springframework.mock.web.MockHttpServletRequest; +import org.springframework.mock.web.MockHttpServletResponse; +import org.springframework.test.util.ReflectionTestUtils; + +import javax.servlet.FilterChain; +import javax.servlet.annotation.WebFilter; +import static org.junit.Assert.*; +import static org.mockito.Mockito.*; + +public class LogCostFilterTest { + private LogCostFilter filter; + private RedisService redis; + private LegacyInventoryAuthService inventoryAuth; + + @Before + public void setUp() throws Exception { + filter = new LogCostFilter(); + redis = mock(RedisService.class); + inventoryAuth = mock(LegacyInventoryAuthService.class); + ReflectionTestUtils.setField(filter, "redisService", redis); + ReflectionTestUtils.setField(filter, "legacyInventoryAuthService", inventoryAuth); + ReflectionTestUtils.setField(filter, "syncApiKey", "test-only-sync-key"); + MockFilterConfig config = new MockFilterConfig(); + config.addInitParameter("filterPath", LogCostFilter.class.getAnnotation(WebFilter.class).initParams()[0].value()); + filter.init(config); + } + + private MockHttpServletRequest request(String path) { + MockHttpServletRequest request = new MockHttpServletRequest("POST", "/apis" + path); + request.setContextPath("/apis"); + return request; + } + + private void check(MockHttpServletRequest request, boolean allowed, int status) throws Exception { + FilterChain chain = mock(FilterChain.class); + MockHttpServletResponse response = new MockHttpServletResponse(); + filter.doFilter(request, response, chain); + verify(chain, times(allowed ? 1 : 0)).doFilter(request, response); + assertEquals(status, response.getStatus()); + } + + @Test + public void anonymousSyncIsRejectedForBothEndpoints() throws Exception { + check(request("/smtInbound/sync"), false, 401); + check(request("/headquartersInbound/sync"), false, 401); + } + + @Test + public void syncKeyIsScopedToExactPostEndpoints() throws Exception { + for (String path : new String[]{"/smtInbound/sync", "/headquartersInbound/sync"}) { + MockHttpServletRequest request = request(path); + request.addHeader("X-Sync-Api-Key", "test-only-sync-key"); + check(request, true, 200); + request.setMethod("GET"); + check(request, false, 401); + } + MockHttpServletRequest other = request("/smtInbound/save"); + other.addHeader("X-Sync-Api-Key", "test-only-sync-key"); + check(other, false, 500); + } + + @Test + public void missingConfigurationAndWrongKeysFailClosed() throws Exception { + MockHttpServletRequest request = request("/smtInbound/sync"); + request.addHeader("X-Sync-Api-Key", "wrong"); + check(request, false, 401); + ReflectionTestUtils.setField(filter, "syncApiKey", ""); + request = request("/smtInbound/sync"); + request.addHeader("X-Sync-Api-Key", ""); + check(request, false, 401); + } + + @Test + public void erpSessionStillAllowsNormalBusinessAndSync() throws Exception { + for (String path : new String[]{"/smtInbound/save", "/smtInbound/sync", "/headquartersInbound/sync"}) { + MockHttpServletRequest request = request(path); + when(redis.getObjectFromSessionByKey(request, "userId")).thenReturn("63"); + check(request, true, 200); + } + } + + @Test + public void inventoryLoginIsPublicButOperationsRequireIdentity() throws Exception { + for (String base : new String[]{"/n2tpm/webmvc/Inventory", "/webmvc/Inventory"}) { + check(request(base + "/Login"), true, 200); + for (String operation : new String[]{"GetInventory", "GetInventoryDetail", "SaveDeviceInventoryInfo", + "AccepteOrHandoverDocForInventory", "UploadPicture", "GetDevice", "GetDevic"}) { + MockHttpServletRequest request = request(base + "/" + operation); + check(request, false, 401); + when(inventoryAuth.authenticatedUser(request)).thenReturn("63"); + check(request, true, 200); + } + check(request(base + "/LoginOther"), false, 401); + } + } + + @Test + public void inventoryAlsoWorksWithoutContextPrefix() throws Exception { + check(new MockHttpServletRequest("POST", "/webmvc/Inventory/Login"), true, 200); + check(new MockHttpServletRequest("POST", "/webmvc/Inventory/GetDevice"), false, 401); + } + + @Test + public void publicPrefixesCannotMatchSiblingEndpoints() throws Exception { + check(request("/platformConfig/getPlatform/logo"), true, 200); + check(request("/platformConfig/getPlatformEvil"), false, 500); + check(request("/api/plugin/tenant-statistics/tenantClean"), false, 500); + check(request("/smtInbound/template"), false, 500); + } + + @Test + public void staticTemplatesKeepWorkingForDirectBrowserDownloads() throws Exception { + for (String path : new String[]{"/smtInbound/template", "/headquartersInbound/template"}) { + MockHttpServletRequest request = request(path); + request.setMethod("GET"); + check(request, true, 200); + MockHttpServletRequest sibling = request(path + "Other"); + sibling.setMethod("GET"); + check(sibling, false, 500); + } + } +} diff --git a/smtERP-boot/src/test/java/com/reallin/smt/security/MapperSecurityTest.java b/smtERP-boot/src/test/java/com/reallin/smt/security/MapperSecurityTest.java new file mode 100644 index 0000000..e2fac94 --- /dev/null +++ b/smtERP-boot/src/test/java/com/reallin/smt/security/MapperSecurityTest.java @@ -0,0 +1,79 @@ +package com.reallin.smt.security; + +import org.apache.ibatis.builder.xml.XMLMapperBuilder; +import org.apache.ibatis.io.Resources; +import org.apache.ibatis.mapping.BoundSql; +import org.apache.ibatis.session.Configuration; +import org.junit.Test; +import java.io.InputStream; +import java.util.*; +import static org.junit.Assert.*; + +public class MapperSecurityTest { + private Configuration mapper(String name) throws Exception { + Configuration configuration = new Configuration(); + if (name.endsWith("Ex")) { + String baseResource = "mapper_xml/" + name.substring(0, name.length() - 2) + ".xml"; + try (InputStream input = Resources.getResourceAsStream(baseResource)) { + new XMLMapperBuilder(input, configuration, baseResource, configuration.getSqlFragments()).parse(); + } + } + String resource = "mapper_xml/" + name + ".xml"; + try (InputStream input = Resources.getResourceAsStream(resource)) { + new XMLMapperBuilder(input, configuration, resource, configuration.getSqlFragments()).parse(); + } + return configuration; + } + + @Test + public void allFourteenLikeValuesAreBoundRatherThanInsertedIntoSql() throws Exception { + String[][] cases = { + {"PackBomMapper", "bomNumber", "bomName", "outputMaterialParam"}, + {"ProductionOrderMapper", "orderNumber", "sourceNumber", "productMaterialParam"}, + {"ProductionReportMapper", "reportNumber", "orderNumber"}, + {"ProductionRequisitionMapper", "requisitionNumber", "orderNumber"} + }; + int bindings = 0; + for (String[] item : cases) { + Configuration configuration = mapper(item[0]); + Map parameters = new HashMap<>(); + for (int i = 1; i < item.length; i++) parameters.put(item[i], "SMT' OR 1=1 -- %_中文"); + BoundSql sql = configuration.getMappedStatement("com.reallin.smt.datasource.mappers." + + item[0] + ".selectList").getBoundSql(parameters); + assertFalse(sql.getSql(), sql.getSql().contains("OR 1=1")); + assertTrue(sql.getSql(), sql.getSql().contains("concat('%', ?, '%')")); + bindings += sql.getParameterMappings().size(); + Map ordinary = new HashMap<>(); + for (int i = 1; i < item.length; i++) ordinary.put(item[i], "SMT-001"); + assertEquals(sql.getSql(), configuration.getMappedStatement("com.reallin.smt.datasource.mappers." + + item[0] + ".selectList").getBoundSql(ordinary).getSql()); + } + assertEquals(14, bindings); + } + + @Test + public void existingMapperSortAllowlistsRejectInjectedFieldsAndDirections() throws Exception { + String[][] cases = { + {"DepotHeadMapperEx", "findInOutDetail", "barCode"}, + {"DepotHeadMapperEx", "findInOutMaterialCount", "numSum"}, + {"DepotHeadMapperEx", "findAllocationDetail", "operNumber"}, + {"MaterialMapperEx", "getListWithStock", "mBarCode"} + }; + for (String[] item : cases) { + Configuration configuration = mapper(item[0]); + String statement = "com.reallin.smt.datasource.mappers." + item[0] + "." + item[1]; + Map params = new HashMap<>(); + for (String collection : new String[]{"depotList", "depotFList", "categoryList", "idList"}) { + params.put(collection, Collections.emptyList()); + } + params.put("column", "id; DROP TABLE tbl_user"); + params.put("order", "desc; DROP TABLE tbl_user"); + assertFalse(configuration.getMappedStatement(statement).getBoundSql(params).getSql().contains("DROP")); + params.put("column", item[2]); + assertFalse(configuration.getMappedStatement(statement).getBoundSql(params).getSql().contains("DROP")); + params.put("order", "asc"); + String sql = configuration.getMappedStatement(statement).getBoundSql(params).getSql().replaceAll("\\s+", " "); + assertTrue(sql, sql.contains("order by " + item[2] + " asc")); + } + } +} diff --git a/smtERP-boot/src/test/java/com/reallin/smt/service/LegacyInventoryAuthServiceTest.java b/smtERP-boot/src/test/java/com/reallin/smt/service/LegacyInventoryAuthServiceTest.java new file mode 100644 index 0000000..9f8e641 --- /dev/null +++ b/smtERP-boot/src/test/java/com/reallin/smt/service/LegacyInventoryAuthServiceTest.java @@ -0,0 +1,51 @@ +package com.reallin.smt.service; + +import org.junit.Before; +import org.junit.Test; +import org.springframework.mock.web.MockHttpServletRequest; +import org.springframework.test.util.ReflectionTestUtils; +import static org.junit.Assert.*; +import static org.mockito.Mockito.*; + +public class LegacyInventoryAuthServiceTest { + private LegacyInventoryAuthService auth; + private RedisService redis; + + @Before + public void setUp() { + auth = new LegacyInventoryAuthService(); + redis = mock(RedisService.class); + ReflectionTestUtils.setField(auth, "redisService", redis); + ReflectionTestUtils.setField(auth, "tokenTtlSeconds", 3600L); + } + + @Test + public void tokenIsRandomScopedAndExpiresWithoutRenewal() { + String token = auth.issueToken(63L); + assertTrue(token.matches("[a-f0-9]{32}")); + assertNotEquals(token, auth.issueToken(63L)); + verify(redis).storageKeyWithTime("inventory:token:" + token, "63", 3600L); + MockHttpServletRequest request = new MockHttpServletRequest(); + request.addHeader("X-Inventory-Token", token); + when(redis.getCacheObject("inventory:token:" + token)).thenReturn("63"); + assertEquals("63", auth.authenticatedUser(request)); + when(redis.getCacheObject("inventory:token:" + token)).thenReturn(null); + assertNull(auth.authenticatedUser(request)); + verify(redis, never()).getObjectFromSessionByKey(any(), anyString()); + } + + @Test + public void invalidTokenDoesNotFallBackToAnotherIdentity() { + MockHttpServletRequest request = new MockHttpServletRequest(); + request.addHeader("X-Inventory-Token", "invalid"); + assertNull(auth.authenticatedUser(request)); + verifyZeroInteractions(redis); + } + + @Test + public void erpSessionIsSupportedWhenNoInventoryTokenSupplied() { + MockHttpServletRequest request = new MockHttpServletRequest(); + when(redis.getObjectFromSessionByKey(request, "userId")).thenReturn("63"); + assertEquals("63", auth.authenticatedUser(request)); + } +} diff --git a/smtERP-boot/src/test/java/com/reallin/smt/service/LegacyInventorySecurityTest.java b/smtERP-boot/src/test/java/com/reallin/smt/service/LegacyInventorySecurityTest.java new file mode 100644 index 0000000..2c1d954 --- /dev/null +++ b/smtERP-boot/src/test/java/com/reallin/smt/service/LegacyInventorySecurityTest.java @@ -0,0 +1,113 @@ +package com.reallin.smt.service; + +import com.alibaba.fastjson.JSONObject; +import com.reallin.smt.exception.LegacyInventoryBusinessException; +import org.junit.Before; +import org.junit.Test; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.test.util.ReflectionTestUtils; +import org.springframework.util.DigestUtils; +import java.nio.charset.StandardCharsets; +import java.util.*; +import static org.junit.Assert.*; +import static org.mockito.Mockito.*; + +public class LegacyInventorySecurityTest { + private LegacyInventoryService service; + private LegacyInventoryAuthService auth; + private JdbcTemplate jdbc; + private LoginAttemptService attempts; + + @Before + public void setUp() { + service = new LegacyInventoryService(); + auth = mock(LegacyInventoryAuthService.class); + jdbc = mock(JdbcTemplate.class); + attempts = mock(LoginAttemptService.class); + ReflectionTestUtils.setField(service, "legacyInventoryAuthService", auth); + ReflectionTestUtils.setField(service, "jdbcTemplate", jdbc); + ReflectionTestUtils.setField(service, "loginAttemptService", attempts); + when(auth.requireCurrentUserId()).thenReturn(63L); + } + + @Test + public void rejectsForgedOperatorBeforeReadingOrWritingBusinessData() { + JSONObject input = JSONObject.parseObject("{\"USER_ID\":\"64\",\"DATA_AUTH\":\"64\"}"); + try { + service.getInventory(input); + fail("Forged user accepted"); + } catch (LegacyInventoryBusinessException expected) { + verifyZeroInteractions(jdbc); + } + } + + @Test + public void rejectsOtherUsersInventoryDetails() { + Map inventory = new HashMap<>(); + inventory.put("inventory_user_id", 64L); + when(jdbc.queryForList(anyString(), eq("INV-1"))).thenReturn(Collections.singletonList(inventory)); + when(jdbc.queryForList(anyString(), eq(63L))).thenReturn(Collections.singletonList(new HashMap<>())); + try { + service.getInventoryDetail(JSONObject.parseObject("{\"INVENTORY_DOC\":\"INV-1\",\"DATA_AUTH\":\"63\"}")); + fail("Other user's inventory accepted"); + } catch (LegacyInventoryBusinessException expected) { + assertTrue(expected.getMessage().contains("无权")); + } + } + + @Test + public void successfulLegacyLoginPreservesFieldsAndAddsScopedToken() { + Map user = new HashMap<>(); + user.put("id", 63L); + user.put("password", DigestUtils.md5DigestAsHex("test-password".getBytes(StandardCharsets.UTF_8))); + when(jdbc.queryForList(anyString(), eq("operator"))).thenReturn(Collections.singletonList(user)); + when(auth.issueToken(63L)).thenReturn("scoped-token"); + Map result = (Map) service.login(JSONObject.parseObject( + "{\"USER_NAME\":\"operator\",\"PASSWORD\":\"test-password\"}")); + assertEquals("true", result.get("RESULT")); + assertEquals("63", result.get("USER_ID")); + assertEquals("63", result.get("DATA_AUTH")); + assertEquals("scoped-token", result.get("TOKEN")); + verify(attempts).clear("operator"); + } + + @Test + public void assignedOperatorCanStillAcceptDraftInventory() { + Map inventory = new HashMap<>(); + inventory.put("inventory_user_id", 63L); + inventory.put("id", 100L); + inventory.put("status", "DRAFT"); + when(jdbc.queryForList(anyString(), eq("INV-1"))).thenReturn(Collections.singletonList(inventory)); + when(jdbc.queryForList(anyString(), eq(63L))).thenReturn(Collections.singletonList(new HashMap<>())); + assertEquals("OK", service.acceptInventory(JSONObject.parseObject( + "{\"USER_ID\":\"63\",\"INVENTORY_DOC\":\"INV-1\",\"DATA_AUTH\":\"63\"}"))); + verify(jdbc).update(contains("UPDATE tbl_asset_inventory SET status="), eq("ACCEPTED"), eq(63L), eq(100L)); + verify(jdbc).update(contains("INSERT INTO tbl_asset_inventory_operation"), eq(100L), eq("2"), + eq(63L), any(java.sql.Timestamp.class), eq("接收盘点单")); + } + + @Test + public void lockedAccountCannotObtainTokenOrQueryCredentials() { + when(attempts.getRemainingDelaySeconds("operator")).thenReturn(30L); + try { + service.login(JSONObject.parseObject("{\"USER_NAME\":\"operator\",\"PASSWORD\":\"test-password\"}")); + fail("Locked login accepted"); + } catch (LegacyInventoryBusinessException expected) { + verifyZeroInteractions(jdbc); + verify(auth, never()).issueToken(any()); + } + } + + @Test + public void wrongPasswordNeverIssuesToken() { + Map user = new HashMap<>(); + user.put("password", "wrong"); + when(jdbc.queryForList(anyString(), eq("operator"))).thenReturn(Collections.singletonList(user)); + Map result = (Map) service.login(JSONObject.parseObject( + "{\"USER_NAME\":\"operator\",\"PASSWORD\":\"test-password\"}")); + assertEquals("false", result.get("RESULT")); + assertFalse(result.containsKey("TOKEN")); + verify(attempts).recordPasswordFailure("operator"); + verify(auth, never()).issueToken(any()); + } +} diff --git a/smtERP-boot/src/test/java/com/reallin/smt/service/LoginAttemptServiceTest.java b/smtERP-boot/src/test/java/com/reallin/smt/service/LoginAttemptServiceTest.java new file mode 100644 index 0000000..2677226 --- /dev/null +++ b/smtERP-boot/src/test/java/com/reallin/smt/service/LoginAttemptServiceTest.java @@ -0,0 +1,34 @@ +package com.reallin.smt.service; + +import org.junit.Before; +import org.junit.Test; +import org.springframework.test.util.ReflectionTestUtils; + +import static org.junit.Assert.assertEquals; + +public class LoginAttemptServiceTest { + + private LoginAttemptService loginAttemptService; + + @Before + public void setUp() { + loginAttemptService = new LoginAttemptService(); + ReflectionTestUtils.setField(loginAttemptService, "maxFailuresBeforeDelay", 3L); + ReflectionTestUtils.setField(loginAttemptService, "baseDelaySeconds", 30L); + ReflectionTestUtils.setField(loginAttemptService, "maxDelaySeconds", 1800L); + } + + @Test + public void shouldIncreaseDelayExponentiallyAfterThreshold() { + assertEquals(0L, loginAttemptService.calculateDelaySeconds(1)); + assertEquals(0L, loginAttemptService.calculateDelaySeconds(2)); + assertEquals(30L, loginAttemptService.calculateDelaySeconds(3)); + assertEquals(60L, loginAttemptService.calculateDelaySeconds(4)); + assertEquals(120L, loginAttemptService.calculateDelaySeconds(5)); + } + + @Test + public void shouldCapDelayAtConfiguredMaximum() { + assertEquals(1800L, loginAttemptService.calculateDelaySeconds(20)); + } +} diff --git a/smtERP-boot/src/test/java/com/reallin/smt/utils/SqlUtilTest.java b/smtERP-boot/src/test/java/com/reallin/smt/utils/SqlUtilTest.java new file mode 100644 index 0000000..588fefa --- /dev/null +++ b/smtERP-boot/src/test/java/com/reallin/smt/utils/SqlUtilTest.java @@ -0,0 +1,25 @@ +package com.reallin.smt.utils; + +import org.junit.Test; +import static org.junit.Assert.*; + +public class SqlUtilTest { + @Test + public void preservesSingleMultipleAndQualifiedSorts() { + for (String sort : new String[]{"id", "create_time desc", "sort asc, id DESC", "m.id desc", " id asc "}) { + assertEquals(sort, SqlUtil.escapeOrderBySql(sort)); + } + assertNull(SqlUtil.escapeOrderBySql(null)); + assertEquals("", SqlUtil.escapeOrderBySql("")); + } + + @Test + public void rejectsExtraSqlSyntaxEvenWithoutSpecialCharacters() { + assertFalse(SqlUtil.isValidOrderBySql(null)); + assertFalse(SqlUtil.isValidOrderBySql("a".repeat(501))); + for (String sort : new String[]{"id desc limit 1", "id;delete from tbl_user", "sleep(10)", + "id --", "id into outfile", "id,,name", "1", "id union select password"}) { + assertFalse(sort, SqlUtil.isValidOrderBySql(sort)); + } + } +} diff --git a/smtERP-boot/src/test/resources/generatorConfig.xml b/smtERP-boot/src/test/resources/generatorConfig.xml new file mode 100644 index 0000000..a30d5e3 --- /dev/null +++ b/smtERP-boot/src/test/resources/generatorConfig.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/smtERP-web/.editorconfig b/smtERP-web/.editorconfig new file mode 100644 index 0000000..3e26fbb --- /dev/null +++ b/smtERP-web/.editorconfig @@ -0,0 +1,39 @@ +[*] +charset=utf-8 +end_of_line=crlf +insert_final_newline=false +indent_style=space +indent_size=2 + +[{*.ng,*.sht,*.html,*.shtm,*.shtml,*.htm}] +indent_style=space +indent_size=2 + +[{*.jhm,*.xslt,*.xul,*.rng,*.xsl,*.xsd,*.ant,*.tld,*.fxml,*.jrxml,*.xml,*.jnlp,*.wsdl}] +indent_style=space +indent_size=2 + +[{.babelrc,.stylelintrc,jest.config,.eslintrc,.prettierrc,*.json,*.jsb3,*.jsb2,*.bowerrc}] +indent_style=space +indent_size=2 + +[*.svg] +indent_style=space +indent_size=2 + +[*.js.map] +indent_style=space +indent_size=2 + +[*.less] +indent_style=space +indent_size=2 + +[*.vue] +indent_style=space +indent_size=2 + +[{.analysis_options,*.yml,*.yaml}] +indent_style=space +indent_size=2 + diff --git a/smtERP-web/.eslintignore b/smtERP-web/.eslintignore new file mode 100644 index 0000000..dbc8690 --- /dev/null +++ b/smtERP-web/.eslintignore @@ -0,0 +1 @@ +/src \ No newline at end of file diff --git a/smtERP-web/.gitattributes b/smtERP-web/.gitattributes new file mode 100644 index 0000000..e507319 --- /dev/null +++ b/smtERP-web/.gitattributes @@ -0,0 +1 @@ +public/* linguist-vendored \ No newline at end of file diff --git a/smtERP-web/.gitignore b/smtERP-web/.gitignore new file mode 100644 index 0000000..f56a978 --- /dev/null +++ b/smtERP-web/.gitignore @@ -0,0 +1,22 @@ +.DS_Store +node_modules +/dist + +# local env files +.env.local +.env.*.local + +# Log files +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Editor directories and files +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw* +/package-lock.json diff --git a/smtERP-web/.prettierrc b/smtERP-web/.prettierrc new file mode 100644 index 0000000..cbe842a --- /dev/null +++ b/smtERP-web/.prettierrc @@ -0,0 +1,5 @@ +{ + "printWidth": 120, + "semi": false, + "singleQuote": true +} diff --git a/smtERP-web/README.md b/smtERP-web/README.md new file mode 100644 index 0000000..d68f2fc --- /dev/null +++ b/smtERP-web/README.md @@ -0,0 +1,104 @@ +jshERP-web Vue +==== + + +Overview +---- + + +#### 前端技术 + +- 基础框架:[ant-design-vue](https://github.com/vueComponent/ant-design-vue) - Ant Design Of Vue 实现 +- JavaScript框架:Vue +- Jeecg-boot 的前段UI框架 +- Webpack +- node +- yarn +- eslint +- @vue/cli 3.2.1 +- [vue-cropper](https://github.com/xyxiao001/vue-cropper) - 头像裁剪组件 +- [@antv/g2](https://antv.alipay.com/zh-cn/index.html) - Alipay AntV 数据可视化图表 +- [Viser-vue](https://viserjs.github.io/docs.html#/viser/guide/installation) - antv/g2 封装实现 + + + +项目运行 +---- + +- 安装nodeJS +``` +建议安装node-v20.17.0-x64版本 教程参考 https://blog.csdn.net/Coin_Collecter/article/details/136484312 +``` + +- 安装yarn +``` +npm install -g yarn +``` + +- 配镜像源(速度快) +``` +yarn config set registry https://registry.npmmirror.com +``` + +- 安装依赖 +``` +yarn install +``` + +- 开发模式运行 +``` +yarn serve +``` + +- 编译发布项目 +``` +yarn build +``` + + +其他说明 +---- + +- 项目使用的 [vue-cli3](https://cli.vuejs.org/guide/), 请更新您的 cli + +- 关闭 Eslint (不推荐) 移除 `package.json` 中 `eslintConfig` 整个节点代码 + +- 修改 Ant Design 配色,在文件 `vue.config.js` 中,其他 less 变量覆盖参考 [ant design](https://ant.design/docs/react/customize-theme-cn) 官方说明 +```ecmascript 6 + css: { + loaderOptions: { + less: { + modifyVars: { + /* less 变量覆盖,用于自定义 ant design 主题 */ + + 'primary-color': '#F5222D', + 'link-color': '#F5222D', + 'border-radius-base': '4px', + }, + javascriptEnabled: true, + } + } + } +``` + + + +附属文档 +---- +- [Ant Design Vue](https://vuecomponent.github.io/ant-design-vue/docs/vue/introduce-cn) + +- [报表 viser-vue](https://viserjs.github.io/demo.html#/viser/bar/basic-bar) + +- [Vue](https://cn.vuejs.org/v2/guide) + +- [路由/菜单说明](https://github.com/zhangdaiscott/jeecg-boot/tree/master/ant-design-jeecg-vue/src/router/README.md) + +- [ANTD 默认配置项](https://github.com/zhangdaiscott/jeecg-boot/tree/master/ant-design-jeecg-vue/src/defaultSettings.js) + +- 其他待补充... + + +备注 +---- + +> @vue/cli 升级后,eslint 规则更新了。由于影响到全部 .vue 文件,需要逐个验证。既暂时关闭部分原本不验证的规则,后期维护时,在逐步修正这些 rules \ No newline at end of file diff --git a/smtERP-web/babel.config.js b/smtERP-web/babel.config.js new file mode 100644 index 0000000..f05294d --- /dev/null +++ b/smtERP-web/babel.config.js @@ -0,0 +1,6 @@ +module.exports = { + presets: [ + ['@vue/app', + { useBuiltIns: 'entry' }] + ] +} diff --git a/smtERP-web/changeLog.md b/smtERP-web/changeLog.md new file mode 100644 index 0000000..a3fe125 --- /dev/null +++ b/smtERP-web/changeLog.md @@ -0,0 +1,5 @@ +# 变更日志 + +## Release Version: 1.0.0 (2026-07-18) +## Change detail: +1. SMT-ERP project int \ No newline at end of file diff --git a/smtERP-web/idea.config.js b/smtERP-web/idea.config.js new file mode 100644 index 0000000..4d86bd9 --- /dev/null +++ b/smtERP-web/idea.config.js @@ -0,0 +1,24 @@ +'use strict' +const path = require('path') + +function resolve (dir) { + return path.join(__dirname, '.', dir) +} + +module.exports = { + context: path.resolve(__dirname, './'), + resolve: { + extensions: ['.js', '.vue', '.json'], + alias: { + 'config': resolve('config'), + '@': resolve('src'), + '@views': resolve('src/views'), + '@comp': resolve('src/components'), + '@core': resolve('src/core'), + '@utils': resolve('src/utils'), + '@entry': resolve('src/entry'), + '@router': resolve('src/router'), + '@store': resolve('src/store') + } + }, +} \ No newline at end of file diff --git a/smtERP-web/package.json b/smtERP-web/package.json new file mode 100644 index 0000000..8098513 --- /dev/null +++ b/smtERP-web/package.json @@ -0,0 +1,112 @@ +{ + "name": "stm-erp-web", + "version": "1.0.0", + "private": true, + "scripts": { + "serve": "vue-cli-service serve", + "build": "vue-cli-service build", + "test:security": "node tests/security.cjs" + }, + "dependencies": { + "@antv/data-set": "^0.11.2", + "@tinymce/tinymce-vue": "^2.0.0", + "ant-design-vue": "1.5.2", + "area-data": "^5.0.6", + "axios": "^0.18.0", + "clipboard": "^2.0.4", + "codemirror": "^5.46.0", + "dayjs": "^1.8.0", + "dompurify": "3.4.16", + "enquire.js": "^2.1.6", + "intro.js": "^4.2.2", + "jquery": "^1.12.4", + "js-cookie": "^2.2.0", + "lodash.get": "^4.4.2", + "lodash.pick": "^4.4.0", + "md5": "^2.2.1", + "nprogress": "^0.2.0", + "viser-vue": "^2.4.4", + "vue": "^2.7.16", + "vue-area-linkage": "^5.1.0", + "vue-cropper": "^0.4.8", + "vue-draggable-resizable": "^2.3.0", + "vue-i18n": "^8.7.0", + "vue-loader": "^15.7.0", + "vue-ls": "^3.2.0", + "vue-photo-preview": "^1.1.3", + "vue-print-nb-jeecg": "^1.0.9", + "vue-router": "^3.0.1", + "vue-splitpane": "^1.0.4", + "vuedraggable": "^2.20.0", + "vuex": "^3.1.0" + }, + "devDependencies": { + "@babel/polyfill": "^7.2.5", + "@vue/cli-plugin-babel": "^3.3.0", + "@vue/cli-plugin-eslint": "^3.3.0", + "@vue/cli-service": "^3.3.0", + "@vue/eslint-config-standard": "^4.0.0", + "babel-eslint": "^10.0.1", + "compression-webpack-plugin": "^3.1.0", + "eslint": "^5.16.0", + "eslint-plugin-vue": "^5.1.0", + "html-webpack-plugin": "^4.2.0", + "jsdom": "22.1.0", + "less": "^3.9.0", + "less-loader": "^4.1.0", + "vue-template-compiler": "^2.6.10" + }, + "eslintConfig": { + "root": true, + "env": { + "node": true + }, + "extends": [ + "plugin:vue/strongly-recommended", + "@vue/standard" + ], + "parserOptions": { + "parser": "babel-eslint" + }, + "rules": { + "generator-star-spacing": "off", + "no-mixed-operators": 0, + "vue/max-attributes-per-line": [ + 2, + { + "singleline": 5, + "multiline": { + "max": 1, + "allowFirstLine": false + } + } + ], + "vue/attribute-hyphenation": 0, + "vue/html-self-closing": 0, + "vue/component-name-in-template-casing": 0, + "vue/html-closing-bracket-spacing": 0, + "vue/singleline-html-element-content-newline": 0, + "vue/no-unused-components": 0, + "vue/multiline-html-element-content-newline": 0, + "vue/no-use-v-if-with-v-for": 0, + "vue/html-closing-bracket-newline": 0, + "vue/no-parsing-error": 0, + "no-console": 0, + "no-tabs": 0, + "indent": [ + 1, + 4 + ] + } + }, + "postcss": { + "plugins": { + "autoprefixer": {} + } + }, + "browserslist": [ + "> 1%", + "last 2 versions", + "not ie <= 10" + ] +} diff --git a/smtERP-web/public/doc/apply_item_template.xls b/smtERP-web/public/doc/apply_item_template.xls new file mode 100644 index 0000000000000000000000000000000000000000..3ff9179542434c269d894efacb578a9b9045e0e5 GIT binary patch literal 18432 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 Oh^O-ap#Oz;X5im=cVgoJ literal 0 HcmV?d00001 diff --git a/smtERP-web/public/doc/buy_sale_item_template.xls b/smtERP-web/public/doc/buy_sale_item_template.xls new file mode 100644 index 0000000000000000000000000000000000000000..fae802ea44274cc88c0925c0a90e02308ad5f242 GIT binary patch literal 18944 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

B+LLCvL(@%Mv#El_~;z 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 DVYGbc literal 0 HcmV?d00001 diff --git a/smtERP-web/public/doc/member_template.xls b/smtERP-web/public/doc/member_template.xls new file mode 100644 index 0000000000000000000000000000000000000000..1fde4a3a31b33e1600bc547b452ac217755500e4 GIT binary patch literal 18944 zcmeHP2Ut|c_Mf{fuz(0i5kX)n0wN$)z(x^`3Ze*BR6qo=Vn7iR30Q~)RFuR@)M&8x zu2{f^D8`DSMg%CkPs%AF-eRCZ8U(E;l5u1tEyp;9_yxxngh#RM z%>zj^9HT!6K&p-bw2xyT_MgvfAK8a8W&$&Wktt*X{6*8Y?*(3nqiuqe$z%*%PecX< z$-Ys4?7N@aKKAE>jd&UY=*4QPq(J+EdQk>N)S&ZM5+2#fFM=Z>_aP4>lVA*>#)2?O zB%Z{AK%?P21q2lSw^9HtLo|gl6oP@fz!e3f3EqRx;iyj^chEJC(8n(HNJL1~pl}<; zy%hOG{OEe~>7x~WYz{|?9H4n_(G*u0qs{`RC_M+A3Gk|vKloz|s5qXu!pQcAq?G&! zHqVL(>-#nImw=;5=vJEGI6}Lce;qx@YJ&~+8iH5AaB z(R8YboQQA0K}UTR$Ls$z2Lo|l{}*}w56yurp%o059*sMW>wxY3o?c{5H~_a5@Dl&4sa#W z7wMfy)6%B8bJef{>sZlT46h%3ZO$J=+QJ{*n4)HouBZVlQv{s~F6yXQ4@O-sS(`Sd zxE|B6FNCxNh1F{`X$M0ZhhDO9^4f9LP}Wp?=$nRw8b)lIc&ROTX&AAGEKMH<);8z+ zKxCS5vq)k@5pySqPE%QCR%q^4nNp_h?$EMO8M`tGBtRAPn=m17MM6RvpySi2P>6I2 zuHTB_nfs=ZOqA2{fxuN?5gk#v>i;j(DR3H@h8kjG>`7pxpzZ&Tp|W(G&(QYSONgJ) zPe}M0v|sR@h^GIfr?*sVsTSe4r|ATGDi;ocVCACA;~UX9IDcx|u2Um^J5C&&Yc;LU z;Nbj=rbGPD@{9G=;KaeX8drUsztQwOJv}2WBhc4`mPfu_#tsm%oH#iDU+`c%KP0xfjvEGI?jt5^@;+0VT#PiiF4&fdbFR=MQjJ0Khtz^ z+%ovB<>>7c$YY^E9v21mO%>1?9C>}2_>reGc9yq4V>fxayMlHV;WPTm<8)AfqsR`% zbbWao9|br}f0VD!&~bW8;p)jWJw3Xg@)-Z(+6sj$C)4zFrRnOj^u~C=H5dw?8Z3^O z4v%md`ZR$7nT8DF)SZad-FcrT@F!_a=-6vjV7PVrd| z1q?V&NEk9mhAcyxOba-GsENI}d-rZJ1M5X;8tX-A8tX-An%Ik?QZb$aJK>6;#7>RN zLbR4_EYdfP2L)>5k|LuvF2rDFlL7_{D3{m?WRw+C))PW8!)LZ&DQ1xE9tsR$1q>=M zOTtdcEXKl#POKp~^pXu-Yhd_4gV@j@%<$mmj!R2yVkKek@vK0dHc-S$BJ$+|`3!Yz zX%JQt93LjBdFCznv~)8v9&R;ad3gp$_wudq~pe!iTgq}MDJ1d;;?#SRd$arlD4CN>5* z9#*pbq8;$CAmYVm8ixg8LGi3W5=SUvLYjUqWKeSIaM*Z&%z*0zAbf~N`EIVP>wkud z&a`xFSe|(y|I~ujOtHiYRBYb_MD!$2%)rKWUhIDaaS?;y>xJ~22W#xlP{&mYgnKxI z3gVt0xa%tg;^xi;!b*ncMs@6EhD<*w zqQq~(Fd~Tur8I$TU4Mmjb9vBpGl*!hz=SN8GAuP@|`8*9Z02&gK0_~cJ5(L`F!|dfpJr{C{qzd zo)2dwYMG%zOJa_HM`9BdPT*uq3w1r9pqnO5>$ zHEZeja=zsmK~*eaP<3FT8GKt9Up;z2Shvv5@rwnrzHJGPs` z4fIsT!9W|r{*i!CO~*nsnJr|j!X%1sDH6zxm~2ewz^XbZ_35Yl7)44MgHn=mghUHF zq1nC}-ziGYY$~n5Y*@lnRVU6kmZc4mAInT&EK3{0BDP0FUXD|U93s^k5V3@*Y6;_< zQj2C2wnVA~Y5js!__z~G$n22&et2dRuAfhi zkDU|QqPKKS`npf_#OTqniOwk##%q`M(L5>C z^{Y(#b!yH{ub2Y+?jv`f-(K)1>6T~WU%ckZ>f1M}t7dxre$Sw6Wsvp|$2@iId9fFq z=Nx!B&2fY2##=pGpLQHyS#0>QHpRGP?|l7xz0M|urdgNeWNzDcM|gc-yE4lcj(0{J zvKiYY>zhF}SL@o|@BXBnttQX=BZUe|#11xFa_KhA^o6h$fX0&(+Z6?VHl$C2sh952 zmNn^vpB`N_>WQ_RmHPg!_id9~1oocSdeiW+OZBE661MGh*sx@m-}JR(E(cA&` zdv{-WYHp>@`F5OEH}vSU6`5WQ2|K>MJ8omT)(-zeqW300xYPs~I2}=|es{*?*ocG) zQ=S-&n3*^&N&DXB=Wic7K`qxdwUf1nPw+TUkX5!MM`N9ONJ>Gd#oqmzkAe)syA2sW zcAiF1_4=VfmsHNElYV~lY;P9FLDBRgRwg+ z_!HmQ6rCuT+xJK($LafO3(HGiEjzyaw0)0LyZv0>B_Di#zMOYA&-(F+XEB{p>b!f- z(Mp-{XW{*h+4aFKic7ujpW>Oj_NZ$$RjuO373b%?j9=2@c}acgsXP8P<(^Yp<_{eE zVNbKYxd(?O$Be&xq)(_r=&UfuE^o8@xF&CX-qmv8u!TJfmq+Q>-m$ye)#~@0?6c(# zzvW-1dI{Snwe;_~&v50s@9%b9w|zj}%U$zlX;0rcvq2EnF8ju%;I*f!6KAy;tJa`f zQrRFZEUh6-Y7Y#go(P&1&nmpV5*y$VX z+@GJV_AK4{-t6~Ue)Kjs;nO7}>}G9EkzakU@Qn1C8(7(~#fUTfKTO{4 zyn5io)gg(ePBdH}vSpKLoU=Kvq&j6^=z^2;{U6rEjZ4jSxHE45qGPX|1@^bSETe{9K6@e(Yak+R`|AEWNhrfidhee4sEXTdK|^;F=;}8 z!EA@VsheBgEGwC|a`|0@;4Qq(FZ-|Cm=U}F_Pi%&syCHY=O-@+jm0? zNQ3)pJC@a?#vd88{r35vhQ0~6pEuapW9U-R{L|f&w3D~o@(T-V8~^y1$qf&aReIa{ z4Jlq-_{^-UZL4bw`q@PUTBp<-_FR?lF3UdXOy*Ndy+_oIwYgjT18g3ex9L?p=zROD zeqq}zS42$E;#dCC=7!pk)Ej60uRODjl0dufx8WM$9~-Au|6RA!i^b+e|-II;2vW` zv(pCuYP~)G$ZzY8|Lp2=%y8U~877u(O)9~A^rKw^k}0iS;)d-b{}tJYZ> zUt5wp*49~uGG-g+!`^H~3^fKOjZ`i@%b0cnA=UpwT$n5A_zHOjWvpzuWxvC7|J?O z%y%119cQeWx$xrHlP=9>zsNi~^Kx3~m6OJ8lH2F!bZfsZja1sF$6J}+HhprtZ?T$Y zfne5eFX}dR`LsQ&zVfF>LZcO%)lS~;=6gQAGP%p~^cf|YzintEh)9|AGLu;|;!8y3q}wW{b4eD$qS z{~KOW+ZS#u5$!qYQo5>dQTh(Y>hAoBUOxqoc`)+VjqR(#j^=EP-F(gb(!PWB*O{jx z_p3n*nWrL`NwhELtlk0jOu;0$9Vq=2W$Mem0yLVdkLC#%gIRSmrV0`gt{&E1WP4}M zrES+#W@;d;)QklQUe63iFAB2nV{6mj-r03oVspFRxp|l7h1X|n_g=Sf-~+35>;2Cb zT*F1p?8 zdN$0gcIutC+fUG@c1H1n;+D zxa{J%@YIec4x%nkvbQEgjNbJsxzjn}YoFH--rGHN&&hWGq?4-ANn=@k!jr!Jf+(H= z?7*?_hO(xD0$4o|!qFF&tT_zF0C2~nAQUkzgaTX``~;6e>41>MiD>qww<^ zLkK3cmGR(vGLuk18_3e#K^Z4@H6|gaDZIT)b8@RG+x3v2v2741KW9f|gpxQ+_N`a~ zstP?^S}6LOen*zYkev`nFmT034nt~s&@V`pcCrTiZpIgSS3DgE+3+b%w#oQcQ=o&2!3~EV%TX(l26r&aUral}>#~ z&3HI1j#)SY_)r=LT)fj6Rv$;7gpnfnc0`M4gE=t9(JRdNO}b6KZ_tzU3(UNv=!H`@wJn>wijQ&^ldA3{VTD8P#Xo(VNxNE6n@`=sRB3H=rcv~ zU@aj}A_h~yc^m*z2uK=jB|>iLqqcnd9)D9fK}T{AE1=|-uH;??e!0Mw6CVD$nBAMl zh6Owv7jRT9q<`GwN9oWs6jneo7?~SsXggUNGD*`u(mo`_59ov(qepBC?xg?J3D!br zfBMMWQ6vB)Cyix1xI=8FOa<=HL(Cl??re0&>)A*e>J|1vP#cS;KT;G3V*+1#;WdVFXQffqJ1+NTU zPW$|Wjx+DYvMaN?BS9(^Hva75zkhBJ!5$r<+hIl|QUP+n{i;XI8DAlp)U=$fCoZpG z>$7K;kGZGu;8McJ*5f|wVjlrH*fYx~d(X-#duHpiXO_vV8z z&>%(rgv@gOk|)6@(3yFf0)SLPH&tY=eqG-;UU$nP0cmHq=cWtL=0HYUVLASM3{r+4 z9B{1a2^r-W3>m+Z8U-0=ER!JP7`GFghZA8wRJOn~%!%n-s~9?eWSkl;t^_>gFy5`5o)G2Ler1hL#O9 zlpAG1o$Mh)%0OLl%tamXoyrfgtPWU?i9I*KHICnykRS0T;|<_Vg9GxAn-hEWg!F%Ss>a2^9w(@`*GjD-?R?0Z5lc;6fd_p&jG{RR6R{*1&Ej!rN?bcKl} zW*7SG26P`fuCcBqoN>;W}Apba0ob|BEZ0mTK*JpjuaczV!W N?l2MlCw;vI{tX9BYRLcq literal 0 HcmV?d00001 diff --git a/smtERP-web/public/doc/order_item_template.xls b/smtERP-web/public/doc/order_item_template.xls new file mode 100644 index 0000000000000000000000000000000000000000..f57147a0697b42247997dcd8113bd41c042310df GIT binary patch literal 18944 zcmeHvd0Z4n^LNj(z=EP6hX?}8As_;B3Tl)?G%AQ9;Dw5)i>N3D3__HE2VS6pB%VZ# z1~nSbXgu)33sH6z*3s&7|USNBYJ z&+NquMt8p5Wl=>`LU*D?-pTcd4u?*`HAXrZ5@G`vn0_ah%NZgeaQSce2U*}P=xPUz zrv*_AQ5zz*xh_NrL_LW55Su}44$%N&3y3Wtf(sBMh^-(RLo|VC3egN=Yl!9$+d#B{ zXbG_`L@S8a5YcBa+QPLxC;bmH-T#ED14$D6rV=UXNhZTNnWRH&yniqQk6{fV0x_us zkAxhfkE9oKVvYj_x9{4~>=#OkNpv&_gQ4_fGLej?^_a*IKj7Gkh$yyvJim`9Y8dR# zaP}loQ1djXc?gMvW8C`yaCl6hd>jL@|GaPcC_aoa6PO{Ad`>38FOIf-A83Vm+9pVu zO2)(WWE2nx&W-iQzWcuAV}IV?h^HrkUaX@{iVe=|mSj;x2ReTh5s{tZ5;zia7vgX- z1^PV|M8<-e<3XMAB!zYrR1lj_`ri-1v<`6;>TnDU+zqZM7)>w@Z4O6c`nZGUI7A=2 z(IXLLEvxRsG%rQokwBVn5q-3yk1gOxk$tqxFEqsy#;7wOD9_Bp#sqk6sBSV;G>#+^ zPZ-&LRpyepVDp@q$o?Nge+oGIgf68Cjw_U_PYz+l)add|A-WQ0+W7czR-fiHKGg&V z^*7<6qdpQIeUP6|&jir36OW$1g3(&@;9$M@_{9QrESHZT>D_toksiRS4P8fZs@f-%x;VEI`*2p!2m0<3COP!CKq_#t~ye*^wH!ncEXri1x&TbR`UBIC0}p zt;N1@i#O+Ek0Aqz47&LU0YN`_E@-1J=niEGmB!>*i-W+;tc682m&}5UCoaT`P_abX zsGtj6DeH^$uB2&h)4KC<*nxHIXemZEkiNDS4<_y5M;9hk4AO-Pz&s)7bZDY3!u4RP z%cpD8!i4#lf&-vyC{fsYjUydkNaLxODx7-l_&78b)e*)7Q$h_V4ozCAJ+#tr;tY{X z9}d>G7Iy~EwBQ#}`iPKlSMW|tRbf_X{!*D-rtF?jvQ(3}CJmH8cjzZ!LSD+Hgfzea zMTcWjq*HMHQV#dr7mZ}1nT|IEK7JuOqVn8=8F zJpp=q0lEt>9p_7|{R5?eQnp-t=HjE{yo#n58X1{2Giye~7POz>T#Jt%=U;quoRjg< zah^uguM*HE(45r=Jdl@;^EnPbOywARD(K+1+I3?1i<3_U)c;rFBYaV|;IuaZ$vE=(mEeQU_+LYdbrsI6IDcysnw^gHC3ear?a9joGz5+OmKd6_>*jZgq zAv$AEbsWb2>U1*!J%#ArAE>{OorU!8B!JJ@SzUi2` zliZ!vd1i*hjbt>TV{a3|oDOEMG_P{r+yb5?Md||B4V3~}Bug>TZWPE+DFOSZ4%DA1 zVfXIc3ITl{nl2Ab!b1}`(&X}T1)hM$I1nf`2JXKTz!8EGz_~m|HVBk}Lx-}2%*;&H z5`t80f_+sB9)nF3t8Huv*b)Mzs)C>+{y&4@DjW+U55TnpHfYd9)roK!Pou%|RqAg8 z0=f#H;2Mne2`-KG2`-KG2`)|H6Xh!v4ZwPKKtQU3*4T=wN=ch26%Y`h5MY(!(paUq zG*&4tjaBOT^XCdYrBcc=1eCIEq7=8btWsPWs}z^UD#fK~QtEYvS_e_JlwA|0xV2@K z;?h{9xHMKNE{#>HsHjNIQrrctMoX!72YXP8@njsyKzj` z#*WF?MPTq%1Oe^Z0fQC@Go#??CqJuc2MbIJngEDn6A*c+I!GbW`8yD&rXUXs6#}eV z7Rvrs6K4g8kWGL=5d^B!9vB##Xc1ZbM;g|J15zILksuv7AYR^lAd0%cg+O&&IUtHv zZCZ{UO5X#-jRPW!Z(JI00`eZt=FR~r5Bo@vjvNp#Z$1!Ot;U0ZO*}Xt%ytqh^Z_>U zs~MgJs^iZAVYVAtA+|bf8qWeCogs^@ zjx3)0n9G8^hfTV0K+3~D5~M2!#LJrx1Q--SpgNxb16v(t`<0botHY-8ECA9CvRDvV zJg!NwfdzRFn{)>m7Nk7vBS8W8%KbSIvM9xL1@2smn^%TJl{e@E zc!LFb3q)``$RhHk5(~1F(~=ZLMR zq_CK*rj(W;D8=ToB5jo-UOXa33K1N&(Yglkx`3h-Zyu3W3K1Nm84+uxh!2m5u|fn# zWE9bZ7g?Y!3YN$s)T|{k0c&9n%PM79U-Ph<(yXr)thUJdZO-!P>ZoSGia88wOJav@ za4ex_Ty$iQh))uhN>tmRHMD^;pB1x5v3Fk;jS&(v2Qg(nTL%YJ?9;@qqtq1BY6FU4 z4#TQT+TkKY#?Yk_b1)?mnLtq%a*AXO#Z-YvmpCHZ;}Pm?mcaIS1jD9BoUmX~o?EzD z!Bkr)7;_j_Q`j7k5UNY8R_;96;F!V{$+H+Yb8M=H*h(%Ts$2|&E$k+=Ae0wuOtm9Y z*y53@F)o#$8zMUsD6zG?1?(>gOCVo?$QE{?0NO_bqdK$=Kx>jY~x6O6X3SZORATL8DET(0-b2$_MSL z(WWf4De+ggsV|RB-PCM~Qx0a(>#W(P2&ZaOca1hxLU++@Q$Fa98f~hC?yA|Qe9#^m zZOTHMl26oa+KI=eo@zG585m>JZklb1aH=--(r8m9ba%}*<%9OtXj3J0fM%QWLHlU5 zDFZ!5Vn)Vr?#E`dneeboa=!U8P7cxrgldU#SCx=?;dcY^%m$pHPfd_bl64g3!TnW+ zN6BddGzpD1F@2d?2Ba23#07UQCw<*7ZgSi>S+aZDq(p=Ae)=b*hJjTX-%iWB;Wwt( zx##HJ=e8IBMS2uk1eLD4y!Phxn(EnpKi@W~SRHCG)U{C8V4>{1`}}=RXSi;%-26-L zwx?VZt4dApJxDVz+q1~{cAqmT5gGOsdD+|c{wBS)w?l>P6W8BH9&nh@E$7q0wO8ue z-|hLZgQLF4|1E_TRH_|jwd~?eShJDBUIrRZO>Iw9_|edQNtS+whg;WX4*BzN{@921 zUUs@ab-(MF+A5^)!nWU!n6TVv+5u_%t_Mxab_LE{KmJna%v)bL|Dw}7YvkqF>P|gZ zi|U(MB@gZ}aQ%eRGq!G{V;vr^uBtA7YH;9S^2@m3!(+;|6zxZ6%$+K=-bDSmZm~`1%12Qyc3E)_?z@_A zdYX7VZI;7~nuvD4*NPh)_w0_|)~SP@-S&p^q-=%ple~~!QCHSk<>ub6A0WLp_iFAMiGSJH(xYo^ zD~&>T?1*i6_4<_elb1Q0HZ57Rw)^Xv7tgA%d>U~7i0cWhuX=5)+WO?^t2a0MA3nM! zqwbHg!IKYpJUc3XaU<#Imk)G~cOT~UMg7Yw0c!#>>d)WLeE0Mub-Owt@%X0>CC7^w z^gq`j&$12O8tvI^!lyk3>y8}I6rS5-xu2OWX(Eg9(kH&OOtMl(YzggO(zmDDQ zl3O3vs!Lvu-u&2nPr?4- zsbdl^9qJe15-}&zwcE?wex9j6Jnn8gX!w%e$5xIqe(;;qt?qU|=jEQMbos9664giA zF{O1-@4cq0H%!0PeZ%(Xx~IDq%`up{d3J*&vP16mi(%_e)+EnqH9@Dru&lCYvj6>= z3m!JpTe;XnHZtI3@czWfpAFfO|H4vg^LUTVrS#GE2OJ`oU+8gi#ezR~jrZ%-=ic!a zeJoa2E;(h=*Cc)4%BdwwRvhkeb=n!NzJ43uSeFbsc)@H|@w!6CBH7H%PTr5t)cBVF z@Y?F<2jaMGUeZ68jdXJ87J2ADZEl@QExlcR@<4ivK_|a3ejMO@shdw|(wIuqhi-oy z4n8_KL7ute;_APi!?;jnGQ02A6QjPod+q*{vDMF}2RmDx?R;up@Y-YAKI^8C*=NIJ zyL^^zb#C;l&8c2tqpIu{?^#s3vSH4dH1iG3!=L!Zc3u!t)uq+Q)8bz(UhcfI@A#FW z$tRCDTpPOed&_utYf)KE+TMu8Cl&?WtBs$SUf}ZE#GmqyJad;g-}JMM3yUwPOwCJh z(}~V|@z!G2J?XcD{~9!8kCm%?hq|1oZM(<>*`PafelIz&rP}Y0QKDW`CIy?!bLpSH zrS*-9vKgya-ZBZ>D%$dN;D*gvvW+(vK0ICXeML=C>f*2%huq{J`_!JPwRRkBa(8`~ zirVyqL*uvKJonYG7g5d&hnV{eTP|O8s%MHp>egQZBO}`<{PE4yhI^@6eH{abmaaYa z$f~pDZzub&CJ{K%oYOsso3tk`qC-8Y%q*%$U6ua8z^+YDMYBKMcWV|E?$-u%s`KIU6)58ppxLCg*N!Yd_rvbzLSZX4v*yr0?qzEP&^PXfMo_#4J;_?aecBvhU@_KaKkU^@PGZXAAZ(2UQ*}qgrzgRNo zyC-$ucYC)zr@rc|`%<%2TXas`?GbP;p(?f8(ac$8+23tyCy7a$GIzuDn|osq4Y;)7 zlk=XIMZJIW__|fg`8WC>8n``p?4>fp%YA#^^cn4txhem%*y}bc*0j0PDeTHivw_$B zMr~iRxlI1!36JtM{Yx@;xYqO(PxkvNZ2a$|zunxiI`VMdX4#gj)))8gufN9J75N_x zTB+O>`AlMPDR1o#;Ijmi;I5!q zwdVZpYtSjcA>z+R2HRaF?(^b~tQ=pw{F^f4FrQFEYc3ywF{Eq$VEn(ub zF$WKxyxsK4LHdKk+t=a?u(D@Ui6LLsDO1nQbw5go&I99!_R4FFMeL1<(8;BXvy@>-B*RQT{@_) zG{<=BWy9llTz9TmW#xO@`9|=WqLd>AU$nmbbwWbQGLPslbzC!cc&)0nh)Oc7*Y0)6 z!*$8Y9S>dP-5%!tkQ6g+*R#~FXQj_OKmYx;(>?FJT<>=+)AhRQt*B3W*ndDMB{G2> zT=v;e)l`rHt6x$$2Eg(*kKq^qet%SMCgBTtCa{mfdSuf=Rl6xLHx}xzkfFWs{R=|~ z#5vy003WKP!k0KxIUHd?8%Gj=<_U{~ zqbPhmA{$;X^P=akVyahkNmNz;q*1G2X?GQ;R4@r0a63E~meL2ouY{67BxI3~2;OIY z2sL4Lrb37wg|Cu(IF7W5uZx_M+9mu{?8G7IuqU98@9BF?kzL5AJfb7(!YPjyU(8D( z%O?(588HQxbeqc!!rx|TM|OxxjhG!XIL2|hKJf;Lu=!JDr(&nCXgPc_e9wZP6?l-a z`TDRXM0qsC$RhrNEs(tvvm*|~)aA$rN(YWz)?BVTaAyuB_lC^^EkebOqtaY(o!KDj zX*#4)1v-sdz;ZdNA(6Kuda&S3=?<+;)FIT9$N}L~!J_z86C}q*56owia;S+O>E^?H z{fKSHd@*I%IzD!6L{oH*CGj?RRq0qr^0 z-@=}Q9%#ihw-#}w@Jk&GcW}#&K2xL+7TpS20ER4Zj0PIq8&w*6cM3Tpgm6XZbHVEV|UDAEJ;C5?F^$U|HvPYd!;H6|s76uuR~q_iQ0wfIt`Ps@i8 z60$ZB^RV4R;FTgaPXsAKo(3GDy+I37_|v8(u`I|Qy%Mth z&1xD=ggM$|oTN2Gyk-Ja4PVUC0<{=hvl;)M|9KX`hDXmwKM+Gi-$o}w&&4*!p&q}} z#<>AL3*a^OVZQIbG4J2-&$0mC%_tqxa+Rn8o1AX*H!a;o9t#pT_Cx|F9BX{-;{X4- zK@R)Igf6FXWMW4s!87Q|(QD0p&3YT6uLHm8nU(@NEwACs%9&$d!E*2XPoCL!_`7pm zOB@^YNJ$VObKF1VzVHrg$J{#sfD^FU?_{riUf(~#aBIGVba49dh6m8*LqwZnKE6H% zAuA9LI9BzBhB!P;gN&{!gbcQes$;5 zDk%Col+gcGfPC072E#*kB$1MY`JW^}QW1po$MQrK=PL@`Ee#8ngZ{4d+e3h+twPHM z8tRR@V4a*HLde3p;+Ttd#3!Uch^lqKd<^Uv0dV}rfbxhp6%&9r0}d!Z2O^I3I~&v5 z@H~-3#?TW98T}6sANGF){(#CI@c{O31GY^rD)(OsA6ou@saOTfKe>GL3G5T0;NAVf z$CJSu#)3DD0nZ7B^LUtUj)f_p4015A&k23t$#)Q>Recis3-&pDi^dm@ZZJReBJOa+ z?_=@oOZ;dW(+3@Z*BkyOq!*Od1D?@6=qnHK%1$un>jCLt(izTPkn(|l>Ofiu#9-j{ T2P8k>h;76JsDHx;THyZxgSl!6 literal 0 HcmV?d00001 diff --git a/smtERP-web/public/doc/vendor_template.xls b/smtERP-web/public/doc/vendor_template.xls new file mode 100644 index 0000000000000000000000000000000000000000..2e9201c8e247720180d899c318a2f5a2ac4fee1c GIT binary patch literal 18944 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 + + + + + + + + + + + + + + + +

+
+
+
+
+
+ 正在加载系统,请耐心等待 +
+
+
+ + + + diff --git a/smtERP-web/public/static/Android.png b/smtERP-web/public/static/Android.png new file mode 100644 index 0000000000000000000000000000000000000000..a4174f7b3e8063238492d47af62dfda0a30cb002 GIT binary patch literal 3102 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
N=-z5wbwPKCwJ0y1(}P^4ChP0{ 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 literal 0 HcmV?d00001 diff --git a/smtERP-web/public/static/banner-home.jpg b/smtERP-web/public/static/banner-home.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c118b8b63a4d2125938991339d227a189995cfaa GIT binary patch literal 37795 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 t1P2DY0Ztq3oZh0}R@PXh=xB$QNu1 zHbtQsc+HnJ$acV~qSR^u#EG8hBFs(7jOV8oAyHhtVt73&TJ|+|L8gQ!dy8>{C(gK6 zu{cxD=NQzCe)7a_(c8dafh)4OyA)cntCdPfuR8W28Vr^6Ps_^{ zh14y;MgD3kHz8i)fg(9sDOCNom*$`4HJjHyUVP56J&5NcYZ7n%mf4vj{Vd0*hemxc zPpf@DkAoO3R@9LOB)%$R$lJOLdV8SZN+66_LZ<0RCpMdyG<|UH>-JAC9|y3ST6vdm zoMtJyRIPRtxl;n7;t`hXfeEKohutHi4}4!(UUygB;3d9T9g;Q>3MaA4eRqXcKODVg zwt~f~g1AtyCkrmb<|7!BuF#j2uku|r?s7IgEt4MY$Id`$F_ze3!6^PemqsQPN=eKP z-RY|(;g8XIcEq8hwumE9X?gV2P(oVH5VoQ%=oS~1eWat;qR@Bhec#-ySD3n`ZX(Mo zW1MCKBk7#3C65^7jp@2=x}Ra-{W~@FUP?PqLp0=FZA}WSIX6v7FOHq*=?e{K*Z{l= zC+$)`m%{^*DFh@vKW_b+R>xoIg~sJQdmq41Yj{ff>%13%myx81_>epi#PU@$6QcA2OTG24zmEu+s7n$5A??$wGjTQodVQMeBi7uJq!CN3ss-v?XMaIW7+H7k z)ZkU^mWK^0S}gcGfkXcS+j^g;AXB7=vo;9WT3MOJA9oHBgncxB@S3k}XO|sN_}#zKrV4m=hD0ld0+o%<5yRXQP40Fr#shVs(-L9T~qPB0T#C{OF zIv_rWU+MQDpN^!SmRIvchBgT&%0AGZQ`vAST5Edm&)%^elT=XHJf&1y1M(agUb9u& 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%0DCNFqWnqd7^&7d<}K z!6kC|l&RF#G^%9>j3iOd0M<^gmbqn4DJyu= zv+yp@$O<|<6}pU7!=f1vf@}S4^+6acmxuO%8|U^2X!~US*_&Y4GAPz~RqVZ@eFnc7D##Y!&$7u0Rgd!q;rmyS}Hb(6C`u+k0aVkZm<7n7J&KIoRznv?l485pI$i z$Cp3rTYTJqFGBd@brzsx7)MALnHrPL%#W>yLS~gQp0^MiHaTf>X=?aTB0^*ihrbNj z*Ua~E9FlDsfhWjLoSW+z@7f}XIYl|^6VJ#7 zoyHyC*-i0##^Fvutz~kKE-@QEWg>ZEkmtt7h79PDF%^rsFt7RsDgDd&u4CWwpL`dJ z4k5Cc3m))-t&YXzMl)$I@*2UqQ~s2LEgoN3zCfT~9F+fd_>4{Z(RR4}6AQ*{ghs%q z=F6AYOeC?S7TdJ!5th)ybg=@>S=ZR+BKrt=O?_zg1lj%fSYG01{QbZEuRk-*oaCUd zAR$-qTFY9?P}NW7Y~@pcx2pocO27TZeP3K0731FbIz!|&h!`H%CD zzu~Xn&+p&(0&X9)dqMJ?ItLg0Ec|-&$FKYMU-##)`nbI{n;v-q+}kCd&PTN&u(^9( zZF9KJoZ>*e{8-6hhptPtU=}Z*RRDr-#njDxjajHFej_oPEKQUef=HrOsjWr~N*YFk zk43t6T3_?VIj6kM{wP?vmQJ4peKMkHMiZZ-Lp=M?L?AEVRDpc)v}@qdJ0w0}`dtO^ zQ1{soe5*pdjx0mlskl%&D2mc%mIp-PU6`!a7FDP(G84lS8n z?R0mlEHe{#9p2p#GXz-DI_rf8_m0LQ9-$>nDg;hNzjhk(DrFs{Kz3%1e!dw*A5sGH z<)s=uATk`n4y@FylO&hZ#%JXPP{8G!s%*!FCgs4|lR0@^H$--&G}rDC&vGue;9efU zSQV(&7Zvnma#V(#JC^LpoRyQNpDXgJjm>K zh3LhRRxV_Fm;o&hy-Sb%eE)tE#FRhuNyEMGZ*#SvoG!s6#cojh0SG^QB$6JhCN00R zv77Am)L$TcSaqZdq`(22cY(-`!-*BPsHO)d^VBcDY@dXvL0YpOZEkH>cNmBf8v>dx zH#~PfY4r?R-V3m1jWGIxr5aRpqg)X`KkC=V4Mlv!L00ph9Wa76b5!nV2=RxEa>GhQ z@+AwKk#fY5)Q9n~biv1kVf3_>t|0CeX{?frbr%(!K7L1Nt;cC9TnQWi2mM-oKm%H# z6$8!>q+JGx{0zCxxHcY%asPBqgLO8 z2-ctD;f;qrTXt+?EgKUIZ$TK*3l04eYc(%fGJ?@k6LWxwVu$Ss{TW^=ps>|BaB~e) zmX%u3TB({{T^HE+u{+T3T;wpRT;W?*T-zowvRimKMORqc5NMWT+f_?LLUSka1kqY;x98;m*2 zGSV3bQixmThpz&{ezgDkqGD5*;7hgPBoYj#qOIaAVD3Bl!Ot;9d23@p133 zH>$wHcj4pn{`hr2KHs1Bt?EJ3ARs#^#lBOE854xaF6DYd>1_YDfvn!@RaRCFUAa}- z@4ctnDMkU>d20M&G1ZCSF~9`qU;%}Yf6FZffvhIz16z_5buc<)GcD>seaavXk zOegTjt9+^^4qsVGqGER5p{lEc3F`Z)Kfb^I;rDO<_?Pofzw@u(@B&VY_~L>*eGV}$ z@av6#|5bngb$@)+=es@|@GfrEgz9Yo%mwm}V7!O4zJ8HwM=j!VkN zh3u(c1ab_orfVJW4(s08p$T$7yjZthJfVyvt~WBF-;#z-gKR%KwK5GmWIwU-jQ8GG zSDaa`9oK;hYAxiwSKmHvz!Iw9Y)^oIJiVP)*-9yhilW537qv_n-tXn^7~ELU#c3|SHG!-^y|`pP z{3moW0jB5G@0=bnI|%3LsU@Jq1=PanKYf1{c6dVjl5nA_kNQ1_b!W@MiPIiZ#o&X5 z!}279_{gTG8j0XbEdw-tXpwg1)Ky@fle|H0UgMJP%1V$@h4Nwa96S^toMSVF5IZB~ zyp_+D_Sgu6U%h;UFldbrHACtrwW6E>uX2icU_@$>$s(%iHSaA=?DJRVyKstmW?2wL zAERu>71vzBPT0E>kL6`wX#Pgg_3;QvR;CM#FpF#CyHTEuCZ=m(q`9B29(N9|uVlf= z5Hj0xZDhb`=4E}K7^L+G69rGsa~c zx=raMQX8Vn^ow15||ZIJ_nz1uw`a3K!NC*`^$ZSyo= zHDX8&SHA2L^rK-1tDK~DBL+2X6Z2$QA-|wv(4g;n{q`uEDal7P+Q&xELv#GBB!+eh zPu6Q8btc4@-t$4Cag2W(rRMm0wE8Dg zU$$uVY^PiBvSQRzR_2`HJ0qQl8jq;7^tw>gqg?mTBr$m9R7Q4E14*OM{andk)r<$} zuwERw5`~12f6|isD}oOuqK?IdS#|C8QCqR&%hOsWrpFZL^MG4Lkq<+jkvt}2VFtW& z+b>Lf#iN>UZ80w56%&H3^LrlWIe}L9~BPu+LnDoYx$S4 z%VQcMR#pXdb&T?=-~%G7;LVh(qN7H|P6E6WeVe{Ibo91oAL~YgVtFHp_mzD&&w7#F zFf`sb_e^$1hHO!`Tgk!O-wF8DvmWxvNq<#1uIvT74(r|~?DNj9jhx_mRjSXc1#-SB zz#%5_AO=jwgfIZNmg@x{n9l`g8-=8x1D%(v`@@X86>^8nEm-V-&k?ao;%uq2wYCOy z>ylu%+sU^`nbi29do#Cp^%Eua1Z04(0QA8j4zjT^aRI)6JNV=K>!1I4{o^0!Z?E(F zH)=7VkNte{b@a~LuQz`F;@^MWpC9j^ANR9RK!F!{m+Qz2O=P_Glxzf6$o_^k#S=>cEzv@_3DAcrqo&&FF3(rsm)-Ah`U8-23iL@lmMLpBMU=CJUsV({dPTPzd4z5@ualEs>{Ro`;zP}MXt=gMhrVo zxEEAIQ+7!(!!D4Ar@S4VY=fw}$KACiy$<@8bgS-_fUTNEQ>|A=ZdU0$)-F^fa+_n= zC3(*9hBEOqaT8PK?l|sZYods0jvW%9^`A? zKP1CrHp+*>1pUhT@!ceU5J0b33Cvru-mM9v2UT$Tm?QPmm5#ab)R2_}XvK#yEwdBH zpKi0ZqDMw8$OxUyB|>gX`78XwV|c31syjxM5})Wg!fLg$k9H#Z_29%{f!%H7nLNiP zw4$1nC*xZ$W7zL8Txk6adQjgXyMHc=P`wNLV~;r*25kKH z!zG7_`VZ3uBhMyf2`c6k=oZVEzTD62L2(-n1|U`p+efq^{(=Q{ z??4pbKvq6eeuqeMWjCqlwCuW34#4LdKR@c-5!_T>_?Y)S8nssONC+FW>;P>+m60=c z5}~hJIJiJ~0S3&$#+P;xcmaNJLaJ`W@2|$vR^Mp_ojRK2r4maNYmR+C9zHCf4L!+aos&bi{^zSwwK zOVE$NF`O;Gek3hh0c-Bz8xy8M(uFcx=3JkFxsWmF5rbHsG$Cu*lh*(PWn0^vZyKgT zNGzf)p5|b)R%a@-fn`39JZm{xB;P3h5b;z1Q1~KHPgM~<)*Nlpf-wu4nb{w$cTHqa z7c-i0r&ZR+-a>lpK5)WE9ZC4#KP-U3cnddYn5gaIGpslpnwf|L9|oGA+#`12H?gda zWK!)``6Q#BM_ZTyvA+MdmWo;U6S~)u|LtFX-7K(xelew z;Bd|$S&QVwQ;KdqE3pvDynDDu8~dW^aU)Q^`|s1h(ASH zu)vYmHHhHW{v!Yd;e~-kU4wD}sV!z8j?(^;#ei}ZLGRyl$U@k^4ZP9q+_-ev7ln$U z9TT;l$s5eO0M@N~X~{6*4n&vNq^9f@;&rkW(n)yR#PU%`;m2p8sO0Q%4Tsw85A#Q; z)j`K^D3_41ru}nX&(qk}iA4l%@zm`eJzdk2u`wN%Hw)Wy#9HJx_69|>$SE-zzy+0| z)UL>hncda16WFx*LCkZ2+J}{RX_UJ3-Vx;{Oso+C)^uVwS-xHbt92P-XJT?3-LJM0 zFznK3TH3kYvooTO3&cE1XVIL5n2;GwtGujOj2Ks@QGTvzuD@Mzw};5OTZ( zj;(IQX+szs?Dqz>en>LOnqk^~^eNEpJaZTZiPW4jFN|q@$+8ez@>#m{t$6Qlwo>y?iBEc%7~o^XKRN^_k5x zjh_oJ^ejdXX+GJg>j*v9tqC~3#;y7(-uRXBQU`^=QW(xdbTh)5=O(LIcF5H?_dGO5 zV+PdzrW|)CpzF%xVCsQe$>Eg2=KwvTw{^XVAQqn|{%m_?S<(nD2)81>*Z`m6hLf)l zep#rBp>TG#3K0owUP4<$+A%v;83%)zF30{RbOt&yw(%m1tJazXcl|PzO=fA$Ev4y* zQB;C=_MlmtQDg@==DQ0$7I#Sc`5+!86piW`iO-EK;STz7%jG{2a>Xq2x#XGd6vQav zj50EVoh@orkbTcVdmsUQc_mVKx3zjOE0)=EB83iMk0HkIW8vEf#TkKB6UR28_?kJ^ zcyycUm+eR-qA&zhY&?H9GK>*Mgf-3=bA6Opo@8h_()=}C;sFyGqv2;44c2p}ED~`& zV#|tZTQ!d;8-33ugPc#!S#yugqgXXBx2>tIIc&7t5MO)kt;n1)wlQG>z~T<`3ooZx z|)(*WCDBCjZ+FJ z3joi#;OD#k_1EX$f8HM-^?B=FcfJf$MZ{UPYnj!WOOeoaGb@0%2Fq2MGe%at1q9)B zR2fK@3NU~CP{B^IyBK<3k`j~Sw9u_iS;l{?!5o*>c}o>8XbIh;TzDs&6MG)8e3^2rt^vi z#;jJwA10#5jfgvc5E!*h9GrA4v0hWkIf=D>K5w(0<3^_**mvSDzw;me^6j7gc>Tk7 z{`MkSb#dPX;GFY%fxx@)^Uc5ieE-|e`{U!@VjJZ}y{qcN+s6y*8?}2=yb9N~3_2*W zn~#9O(iZ!3ZMKEl0k|r&l1$qyZzSJsoW`&6ItOj8rSXvMe5ZHE4=0sYx+5r=n zVUOV(+VCsx1iVzH3}`DNx(`@2S-oRA-Ln0xq4CP{(~jRUGq}R0pC;rEIGwry}9XcFK_e zFfv;f4kkv3%}y4L^nIEXnBxWQ9U&W~9f~HG(H>!o$r&}^z;RX+o}1A7$lh0PA~yP4 zq|t$OJ`Yv1izZDx9#QmS7sf<){NWd|msu*-ZAR{L=MLm+ zS=6F3TXdAQ*n9rj5y@jtRcPJkA>)|enwE3;xj(RPx>)Tngq?p_=&M<3bPH8jx;MUF zk4eg!j^$=^+2)r7N@S&vF-ftHtIW}6Ru5A_2V);@9-BqBM99yG7xnZM;e6!qLw&Lq z$x`bxgXBAV@4+6bP5$E(KR-*SQP=nyj4kBoZ>7!7_7g^=rCrz>`+RCOBJA3+ODzI& z_>~lzx>rW!>gy^s4XA0rc-mY@g9#c8=OyHkm&4*pNAs9Hz~o(A%SG|eGV$;l#XO{E4)+{G?c3!*4g+6`%kepoBh7vWq2Kqn<%TQ)+6f(71pla2~C2AtT@P&neoMLz1v-VRr zG?s)nqqSP)tZ}P}o`LLTda-%sEBpO`Ahw>sug~K$4ME40RRfG`QrkM>8xt|@yV=rf zT^gno#N_;ZqJr#tA$zUtof)J~w=2!XuS% zJgat#>+Fl*EO-L^(&Yc+fBY)<9I6kW>oNeBecTZwDD7-~gvBin2R>10CogDE*8FYlS6ekI1# z0eYLbHpSx^0o^z!SMEU`%!vAui>h1Sh`)a4KmGCTAOCXx@pu02`e-V2-PUt~AHVqb zkN4ky-k+cKmXIBos|r-RleeZeWE|MDT!2=Iu=di^BZ;!f=>{A(N9|a<*7oeJ+P*}N zB#HMu&$)MA{cCyOTj!ia3+(u;$Kzg{a~eHhsp`$L!@BO*Gj(gfa{UDW`|I!fZp1ie zz2ec{c0_)YkWOY?0CDdPSPeGErXqYI;8&}P-gRi!)*@2l zM3-Q$qn8YFRZtZ~j!H^AKzAkLzDu=StF;Z&9AWj5b>qioV`S)#bWB&PH8JB_(6kCT zRcewNPj>+F6uZ|fi7}BI>H0hIC$C2A?H6}@X~K8)qF-*+9wV?WA$iB}s>H>r+I{%& zK6lxpgk6oFP}Z#3FIX*+@sVA2;Ldo0cq}PDo+w|XZVY%+*BA|^fI>qDtQ3Xr?p^e8 zu?g((#?xD^lDZrdVkse(i!GrFrb?BO8taBs?PnGiGMKnO7{9H*Ri*=H0 z!W^MZv~y`Ma+d{h-Fyky5yYS+L^`VZ%g`eq+b9Y}9NKKwT4=4k>Lf|;Qi_@GS>1Cr zvQQ)(L#T&%{xn_B@hdOw=O_f2nT@nzI*`u?pQZSuw|SqSPcK<=Ko-101!GY*HFb#O z>3+{<62G=;uYE2JeesKtgV7)w?Q0S&99RQK5lsgcW|XNZ3s2*>>(2xrVrg+c&>eiU zC6jt+9b=ZvRY7={a_xqgEvjuMDtK)dbQ)#kul1M&!9hdEtauYV@dU5s@qwp`tZIJt zP2<)RWXG;*epq*V=od;qTq?5HMX0n@ODB@vq~FukOHZtTzVm*nFtBaX4E;HNDp@bCzrt5`epd$<_1%RHuvCPBr1 zb*@r}9Z&W#152wz>DucDHWi?*`tvP=++oTT*!J?!S^=HD^0V;s*ZW_8z5ng! z=Z{~NrsAW8!S=qJT?2|fDe@5#1={q3XBcGz5pL;)wKm`Y20Bi=kxJxiMAgYaRNMPo zYw?GB$67gqd$$+0@OC#iKIEY!izg+IcKame0$7XncR29<7b7*t?Ddv}jD!z;q5Oz* z<{~RwgXj}B;@eIx+KZJp8u)|`xA#dQHd0rEapj~0z`KgZ>K$oN$VP7-PK#3Y8YFLD zp|u63-Tk`-SCy|-N_V87_mU47>OQ@CQP1f`Db$xQVCApfB%pA%j^8@_t!uF z_4QA`^Dp1{I=Jtuw*cfX-|@$9uYdaE{P@7X{k%VZ)yMlf63_=Z0^WbxW{uJq+Dz{P zl*~fW>G*Bw6;JFpezUJl&Bw8k@N0J(q3}s92K_CtEyh#yb+`EPXKU=%we6j8~}Y5?NMiK zHmSa`HWgjk88s5hbQGgl-bl=$ysA!iPikkZI=!!)y-BYv0_XKQ)EnXY2J8L4D7-wL z*Xxi~_Az)Kgz8Q0(Qb7FX`t&)Lmd&T&mZKK@i2+tlEX8I!gU5co5l=T=q#xW_RE zJUO1Z&Io57M#4s(b)RNzaaI$!Y@B8$0H}g!-y%>hbjrjXi^F@`eU1~U29E0>n;4}p z?YyPUjHhG^y57BSoOo{ChW%^&PhOjBk0e;Uqpz^x{^1-iHL3ZzP1@{1i6obF%E7ga zFd`I)T5k@i%q#N_99bqK2)wih#gxLa@ZCU(#ah~~2%S4tIb{~EFAzFe5~Cf#Nm7mo zE0z!om#E8uuR5U7jAUgT^TimR2MK2#NMhq^h}`5+i0MW(hY73NM3W=8Ez6$BP!A^~ zB9kN^=d3a&+BXgfkiQ-q0ID+da!3gokVPP}&C|1PB#o6tQPo9Zi2;Dfo}u1Rz6Udy z(SMZ)VBm^@0xU0x8Aj&|-a!-(za5fz7k>P@pI45*S-yEoim$Om+Ij=d^d(jiVEfQE zERxBLJ@IjjcF=87ZeB8<&YASXItGpb%F))mQoCQ#}& zi=oe*h2i5?YZ9KjCP~9;LW@?F)^Owc5^d=SO+D$%IGs=<;@o=%J1QB24;H+i~ctvf<7V}}&X%^3NVKLaJ ze{N&a`-g~%-N=EscYk{^DLc(rUX>N#=Ub%7#py+9&wiN}AC+{jUj=cuk7m&hGal82 z`Ng|k>fGzutfU z`T67L`vagiOXst$z7NEt<4!0`J$rr=muggGM=zL_)RyI zI?ZN*ssOms6sFVlV8VMwAq6T&o%7{PRrw;B(+sO<^6sVPcELD&tw<^$lOm+vu1?-y zfuo$OCaxu6PP5G>M|}hzpn@57u;v(knY2X(+9fKdJOsXCOa-bkax$L2#ZiS~pt)Z5TJ)KZ_8FCxn%Cg#K6zYbHJLlJeNpTWgQ`LT@5>$^^ z|9q-SZHB6}k-WHd>ztQmTJXDmu{NJuYI?PgIrd`f&+6lGY1_=E1_!@q>_m2S<=}V@tT8}VX_dBauS`Ov}smQy8G$w%{x(nwqWry z(%8@KnkejZT2parDH^2gJUWu(^l}IuydBKgkdZj}W;y&CT?@+Fo`gtJewgG!KeImF z+Whr#`rQ^( z%qw20z&G8jN=Q`t<%q?+BKa3x2LX|N_lFMJSISm+w(2*5H*U6~G{=yXhZrNyN9;E% zqYE4{v%al`5@O|R9*oY?PN!pcmwWuk3HEzDAt;NbBa0ugE&p=JpUpL zsA?7q1v-w0JZxKz?ijUMp0S?<=$ZO{7XhfcBa)5EI%&$>CRVm0&X~;5(PcuHX-D0n zU%E}CuL5+=1KB&uX>S6UW;pAuBWNFJue&4mUm4Az#kAl$)s72u)*qrV|$ zfY~nN#w++1gFFtp3n4wJ_^tonfSz?AE8e^}vW(07->Lctfniso9UrcKnDLTq1WLvq+T7jdiB{wPeq^V^IBJuge-1dhfvX;1$s$VrF&6c_Xiyii@$p zo-=wV%x$LnI5U0*DUTkU3+AFnoY4~$m{!WLzw|^8ef0J22GlTZQ(Pr@dBF!p7n*H%q8@Fq zngNV*(sL92cql5>v~t=3ylU9L(H>jJX^%vxB4aLwIgIn{WyQxz_Px$pX-1a4i>cc|MnxO?FWAzyte-mN~^0py_%fGoUT z68cL=&DXnq=3#7Iac{lOp=)gKb{X&LGy-*LjQ&_Q+y&gy z(B9okc!)PZytMphzFA}}sgEACJ z1yl?on@`PoMtZPwZogGc+AD=5%nQHEBUr1y$#^bl)q8QAvAW~XoGqaf6yWSBu;_r&hkjI5vA7%D45+ewqnXglNDuZK&Axv^ z#uS?LW+G@-RXf+p?ChoL0R*6Z4}JM)fm%Q4Mq{_1t2@4w1$VRvPokqs$_EIE8NU?@ zVpYzlR!}nWKxCq5$6SeDKwl?gmh{^OF=V>$v|1?<=u0RJt(xskfI3yTRCLXUvB_yU zilE0B^IVgt#C{=S)Z$sl;C;i|#{wn4`_k5~429!x{j|-! zrH5LMmfQ8{B6dWtaq8KwdpS+d$#mM5S>kCqCCt@_ls5_1{3gyNx1DwFq;3^vVlauT zc@S9UZw_Fg$Np@v_A(PBTT<5M5z&qMIMOaW1Ht;|IP54$wPP{(zTQ&qNg4JvS|n@r z#j)s#pR0;lFn~r5dmy#CuUjCR# z@L?l~KpNtI{gC+t2skf4=|yA+usSOH#`Bqvlzg1p&AE%Fht;(Bbr>7mrZ-{ClE}8W+Z&l$O zD7e7cj6cLr>@NClbt6^I4nx1mm)t(@s*^fCvzv+5j!s3tOhau_L9YZ&N_v4`OVB8Kyshpn2jMtD`5Xf|p%EsyNi9KLr5w0)PK@ z{`UL%=RaQm_?PpS1NMoeU2h@^`1Qu$f8M|U{QUWGKQAr`Y9pO&pJ=G>9mRymeVjti zT94FG34*XI^Q+gZcf1po>GU=GwRN4!2LbpvLbl2bK*alf&pFqxeL*|TiT?Jl`sLH1 zMeG9~ga@_y>FSmnDS2;Iw);#p76aIX7J zAvCE}sJ1D(hyVcZTQ3qM5AXZ><#EZXG*xYl*9z(zsM)HaP|(!#)d8LgjVvZjl{KRZ z-C|d&ee`adi&_fp!tqlby4S|h#9x}S#0V_=xkA}Q;67O*xs9Wj^I3VQUh&qJf(GN$ z27LW_i{0g4%jm*jE7~nnx3NhNdn(4hHd`xV8Hwru$scW8p#>7cNo&+H32AM7d5Y#e zt^=GG0DRv1^-*uHAq`Dk9#``FxuwmFMkU874SXysq8{$*Sg$}Kp1y2oi7O;5(i@ z`5DGZ4X~>RO%H2_+P!Jp`BCXAsu_`j~|0&iw2_0E_qyw(44M@ifH7N|cfYIaivWv@x#I zx=0}A!qeqM3SA2N?oKsv3etEYj{sz{1x$e6!4QGv`R0a01e=XyCQUuT5sM=YA2-`v zXjRq6aP5CvD;clF6_4~k3kqETivRUre%Vp1OAx>%etg#7f4=|q$NS&k_x;x7O-8@! zez0XAK|idw`m@KjlfS@Fci#+}MtFreP&QB_2&hW$&$6;Ep{x^!O=Yi-tE10NW&czx z);R#ZR)^kCTL&eCbZVpyr^+Y0HsNUvRR6J$> zU>I}T3<<*HEjJ%k`2f(xBVDS3;1NiIf2;jOq0DAC{$U4{F~oxauibIXyBSXnWV@2E z+^ltd3(ygJj$ms|-V+c;C*mD|b3&ODZ1mf`PG_=7ra0Htz?0g1kGFn5=b!%a{r~dU z*FXHu@2~EmGfg*@=pSLS?Ac`#D-myP&_7Z+q@Dg15c;=AjoLbl6w@; z70>3BfCa{JlQ0!bt-#GpItm|We3XH7=?_JYWbsmBD+TU`v$45_*UiRo5CzuzVJE!6mQY5# z(rnChOhU~MSUOrZNI3a}YMZXTnf8cT)tp~5X|0)nkO&4zcMwY_LF}q37hP}R`k-!{bl2w6R`cuR5U1XiI)f<7qLy`=2q>O`&pIeyj za?EUplbMwYI@@qct8|kORBj%=kia*+-GO^3J+agW6jlsypDf{^ZdOI1--fTggtIncwR(mVkAUgUJ(_>`bMS9B?uTCmI` zF?X2)86z&*0j?@3Qc}>eyfW0|_00@I7(|+wfQPzs#^$*ADjhtc#+ND*#{UPsn}lt+ z(QmEpi2Oks4fp;>JY+aVz>Y$#QclSM=WFUW*X^YjKGsoOoi{#_9VwxJN$zq%C3C<9M7_lKVrB zDMo+RIkr~|!ML_LUwSv#FThfva!XXJq%k~Ciokf7Z*}HYQFxd_O^}`O+YFfTGjXU! z+m-pGiXpI{lzxmOtUqS3ylsZCtjVS)M~HFg(T}B48;CJ{kAM4h-#1>fg@UfmXbcLWyZE$wr{k#bCcvynW8>US%UrOnYC4d%Hj z^8v2BO{wT+LFXjyknpZB+D}R4htn(fQgpw`SfvvI*3?<>W>1fp5o&^2i5XkF8CC#k zK$gFX_)?VL&H2J~jVZyv8A9)Q26=xs`&9Z7Ea~R^-l(fifj#Vdwdy!=xANnST}99TB@o-g~mdA?SL@mi0`n&(MIVcY86 z@7oVoAhqR;8MAXww|kU#>i5gMJL&rKcv!A00Knt=X9)9_Z?p1H{eEC7Rc1lH&Qob= zv)eB*FhLO;=iV*fyd&8L3f@~U)Zf0p{_*$MfBM_&AAaX=iR(>R*cCeb+t2%NKi)q+ z-PU8`on~ux^;_Hpw|+um9@?wuzDV)?ONNUIYn{ zgtLnX>@Rj|FsChKnI{5Odmui^FngTp^y<5$)GVr05ndbp6D@rw=(^-3IcHC*r5&ubBFm< za^oZ)yKJ-)4I?Bo7f)QAr8!|6NOjafxUZ*qFz=&hMk9gsALA8)dJ*UF9DaP*vP_cPH#I$9t*JG)8E*FcdDawR z=3{<0Ts*g;D`6wETTiuyOP4dtNnmWA`lR*hd)AmICqo+^4l}XQ+E_BiXsnBx&zHM? zF|)uP7AV`gh5fUch}DN>;cNMz7eFy+<2OMFULW63wi4PTI(9Wg*B3es)*Puewl@@a zr+bs4IY9fBp0jW!942D7N%(9~)9;Ys1v5;i3`{*oV2n74f(|M!y)Hvj2&v5mk$`J- zwb}TQN%ghZBZ-PHxqf6nG4kVKFcHb72Y5EaNrN}?%sgRS*sj#Vx^cQM_ZcO5Vp}AGx*mzH*<)KRnHYeZC;)@o7Z;x3%_^}NaO+0` z*&YG7Y?DyTd4Q)-+a8zktf4#bV6k_uar%A+?nOf4k}=)fBF}w>+%C2ZfFcucoL1-$ zj46}dq36q7ivQ35^;d7+_AdOq_g{a!|Ml1V=f{0ZyXR%7a8wm$$3kmar zl{6J;iz2^@7elDZ*1R1=p=EzyJef~bz5y+?IDuO9}`V_uOstZYR@J670v0omXzQP8FW%`te3kkqqcMZ%R` z`{kYfyF1D6P8Yf-5j-mOC>k6B)%|~UQRwccrvrCmk?YzEK8fQN$io#us=g6_`Og3J z$M^sA*YgkG`K=GxytvT*Qt!gQf8byL{r&f!?~i+(%*Z9H(l561jagsSoSYnv%C>JW zG7WYyt2?7i@bz8m$k~X+b?3cZZVd*Ts|vVP-X2apt57Y-)A9HYi81Y}!a1*dZ(c#2 z9f*k#)8#UFQEyFZ1h-zVQ-BV5)w{r?;Y8lVtb@0FTsV-Ig6!S)+&9?Ium>7`nA4*5 z4r|B-fJZMIxDFpzC#g`+@5eUEKnGLQ?0Gl$bWuClF3}n#&i+E{bxZ>Cp6zAXH3I6_ z3k|A<3CR#ujue=V*N|P(ePQ(A@~*lg<$_>+wM=Lbvd~_qld0?8ssdB*$k+($sS2!a zpB%66y|AClOa9SiyA&*SUv!3Q$+7NZ}hbq*a8 z9CLMGRV;z?%mP@d7n|U;%KX;zm>uF5shGISSHTOOzo?naTMxvL)4b*{FM*%yxbb0I)yx7LS#7}OHA{IQXe^D4i^t?kb3*c71oH^Ew zaK&{GaZA8ak8zW2+%}L7Sg=>Qus0gZlL0puC+-gk8w-qe8%2FrRhoS2(RD`inakeM-5z$%&07iYwhAfv!MmWx> zk9KYo6)$2iQe<3y>}Omtptr^h*ar#-m{G{QpulKj4(yC1vf@%jp1!I}!yxp`Kbgn! z;HM1sKXmGQ>%~pR{v?1u?%$T=-BptUBu04*XF6?F+PE3FX#_<+N|7;NFN7=FihG4J z*1N2xHO~jc=sttsvkoF)pc~KI@|TPPG!7F0owB-*sm4f564pbfh+@OYnk%nwMn-NV0p2eYUDBUb%_o} z;l-F{YWy$%7Va?xI#XU`t9T-CuYLz3f|h4hSL7H!~U5SltcxU>Y1oj zrSg;66qJe^>Nw>v8(LMmR2T+h_AHo4GTFCiNzH-}#-%9&ufnBXMG8yl`&ZrLmcy~k z`5eeAg1LWaN*NhaQP4fT@rKN+t37IUj4uw?YwxJpZ?3Am0|Z9(j$6TKbBI#PEO8e6 zo?lQT%_80{OHS}g#v+%OA!I%C)-u<&OyKJ_g<8S%K^f4tR{dgZ8n568KPKm6?6h^4 zs*^o2i>?#Yrd<7sE+WD#eNQZaX<1J<7#R2pJLwsJ&?Mld| z*}W%-(Y@O_L;b{h4MJ6Ty^eNV0^n0Akotvpbn*?Ws@{&@1Ql-GE;z3zL1Y+JS1$@e z`w60t1D1W>-ka%$mke#7*KhaU{D5AJ?d{@79rj_?-CY~NRiCLeTgc;Y&)}Q_`nxB7 zQaCOg1H6twJ$o&&o#Xz#B!N2$%N%dpLbntr94fE3rj9T8zTB)MIE()xCDd9&h)Zy)v~nI-#Fl z22S@xg3jaR5-fDxBrm+dR$>YEVnbK4Lm=Y(j*IJy{dwih&PuA$Cjw95cx4Qo9=#s{ZIg`f0sp8ny2F*L8_QgK`Ko9;J|iM} z3hGa^YDRboChas1;uc*ynmu7?862mmjpyJ$XZcbMKb=mNF+b1Bm%z~ls1%|&fN7ZQ z$6(390eYBQq?2o`vh}zSbJqcYVZc_l9F1cKf+sr0*(Ei`1nyB1(PwkFmF30Jae*gK z8)}Im7|6Ur6!C~9W?nMs9{l1Sns8r>wuQJ!K*v5g?H*fL zc@EtBjO-`}3luis(AR~iJx}|LC+JXwsz;*%UFJ*F4yI>y^&wQOA#?8VRE=%pgw%wa z+21%OZ4T+y)TisU)Kkx*uditl^_s-afo43yNN(Yy)-@d0SRgE#HVrTFR10sxb%Tqu zrbmH*@}&n!s2G#SU>6_?7whl_Uv^^C6Iau+Q~~E3S6sCbxwU9ZdA$YKXS|9Ed14VQLDhzNwc>{nR{`Q0lBHC?tct4anysaCg+Ww60C#Y@bY!f#ev57id~4um=gu` zk4GDfgN#`txa;ZvxBvIQ{r%(p>wVu7@4X+7?lVd=Qb|~w=UEOx@ZtBt>$XM0U0C}3$o-lm zdc@l;YgXd4Z>rv?kpYgj!sw}YS}?t4j2mLcR+{PVbm(r76R5B$wN-lC9L&Yz#f9=q zP}@-_Y@t?xP_T%BtyG;7)1jT2@bdSiepLBI-HTcTMZq;&_|=zfXzbF3^sK3TYTa56 z*Rpc7itDy^PNq-qmyh0EMlM_-l*_Z*xF=qE&h}cRNRwc(hr!tb*PV9`g*9VVlBTcr z=f{i;Qdx}{VrNo-aBk#4>`s$#vDbs;CW>f09m>>7*xMSSITn&9V&%}feN_{(^n8^h z(pv|f89?cGlN_{{0hwtD1r+@hNPk->YL*72fway_9?!}K^^{+qQ zKR(`{7ga1Zx5=QZ<^{}-eY6IwBU6HgpBk&}Z4+yi+mJS36N`0?Jk^l{Eg($EzUSMv z(yunNQ15$X80%%kiFsGfa&+%g_vRQlaQ#(!4W$2oNcP2SWG>}s5Q=2Y7((*ePv-oMf| zf=WJALhHI}Z?@%9rZhQN3{)3nT|XX@r^hWf)B=|4SArytsC;CNrwNy;=d-Yro?un+ zG%`2*4yQtSIml#5>}Q!A%yPII?lP}VTKeGfj*B_lq#uyNYVM;8%|vC&*-~?b)8S3X63PTviA`$@(tFwVhwWJLs{NyMQL!YO9es|I6BS1q4R(76-S5?D>(mSthg54k2DJp9%-}6F2Nn$8Wk5e$dvc52IVXrCrIm0Eoi3i_B>(3DFf5E2dHR0Cb8%o9x5oS zu?mkd!^jntN&ZI0iml*b2C)k{x=kf2$S-Jtc^WT&yzW&N$+yJ&NswKQ_a`mJTBde`3 zD{6Sy8oWmv>X63+X(h=Q7Vi%PRVD`kHG&2S$DF%vl$Q7w;?4bisbSaAWlYGmo^6T= zYVEp^sd%CiYgxq91#5ici+I4dLB&Sl%F=L&2w{hTN05EQrwPu(+L_cHKz0~={^6hh z;c-7)<0h16)7xjK?Q#v>VCFApTHgA6(w7-O;cbVHpwMH~t60AT;d>A?`f$a#dfpih z&0pLhH_iPA9lU)U;khK`$y%BJz;3VW&CjXf%uaoE^_GE!il$Do2kNb zly0ZG%_qE7k04tnanCGvjZ{sIBxvUYbiq*vYIZ@-ObYaRqD$<6>YY3A`kMY=F@?5; zzQ0Z~?75TB0ZiR=hTtiPleJcqewVIyPr<^s+RAT5c)fJ)>9z}6!jy6Fjj7zj(+mQx z`}cc}GVLY_oW8cw*4he^>%3HQc9$jTH$ISMf5*$Ndgb$N__`0qBw7WTOGU%5*v!sd z1+VO3w~DUuHz$Drv=^m9BWH!P0G0W@Tp!bd=d1dXa8KcJ^d+D_yaO*-l)6+7H zcdgb_PZn@Aaro^=o_T#t3wlUqRXPNqtnP`S0WRmH;YaW}@#Ph3lHJ>-9oDM;_;&u& zUw`|b{&@ZEH+<7}Y^53=@#_+&(Cex zcYK*JR{O^;GG8C7;FCD>2%>slITQ|$8lx<$xrQ|YcNZ27!z@f=m6Tl6i@Qt5&n1rO?~KZxP-5s*%z3Dto6;o8jn zYHi=mo|QHF1OTl=w43WHxkK^`_#2J+S79tXs3P<*^EmXHukPq~2BzA!h9oN{?GQeExvGw1G)SFIujXzzSX9{a;wlrd!ePPy#QZGT zAc;|kRrT0)#Y6`AKxUPwHKG_aogh0zC1hipfxle7Pe=vU{XJh8Iff#`<~f{=>s7kM z+M2!_Mcn3|5s#ibvK@CGPH4})cI`b9ADrEyj*aYEfN)^oh58rF5!80U%G^=_{QuMS zx65`dIg%je9{ccqWL0KXkMsn3?im|BQO`rjOp?h){ZUz&m*n9N=m*>#Sj-Z;>n3^5 z-fKnR!{I<6BJz;LeZNafLYr zlYWD@-CO9?^qt zj)$ch_||*Flm?a&+2G^YV+JGfl`h)wJk&9O4XEG>D4Hu#rJX2vo>8!Zi_yuZu~e`E zP4a(>Zss5+ff$C(X@wZid6^bWmj6jL$k?#W$+{d+3q}sGCWW04G%{IZGZGrsjhv|Z zC&U|@n)WEny9Uz&ij;_qYzt&C_wB9H?+P*rNvU~ROB+C?DPVhRgg6T&OEn{eAVwO} z;`L(&G3m!-@swOW0t$bAqXY4>4MY@eK-)*hmIm!N62-`tPv;wuvu#g%nDO|S^_0UL zN0pDz^WZCYWD+kzaSe6kHs=vXh}!@>;6N^x>jmX@Idw^}5IJu~y@ZA)?2WRcQ-5sd z4>OU~Fgr?Ib6Xk-7<<%{GAw6$wBXEuF;*R~5ET3r`xo!pqk5`*Gl9rxyOO^Z`8nb| zmcL*$-fFVMM%1Q74iIrDq6#1S2GKVO#8bA>`MCyYz!EWMETFG~vUxXYrP?1vA6tM2 zsf`mz%RogUq++bi0vnc^iIM0lJ_y_{JoN$dKm<{x@o%#+j(c&5yyaxU2B%ILuM?t~ z60(}4T1=1mfOC{`1yd2bN{F_kSz})yP<{TMv@A=Ys$Jzgw4XIB>BTVudH4>k_O3k< znQV()4+^7#4>6Nxp>(!jtJIb2mS;i|j6(qzBhml~N3x!qmI}sWJueipE4queKBxxq z9)G@MT)N=wJ?GxH8}|sjccIn*YNGau)PwIS{vl{D=ka6uuNUZ6CI8=evsA9B9+a>5 z1ghIm20K*gKy{1fh;>mb^~bmR`u+X&tsBu_=kyh>W8KK5C~_a! z{(`q|_Vdi6Ois6&gO0X5IIvCstOFcuh)mJs5JcbHN}2s7EtOPcmRiU`CT}Ryn#ked%)^fVpFkD1iW^>GW0q1pCJ-B<-Dcm<8XEnr!uf2Fs?^|smzNf|U zL75||A}T<6bl+8fUgwnF9)vjw3RM8k>FcQb=*(M)U{UKnTx3b#X5Eszg__G+stPar z?hsicpU)lueMl2j>c5G5R;CdMc0Qm^?|=hN@4@szUZHe-%;UWvFN#%siIs#k`K1zp zhate7jKUHkkfR*C5OY0Q9^MP!YLBqsfx0Obr0%zoW5RM6n_J=um_bD!?s$Kk<}_;e zbBqElTjuc;Q2339Ij3((2GxNdy0TfhVM@Qyp;dmu?W;@Y6-!+;0O@~0?-d9*a#cu> z5`TBJgJd6ouLT>STu&XL~c5#%;ShIuYcW!ek&5djLE9#!L}vng$yE`3oVEqBU1!;t?LX_&Mou*qb! zIN{H1w|L|j(f@u-hoOm+pm|QusMd4x(i+o-r3*#V{#6dQRe1F&iVcABqg&E!L3k+r zmhIYfKXfD3FX03SG__EZ((+ar9GVCftIq*ObHAuOLT;$RIdu*`$R8K~_+CHWjSjXO z^9?7+F!Eu6#3-&kU$+VQW^HhiF;|6c(z6(|ge+@X&yPYtn$<78H!g{cv7pb`$87Zp zwF6lFpTlt+i9SVLJ;A&*F(CS3+VaAwuxu#LiXiP82GS8=+s6%?+ESHl99TkJCK|Sn zoyk>}{46_Q{~T6`u`)?JFy^xCrsHy4TVu}U$r=Q~*_jvsQ_w5ysr5=;aJ5Ehutq|P zMj8`|4O14yj;Vf{=uGtzWuiQmOagoJ9=$E-<0UNTx|zSxJ+V?^6;B?YUG7(~_0(2N z>hJxl>&5P*X3J74&aOvg6^(G3kie=}kv2K+!PY~in>;D`zsI;`mG23`tOzOk<~I<# zwEe{m`*(|zlw+wRikg??zt8%kWf--z)Mr}HFWSqv)M~(OceCt^JDcCAv7$jLm{s#( z$;lyYBsta+J1P3JbX*7GC-WzfR--937c{W1C8-v0=&Z^A!zx$w-RK7UI0nApGoZ*N z)MXZiJDc}7(UL*_Hj5BrP{h0~I*Q`@EA7H6Vk|#z;F4(j)b2azz5i&iD`vQ+w(EdP z7M0E?Q5}<+q^*c?XZX$UeufbbSpMU8FyDRZdxOs=HV=y+;ImU8hu>&9AKUIzIq*Hk zvLMLxz?w^l&-o`Z!f_m-(*OEj|NV_R!^u$gs489Zx7U-QT0pX8SIup&hU_d4p*j=e zWK|hxDD6-uu^;2aT0@S5CK@NPY2`vKP3_Mp9~`zH4{?p_!3#IcjPr4#uJ%0ICx^D! zCRD)JZd8=J&b_a2zx8oKbXDoRc?TByAY!J}>+yBx%iORbbpVuWAx1C7-Hw_LzkbfW z=Nwy_Re}f($i!Rn|(0XAnF(p z&W(ihI1BFelRez37X$Qc{zQ(5Y|KDSA8ioMZDoMw2%j#tkU~H11G!{Q-rso-Pic*M zzqAJ(G^KP7v$Yy;HP9>(m&_&nAc?LUj33MO4s%uW2z9GWSTS)kRV!*T?BviasdEs{w?4A+6Yq@+B^w56Ma6acSMlNAP=I0Y^%vv_!ycAygO~p zxi4LKh0HZ5WR;o55V!8>GMY42*;(5=j&IdV7zN+T(qEq{@m(EoRKI4WFVSqLj&?Dh zj%`(GJ&^BR->*te(LDc@vD&kMKE2K;SDw=#JhxO$eNcrLPoEj*z$e>O6cA(ZcNgZ| z`(_u!H&n`PlO56WSxbvXUFdwha-d8wDTn@9(#(8V57P>6m*?PxW>g`sxUi{Yz%>SO8-m3{&7uc_jH%9Wz?eD zc$!%t!#0H#)L;(LS<5O?aH532k+2MtC$0gMofn~KRWnG^%MCVBP#8QEMYEn6cAa9wdpVS%P zrZKc?Ml8jQ9b;>I@tp~9D`Exc7O~-ov>!*Bo9SJ2w0hXk2;0H>=K;{pFp(&x0bsqf zA>Y%KA%>JRh}MX@$FUOep0h1k@+zz!CpJF$4NQzQ7 z6xdhYp(oi}fC}Z+m2GJ@@*JFD;OrUo-_^T&^m&afwg}@*<=hz$u|=Z}h}e$8jD6Tn zj4e>FBseiZc@@8GcK_@^AdZgqx=J|#uzo%jD8}ZUYR7HUNraRgN(%Hog*9I?DL-#`A#pFaNem-9i~a{m`meMiK%`;V{h@AnqE9^lJOjhXwbVyQ|+ z*Y(3fp>ACQ#5t#{44#Jgkr9u&VKL^}BI$phLvNdtpB!CVq4)J~`f#@X6D}1Ha9|=> zb9X9G=&Jyltmx8J)&1d12^wo|e-@+;#?sZSYvET@F|0~`sk>>)P1I}MD>|+-yihk~ zs}TsdJ+p|e*y)u{cqP^9xmTTY=Dg>XwxLwG{)vUeGPONf2u^!bSF9pT-2;QFQc#G^ zl^TxoQa!tJtlWf5F@Tm;*MbK=I?BGii}~=Nj|)s#ts!15K`q;;BzweY9t;S5+p^gX z(r7lJ!snqm@F^(ty{>d1t=y?v5lUh1d##%Kz1eQuxDQ_K8=RMuSLMPTS7j%!vbuqk zZfKj+N=gkohq*=n+suHd-oFWit2pjdpNP;-gcy%x+*JN}lQdUG3HxrJByhGh`;Y4{ z?HCZi>iIFhbrfAJe6c~=KEbC_1J!FScgWBH=$K?xy)sdvww;(`bWE2g3RfHmHUrxo z!7zcF$vZD>2R)Ox!vXj~i=$VOIv)Y43WeP`)u#NozkH$%y@Q&sDc^WPTNpPLOdOvd z3lcq`yjV(=DVE%DYHWmM*Sb7zk~W3wu2O@9rm-&;cxz_HP7LViy& z$5Cgf{#as~J?Fg!YFu<99GCzf7lf+iO;K*VcJl?Tqi^Vm*CW3mEAto&{8OJ0=tfK=uF z|Db559G1ANj)pSHZDZ2Xtz|ovia_MgR=EP@3Vn{|+pRo!04vsbw$^(DF|Iq1J6fDR zl>rh&ZupNcidhv#G3Hv|Z_c{jYz!+Dy4cKfKvEhV^%Ad4+QFXLH0Z z$52eR9CA)f6?VI4={K$pv?K)|}i3*@Kb6FLk zYcE@+bc~5HD$W_0*6CH*o2cT{>4V;4B_40AvgSTk!vj!sS*?_LswH#9X+CYjkXI6d zzPLU_+^QGObuKNo2CUD}!bS$0=tMmHII+r1kCUAO?}h**rs+Ecg=PDe;7C+rgfvGQ z%mT(<`+YJZn?o0|@A_8GU2_xp#JsC>#u+M^5;MC_Yc<9 zJpd@+g&%MH@g0Bv`u_Iri$OJ_8qR6r6*bwUJ4@~IZV|8Zf+JZ0HTxXTkoUxEP_2ui zc>dozrxdYxB~(I>>Eqqc?81=6-b$~ej!y5TlM0J?x8WMC%Fe$MTkkb}34 zoNl%n$L_qk*eYvCGeZ^Sb-GWwaZJ-WhlT1xi@Zx3K? zb)W$Bs4M2%kaoQMs2#64#j?ufmnqBW1Y7}f)*Zqj%&Q%!%it_PuJV@Q*9hB0r6tuS zbYjIivEGH{@`UYk1z*l`eOenb znQ&Fr&yRan0$B!RdENCyKR?04Hx6)hLYUGwK2^>N7FRyi4O;Dl|zS zQ#XCI3xrCV%{c$e+uKsk;p^ZK-#_oS&-+7UDBXY9a~&RvR@hMmx^T)n?%|6hONg1+Re*pYPgDgLuT+3 z0ic0ODeKr!Jrm%V+_qnT)QPJsE`J@DsYdM5r5mXkW05;C zXPz+TBYZM=tAK8~#Bw1RN{Y1kp@CNaa2*Q4Uo3rbVuVBZ%q~G3S+O*2L(ojH8Bs<4 zz`T?3?syfVu&IhHPsDUgE>Hc5-bafO%V@*;9SF?Z9@Ri2y{GXI(WB*X@x2NY``H_8 zaeDp^M#-GR;ub18A#=Fd-M;1NtTL9(*}go0{KWsowO~VDj%}rh=PyhP9PDscPZOHQ zg=0WO)lF{pbWfQ+9b&U|z;kf(5W$nZ^ZnwShLBVK3`QEU_C{5qO9A$W{sNg)2Ot2fIDHkHP(QpTvaHNHD_|G!m`R|fJ>*|^j8zz7%{%`;F-!H@- z8F8S_;k`rQ!V)^hB-A@3dIEZC$19=p^=+E$`h{3<4Hzi2nE^z`+1^EgejL3_)a5MH z>!8h;zFN*45A>J{(8kqz9in*K*jB&Cij|m?aO7`t?keYsb0AC%)0J!0P44blN8_ij)9V^>P@|4N%n;G==AUJ|`1ZFAy5$Nxp|T z>PipT=?(0`mvUil6SPqi2d6_h$~|Rk-&j&vnCZn?g)Q58eK=MlBYGml4bpQ9kO^)V><=7(WYmU&d~8@zYB_w zur%5ng+1A&JDA>HZUWKI_4y;IlM>|d;l2m;`xpG{ufP2DPp?0H!3R-3nT&_G@WF+D&bjZq!f7{G z!X}-_0raVXxia`x*o@Gns+<>|gun%<6ho0p%j@xXn~ffN5?+k_hk2RgEaFo15hHPlEB#eb=W0 zL{**ilF9=6ZyIq}2q$+_S1*zN>$OLwX;YYl5wDcPdl(58!CmnatG?kCaBKi|d=$jX^)q!zZvB!9BG1O8Kq)etGehVg9j4U9?!BjEEPXs zX#X;p5RsU(|764AZ?0oDd7zcC#vd_gNM{22{4lXG7UzJltj7q9HSs-WOvP(=zHD|j zMlkkTjwX80EW`kbAi*e4D=zj^{R0vIKmD^|;@IxT%l21BO`X9}$h-KlySWiNayeiJ z3t9_R2*WCjL|ZpH1!sHtBOMq7Ky5UTp2-w+{n)(1u((h~j)5HomKj(8CNK}w3@~q_ z5Sk2e^te_a7}tm=;bHAtss_`Pk21_{>hWR!kS;PV|5+ZkYOy0)JpbgeGR?vq*I+dv z-jB+Ouj@&9$5YF)qsVCxZ>@!8tenTLyVp?JUb8bbe! z)28!?hX2VFZDMfcN>Y4qLI>-b!rXpTM3dL7sao!9oOwan#dhKx9rNiv7F^u+VU`oJ z(7a8b839|@#6youK5Oic=pg5qrzLsaI5it6J6U$YYeoAN#^--j;q+<1%Y&SBug}&x zPZ_~Z%XKZJ`_U800^2PoS0=}2$3!#YK>h?ZNTo^P^|&PM@r(e4rRTSdmJ?@|Nnzf+ zk?nu$Gv*Xy%-Xg7g@M#UA3UY9PNy?WZg1DT1rPK!c-z3Sbi2$V0`iP)a$uo!ehOyT zdz>uv<|VzvmNXqBlXEzr7|Ofq-j01yu0^xkK{)AgttqUK6+kHi<+|g} zr$KFhwJv)I+F5J)Yfw-(R~cam6t1oUpcR8=mTAwFy`S&^7$;LM?2{TbicnHAwGv{? z3Nb0m00AYhJPd)f{&qax+)Nh2DL}qf5dQKy|N4c0`Th0h-}&nYS*VM9i!T=N?TtVF zc>m-3{d`}Qe_A934V{JROKe%)>eby4={_ASp9Gh?sprl~++)i|3FMIJF<4KsWTx-; ztbTB=BcN`@xU#A_Jre+MNFMgNZSDTo8%m1vKts_qn_sm)Ib(et8?3A^18mWy#h1nF+v9osq_ z-w-r681`z%l&JiQVPbyHPe7f2@PSmiiAEfvBcID2?J#7Y+U9+m%N+yv@xAmZaIB^V zwb}~y!k48cbT(t!2OgU3{cZWK3AtgvX)(pZS?bwdVYIeE2;Kz9BmSj zK5Yj;$Ux!*I6ohuMa3ZlRa0i7S?&tNHn}k&?5ru}pGct}lap5L&Ob3^V7rVaR~xc9 zN!FNgXzI@;py7A}`TyCU#~0dndqABtP)hS`YP`n*#|S5)b23VXHD02+VP!pvv!F*;R_ifrv6XAehRG-`^zE&oA`os3wI z+vEV-Li3htepd`{d?Gg2ysVB)Wu|GBI~jv)Jvmhg`F|S7PsI_vGULIR)T8yX!6-kf z^8JaC$x3kvxWvK8vwQf{=$`cD0mw$+kxPJXgG=k+VwuK#BW7yZ9Ik~~mthAPIO$3O z@xI5?LhLeq{i_nFf|)|me8eb`oa>?Dc?A|4TZju8Yz8ob2Mtmb9X7BeGJY}WH?cfx zoSMBSXQOeF{De{1jK5hM8ZDJmCO5uo^_SkF{cKwyK zSyIbHQ9}>X=IQ6f%9a;8#m4^p19$^O7KEK*v{Z8t%7PO6PPovMBuc2X86@Ct6Ixzt zYjKPn&xr_auWfrsK|YgDl($1+1Z*qWm^0$|IqU{;HBg;htylGvjg^A!O>=rRR(@(; zaMsIfjX9E-(JgqH&twLvA=yVCi!(JezSXD`GHN6kJtb7#q545BD1yWYABvBiVO+_+ zoZ#*uA%o`gHyiz8a39pNb`Q96p!h(WLsp`HO5+51)Rfe!bd}7onIef9P~&}TVD8)0 zJgzcd+eN|c8DZrfQaU&ev>pHI6@8;hB{Ftr(K#Gr52g~e8RE$JCy*qj`zt_hb{|;) zMOEaMKTM1h!vYFC7UPXfFTm3Cv+D7Wx7%JS&1|uaRzX?uJ-sGz+C|%w7PVtvw0irTSnm#tjTMkhsRnEL$&s7L zH_jU9!o-cz%K_rqR)sCS^uVZS!iS1e@BF+<`^yLdx6(x*dh%)}W!ip%J`*W*CYVX_ z02?bhh%Q<}GOrYIJU1WW=UH9@AmOV-l&5*f9l~vbFtF=+(q~J(-ZEU`;CtQw_O1T? z^T#j$!N2_W@o#_n_?KVs<#pb-?!|A!umAe`m;3tT+x_GF`}?O}{_2Y?HCct~JQeV= zwlPfLcvQUHWQB?9A!H=iae;yviLgqgw}LkM^5bTP@{ z37p(@5(-dNRjTz8|*f)7da2i_;HuZP1Ei=L1!B z3p#T0&X?pj@`p0_l^oJ+g`iABt0T=3HtD-UQLh*`r%|xTu$2YzUSBp^j?{LY@LhOG z|N19(ukxEUNAnc68K(w%eDuIEtvN1Y0qC<$a|M#UP*@e(;xixNX|3>|du<&F^Zq|B zLV?W3Yz{ee5$GLMMjg9YEou4mi&eCNi{ijJBmeWfre7Xs$) zvJa5VaAHvAT{2g>eG|+u_#T950p`qEEW(z7hR?`K93dSwma|&baKt5_qg?1W+w)gf zu5NRhq{wl~V<=~@aAXwigFZH%=sy9dz(H+WHQpNhp%@zi);evLRiy4V#l#j5q=4J2 z&iSRMyf}9qf(Ng|16<(iXMO%iQ4JR7db9>p&qsENVyqVP00p!4PpnVnZ&s@dK}+02 zk;ugr{Ia{^?>t|bOg#W$nljLP-_=S!4M zpQ6-XUBD?&MK#TsTPO)hWA^6SOAt#uFgMr2KYSvmsqe+jYZPQkZMGvT@6ed+O`JgG7fpi7U=rv6t6V3 z9qD0XeE3I9M@PzQ9y5#-I^0q9oKVF#Yb;`9N+Xr)gmes<^#;GCrV2@O+^tLR-QfZ*znO(n*$mccIY3xkT!Yn6qg?vGL$fub zX>up?h$rQUGnTtsuvBVxKO(lECDjM7*-_*H15>?`I->Oy^b*VFSO5Ee{oC8+#K29@ zXP1-r@akrPXnT1*23PArZ8W{Keya|UGv=CK#^KTeaO_|zW6m)^RiGC{{U!NU8lX~& zD4&AVpYL*)52vRpt@^0*ja1uaTSKe>L&DV+qFWb9+_jXL$+JT@G5zN5svQ2MzOdk` zG0ZaE9Gl}XHb$G6t317Ijw+u)jX;`8MRb(8QGwCjLs2?UI+*ez3 zG&VfWL2>zR`S%L6@xBr>HuTzk#4$TlaZwr?H=LLHP%?Ps;YzFNm1AEW3#LYlT4%#! z_m_p?;i6LP0KvvPZ|9d+)!Q9s#2fhb zz5emXkFTHgwxPb;=V~CrHXbEBE_z00XNJN=i0l@{s9XLf_|lEC-fCJVWPS!w_v(fO zm6>(1gLdf?B;IdtTk8PlGsXI%iP3u(_~?2wUpOoZ|IjRArVF(K^@3=-HY2-c#E;QGRGur;q8LMuQ9T?$pv+5_* zwwG1a$?e|JBdH#hg?p)LmsG4Jt5R%tZ(3hwVX-(165_Z^moWq*aNl^dOj>;3$fv4> zUgR2v#Td!X^7Zg92NwxhrWBFJq?aW=$eOJZH7+;L8Gp(8hPk8?go~-PnLUZ&f!@1e1^eQZp#=sY6=g0jM^F)@QL{u-cl7xtbDu~ zvGU3+P(O_jQKb|`j!`X?c)0Eo^q_W-&qTuT_pGF7zCVe3fn9iM6tU!$G1tR{tX(`` zZ23IIjXAd+>mC0j6l);`?kMG^I5zTKf*1{snCAIAPR+j{AOvJ`>#M4IJfll+hD#?; zE1UQICoVLo6_wS`-(6^cCEbmh;T5JHk^g`4p~qW-_IbgwOgd|tXW&2i6D593^fEEr z4j?gk@tobW90EH8PJ(8E)av#~5sKr4@>`m?xoRe`TxIEI@~qSOXbB~?hS?i+i}x-~SNYgOheMrhd7MNo)YW^n*RZOPa%^7-uha>3Z0MFjV30{oS8QUR zP}Gm@!^Z==akj-tHtm6kKP#X;qK*!?3zK+oTl4iw1+D*kuySregNcQLiUvdgM;PDp&7z3cCMTVq z5KDGmD)&)xCFEY`VA&gmD@mGrOmaA1AKY_0eQY2sUd>+RL&w1m*Qpd0P60ecRdFnG zk&7O>_FW!raKmFMfLivxUEQ0Q*F(2K8SHB=m5i%($!1d~xvguX9igcUF!AH^-@m^9 z_Q#LkzTnTle*7>0^5suoz*|2qUcjGz;qSkE`TALZ|N8#={rkr$3yB2=|l%GEhW!=Z;f0||xb=NI2Sx#+)O83!4RUaq^kT2gjQEd_L z>QZY@@EqKW>c%ly=@B(F1Rd~=zBQt^c=`~?X8#&b_n#gkv3A=Tv}Gyo1{d<*oNZG& zyk9+Fo9!GcrgY<^xP&|WWoQYOh9MWG^+Wr<##G+GcuSXfBYVP}X1puV0uM{7!0 zS0_nqiWX1=fl=Gzsp>;x+boCBNLt61XZRT2S!ifWZ(x7-+771Z7T#!l_6iB;VVN^% zUW2vOgi5FmXx~Ko_md?(=4|O@$kvqSM1=1LN0N}Y-u!b}ipMDrt*Tc7RUos#G+{dV zVAiGDR8GX(w8)@WE>2Br>6%hk#m~sOEv^;%Ajkwt_iR9sqzy|Ewv{u2Ga!iWYwVg+ z%Xto3U38e%P;3`2h-7Rcep{?NEldi)agD0X-w9V~>5^X*i0B<@mGjgIk|uyK1nJ4b8QCvwR++U&p@bs*TzIGlk?XyYW}BKAI1&?+ z3qm>ISa>Zjfm8+?hUWF1EXcds#A5gw(=2=KvHr3s9BjA&{wLY#JKSYS^b64 z*C`@B`3>#3?;m^}T#nnf1-MjHwN$m8{$b?v&Wux4Ey6u6-RgG;9W3=gCaM>2P{~p@ zvLQwlhdn)tm7?@m`_jk4+*(w{K4FV1j_Bv?o;!QH#*Sqe>RGUGr2MWC^vNirtC&!# zx%63eqFf#u7}nBfz1j3+@m;MVS-FusuVQr?sSyXv`X)r53+VOg0qERU>6}ge&?iIn z&w0*8H7mMZN2`26Cg&Y?cj_-OH2~$SBytusS*0{!%AGPG9p2Tlx}E0(d(6%)=g7)& zhk=bMpAR2REuErk!Lyl5Oj9{ZS*|i>Re*UqBkysR>_HZJr!$lj!NW+}94@+Q;NTY* za)|=v8xLsKQm9upnt18ffpa#Yce3%z;h(>pzy8aYzx?TZDg3xDzL1~q`p4J%A76ib zs(h}xX&{M?0ppET=XD%?d36Sy4h|Fk5+ZCm)sG1`POeV#g~$4MRrje$G3?F=yj)AV zzNh9K-gmuxT}u06kuMx;8K9YUi@9Iqr3RI0IAO=L)U@G3m9f_u6ksPh*4}!KUY8*6 znW=7i^wz?Kk_wm46ja^EBSunH-gKtp?EvapOqb5We8iu;gIin~3tYd)=11{ni*?CmYv27@7_z2c!!#Z@VsAV_=nT;Xg4`pHyuBQ5t z|IrqEV`27>b{R*KmI-XL%LNeO&esGg{!CXdO1`hqc;#A0KllH&54UR6KiZp=mMTc?-h999~t0G=3^!(08-`q@mj+ z76HIrFHf^q+t zP~b1vGk~B-*i39AK@4*+&_cUU?y5JgaatxhD{9oij3jmySv|@NLI6KM8o>UD1Lk18 ziSKPe+Jn>U4v@>ELWQRv${ifcS(4W z`B8yA{9%ePk%`0pQzVv9$A#y+V?zCgdW6fL|9JfK@G9_s|3CiLSF2~SPVpllX8h1T z?d9__5x;$eQade|=2Q{;X&;q=1L*b*bg#@_0mBuux}~jmK5h-JnwLC-OffDc7D=kI z%d&CDw+B$C*YOKystN#O zZT=~jJ{_QYwaH>6I@KDtfq(uJwzwPHQvcf}nhxw;r}EitZ|^A9G!05_s~l-={OQnCFw=n5 zYvN0to>;r|wdiJ5SKa22;4zzo?16DPE`1&dj52dMFp&FM%i*qz2^ZbnsU!~W4k?cn zN0-rIhhIN-LR@=mRUOss43V%53DR2%{i`lH4J~VTD!fkp>BYbP{^j5P^!n|EDqJh_ zN7X;R-G6-j@%2Xm#q)xkw5vSsm6J80H-g=(ri}Z(Jm-*ASG5ePR?w2`o~gIDKKe5U ztW&tz=%)kJhzlOPl^!(JSj?ykxcxz`M^&E!DbJYI6rlRP)T*)?ToJgd8Dwsn7Z4xw zsHqf}--|5o$Vq$nhe!FN!a!Yp&#ZrDleM5jJ_uFKbh>8f%W%gk_bDTgTZt5w?7ACkDCIINJ8|P^qFbMXM$=x4mGurG- zkzzV7!@}09udqFZFa2un&$9dQfv#mOa&$ORVAy(?t9z`Znd^*~#y-V=8;W#r5t`?G z74RWSo!&R{&)Q8thQKJl=4V8${n70c=McFVb;k2^F0nHxIi)$V^dc_?*wsTlr!4am z6~jYO2k!C&6=l>pn~b7gbh1q6AhLNLS0K*w4ZSm$wk9_X%OqgeeZ>7}brVte8zKG9vef_K--Gd63oN95NN1=Gew1Cy^2P!a%mIx5?v?}OM z*s7?wRvvEJY`jcnGF(3t#N2P7sqC$cs14G`hG{`Hq(_Y7Bes9o%xU}?Zq0|iObB?I zfgk#`<0+@aEXSTPbF+c3&=IoZufi)Rt5AX(UYCWGZP}4eUS?G)74ngDaQ5_w8)ug7 z{g&t~PUXA36R(I%}sfl9wVDI%2AhDemUWXMD-qR<AwS!5B!U>HepTyqGhO$tN`2E6b|$W}aD@85oW{a&}~cu(CRc$eO~tz$Vw7ByE>ZI#cH>MC9z)0V(X zdReV020OWFRhRSRUSHL#*-cnJGp;QtBsx;+AKrVP6 zJmbAS)ouyhV_SCysYJpY?Rw6sLe-UJwZ3nGIP4Pb+%Y3p)du=gvmMpZSMh^jD#M9+ z!l+idd5Ov6ZS`$mGZ5RXe=4is5ZZ%;qesf;PZ6}#l@z!HkW7=37pM4jk6Qdvyp z?(~)eUsiLNT8{Ti;+?K=WI6_9m%zeF7XIkxZnzGB=p=Gbm$+w$oM~1Ny+51hq-I%F zIHpYw_+H?ch}w;UIaztkIDvSX_MFb?4k<2&s(rq}j*E}ynIWfVSAVidEia{))Sgp0&E z=k)?^ef_L&Kk801exj>qKp%544+(gGqdtPJa zz)vPrw!EmLP`*IJs&TTt&A_UWnf1azjfZ1iK8&YwRCFE_oR!vU{)O$5w_FAo6ZTV= ziDsEEan}>a*zL+^>-qCNem!LcML%=mOB9eq+^UKeprB)U_UE*cSTeFTXkgs~t0P`? z&EeAK&Pi#L@v@d(_-8}$-&b_g|E|w2doz)tMYQlczP52?J9YqKD##llhNQ`ap7+`t zz#Z2Xm}C|uFD$vwPm`?ZY1MU>%fxm(&1KdPFG~~0 zHB9jLk1X?PiG`OgYCmG#tYnjm?INkjmeA(5+(hIj)AHYz7ia`ebQ%C$0JatJ@Ums> zHb`H`<2a`Oi{Xs0ZJM#Xe&oXn?XN>B*TfzL{H5UaBTa#M*FTllYp91@VzHOu1_j{G z-Iy+MCTHC4JW^a;xMT6D2?YH{o)!;Bs?4{d@-@`h*@pkJ#9Hx~Tx#sb!yJ%LAZ$-4 zzvJ=2%|jyIO`L3gHsckFnd$rM3xhS;1jkz6ADmzDn4GB%P}_4obv&$F9>8c8z*>mM zvmW&j(;h0V`Ue@1QuLgUJRvl}47iZ;u)NnfJV)Xg8N7RofKC)@lXZ1Y2b_(~>i>>g zJFc*US^8-oKE3&;*Qy`kG`9*aCoTYeE==F_7mTxCDwpe&wNqJ9J<0Sshc4j`+=J$% zl_vW=5BXd7S}Rl}aT7??0dtjL6H2x3F@`ur5ItGq0juthAAG%Z%AVVL)}j6b3gg>E z0cV=V;8GYSdYPNjj@3rg`5`10nE@T`iSj1iz6>!K;}`3OQQ3ov1vl2eN4Qh;y}<#P__p%XN1}e;@YA;!FS;mFTvD9+tMaX>2g?I_&7^9 zZ4?{A_7f}_B5;Uq;Yz=$^1yI)6%XH?}YlEQm8DSTMX=?u`R*w-KNq- zNhWNvTV8$6U>ia1RFRp)h*4i}egDUg|Nh74pMQD%mw);A%kSp}+zVX%>6i1TU%q_% z#NWUE_~ZMJcj26uRG;yf@}E}oCCIv$hxdXn>NuZs*oC~K-n5saCD@0r=i&^~TOpR+ z3kzics45lrw4)kuS4e+B_npc0wAq$S<6&PYc}R2YhkSAZgDthLQiy)yyNX9!LV2>U zK33cR?7|1CA-Tu4R@t9#poe zCsvLJ#E<(wUNIVI%NJHmbuDo$0b1c~HDwsFi9G<1PXnBS`4of9F-{x&MHXEaZ%Lx; z#T&5bv*?3nwN5~*=U5>6C^}H4-iL(3Liaamf(jQW`Z(@H==k^kk!NSe>nITrXkP&*=(yxW1l=^4+f; zDQ3dmWO2%I2?Of1Lb(njhpqZE+~ zNnK9XE|dcI56{O7>_)lo?;r1yt5Z>T^6{(3YErUKD`nTG^1r5)@EMWjKugz}QB@el z62PQ`yATmET1{ov?xMh0O9u2XX|w-4Zia-&PnVi`FTa8tp9qZcUW1$2P?T6sjFct; zd@P|^q-)X%Km|NzKCa4#39a~GvDx=>jdIX_r)M0z5-n=LfGH>QJ9EyVR+fpPNjYMM z2d?*$7g=%5pf~?Rpv#zvglvN%OA;}Mc@t=;zvFo&(=pnN8VS|1|S{HZqc0GKJJ}yuX zzGqRPoTb%24KQ&y7T4wp*b0)gG9pqy(frCrkpaa8$U_`sS7Z48aSjEV)x{?rSmsr3I2A@d;?z9y zKe4N=Rwiu6HzqEH{;ZK_)_IT3GJg7q*BZT=&oHL8l241#PNK=EWA3=gt)0Aea_brz z4p8jIFlrm2!e{|3FZ4yPQecm^TRCQ?ad;c09K9vniJ`;Pmf+Q;q7Jt+@rUVIy}K8$ z1Hzr?Tq+T=7Bio?+Y-2GE4GFAyVgaSzG_2+x2lk(^(r%1GVe$k3OcK4MXC7X7%q8l z{d(@7e?5Qy_WpKXufxLI97VA(>J8rzUz~Ul39-uuuGWW<&Mc`e8})%08cJ0$2qCJ{ z^0QfZw~O8CbJRj6?U%kuOdj}NH3!0AFmf0(kLtIh#- z(aL}C(cSqwrMDq%YYHPP0QK%rF(Al*sZ5cvn!+x^0TVi1|LU(Mcp6sygVZWCq_g|- zWNy>2UALPaJ+fS@Vv5OxP_E!id*$-ft~Ti~x2pR(C$`2_{h&{3BMF`^jUCjVzwqDw z^zqlT9roL2{l~ZW*YEdM-|FyKOFf*vReMKg%~gE~gT~k5djK;DTp!Cv zoofiUfTjiHdbN?=?n@v?Dox0g`DJo_^kFA`UQ?)|-6M5cVM#CbBgR3U_=OY^;LDMF z0!PIHpM_^wx$4Q{xPX`kN%W-@sJge_s_6(v?b-KE{?=_xI`sc8g4XiWX0amNyy-N} zb8sLzeflqQc?gsG$0NAz_KHt2tr!%6UQw%eWS(u7g?f=FT$VRuT0f6)yAZEY#)N4+ z)EF;vIR*@;|BAi^XE-T^VO-2nc%m_bu3jB&oIFpY?dfaV>0KRELz?t_Kc`$$WyNJ#pk3-3`#eJBNIeJds0FBxN=uJ&6IWd(M$Fh8%2{8JR5i4aa5*J@J`PnAJ+uHC`KwU|iub8@xnQLzw!OY{e0IujhI_q7_;%KBaO!_XXNbzi>G-^;b|6#k`>wLwk*p` zsv(;G{50pJ3jMCJK=}d~Gk!}R72){qH|2(sM=eiE2{Ruxu zB6giCp)T(Epgo%Mwd&@b*%AkX&)CFM!g2rS1Xi3$Svd*|4g{SZ(M#Ch-fb)Txdmwv z2KLLD0=&%;vV0Y}HI-3|5-gLG$}b+{0Wd)iiQabag)eOK;()Vl1JB5^AZ%;!y0dgFk&LbQZ8LzojBm(HmDu3q0}lEYw*&SvUD@j6gq6(sf!9H$ zhqMQ^^ei8g$fuP$KI++d=BU8o)uy#IVpn=r#>R{*qKo4$|CA;DT&&2q82}u#ez?5n zR#C;u^2YTdSp`oSk&>G&=j5~53ZnkH!^8|g>UO97L zy2!}^06nKbQ(0fJfiUEmAV=)$CzAx0P9<8AA;EF+?2K$w3jp|tsPliae3!=itT5v) zM>kSDsyE;Wsts{&JZ(Jkzyoqg0|eNbL+_AvX{HSe)FIU`O`>tR@{bIr09{)m5A9m> z_)%5VUyezj?PKx1hxySh)-@O+B{xMWf4#{3LPr9*05q!t7XJ$*y~k`4nCVBpzY}^GN2j7UQR0v_i4emqVyL*e(znwAdXwUH0p7wMNF| zXmdPX!;~2W`o|3H>6xDlyku-{!E8e*cn&>Fog4-5^r>LwaJj`_Bf>WQ256f^P5hBd zOf<2G7;Ll!9C{H==HJISCd&0`R;{RYzNF4U*WISd0-7yL0oPq2?Qix|b(i!};-~wV zSXK46PyFM5e*f=(oPYc6cJq3cS7Ae^Gr=2H~6v z-72Xi%9er;z-kHg^#weO!a;Q?1$0*`%Wfn(bf8rdWfbhb5nnHO6A%m$lR+)B-jXsZQcgcS*iLO+w=wti4&z;xON0ub?)+U( zK89u2wphWs3%u16KQh!~bKUnQUFsie={);59JTNeDaKgV5})VVMUDjok+T4G;W~$V zG}gj~zbH(5LHAg}!NoblIcrodlMz(I^`yBms7yScUsL69t(_O#>3P-IssD*NR=Iyf z&(!M_n?f~PqI9Il925MfUN9ICD2PxzQ!3zPiF;)xFqg2|yW=SyV;-?-6foIVBJ6xD z)-m%36ecCf6HedIHMiz2W*lA2A=aHqmROfVLp4Ibj*e^k{-eHqzd!EOYojWw(&KSF zPqiYSJzgZR%=&$kweqJDTCBlTnhp_P3A;oOv?>n>HF+ zM-C&x#^FwnMJfm4WyXG0-fG`90!#a*I01Zpqb3Asg*(*M&|n(YZFd0~d)*V?mQ+^! za1AqNna@;*O?T=@u94@mk(E2HD9}JkYqK&lFY^XFI+EvKDUWQ`LKg~c_kc`;I^IySf?@PTFH^qdN?&1Wp3Ey=`o7frp+w4z0nCxAJ$ zA8j?-!%Tsky6YnkZjbTWgg1#PYO{;y;V1dZNN)zXo)08&sBC2GQee%iwkP?2Mapbo z(TI1qk&`C*?Nba{QnNeT)FfWphDgFR(rVb5c6=Giqhr3ytwxTPscqEpWQ|W=AT%2~ zH-RHo<8GUN-&C~K`;r$X8MC3bSh&W_eBGWD$Ni@&roAMeusFIF^O!P4O=#;X0JrMJ z2>}MVDPCi^;tm{C3ri<-QxH_hmzpM`(cof{S=11pSson}9pm4FDd15Lo;D1bpKe@} zcKUB~cp(5cyZ{AOAGNfMDw32sT1AE{z~sev{v!Thn?t<*BSNGd5#c|2Nev7;jm^&sP!FBkQBcNz zn?i&tZCmuSVAvjcT$SsXQkAwX{l)OMF?>7XIyXG{B_%q59{aIM%`K{?b?JrZddjtY zIgI{}ldFIz*Qd`+SM{(vNK9ZIh0Ve|%_+lLgVbTE1i)K7{Py|d`?qf|sMn@M$Q}L5 zEiDi>al}}qJUoc?=ryyCi~ra4dS)pnDD)Y2&Jn6_-zB>VNPg{RL7=KmS4G1u+8XY4 zzNsPG{~K1QftK6Z8Nmwqt&%(;=btR#Z*Vu;K9CpSc&Z895aVp5b_XNt-a^4gCGH{`ma- z?|=OG^RKVJ{{Hd%FT@-7)^8vD<%93ve);2j{r%hhd|w=wf85Eag}w60bcMQI##0AD z8?vxQqVCo@_d4G_9Xh7b)oxL^Dfhpxvyxf)d7T%4s`u@E zz}+iXr4HFrCu7M1-~}J`8#YpPb@}v6z^f&HR5w#BlFy?vu`hD#wCr-RK>bwlW)YmQ zI@bc+vTanWy76d&KC!3A!rZ+TqGB_)8=s)ZtXPH_ZInhPA9A^hE;P(Ng590@$}EI1 zK}%;Irj?1gv>Au{Den+C>##%}52wK4_pZ(kU4U$&$lPFTOI>nSVb%JhlNWK;UKG{`SNZIhYY+SnM!K z&-1!-FM=pJq?=I}8N804oYRFS=;ZkZnnoGG2eR{=@_!bH!U1tcmehc>?Z(2!%{XFaEVU~ZISw-0Ux3L~QdHuqwubGh0r(AdqY(-B* zo~D6audHeM6||WsYrrK&AoGyuGE<~TdX2fRfC9(5nelS087Jfh-K(6tUFKCBnHa9Z z!Qi%`aonu{Tc?c!REM(16b|F)AhhWexhf(t+y=LXyBb)sgp)aCvJ=cQ{y<_AIr}ay zc^=V00OBjB1Uhnai%1^fF0D9~{~i8`gf`a~C2DuebxgEbmBZaRg@;->McYi(HXN&b zR6#6BN9Yi&rK@-!5`OIznZ3SmB;@k9h}t1JF~Vc8A&i-PB+j|dNNwCFVOoKb8>)B|n9k}hi+Z`_Olxg$fh^*E z>wrAG0;g7bY)$xh^nJ@N{}oBci>Eq0>vt_f0P2uBeThxNR82@PRX#e^PK|#vd6`u& z4$B98kd_gke6Adcz7*0y#zWUCgwni1&Cb(vsC!q5Wm+Tl9>!`{#Qd>N<2-XZPp0Tr zmy(IKzPXL8zu~O}*Vy`S=KilYoyn_I4bgOyIlJX`nL=ZG@HAtb)wlw>?oqH8gzuW9 z+bdCRexb5qH5XbmQK2)W%F>F|B#$J6aNN@0U25-jq5hHo<6sW_@uU9u{QUPn-v9dB z>%aW|`t=LD*Xu=m{C0l(<$V2i|MB_$eBZXSVdNsuHZ$nLkeXxzZ%1^_4US<^u7sp~ z6EZ;_>IPT|^HlZDPZd&i`kOruqW(!8bSq2o9M*veIu}*Y*KXg0!Pl#|`VvsN*0y?X zTU~+V>qV09TeyvRCni)t_jBC#tU~}Vvy`6xy?6z8+f<@h)augu=dcEpim|!2azRE~G#hiB6jaot(u#X<-J3B7$1D93avs(k6 zq2ocSn*C5O@Cqx2Oy@oKmdjkA@5nS+9_}`8uvZljdJ?%RAjD%8f9Kx#_)cd|SLmUR z#s0QyHOs#eS(taYbYA^k6U{)V4569E!?H5;1^FXj|8b09X{C0sD0RxaIfxkeg{ zNFQ=?&RO$s#eyK5wa?Ib?yuLw>0&t?eJJvcc}EcW^|1GzQKkHakb;DGl&#JzbVR%Y zsG}aA70;lzA#2&aM|6l6@p`dAr$y!|Hj)h2#j%~Jyu@QM>maO z`7gFQ4ZvdP#|<@e>e3e)O$+dP$WWjCPk%S_1%pCk6}8_o(+|K)RQl_&8LrhONqZV5 z=29tSZqfS;r$j0$U@@Z&je4kltuiNLZI{TgS($}PPcfh8OKRRS;n*JS?ejA9K71!G zrrQQ5%xQW19#bEK*>n9POXL8NF1=m01`DibJw9Nj-q8pzh%< zcUZxQ3E|H_!H@-Mq|aSJr!A`|eZXIol1J)$(neC|#_tk2yxKV$f%HA{3(j)$iA1!k*DV*tBiW20$_@uj=JRKklOE*2 zG9QXi)AcBf?i-*?pz^%|4jF|RI@-o*Cnn^C8nF%Pc<-CI{EA1TL5fU#R+&ZmzKWCwv zVt~rfuTuu5GMkW9+;TV9GE4CA)x&|7@3qv`{J%~-uACgE83a;6P@`@6b`6B5+#=(( z$A*6^vj8pg7OK5W#no~nPqM%A^Wid)0%~RY+L~KUN=o7-s``Yxx>fh;1p2-kp+E7* zz5n08fBrxI`?vq+|M>pz->MGJi?6~j2Y>m~>;LlSFaP%Y#}^XsV#9@yW$aZwB9I;Q zpVz@5UN7?S_PLfIfcI5zVO@3U)UB$zYCz$As{`=7cz}DacC#KFo>zB=-Fx5H|55i^ z-6HUMo%1@cmu}RRsHlofkpedv6y?FZFH8L3-vNUp_uQ z2$Z(0-nv~DF1(zmqXkZF&w9OF7kQmx^VEcf?Sp<4_2!SiYa=;9w;{gdS}kpw8< z-tIBQ>GSLhjXb(Uv(T4yR28~^ja9z46qV)?RE&q}gq4F;0XXV9a%%`ccJ#0bi`mt^ zZ^r>Kp>8N!ZMqF9v?J1P*Pff=_*CU$=+NBds{UE!pD4VV1TW8Rd+&%wYITdDo^2%F zUtg>6RefMq4XOx+B@?-tfQ)U-j=dg{;vdtcs}CzUi1j*D6mU&`hCYz&OIwWA^n@EV z1%^XJ`zyNy5z10>jbsv4bUXLvbfx&I-n`~avRC)pvFi47%hG(cJWO>uxE(?*pfq1C zbMW$Vh_zg1`HHP!du4UA49N416$DEXD(4gZ$#l8;yEZ?VD%HHFzq?EVHni}+ATJa| z*0L>(k>wtUAx4Tm<$TYe9?qs!Obx=kR`ib1uxV~NYI?@Bi?t3-wPqz8Or94`QWiYs zGY%7RLnIQxa-M04yXr~d+0hZnqh%GzIU$6^s~8sXB0paE^1;`O?^}O-dw>0W|1b}Z z7cebiWb&3CMv~vf6KE5fdZXJ+^jT)sJ2@Gi=2@Z95{WLMX+pIHpN$1J2l(Sagl8Zc zr~ojB{;b-$5Hjo*DAt3v0l@oxA5XWuWh%!$;Ln5XPHmaGMCvz`dS;!Pm`HgH>Yp0l zd-7FVWB<8Ep(p^8lC8=Zwt_l;tD#i4o^q?}Tn;t@!Y%`QM`&e1R!CL{%B7n!ZfX$n zRIf?UgMM&hnrcW*EL^(i36FOjZ$7->32PX-@9I6#%9;my2pDEwj;I zqx2#^ZTA!F&apkLN}mxxk5tAUJ`nS8K(P`SQ#8`flLUGWwse728K3@|AnSk z$ZSi|jJcL#r4=igbB!h*m#N3BCs>x9RgCOzl2Y(qfjQP^XR; zoqtDGIyeemA6G=^Sokhoc!*6vmP{vDM`2RIIO|V8>ZHNPZVkD;E;)4*NEO(97{Q?R z$d0&BNpIdge@Ill??vI`)!WH>;*Py^f-$lbhhn(BuEa$k=tY)W1mp74o5A^MkuNQ^ znEg}h)i!~(X4Vrw2X)Wky#=52;&`ig7Kv57RF{j0#Ag(}4Gvn0j7%<^z0f`Fw{BlQ zcNM5W^4?iRY_mKjA@THD#ym?asYIGAddS^{VOcZ5#XeldFnxC{3o|`=@~r~uoYVJk z9jYN?GOa?Dt_!Qmv1jnZ+Ja)$O0j=#d~*!6o?26fCo|cRNerRKakz2~FGl%;awDE#umFTcNj`}KVNcK`AH ze*U;TbPuBv`$*{U;M9E=$UXwxTJ>Jd9=c}0>h7&_38h`x%}!nHl6+WX7t|COKxUtK zmxuZ+qPtmPoV1#JcLUK;@T1AcLEVc_;PAfhKpfngSC{8>Bs}1)d*AO|p#btl_QvvP zuczPlDc7y@8hTNE+?|Y5u|Va)QYh1=REgvYRc}?{99~pi8%@8^mriLIqU_RG;dW*OM+Y5NX<0|u51gO z<;oZufZArZAXXx=oEg^QXRdF-7nLQ(_z{Zqi~Wqsm;N0};K{2bg7n&oG34>Wi?ESl zO8v{BITJCp3vtLe0<+K(iSu*6#7e6ulG|dR)NRW{sxBq3rP*n7kdr^;!H6d|JiB zD3G!F4J#ppPY#_gY1$G3r_yXmFVXn-LtoZ&0(dpo;t@J@r@^K_=VG*hq&!MLZ1UH# zWkhoX%omi;v>%3=+rcv^GS=^Tm8P~l)C%Zt^*c|R4)nj4+mp`(sFtNH|Ei|1kx*gW z-!&;Z{VF|0uTwjzq%j7(>i!NNq)}Fpl+&N(8l!ZM;vy}yuM^+rNHS!lLQD~K8xTX~;kYgKL|w3HnZS72RG(@b)r!m^1O zH}WL2l_|4^bxm+CCHwP~nxUGS@$rI+X3fDEm&ynozBU%BQp?tBPPq~ESiE|iX`CuIaOv&!(#wr;1M#EFDZKIH$C;>_Jpz2JqpyR zT#oJ>ieN&{$wC7Pr+C#y=<~{LtiiSh++OoDh`G+XjNiVpQZT!sx7Kv`#3A|&8p+va zVG1(_Quo&P?>~Nf73mzCP9ai4lIr`*)py#ZVyF?UAhVy}Kd-7+(&YXH!NXI11~r^( z>&{auQCez-po=wTVs*3vuFjFqZSi!G!0}4_pIs_}53nc^rS_tG2O`aM%1bCs0ob;w zVn8wH$puoYop^g3Vsvcpb zBB9uw4KAbfbTl&M8rMwF^P}aZnwbS->7B7^1w;qEu!w@!scc$R$>CLn@j(gW*|AR} z2<}_;(FUu}cm2;F^&j6qe}8@c<@aCy@~89bA%I^FzWjE6|Ak+_^Y35pj~_qyQm<{I zT#WVgI#uPSw3`iT&1)5)o5nOEyOwW&Aqw4=b0X8a&|SYg=LO()yTZLVEZvQXDsKhk z;h_fs1q36&O&ioX_ZHuE4$te{s@LmO?~kbh>Wzzw1J+ynG2Zt=Up-zUxwm-w+@Ef- zItS-Vu z9gu~q%{{tPq=H44c>72~U7-IF^x zJP3t+P-$BM?PDc-Fzpy0z}g&bck3&RG)rW*GP!^r)?Kj-nVzPv=v1F_6UdrsYhyOH^=_G+T3q;^!EQ7F%xIA1-7YXmJ6txMVv)QX7T& zcKj){(SOO~t5uX)PC( z-TG*%l_pwz#-FLeE~l9o1JE zj>`VN_%%~x*W+c!<4VCMPpD!o`()V+-DB|VHKMpzkR)7wS>rZU`GI^);FoDLT6eT` z=HtK}Uv0O_gG(g7Ho;hy=Q%QvR-;JEJ2?ZKTsuW+j-Kcf_>~<6{cJRTh|$7pGKoi| zR_s9bLF<)_HBUAZu%edD#~+Lwq1}{Z43M>^`S?8KAPVKsGE!KLEfc~j)1E;92{&Sw zlMD#e4!Br@k8fCxwt<*vAg)k8UswWJ_&xE<51G>{lwC$#DH0!7`KcQ#MXrO3xNu;?F1qR`tjV> zws=$q&xNoukK5@I(@*{U;?Dy_r^AHWlyGycR<&h8s(I;l&acvl(S*Lfa_qz+a)4s`&lFJa6Ax7O_TS#aT)gsG}UqN3n9xHP2Qk*>B7csnuR zcIfeCo324WNz>u^QT+Df&6nV$H=BmHPkt~WZK?%=@fmc@lI(Q)Mt@_HHjCt<<)L`% zyVp`YTL(=CDX#IiRPDc>s8XAC*#L|{bH8Ul?K)O4M!w&Z7MQjib@S#P$)C}a#0#fc zi%z(zf)C^h?8Ks{%9k)r)sbJo1>IHFuBt9FJ?73fa)-Vu@c5+Z7SZV=o#K@FKeE;F z;?xb?b)jhK^XXKz7J!$Sxy+{TL+EO1kmixei0Jgb?n7MrvsKpLwH;$Ybq7Ho5+m)H z47sZ!S)7n#lP8GR=bqC+yB<{$?^}O+@(gBz=ES0H>&8SncBg`s0q zYV4>tz*bGiZ0Uf32=p9E?yU0yaH{IZ`$v&4oQ|5wcaCnODIC;A5wFAByyV`?F2=D7 z*M}fq)uu>?qgLoS<+bsPnk}XLNsHVFsFAig?XQ`UYZj%rB}u6ZT%Gup)z*H?2(_?vf%PYYyxwYV+j5@tS|c_ zUq_cb{J8k`c|U*j&TShA_hlorDF`mVQ}SfV9Wk%ryh zW@o_aG7vO)V~6*u(dO0$+unRV0F}VHEuIb6AKfXF&ssOtR>E+qDxb*_>s6*m(e+iD7d7DRFO&s zNB_{G?DnAQh2_y&1rsU1z95gf(#b9gI1+ZeR3SL!`+0_@F1b{W@0R3UjWqrX-CMk~ zmb86K;COhee*E~s-#=`Xi=mX+lPynV<5Aq#Ca&YDR4oJQLPR63eA=?BPDg2hy#a8J zUDy2bs-BC@bP+^4ddr_#<=ZC;9&3*p!L5q#61{`Y6KVT7de?ab3*5T}Ad~hh;O1 zNr&qsM{kK-&X_A%a+$j+4PRcCI3E@jfP*pwFC5rhN=$v^uX!f8KEi{?DUUw60%JuT zKMEvq@OkU|xBAED=l}TokH7x@<$flGAK&lS&s*<0AMBl;nVj4_ zS7O<^Bqjmcg+b>yyk`o)>9WeJ@A_dMkVo9BC-HbE+H(r@%U1PofWeGvG@H2X)^PqJtrfHpb91^hL>eZ-{oIjGfI# z;2TA&Kpa1>yzZm%%z~M`&9+t{sLZv+oFVsw<-7gSb^9|CX>2p>D4-nc7&6CwM0={7 zW3|cMc>c(RE6z!&mS^BvX+9ON+UVHsvtryVpCJLaab>Bj(ANQpMA7aH-#NW_2-6m9 z9x~)N2x)wpA=`^4)&eL-?(&XMJH@GgUdh+|oaF~`G$@utq{Jx&tGFqQ zw8A?DTzFokBD;v~{xf{RLC6r=-=zbZbW(YIg4FC|^D<#7MqwSqSc<4qGi~uc=ruwq$GG=)~pqh%+sZb5bOehLXRukywn9`g#s^OeY0S%E6le z-DZKAtKLz1+;o({hH0ApK$Ye>&T*2?m5{HI(5}6*?wGPn!scf$m7MlGgV}t_Y5r@N|Q7!RC5(OX^YS;3lU3WkxZjc+W3_$O!V6q_t zWj%1)h8BB~d>l3{rbg z3YDc<2tA~oEHGl>&kC{t>dq}@;iA@h+5O996+FgS`q0DO@c3gGD3tfz`BEJ|EX{s0 zk;N`5xLGypjks3OBD8T!&$-72L#$;kpWVVV<3UxKkL&g=d7Mt$B$wy7h&B>Mst%w<%bhAZAGdI!CpV+JgZialp6X}5z_#)wgTBmio|5R!d13SPQ0P*7KW|BJ>bk=%!N(`24=oZ!y zhNBs{8s0}I?R?x!^KkA^- z&5Lm}$#h4le#R+YTyOn>J7O40QhYJIfH*kXX}KJUWZ~$V_I6y2Hgq}xtS*(w&M^(@+YuU>Qu=p*2I zxxDi(c(IP=A)`@v+g>cw1G>Jr1Awlh)eV<9?8}5|_%2^0$_F;bEE|9N!w}>x{NFYNHhPGV#M#{-N+xlPU$E|<=ynnnu z|Hs!KfBpT-Uw=DaK6oyE{lLfT_3JO^+volEqwal^$MD_eo+HroNZp0vsM_m;V%Q=oi{1}oD<-MA#KcK9}DWwY5AugrN_1>uXujDMut zS7%8xE1vy0-Ei%l%|g4vOQ*w`gAwQ=rR2~W^mQ2vn?vZz;^`q6@o;^0@-D_#h+wh1 zG-NPD{=3u9m}3=QL;-J|%@3e&YF|7;m?nQc{Z$)L4EJ?d6QM;O>=GSXvE5LAm3x_U z7VL;-JDv!~c-?g?3B)}brX`94M-;#Fj>SzFL|%kYR3V=!fd}n~aSKNqlL|$nunO)k zu>186GbE#ZEXetq#zK3B@F@La9zZ$E0g)3VGzU4fkK6Yg#3;{W;iBz>UM&Qwx8Z{? zqGs6gfa8eQwMF;jMSHT?=RNPB4t%xYDShb&X~=L|sROF4X*0%f55jk|C$djU3Fx54 zTvarBFelJInxK;GqbP?n#68^D9tRy>6q_)aGs5NyDrAZY1(*k6MwGQp`n_uq`IE0C z0?R&OD!VigLr26|BZ;yj)Be3(Z;{QID5Murf@QlUGYhFV2P@k(%;{CP5lX$tj}KPi z>t}uYeE+xxOYe=2wL?`UH{i9+>e(&6xO;mdTq8~GspyWQnXSJy$pG_PGnIa7vF239 zYL?;j6U_IQq(^`DXZ=F~AH@xwJc33G-c_BPKR8DYTPp*-ANVzJRR#%QiAjeO{t090%#DL5jzE$>6WJp`RvcPdv!u)3Gq%JDdUXGou!2YobBwvPQAKMNI8qHaQ^c3ZQ!;$ake2pIArK2Jp5*xRp z+5Ix(lp>oKr`mZ{*942Jo5H#|nva81`Ly?bPn^AXBCFeoDc#c-d;;B}(Xo)ZhZ-PW zr6PPE;co)gX>oZK*gI>wBftrv$lb81YSF31!apYJ$B!SMpYPM_Z$=8cJS(RWgGYoB zpic4Y*RqN^WnKByS}&pP(&9RHdfg%0TQ$#F$Ek>YZL&ZU1O+8VRNdL+jzxoY_rbLv z8N6yR4l3wKKu=Le`l}M6^6|jGRJ{vd&=g zUga>|iLp};s_v*b>Q|K)2W}b#hL6nG&(Ohh0G1ZDQ>CxCrra3auxHjp^O3lsp~Zp- zB_QU|E}-wx37FXf!K0#EZDTHjd>2tSG%r1t3JQo zKYrkU{sVvg)5o8G`}p;R7wb3T%j@;)t#6k~8Al%~P-d|c3LFuGPGdCX;$1naB%_EKAGmnoXi62LYeHwh-a#Zk_vC2z z&G1FkV{3{{?vJe4fjW33q=1NGa3e3sZtk`n%A6ka6-sApnweJS1U5q5y)+7w1s7;U zq4agY_u=}pLpD+v^vkG@RF#4n4Guc|gd})4ntz0=9>Uy%QE2-(F7C9-q*Gdr0=aAu zlewVgcYZZ9Ue4NnL1$K!CvGIPhr`)<64xXz?tGEyA`H9=6m!rH!(vYt#GE@I`U8l-<33pJIT z4iO=|tk_mYUEO0j<`W(4TI}LaQ^_^8#87%VpJ@u|V;5P~u#l@1;n;V zaF*Z6fUi+KOas|^sVE_;su0+;YrVch50 ztvysQ?W z7PX;@ah~?{TPq22iQA)KoD$Bt5|rbDeicpSrl59=zb z#>5s5%s(u2tIgz~rzZ8p<;Ub59fjd%sw(BJ9%Wq4*k}ifQ6weME99L1ah$HslHde+ z1u>>@slQls7M9f&fn`+ExLwqT$^ef~4zKY-mgR2qjito5C%RNh2M#RAp-T3<^0W16 zvWnq3`nj7|tg=ioDJ#?tCXlq-2rW@!_0jZ;4)(amzIxV2Tu(i9y{ zu_L}xngx|H7qG-lS|QSdE}57PWH{303uNy<J3S8p# zcu)wo))B-$5!IOZwK87q(WWgyY29aP_6uK$_;{1&Sf;$L$xhIuLkps*zOaQJ%OxH)Kxv7H;;-FOza z>tp@e$*T#67YSM{ZzSCurXyD@`g+fTuNZhM*?edoz`gZichur)d)c*>=y45++JGE6 zIC(0^G7^08UG=x`_v^d<=N~`*`s?e@zrTL{I0yCR#b3_rw=eki{r&ax{*WX&bks@enp|&iw-jk^m{8<{(QggahW!s22-{rk z(GoFB4O7Em{HfJRdt}Ax;`p(AD7n8U`Pt3C~yBnv@tb{-iAC zdyhOaUI?9_to`hMMY+J)fvie~^-~f!0P9c{?P~2l6yS$R- zzns6v=4~qS5gj>kGVm&WtY#r|DP*HFB%5Q|I(#tOhBR?vdp#fyZv|LIc6m^RDCRH9opUgYvvB|c002ouK~xdr{pUHyNoyr-`UFrTrcKIXgPhRw4w@NGjW2d2yLpQB zI8hv|KhdzYL%pQ1s6LkL6ncO`7-@&|Y@!ldV%*ZM;6+?V@kAgX)NP<2aYH1e$kJ^1 zP?3T5Vm|{i&NHmf2IRlidX-}9k-}D>R0(ZW;^=Z>nZQVhG7%%$8Vf%9pS~XMD2PxBn$Lp4ICh@X!L>C z1qpgF4eBemO9H zvddL!k>gbL4d-W7_9EV(eVqDb|IpXvSQeqot)@ey{M%)Q^gfw|*oJ<{y^Hggb=;o$ ztT4gXp!DC7Rk>BVC4qa)k1`mXIwY<`uRXdg^f)h5E)S@Zpz@9iqf>;@BE{*0+QPc~ z@9RV%*}`#+XpzI^4XMMJ%f*YWlCPT{)u#)m=9dYG*V84JC#sR(I<)Z-1mh_ROIW`j28fy z21uEKnN1P1k0bV$CFNB0hOUaog_ScA0_Lt&m;D-y)CsLEGFRjyfn%vg31(|txZyZZ1hR^@dr z3NqgbVMgMt(GqJ^$ppyuj^lvX$UlQy@3xl%^!CY z@f;hiA##RW@f#hFRPidA*_nk8p=+E;t~7yiWO3D8v>8-f*BC78EFV@Q=Wkci>Q>&h z?O+vI=AfI?W?Ud%2OsBr92EHNM}7NzfB(^dARS7m5fMeLhx;so0h$Xr)!Ez_IVDth zpvhJ~X@gw+SLuU3T@hz#gZf?eZSb}f8n>4e+aQ0^Ksg&o{elS~1bDr-W3Q!P(lW?I z{AWI+z$zv&=rlgH<3h7wS&6OPzZFC~MuoSG#My}@$FR!;%&Kuta1Redh?F(21U^w4(An$0MF z$vJ}tfe_DYR8s>Ev6|R8n6$#EZ&&e_7tK)bs5R&)B*;0?8Bkihn)}vbqunYrV2#sW z0KmKEGDZMCVlvh;pI=3+lDT-u+lUekwmsz`w$55|D4WlO*L*GOYVLxj*S;Bx}cfMu~V~xWLK;i_og4S@?AWuXmsgL{o zCx4bJ8NoN2114LnpMK~V1hqVEwXS2$bc!`lPWLSY^}j3;BLksktOVt(k%w7s5NL z)C=4Up~^?Vh&l~4)dV)oge@9ENxOKZf9Oxz3GE>Bsf~&@yohG3qC4h}!>`FmqEv!H z(F#`u#^UOC29&^lG>>jF{zU4V*GpPx1~c38up;Q^}`gbf}Y_j+T9bjL8j# z*tK`56tSGOKXXfD*96prB+RDk6%MV23C-%9S1-TIcNL*5n)WxMa1TycLTViWg2n~9 zKGS8Jt2id`J?TKFy^p9{*U+C}hv2;1qk4O`J^yU7OJzx#8La_V`%!=nrY4}{WBM=^ zQfY&UW7$m1%Ox5s&WErTQ(2PmDe+@}rpSymm*cPT!2mB5 z=_P?Fhij^EVGtS8BTN&l@`}5?%fWci%!hhG<++j)fzs-GZqKB@1bAB}T$_Cn1l}ME zhv!{RH2cvc`fgKGH(RiaMD6M&5#6d>%-mTGMc^bXhi*sTKEH0}m|W0$Q^2w-Tpy#N z$7t_27U5^HoAjDgS1$cb#tvOM+9PNQXvs@%0Ov1Sz3aFeRgsH86> zho&Ly5q;%Lq!G~PAo>G7Ox1R1`9X%)!kgf)0b*ds&S3y{lsmxd;LD4zgYQ4^_51t# zyLtes*C5A+>CLh^D^KR2M5DZ6!NFLw*Xq=|x!jXWfH2TCsTs6%osxXa#U#SNYw$6r z&=7UYlmmA|{*+!$}$F?xYAfSgHN<9Q>CN zi3y}E9Xs<7h5%VZV}USO(BU^OI0yp$dt&E+8|RhkM=BkNz@I-5uT){QbtSN230GuQ zmH6t{2dJh@*K39644mPSzw~)EPvq&vPAOcBQxv<=ZO61B&i=D_mo0yW*`hXQ7ZXd( z#WB|qt@uGOr+n5DFM%nqGaS+cH0~zs^mrYx%(YeyV%mggckl918t$s6W1P_Mt|3{A zu{+NYc7GcvF=O7uNC@kLs^T`x5Qi63%sv!)S$bec)d6!n1pjOiG7amjQR={3*Wv2Y zxR^t3-Hz$N>H&}ZTTtzPtl6$SL{jW;_Vilv!pUU)}yTW!eyD&Mq@HvM3 zfczw&vT*CXIkN+SeU2GkjEUN%trU!Nc^2{&&fB@4ze4-y!Xv5VKZB{O zHiO(9?ZFn*)$(7F{tz)v0D*o!g;%NME@|rWW z2fl(!fc8%*Q!`;m=Is|UrrWi{j}V8{nsuV5sR2))U|LwkHc2)SP9f-2XG*Z~!0p*2 zv>G7&90fls2Zg?(&eIF>Ci;bYRo`7~-z(%}amz+1i!)cPi_qyn>lS;;XQx2&R{eP2!*h6YzW5>Dg#+-M zZYe^+TWIJ9I4=>7+d#uF$N)yGd)C3GBT{kRmON{o^s!{ZvIGvg>PTe;Q8-h-AG1}J zHhUdIw$Jg-Odi}imML=yr4kJt(m$9OQ!pMJuQ_R*p&DayEq%$LQ2B%{$+KeEhs;A# z1{XZ*hDSA^bgD>9KV?>1y=J@nTbO14%Em*>!hcWH5pdZ30M{2vEUzu$kf@toe7JdJ z=$QlZEr2>r=RrekOPI=md0tqU+{>=6T2Lq6vh;ghg&7Yjxz{>0!H#g;l~K0HR`UUP z_y+#={eFG_`1h~(-~ROa^Ka)1>jOAn_{;0#*B|%mxA(Un#xX7-8^1M20cdYp?=AMO z&$PnI_V*TV`u>uU;Q9B{zni%qNXIn?kjbBJ{pg=I-x=NhU323t~n1o@W8PeTRy;8bSvOUjr4DxC+z&O##|wS$>VJH@ z-#+X8R#>Q1O1$M`Ks|gsb&sij$%^c) z{z_O$te60Cya9lk+kl1B8By*tTu-#2B~cK zF@2v0i%>-@sPM~V6atu-K`h$*LvG??gs~{m&HV=`Z<-juG*B9Di6w$PHT?W%h1#Sn-@gt4NDZH%4BqStd%_d$FxzA9-;nYmJ9yl>fy z+?4#=j=GtS%L}@?giFpvU)ZgM>2cP71F$U3QOBRYBrRbR$MdRH0 zli$1e%e+$RGIt%uNJq>`0Qf*N!0Zr@r`cn}O~*3mmpJa?IZ2dVVF~0pKb7aEUOY^; z62Id6Ml8R42Csp+FDm9I)JFvQ1Y0p8d65}oemsir}$VOJ7^7muO*%w~d~ zccWH6$)=a{Mi7#{La8gF@tOmoyGyRQP~eN?``-7Dd#ny0ZbB_EY;(E#k@o^4Kyb_m zfYS{mZ5hY(Ix}d3VGaQo+$=6doCKMI60m-*@t9+jr_Yk}{<0qU!HTn+_PRJVi6>iq z<}_4qu{^ggCFE8-apT3-5Ug!Id`;V{p^WG|)mk|Bt{xYCI zb#yA{sYCGS=))m4@pze-(FR54r2R>j+k3lEdJJm9>RTcCt+MO&d?j_Zo2#f4+eJUF zW!_L#skrp1T_~_#KKGE&k^5GCT`7)d_W#rOX_oNB{Cj#D7csFxJBJ~(5^)Y+DD-VE zf}?(~Hy-AON}ZV0p#3hqhy%XqGE|AeL2d=rZSC=n$|_>M0O&-W3N&hrC?A7V352SO zb^6@igtl&-*-iE5bjtNiBmnqk`5&& zpe+9^lE4h9YEtwR9|^DAcuuJM(^5C4K~L_iS`|^nb69uoWfkWei|@f*hC|vzwf=|F z>#EJE;nh?^-~=c~&!XT169Q{Upr~@0aefzJ^|=_X7ckN0I%4ZC9U?353?s+|<{EZ2-X!=k21I*a6Vpf2SjFd~e&&Jm|~_YHu}%KzWK(}KTHWl zqKFM^b##=E`R$x}h1>hcH93ul<%2g^@ZlV?s?uqaItYIhfnm}2dVvLVXy+1iJA%aM zh!e%?o|mT@92I2r&Rr;ORwC(S=m)YR`zrw{=}C2!yP5E{IFf|H|byjUbpJllCDM^ z7;A$zOv{mS9IZbVQ8*ZZ60Wfr)7a-~Oa%U^Y7?nyAX)2eo7RD?Yx??Rb_LyVmGTRKfke;u*dofacK^YG z?6%q3PeR0Lgkj`n;*hGfCo!PYyE9}i5k*&1EE7Mf#zfsC%uKs!G=ZC*m8h@ml`(ct zj9Q(o@R)!4p4BmabP8@M;X|r2bh@Di@R}8H9t_aLX@nJ4;jdNP+)r4whz73P<|pi_ zp-wFMf%F?nWktn(lpx}IefPmDwG)(Lbza30H0g65@El04)7p)$CX&?!VE`8 za2iA*vhS7`n%rfrOCOX%GpGwT_4cVG;_QQW0A*|%3``Wd`3$qUr&A~Pb-mQ#7P7Um1hGngYv z1?29g)d`Q%qN2M$dVJtqKi$Q%Ns91Du5cL8?#(s&l`7y)%#@{Zs(4xoDpnUOZBu^D zRqCBL2?mA%(s^V4q?Qy6uzj_3vpfrHgY>P(onaW+^gkk*!z{A2pfENzoXpPOXBj1I z9k(j06%S_OgFEJK1SzNT&y6D#va5Xc<{*In( zp5_6F#Ej?~M5znUB3?{st{0-3mG0)3R{cHn>GwQU(Q#CWt=DZ&jZ;t@zmvERQ1mk{ z!;w00$@R(|v)elqnEo>hQ5J3Kn@Fey#|&~na~rK4?BF;uwmfI+>*G5MB$HTE6VFgX zBN)UFRIbnr`uFR}SR|=WHD#TreJ)K6tZwH0QxICP9tlkZ$;UN+vmcS?8aLKK#Cd8G zg5c>2OjtmQA-MCdi97k@YU2#=VUnR{Hu!!~3T`#os+WZnGlOO^A=`uo9w!_=WaqcX zry%$Iy=UjKAc3ka`Pi~eHOERKoJ4JeS45fqZqL)DS=dh^q$CZ_eXNBxGta?MB`)Ex z%gEZ<&OxjC5MH!e}&%W08^dC&j~YS>>$492D>*AVk7mwG+1dfLj&@6ir`H73|b#$WP#mjW%W$46{y(2W{1ofQPj zXM)3i75Lk(tMAlP2NhiI=MnC?7cBSB_m~Zjc5^;)bYy5;Uo#?5(|e6oQ=jKb8D&^> z!&>0A0OTjEN3>pGz6@g(Ry8^l&Z_!t99jXTr&&e}d@$WEU5b)Ah6?BOd9viT6sGoLt0>TsjDQ1yC((VtF<%O|M=Tj~9z&mZsi`<|0l zIru$heWfvweT$$TaTTmvj+LHAL2HNnTz%x(^JLdWY>Vg4VS_%$Zl4;D?Rzv&tg3|?51QvojE_(HEV=eJ21 z0&PDECKJhI7@b|D#5Y~*A-nP(OT-J4<}-kbH|YmN-yxh@U)z=A@5FB8O;R`111D(C ztF1~9+Nrp(3u=1=d2`cJXh6Bf7^^H&$1C1<2RW}F(B4YTm1ZLoDb1>`dg!wAfFdjAK&l4d^>;n?e#CeyuKWqQy;&aUqATu^M3n&@4bho z3*+%uTXNyholE!D1*mF>uflGz-@PY?sJ^xtxNq~7E(gplt0E`L^;)SZC$+3EZVJ8? zDK9ACdF6CNkLQT2*biaxkp%9QulH)Zb4>>1O>Ie3_X$SmHG3!w%@jDb8EV&L>NZtA z`by!gpsS-3F1)BsZ#*Z#p@dX~&D+x#_}3gWqC;Q5g`x?qz?GTqOs- z?ECr%2(fo)pMG2n0wCR7G_>te(g_6!8BgozjX9Ug=!#bT({4U8mx!0O9rSI65R|x- z(g(Tqt6ITx?z+&qk;Fs3H7?nL>>$vI-x0)QE=E*YiA=JX3>escz*drDpZ z*afc|;w}NZBFF@}c1@ty1cCB0Nw2f?c{&%Dx%1>zO`R>MtOdn(t0 zIZ$zfgqFBd%WgY7Ln?1(Bx_Xzm5Y6_QqAk&mlqE4dF$)v{q}i(^kv=N($Jk3IgjPcgKhj1xb>NYzh_D% z#;sEvo%20D!{Gx0C%KkFxI=Ad8!I53&kye!YK@q#uuT+cYM0P2b5HASmeQNd2T9}) zwgjcEEgyeXP?)$U52JxI4ftbdsT^-iH5+gwve)6K1g?2R8X%|gXZy(q8TxG((O=Hv z-|D`2rZ5EB2d-(fi_122heHKSvRm0IX1+ps^Z7(2+dwa?=0J^J2vH9i42oe6u&gEO z4BC;!-viVuR5g%=s4^$(Ti~&Vsqo|&4FR7)M(nj*bGv5EDjgie0I|+wAhcOXM;lY| zMO?xtG1C=<0Jx5hM|)kOYcJ8XQyL#r`Y$h&ju{gslpdi&K(CCB@3|*Y4)bhU^rX@p zQV|bA?}t}USl*L_6Ddu_xTc?k9J3?kkR`_VVUiQ)T+mSax7&n`y8XK>?Q5ZmCSXp# zB077^goF9llue9=9y8)<)r0IEPSe)g)>;mKQUM${9Cdv<=U}44a1@0s)a$LzpbNep zZ2nM5)<)YQM-LSs-eyut7h=vD>Cy;-#^qxZTLgk>xINR*DOdG{>4mlFMbUAF@|wUq}M%kwUx&u(*4BUSbDYbrE$-^Q@pmhZcDd!T76 zm>6RVO{~aZ8i$ZNu?uWnd~9-1ybHYin4KW49HPU8d%F_WVs^qBY5;);!_C^fVEYVu z0R-;pb@x8shm1el69rv#ubhKXg>qo0lA3%I(w-A~J8D&_Q0T{EOma-QU1OSsd>RsM ztD3=q9m{pLLg`{;-<@)_T~g+~Jh9RvM(DVcL2*M$%dM^{Pa-YvT(yApr7(awB9*LL zhdhTrs{Z>Q@4tVqfBp6S*WW(=^yPdU9M;GA_~qk%|M6DqM338BEZR;cdJ_ARpCgEX zt9km3qFbW(5mGj)>@Eoz?NTcpDgsD{y2mm(i}mE3y>&$e>X~%KZ^gl<1qC`X7>bUfW zCL^t7_dX2OB<&j0CDmHt$sWdwm8Q3{SGSVn>niwI6~oEUJ4{i%DZ{W=jDCTaeseXmSYn_IJ%pvC5?$EX#(fa6WumpWb0pAld~V zt5k@mixz;OSi+q2NDo|My^1BC`{~|Pe+OBT3`dtJ#&4M^SRQsCCZjh|wMa!49Ay>@ zM6@YVIqM2OWS}>#8TH%SIW4pg4k|Hp-`NDn>|U8^Kx!WFj#o68Bx)KL4QuuX=26uJ zkTH-Ns#NeyI^H#vY<;Hj+Bq>Y5p(2v^}VYveh~NKA3y5r=ly(ZeI>fPE0MN+k5Zk) znYPfXuE83Om6INs3641#Vtbok`BB1Jy{4ju5w?G8aL{ptMhlIy@@g6WEPNHvw<;T0 z7ar95i2k^8jX2%VC4fA=TOlF1fK)pC83gs$xmz$dt33J{`2p4P%M{!^oQ+LpD}ew9 zyI@ZRC?34a!H0u89>2eoNYpeU8RCQk1q*ZEDJ8U@CAjxb%=m^?!vN4kxaTIermxFz zP5+Vd*}_X%NM;SgSI~uc{EkMUWMmZ{pCDYw=_Q_m108BU53YH-7}fr|+=gR+Yi2_P ztQyrTqRSzRqZ+4Lwi5tcz{Mq#c}lGz*hZI`hG%w|x-+LdX9luyPK^QrW{so(jV4`Sj&FcsibgrI~QpSIwbi7kylmI#Z*pkPmNg1Fml zI6eMoaL(MKRQ-Iau^c_h#3h#~XP{;!m67MuvLxZj7nV)BCWoK@Bs{EYm$1&R)%N4` z)h_I`G_M}pVyq+PP(|-wYLpP95##h2t%azJnr$cH>DI?s2g4>};N*PTibl*}lph(6 zTpXR2>5icoo(G@|uM_Mh3Sd4k$Z3v;6|?6d+)p#s66Qs4x(Q3m<{l8-mF|T@Pi}Kn zxf^>3It1x#q4szRDyrD0RT%LX*Wi{mX9#I?8{)v{I15!b2R7Kn{n=WmVPgdPR@P-X zx4K-$;Cn9wDN{SCw^OSqU7MJL%=>MQSGq;0gtGi+%)7VE}qNM&+HuE2!$yET3makQ9pDL0cWC|=4_Zeai##1`-x#L=X$MowA zQoZPHvWhe6#k#<^@9*ks`-pS!>KwG2&fu|)0R%RD&RSjM!r+9IatlBfe}Jwn+@yIj z@3bfrb^03kuHoiN>Kzl*_d!}-X%3MU-9DA27Wn7+3Z6cSf9zDdSgRQYZ=+VJNiDvr z>ww*bpd*D2in=CvwYI~FMEte}Zx8z%zEs$|G7xy6ZDuNI;S9@j#o@@KYd_JQj}D$8 zN}YYoH@!yc*jq{Ed@Nvh2Pq}%W&ghPQ$y%N%j`+-TOZUs6{~g9mj1d49)0TkSchuZ z{rE-JBRx%PS`B5Ej|ai)?5L-jc--8ni`aqX4wgJ~PLZtWgyVbsy;GkO`jL+tCt z&s+cP@9)2Vzkm7lUC!g@d*d@_#q79V{kqZ?yb&1JAm&<%LQI597^me_acF!GyIYpRu?yD&Ox(*l;EM@a-gQ_i)~Ri znNT^H$Lw2JVp0H^-pfrxlu+&L%{VX0aOB29r~`CY@X`9rq`n4;>dM6m(T_TWt}5PO z>wYxa1^UP5bX~&=GgD~$(tvVsSlo(zCejTzqE`BIJ)hmvsMrbEwWXb055<)*wM|}E zaFmUD6-}L)GPS&Bf5?Q(tIO!60<(nnq%?->E&b7Jev59wlu4uW)I+V}1fI(Zuvt_w zalm?-T)72~3ax$zk%YZ) z+}@cu%Qz6HhClR2QfYZ&|-AvuREn0Wjy4^@*H0nE*`; zY$$h*9+(7^Oe-vWhD&LBzI?2aK}@tqFw67ql;pD9T9%8t*UN%3NnbgFEuN^@iv??O z9+Gt|IWe*vib!sjkQYRR9Cw(PbxAbYEa$8Gqz9o4rE>XLiizqwfDSN)(QjZ!db&CJ zy2g%THa^y5E`X53&#@_CWI=UQ&CpF*iNrBCRZWzkpmxa_#-Riq8;~_N*T`BrtM17) zCOtn;Q>ng)m&jy-z$Vh|E$ql$pie=}My8fPZxk`i2ZvA46_LEY1S;#ibXbQ~lfxPp zMR!Clk-HqZnDHvjG(hQ*K|e|U936btL9)U-%mRE1ySZ2kRUjj@iHGT*GDT#R@E0F{ zT-B$i29b)GM00kJ&RaXm8$v}t0N)_&Sp;!pIF^^WK>|u%Z5VP8jK7D4dB6sD+oNNw zdi?!OLdQfFvig$wYtXz#^328N$_cGHQ@f*fpv=M9mkYjZgS&9uvg+KAobKdv{H4NLap^kNxhr4K1mi$5?w9o$UEhuf~!DuBH< z5M);>XRWd5Ax~A6R^x;Wzer&G)Tr`_c)<))|5VW+;_2_{giU0&Uf)^EK?hkxACn$= zja-bTs-D*JfZbmhy)$+nlZys+?vY>LkhFy-vE)buD%t2mk2MeAW1tzKdH{TDLjX1f z9@+Kc98etcx%)k-Rt~4k8QH@^?StSQO=M)gOO38Muj8j}aJHi!$ilWkjU3f>OrKAA zDb{2)K}7-m=KMfch05o`QQZ)Xp!(Z4du=Q$PU>q1Wc8kT4>xuV$HMMAC`;(@{J8l3 z`J-9F0S|mSGBavL&4BE17sq25`nsKQ+90h*DYx?i>gW}OAIKQ*;fvrsbv%Ci-9RY4 zE;Jfu#P7T^3*A~akPxTd%r!=A<{`iW%fOtjG4n5 zW}J%#jBiq#6aX9bnai%r#tz9v_oaf`P)ip3s?LG_wXPddrj0S36soM(g+&y~>8#jM z2zF6-O8A;qonNmt*lq+mX@G*RCmdj`${w%wk|s%wZ(isV?`*RugB54|t}nDiCgTz5 zoI+jr=q#b?a|+8IP} zVhV5mm+7Ro8vLEWn=qUlTa|$DW40T3Y|X~*gD%WBQF7@rt22QS`JO0%1al_@o=Bii zN}7KejXCW9rs^fdo3`|OSt#H0?)i?(1&*qG|FDET3=;lo>F$JbKg;SPUPfrnmm{$Z z0_LrbF+kqUnSnnkTBXGwsn6wOL%;%9(+>DK4PSlGeIf4=zNf>IV~0I36NY})aX*0x zeX44Y%Ca?AWANClwS_s=0m)tZ((#@`l`@gD%eF51_KyPk3{;gNdev>XCJw-ZFU0G` z7xDSV*B|xu^S-Zwj0ZL@5Z_Qow9Ghn6GHquo|#zWQ~?7jXP!67!I#P6VTs0L5)#)-cXR zIw!#N$Byn6g2KOFWFO^9%#$Bg%|gCr;s6*Ie26gkMyYss5mjEBKw$5*O64fW#R{zo zDY=n`##ki%AknzD1PEXiB-(j&Je=zQ12)k?JjvD$Yoh<2?8r4oott7L1?Z+GXTH6myr#2dF9P3y^hp4Hi21|qFCD7LrCBlCg;%Bk1(Y%X2ON} z0?6a;Dw)Rwh4ClLWJ|AHI0zBj0cF;}V?z1B;%%6HC7rEqR+;H6Tp6HQ$Uf>AM&0it z5l!xBXN=P4u9ml>_A#sVtpGK~Q@lJu`<7})k>JW+Fy7^Kr1LfTr|C+U0hl{U34q78 z0N^m46zG4(0Mz5d{{ByaYLP&SVWjfm9Wtmc1$A;~&RPK6Y++*6zfcnCSpKA5#6cb3 z^*p;pwL@FaIeu98f*mgs=1_)ndcoIHWxEJD)f{mWpmR$%c>skv?i65)F0{i{O{l-A zT6DQw!(?eYE`Pl1^YflMDD6nXu?L-%gGkDSx%Dj8?*!0Ox7GE8nQ&1+v5M84q_VVb zhwv$alp&$zRvyDSkavX)D=3uCb%V*y;W=r?v#G3P8O$*^p1|Vy8UwwOdQ9W1>L@!A zKQXa&X`va?XNhiN@0Uje6) z(IHxWLE5KGb)WV|kK<>Mb#YNRl{K37C&{EE;1K}IZe)F>mr2c4d4NRScHPUyE8m9B zMAHFJBy?t@zgkuvh98z@+#jl&?$-@srVt==ju_g*^vzl>s3M(@#`7eAdXYT*PJ;T-M;X7UB36e_kHiZ_m=(~ z@^$!e&N=7R{S9PQ-MUxx1XvgCXRN~Q(wmCePF;v|cn%NQ`*Q`kjUfct*?Y0{E7Bh( zeUL*_CWB`Sz0tS&UQ|J9RksDg`GTatCG$m3xEM)atx8yZRn<2;px_7skG=ac{7QS0 zr!2I2nd)hyv=Jb{a8!_DfRm@wM|(75v17U`Kp?|yw7CY5Dqn8w1HGC8lxsb!cS%7V zK2{P{Co2bM!Y*nN8tpNcOI6?Cp><=`(=F=`vUE$b+BN}H-9GP3Ia+)@ytx85$a`DW zb57X~(-;nZd=Apo0APN>fvqURjaOpIdRB7&0Cj_cGqUKFKq>^@vo6h2B^PS|^G9YL z6?^)(bi!acu|H1MTvb8`X&QuV2vX89H*B7yJ+tv9jZ;9?0dUSK>#3KM;t5i-jUY5} zq$>(wTqwm0j2irYNd7$l-~J>_BH_|?S@lHzVswwF!{syz-)+-xE(gRwt>!<42?3F% za&PVSojp~8ks?F3v|oD=${ zWRQvkpav0GZsDRx>eJtU>?wA4dLr`O&?Dj8T)(k_`SBDJ%b~j(;SEnYHck=;_osK2 zaT^)GMubQXKFDZ2e;lkuey4@Q9 zmzjGxGRID2oq^Q{=3*JQO)(!Uv)~6#3w$Q#`k|%3D5;+X|flImoR?LwuWsZyz@`H2Q?RA8;wN3zgABUv$UThL$!7E6RmqGsf!udHt|Dd@8t zZ6dcq#Ym;6u??!@>VU`dKl-pEyUrXldLYV~_e#VM9oNLo{ly#3mN}38CrHeI`BVH| zqg0)FlR^MU%wj}lC=&SlU3{7CnRA#qd?VrOQBxM@peTuV|CKC77*M+4M zb>hjIt=G>io=N#MqmDx|-%+o#6#b{>HeQtLbE6katVh_DlN*WTt;9`1Z#|vSmj0v% zuXR1MHsyxyj<<$KX&x}KR6p?z!t|!24(IIe7U??EsCEK@BI8Hd!}U6q&>n8tgiTuS z5h@2W=oips{Nu8Drt$DG`@mGufv%hvigl|_Z5tI`dj2lbA?^1;cb4S>3&;j>!g zA1J&|Rh637@ElLGYp#`}KIA#pWi8BYsmJw}+!AorT?F8G4Ge$}a7wPpC6h#`p|kp3 z6^I}2_xH~qJmg!*)ShThXyIJ_)QWdKnjsFsdszO)H7j>s!#EZE+=iaNN+Inxk z)RWPt*g`wWAo~Zh6)*fK0}&>cmjw#G@w(}Fa{$?m839MkKkf5M#~>DSZAi2y&=3%& zaGaqbzotR?oQ^_ip?`u+X)U+-Uk zfBoyPuh)y`h1ctR`GN1B_w$YW)=8n|g_Measx_)3Ru=%go|*Rh6{7CeHRoDCKb&I` zdtq_H`OPv|C)>`SrUpXlZb^C-9%C{Xk)rLREf~-~@MTDP?4_Wsr(NhBC*{RvrJdd! z@4^R)K=->TlX4kOT-ffnf(F&tUR71M^I9*#n)u0Fj$1*@b$()MLJaKRu#oG8yBm8& zfrg_PkG@HI1sS$6bIj$u{jG}=C#KeG$f=yA%3VdBggwAeg~OwbQFJQPkz4o!&C2gP zl7R>22#&TTyM(O1JP3b%vJ``D>NF(TokCfzme7&429;#JW~HsEnhX+fSs~>p+$?d; zYvYT;EYo)c3d$fyMUqf$=yVh!}1?|Q_kF^oV3nFL4CcB#+j{$rT zb%0lQ$-RK$*B|%mXMMkgi;yFy^16*6p5|7`yrPXjK^gWCnRvpZ=k8}I9i`(}_TXbG z5e3>wCqmWR?V7er*F<~5R#YZ^@mQ=2NVPodyhZ{z8i#9Y57In9a|!erUr}Q_6PCP| zu>2~@bJf@Eb|-;E@k=!Hzx?wrl3 z`q9lX**4^K26+54suen2xs$mj=B3%kUx1AZ#7Zj~*mB&~OkJ`qls8n9rRJ;~BUzLV zg`7_A6lyiB_}b*@pa2@ziFHWT~+c0|F}3M(u6p`P&Lp?$yeCIMbOdp}6Ot zA<2r>D%hu^7{5WC9`A{I*!h|`Y}OFQ&?cY-$FeOK>g|dFI>-C}@%4ATmMzP27#2}; zb@x7>m!wEavS>?|1X}}5Y|6*RDn;5L$a(#8;X;?{(2GXUtCXiQPmtg_!rtZh9 z{U)GcNY`NGsRqL;V}qedTdk|ErH;Qg^yQwm{DqBSXEK%iKmer;+zar_k`VG%B{I2@ z1yx=vR_#Fsn}r|-wE>dH-HrvE1j2T+21TF&+rXuJE~3;ouDoWs(1GmIvXTh5@0HhP z6O{FyCg2?`E&=wALOS@m!@&5h+t-HFqCmbKQJdW{N_J?xKEoy%&tsk9PXnmOJ5dcuds)wtE zM?LWD<$n#ohb?33cWm4D&dED)>sZt^t3jniq5h~#2!3PS7!YTeEm!n;mAQX++-TQq zNAo`V%7GH6+k5nuCVa9%b^mHtg=uh6BE-Yep$hhb*k5~ueXRt2-RhZn>T{xBhGs}e zZ_Dp$hdhyo=$^PvST5^=V4Y#@>h`mB_V?4`nj_M9>Np7o>fT;JIOP}}F_%G0`)?ed zBVh|aYSuF{mFetlDs!gBD^PDamzP6(bY6xzF5~iq1qFO(uWJC{X}3wU4_!4Vxan7j zBrsQq9@mhk9kPf&etrI{KfM3-A3y%|^;Y52;V(b&*FQXd@r9orM8P|o?XYvS0g4&W z=k&+r6N`nN0yUmA z*`4&zHNHG_cw}38(Y#1GYnJA1xsDw+T|Y`hsAnNXcKu8HAURI<%bMylx#066Es&0_ z$}40)Y6cSmA;d=BTGhZLAWVx?lLJ;S|9b2;qT@)kI%cZS9k8>do!Z$Nj(T!!IOsEj zeEi^qU&Uacw@QQ}XgFQTEsd^KiCV^b9U0>GbrX})VJM5>$&tF;igR&m*w=7~jew zE#m4u&-I$Z3+VO$R<0mgDu|W~p2)}y&)Z@3Yv;;l1w+r6 zSA3+3GSps_PubA&)I`7`eBv*%_rkd9HP3W<>SqN&@@X7txrK3eyIsNUdxqhByB8<1 ztz=Y}zCOhlWC?|;!_NFCWg_|??FtpVoi*2-1$VRsO#r2R%%wF?wXEWSxEEd_`>;T( zq)O(N-vu(pM-|heWy~MC;OuD*SsqiiFB_+PlNC0SmBX^r@5gTsv$F{*UGm>Wt2I~V zUQ;a7=W?UKLOE#0BYN&pxJZZxEC1yBTD}gzjhVGR6pI|t$*=U!e%A5n%(_tax2m_+ zV(ncbtwg0*&Z^q~7e8tPi_Yyj{L3TaF4>r@?w^1o1B^R|-xtv|8VQct~wcV>iRaOut{?S2zw zj5W{hS6ex)ad-Jxu#!x3tH5IEn96h3~Xq(?COqt=s>l!2=>Ehzs`@Q#)j{_Us^~|Fi@gBEmLuMVrCc#djzbuaJ$96m>9AL3vl@4081%+YLGS zVD*c174JV)H!lJ=)Bse2l87dKALpiiY@-)kQFa%y>g~hQWTI2>(eh^t<68bzI62Oj z)*S|@?X7y(gf9;xd0hv&9wGsqkveKpeO<~)Nu!0?_}Y2st=^ysmUAEWq|Dwf5m<1X zW6EeikjXS%lNWfui{YG& zGZ}8sPZF~I1pUe#%Wb7)yNY#1FPPj$;AOJm7S-frY9yGbeAuX0cI>116pspm1}j3n3=|Gt&NpZV(Q)u`@F3nE zB=~;s&+ql^<9^)Rj4@k*7?*VB3d*KbLz@!zYZj6Pv407sBl%=gA$Vw4Mtg^f|NRJZ z8l*9?S`n`@5-rP=kJ|AsuIX|bT9*;D=O#YE>j)VZG0m@0jrFPP;bKQ~2m*e+z#Ux9 z9LkS;(N~Qcjpp+YJ@140{}KQpwh7XR_sYGV`|4coc&y6S*IkN z8H)1Z04FeV9a4mK0xE!@s(d1kN#VR6+UA?7EY-t(YNazGl!eIV%{Qu=BroH1is5rV zhrn^H$V#fdv}fAL;;Og8u^am$zzA7yK2$AyG4R1aLzJk9=~SFj-c8X8eib z=nBU+;%%Pf9oz`L(Gc$-@r1-ShL-;U)y%c*|3bBg?5)<>s`b1Yri7!B)Qg^^Cf^^4 z&|BC>B|O+x2q9c-E{#-kO9FLJv+~hY%SKUSsxrW;?qAD8(WQ>#^E%NDV)Mqkd)zd@ z>f5tgsuyk+GdhDlpalK$4OrSSCvSD}Aj_6rm#nL|$%2`BmG=Gpd4Z!dJtfBdXDS>G zn9+e_(#&K6WxZIAH%fAd9-OmXccH@7tM%e}>p)p3aJpbFtglmv65^^IW(_8RI=lCV zy)z}m!|J-!@q(bp3S82!nvR&j1V~QR+;$>QJQ^mCb|pgR-yT@Iy^YEDDP+Wg)xuQP ze2uw=$9dr6daHQ!CNNnCSCrueBb%ZYb=*g>`ekKzvziTX&I~P=DNHNd6c0KI!oM3r zD7JrO_U)27D@9NYpPS^@>Dn2c`5T_PO`tnr%Nb_gZUNLT+NB=CZ~jkIvg#f7gVf#4 zQOi?$8@*%I8&1lRkv-@Oq@gZtmL_(1JNT&jyB|OP)gRvf?x*|hSr72@gTMT8e*KHb zFFu{ONUDRE-RJln{RuJ-Q#6zSaKoE-CaBxL>K*6qt#;+xpHx+4zdE4*RWjzA?S=XW z{rh>J&wJi>H@M~hVO(XQGQkX~mq;(}oWuvsgY*3z@HImbr5Wqafi ziV2-5Yq`Fo!J*$lpgUUuQl)^aCL^PS?N7nU^gtVrrgrY2URt9{&?$_W)$&$7w}ZrV zZ7kPoHTJ%5UP>91H0PP1o^XF~4)WSqI7k-5Yr$~21f!5q%5Y1*=QBYR?3!_zIl!j` zx?(pGL3vB%{{6aD&wUE-SSH;r=C_UKv}<05=X#;gmjoT-uZ{!I-gAvS7mg^-NRefJ_G&zAm*A`#J z&)=SZ{Q3U$?fJaDhgnvn&0H*+c7seO>*4*w@=)_ekv$I;b>dDYIetm&R${DeB5yEa ziZXIPsjsHE<{=4zjI@=Jqmgu5dn_D&uN(!}lwnUFyI4j+IxYoWQB+fUD9iuPKThjo ze&y~@*<5?Ityg9!_x10x4@}&__XIhcyJY*e*1zl-;ko#;mYYP&<}k&r&EO4}Ex5kvg@4U1Jt&hnQ-*KEfbl+B*rU{twyrl~G7+aL zQkz>ri|B)klUK@W&z zHm)!Ou~01zKWY!zk=Xvwr8PNCYDmqU{AivP+a{l=vsM z+Zm87K2+Ll#4K-W_rhQSW(OD0=rnXE_qGc4v;;3HV>@Ds{2-=Z0k${T^X=EpW?%lO z)~O}&X}MkCZ$@Agt@)Ege_%>csw$c%7QZUf&Sf-}_aWqi#+w+T8Qyp39$8dHO)GZP z80XRwVs9H=@_CJ=$E(&Yq)0W<#G1zvECkFtm&9)1jYFdfZ}7}JPF?F0Xj6BF(TqAL zSlSO%Rk|@8s&V?>ede|EScNtDjAz-m^u~=^iaE*)#nKM5!EHjTH4z#qTTi)vq#`gl zJcZ{Zn#BUnRH0j1%lpPFM)8=oF}qNIQCOl$RjPCcC^bsZD=8Xpcp;%S&U!F^X`D>nIt#+``t?KC{IsIq z2yytZidm@dV#$@Pn(rPu`#2E+rMODg#YVi{bNiYsB* zF{D4%PKTy;c7LoDyu_TTktjk{fsbb<<{B4xzy8*&*%6!X!phUUjmjCrI&xq`Rk% zaa}lVuD49Qk62b}n_%z)e*M|?gqV=fPfaLI5FDrMihvZ~35nTG6q-1&$V3}dY`>!) z{jCOq6m$GcHO|}1io6P}m-#N|_>F_+m3y!6yMiAJlyb z$+?f&mM2*?b^_P4%MhZTK9}(H-{YZqWQcK03n%862`ol{gX6G+bVv25tErW~=pwpP zVl`R1P}qQH{?apQ(c36Sm=JAv>3M2&sTr&xEQSPcjdBj&4&M%*7e9T}&+pHVXDfc{ zVEvs$ORK4K+LyFG@9fj3d0SO!ub3V>y;v}h$oPpESMq+^&}D8Mql;5 zs`zPi@8RUgV8}N{oj}YZKZ|p|vNc1Spmc`x5;x_y0Mbd_WwZ7MI*T3B_VUNDBto!I z3XTfQgNUhCmh-VKn+c^3xO!?CC#1YKOWKq4q8pH)t1z?rseIbW)V>mzEl5>okEp(u z7u&dwc&Lo?-WT2ilxt_Ug`sxdf6Z9@mlDjUwNY$G>H>{7FfBcQqDYQ5|U4cBt?Pb#J&V}gb1`(tD9TT{An z0Rey}u`%afu}%(BL>({cP=Q-y^orBx8jX_97%Y)aiAqexy1S9E&t;;$@RBpn7MAz&KCwoStdlUw1fN zU~y$yy;t@^#ekeZQDgN|P`Bne0q(Wa{E8s%eSYl?=0bq@idgZv${I%Kg<2Je(y6x; zz0q5;Ax|@+-cQYx_r=Tm-hA}*B_C};*j@AwA-wys`a9j!?fO4;|K7Pw&k(=P7&MDU zIjgt^+f~YO6}DdrZQY$MTZcFv=q%Ij@=$>thvlQzc>0w*$Z+Z1u8xz!@@*3Uod5L` zFp3mcQmaLXj(0(l0e2u)SIf>{C2H;Ghu(kZz%R#waMwKW&^~^84auSKcxya#D@W3* zM}k|W53UJc{Y7&II>~6KPtcL5d!AL=C{EDL^cAYsT6W&L()Yn>q3U_1dI;sY?K`aw zcwGe9FHpw?fH)`aq!^R(4uZk-ost8yexV_ZX=2x={mFQ2`o`ePpY3coJ zM<>P%y49}NA3Ae$5HsI+Kuv%cuC-5TgIQ^w>)DV@d<56<6`|XKKf zieXX#YMQeG7{kj{em8#-i?Of55Mgk$;H*QZQI-3->B%;-dHtlz$LdEYfz-L!k; z{MLV;OkEBRddIv5rdsbE4R2V1tkjpqc6-Wf%TLIPnI+Zg5eXI)up|~S*Eo0dE0C(P z$&cZJLIczHJ!Q*;9;ezKdN`H7)%xyPuzslqE8Dab#@FlhVSmT3GNcro#7SS67XAH2 zn}lzx9y)oweKn(7w!8zPNYE0Yi-egyp$ z=FRB1HZr_8poZbsQN*JTp|>p+Ui94KqKIz?Qzx&aR4NYAsykb)_FCUAn?pRNb=nbn zQh?ZWOJdK*j*)4nWG!%VMZ8OhE#{0Dr=rEP_#y0lwSs$x1Q&{$BYOL2tFA8> zz?QesNi6tnTUlzk+ov> z)}UQz^ap5fp=p~NVrLQ5%px+Kda7-2d8Jh|)-)cErr){M{#Mn#!=7`njcSCMw650r zkiEumWHG5(+nRi_tcplRTz!9)CFD+qHe!CTOL}--hqHO3#HC(*$7(bXq1==B8d@mX z&bmluXr#PiBvs43#zcp08S!L?J;!Z?l+VRWij`e$byNtWriBJj*d1f<2V?Ut&sP(Y zPuezB$c#0i{C0pHcQDR^-A|w4)Z%^uY*C!DsBO|2`TQqXwXnBd{mejEEslzj4nS^2 zY^<_k=+9&Nk+YTO;kRQR$5~~^S%~$R6QHvy@fRcUq#BD(p49jvAHsH4IvDtGm;M;> zxJU%Ul(_6jaN~&mAcUyzMkCeH(cCKR*rA!Vr`76~`$k-4;vbL?WuGrlEe_VKKJ%ca z23L`R4Mx`aih|gmTDoN>w7p~vd2q_&%MUh`F{eyO#xNXJW={b1=2^5FRzH9WWHP@; zM-o@{{Awmoxz#9naQUrUqKhHTEl>ea0;&>O;tC#ZrRR~jPo#qfd?=g5O^-u!q}ip7 zUaoYQRcM^jWwCb+?BR4Z(W@8^gfF4v{h>;4I}%i1E1fT zQnArY8yubU?fLQb>-(&!Iz^PYcefsLO65lV-K6@QcnJrvn5Aq`kkP-=DytNBRPQhjD$ledRBs5@ zn(D=d)bRQq=NSL`nkBL`iz?8z%?_BSt@ifw?_~N`I=v+a+$Pz+3^kCvE~-$as05Q( zhpu-*tBF~*R$1v|gKBxf&oZg0BORic^u{{v?)*;V>xA40k zKYsp(-~OV0{pEam;M2k5)A{t^&*#2B@zj!#0#p+tJ9y&_@4X^KIj=W?_}-fSI9S(o zN9b^ve!VR*aybA{_rN5nK%QF#WfuSEd;2^}y`)@L8)Q3Xh~a1o4Qy z#TL*@3g+jUyt~|BKwr)<=Siv{6wK^cP)P!4;5SiE3mKvPkz)hE;`?hT)C+DTW-~n7 zPV-tX4$XHJ152o5m6w832`zhAcEv2tL9c<)%}gyDj&ZC2;%@3zVITbA-`1-+E^qcT z02H6SV%mmU^d2Q_G(`Nz9Z$|JrSmYyp?k0Ak^k6!+?ZW&<0ua0OswaChb6gH?D4NIyfo9C3G(j;G32T9p;M6|xRjwF$vwb=axGr2~xh-Qp^O@NQYx zdhy|8HG_))3#B*k7p;Z!>;VL^xe9cU!054VVsF~tO zZV{GLnKCdPDT-~T62T5ruL%D>-g@@bH~} zkIXaXbmLo2^`cMP`{>cJ!JU+Q4}l(&*OE^1^!QkG>=b)hg&uepMT2p;1n7^@W@^avPND+PWec>I_&Ax{OXQi`_dkw&){y%JEPx9 z#YdZK2{9*BTAs0gh2#-->Y>vty?>kzl~3&a)@OJL zrL^$S_nvh)kEP-I7G!Z`~sEgiiaPLMp_zr4za za>zJz1eelqFQWDiR#(nT`g9xi-g92E?VW}CQQbCJPOcOVy2TBA7B9L;a{(Scj$c{o z#~-qa-k-9YBb(ERM$p}(i?K?yM_Cp-RKWGX)J=9e^fx?iZf>j3tC znCBcGoCoyvbIya0M}JQTr#)ijH*mqn(LO&^k6uHubXWa!$8Wj4X5DJ3&OtkWx`n#q zp5#EC&KoJe;}e_}a`db4)Cij-N*Zy6?nDZWF0>6-5;-H zJ9!pe6aVfJuc8x8=^&0En?9zBvS=r3y^*D(i>^P}GY;y$$b9=2W%Q1<#xhk`>0q=1 z(}r3YzJr*Rp_)Q9>_oUmL*3gq#7es49_7nR!OP1PCMtauNZh)8{|Xoz-CzUk9TDLu zVqZZw)_Ky^HQXY=rvqKf)w)W}NG$1IEqys0j=ze7^y8Y1!75g4r7A8OYA9%1Nxn%l z#f7Ni4n%2>rPk&vqfM10aJQL;{ti{)|+d8q0<_A&s+HT@u) zntemc3>1opetX64j9>(6&arMcyE9sYo=nlIXgI-$kK!G5= z0+(Q1sm}`RQKlGL@{}7B4fS3q>O9<5kKH1=qNHu6Ntz`dBiMf^=+SB4CXXfamCvL% zQiC#SHT95zAD&vfb;sHju+o786s}IQfM;Zv%OK^I_G4#_8Z%$eZ$PF8oqUnBc>q%^ z1p0i>pd5^@F{m1Ulk~`L?NYW>nNh)?#rtv>yOP;MlscC8I(Q2uE6SR6^@^I`xw1+8 zg=<8HO;mi}l<=ph>8KA=Bhj4(wzz?*V+r~@ropQdiY1@EnW^S2z zs52ul22(JHw{~=u`62VoSN|qbotgWe37^)%r7WC_BZbz^4?$9^)SRJnrm_mwIB3Dr z(Ngx#2*T5!5S~~xfsY#|whiX)p?W>q8-}DGn7A*V1i;5bewM?Gs9+g-v95Q9{sQy4xnTKtVa3!@ ze zmG@}N2vu-Kw8A1-c<}T}w=Myz&yBjp2kyOZXVpksTnE}NrG3hAJyRo)J@Lb<3pkzG zKKS$V{``mMuRlM2^TYYYCmz-hZ~Vl^*N^+{qn_@iG^~=npn9;o6YleR=~v4@y;4lB zZD>OB8V-8jY1)NIZ$w9eOaqF2r|Az|smxMi_3@QWiH<5?Z8vYsyJ~GY76<@pd9_xn z%Pk#l6IuX)x!pjf+ZneltvnjJA)P8rF$(maafxcMSYY&kBc-cjCSCSJj;%Ou5WrL4 zQqkCOR+rb1-d-;;?sNc5iA&K~38&QrfwwHG^?E}QfObRa(J?x^msV_5VvoRyY?6?D zeZ-=T-l2^OA3=9(bA=hBt!>cavEvR1OPy8l>5w^xg9>>w)$KJGCH(27C?2 zy) zvL~D_4@--Q=H>7=bZ#tbz$5OvyHUh9xm=jpTg0jUO7Q}-nGk{nO+RR$OM2IjpI!7~ zj{|mzNxhIzoa3zBVHCz*%OK%JOvgWCzXfY}V31uZ((Kgu>{o63OJ_+sb`7MHakYQa z<~I_bpkWRXWro7f#G$5`S~nTw3M^w;U|(ZVbmnNh!~C)H>iH{q7$GR_L{;uwoAr8$hydtj(i0w|j{?5t_@mW;3vC z*KG|~JHJ*i;*2x5yxE1iyDrbDiO9BagyDIYX`~Fjz9sL|p5%$*CS`FETkbX^20F`% ztkvH~8B)xuYeqL%VyGXl9ndvqnii(1%Rn&yV5DU2si1?JFPweaV`So?v>}Dkju_lK z7Cf)5xClbCNq=r4vT$ljzjyJXm6B#gUIAZ!rq+Yymx!D+9{fc~`re5+p(LwP;ru9x zg>UExz6fvTPWH-~Lv~TcdE0?D`BPgKN4Y&e1cXy}^ISlT11<)FbdY-AG zA7`Fp!43r+grDI#hSnIsfP7qP-R<=nVB|ZlQZvoP2>Y|Qh*+IeZLgHS@f=)rNwDEZ z{JCEn^ApjP7@+C8dsBMTu{+pT7O98pcu=Uqp_YXup#vR8+n?EY>lpvNWF&E&!@6~O zj+zDa$k{|J&0ofOdV>&--%iUS$=S$VyufNimGPlO9(Yo+C=}I3cm3wt722{;$16Mn z%+jJPf#=2h$MfELJp2~L5eh8QfOA;d);2k4Rq@d^A(5Ozb!2oMwvJlmd-~qv-u)vc zM{SnfG%ikY+)*Nv=sZCOlIC2k73^$fenUzAdu(O2v$MN_w24@O-h;eQ+1fm2J!O^( zNfXm?T75J&9wjWsWA+tWBYJSkh|mSikX8x-N7I9Zm%xzhk3#NS~-xTm(!uc z(P1hDP@S|2H+3u9H#yttUV&hX5P5I2Unh}K^kgob|0}-IElc4uGL@>;RqOaA z<6~Vfib8UeItoCY?${#fcZ*yet+60id3rrvsAb~u$M=sP-}###9>4kFe0kvQfpgB= z17F{t-=5lovS^bJIYSRjo5Vf4Lta4>q~4cIFyKB*7**tnz4YfE_0!Ct1Y+pL`5Ttx z?6UtQ=7U&YzuI%_38#P#|4=c+ZW}sN-nx#@dV*-Zza3V;o4b$q2$U!S*5O&YO8_l# zaH-pbDkDV-%MCq?50`bA#K_!e=!J=k-_Dp7dvk8@M&K8lxIFsNWyjc4#;p4?V=nhN zxz|EHKfPpu**ZVlyXmVz)=}{q0~b%vT)Kng5ZbwbfVyn5zo*l6CFG>!98v9sRtt%7KqNwMqx3^E!=-LfdFsfo} zrw!&sFF{D5@W~oi2de})s;n{BS5B%^W5^K7d;7QcyRz_rF1 zt+IAC5z}bU4sTo!z}vjdJs!l{8{ZBO@p1X{xBKr02kXVU3Cu3HT3lZ#}7c@qK?lBH6=bia6s3>{2^SC z_Vo5#d56Kjs(9w0sU=$*Z`HF*`!kxCh!Df?X-u6>e572)vX9W`4jY~Pa$Q9&?(}h8 z;9k=r`wCd|u2#u8tB`@ZwiRB~i}S8H6huiJ*4oY-?+Kri(O`Cni+g>ITcOLU_%C910vMLOv8-% z;d(*0B4UQ`d2~qu91)D7{sCnP%RTeevGT$>yk7UPkG{-%{WMN*5`!v3t1pScj2tyB z)S$uurke_l{MNHcB*GoMflIC#oTKt=ql2Cy>uS>^4oWsovepsEfW9XQ%#H@V#zXdZu)vD8G$U7Z{(@jYuy zG=aE9D9J0oaBM%~kgk2$v|y0 zS&jLBM@Sgq_@0XCSkI8fYHFb#oi;bfS6wC4i0RI3+$5G#yU;Jec+GM66mlzkz?-BHXdIB~5p3(n%!%~B?6mcW8>!GKgQIgEjjevnwTdzHA>!5Ir89%Ell z-9h#lk6nH;eTjk5h_8DXlQJEd9)UjoPzyFK5F0_s+I=crIfKyK9~P!=pPb*YWGR&k zDDf5CW>X*U_W}>2(IFqImQZ$NLkgzg#RwZyEiNzuwCxzW?{rCkI@5>V#{tp+#tb^t zpS(#P(=Kf?rzw`=S3V&>Fkrb<%KwPUA2o;o~s8L#3}Q)MTVC+--!l$ z0uQnR4vBb)sgm06#Fic0=Oz2yPuRV37^t769)2x0I9$jY4~g?^pXqXXYvdNX^6HHW z)-GQmmoSlW0%YLZE;+eW{?g?RD1A?#)@+p$03QziJiUv`?A#Z)a5jWZe4y}|yV;Lp z_Cw{?AZI*+LDN_w>j9$x1$*hr5>bpoSSYhe>qO=Rh?uvnWfMP-J|WB#ag*R8Z01S! z#zY67e^hqy&;sPkfj?&>Juy)eIzYz(%|fu04nzMaplZ)Ssx0*BZaCg{;|2Ol>@2Y+ z^JpKF`7w{VwIZM&CzeJ!`iM9z6HTC7ssZt=dN5Po!(S>J+cS5YCpv=_r zEXwk)hEAAi&d;$F#;Rv%ad(MyWtAghYiW9E^S%E3SmE+eloxo1%f-8c+blc|-VQ%K zz{6Yk@$3ERz22X<(#7DQv4aQgEvk!*hk@)$Sp3Nx$C}y0{|n#A)N|Bkw&XLu1~}CD ze8w$P$c+FU68+D4=9nMgFfc^Af4IHsR@sJlbde{v9XRdbQo1YOR%LmHvYAB`Gyl2I zipuPzO~g#O%CA87^JeC_96a7Y35XHCKy~}njO5N)%r+tYZ^j+Z=*W|8F8jY#UZ|!| z%`m`-ZrfLuZ3Qr;>(V;;`objSl+q`1$-1U)f$+qtst^IlkNpWNPF>kMAmS8SY>&%+ z9X@MzReQGqMi|1hQSm|&dxvM0rG=m$bH5>0g%D&X4lT5Kur3@Mw01)NtW;|z5!Ex# zZKEb;oMSe%R9O`%o6+0YY!?YN1`*GF=F*Gt7zw|+_Mj+Jx){VaCxm^a363-P{y^G@jEkel>2`prb(IfFacP-EB$1#Q%14xNVhz_$i zWVGODxwZ_EPZ7;qcaistj;vK{a`dvmlj~zs_VCJmjY&=gU2P4iEg^nV}2Hc-FiFLSjAr4A-*`yXgrie0)5c9P}*T zPH$J$3gV=PaB8!PoV6f8B!AeeIpgs;6H*QOkP8>V=X!v|l`4(&cfygMOCI3aV(~_I zI)%?hqGF=-HuNed;s_(qk8@145Yjg8+QDf@ZEdX|=b~1CQ zma+zMj-2H{K^HYGheY`Z7q(zXU6deaSrqD#xDzc>2zEJ_N zWQ0wAp}JD$Wlg4bz^dw3HTC7mSMuV3qJDd>jVMhLiNr%`5{2uk8ujzX{r0E(^ZVmB zzj*uM!N{WI<8Ni}gw+-AZp+R=cPk0`T7cTA{ADJp{b{O~&b*qbI2DU?)Xm z$`4XSKJ85n2N9swD`4M8&cwCS{^M2WoH;hznwP-+v!rs(TuWOP?s4VY328eoklA!U zvbMF={pCrG#9i#YEG=S(`NBSPRALJSFf@xRz(pk>TvbgkWtNm6SmkctJsxvpv&^nS zp}l{hVpUPy$8$uy*HY;x%K*L7*Os#1`WjcwdSTS$6M)v({335WP7489ij4Jfv7~ZQ zr`ttQ4}p&dy4Hkvdfx(l4wE?&ez!S;(=1Aj#S`=lv9AgQmTnT3& zjs2+!e^b|h08?&MKt}S?i@a=e)@KQe!uVU_ZE4y!3v1(SL&sBQ;im5 zN(gqz7>xsFD{OtqJj=mk2*xt&S&H|Wwr(^6U6MK$V93a@&IE6nHx}AR#qym{V$Ic_ zt6?-17JF*1<#3?{zE)#J9mmVVCWji??miA@bJR;DUI~Z;)itVgn6c`MdY@oZ16upBIJtot`gfy>>3^|%3U%w~!D;?{k#24)Hy7JU z&`r1iViK0Lex}#jMmx?B#v?lN+2=5ue_$KOC1{aWZib*!fm~BAOB5&rX-sZi5kHEH zJD4CQ6Z`Ce>v=Y`xhH2(HDPinxs5qQ49?tF6~HqekiX-q2qAYg?I^k&R3AH@VnSSH z+t4T;(ffQgai%{im(m@cgdQgmA@}L%tlGTpTXSDOgJUgu66FVi2-CzNEI!6pMYHY8+f zPV6-*oe}iHU&bxroYI!~I^Qwj_N#bB)Usg8VH0QARZKC{p2%)BjqyR>SYo%dhtv(I zY*R-qo>bPPaqFXe^&n$U>`^XEwHt!*|HrgKYTcksytheg-3?wo|8LS&9R-;5V zD3kCCjjWh(H%%Hz0-0VlGWd6-)O}{oRy4G2d4E(fG7r{qsQ2vk5(X^q)<#%k0!wLw z{g?azdV#c$BCf{}hM_OnxoJ&aYapHN25h__L7@D$Kh$_)10i`1-#_Z(UKlkLGBGl)yDi)l0vuwLcZyiE1knd8&0~e}SHGN<3 z0avUD%wFJj*2K%W`KDD8C_PeYh=OV*1A=9k_^gf`?J^t?H-*)3;C(S9ATs${=_JmN5spPxhISN9@pu5mKYV?D{it96@c7M_^XcHz;p6k;?biFZ=X=%dx67nN zhXsacc%z|yTkzQ0z2nk(^l8=eY9bsDgu1eA`~rB6J-kfk;tnC&8ImC}kVkk0f%#vEaIV3Oe8F-no>3>@nsU^+ zop1)FBlz1=5*zj*mkf0 zNB6M!IkLGa;L)@yw=TyY`<>>MemAcm!b%EM9-A`^uxydf6vrf7!%{JfWTldmsq14)I2Qda&1Fe|o<^z1P=o_trfp+X!cT zW;Q_$E2DQ>_3eRW#Ta5he_r{usM!p^02QheA`My4`fjFKQa`6ODz?eL7$=Z*01hYV zd#qhbk@^8`iNTtsK|^SQt!}$$qoZ`a=+{e^6b0KNg7x@f=v$edkK!S=dHDV_-#zry zySPk>GoGT!2LyuLSJ=}PXBE22qeZ7+F=~0+#Xr} zwISB5wYt4Ap~ErKS39*K+v4K1Og*D!K^WrjM%0NFwEHjV&{{L^g5L^ynX<2EtuH%l zFY_(gY|>ysTfHLQxc{(d2TR@0U=&Mg6UsgT$2`qpvn_3=~g44(_UYiHtdu1EEEHd>n zFpq3G3M^Zus^bOBl}dQ93wXti92+B8=J8ts^Uttf4Z!1lWe;)T6bLFIcT_V&8t0C6 zdP+92z3(fAz6~gFT0xh+d}qe48##%$)!VG%#(6s8X_L`d0SQ1ylDK)ME#oCxL?*rs z6I*5kj?kF*+y*oPcSt>RH?IJ8(?cD%5OfVEB=Yd>~b;86>j?9z*vdTrGQ$C_XtUR*H
iog(Ik3rm&Osx{`^NOCELW<3n2>wQe3f_tx`ST`-TgIFYl1j>9aA zfq^)9W9*I?!Fu%8>CCVDYu5p6#ndy4D8B!g5Q%&1oYVb=US}?tX}~)=br56r!2z+h z5pJ^)VtHWOF@{#bQMX6_j-iy+zQ7fS<8r3#Y=)GWacKXXP z$Wz4Z9vgeb4J16ss_Mf#)s{#Cc*sz+0jYtr*6vLjLGLH`kgFBD@k#sGcNCUwINTz9 zGevnNVOs94u*!zVsR6XItH7Gm;=AGC7`EDJVt#1%ZQqay1>6T#4twW+?XZ-(XqZK- zdzCWWbhIKs7)Yr*Gwl=ku>)#*)dJ8u-l3^bS4Z*oa!|7M?)5{@#0+|Db83P680D|t z?a|+-JWHo*lSlgyE!2`bL_XE)I_fXbT~@%VNXWU5E2E|D4l4ocUd>h-0-&7~b*piQ z&_>F|@*a_UqmZ9_(=h~1y5agX`f30E+ghkH1H)*`VvGqHfr}?DW&|AO**)m$WRk_q z)iz3!;~6Ws$K|$}6>4>Pw^eD=Od(Q?RSoY(*`K`0rWvLUN=&i z;-NyHH&?K4%QPy~q&Cw6RTV~n)Tl@ovet+k)(1#rHbO1Ro07DNI9gon5@V1@rs1J( zS-h~g`7_Jfz~kWF7=_u%I63@~25Hk%d`|-WLz29fy9GrVRsL(CVtK1|7tCMMzm}W6`k>#XMC!TXx ziGeE4_q^cH?)9HSZxm4OkF(CqGsn(eYJ2fY*aAaSZ6=sJ%jhxXDzWzo+*M9AOtGET zRGBk-3Rq7a)xqwh%?4NIfN_+*bId8oC&Ni;+yU`O;t6?ETO7MFS^_UEmWg|?ijKME zCJg4ZV`P%>^%An>&o$|Yf#JHkY_SJhRc?=<-?Xa*UcE1egb6QSM&SCA7vd*!af!}i zY+ck;U(5a+|1nJX=0W?+7@)T8v>=xzNe4%8iPVc5uq2x5PQOWp8EHB{O->>A@zRae zU09S%A!|wrgXH?O`F#D zSP?uEKe)f_@&*!>|l(e~xK`^fE`8n@mV^3O%<9Xc0wW zG0}w0c=V2*`Xe8#dhp@ z#lrl&6;lzpuNP7g<f5^{WBw;K}!sIF@abMgtm3m zl$8U7{?f>P#>`AUGKnH=CxMHT{i#;e!_=} z8@35OpyFkjN?dnarfWqj@X5s@j1|hY7$bj~)XEfcD6l{FUABO?RfulrbGHB+!8VbP zoug;{)?gi#^aKx>UG4S7iQkE^^1yPmfJ4SS+-SxrW7%gb;e7 zj~n)~MusngDORK6fw1b@I>0Y=KvmYJj}JS@=sJT6s|gI=p_~crCaI%igshyA`;h{86YA}EMQVRjldxcgLT>pXqRGOz1FiWjOH^tJT@@iadGJ#i0 zOEH6!yGCkN)Zw7L9f28{ZZzg?Zjl+6U1i258q~sMC|oV&%NS$D6hcl2Nxn4Jx-8|s@JX+na>kmbl?G|Y%RGm!95OXKZ@}V3-q1h>blS*MDlh@qze>-mygXd^YW~f z6YEu)L7&DtFHAJ9dp|vI(lbn#3ED+B7f|wHSIOA=4%cBd|$@hvbr+ELmORWs`WROhtxLc8vg&f0<4j ztt{SE?DI8yosfcyy zu;YH%$cMajj|%zJi{s6V0R>Q1ZPg?Ns(Wa$A7OD$ij?`hpq>#&`JI0GATP{${X&AZ zg07pyR_WEAej%gxVd#C;bS@cp6)%BN@bl;`mX_<6U%sK4H+u=w7g^+*&V=xOtE~|` z$C(NWGi;zd>j@m~-q6l??4uqBsl(De}7JUUcu0O8p zPn&6ft551Bd2jKY-Zii%0#^-&(y4w|2e=M8k7^Ud19a~dpt6OUK13II>iRrf8c!Up zTVZ|uacC=_v3gbWGYXdgwa-!QV?b=i%atr@r+(MCB<)sp^>FqvVY$sy4?8pU7^T=B zi8>0yW8t;BO9CKjOY};G%!7T**>SMxTD~y8q=ZYA9BwB7$B(YtI~A^KDGR8lyPf6w zq-llRjoo!C)jW%bDiEx6&dPJm3tIsRbyRnn-rl1(MrqBKG@^H)6RpA+ zfg;rBx78Iuw4`xZFpWYVwu?E;Pc_z8&UZ7 ztRLU&=dbtU;v76qm{k1DR<6+xWih=8yRZC9AKa>(A1eFJ(pAgNH377OFC@&HB6fnE z%olTiP4Q*HVkxFok$*uNo>fKYskKU4i<-vF+_zXUZo88LiSuYZ<5*~ncI2X#P#jdy zk(wc!$*5jDevp>ibSh+aa-Izp{UZ~^FV;1AW2-^!L4c@L? zf2?!rpVAT5;M1FBVevK2TgOaSfcP8VRyUrU}Pt8rPu z&mbZ0j}AFOJX=*DZXn**_+Kul!U097Ya4xm*tn%sTbjC>dmvXUvy!^>X zmu-7v8p|!JEKEm&Cu97MsBIN-M^D*PT#3A@hx-D_W?i3~ysFp)Xz?&9%Te9;kC)Bg z{gf2sF=U`7%IxT3%96##@R=%BpCh*fUIFR^s}`iUcX+9Kt?5J*(#(du$&5@QjS+l# z^v)c|i;Zj=(&lUn3dZIGWr%aHih+aFSPz5}RaxbtFUvKHrv-A~=&T`OW*DDb1E4tk z$c#Y0K;4R*RVLgOinh@w?DY*!xB;Uh-6p{+BNJ%Rb8zXA7Ax%3vS|Qw=m#SBNwpUH zkSbG6pI?eV^#5`fN_>z&6PU}0*J`?R)sD196bBWS995CtZdcA9s5-~c&OK})&f$W zO;NJ#VlyuMLgTFhPc~U^gRfhBBqK5)xT*poO|i4KswBbtDipfB+x>}jG-;nS--XdB zv_{)6n-l^QPyxWZln&+ULr=1MaV%5;)dUH1R4x=4^#(J|qPu)q8mz1Tv2dG{zaBpn za<&!uDBHek2oN<9Q4sc_5F2vo_B{l~jAZ<>qXYXj1 zz^X}z#HGCCkUie+Xq%Ojxda7o*)TPJe82LH*^83O(l|3hW71X58&Q4_YCKU!LBn2r0!<=4imXitDtPm5c za0dnd1~W5MOmJL&fvFyC2}o1taB67oB_mO|?$0`|!w%D+O=5MUM4s_E00;GU`00&r z4_4vh13!P^B^O-;rtFI5hniPlUl1vcDoX1ZLNgAuZDsNUXh|$ z+l+MVh7H%F*(FNg+E;i=6Yi6VQ%pP@k{bOm0svZXu=e!JyLL|qQ;bW~* zEgqwywUDPp2>vO#ps{zsfVv@UjvFD2e&esUn!aLTxvM0pe#bW5m6{JN=ftp;H!bxn z$srd6*mSq3X^pY{bG%r7vD915@(Y+W)Y4{*BvbX;knJT!l_cVnGk2J^B1*#86FKf3!4Au@l;-)9xFcWOcpj(}@+FE@3aqdhRi-??zh>iE=YdmZTGoL8ZwgHr9w!XA zcdy1mT|9zT2?7A)4&wHaTW376$NuXj-frY4GsdYO+9+OYT1$i$MR_4DD=SmTSOZ&e zs9wk?teXDDIhoFwr>)ERz^GvE!vXw!@Yn{MAag>t7epKWk^GH+Rbh!g5$e%jL8{!MnssHHh@hIF| zxVIjU^Xc*Uc-BqJQkze=(o3C8-0g?y$KDTa*_7Z!5V+k!HjX~fplYu5o^owEKBhfB z0jTakR&7tClKlqLnl6j576zCWzSusi{;Tkg$zb$)woT z(>%8#HlTNwmqYq37Xauo#WgLvMlamD3^jZqljz>aB`dY$8C=^Yyv3g7ukF5Y*)Noj zhNxi5LY)KgkrOd0ZV>9`e8_U6ju3|%;5wop5SObWc~R`G#9SLCroJ+`zc6X2fy8Q& z4x;DO-~914Ws*-|wjeyt@mpDyH3zGs$3GDns7ljM*~Z%~QP94-rl%yCQU)!}HcvHM zX>w3`+g8B>{`Bqs{Qm9l{qpVCUmg$O0H5FZxaZsZ^I2ucLKS$93&wRG2i+HW>uK@y zl5E)qlIa;M96QTkW6K1?4jKWGtb+&Ym!zaVL{xEt5A|E{)~%-|`@A4-Z^Bln=62rV ztEp51WUE=;QkcpJ;@t^C{+b4;MqxQ&S$oPG{FJLD1Sf2Xj>|lVZGf`!&PxqLwK_-!?>LG;e#VTC2R+Xo)fC4zcA)h8AT)4Qr zw&GC@dN&8v>#-(Em?6%6mcO0V{@HzkJRu>IofiN;)XElNE51(@Fg(_*dwZk~iYjJX znOQBvQ|^Aff8?oNjqte;@oBeJ(b++jPR7uf7x=Ny`ZKfCi8u!Np@JPavL9K0|91CL z(t|C;nlZ5I9QFRkegsr59LVQ{6b`I*gdlamVH!3tpVz2(@$0ye6vMEHHc1&LIc8vV z)obS^C>LBORoyYzXOdRah2_q4jn((}sO2&s@pka(@a+(+_mBJ2M}2+geRgEClbVn8 zx4fB`*}u`dMR3O~M}!IJaAUDXfYl%8#5;`D@`6Osd|Y`HybxK?5$Dx+@9OFi+tTduI6_6L%5CR8}=S!!bjxs5oJ^ zA}s)oB^4z7`_--z-t9@%ag&Y^Znzsm8HG%lWA=K0B!{kM zt}Li*Dp()qK{iM_yh)xky)lkdxnjHTuk9?@OK~2v32BZc3ZXNCO;EEy;P+^TPAyb4 zDCZXwET*%VRfre(KKdV*fiyh$Bv3)5;@$LB)zoDW+gyCIjB;wKnuu7os8GCU<3$J7 zZ4#I@sbvRC4vvlTu9&VtyMUa-Y|4`jGzQi^8$-klZ!k(ka=bC{J@Iq-bmeZy0|aX! zLBZ*H$|f-L-002_GlOmcR1DpH6Y%2AoQ!1roO+EgAYh;&efRyb)={^S$6|@53RM4o z4cv^UbI?PI70ZI-=9qLOH~LAPTSGj13`^4cHu9`w$r=qDg-X&f;EprK)bWy(l}+mjUtiT?3r z!lgw+dM2_3#vYFLM~bMT{chtA1iD*GYs+o7oV(S`a$S#ABVfdD+uDXaHGFL$Z-Yhz zC<9?13mh922Bx&LW@l+%ode*g%#2pUs94DMEdt=<@Q2TDe5lj%?d|dD)7$$;@7;t0 zbiVjFbTrUyR)~?fyu(ppY-@}%9|Sio)!l4(gc$>zA{$6)Ciacwf+3>`dNp6+*x7i= zAf%&?eP#sg+70LaVtW#vfgpa~voxaVGRbOIFfn?!_n+>gt4hJ9f9uDo=>v{BSZnx# zXEIGYO_L-b2Q&K@_IuPemlkDTT7XZbbaWvK3G`I6&#^)_)v%x^91dsN?$CnmjGgI~ z%o8VWh|EC)DvRrd1joN2q7 zt|%OK{loF^j2%_!WpTZtiW`=^GMrn)^ zjs$(Bt0Ytu*e==7Vy}uk2V`u_w#h+A2BKHR$3tEy>fUx_Q3|OTa$<`fVbYVZQb}VW zPwy$r;l9QOZ{%f9(rY6vNz*-%u#?H<(Z+@H;F%G4QPyGDd)9`RBY@^HkG>~>&oAOmAaLLqL&xnyA};KJnq zbt*6`TrQ{4Wruhie17oLg8<&2_0z}w`MsXE4v%+oYpgA=@UC8!;MGq5P3TryTnYN2 zQVu*SE5ryqy+RkN|lT*U$W$&;Xt44$Rm(P_g@Ri7yl&YWauUPm&}^Z z2v#deekz|k*J8b=GYX^EJZ>RU#Jot=2u+r#7BgTRYD~;`TH2Jp!|Z0tkw!*t<@5Vz zrU;F7Roq!tqj?~N;LYD=GQwYzDD<$lCi5o&H zOtCD`yF4|`M-zl(RdEs+VEw__!FpMEc?FNIWqfDW%f|ek)7Hws45CoSJSTyIZwsXD z^Ew3|J5Ca>G3K7WLb|D03ovXfVQ}#rq^ytlV~rQa>7rS14Se8iR=%YpRcv1#HO9h} zN2P{PMY%U=&-)OnFE`B5H2YdxqKo~X5iZfo^cp5CKjw`Buo$WSYPfv z=Ik~Er?er|zFsX%@UFyKIYWws^@vms;2n6HeU?x&o0=&Kknqaoit(X|cxhKlG3;=Z zTW*GG^_|gmWp2oOd7>goc;UtosgmHESu^0C?**WxRAZYNFOF7S-86q`SKWfeXqFqWA8eQT z%is^p(j7hedva@+EvnMNG65va1y`BFt$GkBZytATx)tL!b6PR868hD1;HbDf(#x$y zoKxMZV^FGGH7MVg-xO6UM;lu9rdRgk0(Bs!MTCU`F%6ABYG@^IG!0pv=waM9wW%(8 z^~ASGLq^7gPD&^mgHsWfSJ&@C3GWl;ijp@>^qyij@l{%NhJ@Z)(4Wgx?zKmk%3+L2 zw7G_+2nDa+EOuIK9k!fs>c{u{{_+0nA0EH{#p4b20M6Uvocj2)`732F%uN0)B_A z!a2O%Lv~IT?tQiiXTKHoTamc9r8h~5gMN24C<{E!>?Wl+uaknb78uBS3FH8@kY6jj z>6jpDV3Vdvn!}{DjCs?8t9`W;;F|0JdGB9daJ8^#WQ3#4ZR5o(eyTC2+t^C)BX|6N zMPTvB-icBk7fNmF1qC%_h`PT?aU=Mxl%AC8RnQN|q1l8{NI2-{+jvgFN;b0T02xBf zqHrJ*j? zMF%w>ty}qAoJXREdCmgP39Rxo2eJj!#bmj*z!<`Ib>wFuuUO80r!2m740bd%?>r!3U^}R$;ho$x?1MTFz8!peBMTqT`ub5n zz1O?8trU|oeY!Tma6ClL1L@eG!99TN(bq&TjDNeo zxp13hXN>LS0uk9>ZZ{lEyRimVOMFDJfX+a)^M&kFMmOv%d}c9&Ad{u1S!T5fmBkM| z(Px|2UJ=%K6R*v0F+oZJx)$RcE+go1N@~8fI8{iSMKI`;xl|sYZ}ym4SDC)a-^zZg z=w4OmoeA4$kk|!oSIc^91_59%ohUZK;ANke*^}dUKYu6~HdyJ;7dAnS^tB>6@ z1GeXy*>}LQOA$K9V3cJoTLTp^v_(n{xzCtqZyUX0S-4rW9X-|yOic6}Gd4h66SfS` zuAS&P|Bl&@RT||=s`7pywlKwK2O#TfRG_PDT?<|H)3rmcZA|?87CT%R8Nt|G95IF)?F@-V3hBxXR4OfkKes7B8XGgM|x z*TSysXlJz!M9k<`$`^V@b0v=MmKmhzp?hNLm4WXLOoKENGwsp?oh$la|1hRI?U_=? zCJ%)-eMhB^B#d4kcF4~N#^`35pw(DM37)k=EeOl*-N_*dONOlgFE`o9Xj|5J?u#oUU`GA3=+KIJN~6 zpFe;4^f+H{74XBSx6hx>k3U^?@<>lc&x|((nP@HPQz?wY`#ND(3?WrPGVNV)v}(s4WDSo@P-jdemFN-6Bv8)uV|N`9gl|f*V2kr zJeF08eXzg^RjT7=uev;cD_MkR?W}}N*xjl_f9_Bv9s>J`QbXeKWT7Wx9u#Z1KL8IuZvF13=g-gk zn;+hO`9`un9lm{jeEX=6=di$`vNB~B-sZhdNmSfPqU&e}~~B1ESv!}nR7v4QON zKGdz=(oQXJhKq-)k0{*s*?Uzd0?N6xA^{P9L{&ZBI{dI$m9rr7z67f-9uN15{Dsxp zgct%>E0cCq0m-^mbzKLvT^-cL;Su87nk#SWC3u-fggULygKt8cJ13>7C^Oy;CHpS7)+&VEX?Ew0EN5usy2?7&!mV(AlqUjmE6u6dHvdWWOg{C)w zkzCZ`Eue5zACH|U$agWT(YrFN4lfgEJyNrnHjg?Fz7dZ@63>tN`n+F1?)!&aR;beB zyLaH;HbNkWc13k1U=#7Aa}No!0gf57%o=N$WoO(Jx~k`YV&tN9?VcxG20>Zz2G<#6 z8cx_qw|%Zn@m{S1etr~%Jj2JwjN8aVb8T6Q7LQ^Ytyi0ME~7KjG_yvDefR9ufbQPxxI?*HWTCax8#3YTW;>@v`J)zkBD%zE^dVDVgatKti z&eUE@NvWmTw|1&{DT1ud-@2}qzrEPd6{0kKq!rLZ7 z<2UH)_AVmLEleqP<$csfLRnD^cM1_QZ+QOJc?6Yv&V<6fMvW^XA@`pl_g|^nhfhq+ z%I+GlvJm`CuIE`?FS_$b_NW(7u(9E7e|bu@uxp*eEV+|#KU!P3FCvg`7d75IePk9XvzO0CJqbiGrTu>T0&NvkRt~%S$toVySkWh; zCX3MWE>lccY!xujaOLt7u$?4vRu88351%iFgdsUtyqCdKaBW`Z^FuAqa=o^H=Sb*k z7|qFEu6M1VO~`FLYQL#e)JW*%VR*Kss%>9ml~uPM=$27yzy7EfN<{iVW}P`%?6BQ} z&fJtVbWW?6V`_U=aFx2LqnO8H{SClW+8*Uqni=pQpWCF`RNQovB6V5EHjL<1jX9xj zG&M;s+0G}E?({#4O+CgJ6*HTHX@||_wr$75=1ZZch;s)gjr^tqQzV?_^c8H=?OnU0mFwPXsR4 zCkAv0&#~s>@Q zhtN%ixgM~VcVzR zP-?EypPD-vEgJ#)eFBsCwdIiFrJP{m`>WxE2TBMU=m8!FZ-t{j2 zag=;o+f_L8P!Du79w)5VRZe4#Oh}#MI$YzW;WzZ$1nhpKySb6a!-b~X`7wI zpQmi6DKPvh4`}&h&kFAl5jG*?_O(dayvGx?cSK-!o(``uj0hu9G2;ny0tXiqs@Ji= z7b*9TmWgkyQ0(-!w^;6*YI|Z4xp4ZG+ryL%4v2(ejy31*P|6`^4Q6_auZ=!nUdR{ z^!zF~7j0ae@P?Vi{28}$GHz8>Dv29bQq#)RYNTZ}H?Ftdszws?xkT7cEK|L%b&ci% z%jN62)f3#GmZ||Hi7MSybm9cKr$Mf^o{hKW|$zvTbIaiCW8!23;^RxGaZI@DjqFe4iCXu4V z;+a73!J^OC-Z&)R;!ZIz_*CWHi^h@&c5-FoHA7kmo0zNnq(Gx52o@h{DJRj}F`PB_ zR+zVAZ_04py0VNZxSNnt%4fZYQ{OBx&=OTO4F+xMiO_3x+;?YDp8s$()q4pAdIPNF z;ehw2%k8JUFd#7iMgaKycD{Um`~6Svk8^(Yi%&fG`Qv#WZ&EM|73L&3+7Oku$C{LT z;xDBmW2As9%5uO?q*+&32lZHH8pl5~0<{iv*4Pg}+Hks(G zhwZc{lXI+v6M!+KI9P=wEiE;+J`OMNhaW$_e&cU{@%GD4Jol1(yglAey?=Da2wliR zzl=$eKBBZa$n%2a!#f`>vAew#xM~Uy)(#}RASDiSFf+)D)SH1v`QOH^A-}CO)i3jfr=gm!Njq1bJ&L13$H;iZF-ofalK#}TLDTOUf?=rp?MQv=@0eu*_-np?^o7ZPToQB)cAg)Uc`J?W$_-HSj^1zBGZGtg% z8I2`5fwIK8BZU&vEfnE&f614<<8VbmI$zhj0+d)8)drIQ)*ku8Z%k!EU( z&b#E7@bB6I9MhrTm5cnxrK-y3gNk+yVY7*r#_3X0;L#W}PuZSQ`x&;DEPCjp0hthl zC5cx_a=C;CX|*{UOx`0c=MYcR@=Z3(P5itT+!T-36PdRVxhvWg{qT?)+6xdesdA-gjR`T){f9S`(W}H#4hfg(zWOP$~3bMT@ zy2Vm9kcy!U8(<QKBa>g@OtU{KAtJV3HaBb5Pvf#9;TvR= zNl8lzE=U}+YyPtLc$7Oj)V^(daD|O6 zS&q{CVHfd6{c5{@!L|OE@YR>TWu_|e)JU3%9A1X1z0L{naqi8g48&}sV>bwNtUUTq zo6jxWdN~h;#$AFp3t1#)1Bh&17Ux6NJR|N`_daiZKBuVUpdZ;U@As1&8spJL@^Nxr zt;6rWCOLUsr0c)h-fjwib%Dc2mEIZijW{5_0}NzY_nzXHPv?1`pC9KpzxeV|&!6A# zkMO5i`SjK#J$Xqf@!HElBZ3kX~mmQ7_&HAWL|xI9w3*~C7h94T(bNwTLSTd@Oa<+Flw&Ka&C*Oe@H4{YhG9s zRhO3qC!$nZ+h~FGT8Z*uSnEZiW*Ki2#!59)0}b8c;&juwQ8S(EQnZP|sk*JWrD7RiY$8@&28KADhFm1- zL6GW_>md8>)=yvW&+qko)_I_pr9hvO?7BiiQ^9E7o5^BD2kfXnE%!9XP2kt>cPpzI z`Mrx3I`^qer=v_|e~hwncrp+Pp}~2XE^QjLdnK!#F=!HPmcrbz4*xrZ$01i<3Yg++ zyHfM3q1Nk%>H1W#l7!4Eu}B98@bK7@ysd=&LRU|ld=1g- zHx|%mAL&+bhYyEoD*X$k0E1>a<|p{(MWL!qN1jmyr1F^li0)5J$4;Sfq>>YVR70HxHB zOfYfH_ukHHc`uZ(t8?3bsOo(3lC$Xa;nAT~Lnd0AP$;a99~jnxPTcd=a^0W-qAp-} zgL=+0UL3o;(Qz1y4MERxsK8779?uGHhfFM|u%C^-H)t$M_v+?0)-bp4Yfr(s@;!}y zwv+HK7~XBk;VM!U5_JBuFU$q*Y529#*?5PLl?`QO@EN2~T^z5IpSFP)SgS$%<>}n! zZ8NmB#F=!_Ur0E^oSH|8q9U>05itHM=Cy)y(eSNoH+ixsj0A5P+9uV0F}CBO1tmIa zaQn3(#$y$?Y!d^5y~`wGnde0$8<1e~6}B9{;K^bfAF+@LT-*9!WScYrm}$t8IRPd2 zrL%7bh=f!WwoM1CTnLCWN^$_|t*MIky>>*=zUc_3%C6I{=Ja0|k9-b$JsskF{R*10 zFDcI;sPFZAX4E=+%SHF!f5(L!FTH`6o12WkZ;$ii*Z1f9$6x)uUq0*k^G7`%4-nuv z-F1X^r*mS#4y;-DiisRX=vbB3-cgA;iO*6WU#!v|IHcO?t34=NJfe@L{ny#w6gV&zC4GO}j4B zzEh|_zu&JP_t#$@zxr|>s6J}>{o}qruRzN-)A3S#{yf@q>)ysU^-UZ+pVy&~kMrn| zUfTGqTj+R)kMRH(_twQFiF2UW7)q~&3PogcPXLd{sjJ)SvX_1DT1UOd8(6*lUDd_u z20svmTlIWuKdC-~yN{bFhr`e#M1CkYXsrpL50e%BIv%k10FY82Qv_TEaOE1+SZ_Na zqDSaT9K8|E9x4jugDJx`CjL#D?L$gH2dsM)G6PLLHT4y`6T~j*Qqm#8Yi&}KZ$__! zPHFtZG!rchOi_pVL_S@1KznbpSpv9twyY1AD|+tf&H$1OeIf=31ZB$EF!?kn)!EJFGbJsAYC1=nLS<%K&(Fa zi_5oSO(qhf1PO1QcAanhDm@DG^tW?Yso07pon_@RtX1E0gJ8wcUCLQ=dz+ zpU7bXw3R1*c{&q}C;9O}Wx6KDOE&wbAqF6xHO>1o-kQasAuRn%Qw!~+Ix~3j0+n(! z;!scxr4=*{h+{s|$3SVrQ^zOK+EFN7T>`b>G;5Q$ zwMX*#dvpdL1QKk*unR&k>Qjtm>XxNmXFNC(ZK?&!Q0BbH0>nIwIFZ!MV;(&L8I~L z-;CF8-49;|JX6Son)!KOSUC4H3GpC|3=4rbRN9TOBpmanH{;?Cg{{aJT%3SAqaAA- z9EgJF$w6Qj0as9-@QtXaMhQB(I<#z5Y6lQ!&PkgU(=`Zl4UD;7GF%0d`IFqx!}c8< z&T6d7u(GW=+jR^mj5y3gEY*;W9qnauZ#GJvBRRHs=P(}Mv{xQEmsrr5G_oR%$}i%{ zg_-EeZx5-hEJ>nV^)K71YqJt7mj-ta;^3a^3;6u@=&izk{lnY)Js0XI(VUzLMEwoi zRV>_ReaPx-oUvzf4;~f-yS{?^G(6r^lo2{rkWA{P%zT_UAwU{Fq&mQPzD~0%Kvr`Z47**fgndn9xu_UJ{<`lRJnt z%!_a3nwD?Nnir-NIlNOfF`KDLD{UFXcV;s@qX6*hK3|=L@*8u54 zOPSmRFyjEZ=fq0lby04j11d`)Soo6okO+mAXW|BoN8|HlImea4q$PV=!{Y*?bTtCY z);Tmvfw+*HdGWKaxaitVR1+1e7mR-7bg4Lib+v@uvUEl~Ez2|NP`t10Ha+@#`|WhB zo&t^~G#iPC5b9wK$Sfb-Uq+U}q z(sazO0N?~hoo$1;`GsPaNo;{G#E zg|ZM%`S1(7$#?TCKR3@05rI*n7Ew+BLikCzg!luH{*gZ1|jxy(-(ozUWj1NaaIX^!Y zJWU=|!!lzoLmn+jb4s}5HNS~bt+XTrZ&jHo05lZ(fkEc6{Mw(}GMp#prG{AV1i?b* zBM7QQ{!t&y8gaZSenqyE)oU>YG3329c%iH50esY{T16Z6{ z(fOrfG-iX;4Ai`mPLiFzts33%7MscV=BChDeG;>_r^VhJ9HpH^x%j(c7XyE)rC{Gtj{`eS@~EsUj6&9L z@30rjkBy&p8_GPQ`5i#wfVQat!$}hiA!R`ggOrJKY{}jkPg-$uYsPtIZoZOSGQ-(x z3BZ!}j4zR>lE!2VbB&Rtkx{C-TLMD_rj5Iea$~&oWs_)!aiQTaT+`OOW`}4nRkidQ zRxPKV+@W54&tAmAk@YN8PG$96#IDHfcr(&j3m<;8o^Zs#895q@7iIDcV0LVQuZ7$d zUDfFW$1%s{rAz?5nNjb<`{3y<)edkApMQ9J{PcLT?#0JN0k?3wLE_paa8Z1k(di7t zELcFaYQ1?t^a}6|b4aWypq@|dxAjo~O1(^JL9DnI9|upq{o6l%{U84AkAM90PhTF7 z|KQ*I^*{Q}+n00r`SXK6pQ_*f>hrIE`S|t@eBxI;pM1-JfP~W0i4Zd=hl#kN z@I#JDtU|hfxV%<=0Q*IZZ8KZNU=`L(+-TUWQAU|BgRaw<7ULm$HLzH}o~w zo^!D3Gii9H_=e3hL1{?K;x6(7LqyvqwSlska^TDdoya;xz!bV&!;OA{x{EK#{0e0C zF$0`Nb!Uok=QswYyF043<*z86JcstiMqFq{g^~X-D)~^~%UOZ;n?_KV)~zf)6{)_z zinwi5Y`peAv&cFDEog9 zj|bl#>^E5N#m~?B@$3EiO{<9~Lb5w`_*#~%2gL+1hn;JsCJ z+vCgJ+Ip|dScPCFp1?j~P(V-M%%RoRV3--zKAUv7=@T%ZlKS$}~2XWGS`K zdiorH(+UyfA5Q1&TL7I)b!?_yK8%{^&~SRJut6RSU_Nv_43#>TPfq=ayn<*H|LnQ0~i$E+Fuc&3; z3$Mers{itaP@5H3`M?RRC)qYw<^+~_6MzAdHHVn45Go~0o9TDe3hW5Byh~JRomm@S%7uPn$5p<6!4W)5Sb4OFZ7f>o?wVf zGHVHoq+0s0=ZyL9Dv&Mxa&x8FZA!OO3!}dP65cqyWC+E|D<~a{w^h$SV#%|x9qm+R zx1=|Jwzt*BBF`oN-CwjuAOrKwM_&j&ESq(dTZPQ1X}Mft(@b_;bNCoyRF)#Su1{$t zy-b)h41?oXUvSm?qA3epha0-w3m$ubc5XhJ2_lrypr;5hgy|JhIta} z2M3h`*xSBziyIY1*>7)=Ym2wyMP1<8+2s5E>FdY+_VID+-uif!4_NnuYl(!%_=-|) zS;4dzODf2Y8DQ^xGzL|7x+@(?M_K?1_ww+bxBuo}{r>;@&;I)7kNf4z8=v=||MlUg-sY^PcVAvH9064DgKq^rEh<0nkU5i4?uz+!ZzgKoCM zGBea{X_%ZkURPQHnn^mit_`LVtrLMO^TL>-l+^zN=^eT}%zoa8uyRp1a233vzQNdI z?hg|vK%fq?%@7vY;L)v2cQ#+c_I4Ld{NF_!q?`1fqO|!|%NrMUit|cr$42@mL%^XA zJT|a#Jw0!F(pAL~olTvVqRL4_WG6Y`sKyYn1hbO5D!V6W8b#nZ!M`L}u46lL~l zD~KhQOt;&{=1^pKf$Mfil%>nFJdp;N-ZWA>sntp?))-!+*To^8g}?jh`SqiI`-`_P zZ$#DSxAXSk`^WuwE+2Hj($ww_Y63X?1p!E{9ETWOz{VzlL8UPz~uGP@ zXJagsn=j6iZM`5^9!eu{+)!aZY1?GqB5I4eoJHV1tNXO~E-inY-)yJikUkzKiGJqTImzrLnDePy=3j%HWG zs78zvXhOoKtph?x8rcyY45|$S2p@~hGOYw~ScHR7%!cK|Fal-Z7knJC0P;YPcr%bCVy~mioJ1(*``1ZE1d%XY0V2Al9lW*|`zJCiI%)OLcO5 z%XFr`rZ;o6z&yQ~FP#97FN{4oj`S(y1Qse9PRFdPw8r3R!@*s*;f%AeWRg^-q8EIp zmzT#ZcaBtF;#tgUQ9K`5Hx?=nXg`;cIg6H;X;=nQKi}YQid5EjJj6?}J6(~im`h)W zALz5nV_|jy@g8Q5mg&4s;sS&TFGtmwagu{<3W69;f zS%c&wfR?k&`s&>CjS6K_LCdDcJXo;8kFVJ&Nk4zEu}#T1+!P|lsZz-vMz<*Pim}GNs zk{F@bn#vhZf`|OdR~Z5_0H23r;RYYAlEKc3X%4)`U22>vkRDTa=wnpp2`@M{g^>{N zQYdr~T;5MgdQw(vZzdZ_*EmdyDJz%gaXan=44uHWKbWx4l`8WFn^r=Blkfs2+KziW zSp*EQePL!>o~FIYqD$UrX`#X2&)$*ERm5C}F@VwFSfagY6av9%kaPL^ju*RfH?d%O zWdgc%X`e#Pm|QNW4RlIgR?~_&_Qba}Y(ZrHbbTX@f@|%>4xp5e+E6u~ zIR^<=|6f}|_d7JcqfqRf%9|q|c2h<65i8krRlPq|j7nD6(|^9k^zmQ)%Rm07|M(C8<^Sxr|M1tJzM=m1$LHJI zk=xwM77oxyqIGh5RV9oC|-ZxfLEX88G__Y&f`L0aZ$Z*v%;R|mC#9`OFU;*pm^wUOO;B71u`e&E}*de$RKOE(7i+_$QT zds`#&hUzmhf7G)1%ny@f4-_3x{fJ=kHp{peOv ztr_jxh6;}arYj*uYfLb@neNBXjTwgRh!G)D2`orGLi_V>rtNHH-LU^T&nVm0q&dU3 z7dx5WfoZ9l!c%LoJBWSo#dv9%&d`~{AjZ~Nhn@%VIQ;ZbEO_4f@%{e%^?rRX0O#}> z&mLUG4qsyDAd8IJ${679ET zMP&+Og&b?q)}^ryRHV6cZgUc1l8lJvC5?$_c7`eBT4^xDP>!2%1|%6AgWbZrPRx@Ila*V7i&;6F$5urg(n{X6L2Jyz)Mwlh19ASEYdc=M zS%xOX@Z~{~-j(ok_x;TkYh2k$;d>-Jldz-Lgocq;psEoi;Sw+Ap}TM%AOL#xn|;rb zFP+INeMn^1J@xF|0G3ROj}cVC!Zdgt%cyihSPaWUR4rJUAwzQdTCv|Q0+T9nle^p* zo6D>!tbB=9xFg?5=9s38+*b3E)o3m*ISD9S z$e;S1)HI;1---`JqzZN^`!c?q{WL)R?t1r$p_GIt1 zr`Y}dY$NvsES+Gp(#{u_;#L`tR(|rAV1xmcmStkAGE)t=--_@FJXl6FPn`wGnCdbW zS?pWpKg4Z75KJS#Xc9=j;_8J;f5Fy2At$sRI{n>)XozkQB>8p@*-bDO>@WrgLe#zY zRppK8zLXHSD=1+;-kYo`4K=Ccs@cvAC=V>s$2v^8c||rO zs}=LS1>jlrZ~yL3fBf@LZ=b%rzkfTxJD>P?{^P&*i+}W2zx?!K`46eo$p6&^<-> zb@#oln{`W&8u*HwUXGfgprX6pRGtlv$74BWu}E(V>*S8@MUx$R`LE|*A_8;7gT|*7 z%mdcE;0_QzPQ%0LS0uYSGGLjdS{hm_yvhw^nhJ89oWq=Do9C8IrPZ`!zg6kJwzzA> zUE+T3%je_+57Z<+A<*)jPpe6VyIdL|&5_-|O8c zy}l3^>QhK`uut#Tb+6t^z2)_I+?)4y?I1pPz#n?YQRRttgg)`0Ruu_Ax5pO}Dm^hr zJA0gH>6nb)23yG#8DA%45WFLiX74h=zYorqX9v08_$%GdgjNA znG(T-Cy2Log=kPQ_n+lTdjm-Nge=4pY~T*Wdp9z9VgH&g{*M*d?qR|bxr7&5bhD%% zk?!?p$<2_w2PQO<|60D>_osyb(Z)_`eE&YWz>V1DBefgRs$z0RYm69a;B5T9Mza*D zxr)~efVYpvkc|j>O5;u?I(P~foC+qHL&gCyU`PTbf8h~mM`W{K^#!J%&T0tS*XCVA z6wGZ>Tol4UrNE+tAb>i(4M7072I=Al3=@p06oI$HH}dTvi~o4mPapTkulN0VfviX3 zI~9x6z>IA?6BRtP3|-yc%kj7cc^C>b#^Zlj zHx5r$n%JDld{(~EKiu})Ld*G z+vN1kGjgZj|3HKtB*Y-$IH#j|TyE!V29q7768_|=L&ZlFa0PHR$hp9rf5wP~9?Omg zjJso?9B2$0$Zgwz1YU6_j-~02#7r@>@sC^|j(NyuZ0ch(szfwKJp8weDkZ6|`)yd$1>5nr~iJp9~ z)&$@36siL~Fr(F+7LqNPt0-;2B9!1e-XFWwr{;PF`7QX0Ayvh)^tQtIimZP>Ya}X@ zaX8O4p? zs=26q8SKXTCu=D>4r6VvfL;SBmef)W9B?Z2(H_JbT}DL}RtTGm+7-3z$jGR{a49TX zp@QDUDK|l{>mCq%9G=H{dz?d@Gxl0l&#KCf&z%M~(%gF5ff!$O;WR;b>L)7sX+v{* zDMF#uChy^T{kcT;Nb`I6?C`M&ls7-^0S?#XHY8c=)b=U#bnhOrWDT25 zU{oKqNY9vVi&@E4ks4I%B{JR~Gp2YHIo!*S@GrxN)BXt-4voWR+-AoBXFv0VNKwsJ zdnbO;5p4kM9g|9ej?gVz)mS=GUJ_1U0dHw(*~;S7nrimO&?ecl5sFS}jGp!ri_W2{ zOIxv37@qXJrK4M5-R?9AfF(vYB2 ziix2yv3NKr|Ce_A(WLP(wfw> zzJ*Kh9Hw=`lN|3$d^#fvQH1n+whbME=QJv!m&MwC)laC%lp2T^Us{J6^~-#Kg0|_b zNiW>WHQvXz0&T)aR2MOU2iYx+9aTDBqzqSN75WgMGN5HkLHlt?hvF|ux*5$zaw=w& zFj@JnEo)dE9F|3N#8=w9-N~4naGVPe7 z@O)q9!jjdPj^)O@5a7w?ey~`LvYoWsI>Qc)u2Rravun4hLPuJ-G37@MS} z<2t_S4ij)A!bCF?yTanYFdBwX6{COnw))d6oo zoAEap0dRf5x~8w$prOgxVuvbq_gsEYO{|m^p~5GKF53?Cu~qNsItztdP)YzN^; z)8f~6au@h+h;Gh`&9=rD(CV)@vN;2j8j`3X%*No>o|*!(GW1~AIOw*`aX>TtP;PH% zth>g?vvwxyiME)+fJGqvFp8zuNIahx&~WgZp*74Qhse;W8ipsguG|7n0yp~xkS7b= zOC#t&rF1Cv>1PQG6!l6ms%4dl2arRZcBDY^b6Zj>paBVuUEn;(Tj4SdUni2c!q@40 zCO@P7kh#?aWEHOzGPwz6z*e7ckwdlPFO5QF!<8VFs5`r*>!cMO=@+Do$(5Z|3ywS3 zs1VCCY#ESt5-}EJ%xpG81-~!~k@b#uN#pr~U~=_U8Z(A(lO1F`TbJz?y|^-d8Y~;P z$e4AFS3gp`nMcjn{B}_dM}8sOt*Zvyt#?Sh5Kqa3LcUSJ!IHHK)+O^gd2X_t*yuPdB`;PtLH zxs{1lECKs2)@*Q5qbmPu2b8QzPhc{T#>=+Bh|I4Tk`HCRfnlT_cxuGNa*bEpOCWtA zCl>bGmB@vCO@+e)#`V)x(K@9Gwj(Ex6U2ss8c7;EaSqR+a-ynx>-o%SepM!Q{fzse zqH>v1NEv}7J3&SBF_6;n4$tR(J}=X5)0bTd!UWmV=U^cc1SQ0gkjB(!efu{(Q4eNs zS`A8M;^6_=<6g0T7YXc5YNh1bTDZ2GBwY^J*;7nlIyn`BHoI#|)Ywf{ zW#?eWU_Ev^P0r>MUd?vOsuYm=mF&fH?>~KPfkT+Y|ANIwCKz^8UGb{L%X^Mh-h(iO zh5qrJF2j`{63mSkJa7H}=Z|l7e*NX~33bR%4}Jh2PdVzG9jO>hJ|3a$75TA+N5Cge zSTBWooO4wdtNVPajpL$N2dHPC*U)t-bJrLiJ4T|D{F0~S>=8v7f4&`5qYl8<$a)01 z{kf((B(?gWLzpyM-BQa90FtY?VxOyL?N>Nis9WwhEqjeBO84I5*WMFb;)YhOV!jq* zx;5X8R5o>h)X~sEH}<2wluZ)2*T)&Z^goC;-STQs3rFs#@g?F=P4lujWvRvs3n%>v~6%SN81u*@t4o0lod3E_4ic9Ph5;gLTsyIfSQ4 zJ&j+qCCK4I89dF61|oL=a;}qZZ5m}6U@X+ex?+u=2eO4zQx{6sGpR$r?H~50;|TmX z_AZ$-l=Wz#0z_ z>A}I|#bDyq*NmwO7-u~ZcbUX)Fx#N8r&d*96kxZV`wO6f-JxOqI_jGPzyP#3*WwS8 ztBawm=Z?Z;4>v=};z55=D-HhletH^~o ztsHoIG+NpP%EjcAhcL6)?@UBG64iL$@>8O&%XzxD1Bt0)VWnv;3;i?kRlr}4AsuqB zNm@B4v&tqh7^_CPH)nGMn`nlzFQAu#42t94U|}{O6E^{sKl_>hspn#14#%>sM+w}_ zB;R?_IU4EQpgB2W2EG%ZszHei7P~ZoamHKN= zhPVwnq-CM&%nD&@cGXvpT)sIH`_3kAl0}(^guv7{!*gU@1P>^@ zQIOF>lqo9jiBk(gynQKMF|JV%ZZ!ezG+2!h)2g7^e|%hni03aUoP%?LLfzYk6fX5p zR~ylYjjA%je(z>hmvt`1I-Eryqa%{6@Te{_*|Kx1MjndGP)H z{@4HFclGTz|KVSK`Vap8mmmK0?Qehn_Z3yD3Z2 zy$8Ch_dhZ3L*W|ot*4;Nk!G`J9lj6=UyP&%c4 zs9FBEfYBbPyTAwAzaqQd-y2?#ITUL8vS&Oi`!ZxT_N$A;g~%$kcgg(Z&S0M`F#ssC z6^bzAdmdy|jt+9|6*M?-xFOdK$)0`v^sPQVp1=9w@#Rq{yd56m{aKZh3Ot{(-@?e$ z_fK0TL7drX4&=Sh=kuP^HQTz1FW~7TKH7mV3g;Y`X|BTOVZ$1R=z`GEAt3G(B+of% z1B%&C0CNxprmN6_XzbQhOYVKnaR_e{o_BRy4n3m;0vSfBHZ5fEW)-9tF;PySIACCxUlcH_c1+hF%1-Xs~(RW++|3lf=*20xNjMXq62c}IC3-|M6TMBYcX1k zOfwcslFNMjEPtoi`}$2;L^jNX6U`B&tHE|16(+4Sv-Nh`8D8_p-u0p+vM9Y4FnVK9 z7V18OOG0M(m$*@z2da2|{NLuI%M*uinbt={*6f%l%>*K(s;=bPl0C;cjTdH@9cacR zG;)cp=Nak31&7DuBq;5)yoa=p;?>yXm4`zvvk_rEPMf)kjDdQYP4ZIUP$#ZF9z4Va ze)_1Nzum7N*-1EZi!FJ26LK_{Vao1+j)lR?;0x8AiL4M2K7FU_JV!>vBV;fsR!$yb z7k0@)@u#Beu>`+8ZGY*jyYWY~sFV0iTfuEjO|~SvINRJO(%an_S411I$2dwVW7XsU z+BG=vkZ38BQ~D7OMdyV6NHR^jcmYB(XF zT!2HL=@YL`ThQd;x@%Ny-7NlS_mnaC*;bV-E}2q3+Ifz|rZtAL(-W8$hqN-u-C_u| z)4j+|3j~}H)4>vRYpEwMWM9(WZ+6ney4>%;8cj8$eZ`jEsBay zEu+HAW4{+_GG50|>WM*149YPzYDs%jba)Oc(}sllUCSc`_=e?7Sw`T%m&BolM~nn4 zvBW*6`htR03a95brfXEsz#SmEsFjGF7}A#R%BKtibIX^zVR$b+U=?h$Els|;D742= zWoTzXX@L#R8K1XNW)nA8yaD%|#tKkLcQY3&ZNs+fzhD~kmK_d+e0K1hvWKSm( z92z!&Mo zi`S@Alt>tDo=wzu2V0L>TM?Kw?5(URQjb?!K(&|&*0nNb-WWbqBmIo48Q zEi)*OGnB_B%mj@Ppu!RZ4I@KP3k3g<|Ln(rSE5)A%&$N>3s6&4S^k}?f*{s~k4=Ck zZJUKu{NMjS|E9iu{BQpk|ETKuyPxjkJisg? z2*(p1Voo%mVvM$%9@=Ex!O;_uU`DcLiy)W{VO!zvg+KlH?Qeho=Rf`Uwd#ES{PsAC zD38N0Uryoi-~Nlg`G5b9e{&9h_4)0~FFt?$sL!9ie0e+n;8$<|^gsDW|I7dAH|KHx z^&j5<{I$+`0M6V0GHioJALsP|R9($GYU2`ww@IV1BBAaKh{)_zFKBD4=T-55ef-T@ z06|2Zhh;RI3EB~&j$p!u>5!zVA%ejGV8w4!DF3p$h_I%-Y6{jZO-pT-qtnLLs}>Ke zxa{#Ry6HCv9ZS+9@|v^_GKcdQ^eVE6lYFTr#``lfpY@hRQWY6PUkB3;Z%{lg>LL0X z>pbgencj+HeZA`-S`3`XGb%v2XARm_e3DliC#w2QqDipI;HU{rDJQgJDymi!DlK)? ztD|kZZ9>%@f@^GJX14zoRReo3o!L`10AL0+oa30Hi4jY-VW>i5`y=H1_3&AZgD_z;;JbGIIWW*?NPJb~l z4U=0;v2u?Qk>mR&ICiMSNP9g@)-Ez)zWV#`#G=78?L|YpS)~%46 zkC#~Da~n?Llmjgt5bAo%|AhDN(BMVgzDq36(ycYGHM;NC zCitSnh%tJcKF&CoB~q^=mBC+eS0_;tL>acABaHeL#Z0Aqx%=cK2&5TUKRR z=Yd$i4lX7n#?7$dcD|IWG$;deOW!J%ZUzzK*0rC${+Q5aRAUF&cYd*}kEslvUfb0JD%I?Zh;+)KM0IOh$%U8oWtKlZ5L1SGHhCNSucS zJRVNJ^@_OM{8km7j|Zx%p6o*ihB|D64J>ZAiW@k@5^AZ7h1%aM4BVz6>kL%WElZBV z@j$aca}TQ#0iSrEj=*yO2buQ(fjL=nL1ekwX)l^V@0F{o$8pth0Fbxi>qM{@_&N@g z6IWRtDy35wytMWD_aaiY?h#S6L=QsL8VD8?g6Ovey+SA{WIk1HD$2C|y*2+N%jN@H z`5VOyc||!;{kW)0YEjkb;#7qB?DYo=t znTep@Wr=*Ee*g3H+p~WAJK(1_)P zszOzl`~3zseWE8N6I*DI-VQoKGy6fzBsRFC@tE#(Erqe1W3~!#okmge`s02opxTZ4 zy=m>`2PF*J1g6&b#X2kFEU~h7--+#^1fh;rbV%y5uqvIoL_=Asa!Qs~dwGiAuL~;S zLg*D8kvDHaY1bg>>c(!4#54){Pgd<|*~2fm*X^$DUh<)U+NI%5_XS>dc&wRaY-}?GqKfgbp&&oc1jSlw?(J~om{Zu)1A+saz3t-1KJ;Cza zOpQ{6)@2liA@!!Yi7gJ;Ojoj>T8y>K(P^1!?{WDvW=+c~2pJ#hBs0_7!8-vG=d5}F z(1|*)7BV`6dBsba2(xRaLIXj)hB7Pv>Op&Yj8<``ACFtMZ6EOGs`p_P{iCfF1TBj4 zwvYXhyj=G08_6{iwtxWdGN&ZGiM~Dini>b(A0aW?kEKSlHBR-^ z+EvD|bz1XZ`RsPWaSZu3nKE;at4kSAHLV?fKGzi=ptOjy7YRg6*S|N(588ffcCN* zhBkul$J>03C(DcmRaV#-6B}VFHtx@{{_8AQV8QP`U$AXN0ao=ayjS0%e@} z>>-)H_C7o%&SR%?Zl>%t^Nj^W0WsaaX%qpl%Vo*ZXY-0hRpR~@IWSWG%Ya+4Ri_DI zH@2{mqbfOL6@wBgX-Wnj613iL)2cyVr95=bVxz_sD1+8n4O%YqD)~(l#z2jFMIau_mY9 zG5qOuM!Qdwh^5Mvl-wc8vl5bK_a{bfSwIp|fex6l8V|N39@A!zazyImU^C00Ze*gdckwJP`0M)(R5je3SuH$zbeX_l`&LhvW@W&tD|K|5U{_)4J zK&PO6gj;!wbiAF%@Bj4kKl>Md{kOmW^QSLg@Zev4dHdi0m;dp9@t^#Izx(OqU;Oo- z|JgtPn~#HEeEEU*{^||?^q>6ppZ;h6;HR%2fAgpJug_CF$hL4XodtY)eI3mH+b#F+ zV8U=Olf27_xiHvqZVsLsc~VTN^n&#L?JxNEe|_FR>fikSxDPx9lUbY!Zct7lFCq85M&E z;EipRA-6=TxO=O^aHT^wND10J*^TXp8p9MV6s^?QBIn8y$ z{REd+{^TD`S~^N{yrV7TRy7SSH6V4BHSSP#D=xHujb%?0>F1*^pXJI|*6&GoBq$ZE zj^oTmdM($#FyMvp1)mUN65FqIEo)jo&$4zuae`MVy47_1c8{A&9=WUR+e^qy?L!A1`vTT`cpGdkkUn#Qd3Mp=m7Fe)$>m^H9AV z=z1qE(k-DLVmN53iA-FuS@hn7z0kwj+1g@8?ln8>G+G$VtK5gVXzp;P32Fgp*&M1u z?G|9$j$zGqVjkOfx_7$rZ)>hqf>R~uMFUY z!j9RWqmmrK$H6VUKkMiB`|aaCcOp@vDB8>v7R-QCRr6Miaw}Sd7(zY2ebGY9aehsB zPeXroT*#T*i%Hk(#n!bZoXlh|?}n&!h0G|f;Wwzdc(yENah)nZOi!y_Yo2?JC|VZL zOIi!_1pi#E&SeuWzixDOuqdy$1q~#QmCg)}ueuYT6|kHH!+t0n(>l_%G}mEWljMh^S?$YssR z&-(5LNvtY%HaG1{F65)!U=u-(&$vKbW7jGyF3*_-ZL8Zo`#qi*?#p;mD0rm_n+Kap zWR9T%J2$K)kBOxV7V%=bi&O1^O$DtMCNlroNMc$wJU8Q+OHd4TpAQj1=i>zxn*NmR z>;ic#w(ck3Zjo(#ler?%wxlLkD`psBk|X%>9R;;j38+Db0yeOa@Xo?5nmKD^2e2_G zJITthXH;?tKGf9r3*h;Aoz7$FYl@CXNnL%deV?XO0a z>ldwSqhDye9^&>C*vBL}69CNkEB6eg*T`R~)7aNSa!l^Fgk>jNw&ATvW_AHUI8EIq zHi=j?y3yaO=a>m@ZH{y94*@%9mhiQGsKY{lnXX zbeGW}{PkMvIbO$yijJj)N45{#ThKYGHvxQE!;J0ew27|Bc6Mt071Z7Z`SZ;J1yRU$ zzl~(a=vt^gP+|oQ#lmOR`^SCrf-_uU@HBP(5eoHi?f~lh19V`7i#>`}@~VkI#R;_`m&kzx(6YkN@?5{_p)y z{{H8G^}F{UKkn@WGrT4iUFeMG1nMVVVjSF6{-TRP^HMjqQNg@mh1R-P90(381jxh3 z`R%VB|L`-;XW*QVzkA*%?!9$y0rxq}M_C8#;ZMFXAo~(!N!}VWFb7*9=f$cQ%d?*Z z&4Wq9gp`xwaSpT-$SB)Zxrs?Rss;ljQ`BVS!+LG?5xM6isHr&RxKugzaa-?_&$2@` z%ZUVByL)zw$?V!ae(7r< zAD~SU0jNVjTPodq3wWx$q^X=EkT2i8P;=ndnw`ohr@EGR)%V7GFIMk0(CK1Kzl+_1 z9j@br%Bp7qm7nE2xj6eDHJ6b&QJW}-5wKKLMA}o^I$MIhLqV^O3Dt{_^Fkw{ECg(j z_;0_ZcO}z+&(M9n!5UK+F$mEjdFw{Od-U;l0l5&eTD&EW;!M5N+0j-~7?o@WM4S6| zykv&mg>r07iQE%Tg8mZ*Nq%hta&X_6$_f!I;=FCsH5tNK#amuXC6FgpMigIR!-CAqT8T?*g$llj0W zQpgnnA66(!fW!&~gF(-&FVkIJU0s*VjQHG?4|>i~^=RZwXGMPDpSzh}jviH0HI7O>@U-p7cDW(^vXiFNTb?O@^17I{R5vI~T#yXmxwy<}>|7%`eR9!rwdusE{|gK^o@<;qn}j90)EH3E_B*UoO8R< zW%p%|IxzSZh?W=Ju?)k7HUW+yI@*^mOg&z#*$>}~21Mc|hcMi-Yg5DKr@a}#YlN$Z z+-RGZnKD?8u!niu5lw2m-R{`%sG;>YGU-a1HfLpb5R!CY@tWXFA37X|#3b^@wagls zu?CoOwp6oO!iA^Fe51?3NxqT031@ch^&eq}+;amV{#ftT6!f zV)Qj@XnF}B00<#cATQIH!@DHB9i1njwhBVdGbJy7!gUtBUwY=P;p?(vMC1e|wyLN+ zm~uFehwT~D)HskDgR;@|@Q}BDnMr`a=#{xMw|8$wy$c%1Joip80o#J>V@0gk_q}%; zd+y#o7K3@_-fKDY$;nA_>&i6if{r02Vzx>nB{`%*i|Mu$-uV1~|nUBZu_VvT@xb_pCpPv8tN1xpH`TzUd zUq53V>-HSC|M;tS-@g0xfAcRs`{}2ze*VSNS0C=NZiuMv8xC(nHt3+fol#61(K{@a zh&!AqGP7^9S&hJTdV%puZjfi5`8S`RU%ZYtua2+ZXCiKov9MxS5??3t?wvUI4sA5n zck5ur(S@)kcls6nQGItkgV)y0oW+u+mJOH&tuvyN94~AJ4ADcw^m?N)# zNbn-U$X-8Z=#_6(wWoG|mSh908;CkwV%ZMvNpG90YX}w@YpF?y_fqJTidflV151HG zibX`Tv3lLjxpJKY=#Z*=^B<{_L-*%~&b1X38HeR?iFAABV1cw?CXzI{kecB>D650( zO${1MM6*M7GDuJL)e}mdizTZW*XZf1;Ua94Os=$wf;3FYw3@JqZf2^5!x=4OX9C}T zIPdrU$?Myjhd5S7Mr58giKf7=35L08DnXI!gvv-gWsYqyqvN3E?>ayvGZXid$7Qai zEd?TiE7&U%Rd|1b+~!SN8lk08NnP>R zwjU#p{4?B_O^@TD0ISh&N;K3qS)S^;g9oIO*@c#vt|7>+GjJsDnpsByQs?qpSF{yG zv${zMTs5YJPTnKrwon4O!n?wcKlBr#e&SEp56*b}o-@ehA!w#mafY~=uh{*750xZKV;2?zIe&&Y{ z`@#!ytSFgH57EOLQWF$(r@+~_3Zqdh93LmAN(Q5ET!zrz%ZSm}Uk7xBN{Ch2XqFe;FS z^GOCE&+DvAKGH5AG9r3{@uvi8K;TmawzfV9{WQ^GVZ#^nuobA_$`k`b=7UU0OKn2*Pb2S;iX(J$x;8UXMWZxH zln4yhtC+eci!3o>J-Q~GR*7!0{6V<8v%_QC$*`DSij&KFGU=L{O?2Y;DES)n+7wjm zv%MB*@lZ#XKRk@_#EveG<{Cvv`5f+miy%s;dT?H>p_CC?`2%s-W%DXzR!U_`5Qs3mdW(+mj^fF;RsY-7?+Ss?Ymp^XB^dn@d=Ycz$VA%#GGndh`+nYeV-zn&8={*L zTB|XqFDWcs|1Iwv;M}`@SoeP3=MnLP@4orb zryqaxc%1k9)4LCU{MpC*nS5UKVI$=;V-@EMZX=PlNLE zZHZC>q-6YCCQK5AVL1S7?7#xz`OIH`y^n8pAR^ZNp0|Ys97o&^#1Z+hs`Ya3eLweE zIX|IQfG>Az?5sA(-Q%ww=6QH1m@_HYlw-w6t7v!aMi5^4$7*SD&jotnO>0U41Xjj& zK!to4`uG3=002ouK~#pSI)Wl^Ot4MF4sXQNAzK4$_JP#aGi7yE^;oIoxHh?>C0?de ze0J`AMqqV=s$i~5!swK}3+#s(yW}K&-4owpHt_(oiY|ir}`;dIyp5X>8-Ih@1$-?rZ}H@X$mc z>J0^Od;L(JPzcaMSup?D3V1%GII1!2vQH{`A)FaxBDm?py4W0S+W^*zy?t;*GqrXD zx~}PFn{Lww2N8p+_=5SAfJmh&2)u?@F50)rlcAdyE_2MfhrL7&Xy(yzf|n#IjIjtT zjgf7K3TlPAUfSv@4}%YY6=;zgq$qtNwT~jdmyIjDzPH1J*_bT1ALfotA08?7rxqaT z#@19e6bSb9QKmN)4X9ikgCaPsRW!6(3rw1t))%T|b}{>bT}5|IF4JKMlC>r?qIIso z5pe|S@bH~@s<&33t0kRl>_Ydd6L+|oNPiidS+3MYMm)|MvSGt|RySlPlio+bY)k)u zYPgEwqbwC1kL(~ME0gU`pIoMv!RN({1GbkJ)Z1XnBTcB=V?X#BZMg~8dKy7 ztsI59&;li{e}cHuG$GrpAZLKVNH{F{4h)>AN5Cc*y$(-Pk>m~LZ4W*>nT#-c6zO$P zB{H_gxv-S3hI1}6V8AUjvWbiTT+`+ue=t49m;^5KQnb1%%$Z}l3h%MxMI+Nb)8iWS zt&O+a@F38n+i>{J1Se9N*QN!pXIw|(DM-%JkU3E++ZrAk=&-0tY!BBWs+S@@Ho z`MdUduh2+=jaOMN%1@%fO`r6>8ZtjyQP-;EHAAoA`&%BiLw+s`x{hf2jR$5fYV3_m zv)3^CQGAfNLcy{PhmdP$cI__sE!qQRSMKR9IXK7&Lu8A1`kOCYYquy9yK<#5y(0Za-A*=M_*9h6)^dTIJ-zwNupgt83-oJZ%R;pUf| zs0Nh_bBqnrliw!@yDEw*Bm#NUmfn3v^9p3FSgUff+R8s!V`#IRv>>zI1>+DGJKESc zUo-NCWx`qFLGFxLSR=ONuDGx23}wMh>QxFXeN7?FBXfwINy+fRdQB0qn~0nt(}z5$oy1uYUK{uYdRL{l3>)2}Je!WhC-^ zzOTqnKl$iKpMLzw+lM3aJkQF6W1m0y^rIht`tg_Fe16>4tK0GVSSwHDUa|I>$B}>b z$DbzfSAYLSK0KUjCE|+@```R8|M2a*@Bj0E{GHo+|J!e#cN|ia`>52ui(xuteeynf z{e^~7^qJWka@U8o6T8xEQ^Oq62*re>UNH+`Gs(a24CMVpRE=gu?IwRa*5mEinLG1L zocHR?Oi}$X90(%ntsml{R)AG?W%P?M+7I$+f0%*F2v|*WT*?pZHm!!qh~}o92vn~` zGHngoX#hU0LiQyf5TNc9MNo3O#VE>YY< z=r~wj7rbbvrKWPTi45fIB^C%rW3A=mKfz?0YzT0XQ)*%ahvFIU=gm~4N>zG*W385r zy*mWP;efvjc({#MP#KN}{9F=;%-&qYn}vyWvmuM7qQEAWdGRH#{dyNet<$MqqJpa| zGl8$4_VdnFOC;?JY+W zI@(X2w43`Zh=aCT+iHK&V^Pbw^dKNp#@ze*i4!FbzH=0a$lU#MXrqSje?h zl1rS456}C<^L~D&8Fy9MUyY~(t3>oU2_n*V1VQJ25)>mK2w;y+vZA&d-PMf_L**6kfY5p4rp&SsDpqBN?iSUFYYbTecJa(<&~|fq zUko1DF2lJ`myG^grYJrV9%MxjaP2AfFmDlJA{@VhRM^V)q2VMUchd)YM~r)b`#2Yf zMKgVR^#d<}gr(ZT>Vc1$`E4zO|KwLi97R2-ratCgfx#A8!-K~ogV(=iWa6hYFok2c zQe%Em#@Sk!LYVz7IUZT;B{L%S-fOKE=qF9b`!L87<;bRTJmm9NPX zXBd#sMtrD`_DF=6zanzdMc#`)jR4_LENi3P5-Rj1KOYd4BFeGlaQhmX_a@xh_M(g2 zk-#k?MmqzC&Voomyc+f>^v&#=XGaPoB5*{k1Lv8U+3y9m2ho{%{i=_WJ*>xv zb)F{>74LBF+Y$flr=Q*)j{o#`zkPcD;o;$7t@Z7h|I=Uo=Bsy4|Mfrr!EJr`)mKkv z9Be6yp047K9hhhk5ohKiV;2!Ixs-o4RmrZ0DF_fF%5S%kRL;zoI5x9)qs-1YH}bwC z5bAlTcdLH7s!Akw3r_j~HN+xI(G1#-|zD6pvc}$t- z3b1p&QoCv#qY>^AjP+QaQ!4&c+PQD64mv=9Z|X+Co>X^O@O##|b0gPrbhxEK?heT{ z_J|0!Htd~sKKt?pf_1lM3<2cw5e?JGF2`WG9}P&XBWh#5^clfm)i3E{DR0hQ9LeUV z&X)joLzGPKlBiyc&16`!^zSFTBK+t%GK{{|POS&m8Rm=BhsWKNn_TbD3$j@`d7jWq z$ITWRFQ`Tdk4ZG3(HKP)3M>&^Xv3&1Fa_#tKvm%8XAwE@pbr7-p*K}?M94txFBVsB zEBRaRf~-b~X3aJUoncKGIb8O00dZC{&lbWpxqvVyUTC>4Dc3kw%(GVCeK_nLPvE03N#0XeiEtLIo73{RoLER1!&AHD$dVETtm_Mkq0mEz&+y25{9E zi$S)x8fUh~RPH>hd`XnkJ`S=sCzG1*Ht=zwH-=i3d~I2RPBRzj!}w36t*tXLIf;`} zB-TPy<+C}eGq4m)8l((PFA2sBVIGkPiOo-NDAkIs1+*j{(XQpd?JxD6jUJ5x4JS$h zTZA%J=o!P*M=m9XrdyeaHH~mTHv}`DWOg)7-;G2G!`_^sq=nm#-7itEP*I7ES{jfgMAd)}D5$gq zbnTRtwG>TPT7fAqup9?_9F8_@38uSv5l~#?Zj&Rv8^6Q%R`?P1pJ3=YGL`9h$c%dt}%(hmn(*N(-&UJSU=x^dh#z$J~X_cMm^w?)d1M!C%hD^oNY z^!8KJW^7mJ`=EJ>JVL>(YJx63o22j`fDp;v)WYF&I;!-n{$P!j%If$hwlYEr?`Z@n zUJPmZ0&%Uyh){%58e9Xrf#)3rGInJ@-a#Z8DgvQ%R5N01)&SN)*RdW}?9G;o1iUI+ z5?JtJpv0pfv8!zX0tcm5OSEPuGIvdT1EmP90>NNqi9r$S`P>`1laNF&NGYR(T6kA- zTS>{1w`3_&RbH#UkPsPb?TlZ3{_U^6_~!ZK-6LW}?49@X`L^P-@4WfZ_uqc<(Zek= z^E`J|Hf}{pU()ag#!_pQ8{oGA0u*~EAqeiqwjw7`0yY8`q$sQ`}X1Wo0W0T z+rRtU-+%M|{=fT|Kl(?XtzUid?tU)B4MO4|BqdnE9bTQeG-ZmEy(03W?R;5ld)%r# zxWiy`ajv16fhD&WcOW;aB%ppG%P?F>4$E%6uV)qMm=DwzYTMNr$ z>o7ynsLjZuK18W_OV%phMfe?=3)=_@hRCseC|Vm3sgAZv>?4MyZm-U}Qpi9hOz%*U z87tyUeDh)7cYgBfc)a0u15WI-VU+))waN<$fwk!vOgofg$HIYQt9>eaN5CZG*t@#s zDjclBdd13BiLaMf(P9{>PNu7GmAWvRECkLizLTZERh2u1#@&9fnEM7+-Z!Hc6;n_4 z=A?uf$%Lk%UuN!HN4J7z7bddy0L}6BVriSNxPkbuMbYam(4zNuvs^b)t*=28vf-Ny zQQwdrSB%{@&3)1&PlJ@txLuvh#UU{*D^^`QagyA+CPif9@|g1(zNT8Y+Kr-J&W+$&LfS^Tgi z5Dfe_0QcQ+Dxr)n1GV#KikQ$EjM(yuMiL=yrs!ESq*+kN;vcA8E$VoOddj=!eD}1U z?|HH%kK(T;M@>lbu}KhuQZwUx(h#KY75!D2Ul0)BLVDVo0o~T6oQSriB3{mY+XaZ3 zV}D`DFB0h9ItLX~Ja~F~s}azmp#ZHlO}UfiAy(G;4G1j3md97Q#wJ`uE5REQ7@+yXKQtF^=^1rr1d&#USKAB~+2rc7af?#-2s?UXu*pZ=I3<({Hvj@#*UY@5Vns%* z-ZMSz6}jnhjPLz*QQC2>1BcPZ3mSshrU%;e%C1N1qzX5yaw)5ph-iTd-rf~7L^b}< zO_&ZqI?|_Jf#EcqMzk1>=!{ThWE~D{p7O|S+wZE30xl~-sr?_LQwf?Mn-6oKR_IrD zH=nB0qm2BtWMtf7OlRjg^+ARyWf*^ejA z5%xDma}(XWJ=;8Oj1w*`&G}ZOXhKl**WPCGWOBLIN`^x+oNG#+Z6A}y4)k+)g=mr^ zNqRCvcaD~EjV$`ofM~HC(-A*I#0F@)4UNJ8IyJ%{Eb=ffZl55T=qI*wAz%cwghC<0 z?oq)ml`f}dpPF~fDJ$wqEK+*3BqXX)FK@Oy9HzPa5ZGxxd69%BnEL-=%0Jl)xGqkYKJP+1Dd zoxuIapMCV|@h5-zvtR$__uoD|zCLcZ`@a3%_@GQONPKxiD}Bx}=a!2C>syoaL2B-o0^=MEDZQ>;#)hW#mgmJ&>QA|iUi zy*ADW+DG}|>7HNi``gEO^XhnY;2C*tnxk?f$8so$C_I# zxf_DN1*Mm|p|_u=1F14Wq+L2Gr=U}>tG1=rpJN3g&IFK0`wPy~?|S=ymRxH%G|1{J zC9_$}@fT;H_M&J2LtCoirTjzBziO>C>mt|e?eB%vb~u{))m6Ke1esZ@QBRcO(0&ul z0l4=Sng^FCT(OjFCv(R5Ls_Z`$S)ZP1QNkMy0&i(KTzEsdZ@+)6tISKZU+{z2%B5I zU&Hd6T{;EA*r?KRz;>0G>c*f*ZKa}qWmaX0lgv@_Y4~pS*9>=6XF35u1;{3ype^{T znwp8R#4WGl7j#OsAy*2ys5ty2e?qg5BVt8HaHrAdolnpE!}Ixksue;}PoBb-YQI|m z=WQx8QZyDsC5CIXlU_`~$0ZIIy0a)tQ;)qmE9u7-d zim(*dystqqhY>iM;3{jXE_Q<==L*271Z#6;8*oX7*06bP!aM7MG(*#GyUQzrdFG)z z18s^Sb@Wl@i~5qYg)U54rtCp2hbADF4+TLR>6F5FwWqW*V4`lj;Ni21qXZuUWa8}@ z@<6Jqj8Ju<{zZp-F^$#fdU%k!sinxpzHEa7X{!DLS_^Y1fbvmkK)IAEKc&7%O~a@- zhSeycfn{%M+|$)J=mo<~Q?u}t5~E7UuTZtEBS04GFoEzF`%hOWx_}4TkFJpc_x09{ z61>JN1;lbGTgJ3z4%dZ04+qV+dQf4l3V2yx=qi%*!W>zaJ`^z&_oA9s zSn2*F6QBCiuZzTR96@;qG-8kiIPH>ctQblJ`GDr*Y1Qo~=EDTcspkkdl5%}P1u`g* z^_VFKU;5%Vnr>3I^@(tKaE6J1a7kf)&Ty$o(v0iTd*`~$7tRjsD>49jr((@hLF;2`9u)`FNT374pN5k6-=kKmViu^mo7en_qnSe80bXe9YtVZ+`p!{r~)n z|Mt&+{L>%4{rTtLe)Dt>JgT?=QURyyh5*ncFd7iFh8=5-1SeT9C{_~H->~eJ0r0%k z?WERZuLGvBE(Jl+j>Dnae5&gNIB_QKu>-jRh*-zE9ScA_9GR%YNuKXJ!ENtrV$0f8 zB`s41E~g2Nr*Pd6+X4|(isicrL?D^fRjOB80s#Bw%-3X8WX#<25Xek!M_71{7LSa4 z(-XBgo`~>SIh>|eHgi|=Pi+hpiV(7JNx2r9`I)#~&19@Qcy%+}>@~oT?q)_={b;Rw zF0ur2!F^Wq8O=YejjM$tsiGCRUE6mefZjbSYOoCvH2bVuD5B8} z;wYohPF0L{f*~Y)=!rD!ZYBw195I|NbwKN@GQ?>c9T*gi&^9AV9q$X|{j8IDXfAG!?t~x^z&>3D&H>$~ek|%I5}N{Y znDN$)QWKrx%$C$W^N2veje7vF3qq?t zkxmwu$}d&C%x*o9dD~pmwqg~hn|;WhMs6(jVKr6uHB*mf&s{wVKS~HTu~&9ayJ$g$ zOr^%Z^@g)=Wb!}E{!%Ryx11)e?dbr7kAKbD7&b&c2PLuN+Fi&e9V<$31nN*du6;$| zv?R7}cw@srMl9Z>kWpM##-!lLUs7p%tFkB=6y$boP0cK35FK1{h`mrwCPk#>-86YV zCF)d%z>TB|Pxt(A-yiO^v4e3|if#Sy)?3KgiefaN^h^M(dKKbhZxlI28x4Jb7T}3M( zQL+xz(u!#C4n3EGQ+Xf(O~taZIb9Q>0gvfNR)nY`*!G^e zaQlRgL%#a>=pHjTo=OtuH&_n)9cs2hRko})Vrwcobb@_M(d$csb zSl!)>u==cgg`EtUAHN*#rRm7tN)1UiQ@ay1sSDJJUmarY7z2UFyy1x4tA#FVn)ubY zDvQyt9>Js2aBEtcVf)$(ukbsdzRL zH*`%gyxI0179K83cDn&0BKN-UeQqNI5vu+yor)HHZ(1AV=gT#7$7?fyh*LRGM z*DXcS@(^|6Xm;-B`+aBDNtp{iV?eU5SZ%bSZP&JM3x!X9I?x^6NMs(z!@KAG%P+qE z?N=Y3cVflU^K+j0a9f{!=gp74|K>YyA0O6=$i4TuPw@1moRAnQHI$|8%#4gx?_;d= zL7U*%2r4zMbHBc=fAOc^|K7*1{^Q?${`EKSj>pI2;o;X`-~aFb?&tsApa1aBe)91z zzIgZh_a7dP$6EN$=*7v@gF`|=CKiFoF2|^)UajtZ=0%YQ(tDyO0$7LQRaSO{Wq%ew zSxa<>tcpNCLuie%vhwr}P>GD#rI&pMaz*`LtX2JVtKNOy8z*0^PGCWeoAx&4i-L81 z?qwa+zESesP*k#ajYxsCtqUch)h)mnVUd*+Kt@=ste9XkU%3nss&J_nXDFvKDXVGK zzFN(sHDJY&)x;tL*E3ri?;L=~FBCtbdh3?GsneBNl#_)uCmJCIJQh~n%XH0RC0Km* zM_iM?bsQc;hPP9z*+!kw0?204WR9}xeL%_JGLu~`8jw6AMLK8iAy_a)cnrglDEbB) ztE%jw)K9G{8X1V|OKax2^(}1Ro2NYY`SI)Z>UQAF=dEo~FZSh!#xO9`B~ud#(_p_< zl;utmjZt84LXnqEO=?Y2Wxx(X7Qs?Qhi90E>7NZ(+@^FusVjBVJ2DYiv})|q z8O*$YCd+_EFvW#-s7_7%0l7kebgxe}0sX1&DL0|wCom3^wxAig1JJ9&QVx?S>e=pV zh=ZRk%!6c-BG}sFl>}ob7|uu~XM2pQl*<1hq(<;m>yF@htVhBpG$e)YZ)OpR%d!TI zr{zYnyRl~z8HQx)5fdhIyh0}k8cW0~A1Y9xYv%ORtgs=kg)h`YOa5sOp32hC8I#yU ztgf!F05_WAWV{gYsqd;EI|-$rB=}cEEZ~TUg(CpyV2AsDI(KFLYwo4jNHYg6#!107 zR|eoFqx4rTVTG+hw?LL99P39W%~-rs***roX(Y~?iH{P2P%bRh^u1e2a;u=2qMEja zv&P9(zMW%*y{sTqs%IKhu32~Nb|ZdMyl*+H9`z*5lk16egEZr#NqP$N9n1um2mh^>%oy z3AEWb&N4IehR4)fMWjR`m+ccSY=u2B?2`42)(d1E;Y?f6%&N5h?7ZL_xuxhisZbco zr3_6m|I$*WW+Ti({$~Vb0n`QA-l_3ar>!HjRqOkVaLOqT?LqjJyj1K&y6(t3RoQqn z{-pG(WZGl!5ZXatN}!6Um-`Ih7jrR+$S*ymx@gUs!ws z0H_`<_x^*xpf^RN%V;y=xlG1F^p^)N>H-&ER3>KdBfJW5+N$*{GzwkNQWeO_jp=i< z2vXnBQqSC}gNBk9ShHR_Rx;Q9s4R9UK)Fpo#ix{ z3$SV~%i)GONF#w%*15iIZ^b2kjHE^?1xAeIe%5m&B8Lk+E~Wh3ic7& zqJh0BC}~Axn)Rm*0S5P$^9BF=0^LMzP#@+{s89kb33tCi$Iva4t|_d-j-FiKMe-ln zrSKsXmURCXA1{z^kKi+I4&1P@xw}L!2n3Y}@RiD_J-!Q*c7@|jlUTJKY3dabnMey) zrel7v91Vg+0v_#w;K_a^h(3N?_7;J0o`7gbr@^UUws$^1oi%{_xz|E?hZNOf+wy|) zU48f*0iw4t4jjPVdE6r6;Wxj3|BEla{r2g+-}5}rh5Y2z!}q`Y`m;}7zkYQbJlrDB znd4a(;v^iws@H?G2w{BXAw<~ISdC1H^LfX@Pk#9JJ0Cy(_0PZj``>)^^#1<(&Fin8 zpZ~}I?=Rnd_~C!`XWzU1?%kK)Jl`H3b@&*aIfSZmRqoEDT!SK-{M1HBHcgIzwZaEJ z@S0L9*O7G46t79Q(DwA~LT?Myr>j+03f!OA8=Lu^B^It*fn4jo-JBB?oI5O(RWiGu)K#b2AB#aq(s zdj{RXW}}Mc0OJ?iGnroK23hV5^f@PY*#u9zZHl>h%FGL`pXWKClCt*vP4LAF&bfHp13`B;{WW zK9>xD)EZ`&iBNr{J~Be$f(%q=;xcIR!W;wLEVahMia1uC--Mm{bmIMUKHvA9{i{nR z)o=mTR^%=uYjRG=LicnH4MsJ3S=n?4A(Z2-FiWlh)+Ma^ww$nMVUA4(sS=mym7}2o zs9m^$S)pVU8o*Rm^SA(MX@d(1kvX>wZ+9Xrtnppj>+sg>J~)!4`4~1GWHPhKc^e;n zR8q{~&Q)SMHO(@FHldpDik0b9-e;|j+YjF4(Wg1gFa!Z)o1ed(qNdyopgBwk&1ALu zmwAru$nqF$#876_@?vIRRio0u=);#gU$zIT=4E+m$_)aBlgyzP4YIx=!s=IoWcHm? zDwr1VB`uEFD*L!l9)2B&4i(}OT9BgSO5&a==SZrj7u0#$9xSkaT5#Ag2H}dNoTcVE zyvg%oa8yQN@#>2SQM>k5hij3g}a}a~8d4nLTWs#o2bQK;%g|`n6{Wxf}L+jxCL;h$hdvTF}XhM&i|2E#ws#jApgww9pKx z@9IL6J5Jtcr^pP`H$Z{25^JY{bB1g)l>1mvp0dZ}*Fv2Qn}-(i4mT6Sv;0FDImjWP z-AwIqA=Na(T#11#;-VvarY$F`FG}M#AD*;%s`a+mwW1?6kIn0qofwH{69UOU~tYIk3zKjg-KOxNqF|F6z9uj7nBr zi0UP{8h^CHWDP#ZRS@&|czbu>zxe$3zxn;syXSL1pRXQ{AAaxcr{8(?_Ra0_sAX*I zy*CBOn`f<2%<2uw)>lRD%-FRmlI6@$xV-$KC`rc?K;F-fU*G=x&wlWO@4x-o-~INB zufM%LJl^B>KmEtwynBBB-~96*-j4U5fAw^Ge5~VO#If~rAdCEU928jmXAExm7iDQ@ z8Vwp|aOx-tF`VTPDH~e>C6LidS6nX_Q{STQRwME&QZ%hd;C#-t64g*}Vy!sV3gFel z4T-(?nR%W&v)5FiRZ8B!A5p(0cJPH45`1JU5sJ5t<+@d%r`0GUPeD}9v7n9Ij2;j! zQtA;xP9BaKrYTk@&Dl>W_+7)jn*%gaHPxUeWMZWZzM3-Fmmpx~?m_|XNtbZzl0c(d zT*@`o7YPxK;QCKCfzsRqO+8GF9IB(8!Z^~C5@N8}q{yvR>1H4L&l0c-qA(sS4^do# zg8(vju+?FMM^tMk`G_&NlmI}C?pXwob-rzrK6<3AT5}J0?Ku%~PkiU1KNQj5P#8nnpm5P!sUQf(PM4y>!KyXB~)G zFk}kQp#j<()Zyu9YnOj*@2XRpXE$!FsL~?c&#r1qtvWITS?!Qo7b?Cpgsl}5)*LlV zmm=W94r-v1BcHlls2bmAU@a%3JB0ME7__3+JqCXw5G~PxMAIP4t;NqJ6DybcKvtJd zgaI`$B5VDV`MJ+|*Sr>;t0u5mZs`zg8}x)BU|=+KV+gs#xUmzUw!T}6+a7CORaQdX(^fe$@H$&*KHfZZ$MlH>h;g+j709-Bzwa6Wd z8}OYQ@1OI-{d_)g&kohuJM|<48P3w}ayAU-v%}qua+E_gvzjQ6*avXCN&ATCvhkQY zsc_){rvxGMx@wK#3KU->A4r&$w{b63A#y|^x^G_a*~dT(p1ef zIU$Mf(=%FKs)pP*RGf?G5l5+bn7)Iu!kR>vvxozS%S?YqRy=aP4w^ePOD#c9-$|_C zYCT$}g0}WwrG+9fn3V_#D_d)7h#6M`&`aUkPi>M^qUFF<|B51?JKr%#Fi>h> zA=;o7)CMF{&I7xKWA(5t8Dj=A$93)4GPCRu<7@ulXNTC*bON#TZke#23KWjH0%&0D zRJK(wQ^A1g&b{j112V&)Dk_%!yojK^^~f2}G2O6>H}s4YKZH!w2H4vISXK%qVKplV zcGTmoX`L~i21&^qQMsHiamn61;I3>$|H}B8g6$dO(`>CDFYL}SoQTXDKa?Nd0s!0j zGP$|FQ`c0@NHE_eZZDe)!qP zpMK}{+gIy|YWmB~owTEuyfOjp!Q7}SWN5#|-q@MB`9{{(>ngPRY1;BGa)5Imfj|26 zqwjtE_;TiDW<+~62^_y4!?yrCU?m7SazxdIL5C8Dxhlf{>mGGnr#GYxkMirQW zbX9n(aCRwhx~v*V?kh*|+`GXD-c_ox-psqS?3E3k00_j2efoWPvJIBN8z;q%^oJX2 z0N}0~*k|J05m>Q&#w%{O>Yv-0=RMClZ?ayxYjV`-a4oWp5ZmN~$e_VA0~o|1`XZrK zp+wOdG}@^p2x3Es+K+%Pw;HZ#7`4zu3@c%1$C+BE5M{{PnJ*ofVHgutO8Bo@b42ds z5khnN>2shWf(fg$^M*mz>`}g;+%_B$rAyMTKzgB2fN19=1Zao_hCm0M%O9JreOcFW z(GLOajK#hMj&*e9NO?6>DLbLvK?cw%6cprcDkEAx*R|Z5yH2Bw+#758u**agk^ns7 zp6A2%f(O7-Qhxj4yr27%*SCk;iZkzSPHXcUDUO*%D5dcasoFs5L&QR`Gg`hLT|x0( z8Q3f1*Jgx~*um3ZuKj}Q#x*m=jeG*C2JHIcbv;jB}Ac0H6P&6`9Q zt{jsDxT#8%(-gAC&SrBLIa@0-c{Hmf7KA_+uCn`Kk!qH7w2eh9C7PjP7e9Fnb7d#E`8Wff?8mqv@CKy)nJ zDaF-jZHcgVOW_ke>iOWSjb$C89~B5!##(U%)=|BG`QeVI`+h$2o=LxHzgERjZUR=N zO_mH`&cOzh!Q*d4QiaN&m~&@pGl#~2x@K<{d)VM*%Y^pJQA9w?M{Xime2GG#Bcg}P zo4rOV2wv!Wqnx5cXd^*dzCuyO8w8JDm2k|}Q$a^8#XvfSoyp2dy8la%I(V9wD~e1{ zex9hKuD8x%SFn(zU_}(;LGYAyq$SF~BsXQkO}vekMrkKsmCA~TU3rU$hG*fh0StEx zWt%;oDN?D=WI$0q8+jBmQ=pTw85W?;KaGk)=HYvG%^Jgey|>ZGw88Kna!cEp`BF%{ zBq3#GsbYcbNr%5Ho@iQA5B)n=tBJny|CiP*mSF+9PSzy%`n^B!)@1A%jcCwXs z7_2;9(i#*Y(9J46{UHWwHpF@484wSI8E=2Pg*&`UxviCvGSNm4dj?=vdhq~ej*Yt3 zQwLTKrQ=lDjDUSijliaYq*0Exf|uI$s4{bBa_^!MKns4gmeKS+t$|Dcds_?8SaF_P zNBn7aUU{ft>;@>!GDjG+kP8oryu74P!vOSEIjDmv0eE=paEIuh`?+nF4eaJXO=+FV z!2^hh`CLzpUL3`iw{acp*lrGglqHSHAaLpbDw!Xc|F#; zt$2vz;mF#t?%d}-bMNF^xSDB-HwaVvKUKf>@@>m4wg0M2G>mjr;E0?gSoQ%_q={g$ zOOIRH0975FQEw7z_m*5xdket+f>NUW_OAu7p&)!mB!}oS}B>LT@y0+EqVpkvUB_ z-GGpe7gT5MAg7uW|MxGCfCE%*7#~|45#LA96pZ?Ri+Rwij1GY0^5QLWKNF(UAMavCDaMi?|}4j|mJy=aumbWrCMWG4DO)*66GlI+ML?b2aphE_PJTvh9| z9nWGgj6|&5Jh^+A1ZA#Mz^tUGk`xqSpoT5?zHw9%k$yt3{-UK*#ZY;&Kak03A0LEX z9EfISha9 z(UYkMZB>jX;G`o>)y(=T-dZuJYCl5uLoXL3%6Z|P;9&O|OQhC`qeF0WhlC8$7qvN) zRL!rZl^F?br%>IKb{{(i+fK%LbCQ^uYmR4eO7vld2-@nBY8<$uf@Z14&})D}oiKi^ zSb?>Gz|(VnIQR2C@5v2eSXb)`4j}p+7ZBwkDwYCRi*H?)Yx*_Qy5AOz z5Sk)Uo8eNL%62>9RkkMrzPC&^5n6FU#~r~K%`0o2q5IdU{TQ^F9^%6sou(!7;J%SA zbI{YhfiFA)=(0><6z4$xI+WdIYIu-AOyMqSPhvNWN{?18iiK^>3Yq)rBzdo<^#!Y_&USSpH-0 zU!m%kBskEfg*t$NBFa=)K~o#%0*IafrAyTl^)JJS9v=H$H6ELXN**u3e#CJH#E_t5 zg#D;teUo^bW%dHGUBiFmkXBE@yxN{BkMeZrBwfX@A4(9iw-?AaBvVEZm+#8@N0Ef) zCvVeN7hXVjQw80*(4D_(J8>0T+5o(_`DJJ=8Wpf~^M3B|ic5?ckmQ>%e#m-*xxny* z;feK4?IS_VZ%gG(tZ9wGceD2OESuqGhEbBE;Ewu_e9iY-#XJL87%*~qc zJ}kAw3-kqHW7Ys-n0JgZdoI)Jn)n$wgoi=Hn-A(=js;F(u_}hkEAooR%KmK$k=oA( z6b_TgdS;EH+>CE)*m=Sh(S==^ePueGO_@r?LN5N&B| z*CH$0U3HX*F)gKodb@qo3ejB3ehDyYTHKH?tZO-|JqS4WzTdNCw-fv7uymMS+UQ)x zz|(2cI)44l)8G8+>#yG3KYo4u>5o78!N;#&-{OesDFom`3ei%PSLN~ozLZoL#{^In z!Om*pDg|Wzp&h^ro(gn+VAZwuJtNLfzw_!lZ-4l!@4x-oFTece{rR(hcz>S1`XByR zKmOzI;}>6ixII2P$Ourp&OmkNCCKpkERZ!rGteuRTWW5iYGMN*>S)~1M#u$(SPW|& zg#w`-x?_bFoq&uqjZ5K=aa_n!>HS6;q(UuGWhVE`wfFNzM6R_~#O;XN5x60N`?=4( zw@wg@rX3C?Rsf;JsxiB1D3#p~dRqgR=i8Ji|1bwHy?Ak!MT?rFxD{U!ZPZUe#>M*} zcA z+W|Z@TbNXT(Fz=LS~F79FP zk6Y*k=fUh(ZTlwMuH_1@Gf2*SDQWLm>%vHkJY@lDBI|G{>!w@CBxu^aJ{=czI9-m{ zprX}0Y+(8yWHiXM2S6rWgP`NaYQvy@Iz9G1Ek>IbpQYesz^6ZGInO-IoQc^$GakCX z(cll=R+o5=4b1vqW-rzZkf{6BJHL(zBanywBU2IBHDH!qNmb||0>}Db1qAY_rN|sZ z&Ee_r*AkKGn(Q44@8UzkYe9@EutlB4kR)q_-WpEctCge6(JISkenZyfbsT3PP+Q31 zSUhg^Ir08EpYHp9=H7mBx>!_0d&gMAU0Up3@zyg`@EQyrUhA2`#f(thk+2@c0HogMLiLN6nL*j+^lzsIX=|6gi@)%;A~7Od z414a?CE6?~M!~(4DHQ_+hzQJJL9jyqacmu8MpvuhsZDt+F4bxcw5^V(+%P!w!uj@; z2b+_@GJUa|5>$pudSnv|A`JD7F&IFada1dTKZuCl5i;WrNTm5fN4CNdt)=@W5}Cki zno=4T>j;vo@>ArS?8{KLEw4I>8mRw!E1`7#u+tJ^WOjdY-92nAn=!YCdl zIW>L9XRlgnoHZ&HEhW-z?g2$;a|4#NdHFS7r&a71 zooZx?33dU+4^2wJsk}xOMvl+%MCkn~M+2dXKuf?U%b5}uLuWMN^xHm_HFh`;Puxb( z0XGH&8MUl*Ql%O6Y;O==44t-_W}|(_Hm`n+KUct{m@6QMo;&OyJm&f6tm2=2NDrrw z8ZMeSrwX^inbz@h^Bopt_qtdS zvY}tz+EJ|aoT>enH427eui=`OTHbVxYiwxxF{Eb8w>M)kmh4z9a|!$m1+UCgCq>@gVF1K5!faqbS# zS!J#O<73Dc2V=N&Q&3}Zta#q|t6%)?7oWfX&PT8R%Rm0^r*Dr}x3z%1_epr8Nioug z0&oJ=sKm+{nWYG|-tgk;cEHK;TC%q~p%oEGCA84SU!Wwz6X)%LeLg?jj-USIlka@z z)zAL!_rLn`+rRqtxA%YhtN;Ele*7mtIR5tY_i@~os5zLobT6Jwn5 zk2oFi8Me3*Pv`ZLbRcl18mKwvtSov^`*Mkez~VYdfTcG;OUjHd;ih(tGqX}7} zI19=m>UFU4@J!SazVOz(A%IP%<(O0;Zujp{oT%zZlY{W;$3(fLrpO7}Rahda7QDsz zjBqV*qq;ks@%Fkf7OHno)|Sv=iP?VNp{#ghAhr2Qd#>bZemxkqTUMn*n$yt0%mmC@ z9KRryXwR2oep{}PJuf}fXr@728kLmTNK@Hg3oJA>)KuDE?10j!#{2GR-!tDn9uI4s z*!%jR!km>0(e^9=?8ZREs>=6(l^~Qwt^>$Oy4%|9Cm93|-L0T-qH&vTfH6RA8f6K+ z!~|Dz7tSq{2s!%%p=d8FE2=gh@sd(h)Qb{WtM;U;&%F}Mdo6AXPgL|7(|(cMn&z?) zyGG&1FEE-9v$)Q zW6DKc-jM(D^;p}5>!6Suz>8c8;^fL}@LCuF`7XXPMp3A297v&)p#pkzSDG| z>Yn2qC;Lp@pgCQQEL0;1XtT`Z)<_nv#3>ZDUAIa!QY{DtSqDvYEi9cLz5-|B{h80t z`F!sCW-+IF4ZY^E#_W_CXw&mO69&?#~-ODH2< zv1+#ob=?|sAq0--elA;?)|_FQCuFh=L+b)%1pxHcb_$Et`OPDuP2$0_L&`*Z(>Liw zs~bt^BM=4_gK)**P>TqU0uy!t7)|l8>>=}BMmi_u%@Awq@*41C^D8T|O8kJn>3gb} zS`r(ZNzf~#V4JJ{-?Med?@SHs-B5_`{LuG-63=GK+2}S6U#!G-TiBs!wGCy0xxntX z`CtdOE_Cw}t`}K>2J1&^^e)X@*Y-5pPDz?x^iLdF zSV6*i=|OysV=7hbeYr!SfgUlw{n9e{aPhwDpMdMdm|qSdByYKt@s5y_O{u6#WoKD2``4cN7CXozKMNP zk-{n^^q4fl;1aSTS7#@`RWYyOOl2HiVVBM}UFF67blZV76pCSbKVu$bu8nTNZ3c>5 zORiK5$pLX{v3>{`zji-9F#Zv~S=XsNY5N?d19 zr?z@Ui~i?ycsWSvG^39+?1W(!^16|^O^f&#ir34XaSf`3c3GDzHO=xmigi>%tBF`_ zbMQm`74#2nICi=T5foijm%}tp3q zpGl#?F~`k0oTqFkTHI9#o4%^~UCd=@NU9H3(dJ9^s*;E8G+d$@BFmOlhd8>T+JduKN5Q2tT(ABIe@OpPaSX1=~X{MjEp{_wjWeRM-a_^1I@4R{Vmw)!@ zr@wvkpML)3U;g~7ufBQuKmO}K`soip`uVTFJtNj}D=2J^m8@|`heHTxM=5NpSgki{oI+ku>-;LxjQ!5M8Wj7!w{z)6)$HbY}At} z)^MWgljS4H-Qn0}sLu%&(J3%(c}*qhxeB`pF@erGtQon%Fi}#XR8SQ5$ZB-GqpbqF zu$9Hw(a@Bs(wBoIy#&4n>FwV!*N|zGn+Jz9H%fCS!W5CAUziO|goCq$aD-W!N0EX+rgC`smdV`*FeI065*)8 z%J)WhM(ytg*_8&7*+m>vN8gz*u;{pOC`F9ILvR5=78}mBctc5ACex~nQP4dVR zXoxjc$?L6P}Y3K8q_jB*`@fxHdFWxk$ z0qiz-swDci`qZC~1)VPT5-f?z5S;E0MGD<0?Ni$?mI!h>@X@-o zOnM2Ryhn%tD7brxn(gnM2Rg4z!_6{-k=b)_s`8<8*LHDQmwLsVHxhOXLjrAy%naD5 zVykF1Wm;dBfvr@Fasj@spFJI0AX=UJ7UwM=AL<>duaGQas-~D1vNI@V7fosQ!s$t= zsd-zvN4QA2;zjHMCZ%28dzWJYiKDB=?5rg&YS8c?F5 zKnw-C07mb!6BbF?O-*2=ZK>FT7tNKK0>)y z#OmI)y;Nhk$O8m%Xq%~9X7@-8B!M_c4XXWe4vD9I z^o;7O$pMB3kczSB$fQDJ-f{%Lb(q6m<~Lg(?8&eu(%- zpT0R(EbQFIm;x>9c|_!a*BUGU?VvXFBI~z%6?Kck*9~ORdj9{2rcG5*6*~sga4cLv zV&~rXhuiI^Kl=ESHxGaPtFM3lt1ti0|K?}^!@vHc|KcBg@~hu`{o%}qhlg`t0#Hb* z!Iv_!C)C3X>8x=$ym1vR#F!r+K0LjBbwhHqpCJiAnAkL~P+; z_47FF)JUp7Zi`!zhAlQT?wyHThYb|>y(9AuthJ7awcQYVlpw5ARNM=a9by}dP}|1di$rW!ZfGDMl*6@+Q_P-}vU~M8@k^>mlNP=B{wbJx2hf-v0x%4QRw6>E&P&IcT0CKTSI$cJ^sAep|NPe#oxIT3$TTH&UiLKqkV+dN*=G18^QX zqLB-+9BTbMJDBWv7i*={PC_QtRkeNCnPZxdf@)qTooit`mrY2S4}W6|?ARrvQEG-r zYb2oArb?XJ)v@NTiUvIPRR4n?7dBbzWt86~lL0(SWY-uZ`e*`oofq9Wdt7stlS{~+ z4BtKUHdj8vO;q)8ohuT;VCEnr`otJ*V%)XQ{(SzUqW6VK22bU&ZZ zJhMg>^#);c=?#DGfwlI6739+GbH}Mi)DjydY8lxb-k(jhFFE0;cDV#CrIc(aWNM z>}J##qDPx7C)v4a?I|m{B%GSBZAG`A!t9V84mfCXAVDw}O)s*#;vi>`qfys2@WfoK zwcX?k+i=*eKr-!LbGI#~!_E8;)uUx!18gIxhAlG~omrkri?MlQv=I!aD_=!F#Mi?i z5*M3rq#BN44kD}RK;W{4RD*=Fs$n=>B@V&u1rGI-t$~0^oG4@Bj+_ya&GgEbLcoi8 z4HRmFpMcnCU_*j~>98VsOy6I&%2)fsW(Ai2Yz@dr587D{0n7!&;R8efn~>nB$6PvP z8CTftdD^&VbtzQY5Am{#ra(b9GF+l&3y)D~wM-y%jQ*wrO(qnK7+}U=b&DRP5CKM# zno3>`D91AhXRL$xmQac$OlfbD5w%Z!G^skf<}NrB zRc!p!pB%idZ4&+$qMJP(^jWV*nDz^_dc{Q}3E!tRoO(hH@ODIO?g8E?vk4_gmJd7` zc08ss8i-y6ue`Y2NKFXff#5Mj0j+@1a$PqP$n>}V6ZX_>wyc*UjJ-88dA~l4E;J4zlNm_9HC(- z9gTq2CTcL7!oNSC5&JuDAOFRle*d%Yy#DK-fBAp?fBpP--+cDp{P~Z5^Z7SlzJLGl z>ecCFvZpV$J_uU(caExmK#dPUTI}q&RKJn$p6+j7-Ry2oF@xF=ncrN)Po2{mQ@D_@V?!CDedc-QiChbTGZ05@Q@_@6#KY~_ndjc; z-si~!zfEE+H-!-?rM#saNtRR?6D{)WRgtJQ1v1Cg#%`>}aErir4W>DREUzL)4KI2X z`BEGjTuM!Y}XRM}iJO zCYBJ>7fno~M~M0eF9qryXKTQr2WOr1Cv)w{A{TY=uq!D#wew06<_c*Suv*sNYQeKiwn%|I_EqU*;!#WY9wX?=^Z z8q-azQiLwKsOPp`n>0t8HklMP3}xH$rV&nhw_t@GF7+89Rjl9yvt4WkAjzYKCVE6@ zlLsaGA3{Z1zVo=3e{`1%&+h3upp385pw`M2aXS#ex%0z4pEvIJyzhO|MwgHB^Az-! zqCCA$<1mzU(Olr5eQ!iXwpz&xFau&HR$%Wc*bhGD*U|wV*{r~n!lpF%IgX^6 zBof+046g9yNN9~o<*uVJJKaM<^rP!?yPczg%tDWrVaAngG(y6fFuo4o?nex6nXqf? zZ}i&v79o*t!t?8gOgPlVBY`7F6G*%uCyC2VIR6H&5$l`Q(HM&NA$K&F?YfDcMcmdg zTsB3CNRVMBl$s28>!pj;W80=1l{B4%t+CNktx$v@*|MC&)*<$1&M8myI#msu6qY}u zItk~XY!WXJn;g$oNKD;+z@d(i~H7$GxO`Qm`f@icv?#Gw8Hwf|1Ai>hIcu z8o+z>7H?0*j|^3U5WYi$B|K0~Rb)c$CMhWklfudIa{5mwyDU}uTWWHtzwJFeP9sTU zV%Sf@fs(M-lcQGzs0d3f!zMZ-hz=lV(;|+UlWaBtNYq3A4ycn-(tQl0SN_?NOCT>* z%Y9Y(@SRBP+&`y>+e4dNO4DAT#pE0`ho>+e5^MDi-s?5F=1T znk$ix4Hub(dd8MWMlVB|NnoN;IIzpK3LA$J00{dD+9oxzh{zh70JpMD!>40#COg7x zt@5oUbIrYT@AFvkPkW?AV*XYYxC%D|~qwlEgltOaD~ zrQdqut}V1=mLUO-c!DCc2<|wVLX8r@J`u<`;=J>9xj6m^>D27*gLT^_qq1~ z%9acgz~Dl}#U*NEr{!;e1)M<4O}l70*>|mz3$be*#Y++vNC@iX@H4vdW*s>^<_nHk zXbyo%)~Fk^kW~j9wzoR0<>j85495(|g^G@v=!(?2#tME4nHrA^RE)lMI=eW3CBaeM zf(|`PY%Ca5BEnq;j54*)m}1!r;0Mtlh1Zh$_$xECd#H@n&{frWE2QqGxe4eXuC_w< z6oPpX5O4|s;KP0I%-0X=)v?yO?@jxl@~kB2Qg2mmx#2xD`S$PwYAryNTTOwB-!M0J zW76oy4OwA=Eoy>GSpmT|hTnvW2|G`!-Qf+fJa)k-QHvY*ik_9;BKlQ9WUDCx+QY6) zg0MP6P7Rm?ASO%ZZQEhwkc2t!T?a^lBa}mtoYz|?vO}{m*rd|SV?v4HQh~)TqLvT( zH1I$;^4i~Hj%3qS^3r}QB{T;ydg&jN!HMQ5dFpsTjnwDM{k~yNOl)tL6)vFL66<;7 z(9MQChaBV8<&yrSh^dfDYngQeO^>^A6GO<9fEOO2hbVZLQVRgSb%o8U&Y#f9-RT|t#e5KcwYQ}8TYl1ob4s#-#wQ0X~X=?vyHS$+$& zvV_j4?J@#m57n$t*?*Lc)Y1>Z&4<;I8N%Y4ub9X@vN>ip$P4_|kUfFAS|BBAQ=!oC zBr86*nudEGSJ(9tR~xYLt!a_bPTp}Xz}x<_>q?^C3Qv;-D>51M5v@k(qUga8Jw`W; zj4NbM4NiTZ;f_)wO;Txg-^~HvA4m=1b_?l9F{M)$=*s$X5PWMFPF1-mc%x-P+brl_ zgpO-O5MIw-l68J0?J&I=X~AyBrp!hjGqR6Va|@jWolBQ-4&lHNS=i9*bgVRyZTo$iFQfnGV&b zf{_P5`5in#Od4s+fYmAaba|Q(Z}lyE4=cyco`-^2i0uTPoU z!19sRGz5i`4hJBHP-6u()nq}HL9{H}g2f+mSbRf}EU>?Ksk``x)V%t(R-!E{%BKhG zgl$tG|Vho8Z zz6t$ahVDTXHD5;Jobb}1DrluXhwAw}!?ozxFk`8E&>icQ9-n7k-*b^@4fMGd-ZTU?0ru~1u%D%8p=)3rkYb!sgl z7B}^X0aZw>+EvruNiUAQ_aX;{@?p)0da>uQT9=Ag*?~}G#I?T}g9kx{Bv=D)oz(!A zPQ8S0TIW&A=0ls>H-$*YCb_M8ig|y&6n;eP%;Ts~WwJke2mF-i5N_o%1Iu~o^k7El z&}K+LXpPqkl=iXEmtBaoStEIfM4u$l20rP4miUyWOj`^iN#_&vFpRl{XW^TP*RizH z6fh(PJ)%zh;Fx_+QnZfx8pQ&RgZJ` zCn4DQ^eY+6Ws7^2(g~{JgNa|7F3`~kEpu3+ElEcms&+eY%fMo|6``4?zD9~7AWy-Z z%1LykwVFd}DxI$N{W~fRWdSzK#F(JaI~Z`42d!^q;4(bzvz%ou-mmGXF-=aq zm#FYS(P$_$CG-$ycmvahxQHOgMj5Z6l3DE!lJL2CZIQOyK+8@vyN5g|8skqvjT;a zg^)NCT6z$WL%KJwl2BIQ+_{lB^Rw^1{^T!y^7p^|;(z`Rzxwk({q&=cUVroM39D*A zj7#V~n!z)N{Y@8eh?f%RNA<()I9@%hch6{>k8*6;2^h96fG)9?jE#eJJnIMq^x-m= z+HJ~srK%V_djBi8yLq&APA0S`oyXVH>o`rjJTo(K-@E?3RvasiwT=}V*!SGnwJ~8{ zM&jAgA5ybkZHd9I(_}JgbVaK*rvW>^*%LtLGzbA0ex+8ty5n3sOGB?Ev?%pbx5Z~%h#PBxIHp9Em zu;6KgAvigYH4gT9do%b@1&hwEz4Ma0`wxaBE0ezY&n9f`R-VQcHG0Wc>1WiIXH-Ms zXu4Kj6FC##Je_Caqlfhnc~5Fno@0*NL_EM_O%i*{hdXTKt{SgAQZXs9eb}*as0?xM z8s@5l^a4j5;Jyc5?T~tD3#M@JVGC1ohmD}UEk>e$t~ zch$7b+d8sh6H({cw%S}>vV?o&gI@V*<&S)@-IGGT+ytGzqyZr0^*w^<|BcEMW|$Ax z{JCD?CqOzxzkSFOT&&gcfL7!sddTzH4A1a^Ml!c-z3_sRLI=V$hUMj~LV*%%W~em_m9t_y=v`4`Hy~5CWgIVg-&{tQFX}?|gbbpYC~{dEdzreMGZ~M26P} zL~YD5g%y(LkVA7Y2M+$a7HHNyEUa#?MJ*FDbyJ3QtJ$V?k!8h`e`~R-Miv8=hd}{- zSAd0ac;X|_0hih|sg8uz!ZwHWO(FCRUz!vbpMFu4P<_;uEu0j>^bcHotyH|d{!+h% zLyrwgX?E4-6mG177lT)5Hrk~FVkIRy;tfKUaItokO!-b`tw;Mx7jGoGvFAfsar##%!=hZNBK+>ING?gO__M- z2;pa6+^;JN=n+Qik;URRiOW5Pg;OT8uS=QQ)=ICf)ll3VNjY#|SOy*eay;3UJ?N!2 z<|Hz$vv$Ai)6&~27*o=1AhrRAAq6xWLqxFBC}1&FkfkvYGqwTU0h6NiMuq`}CVkN} z8I%^*va77dMoC4&wY$ODIId5Ur!eD5^KFZ_Cq8qZm|V2tXZ5WMg0Cvk(m;pU5Tp%C z;0gd-TWMqq1#A^K!_N)cUDD4+I{^VQhE=(so|*8wDNWk#T}QO9$-*T$!>sBN=>_a7 zft}RF5R<4K70kWOfTwsk3kk5-vuzdd)C?J-0#=sE&4e<~Qs=8SvX|Ws%#3ht4zQCX z#)AFu35meKOS!WqWYMUmT>spfrG809%r(ua&ll*>#{WW?lYR`R ziv+N@e(t#Fm>IG*cW*V^b+VJLAh*PO&N+2AOvt*KQEW~RlD+I+@(dt{KMi+-MR%1m z#Ened*^lY~BstFEb-*oSuq=iP+d}Pha`ka_oy(c2$zY1!cvyjR9ZMVP!&n@yZ$vJM zMD(B_!6jWeYzmKt_S;+MpY$?LVs1JuF5%$Qh{7rB&D$eluuII!dC1tOfl7J<#)UNY zgB6H~z4Q5gf4Hqb{o~Jm_vP2W`t7?}8XB9ceF*PCKcK<5+I zRB=6*NkI>l*p}GHy>UNtakuX{j&($}TISxlBk~*(&cI<+GA_yFhKaV>Oh%aELb!?r zMCgt*^j>fS(j)d?9$UQV1LvY1`uWp18rLEpX)N^Bq%ns**55X?)}&v zj$j79r+II%H8OYB4o*(lhyDhuZd@+&79@#4q8}{KpO9M98RTh8dS*oEmW0w#Ilz(` zcY5N7Q9O&NXg?WdDVEqVcN0@$Qk;d^*LTZh zg7l^ou#60&X~h(MB+O|9^eoMobEFdrN|1}T`Yw64A`NMlavf94N$ZU|5pf)GthFK| z;=c3go=?yF`P}zfd9N0Zg~Zal?6RY3Jo5k*#M3LT(vd(9hC*nh!UIj2!Or+p;!mdo zke?8y~3~QTZSeB2ZoN^!N-nCuPf2L7O6407KC_vG$2D5C2 z-ee>^DLL*?Zw%w5!5}4b^V~AYLXPMf0hQFPd{P~~M<7wZYMn--xp=*Rj*T5pIQWTXt($C=qv49=Y5baV zL#k(Pmmi|jR8$RXsw4sap=(_HYDR8*nLl?`9`KV#0vzCq5lEXg{Pgl=@5-&T8;Lq4 z4^RQ$JdH*qbZ&Cos8|0TYfIr2h)OYBg*;-!DhDswHN_%T29o(qCuivTO|;Fs>I-sm zku-&qHmw$LS|iaa7I5;z)_@*qkoWkf%34TT${Fs{@y=c_(o$HG5DeP5BwM)vrzh$= z=jj2(h=_9u6BoFcnA7a74Zvn%Tr+HNsCMq*jHVc#kFsCMEoO|)mQsDeC}P8!A9b0^ zaigQDW}l*nuH1HoE2+x3Hb;#rfrgzx#6o22I22@yQVIu5cSBC+2&Vl?TD5i99lx$KG9?<8+Z^*%frM{Z5Yss@}OaqY`&0ue9)64m5OC*?F z)#`ts$1qSd(BbG0xEz0I)6MBwhMj37Sy~=jH-ua)HD%eT<8uoJ^0HJNDB4&x-%RiS zV8(}*#u%ZavW!J0W@e5N5`+{IO(;6TzLxEy_Qn@0qcCcTeH>|wj zDq-mc7Pkay=}w2%Z1eHqc>VYg$3E(O){>|jha8r?x{wGktFOB#LH1iA!+D0?L;zSr zkqwK(4Ws|Ed-#{^yNO=NR?}ky&~6TA%FJ`PMAZJm2rfTHpWfn-6bZ z0m;LvR@Loe%rG3pWyBr69F;Udqq{DNxci94fVrr&E;lRIP42C%LSi$Zxi;vURsz9S z3Off1l#P@WJ0{nDaltbm0mOkLnV$?#DoJW5`O?CQdfl>Lkz4c$m(c)qK#IS+t?K#A z6$qTMa0DXO?N||!D|g~N_s-p{sZu1`O&<-cxDfK!VMjB+q;|D>A>M{wyA!&}6CnVP zmJG1Rp_BFTirm#dn2pD_Ar}$lksX0-HinEq?p$&oR@^&q6Bjl+HA<+F*yZFlDO(SuS5hOm0(2XERN4y7$j{;{53Gcs$l^?US#WtT_wYppR`0rXT!m zO<;`(wz&$uWwCz{KEu-tMC7hb7>nI82GBqX{R|=L*v~Km_`U zDk)Dx0&6K*qvoT5*tBD}YmB+*is<+xh^|L_b} zJt$~{FefhXYzi?fU+Bf?s{k|{3)023s=@Uz;f~2(jbqeCOeQ5I>v*JmP4=8BEybj| zOinY1SXaF1u%<`DN%dD`CYCtAScs-4yTY)k9Cm#T)^Qzn*b~e1fpE@%kq!*$rmV#= z%3s(+xIc0U;F_1A$ALzRW|BBRO4ylT`hBYDPpwaf#n# zCT(CTuqYVfqHMxlZ>D1Z`9E^);*J+j8{}xjFLX4q4O$Y^t#?e_ zbHok6G!H(V8+UghR9-YPju=rmr&SMz#Is-YK@Y46m_QfBj za-*}=9ACU(grj*fx=3RABH%V8SqSDrg0Hm7g1bW2Uy*8$mDToyr>FF|+cf4v%LKjD zfic2eYn%?s?2`HuzB!0HAdVP{^qXNtu2utyI6(u~EcwWWsUXKg))BOF2)-VqDXX%g z8;PkK+_ZE2i$_@_^d@6Pk(+E8(!V2A{D~b#MnS!7xSt?Psb_GbqpOO~z*^Fm0=4Gqh-M)V!}HHK;{x~o zNq!B2lAUQQ6Fit}LE7+Uj9Yn^_eqygp zwCWJ47zi%SWd!TgLm-McNrbK;L5nZKXbni;b+oPyg4(g~dFR99sxlFy2Uv#@Y_KdK zjmpuC0d1nS{2o$mNjXlQi3=#)LVa~I_ZolXs0FD@z0_4iA4140`Tua z<3d?;$bYh@$ESGr0c2KWPcRX!lY(RO43KcVC~3(M%2F0-RN~ANSg|8wMXZQe@o+nU zm3yB+35N#4J;&?6AZ{^|H5YNvkU5n~Oq6XMKr=E02>-aWwY0j<%x77?vZYld1SOJ#d42gFvCscsQ_2}UDBe|`HUb;^mrUf!QF zScXHehF2A&R6?9-r|JM#^J;FVf$m;lU%jOt_iG!;j7eq3rARDbExxrH5$Dbi&-rxE z=X0NDy%^psB^CJWLCKmE0j+t^kS(gqTaF|3q(gSfHRvBsDY|0jif{)kN#1zuWR5>1 z$ym!rhbcg^$yDUmn$5D3RDqRp+UZukBqYL&GmDc3HlXD(yAwLc}T zB*!zX(#=|q=%)pldt*W8mp832dnNmmDUa1ba_DJP}AWZpc|4VrRPAWbJ*1VPw35dJ&w!>%87}p=+Q^} zi33*n!<4_ExxemXTI5MFTk)0{6@~dGd29G;Ht0Yn9oRhueNbQ(a;o4sq715-ZcG{z zwb7QQa__FW^4I7TpiG-zUe`gVtlDt~>N740?~ciU3wP;fNUyjKFE?XnwA$M)FdaR6 zL{5{%&ur@usOo<&>-Ay#o1f<(HZ98bdqo`>AY(l3s@5KhEe~FfA(q70Q@E*jCF?!83M;<;2tfriUsw6GsZ1~u0=464W|mVd z4Ub+#f<)6-w15d>iL9-9#zs|nbI4usBmzE*Svvq`cE{Bu5}A$Q-s!t`$f3PRWwwW* zR(~#>*B@?*(m^1QOr-?*c^a9ow4a{ApH*Tqy~&)ZlcY2(kJf8KBNs)F(AS!qT@1eO zG>uUb8Rn=|mg#kjLX*XWaCXeJr`p}(SQA%Ab^8zQJnV!F?Sa$l>8 ziKH=HLqDS@TXv0lfB=fG4 z)e_(9gP0mZ6}rp=Z&oZHGM5Hvrgq%iRhTGfh*0NtOUmXIiqbS$o$`JmPt;im@R@If z2kY5K2w)Y>rT|Ll8xIe+b=;8q>FN35RlLE&iumr^$M3#!y zlCN|cW9xUBKxA>qXy0SC3JJvaSVgfa#}Kf@@Ge7?wM)5gR05%{hZWj&In1*y0DUcN z->r!@#V%h4y3E1&z0VCOcj91qNNL$XM|bVwWMiv>z@SIbDVd6$=efO0b-XkcV2E0S zZZmfmK^DNVXMjChBqCVXPf@!07i`i#sUsi%WHFq}2h` zc4mRd)34i~SPQomYaO?U+uE5p&)lf43r%BreRR4xv)Trga^-offP}2@(3?g>>~$!@ ztJ|tB1f#zoER70_NzQ}@!sf+OuI&RBYo{Lmw!UMG4#Y;|CXa*&=rD%SncHIVvvixd z%4aNng!|xv4yabRj@Gm46;5AAj2ibx%E)`QKQD9IjW@=q2bEoKSP6%EGS;m9kMlRzwKw;Sh=tw-sN1 z^ZfX*UOlqoYO9(6C6h1|N*!}~Lf$+we|4MoaM_|o7UnS4z}}5Q21d)t6qu8k32&ma zy=d6rtJ(1BA>^oJjZdllndxI_cX) zBvkIGH31!K)m4|WihWVp7Dh5zyI-Kwv@VVBD-%LXr;HmGg4;xxob?V)cFM4 z3}om1bIK%ME)($)oocGIA=woQU&<@vd!f@+H5qwl&Jl!E>qs|Y#1$&eVFp@H-t}|& z@fBcQ{;)i3MY0J8h->2>uEFjPEDGI2^|B^qt1!aSy(9}Osp3*j57i|J7%7Mv0e@gs zVxW!eCb6SOtoR84yY_9+*aCkzt3UW?{9Cfh7vi9Yw;X02B?VsLo|X`yiN3?Yo?s#; z=|McJzcf5~y7cf$-MB$rPtKRu=$?Fqk^p5GZNt;Qg`6)2$S_eqrSgDc5F=2bcVgluz;YhPf~sdBgXmi*C-I0}{^{FCx)?ql8hVn={Wc*p z#PwTX{ZKRc1oYN{FmPdE@d*2i$QoUPO_YMM}5Z(0X^s*)n(H z;o;$nZ=Qeli{Cun;wPVd@{sYxS5HqL-amhcw~z6?$JhVx)zkZZ#&L*p`N6TWO=+z$ zdouVY-42p<3WXsnyR)cphB1Oa*A$%nL#vn6iq=DvFpUo8fsu)J5(etfR8Uc+08lbx zxU*^S=%<~F?-bb?XvyAu4Ht~c_A=&EhU8wEDZbGuATP%AJ&(k)71u0C2~{KwRmp00 z3u-^03GF7i_5G@NbqfIHrE8K@BxO_<8sNRPMkTn$ua(M%FvWZTxgt_K2nYlBND{veuR@@>2D{Gg!y?H7{1bBvxX&1aj(W8>0x* ztSXFzk=+ItND9(>$qm!x7nb|L+J%!MZe-y77q6!9By5LI2lJiz?bE*R_4Z*s+~R(( zYS{`Et5eljmOgsf3o4LiN>^-_q0!M!k|T-)+j7fxp~HCvJSFoopaem$EPojiqPcd@ zxx`}p=IyIC(HW{<%a4h>j&yUXZsO$mxCs$2p)1X3n8aYQJjpGZ(XQnvTIaM4_zK5t zMH4}nveR`zp$IuwxsREO0V?9@e#XKpFtjaa3X--U8p?)~2fXf?6)T)HqH+*&X9cu` z(+P-T%JdiPi=nh38I+ojl7_-G64_#*xWvj7TNEM65tWT(X2AQwQl_jjTaV4Mh|RRE zPK%i{t%%zSM69aE?R>uH^L;;`nRN_shK^k^b1K*2!gKxfg04xbLc*Qh@q1Rm0cE@DxG^+2GL~NHqs^jrOJdg@NiBK;q55Eqd3j80X`H)d zEA0`#LW36rZTX9wM7SJQ@jlu!4IR;QaZn~KqSvME8c=>nnT-5JSWq)d3kiVUnuhgJ zfeA?%anW916HezGo^{_YDvP!#^#-u$1>G*Jf4GA|vjqHZc%qrLehw})py{W5O@0?r z=+Lj+pe;to4rP&r8nh}i>a+)Ur0z#iAR*Eg?hP8?M_wmE`?;-RV@wUrM@VNXXmVal zoKPn0pC>BR3Z!YO2A!UNN{VFH;fOZ*r_`B>%7t9KVZ|c|UNoMV&uDp@;z9k;MQ0Md zCT^iNn^kgz6%3>`>l;aOtM`{a`e`-GyYwYPNx2>FMv z3MwPBj-k249zsis`>PoQ9d(s44lD0K1`SP*E>Gm!EFwd6K6b9SMT15wRPI{xFgFO| zZDqXXM#kLQr@+)*E8PT;SsibizZeiZXT~AIqA$qNyEfzDHf%)~mpo)?xD-~LoV1(m z(%d?ZUw`xTZ~otZ`!~P*;(Ooy=$F5H|G4tQ)BS$#U;g^T7hiqy=Rf`Ap83nK&b=2_ zrq5y{gSr&p2VTMe(Y6(H${ezm-)-+C8I_}S>xgTreWRAaP7H|#L!+Z6nosj<9epUC z4McTByYeNQtm}N3x3R6KN#BZKx0dfMvYz8q`e03=(gwZpRyu3o+Y$G@7j{Sh<-2>= z$(w4ek&w;ok}0kBn3q4+Tb{H(l}wlRLxiXYUo?~YL>dbM_(D2&kD^sYZb0-Z0nD|| zG%SZs;c-Mt<|_i70I=eyzP|u_ESuHW<5%Y1zhx$wfODj=>eMUvY)?2dzsaPzSAEY6JD%Qp&|L-J{XG5=Q{QPH*s|#3hpZ!vSk8w5)fy z>eW+@9q2(I;qE!nordbJ#1Pa3_RPX`hZgJQVFRHi169lwf>=$qmOv)o^vY_TTfSSG zba!Dv@kX4fWVRGBBTe9BP>{}HD$@fmBqyyHI_U|9pQt;Fp&H~ zXg)nSSTY1C&Z(YCA|o#IZuBv*CW` z{oGGyo}0&fCr~fp7cttv5ettaBt4H34qj- zeJ*7vBAG2XwpxdzlkQr|dYvd3H=T_#Me8x7{AjHDDiCsZf>aj`Wlm<^7?ulzWbGC> zAy_%mm~VQ1mKjo;M)SU^?aCAD#PC3fS}2XJ%U5`;3QFiPbC_n}f$ERhs>e9A$~&e^ zNY=+jlkF68VxnNo({+nE2v~sHWrLPYQyIS;E^0jL>~3TZG?oZB%GV$^FM-`>(7AaR zsSJH{q2HK&qXq!PLT+E)NmYGYevm!L(xL0Zvm^&=f7%a>kOgESgGNK8y^YoFR>ONa z#t1Hf+0tfeo0-)CElQ+E%hbDEFSDUjPlPrI$$5$@sidwtSYr3#ab11WpTdQkZ3Ozl(vhokk8B2~eea`9cRK4RWdhmm!L_j^9eh`s^~}>Hb~l@wA5< z#P(O5SVEO7dwMo1N`)X3K?9(mqQ{hi-9dGvO3g(qLBzwlli}N4_0Z(ULDeOoABoHm zL{41{Z^%(qk}{M)P!+DirEjfDMauzDX6*A!pvx?28vZ4XkPeld4Faw%6~x}PJ(x=j z(5rXhuwfIR{S7i#5)kBuIi@0>mW&L89H#EjX%L8aoeo0*36~E5Cpuv+)na#motl&x z$UvNRu{Ll4GQs1pg^qk>ggXT(^XcQ~zFr0w{@AR~c2LqbRz)GR6^4P}9k|VH%)8sD zqL=o2CeqUYVA=4@AWFk!CsT1f-%Kwq(a#c{{L1K{0T6`zJ6WP#ZrDWh%(NgfY$z!$ zs-vAJG+JKVz9)^QnwiE|CsXN?MGrvpy_L+uFN(t|SX%x7z;~-O+|;V)a1!m>Q6947 zgmp97-Js$1FufCnzF=8Z@Is7>gdBXz$o1Dc{{3J5>M#H9%iHVM-`v+<|MIIJe)916 z7{~2+|KY>m{`#Bmy}F&)ESKztUYgyAm#!m3@Dxst%~gs3^wR1Aw_(y6hjNGPJlNKY zz3DhJ7a1qGW{4T&(N}QUt^a53>ADMp!3Xf25{bvz&B?H&;)rX%gPKdnb3aI8Lpz#W4XRctEi3YGm}UD(qaRdwGbkC z(&t9RWZnuHyLnZaXPD?vk)akZ!SJOdnono$5BT^o9&ao5?jF(x_ATneaz%(K20Pkf zaWYv*xMi8;oOP}%n%dF}6{!gbL0DIdq4G3>5r~P)rA2|6gH;5oW7)0`M0fW^M74!( zx5m-q6KRbQ!nKkC#qpdjQ)NRPB)v*W9b8!s&tZLDo;7GR?{~#BGt?UE*c@Ehj8xza zq2q}DLON!Mseiq!7i4k;WeG>*R=x0BPAX_5i;;KsVxUe$;ty-BJ#L|3-E_weSzVbf z{FpuR{;nesv~`$_UdDGIR?`hJpNu2~N%b}LH;P;c^7P}v3gp7#xfzL_`Qdrr_j$kL z+}J)3i9Rpn047`+6(dwCq2-dt&lsarzgCf!T%*38Z9(!>Jwh0^I=Y3pV7a<45iWZS zf*zxy`v(*sf}GcI)XPsP05|)LNgg3H4p(IeuG*{)5aZ#6Q1!p*h5LcpCn8ZVxyP`j zHYU+#%~xJ!0wDKmu*|J~5)z5Jx7M7f<5X2=%?k-n);d-M-=|hx$pc(2?zYzqS(igo zCBpYUjgDOxyZtu@A*H=Bi77KD0~Ng1-fD8M;eA_@;&Y{fhWOp|%)%av{A=u}oQ2i) z;h|l$at42>{t}H!Y87&Z5lik_Xs}XYppOrybsGX(n6fb`AW`py*b@V34;rSf=Sf!H z{iF5sL*wEQi{j@~-m=pE0bGU3hpX5QPh(^=_v?+kngSIOsa#5jDR$wI@ z=U_Za_Zq@16}dig>6IOkz94CDxe16fWT~!Vz}zDk93T@KgTD~Na4|U()vT$$QF&KI z8qp!aQDsKP;0}zo6Hnd~iVoo+W*5g1Af~#ncJ`YNCq^W=cBHgXbVi46EBk>$W1T9M$lE5`coW|1BOhHa+iJo`BaS zpY%UFa--4>xs?(V2dt8zOeTg}Y*f1>gkOz>TOf7-zFEP*$K}V>4&x_0`Z6s^*|Mc~BF2oTbfBh48OZ zx~UOw`B(J{6v^XBp~94=50QIg1>QZ~KmX$EdQ)Q^@!dDCKl|+M&iik__~yLtuRol) zt=M_L-{V%NrjZ*g$62~GnHkJAsYZsGI?pQ>UmKP1n8bu$x|E-&96-L&|1FeL2xV`H zQelYXCy+;2PN_Ai*|}o?wDr+{L-0sf9IcKDxt>Dv_hi+v#?4zt`J#s|AL~fdb>G3T zB9OSBJC390CEq4hse^rG+_+=5^b5m>>aM!66iwP#Wlw)Re(*s-xz9D%jshIKozGxyG9 z58cI8(?lwIh6W?Uxq~J_mxmY) z>)4D5;ka;#WRCqoB;j+KL6&*a%n=L`+HaGo=&q=nN`y8u(oL``eCKXWv5>X4cf?vv zs^pC+X6?v8M_^_FMt3E237saLMhrzPdV9%h5j^$)pz0+9fD>ui>cLSkSmPP*KEXqc z_7GBxh`cAh`f&d!kJk??GS7R7uMU)AUk2Lkbj$R>M|!ktnod5ETp*w?hUC_EMcqXp zGK{9vTc!8Dt-KwW%mChHQPCuaPKa1tA1ogn-a51Tat#SUn~WCC+p zxx6)k4a?IDL?zJtEs%N%ApF>lt;5(ZGpy+^Op8q0*ZT(?ACwv-{Ed~w^a-Uhr zi>P;ob$MW<*m{;+4=NP3yG86sS16i8HSHEtXlPSOfs+gp1KETMPc7nNLb-yFSv!PQ z=s7dbGw)~K&wSpSRS}}KavW+0Xf!F*NWm^A?D%MKwlD52Sg4`0CX1eWknNzQUh|Vm zo!_Aq7N7oJ+p|HxRsldRTu&&zG-}_lJJ|wD2;F>A5`zjTXm3%SqGxJt3u`2Z^lqoZDQ4g9 z*=@fA8b&=!1rWd>nqCjoB324OOQ+id@P987wVR9n!9OSUUW^Mn%MxWC6$ZXi!%S&lJ< z6=rXd>WXck5GF)hJ48jqyq_l=4Ltn(`h)WWYRBlmClJc-qt9p(&Oz~)0SnxqMfV>v zA9p7}IHRA|WSGPJeh$~!sC0(%Mu#oRBbJqU6^LNeLrB@3=8iy_1Ter5Mn7U;>A)7z z;dPAIK%#(59J$_7IAt1Pz?{bI86n1V^pzr&Bd|^bycijjf;9#1Uuj`O0*7!%3aVpt zU7G2sC{^#8&hV%CcnunD1=%Y%TC>*rp8*}7lPN-df%8;mHoa@q>1f5_2S-a5!i(&m zg}`Z+(>1}NNn5Y5RS!a?kRsGD0AKEjz#grsveXeMalzOk8;cbsR(xy+6~yhcI*`4U z{D*{X)uF8}FO^8=WvY~!WI5H6;^7j{f9?@8Eam{fj&D zesg$>aoRh>*fEC5REy8D_F=!q)dgDB?fpZ%4hK$|MlpH>iWkFMKl z`!m{6I7w?d-pEMXaxfh^?ov%e)hrg+%)S!fX0+yz(;D5v%=U(_) zbCjz|$+Z{OYWvVHYSDv|TWy*lDp{9U9JA3QfE)*F!s~yw@>bC{ERHS)C#^z|P+X)v z0yeqjvPLeHKRIV&bD?_Hs(CH7=t0gc??#5qgG(=PR+PD7Z8n5K7N4q?ai6^|;9`t1 zU~?_0p-gQ=BToY{oC++5ATC-CjlJ`-;q*6l{C zll3Q;>s*ia67$Zg8`Y^UuAsz7ve&}iTwpBj)Rm=*;8I`tj#{;3A4&HkQER3gfm+F9 ztjbi5nRWy-U?E|RU!v-W-&9f`Q3GXZo23RjSv`U&?yCLqMi4|`V@LN3NnN4Rm3Hz@ z^C4Tza=sLbnPSHF>6dhciuB9lv^F0e1qeD#YhuWl(OLX5{FHg--)tl_`tf1mpR(;F zn(eMmL^OW=Ob;Xf)Y+w(h*|)ke`r-XSe_OU0O{sh0%!dZ7avnA^oX_UtlPCS@0sT_ z?&tY@?!B?il*l!vZrVZ|A5}%qEiMJGNV(=g|4ps~8v`_bv_tA2!48p5un1K;Lln`c zUo?@3+K-y&^9Xg#o8b#P*Z8=37okeHAzFZTbpnz$T3d4XR1*R4#lDQJYiHNSpOu}8} zliVXr)a!LLyAp52uXK${hHzP%*;>I2AhlDr?+*YS2RK^>ED_Vy%Pum_F<@_DE0kt> zRkp@wOhjgE?RBPFaihgUDH0-juVipz>TMFz6r+BW78zl$&qu?4^!5eTl8m6hc!aDQ>BKd!xz8*>L2~!<4-?%`{h^f{vZF#Km78`PyXVk-}&@AZ@&8G!-wZ{ts@X8fPTM} zv|NBD_~UlkNo~TTfx4U#sTVu}n^TPOm(>tGA=nj8ikDUMP9kHEvm9vhwP=?HFOvqk z=+e2c?Ls6-wZzTW-FCJ_dG{1f+Z_gn8UJ%sao{P6(yY}nrlRFW-p}(`uZA+`pNb;d zgJ;|X9#E|oso1Bj#mAlmg@<8aR%DhNBT7k;$bZdYyW%y1v4DE|uCP(6p?G zO)XHttdRk(s>mk;xi?!I0ucvqL87%7IuNKnxpKW*Z8#JW5w~L<5xIAr2B=0$Ewkuf zD@I?D;wN-eZ1L7ZYwWx?6lzh%?pY6-2a@%w#Mqp|i~1G4igSo{NnUL<;PUOVr9lCa zi6+Uo_*46o&2r9;JTnX1-~Xw`(pKw|aj%*!UNZPayKC<4I~bE{9yJGvmSxewHY zijD*kT&f#HNz@^b(1uO`_q-$Y!x6qClbmP8!9l3{TliFmqKb{viTLehETH9@Mg(#P z-aYMo?vGv_#}PQUjj7Ri$iFhb)s`W12qe!9;nhpo&Qk2vuM{Ivp){t#3u{6+7KO>v{;DDwJ2u~JiAIwH}Nt|KZ`h@@ct|=XAC(8 zZ5Xb_0dP|?dR>C5WB%tYu-mz5sENhh=xc+O!i~ubxbLu3PfRthy z>=SxL)ASQ#F-qiI0YvYQ>)}o5A$2i~jSNBQx|DLUYQ0ZR+EkZC91&{;GIr+knfpBN z8|RrPV&`f54oaiIM;hOL0TMktonX}?cFce(BIb#*pclbZ!{#f3N@6l?lkH7DuO1%NV|b{V?f=ystj>7-PMkL;;$*KVLTCoU~0O%#EZX=(fdXN%P- zSk0kE)LZIt#}gr2auqGs%H76j2GH@Bvot}1?gd{p3hM!2jpjPOK9BPBdQ=QkN!}aj zcj6)J$@GyQmS#AsZ?c8tX|drz);8_HS9Zu4-UVuVkG`0Io4}jLNPXcu=4}2-7e}R; zjR+m0&HL1J*TUWtArNDbGD{nd1ikyn;B*QgF?fl)-GBizrVk8e)%J985#pl_w}_i; z!{S%Wyl_#~7Zjx7&?-x(2CpGm%PpEdivXe<{w~CWq{tf7%;}93okk|2-WE#kgeWtu zqT@_KMb^pym2~1-VZ*qIMhKUwVJVaI+zFiE8gDQlOuv7?tA}dPKCXwow}* z5@ve*QDHAV?NIRNfRt70p=l8Cu0*L;N3-Vc8j?FW^fk;Y zEL^6T#&3l?u^FW%t2R-lxz^i=M&|S^>I+1qPHCiTMvD6Nl8Wv88M%h)qBUv3BsNdG zMxjY7R)FWg*s~uRvKNorw$^6hLn9Z$?d4tX%FKm@pbYZz7PZ!dYR4h%C|V8g(IOgt z5%T{TNJz^x(Cyy#LY8(~#_lf3vY9%J1<3{dXxvp#ABll%qH1%ZiFI#8=v*@eQysg> zST$^{r;%g$6ToFV6AGHOK(-jN8@+X>`7X{DXU|7tE$zDu@ zNAAT%0(qNRB7j>XjsQXJM9O*s^xm?Q#U*XH&|rZzM+ARPTOp9WFqLDVy`KjqTKj$z zo|)J(NK>x0o_(x^wZ3_G|HT*I{`&VHp3ik=zI*@v&ExH>_fKDZ_3rC$KYZt-&;GZ6 z{*(Xocc1_Jzxn;Y{o5~p{ndwm^~c}+=?~vN9Ot(mo-@{gl}6)brvh|9iGx78{#OQD1VbHg~+)Jcdr3WdQQJqka^wGC2iN~_6V=2+AtJM z(ur;WS?7v{x7Mp`He7o1*}GUuXSYRd7cN!`>tg)`O2jS!Q(M215&G< z3TcfGESat4_*F}s)ol?9rsbem0!NNs?q^gm2CMSQ;#ji=t*2$C)(dGig}fzg$$J_Q-jRn$<4q{-yOdxa&l#2BZOt}fl7^3EovQcoTK&UiBbz3Qz6x8@6UiKS+ zRuQ_bJU~?ILi*BO1pLi7$&s_FK3%yeZ(o+beP0JIrDS{+nN=H^b7bqg23s|C*B3}E@grW-I#(*0}QK2;kY&!iP`9;Q3dr6MS@EqvIy-{0Rn9*@VWoekH3ovaoH z-asKw41j1!01|(iu{{&3yQH(CGq233BW1J@q9#3CC)Y}X9wAVr^z}Qig;9I1Ubk$f#G1N#mHQyg2xM*@kuxa8*mNf~XxkY2{x)uP19Ju#Jx@?spur@V;3e=fq1Kx(Yw5d3+gePornMm$hg=&LU-0n)f?1|U+Ru1yG zkg)+=5D<<a2Dxl5QSmtBopF)%f0rRE+Im$1ff)*F5Qtyk2j{8N=j;Jqa&&W6qv~P zN;TcF2dRs9bd2M}go`u&mNY_@4L5Tcg*1o zndr&gbN-5}s*!>c+P55;IlL$#y~$+-=$!!Np?v4S43c{F6W2Pq-RC9MqDnaVpL}6txm~7AweWU z3tSMGk$>P)oAXI5HJQ+}m>h>buHj#jM<!W zol1`(-k^xU2PDrpX^~2@CV68&Q7EkR7^3z$Wd)?TN{Vrhv`9SAw2@0dJyv>^*NKfY zF;YZ2d>0mTc+d!+A(IMC-b86{Yi72t@{iW+LVd)fC2n-&t;@?I;CqamD-=7;qtcBB z3B=x*@`lX{x}Le3ZJ~=FTb3bcV__c zne8im2U(Ye55G5)!Yh&c6zWFsg{%?vEqtbc1W_(W89g!7#6c^laGpAYu~`h->xtpX zct@0Omgj(FKWR@1=UE6J4;u z90~{HSo%i6+3$QM}ae^s+8U~ zU3)c=rBUrQPV5b6yZz+budV&%2$^Ol1=-CPn(aoFl8{;m5@%Bs3&30U_wGM57tUQx zc^9Zh}QdZxWNDu6$f}wllFw4==>;%7XP>aNL{ALIB5^1T9%8 zgm&oY?_|TDqE$biLnfb7!XY6o6;pP0#V1`^ni$HemRtbH^u}kM4Gs^6y=olu=;NJVTv?A%X zmj|$Z%B3w{OWYez3#nSveIBghy^JwRRfxE)iaxPVJmtQhdG3AR;uAFlZQGoJRjRf3 za)I(q8AXWy5lqS?mKv~T9;zAb7H9Fx2n1HfMnV(1K(i7DcW zU1^e--3A+o1KJx>?kRS-85TrRuydE@Smp{}=ClEF;iY0eiD_z)t|LC1Rcgg=t%y{j zM0l0OSc3}UPAe@{GvN>=7*W}Q&lI%1uj3)9Uq`DjO6XU@?3_Mb$TpUa6w1(qZySdc z5$nH{x{QC`(vc6+cEK{sA1anry!IA9mp@_`JoQO%x|ANbas`aKaz8iu@j%f}p1BL^Jn#>PGS&8C?fKckRw^3NnW*KX2P$qHTrro>`(B zwC6cPT%tnw!2-KhYh)2P<>^XWW`lvs{`@z?RhVHLN>*{p1 zD0`qBY!Mv{V6ffd5)#HdJwrZ2X4Bwqgpr1Y081e*$Lf_Siio4aaodjqiy>UhB(I}! zrmg4bW&r>9>U%aCX3N z!_>Vv?V#rJxZS>fcmMm(zxl-%?@p|T+r$0-{22J-KlG{>e!#a+K zBli7#b6fxApM3Atn|FWntKWb9;r{Rc{`X(MfBsj0^4a%3di?s`(|zwnhZc1p)PZJ~ za0mb^oWac?y&F&c1EK{Xix<~*Dzn*==eZB^z6 zwiZUj+Jlb3WF7`RU%yCgc`D8@gfp0(D_rvk(F;?JA zCBLEa0gY5>tr}Qd778qTfi}NJ(MEzD89{I{p|Ic5XF|1_q78IOE$aAnNMVkkwli&K zp$=p&5q5-6?v~<3<A>v6m#L^qmaB^DUFWhyogC=8jN7O!<9&uM=h9ZDL#umSB>(x=-P<%(Ro<3L>E62DV5ho|qgVbptI zdRdXrC^+BOS&vc;JPQ5bbX7^9Vv&}KWV6iGR6^j`a(cO&l@z^%a#M;u3evsH7SJ^5 zI*xNRjtv2WosJamL`z@K#C1&c`e=Q`me_WL5QBvR^iZCjGQX5@y(IhhJ7>#);Z)&?>*m03sG8&-RHc69_VU;kn`2cF8-jtI2nYdvn5vPd2jCs#LS$0sTygrG4#zjN z7RbwMLNw_vXXt4eRY~L)Xh)2TUirugPz=& z9wJ}i2#s~sfR~w3tL(ImY(tP4+fE!z^-ysH4NPT&!qm$LGQa9cE zSjaej^X2=$`G>E6_w93aYvl9uciuew;~#$flkdNI75Dvo=JQ^Nm21U1j^o3Jr^khV z`p4gW^RWKYFMt2Vhv%RD`rWthfBmoi^!tDGz1Q#FKi}`U6xS$8(ZK<+ICN8UU@Q*DC1}HfX(GyA#M$-V33bHC6aKMi7U_-wVhf1Q4Xh`o~u zQVs^u<77tS_d^&1w7)ud_-0~PKDHyZs!&uplts|U=m#`R&K1B~s=gN3yMx#Cr8dFW z>OukMHlK^C_=chfLVH!oIO z!K&L4756>+T&vy}tq#x?Q7>y>m_;tPn;@8lXO#!5CRm7o-U1H`5l1X;li>#o57=Om zOSFRl1%V9puO;_cCKaN2i<#9Szqz8$R!uEnb=+MM$Vf!mK2P!T1`aBg*YAs7LQshEYZ^;%CuZ#d(C0%tEXcF% zHiQB&$_f9WL_<*l8+d;|cgCxS6)S_~^~p}`xGmeD6*Ph& zdH9dw46m_7n#Snaoj=GUWa_d^A#({!IxKl;6{Jj}%#0%|&l0WL!zA20n*AuTlbPHB z)H~6siOLFO$QKF(SgovkqRr2Edi`Tk5qraL8{11)2rekZoh`^C9kk(_*@02HTZ(?=n;40Lx*`vqOn?{o0LM)uYLGM99XP?L=Y8i4|DvWyD&mNCG?K z&VBAY*&l}}9}kVHJp@oaIO%b#4k+b2Toti0-C74GyDSnUZC#`)!J~*2TP!&43MBL9 zYxoj?Q*uQP(&b$(feP)3^rEMh&I(EPGO6IVbBU(ys5Lv~1SHOzcw|QGe|z{vfFfKG z@JP4b>`;zSCpK~SU*#+$tp*wJC@k8y{;c|(JjZ2u0GYM_YLU)z=ZdHmQ+)};UwC^YQRp<)XlMEuwX#6e4M#C1EW{v-bSa!CNWMD zdA_fp48BVRJPdugjwjAl8B4SmtPZRhi0p04Ef5C{Mrh7G94QqrR)AaiQ7furHkb{& z6iAo(a(t@Wm@Rd@Rs4;yugBKAVl){gM~&xvrug?MC+L#QIGN72G^nus9qYhJs642QC5_^mg}DLcyuHSu&tGk=xY$6^~38uDF)-QaH-XLG6QO(E%5j;9t>N@CQav{0B?%>b!*Cr!W=jOnT_8yLoT9hu zF_Zd8|I{e!1e{Yc{yLVC@-*TFxUmbzX zVRb=KS{x~5xRSpGB1wsA63E&zE9!s?e^xTp!J@8#j9Fz0&FRHbUb>7K(L_esh91z~ z9@HSJUcRf!z{4M+J`Dwc0JL$LCYp^IT!4l6rE(Elkjgq&yq`Bnfh6-q*%<4RnOquf z6HXj!J)QZBFTVY|-+cY;(^>nVzj<6g`tIvL{=p}oygsnc`~AE<-qvvhBG#&!%35(g z-;Z_v$&WsM`{v<4{QQewfBE#wFF(Bh%g_Jfr{DW0KYV+v^TYFAtB$iU7IJM3g4z&3 zFx8-R;5loa;hsys?uJ%E{VN!*46;EpuRm@j)9%o1qAB&*H)xfDbs@|!Mq&SSRd44~ zEGDA7Iia{W)^i&lQa!qiWxj#fAg!j$)p1(~kkFn?S}UW9m$m_K91l$Uixs(P^w4J9 zE?9?T(AFxI$^QiEy+>ZTlf{5G>4_VR+FLHH=Ow`RkO2ES6E20&s@z4Bg`_R0E>bti zY&4lW_tmq~!>G~MOHj0eB1;r<1<@)mrC;_81gE)<(C-r3Wz)(wNq z!>3xOTTOimi|^WyQq~y_&Ei9{r~#v}^D#GzmHJuUIb25MB6YCi(|zy6o5!^l>hO`p z5*IZdJ-KEpM9YF7W&wlFFihJ|MBPZOIF1~1&&2AuL6Z$JypGf}d^;=;mKO?p5upWw zW;5e=Q0PyA3B8eQ((WmS*nh<028}}pWSd|qB{kesAE4wDf|NC2begf*nC4#pP%Uaa zjF&rl^kJ>d$Lk7{!t9wKbbOV}UTXjz{IIk-om3)2)TXOOLk2zmoYkUO`#?xvz1q$( zZ)>)YX9a4tfu~C#a^v~F?`Pikse0W1pRGS@x@1eP!@%V`;+${D%$s?Kx-|k|5onT- zM9G>hS*zds&-PqTa2sjZFOB0(br4gjivLe;Ih^Ucg}I74jj2lutyBf*bE-7n7< zCt`0OmM{11vA0|NooGJ^u$A+q1~`pr#t+u$-AnNJdsA86)M9g_rZR$r?T+ z-uc5F+&qI&3p!%eUbHxQWi<*gic*@gs7QAz*s|;esDZjFD_Z0L1ygY8M9D0;bLI|r zpWun{?K{XJ3ubd-*{n1&q9PwwUu(&gP^#5}6*tY$da7uSi56N!+&R1#3UPIVgHs z20I^Oe2TaZcc50)!3@p+i_59mLj0e)-<%O)xOk%u>1K4<`;O=8LGIj3nPhz; zHfM~l49URt-AY*%G3i_%^0;czs<78XG}`4JI^e-oY(lft1FP@h%PNpbh9Uqg_oEvD zU-L+eDdhHaSNASW#-ze=&PiDW%K2iLEcfba1w)kr2rpc4^Rkg*n;gF!tJWR7s=kmN z>un-QD0H7&kvRJ-sIqc-FrMK9r=eCq_%~E4s&$>J-+>&EPATP=5b1A5&E>=6GB=c= z>Di?RmC33Y9a9il^d#HXAE|inO~Vac`KK6jfVwzmI0g7P)xac5Yhh=nc@DBNKd<|Q z19JkQyJAWT%%b(pfx{)BieV@sCPo`Zi?9&1llFUtz&7Nvr+N(IRi79AOSLDu590%` zOsS=z8Xb@7jxUcfb`Nf`7`l7vkp3hfANhntsMdBIZyTmq9Xy7+0F<1VLvB&Vx-L1| z><1yHv`bnUrQYF zT(OD)M_WYf6%tvrOo_BrmduBTBDtqEC5CiLy_FTiX*JO?2Dr&uaxGN0Wbm?Iplbu5BE05Wb z_=jU=^MO`dcwMeTFbIskB_-!5MeA$!zH0c!Yr+{$3%H~s+?vL zo$6|RB`OqSW_(P1RZ-PhR1c;5@avq9XB<~M4#m=;C9hpSw!zHir01FT)ir1Xy4b&v z&jLl#j|#{Fu=2-@8pz(AY_eqVS1RV zz}&bVU<~P&I`ASw#;6^_w~vT#5dR!Ehg&?D+eO}O|u%xpMjY`DqD?=WB) ztc?$YW1GHRwyWcM^=-~gohe3)V;YxB*i&8;;1*RMc+$c6P;ca$rJ9OGT8*3LApn>8 zO_$B-2$Kwf8d4I%+DkSym0{SYyN!W~G4v`HGgz0INlOWl5<6dGn5=M%c%(X@gn(9{ z?1Sw^9-}YBFn!7B51z6#78^zaUNlVY0w1Gd*n1uC2sB$r%gux`!5vY2;EA3|exhka z9mL@qbP%qb8{(ja+`d(Xm8`mL36DT3p6JR@Uoz(*wD~`S80XHdgvDWI?$N-89ad|Y zVa6H*&4xA5q*zg}gn37HX=z{VREjJQwJ%itSXRaEzAh_G6vlV0Uy!uog~^`d|>cai~>>Vnmb)d-uA@;x2Jcd%LX zfRFZO+bGv?auqss#y;t_hqqQ*Z}%a}(KHB>7VKa0zC|xIX z8W_$}j5%>izIKFYVU|7jfDGMKQ%UV-FIdeA1W|gZnRrpJgYf&3dG98W9fYChf*S_n zwHK%5eaI|QR?c<_B^w`j9Iv<0mhUrkR4-dhV5kJ3x}7Co01H>?xrt~#sLcSD!EbpE zLC&jS!hf?q!n@^F++-ZgD?CS&pCs(Ez$f6zcoV7?Gz5?1e*X?LX3LaAi?}r~Q}O|3 z1AG+ckv>+qP`A{*A|58(MToAr${m`6fU4_7RdR|g(bs)9&a_)WP{ukllDhPZ1V0n> z7L)-*akak4WNBj}rrtS=BkC|of#|#ON*H7hBw1+%mIF_RpW6D}m2sIh>A41>f3iD* zP{<7)(>jtgbyI5qrJy9l6(S`UkF5z?AuM+iVN^?tUO~~jG%Pa&Oj&%uN$oWnGu?R; z%V_?=c#WDZs=|*@QZqVu8h)6OhbP zZQC3ROec0bru!H^29}Z22~vJNU0>cF{`^lqeRccp@4tHZ=JE0uzyAJwng9HcKDxWH z=gS6*w@|5{RD@zPQ*6g*HcXY6aK-YP$>uqLtBuVtX!oYqBqTZaIL})cpOK3eT}Gro4nCh)2p2*CEM^Pbw7o&Z|p){1TBG(#i&n~-lx%$7B$1qLqaul$HdKBae=?3Taiz04ACWV_KBN5YN?+oo@q$-`BP(y^mll5;MD#ch6|lBC@nL$_46P+$gP}sB5Dct}K1Dr+P(pp(DSFGF*BQxbrK& zt|dN~GU-9w=}J!ms;zv$W^4K|MVAU~9Aj)Uz(y+iH;qr39%)wUl&=i#?-jQmwS8NO zKX28NbOWhpR^Gk4B%zY6R>l`C{NFay3S~-$i;k*>f@6mewYC|dVr?n zQb`Z7yr;&&k;$_dBfJcl22)R_tXiu<>RKbLsuFEgNE=`EtRD6c#X~9f8mG8Fh!fa- zQ`u0`{v`7ZD`9U5$z4(@UsdS&H>=Uaih(!-eS%hzT!+JSPL`3%$c90jw26Anprk3y zDeR(xfb{{(>MUWc=F?cR^RH!F`V%P(=cKO@bZR!#7jLa#%OQz#F@6ehQ-m}tM}K06 z79n7>6P+()(uJEIhsvBu=y*59_FE5nJ=g6>XYBTX! z6<)P@GGtKthAOE!SG1%EUEEPXL8YwOTB(i^J`~z7R^o+7jpd3AJYv2jO%v-W=+p&~ zcv99Wi#kKLSCs&+cd9Rk#+aa`^(*L`iL`8`M0YFeBa=8NA!DTDLv(K)QA?%Nx&X@h z(lYyNVI3I_7J)2N&om~Q52xMU6x{u!@Wgv6I@kT10pvBiDawPG0V*^kt`k@JrJ!^b zvC6&V&%{&xGP2B{e=V>nT3~>$ycHbWlTZe)Y}Mc%n}4zPU}m}DS15-7JR}j#SrDBo zti#3(TW9ta+ZY7(bMBh~gZmtdZ5UsDfBMxQ-v03Jd^{{4zr6YJ$2XsUbob(D+qPZK z6C+-N%a}VIb2@yBhQAfQrfcTAJlD%SEaR6y{pi(;o4@_T``>^2{1<=!{_Nww{U@(( zZ}4=w+E_*%T^@zo@V2S-E&~i>W9L~+aX5mk=CZ%6xjLD%dtE`9=xs2Y)8N4LIVU{! z>hfGIoKDgwFSA_b2ssa0t9Fx$cly-x#pgI9x#fbgDeTd15-B|2Z_5~J%8Rv+o8>o2 zTB_>g@UbkHxxKtQ+~2Ox4^R0NBby<$in-2GM|KRbQHGerbc>6&BVj zruR0?bIbNfmTSvZ&yXzlY;`8`AzmEA)k!jZzi`Yf^asEW_39}|6ofNwW&|WkXON|e z!we8sMl8-2Zqp*C6Qu&)z{6_?gAkstK7r#pjLTCRPwYYAiGeX^gHKU$MrdWr24KjS zjXjMh5tXM%jzF|<#U^&s-LoZ$Qt>&+^4;`)P<|x-k>Qeo&dHsVGt{}^aFzM%cDGzC55>+fSN1oPTE;o5`89G+k-jWRKtCBu zdHf_Aph6W1x;Ykj`dZ~FXoG|f7Q42dYeu_|B6qV4C{|nVUk0p~LxZ#?a z!RD5Kqi@g{Jm05*TMZQjvEXUmwAMZ(Emsmqh*q8o$oc10JoG43G7zvCWHn5Ky$2cT za!YPz`I)2FruJ!%T&gG+g3ZJcM{rR$Q7B7QCj2#WHqKTIJ(C&aqGDsAVWaeNY;J;+KeQ}UttEC$iC zbsb#pX33%XJsw)`AXzn7ymMi(;|9Yvv_=(8vY9lviC;0Kr*NqBz)MM!11=c?_<+{Y z9~G2}e=2w(u$7s0&0L0-fyanagb@ix^eu}Uber_S(iysql_BMrL~3A>nZ+&3TI)8L1(#Opbvf*H*8 zzCEX_IP0_=clTwn)5LGTef+!Mzdv2BpL}%llQ(ytzqyO;+@RPmawl&-%`pA^n)YP3f4;;!Kywc)WYuDTShfqJA86BWRD z<$n#TyelY`F+;}PL!lFiQYyww53%qw#_zv*|J$#Ac=wApcZYGl&g2dZNHl2fZb+j~ zLm>-HC#rP6UC*sGY3XEWjUbwr4r!hi>y@S(TCD&Y9RemN=GSsqSxp9W{$VA*q80%( z>Hf|@L|3)2SaY!bD(wjM^+XPuiAl-ekry%OSmz^H=dDOENG)Poq5tU~+-!3nHjsU1 zt^1};f=hvspdon`t!%5=J*b@Ttqa$hh39LP?L0iXvL? zbJ~&<^Z<$d0hKq58s*QJ)CC7kst|_Ac4drp{ePi2zQ!!{y+0*IYyYK zRw@m^EXE}JApvg2n^!6sZVUjiPHq<~3)>8pjXNYAQ(SgMv@3Xqx?szA)U zTFYHOn2XV50BDa+_i1i!ahL;UF62xy7TM8$&Egv*6W;SPya(C8Th}}6>+p+5&tf>u-gDI`Ss545Bn5Jt{6(Oyw zmyeZJWl`Di?f|sIp|s>wbA=yDjvxcqb%O;ZC%Q34?d9o!jo6TL2$QpPMiwKzDY?^q zD3k;-op+OloAI0(#e~6pWC@Qe2<4-$a$Ly}eQx}lrhv*U>b^NRV&|wu$+{aDh$R=9 zRhfk_EF>r!}~GC`oblrlrbWeJ&bRMEv<#wyq{T1ySQ4hAb= z5rk5;sa4v~WCv`#9v^|Ms;5?xmUyg#uOpcVIe;}Er7&PTaE0524~fnTwW$pCn+2lB z{t}5KEwhtFF~tBQN6Mm5L|QBKQ0-hfLIRnx=JG5q?UcNQ6iiT1V3MK1Q-x{jDSTBu z33nl-W=mFmW8~)&XGStwPR^FuHCkb%fRxPsfd4XtE{3=iqI+NgYUCjzk zMRiRRqGSkp=s&s}^PrvgGJP*|$uC71i#)DZ9xI|#qAA)mm7PL?)>g@BBv!nzeSe`vfx~KK{dJjMnp8%H(PrBqMEuV7!fScFY_Fir0qzbHH`$B6J%dj& z7bNUO$$2%|Ch{cP*r`~he#acn70M=UXNyD#ca`4b(UCx;f>|ajKA)!LsCSncDNtwr zj4_^{FE(+wUkt|Af=q9=7(K<<9+Oedvs1`m%Q7CW^Y8xf{8|q!s6a|Ua1FC zM4Fz7?6x_~Y}oTf^4XJIPjJjTfWWiRB; zKk{Icu^{n}7zoKQ?G~wm4TcGppNd#$|LJP%;azgrq@;AqWO%NwkSraAxzzHe$GG^U zys;T#F%Fu{tnTePoU#ejQLLz_OS;di}DrS~h3s@S0 z#nx%Ynu&`&rdo}0S4p(C)PWw`tXr<^rK1G*!3x=knz38*G*rD+q{Rti%)PZ(fq$qX;fZvtA=bNAEL9rJb_>|13V;Gvo_Y-?W(D> zA|vi0{-4|@$pepFGi_GaX-eoOi}^dCR!iW-7&fAXrEJOEF=0Mq$A+vv^XDTFlXZWfY_O`X(P*!R)YhKY$=<-+~)MT z&3T=3&NwU9!1r`wU~^_9qH7@CEKeJs77#p zNuQza-w1~6YzXP4JZ5~B*6t{n*LSlv(1;xbiZoVw zY@wyLI;!ZK>Z91}4A4wbY!U##d$F@MLu1y7+yI|^-`21*#_-U54St8&#mWWRqX34W z#gNeaFwqlS^-Ljf|0hfD2+JsN%2Rf&O@A0%2Q_na`9HGmM4p6K?#(qQ5e@1#+*DY1z}hwjFDbqr9NfldzT5B%lhlP7$R*h9J84|*}sstiXjXJ zi7+4XuIA}+?FZG$)L;u)Im2&eEFN8-jZdDEoxSiq90M`jPvM=Zg(7JdBYCU%g zg-v9gC+R20&tT1LU`o1y4f1|3eZyHQCG7-aPh{r_vw}kELbjB~6v5Ml1^FLZ=p@A> zS~yi*#ie`?u*H@fsi|phH)b%R#f_%Ppp4PmGg`<2LXg^VlIX|rP9m^I5WY@BV5h!= zFBr-#1eq1o;N2AWgr%Z?xdhokMaud^l{CQoD$*UoLoIVPYtC31R90M5OAjDRB7~8{ zd76ZK+7><00IZx4x0y(j5o40}8H)3SzB1#y7vU%T<9yj{Mlw>4M5bS=ME$rPILv&E zAD*v&`^Ebo-k(1E=<6-#RuGi^eHjsOHDb0Cc1%S;-=fb^dEL!k8owqUU zXP?}>zCZl+KOBDbyYDaC{2%_sXD{!L4^I~t`y4V-BMi*u-BQ*LXXPc)TCJ&yT8U4X zVfx&*>8L&Ioi@QNTWYKD$iL_qNJR0dy;PdkVU`Ed^YOCPgp0VCjZ?<-3T0+hdy2+) z&d}jzbJ+Kf=kMR1V-xSk)AjB1#cloM%^O?BM=uV~=j#tApO~X|wW62g7+p4EthFqf z7`PrAwyB+WM>&qM;g*BW_oTCKH5AmqbMmXZcHL}vvq31M^aWLYChyFe-O(j{=wF zn<%gjijZ3Cqb%!)7{_j=yzc;WBasduyfT{COlv0$XqXc`h&BzjO>M_NW?!DpVIzGh zB8=JSIE9u9=nx-sf2xRrC84Zmi-W+z{ zM`Ss;hi0CxevNaA-Q9dn%!$o?o9-JNaJzo}e*5A1`Q3F6_?+|QaeVgbZWty>9T`B1 zEDy42gKklQj+3E`Hb9c0tBW5pCQAOSmSkd*VLe`aZY@#U<`?(rzD;b`ZGzQJI83LJ zr=@!$fT(%olT>|M$;fcu;-4wRz&w@#_$SRrhS|j8*mD#u*w8LqOgin3tvV{A#5fJe zT9eV3Ja2B?J0inVJaIr6Uu9@|eGe%e1(v(H_(6GE$Y(*%GNQuo@ z0aXZs^Vr!|D3GBgD*|l9Az`IkClE<5N@I53QO*)`UDmrii0udP>8B6wlKE@A5c}W-Nd_ugzTv;Gh-T3H|H&^`GL@i5hkNX zWsD5{#W4ZGZ79}YzS9fUl7U@Sp%e#)GIeRj;;NjvMwY`!#m4^Le1ll^$Rq$!|8^yh z8S%>GB`QjS@KGl4p}2OkH=Z7kjIeY1;O0NXC@a;(e_{l6@<%~xxm79F;fB%7fN(sy zm`d4D#0)AKJdNDw9~n%y;bhd^P)9moDx4i#zBB#2KA*i$J!{vh7@Ze3bYzl_+bpUW z(VVWV26cVhf2xtFd_Vx51Yx*j@}cvVEw?dNtjd2D%29^R%_cj^%ju_N(1R1_nM-QvvL6IpeI)?^ZL6R7*f|h*1x>Gg@Y|9%^gmfUftGY#Vw(KrV?21oLiU zH7bCY%4Do2wbf_z<8mB)5DwBI6K<`=swQ6cPH8C%u_uF}JgIQugBy1iF1$AYSUH>= zV;0^}aly12V`gwRX7*iP7;RdqZf=D3aG9ZXx70CJTRC-JKE`GGm*1a$`_=n7?N5I4 z`X`^42wAd;GN@2Pd4GiayvWtB<`D;oKZ8cn*)}$!YT3JV9BW0OnAurt^f8 zk*^O$@~9EY-OiO&4*R z97`6+(h)qj6C@m&I%<1e9^nlvw~{I`)Sahq7r(_=jAim3It}V@jN*@1`~@G~i$wWx zB*G?8$T05$G=}Dici^5vlEx zFgqBw%jxHz-2dpKySsI4b4K4^UhWRV258w&s8!G9qY*EOhHW!Cz(YBy@{9u)!}o_&9{1+#4;L!1i`=;9g-g#Unwe+YZG8frX(<>m^_70JGjPH zmlDXUnKkz)&h(usFU)s<4S_dCyVM1ppeJG)@YAdllP${Ks7fHQlWva9OGa|>?rv} zmckjTm7|8019QDFoYiIWE1naahhSF`BR1!a16_o+O+5_6EQY}?fO%F2=wRc8UaQaR z_`ZT1s96fQ$7wFS%-ZsX_QSl*S(qWPt8SNO8NQgOfwshqRPF;WR(ul6Gp(!CXB?Ap|RZE@K9W9!m`FN1UXg?mL{j2 z49X^n-E!Pk8Z7%}pf97;zr2EiD@gD>?%H!K!BpBxaH{#o7-`a3P(&lrmf1%RjVe)vewZ+WZ4 zBO(ZgL)CT&)!4BTb1KH6fFjDwDXvtdRh-E?s#h!iJ0}*qx-YGqfOxg6FQfy*hqm=e z=4bYB-oE(u{kQM0FK&*%`0T}-7YDPsU9Tg7iegIKNxXH5zK1|Fz~)5EV~|jVzk2#d zY`Eap({(J%pZ@ISo0rGG{M9%A`agX2-~HJqpT9bu&ey&e*nX0+(4#>*(0m#K-R>sw zhZ?7Ibv%MR<8j9<+K;IjMCmqIk&*5Sh)n~5Yh8H6qMr$bdXOS(n+XkaOoP!F91bo0 zFs9o3cjxnEe)RHoS(mH(vRt>z74!VZKYR7~aQa{V<9Gk+g&8pzB3qVf4&~km+O&UX$=o6I7jq`UT)73xX0m+VuAdq4+Y-M3yfX_}bNz7@$ zaMC87Se8#PGo)(lu+l05}Uzq!5%vIPDH7)rv zlTEN|Pl!UN+8mFk?dC9!`RY*~umN!Qu6X5IMV(NCK}E=xf5x+kbc0l?Vj0(O&}=~O zR*8Bx7^A^+b9F!##kJ_vQ;~-qQ%oEx#>R?q4%3Zfoeox3koHl8ph_;U%x%AV;PFzS|f7gAt+~wCWP+U6X(}$ZZl42s%m7s&>51*T+wLc;D(8Ti)w>(0vi_` z<-fJ4VKo8oCRdR_47M-ga}APlSO`*auphZ;an83kn%P-`tkE#IUN2asPqB$wQ6?o2 zlq2a4v%`AFYWGHFtf5d0+D%?f^I^F`c1x1h>h6RS(uSrF$Og#W6i%z zo*PB=0>NnsoC;1Ho>#ms5S{e8x=n)!eUyAd8<@6)wNeo_N~G`s)`k?W1Wy>C z)a0U;A5h(}mB_-#9jj`*8DSPCXm0gq;jmoD`Wj>A7Mkd>jR* zd3i~p*q#Qm`>rxPhHvw_l0tw`NG7y5QG=F+JeML2aUyC&S8cHEX1y~~Z_NSVDNGPP z(LrK5Q(a!9YdM2Vt=Z~Wxh}l9pa*6!6wx*y5}5Tn@c;^`LTzIoEQPkCFSzoR_+pe; zGYykBmJsv%M$XW7GAvvtp>fZQz^8CubS|{*fT7MxNqMmnVN$-kS`a8B4uCG^W-JEf zH0Y1C96^s0vZc)O#~myEpdYoQmsUuZ1f5+E%l7#&nC89~A+qT*CL9Kq{?G@lq#Fh+AVLxoOg zvMNfks!3?e|J^p6uG^~@#~1f^?@!zL{nL*=x_NwB-p!vu%xbv2$=%KdFwH$G9b{CA-Pxr>OQqdpV&Ga}kQJMj zxJ>>Yy2!J1UDs$IJvT0Z8Bsd`nK3L)%=OBp>s@WiJMGVWVwkq=NUq@dnsiv3rO;iA z5adrV%MM3(w};c^{riU>fAYy+|HIpdhsQtr(;sge{^6^4pT9cZEG7ny+EYO9W-|gQ z9Z$McEGF#U9NgiE?NC&K>vOUsGxUui0+GT%jN%>HgT_Xuwti*EBb#?}mY9n&#OPw| zqo*=C9F>?*7EMf2H$*R>M^H5`d=E2q>g8?o*clI4O}1sj;FDaH?SE-<;TqLkk>MbY z?4p3_P6lAY&lmS)9@o%FG{g{58819*0R|mXnFz!)R9&nExz|QefL-EEj=@D8_Zkmr zClubKWTV1Jd03YryI(Vd&Jzy-p6+6X#c?I7#N*LigYyR=&Lt(b zqmqp=nj5JG7ZTv`xw-qiZoW;wdKL<))xrI7V-}Ov6?}`+N-aXM&yg>FrYDYwfkP4B z&2o1sCoYg+O3_t^%fTAFHPJA#Wr>EIN>MmLsH&-18gUcqR#yUu*#_f!FVZzAaiTO4 z!;&D>_WFUwaKzS!KJxPz5DRe)*=WIaN@g691**~%`)ZlLd=2!~@Pg(X7Thmsm3%+M z6dR;gf{|Dw`xjaYVk)Ug$SRmi6(xY})F+3o73sX35fg1b5z}JU8Qyy}6s4pQOA9f~ z!6-^gYzW<#G;_xW{?+pS-nQyhHI+h1vC`;i3>oXCz7lN(Ae4qIPuv@Pp8&DINkPPS zvl&@=LZ#jbyp(%usH06f0XspKQG-^=I413|C&j%U6*Ea&6(I6%WOCIo(xQ@UII`-- z{OCxEi+YA29*1h)|A5!SQigNRxJXv>{pnmddW)+b5D>_n@9Ilp3SZ z#G-)O$dTjB3z(jXTS#58N`zZ5c;eNxND0Ho)3zCli07Sdp=Kt73cZOs`iHaT1rTAK{1utxX^ z)ZC$7=khKuMV95&JcVFkI_Y}g$;rq;L44iZRf;P-fhc)lYEvQY24I61_kYeCt)esh5X=PJ{Ei^EeoC=srft$RDaQPvrgCPq zA!&e*!hhjWwa1)5-na>uj2Fh0Nf~;`vV^brkVIm;=Js2b4gIZwlVLTmH=k)fFtFkE z-SN|xx5Kb)+x0SeVm!F|X^ZhFFvVl?KZ_$^bC71yF2@fXxu?1&JLn<8dV`%#+hHC5 z?Vo=7_rHJpcfWf(xB2r=?*YHg88p4PrY6#=W?{8OB~lY(=nKxOQ1pvsQsxeyb0TXd zs*kyi$iK~Mq{INmSY4eMWVyi^Rgz?s(xwrlcaeexB~sNetS0R?6XTjuxCD#159iI+ z<;CIV{nPo~!_&)~_2+MH|I^dk%jGhkE^ls^fBw^#fBlE&|L@=aV8DO#i@S^a*N<1T zWih}pr<>>cjltFh8+ip3bpXU3WRp-K1tk8|SfN$K>~>TPii_1_eMJvru2KmX|c!}IxieRaRy z9oMhkK0Ti1-OFWex%g?RD(Rb*n+Rvr0e5q!HeG5ZWucH-@PK1lJ|YthArdb(?GBJm zl>QM1O_X54Qkp26NB$LkV=WJ(mALC|a*9dFO8O=7x#D>C>L$gR*73?|fFHPm1f$H# z3^O{GJ)6;p}DXT7z1Pga5vi3b-HbKSb08c%OYeym447sl6VbE{B93jkT0rv zmNJQYGu;WyTV}1V#sk>kt1w?>g>I3~UrXaQ~WLaFyyUYw)E9!XB_<9&zthicJMXCD~-@$wwxfS(;hG5lUyNV%L%~O!41P=REKeuD*u1rI34RRmRV0q>2?! zGuLwX;EYnXl6`_F>8v>1F7kvJA_dE+Jw2HiIGLPz;W6LTGnqKCfvhb4Vcg!6r8Kd& zj2<=5OsvGYT~Ut#K*$l(44g@_su{UY8v`o9Ge1R3ET?Ryr+h>bYY&tK@>kjTgy`9ww1M717~F(Cg_bvRL1y0R-_Z1IL!=M;H$(` zc)@ekKFGiHNxC6eSZidDH)R^Fu&r3IlV`dBE35feiX}ZOjtYw}5SclI{h0=YeV4PO z>=@>=f)ODx|3qk!=y_5qr^lfhy`5M?Lyb+5D-)eTr=9lESPB~Dka3m)RdFhXRl$x8 zbaV?DK^j}LBqVR5w$wIVQ8A~ zlow){0Fpp$zwEA7BE`;OJQR>Os=F6hpq{D11Y5==0w{1*F)^5sYYB-bZs#~lG~zq6 zMMu#xj6QLwcm*MLX6-C3Frca6!v6FU7;^fx;wj;~1Ypvn9)yYkJqj3Ei<-r$dy2lo zfj5!r30yhb+YaxE2R4(IBamX@&lqL*Vi&r4yD-4F*9JFHosTT-|7R->W$gfDiP{_gpD z_3?Z;T`$+4zP|hEn>%y!ZS(2d<}3UsZw}klfBVDb-~Q?y%zyc#yO+oF!)Y61sX#D^ z2Ikog0df@NDV*-k>J~IH&~&|aeNLx0rs!-m)qF8MkG5K*ub3^%E)|R^PpRDLHVM$C zP7LVl^izHgv)Dd-P8);lJ59*k2e2isWL)p($!5tRA-bg*W`ld95woG$D6%>`oE={M zcr3REP?^CLD`K^To3Ca&BP+=ak^xao)-(4>%7MF&#pdwee)$fY|NKYy-yU(d`j~S} z|KZ)!!}ImWua@WQHZevt9;6cF>qN6;AVLqSSsff<5iEHY7i&SyGgi1-NEI2#ys}fG zPIV+@5W=`aF+PjIp5ltvGDmC)6ef{YVsO`i4{4%a7VMlO|7nC2nO|L~{qjr+NkR%L z2@I_P7VVtzKA?NJ4!wt`IP!Y(rnqGeb5tjd%sOe>=8nzW=0ed#w4IZ5AS3zk87+px z0CuAYh8XmAWP&<__C0~D!@}x)rb?U6L7v8_OYCo}xSnn+#O$1#We7B{Hv@dpE|z2- z)lkE`3?WGd1t`e^S=Z7JB4_oefXrN$9^N|L9XzA7*n;96S8lkA)-(+BG34Vm40D=` zYfX{hI965iE4#!l`3;XWO6&N04E%31?4tg_l2mDO|7%v)h0QPI-t5?HJ)zwmz)ZJ{y07NBgb=VxTz zse@exVLSpMFX}`^G8b~neJbtB*$pE{_Bh1X`CTH5*NDB{jlr(bj4(^Cwwj5wxzjah zKNNKuJ0%z*9f&et0afLGNs;Qk1FCto^RtHxQ?>J8h;h2a2KTGak+8Nxz}F zj#QSjl1~qAr61XV8aBb4LD12xCVB6y7uu1uLXj#EEXP+De)?^!$8- zm9eG+yKx8LbUsC<{9}kvoCI>h79jJxrDbktrrU~^Q4!6h$a{-zG;1+#8khWTN4?X9 zP>Di$oaJn|T$-VwoTYM%2FFTIKvxt|qIo6!r{zlGm3n3Y&Y7jwz4k#_;%q*YvYMnC zRXdYR6hL^>RQ`@5@!BT%n4_ghlke4hq4bSrnFdDJYY1E_piKkLR{fkwq8hinjhT{r zGG`E<@bE!;Ei zf-EltyFb1!I0Nlg;;)gQ1!xV0yypYcZQ=^B-|3~EY02UXnGM-6k%1$aj1%o^u-!EP zL-z78+zCj4PG;mvGQJ!`vrnm>B5n9$l7HEMI&ug?J7udDl*B8`7|qB8)(C4Faz_*7)z z2l5z1i&MV!Nm$JdXz3!XUp5}RlUu|OMvoOb$8)MG7z<=`QW?7fte|P%JU%!2N+WzU!UI5qAd8W6e-{z~8HYTfH zs=Q;sVoUrnh#qN;T4WW-hVbk|JEi{$;zcIQlnE2ogN)Q1{}jOYJg|2q#wJH`5?_MM z9u#7j`uZ~9am>5REOH@gH1R|5jnbj$2Wv#UdFqMY5N2Y#5R%oZpp{{r5qWZMQ2SQ@{3?5HBhg|Iu{ z?(LzS_W}(fuTME#ufCZd29`0F{G$&Y%R=D~tA;)K5L&@ew9q?6AVzV3vq%BQM%v7o zaNN5<%fKYrWt42*RL>;^9keiQS4U4~yyPxKaC8;N;)?WF*I4~Waj@f$yGsQ*nQ1=V zR*fq6t#PE%Z9Y{+y4JEnJ`9<{8q(E<^y^IGzDVpHZoo5m^?&v`ZlM}Tt`yk zWXQTRo9Xypqzre-f%V{*`pCS7aVNi_WDJV4slqC4#4x!`CGA%}L~P{p<&He0M@)kW zY&xizdJdDoTLDq@UD=WuIm1d3FBS^Qu-or44|!V|D=L^JIM)l`#&96hEpN(vBTut# z5Gv!<=jA@kZ!E>}VG>u#VIMohq%g&t9Uxy6t=Q)|g7e)k&S_9Bc?+&Oq-Y7vOi4`g zOcV6h&RN!yXyH*gOXp-c$c$-f8oU6sRTYg`Yzzf(*Qr#6Hsn#%-AwTjkQ!6fz?s|% zs49Ec*PFy?yTmi)UGfqNWate;XVn0*Ga@mQ8%Uc5o>tLOAq5X62%z_CF0u{E0Xx`- z=e{LT(*x&@GzZ zTAW+PcmEhQcK;GwCV!Za)ACLaVO}3IckV^YBfYIRueC_ zLAX%$Az6lcVf1*Dxn@=J1FX+`l zTYXXVKqDlQNO2ABs61lXhXqeoaA``E%;48*xP@(n6>_B=EEo_+6=hJ<*o}H;j44Cn zt3<*|nl4gQ;pqyn>J_Y24M!`!TM<<~jRd%yv*4@f2~E^7&2!%}ZCKCl(k9!c&>aG` zALeF8J;nEDVzo`gI|OJO36y16-7%?qGln|XtJ!875uq+WXRl=U%MUc9Co6lV%fvPH zXW|N%PJKV`M!@(98w~a^$KMK}^4R6NQ=dC@0e;KcQCOZ%E`K=<^gbBcAZ64>7bQ*xNKaIIXjt}_EF2EK(Xz8(1W_dLC zGL8?pU6tmWK}}^@V>YNsmu3?^a=L5CgD3j&US#tG((KNdV)@WonY7Z$2)3EsB8%ZV zy?AL@j3nR+F)S+?X($ccs;)_m5Hwlr60ml&!2-ayR>K7AjUp3naf*3VSVv3CfyHn> zU+!+!KmN(9FTZ{N)whqIzP?+RF=yjIIeZRPm9fDUy0AP|2b@GELk$0&GIzMe0g zd(1R#J-)^DNkKWHB}ICue>85y3<0^NPO6TXk8?FrN|>&J<~}BgCKJFI%d_K)Z=b$< zcRGym@yqo`FK%DlExujd-40l7(Kh7Q?Yb=Z?4#p4@XZh7@4tMUz(4u%{mo%}zRZPN z-I{yC*n}Ad*F4kD1X7K7ddszjRWE@REsUU0`a(wS)&$BN7JujTCUavK38F#F9Ei5i;MK=QSO3VIiG$=iaQfA zNEA`#9*n9LOA|7%3|qz+V{8*om+K$iKL76R`Q2%|ySx22fBp6M-~RBU*Ed)5)A>9O z>(}p2fAjnIFBW_C^7dvKhZR02e4E*ZH`*$0%P<2bs{WXwPRTLXO!>&1i4{&#!|Dt~ z)1;HWh$jCeh*CfRSk$x3#x13=EA~nMRBP$n#Z4-YqY{k8amXUrc>;Ikx$do%r+Ol4 zF6ma%e98(W=Adt(!j6||f%dG#CQR8q*CpI>y82;tGgDU}d7qc#nlOzfw08&68Ayy( z1);5iIYRN9ZMDd;d8W+Pe}QLe(E?$vb!-Aa+(GMZ3Q z)1v_AbH;nM&b2NUB4kMMu>z1vU@f~FY*gf>fUB^amaL!_#uB^mdR9+rr7I0u;_F=) zAqa!`xd9^)!0E5WrxQM9UtZ?J%X6qfvqqVKxi@kq8YoXB2?d>qu92kA3vQ@@Szb)c zOLvIxF1847RZ{7-MkOT8)9Eina%N&$XOTi2S&OC{@|HFRd{)sLF3#w9;>~?j$EP3J@g-?ZT^|320}Setkm;67XP0Ih#o> zsUGZuKv#lOpd=2Fvta%vQiCl|9Y^cK}HPnQW=>GpMbLPN!5aAz$oKZhhmadHuYv) z=X9Y=4Rl%3g(7%Hb0LvT6Wy`7G`4JRq8la+VYpMw&8N7EI=nUSP?m*eqRzp~)rbs6 zhX&LDC3QEmlyy^X`2avEM41igULu~i*JZ`clATa~{BD>!C)gY<6-j_~(j9@Vm5FjV zyeADU8M@3b%c#4B#)yc;I`~*Ui}$Y}FBjr!Oj@kbd}}ct?EXgKboz)X*k(8}ufH;S z0nG-<+#0^x(9R>MFrA(Sw8+=|Z#Q@Efi?ebGFB-dlOHg$YVT!lc2HEj72Wv=Cvk1s zZl;wtaCu)39DxvM!KmUe;XVeWc+bF{5|b+FyfPQ;Z6dXt>CHcK2kHs+Kk2XHOC?V& zS#)>qvk;RIe^w}IF`6V=NJvDZ<;n?cxT8S0*T@Ls0yqIx4}2YVI&d+ld7?z~O`1WP zem;(D$sNr@H4N%N3g{%o_-z-ALIpb)ywlI>CKZ(Wq~dRlpaHNonYu19B9o;nOR=J` z#vl-ywdN}xKs_iuIKHrj-P$@>hbBkOKy_|dD|&t4za*bHe{lvI`_X^jtaA9DgWU*8{&hjDkieEHq!dY!-g*^A@qmu(JP z3`Kqw|H9^DmUC)S-Gan$Ig`S8x?fCPwO)m~CP-;zjA9c-ywcSQjLb6VWYpoG<^Ln` zC2avDQz{dQHiySZk+McfTk#=Jbj?7@`||Q&a%GkT#XuMfA)v~7Hc21T2n;$7tj`qC zmW4|#3)*ye9;FC(TNYcFbV^x7jX)=tt24GV=XzVz{ zk-vJdJ7Twvun1Eiqp+FjihJ>4XkrxUgj*eIDqSd;Cfb;qv1lhQx@n3t3KulJx<3IN zBKHROJb%Z`hTMZDqM*#Fn(bx>hLJi_R2)|cKpl>W(EP-n{4B0)0k#19TW$E)hlbOJa3$!pxR~PMHHb`Asux{$z}- zMi`)@8)9F$vL0|1Go@C};C(q0i4yVaAa0dhGery-Y=s65snR?zEi}PW&xH)7B@T#W zL95%|fp0e+15p;jC82ai3nM82|4QRbTbXqY?=6tcaT1ppQ>2XKbqW_$Fu3zcH{Z5WN0eyelgx`76D`4_c|i!HhKO2~JW8^Jm$JL`X7DT^BU`Lxum*>4 z_7qs%memasy!5fAQ$sym^Qb{2W>WRMwVnl;N-2_&sa5Pt-c>EL4=|(wK5E28T@&N1x7@4G+CPWF+pY0jqY z3RwUF002ouK~%G{C9MniBp>R<_A=d(nx-E2$g%xq+ z9*!E`7|FAh3DtPn;xx$F$r0r4=mNFw!V28_Q^qW!mrJ7790zHlMvLf%R360W#hDoI zNW@68r!g?lmE48Env-SSo0go7mrTD=$RY_Bc9z8y%uc8nLR&4LFCCRB?A^DbQnL@1 zf?VnW`d{JniNeW#E6|1ZF*g0yn`h^Lm9_&qkj>ij%6FT6aK`nof8+_=V=g~!wecQm zn(DOPkrnTjGje?|iPE-hE*nkesYFjiHsGRF?!=LE*MlBQJkM6DCK2C72dTxAe7Uot zp~$81-DoqtouQ3}1H-b|HYXe}?vHS6bHb`_$ZyjQn7aGi?GRRxGoIy>Uu})pPC}5( zg*&Q6;~0%1k`8sfQHhs3nc@9&q~ookGY3uD+~*^n02RLuzWU+x>n|Su_$T*A^UHM` zW05t5DB8(`0s3y*=Z;n5SkPI_TzlpayrA-Vi@J;oQ8ZLWnlt37?`Cn#oHM6UP~n=% zbYEMA%?;pQ<)nz-l2Sk#3RFfyEnneVZMH%)WRAWDQbR{5v` zK~?mYPmd#BN_}m;)Bxl{ZN2B2v#}O|3r(YRm=GDeGrL*4;iw~GjOusRfoHckBBZg` z8n8UCI7>&_L?u#1@@o_dThUN1C^;VdUSaW6<8wXHHpef zP@&~9g*thMr`NEB2mC?~ozg4%L@$$zo5z0GF_d_Y^h&iFX=q1ynNyY*)8>j6Wj$VD zU>B$prI}mhyl}JF;yx-LkURKvTR>Wv^{=rc_r^Bi&Miqv!sg7SnHZZ#%`Ib%J2#9Y zY!q!ub~WTXXurwSiIPn!avL)VB5fuc?saL-d0iZe=8B2kJ;q#ArKjm6BO>8zj$$mIb3 zKl&4PKLkc6=naJ@N8^*odVX0#m0Ag+C^092BJ^^~VD{zCw9l2Oq~!(0E17D_f&z{@ zXYC`2#~ul-sU{64cj}aJNqzZGdJmVSG-i#zF4n({Qy>+}rvWd#ea8KtQcMY@Q{du3WphVmw-3W+kwf*i`X0WFo( zRnRDQWiR@#6vMITX2zgNBF@pM`ynX_34|aGz;0$4RGgWyR9_xc<|LC*z|~x7xsr<4 zB1X}DanzR7J#kCr(1vyNEkW^JCDkTae`;Zx!efT@Nwmb4LJ}7W=HeGe$ z^=&{DXXrdVhL?sgYV7&HT4)3A^DNe)PkpxMgo0Vzq>*Bl#(Dk1J7oiVy~!MBHa zY(WdOFhqYwzkk?X7Z=UPC2CobR94r4f1)3MfabL7c6m9Fdv<6TiQ68da%$$Y9<>{) z^1E6=->uY&Wf%=999ZQIVPhMw@w;j5Ex1z*eT14=S?`)-aO4|M99_TR?@RC61{&JKC%@eS04I4af~L_-Q_IOwjg z{ui3S>g-C8Q6Oa$w-Pv5Y2T03!Fwu%URG!_VrTu+Ne+%W}=&+We=En&6z9 z)l)9CA%nqf{P1}B`!C9u~(IuP=}g8O&@f5`D-zb~~AHzd0_)<9fVV zzW(9-_g_Bz$&c=D)^XXkVM|wFbs@!23%pW;K)#HUFFaXpXD&NXJWeMQn*rtDW@@ZR zP+~snAog@?DJZrHpXEVJtU`i8+ zNh8h>5fD#(4-8!Ze2lEgOVo@dJ1k6tSr@mlZ8%SV`|kPo-@gC)yLad7G>o5r_Ue~E zdHv>ovAg51zIqG4{#SqU(I0*O`mcZc`^U%UfA+^e1K#}4fAO1bJOA<*um9}FuTIa~ zZ@)c#@$K_*onL(U_RBB7|M}-{KL7as<;(TBj4^DxY>lS~4rOqHBYJemf>9&ukYFXn zhEyqYD%zU>4niL+cXsFW(ZJ5q5=}2>hSn=JCosp2s6uBIp8NAP`WwT*SWygeS)A+#x34{56q*@M*`cpsO3ECsofh~h9!m0WqWEIsrJXCjf_ zm)cJG55S{&PO^?E=D!+%&;puS<%tr6oPzosyHQN84PtU+Th&Tvtb>-MtK>BdWCTlb zb^X&B>C-C%VN4zFdQ_CdP$f#RuvJcx_9?mPNIcrBS1V$uEENlyT%7tYtV(b-1)C2X zwAhxz+g`emSmV!?a=XK7BQ1#qRX*u)C-KPYgI?k>@`DZ?MRriU+Di(9??IZbmWn<= zAAKS%=4aLaU2a&Jtp;nx!#GT>#_-q-l+USD($r0ngB3^xn;>P_b>Y&61@{T6$#k99 z(EK_n^NJ+&D$T6Cx{M?J%8 z_NlJ`S%=7w%lqP1L-E8U7cs?|9m-yS$zK6L7RP>quCMOGh53?{WCEad9M zQWMLLy-3|3c(*$b0p#?=(0Q?ChYbO{vBOcn%ClWM7d%4c7%7{x$oo4aI&0QJr6!Hw z)}T4R1`S+XNB1mAkqfoD8Gow~MR_@&Wl}~ykx|Cmy<4o{khC(xkDP$vW^qzA;bziM z(O3maNC`8>=%MI_A}KvASB0~(tS*1Pr!-0pv_0s5oA1-p!3SzFA|c82c!}J*$;ea$ zlX=lTc(pKN#?mv;ZeVct74lNjBs9k*XG~r^U2#iR9n0Nm{XUbzI&j&zUm5pck@qMM zV>n7CL0VrU1^HI0Vb&s)p(Lkt7|HLL44477WYM+Rw!(N6#1fylP@SLvRYM|%XH*$! zL^OuXpDBt0eX&6UW`JHT8%ey>q^J6A@O8q(FCr|#(kdOHn?c3z@|N;g7Kr zOh%-Dx1pAuYDj+?-#=b{{fBq=hxO;5zj|@I__l2m%b;h|Pz_iV%vzPv04%xV>&v^t zdRV{u;py+cdj8p`cZYS^u5<9Zcp(DWv}}OI8uBO#6239qeNL~v0>kSAGzo2Uw$wT3 z9kTzUkGa5c>(0cz-CGi9MIm( zZkERZXXp{Tarb<)b@Ih>dLPe}Ep%T$yIlY7%Xk0wZ@_8*S(h` z${E7%X6vZJE?N&)yC}&IB3qNq1aOF_wzXM_KWRhCTyfgu$c%2}c4PQ-A8PPdb)eyH z3(R3j)z(^S2iPy55v7T8Dc-p7rC2Bdv9#mJ_u8r`kfh(D@E4rJYA&uo1rQS<%|RS2vAMm`Vmis5mf*gUlR1JjlvwhEZ?6lkI&a-8K(_df-~ML zUZ@&aki{e95o*}xb({0M_fOya@X<#%BX`6dbHIZ7k1^bFzHaC1j6rAVfTT;@6_Dzh zlce3Z=}2M#=aukUW}Jv(7AnJp z^6x&LJUH9n(>;!1QQS!6%-ABgMBc+=F%6y@DqFlb+(=7evAZv^DyA0&8oYUyLcHC( zfXmEK+w{3YtL{Vn)_loL%v7>0WijOT0znWtl9{Xma%G-YG*j!{N?iJ`Q0Ym>TweeS z4*6=W=bsxJpz zd^LEE{mGQMyj4n^I-xVkESR@$_HNw zFct4jru0SXjx{xkLa8_lT0})%Q$sSFEKf$)Qu9H@Fk(beDwI1E-8H!opUi+E zQO`PX)9Z`%P-;Cb+UhdFu}m5}1;wMdOM|6nXmQ$Laby9_*o1j?HyUQqbtjO<=SJTY zPm-LyNC<^M6V;t|9@FNMk1(Lt3+X~N3*{xLjW{+hDXz%|&GKy|C;qu?Th>mDFg`@? ziHOeS2^Hlt5R`^@aNVUMLx4-5U2|cOTCJ%_M=4kza7cj_W<~b^mmIE(z_xm)^Px=p#nEZ)}M|pieM_lu4HmbPkm9LERj?Zvt%YZup>fE255O6otJUF zU#*K$dkws3;%zz#M=tdE5N+fd{Jd7Es0l58d0-xYRzVfC9J?o)yKyrp#qPi~spNwW z&jt#^FuQI=BtqDM&73kLXlRt{)m2kd;aL(cvejuJ(8|g21T!1)3w#)2znxU6qtzr- z26seXQr@($v4X?qb>wV{#UGkch*asLF{qL>(BY^f_c37R7*XLedPeNjkswW;!Qb6x zX+?&W(L-S`4~~Vl=TTs8chjJ0d5ut#kOAg+IBj2j_xSmn+n;>=(lEDeGuT+tVwp>% z^afz?0j!H{bHv$#k%ikBX0}Z`toGwK_usxf{r2mppZ@6XILxPen^8#A+h7F`@w8#K zO*g|f{d(Ot_r=G6k71S(9RNlxvnC&xUPP$E=<}57W@holwzECO7`n3|S*g=fF3+Vf zpXI>f)}{rh2&0{miEx@1RUIHFZpdVPF|I;kShOKFTGXG-ldut28cQ;$d8g2jzmQH| zHy+?<)9OdDW9(0FUkL`pT9OpL0Sb1?;dqOcd0EDyRg$m|!PRv^SSho7&$!H?@QP<}K}wiW*~EAVByXSwuFb(qC# z{F7{01icH<;xLKC)U@m-QPB=Z5x#t4Be(>F9hso+j3O&ox+a;)|@zkd7c-@hHUVEBX$%&@JfvdrmY;u4CO(Y8Qqa6FyPZy!&u?_MmP zr4nb~UPy4oobXNUj!ZQb^ixX=fj#9g8E)vc2vVgT>~RGX!IpM|X3DTInouH_zbKw)^q3)W1OuM&I|G9;#|Xe!neaYji(o0C_{!spCcC0bqK7NX?F>+6O*mp)Q~zPt5=~ zqBbDqG4SS*7bY8Xk+{sZ7!(|;x}-^|pCU0R@5Jh#C>;4DcN84Fe_=$_PYs--_A%h? z{G@Axb6p7KpoS)`@basjDEaf^D-i5dhB74-CI zmsmB0GUq%V*;uX98*L1bi3u$U+WCSZX(0mx02bp|8=~nlJ>$U;IF%6TWo#J` zw7BUdjEKW<=kW&ad@FjF@PQu9NF;h9RIu`_B#5Ifr{Lw_=_jhWn3xOw*g6kRX*4_ zXTC!NSs$54PE>9w{YtQD?$thRR&`0vw4`9PZ8<$7W?h3eO2#pMyU)9QK`xB4w33N% zg_p6y<>ZP52=N{4<(V)Iy$xd&dwhjE703#)vs2E=`tS;nS)NwL2R%Z7UD449(#M1XqTe0@_wMIUZwcJ4YJPbkrD?nSl4_ zdMMyn%;7#9N)pYoHvo*;8O6CG;fCpERC%ptmr!ZtT$=OfjtRVmjj}UEs(_H;;Ax8u z7~Fw@^Ym}upFa8M{*%|Y6LY(Iym`8L4uY_b39Jr>&FOBKL@Xz0&gsiAxDEGV_{p2& z+edu;{qtw9Z*CWCa~l@51rHt>Oqij>JJ?RZ7K~xni(i2)8tdFK-C$z^@L@2+&}+il zD~UV&HvqYS#SVvdb)Vb3T<7I_IUZMFVB22b-~RW1 z{?qH}`T2Q!e0=!#fBEk5I?tEw?c?&Fe*NX^k8VG@|LF02S(f!*|A*hs%XKrmUbcVt z*S~-H;^z5k7x;IV^S}L1Up=3m{_y?NaXtKh{*T|Co==ab>#O^_Kl|+F&;H~yTgLzP z@BZ$KZ{Gj(&F$Rg;jo&SyG~qJXd-oU_E%3e)rJ*Se3jc*L@2`1vY850Zlun6NlB3L zI7@RC@+fC9(73CSw-e3hj9js}47I3LY?&OKok#Rc>J-_`!YJY0jA!v;HebT$H01gL z;~|`T2sl#;C$EL<({0@*mM!X|J~uET<$0;* z6L23G=GeA~xr=Yp%&v1d#=5SCkxlM~v6xRcU@YS>u&j7IZJR5M03{PMfaPMqF#Zb? z$)1*-t){4w?^0rEM6zERCZnJ%XHu?dAQ9(u9m*0^p_u-lA`XK=GgesaR*BeeN~RVjbYQ@?pE7O;K_ubg0_s zUYd4^P~%QUtC6|>#xDE(T(E-H*VaYaZkb$VvNDq1&;UtL55=fP*JarGOqVsL%4|P> z=j2P>m4Fzp;Deoc-QFa4A8CMA)k}=a-<|%(Kg*2Qh_74cBtxYM>DiRrnAz3t?WYNjkv|%#I5U=Xv0XftY_3E zD%{8lc)J4jW|`<&bryPZh-rI_*Ys{8c@DKgj)rd?y}RvKv`Q{E=)dxd7Nb*-&`3)Q zw%d({#_ovS*)i3{;;5l;4_~?D;>|YEJgYyAfrpL{Yif%B*7}zay(@%z6x6}k9@>qB z;?W4(e49+HOuXAm%VbmRQccBNlnpBkGAgMDE_+Uhgg&9H>vdqg=;_iLh=zfbF zT*-%bfJxM+zRexn+CMtCNozCQ#UHTv|rrY9VG#pkivlm zNzrhw1*oZ1*VR}r(2Idks% zQ@JyOGL%(SfS^aLnoI-gxE)7EZ=*js*DhdDsN(1>rQ;xVn-eyM&8@j&*;sO*2CI=1 z4oM&xwsw6^j+gEx<74G9mm&v4Mb&2#q=JFxIXVgE;mPMP&S@g^Wid!Bo%9HLUEv&x*GVOf8~BN~8v|Gpo`k=AqZfS9m%*F=GUO)o4zArdDkOj#ZL^%bjRRKv zn{~E~HgrB>K!GP$(b(%Xr*Ct+PT#hG6Die7auUfAiJT+sEg-+vELuH21g9r_-GGcQ-HYZX9z?TgUwJ>$mIh zUwm?Rf4|(=`ud|!U)~)*d3krg+Wp<~?D)^Wd3}3#JH~kTa5}mj*X6*sp%oG&aaO#H zK>C3KQ;JkwhSK=RYv(Wdb5nY#Gf>#h{o1g`-ESv zSFFoAhRw9W@U`jYjtN{H=j(jF%*V_2aM>PD+j*PUt6!#X(`RtWfvI6JcLGa?p@zT; z0~UA`QO#^MUu`Ul-z>{U;lSr}; zsF1?V<1(wFV_8~4BS4_(R`*%XEH2D)x<#k!fQ}UjbPZ+Fp&b*p#2$#AwG21gV4LA` zzM73?M1!)~!LYfFu^7hm^TjT68drRBUJ*ASX}(fK-w&Yrs(1R1V3B-*jCU zD(C|T8?M{5^GWWo+#Ql~Hg15zq3#nP5fbp#2DP+bxO4o85A8=9j7>W|s?w|6+1T}?17@9-1U3k?Ho@d(%-C4cB4^kYdN}!(AjwLp1uZI@ zp3Dle0s`7SOQiNeEbtm6G;yUam3G?R{4#`=J>^hMqjHjvQ0*N_fhhu2F7A=ppc~x=1IWVbP^B}jQVr(}YYrw(j#-#KrJw-y@ z5x@}djZ{@z()~aim0xC+%}W8a17|5mLsg2J7Luu8Kw#>yOocX39J_s&c*bmt0wed? zeS=~)Bacj+k(j(>$Uc|Wpu|X6?i$`MOSTjm%O3sFi5uyj6gHJi3u$mfIah6j|B;xm z|7mR=HrxvXwIsu;0V25X-u~HN+yGG7FtmD1IW!R?OKy$yLSAn|$5f{~{U!KVpZXO0gntmp|Kkdvc$J+WQH;F*7zZ6|9!R<*gpwis|JJ}*;Q)}_7=W!Z{}4Do2! zP?dxT_qHcM*^cEM%{}+5$hAX83nxys_IC1<>0KX2v3tcE+7oMJytdnz`cH+cjGiFi zQBpFFHU$Y0*24h-$;xJOIkoO6moffJ;ua#Y9Bl;CjG&Bn0wPFmy9mYi)nu-M1ClD* zU3I#Y=N5SM*up5s!JFh&n8pFP#k*6~P%~6CLMAWpk|tFC>8WH!f8_;Q60A~DX}JZx z^gMT27dVDeNBnh_HYH>|C;k+ld*|w8M=~XPRDtUNd``zSEM2=aJQ-6oE9GAz^bEpg z?58fzA#L(BTwu2M17nJ212){*#xggbz8n`UurY?*FdnV(r*3I%X({fk+L{?ACMDq0 zZ4@T3dq;qy_5OU4NMD(%B})nL3~z$_07h;qHw}40-ZE@4TNZ-rz+yI*D7eAgChYOF zUC!GA*oNEN{I5EwrzwHbB`Vshu<8=o0o^j0mm}d0rZ3|<<`a=#<{PK+*b~rH6O3Hf#l7IctwVw zc7}v%cgKK;v=NBtmPUkW%iA_!ZXT6%7~JQ?Hs^Kvwr$(yFki>GS(o(?=WWhq*y*x8 zpHAn?_V9kYKAp@ku#6QS-7O!#cxi?){CIQtt1q7ZAOF+8UxxpW|KgAS_|upF&;R8= zeE-A4|Mj2$_>X@2@&EhZ{qCD@o__iBH~;FN{p^7G=H=~+m+Ocg(&=!_%jJ5$KA!#Q z`E~lA(9tTd$(os3^>@^L=h3a()0Hn7NIxKRt1LJ z_6wKRodm~Iw!)F=dNB=cU7G2f(pOIKuYUdQ$FE=BAD8>v<$RgTVz2Ly z@18EV2fJO2BZyE?LzByJdU^UU8BcH^7UWnZl|X2t`g;u5Jib#&3>b~WRHVR6DB{_X zrpps8XU;--d7LBH=glZjH65UmLy|1kScw>UK(UFPC~VLQ1SGm=x`R{GylZ^NSz<7z z{2*)A(3==s=|aqrB`S^(1Q_ZFqWYmDpH;;w!tUS5VH#N9gxT@KYN-^^sUx zNd$GIjH|0s!}j!gVQ`UB-g77tpw~^DP0BUt4DH%#WRJ)_) z_GnH}?R1i7x&iY_+OUbb?`*OnOsmd!C?IJr|H!0emx^;5#vbMHl{sf}XNrD-1etMb64w=mmsY=R}Xs~lz zdJWfQ`27ylUU8hvD3PH75kcBrkK;ggcCANCP5}-EV^2O&njt=+sfN+mzAK{=sR*~L zmB!%XPA-!d^`IpF-K8JTb;k4m;sq7Ok?x$2tMUu|QBzN*(pL1Fjiy<+TfQ-!+cyXe zup2XfB?qaVGVUQ`?Hi?LMV8D|qUgu>qGh2PHK!m?hhgSBIx0e6WJ#K6XYu#VeVcxre%ZFmb-Ql3OyB0*rn|#8 zpO`+K(|6xCTW`Pk?s=Qjd~VxznfSxkPk;U8!+Kb6hph{iWgM1qSjMu9F)(0DzU7Do zHq2~bM8PA0zzkqx0Yh;Bp&%g1<_zhQd(qJhU*?Kn2o-gjcnPI}ViS3-V&m;l)24|LdVc^1!+Zb_5g;u=Gund^n z?alg&&tI=A7PA3c;?3AXj8ttHs7;?yG#r)%vSF9&^owtsyU%U9+la#)%wZ$iG3M>M zY&ZV9Z=PSjI35=`HlF{RUZ?jI!(sqm7F)~~!(p{C*4xACz_xAEv2AnC=}T^Bv=}h# z=H_sOEim)x?sLnIu&7EzYQ`P1vt);1!!QtKJH7jtju5h{y+YCaGXra(KTyViDvtqe ze+RjfUK#9U5RC$mAvutZKZ4c7j-vW843c)`R0K`h zf!bKGK(-c!2DntK6PT)0CJ98%J&O z@amuejgS72VW(vp>FF706o7K_>_Kajti(b3V>-cS@CGEG0CT*KcX6K{iIUhCa#AEj zW@peWqM1f1mIoaollFu%2|~90W67j#M2~q2Yc^A)+on!wwCS%zR8@aT@<9_bzK(7g za2r^*Ody@i5GxqfOkk?x8U?P@ktW4i&)GDFq@1(|KFf9@Xz788x;Z-r9Eu5h!De+$1$VYIpT&3nWS#WoOqAUr3j;HkEQk*$$gj0rD9-86u!ct|0wZd%$KuNL$ zGtxD7vxFLm&|;}&bu(Uz8RB)6E!Y`fkMv!*H2|1ohVFH1d8?u}NhF|V+z-yy@ZD`Y z)8r0`s4N%dr(Drwu+mTAbkR}r+}PZToW%P>O+Z+vPCU%#c%&g*`?PM-J9?aoBI1Sk zLfBXZ0zytnC}up$bIU^7bShfuPpT#5n?w1C zqP1Lvt6n9SB-+AffeG4=CRyC7R9T?aA*CE$H)E8daHw?Zs+D!5toWi!n+z$Me((b$ zg+eC)?I)MXB)`&U>1*!|xYNU>0f-&5;KF#4Chqi7jnPUdCc>GX@Du(rt#qdq^hnRh3^gCilG(Ro2Q zjCg@?G8>tIJFeTj_}r$Suk&=-PM3MPZ0E~-Je?oU*Qe+6`EtEnx9h}=_a`UZJeTWd zyww@Sr7d^v>zSriEaai1iQ?yqWZZE^J0tG+&9OZb8f!Pxw)HT46MsokIOnnu8GG3MQSpd z_;82M%QhWqnF*k?5p5gh4otJt6~h<1`hWhr??3zG&FOUg`2Kz!>%afi*I#`3upAD6 zKR@~9I+ua5jl*Kg7-My~&#M7;zWQ~GH;bqHoYM}=IKH?&U9acUc0O;%n{~|s++-CJ zQ7;hi0itv*s*?nTJ2EE}B^7T=e+E}RJzHy>oJj=Mq1_Au1{LskNrsVL5m2!Uda??k zOZ+}|?G>z5WmKzmU?VkyGVG)t(O*eBGlwIJo`dG;?p9|2Ghpf12KTJ*l3|ZQW`!{< zi*cL#b^3Xm?=SQHX?uU#PFI{S*T>WK3LJ)+*|Mx7OL)osCmge#8kXb8FrTk#!iU-9 zwwh5HAwZR##*U4#w!V3Gl`bZV0)s6RFhmd6)p5D_<7NBK&xd8)t#*HVd~sOrj^nt- z7Igq(#U4%)kukl3VAM*~5|BsNg&JesGJ-+uk+-qqSSA^2b$4t&r_bq*xvco~)&1l1 z>FN1&e>~V2@1LH=7|S{?=j&k^S9gcs-`-r#+j*Oa*YG!=6YI@!jPZD$C%@RbJU!Xd zhNr8I=ZMV3XwfJ~aVlC{MNAXBCFgGq*P?pyvV~v z>lION{YzvtRrjDd6?nDur~b=4F0P{)nrmY8<_y#HP}kQ@FOiW-(i8Kl^f(b|peD@! zq$`mlli_E)EEoQ1zpvaRWk227dXsh&&3`XFxkpWCsl$dZ7AbSu| zs81<5{nM#inHzHwX{A-JGog~VYW>S4x2CW3d+D-OROvuKughU1NA=Qhh-lYHLAjY8 zm;5%P^#`0v@sP8S>Ye51dX|^6TTRzWrbea2?YX?Em!zB^suCwm4JVcx%^2EtZD|C} z7Gic4(CR9RH);k}m{CkJA!W*`IEH3VQUA|NwLI4n#@4?SR;2#8v_IXyCxxCtw&|Ew zDbYX(-)&{Kg@J@a!e#5!q+U<~9Np(LGSv}>X`-I)!&a(_Xi8#CgM@A^BvDngc@SOH z84-8O1B8g~O5IhENgLc_X9F6visGS#531J1DnGD5PsaC~={B&14mM)CZ#n=o8+htF5>vF0d)Fegf zA!B+yreb>bm$778R?$(BBXbVTB*XG(59Fea(}~J-(DrqFJf(w7YyJzD}) zj>CzFiS-75?{ledh=Y^hSRuQd-y|YhC{d9e5hdN!N!-w+>ncAqOo;mvzrDM3Et*v^ z(#@J;5+ou&*>$lYS)xM?E+#0aFeEt2pjmQ^qgkn@A8At+4NHy$#*z}~Z{V0^xf-mO zXDYVYS_-qeo>H!|E+Lid%DjN1H!%S=eE{Z|j_dRRTbE@f^|R~r%Ql~`^ZBy9f8HLS z&+nhkkI&oV`TX>Jc{*P%*Lk^a+w{53sB8^j3>&!_S?(T`?iq^!wf&Y&AG!ThHsAU> zaC=yfW0_-&Wf>!1=el~-CpLp&`o<(Q@Y-!G1H-TkJ1pbn{oThe?hXf=KG${J9oM_# za#)t*V(VhjM22BDrcoYNw3k^fmjdM8#>Ei0%^7dzVrFe9&P?z*alX#$)omRFIxH}F zW|e`E*IE6E1`Lc2Nh?zT`h5J$R8=XCLKN_P3E2j%%aH_aFv6!MU?J<7G}K`O)918x z9n&#}-5!po&5>K}SxYR^V@EDLxxrrE9WIwSCl=X!ga|N!h?xw;JEXB98lu}Sa~W}L zA^;z@0B*x(9OdQkIk%Y$`;p|2)QBy^mSKzGW-RW`cjmCgE5*|{kG3Me#(@`?)NCl# z3>a9o7Qkd8JzbJgbYjj*wImL}thrixdmWF|7Mj2!33$pIt;&?qxtW{K+>8%b-=f_# zgs=`?^f%2h9xu}d z?rsi7NB8M&ezT67b$LErPv^_U#__l=aXfBoluP-61R|stTk<)hzphDmuBczRO*r$Q zBCBIVxSU?ZP$l}10Xro}}H>0==0OM;&YGUr?4(I+!!xL(w%eE`uO2bkM( zo;aQShtp{_zgfrKad~xjcyU~gYqlxR870IBH`0gG{QzW*N_9DA1a4LTm10m@h~n?Ey7tR2QB86q&ohK2`n(*oaU7h zkQ=%@iOxDgqo#4F>j`8pG9lNy;8v{@UMz+|lA@qB?;C0d9>x%kM+s7V?&X?A zW81xD!>;f~vGAUw{5fUf&K8dyS>3Ci6oF#5CfqW|R(JE+1R=Z{@g9#OxjS2!4AJkD zmMncuqK1MgS`Q{@9*~SlrZpsUC2gkpS=xVjlmLI9AZYZ7jwV?f#jMPUjtkkgT#AVq zL>OBAx@Gl_IKF(egX<|eW_=ko33Z^Vh-B(e>J}I-2blQK{*o5Gb~b?RM?fW zgamA5B+=$$jnL<9XGyd_$CN!T;B)l+vXBBhnU8B!i337mW7aQoE>GvYgTliLvFlc{ zo-hRoF=yx9#TrD2P}ST~m4f)PB|1-VoU#-5ByP~ODaZ&hn=f_txHbrVU< zXmYe;;bBQzV5`SDJo6g3y0b(?>&tYdG6>%d(%G+;vaYIJS6(I#kN}yJd{B2tO*K1n zV$W=$OWF^?GUwIAyr zj4_6dVPjd=Ww0OsnTHOzk7e8>**Sqs$nteOpW9~Uhczg%P2|pKW#`c7$&}3E{0YD| zpVzCMuk+#g;mdCx#{xGWhSh8tb~xDG@$lkiy*(c8ZjSdi>&?w_dsuD`V`bW586*-` zs14Be;lPX{<~Fa}w#}>@T;n*x&9`lW69s^&vjubj2J`Ycmyv}>ov9a=F~&%r7&a&K zLoFy#kH$XpY7KadGCl z8FC|(ajs^3Q%>*!zT|O=JN1p(i`-oLhBuXmiK1-139m@+R7zgI4l(gpU4Dc zy3cKk8i-H#iOt*`Hhi(ME@NHBI>uPY&j3z`BMIZ7@Ezuk37?MZoEOLA<2;yud>{L~ z)s^ut_ZcAb{BS)zKmGAffA-1Cz(1FyEV$z`4%k@qrE*Yhr>8suFt2-I>zC+ELrR> ztYu|4`Iu)Op8K{cbUMAiz*0*zTJuTaRAUVz)qs2Tc9Byso|IDCO_E;6p8EVlK!qFH zE?)FLF7uO-lhYCdx;Mv|5M5r$v3QV+=A4es=sV|>(JIo>Eun4}!KWLx=?`arf7#xh zE)UQ1@v>cfW)FysVe7i2K?3uz4!drb>&*QE;4F({PLEZV4^sjLxZu9-9*u*!4W9$< zK1fp-75AIdn>z-41ERev?&9&8nX4UbRT_s`pn;qG?5S=VTw8w0GJ z^BFxPqZBFFrW}nFg+#&`;l&KJ2J606DEKV2@@ZCT?e1Hd+5+uSafE4FFtma4R{lk8_oKVc2D#zQ7+u=(L^ z-PNT*CLOsxD*b}N!K6j+>=WdGkqzZ_6l_GdQDr69b1M%w{=;aZS>+l`3B=SB?x!u#TxKRq|P&bG}w2CiNe44Jw+-*;;+6B9`Q$`>ByjNs*nieaS^3Uih9xkyjg z14l_t$~a-!a5}gS0H5PJkyJ&YObI}Gz9Hx}1ojYorAd)1o zPR=Mn(kF>N&4#&SVk<*NqPhWkrwgz-o7r=m_My2lOH@>8>-GWQdhqqS3r<&l$ongCL>TL1<)7 z&}upVPKLavmn$_?v7KINa0bNLO-wWd*EG?DcjH^bF%&{>nJ4&Aah_&<89K}uno|O0 zT0_S-^^8RE8Jx0p6QX2iS%r@D6)ajC9+GvyOeaK_y(F#>3*>i@lW@6=G~Ma`C4f|9 zh>ai3u-x#oO)yPSUBl!|H1()4WIzlb>AccN^z$1*8oZ#oII|c{)xpyr1Ogn#xQ zCUDv2GSvGLd#FpP0njsn9djl?N@ zX7Fvhx|!#TN#=_U_c3Bux!AZr1HdA00k^6#!*Dl;VHtxgYr4&W*fic}?8}Z3JviXe zrPC)2BVX`JZw=xw%!ZB4v2F9bT^~=|cW)hr#cUlo9M%^%hnIK9m$%24_s9F2_2#&& zV=Tx$>>@+W5M`iLAp$1r%5K;3~cux%;Qpm#2|7%v%)GAGqcATzDOM4XC54fXnEGeGjB zSkf`#HQe&`F*C%;Nj5NN(n}j=OP(z_40B7)Jw~2f98Gz1bB4?)W{r^#3gT_r7W%MS z!YDTlcj9%pbj)LB2=Z8joX#JAcK7Fh_M=~Y`~5$B{q9eH_WED_pMPw=4VyOB zxg|*(19!)Dn|{7-b2@z5f;acepa0_HS9gnVa~*nfFfChjkp+ zg@w$tvt)Kq(=`j_ARZTT6YLoz#fKCbOt;%D+4Oj?ctD2FG0=}QdN6R}L%&dxmf9il z;>Zi8!HO9%Q1RAC{xrtDCvh=TNk~y@9s*qE;Yf$HtK&TV@iO0^t`FzyC@bov5wU*a}%D3@=EaWdtES{Aq_gm60t6$<^z7%nRv!E(t(gL z4^)Yi#)tT*BRWS$9GPd4(_*m!!^!>hyxF`i3y$l!UDvytIu$(U!_Zg?FPWV{Hbf0lL#Fid>zFc!-PqSs%I_!QOzx>Io zk3YJ3d9yyBugBx@?&!A*e)Rfy9A*~h7m;qJxmQkz>VT6CR5H)9Ovp0Mj-Vy&B1>FC zE8czBX70LwITamBnd&Bn}hA0vfSic&0sqGNv5djv8&tAdWR!o|Ru$Q4#Lh=f8* zN;=q92r2;+RcVA{mzvmf^Rn4sUSYnsHo7|nYnlV|`G+7o( zdU64jGiFgX=|bVSXv-eXb+>fB<{MQpR6&!dAbaQS3LPxh!T@ON?t+HeQ?yo0 ztt^#Bz*tsu*X>g(0FgvtfTT3lB^TLisKnuLKYZiMgEh(Lk`)R3lqbAS2x@ zflDm$j8zjy4?_mT!cplnxS7Ssf*qc>`S$Vh_VN1d+o$gzo_~0FdjItN_ThOQ%O@Yd zIbE&>J6$i|zI&eQI+o=ymc03l`blghA1*zOxDUkpLKwql=GSg!+Xf%QuhYyNb0ceo zySh}|-4{6DI-dDz9y|*ci@UpR0N<6{CUT!8xX&3t6%X(&M3!$piezG=UcZ!_S#C(fDOauV(;o&(*?Op zu=|`ChRv|V3v9`FeT?Dex%J`9l^eLvZQIJ_VA+%rc@grp$jyhgNsXQT#I_A9&jHTta%vOu~G2tQ|-lO|6_CgLm zv>18JoE~;K9dr7`bkCjfhM5gp7CSEMI&5TY8L#gTn`66f3Ts(FX38}TzWM3oU;N?W z)BEF>Uwr%B*YC!<_{7u0<+Sh5~pPUmeI zu{W8se?C+arMJbLyKsLugG$L`rDzjl~khw$> zamD7eE((TkWW#+-!*$~6y1hU9`}6khd_7-%n~|oQ2hlZ5pB!|~eb%d|HXSynnT;{# zyq2}oXA6i#O8Dhy_eE+W-~Z)$OHOx&#-6kt+)>Rj1ER+DnxH2ilrm@+hJkpZ<@$YmYgqW_ zvaI2fbHZ$lvCKJRr`B~DmpNHv@MX1^FK&)wtasz?u)MfgKe~H$Tsnvx{lf#G5cY-d1S$IOG)K`759Ezn|i886CJ zktk_EZWu@W_A=3ZZawn^otRzJ5x6BLm=OnZidSV@S36I4x7(re0jHo-s#7T|U#G0l zM*DOc$QU#V1v=V0T99<-Vm#9!jwo;4iUB~g0?v>oHx=%R?j@N^41u$9(B$7dIMNVS zB{JcuJ5ulbN1P*9;|!tlC^IGrGEt2LNz~GnFl^8%H1|XkT2rP$`d0*K8HOpn%e%I0 zmk^QpmYEsmlwO@%8gt_gNki<<7_ANQUCowHGRy9k4nxfERCi;((?5#LJB`kQ~`=g%wk@LofwBs#>m!Mx)``t;nK4AAfsTAQ5-pT zRZsX07RAgm<`&AOfWc59k4~r0GCj&N#F>@6C*W7-iQ30fyw%bx4>h^6$ae)Y#yA;* zz!1E)1;HxkAo)}Gpk|vSGi@CEa7g6Sa%;)01i#}ZT=r}B>Pa3dQKbfqQ__NQRxLB3 zSFCO^Fj`yc{-*ALK&_ltLoVuot~bhbGllR>GzsVYAq|0I_MVTFOM;<*bB7Fr-=X>o z=PTk$=}tZ$P?`h@wN6{Kvucypbme)fMm0rB?&?Ly3^Po#%VyWN9~Ry$vx}zX6)*M?IjXdNXnMxo)@DQF^y!Xd^((R!g)|akGZiSe2~>S zwWUGwYO)q{WZSlH;w$WuEy$vUGWO{c3qveG5Nq81SmRcjOjz|mtdGarwdNz`u(`u+ z$(_sdX~TWOurMi>NXW|~EP|{oe9VDOdpN_dj7|;4V1~`7yRXY(wPEmK!xy-lFXqVw zZD=ta4qyzk#)OkrDR@Vb&f*LTNb2q$rER!5CY{0@HhucVJzjU6R}rJQ{fK=P7dwo_ zERX3hRc0NLBusa6-@@vR{5S$8At+B^z-F=gZ@DUamfE zSTtZJECzq*F$r{V`VSv7&CTbqfn}L<_TULdB2FQ-lGCelB3~S`qJt1CElQ21#hf?V zh&Zf}Pu^w(SoI}G_c)$t8A*DgL2CmZFWb|3J1llsaeG*A*Rc$8j&#iOn=b11Q;!J> zGI$cV8J0187<}5Y7<^10Bk{_BWw9;aPO-(tk{#$Xo;zW0pSHjK?RUTU?A0`TcsTv! zvsYh#|M>BXn{E0s?Ebh=Y+Xj7xD<3+GR-4dZhoUFE-j4&+R|{9gz^%%g2cR2GuLES z24l;If)G83UXcamF`bp|mAI#Qz(dy%jEJj=Lx{W5owIc>WlC9LJeIOdy zihB==wF&2|>rrdMQ$aX0Q(Fr|Z?2p*nDX zu1hKW*@I=9Z95XGR7jktp%RVM9Za(qB`MG&)vtkBf~0bEr=)kuWwU;%BDJ4`1`(@C zNRQ6lDv&&1H;jw>386iF?8*j4!BV5TAZri$R%))2>e48MEQB#?qOz)1V?gDpG#Ke1 zH8J3^9x_x&5NH=aB$~Cb!rLjZ?oxRu6z9r>qKouth;Zs<6i7BgFRmgQ1zLeh4ivP1 zpui*tkQKE4c}}fYNdzNS9dPab#s^a_yV7U7>kdF1?fzx@rQh^`?#YZHvigYlaw{%o zOC9yNGFMMS2#XTgW6cXz@{T8Ttq~RJl`Z^bh?3bCmILJ)D3I+^FGj|64jOJLmiqc& zMm1su#*sO6-r545ANwg0Qx)e3B1w(%BPrFY}9pe2riJq3d`W!HlZShvk%FA`^k-pwsm zh!+FwH0Sg4_T9tz%eT+J|K{D--#@&2|8zQCFWWR5V~k~4#&R46pEGuqkHb~B^LDw+ z`j2Ab@S9ix3cgL5n#`A`&+vamj_~M(-s3cBDN^Qc$8@Ur)hOFc% zFays$Aj-#|r2R<}BK%N=puDo8ul$e+nd>+5959#5Ra=zv!fFk5Uyxei>1_7>)2?K&d_z`5A6j(FcSI$>i8tt6i1YnKjK%ildbZsQKV`4W%bv1=Q!Y338B z^L9Mqu#UUsaJkO&PbZNj&y7l-CH1ICi<(z55o27LE;`Sk2=_V)4o z=@q~G=4m|~zW(lU9rK_6;?u>p93^Rr`frHuZqPA&`Ho(M=X^Z&iZ;IdA5 zUb{%E@oKFHao8#t#qSB)8h?_;%n>|!n@oi)(%XGZcpgb47fcc6iAe##CX9TMv+*7%|B{Z@|s|VHFmO8dJvapZ(WTh&Db)E#j=TM?olt- zN@<8TgsXzsPzY3=p%^)c4Ke8=QT%&7U+A96n_PyVMmfPJ5MB5#de+hh)DTbsMRp1! zFLgFFStF$-Fc^E<_&KQ$ng}b9^V=Lko72{|3zlARrb3*;Ihh^Ufn8xQ5IG@j^^_>C;_=e~PHV&O*uwOX)? z)Y09Gf-=2IRJWvW@q$85m#KTvalN5!X$^YORau|WRk@XjMh+pTyK^U=qJTShGKz?S zvKN0jS<)d8NmS}edoC4Zkkra%!z~jrN<_+gnbaR@N*nDkDrDx&8Z3HMJY*L}v8O*s z3xT`UN-BTQ_c{5v?cmq6VvrIviCTI=6CD59dj|2r;6W!Y4hbq(8ubE&T`FXmV&v1y zP8uSJySDKZOc}3FI$0*bsLvuA18v$mD#a6Q)g*<}O-o_=nnd~Qo&yuv#o8Fs_5yCx zXN#MnEE@Wv#q<7Mh;_vkvp7lGt9|etNscB&A>e2N%4Ur2Z;YYK# zAWw|)(`N?VnancAJTb?B#q#p>xObAjF$^Q>R1c@^;q>r_AKt@oT#k=t471RgS5eo5CNk}Y;z+^&R{rl?H4v|tRuN!8Ze1QN;%nB04cx>-?R+w zwEXr{fnWSCJtYms+|0&deEiAH$3J@g7k~BD^r>o7kq+w{}u|JKc1!kGZkB8;3 zj>|TmPUmG^j_a~6rmooxX`EPvO~qp|tVXs_bOT7sNRpc%m0^hjflL|v7XPU&ASurf zb9TnCLK?6012!=7K+*CJXoW{aHC=(ETL20pWl$vxpP1eJg7Vb4TGn>Hk)lb{y{RubgxIHX4>$2n_GhSv? zOW-W{T0Ohaf!5~07~^`$K!f)b2!`{whcDc zo7)x3YU}FDIA>8~xNU9bD4PJ_JR2^Mu=ARXEupEI@RW;zsB{Lo+$sBWXOs@Q6TVsw z(i@IY>oREzRAjTT(5eLx^5fA>kTsxYN-Xi*hD$%Fmv5CUYw8Tp?oN68o z0ZiY>!3GlqGEj3wEHBjbInE+<1+?V!aaYsails6*R);~{c0l;-EICy;h^@CP1&mXMZ$t= zyG<+Hki-c-t z)B2El&@;Gan`eWy4)aE}e&8dO$je})({eR;vrGc3D8k2}QSMBD>+4l8Xy91mbS|iu z-Z`?|+o$PV4yCHJkcTzIM)DhCg`p&R4JWA`a-mk6>)%yuqR#&RZ2f7oZAp?HhAsEl=bU@*8#7;K*4)*o z9?=8=kifjGWmV2^y5l)}hr2$w zFON8{@T@!Qy?f8uJHm(M%RM|IrpQ7?P+S8USUcuh2oJ#noq$xznk^18{yOVSq|juj zI6q0<$CKk7lyj+zEM;J8q2GAs?5(t|LM?zz9t5Mnyn)YQ2h$vRF_8?>ktqp=g0syI*ltspbC65b`)WuL+ zvDJC7Q8*dwz|SO9Vdw16fH}zsJ-fyX%<%}xQb^rjJ>>=?Ca_Qv${UE9Yw>3aF4QPB zVW6B0B~+O%Q^l2}G5rr$$6nXqz6Be_i%FadU0DLGCvD^3Cas z*AJh(y!q_q^~=|H$5VIDBh^~d)>x){bC*)GiQ5M z+Kkg&GkPl=ab!`FM3NH8Wp^pu>}CO%PxcowIZrV6p{rg^&r;EL#=GKj*u zC{)xW$JnE+0Ew~>6mSzjTzh;sL~UH)6X`ChdFgv6K^BM^LxsS4FN)=Wh(?w2e%-lw%6mk8?Jp zbk~AapVmPu%<&eDsY)rV^+sC>(AxN2G%g``c$Ya%K$H4jIqW#gu{@1_t;*Wpy z>h|_{cYk_z*!AAihnYvX!`+uAt;wR|@Z)Li-gZq7yJf%laqa82ZJV@R+qI!a8jOoz zziazNk86K;I4!%jUz%pWB3V!|FsV$gus(I|iRPZ-N&)fiXHTyeMg_)W)G=YxxW>CG zVWRH5ir!MjhCBf+BaA!PJrF`dHNc5D_ft#3Y>|y>ZJ@0+h(n;VxjdL(AGbFT+x5v# zn;St`7|eXOA7n_(({1u!lN%vu^4SqH$vARFCZ++&!}Y|X)i^oTaG7|Y)^1`!9vdKh zMZTeQFM#v*wql#*967weSR+4(DRo{VRAbdJa*QzdNnF z)(?wb?%Tde)9f7{3>)=_vdcHPyNi1_j|*4YqPw=3_f=%KEF!JDFH3XC&U{%G7$k<; zEgEb+J5@c7Dcw4H_pPIEn{`{Xty@$>3qMmXvGIMFP+E^?h?t02kq>sPq=KBAyNS_> zLCH^<`A9;Rv*9b@U%}eOxaW`o`jtE?Ko{kk~7x|H2tl{htUF%hvm_Y zh&I!_ViXo@5{y+jkyPY}Km7WTX~8DFX(R~DvC2H*t}FEk>2|8sT6VlZ>C2%vsk@dOuA)9TtplG{adJpao0}fa9r8h}U4e zkTa7#&VGzC0}YE?WI2WWqro}(BHfSPQJL2eA?=yb5;TeIGNJ!+agl;3YEYjTfv*sM zny8e`iJYNC_@a*Xwu%6g84yI%rRbJyk>VH_qkW(Nn9ZgAuuBX>%k?e_y?iqVM{5{0 z#Zi-?GARgJoMXt!hd<1q&S+U{Fe3<-LdEkk1))qZ+>5%U%nMfrt^(7=+(Y8^G=?8S z_RIw8e{0)+u=-rV1xHt%Q+DzYp}rN^OF!mFT@P-S=-YmFHNqPqu>IQZV(<7V@rq`>w(_Bb6c zji_W&3MiZiMoA;LY0-HY9bDpaXUT5IMMYK2qr_Ae9Eq8f?R7WF?X#)akZ2k*;+P== zv>R3^^oet|G08*G>r}SieI(25BD91CjtPTGmh5T#$2$f8<5I$#r7P z!ZUp}Dgp4ij#9Y`R~-ZV`AiwBQYa!-R8sOYfqPzmFJLE2sW3VWY0O=uo2~0+JhRtT zm9^U#gNnrV?cJfZMZWgI;je%DgCBl!{r~#cKRI>(&wl6YzxMuqGyLEeZ>~>E2WeuK zoCaBzJQx_uB7iiNZgxCw%hGm>UhJ2{;-}3{r&CwmwHDoTs3^`&niu=U%uidtyFcxA z%WlW=9OsvC MqN{Ao{04N}$QzN!}b%f3TO_>$>o>rboQwppz?s}f@E~Gw*maIE_ zwN>)#T;UKPjY)C`Xrc{61tY#{2kuvUd)MDQY`3R=>}C=Kj38+=nn7F!TQlRP2zSvq zzj`n-;0%OBCB}-uya!u~^8`BGIh{jj-V_Rf37-A9)0C5E%*h+~Q0+fm?JP7A11vWOh3CyLHo8pe5~cpf%Z)JCQj8 z0gbPODue!z`e6LrxwVyQmg!MNXls7tGU3sQCm>Tn;&^4!DDsQUvs_cw+?^oe<4#^? zUc@YthKe(E;8M^zq|5k5dRq}`$avgbg@`c^_pIqhcZsktILKFyj)&2gCsn$Z!pj4N zvwQ^7*fRB^*nGZ&6)@reNZh@$t>G0;32?}$FO~z!#JOVD+=nvclkmyOxN{+Sc*1Pa z<7F6)V2p|bfEjGyBEvx4gDp;L*D+>6l{(4-K?}`%GKm@KIw|P+wIXRo!Ym*JFhRx$ zw8F)S+@d|PY;WXG z%UovE9HSc^Sq6oi2!nzQ)&I()MgXE6a*e9;-toS$xl#U)SCLuH%pJsm{71c=zKV&i za8x-S0@^T_8gK>MU-6Zah)>^1tFKo%8FiIvN+FdYv-eFf!=X$jE#(3==t8|=+RUVdSUxae zjx{0YiAxurFj$T9-vnhWHxo=owUHk=bD%I$9-&BK4Us{q6X7*a1paKJSfbp?^Hm>-!!+Z@%dmsiBZl914u?Q9u3vZJf)l(Y z@$xa^tkYX-X&+N?BpV!$&h$TV#wRnYztE~d^!G^iX>?gAq+z8<-_^@xjZv6H1O*4-(3sF(S} z0C_-$zp*T>H8jn*wrvja#q-w=Y05+1HB3tckh~RCJnjm~Qft5yXW%kXo=(ewri7_tdId3}%3sj5`l8hR<*~B65UQ6+qUlpVlpyN>kNE zGA1zY#xC+`DTUzpu-;zZefo=+zxTo6>(4JAKiR#0b-nfNvR!=s_U?4tZg19``?bA) zV4%+Tv&AAqK$PcV7qY2u-TKM)yVgVwi|m&Dy4kv|YuBae(zNgtl4q!?RC&&}`*pW# zyQTf=qLC9!ir>4905tLEmPf~K%yyQ@b>C+ta#we6=O*&Zkx@- zM?B47(2g?kK?%b#bK$8XEGPWVNS%+-Fmke$7wT*6Guh1Zsvgs=w?mT+|A6~#MLe1p>^x4_0zVVwo{km z+K*db&DYJg&3ktyiH_KC7nUp{%yxvS1?vUxcmdZz+~W=u&yX|mm|^GxjeNA!IWaZu zSp=Avo+J_i;_67p@>2W6l9`ka>+;ITyb3eS8G=d_5<37h)7AnkGXLU}r`*d$c;pIs z9r@45pXy!t(`h+*6d_ZdGs-ww@MszulrrN_MuB`+)p3fir%EHU5qO;IOJFNbJPJVK zytFCrzRb6CorpYHAVm@4yKeLC!?9j=E(gy65mYCD;NL31Fmn;GlosEd4NazFBBfv^ zSzC-vN>+SjQOZ0bM+?fRsTxyelkTzE_Z&v@Z@{GP(u)@*n(D8 zJ|KXNLFTIs{0C_H6}m;L+K3!Rp(|g-a#-oh`Fh};>Q_}2eefU9HR}jaNG9JA}HxA^RV0WE#`poe-T$Eo9{!mv2WAfG! zK+mL{I56C=tOY*Y{fP%5bM4 z4emjTB_k4oeuk6)l$dPlUAqE!j82ACoOydJH|8h?71sea zX>pS#)1!kw%u&JZ?3CNVlYFEK@0cqia_PMkL2~Id)^P$b=Qvpf19pDGX+mXGF;2#^ zQQ$rk-eg@~|7GGVj48o9_)U4oEM;bGsKKYbF5mz7OI?DYH+XlTEw7KK&E2yZVR&L(1u@CJTt6IM++{3rGKHzq&V1lYc$%~L5pwl> zsdR_LiM)kfc}g$bIs{O4_t?l#@>S)&hd80XG!j=Uh?sTNv#3GCFcq=P;B@$A2#<0% zv)BXW4#40|1gcP%roL;sYqB)iFM6?WyS5xRd3C#f_4e-5uiienIy`@L_5QQV$CvG} z69Kl(+`9se$8ANRGzxBMX(F3p;l9-DTvKqfYDy>0=o|eI4j>z19EirpVT=&V4NY#{ z9dV_pnxjM0V;kJ1^YqANN&MYbmnN##nj8+YG|AHd`S?QWkge5vLDT^qHg*Dp0p`U= z%B+C^!Hm4DPp}9S*vz|2H@WY)zU#-eJD_pDu80^!r11hnDTWd6wKCZ9>yk@Wg~~Q0 zuMr_SrF$b(z)LyOL!)XSWyyoTaR%-fn_%80Jx)igw$%!~@tFzE&lsU6C#}?+1r?FL z*=bw5VOeA!;vpmjR~5|$Lvw77i~X|O>D|`%7y90ZPxbQhkN@arpZ@fV{nf=E{l`zA zF5mv}!>9YpH;VWwA{-!@E=xUA3eC`))=&XI zW~I}n-zoCf`zo8sapXbbxkeh=oV3jJjf2S8mNrxiitz*0li}?{fAz4wJ#NP>D-fz0 zm#Y$}ax(hvI7eB4A1;OmLu+Lk$h9q_7s37Z)l%0%co|C|ISTWX*RUjT6X_*Hkdr#_+Ts~rtoz{93{oCfYDjmqL@$`ZdB1SDghF^>jHyPKHR}Hw@aST9 z*fn$CDa3u>bWv|`3E|XUNk?;;EHZM5!GiK)WXs-r^T!_{&+N>#( zhR+mj0w2`a0%(ygQo~?~nTT6@dP2A$c~O~S9HS8f%*wzx_0mKoPdG$TWWb}JoElYv z_>g~{eWyvZC2>TV66dMzaWV!UUu1laK^bp~BKuiuTOgyA?*+5UBm|jq3o8ahPM`7+ ziU@f=33#E%$VuSiCo-NB;UI$@eF}t{+7HO+mMR=@OQ9MI5EX?5lD(b$9JzFH5thX2 zms7HV^FLLwM5YR5U<2JKvGSi_fR!3lB~e1A&f29gj~T>VDc#U5Umfn#c>WyLT*I0~Bag%LvY1%b@N^{Y&uoZM$i^RxMYAVrG~TZkGu zXU?0 z%wxs{Cwxt2qd8VyohA%iX@YagT^T-xVx~oF+QiwY&lr9l!9dJ&AA+DzREEP(?;3HA z;};Tvq8&8RNp~@nDOM9|J$-Ge;ns%-Y|%a@oy@BBREIJ!=aKho$8oi zrKXWlGsQ)$sX>w-OhQhasR)B2pNuji8bwCn=!eKYr)?q7WNrf*$#i;u&AJ(r12KMn4w8t_!#+T zv>71|B{wN<;oW-k76HlKH%ki3`%TRqjq4jv1(HT7uqfh@Kk+n_LMe{3($kw+vk?~r?wpL}}z^UtsEANtMB&1G9|PyUN99}bHg_U-CY z#a&ffKz_r%p*3v^afji!nmgjGB+C=Z#q;F#;7FcZJTq$`bd7*n1UQ0IcJwA=&&Nc8 zMlW`4_$&?K2>&~b3f5emV>Jm_zXpd^du_41^a zPHvXCKnh&6PLgewSNgdT%kl8Nx?L0Q1SjaKtH9j4SGbZR^|CU9dFW z@92=@wR`}dxGe2{v%mcG{>}0F^Dkfa)js{?&CecP-X6C_wE>@fa{a@PUj5>$>rXy? z-Iirt?WdpKT`cccdTA`=jmmi^9dRYq~7DZnmvkw=SZ) zr72NRkZ!i9E{EOL`)TW^bzPRWTUuVKF`+HI&VV8K5=~P#Qxa)hj3EM714|(tn09fpN*$6( zFoW`}gnQg@8n-i(A7I+R!l_r{9>r-OyB{Nta>3sLbk>H_J7Of+d<@}{1y*wNqPH@N4ngg;)YbqkU-Lfo;KvtTA zdv3^Ak^Leso?Sk@+U<5wy}CTKuRq&A+R201VR3acH=UXv%M4OTR4|5Vk;0Y>pmLtH zH|NcpA(r}#WJ!R{FU((DpuF~0rZ0wy;yXU6uM!QKT>2XM|72Z0H5DhF@=ChOn_>+u z4n{B`xOk-vieYV)Mhu#WtRgV^lQ{E%?4t680tParxLAXxm~?D-4fz)mO0o`JwCo%P z(i9^uC%4E(n@XFKjH_t=cp`c!90-Q>=A@g78R?EsuXH5y4wtNHI?HH2N*FcyxD$4M zPAtJr=~F%>U?T>RYrSELUSyZ1#j%fB#`uRJjO^6Q%*gVY66N?a3mVCM;=JT4vXng~ zglCs1r&()<1xH2^InPNUzByOseafQ82r-fvqrnTP)~uP0ZBM1xv%&L37I2_c!|;rbf?Oi`+`p!7EZqanviRVA=fGRgmBj3<$N zWb9LIvd}?t|I{S#G3g-_Px+Xzw8$V=;jNSa*55qbtG+Ho(-M2d>+B;zdFudH_u8sI zMfCI}tEth#RF znyG#fN3urunq|7)FmKFSr&NRpaaJfp5fa9$`UT1-MtH3N#}O6RifEh(<*eT{6Waf% zXOgU9!lyB)qz7_lbYpCjA&0?^12+=^2<`L;!fVcG<{pd@wBwW(9M0HE+bC=KPfch7 z@PZ1A?^0o)qhQkVK$NnXicikuV3x&rLpf5>jG_dLaYKG%DRcx7DM1h2`@&?2_Y<%Nl;PAjqTk}_g zXhWnzD}=o*?rvsr(kfIS*zL5bx^MB$xJi}wZ8^w#DJ2uYpol}qDP7}NHixoK!w633 zu}nM!BBCzl;QjRJ`V>P*^MEBz1v-AVLC+rm}7N6ZvJq>!?AaB`wCvInAXxVb(C>BKb`oJj@>rGedp&EiFz6%+mx19KaDZ zZ&BUtmz(4I=Rf-8=P%#9e0690!^6=ZKe~ML`uT^7!=DcOW!>y}Tz5-b znh4Ol@0Ye)blYs(`th_0(3Yl}ffZcnTbeG5=Gk)(CskcqTNWOb7Y1n+36me>xpfmQ z%ZFC2x==HbvbsdPLPrI{0HV6~m-z)yXpB6dtyQ!8;+km@;iXAwF8phmkUMwDOqMz7FEhu={4T*% zmL_JgcU*@vQ#MM@?kIOaEqF{GFmb=QqIzOVxyY2E4D;GD1J78e9i^#r4*}xH(qx;l zV$`IP*mz}@QnI|0O-BOYVe^OWv|seFw9B0?%Bn z<0AUjF!TF~xJ3>MZ3fHaCz9tlQ>j$8V_Y#};WIuo0hy{B1YzXuFO+GnCD6=g2{dM-Bo%7$|B68IosLh$? z<_dI@8CEM9j4FQ7u1otQP340r5MZieocZxNvQ#3-$NLzg09-HT7wb9o*cVV zDawa4gBO2;NzZU-OvDaxYD|p4Q;%%f<~;KaqauK%k@FKG-O2$G;At#W2aGRl1j=#*(vrKC(e1?2$j z=&a}a`8Nh!P{fqS{JVJ&RfikXVkH9QdzBs4B>4drJ7hAqL~_aBRtM+!{jcZ|T*Oj_ z9;cHhGzLdwoPS7A zkrWknsHduU#^7p`CQ7g+c*#ewtT+%o-N{FL_(Z1j+qH&TfN3?vA-_cR@=tJ`INd+g z;uR`n7yzWgMS(6QMT+kuY&y-WC^YC*lTFD$1xyYT15egfM6+@p;_v{s_&h^!9vI0Kqh?@~2B;-blEHn2k+q=1os<<_%^-Y#Mugs&5MkC*g zT`Mktl5A!~?IKN<)|!gP(dO=M-UXUhzrs}=5{*jTq1<5~Sy?QW^&S@~xR?NH-c{fR z44eg zI}DJ9hOskJu(@w0w#BU&F4`CIy~@5}x7UlE9#k$5ioHKv>Fvp{Z@0}HF5F5c@J!Js zpT!j7C$_~AVApzY-M z{`z;m{`~4EKmPK|x5rO@^6Gnk_d8#G{^sSY>xX+={r<^&7ytEN{m#wp!(V>>=3oEO z_rLk!^Y4D=qYvNPx9;ZMJ({iJ+QiX66J94CbyeB6-aB?nYfT;S?z^VDMSJ&c>s#-( zx~Mjlrqbf35z8$3uwVAOcG_&+wsjL#S(>(ahaLckxw8OJCpc7V(WrZla7w;4K|5%? zrO?gji%7RDl zG4hfnRX=vF>sT7CB(mmCVbn_^Gz{*Z$7p#ips~Ph6Ag+6WRIeQinwcDkUa%$S_^lE zr8MqWe>knT4ZEg?-EP-(8Ev?M1n6eB569j&bGtvTO|^GBoixnFdvVpfyW8c9tGT(h?AFIUMX>-o)jlvj7s&^D zg@!1t0X(FwoFHwOkB`toLQzyHZKpmz;f*ByAbBFR3!9ko`{e5}DSlZ%234PTV#q*3 z`l~yC$Yr!N=5n8kK;VW6ntG0W&@Gt?4dj1eU~%9nyxe7AIk_EuopOkFzQG1b$jdA% z4;(|DU4}Iuex11v`3B3m1LkRm8I8_%ca}D#LQ}<@QF^IdW-#Wl%$85ELdlW4jfv+E z+>>I4K@PwiRhkHuloryQ>hevH#l)CK6qz8etWPHN80j7`pB+J%vD}a`do2sTH0D~| zDeWby&^L0{X~~lGVhEd6x{`1{KTS98ps%S^bKL;dq6^h7n!jO(C+#H7uS|kUFYOP1 zW^JOphh~%ZKB09!Cs8_y4XCDyKo$PpAt%{TF`U$?vO#9NeC^!l$6w1_E8tQ^n970) zH95taBU2qJDwSSIikE^WC?Hq?nBE1+gt|(AIhC<+kf4_mb#{!^eDe7NAuC9o+x3K1 zc_hzyK?go`pDA^b8CnpMUHV93O97*<@GdP))zClP9n~Ko?7^&=xMy-v=*NN0+_?~V zyo;%8SyN){K%kTxwLKyD!BHNyE$oX;&PdV4f;4RqqG5$s`&S zq@fsKfo$y+Nvo!j%ql*!k3{~n@PQGkhAgJwLTQZQP~8-Ol{XYtryUQOPX>@bpP0mC zv;b-&GlfPKm(R*9q8!^sbOzBpmcGTd|M+u}M1sb#z{ z6BW1jo?L$W8y_tVulBpIUSBUu+wWz+;2-~&AN~CEm;cM3ed^d*UauCkeA0YW`-0`L zPbT|IRoz`YkC}9eSckWjt%krdKZ#wdX5OU5%NTv7=0&TD%*{Kxxi*!hH5KXId++fv z)zOpACtE*{)|^KIR+|;y_{}&O){wi z?{pQ2!6AACjyL_)_4UVJT<@0l`0DWD+0_TnuO3~hcNlClo>NpIkY~mv0Z+>uL_P+P zY*iqRc4(q%-Qj*Zb(kw;Rr%AOy?T3nf4I1Cn20Z}wZ(Tk)ux;GyJP?C&Ha-vu7C4e z&vs2g);^KqT%RfaHkozukeqqBAKgAWdE(|ccbBQYT&ZR_nLw-?0EvrPkz80L9xa=D zH$0eYcfH?sP4-Rpi|kb%ALPk?x4LgDPTh~IZ<{#~TZTtTpvdB|??j5xqf$;tPph>_ zFReS^byuv9{HZ)f27u;F0H4jcXxMhzPP^FR+YXyIoyBj zfAJSz{grP#`fGplJOBH?{ruI7l%+s{A#wr+7X8~Kz|1RUx#UrPrK4U2L zHCBph#W+~H)aN1mNV0el2ktwr*Z%flyFS{{c&@L;m#S*!OkNxY%NEkXrNNLovlekT zaj;p&-Ni?akcTEzsZ3HThU^UCp%@IeaJXoRF2*qR8L48wEceIWO|s8U%I_UAIuWEy zoX@G}m)KLTo|oJ);mv$g63vtTdfYBkjXnJTj5soUjU-BhXUuuLgp9j|vZO{fbndM5 z1?xSTAA7%DZ4o^zdb!i3LE@ql5p`FExrmD{&E3LwRrA!&kft_7u!#dz+tS+7mi=N) zR>MhTQ@J%?RX=@o+mGuvUtEoY8#!0vRT_!8Y%blBO<7)K>_9H;uA8mhHkh8exIekv z@0*|-BAn5XN(0Fo%JwtF2$NV6y~L%A5h2*5Yn7w8^Q>ZwiUa>iR~;|La7C%@5gFRf z3@IZ|n7W|cEW7n%9cq9!`=xw-0^LUnakEp9S)UX-*BC7WkV9%s4AaBuo{n{sxw zlvFVuF7qs>WUkVd2p?K}eM*zgY&O&Hs!U1Jh5ExWvR4O#U#0vN61$cKf;z%iCYCd9 z_8urYvh&(j%&}08m50};!-GS$Oy9-J1UdHc#n7@AtDom3RAb`W^ogRv&ZmgfQHCkL zqV`Nji(MPfpd6pa`J~w`GSIXBJ`FKCZYHhqyBHqmtZuQsLhmd#JRdz)8s#r5jYK+U z{frRD+R8h_U<{1fM=iAqOM^9B1~aE|^6Mke^9xMK`JwPyWo(>Hp`t_nLa0ziIw{AZ zStV^8br>h7A0`3hZ3x3!F~XdHD+Rz=S6$kgLb+enr{VpI^;HM^IcemixPUMRR!#zG zV8N7h3>$2q%wl;OgJiWQ=SD&$t2h{4+pq?0thM#?lx+vwm zGyf_}@C}}wR?{mptPi!(7#u{y3I%*wnCKvC^!ftKVmV+BG9&kB(F7nWJ;TtNM$u#6wP>7K} z2V0@NXaJ>>F@_(X3omDr84y4nlc{D4QAJQ^TpM9y8k_KTy&QAdlb`)BBUAD2VatT2 z@TMs-l`}(~4T;lC0g_<}NzepL$UUg>Zmsd7cquhS_~#XK9GI3U%c{qa7;z}5VLD^H zWM9J16vpJ&f~nT!JXvTFVelK4LII2lqs$UU{c5niK^R7OKd+xn=E?{%^haY$t54C_ z1Ud6z@WMz}(~n^=a0?TFA+s^DVb~yo4{@Er3$ei+BqQ^mT=ku7$1%=uTHvtm+=`G- zD}0F)|3z4JatL7A$}X{iLI88Syl5Z1|6F?C43DlZkEgA#>*e9_r$7GU*PrkH`@j1e zKmPdD&tIR~Zs92;xpE{?PUbxYytXvMy?B-a-Q%8CxMi1zmHvm&VRZ#)w5FN$ZmCwY zEJ9h@M%b0PLsT7rZ{4w3m)NtZstSRbwbmRG=}{z{v8}HQM6w;-(#RrrDZ97s(Q(98 z$8c|l<*~;Cc#j=P-68Dk1G>S?yT^fR-h12_3;G9HX?Z<*0-fpxSvS9b`|!n^yUS0P zr;qk8o;`Vbwd{6je$nfcm+XoFl7B}nDl#lj=H?={Yd`$O^?&^7=kD^IkDmS3x1Jxm zx#M=jPe1)?X-&)^eb;0W--+*AUP)oyR>K#s?!NW@m{F!1wqnfMty_V3McRC3-o}az(jmvq<>(4unk*_8JGt7+QxyXq zR@@!!Ve`0x*PRE!S}tW22YA;nr%=K(eM7?h`wXU2IdTGfGO;O0R}7bTL{aHOQ6j($ z-E8gF%~WJjJ;W^`GE15Plm&hf>=uQ~arLk6PJj8?^=GedyZQUio~~|x_@^I#`PJLL zo?bk;eEi<~>%+aD`t_^h?W?<2uWsMCcI~INyDp#o<>&rz|LE!E>)VHa`)6NX?!0ST zPyV&9eemeLr(eCf{kK2-?BeHNeEq#gAHMhG@zwI|a(B6F6VMG{jvwusTEn*4Y3R zSSU#i7MJR-z(ku%Sf093NYny`$w@FcNAea3nkocG^V?H@ecY~(cHCmwM8`cN!%M`o z4a6~Zm`-+uypU(wJs~_}a#S*6AZgMXh&L|+qQ>eYQ0DiL%l0xKmos|=Ai!p}U)qyL zhgUZbbz#O>;0o+d$~;(Th5gJBZ6+EbsmNmdc%mc#o7l15SOxuFxz#;E8!|` z(MP7p?D(st@A!<&qH3hT%$_ zFwmpSn}KIA=G09kMdP(G4&&ELcN3mU$+-;GB+GJi`W#&D1M*WlMP`xZtc5KO)QQ!dn;S?S<+Gi9+gC$q%`q2PDDm!mcyuot*jy>t8%6S z>bAb=C_|6`4BI3&)!V&hG}&xT$8k1G4rewA{u%a$QE$kn_^>glj$=MPxH;wJGObWg z&CTOyeBJcsdS@9WrCGU3nc1MfleZ1{82NsVEgMc{M(GLgrw5esock>*{j7)8hAx!K9Ywyn<6T1QqbcsXEwojI6futJW!RcRM=P69kwF$^VtweAK*ty zAmurQs8d+wc*2tkz%c(st8BvOb3g@l_2a;I?Nf{7EwL!DbaO5Nx7T$1LyVvWSHKyr5v*%oy1Zs@O94_ru#r^r?NBjNag5Iqy%abQpclURP$B%yc<@FzbeDn8y`@R3m-~NsN z;h+Ect+{B6b5cCdA+o~wDJXE^qKJ}6bimOII0~FEBINfyO(c*=YkgusoRZ2VvzGzA z4s6{;OyEuOy2)(Y8LhK?BmG;WXC(WIby8i5-o+(ux+$ZQF`!%pU^KPp@iBB0Gi=>f zLpLHs1J8@*JvmZY4@AozPkVH^>L@TyjY$+x_I{F;>pEszeK#SjG7Se z&cP9tC-irRHT|=nU;lsp;4g0OO;vvI$*Z^b-}+nM`(W4b`gXm&KkZdT&EYCo1Ur@e zqI;EYP`CicZm;i-&##uVEBk0uQ*f0tuMY?t*n$yI(s0~}?^S|lj=*IK(2m?8k_SS$ zi`HJ0>^aXP=)+2SX4D4RHn{cMqr6sJ?&Rr3d$h;not_MLtKYA7I=T529g7W!$4&)u z3019*^l0^y=!XoR2XIkjhSv#ihHhrBuJ8z^XFgb3WXrvqb?+AQgQ~P9`~7YqP`EoL zm=ULC#rsr`-M@VE@Wq?sr(eB!b2^#tE-o%a)`#Q$0vwwB#&=%4czSUm%Te?PKi@sR zy!dba_OFZgfBkQN`Rdcx-}to`-+X%UjTcW2`t%o^>t-Ti-PYdiWO1d6iZnpursGj9V-zEA zs4z=DHe$)ZViLLOf8!aoBY=bDC0*ERJw>xqvK&$ZJMfk!my*vgY+)benZu^Q@?~b^H!RuYZl|qlxoTg+!PV4&g zs(t#+%p-n}*S9v|{o~WO;S)R_EfN>)KBBB~csTRi)7DUcmsmd=vRWdY#$JG81 zzhXd262QYeqA|S3JsX2Bj5QRW8IgpwWGc3r_2X*Ro2WD_io?=GU0_XgS=77`0DgO(X#B;9Mgp6aV9 z)AVze8PG>!H83s56Nac@1#SBMKvSk5#KaEA$Jhw$*_Tx{l&VTh@=NQf zRH|G6L(CJjPBJWym^wJpEQbvtzep4VOaURf;*+CUV zi_fAa!-#}o^JiBr&Z;S8$4m3+G-HC7({3?=L`g=H`3#Ss>MCgZ+^9v}^Eob<`^@=u zmN6%d<@Z^%n$x5l`0&e0@H3ncoj{x!#VqE-6S5(lKJiIPU1J79_)87zfSP<~h8|5Y zlp+_y3*<~P`MexNm58Qf|7^7RUGnmJyN~8C4tMB<*n;uNksnR4>kLNV7e*BT6`?r! zk>kb)hnv6iXD)eU$*gpBZkcs^NZv z<_O%&XIQ>3#~CHpDvi3F6~L#uu+qwdW0ki~K%FM7AW?~i^JHWc-K3|QM!Xq5{Z2Aa zCZ5Ppq37njflQN;A6?63jA=7 z6Opphj2#eFA1055$1!XUc$7OLh(;q?Eaa=W<>Au^)p}__;ze;ctGfgdH#0$NnfY1v z3dWYMZlbrNbi0!T%Wc>!=pocw3jCbeSDD9=C_+a9R0Mxa|tBTRN1hbA%u;a z5b18#EjEsF4rGxu%XI7!y^7>l=ou^D?$~;mdRz>g4J>J5Dobno*x=3JT?^nvo5EZx zWCAWKYsbI;%dh_ACtqkgEKMFiy8Q6{Cx_kgvyVS}^7!)a{b%1goleISE_T>0`pMhl z@%G{H= zaa{YuiZ5TE?#({^>gM{*^*26v^34w(zrH?x^7`S+w{M<4y87-17pHZt2$$Z#>@9S= z-?eVOZhaHm#l}DJ%8|nzn@AJEQZZs=fSz}xILy1dYTLI33*hKx4y@UJYnuBzMc}Fu zUZ|3X4@z0wh^VMq41Cxx8CU7D7Mc)uKT9U5cyPQu+ME0JX5H3YkBaL|s~?UOo{Q1R z(&jr@-Fdpd)4uXHM$fDxVu1qi(JA60E-uWm9kES7vpd5w32=?~W^{8#=^VziA|{z& zR|21iu6OtAi{}@={`Dsxe}1zWrW5Eng%I1&dhw*nZ{5mG% zsam&f>rF*fRn%-VLlc;b3)XeLy*(YD^<}SDS36Zay4)>-7tb$5L`9CC_rMCqdQ3#r z&HQ9`+M>YE+dxM%z>KmW_aKhAnQIwLlq<8$n~e#9i&ARjflY(3DH+Ci4kS9;ge(Qr ze37d3oUq+WibfOC_!zUIq`P@fI@vNK$r;OMHU*Ylat;uc%58X=)lE+bPnog;fN1B_dp#9ai`LBlk!Ct1 zJgQ>Is$9ySha60!5_oPzwW@!gaj+5~VZy!OJ%}(*4fc89`Nom#jU?x6dmW1+sNgUu zXMS~lnB1=p0|I>klTG04=ZQ|JY61gseTD&Tk_$=XIkOxq;xSHRU5qUbgv26qh<@V~ z*E}`GksLX}DI_tLmm*LHUJ-Or0~=h3byLPij{{qrD&#y+2w8*VM@keE)=VPI7sXp$ zDk#V-b3!oqzZGC<#rAVDfZKoOqV`c#rm7iRUaOsl5j z!xg87EZWh8Y4w;A9g6iaFv{$dWdUG}Dp8kmFBV7WV(`1AqauxvdMXd z;-*R0G-G&7A4}~dKPB)0GM4=S#LDV~X5$z097aUPkappJ{E%l3(hz(MYzp@^^GT`1 zBpT5;UuD#t=n}Mu0G3MYf3xz^A< zkTW?xeM?uj-;| zcWe9OAASC{kKTKAb9`90i~Ztm0*|wfb`86wEsJiIz5@5_c6-_m`~7)UZgRyk=7cp) z*7*bePh|o?r0%)h1oc~1P^X7R7MK{ox11HirDWz3S4$yVH5yMJy5ohYD{6?|tVt zzxCc9{p|Ct`**(nuG0s0|wk(%;9F9H~i7mi1UG<0S>&bQ6_6Haz4?r9)VH4 zVKcuw+1rQh?WsR>Gf0*I0}06({H%?g`2!|GJCYeG8Z##n6^K8}D8I?zf-*@ROUn-j~*_yD)B? zF&km*VCqz&O`q0m2x=mL$6=JTgu%Ve3qHjrSTdX9t8=LYO)nj30vu?Rop; z%iHgM{RtfF)-QL9Cqv34sIp3JvUdOC&GBT?d)ygagdsC_L5r%gN-*z;F%h5jj1`9g zND!{ni#ue3TyQbpi_L`8>da&z?M`)ss-omT1x>kRF7bj51;rhaNh?oFtW0Ef5wBrk z;#=hfb5fFP!?gs>ktc_)JdLc3(;Y^Y5iVU~*q>x|ZPrerzNX2-=W8FN=$!)&8?_`( zfwU@lg4PdNeW=2Au13u%O>Af^G zS)Z2{iU&BRi(HzpIsHsuG!0U_@d66#`2=!AoIM@0!(9Ff!PO*EdV9NhE~p06tWN6tPnend9et zWhxfrd#Fko0eZmK2()MRFw0>KTUG45NLBTTEM?UANzuv%Y6|D1FZB4%-^SAE42h)$ z&z_?kZ_**3=0z({KV>1NcqyS?Y%)+MderM|dT+UC;owAWoCRWLxU^%h>9A@uEw@Y| zo&ds103|X7O1#sLHenhcfSDE4^UqzB;>Vzo@r}v;==JpSbJw9prm@cm#Ht!CnkG>i zsV7Vj%3+QmMY4{u>`ZK-+@=~hN=_7<6gL3`UP~!7zR859fekb&nU)Ws+?($!_hjXL z6uD-j_36XR5Nh<2raP}0qzO^aHLOumA7Z3ZhgreyWjVXJNK)XPc$!XbW_h)z$C9RJK`#Ck zd6$_n_vx|6Rs`Z5*)|uLE9@hLW?!Duf!Hx9A|fs@e=wYGPOooHheaM8mS;~co;|*} zy4>v=e6zl7aqyhFbXk7>)!m=|^z*d?wmHmK-yim7{nJ<1|Ll)`_~!23U|ZkBZFgv9 z4re9FVP=rUx|!p6>Thozo?q?E;>y`A`sLSz%)(*O&$%CU)0rcI{EEt;=WT{UAC*ee)t5pCwqIloi?}J zVj`QlbrXk+=gEWSr!@qF&BZMvo|$dk&83^0+0tacG?;g{fYiL1L9&M41g+^Jx^shY zdv16MT}7r;Dnpwh&NLKeJh8UceXJe|BHN0V0=d}fH=Z5-^Y1>z=^^}ayE}dB#iQft z#UFhClk1268{c~Ws>$)8|MIg}uU|iW{rR)o)A}#}!(aY`|LU*$$&bh5*Izuod+7i2 z-+z4Sa&@`?@~itVU*5m}xQWWv^~b-w`O8mUee;9ozxC}WPp{hP?sU4}o?h&~_2SXX zS2u^lZevM3AyS3qg}P{U^yKUpS#&w|et+7QMR%U$sKvlnVAjzU6pBb24SD8Wt%JF0;ngCXh zg?nzRnOGv37IOTa=b@QFCAV8Uww{-`!NIt(jB^CxictJ&tK)$VS$`{Q<8 z&7pTEzdzyT_INt=XIF=bmRHUY7@)`QukVhA7BRX>QKb@69^Phd(F(kE%L+A2p;4ob zn*jLO%BVc!Q`uWC%<(TpZ7RQE&*q>qBvOoUBdaeHnq6!Dhg7$6xC5iaz=gE%2|&w< z=}#4O>a_nnJAxF=Gwqn%iaCaiGEl7=6^9EpPwhmOK2|t5QNc^OWT1vAH9wQhg6LXBr-WTAIvFXDx2n}%Uh=;ff>cHpo~8wv!X=^D11_; za9ie)PC@J08|a=R(!|0~2?uQTJCj1mJk=PsO}*F0q+U>YP1OY;BIQ2Lh*0@Py?q!g zy{Z7G(z6;AXc410Sk^V!eXR+k429+jAQ*lz(GdtJEgmr!Lt^Hd@v>qo3+1DW$2t8l z73wsp2r_y(Q{qY1R6KZ6V~rIh@**=81TiVCtSI&gP2!XZT;C}TQ*>lKp7NydNLS$l z*WJf8G(?d~^@S~^ayBl)GU+@flNf~(+HaykeRGVT)lgxTbBJPum?{U-=FXOC`1#@W z!q7hq+sE(Dx{~TM<<~^u9BICnE`Tb_Lc)Ef2sJcVdO|KUGFf2Y;MACC4;0J44vop+ zLKx$Q%plCbl(XPhF)H%3K|ZnqZld21SLOagY=wIxXqIZ}#VkefDKc65L|$b`o8m>m z4!`12FqzkNhb5O5=HHBvc?LBgGELJjl0AidT2#WzJg=#?U*Uh60t3JloY*a1Hjt1k z+@Hsv&7M-~1yKFv6+Wi-Pk(oxTw{nlM;S`Xe!ZB;z}Sf|O$2XpQqD4;HHFs6Z3_Eq zx@F#syPSno_b6$T4C^K_9m2}cd}d5DzMcyv1A&Zi#W&@Aml9VZ>Exgc+lKR%tT<=IvxE;>`Lb_~Db3IprKmB0wP#~N>xwnyPNte_hf!C}_`vDgxo$4zS9V{MpU@Ntb43aT{Iln~SbZe*Ezlo0~vcov;>fQ-x*& zg_%Lr%r?dKaXocEs8~-G6aQ!LW&>}SyE)V~Xv5e&@8w5MI|@T7K=xqil_Jx5M}Q2U zusm<_@I{uegEn1;beD5KXq7lhf7m4^vzsc z;oanZ^}cnuFD=YB(gJA;by-wJv^CvlcSP(PlqO`145gZsOUw|7y%YZ3-Q71c>x9}^ z0h<{TMu}f&ck$b(A*za~Jb!e!7Tck3-bK|6O$D%D`^Njd+Ydke@~gLZ-}~_W7w=uQ z!-56B{_Q8f_iImo|BrwA$*b!p&!28@u60>n-QD+X{ri9Ydw=-zH$VCLS1)h3Z+>|3 z_S*mWr>|{W{^oCg+Qp7zvxbzPehu)jk1I|d)3`l zaItHfwzc>BZQCzxX-fATQQs=sG0Ug}+C-pDnl^K6y_@$%q^Y(R$Jb>QT`-RP5D`ID z=E*|J`jB~C{LV-sJf;dU_-eR5Z8x{4WACT%er-}YPxkmT=tPynz{}~zrNbD6BmVlU zSIkw^OVAu4Y9b|L0?gFskm(*(7)z1*?9PLBM2jz2H6Ho9qvgw_kz|QVH~iw|{kL9R z{Ps7We*YJ@ck8ya#oe<^z~O))!Vz~fvqA^}N>*CLg|tvX+s>&-c{@`q&Y)P{h@pcK z@#R|OoZ5+gRvTd8m9yWBXXFnCABZksRdsmxtVc)uZB23^LEzvuxsqlK5fy*5Uk;0O zm-|!SY}+^A`gU5k)3(KaSP`2YC;mTm(-d{L6Gc!Z6WV#6ln_?abKOYFkK(DS+AOL- z*(no0pYjdTqh$Fq+?eUpw6!1n1rng8c4w3cb2|pTjf4UGavl4S*3+a2aiuLd%TCK< zrmT-#$iZIH*^;R9G^dO-1no*rXkOz7{G<#e3mqlCn;wLD ztdXr!tP^kK7-CTQKArkZ2YGkSIo1dG;AzmK&iPLIBZSH{oe6F#1 zRu2=M$5t~+`Fl1+&I+tsZDS_Gphh*JjYA;arB|3&v@499|IPEV~S_bjWdc1??itHx zl;SihjhmiYL8Nr$3^z^d5Ws}0}Ktb4LA=T!Mrvw z4QYCLy~WFYMs4DqVGNrS^23S1@I9b;PNA)gDD9eg{xpiSKO;RZkU1M~)pqLn&Ue>< zYY1a5GO0MHG6|wIRTLw>GvWg2Ak%}g)2T>QFDi5#5av@;8fQ8Wv}|eomDm-q=2M9T zlch^dUdH4I#x>fBJJo{3D6|!NOQ~tH(5!ys?+CtCq>FjEqgJ^}!hFw6G5D+LFYNaw z^N6rCJ~Ck=yZq*1^TG6$sr9dd2nRmd-9T4N(yW?I4KE`RDbaxAn%E#+!@zu??wQ0` zSuBg8_VaydIg9&bVX2!sUxzR~05XK0T?X$xfAaLnquAB89F~W5`~1t7Z*T8oZ)aco z(+k<{pZwWh;_kHV_U+pB|NHNM{`T(p5C8UW?3VUV{@{oAtLd&Gci|8rh|dF)G3=er z?<(S!YlXs&S!9Bj-!ON}^RVO6I&+7ciDdV`i>rxAo+*d8qBhu{(ha!2(al6v-Qy(k z*bmjkN*5yHA`aKOP$0TS$6=`1N*6+utR0YGWROknLlDoJshOL56M)Cqi3kj_)hM>E zO7bkw8Zxo?Tr$ zx!T!gpM3sm-TJPfuRThVwwW}Mi-T=wO?r=`3dOB;bhibLzF}Rhn;+M{EVAjQrZ*4$ zr(fK>ce#81_`==9>srI~kFr#87l<|yg>|>AHp+ZFpIMr-mEPkfU*b@$eAQJ-i2W?W z(<2h9aycnCo5sbyPVPd&hOB$JLIjK?FOl zDXQQe4@X=cmi@v5qH>Uy)q9@DY!w{#4X9=*<}oDW#+^iwh%O41wwbNg*KYfz zHBGF^Yi%s6cr1Tp9Ez^GP?QQ1Oi_8e2;ztv5ed8wl`>>{Je4spPGfhEeo!-q!c9MYb^68& z`R#8%`SB+=*T-$qW>s>Iu$Uq>@_=ygjImmiD_jL23b$;apg_T7rIatxGU#KzHbQrw*(*pU3f|H6q>}SA|{UtIdKAx@$1m?+A{AXXp4C8S){6 z81p!@Vx1VdH_3dt66gU@Q-@=m$L0AO#-?!kI6?%Hu8H}+dp>G>Jw|SUY~iO4j3&4t zU7j;I6{<>BV=X;~rVtyJ=cP)j1I{|lT-Wn#=YtMW2qU+IMb&R0kZ7}G>NXu6fcX?Y zcd*5hBA7ii#{&P=UK!^yg-<@7E8Ij^FF88jHrYXCM8gK^6MTx(3@BbrE}vs?I&x(# zl20D4&ACJa@rZ!zTpc-|@ZY7f8fn%3nU~fJ;>5x*b#We{IA+3d&ALqZE3|%>v5rQ< z`A$PZS$>3BR8GKv9+<>;1u+5G&Y7_u?p{GFc@L3cRAUDt^=V8K@_@4|O#GE{659-Y zovdF|v}N2x99|6?$k=j{1t^37#~+F=Q60iL~W*0M8V1nmBFU zscnjUID1(&?Sm7e$|#PkahES;9U;(mLb>4@F}gXaLA{;2aONY_!&r}bS3%U}Gy{ng zmrj++rQ7oxqm1J@X-Y+>kEACKR~*w%TlX^Dir|yi7X*a0+nKEhduxbfpzsL#pM^xzZ^M4yu$}10@)TfX|7a7C*T-H6JJWm02z>1 zMpjdvt9<$MsU};a5R{l4>?{if%ypi*v{d#ppr4QB*qi|~Baw_rFsO~OrAgLOMOoc& zOOi&?v62;oO#VGn3-BH?YKmYj?4{16CAB$pR%2o~WCTv*@@b6?AAWj!?EmM#`8 z>==;BTazLdj0h^GMK_%kE>C0T3YsXxr1U_hyo9v~lVlF(aFy;RmIt?$I%r2e#GXJ% zE2>amOxNKe=1}zJA~E%eljZ|*8&CzX_@j05l=A#|mH0o10IHHXZgSxm(PkD(RJ28< zshHVrx9oRq+uYV|ukB*D6Zmo6PMug+x)qpPWdA0@9dL5m{N}WNeskLE&9lqh)%#Do z8_mC*@yqOdET0Ag zhrkeR+sf?ax@XyFM4^QR~Ne9$-3gWcDT2u zZ4p(7$kMdMjV4@*pygKr$NQrIc;5V2p_yTDrct^3G`xA@k-%ASqJ2(0I76F+c`z`G zi{kQP_pt5_KWAtEiYyaoXA7qk{dS>auONxuJ`;>9N z-@5g_Np#OC!+0dtNfBj)Uaqy|&UXPzQVKyAf7txywB4NgvCHOxv!V)dSS(%4xCow= z$W`u$fQ*bT%ri354*HlCv@qY8r_$66EKZMu9VW&j(NAUMT5BzI)Q}-he3NOm3W!J?N*c|F5xUGwm^_PP5$S?nwluax6w!%7$-Df9Te{-K zD0P=s3$H>&9?j#b*ALrQH>W6iZ@nAfakN~t7pMHQwqroMJ0Z?rFg(53edopFrcolw zn1Zauq#6f+4&V$OXPsGURd0;2Sk$<(I6oj|6ZIr83OIAsK_gYz2a1XP`M7zIn3M4# zqC*|*B>?x5*B_QR+~LAiqx4O_ml(r%NSL4|(@%0H2~*Q+I7Jo{%V)qlPm;|~OZOo6 z8-QHYbP8ef8$gQ%)ACZC6mQHAOOC5jToky9FMc>{%( zm@^z|C^gDHQ&5{3%DZ#VPYzUPxGsMapT9OG>Z!Qt!~A`@q%&&F2dKq6%14|9<+&!! zfE2tl(h(M62mwPPqlytLr8+5f&IUrzR`V$clX(64REG(GkiofvM1oj@l3|HrdR%>L zvbG8t!>DC`Z%q^Bxx@dbOt6^O-~jQw5l>j1KZDDNeq_7*7FVs@aba<+F&3-%R7hu;}@x=Q0_io*r^O6h~N30TWTf3%oJ{cIi%Gn!2o) zR(a7&Q?v-j{M>i{6qBEpSYRDQ6W*YQbnHq;OcP;Lmb#7P$I!fl^OZ9 zDE5oyTQoYDR76yzJC4@7b%8vbR(I>}Yn&M;3UhaF8pr5~)KUNdiNo8)Rn2_ue*Nn1 ztDnETd3b28^=>ee#`poXZrj5HmgVuI!~Na;@w7o*RQtB|Zl|?Btm|glce?b3`)vX4 z?$+)&x!oQ6#jc549Etbo>*G(pd~}R-{@Cgi#mbbmR zN7*VXG3ISEe>mFBL*F;KIJEsDS8eINZznUCZS#lY>7k+R8!aA2e2b|lVGO9{<}#-m z1=(TPtIR)T znmgLkKa}{*6Zmuv@d33cqZFXAw)@{FQixwFkvBt^Uw%*OrL`9)0yWL{uX2#=G zGGWlA31HoO_YQBW8i(^c^5Wy*GBlh0u6dWW+iC40(puXsk~?n+o1G;(N}j6*i0)dP z3^%8Kd+HBsUx6N<3`mcD-&&naQZ&}jWWoh<5k*!TGS1g}T47|e<-zdsnXy(81USll zn(J9%W)|*aK z;iI2_esgm&<#|aSr+Mb1L|EU6t;p#@lF5Sc(ngUyAzN5?34+h6S8$Q9JK*oJT9+4#y$#x>JSIx*hZgerAZ*p;QFt=_SZ)L^OT2o!u4besy zThtq+>~OQw+OO}{=g;u=eieaBd-e9=eOJ3)cZ&C(TqN9$YJEC!%WDaiOpGE zb%ku3zqwr@O$BaQ6O4z8xKe#!{bTEON1VHBYr4}81yf)puEHG0&AR1yv@9aL4^K-xlJNWH3nn7oJVC1R107M&>g%Tc4>d zk5wGYVr1o>B-+W0r$y93QwyEw+T+Gos~R=`!|cuJWKt`KIZT#+_#WD82&A}tm`b9e zq*oyyF+pb{pw}~*nW4(CgEIv615ZCsFjhqW7D>lopoIom;w++&CI`#g^ca9CJFYc) z8rzhjIPERvOZAO>EX3xfh5k9In7R-fn56JY@#?aM`k^p47Ki80~%?O zrpJRpAgyW=X+$4XQ`@)^bNFFeC`ig2UUjap^^DSNBq@WAzfE1V_4f31`U)qJ;+l%K z?^LL!8edJl&hP*mf5!5H`)qRQR8x^f$W!qSi6%M-nA{GKDBH{Vd;NnR%z_m~#y4kl zFY(0Uqtu~So^VjJi?bp5Y!Z*jP`<o&OYeD^)<00;VxcikO22?JHr?>+3YaYUlKU!}*DFlyuR= zxcpId&gaNW`&1thhbBA~ZTTb_z>)!O(BxvBxy6SQ8gmCAdGs?4bf^U+)G3CDIMWKy zU>;@I&QzHsXXflR_OcIfK*agcq%Aq2h($i&i+(aWpG-n?pkmi3gq@=b-!Ij6m#P_J z_c+(b1ypG2FFP3MzC~_E#2#dy#x>l!5F}+jL^R<390clH=YOy1WGqB1;5b4c zO8**LR027D%XvswgDO1u7c7 zeB!anB??D2OF?B>+F`dlZQH4L>n>eXeBEFM7nq^jMmFKDYH^k@+y%XNZA~K~bQZ82 zaD%AzD9#F&{pZ&&*VR-@qz*?vuCg;Z>@QB+?bdsPb{BJ;w(YoeK&4xE zGlw*F@kN)`)J2-gwz{aizVCnZlTSZ;dsM~AwvV1%KE2R4r~c=kym@oKT^yF%wI4Ts zdwaii`{@_gzj6QUuYB#vBFJ4?XF(`|Ag(nKsfLv@r-3g4Mj~}AADCL5sTUPR$kr-Z zNzpPPkRXMKN-#uZQFqa9c<6R>y*Aa0om}j7e^3>L_AX-6;$;OG87MVH$s$Ao&#wK! z?drqA&^er;Xf0=v(i)L_0A>7(#gSm=sv^5xYs&(W?&`)%N#imD_iny*yWH(>@7BB1 zc6fC0pz_cD;HOV74JbdrFPk-=}*Z=MZFTefW7gvw=7yI_;a(8|E z0O-CoRc$TydV2!BW2e$tF^Ia+Vb_+XYqy8fwlv)@t<~Yy7$I3CE>3oH*k%xjHdSeH zMU1;b@^)Hxh%8Oav2{c>p(S<{(`BTI9n&iNwz%18>!)=+t!S!CT*G02xFUMK02jE$ zRi_X+I_^()yY~CuPv#v8S17OabO-xioO2nOk43;s?8s;Yk-Ux#!Cj&Xcpe=@nD;_p z1h6OsDpX#=+4mcs_h#)sPce<-U9JYDix}AFOW&-W*2I*#-MHMt=DjT5A0<(y; zw(MG4R7AQ9fYtQqFx9W_9=6l*$>YN=``RW7DS)esoVqzYuk}=IDsd-GY!EVcab#2q zo&})w-J%bt_4C)aSNr|btAh)cMR#q{fjjJ}!jJ>058($)NXCjFIXzfHo&dZQ4F+^X z1C17o5x`sggEuzuEC|rtEjkh1y@@Q%Ra~>dG@f9w6H*(xNqHY8d&!Yt;@PBZl{HS> zIO}90ll8&fP;X-4>y849wKRCvi! z3`-<-R!)6@gM*FyaNLp+K0;8Po-fr?0D2ua#RzrHj^FY(jIvPqa#k|3T*aFK85B`D zeMy2Q%1fUM@|dwQL#Ry20CfsIi=kXB9=*Gss50szrIeHm9NhLj>u^933gP%fe#9A? zU7RANON~zF@hCEv`fCb(&bTnlX5ieYnE?ZFXEZC$68M8DrK>1wFO!hk{E|uJ0Anu&;zPvKG^Q~WOj2lY-c>EM5Dt(|H|Y~T zev)B?8f6{itTcx4Fbor|fKFYE@0<&{B1&AcHVQqAihR@jYNA&PZmiahsLHrB7nRg~p98mtX#GqaSwtua%;IK1Jew=Ej}psdRzo29SN>!&$^s-AfG|>;dHPjxi!5d; zAWj1Yg9%EdHQ)M6>BZ}RhT>2qr;77u?53185SvO+j*VVUnoy`gE9e1rw|fyQ+gB2(5zUM=TZ{1kP2vL=r6>#{LzdmX<+4TRmB~1A#m4Yho+~w zQL4g6=IY$2Kc2l=2>NM@aaL5-jza*;fuM!#k|unA%amPF1rX78QP*RUOZDr-+Fg>_4fMu`rd4-+XjRyW&&5k(wavp zD9Tj^I8=SvUHs|CuXexxXaC*b`>V%?^QHdbe&jTYosN zwL+kz=~Q_p+X8flbu;%kY$^zp_~s7fc07TTSy{S?*=e&=?-Gv=H!u^k$CnrGes??p z;wrCS-#mVFDXOQ_)(&m!wsw1PJ8nHHji+P3JgB&@$L;dbvKhYr@fVN2_u->`dwa4! z{rSsZzPk0ci0J39?tl6E?%8*rU*8|E?~c9WblM({>;3)l?zB0?&HnhOpSk;Qe)Fk1 zj6GsDO6G9$xOH*FLKZt_AcIG%p|=!xAnOfinPnLS;&0d;t=nFFp0hj;Vt zzFBuuH0dJi=GPCa2p%8w>D6I_95>vb>}szfux_zgt@sYlJKbqhY0I|x z{q5FwzTdas{GG2|9S;BI&whS?clYdjU;psQ;q^z4o_un1dg!Oqw%=VT{LRgSMv#Fo zi!7oShh=GPx6?&+ap2V5kgj78^`%K`yWZNm^}FM?+qM1D^2EKk@I=+!Tc(WSO*Z#! zv)OsYPYS@hL1e$*E!Iz)t-T-DuG*GG zcTJkcA&9O`-Sxq7d+N8n-*3LUq}N9URZ!3eK$L4cR^1Dc&~lN-$hjB|1Q-c(mH;DH zWbh9>hy|p{UW|0CVjAzQ@cAACcec`vtji$+mD*06m<4xaw}{QWE8|$sr|wp(XGRex zI)O&;4$oCF$Cq!9?>#xZ|McRs*KwF>{L~5)h@4=hYhdZ+&+DBx%Jb2k@uclK+Mdk zawga;?=lle%c^!rp7#j|;-U&E3l}gNMYO5}rQ9UY#B-S>I76IEMQ^IgYv4s%f;-%^ zpH|cXgSP;tfQdNWmZ=Mndkc_kPtpZQcE^#6K5`zB^0C3S>r#c0jwJb3uzQ6ez4&OB z6_T{gITg#$%8}B;!>pNWc%Dn30#H%aFaMH})Tipg;NYbWPUaoL9S@qc zX%I1{9Leb&RaG2r?ju_ZYeAJP!i3T&V*VDtKs7P3d=O%<^G`?3ha`MTL@@4~M?QgR zfKT(~uWXuZ*-BZ03q-uCsLyg_VXYwPfBGD8xKTAVgrIM7^uLPbMn} zPq501W@tH6Kl|)rL{?FtDA3HFQs!>v%Ja^WTMo4rG%?0h%aMy$@!W?!#L;PFqxmZL z@xT-*El-JB%-+umBWVM9PNP@FZU7FSgrOyIN+CX}(-g+Lq@G@N1Kx^Ic;urbRO+5H z;z?F#`K@P#&VYv)B)=5;s7Os%ihJ|2!aHFa z0~Dn(F*U}K2`z`T%UdwUIEit%-~77S5KEeK!CmSh{KW94$;?n|pcv*i;xYxE#j^o{ z0{1+(r9MMrAt}fw=X_~c!}U;syKJ>uP00Yp11o$Lvwe5Iv$Mz)1)cT8Lcj9Gj1I(t z)P0#x1?Vc4F^|aHw%8I+*$x;ENXs}vcK8E0j9U?A`?m7y;P z2J`*xJZ5607#@Bdcoe$Q) zw<4PzC@!)9P||{+Vj(tFS+vDNKjo#}JHtTWO z2=X??>?w1{VK0}5%l*E=RU0(AHwBs&AGPe()}y&UIUL@9@A<2nm)Pv_V}15`x!fJT z_UzI1tK*wjH{X77(b3+%>AQx@LsLH}Q~|SYfOmU1uH8=B+R~b~mX4ESc0hV}Ra=@g zUAEp&o87H_zqI|Ln%lLV#_nOiJJqG3o1eD6ZrjPcE$z@+nMOjNnK+h3Evl35ofQ#j zaVnr>H?XJ(%)LoFEV?w`x}7$^dDui{QC#lZBKr2h-uCr=vxltHLm5meU4vXUX)!xjXTrE32T&RET`Gtt? zG<>HfmXnP4_MX>?n3`=}08xmGxVRV`i>SnHNPw$aEC_W6#5VNRZ|!t4Xj{H``Fg+K zJ%4%?+hT#C+p8Kv8oC%mqMnl?Va1z2W{smt6{Im!fS+VuLk$IEva~VZ$>i!q0E-Oy60let zk7ar$WP>@jcsj4rP1LG`88hnxTfD%mfx4@a(m)cq{2S9@W1PSl%!>C~uIK0fV>@r17;~*e{_L?x~EZoD3 zE>2pQ2RvQ(F}$nRS`x7bvJbjA&Iqz$sr4BQJ5$v0JkQj7&5k$)r=s=wF?<4 zt(0&eMvk0CUMig+&%sZ?PM<9^@bX!o>g--|j4@-F%T%7`uY~GZLRk{$Y>B{OiGJBu zk ztN1_syT7?^{XhKtl^ph&+f;d&0b!bvlx$9x9A>OdH;YaTvTCjhqk79khCa(xPi_Enx^9^+q4Q} z1T_X!^EgzDKH%=&dta@)ZMj%KXQVM&9)=#|!Q7!9EYl4F6IJxQk^tIpK+gtJ!Jm z502B_Lp$~5aByk=;U}N}+P6M!PWl9pS=0m7dH@T%hLOLak0BU zu6GYBT&#C=X-!_=oj!Sa`}E>D0I$(T60Snd=XfU=2qg3#248mvR79b7$(enP7-Sym zOxI_}Q|9F&=w_#G-9;Q03*Y9gVYgqlo|p7C2%2t=hqW(DJ8u2@_Ceg9Tpk|nbl*JE zY-c%|Xi|Y^07Q8>VQDzcS!F6Cu_Cu-30%y4vu+)|`}|!1P0`xIxQ^J7`RLFf(o&8t zHumi};z%`^;mzIg_WI3V|E=%-7ytP;|Mx%fH(y;pJzSjb*TYV}_06ZZx2NOn>2Lhz zM^_iS|LOMr?(Vb*u(T$+s6cix0(09oJ9Rs)eLZzIyKQn<+OkNC2?6d2EX$%zW!vny z_Ty>W@0Z=8d68Y%MmCnX2%5;nZZTlnZ0-Ga?fa$ecFkxlAcu%AHi$ML>e`Mqw(bIv zTgJw6&7=jpMRz;hb-a97@9wwV$<6(4>qqxxiPIy4+d7O#I=NKc0I@d9(-Q|0GIOzb zuX}NRb>ta`WUAcJA3biVp9m@@qP&O8SZl8mQJevn-ASBdFmUocsN@A;VEHMWgl!!Y z=+pSvb)CEm)OEwHpLp0C{7STMiM@=0|)7_#MJ6%+ct1Gsh z+P3x9RFF$axguI=0Js#y-w2X-q?tHB9_z08;SBUro%MquWW*1X0JvP6(@g5>&f9?E z0KDF81 zm!Fnea)f3EizI*LsRFQ921)NmhL-Um@VaVMOn>9WlFLsJnRd{#gEC|$k{6k=&1S5+ zpT8>|1<{C<&k-N1)o@h1kPC!I3D&jgTIDprcp#%pQqAn5ls~7ZGA;sSZiG>AVJwrv zllV&|991E6qx=V|vJNUW;uHmf-klAvh<#$ph|%fs`8!lPGpbYx|KfbQO9k@l7?wN52-=5raLbK9Kp?Ug5 zZQ`C@>2_O1 z218*G&(jhaOOcFI_!MClGk(DE?^9Mi^8U${^F?7#DQE{*5ePv;Ldm0Kj6vvbMn;zp zW%uz=8EaK@s~ufigeFw^Sm6tZGLzl;C~l7FCUob&Ljq&)<%X2lP$y_uD-_tkrjn!30Ws@h$e>2+ zRk4-Hkp_lyWrC_NE!F8RG@`K3~aRjKG#Bt1=>_%i}ArZUEaE3|wk z;LcIC?7c)S)r?d~NB%5iHWkq@h5JdK`K`%AW2X6e!aDn|Ip~4_RQrA60ljk$$st=l zYXq!f_5_&v`9R1rPIf9xUNEd_gf7O>{BGJEog$6gr>|x}DK8z5N{g*>+8N&{gij4o zE;1d}=UlTN;u`Rfuv5Y;(3sI9{w$;_LWY5ymtHh|HW_L9RKu(pI_^4ae;`ZMV1p! zb~VkrcmWtqGokcB@R0{ag~JMo)38x8xT0nw>;Sp35v{@C-fdAOku`AJm(ktLylY&t zDemspr8OnjVXTm0?u?oYKrxZg0cP;-JxXTC4Pqq=v(EaE#<47yA5U#+_dT2`}Hq=`o%Xsdivza)%DGBS=4)o+zs9q ztqv^?7uMwM{dThZ=C*8ja&c(;!}ayek3PG8dv`Rq&Aq!Ru}@!nl6y0s&TuhWNJsOM=sl&yFjC7#6608 zPF!?E%b^(rhPOBC?fvn?XBUsezy0CkPhQ=9esjcbf4?4o`uVMI+t)vO^1+k6JDxu~ zoYuHo808}|il(}#9^ALX(#=k*nfcvuZCw=DElZ3x=g>_c%c7#XZT-0RGT{QK$YIfa(^K#3W~ckU-z~eQOsgE87h;M)L?LKRTkOhn#LXjaQ9^;Mii*S6 z)mHP{Zr7)EH9WX&-8M0}Mp~ufdAXZ7vd~5&$}pU2jl@jIi33Nq3=r_V1l0i^$R9SV z!p-pr^N4MUwS~W6C|}JVLF)4WBn)I)LmozFMZ5AOLoX5wAhwd_nw5yKe@#gw^Jy$K z#Hg&0nQ=mdJd`toqr2aq*2kCooBLDm-Xw0>j`3$$jVgvhy>=N^Xp}*3>Dovslr$n) zs_&8M3_1^i$ZlCwl%En-nJUU5c0Y%sIV{gA6C8Ut&z_^CES})wfuVE;RTVTbh-id~ zylzEAa`S#TuBwVaRGO%s+`qaxF8jm%Y1=h5(a&Dp{n|&%S2w5L?c%WCFA}Z1wck!; zw0%oji+P+i-YuIJqwQSO;o=^VP}~$y!R5Yv{l%lhe&4s{*q43N51&2S?ZmC;QO&|` zaiVlhnTZ)#q>lISW*!;ZLzd*g^4y@s@!8nd>J`g_MHO z`edaa1swT0298O>MJ|S9QN!cg#%l+XOi$;8C7lHquD? z%P_l~)>*oYbBmrD&9crYHk=W3F`q||v$57E!!fhXiQYw_dd-}9{bWPJJ{Qy{ro6bs zBjf<%eL0b`tF%|zxu@bMwH8X}@F(J0&o2lXr7`*==8p?AUcT8_BKInq$|QH0M8=2E zaWG=POuzHc5eJ&)F^0q#~em0mv=ATJ{M?N=txRyoQ3(}!~uF zlZ=%Bq+}uk#HYaG06UXw0c?^+#ejh^<*rrLnH*w@DG645=D?FtxG64h7M3P~=d%dq zXX0TvCsXzD2q7t@VE~ZHFUW?<8f5a{l+@A!A>p6B6k zVR4wdocTo!;;b%HAFp!Wxl>QlbYe&icYcI>*$xYTh|EIoaLN zJI)~Z?C+?=<3I7I0Mh9%OQfHM85Z+u*z$8XSHVXgzPH;gpMUx4)vKG{dy_ar%ks<- zbHvJLu>3eAJZjaEUpgasp7H{N_ufSXyUYLOPk*tl_`84ew;%rS&p&>7({_7@7#O+2 zNGSM1w&)~(b%87ERFKm?K4mZHs7$h+hQu3n~UNUvN*OYV~h?U4d;qY)2;$GoHz?<=)D^Y0BJX6 zZp4TwgjhI(IC>VQTrAmP9mW%R5G{3Bef~{FTZ8w=S>k*;L|wzofv$Sr?Ps67YE4>G z-@2KpF18(ayXIy**oG0q;D(cRQ4#aQq21n{cKd_7e*Y(*?f1LQtshs1uj}UF)gtbA zc-RCup3J=W&6>83w7RY1?zo;#c34~-^+uhLMMj_jR}a&J>twoO7(pfZ&4@s7PoWEA zG3jTqlZhL74&d^zn7Ny5?gngzyHkHS_3pku?9Bc4;bi6)7jXs|Zf;K(`}XX~;jjog z?vC4=yESgbJuJ3sjfh>w9UWJ0fI-d7%*bHbrRZ*E1{0A*6hKszL_|~;(cL22q-FG% z`2tN5?st{AXEbXjFrIXsYd2Cx#YKB`_m^*OZ|~N_vNVzX(ti5Mn^)Jzhqd3|p8mH# z`S``ttKa`$U93og$nzmijZZNaey!XDXtGFynTU0bp z%ry~dB5k*{#kZ{=Pj-Us_ieXps>^&P+nmGa>s$o62dk)3%*X*zMbHQH4X}W&^mx zdzXoqh~y0{0!UMLJapVYZ1=sNy07M^?ygvt2B5j9wzwhMyNNS$e@}FHe4ukTC2FbvgQ%tM;s;s8JAI~>mzgcyv!zw2)T*`iKA&F6)LvF>Q&@< zmLWewk8&kUgkhHripp58J zt(m)bTTk}T?A7)0@g)vB^)9;C7w=t(TQrah%@Sqi;>c63oh*rB_A-S*Po?Zn_+yu< zumzcQNOv(PAY1o#UMCH8aM>C4i&#_=NVn~{N;lg9hh01DCG5>;3DFCWF|@Rb*|
    hm0|&y~h-F@|F1zI4kJP;44Vca1Na6(JV) z*s5L8DwtMCl$j?zejwh|@saGBR34DgVK?VCGItG&z}ecBYIDyUbjNefGj_~emRnc~ z&N2m{$zXnt7w-e>+9G3rKuEUwOeWp}Cca+$hZ>lo3#P|=W#cghs}UFf3C@|y;eg|D zc^qDqxmb>j0ShMkk;?kX9%-!uu`!4WJFhSgkuFZdmEn5v-3e_x-&4_%7VASm#qr*C zt7rxe6JoKfVAYYgI3$HA(83T6fw2BEN-Ug1S=LDOvI#s%SQRClDwD}hhJVvM3IQ;F zHGr1l^=X=Er*wRVaA0`-aO#?%m%P%5q-HM+2l0L>lpZB_hVNQ~a1gXclT^Mm!Q7Lz z*5S2j8B)*ZcuGTL7DTyn!}^&Z+f=<&Uv5-ZL3owHJ|;7rq%cZSImHPJXj_u5l%;@* z2t`dO<4RAeP&Bk(t~+Hsd>Xxk6D_Np8h>Q8r!fXmrzp+Y60#$u!ARHwj7BIa31bGxVM4h=p97||55Ob3Fy;fO)nwr~>Ffb_0}VxFIQXC^!Mt)jXC+^X zm*}2)Clx4DsJ=pp#+Ol@_j+l5U`7}hk=U&`49|xS=zX&&9LP$&O!oY)*bDv{=~71` zqp!an4uWTm$>$H0S(XZDcs()rzU8ShuFJJGE)kCQU?K1mhTEr!Ld(jtR8)dlWdx^J7Cs3jC=d3{E|+~tM5B|WhUUak;Z@>Iy#kvsG}`7poWj|P zLL7qwZfHAM-QV6lbnM=4eh>WFUw-!X=I&~D_4@SC4tVk2qu=`W2VcCo{=*-9`gi`? zw=XaD$MtpY8-jO0qdg&eJt2t7JK$IZXtG<>T(*v_n{_*GE)6Q$6ux$eZGEb3QEAwE zT$$Q;i!QCTG-7ni^Ccnq_lvmZb+zMZdpPkEBZ+Jxh|U9yVv)9?GASyYnLCh)CG{o)cGjdao=$_ z>+S~~jIaromiGv$PP?5lNTrcW5xc<2w7}tSkTF<#OnpP9I$&P*jZY?93&^BW`TLs6^dJY-M-nDXP70dHAd{ammq~D=>MP|bNf3H0 z(TS4H!4`F*ZRDK5wS{mn;vFrU_RUDm=vC4S*dzG37xg9(>ZFpXq)@mqD*BTK(lRg- zE;bia&ZYMfb@n;WOEDPoq^ZzIs+c=+TO^&~_sZJl{0XRrzcK!N?SzxaQfjHYEV)d6 z434s+WJ&#nubn_9|5Epsq%dbrf$?k-oXRh&xrvcsdcMe<8DM&1t;!c`VUV4|BJFxC zxTdL~h|rmwydE@BM^x;~2UJdySrUKD91;BSls!V;;bXa0sYCEG>tG0srUgEHDo5lA z52g6}6Lv*>B?Od+N~?^~@hM|@390?DbMOrLN`qx^NJC|OFSX^kQJ#CIJ+S9qFiom{ z{_d=Xi3nvL-ob(wk}!pe$i&JT_)nQzSm$??b)#yCW6Hzit4c+jtzXu}huxFIl==Xa zP!wd~vBV%5A#!qr$vNr9xv$pv&b+d)jR-j2JqtOd#zcDl{un=4NzYRobSgi;8$O7{ z!IfFxu?kNS1K!c6aI)!)b(13HQ0-B_Dp{W&laHQVhGQGL^GR$uYJOr=Ri@`~5;VvO zrORkp{ew^8wZ>K4Bi>hmaum}`4|5EiqC-uUPbJo*Tb)50dtS>+E2`%+%R43w7YiEE zFm8|l+ZTw910RNEp4aBeb-lEU2|@Wvr~LYX)v`9w=76l}hBy z9aU@!an-#`%7oS8|Byf0Z`2byYC6Y}i1gnRF~25qZZ(}rdL$3OUmng5O7{dN8R z&wlyUEt(>`XV?=*V~q~9>`*95=r!B(NdwwiCisk;Y)$adBnOA*eXYBt<<$W|9>8Um zXUUu8enqqH@ikM?lR$FaRhsIinU%$<;L>Di+C-P8t*MA)bakkxi8!{{F=uXhzJ$Tu z+@cZ#+dP9b_a9mu9mjLDGLA~X6ht&uz@v)hfV+0jY4+|eadaHSy1RGxZoYNv9w-09 z%rf%{E95F}?shbX_--dE+Bb(FjtN&$-)y;DV(V>>!|BwIr>$?NU2E;Iz@>Zl)8^N= z?hchVZ|@u}Z~t^}Ev~KD;xx1P;ks^SX0|Q6#ZOyTT(tK5@#W>kp;=#hPx35~ygd`T z>^dLKE^HK>x`?Rz=2#k3{O;8EyXAB= zckFh0wBEgop*7zrR76`lxuD~)=mMM`wgu-MR$>02~=Rf?J{I7rVvzz;Ml}mFw9@ndj76%iWfMwon3dI?4 zxwtn#o9x=+@O889zHNOI*)1v}+q$_JfII?D;O?9Gx~|K@3y8T?A{7hGn@BsfU6*!4@d30N@!&_Y&-KzhdmQi1X?mIX}Sli z;NX+pg<z!WuIJt_)_1#}FL<~UBX;(!i&=yDqWBft z`J^YRFG90xK8O!F)n(5~M`)avDr& zB*Jz!1wd7xCn^q_4Y^S!na7FbuSrrr{rm_C1s`?7J{h2#rIf!`u@4y$2Y<%R7-qL* zh%{%94ue`n-&IKX=_&KczvTA$2*W4Sd~2c0xrhi&c(|ZNz!lS<%g9&rLqMo$OSB@*UYcT5?1W*v{IjUE_QMpMS@r^z9sD5+(s z%;m=T%Ss7rJO4mzq>^PK!pMq*AvlWEx=Z?MxhjmmqvF!TeFzpUkh(nUOu3w@Pw4fO zGBDednqkG599LMcndEY$_Z5$w#}l7tZDkBAwr=ulF&mJK;>pd3hX`@F6qB%4{#T%| zO#78aTuPC0jz~os!;ss>kz6b{o&jAkAJ%c0FJe4)sAoK;XHV6JIKI(+<5J$*Kdq)nNjdNfHq-Wx=egXgeJKm%sdtHvNac{Mm=+ zU;prYS(Y?E3K-pcjc({Zp{xR+^%JS(6?m>tl$CdX$;r&LAW5c-);;e6ylfeLBh5T2 z7aJ)m*mgz*zIa(TZ)}guW@~0bS|uMem8(!hn?{@3=Buf)s>bCJ-&o|?M?Bj@okDM( zW0@_V8f|7(iJy?XGLUY1F-?JrMAJ0d$h#~5`n!+k zz5n9%{a0@ew)eqET=sOZwwd3QAxN^0z@<7p40Rm{72imHLp>@<05m-#mUUr_<@f^UJII$7{D}HBiQ)yw-F;BB0=nFNFYf zX$I`lJv^r(OKT$NW&|v+phBRFY{b^BQ4UR-M0*ED94q#0ZL+lG&f0bB*UoG2o5|AJ zx@Z@^ocm?pFV)gv#NwH#O?7ChFHqvLfS^Qt&_KUTClnQlT(qDmMJf}1 z2~jWkPWIX)|KBV^84xZMWYTCzaKel)s3#m%**AxBgj7uwARRMLGV-1_mN_M9Vl(Ik z(V-_Xw3Z3&@b*AO1L}|XdlJOM>rU^hByI9mJ$klvs__1>e!Of+Z;M!G+U4LWvG^{k z8eL^mv2&WG0W6l3d@GAnM4(awa!mygHR}#N&O9>r#Z8f*sj7awY#+}Ca#=;;zQzCn z002ouK~&oPaXpEy4Obtw`Tb~*dzogUtBO*%s5YT$ytJG7O=Yh)7fUW8Y=^@lBIj#= z=>VbH4y)cD*7eYiTk8g+3QePBmZz1aQH;h64hHo|T1*uAfB7lmDW?K}efo4P#HAn`SgBqsyF-;{2NWy7(%czx0t1MUq=W}4Ltq)og2mZ89|$Id zSlp{5@p zEn_8>RVqU=vfPKvAKw&mAZ9&!2e75}W5iEq6Q7jk+t(tVjk zVn&lRC8e5UFOnJ$)te~zkn&lQ^Dm_Y{u%W)CMfjs|Eujy0v77VVOa-+faPoY0iDIp z!tXVYIn{PfvJ{j0)H5vEuXu&8P{uK&Ok&blN46O<@|VRuQUU}+Bnm+C>^?UrT!E&onHW1WW>5f&ikRe=1$7EI zwgUCcGAs41l&Fl4<5HOKC7kLDp=7mI;sJ%zlZaO8 zbS_%Tf9ZpdZbA_MV_|$Fsxm(yVJhNNT3eGaBIAR#KLg5S$kY@#PQXfnGb~B&QYhL@ zVmkuc-16l|KV96){pm=>=i~~KDmf*Bz~7v zVtj1|qBMv%b_%zDh$VD$3a$#qfqz7CU^G*WY%)|hIUdPwjI^zwO>SqH<(X*2Zf<45 zPLU+C4H!VeNUvM>XMgqgKlyOpx=AiIeT{)~Yv~yu7B^!s6f&7r+F;-KwRvE{(+aEu z4N45-K(L$bH1yQcefMHAs)(#zQ3Bl)uT(sv4an}ODm2^4rrOOsdhGclDqe(0l3#5`sfvY@J7ea11E6b5S4dF?%FrSJRR7QJr$d_7+_ z6WgCI+duo`ufG2Lp{cBX^g}zF{`qg-|J8RNw{GA5@bXXo=(9ii{LVY1A~AL#Liwc( z%93iwvQIMDl$*G~ zbvNw0*&>gx4o88Qsi-fr;{Z}On78XK?{xu@36uDogvF*PS)Y(iasm8tFh|C~K zQZ1LGSDj!mHLj_g_x`^`S7yu`?YU&e%UY2y*2yk=l4JV z>h-y`ckk`()8%JhJyfq^vT}Li@>?p|6k9?i_)&mm(MIgujNH44U};SiCZreF%UV{u zaqF_}a$Iz2s$zt6Gw)a8hD?b?<#bw1^yA*&Uiyd2w!QFbwi&ubSv3vTMp`OXr_cn_ zmSyX$FK7pRm4?zJ?tamER!?(#l63ucESTzJx%dbP-jbbLPF$ynwt4XCm z#Ijv8!V8GS4L%y8TL*N`k*In1LjYm4b?KQ9^sWtsL#>*L6x;gjrXPCwwv|7bu(O_U#@Q+?o_IgeV%&zMjJ$A z??!KEZU$)x5~yZ-TyKYD3KA;F){XC;FYCLP^W_TgyxGgPUw7Mf+jrY`dw;!%w8Pp0 zGu;U1*_?H%TeQ75Z46zbCsQ|RX0{QaXj6i{(>hf3^{dnA&|WUq6b*Rua9ElM^QwC7 zVwDh^+(ViGSs^q5O43mYDgeUIY?$yg$WRDH{l`z@M7-82DqtWtCK^^ugNEA2!STC zNXRQJ>0kQSZ5V;@Dk`f53E|W8k-S$jR=~jf^1{hl_2L*|j|v7^Gxxg`eyfCKY3Ixr z$3Z4>OE~g(#$u#{9mC4^3~xEnxDX&b6qa$%a3ZD&Cj*X` zrpo4ssz~SL;gnlhLYEv4Wkx4wjZzux_3?DVSTWWx>T>&#;rxv)PV2)l7!P;}$&n>F zJek}Ni51GdOBt)D1Sn6?mqYd9T)BDSNTnDL)d(FwnDD7WEn5O>2%xA|^f+_Kb06H8OqjslIHHo|-|oIC@Oa zaEfIlC1nQMa&ZTeF~?uO3Fa{KMigGw>@b9QgyCX}OoN_EFweF2rIaugrHCR@tdsxD zTQiHUqyt*JR*TF5s~j`RIm8n(IyeL)HFwgHWCnTps>FE+acXFw&@}HFTcLU}6R^&( zgR#l55t!dQ{$6W~+-RocFr{B+xEVq-4PnBk7(OZ@ln@$VhNAyYex@%@Ch6wD2}#T* z_U&LBK$&pHVp7PQtduC+d>5=AO=c~Cn8(8UYeT`1bac*>h!}KjPWJZR03ODIY~?Ic|qolf`peanezDhFuu6?z$7gpiivBO zWXT7)xYdlf4sbj1Vqg{O?!E8(zNs8e$7N|#`nay^@pL>K zkIUWNdRUdTND!J>M8YK?N{D2kE{dpz7-^*KN$w~T?LsQm-FuPj&1$Xb0_n;H`7O8vOx%J+A->>`LZSUPZX6xMdeP34-Pw;4a=X1C3e)sXzV7?mr!H8QRki*0{mbX?&;4-t=DYW=?$%#^ z_4w+vJU?&Wyg$EOdsF%DdHY{}{cXcnKYeqO$o7T11CDb@&QVs%1xpgrTpr5ehy4JU zQ9QzHTnQ;gzvfIMI&C+zp3)|0;CgI3mgnA=rXVjbS3UN})6#bp(RI?I7*6yu4h$ef#_mfA#v+>xcjLUw-)b za_t@64ANASrNFPv0mjS%5kx1-VwT8Dxg^n4l-g+qp0~Xz*4CD$YznaNCQ1Re-LA&X zR0W4c7uB^bVJ8T`3T%R>t$*0IkC*bNqLVgek_$DfP76N6;YjZ zlaEZv0+K9e>;1Sc_ou_hmy2o}TAJk8S5#*I8T4q#XtS1#Y!FjYBpc=wD3B2v%viU! zW+W71eOX%XQFW9?QE94SUMV7aT$gri`_A1=1l?1iQ-zA!iHcB6xUqN8>l6BB8rTVk zc+wygQ4tks-PuxWP=zX%X0~2lt{-0P{nK`T*sr@uQ(4>7lWm>LMuD9cJ+5tS+61D? z@}smhU~LOYQ4-xO!wr>CK&nVvRhqn9wznUj@qo*|Z+m|@9`EngRej8f6gP8?{Ekf1 zOlXM*C#^=PB#?ZJN$2bL4uo!xt>WPMa}fx%a(crpsUC2UP+=0Xs8aCz_va7K`~BVV zbZnQ)w&=1Rm*=OapMCN8=HbMR(j;AGa!TDtjHPH#o^1U+PCl@~me=$`_ zf1~s&{28Y-wJW*TZUi{qRlo;KQ}B3t@OT-c;LSLP7tR4UA@LGVP2ErKp1MC?XJZG) zil)~?fEFu|e7dOkY&R3LZ=9K0;c(N^%^NV4en`1$7zZKAU_??tQ7%TYgpgPgh*}SD zGM~wDQT|O3bTt>d9*49t$)ckRMlK#j>LSZz=%)QDUXlMVxz3tT$;Vmxhsk~uq=8Do za3^uh)zx8se>`kxR3@k)sB&plFp42$={ZVlx(j=GGe`@L40!|@Qs-acU9pZBF~oPs z6_AROi$N0T*(1F~CUt&7iSeBB_eypriwAdUL!IXsr~u46S#Gk6|K*cPd(&YMX71k2 z7*b7`;*o^))=uRx;Yx3 zwQlnqYDx%?XgvQ`s%m-j)%oiQUFQKv&MWZ;d8`)dmj9hHbhCQMFVqrawo5V2+kpkP z5gAGFMYuuxj7drPu4Dn|1hMt}0$3#Ujhz_h7xKyCj}4og>0B+;G)tnU{Y9QEp4m!3mj`$HnA3SQuO#o1gAMIbLv{IT0EwBLI6mC>9i4LaKjeYPX}q8K057d zYT@`UYViX1uwYom6#qZ~dR{>imh7Pi&=2KH!Xz;}Mip>RvRe-|4pUgfbR3|V1rKu} zqc?wahq1EvqNhp}PD0#FDTyJYxKLrL1VK%Esd2Z6-T@QB?pJEXVYhdBLXCKkLx5b-L|c7m+N`k_HI}0S(#7HSMuXoPp1$2{$KvdkAMBUw?Djn z5p4v!aq(h;L~G4WX!=NusD%1eUv4|swSj&v7HDUX&E)%+{^9T6{^p0L!zxdg?Z5s< zU$sNKY&&WUbJCAR_4I^p@Tro69O4Ayzt{)jwszcFyXhH zJ!2+t&^$u~CHx+El%{ARge_~kbfR};w@MLJRjj1w)o^|3YXc4MKJNW)eK<6=PEx(w zN5R#IpjBc8%KrQH@5Evtnh;}R@NoISAE0KjzH|-;!jMF!0cY^e868!HqVL|H_r3r8 z%ZD!?*MIkC&wur|Z-4Un>v!+3*UP@__Wbb*@Y}a9|K>k@^DqACPyhIfD+mFk-?8eJ^ zKdgBjCD$ye-ryTSCIE=GGluu96}rQOc}2dabE@HB>{ahC*fM>+eSLPTK2Vf{HIrviy6nja@(7NjaU zPw@sZ;&R>Zj_c!TeL7#IEf9!J9Jq=Ph^LnF?}V`_4y&qo2|X|Umv)rNbPC+Vm6mQ)ubBq#h04SvSSJ?O zcABw+*88?Cy+eV0x8Aw!w(WSi^lhh#(J0VPSf?2;dzbURHaRYBJvLIb#TymU_g#c> z#A0=MbJ8XH+($zeTVJWd&;}# z>*ufeMm6;yxpVqmV}g=glc;mP^2sN1SXw*$uR3}hUQI!A!aYO)12gjw#iG(jb-hV& zNu!pFRe`%i^8CGjg3;e+igWqj#*iGh>d+@*NbVQs2jT*twMBjB}h2IoO^6z zQj3~9X1@oC(4~jDF}Jc(n_i0;Hb%xL^IYhL#DF!*kc0GD$9snlp5h(<8eUz=CDPW7 zamg(yVkK^~Mk1xfHC9g41c(B@Dc32-7^}sk>ddHP5b-GleB*_Wzp{da!?cE8r+b|u zJvX_|MT%eN_>&UWLZov)WXEM9jd(&t816X|IyrySSf%{&5gOo-=Zqi}vCHi)X!9jx z5zaA_FybPaA5rl*$vg|d-g#Pgv0dDtk zvTZ5A%0$<5uBfdlNoV~gsQfUrfiROZSlfph!&r=*J|>Y# zY>I{9Sca5!Bq9zG%EwPaHN@-_7%pTUqBSIeGPb^i{N_jbN6KK`{47mzJuoMmBbmPt z%Tu!ma}?W_a1aKwEMBb1AUYh97GmdrC1#nNKAJY5Hg2qZ zyt*vd_*J^UGCyY$<5}oFv2-`dVv}fL$VrUY1#yM}CN75mI&aEkGv}4h+366(f;daL znZzU?ldQ-2!1Q?rBxU$zlJ?ZF$-K<=5_L3_0fF51fqpkT4lMq6TFPcv2%k_Y zroSsokrJ6YnMOb7Gvtsg>J!Llgu2ff*95F?ry^=iLXsY&w>2{rFzc6zA4uM|$wF+j z2(&1YgQXCyH5D*>`A;6(tz&wuvC4y^e|kQ@T;q}!*xK^_^YynM&X4y8g@z`D;1=e< z2%~ix49rN7#%hZIO_Y$GW@gc8Rs^sH!7@N^*lG>Q1dtAwKycoTy|1UGn;s6!@vxjP z_Hw;yTUu)Zv7LuSRrS(&Bu?%rV5B-DGd0M}X&9J~L3xuY z3B9~OW>dy6)X4y%`A)sGD4p!&ckf@xzC& z-rTpQebL?c{SVK}uYUB4AHVwZU;j><5{+ax_AVmSE~;3XF6ymIWsIwKOGKjfS=@Sc z`>Y~|MUB|I7 z(OD@y^e++X^9#>)sj_*Bu1jKCn4m4b(@e)ZxhVjIQR@^$4ZW$mMDBlh|0;2c;z5EG zJ1HI_fJBHd(AgpgUZyNKyHi3HvFR+KJhikf>oWZw67uH=T@D z^kvXk|D9wz*Ct`A3GqI(qcck7P?x2W3k@9egpuY0@jvTqI&3NfKCwJUp5HTDkDphf`}kuIW; zwumgc9M*Ph>jooD2B@dyR z{{JqStw~eex`|?0ni;H{h!^bZp2<$28wGNIe^?Idy0*);Z>`&E5BG=X>tR_Nq$HrE z3CV0iq>5xt5}pE0O4irbp#cHZr3x4cM0I?P^aFq}EYZBq*Db^~%UMW*NU0Li#|vGM z)X!qnK)Q<=g_=1e!o3cCNV-t)<&aQ*bQr1hw17cmSzn%h8=IHRRoq}|M!3B4MukHL zV5Ae2{KXxKJXSO0!9i_F(E5-!3*(V{ls1ILxXBVHjOEIy$#8|lYz!g^_(*{n%V>j~ zON_h7>|k!WBuECq#IAVLr~BGw0{RZU6C=t%t~7dw=3!1Cnqqy!_Ew)jFmNN(Pl zs6459`8LSM#r##$B)W8m#HMReWHWUtVV1QTk$&xU>@gOIAYf_IvPk1(K>$DZg7|T? zNYZg8qmZ!_vqL*(;e|vcv3qU^9Q7%JUZxwLUmm$$r6@PLiW{{Zj4h7?a>;9Ku7pNl z9%1eZIc<8aD+j}ye_c9TUU!bn-PEDLLlnnr10E`5Hi>YGVZvkWa^goyMautld@R!i zfs(F#Y@P+gQ5tjiY8|E(0n+D+*(3suWvG1*f*t98F)VN#(jqleruSqlX5It$4W|?F z6!bDALz~Nb_$MAxQK&@Df3>svN-rqirc60-&{f@B$ zQ(@y&0bj@IzT^4=dk967NdR$6AcI%vdod zA5Jq{_Bch3(+|hrA(P9*JRrymDLMWO2Hl9km{F+PJpFJm(zK@2P&8mNN|l^}ggMFM zh&+`T8YJVj8C{qgzKkP^c_Zd1+wHD$-jWF|r_XarkPBJKy(bFn3I0!A&j+t23;q(K6Pm6&~=n^2p7@;_rcqKZzI-Xtys^Kpv(c6q6bCiA%hL2sn1dXTqq)_reU306QJ{dhZ%pL@ZG<3;%PFx0H>N zaO8oklt|GNNJKPiDSZlo5lB^dERT`eLa*2cS~rifIVzE0Aa4q|NNWO!K%06<%m0gH z3->lLFVo+{R;Z`NsXN@-BGXO8P(}j_ce~3lJHD7jsXZe)#iVi3 zwyuZHzVDrKx;vd7@7bDZ6Oc`pqyFj_pZ)c>&)Wu-j;$-m-bKM~%eug9w=S(ArQCB| z_RX}lzMC#evwe>!EseagcakuZMbx1G(|`Q-?|%RO+WXQL&m`F{du#gl-@gC)_1&Ah z)w;(xyjC7az#CAIBs%DK!+aT4TjDf5CaWSQs=j%I7pI!pvaOnl7U2s*B31k@|DpOd+rD8qKa-k3Jr*4WTy>hO^hn>(K^MfL3uAGGs_cON&~|H&^t z`~Uv={dd3r?u#!TuA6=T{ri9Rr$27WfBzT1|N8UCfAi;mw_j~-+G!p`Cb4&lu^To( zn>2|aoq9Se*&R?aiC~z&;%vWu^P-)N;r zXx-dup5zdD3x?=4O;LoPX?yE`gQ1t?Hl8a1_D9vj0&FuGwVBrCZqxnC+&tq z!)cLKcw9xGG)8Pa4Qp$Sgc*0U-bsTrnvsSkvK|(a+jZMFcA7wX??7L5v1s`OZe{}8 z_x-Z%oiu}IqMH$2M!rf|cDK}$e=h@{gsc3|h|aNOkoDp6Ui9suAF&)XHiJo=`#nt4OZ_B(gec(c)vcsT-Z%TT3CUQmvZP*GgE#Ga_j7_W|#{x z(>}@14#MvhHwx4yp8!)35QAY#_PChSayUIxaelZ)d{zJK{j`N0a*1n1cw1L}a={my`VQ3@H7Qb3EG`zJE* zFV$=VSjvb8Q&?^=rL%TgBF%%;gD=dlJfMhKtE0pb)#G$Q- zN{%GF5s2n={io(Xym@x+Y5iy{u7FJ1h}i#x*Z{04J~D79g6t^1Twv=wn z(@8zbO_=0@B+H@=CQ`AZfQ9;+NnE$fc&P+}4h=AsQLre?H07qirp^D+)%Gl5ObDY;5U446;d0)#%eLID zXY$|u_4k*(-yILvtuJeXcjs*Fho|c|A71W{s{-9UH1Q?#j7cJ_jQricguQQi~@22g;1&r zy2yFwBl*R>ZhQZD!QQDJI_hO?BCNV~+l*=%vo0tfXn;D{Elib^NAW9wEVXB`D^z`Z zB)$bi3MFpDzFhmekI%0jPaE*z!}+IQzCPRbZ~yW)>+v7-tM%Q^9eBE4p05ApKmYl< z^56cu@AmDvsXm{#$GdjE^rbZmz8C^)5bNB*OQ!;=vZ#3PRE39y5x6&#iZl-dn|E1k z*kG64%y8}9j9ce!7P&_vs?l58tQ)1ffmYBfkwK8xND*ye#E&*uwQ&tt0P^m*iU??J zJuCu9Gm!8)dV%0#B`qS+<)VBz>hKCiTM-ZNOU1-l3AfSi%#(c+M*JFX=I4kcq{dui zH2NvDjUxg?%QFj7KFsXI?*hiz06@I{ppMUoCg&4xUh0FD+^qCi6OE{dV7p>y5JvDO zrXZ4}(9=a35k){Ka^3r3T~uYaBK+`_+YB7UlqH$IALAg7c|-weVq}AQJ|ME0Y|$Ud zKQ0?I`rSxb6!c5v=rDE)(P`psf+%fi%hIH^6JZvSD~}4~@S@9&cNrR8OVl;KIdAdd z_Vh~JW?8f^07b65U3Pvv?+P3acE0lNAS&MX$REbR-$;mP6M>4TXct0N4K(_(hY3BW zTUKq|Aj0k^C=?aZrmN~_4|k`-dcJPG%hKet$KzpXBldt1wh<9ZavW5kw01JW{SvJ) z5Ilq>!9gyIv5rtFGGorOhDm}(a_`ExY`*Os-oD6&SR1QNbKDEg8W?tLdOGOcVOdnf zQYngRPqJ#2z+x`vL1++>-2&8*!du!NAPnZrk_V;Sr{cs?#z!ZyymjaVkz*%P4Vpy; z({O?XsoU+*QhD-5!k4OWz#JFw(};RkdIX5+C#|aqgmV_3AC6bfE)_g|ZUbQEzH$B0 z`a%vwf-zbd-UJp&L>VS9;_)Q%6xwH8L_ALEC$B0aEG&nl79*>@#@0ygQSDN(ZAhK| zrxR2pArkg59I04*%f++(9QIa%Rr~t(L(rLQm+aM!+E|QAM`eulCc&h$$ zubv!RRG%AGr(T*m9{jz+B^92@apXSc7)5|AClhJsz9v(QW71)ivQ&tQX^c==ny4I) z9N-Xf032z9aE%?=e{~`U5h+73iR>ra8&$t^OA>i1DjQ&Y8$XOCk<_u|8EFNEMJ;e2 zSQvvyUw?pBT8`SL_(+LxX-bHV%{%DSwWKl)`v_Tb7H=o+NKQQeYJ}rQSLlIb8L!F! z1;@yyoGiq#lZ*t>5xfoAm{mT5D+2hTV#uB4#-lvF7(fL3CIyIeVx%pZmo;r>EnK1m zz-S$o9}@BKw|jkV;NlB4)tVCAme?e6t}7W?9>6+$``oWkOC|!;aO>}%pu)U^g~l_8 z$v6z)&4*=3R+`RSe4E8%09S%j%5jG2hnS6kR9czH;hkPB^F)}hLE#f{GtNo=Yu_hi zosOE~!&X~~^jpb9=vscpHf0=JCN#;cF2rBsg(~xVkw5qOu#l>-DmRFXYE>hKD|PoL zXE-9fGG)zXAbs97f6L793vb*Kjxz}6mJPDxZ^@R9i5e+|H|e^NTA2I^yp3jx1Zz0~ z6br;0{Lk{-GEE`mWXYwe?o?qxBCMW!7~3~&>TD{~JrAP8BGwiOWX?Mn*C&zuxoCit zxJmFl6{KtCc>z9nuhbJs8HrG7eCk??wz%?uZjiQa(oC1vuO6OuJ)9QWE^$ac?Q1|3 z7kcIS2oZK--+SM?s2)U{W`;`K3G}KGES43q8h2oTaS}>03d8{rdIN>*Z0IS29;2k! zR0Y5t(Yu1#6d|M~azLz$iZOp9-MVVJFC)p)JNkv3Y4gL_dfdR7AadcVlpRQ2KE_>(+PaTioO$bGkCen@WN-Yho$$8t&xcC0D z*-nVGZ6`_eZrz&7cG->g_uqc}`t`%9!N|B*>{+ZNv$3hbV9{j25Ru-=x`qjNU2)uG z*@EC9G>)Xg5;3?0dz_kV0$t>MvGWzD!@4%0+oB54le_xv#nr_i?_c=pfUoYB$CYm{ z_I#m1ymze{35rTLTsPZ|$3=_85-_qesF<_3Ou~W+TH+c*{S)`{a5d9n0!}A7G9f=f z%FAW{@O=I3N3YK>S8n~E|I?p7U9SJ@fBg2p``pWnEMyyU8X{rom8m;db)U zdEWPPxASgB^*V8k0)J7P7y?x>Lu+b=P9tDF$PGMc4iJx4TYSFB;wtaw2T#xY<-AL4 zX1#Cww{N+MYExAlkL%hNU0{ZNkMOt;#I-HKEsSzd8P+*md;|0dNq|j#I!JT!0H)mC zu#kxmK{X1uArD65>lm*sl8E{hnPCC9dOrRJDN=^qM*&nLVja&ZAuA)tYGcTN`81du zC1YY${FO;u;vq3Wfk3+Pve~k%9mFfxZBtKwiIFYt?9!1iE$ZvUejzR65yn{7i~8xQ0k4c8~0vEz+1X zrLik})Q4y!HM&dyBG=8HFZ+4xAD{Q7$>C@pFZ=P(_Rh<7e|=bGklJ}8NI=zVV7qvu zZ?}5D*Jj(>hbJsl3~LIHdBd#%@|wid4_zM0O< z{BaHvJ;ppf5s{h@0lGMg5Y}y1xSm zs-nl^a=5lO(X(VeC`TidtsI~b>Et#!F}4Zk?o3+ae*8Yke)V+&6X>XzIp8t(%%lV$>~{R8OEOGSA&mE z^elbm7;YS#+6-*dYb(4E4A$j2PyppLCG(E`E52T~4#fr`^@8z%V&-8vhmZ%z4Msjt zw1S=`1L=hoSsXxJuaG#Qmo$unH-{L=5S`pIR#+9W^(>2uT-rk7l)V(p@~+B*AHyAg zrXW=s?Gi!eqWWv&o5hXCAbheU^B6dt(o~jV2F3^`-zc5jgpMhLs|Fj+S;-M5lUS&F zGqqA-$QTbqrmYXyOq(DXqbmO}Lqnl|RY)gk_7H^Or^hoZzLnAoDN&gQkg}J995I-X zykS5&&3>TkjWA{gz_lcmLDD5?F-?L)4(pf(i)UMA!jY>5fC({5DI<7NwUNoz4G zIB}D|m8#Dn5HWzjwxs2wwEtN4JjohoMJW*u`~l8I?ovS~@g5Ny4s{M~EdUeb3E4C= z1e%r1X2hk|oTISABn)YT0t9^P%lQa&NpQ-j_(055pwxn!5v3IZd-VN%cBE~}h~wB{HIf;rz<&%}$|ElFGF?_xqB#}Y~H$D~TR zjUmx#!Utu6BoRPGucac@gZ#J`lhR%@pN*_PZ2)&lK}GH}w4AdD0~U~7m=V&*DzuWu zYKTzbM7$%j@X|vWmK2jyTUnDsghtY+lnh0naMIu;`8f_2hd?cH!Odh_Cq@)2vxLVR zisgs@V-W))yc6RT^h?z%@I>k&CIjL=Rdgxz(n~0e5x?{o#qAusBtEI4(nLLdYH70g zg+Y}lHLLPY?RQm>{A+TeP?LW)o2?$vbkxC}QTJO7qQ*r~ySpG*aB7W=syu z%pXQGHgA=vFcB{gL@(YK2_Nw_WgLW2puQXQ>s9IXQAD(p*3Cj4#J$8U6%fZMCfIkH zbpUjyuR#Ru&`x*jab4CXx@Z$^P1YuBlSO4+nyR*jviw2wy0e@1XQt(t=ot5zSAX7{n)@jVONJT1~hB>6B+9SA_6WN zw*n;*IgpE#NGNlkye@fx@Xp2%KTx7lBO)f&dpB#UZBYTtOw(wzriETA(jiZ~d?9$f z%Ax7|1@A80HZBoY6abyPbm@k*!<2jHZrIIsLnjes69uHEzql^#*xD*wn%7xOCok*< z7%`{;mo{1V!aEZo@bP88bgZZ2;izAI@o;Roe|6ga!H@sj|Ic4MZM_{1fAhO{Z|=YT z<UCl8?W8AzBiS1)wRhItWUF&VAdpL7RGxZOc?@dH}a0A*kpC1W_WV_-r{ok@*0C zc_UkZam$~{$-ELy*qhPQ2O^rs2_X)GxZgfpCqJJT5gUdisX^wKxQaxrp5&As@YJ+; zl0p@K{ZmTho;v)T(e?fRpX>MKtx4v zNsK3VN3y7-YR7j1PDP+9iwDP>%czN9S+s9#-Z&>BgCZiTVvv2e^VVrtkE_U34AQKr zbV4Xi#Vl&_1>;nWvRNvf21PgX1%?-?^TQO8=>H+wmbM-j717poX&u_R17e=&VYI0} zr6&E6u}eN^F<@OAd)S6zCyAYHSUl7A{I%?q4m(r$j(?}Hb@q-tK2y@Z+{Q%h;@p;ShBN$;DI^I6xmJS8>j<@}eUF_B5D%ANTCUK(n5<$J39HZK9*p>r z1m?)xUwF2>W3NLPba+3(I*LXL&xn#>CKERS5d@7XA`}o*p`P>*C-4Q3 zZW=Hm4j4=ZWEOW%8pW(4f+UACd}Bhe^yfj`Dsoz=06vGW%%>>r@R8J`kT+EFpF@mp ztb@xHuRX!cZV8A;lTk{LA1oP85xmuu+S35L;Eu(`1bG-6XCXXK8W1D7hAE2~|cppy_ zH~Q(8u(r)rn$+nDW&D_dZv@jZGH=O&-MWO_SA1wtw}K;;rmeNsAQ3eXQ57_8+C+gk zs+Z&!B7`D}#W|9~Q{~{@FwMy+UyOhGySIP&TdIgIitu8|1!+1ZDgsb#(6&T@Bk8?&@WUA|XQRQRz|Xrq z?Piqi(#dY-xpDzfqLA)j#V|i2y0M9^io+s{%0YE$QLoTDU`%?S7B#_ZvRnXQkPpw> zW>8(W%l`VfKE2!4`}O_v1x*g?;rYY+R}XhTynnL()!m&uziclbFaMigeE!=HPwzfn z^~Y#Ue57ua7?&r~KZF2SR47rwTK&nqKHOlWOzlRH&7Wlk(TX%1(8jM0NAn}0#8Ft zUte6#>QhNHRJ>F`8R$g45J*Z~d5_1YrE}b!m`KGak{K17FV~Z0ZL)JkP#tkuLzL$X zj*-ZSNaxgaf>cF3PhLTycWbR3&^L=zGD|hDKN92dsAU*0wX7cItzAGcYvB!+=BuUf zmI6&gW$(Qdws#McHeZ+CO&dhS^SJk|U#^`HUAanRr$Hh@>S9hpMHSvf)KR4ZF(lc^ z=oJ)&?XcImq8WiEY@pEmg0^~#UZC9j+%wcavbvPhUylJQmPVs>tJ>Pyq#MrH?o}Fm zNWGg`e|ovBZC#r}*o_}wt||+05K)hNWd#5v0Z{kAH0c@L8YdqaVH9|f(}`u_5vnNK z@U&b_lHGYKz0r1ybU#3V-i_UiMH4kb36a6J7Jy<^QGU4SS8hf!5-P(ehdUoE zoXFh3bPL@@60a^=9C|2p`H=C;aqLlpB_NIyo>k(Giqjj*dBfj3-ELKB=td=X7!n%Re7$>3elEcd77O9&}Ao1ptf^ z616e;w~}5=8=Ik}VPt_!E1DL4Oe*3~Hw?=0rBooeN`%hxsho-9_??%o%Wxz!!6k*Q zycb6X`c-7q*F%;Az8qp?#2;&UI8YSDrlw>%sd3g8mkP(~$q<=Po?>DHz6Y9(gTS0{ znz?B!E9gDUgnzgO8-W9VE9*rOqLtjN*d|6oMi|nu%K=Vu@JU?= zVi7;J5wjr#$-#2(6ir|f)r*Q1dajm#Uc8G@nhClrn$g=J`cR|WLj}V{7HyFi*Zd^g zlM<``6-k<`pMH#@Up`28Xl=Z_v@8H-0ny+&cB}v2Hd+)aQuBuIOchvji>HhBU`fho+ zTOaS*t7H4@w7j`n9}n%YNCO1u`Jc^j-t5x*yG!48+dVs}_sy`AW?sQhc3N8&QJmKG z;r{S=zy|#Kf_G0>-TO)$6-SX%)4N4atDaUpF1TCu^{VYYye^ONU4fS!Puu={wU@nr zyzC!0d-uG5xbAOXwr>~x_`JV;xi)B1Y!^09y*wQHws|_J3SU2*1X<)?rFlsusnUwE zaSj5KhinoO83&`jmllyL&|rS$F)Xat_$w>jL}fRxwn&h&+tbn~Zce@(*;cuu%js47{Jc`25#KUYwP!3XA z009AwFgKGWPykVVb9WG6T~vgJ!+PHN@%f@nPj_qY{P^6>%z78WvZ(Ah9GWgoh>ZC~ zaZD{PK&6B{_0H%U6DW9t>1Es)c|b079^mR>k~Qrw65Q$jIv|n#h^VADsC|I+#KOQh z;$nJ%$;y-9rjsgh=o+;rGJ;!vau|M0$FCCyl{9}ch0(-$iR4q_6IGedEo;OfeDpNZ zBSd?rMAs6iMEA-NwE4u^jdMhbrn#tqmLb6$kT151*?zUI(K`~JfG8pcZq^AdO(AMt zw5-!_MuS<+lV~CxZulgPVA$g(+M=rI=GIn(3#7FsWNX^H0j2_P6G1ZtoA9*gm#>be zMeo+8f(AP-SUs(FkZrnskt8IZ{6LI@+U^lI+CdldR=27k_P#$~JET`xKmi|4%a?EN z?~W^t+qMh1Hq{n_CgtA5oZR%}fywxnAYHFTV;OeZ4-klazn8CWVmZ*th?LjINQXH(ADWby*nHk)yzwR|m zo@2&;vxaTVXnH;}A{OmNW%x@Kf-k)(nkng($+S`e)TJp`<5Goj=gt5zh_H&5rVmjs zkR133LRqG=3^z*BQ;s>>?5)RWDuyLBKBV!ALRw|1wNhEb#ZC6f!igBARaD<&-#N7; z@~Cn83q5e1ReQzThcSGC;r9+2KMQquLy}H(su<@uR82am-EiqynF8heB|MFCe*V>} z#3^aZ%DwcW5^I*PxM?*}4@LQ7VMb87H6`f7(oFG! zkUi$U*SO+c0V4i66Aari-ivZ-hi5mIjls^Cn>Hd`E|vi1B5pEF!6&<&`r`kI?D`pir>X!>$~yC=GTTa*69zXKx&0Qrj;pS z4;CFI>?MIACo(E;qReRG2&W&GIi4S0e<#K!jE~g_@>5A-OJ!2~3Y^D-Go+NrSeAFl zNdfry9cyooC}NxTHq6v?nw8P9;!0V=x1OJpEnzOlNC+S+ z@0N7BFEtdYVz3hNCf~Evquiid@1VvrTQLBB!hM6TH!B9*e7q!c(#b)P3f78Ll=y;0 zY+0yq6aC8oP3=uAm;n)g@^=ltAiu>-yvC=P?{>#>j*V%j;3V;(g64>S@aPxiwm*L zIGO`$#=MY!5s1YaMnofON7E$m)+Lc5qS`!b&K-Q3$>MElZ6^fmB$nd9Nz9YC5gGt)?TP%)EO zNVqf0VY!kutCGC#+`Tv)cv$pq)rZ%I*LR24cZb*a%V&?v=cmJ~kQrNr>*iBKrFN&S;ly*Vas^%lfk) zKmPCk_~1;Sg(&a98Fv|Lr%=KYX}8y=)f~p`DJ+dOsbHKmW;R z0$lcfJgk0EEECA;vWLs{WHiUZdIFkHHLgAd6N-SUxP6Z1=%9$~X3y8Yb;7UB8U=RU zO*^hv+d8$05l@$X-TGl|$F((8K`}A^H z+uiB-!-wO`^?&-^cfkJDo6~3aKlzvc`fvUp|Knf$H~;5f zohUC)*B^a${};dc{<_(s>M03SGSp}EDgi{Z{els_+h%q(Ud*=6UL1fF@2HrkYMDuv zlb%c=fmEQtWy}fcp_0IKks+Nffj||9_29I?tb=mCZs*H(e7w87T$e>f<#O3yM5wm* zWnGrGHo@=@C5dgETSycWT9)ue-NbeP-Fy=%QKKCUP|mFg6!ic^kEXp5u_D;bM6gK9 zYynLV3yJJ0_bOG*IK(?`m?F;7KPV%q zN!Ub%#uDE+H8db=3@89qGc)kGG_Y@-lKI9lS6>#bUDdcB3wR`#(~T!h3+IIe+{9!V zWN~L-wRKOLb8zUA0S;AqQNM&ZebB3XaqJRLsHzt#7XS8eburtLV)irr> zn4NfCc&9h)JJbhcxq1237+yLW0#pJT%NR{?U*>T>9#2Rut|{J#D{ZLnQuZ_;kzP-^ zj6k%>ipNG~Zfd$CO>Vop2C)lP%gM5T3{n(<-@&@W(?DHonE0~X{7>Z~6%v8d{D-HD zS&l=K>KhonPRG7W5neAV9;-5bUr~cx-gxuPdO_;P;o1(?GHvbneEKPa4u`P|gQ7_i z%16xmw;}*lqy5R`=TB=lVq?g$Nluo@luG`G9F3Sl`8y5~@vFLTMe*>rf2!Q^iUkNV z*fizTjIe0Fnq}0dr%0mVpgAL2?J=uq*kQEBPPt&lRq;GDU>-Y#G?l^$1ZEi~X0U~SeE2j#@cG<=+}{Q7s9)8avMXc9_IC#g0dtK z)0<0W0^af>$Rwe&s1#f9lCA@4CLKdP-8-S9Rv?sY*+eNxX=&`b6508pqT@emKD<3$oL;#kxlbOGJ`Cd*d$r*Y^EGdAgb}evv z;Pr$=rLWV5lJj?STZ@?%;QHyTmV9QW&@Gc5s)!` z4(W;M%u`6*8fp|u23DiLs1D+<0PrWI%3WvT>ZG>4-7+eqcXLwpM z#sNS^@Wu&ap0`L2gF~*GAzU5)`oogM+=J_RThDCKQ%5ZR8K^l!$4@}EC=3# z3klPH^FxJ!V=~WHyO}DMrpwZn!?J)XP*tI@Armn}I4VI5S(8XB+!mWd6O)9Fs1sQX zt@6@xan0dbEiOozUm+DU3QU`-C*>qiOVd?av*tlJ0P1JOJ~nYyFZEIY-V)VdqKZsq ztCn6t!<kW&ifW{&eo|uKU{; zd%ohl^|SToYd>#&@11~kddph6Yv@;B1priJ1zM9=hr_;Yi&&G^XVQTpGMk0 z5g|+p4)a)xk{4qLCDD!S6ro;a5v)xQi!4o6)g|+VB7a^8LPf4yfA@6$>Whb;{rLW` ze*N+3*KdFS_TAFt|MGwM)nSD!(w5e@?Tg35|M9>0`Ty&G`t|?wfBcJo{PQn=`Sq(+ zDB51O{qxgu?OlbII4ThkM+bIe@7&3)+urHjNGvZGc?PO~&m%QKT_oX?#T-Slt9yn5 z(l;1VfS^P1ybO#K|BiRj`$!;59A2-sEZUmvdq3VCbXnHBldig7FPCjM$X#2DYLvib ziY0<+r2$`}2O%vsjZr2~JmXfvZ;C?$&u5Cre3P0^QY%KbXd59!+#FLkYEhvr*W3c3C1ogI=$SYkaF2a)n1ukMYg6|GJz`%K{nplY z>*?9}gUo3A-nX5AtkRllGA9q0go9j>(N6QutxcdyBdvEzqjk2X^a!9Pw^N8IR4#k} z=G_yZ&*y7f7K)y)T~Fv8TkqW#i@Fy+sNq=;+5`}2s*AR*2RWv?H3VARuT^bMZw>Nt z>EC^LzFQ94ws-cs6ICMLb|NH2V)7l5{>31(z-^li8=NLoJQFJ&iNl|WCx~Z45>r^q zkE6PDFCSq>5;Rb-@7`7y5*R{&O?6qYv?fRNPByl+-P-{YL^3&jIog8>m+zD;J6A6q zkOX5ZXBhPx_qpM23nHeDsdK)PIK z&v&!*;?liHy+rIo`OvVq6P?CJAfw>Mt+=_;PyR*nr9fdnKJg+gwLZw`atzJ$N<4iC zAynnbBWC~-Wdx-jGEsd@&P2*wCR1A2(Tspr07x>lohPU14M+)nZPJae6OOl=Q9lF- z=8%CS%k`QS$)mZcs~H_Abj^>1Y@h}i=0P$jiwx+5Z-k2BmLps{ejY#7QWTBhdr25}d@8OjB zs}qpRe-E3-;z79;X{nP&jKLxGHDAXe_BWE09~`fW_(i-kB`BYnDIkIBwS?1)hyR@a zL~PS=&|Tm|Z7t_sf9e#LfE!w0&|Cu!1*%HA#ChM8PNhsOQ)9B$e+}0eh8&U9O&G=nN)*NUqn-Fr4 zuo53i*$;y^mhKP!6lRSDOshIe0wOlYn;9@e)hX&SE!XtJ7~|09G|khWB^@?1rkg>_ zAZcWjS4Kwavk5|I2P-HFqhT(*y%^6DPnN* zP{|e|knRUf+Jaw8nr^=l(*x0^vx_lGy;z(E3D|q7h|#ijAEUgTcnfH%>fX)FR0Kjr zgQC+^n;TYDX>DOe4+}IR=_aZ*rACmB<|1^&j~a0mR(Io~tg5Kpm{pY0PG|z4U??C( zMG@8SJGt$Bw~ZoeTVFjMK7TlV`RefF*X!30>sJqlR}Y8N0s%I|)5X5~u)V)*@6OwY zm;QX|FW3IE+jZ;R&8XG)~(y3CL&OMdg=e+ zFMc>4+K1=uwTP|_8v%9z6eGH-2@TQ#Lb|aVt~<}@-}lXUF|er|RZfR?f496o9zH*| zFCLfAj{3#j`uf;DyIbEJ+E;7)hmR|OXW;$CzI(oY^YQX`@3*J3t+Z?B-bF9_smZ#i zw@swgJ|Oaj0WiXIM(zY-A0*h4t6DTu7p0o8A~_Pv!bRoP-9bPR?q(o%;JO=)ON$e~ z!1Dm-+Xz${@4GzKYCd7<9XMnqU)l%J#SyXI{x4O#h?85|G&TaH-Gv4*Izx{ zpISG3c-ek*f9SnSayP=maJ(9?W?Sdht$Sfar&7)J$-`q#g3DwiI+1`hZHvIdMW0z+ zY*+^AIP{8e97}A^dMPYJEl6VGo<4!+=a+S95058W2Uag=xGuW3qmkBmz3%IxON;gr zgddASl2keDSz2A!^td%oxTJPk@1STCuNYMPHx^FNg*f_X%mvl&oE~za z2X6(4h9(?qW|T}d5u^hgQD2i39s)8Y&E+{4Gv`V2$H^SE3lz)?*E#~n5fsc4@M+`9 zav(!Hg_9{95Nhw%mUcQW=j$#iCIX{)haQgdmjscbRLsxM9sFg6$UAliM5A|z2qM$m z%p!yguMZ~*S)0{AadfmwzY{EghW#n&U9ZOvUlt39#t$eYoztw zkxk4!0kP8)TAO;!Q+D8K>)5DmefxAV9xmIy?{;i!X@UFvW)Th!vM3ejWbYu@AZ8}w z4W&E1eH^~b5ovgo?#LR_rt zK~Hzf-n(~;a63I^#toWZVcm+$AbX(aT!I3AN{VCJ7K9OK*>@8G{yx^}V64tj(k5HdTR~nMPo2_A-axvo9uX5kX8A;=#^jV4 zLXbQbK@P8kGA(Zoe5_Zf_~hp}+)&ejb@7Q)D*8!6Y<*OHD9BGi8lokV%sI{!LZu@T z;eqQEzsWB_jc{_COSUZnTe5+gW9v0UO5?zd=aszd^ZI~ zU6?au9Fom+n`7vireT@BooR8I!4R(@6EjkRZ*{l0 z(}=!fM3ETLwQO@C>6E%wN`x#)hhJY=#v%-lHamaCm||Z=Bq|Uy-)EjfQlGAzvP>J4 zq-*uK$O2JTc%go7DJ!>2IFadE974oKq_KETS}!uE9}DAsn=Hk`r9USe`#aPmqpP)g zOu;IhouM(pfXQNWr(!Xf<}=|aPH8cvt}(T$j5*d_lUVBj6eet^V8*&??Vgt+ zKq`U*zr?yRHaM{;wLeUlB4emIW#85S(V*}-;$-rG-!6!kBG8K^(Q(BsOhZl6FE9BR zhp}cYNMU9k5u^#J!eNCM$Ov5MbWVR@R3_~Va|l2*YA^ae5|Z`2$N@QlTaFtsskGA^ z;t_&9Nd6_7SX`r8V4UX4tRRFa-o<$dR~>Sk3ZJ zI1sC@^az}qmS7HM;3&fzT?oUGKd(XLU;G73Qxd`m)QN@*q1-6N5X21p6*-($bxiov zKmIGv30r&-qx_*uMZsQfLV?S<9@2wvuPFsohDrBBYmu*Z*#v?zH>NoXZX_;LS7LS5twC ziV6k2^W68|*%rM&EuX(We)anPtJjCG9}hpeKfbzKjw=j!zT%tb{oT30f8O4n_m403 za_Q&mw)MSt-*@r4LG9hTg#nA0McOY*l?F`#?mK7=hJ80+0q#04?=Nr7 zROK}U@EjF0K?hCHfnC^%9cGjc?2tuBz?u^1hE80s_H?!1ez+Q68e}=N(~4K8!`-TH z9u8lf^y|mNX9xZAVg2&{@WoMoay5#Fz4Nm74QQ$&(ln5* zGj9>AWWP+w%qmIi7b4>YXqm}G3Dt$-9;5ZHB<6P`pD)|<`FeL;*H!m@?^{=q%cX16 z$NSTo;b~YT-#|cvi7l%DLZeZbn!9&7Z#-|@Hl9}d{6T;8+2Qx^&(|HRX2TOQ8%&wg z#lV|E0H>o@#AWM3U3b8Y=*F${ERYRen{QP)G&!uTLB4<9UwZ%Ivj^Mv-+ue{;i3Is z|HZG~9QEnL8S9Z0X-%{(jpy^es{U91>{q}3-4Fliw;%uH=bvA?y}RsPriqF)ku*^`yy~Ypec3dw{ah@{&h0!TMom*uc< z^CK1oy+CRnkRUTOL~6Vd_(Reoox&k*m)*J>vD>cFESz2M*E`AR`xQXT2fEhE?Ax+s_epCoC;$_=kt|Ny=U2gKv zqL5;sE8v29Kz6C{mtkE^;nsMkrh%)A4W|667roiQh97J2MKxHOP;o6Oogd9fs;f zlaA1MeJq^-euXk45}`Ut(j}v?kx({imAkbX+Q8xH zLHtEWu%IG56-~)O7otyJ9MJ>B%>c|#rd5`7Qr!}~G3ped>1CNm7%NzDc}_u*{QvYn zUHpP`!8mV6{hbwQn>_Vm2DwM+Q{DcN%s9dXK~6))chi^6RhgD7V*s^@6Kzgw6}yp< zQW;?-8Mrd#iU75noHi+vC?-#EzHb`C;T-KRRjHK?SJ}Hxr>kCXs_<{TfT@+`Z>7hZ z-$-B?AkTbnE(PS~S7WS6qr(`F-O2Tt=Jkhv3THT}X9*+6#|m08fd`8rPdgbS9uhc^ zf5`2$_qm%s{z=qx#hng?I2F*|JY=$Z$e`8O4PQ*b{7_&{5E+m%Ee%QqB)Lw^O~UBr zmc?#HTqkp;98q)k(|kBqg&apnLQp19#SwVp>i??x%(jfR%A%Cu!6LiyKx z$WTSO)dwlnW|m*9QO`nMW8^1e!#GwHNO6*BJo(+}{3uazPSE?qeVX2yqY{aO;T&g1 z(enE;iOx8{$S50T!xvwjr#QVh^d0s1d6nY>8O{ST@>NF%HJSKfeu?$P`4|Tos+?YU zyQR67{A3i~l{Kx(*lQw6wK|QM@XY`2_n>7+YGT%aQurfO*%b7gPq!`}VkeCBip&v< zixNL(RwbXhi6}(~6{QY)Wj(qUQVa|xo#rJqy?Bfm2=jZl0#M95^>hpWFc&IloA+Gv zbu+d_A<_a6Npe|~q?r<Kse~m1a))+43nz> z4a~}Y0-&31mu|wt+TOgr`{LE%r=Q*Z^v&_7ukSv8SnnDHcmck7vcLcC^4pKw`xpCo z-Y?gFy=*&7x-`fF9-1B-AZSpCu+!ML-6OA-(+4UFQ41y_!I(?0)Oxq>i6HP^xqSm5 zrv@e1Y1RRVQ3Z{10Ay7HY>hyNb;EAl$<45J+stIG&YPV(uAO@a1kG1g zBOD124!Z`DrC}VTKVUIxLSoVZPo+sE&jV;R*wWhFVX=c_H+k_G!gQlPvL6pf6) zun%!*J*F7_L}m*?h&Ux6fDQxBfWi)&9FF|qdE3qOaQd6yzx?i-_y6=C{q*i`{qTHg zr$eVgr5z7XJFk0x|GdBZ*iWxcUw!rZhj&l^>aX5i4CmfIZvE}cZlYV~#@?-t4jpyF zs*VINzgMIKVT%Z5*X1yuM)rMIRb=5>Cg+es(}{ZqJ9Dh_P*wC#^eeoq<3MTJ2@`oa z@8|7u-Ems=-G`U+%gYy^A4Sm3ykezlr?zETAl`k2A{6r*f12ko3D-rK5qHNBZibH; zO02EXZ0m7_a%tY}#=%NRUJYBf-ut!l=UdRkU(->)RGY?`T7dgE8Tpepf(mH8+p;XycQaITYZ3Z1>%+djeu9|kGs$B8sj5*>G|ak+sH#|pw_>1Z z^WcF3qGny2sNXf!FpyEMbmTrjHN&q8167gzKH_6LIt;QbLej7-UMZrPb?bdu7FP>5 zhuv)3`@WlXgPD-RF0>}Hs_ZHeXbD3;lMLi`5+>3B5mhmx$9Ov|%#e77J5=4klk6(` z>h5rNY?tePy>538%iXcLk@C8b$!~0Oo+H-hM>JA=BRL(T7<*8#VEpNPgxfH9*WE6=?U`vPH~&r4kn4CI zmFQMpiraU~NP>UGxmKK@1hvYU1>r;WKE3h&ha&k+071G;^QZD}$=yZN*+-1H!cXy| zQry_FoPo=(!jmPLX9cwiL1-&No{F17K76=jTL{A7HQ)k-;@a2j&m?~>uf;(nBT4C5 z1YHO6@nmq7;ZmimT5g+E=&H6!B&}fjr^wV6Ok)cFjbV=Jh+W3Yr-WDRLSjQTR#&9B ztMh%|=QspU`aU9|$aA3N-4VoO9vf6lAu>H68Jxn%JZj}BD<(2vndzfR*ifku zvp1)boMVo3_WoQon7m6xqivH*CayGOBLGi#m3~Bj31 zJPygOG}j7?Fw@*>ebO0B#wr8de6S;HES6^MXz`|iSpS9PM#}h-Pkl#=l|{X~Qm-eN623S9@;$SRB+n%@Df~&C)=W^dJ|t0CDU+ zst*Soc(9m3G#L7vAX5+LPw_B%q=^(es#W!SJ%2Wkw z7*mZOXG|c>LY{2_5yk?t{8zwC%)@Bub>09%gj>i|z`%fL;*PSWfspm$v?IB6er0uh zF07{I`GJc>=w8OrCCiBfnCB;Jc*r67n6*T_HY_vUhGc|r7No>pJ2%kcNca@*EEQjf z=nE=i4Kmvc;u!)tfcjPnVLn}O(=R1>g|J?l7ujfN&5<9_aCm`KVQz5y@?)F4~j;tt1L|xQ57mE1`uZ1 z2^Jnxqe4V*-TU4tQcXPP1|8bQ`t6as!e5Gms4BbJzb^6rP|ii484=xq{^}zEclYk zm$NugZ(7)`iELfJeZT$e&HAga@BZf7^Yg{lDz(evuTyBhj3_bjV%PS8?!iDJ(I(Wu zRq<-J?L3RUd%6Ja@4tWgZGZZspMI%r`5*q*-yYX?e_D(yRoBD%+jr0B=Vud9S+7sm zWx>P!;XnQThYy!41gtMN$yfyI}Bj}vMYBKmkbjOpBf`t$FK^$ zgXj=hn_7BQanS7BsvaX9%*vncFr-a)<8C-#wx@l+Ub|UiH*E^GyZhs^G=-ecJ06Zr z%NmP{Uzn$XUZd_xs>+h*|IPEXoh|tohOd!+1ECOY%i7S%-E8Z)ni+Z7`?Yi5``&Fc z?wy^U4b11X21O}+>qTJ(K@|5A$t)xh4`eh|6#z*Rq4HZ5Ktgy=)3i9qH1LK zp5uPFq-cWOkYorjTU5*g@qSgC5U{DT)5Dk6Em29pP+IHUck3PW&I~jaHgXXhGz@+% zVnyc4X$^fLAy{zt4jrI@6r$+}lqJV?B>Dnc5PZzu0cc0T(Ig$OQD-8Sxw3r;j?A|#Del6yChBD(Dz zenv+TKq&$q4h<^HA~fUPK{+nX4h>92Dwss(v1tC=@nYhf<=zZZRxG==p=KYCDWQf) zHcw6EFNPPc=_maACiVrU!%^rlvT1@QyT=>!%q)KfmSD=AFr5SN!X zoR1M8kmP{QO=AGeWnj$#xwulI8sX2f0^wB=y2^LshMat=`yJdC+%fn&bb>Kr!^ zI9DhuljZk3$JioWVaymqv`1Qj`^D2rr+F$*VzR=Si7ZkUImKuCNBILaR3tU^x0-)g z^OcM@j(%3-ne(!b$Bj->DP9q>5I{yR`_jnCof`X(iY8=45w!}l%T|BFO&xA~;l&&} zDfxq+!U*DSfrO|}E)z%2>LevTA7Dld$7BKDPuah#bu0R5H}%j*5^@!8%QQ~UibQ;}V$9iq~YseXUWYfyLCrHL<|8vUae{R~~atgdr zEEk!X1TB*)PJ1Hpk~HX;|0~zfqZ`PP&o-yltYE0tHe#xuTTR)gXmN5;d+CuzyOlM;sLPfIY9a2E zGy%x$d#Muv37GOnl`PCg60>_XMm#n*Ul!U>b~sdvGHpccOYKyx!i_wRh!u5yt(0An z5&$Mn@ej-dXPK#YB*rskqfCWNNppoO6AH~Leyepi?;3(XagYC;1uJ9x2fvw7cwto5 zn4-+JvzZtZfSavJ!UpCKiavzd%M1b!*(yX8h%TePvLL7malR}R@rDdu0!9@X`@}d) z+~KKJ^geK{X$nHLIQ7=~e@7DEh)h}MHKYMfd#p~nG9uHq0_0=k0xAx-`&c>&!z1{io zVlNvmJFgaT3MUkEjj?42gim-F`a!_(n#_}zEUua5dp|McsRFV_#x zc>D6A?{(1wRF8+{-G|G|Wxu;y)exrCe%XznCN`RI+u8U1+HLRF_r7oY z{oz1ezkhE691imIVg`fgwHuo^r4HA}2vvy4B7%lGE9l)I5b<*Sfuxx+NBT|kI3`ml zjJWQ+cDro-vfH-zZSTEzzv7yFEj)>qab`sG1V0xM6%P?Yo9nczwx5#04>m}@MQ*+0 z>c#2=D$-Q6sWvQ&o|fg|xE$Jo;lL2U*5zXCG$>WklEG-marpWkw$TcUr8<#>2B-3& zO9XZ_+BK*Ee!CkYmERcD%kzIIG@2VH&-+kB!Xux8}B`1L{Rf1p@1K-S@py7iq+`vv<>lAeN=A0wcQ>1WRjbG>uXW zehMVL(+dv5qVkj1BBI|KITs?QMtrWzuQK&<(tc-Q|5~2YD%|lMJ zu1%2@^}AJELsY~>Agz(Z|K=CR1jb%W}M_qq$+00 zJ}4#AYf7hz6&i{0I!y~lM1qBX;($5%)H%3VOf-EAR1(qbKcrq(?67ugMp#B81j%g9 z{M9u6q)^4NZJsN0YGJzu>-O+A65RZ!I))8+6HLb^tpKJDMJnjM`R3)6jc8JOQ!SD>4JEyAw4#q`e6QHpvdXRE;Oa(lMCcZmmX#$M#Pgms^}RK zfhsoEUGlb4v702yc_bFkj9UgSHOVAGP%7fYkcXih1xX=qq8TpD6qblu`A2nRo4LRW ziXeo86leQM!N<{EE!_0#l(bAxPl>B}aFUTYosCqBpz~31Cp9;0SV=Gj`S4APY$}!v zj5ml@C?>>LhW+tJWeqf$Hg`0l@IjkJ*f()9o|y8^44F-Scmxv>?;H?aIWz78hQJP? z8q_RvOab`y_vHC8f)SubP03XwZG+2n45Q+%7#{1{WrQP(=&2tgT+7)nM-V$a>INkU8xZ^UtY0ZQibtx4fCl2*gY2yyDhIFSwM z7O^N~@28$=2qjH^NoHA z{3T>J&FJ7dBR4ha8U%}%!4A>(VvItIUL(Pd7+C8|?)qsN$)hK z^z?2c{gR(Aj1ht;a5oB&C#MsFd0kGT=paL)A&ByGX<8(Co`{IYSqP74L{lE5FYNcK zMCeU5Vig$q6=HkuqS{(B?tqz{j{2j|9)9xK-7mkq`;#9%{`8CE1Mm!d^Wpk8KRo~S z57%$rUA}+WKVG)$weQ_jC0DlUp}s1 z9OSFJWTmPHyuRs6% z@W)@>{qBd$+m9W9sv6CU`Si3^0l`E#QcjGr4PfDTYETHX(K;pn&Zc;|UY}krhh@1x zt)IU-sN!y2PG7$Mc)7m3Y=H3Gl{g;Pz3-AS{=IYG`xmcHU%z?$?uQThtDpGnm??@b zk`@veb}Zy0^d+o9QR^}xDw$Rb(QF?OOeo+;nqO28XGwbRMyj$!l%MKl$$~2yM7M4) zm+iWHjm+j5Xa7RN1_4l_MuCK9JbG&8cB z?cG$omY+27u!wjclFN0!?ETXF^=jw6Z`~r_O*{ivR7I=8phVQbPXHWavchAmM{ImZ znHL$PLIH~!mOxYS&JbnqJJI)!&dY|Y?w8AQSiM2BE=|_8wbr)Hp05-YSXf|w6ZEUTzt@rQWKb@8nt>51-Jo3ZS z3+~p(4+C} zqhzRNGj9!+DrQVka9yaA0b5!IR%laRl}H>WHV5tM-zhOs>wXP&$um$%?-O< z6JrqQ0o{;UJmx>~arZbTxJVB_H!NgkMz`|fGYl;?-z4I-%1n_^o#ZFicDy68ru0AN zKdD{bwv6NhV7y(@SzwN~VqTf52V~GUvSmYHEH9FkD_Ri~35duiV$z`6*GaEr#HnhT zDqtQ`fjIiC@LdKqa#wTq60A`QVZ_0<*j5nX8V~KJ+IErg5>l>l#XId;!CbT5-6=Wtkt@+**!Sb|SP zE`A=Mk#Ec$u3ZRi8o{`@uvl8Daglc|P!_J=jmsfE)xMT8sQ$(W>dbRG^2MgBn>J=)e^%Lk943DBfW-? zM8r8*Z;AlaV1yYB^t=`@x(qjkwzvT$s@hsRtSZ_>mWI>a`sKsnmtWoe=@$=w{MGRh zI0JwG{`xdBmCevh#Vv`>VaX*we*!lEf0(HbsZLn`8*AzqbjN zi70sBovP=~&2V>G)+R5TCq_qEa$pHvtXt@UCIZTJ@7L@8 zaCiFE&p+RupWnTEe)DjDzV3_2tH;C3dD|{m+qTEkvSNL?Y}<8HS(jCecDd|7`uz2O zeEasY?M-#-UI!9Wq#!_b1=4Y20zS7F3%1Yw=mZcmr(vfE{|ZQpxlcd16KLA<4(nRuOnWUH9@ z*;ErD?0T{<^8!*?zR|PH+?;#OHG{x=^@IwP>6P8sFWbx24|Jg-%hHyn9q5Dz?pFQ! z;jm;#*Tvjt=l2Eul>M-%ioAQVj~6m;#YzSQAtFoK={no?HI&G$^0`G~OPV{0^F5gO z*$kl42^G0JGzU37$g(!>?Mb%tb@$qT1a~sN?gu!@i7Yyx&_lOIsH!SewW(V%G*#=S zadT6awY3GU#bwg&H6jfV?A^>KCt{&+UMkTEu{0I*5bM5MYXXr@rjZRR<~-imclK+y z-mxtEW$X9UbMGspPd6hZgut~cI*5k$7*tguwp;UsNVlqq0Cec}tE>Q;>ai{N_Xod2 z+YP<@*`E-)ccoC2%Z{~4Yq~DFw2-27nIiI-^dQfGNT!|5AB5hU5K&x#Hu|!JRU*7~ zk?EjgVPUPCimZp_xGcT*%Wlpb1!8~+uDjWJ-}ipq_STH(=WYA!enC1c&R~N$2oNFu zp>9c{Ty@0A>)us#Jv1=efcx=blFpe^A@+pn>jel#E-Q+ngb@$M%yiHz)G%T^VdB)a%P_h;b701+)5Kq;k}AFr2HbB$vU3^i4gb z&GQFyA7nV_j&V7;VLgKGmElejhp;B;MM~~SF7o7lNBNEHvi!PjAO3Btp#>v`#^W#qy=+YAj2ehkf?8By z+%w8fai~$Te5#WE61((|(%YYQI^;Q15;8fVwi2ms5WZyg;X z&r}P+JS&l0+G#mTHUt&!s0agM9|!wQ>CMPSVY)Ea$z{yU2(uj^?(-NWI+* zW5|k(S>^moN{hcCX<_Yf=^@=W86BENKte+4=9o#XYwbpO;ki*>-e!CO1s5f~$N{EP z8yIPl%QXTkkyMqF0Z^6l%JrzPgs6?93kMvg3WXRB1RE7*{k#6~d{qX1V(|XVY$}_Z zI$=Z7WQWvp;RA{XaF%7M3QO~ z0yzafB~Nw|Jkmxm&Z|_)xaOb>%zPu5n808R1;o{7Xd1r%r;KaJYF6{~XH@k-sn7VA zZ91b0Q(anL2NS_eB%>d><2e%lN9_sCYJ3AT>bJ3NQREweWwL|}Ri(}R>{KpfGBUIP za}fzAh>$EWm*a^e^_*|hR+XXPHZB3qd!}kyEKSL$c=^JlAYfD+ouZ_k&LwKrA>E*| zz$@MelVD8YNhgwV3o4V_&E5DwXGwOgLoR^~3}w4wdh|Eyj}Xy5!ZRVmch7BA0G;&g zJoB5HaVJ$pWzj_ys!-9TwPk6oHC=RF+qx{WEFc!en}_x5SL&Vz$bzbs zTjRE_Ooz)4h#uz5Ne>V~$cgK@6K>rEpmigvWG$_mwIML%zAMg>|mrx3g zRB8Sf1k`~BHhtc$1IJZ8`N*MaBmLfEI1(8;Wg>!KweIG9cm>&o%(ug(YtbeGn0eHB zRqVuXez+dKTz>VV!|Aa9?c4pjd5)%KDuzR?<5RdUjv#f}&B@g8kP?6tLJe^@!R5Le z@#gXV^H<03&zEi6{YF*qeO;E;A{p#%)yL!Mno~_@li=naa{kk7d%V7~^KONiqm-D*FdN^Kt@4Hm znJclcnr4nP3DKxV?^?#Dk?pJFE@|@oOxw(h>{X~!t~>YMwTaXA_aCl*ZT9N0+%38; z(!^uYPStt&QJB5(159|ADf7yBIxNN-}t;3@3f%jDnAr#G+T?ItFS}Q;q@n0f@*x)}FURc>KoT$^M5Z!i5gDXg z5HW$my6t`6Iw9gp5euneW*)2!g61@bviA;BRoTPHvP09+sha|-+IJHOI+vq7-W}dN zo;+H6Izl^|#9&m(c;`$J+`J)qsE8-mI`)e9nq?=kwv}StsLg#wKWOU9q7Qe+ z&mQkC`}KO+!X$cLyvDf*O*TQ_f!>$SwaKEgEV3vxvQ#oqlLwti)CaM>@rQzOfVUYZPn&*))XzT-g>Qp@KPOt-OFql3IaUqywb?<@rcqYQn|H7IKpllaR~& z5R$h0+Kx&gd0EI2&X*`I>4y~KD@8+;igZZJht$6%45Wsf=ug_ zv4+Th0hl>ixsTy~dVRW~ok3Tl*Kl2q{iE z$nl8h*7eAAMUgH`nE=FTy+p-x-%9_#M9YBUq}EaQZD8=;$0bq3*R`!)3?pf zYbC1tV2V*yM0bkkq(~q}JxP`z!x@s&ID(<&aiiqsW{#6mqTVlHrY>R(J4QwK|1yFW z>K6|!8I+vwh^G4(kgiawa6DYy2@O<~X`w4}bA!Vr+^)tmm?KW~(+ZTBChsj{m`gF# zVbTnE@dO)do!}h4p0&D7B?*lRvrQHAvfp+ik*_SBl$MmO6~d)?B4Q z{_^R&qn}BM>8Bs5%wlqEZY9>;d@NBbT%R-|gdZ$vhDzf%e~5&!Ev^_+QyU5z(;ff3 zK~aQ3X9`rPb3Dk8qC$W<>yb}Nna4X!#7^NFYRY*ZM_i|rSPE-^%GD`1!NXBQt*3aA z)ZcRL;^d*a*s%~L>B%Hcnfsd?BzdRD-QJmMj4dwJ5z$D{pC&8AdIabXi5qyHr*AS8 zeBcEOl~K7EfhdKe^`QE$UqOzyl~m>@S>KoxKZKu?B>Qg{2(wol$_>tONPI(Mn4+3T z>XO1a5=}Jc;bogdwY8(z=O_Nj7pFh{>h7_L06)C+fBo(GKYsV} zSKmDS?uX}(=N*)_Ef33r2J6fFp_-CHB=n>O!5EAU$_dH=!x z*GMmg?u~9iG!=!k7XRJWCW6DV0N8rpyLACB`-Rj+X;9Vsr4hF6_Pe*+Z-0c|Y&m2^DD|sV^c^!aGHHQaciXz1 zmI&LoMf*+>X2E@l+bpqCnyTr?1H~;yC|t~=6>%@XH-uhCNu`NguJ)TBw&RzFAHQBq z@cXst%*vM^l=7**tMZ7PDj3+=S1 z9@=&5`z8u>>k2s>7ZoV*`qi=R^8We7dcV6n-D}%B%&>Pev(2C?t-){Jt11CAxm^3D z?@t#yU+i+-_s(vSSK~>hVNxVaXf995T>M*nrZz)lz6Ew3(Csp-BPe2I8^V9b7vYpoDuC>#lomO2$fgK7JEKRlHbZENjsyNcV zyl*D55zpJQ8Mn@z+;{9?hAO-O6K_Kpw}K&r=3EncROkiK2nc@sxO{z*fBXB* z42M;=EJ(EPG-Ffk){`to{|y!O3Wk!58z4aIySC=%FV!qNOHT^3__zT7f4=^tS+XTb z55zuIv*Ye}iW|clb0}n@FtNafup#K)G=&tQaKoR>4Y}wR0U#g%5@-mTU2|ntzA?r- zxcfO~s$A$`=26v*l6o0&ulqS>I)19ArYgN}Tid#nQVSQim{5qa-_mjp*tL0)ZtBNg z<{igYV=gwaTK$q5x5QctsaDkjMOTQBc4-@0w~AYknAK4QyaLxT`49(&baC)+P6K|* z%}joP2AdBHg7)6GzMW6!wRh>A_E@Z@&Yl<`Cqh43yKYUHv=l6b_cm0dPys8e_K>V0 zy9upknN9#7arOuyl$33Xj&=KrTYMlQF5E>`q_r-pTv%1v1zJntt3BZQOGSwFaTO9-D%~CyzYt8s(0%2lGMoGLOI~^Q z9_hHijv4n26GmAGY(#R1#eUd0;c zF_5EuCu<-zo{52H&7dV3y?8xmF`|EP1UwT)hk-Lr6FHeV3;bz*-vr^4vm@^rL=K1J z;lc>hEfeNO*q3A9@xG-|o1vqWk}%dbBCh%Enlx6*(j$c>(gsB%dlH+}q%lR(Q4@L- zMbI)u37_*iqA3S17a<>91p!2H|D`%ik4iLS(m4P#0FcF1n&oxQn1I-WIYw@p3T+0r z2mG8I_=Rsz5iwf%!lJ7XM3l3K-~}=b6`0Z_ z=Z5%9RxjS7hU=M z*?#{9gi#5}k&Ya?8ZwsDoimISbx%$}Z=4;knaD$t@^Dz9&4DpAvP{j=F+B1xKP)jpa)$p)k%<^Y;tLUpHjr>>@0>E7kjodoFaxxuq98O zpNBhvA1>+mYWms`0o6g`{O{mUKGVWCxarTj))W|ZUou%h1j$Sob!6@aeTKfI0Om)G zogs{B|H%VF9V!{RVTC4PChWnAoDcxNw>$xrsP7~1d}Y6xTEFHV92J8+%|}tnO%(Xe zay^vf^SsNwKO@q3oR@UJ2F*cT|RNA_DdB6CyU^!08CYBg3+x`0W;mx6}oBr3g z&%gU{`u)$RA3q%5Kb%^VU8#5by(+qDYh9aome|rHK}l#QkoCk#O@gsRgMDr(Agb2D z$(oUg1qR4D14c0>4va+vB8^s^-KcFjHKjZ@m8q1pby;e)fSEj_tso*M6@`pu*vt^| z#$YPiv=dP&+?!a*p{g=VwI+s87}&5*n?eoRP2Yq-oyhOwGGV`z)}-4lsI7~THESm> zwV)CScsp;uJ8pmT9{*)ufB9nftK0I;b$zwt*L(W)b@}$Xd|2yGr}q9?kBzo2+))?| zwoxP+{TVe<*_J`rR3K6+i)!oKyLYiwYuK%x0;1@E30U0iovqD(8pk*ci6?~NAzF&6 zvzu^i_?vgz?N!Y&GLpU zQ3x7Fl+-7F0AQu-eU*LP)%xLaEzE~~m9;BS2t{;XskH_bX+la%DZA=bqH4|lfvusf zeQk2y+Vi=cw!U?R1;2&JjhSlx$IKdg2W+(oB!no@oM04Y(+Bs+4ih5b2pGZbc!bs3 zxOoYc$w60C?-%N)TUHoqT(Tz^=EymzVQkneq!o1btv@x{x@^5(SK3!5(Js=r4#Me- z(@t;peA@c?SqS7+frWOJDzolM6kV&RNLQPVB4T+Q77=fpt0bag!;7skGbdC92)jzJ zuF5wR?_Mm&O$$>mkdDe&J5;o0J3Z?GLw*k7?OV*vsj^EOV$)&?Ndhdj2iTzwSz%o% zyr)V{3Rh6h35F`TfP7@A5mc=k-L95Kot0~)ZR=1h%OcX3rL;z(t%OK(`g+ygr8nuV zL!qM5#hP^*wB~`!voa)v#pFw&45O>6lHL8ZzL+XDhr3HGmQZ5!ZtLADeHnUvSay|S z1}rN~t2I%O0;04v*;+pnN}*ll%36vwe}qffj5mC&?gZ@-ahWfk?6#`(t_qPZT^v`Y zZ&J%$qAZoHC90rxiCYh(0wy~n2w0XB(3p?CTJ{@y@!xPX&0SPP=R8Nx(U$?ql4=M16W+0Jab4ET{AQ%U&@P#_6HEn@-AaB=KGN9MY|HjId z{M0Z!Y*w9Rcm_l3{*2@>@^7YEF|2z;0Zv9qj%PFf6FtX(p~l;vh|fW;tA#zR9}4!vHVt30B(> z&y)e*q;tk}35vK8VGK3Sy1Q`!(NL`PT$KLNOpFHWC{qwnkJv+!5y_Nv5^hOU#|Fca z6A;Dj1P@~n5*zqLnCFDl1&VY-9D}5Z zA3~L;4e%CQEGn9}@vM9#QsZfeG^{#JWSBFmQ(`?_Vit?U2WWH-wa7PeS2V8LnW-fj z*%BZpCJcwB!6F0b8pt8GrWdOshw&7iIu6+q*o>OhggpT~#(7KXV7v;5^Q~aK%W!bT z->II2F(VX9q$rX~jg2n(!SoBPA6{n2I7N6H*A#|Hn{~(3IF=f2h9>EXgn(@{^(18g z;WjnsF_1^t$x$esdBe;<=IT>1U6gUbElkwD_(L=(9unibbnAo9zA#WyoVd9^MWuAa z*&HMnV2>`bX1CQ~VuM9y>7vppoD;l-69@`)LEM$fLY!$Is!BQNc`SUO1_YFn;lRa* z)|*YiOr+jBGZ_@=BG#nLt%$j4Kp|{{SIq=@Xf8nUEV}uEU?PYtFxI#{sDiGlXbb{# zt#wz+VZZEmyIn23lv3(axo|1PaeQyR^}e0fO~ksrDWDwLTvpZIL)(EP z{q6mZfag>D&p#di@~7jU|Ng`KhZ8ngN;%Yp7Si6gt+|Vm=&l2T2yyWOfsk1agBtbp z9+ibbHo}Ij@gsW6w~S5{;Q&>|On@mX5it{YbcI@XUe4zX_^OEWcx57H>7GjUfZ6a^ zI+RRjhxZf+34m@^#4U!Rwa%3}a5gDXj{Q)$IS^~ut<0WvErn{SHpx_&x~le$E`3ul z5tm&l`@#);KD9qPwLkwEH;3iTb^XO1|IzjG%d7f&M_=rghiiR%l6NOOZhGFdsdhl@ ziYr^usHvbgJrqSP1Q0PdMHkdcc4SBx6NSUEq>FQtV|S=5DIKRxUaA=dGU z)I~p?^utlEuFKuN-dvS;Pb-5|DB5TbM`*9}W@qqo3bTb)LmNif)s%r!%eqP1wih>t z>%;Ep`KVo&W!aj1`t zI|$@+_XMg!U1U9rd^xpUTdfLjO;D(1mAF_gs{q=q5f5=G^}tY|4{Qd@C)#iw z`;leMmr{tCs$E7gj%`$dq2&civ5 zh{Y_G+F=;13!C+%ugnm;vrHiBVwo!i71Jta+VATvZuYy{*R6Hz7Or)-l!&su^xh@I z6C#EHY@&stH9fUvokMq(c7>PX!&J=yg@Mwj_i(H4H+}-Nk+;4sQ6HcHF%=8R1Nj1^ z(xou>E(DNi1*wvD$lA0P0z)>XLc4uwDl}cFL_{b;U&kP)t@MUAX%flR^u^oS%PMt5HI#R6848>6W ze7x`PBEZK8k3E>gPY@^5G_&PQO`qb|3rZ(Zkinr=ohufy-=hlE`zsh9PJE zSk3B|nN^rX0{PH%+QF4UJsRdUl*(0!5Y3?HO{Fp*c%#D_n|_YmYpg#Lxbs>g?3P6H zp^J23n`Ty@o-07N!5lAQK(4PF7ohRwrfJBViQGc{2nMi$UIO?|GX z8y`_6r4qstE$o1pmk0Psf^WBVkiCuk4l1mkrNb_&3IxQp@NT!;)pFP^`>Wm6e!sW= zST^iZbnDVv-`1^l>D{_`yKxi5T`FcOP?2+&ZRt8ar^ipngW^zY*+WHIYpQ^BRTU+uG9cda&jN)$a#E_qc5Al}`=`_K5ftd~ z5(){*fmFeM$ju7mBvMT?Vcnj@dcrZWl6Jd86<|#xf$Qd4RYljW_1-P#XHJK_;fV2q z$Xf!LQL(dPE3_mPtxJ(6ez#A+T(oP0mJmLO*MSp}bTw#90Ei*zP;0m7-RO#qCsR*zg*WW#@fAcf`=R^I~i~Vo!mp{5LUtaNVZp$xk`Ta?MKFhn4 zJgl-dsOT~-P9f?hAeN_bx~rf4DVRBH5?JlJr~$d~4H`Bh%(5L^c)gq`vm%al!$PX@ z)_Mv8cz6=kc7MN|d;9Rzmr|gjKG6eYB4lm!^Q43bq#^;I<9vakW+s_HM6JuZZC|{& zM^|Qo(D~G^_Pc%MmoE-?`{mP9Q?PVm;=}c>9O`M+r&Uj?p(YCg=^=*}>=am$_Y1zqoS|579y1w0-Y%EMvmU=qNX_MpHPOY6*S$l6yL@e>6 zAQUc|E07pfAMdp}(%G=dN*Fl&wD~duDM@6tCEdI2AcGdl5Xhb$`6d%o@~9V4hVE%{ zO{C{PmJpSIxvC;mEZs@)jw|FiCl>1Q@YbUE2Rg-c;tDk|IPSgp(`ghGc(O4J3?wTTMQx=P3OqW6Rf+!s8vK6h#Y zuJDADDhkm^UMMj{86r&FtvO#fhKz1I#l;unYa{I zXct({(Sw|+hCvlzmfp#pARwl0^GeMNTagH;uxDOHoF+Eh-A>_1^?Yu})B5syPhdi0L>WSaWKGa~I*5%jSD{QXczo(` z%Pf(qK`Rmk+fw$_4O*Yk9(24c)R40*X9X3{MP<0-toP!Fo)|8b@+@ zRx#o40H*|%j1gls@Ke;7XGoU44_vKY&F<$8_Wv5;-)vePCJ%#x45%o(m$|Q-?^2iz z3dkQ@wD`usxH=kgYw2*)mox$*xZe}RNkqm!Bl_bg?H`em8H)Kqk$V|r&-7h5)0sr} z`_FPP{&|gW(D*o6Pi2$9=pnBoZ!pCI(iap4e10OIco~qoQb>4s0WB+IE7yy(e$kZ#FQ?# z93IknEM!^~5;(YOl(uMdWKE-gQRcK<%O+G1^vsZ%U;%%Mbi82Z%NwYkWA!ZTG8)c_8ijY#WFWs2snS@av2{q~SmpfhKzOO+ zQEdu}_d0~uJlybH)vQf3aowVs42ifDr>>6%jFTrrX4BI4Oqsl3eRv0zLEC(eM!86K zEu}b>@p0WFuMYnO9NwobR>>+bBdN|E%Yv1eb5GY4Wbm#_ZozUQuFfQnq&!ECW2WQ0 z-_H`2QNI>K6MI6GxgZsl1{|7T!uZTYQ*wBx6wS6H{puW!-h8o`;T(`jFxOB2l_Zcr zHX292{9ApYMaVazagQFN5!Vt!FZrxC-1H4JGD@8%*i9-{sgPKz8` zHdZ$>o9S3W`*KvvB_j!c{~ry~<%{wce^(IFbyQ1Zfs~4O05)*yucABZXE$2Q|745pEDG|ALgulU0Wmgt zaxl|a0I1YLpi)VJCN_;k2t|CtsMUeclF2Uuk@bEe5fSSm#OPZ$K_&FUOqCWQa9Kn; zAcC&iTi4!uW0b;$uS&Tp)PeQf{`80Tmp{|%+vV3U_rJYeetA>AI?z`Ke!SJ6PV)0n zetz!9jxJifDhUE~RW9t;p)8Je1`V{pain6{@B()x$_iNK7DHhz-ou`es!imK_$zUXtXA)^N z0Z6OwFkw^#x&?KQsu`qGZl6d!q3u<2#Z&hN7^h132+v_zB+Cv`ctd~hI1p7O^1&_R zya#bDh?JN>#Agw#tuP&^B$Di{5rc?}5(u4yfy!QG)}7}*BBY5l#k!itgNTGIq2h)P zs-$3ODK<-nMfBrYc7$4J&nOF^INIzQuS$cvG7u?*94@K%*aH!S?0izC35Z0saN!t7 zK@L?xq>KVf<`DzbMM|kATBe=e3=xCc8N}IDU7v1FOeDmttwYg8YN;L*F==mBID0y8 zPseSyw5ODWn3$E`P^WG;M9V^`$7EcN07h>gwIRootSBE18xYZpNKw)McrL{px} zB{3jo#7F7+N0wq(f;{*R*Dw-8nZqKQblhJt1swUTM3sJo28x2a5r*j4h7 zmOJvdO+VD}!cid^0yjsDBOc2P)%fIic;=_VO{GH~?1cQGmLI5Xb>koglfu(o%&3M z%XgXdP6L|ioOBtc$Td=jmBTP_gk02E2Zbn39Ec1;o2;A-y) z#o!y#9VKt$JlelLnUmS~rQ{C*pL4gWqu_ny*aI7SnbjI(bC$;wF-(kS z3Wp|uLQ_KgN#WQ#zZ=G2axIEH`JEX&XQqjU5F{UUtY%ttIw>Ijq7zjjhNiGIVe#k3 z1g&&_=JZ(?xoSsW?9vnGnXw}FAy5`*#RIG?i@fEB#@i@3N@VF+*G6l66eHw9;&tLr zs;~PqPw8~+RLoqNQiH6E3IVEx;~I1z8oPay+FQskOJZU6RdQq=qLZ})cgysWsCMb9 zR7K~M{QlVf-S0pB*PqWnerla)SLte@yF+c)_5Jht zylEk&-i`0p#w@ZGBvzN_7f6VSopYinZ0=H!sN8R~7_Y2>x81pnSWrnXFTI2%^G+O* zlyT!iARD;KUM*E>@v0NpgEVz(6M6mSrFOi3_klTz8v(Vj2hsru6(Uv=0AkUSjbRn( zDmKkfQK&GXt4Q~`A0|A~`zoEhpFTqykS4&k1nn(w{ z$x!FcfJJU4 zhPa@H!ZAjN;TK=o?yo5VU?ozB_+j`F%tjLdQq>#7`~61It|B7vCQVRPh&AgcQhNX4 zTzLPBS6AQb>G9MHv-gz^oD+r-@oKwbJ5H(CGrV9gs@3CZ>#A4RdjWoa_bBW7n{Qvf zxj#Ja=x_e^-FNRFU)|qH@1DnNa%%F^ho=Jl_Vu0gj>ccSzI$G`Km71%Tl@a7FocLK z3zONv;Xe}O`$BzKG|@DADlrCiRI$pEa0J6_&EDXB z9nB1Lq^%|KgeM!V51v?F%1vWhr!0?M(=sRG737peicQYkN2g*u|hiZx6e}u8@$O_Y_vO zp-QTD6xUn#SrE+9#ZE^QN@4(kKz_dm0lhGGwd@at0hL~hUF0<%LQ_>hxP4VobXAun zqb2~5S`Rn?z^1|-hpM&Ex^*TlOtsL$RG6$A9Wz+{GQSBQgGIWK+VmY4IG_6J4op>h z?+op&iT1*ace59B+g+H5tU07E`(?K;HK!N^a(BjwuB~rPN?}!Nz8D)0)JK6%MU@MQ z>Wf49^_MqRsolCXQBv6zwt+zod^F=GiTCRC!$fyxykpGB2mzuJGVJ1I80983vk-~R zMp$Xc4Vq9t!!nOC!gu(ikdb4C$`p|XD>Q6ySRoiMFb5f~Rs+<^6q$HNWOjm|Ij#{i z@U&m2Rpt)jsD7&CGbY8~y>w*8{XvyMAN52MkaS2FGzT;^XcuTXuOnvLcRwacdPe-F znQGQtc6`NWwyPrSM+ye=)>5=6v=>G>20Tc!#?50qq1$+Y&{!{m{ouI$8n}I=c>+Rs zfi_z=C{I&>Cb5ZtD|Vx*Bzcb}*+e1GBWat#IQ)c+DEkh&@TQhfTxZrvm~s)mtT8(^ ztHr(H9SwmVMPaJpwiRASMM-nY*XT&yc#1_M_{-0Ph$&fHZ6i^1s?V2t>*dIykS~Lf zof!i;QbLMRxMapQ)H4{76b_w7i25)D`Ts%o__+rDif4`8g)U5ahrt(QpsEn7EFQtL zD`{X1b+8g()R#AD8wMd$#U}F;66$;&DMOd`Sg~@PV+N)3u$E@vOIZ__M#dN5H1k*} z<$JOuxqX*q31JCEMOFhD;gZY=%cr#FNa+RdybVKqH0*u|TqcuZ+6oYDG<|EK_K~kf z%B{E6O%4FbhDfHQ#WO$_2Ejk0VR`JJDFiCKi?eBjHo05GiG-PWjtE!7q-rc-w0H}* zb3wGIj`THC!aHY&ub;!QW?`L9c|<64q#!N@Zla?@YGiK2^B$DDO$yKYk`_Bdun+|Q zHl|eCknC`?6f!6@sU+eFkr2)FY#QxwETMyuRZFc38O;|bi(HR@F{nWUjwcFHH_}5B z?0<8HMuZXRu_jjP_9_r zNYWxrd}tKrXN`j8nSnzHHC+)<0qfswn`ICL>b0ZOQG#?CHVsgf*40~SlU*QnyXSxM z$dAAwrjAPq$tTB}YK_fZHcYTB0VLhhD`Z6_07|h0hD*8G0Zl)VLpVHKvE2$#h*(m> ztuge|vR%bJ!hrM5U9iO^?U*;luH`ZJT9lNQtNtF*8wR ze<`bC>k4hwY+F?NXiHBWvTmEGzPQ={_N&`}@v9gA?CYy*#@om3Uw{AfpTB?p{rjVU zt=-bO_v6-fl?(WKxAb*oF)`}eH9~B_?W-xN*I==NxES65c?r6=5i~)uu_j&`$)v|5(4g+yA52%OBtEzrNyc_Vmr3 zKi-w!KgoBG^3e3Of`H0IFwa8F;A+}pF{MUo!4U(6wo{NX@IfB1oA9R^LcK*)u#6J3 zOXw?9@$jLEQb0shfHu@g;^m27B~mS#`;Jp#5K$qBDQ0+6 z-%-Y?QCo=Ywq)ORXr&qO4J2WvvqxjW05iV#u(Ju`{E0sHL!hkc6GSb-;Ba()L0EO% z2fIMhq#9NQigoL|LWQ}jSS_q?sjF(wLeoO51gq;dSKI7Lf_lkhx|mwaCU7gPYSrs@ ziA9MU(Yq%h?bip8^zD;=b-!Hi>D4uVc<$#-cC`>#Ar6~KBQu#0%G+ZSQ7JY`#a5zJ zxcCSiC7@V$2kFekMs*h<^j?@sVHOXJi;vuO696V=hWgEX5!qGlDokLzQc6T%ffTZG zx%9fU)N-}dg=tqxExg+=T=ZtQTMCItExZ9;*)JRb=PtY64=5gofNVf`S7Bhk)Kb`H zuUhy)OR)xSU2$%$LU#qF*4wu17DCh3q!if~p9F4bHH=GQXFhHHIW-+h){Q>=ijQMb z>uxBNftpC9TDAx@v=V zJC}loOM|rtxII!s2!OAXdbzDn)EcHVlrNJ_9#gqZnm#gX>vRH-frc>xoDp7(CtpU< zqh=sJ7bYb``e}I)OlkxqnTR5P?AUs2V%}VY!Lj5F1mhn%%D~MYA{=n|g@NfM(~Q$z zk_c16WFqxcilY~lAA9q)PKzJ$OYS3Vb|$KlP4Q3irRL95BI5a)!zG4@P{ilq=%*MX z|2}vJAc7T-eJIXaGN^IswJ+pwg{XX=pAR3YJkR>q}{>p z>2a9lTj!mn*>S__f=c7J7gUM^yZI*(^}{(b1ZOrA8q{!|oEByznRpOL#&Rnm$r7(l z(amI5VvhNZreGf4)1biLVfuJ!W_xDZh${Pqo8YVi7afn%X^Xa9mo-f%fPo+}s5jyF z6mFt0+?al!$;8hrAkuCO7ozDwjozUi*@u}B-Zm)`*)`4t$0S5~YCCTMnI9YxKmfp4 zZr+@oMb}BAaa0>3mru591w*p!DZxI3T}?meiiL?bBiEeNpM;$bwMh zyQw`5cDpD7`Q<5hl<`@TIvs7id9qWOK8Rr4uxzgNgX zZW@unyAV8#6jjhCEo9IoSC}}#@dzOgf`)Z9%MV~c7MfT#DC^Rv=?k3!W*G+2Obp^P z8T3Z}gJj&SqU7Ra_da*2vv$X6O)f5&=vz^}Sg_`)*WdX=X=VPNUxvwwm&8|+;cse-fUl1vB1rZgExzS#yp}NBBZe6TnRZQvu>}D=dmgVZI-rgQw z-d?|ab@SrI&DDMf((}4~cszf2cz8UvlZYx6Ywt~ESAD2N;?b_!yGn01OF(-dIol;$ z!mf2`_t*T-zIpL~_y@25>6g15@VB4V|LMo)|ML5XzkPe^fI&by5Bcr*de~8^E6N8)Ru1dJ=iB(cxMC-I(R}^(&AXB0c-IgQE+5}*aHEP<<4xd zfFcdPX>6o&&CyEX7$mBGmsJ8!E78+=vtE0u33g4!R7Q(%H}7QgvlwJo=O|8$30<{A z*!oa{xcJBm=Ax>lfGkDDL= zQY)YgDVZi?$>$XU!bh}LhxS#%s`RTXSEw#i5rX?Q}!a;AenyghyO>hSf; zD|vT(K1<02mgZw4Wde+Z+&I&7#{!_Mo?BxoKfZs^b^S-bdUJDFwrzt#MXnFK>%;!t z!?O_eF6-9MTYvlT^!mlk_0_VjYas^p%_@C%yLS)A-~Q^0F5sw0iTC>b{`3SOOX0J^ zYZ4_7oz(l2j`I+2JTp8c#mNwW z^E6DRrsN5PM2gnSF(cI(3xZTx(QU8H&$hGUqWfcj;WFzyaHJs&LUDIW=u zGUri1iG4(cqsjo#uC$7-T^9ATsh+*6pa69ReCCO<-pT=)NOw#`Y#lJgCQB1Yl!Uic z&gWISw;%0Yv=W2b*2+>u!Kwo4iucdk!>VuY>Z@z|;-!0X8*l3c;D>K{Et#aNifAp+%w$;Hto9unN(M9dV_HsObl31W zpi%{_yWG0zZo$@-Nuk<1te2tKWTem|1<0>SXA@DiVXP$DMOCmisfuC=K_T*UAFZXZ zLWCFA{Ze-OqS*IN!o3`p{k~8=6eGJ^?GeYD?O(f|RxtsiI4-7yzXSrhDwuW!SCtzn z7S5Q22!Qro9o2fDx;&>oy4^aIm9OsA{&#&`46`pd|*TraA^tC?n0Ter^;4p%qpu+q!DPwJ^GhK-&mE zjs$~YnANR87<7r5WzcTS#vF z&+zz@IZV|xn=*Z3IBySUQp6EHB7SVA8h+XWj8pZ1%{nwIEa3=bFltXOsz~D9Q&Km; zM8wn{?Zg9JlV%N#e8DhD^R|Y(!9q0*>!&Vz$-^{yQMQ>DE7c-ZZ>-eTIqzL!?L##3 zv=D9w0yDX(8ki_^*P(?79!6NCAzwlEFeQ{`M13?@YUC8Uk7?IKYGK|X5+cEU#M|83 zM9qdh#?&<=D-$R*%3)?g5vd(=hn@8;;gYR71R+?HNIPxvIJ^O}A1GqEskL$C0%7oj zXS1AS`e~3iF>Y+sgO!LMBa4(AcUBCM3kYie4K`(o9F2?tA^d(O#e(>%h+-}p6sII+ zu+{a|#n8ou(*DHB1cg^Lg|#e3GCG|;@>TX;dwDjA8{`;9KZI*me{wcCeRvY8L98^I z{?Zv{OlmynOhh(;Ae>pKX-I|zP}%O4!rm$dqfG)BtbmUg@NF={cNi_xsyLm~!-Szu zYc`fJN#HEe^YD|DHc-QuCj<_`&>5lY)_-1_-FJRETJq{E#n)0IQW# zfuayG7vm}w29%i#F-XAdM`-Z}su9DQ__?x<)U)O#b~WxL3?a&!JBSex8mYM$G3X4S zCK8=i8J=zl;U*L=mQJ&x{H;M%m36<=yW7Lv-POzcn^!MxZf~w?;q%r$J)Zvdhfhz( zc51zYN~xvnt`@7cu+j|?g{ZQUK)e4_dXs>3P$d;*0vA$(G-)C?SNu=DzW?w4;j4fC z#l8Z6^>O`AKOFz_-+cVtPoH|jzSKf^KAyC-!dyxrYu(1Y^=)e#i&UagXxZ&q0Tooy zbTAfFX;@9~;;$;|U2OsF?(q|!syl84v-Ni?#KI~fQF)b$eD(*Y9I~Kba{&RhQZM(PhtNkU6@EAvMFbmEW4+| z1SkuEyg`zfAb>%nD%zBag|;>{QI_xm3{oR6noMr$#X z7$lUMfhV~s51T5q30l`CV5VRH^3CnOv~{()w5nQ^Uff@l_i6eXgXgmG9I6R3?KZXgqv zl;PN>qT`fx_dQ~khPZ5khf{laIv$_5b(5~5iggtOfQPGH<=VEjGAm>$xW7I8^l<8` zl}QT8Ksf%I9D+RlNkp2k#!RiV*e;?+@-g`3)KGvZI+O=1Kf_3FU>VWOD*T!e!CSBiUpr6joCQ7d&-+$cRf094? z>gwD3!}Gd*c-*K{Wn&XW(Z$N0+!&H2-3-fCwz3Q36Syx$` z?yCbqmu&yL8(MQKTWf}0MX{bYtDS~-J0xZ;g;r$nY0=q(7>b9Ea5DY1HV&6wkR$Vg`5o-ZRPi;#lA-|_Cx z;{}%oP*|SfQl>OT?7?5>6wJR2y~Pw#BGR5SJ0r`Sx-^MmrV}0PVS27cUe4K^tQ^2a zFIYY{>P#_}n@6m;jt0&ROfg;gQ&&lg_UJ;A=bD#zdAvX0F4maEj~9byx#ysOzlbgZ zW4NEm{e)IeQ`yP2ol4TgZ(|a!-Q_5nj2+@(jeZabvcI z?Y1rF;Am%J8og2P7@9Tl)^i!i`ok%JfhNQJ9cg@wzLPbWm|`rXi8L3=?!a-jcxjiW zKQZS4p^Av_AsinO0GXp+iu=Np4@|m+$<5_Nyg>QSiO8W8vD*upgr)@XF5WWglqb!V zLH4jl!Fip2KHPi|BP}W=GS4CfLm3`ox_sq>{3(&?nx7NAOEDUBM*3v}G?$&8X6$Oj z2$?#HB@Zz}*#1zLw98}fGzv{A!D$x_an zxD>|u4-r);RBYZ{eo&*ofzJdKRZ=a)%%u>zDiIl$@-) zP$FXQZ4t4TWdQwHz}e`xT9A%YNvXrtne46>6EStq)PhS@JNbv_H|o9~_PZB%hu5#} zUcR`!x>{8G@oD|t_wOE#>v@$fO^cn1 zt77ZDNx#{ZfB5a~fA`y$|MC}yE8wpm*Z=n)j{otmKK#v(kJ|KVAtr36wYRMlUYJQB z(#2vAy9;c|BNYN_DaCKmqB2`qT&bnll#Ns(RkdzvWJPe6V-w@9g-M*Iy9*P+C!GR- z^oXSFHkXK%oPc~zncqJ(`HS4L_)slTu!ve#kI1ho+ZffZ+BUh_S0d^*baE`x41o_o zAVpIpyH_Ymgr>qij8dV>{$#cDHBsw7M=Dmf;t%T5;T|>YkQJv`9#vTho=$UT3nVm$k{5%7sym<} zo1~Egjm;5z_M3=Agh4|1>HYcj%fr|AhoAcKdFzFXsV=;$J%vGaN8w2q8mTJN`W-#VdUY1o4Y_2)Ja8;r~dKrbbGyDDz;UIjTR_#;pKSz)Ye{#b?>(vYwT=5 z*~p2Kt;Y_~{9)onXj$Axc56G#k9RMc(5)M7c99O7oE{)fT8bMyrov6+xVCo>r+1I1 zZS92#!d#e13zu4HJ=+Xm?V<`CkK14T`0@Jg{(4^?p3k&YD=xN8cq!`$T>_WbSY(rM z)26Hux2j_4UaFum{fv~s1th9M1ZWA@HvwCspo0Vj;T}pUDvQKXkd-te+7~#@?Vcx- zyFRsl0#Nh}S7NA^v8!9ZLRBK_mTwBj)6^?m_m#_(3XD2$1Dr~;FI2TT%AGqAF_8^d zVWt8!h<1@C!YV>syrrc{%604ZnYPzF+8z`yJiV$HzuC%~{Fj zxA@#%@*M%N8g6D*QtzpzC=7zuTGW$nP(Vd&$}~X<%B0?>upVt*y_gql9GfPp3Ff)VV=nR_Ig4J3>K}8EQ71eI@ zn>;8~1yN3IW3^&TQ!c@}$@6I=2s5^(&*y$Rx2qlBUhg!CmC80_%lK6fU;rQYo5^1g zfyj&AB}3T2U`DFQCP1*3*}|zwj%z#%95!^Kkc^#x5`>`6*DAB?Mm2<&5~(t=trE zK&K!E9%7CUxOIy#+8-2E9F{{Uz7dAzxm?t5KyG@)D)E5!&ba zbr2;2qG*w&BYXk8T4!j0(ZPeA$Sh8>9Y}`a=NS@Zgq7lCRxTthXg(scDG_7#Sx2oR zh8vGsO}&t*$Z|$5X*?$Op{~Csmbeg}5ov~NCg1TK1FMk}7sI>f!86d@1$@0%%IXToTjZ z_2<8vi9hXh`k{YVBX#AfZYvtTUzUo-x2?Em?v=YRJXAO7NZAGPCZsZ@GfH)&Fc7G|q4;=*<%mhu=$1n@hg(s~m; zM@|foLTtA+3v=OOw6288%!PatGyPU1`{BdNFPE=gAAb69IOaw{88y&(F8N{HhjF5h&_XpBsHTKGdb`1nWXK*UQt1 z9#7}{>nkqQrL$eeEPP(&@pM+uacft#Z0kx?3?jN0A`M{+#OzXSBBzrD^=q*JiF)D6%)N^i9m z2%5p7rN*45!{1>JCJBTXhUg{15 z8WEL3$4#D(eFLs`g=%5)6Cnd9UT`S{s}=M-3lUK*Y?-6Nq+(o%;!5=b6>*osHrd=} zxSIH~pG$!#+7Ans%2s$sfT&QMa{wTQU6|##3gWRYX<@3B3xf#T)>YT@c{^K&y9zFj zhJwQwkla*@LB%v5*6`SmHsFTGWr&%HI;`f|uVA}luLVR6+B9dz4frv^ZzY)H4hZ5n zk3^LRnx;uGk&ZF85ulx1?tL$Ssxna*b>}DUr^xP(5|+xf6cDsG3#_bvK@)jCx7Eh1 zi|R^5g-JjaG)~r2?kPLpvK#F}Who5n3h5(vi3?jJ*Jg9c?QAnZ97SF`a&bsgJfc}m z$R8;Igu1%@Py|YyzvXla4$wse@fnaDFfk!=ek6jy3=2k_5lGybV6TbiRe)S&DFt(@i5v96D+M+}uxztO(yCBydR_u{E?H=gsGc;btQ6vHGg z@giV~Ml^_X8FNrdW-u6YTpQHSUrulL?N5&y&?OSN8b&JgAXq!o9G4{+7ZLd+D>N_M ztq0~6Xg)JmJhE8%Ws1sH_1}AvBP4Dl4KntNEsxA(5;Jn)agmXRO3nEX8d=w18AWy_ zcMu`?kgq927cO|DA3~(#pBe1Oawl~TeMlSR!bhG+OYx!1Ne$CwkJ1$4*#2yVE@aAH za8W6fZw|{ByTO7XFQHG+Q2*Gj&aVPKmy~>daA71crhSl$MDi%D+1N@* zapd?CdQC}+T#NfPlMD-COge|4UGQ=U00u(#!@RH(YD5Z7&Tq^A8LoIT6_fp+UmSXn z0+KWwE@{fHV%qb?DinxA4jo%hs53op=+DS2xErZ0GKZ$?3esKtOi2dNR z26JiH%*<}5@Q?S*{B*gx_)P3!N~8x(Q&%t>YG-WhFAUFkOD2-TLJXfx!<=jAuAShI zzr+iMYz=donepj&lVlDZM_8gT0(4P+eW`E5zovvtK057aDsP&_Ih__J@RHymJUYEQ z!rVzyhK2v%`ZKeVKKt=lfa=A+(}G{F>a#!9cc+u@G8G80W+1k3vB=g^Cr0!_+=tC} zo50c81lAAT#|c^lB~Y=uuccTD&26!zL`wlFB!=FVY#c6;vNbEpYLyQTb%iZLD78p8 zktP99X@5A}y}Wt#=I;Lf_Uf>(%K2$~`{C24PtWILXHco7lsy$vpo^ZjrVynfR8U!o z1*~LYq4_ibY!M4oQJ~TRP${i<1xn$rIB%UHZ|>{A{LTIU@DK05J<$72{~zC<|LtFV z__N==@27Ssg^Oxyy?0VALtfERqdPBD` z;S42auU#i9T&f3%uwi-ZeaN_2l)`pf*J=r3Qb0(WCE{$%s)z-tDu75+8)2ug6rmC+ zEGeTlmtJF7g{@Llw{11>AtDykibPM4srdqVfr}z~hecDtyu<;Bk_{ULwDrQ&wWl!? z?MfsbE|G}zN$orcwYm{iv2+!nB2c@5hTa90SgH38)mq4Mjg2f|S0b_-@ND}KtM*js zB3%x29yr75j>1DR;NE1JZC_W!+@m z(3&<;?bgrBA})*HyM_AEaf|@Sn4>uxtRRMC5>-X?x>8~S>Dy21>zBJPUtRt5{&ZZG zy?#|=m}Z!h0E?a+R8`n5xwVph^ZNGreE#d-zx(d})309Nur?)Z%0GO3{PgMc^_Q)-w1-FI(4e)Zuj-@dt%E~OR~$ygTvMPu10 z)>lR1K3KAOU{eACkv63nmc{i;Cq)Ji6xCyP=m7Asi7F~{7g;ws_5Sg=Jv^`HbGKZ2 zVUjM=v@kKFL0apTSz3oh^G(-nBgNIeJ~kR29#3o2wW~@r^@uZ_IBa0H z@`kv6OHthfRi8s;HE0q@%jUQEun))b8rUHmqPp-{m6^5aL`1X+AdTtXVA-5()YHMH z26>I1pUcG2B@iVUfaT*M=%mGzB@q1RTNh|XEKw&)r7!B|aCRnO;>_e#v}TSyEss2X zbsV5woAz~;O>w=HTds1@wf9q#RdC*96X_kjgW2Y{LRFh67xc9+OQllYpX8^H>;9@< zS1N_#c+bx&)Uk@HYAM{CSnk(yh(-sSIur$N`3H6#)y30ldqqlElJNMBb!_t-2R~fh z!aAA|uZ%^gH>+2{lW0-wn0LEn*%fBoTra27x^7)!ks_60D7b*m@hN}uwt}G6s=5@ZgE?mq zR5d0lWS)bph~2HahVRhG=&7nAhW`+e7G)I`(PBw!Mbs$D5F$|m)l!yPRC;S&04{cd zWm4_0%dmhz?5B;+xg0p#MWLX|(5NDpFhsdv%YKG$$|xj)jI`td_U0r`1nwSun2IK% z4P!-W^R53+Lz7@YeH^TJ5 zTA8d!6$@AD9%{VvvtUmzsBY4kyVi&vHNs=x0WOku(ENH5E8-fRSc&*9rsy_rf==~SDU+O< z9#+h0BJpz%MIFD+5j5i0E+E54Ug|gC=LPxNv{`mEqB7Xw+fC7RZUTr?i||atxlE!? zVN)jhWiIGKM{>WRpCB5dl^RLTs!P>y>7Mc-k%~o%mJS_?`hr+==6yr=-1NA>n_boT zrzX^&ED6Qh5mqC`CZB28FnBsS9vygd$Yjcs6KKvXlg{J<9O{s}!A$mLhCOyZq#^RZ zli*&ctXs1%iT1N(HGQuB`2cdSq=;Kqf7f)THy9peIHZdt9Y!{22v=I~*x8i6p(Hhi z5Kh1#X&B5(zu+lgKZ6R1qp%k=JrF_bk(0_FLKDK78vBdJvXbjYGE#wBMNxdraw(Xc z1%_=*5g#uc4l|vEDd{A)A>V29HMg8WPbdT;aJ&@K*Z~b`8sygLb0OrBBMe0h9*tj& zEnU)Oa5MipK@9szC1&bDDH|4MZ{gyDI{~5+A_eQNpiyz{*f2m8h(u5-S;6-JZA52x?GdwBZzw4EE23iG}e1B>grO7BV#ko4XG@IrM5B3c-Qm5GR{6u_^_LZPDC zJBbpCi1gmgqHdy1dQ<7Wt3rB5Aq6SN-fSGI*ri2Qr~q83F1s_Y zAfLkH;{{3_0CKcVBOAD>Akt{bC^2Ev3Kcobd9$}z7hzkWxcjMyMwI{nkuZNiVRtrm zwGdJC2Zg0CyG@IT^8x5w2f4kLIOIT*FXKS|NcXLdB425 z<-?xu?#jbafB&&Tq!M<8uJ(MhqpO8(Zb+$i!P;?J<-FpwNoyi4x(;h$pny7A&nF51 z8rnn1G4*PVi&*{caP%EB1Yl%&_x`Le_g}s|{QU8BYBo3$v#~IR8zm5C?1-A;y!HK3 zcMDhAeQ|&N-P=#B`1Z}sS>(I7pMHM#@YTx~_t%FXK0GYT0+Fkw{POFUzx(d(4{znG z`xnbnP7ObPcxc=D$G`gOr+1$oo{r_~mx-QeAjYTyh)KkW6e#Qw)b6zfgk?9|h6&T? zhR7j*pkCGD4`MxyI&u7 zVH`3@pw?uXfiemt753LYP6p~CKJ+Z?2v0nqa{`*DNTWg^?FbMV4#SdXCY5G@IF3L& zEE2LFp^l(ajk_#AhO>TRjgar@IGez zs1#4!GAV<->Y0#yo6U#eqzo@9HF4lBgp!A@Vj#MKSxF-ZwGu)^yIUqw_E6mVZ%AN5 z3q-mqdKVGv3So_Bh)@fzc`21dP>T_j0}6-r97v0hcL2!e8j0FC*N8;BsB|I-v`{et z$r#AOi6+{6TS}=FkOY;EgGc!2cFv30!}_kyir6L}6LG~zH#vbuP&|N3*lRP3 z{_Kf~sTaYfq*6%s2+bzB$!#UaBFOc#c#J3O_`3;GmXiC62_qbuew({WX@viG2w4VK z;qjBpL9&QDhYPTMW&SPYGDzsb{CJ)t0i9f9csCH77vx1EqfR|Pmjq0!g9z6`29uza zN$X)X=14T9Dqb+jJxL$r@O%(PT5lv8 z5-)jjYIu;5QI5q#(m(Pb$=u=B$=@=9==cXk@_M#0bm28-(IeI9+CB;Flugw%wzGwy z*=7wzAI529w2@ZmlFP|_H@WflQ~}$y8*?4+o>I)SFLv=DCrw~*+qx$(BM0Zypdo6m z3qjr?loQ=9OtdDNy7bFKb3GGFG|}Wgwr3TTO2$}jB;aA}L2}hvroqw3}$sxIsV$4!aqEx0?9fIgHUClg3CB%j3#ivvAb>4L3YI2K2ZcZuE z_mf8(oR}=5JvI#fWNPy7$@tJo8X}bB89C4}E|?xTeP)PPXdzAN7D_SM%oNpFNAfsb z$XLWsYc~wDr_=F}+3*5DjfIK=*1O1zylufcE@cH1lzddA#z7E~c{o+I?`uSaYQYYu zFc=_4;XV$lZb%WeW@qxNEIEPh4Hi%X%loMWh__q_QlQ1FYfPO z-QC<>6~^g#{q7HMA3r>=$CZ@|@vc-Ak*@2us%W?MDs>C=sh}_wrpmgMRti{>lBn`o)1&|Gyu%fA`(--~H+Pw{M?s3SR81 zi1e)y5i{7D_mFCr-g|EyX$#fc!TAMyGZ+Nv$~KGB+GQ!3yl~nEg_3p^Ru3b+vSN~K zg2ho5)tU@-Y<(kutbd&SKNT)ixcFT;B_b-G2m{BN0W;OI@KQun^t7HtJU(x#EMn@` zRi!Bv>e74P2q>kr*0~a~7M~SplTI;tSJy@H83BGz6$-J5AP@p|@iy8%DiYBhgvk7X z-vlNihZkM|+C{k#sdeP_i_r>F>2?DRjHcZh?k%OLqBSXO*Jo9_D%6HWbfH3|6b+?_ ziru$vT{_67nFwv??dP}c<43-|*}ZsCZ+66}PsesV^)ux0aeYU8b12t)zTWe$&{d`D zE23*!m5-Yo&v-t|si8HYjtUYV?C2>-343G#s+V_=%ZcXMTHs+K60wf;^zOro7rQTB z?tlJtKChD>g|ZcS1pJY7TSQ%CZR=sTqb|L*Z{OV3Qhs>Wk~E^0@HvxQTc*mXVs-nH$F; z83+xuXMddCVf)2O|Dw~Po5bkbov|JjE3H(MU8rg;A0D?KKAw-;){ zD#}dKl_(~55Gu3wCR|Ek60r(XQdO}wk5J-w52uIIdVh2E#hdGY@QWAcRepH?_~Bt) z&$cUus@2P?sBp@%?Kf)rqRx~840|j|;jA^FSVCZR=waZFNnz!&jF>Y~RMlut)(gmwU$B4l4}QK+?_Q?)6iHqesok~qK$ z5Q#z{OkVV0cR2~vRsCY9Hx%R!I&SiCI)bPYANF-u%WhYe>*Z#@L*E!e(uu%I+Pic) zb$Qwvf%f}Sg{8@-b32qm+)3DP0B__Il4yaUYev&G*vQ6(OWP`+G zsP4MTrc#AfwD;bjrGP|k3V{kj;ihFPV1uO1gDHW1QasxPUQn%uc?(x-=t_VJM4?Tj zYxHYW36~uaw1K5WmWIy;7Ed$p=FNL1c}*tctoQjN+YEj$L#h7%Eta2 z?}Pt3gX{_Qk28BCL7?<0FpKvLf;(OczlEq($th+Ts`)m>?6QYvpb=pr_>w)1Jq~ap zWH^@r6b6xF3m(RrMVAp+&e4*U{e}o#_>hUzrmIK+y^z%|gDX?y6VW53 z(;r_7(kT?8Ud?5+qOcEHLOI0BqroXYOcfZeF<9pR&cz{Ok{s|F5!Co}5}(*S_QVCm zA?Cy=V=CKfjZJZMmLfL=k@hr)bcu7+)h8?S#1H3UzaEM~!J~KDg|gdo;*tu@(WXas z!FmdDnYe&lTiT}#pC>K2jO{%x#Pmjul?1jK05h~~3UpJ8DcKrQr~x37`1!r5m<$P$ zQWfD|AmumW%!uB@R(if5qY_Pyl8HnzU11YNh-RA17&SPI+?u_>Eue{(hx%!?2p0Vy zIS`l$6U~EtGad5P6u>sV^10F_J8k!2|5U{cm4k#B@f9jD3=N3Ly1;8{Z~A)X%wL&R zb>>A#!o_!oshuoGh-~~(KUhd;6F*PsPwCG8^}ke@W1t~tF~n27=mQExSE+^7FME*P zbGuj%L9|l}vx+B-V|*NiC6MXJh7?RBDo~q`ZP3$9?u6~EA~MSKY)eg41iTP0xVpQ3 z`PIuWzJC4U{-*Bg)ARc2;rZdi)B14KvlhjHi;A{wJ2p{2u_V|`kf^OvW|Ts8q5WQ$ zMQTAUyzFRURPvjjz<$Ss;-2!{SEkl`Z_?U!b4~y4FJAtietY}v0Y5&sfB)n8-~8#v z-+lkE2<~@PrEgpFaLx+WK#<;KQ<=_S=ChZu2NPEf*Jz~0)FVTQ3w};75n{W%nUX+2 zv{9sxHW{9fymsAF2Lj8W>ZZh0n5h(~6d@EUfNYyGNf#=N?h(B4)xycbD20iNvSf#b!`2_4%JtRm=B8fnxQJ-;K@(38{rM4vQA^qF%5KkBJHD=Xy<@tg z?T(KfkEeb->+?z1qb^K^9rA;1{-9>FoU{d|hB90YO*loFxPae3tibMz7l(HrPp3_o zO4?4QFuKM9ab(fDc9H9wD=QdLk*{CgTpf0Q`}3oA`OViaU*27}b|$8Ux!ZgbA%*P9 z@|$0L@rSpce){-Slz#o?{eGc#JY8Qck58xG`mVB7PT?~LMj7K1d6#wv6GR{-283eP zLpY_}`(zwL@0iY;uAA%@UWf{z2_B!@cORe6tFjII@HP_>GpnUaNK}b!`emur&0OKi zOd_(BQkJ@&SCdyRHXRzfWdYI8?@#X^Pd8WlFJE8%>Z=#8@A?n#ovAwVZJTLJb?13EGIYk0gZLL3}`vy zvPlv(zNY{niQQ?yJOxoVWdf)J6l01B%>zN|5Wh$X^e)9+z7IqopxHtc1XN}KP2}mc zeQGDF%v`Sahx?nl<5G6Zb)mIs6Fi>#v14n!lychIZYj0UvFYu;>;%%ZcmiH4Q*#(F z-G#9GdQtNx4qW^qrDtxKy7bCLh?tql+h~Trg8^{sSf?tiHfo883ZSj`?hOUHbm2lo z>J?J<1T$cfpK6K%+M4Wl3m7b+#UUIfXQF6A#N(c26KSm%s$lA>A}ZR~)=5dQDYSbE zPeiq6P-B-Dn1~s~8Uxi0^C9Hg7HXOrA{*MCQOS_<5dGhgl(fZi6R2Qx~@uB zA%Xhj+_+S&=u%68hcLG6o^nY0C&(z<8*n579SR8c9wyF)$Xt&T~dh?uMvn?zL^ zo;xNYQK;AqBLc{}_^A?unQE1lUxxA zB=DXjJ=c!;k9~fwjELPz1nllFF26|ObsX2HkIL2N10!NLaEl4uP0@1hI&S^M;wMt* zkh92i;IluIASOGq+bm&7&DdvhB0e##T&G!t2w&p=a(L!k%77)AhdFaWCh_5=LP`*M zuHAlYYnDx9ZWdyAlgi#){Iw&2S+4;btR?V5S(&KGgf6&_G^8 zQX;e(+f^NV@EAH2c}SOr+-b!A7fTA`h_sNQ`6{AGi3>Xr?4(HiM0zj)L)hiO02gs7 z1$#mUT!JS74~dxK+v!gbV*0dePni9|ZA&SH$?|{OUx)~iYzm?I%n;>QG13fO-jd8%PtnKMKFY~K^bWdi?!J<1bo&ZCKev-!<$ zDGhGBr&X)6PukBa9M8FYNHS$apP?ie|C$mKp(upuBxbf|(+h(*@#eJ4BbO7>qW<#> zR#MbF({un85I*HB*PrSP*B&0=81WnoElej7Uz`(*vuI)B#H@u$(8!sOb&-Q&|Dj>% zwCDNcG?f>gbP!N!Fbz>Nr=Km6CQS(nj&CPUQG`5?bGV@T&})Y|vm=g2%`jl%t21ZP zDl;2%7Hs&WOUE^SMF>wdti)%3(doT`gTgEzAf~H881~tzeTF^EPfS2!tSmn^{!G72 zGngM9Vtyge@z%+R&uRaAtLFbdFv)d;dRljTK1K}H}_X>zI^rVZ@#|1+pS&R zy+3~Xcsw1qzHZn$cjZ;2%ek#xL=`? zRJJB$O`k-~ze-otW=F_&oIeo~={Gno@u-GK8`lf`LlQzDqJB}z3T?zoe*nOa&IIb0 z0GdE$zd@(BXvnqGd^l<%KrBv^)=3146(B-g*cL}j(zW+~dws)1pB|nFbhx>`xw+Za zZNJ+cuCCs{eZOw!FTVa#R2B96pMNe(k47vfT$kL&9f`!DXVpP!HHya9WlqlM76t?ugAukZfy4({&GP>@Yl({)fN;tc^YnW{H5QhBeHKc-KzBbQm?=H3CIP z%QB8Dz|K}BRUz%tmADdHX<@fYF3ua=tqZA3zm>BQ+ok zjA<9!JZmlFpdrCzq>AG_hS`vvPoeG7$!d7bmq57-n3l>n*SlJ|aH+MlRw~nZ?Y(#H zt|tkD%v7FR1Br-q5n`Js!^EtR-n3Q8R8|ukz^z@ylta395fRz%7E-M1)=RglZw(X| zRRS4^;u7d0f`Rdqh#LGM5)(@y$_`=CO;#9w{9-z8oZ1L)ufWy!mdQ#CeQSbi&cIrMYX3D{aNjH zt=w9~XzDoB&0SpA^dyjG$V3xPOrwqf+nO{)wkNxYDg!LJPOo7ITLVfIV z6v$jeQ=TC37(0W1k9k~NbHFw<;yjL1AWT&@gb1xEGI#3zcPVpTBfkSo(N9<@0MpRc zv^M@*`(K-YjuA`Eo3Z`}F#yTG9mwx^HZGn={l%5Xx;Snji3!K8D zU}0jLMA4a02-dhFM6i{Sb9$8&wdsBKvysa{h@6KCbDX6^Fnj~h47%g{G(_$q%M+;u zrs3u%X&WI^t~o-=DM%Y}(bzR&(`iw>R&iF005%!Kr3(4NVng-aO)!gx&oOCe4(*(V!9$y0lhOTouDq43aDaJwJsXVP%d8vY@ zxvQ#Ex$DgCK_UQAuaG!@icIrO_D%64A-|_W6LFK9X%F&gZmcqH2xak%JYnoH3Zxvz zxrfUo2Tf9XKooKMq=5d9Nx+7B4%r*nn2?E^OA;Zhz({>g*bP~uN8_tuo)P5LvDk1n zA)Lc1Cn57g6nXY(5$Vz}kwSClwv60qYLb67L^QGJ^ge`@_F|#53MrZP?`ViRr&^|0 zhF8!?wok4W^YQhpPDnR!Sv71w)RAZ-O6km}KxsPn8hSB^jf*Vc$YKEHsvXz@#mQQyUJ4rK67Nz(dyhR|jhSo?cr=7-5UW~z!XanBlE>x5U>dZ-B(Eu}Mc6xg7-{f?Ik z5Y<}uyrcf@PXFZ><-d7ZzpMn+cOC!nqyFok`cF^t)dBzf*Ej$DFRm8IfBgRRAAW!O zuYddW^t|3M*B$lNRD~&1O5VFS)g+=weZJ*wMd~tKw&TVVk!-vPiQg^#5 zDk}2g`ucjmtmp0HsyoEQh5h-5U3W|=wVe|o1Qm)c-Vdh?JDmNe0^PS4&@)bEOn_H=+oo&@v*Iq zw0pBn%cWWwhb{(+bq(RphO z+#dGO&V`uEacjT({)5fNcsic1+sRvu<2t?yAS6RkbU;(_*mRsHdcMADfB1dXvd7jM&o6PBTSlO^m|CM5v`BQ717` zU0614trMh>w$`ldQT%>y1S1!JoUBorB+5wVVg)_wSLhjrY`iK$n+mp!O4K?QjtIr2 zH{*tM@N@xUJvfVh(vKhz&fI72jNqkXQ9>{($ILoR6~L3rE#WB zP;kb*9<>1uEOQkJxDEeAfEt#^MZ6B{0so(7waO zAi2E#X0nYe5TLNONpa1;#ftJ{eravWS|GBH`ICI^OvY%EmLUfPP2(dW89EiA`Fb)Q zo^}yvXsp%XJ%X#qkbBx^#-$q^VkFFOyC>cq(0B#pQ*JTDI_$J(aSPNX=(zdQh$b2Cwp zDOy~uB?=8qEN2^FWC@s=s*D$s?S|jX^~Sp*3p_DA$$>l($bj&3_mSVy_)+|1*sO{6 zDV7RkhXYq+&x1HcQ*SY?)8dq5y?xu@ErB%JD^K#9d4SM2jJ?k>teu*Smkv9l(@w@? zZ6_Mxtivx4H4#Yz4|)Tx1|^1d8Kwi-pd;uXOm5q;&tOYWa ztp3~(s$32<&JqymnAnxl^roPBppi)oGGRs&1#n6D5OkMdN)SZ(hQUk!f7d$=iNY*T zA-n1sgUJZFH}d4n1>?=T4fhlIwabMfvvF{To4=&-H_`~rGN5?sp7tl~L|}j!3Jr4*vY+gXL!yhtr2q2&)s(yZAf|`R|2u2P z{NebM5GyuXW7m-q3Pz7~kA~$5Nz&8_YZ&4OIPjtewf=KTL``HpTR*A@kuzy$_kAeT zQ~|JMsz3&y(TSK@RGNSab1ko4-Tcw7-~5X|`Ngm97xez`{_MkF{LS|dpH7F}{&2P5 z9SVu8$J6QYsJ#<$snw+c)LMrS3MmuU3Xl?a*pWX3(7NNLYAHhARujz34D?^z;Q#jR z{=dDZDrj8@_%+ejZ+Ktz-@ny=@%rXBH~gpX&j0@V)1Uo#dVFYyuD7-Htv9;{VNt${ zUzV`HLm^^Gq^=z)a8U9~Yt~xIr4W|Ajvi_dO9VJCH44VmdSpp<5mm* z?ce@%b-i!vCO~Wb=H|eaO~I~q%ZuBq*=I<*c7l?})hfi<$XzYj zX)TDzr~R^m&`;XYhF2`frFI<3a6Y~T%HqdUDcg1m&=W~DmX)R34j&JXGFK_GX zt9o~{d^+p#q`gUR(mTs0ssw>u^b@fXLb4`M9Ofx{h(iR#C`&n=d++DFn?0UzJa2Vm z@e)p1(FfM^wkvhNu(YjIK5g=s-@Pxj{N}4y@7{iV_wo6cU*3acvy`-0k2a;Qv@Gu* z&X14BuU_A+=k>#<=l$y!`@-l_3ZG8f%d0~|n1QImZlrEd02ZQ1Y-^qkr6JT|w}}MQ zo1C}yaNIsVo=%%s3ov4$Ld3)Zfp!tr^fs`@izZ!$+?d#;%@A_j?nUn%rR>U1bW=vN zQPb+x$DICH{6A=IS9o8R?bQD2uReV7`udx%@7}!F|McPc__RSI4`D`0!>L08c3ajp zZbgxMq|op5*aQ_o39Lfk#GB#njb@3MXJBUwf~Ut#wC`$N3LSR5-9vU9dBC-pB5ok8i zbD(NC_J@w^t`~+tL(P$}bpYQ{b1@-LH^o`&q=C38&4(>~gt(qIK%PfN{FSlijE5-# z$M|p@B**DN1aE2NkWr*P)F#Cfxn_@u$Y!-@URTm2otuKpnz$}&1R`$z5ICD$>?f-0 z=c%8J8pcm1>k!1t?2xBVGT_w_q=cBuV3uAw$P5efCAg3`x3EDsd!#0x5Hw7$p_%Ko z-=r6chdS#lyo&*y@%*G>%6bNAWPmk)>sKN&k{qj#0;m+xNM=R)f&v7aLkmDLiCKOs z1O=EYDRQB?Xg~))Gng~6%qTP>Dq9#O<6NXoF^I-h>eQW##wMjp<@372jFz4H^M}KF z=+MOcdyqF+>|~ifWAB>7`49=@=cj6-vHehEUni#y1Qp_GQ;F6nG9@>clUfCv2D%wA z(IaQbwDGY`Wmyr#zeM}E03S5-f)zr@cRm!*TfTD~z za%6*ZZZ$R6HvDcz9GH$YoCv{+ zP^e59=c+Dt4);oMJRHiC7M+4BX_jY=Ks*j1_Ja|bKARUrksr(lQXH;aYFrqwSrdnM zBv1CZu$VDOHvfHphW>IiB&5Lb0EXYA^cN|l!&PGNktRcIFBlehGIJUyYa@i2jq~*3 zzoT!M9ufvOkAesn?+w#VLxCo4T@d0k0u9b;I)&-$?z1bUyK_D&(RA7{+PY=jqgF|Q z&?Un#u>{gQ%_LIdtr?DCd*L)NP%MTJ>+x>p$EJxA)EZa`_kv|#Z?E^?e*5MZzx?`_ zU*8nn9zUM`r@wmlH{XB!{-=+-vV8gSj!S8+pFTdGp3msL*2+|f;a6-#N}*lhW)0D( z2%$;uHf*3UalulAi`Wd(Qixd#mt6tl%^v^PZ`&Asd92^XxY-1YzXf^Q1_*GKvH z-<|*L$K%tvErQ$1y?5zCYH?v_h4pr31w^8It-=m=ys?forq-N87?-kKM8{2OH!bX9 zJSwzZrLCQ@VSTR=@D^1{F;v06BR+W70%(-FNbjYT-Jx9HUojD(eERgTKP=0#e0+Lt zr|tcRk0KpJ=k?sS?bD}6BiQ-0{^9pO6egel zY9Xe=s!~g7TZ8C+DMYLy>v@yjxiS&nzJK)bmcS2hKRzB$%=L6y3)8C?*OmF<`EK006L*1GlpWE>y+a@B04M;5m>18Eh+K3dI zVX%4JwaKTa^NZ`9Le6Wi9G7<$L?j?)R*`Mnt`Ey@p$+=9_TT^Tu$1!aZ(b3hzP|nV z`253%$FJ|N_j@XgPAG+WSDWaE$L+(%=Wkx!-rX(zx%?}piB zirlJs-019WFv#HrL+z$77bfo7Jc$b`#I>-fw(gzCBpPu-WLFtP@7_H=e*Hy#XbH^sC??OE@PYHo}qy2=g9W?7+nfn$@r4 zMAM$EBqZ{$u*TW7*(EPh^R|N)?*v|AZ+w!css2^>MUL7d794)fQCo|O0MAs8D1F?n z6%{5HkIO*nVYF3y6_Q5gkGM-$?SL>BW(fFs)rWIufKLEqU+c2e{f=ubcl+|u!1M6%*V^F6MWBWM!6l!b0r-iYZ87Nk{ zObiu8v2T-kY6{#>_E;`Vg?6&pg8y0FP!p zTu^a6=IxRTR zpb>1){LB2fOUnp7M{E2DPc+-EI%Y>0!jacXe%V4j)f3aZJ?vIz2Fx;g3Mgrqkw(6K ztTTUQU$F$VIFioSBErr98R7Dhq&l$y8Vd}eN~uvDRZ$~b<$^WkuMpe_mY5?^C+Wl5_!SN6dH|lO$KY=?S#~PT`JIgaCwfM8 zt1r`q)=JV5=>U@nir95T$SKtsfn(C35G_BCLYRZ(V497%fyzE|JW>}%2ZuC4VuEQiK|6h)L3H+UP9N$ecpZ$Vr>wCh^Fk;Bsvk9Gugm z9=r?-mfZjBj3K~-%R|fzK`eBH(Dne2_C2CEY(t}3#zkXDi+dJlNHmBvY7G5J+6JvW z_W_09b_o%sSdtFWqA5Y*L{C}K~Vu~>Xz1_E2aN&nHr0a=TN|dDd0HO&J73MA?s!HI(H&^@DU)}%ax8MHas~aZy{-@`E^Y8!i$Dcm6O-N+7 zUv8EIh}wBmId5BQ=SGB5SX$#+h|pUvjQwG`KI~BFbZ*D9Y^`^YT@JEo4+;_`k&ez( zOk=?yB?imCxG(?BHM4k$Nfbsv6nDTME&6}|xc+~B)_dMv73yshRn<(sw!bA2 z^m&!_Br52t)yLF=0K2fPUb7MT$3k0^$K&?$?(pvYv1>0xI_wCb*f!DLZ?1L#o>u*v z??3J8@<-p?Z|9X5hyAjY+aKP36w$BWysWi6AJ6BlNz;?y?ZfjI_c!-fwVk(G%eSv@ ze|Y!s_S4fhU%uKc%k$H-*-#M$yJ~oGmf3ytYwqPy2rgI@T~wg0ce|4&&0LO3m%^p0 zQ0s-*E{8%3fb(gSPVe5KpO)JzzP(;vUoY3!d{)B8=ksZkuF^;tkOH=P6(~TJq$?LP zH78Q*F$bWFR=c4Lg?jsclWGr*x))e!P=pJ2Q4uZ7QEsJxc0pktRa-z8X`O6pa93rU zsUzB2Z>@LHK8-;!If#DYBwf{#1p;Q(4zjV=mC1&n7a}F;U9*Z7B%)Sjrh;wjmB}X( zcN7aglp?Q2;-!}$Ya9_6F@f)N`6RNHfGAqmbCbectyog6t0Sz;jTEZEO;tN)tEJlb zQyZjf1h=Tq|6W)X1w_oPb%lLdnY5I$EQLtg)&&HGNG53#g~6?|d0_aMA)EbTh1hOb z-1)jmu?~GuKpCXN)`S%LLjfR-OmZ9^xV^Uq(DPLL^U>gyqOU#GmQbz&)dd za2k7`qNWV9@>7n6Gg^+s3fXEhG2w)xSeTOaN2b`mj!Bq^I3c!~1u_{h1?9tOMBY&c z;XvdG^UR?PQUlXSO<+RwK?HRxPBstQV~suct)7mAB0`fe&dzShh|Yr) zN(r(!Yl_T0%nzrL`vt;r(6nH9PJ}`xQ^Eco>7ocLVi`$ecrtzjw@It93j3RmMdm{$ z9f-&*!oDGY!6rm{E6X%9FBL*(bPJ6ePY!;0IveBztB`&bNyf2*i|2%hdTmaahWyER zFO3&QQUrso^9zDCNp?iIJs1)qjSOwcZwB-M~V;NRuC~4+X{EJS_q)lXLGYZ$Sp4rkOY+mT;_{^mU(Zst*M}&mi zdWQB#qS&7k<^mHtT#UjP1>5wZgewX&^3{myS_fL0>^3%~gsUQjF|1JR9!U{r-#D~L zvY3YE*6dViq66G!!p{sKp0U=+Ud3M~$B_a!OL(@_zR>7U6J*{w6gfX&G%z_%ixe0% z(|+lU;&&-pVa+bh6hOHJwMV-}!w`>9)c8LHI)-P6QWIy7Gkn&}Q;Pi2;8=)IL?}Ub z9sCM!jf*#C203>_K-^;({s8{ru>O)~WV6qTGlO{6OwV{hxCU3rFsD2Sm_mCA6LOVl zou*9SEO>z#kZJyqz0V%2L#`+o5mtH}Ats}ZUDIAZ|G-2?TO!T>i2pIFR$`JCH|q5> z2Ks_rXf!XFC_$~+w?w1_0#wwCfr_ChVS4*~J~t_aI~ZhL@&V7qDdIAfC@H9mfUvvX zzy9+6AN=Z@UwwPeMc%%B{I~zFzxe5=_vcezmgQ={9QHc{-`lnklXgh&B)wEpRS{kG z`(-J;HG5a@*tWLtj<~em&Rv-cxS%Y=Bovs>O6-VjrX3eKK@f;~D<9F>1X$#(;gDvp%;ED$A_(*RPf>FcOO4+>$2M| zt{S4u7UvYOT@v!CK^TZj?N*VS22mci#%hdQ09loo*e(r%NQ5a`mkU&cOHruh_@H@x z!ZbDd{ihM{LQJ&~lupNWTf0ID`rUUws#5QAjjOA}PJ4U#=I-g^<9R#pcS~D)v*%k| zdK+;ttl~hH%*=!?5*Z(YYVp5&mmI%VrmC5|j*}KO)1%0Ds+t&TIZ5UUP?!*;g;=(Ll^?7?dZV&JAheG>ZxxZgtUGrCWRqk=z z^zoTLK5nP8Zks^C;9`x>jL10@fJvdH)UG%_xBHvj+fUCZ%-*cpi;=h1mFRHTJ)GL# z{`j!3yI+5O-}~m(AKO-I{qoKI&mSM;?L#RQzSJw}ZPh0PlIht^THe?{8r^w3~KK6Ej+PfuR%$Vy*o;xp=H=nd{r>A0Ov+j`!_vNhr{FlqQtSZl!W z8x#XmJrsht<40OR07QPsOGta~#6j3UPe*!CI9w5V^=H&Tn+LQks;7OuOF$Onj0tuz z;MMWJCAig2DF%+W(yjDtrf3D>v?si%if$=Zjp`Ze*QT0i5-TK4Ftq>iq_BVU_?bml(*VB1>cs!jp*_x=3GAmGaC5UE&qAl$n;Wm+p z6B89C^@^$JnwF>7VdZRw1Lt`TluI!_a&gjW00>u5;#%vnfCyZ;E|r<>)WPhoB0T*R zk$Hl_r^tGMUYDXSHq=Cbu6Dh&6o9n%ya2w`T9+astfiEy5Qfge$9TTCEpp%}l& z7>N>>I*QUl%Gi28t>?pTPgIGNq_{=3UW8GCYJ$wxJPt%8mc(Lau#cHyW`QtstwjND zB1F~)(7HgDQmX2*5KvUKFqKl?X}X-vWnVah((AO(z#f@UcQBRBJ7M9%i#Vd%&slvs1vykS7_ z_xw>sw3{39GNq3L0cG)AhGC$KjvSO`AvQa|(~Z}hgaVLtXgYp1u#gKGfJ`d@NYv_l z4srrCn}uZM09WJ;vjb`2)IlB84$C~0G#5h@S`tXi7d%E3+wQ|mV$voLB*z2O;6zqG zOdCz|I>_o$Yz8r1K^o7&+bOM#F$!stqR*WJdE^!#I22&|d9FPQe1|aP333RE3(vfI z)k)^VTnDcwlNhGUzZ#-_namw_K7C32_F`|7yyaGd!bHfEp7F!aWiJd8FjpC;xAH8j zrWtZ88iM1wm-?UksO!m;g|1BdxJZf44EDgJ! zUk{>u_UG>rsQ+imQx1G)l zmFuhh;pPA$k$yg}hTi~aR{*tE=`I$fEKIy@YnM)h-t;8$bb{!q8|VOGM`-SvxCce2s@pFgVh^J(j% z+qQoCupJ+sxUjUo)T$_zxl&-|pUjI$te|VJ4&axiwW1q95Ns7Uo}nbKhHQHtIpq1?$>& zOL={F^ZnaLt##qDTS~pXdR(8bb_mZMMN- z_z{>zRh3y)d(*A=P5aiQcWkXUD^L+A=-m6ciHI_&Fj-_yVNoZaU{D%1eixpVE2i*Th~Ez$+5yTSlI zeRw*ZPG5a}w>#9j>~HQ4ZSAME9gnBpq;J~0u-L%~pw@}f@5>XB4#(mfD0b)6deIvJ zTtJl~%;gZ>#C+jntt&f5HXmQ$pa3%E>HDQw3-s<3T8cA{4=u3o-aUVVAniH_&?blOhGE=uQfOec_7^^}r;s&=8m1Y%GZC2x&q zVS}I9noZ`y*1?SnZ+$IN3bAx8g*s91-MV=q!UBR8qp*mIzzT{*Ot@`eg%|5Z6hk2W z|8e$b-IgWEc_8+E=6j!W?~RC@Dl;py<_ScB1PP$o6V>EW_v$C^%m zRxhc$DK*t3*aSfmAOWHZs4*+2$QbW%&fadO2OHc^6#GR%RwClwbM|&OH~Z`}b8~a+ zU44iUcxzH?t&X7DVP!L)m0J9<7$Rkyyoo8Gs5l|{R^Q$=Ks%{>WGKxQ4%q&-f4g5Pby*#`<_L)j?V(IGh3s&(vKMAQV%t z_`5>W06~;6l4M8U+dQE>$oHsNiO>S$O%=P17%SeG$%&-wuESbkecqKf)xL+mg~wutUw+k*XECnfXZUJEYr*^QU$?tRFy6< zgHbw4j(9tOHH$aR#@;}dHHFAhk8YM%ZWQ&t> zmy8oI%lYK^G9fZ4FESAH?}rXXWXn99!s$6#-IMaEv~T>JQG6fDnd+AEpQ7DNqj<+~ zH-?eID634HVAaGSRWUW$A0-uHCYc{}BR*3G=Z}fm`nu=R)JkORka{_*${RIt8A!yU zy7gGCL1?fq&v<=B94V_>wp`KtOGvupco_*Z4$V=@S`+;u#?Q4Ls#0&bOt?(PAtS43 znf^dv7jl9yi)*_k7)d*4$+;Fgv(@$aDPL0(zKq((1g%aSr`U5@FYvt{lR96|uBxAi zBRt{^cH~iM;6?&buu+@E7HS+&%vAcZG*ZZrgSa$YAQ|K|q|nvq*m9A|nUX4%0m<^x zYNXD}J|i8wB zpa7&kmp@Otu$1KRl10QZ(lX(q5-lg_4n{q#*I4*V*D$+!X7{l)pDF2Jasl!S5gL{O^B2;J~$Z%jb z{ckn^)L2k|#xN6?>o=F~snX!%6Z5Bk8!(p8A;P9c%k_Xf9|f3az-Tb?4GCau9UHNcCzlhLGQ(_`NqSE^s6Nju!E?|<<2cfa}dZ+_#w<29eZJpJ^ipZxNd zpWnYYuT8Fx>!X_+n5gQeTcl*nM5MI_KbL5>?Ynj;yP1iobw9ylq)-GRz56LLAq9Ez zS@&)tY@*uTC3-EFcLGv_2~OaNuxJAp|MSk?MhL7Ut_2i{%WBo{&;u=4nGw#FO~w*L z8J)p6S&?ukD-n&ur*#fHt?e&U8(m|?$(*R=kx8OmugAmn{;-)@V|)DQdTD&|;eiAhawxDk7D8P!_3D>)sKczCr+GSXmiU&4woVN?UEn+T!) z8H>9eK>EpN!WCP^+OjN0-rk+=n>@Zg9v>ag59fZ`ncYbcqaw4p4oOoOyNEPJ159~( z-GBY+_BRd3>-O%uhYzpi`){|8-hT9(7yZ*O?r-mR>}*S0U?QNYQ2j8M2sgFEX@7FP zlG~}P8z8|=aqcRu-QJzHegFD$7NO3{cQK=?W>n}ZIP?> zaCKbYefLS<%{uPxPxr6x1xDx8-ebO9beJnk6ahvN2wVi|kAvvc$yWm`s`4U0Dh~(5 z6~;zX#ic}HaP>YLP*y(Pf08Fz{mxkoS6zND$)843IghEVJe`dQDqLO`Jc1;nRtai; z1f3#c;#X8FX;HHVG+`uA;5Re`N%3S~@7{dV5XdJpQ`gIOD>RC+iOk`4!y=y>)DsMuViTQO#PU!h+@@lgDgLyrG?-Eh4QM{3rlbP0WNQ zk-nX%Qi_qO$9>_bwD6TJt3)DvnJXExs4pUayaEo^%F7 zo_D?9Hh_#}_2z(BiKWfqPNI&5f6p8Tl7cg3nelCoy$DH=M&{=(LIn@&C-Y=6`;^%n zv!xhEw%#K(r`Y3(MN*wO1*~PaP~>Q{6kbNyhYSv8u2EPPp)mnKJZxlM?J{C})KEhP zHQGe*8i3EMfH&&>Text;jj@93q!06JO1}o^gv&jx(1hnc_$XWcFF+l&PiC`LD7G zH|e_z?uez#5m`x%GOo0^?9Lv-$wiqW)r(~cnUt#3XL9UA530+-JGG$7q!?U3pQk!E++l=I@>b#uw381EQ$FPMv5vGE95z z2g^5w61cw(9LcJNbjLOgvF!X(QT+o_m==kq3)oMLLPWou2F8*7AJ92TIP%UZwTv{G z%4M}iLp?J_4~0QuPO9__zwssm+`lAN&z`sJ0+D>f_)}X{Mdc^zGlW(niKIvDz#+FE zY6rxX!P38kZVX(q`W$M#!evj^;XfG{f3p%1Wp1uLQmX(UHvR`L*H=o_(-<%Cu{8BE zNSS_{zq-ZVuMX>5$0MYf z>SkTMYreq~WQ)hZ`@V0R_KKbe-)6=h9^Ca^t*gR=u~0YbFl2XjUt2%#)VoT9`E88A z0^W7|qT@_R2+FVfgTP=W#8cy^_X;(EXqs8~H>sj`n3^h80gY~B{wqX6Edi{~>lw4k zGbaW_)dfOdW-6LXtr`m4O@+eNuAUs<{n|UaM-q$TbA^^`XrHwMW(q&jI;DPzF-VN=uA)ca;l|3F@~Ji1yB+v)DSZ@Ng`jbJ_=(6p0&AWzj( zfiyN)BX`B!>;Cf9>))*Hy|<6=ztz6;M85OR34dKw){B}*Gv$W(S;gmDxQS7$0*1Y7$9HY7cqSjAl zSL@Q6^i9L)gNJ5(qcB7>PR~5|v+8bbY3#Ob+xGhOs&PH8fW7_pEmuPB-2}zG-_oE+a}7GO^@Dzu}a9?IM9!&XKBJq?yKYo0%zElUhFJ7w93XF%cE1 zE86$oTZ5Tbu~C{|u6+=Zw&-pzU!A{tc6W2#-nltGezbn`Yc~&PeRX@fJN2`l;E3F% zkmkwbL8xN0fn*g;`-~_+?_QIxE@u$E_tx@u9j~NrVhVyxI_m~yaKMMD_U>1qM65kK zkPNvzn+fl#*@VVsUD*t57MHjB8+>pAg;`Y4dr#G6742$W;dRv-2dazs8RWF>x2L_f zVX_}1;JIj{LY4?gsBxXN&jY5a-4|1>(<7nPL$!mn=#l4^lxYsvTEc0GUoxfIDPq9B zcakFPNk&+yOlVZjcEq*0YThN#JYfPw z-?f`|(vh^5HZ7S5Bd|cW)hX71pgUDw3 z+o$@=Wc3_O=c3*)vgT_Tnk(U>z*m4DGiAOLWLa)K(99=V}#m}e2PHi}riiyIGP>;+X*0IC1El$bN zQpplz#aMMb(7^~Pz>LQcNxMuTO*tXdUq)o8Z ziD@V>n?IveL`55}qS8!EHyWv?N~*YPF0`_AFo`MvQs?pm ziLJ2|oOHVElYWs{6A0CQ-^n}7U^Iw}0P9Lob=%z5@!Z~W>Fp&%ZdDaQoSR5s3EUJi#o znR0&vn`iq^UfS9g^Jw4F z6ioqT9QspF{ADDTs-S~mr>uRMv|ObmZk1k_g@?hImq(eW3x&9OeErtDZ=Fv2ww>=^ z-*2b$>zB8SG+4LJ)|xbW$_X^O3skM0Op?s*)DW>i@`RGWBG0=|W*=7MnN%+c!3Aw@T`|P`CFoJ z!l1i(i>?>XUy@CPH;=At@5igdvb6L0wC#Q0;*={vW6YXu}qTpTE}6pPpX6K5vRuT5EJQ?Z6qZ z9at6(7$@Fa2M3zPR-d{bO41Rpl6j)kYAcsR+8cnSm6*R9tGe}#y>g$JoKA*0x z4+r7e8mWZpz8{w5`s#T5a2Cqi+6lPd^=|9uec!fyA32!FWRycpCzw3UB6HCQkltI} zdo$7t7`?z121F2&H4>p(Bs@nP9izEWO8pHxV{rYhsIdt(+>61-YzJh|neGg$L$5 zmoV|&2_=BWwj7RT`sG&-FJ5o3{^aKPQ6uu zQqZIUZRx6j&(=3WrL8nr_mXWw{C=l||JMAj1vH^l?VGtKGyJ3>PCC?*F|ipi^Ghw< zhy&E%H&Y{cXp;uRt_q6-%k-;c{SB!s%pjf757hO%>Qhvj^uR{9WQKLrT-S3?~)B$nZYioH-hlDY{*7nlF&tH8d&!7Z*#AD<9gI z1IVj{=j98*PeNiQXp$F~gd$3xq*WjDhvdLx_HhI!M^!Q4n0{h+h&3%eKUztWcznKe zWO#@?170CdsdcE+s4T43q%NS$!(jHKr%%}v=&91jV<4g^CR!*R+$suE7f z(#F0^Si%@^=G~@+Euft=i#B<%7~o_KbEt)^@e5ao{A?`W@X|xlrCAp71uj0`{itYb|Yg$sDMbknS|wc()SZ?mJH%4z0(4}{?lWsb4=!;R)unlm(IQ0yig zs!(1f@gsiAq)MR!iK~?dA8RlvP~uhcs;UA{lP?)%-r&L;mCy!~BOPBEDK3=6aye{T z(F>1KgB!mpGGUjBFm$q>uqt@bR_TMu7RPPd@ZbuDXsD)2#T&0nf!9cJCQwzKC% z7Etll+fTmpoe#eIy$>E;FRxzS|LLFq>XTo8b^GddGp@3%$7}5!-8627AWhjQfNlyQ z8--%K-S6kFnnkX$1yD(1|KnYByl~xw2`PSCsdvpwC6h+)m8wHdruIm-KX_;Ty$_aK zu|I#n;VAD4x>^gh#s>bYTm651p|@KT(e1pcs%qE0n|4)2S9bMlSj~HK#h?r@8T;OZ zQK+V{xXmy&LkK9fj)F42>$)Oc$p*7-;NklC)?1HGcjwc?S(fE=KEHnc>U4i5B{Fgi z(wbi?CnA0wp@`^i6o`oFzHeQYC7L4nMWv?MqsMQyqwbzCg4Ze%^jiXnEI$PE;z1aq zQbyH;BN}J7?R@G{L8Ox8Eb86T=p>713g0JK8dM2MBclEy(r`!y7?!Df_o5QZX7C1V z=Ur*i#1v}VZgzLO^ls;e^OLu4p1k$MRA0Wlg|Kg3t?LeHRXrQ$y9HhqR>91~v&=fI z1-_Y)lEh7II%Gl1zGm>hMVa32=b@~tZl`^@I-u6a; zcd81PVIAF15$mpuYY1UL*XTocMN!IjtG~Xz{q(cDcODFx76VUC-zJZr62dB3wYWX4Z8# z6+WEo*{i$j>nj6x;}@^)X?${hJT9^{w6^X>lDBuK)4sjDfB5pDcP@VMuCL~BVzJb& z5&^l{Xb4i?NG(#kDC!IW&}e2|#R%(zndR~YlWDQp;uWI?_`W4U?7b^ss*U2P2m{Ub zeLwGg@6kMQ+hyN1@^_8BD}@3%ojZZ3d1_)AQ2Hb#V{kA!4GGyd)xLWoqMJdj33lb< z>mvlOUp@F;+I?4%uos_8SZrQ01A>FdWTlvcOIE*@x1M$k5xfnarWPX`hS?5A!rG{e z;|tT81>4SDPzA-}Vw`y^F9QaI%}i_)&P<81Wbs{Bh3quu=e?X&E7;jp)hViY=1V(- z-RRY6K<&~y*@{>yK*OwW@J5!}qjRViTZ#j35h-fi{Pn7FO}v@`VieGNmt`R!M$_I^TWg42D_C5u06Hw1 zb=7TGRqI`?ckS9$Rju+xHU&=}e*q>UstRxS0GOG?#jk2GuZA|5`F&63e_(1*>strR zOndj1Y%)=Q_?cY4b=1!Y!*_-drGI_{0u+9GG(|iEs2!blcj|ueku-`ITT{%s7!Qr^ zQ8GDUBoGbhjBtwxowQ8HCo!;yYPv!VW=+_{kHC`MwsSX-s@n1L{`C639}lY#Ym# zA!8Y#S@S#2)$&JxaC2`y5y6sqBq<|TlPjII|*_|9Aur;p@MhF6RrKSL^HdG|C2wP)5Q-B(}IWGb*#-E!V z^#)6hk@{91EA#ES#5J&5j)eXAo5V9ChAJe_We)+>XT!Qk5OepSR3GWq1GTq&EwGI^sEf@{R_16PA=AX>iIq`?WpEOF<*RDUtc{!)P2%mynw7xv@t8Qq!2a>liY&(0 z(}}&AMx4f$Gs3iVv)+kQciww^{f$iyc34k)|K#%*zy8(d&!67f zxgVQc%S!XJ9vyXKOC<*Ve5Q~BQ`>a!+upMVo`7lxAbxIdXjlYjY|d_Vs^c@pUCaW2 zmB2J)e{^BD_mBGbzj^rm_u9$qr_c1C-tM2i)&9}D%ZCda(1GWQfAO^c@mKv`LIHfDx)*+JIO>4sYb2$Yi`AJ-0h5 zk$i{VN+*IEKuU%h(u^W*aVdxwwTTK@3s z>+28KUq0`jeEx9Sx|m3`XY|q=0_fm+TyGv<`8qfnXpbvEw8KnkeklmM+TqyNw%pzC z_Yd3F!Bc;9wH~exeQ$Sn+tb^V^}Z~=VC}T&(zt7X*!G8xWzF(Y@6}aKBySIO5-_Pv zaZuW5@dHGQ4yYk6StY%}y-DU5EcU525?RIqI(VyKknDShLH%$XNS}KX8cd`U-L#C( zyscO~1JZ<%3S?J}(kSy%w}LM+DvStNlMGow%f91{2JdaJc35#Zw5JWayX~u4q~9jr zjo6eBO42hY#}aoB82$cMz3|DbP}69pLL6H=3JKlzeW#c#8B63|)5N!GkJRNmuIgf7 zqocQXBy%_G0FpUA=Q)AYq2vjbl?Rq_X>t$*hN=1!+ahAt8r!x0=r zRd4UNS6kQf*5i80EZZ;H1x&c^`*=izROY@Y7@ar6ossbSe_M;{Pcw^aWgDf_AgoGk z=Wns|35%QQeTgZ8y>}O1S4G$nh19%q!x7!Vp8|@srI~eDmp~Ch?xmw(;g!IjaY+vX|48K?$()=@B!%xB6 z-ulplB3znWU#-i*l}SyNZBc`DE-NXrsp{qhpLySR%M2T;Z?wisN9I#28Cc4 zH!0i=eb+@Gu`A=rwM+~bUoecSM!TSPWPXXcE|F{!3n()(4$8ZHRkJB_MjzvUnZt^Q zri~@{O~qtcHZ23ydBDtIExrz`?dOUnGWeay+a+hNEJ>16i=1mku*u~v^J1f>%->aB zAi|4qi5czEU1wz?>c8`RGHw|Oiew&Exe;)ZOMWav+l;v?fGvqJe_8)5f>acJJQFF= zP>PEzl7HD%EPY{SbVgKb8PbEJ)MbP_6;ZGfsq@keks#ro7c7p51}xJAZTedYDKVTm z3@g$59Am+AAoaIYrV4~nYcXk4F6fw7$h6#2rcb7i2a~J}ZW7w`V$1+H)p`ykhWe)Z zO`%lf8S+u(;%!JTg#<&kn}}mQoHo6ZMvm8D=)cwSAldh%ueq!__(_qG{vbtk5%#0R zk&>=o5am5n1I*=o&ehw=?!I1;9&`_2?g z!&BMw|D?qwsRoeUg2w_3PW{`CAV3?1dTBg%A;qCMgSF)V2Bs7WrJR^%&*}Xo>KKE) zu?9Y=38*Fq$5Ib~<(TS`!K4bbbD?4ck$RnmVPkek${HgW$((qZrOkw$Cm!eM%Lpw2 z=Hlr?;xV9McnOkeCl{%{geDHRQF00Uw+k;kgVj*5dA@Z^O)l)vtg$Eo*70UAGt!gr zA~k`Oa@JQ`lu=|9f3dbRqNSP*wJbE7%yw3T6lw~fo<5YIz|Ld)a&gG40xtg8{GVA| zym%TWEgxnv@f!cj!f9pc8?$9vNMK}a$b_up^B(uiyJl!2O75ojr_;@&1r(&w|6XR-}^xRqwigP=Ph~mpnvkk`LA9X7kRz) zpFQA*H}cks+it&p)qnlU4E*4UY|D1O-ClMzwcZVW|DBq3jT3HW;dcBl21Id~cYd&8 zs8yw0u;yd;n>_)atOAFt#jFAJ;GXah+7Zfcme8(! z+m^QM<^0sdJ6ktVKXXXxWfxvgR(J*CZe1aZG{93@-f~|`{XLx|;I3x0iOP_E;{l*u zY1%|o_Zi7UMZMsWakR_Knl#rpwl)DqK#GH1@FP0!nT@9W{XEK7$zzdLO=>yt+Zh26b6d(*7g^$+Smh!N=Oox>=8 zq(bB97GTzeVPy44|+-+T<(n!yXZC%fO zYfD?!#k5MggZ^6|3 z)Vwz`bG%$!?bND~rJ7+k39C^dX{xHBZwBis!ewbNzh;1OD`>14NSI&MNk+no<;cx% zE<AV}Y9J~b#V!qwh+w#YJ&E=pp5z?Dt5phRB(dYsL18K6b zy>s0@dUAN{di}}MyPrQluWdo3A0wSo%-d>52edd~o8^3AkxEZMC-cb~9{+pz9#+#H zU$Q2E-(smWkk&P@$W#f5C`e5N+VjApw`cAawfEhcQ3&n(PSK~8D#=S@(-EH;e`c(hx1DEPru-$Ws4 zUESEkU~YIOCXLcs^E;m{Zg@TKy?Y&KPeSVo0x)i<6fdJS-|YaS*bdYljKS12T!QYs zpHF==u({!yn76gly-W17gBUv06xg@Es);mM^b_@dtl2m(`I1Eer>n8|b5*szn?cQN z@47Tf5&)}!IB0u?VwuKB`ptreaMgp1YS%$hEoAAg#|$nv56hyI&)*aWd%WC1)-mIY`D3xuio(6}AH$LY?xiIqP~+<`yH$ zs>q^$zY~Xk*+Cg=u#cx(HTdN zHgJKb~F@^3FPriU8l3mv@H` zE|BR@jU{bA$5dv880%YC`(7xpD?3Jppa_Bk`J`$?ARLPj8duxyDc+IA$}o(8 zcZe>-nbsW{dxf^zJjYDG*c-2ocZ~<6g4-Ow<=6_-CwXO>FLRKrODba0foeYNK+a5A z*qHtW0OYl{p@UGB1WJ z+#O(K$-j!er7yC=OHQG2Em)2(7k>=fN+~ea!KK)z^rnu#meap{R81m8F{#GLvxJQV z{*((D&&e^MkRxAsX>pha8VhgrnDC}%(d9aG%^5{j9yb*)*QfNI6OzoR$ofw~P=zb8 zFhkYeM4mFAHy&6csMQV_7v;rZ>NXv2AchmB%9k(CRUz2}``j*&kZqgSwtBSAWcNvNG2G#KnZ6>HCIM?NS#f+kfMS z7e5*=z5Mj_{c@(0W3>wus|CIM_EKKXue?k;Ypeq}5QUy~-_0Js z{piO(_~>u{_?vHCEq&{sz1la$|MQ>y%`blT)lsA^2U9h*U3(Q0#if24PR_N2q)`Oi z_kG)YEM(2uqPI@@Sie0$AZBRNqUIwl&djfl8=&mx^8o`CT)J@;``h2T`or(symyUH zU+@3olZRit*s-iv;F^Bc82Gb5TF*%)f_U-pSx_*NG&wuvnUPB9*@h0i)#$*g) zEG$dC5DW?B!OAb8+yHk!sbRJrk6-`zBO~r#-Szv2m$&y6EW+NcH8E8-f!}hNz|8~) z&mrvl?k9!_7!+(?BSSzMwX3xGI7Y$GFlIGvY-mYcCpY2|gGkcB*fkyGoD?>``|jhe z`|B_6))pxi>$Z1|J3L4~&LhICCsI$9)IG0$c|!Wv%V+`PM}xkPGW#Gm8B0`X65ijt z1~nng&Zlizm*>x3%hDRD!0~W==bgu|U%tM(yGLH_H!Q9G#bR#*l&2Q?QHi6f=kw|6 zupF25yekb0rF)x2k9q^842DKA)$RVFU9DG-ju6?@p1!#6TbC%4vpCF?`<9|!#2Q_6 z_O9VNyE3~hv72_VHIfTqkQXodv*&lec+|fB?%{XdYrp&6lfQYk{rdB}^9GWw@!V}a zuGd#rASi4tKpmd-@Eb!+>Gw4Y2`t3bvb^==aCNXIa@yjso6^pEUxZDlCLIvUxdVo- zc32kZ8DotzfQ%xeG@6Mo?^!0gjkvY>)uV8c+qZDaR^1|*&`u^%@$Ak#Hl@^hQy(}mBI>>%$+DBOli1U zmec+A9QR`0;md`R1f-Ze052v=5nW0Q7!Dxhed$fZQJ&7{*DueX|LS)C;L(5f_rCY! z*t9FxFx7&rh&W@P(bBzG^!h~ZWnYrAnsR-j3_86w{VD)aJ+7^>AD4DKEZy{U_UnL^ zklp+yK35x(ltyW?hSwoM5j5fT)pC7Y40e0oS%ryla(RHKr%XNhqmjw6!gW<^UbCe< ztV`cdQ5UIEL%NU$k(H#`cJAA*{nj>$8gH%-H`fO<-R{p_wIlik24iFRyQrS_6tX$K z`%BcX4fXiid6Nj1Ma0-?ZJ|MhXe~W91B;o_Pj1qMibd&k>V^mp(l+JZdpsh)rZD=a z#VBfwn<%=0A}Vs)_PcEd@;FwiwuSf2D{Czrhi}6O`yR)V$QA=8&_tS0LAq;g(!8%_ zTnJ9D5)~0by}nGnku1=)Yv#cP@aBB(2NJpo3Pe=U&p}1JtAhdb#G3e(>uN=r3~Fqk zP<$VyW;ch#L^Q&!AGvs!g-zPN8-*=z<>EyNG$S-}hQgxOm_BYLlN?Ke z;~3*qR8Z#Zp$2>N6b7S>k5h!AselUW3Q)$S3?m@;@l{SXzbgmB3Etqih6)Jn5z5$6xg0!j&tC~;Ek zvTP3m;-6VAVrfD1)1wGVZF)oI8Z4ZqD`Ca9ldR|UK&?0~fM-}usb~b!VH>5r`H%|^ zUFSb4`hz2NYGOR87MvG}o_Ppm2w~~5v~jsG%Ia(B5<@s9I)PtlSE_6thQh2|Nw!f8 z1Vf#t)%3rF9T_;+CDgK3v_BwxPUu#0=>n*tu4xuX;YUuPem-S4$dYW)w8A2PSRK-w zURR7M;$@rLVb8v&v@;{Og10f$R91_f)M=Hi95U=eL>G_G*A3BKE?vUnNS@?#kWtbk z!Z{6Es#FW%OAJm3QTcHL?Sn5^U>1+-~62{Xa(y@U6gTtpLB#_R-LCt+Y%KR%#f68Dl zISB@~%y9Z!U!NZ1+~eX2;G!{xDB$v>F|zgJ5M^RvV1E?K8pS(X>A9cQwSDl7cmLMk z{?3nn@ScIc`1#X+`tz@zKfC|_*WWg?&%V69KCI^5r}iE-YKGo5YOUy*0%uH0aA}LF zowl>zNeBOis#lf>#h}`aY!K7#aBkgtYfa4*Xsv0Fj%OwyBsNvN!H$^ul@VOdyFGd$ zfAl+V|Nggbu2=m0`T3v!{Pwe#`?9VJ47!;%!@6YvkFMwn@QatHU)lcmzx$T%{eSw) z=c*De!Z^+*kpgx9`l6czw}!J`Kk;!SWIv$ZS9UZr#5cc&WQcX3%#2j?)&i#H_G zTdo|L$Yb0d7%Qnv*Bkj(@!|vByQ<-|pJ9tvFR}ndsAfJYwPYy>+%lRs85e0tL@h)M zOS75ukDP{QEz9;svb6lSfrMDxDs6@)wBEgTukSl35BuGAeFSlJeYm-~y1PH09yYJ` zXdonZSmxuYKEiA_4!4@}eqHf!+FOhMO1r9doh;L5FLivPHQ0GO^}bvk+R|)S>(&jX zXu=j-tPl@MVNqLyC|4w7L(5NshyKwQ+553j$fdRW`~KIrx1X%?{#%D{zrX&i_ul^L z)AP?izumf+^7^o@t*QxNrDwVQAx+xkx5P|L7h*j$H7>%o9JH$u{l)<9dk4{bSH;8W z{QOnFeRz2H$>T@u;h}G6bt!atjEs>&Lz3Bfaf-!3t@uv4^7?rY)Yu9&ObxIjGyz14 zW)oOitSOidJtEu1y-0`Q+!x_-T~uvd48VCas8UV*degjDYu|VGuXzO7@7%Oh6-$T7 z+~1oSwZSYA1_D~QyW5i%HHJ6M2f-HcA4Voq;>=b$DPKUVy?Lk1o?T$vvJ~KdL5;+RdV1R989pO~9(U_fE>vWTA+$4^^t& zAbOj&M)bW?L|wzYT^|9^vw_+bfO#d7*uM2;ZQ8x7n|aln<<_N{old7$_Zt_vzB*nV z57*bnZhAWR-nDPtLvVtSrZDp}td1IvRLoPxeg@hrhTyVV>;3JkZN zMv}K2sECL(?cKANX1-AncL7Nrw0A&*Qemd*?d$fgeczkV$li5b7Q_LDbZ;^Ks)=+d zhW>S7*Ih_IQ>>u~ZkZ%--u9(Y#P(fHyXXRgX%uHCH6;ARv>!PSKP8Jah0r8%#v(6g zvBl_KQlmWIyW_z#-L9+FweMPSh$YRK zQaA{2QD+|H2NQ7T!nho!2BcASo?oxff@6YKb9S)H0IIg-FnO&MU9KwY@>g6$Jn_h+ zOUyDYPJ4~WniZr!Lq5Nv)?%1GRMQMu!cW-v3^>Oixdfp!72%}T5P(#>&=ELc%-_E( zMGgGB#;NW}r+ke|Ow~P6JdWkWr=)|0b4Mn#P${L*idd77zg^VjA<4@;#W|+Uw!mX! zH5GAI)39EundG_2`Qow?O60I=k{0*Mr?{+E9(f$30&ea(R zW8jCy?o9k^5c@E)!LBWZo0UW(R?m`23`av2ij|s%%yV|bKnT+yT*XvkYUaMa*lJq! zuxJAA_e(c2gmoBmPE}$ZfAXe-TRZD5iASN-W@~SztJjZak zDCG?%LRF)f%{z5E*W$wHkZYa(EbUz)!CT2|A{8%XovFI~yVce{m%w|})_*>=o>gVx;0RS@vEzEH*#@Yc&f|_F}Tg^v@Nlq1HbMAG@ z*44n{Td<5ZFjl|ZR!J{po2V0b$BK1rh+5$tbPTzBmai@luE$%dCcx?x%ptM-#MoCG zVCpO>SVY<74$wiuxr3B-9j2uq{nhw{1(WBW6ZF&}SooWi-w_S;wg>5t$4-EZ71&HnPU`+xS+7te0@zx1_ezi#vZm%)Wvj*NR75IEEty(} z$s)(A>nCqLdGgL%pa15Ihx=t?+VObUxAVU5(tSjLb0+5^nheoc49QhGQ)Xu9G!r%lEEy1+4o1Tr(P$l} zecvB;k@c`1THE&CRl(Lo8Z7SX@CkBwfhil4oWSB%GVOlzqxrq5=%8_J(mQ|o^x?Bt z_aD7={LTkg-+X8Nx4(J#E}k4^8$NOy2Ac499g5h-XxpD&~cIP1vLvsov32ytWI6MHb_> z??IfSC1(0T213l^5R5qlBsxbi%l|l~WrJbwMq8SA4opDN4nm@FAENP;KTu3aAF5A1 zdfX5Vx~zvUUOfEz_3e5%9u|?MLF60nUN>p$;m{h7g5x4h`08Q*$rpFePP>SB_EIB2 zD)Q&oM=-&}1ft;`EEpI-^<@=5_!NhT&B4KTwY8D0b#T-E`u^lS;+7?Ag6RmU-koh( zWY1DM5wA<*?P+^BZSOpJv^1d@df8o)bFzD#WGp;94U`B+531B`5jk&LZc>a}t-J+c zpow#pEL(JxyMH+A-i5ZT?drHJ?aEAd)ziay+xNa3DH6Te=v_X^xE^PMiLi3QuR|4~ z?p-AdG#yKk$(?ZV6;Ap3i#S}i7OmerUOe{>I^aVnUU5zcnk_9b*6a6L@lctvfljt$S~xj6EZWbo%pWDql3`b@G_>JCpDrIjK3vzOw`%mTK+x0M+cVi^69hV z?E@fFEv>SVO#cYvZNRa59ObNi**^&S#$zGwufQwVwyJze~E5ojh{xei^19BcR3zb)XL!F@o=lsn9`_}k3S~~Khn}N{*Ro+v^1&J7w}Tm z_y}qhT{eG98M0i}+!CBCPBS8cgC$&6GG?l*$q$Z%MJ-g>Va>XJXBE9AIQ zn5CA5uB>$=vN$jFD3Bz|3u~ICGP$+yYh5c_I+ebB5+Y}Zd-*^IHA}ZU;neh6}0Oa}kORQ}SHTF2PN49v_uUBvpF!R>{_!t=_UosoyVHW@a6ABuKy=sGOh50stHQKzu-I-TO|`eS0G>EARXbcQs&+n| z)uQFOH;5s`zhySS(g&}miA0{l=q>~`l||S@*W^XH#D zkJf!=;*AN+K(CeX)Vr2~#ZiUqvrd@z>H^SB+uGK)YPWS+Pj`2(U%l$*?rn$?zRfK6 zRcjw6eyd~?iUwXGsz}`FdDZ~%yqg6md+nk|z;E>Y1q1IheI7d!=6n0nvSA*n-Rl|A zRS(NLwpj=@jjI_GyB_Y&+LdNfUBL|q_8R*j9y}+GK*D~!UeaLbs!F9FN%F|Ga{7j> z-IG$7{L2Uo2X8>WGcsUh(X}NKuoY))iPQc0+5Qp+A+N4hTrbe(>?l55Io>$+Oev&mX!8EaYx5w#eGL zCU_7m!q%vM%?r)j=TW@hxiC9Dx%_okf(?9heI;gFx24IGC95ONHr2iB)@|GSuDW%v z6OCGj8S5eqk&erIkCj`?)F-o1;Bdg^U!F3vlD>pR`Vj{0e#mQ8g;Yw#t6g^v=Ijk3 zyP;WT&s&qOecScW7W!3~(kg05K5k}np55ho;UvuKc>?%h3KMH0`?eof`OZgAuEe&z zFS0C6*2YCdgw2m2N~Am**#smS(MTp#bZ`9$gX-b>_?MqN|KyA3qP7SL2=r@@uO1%{ zDR-k9%-(+Ia9HJE{`|$O-q%HXPj_???iE7#RMgDqxAh4Ldh(G$*+{CHiFNfWS$kJIG|_Io=WR5(2o{bb3n>YDC3!H9 zM9cE8sdW)57%0|AiCa*hYU?8E%PQgSv|F9J!NA*q{0dNl3`z?w%HW^`8_W8wdD~bv z68ol%a86Ctl0_s9K<+dkoroCVrKxUR%=7Tk0uMofRLy%EI_^g^K{eAH?}#T{LZf|2 zCVk>Masv{B!kR@yEiRkcyKTD~w5v6770_LAzxBJ*2HGleSXvWGlSZ_>(>9}_`g?jk zAccxFqj@tq*uPm`S{)zENQ(6wOLtrpHdc+JKz`!B7{f7Sb}$*|L`*9jssNu>^gX1h z6>Qgj>P4!;_q6Ueq z?IAl&jP)YMkX^|v7j%xik`8$)AuBR6ixbTE ze%JC6%t@FM*AiLKny@A(%mI-D;ZrRu<_w!KLl#M8mI#w=Wx0=y<*2vhyyNp6dJ^GL zsCO=LWw?eUD}o!lH5ppY4}Bvw8Bso`^5IGhVFs@^e~$6tH_CJTV;L8+daI6Qn&erS z2|u4#Fp3&s+EYMcnj&gyi05SGY^X7YIk;{4*Ar91t6LmGg26Z{{{s86=o#hB(|^ME zF{_V$8dVfQn1@LQWQkMBu*_sQnMB(h_XQxwCM3sCQcX$?W_7}B5J*ET*(LbS{-R*C z04)|Fh!s(+IHz3V$CKslG5=6}~Gt}kBIIDL&$erdaf^=FT&ol~~ zMp#ZaIUN$G=VcvQfTXg8=l+Gd-f;SI{x&^be$fp)eR_b-Ma^BJe60=Z7sYAjg~J$4 z=)vsA$7Az<7zVryVrvsh`_n`PO&7{)fN! z{cnHs@wWB9`Nfxi^*6uy^7EH{&v4K7uDMmB%TC?G=5c!B?9ZYr^{k&4~6F__c{M-T| zxh3e!D&U?Kt1^_dc#Aa=6&W_paH0VWW)godXl70!KqsBIbtpTG^z%zzSwayp@e{@uR~*2(QHP1h-J(ZL_>XKY_UE#LP^sn+fR!l0Hr`9E1mHw!jWc_sF*Q zO|`4;-MXRo9_hE@bjY$dDY;d~G6SHX5+E3-h8fmSKFspJ8Mh7ffJKHcY$W*s2~!m` zl9nLGTzkOJWn=Ryz-W@?>`zG%2&nGhWg^{a&UF%ZxDx_saQxiQ+oxZ?{Kli@$3Og# zrmARdx{uWlrAOC$H)8*j%V>5!?ayD|zdCPwx8D2p&Gqw_55nFWnot^>klOX^m2u_B zwV(8B*Xxfze)6w>{o=Go(&3UQz@a3MBT!Z2aA<=XVCofZOooKWdQc5Q>8g!rO-P=* zb&LBxqkRFbHQBY3^h+De%wMrA3q{~1Y{b>EiO3@K`!;H)p@^o4Ski{#4vaf<6V1tF zMMk2D_~}Zg4U*cB%rF>{+ZtoRZI!rdnri2V^Z9&MU|r>KSRXw)Jib{C*zUKz@8|Po zFv%7G!4C~d(a@UL5nEg|>%UBaV3}PoBxt;i9)ce?#vec$4h6TAOnuxR(p^mC5 z1gEWcwY4p+G1Bz){yOJBxp{xM-@y9A6UI6I#L8Lgmsp+nL>md+_eFenqdTr&6FxX%Khcl*V6M?v4IfZQ{WG2%j z{Tfz);#F*_cG~sT!*=SrcO`hjF6T~o_dQ-MeCvAk%b#Pl)3C_UrhLgn`9jTD1zy3y z((ySR@c)~Q{aA6e6ED{di;FX|jKeWI9JO<-fv9st#d?yJyds<^x*T4EbPRICsS<+t z$VB5Tm9seg@VVZ$FbYdD{}lc75+?EFu9mF5SO{2`N*Ms<+E}TMrG)vGv$5ATCY;Ud0L!C8~?1Zcv?F~ zr_tbAC1y)Qp9N^SF2f8mdpryzS92g#kg@X0F4Xzg6W9Vw?5%gy94hc1Y7kC4?LTwF zA??!Oa1Eem;f8mp?XMvdWHN`fUX#RZcF{w$7xs%%w@cv9fNZ=f2~QYv(rF}fK{~AA zLdz?ZUDwj{qCT-+QqxLFl)S>l<_b+i9;9Zrhl`2KFBpF&mpN$261O-;awH1AlMT6y z1NFL|J9vG4{iE-H>-YZlH$Qyu>gkuK|IZ))^)G+@^zOw2$+aC0t7zB0D~N5|!~l`) zwD;b(eS;y&);xB}KO|^8V<&Mq9(3EcZA%P9>@1B;3Nk;JZV_RG+KnDjD7vaGayVQ8 z*7x1>5D{ewLFq;{`@whL|BrwF>)&|y@Y%D|Kl!uY{NmFWtsUDUx_3ZD8W*qN0EwQ) zW2V{_3g3EeL*)>68Tje9pFQUMeY(^o+@ikE;0gB(_3PXo^Z^XS@j>q5)rA!qN zG!ayb!eSV`o1fjXt?%91VLe>0W_I59RhH#y?dN?zZ8Y^J=XRmgW4OtnfW~R;CM8TGWeC?e_ zK7lDNC0W8@&mPD$-{=b)$zz*Lxmd1(33w2!(lk0{!_0QoO|f_Fel9XX^e`MwCk$)x z6MKW-7OW$ytb(`EXW%-HI&3AF*(-gV#AM{b$n4ZAfz>e9?iwZ{>4f{|+p z=&<4aFNmj^MU6>#R%^tvED!e&cdzbF5B<;o;#ZF;f9Hqqi*Eg#%omXbsg9!lG>Kz< zFhI!bP?&0aH`gXPkUn{j52cZwV;;91VumZ-+b#}{mGyG=H=PgM5;t0 zy>em#XlmNkFG~d}FbXw$rTLw@eXGHsY7h~2?>}IX4Xj!*SHngURI`58*AEYr^Lmi0!{PeoXjr%NqTTlMZU*hC z$yq<`H=_2gzG0(XePMRRLS*CByd z-C*7T!$Nls>Ms0 zFH2f4j5~4|=}ypZ>`2nj3AHkGuzXsU8%(&CItZ=2W&$n}zF6^SEJj|>0OZkwj2tX> z3Pa0mPRCe1CkecZR$O{k6(3_Ga0;A3W}h__+Ltzm_Z!hvl-gEB0}RYsOLIu}RCTRr zYD{7Dln@C=lOd;nD)Thqp@zMNe;To4UZjc)i!zL!Ji@%*KrL2yVGdrKfn2H(ED!5j z>U@&$l+8qn!`BaZ;j|1^IfEP&QmX!fc%d=9W2&Wu*u{$J#79!z6AQW+Coa}BDe;BX z6C9iFmJ3??KHU})7Ei#>3Is&uq7N6JnqBi7HWDNRV@PE+qluWWN)$tlkI7g`rZwcw zB8rNQ=>ye1b0~9hA>>K%1k{Sx-5Mev4x5%{mUE5*6YiB_rt;R`=dc2qevAAm2a(7G zZNf_G&-g%bX4TADRXmyEDcFbkz7Wbl!%hCA-1J z2Q!Jxn!p6Zn#vK5#2o64wNS3rZc1r8flFzJD48QS7|1L&k3rT+u{x<432n8uX<|cpGc<|8gl*CZgX@fq<(lng_=wb~i;O|xs9h|RVcwt`NxESL z7Z1thVC_1LG;DB(#O8~2#W0-Q^%~s6YON;;VZ3Sz3UR3~HYrKHafa*h_WD{v=5PO5 zd_!C$kCG9diJ%ZnUKjc3TkrkukG}nbZ@+guw!ix1*&qMQpM3twi|xEGZCRy3 zpt_r7qJe%cQmyyC_kG_~mGdAhdpd(8_O8n+>tQ{gH}$^J0aS^ImJ6)407R{z1e_59 zKw+}B!_`&qx}UcYMgRp!c7W8s^SdAa=fC&Cd+)4&^XctB{ujUc;_2Pta4Q247GB7!}>qfr7%}SE_WOYPQTuesm zV~O6hH9rnU07Ma)JF@7S;SVXVTiRCWuYTN%ZrYCaQlg{CbVQ zIbmp^Ei2odyIT{y`cG7KhxtL;CW5TU7{F2DNPxD?)-eX3>XUxSQ`lzn%7P2c`gSr? zv#t;K4{yKo=;r$H{MoIC#{nW9D+U)1dZS(;BGOgOIwP}HKn#-JxVBEv6)DN3H|IqC ze15QgygICh^}OvH?fS5YU^|_=n!s|U4fLxp$f#K%0I0@4WK_qvo`VWiVFM^iY3=1b z{^XbUUw>=;=G*HJ-d~8nG+lG@j`f+6!g~;04P5M1G+ts$NyV`kI1-og0sD!e|Ng_3XI?5W7g{1b! zh>{zn4>gO{hvAclHcl+4HOXY7)8^8+G#bxvc^sav8v!FdzXT#9DI36Ee#>tlA+R)V z=hN#KukLT}M8K=-fAcqAaA|-0JMW6^nwcOgHaWao5}k~MMDW(5!_A|^^tC1z)XcX1o9|qi>A(Bz)!C$p*f-mRqrwxaw4#-6iSoDPmeanjlh6OV{2>_Tg=Q9MiHf%C%+ueg;ttS`+5O2 z<$9t#BTRVO^Cm#YnZgZkcvg$e1RNS8a}n9_yaNfw=xq=U{!$bG&JX)`?zh5qX@^CQ z>w3L5RXd%#cI~d&!VVsU-ea#d@f(h$2|SJvXy|8Dgfe&O2_xwD&a_qm0*UC-;)Rq= zng;-;(MF&xlI!Kyp&H2r(p9})FC4(I5irwY1eyfF%4;{gpum`=&&~HGJP#{EL4)<~ z3nP11xH?OCiwL^1qS3{dz2_YK#4OY!yK3Y|{f|h?O;HoJWr3M>#Q0|mnfO<6V_{Sj zdbP7A`3rdS#&g29NC(ebTn(~NT4NI~P0m4oi*+L65M&z6%zOQU^yJ!}`8i6N@|Y8{ z0#Q7JoX&%!y0-?jt6JPp)iFZRd4?6FTrzL$uqaF;5VgO)4a&w=o$^wblN$#oX8bEF zfa|49afR+oJi8*mFu%)%7>Jgb>C7VYi2=Qt!t^8N;a1#25h4$3_{m{b%qzFX}iGvcZNU69NYR*YbHw2*7AVEkv0w?Mfm#SmZ1 zi_mM1mfopCy&-`i-4sOqHVNVMbOM>MOPAm_6a^7Bjh0yx%Ti1WUs{!ZHVqL)7vq_e ztfo{SbKl`&4k^WDOSFDf~>69%osiZw3%veiA8EO(y!(?{TDitT06h_Bl z<+@aN6vT7tlG>C+s%S=1RW~|HA7=gaFH2YhLwZc}Nj&%0MRXl<8z1sljr&Z9B8O$V z^NQqOGaQ%_9HkGr6s)fV2jQe4aMT@oQNk)iovboPYz4ZEHJsiz{QaaqEOg9uaKV)y z&B3P<&0imRNsd=kqNf&bnp&-&RS`q29LLigUajUnel^l>sMPqZsK`7;0>;4C%%#mk zo#q2nmLD1Zm8ArtO?Jf`-kg(t(+Y95GX>RaO6Piq+eN4OtR2~X-hjD;kq(=N#W9kVf1s53~nT^*o60(yfPg%J)lzKMXi=kG9 zsSU}_p2`Z@e(R4V2N=sbev^`@uTN3fWVzEa;zGHm5$4cf!|mi}7yo4MN)e0vh4&eP z?%TQVj~*X?_xm6J!S8s&SGCT|r+o1}yWnHcg z`?l?;odCpZzC1*0+OZt?_kQmifB(ntzxUSi7r%J@Km75}UcPuZuB-05c@x(r5c66w z=fn-tbP+{nph=$&5t2P1d^)YcP3br z2Bf}ZGxe~c(!XFu-iI!LaH_1e{7JD^%l#;kvC~(WS_F%rsU6n#(MRvTdU0#J$si(W zX^wo8N93g;#r}vC`sDtKk0wt}3H>0Zx1ys^ygyywl^6l-30P`MQ&VK8aF!H`u(;Ai zr;MDEjUkGlYv1p-CTvUV`+mH>GLh|kwyyC-z%&l&Anp%cdROhc=QJ~10SQ%Was6=* zf0rvXpx7%zye8z_PkLIf4y&|H`~A7EOIxmw+B>>Y;peQQZH~_(w*xY00gYzH)(D_? z1w30#*uJZQT-pLr%IB~2+3Sb*o~-Xbksp1q?uu8Z{`#c%yY0IN-vpv(9SqVCB}jnn z=zg-bM^~$8kROcA@6yWcm)a7y3kn_jkS#8T{{nblXiG z1_MH9wj@yXvl_M4v}!+_>UK-_@G5CZ^WAj!j4pJgs%lu5 zb~u%-~n!{dXwnY$mWh{M-fDIyfq2Gv}fMgpom z`uUledg14;@NAn6W?B(~g}?PYMlG3%up4X?K8(oRJEBgG%;iH%dTFqS&Cl&xc!dNf ztFSw#IZ_9igO6>7$#eS`6@a1>RP0cLQPALNM>Y{*5^l>O*d+7w{> zI3-qk%*$*_qF9pNIo#%uLcg({UoVJ-boo6yENi8aYQ6vb-XWsjGINM`x8>6!VAVg4zm;XqQ2 zQ3#UJhQF9;PTuISkZq*=5_W2gr4P((hfVrGtzrDujBAdT<-PUPnpllJB~X~n+2rz} z)3O&jMZ2Cs=KUKr&QRIJuSB6si%S42JH@4ilx-yf%nl+49~&R3&qMCxtFvZChd3Li zd5LoMcS~P}k^=+5YI-vH)CkjOuYFp?_dSZWtIZpav+WHt=V{YI?$7#_1mYk*IIQmr+|Cz0A;Ccz1& zFhDQ4meRBBZtNnlclVAV)pMLi8>1!BPXbEuv6ATal(C^c;lX(L0ZyJb420 z`IpaMzdU>71A-!cQZ}+nk%9@vkbie*0s%j}%8@P4J)97mLDfZ-;tj163bG9+ayOuq zr~(6m0_p|u!_3C@bP;RSt*>5ImX}#nFal<B-} zyWF`C-83&$yugSh&CjUOGAlq0*s8dL|x-fcT2D4WgyLuJt`y%8(mPKF*=4N zRdSi_eY?F|u8xOw*?NE2wpG|D5Spp`q88;SgNl`lL(Nw6RtTn721LLnss>exkfM~Q zxAy#Q|KLgc))V>B<7Inf&vyOtPG3IQu51(&K!6Sr=&4HsKwB3v8avH1E@b1r>kMZu z&t$I_7nVwnbdVd@xXPavCo=)9D~LueYNc0 z+G7JE(cF^HSFl5YgF|AKP}bHCjXbW(bY$tU!}S=z+=Ku?ddK}-9w#PNBqt0#12rF+ zfXlkv-JPF5f7$oVU|&6b@zvAUFR$*7S2ykLn?L*67hKlweC?6;tr%6os*NBM7KOTT zZ7X2f?P`(lef;(ZUwizs&z^trm-q^FG8Qm*u(JHk87`P~`@A)2H%l7#vF6-`=KQ`Pfn7m;;Y*2Ob!V52vm zG*r9>cn?3}fr7QIi^LTLqp6tyCJ;#yxcA=GBQ%jIHxfRSY>RLQDNAc0q`7yBD6L4B z?;IqKL-MwZy({A6KWMS>Ahd2dGI)O6+q&`Lv^&@@O`5EYTn>lBA`2B}dsh{zs`ZM` zK{f-&F=U|m-O9q=BRtIe%q(nu1CUG3%lxntBTArJTlg1b~G-Aua%x$(*#ZurxH^F}2ERrd$F_Cx*>r66KdCSwteD zXkrFiDSGo_$_&q}UK6}@s7Vl5*CIsZGEHv^wcT%Kgg8g6Bf?7u#S$YjYf!T!q0{qS zY6SSs zJ7U!25|%&2{M-WoQZJt8;F{VJF&x9B2|!YOrdbA zGLzFdBSz2n4Hd}8R!BaS@0eWwibvM@0uH&wfO14Ot#k^-@1(K{ zs^{TN6CWA7oR%STOAx;>B9q~{D8qY&v-Y}>DX}yxY0UK!-!h>)VP6d|^C>0$%iMp} zkPc4+WI2C4gBcCPI4V<<@2k{vLET*5ftau*=p=a_SUwEH=WWE4Ih6}vI94x*7ype9 z1vU1?2vsQjE6dgi%1VtAcT6f%|As|lpcu!p#ER6XCIA~#axtWpS&rZGlZBR(SQDjU zK2jPnYu^~($mIql%Y_-xh)^EZse<`e2?e=uGqFKgKz;tAQ1`d~L}-68*cmH|v8F~XYz1#oy}#PHtMBZDmF@FA@&iyRK;ZQD*~n1Oz5iU6c7-Ovv0Kl{UP|HnW6 z+T$Dk%b&dXAO7c`-@Uv)uC4d(2IF_Qp=;M2N;-Ctal(z3b$Kxg(YP>BtsCsnmf!sR z>A!jB<`4g)Z~XA($N%+7mEZF@Uhbd(4AhZ{_I5u;$-Zg0P{BAVC#;|)ua5GftuQXl z_E>|NIpmhFFS}+2FN_pk@nIVGy`Rs$ESBjSBL^BSUdo}FKjF7DzBU8Aw94O0n>a{H zgObJ#Qq`!oM?;*}yulD`SM`2%mU{^nJ3Iknn)mxSn9A5a3!EH3w`jk2fBT@j9@Ylh zvb1HD^Lg8Q+&COw(oEyx51Wt^rdXC{Mz2~6Vip_u0*k^DFAOC8ARYu1azCF9*4hGC z@1{^`g2sLC3+T~l92H}T)-$07&{Kf~EG^OEMoG`NN^3^wt|lg}5$NO>ukH22_Ui5B zyN~$YwSDlGe12`exz*dVcP__USN74B$cC32KEK`1UDTwTv4QY{LK9&YegK{$3pKMm zzXgjUy`dCV)F&XO7(C42c|I|8Gmj|!lMC1u9=Kc|ni{lQ*S>Y@u&(G`x88dbA6i$_ zzN`1clV)7pkB1jFu^#AH+9 z77Ssk=8e$&y)N3mD~U%3`Mqzy|J@JXd3e|!U9V!?_70$0c?K~|b{TNd_wT)Tt!97u z*)5s~q+54ZKvfcrV$p37$k@yPY0|xwK0QgOYDx_i1)&Owiyf>rX?{9e#JV?dREtDd zFygM>{lJ|y`lhDcOrgyc9HUymBsKuzNouArRWyO;Hke~tygpi$g1+yq$$8t?wON2~ z^Q&{!%v9HP^%qr_Nw;px$gis%8Z}!7(jrOWNZGrs!bVs_SE}K>o9_3mwMJaG)y(X;wia;=R8>S8 zqb-J+FPdrBxRE@-G?_r%bZm|{6bRV>bXAE&U&bZw`OMU8HvrUbN_1e`yPwBZSj$i* zeS>3oRM4pB=##j_@lvaz_AE?MwXV`+73m5v3dRALb$GfuU0<3_ysq9G$G*I~WdfKx zl);9~@hvxW+`ptd9~?Q#8W6(rIvtD5d_?1huDCyIx9EdFw;;_}A_%ydnRc&%ri&f) zTa-&`K?Tx-M^y_lP(y|15w@k%A0ZB>XN8>d0j|qX!`}6*o@CcXX)><(h&ZOgtqfv{ z>e!$=6~j+igWC7b*oB!Ansu<|mAXPp+s~L4xzjoLeo)-ZWdvO1fx_CIFt3BnP|qgL zR$Ohw?I7tphlY%@e0cd-v()D~4LY=B`sXG88RN`|Bc=#52&clM(7WP1AqFExS7b|K zf}zEg(D7pCd^+iXhZ;%PSe7JMelwhPs9se?#kNPiB01+=rBW+7Le@%Zgn>qgZWY1$ zR5W@ATc~d>&_syi87ZUEr;JnMQyJ!^K8zBT@`e@nSv1m!3wAP>l<(4Fi-| zBc~W-zcgrS#pU{hDnczPJ*Hz71Rzr&HZ(JY7Yk>jRE?nEeQ8mpiBo@ywPI*} zJ|l3Y2Co?MnBb$ddN%M-*(qn22FJ^J<@;hJ6`_newOYSiFHEACH3S@*Hr^G>G+R1G z#v{%1V)8Rg`b^4DSW3(3{dVzQMCg^+>|UYf%ghEqi(dsvp0STmOVuMG|%ABEI zA`?NK)G1SL(}K*&{pl41;pLy-`r5@WGoV`_!bY|J zaC%r9f9HoE{TF}qy&rx3=HB>cKmYPy{rgXU`OD|J>j6Bj3pBa_vmy$K#VS;S!Jy1K z@*-q5Jc;WtcioPUuGhnQ_xct+TWePVlo^cKMt&e~t~!8dZxjaJWLXc=THnr|kBCYx z(tx%sTi3(&;lKEgzx!YO?t8~8{*%9W_K*MB&+lJu$HUrnhZ!kNNSf;IO;()I2|13S zBo5HqIhT+2thVZcM#^9R_I>ZyPp+?T9zEPW zJlsBf`l~Z&6NnZiW#^M=Q`tZ~WYwBy+aHPbUkh$C6tD z;DyX{`qrA5`5lW4+(9v})bJQJMI_IO&=r9IBl`yhmew}xl10_wJN5n&^Er}ER6`sF>o^Ok&k;CByvcWuAA!^@L?e1#v}$PvaPyDnc{%fEkN z&rc9(x_QbsI`om*Rd-5Tv^I0bKu8I$96k7IZ*7E3=O&ZWQjr6zcm5;aj z2baMmRmk#4gNOQMM)^`nA44>-ef9G8+4GmZ?;`yCi)UXxeQ`V?0Z z0Lk8M;r_$-Z=m@1U%WP17yxC`#CnJ6(wdn!AhhnaW8~gVnh3V`6WN& zDOiMF3Crn^f1!5;MPplqV4jYbHs{1D7cB{VL~WNFJH02wD(X?`}=x5~V%O0&F8*p^iQqW9L?U|bR&h^3(lUG>E_FQlqkzF zX3f94&v&i@`dWnOY9>X15NVVMZwjg^-pHtwFqs)dGLyIy#v>%M?!Lf95mtr30UTZ@5VZl> z@wpNQ`FcyOAEuP6QyMa+%&{6%x~?2th1Hd(p8+c0J54;7pwuSSKFJpotcGDFKvn02 zB61A-E&R(u+T?Gg`BU(LnNJ~Q5Pd?b%3;bNjc#$puh^ zQdnZ-uz=X^NGbWpZA=D+`O{+?qgp0bRYV#f>w)zcv&=c>$1w6QNEk>D7vC~7W@Faz zqcq2mZE8!QZcPy+)N~#{BDUgWmAFL3xj-!bHdl?!U|9d;$l3Y$Q=a*i6x|y#tR)!I zC>yKS1sa^c$|Gz&ufN7#wgm&Ie((vOSeDsh0==$>b)zj=K1 zU;l&e|HI#ThmHT;zj^vU{_!ui+tXo@U3dB?L(jc($*=YdTIq>QCzwj4d(71hxf;Q} z@5|E8x2J#gr=Ps@-jm<|yB|IK^7ii8t7TobzMcCn(w=nJZ!4NK zN?b{4-Z;N`q?)KFd8c?fm4poQP^C2qICr;DZMm5HKrTQZ-@FdQ^BKzptMC`rlzem z4@cLfSq3~XLTzcJ0eeS7BhC11$E(eLeb8?{lJ~FpgGb!2udpziJ}(ufFUL z1`4!CgE0sjMSBNKL_9H{!nIIX< zPJ_^Hj*nixy8D|?zB(M2BlYio^WFdI55M>RyH{V_J-t7xP*gHIZ?TaYr-~p(PqnAl zFp5|cZ|z~O`orM>HH%0-jGYaiyICCii;+qk)-(Fi23fv%_WFx2pYMGq`PmoGo<4oP zuE(3l*N4NQwI*n0`ttSb$B!O;@$%tc|MWM1^gAEFb93nX9;X0j%TFnp!eAnRRVhRW zU$?l#2JpT(4%K6ysVcA`6jd+upm{)iF>p%vNF*=qF0^ zg4pJ0Y30!nz4*F{fWm!?6aQ*n!$q2T+rFsC1I~MIf_>bMn!eA>%ulmIO(_w+xeO&M z9sGcBxK_)pJ|p~8Ea+)s>(+axffB7MmL|&@_aJk#uG*sjEII>thFjG<(XE-Kaa?Y0 zW9lE%t}07|Qq3GmRbfE)N<(1l3fK8O;T2h6#$7hZCITfKzxqyj`r6I(UWrBF*V@4%}jTA@bJM(=R+6>J@ z#pKMVm`4_(|V9Ajikw21aq0&NS#dROv$j6xz665I=+2t5x48hqz z=56Px-a{oSW==~P35b|{X~+PYiD8YhryBZYh61_J^ItQ!3nB^jg7$E@~IhLIJLZXni$xD-xhV=?>P`@ zjG>;H)Bs`5gXc_;QeI%_#Wdf9=nFPdpWw*9zhS(yGeSONn0ozLzWz@8@WXHY(T_j= z-iJ4zzTE%s|I=Up+rR$e<%`oISV4&^M5)&MZmGSRq{KyTb&I0^TxnIo;ktE!&7y!+Sq<7^hIPm}{V4%s~ODNt1PL%W8&w-}|`cuK{>idKlrxnq ziUWo%A>)K{ED2sdpnMgQE#&U$V2EQAawP_J)}*Eh%W)=&2vla-pYUSm`PQFiSbwHuS6!B5<#(;IZ2zX_jp1KGq(gA@0RPz@#Cb)Ry?^!}WI7reu zp562HX1`kO>o@$t4G(U$NDwxAd*O$V<>#+Dg^zh~5m9PVCF~z=HW7M{~ zX$Yx+lzW5ULnxjVX|gt`?Y5hUXec=-P%FxUi@+jH26ek+N`Q>29J;L8KK<&|r(b;K z)BW_*FP}YsaX21tZmti_7PM(Yfo-p53;#TFf6L*upioMZ8r3 zn+W0~GzgoCHOkUxCNLH1LJ^8@Eieb|fop5BqCvq0Mw*&5*_=^{z}UnDq{yzjSB?3B z`_`uGr+rb3(&)DtG(wu}y{F$N4HQw^_idvHt5+JhG;U_@m&0)+imP5m0lEC$teY*P z!B#+%rFTyc>^KF3ib(HW(4dwUk-Qo(VB0!r8w^Bia#-5B5{7Nt&Z^ti3I1v`$F$5^g%+9tSe9np3zDJGmbH6i60A&z z7N_*r$&k7Sw^3@!xx_6U8@=$K6tbBSR8_5FNl&kiVlJOiRqF-P4F}IyBv@T8oz@yb z5YmK$#Btv7$fZxSP7q>zIsf1Av&DYX%iF{>nWHL)RJzM#auu*!dTZN#i>#}VYva-= zp1eiQwm8DrDu|`XT0_fXC_md!6Jh)m8T16xx2OQP2vka}BO*wDn<|j{ngnH}4DiN+ z$AXQ=MrtY}E?0f2ZP)DH7t^t#DNa26d15uSMD7$+a?<+Ulm{ZS_QW0QIB7kN6`|6l zK@qe}PPOD!hc#M$mG*)VCb?X1QAhmRXNy;}?~AaWJgy=l?(kAk)(q0+_R` zoH%fO3#m&Z-H`K5oF7qTWy$GgGmAS+ENEq^c3DHFeEf+6K2l9k+7tK2rS?8fnhB528R09XTxwaBOD@2Hl2zclrH}suaRWfz(@;aR-uCD z!pkX>HqC~Wl?yS4G7s08@&GcE5}3&G=uyc}PI^_#QNcnEGi6yIgOR|hfz{ugZ+mT5 zs%}8l1&UsXYsU3?%{YCQ(*XRRSp}R}Tv z3y;kzPwNSfD%%>8LXt^G8gpTt8jPkc0pe6aUNplL* zDoH$0Zjx=X$ejD6xp`oQ;It=amMD?SF(+FmwV$=Z#ZiBl`zt|FLBwISkZAn8&frh5 z%z4cbb=;vjnbnv{KssS(eOi(H2xn&Onuf<2cSA@KCeG%GdFB6u5@3;ni=WM39BIPe ze#V7rarr;}@BZEgPp*IS{Pf@alb`(SzxwR;tMk(2kaweN?=Z7HQaRooA5k2K;CPzJ z`^o{=76H(tMeUOXo@n0>S68j^ba!9rSZ4h~OvLC{E|`}L1Whjv=S<2VtsPcr&Gvoo zz4z`#UGTtt5n0!V^Y-ya@BSbD;rIUYZ$En8`G5OozxpTt;#b&o73#hN>cNxldy?FW zM-1>5KOoHe5?Q7~v`0H@s9p-08a|Le|Eo{ldVKuR55M)!Uw!r2XJ7pN|K!J4$K|Jg z`Kza2KE=aMQWgSc-8%PWU8IR_I~I~uRki3Tmf%7nJI0_wxXKo`h)jxlxoVo`P51sN zP|WM&*nE+}xh+~8;icD3xjM^i=K%ba#^CVYr^HK_f+M6WEwloF7Rt^VjP2_DGdXmH zo3kbdlsaf3ZZ(~D5`+ny6HWmcu|(N>R^Y>(7#X(>1Vyk~#5lGbKr@12pQFx)J<9U4 zp;%-}%qwyPd)L-vU1i^PSed3l@#^K>dRX3j|DD6}(6@d*@77p-wY-g?EQ^};UCTPe zn+5_&AJwn^^L#>f7zz#a+bkTdbnEx8&L9p=)cXBtzh0MiuA?)rs2wjly4i;-pDaasVvU5nmPp;2xP6Iv z2QdJCyDkvH6_Qhf@CJ}^>|!eO4Ek#2suUU=(zS&K;j6p-i?8lKUFEP~S=*ttK3Wl^9`WyHdO-y+$%N6cZ??>haFF`cCpFhFKFawojhE`0R_XR1IdIeevw8ubv-| z$48GJt?OYCZ#%|p>Mwoow-2YsH`kwh`RdVO{evHV{kTHAMgUMwW7-iLz&uyT0tw8) zprF|nZ=yH_^7X)N+t;=I&WDfBd;j&b`}MFoo)NMC;j3&gXjJR2&5g!;#X0P$mmf7Y zRr7LE*M}rLR5e*Biq@JmIi1fiG}mwuZ)dl9+fAVFww<*J1=!UKoy;r_YPIQPWbe9o zhq(zB$Y!SEXW!iw{lbU$B?Pa(EM-+!OszAmML-Ox9_SJ*VaZy!Mvz7aWZ$vEyME|ENc)3^lqw9 zv!#(_YqAKOM(n+a`31e42Aw2s1h`>DOtw){D$+VkE%{*q)}Xo`G!}fo9dbEm|9?qY z^8@Y#73iC`P9c^Bi*GrKVeHK0E6CrT+yJnQQAcfN#GtjgsS|yPBB-32rN9w9N^61r z(?K{HS={(;WfL+57!pYQ%#WpKcVdtp%~vA&OBya>VZa>!oO!b=a zh0*~|YQWM5%Tfqjd?Ym@zfQoM(2ifHbf*HQsibRs3Q1hU{|(iT2rEQWCmiTH82CSUeGd-bsKoI;&sxtVPZ&uSuFZRecuRh z(|(dwmr~SgBiA?Sl7EiV*DIzT@=mLrQ*{*#g#`gVNzJg-g_nkvpi#P3dOnFO)zW2B zND_aIvbeGsZ`+;hsAT)bGgG9KMo(6fKd+?H2<4Cvk%T<>QG^~jhqPVGLsbDn$V^5) zxl|e!c#|uX{@ABKO=n=Mhrp>E8JpUaAfIG7z@$Xs`f@4x2-!GfXsJ9QhQy5;_GIhh z`H3U>;L;yD^yQ-v09&_mPwJkE=6UgvJhvM3rJETbUt_BPw4R&JHGY;+GE&YyAfNsS zV@e?LrZKVlYPOwfkb)u%6CJ^(zlMiSm1CUU73VR0;(20X_~ zoYoK6gyBennt5^H9%{s-X}ej+zha8CbH;h`!|2`H`nX&2Y>6sn|E)nA0Pkf&wuvG zuRgzC$pg?0Ug1Hb8VxY<(?+m3U?O9y%u+W%^z=}$Ko)~3*-{k?fD`*F@$V~>n?r+a z<%xrYFayPTA;U(8trt$DR%BO^K(ercC>P1SY(ZX>5bz1j?(*qx$8H8eX~QMZandY0 zjzvZ+jIl?yG!&e9k3qm|jMY%}R>c@3$d>O;C)t*<&5hb{8|=ozW`T#eO2(yfoc2$U z#E(RaQa2ZZD9w`~tu3bZ^7-p+?~k8cf9-3JzIuN9aKF0>sG*5~=)Iey)0PBTz*$*b zPw6h!`}bLNj4+E9?+Wiahx7dju=TJ?le6mGzTd3N0&b^m^7AcH=+_>}O3X`R@G4N*RZWN;-3)%lz9XwR zgZa@6*~l->UNTdy| zy0%69tawmwnxT<>-ya^%%gy0uUp#+wwf>#&er;X-hM7vOUobPqe#3Nr34_Va-WX8bW}zdp1dfBcqpeE#ZwJ*;uPje#PaN}H}mkx&8e!EfT!&3~&cIwg^W zcgJ(gGeDXEWD|gn?h1=80gAP??#HE@U#qybGt;_4rS zvm{Bb%hJ1Ifx((2gLeg?fYdDAj~D{5C}0`fh57%H8|LGEEkA46Vd98hr@EU$VA=bc#wy!-#=^?(xd~E2&IWM@tPc27sAB%pRDU3Z{Y$% zJHrVD3&=cfvALwD{-RLzpe(vsWF{4)d9&Mu+~9VxKTiPIy{y+@=KbRU!=57RYJ{y# zj>pBl(0Si?wH}uO`A8FL5@IHbnc+x|RpTo27=A^av(wESL_NX=Y)=(`94@t@vUq}j zi}k1+SU1~s-;DxW8rDVHkbNHg%c$EdB~^Z4a2DSIs^44$tjUF8)nj*t{y^ znPO8)Ei$TP)`(ALoBU@yaiZ@)g?6YA!uum!ZsA)>s5YHKjG5I(hLvR0x6YLY#6@PH z9*GO4$eM7dO6HO>uFiNS!{eb6tYW|f98~fvUmC_SX`m&^Y`RH$|_mmn-mlC0HAFDOi^)QICI8kzpcpO$ola}D5Fg4$c+ zJVG-hJtoDs^_%qipSEu+nJ}cZIrEezx?lVpWrDEES%7Kbm72*-#EG+{d{`DUJ-6U(d_JS~#HwsY0&?7A zI}3WGE#mpUbr-f2qe3FKO-nZB9+nJlrM z#W}U&oJpw0*lcu|+eYB5D#zntUAAq%JMTAF>p^(BJFU_r)ZR~*Q@i;&ukLrVxGxl%dhUr% ze8MVs>}sHTYC}(5nzV)1Y2A9~7sd~c{Al%sP#QqFSLlLoyeqHI_Ug{CuKTX%Q{Q?w zD%E^9lIEv+L+=eRHJIf&tOU4exh*n7zSOxuLNz{pad$fJp3p=nbm0B2*geUPZmR8M z=W~aeQfauq-(H{etJ~8rzI@T-AT$#&mRm%)kff1ljf-$;BIMedH0&E1v9uN7D$-iJ ze|Y%X&DFO)cp%bHm`0fET?$Gev$&&_w&PFe`hT|J03GjH72y*$`m zs#=ty<$kQ0?R!_#UAIOwTMURaSeEM|1H!%cWmy!kNIbgVNkBLCW^J45vUh?OjqS3! zz=@-3Ym2IyUm%;lvD_9LOm*)&z`l1bqGsrRs<*4EFNQ{VfUc^DLNJ6e1>rM8*C+-H zgE14ANnU_p7AIkoohMZ_gL%oSiQniw9IIn@_to)klBT9=r<3i?Xpm+QSwyami<@>g z+xNbA1ED}yKdcVYZ)c}STNa^kS2bcitdAeB?>=s;Sp!z#<3nq}7i#-?4`$}h+AFpF z;+#O%xL3jwvb(AXOueTb{(o%!+0$%Wavz5MGS}WUe8ZW~z4zR)Co~$3fdEBeyR*-UpOobqu1P6m6L9*EZ8t6uM-}%hv8>?#Xy)ylf z!&-G31@t}jRqfh)tz0?$GFPrl2)Hm;9SVVHo+{?WX^`g<6cpjA@RAjl?&qi)3>^rY zu|RY;cRe*#5&oEnSc$_$WGI6x+L6VrpWogYGLTAWBsYPS+~^l|kX=x#V!*g6N>s%G zmj-l3=QH$ilv=eyrbR^&4dTgwOmIHUi{xZC|w*w#Ds8{5azktx{tZ|ob&TYyvhWV zTvTHg^u+BDRbr3O=Ll483l_koIWWzcglczvkV4}qK{$Utbnan`s zXa*~W4FtDpkQxYf?IzkYZx|Gl7_``C^Xw>=J8z|-f8#d6p1vR+lv0NbPOV&~UTjs{ z-g^L#V9el3n_vXOw8QSf2|$h^^{%~f?H&KP&2)H~WOFp;zl;9`tEH-=R1WRAlm;Ne z(`_-d#UeY|CpQQkb44sVG@(PoxIx}C9rS#Eyd0hy5$i=wQE@MWlrf^VmxNAJ#W1=!vHo|HVvQS7yLXC`Hcgd;O<0Q! z%9Ve{Ws?0uMkomq%%!n)>LX|dEa}i)A4}eu_@>EnHhv0mbMXH62!vs$> zqEh3JV5gL0#6uf9c6oE|T06~bjv-P_4Rlr#8MSP$d{7GxrlXUTpl1EG%@t`k^IQKx zx3>{GrCGAZhjt}_w9CLGPhM%v)k$$E$8P-Hn_R;DytCBtXIhf}$4Asa21h8=nf*0f zUEDHbD5Z*>hS5|k>MN%KS6wBCVvS`_sdfa`X=U5I6A++v+#mWCOPd-GKdW+TK0=<}ZJId$a%9 z&z|1y55NBF-+cG+*^4h;fECIVRm!-f533?lqsX3nB$gV5mLp6^j6ir$RYHn`;SpL-Jd49!wCR(sK+hR$#;WXo|Yv(ON!VioM+ z8C%L+04_!cCkLmUaFfibPuW6rcA7OaYgAk7R^K$^09dJ7l;RX^#MH>!;HuOtIFroR z*1VAd1g3(altmZk1ft$iD5b!v#>e(fND_DJV0uhbcj}8Fur1`-icix%Ys56CK`wRg3oW1Pw{X?187m)K);^x z;#SVL^yIvp4D#|u_=Gp7gDkSl6#`V1S}i43#7-JgA=Wt1htQ{KMOxN_Z<8n~AeO1b zudnu3yD1O-aX>2O#Hro~LE3()YE?Tsw>#9y&*8xj@v9lTN);7eMUiKKP?(sQX{Mrs zF((eHG8CTYdiP{}c<0W@^_!3H-0qiWH}f#86}it5_SpAwx?DLyDO82N{QA|i7q3Cs zPt#XVpWogbR@?Q->FGF*r7*jK6ZTWaA!TG8SLCoi6k=YFfAs0|)j;2R?_SkOG~#Gs z)jhGCxmoqpB~~pA7DUsiN{1@K#I4+TCc?P3Cj}I=%*)9*{OU*dhOaKZygIB`qgKaa zqC_OFZ9)W0hKxm3J>`~6i!!TqkZ3rE!dV6vYXM5kOx90?#L~@}z_9)^L_jsRvBhEz zwd(bZG?K?Hr^(e@gW@2v((!B!VTin+Y1kLHn7OinK3vm^DtT)cRMmYIW-68_PTh%v zfF>T*3s1&f6eBpy_99}}1aeSfLe2!!^cHisZUdw&g1XcN)h^<~T*_F=YDG*`f&GE1 z$XvxLu@=JVYFMwB3&{Z@7{*d7ZVtKvM#e44&0eo>XC@to0xMFBsL4bi5R>{|1kqwW zB|v@CH|ut5Zj`7}A%WGA5ERxL_3tRm5=9^-*fo5%hK*HqU|x@9TEtPQc`HUACRRfU z#J1T(WPkdeI%W7T4R4H>Vrq_I5`QJ+WrRqJLMxO^<#5QARjee9gmg+CVi99#E*waCei%+~!H90obZFrzrED zGqPzaJ5_zA2}8Nj1H>D_mmS3AQfI*r{E1%!QFx*X9dA>6ys>2wIgQ?DJ;!# z??WKI6cp~lTg;ZL&@ou@7A4O#*xFhxK=Jj^`H7?WECHGFj0jv|~}HWXDpDVeCHrHViykNQnNwQCcy`#2Jz5 zRAExN1zc1UI3r_U9vN#K0V}cgB=c@Q?IhSRBedQ#6~CbaUb9$P>dz z+@GQv)O0l!b8W&-Nq=Xuri>7#9fsvXz4uzD4-xk&+Zi$lLTNFyzk{#R(Kwt`9o-sM zNg5~rg*oaq0}+~44R%hsj-STQld2ig3au1IorpSC&k2NBIj4n^^oK#!B`-KXxz1(N z`;zsFxC>Fe^=I0nm_=9@beDKyP#-WoQurAN&IdL#9*dSN-X}}a5v@W^$K|Pn!^Gwy z+YnPcn_BDnHVBq15zOh~)S+0ii&Xp2scM_-u5pc}qcfnZ3x#?%*%4xaM@<8al676H zb=quCh%xOCP>{IF2<_h9hb{04nW_@kL<(pbhB6dLUFJnBU(1ez`pFIy@ zH^2SYKR#!s|NaLr{^x)5CC{{G)I}}UR@{zA>a{fBiSVeRIA0*&ly)vR+v|7=~3)QZmOc z3)e|!qyoXT9kC>kw`zqAghUE66PYWnkyL6aQ#M<3UsbExu`q4M-X3Nrh?!gEcbgg1 z9b$7EDGsYeQ$h7a%TN>o+sh00D+~_EYIl)LlLE@s0SvlDok96=6NRZ$uf~HwN}Ln#zNoH13AJe4d`tw_6y^j4MVmpgeq z(SE8=Z*Vs1gVWW+bAEn3U+m{qDXU>1fE1;S1ZAi$qVsZ?tTdD|GlP{qI_FKz7$Qeo z0+Hq+Wf(87_7~T?US)?W;wx7xjWo#@A+0nN*eiRIVH3LN2T1 zc_mI*E@hsV^Y!q{A3u6H2mPtUoi8> zkI!V8t?OL05O83p-jXzu`#}V2{NrF$ZJ00)Q<2Ij91TnzkA$1*szj+S^<*r+^5ib` z;_Itvy;@b*eqx7RtdLxsrFJ7`o$1whz+z+ef#^`&P+Cf9peTispIue9vyTwp2;q=km_3?fLbG2PiO|%`|Cv{ zAd`0Ckw;XOMRh1c3AqM&_qUNzNJYFIQ5R!LbL^WX_Wbm|{0XYDXW}KzL{O|cBteBl zl|}2kR2C4xx>*m*WgN?(WmG7WEP`T(i`xcw6}{ary8{NM^{OcJ`sT3g7tSz)73qg? zKq*mW#aLKHSxLP`X+)D@B?aA2Ac0sKopuR_$L?-~RS*Ef>OZ=`=iwuefUMgRqVKt? zXsse5Lm8%N0eSuPrPhH>Dm5EoB^%UrFd0f839Zm}L#%0xr)<0s8^X`%4;z`*F? z+$R1EsSF{f-m0PtUg%Noh2{5&MIb0tDft4pFP6w8VP|^arc`RJTrn^Y#hL~=t&uR& z6{v>S6LWD88(x{_&ze~XISjIB_^LKKKf;h}tqJ-A(0k2X4d~$hS_eFwjEUt4HYkL5 z8128B)6)EC_duu(-2EwXIE`)sqA}X^E;5V~;R_#KbBnuicK&$hhsSDq+oyn(erY%w zjfK#8oUZa(q|0w6(mm^F!D1B74ak&{xPN}`SgwyDP|uk`O{2I`G~E8&K%%4Rr(2dD z5FzOR_j=*pIDAH(gHV4o2a{K1pi^IFLJ@`+084C^FaAcder?7^Hzp-eGuutYsf2*w+)msJtwM)cRVcpPomO#lRix+TAMShxd5607`4Il3mr~w z(l~i5OiEaCn=cb7qz~*R10$H~C^*sxjf|VQ#p)ylaE#~eXTrWAwGdhi&f$~u47#Va zdFEhx4Hm%6H~1S*DS+0dLfxL)23u&$Q1qRJNyQZ_PaQv+TqJ2t%f~4zjoc$2uqa0n z6?bZ4chhE~l5=WL3ndmxxP>wrE{kYS?;%o)sifuta@Z;I;a)}PP0`pUZBtUV2}4Sj zkDpu3pJ1&3C~4l&$cjF^6Puh!Q-}-!x&{nY7?qT5czwxo=lm2;=kZ)SinaBd+B6M- z=~48}%tAmav{^T@#L9$HaXxgj(Mfe89!0+G-?@E5Dwb4Ty=2kxzl6j`otf(I+ALh& z!X7ZFx4u(oZX*I{L(trm3u!~+!7#JAj6L@gK%}5W>-OwKs!qGbmn>+ThM=d9#-5LX z5>s$imuFZFV;SmFr7ms{yr3AVsxnsVO(oro!{7Z+zVW~M)*UYN4}S3MAOFGUG}rB_ z$UKuOF@{p0TB|^-{~Qs4b{6kOq6+KLrn)S%A{kh_Y*PSM@rzi8^{{&S`Lmz@H6G4E)DbbL?cCqJf zcRK?>c_1o;)j;d@aJF8ZZ^o1DupWo)YFLfD8hJhN;1O7mk^}`7 z!BS;w>%L*p{xWeoCPIBQLmKKsC_$(yws)6wGG))M6=POr-!?mq|qFRmE;n1{TJCl0`@fv*Kni zZ*KQ@H*|V7u2=HlfFruWp%%yg!AQt|O}- zMgWwV3Nchk1#JBc+&|*NB67MOfBC})A3fS$PWZu(zy9daox5k-@4kQkPrrP9ahQi; zG|^;uRN5Az5LBcLWfA$}tC!DSydmP-!~W^h7yHA!*>1M$%{UBYC|m}37Mrt|gp0U-!KlthMf%(b3&AiMsl(d?OYbm20P2;$Y9E!!VrGy&sI(pzz*pieH z$KD&#Eev3p>vlE#%KLZZi>v3i(|TAfbtz2MG7`C~iWMG(zfavPFSm4L(D9JI2~m( zSv1soUPl20vUa%;2oV<>G?O(!PnD#Q#Uq6ND+V^Jal0<_v`kB#7tewY2x%-X35U`g zq@^Qvkfs2`0_q?L5yPT#iTpvTDiw!Gn02XkaK4PIVY?kpHf1E;j71c*U!eCVeMuOgpjI=&6xmP)Fr+F-hoO+ymPLml!}$B4{ILcAO=oJDX$}9T z1E*kSEfoZeTB|-BD7}T9#11g`hvExr;`xg3+Fg}Nh510Kr!F}m=-0`&WUYN zKDWg!rK;h$1kf>cgqF!aJAzvnHIc!QPu@1Wku;xs$80sLky7ry5CsP70@0^I}{Dc#tWgjV)#nd=)<@k5{&&sgxuCh30*b z{MLL)0e4&A}H!LtL8&JZ7i8L=qi+?=*2TTP&CP`x{GWQ*q6hlZQ@y8tMZ{A?-vXHE_^ZBkUNg*9@hRC!!E8eNCPF^_?^YV>ChN zBD3V%!?9iA6|kczO3NZ|oQ`f?dMRl98W*T9Q(}Tp3yrTj#j8o7PGa9;gBBs`o=J36 zH4@#G+@^`Ze1Q{#S+&n5J)TI&UYqOjNRnG}=5O7m2~Yo_>k&9~>LFA6vzNOFH%S$M z!K$JeI!;mXV4c4Yg<}xKmw`frQX3)kdl8kg8ct46mgTTaGm8RNT*?>9r)(MdDj`Bh z5;x%@;$g*HWLcyx0wo0%ONT18)=IKIIVoHS`n!MSli&UB{Zi;3{M%>$@Sp!|IV>AS ztpaE%Gp$6Rtn%)I&H2gs@Qpj$bvap;?MNr< zvMD?k9+(S(T?+lkVdSW^oWc}_s(^Z1x+;2D>TZ@p#m!zWZl;%)`!~Dk^04eD9H#lO zQ~`!k#xe|pCo))Sn=7w0^!{{@dK%bm)UCAgNxo??=Ie4pPsDm-9Nv&zTNGoVm%JY>+LZ?NJyMntS_%cWJ$sHiDI=H zpt{U6c@n6#rGuz|i53-^0hD2=Rd&;Ix*fL#yX*a+R0=`W1Hs{EsJc`HO0d+(+{gro zYZVoY!!QnP*Uyub!X~mxkeP_AoHz)mi`W_4X_gn0Y!3C#>H7Wq>-|}I{(9Q&50);p zpO+iO$XGK@*5m2PYP%k%X*taGFjciihSb5DfN{{uLpjXy>f)9xnKVp=sr2Xu=_bRH zKqU^Q&mwk=_THVd&B^xXPv5AWb}`BK){0>E!m-x=!cQtWF!H_zL|B$(Rp>kK-+TA| zT8aMYzy0a|^v{3zSAON2|JiSU=gzwP(v$l?`TFW=ma!C548_BvUZG|jhiTEzzk2oJ zz9{UfnGJ{wH4#-+lkV`RXvwOyr5N65(Snc9R|e!A_{;(fG6$fqj=n#-T8gb!ai@ zU=YR827!p`R8LmrSKdFbUtYexUB-duTFGNKCXs6WYBkDe`4MhX5m}Xzy20f)j;{L` zs)eyk3$dyeLaa#BzphZ2p`t^aX5yhh)k^tG)OwhgYHdIzQg6(76lSQ12#9479#~aH zbR3F`dUQ059f+1H-f2`o1tQke6%fg7gW|_a>^WXZ(qwO17G~XyWiyuB!#q_~kye{c zt>1wGhRs;N6 z7%*LbI zHVTFama3&c`H*nVCK!m$j(}IG))6Z3eJEUM2Clgo4a+r8DL_urKH&>NH8QWYkvMQ? zbDO(}LxzW{Xoa#;ft139VGSZEhY^6?pgEIwWNKbbgg?`vN?-=k^j%v}C*8tyoJ|c7 zkUOj`Xp#!1OL}TBINclHn(lln6XEvzxLu6QZ>`;zA>J6n_Dz0AY>tHm)CkYQQ!-+Kf^8x& znGBVJjUyD2K;IPKpzi9ju*ATQMc5o#5B|N z&=Q(_x#C8t%=1Z|)(Csjv|q2sh)4v;B)4vGDGS|u*NPeF)6NjUnJNv3%YLdWdvJvO zI#q*atDF5vt)3S+?*xX3sBV+N&<&lH&9|j(# zG>Ga7r8APwTA61@@S`Cfe+m4Pq;M&4V;8K_`3(hH?2=w5|EeM3cbaB(oeJZc~M0YS>q4QO5{Ki}HdYh9v5ZPo=NVq}p2%ZL!?Fmk%GvpyLOf5? z-~6qQ{?4yFIveR9{@~d^{QaNoZ|BqXAa$_=8y4r0rK$*1)6lu}>Svmu*3u5DP-c>4 zih26K()ds@^8New0J?Z{L0WaG1Go&NqJ&C{v(5VA<;@TO_{+cc+n@Z(uU-G}-~8-+ zJyxr}9jcX%=n|&PIUc4Pz^0r{UB*tSFK7gh0-!jAiu)d^3ST_66f%p(73Ny&G9RSM z$aK0M&+l&To^H-hS7+;?3}Y3lRjNo8ndVwW4vQ>>p|q55QneNL7|W|93O`$ez!_0{e4;$rvwYP!5ROoyo|mx0T`1Gz74iOwch zd}QPhP=GrPZ?O}tT1mMS257`+&kn<8%W6$eDOblA+!GqSyJB4yDBbQ3B6@nd88_qY z^`TZJC?nuph;}sJXnIkV6gm_p!n`chGHn9zaqjAa^&-&P6enGBU3>WnAg9)Oo2(ty1k=vv8;u0#)#f zHDlH#{{DyO>+-Gl&VTm& z`eu@WS=CBf5i_I;m$F~<%dcO)e0@O!@AvbwXRi;3d3$=Y-mJ%QEM??U496NT-Q3=M z{p=a5tOf=ks#WR96FNOPp{6bfD!04ccC&qYJ^hEDJ^#(`ytiEs%d!l`8~k!-ohZ~Y z%*pq_ZM<)$*Z_yrpqS}b3Z8J~3eUi-%W}RNzW@ID55Ks6vs;E?SacZ-;!xCf3u_|| zH5|93RI27iFo=+$8TSC#H6ql`V{0l7L()+vGxVu#*Tx}aVyZ9`rqN-qGh5CO-s0I` z%+|{r6=aXF6SE)?i7boS#+b9CNEMN&&dG(Hk&^b|s}K<#rdn0&QcqXqWK&iZyF*=6 zEhb3>QdD5BT15&d#91gZIqW4K^T`T?Sj2F} zSdB$>j1)462<+Hzv~*|B0ZxnTfWuPInK=Ngdn&~4lUHXU0+FarbA?b49AV;gU>Zs( z9A!im%oy1Z$av#51C&h2cG@1|(^yG>Nf%k97A^y^g1yORw~MRJPC6D|55}$pvdlX! z3tjDNBK%OoolR%1fGi3YJE06{)L%%O?U>YmW}{^ykC7R-DuLDmSH)hcXm~ZjIphM1 zfiV;oQ56f&Nw}pQplSIg`Fjfg6z!kmb4)oWzgH&IHlyvqzYx3zNYZuF_F3~U5kGM= z)=6y#BB6pATD3A!VHyW68A(lSu866{k+8<&aaXv#)`S3wtAZMt#ueV84*|Ji29^_V zAHlDVj4d)47tryg?KklNjeEB7_dx+4Uce5H^$QG=8{WR`n!ie-H=LLQ2$UX*vw460 zoFc|Sae4TPLEXfth`?-nQtyU^rHF`6tYHvG+sHyEc8Dx9CmK&D*98=cd9?xcat+G4 zL}%R$m$F+oMC1iA4|_lu$95|>SHXr4P z>`ugR;lt!T_Zi_j#1rJq_;g|fSQ=?6+AAHDT4kZ9a ztcVXX`8d{Co9WDDLLX%!WE3f5EAd24aqC1O2dTjiO;Um{bMpC}dcErClNfqUT|ix( zwc)jAp*=p#Mhjx*ngnm9lWqgbkPLz$3Mu}-O*h7^+JnB=Y-*ks<%K+Yz-z3 zqePb<%)XA#K^0ay?b5t$|;t2t)QU*i(L zpB=r7IFMR}a#Dz>=&V&%Om|LJj~?HBc=!D7`N_#x2sq61?QXid+TTt$`>D>;GA&Cb zt;&ibs>`B>{q4s^F^+uy?%9Jo=MV0moUMn`&FXx`r<>tyJD#7cEHiHKVt5dd zy3~W0Ycek(25yB;)eby44>wckg6VS)EguAoxm#jWVKC8Huv(Y<+cMmR;$*JpyIC#| z_2qT_>ecS)#qH~>-C?N}7)Bm>prJ_QCLn;Qswh0qh!B0voNd{P-PNTsGY_=XDpjnm zU+dRxvY!bG0c6c9V_;c?Km$`%y}3CkaB{lYuE)bcEz`sld#LR2)j1OGh%IhghEheO ziZwd0V)XfQV|Vp1=t5k|IFjfxS1MR<#=2iDq!J5Zr8_zxrycMC%~CAYF(;8 zE%}nICZ2F^y6FOI^Qy84F%?y-EM|J90++XSx4XS}K0ds+d2lwqyg0nPo~Bt#DTT{a zRTdDD_0{#R z48u_9{+-k9W^=M#)uk$wnZ3=icu!;xb2#8~U2Q5{qOYj2>tQ;4!9hw1SD`{B<|R_kB;_QUf{`R3#EpFF)dhz!F>rX5sEDZ7Jw@$A)`HS#oiS8D1D9@wf{3bC2nv&uRkmUxFVkrZ8OI%H zS(dx&;a8rV|M1JJ%R?Q8qSaNf<4QIAh*Uh)$<(t~@rxYP z2J#|57pCN_YqlWvaG)NjWD)E{06H0Y99YNUW}3}B7=;guOtUU3ei(e{;(}zUSW$mU zy%DxiTvgfg1Z5~3szbRHD;h||P%Z-l#2^k$SQUp!h5;ipD}hxCRVj23Q5BIIF9!4i!HO030##y;_eJY2-xQYFo-dvEW``l1^J ze2cf?s&KlydmL%s-YXBU$ixBp%&;<+l%$<|{`M~$q*uivvQ*S6*1xqxi*}JCH^4Dx zvr7~6UTzwI>xl*oga*5K7>RfnVZbVj;Yk!|_VE!0q48-CZ(Fod>F*ai; z1UBCr*_)XB1#9ZcDu_+tX1nX#=fNQ|HG+L&&&KtGFF<~h3rIe^_Co}<+8jH64kciM z>FFkoRuq7=BW@#?@rWW0U6|(aJsNHJHk{$!r*)R_WrAC*;Ep37Fj%qijZZ#Wyt+aQ zlsLhRFgO=DD5*wHh!_Cz=S+%Cctxll0&PiKliEVV_83R3uY+ z<61&5GBE)}sJbyXy4XNQtPo6#oeRm~u;k|(xIc?z(Cj?@g zmT#C!SCa&uVTj~2$7~X51#DpO<<6QPkNf<3jYOU`wL%3!P39rC#hfZHBgY%n>z)~owDp1 zr{1zqGjgQ84Ex!n$i`%*MX0RT3Vr?NVw#rdlSrAL*sYxfiH-(Iq2UPb21~5~xD*hq z?hI5xeE;E{^Yb%7eRFyBm%sb&fBtLlesWrV|I>^A=kNdc;$pv94I-7Q9mF80YORV& z6deYA;(9DlY2usZapfCj?+h9XXtP<@D)a6B`4?Xv_VX|>8MI@+n}^PH*_72><=_9{ z(-$*e)rM+v&VPOPS!<4Z+3^P>zl7`_c!}xH!ag#=h-^o5>Wv# z)q1}PGxo2q1mGzLid=}Gm&YT(rT#c(hcGe8=V4vs=5EW=49g3F1r(-$a zj33;?_n&NchdXa}^Vb*i=Pz!aUff>Z?kiC#Jleq+Wl5VKsa_U;V2Zd5DN8~0w2kB~ zccswG0T5a(nsd8El)@T3r?AE1!(pD6x*ErEHB9roEQ)Mz>$t^>FHqc!Scj2CWm%RI zr;=mm+|^NPLuL|!EHeS)I4)J^!?InK)pj-Q=4cD+nu4MYyJlL-rNfZbVPE z>&<#SuFAkD!(gNJIFlv{@(_n(9u9m%AY!&GV9d<@ z)|2geftG^X{q!&X=x1fX_da@X?_~9@cg}wL^kS+yjH6bRQf~M2=U=_LyuL*#S2wrM zp1rCf+tcm18Hcj6c%=uC!tHUt%Ir3Q*_upBDMR*rH1#V0@gO3*!^G>=r!Q_c+gIQJ z_~FQ;YAKlk6A}yt|G5&kPu+cLK$t<6KN#Q>HV_XbA{KOE5idKGKChVZs_N|5A|tFyU@8K-o$5vbqQYTM ziT6w0&9Vpp5@1=X0;`cowTdo6b{e>V6sSnvaiZ8D%RsBKs9;$thcCpj4Pc#8n=?eD z0wGLQmMWHtZDwmI48pQl;L;*u9(01ICR&?ZN>pHaj)|BGk@aNi{30S)!W}^f+yZYN zZH)zmdhy_$MKo8BxFECYSEC$4C;U8BXVs0_Lsy2MHLn3 zBFa=FJQvvAQp%e1+5b3b9v8Q^RusWmB6dHPf=U`5c&;^EhBVSV0o-edL6-2grHM$ zZ_lt4L&%*9G|9pd(v9WD+kaBC>iwd4Y(DupmH4siN-ZbUG+5?WqLaiX_B%>yOURS*P?8*j}x*fVB>{y)9lM^F&11M=aq7;Va$BBbdK7!x5m zEI@nrl#KM*SW@;=&uW`Z8(7L@y3FJUjeADRS@-LQcw7^K5G6_ycWR&`S*+w+Lfdpp z8k+p#tpCxxYHq64@NRW^Jo8A7$dUlo%(G<*Xbr)nfd@cEWqZE9d+*_TyPoIy_2tcX-oO91 zzyIDR=fl5ycKhG_lOI2SezO^h)Cv`5DpnGz3ZnRm#$p*`%VtHZkqtN0D)S;DUL>d)w=6v!+#9JU z;LahBz1IlK0~tT{OEQ-3e>7VU_~A`k@L4dcVism4twW&|)7d!O*{(i$fZzP^?BcL| zeK~*jV)w<1%U4(XSul>{I1Z&S>@cR<;`k#N5n5&!Eh0#*l-Q9dbqHM2j$oxPD52IA zRR<>wm0Ax9QeCablkKp-JuI~rcDUxc5yDhdu|Vu-@H{P~guoQuhK~txc!`L}&iYi5 zx`<$knD2h7ye{kQxVt^L`p&#L3sHobsiF$mY*y>_u-_l%MWaoos%?qXN*+};>#qyd zLJUH!wUF)bfO=FY0tGWm)!l9VdOEBxr?b=5{qyyM^VP-8;pN42v#+ahD1}u}MdykI zI@LN%%P{b&&}uA7{MC!g*B93XET*#*9`uHDnu%5Ry*2(hIoX7%P>oE%!o}B6Kv8%P zjS0<7Bm$}RjEp0tg?XBnlaYSuqlcTZ><-g@(UaBcllLC{{MqZP+X+0~MK-T_ zTZgfPXjNr$hdJA^x$9-S9Z&#Opt3yJ4&Qt4>`%VDx|(EQNFL&MD{PHxx+yfcpN?X5 zr8aX`SVc==7Em1GFqWV&o#8_Z0fnKe1%8OWGksMvK$?ZB$K(!%7Y?DMP1P z*?K*LtaYp<&zb4$JHBU7#P^LT-bXDEs4a(DniCHY)w+l(Rzq=EtT@zqy`N_h@_KtV zT2UoYofgsP55u6s*5=w*fq|^)HWCj+vn60Ev9GOC92zEMYA9JRBg z+2ZL60u|=Er~+K5R)GR>URkQmh#9Dw!tUr3POj#zhINXK@%%}k=TxV@;;@cN%7sgu zEEThnZt*dYck6+=O?3OCC`@8yM=5Qd^FIL!X`_tUSA|THV9N?GByX32R|S?XIE$%E zu>n^JDCD$sD*{*c0e%(9vw>>c$sGqU9%QzCazuzQ3}VQ0Ky?R}EmD(?OT!25K1NUv zfSs3?r795?S(vyK9+*n(?P-T#9goCTO&7v5K<6?3x4=3xNu=SqLTgC83o1E%3E@u! zf@t1R_i|271k+sX@I^F3isrMX_uTnb84|KfEdrBM=-^0tJ(=(3Ung`4YeykCzD?0Z z!8B7S5~X!mEchh?v*BXIVukJXWl!%T{n3bshInzl={MGKRM zfc`PP=unK_^CBApPy&fY0df$cO6E}u#9(e8b;c$1Xt|D7+rO8bj*lofAw&en%LGI} zU&OsMRwg~`7*fNr&B4}46X>IgF4fNb$JYds)mTg8-(^TLrAA5XY2KNeQ_btwD zP~zAqw-V~}qAR&`vU&dW&F}yF&;N_R{^8$x{f+<6@BjGd}Mq58iq3&iy<0@0_fMVY40wk^$G`}}(T?D_4_UR=MtIvhYlDXX!N z6$A>atX3N?+O!v9kgA;pj~Od<>vxpJ;P04=3Op~*5wt^vLMkdt)e$-lrH*BqXBCv8 zP&4&TOfFnXS(ci78}hCIv^qW@;!;W#trZ|DAX%!Y4&%UO5Ya`13vW+W``tmMS}Apd zKx&yfgjtjepKR8J>1IFG*^ZA9qEf!iPNb5BMu|j($=cBxZ$b$SRPj?|t}eW#1ejSX zZkBp89bR2d=NrC%zJ7eRy1bshx;)(McH=ONLxG}-s>)Plu5}L`2fe=CzkGG&=jjYN zDu`f>2tvsqA|PR06=a36$TI{p>(Ex&V|Jz!3J=IcBX?ZVL;=KwM6|H{@<)#!o^SWl zbeLpbbh|F!cyf0f`LnOzyt%$T2tnla_3mH&@uv#;{>S$ooUY~vCtqG1t`GCizJ7Ia zaZ5vab#Zlhajn2+yBUWSm!TA^Y3SPsnj1!z&&2GJxk9K)Osq`innrF?pcvCrB(ltv zreXZEuU?&OhHt-nKFyO_Mv~$!J08vmM7=eQTSut%x@YB7)?B2__J;TG>d$tMQMkqeLxkkak#8z=F0c!f#c>$4DCR1*DaIfwT!@)5Ftf6cJ`e(kAj;7-lE_YP`q;uk zDmdH;+bp1z%a{Uztp2DV872L)FdoK-%(g|DjwpHHkwB5OI4Bm!avV6@5t1)`0;h!L z@hP>VU4dBv0~CxxvQ(|2RgJURCJ|jT2WIvr#T}6K5ipVZA#n;npE7woa;u%6Vly=` zx2Q^0TS4O}5e4(WR7M)AR>e{qSc;Pm_VvUqjM)0i`dP=soTDkz;{S3E_k` zrAm>&7Gk2!RSr~XpSvcup+ccD*UA`}OJOS<5zx-((vlgxrGWh}%yj2K*mWAwl$>P- zn-cBYm+Jm=?}E2IqVxq^eFwrJg6|gxF(^n%9a-aDKy2NVH2SHovN1-2&m_i(e_v8JoS!MZgcdU z8nbU47ewzT-55DtV)H;X+@BEtphMt_m`#L1S_mi{{BWZTP$d$fcE@9O$WWBIoyV-D zNpI~wCbd#G&696;2tLU%bt{Ypp6%*VsD^3(2< z0nNs_{Tg+5H60j!IdTXo2_`Lc%nVMh97oJuBRJAxj6M~2eS@O0UUAnJxJkOfaZ|_M z)acYA&GuQKc2_p>!w~YuEg)xo&mIY-=>#CZ8Tp%BRC~%1N!y}o8&Apr`Z2>7A!rvj z3SSFpP<)C>7=+3Nnn#pt8Ntj(!!}-zq4+L@vp0|y$UEV6aSx9vB=dEXr$#E3+Wq;LFJE5V-tJ~q zrBav*xR5N&e$a3~O_!Hf&tG5c4~KCa@83K9#)nVdeSG)Pz4P%;3eH!MU9Q;{(~gHf{rttI z;KO&$=Xo|cVugmbL_odHYfVh!D7g_hYzTpfQ6f3QdE7=_RaHIBV5;}l{JrVzMIFS%zAhsTJUYmvLQvES zRd)}V!9-jNkwPjw2j80FM$Z#%p%C%(>jdN)tQ0PlLv4i3g*QY3Y<3BH19cE??}q+4^jtE({s(+G4mEqX{sFn$EqzcnJtrg zo!^+TvvxpFpNNJH)Cf4bH2%9^!TPkuPL|c0sV^c7>BEiy0{7`xts`8ll4df>K*)wb+ zK2xUn1Re(gvRONkle90A=_5}>0(j&2*urVz9Pd)22M@VTi5+r}!E}Z(HC~1R&}if& zrj+O~TrFJH=#~qoDN`mIZIQ@B!l^t7;Wzcnn>tgvbk&y!T!To{sr+Rj>eb&ZF z-KKRzNiuU=@#N4$q(vjx@rsWNZj#{&3>FJ2nh+Vrj z*=7*)uhdAfg2|-0+`T%=Xt5sgUMyBjr{nJ?GOl0|+CE5^6b^L^AQN#A3a6trwTN=t z?E=YL+7iiqJsfaCBVOIyTS|wICxR2M5RijzhC@AduO+WiLSj#N2=D^4oR)eOfD%rr zV>Sz2o7ca^T4@>r_T=Y@enZu(OI7&m9e*MfKyY(ErWo4WAH=Gs>i7#k?cY$7ki0mt zYb=EhQ0_mtd++{T;`03E>-{tx7Frkl&ToDATOXZkq5s#v{_+q0-Dd;y zKw6gyl~R})%d&_FC9&WZI5a{UFh^i!h0L!uTCn@}5UK0a?Phyg=jm|R*F!DQh%tWa z@|H_Lim1Cx1z7eIGxMVV><@na;B@@o{H>4QT+Yvb{_JGCnx_LLYoS4`5VlbJ#-HJB zr2b%HW>S&eG(&K@9v(lu`|ka-$M-gm&o>Y6oUYfao5TF)UtK(Xb#-xjm}_M&<1h|P zP!SPPEP_S!;^OA{i;Fi`x2tiu|KR+C#~;3P@9gfq(~-w<98{I03Usp?@12eh&sX=h zKWh}HBaA!T-d$RiWJ7*W)IRE_3{wGhbKYwv^y_;97VKoi}s)F}n{CvB+ovv>Ws#*%G zsFJS6LWF6qO|ilrCkBiPvvr54Ra9XS$%ZlsDx!-h3o(J|AUY7AoNjM#r&=A#Tk6Jo zGmc|fmb%QM3MTS`=^*yAi4Jba`eXW(O-s81wQ^gM7FUIttHV%38cO7+9Sao|>=*fJ z+P}U!JU$=axqtfT&id8O^!3Z>>gK=$3TP<2JIL#cTL_3)yqr~%)a|H78@EvR6dDOo zaF&vXl6Tic1mBT6I;t`+&em2tj8N2SQxOf!(>#6iojbq${ykQ?otDK)g%wa$6BaTG{?QlXFnsI1yYJrHe*E~(7hk_Q9Oikd1YNDi)wpJ6CMr}C z5~ZcKc`Yj5ZQ5duOiZjI9Nd_O){=kcx|B+n2mJ8U7hL$sgVSZ6!!Vd&sp&Q^ zkq(z=BISf8B%RnPc^6341*$6Q$MDV0D7=7|R92!YI#$_i#_d>M-b^D#z)$qR+X4`Q zH4;}X$%s2|9ZjA!oWo#B_)c1?42Q4O*d$njY+EJnqX?Z+K(%G^#TwrFC>Kt}>w;@t4 z4C@s_*3-hXtplT}aSi*?*T!(z5NUqH5XHXUXZ@CpOY)uG;i*qkH(FHt}omvn#>R zT(mHcv2n&wBES`4L(M5spDx$22*rL_tabAuJl#~&M%a!k-g>pwiv_aLH1(BX-;Sz{ zD2@2RZ9)FjQ0O>4e$+*RDJ~A`#x}DD%Z)@~`6vnHeQZKFJGGX&B2-r@ncg{1R#2EM z2icA|klYFJ$^QcNVj+TT54Mxb`&vs>xuE}qs;)nzsJW?!D(B- z<2iLa7}L^VP6?y&0d*h6P~Uo`z6~EP5+!1wjgNbcpdEdhQYUSDhtA)D(KJm) z&$MyZh}AZB=?;s8v=cBa%wHeAq?ki;f7`JC3t!qVO8%L2rtW>b zI>ixzqPQX%e9*L+5e!zc1RPZu;Gi_;8vCDVnFD_S#EZzocOK8nbhzFXA|%8Av#A;Zru3z2!kN@na|Mh?V%m3Bi{Ko&~dUtqz zHICylPmE|56Gqp#InJng^Cwf~N?L$Yil|Q0Th6p^6^%%j=8l7q2g;dD?E)-}}}FAHVU>>R46VyNX{}PNJV9*4C-^~Y(n4I zqiAf?0^v|Kff7(N75VT6WmANM<(fchKF_g7@sp^F$}}k*q!d~gdVIQi=g#_j@0>lo zp8o9Xn?L*N;?3=Dy&Bi6QGlfi(r?tTOs?2SpuWeR$9e?{EsVXrOdtRO002ouK~!S3 zjeuxe1}iP-`qB5IeGia_a@fy9;mu}KMW@4T&l<);#M3;BNaUaRUT(3{PNguY*1E(Q zx3v0>k_ZY&t@EU19Ei$1ixw)Yvf2#OZc#xML7~lhB;asZByxN#)Z%FpP*qFep)lHt zKmgn-vD=|=o3dECoYh7VRjIKFM7cjIL^Kd7u;16ur~2yh@Xp=!gL|iszp=U5P0wEM z-&`LK2YLDWYMz%7T#F+5a|K5@(&NtjbcUUJGzs6xJ~HeYAYH499W6v!3l8lFW}27j z$-T|@KYFk#bagw=77PU<3y@U7f(Pd(3R02h7dK0lX_2p9U;p8cz8FjSpKKsr$AMfVr)6bqSLNr(eS7A+4IxLVnA4&t2k}0#R{Eo#zhLmY4^9vBK~3p6sI#z!WkZ9lQxDXl+-}RmH&J@2+NM(X)uU~bqoyhy;4#VK4N4%MTI3RO`C4Qz+ssW_&j-coA7wv^$xLp&ig zi)t7`-;H;+tKKM6rLw53SVdGV+SqF)=n2tOQ#pBP^YSh<61;%Bbo_!=JSAT z2l`y!hsAQNC`Z;7B_vP!o$T}`}16v-%!D&$aBU5g~9NJ4d145bi=3Rz-4 zhybzNI1eOy)_ot7@}x^Px-ygJ+%#pLNk*yR6sGk8vNw+}oB<6bvQ%$JP70to*NW`4*yMtAMnHw1rGeqDa;ZQ&P3}kdVGdxmFFT#$|7_f>Z&^9%M3*bLb zRHJQ~@`7F^#6#lo+EJ^;8q!iDo@IAT8TWBUYjnRTQbj=FB8JgGxOEMRYV6OaRCcT8 z2tJ2sbZh*l8Lf1b=ll&88T~m;c8A(EJ`es6hD4-vB% z-5WEIG}Rai!N#BQg#JUcEv8N@Htp2eW50%)Y*X}qZ_?&5*`QZGBcl_!|I~|JYO^3g z(>xkrEFIX?ew3tkX$lq9v1I`DjF`CcMkoX054W;*xIOQbr1l^}n$H{fX8F8EL%@K-@ID;=hmZmX0mHZKm3k}628t!Y{Hbxm>7Y3z6VcM+3 zHzd_d11FyZ1&;WFc zO6>>j_Zd5GH*E&o-VAP=qXLQ;NR6vIq~u}~j0&PeN+9N{a_9bC05_Lc%&bz$Ycvaj z1gYtASScQ1^bk-0%1+))32}o@xS`~|M+*l^Y{MRhyU&W^ru{f zxYSys=d2U0EorJnxXNcPORa~)o(cEPw(mcD=gGTwAD*ty*JU%7?PgW0e);P5ix-zK zFZcU-CN9>-Kt$$whSE5U0B(2tH*c=?`>724msqu@B8*?di~?4 zSI;kRwUpJkB4Ux+G#$nHT1D_=Y%;i>kYN~*joyJMAqKe{tMINN;p{qyVT^k4jkXScW0SV&b#x`YJRo54|GCYywHZ;cl@ z6kZlNQt@N?c0aQszHl6-3?Qaykw+)vuYcp=>8f1sru|Z@fPp0#yA+6^l(H&#aK2`` z59Z~?g{aI`K6`OF{^$!X@8rgh?L{P2g zXQv;3@IkHBc#286(4F(M1i_*EEo9?vfO^eDJsf6cdbL}A{Q1j)ap!EP3MzzZB?MJH zrY7j1tD`1W1!_2xRUxV(s3MCs>kwH)7tv)=frzR|T@AzClapnsm3*hHu--cvMJ-LP z`Bp9)YIQQ$RP;@^6A}9IFd6{s(K^I1Q8xJ5-T8t5OONsBIb(u|IffxoZyQU_7Rj6)90ghTDd!4erAoF2 zW;5ddO|DB}t$zBs0U;!OKDxPv9Z3olBGH8Pjzow+sv}3kTk_bkKiY*Vk$`{XxUAVR zAEe`a3XtRL42^~-eor5hvq!jlU3y8fCt+Dcpw?qr4D1kK?J!ge6G)dT63(m(Kny*> zp5K`o+xrqA{nkLu@m*}cYevV>eq($M^Os&rQRI9~ZMxw|hD7+`4FvDNMOhC@a8GPNMikvfTWi8sEwfeT%4 z1{cPsg#JEB{cd58U&&S}j2cH0Oe`DegP26B*5WKxe3C6WEh9(4mW)oVhFWYg6y(aN zToBu3+^NvH%$E8(>>!Ac-CH;Bm4fhFk_B%Ia$zyX8jjT4j5-Jv~2t@$@BCC02!MRf?voA+Ziq z&~}1297Ic}Ku1Rg2+R*2-+TAH2PY@%i_6_t&o6g}X|*o9o84df)}!C~wI}c28UFp3 z*Z<(3{`l$h>yvSiT1kYNEG8|rstA)Mg-TQ>4{K`mDMDPVg{nsZm{a_vigMxA3WDob zm$NK5%w=FZQ=8lU_ z`M>z{^VMkCJ&aU9<^eiRwAgUr!o>4j_q*L@MIS%D^U-?`-+g%JbSMMsP;@nx8F>2q z`m5&`uP%4fvVeIQN-4Z7GEFm=vRVxQUtC<@?rz7C@7+7Sd;0k7WP7$?u_T2s9)W-1xz~JTo(3tLvR0VRWk+2S~hqN9x16g=|&9& zVJIxByTkI?v*qjOw-4^F_JTK8HzhJ0nqmy}5E2gyat>vvOP%J!FpPzd66@YpzM?23 z-pa+-$5I-s!WR@3VCcX!&vLrrU;oC#dnc>wn`t-MxxF-fsrPjlAPd$*xqH49;wtj= z#U(IT(VstkT?&9gyf{QPCDI+PMjoPi8dXLMUuu_%ck zDsri)M%TYs4?J?df!|z7srzi)B`cOZ@~@x8|jdT8(K&R)z(_H zkd{J)xRl&!43S5`lOwfYlu5YVGLmfK+E~81WTC!dFaZoQu#(qDQk)A@{3z1_(wuZr zj?U?gU>qT0A6+PcGV&AIEj}?z1ZS^+*{X#GbVu6KHm}g0Nz$};aea8j8hc*;V>H@j zVxY50IAiIG#2nlE@G8mk=^|pF+Mre}I%Uj(Y#H)9yUey}J;0Ici&&xNvKkMD&PL)* zY7(3Bi;#mhR?qbdpO+MtTA5R@5{)sDMyn3o21%k=F1e7|5`ol`ZC#%PXz64zm!l({ zb;Qn~S#Yrf(?pA*L9-`NT-_;qzfI$}P?AdBTr|vtDgX(Jrz&WEb;_P+9$9giAac&d z2hnX=<{HIh8`HiG5<>tet-t^D$O}mXofh1t>&zCb;HKBU3y{#tsWTxsEiVgNxCbch z<6};3(&}8)3(GIeC^bW3AD7c4mm?yfKv^E$YvYfryA+{Za*a8LyqQau<8j_|4o919 z%uSPMWXdjPMf49*@`HU$JyOp4kPw(9W==$Zw{%|PFrFeS^ueE6{2i4cdbtj1j*(nw|Hn2@Q zRh@@n)ZP65{libc^WNG2?mv3+<*VJ#|LC(jC)+xU@h1n9q}Y!rAk5ReEYrz){N|HK zA3eVF_`%s`98?5#DP@?IUc9>f`qkz0H@CaPLWFTBM3{Gzk}#F^YNbjqUR>PX9`2rR zK78`<;hmH1W*mnii>lOVnyHLKDIj9P{nOQx2iu3IM@lEJ72{$u4$0UF|s!3REy zC-`21Z~EmOK%}IzVm`=jkrmUUv(1CE&3E2A|McbUkG{P6^wrI6t?TtTa9PBKpS@oh=`dN5mXs~fy<0qRk>KN8b=3WXOdtg<2){G z*?FO1-NeMMugy?FkflN~Y*xG;CO}u^&cm~-XV=p_6+#7=sqnx=%*2HVC{z?W&odXk zcfK79NwqW1GS5q0DuA<-)i}~L>+No?O3N%nx|lDuXknIGOJTNY`xylXg;p4g!^IS} zwv}8(rOMBq-oCiHfp~KRavta*jDuH-4T*tSS*i$&a<*}C1+AiXJku3J6)zr#&=VjM zjbiU%hUy{(`fDFOdiT!B&2E2ls8tuiH~c51&?g_iv;F9u)1Q2K^5d^w5-|_i9~Q~qPLzO+F;um$$XVV`Q5s@5DXS{f zz`c;kCV_}WWjD=I%hStA%I)s3KOAZmEUHzk?p_TKh=@=ag}i5~sjp(Z#%$42DhyJn zH!UrN2;SzB3$2DyMMS}lo;9#hZ@`EY9P-ITlAw`Es`#A5>#7wv(0u)UF4=Ddn(L#!T-6EnuVN$g8I5;5{ zplPX9mBwPjiwack(u55lS8p+D!(mLU;pY4I@b~JOjApPkQU*xHoiXu7v6h4mwqCEI z3yY`{mw`Zq4F?-T!edPheKLrNjD^UX83o5S`{BhI9IcR8So8?5gCg42Y=wIAMf1R+ zD85Z-8U;isOd{#)Dfz8B?<)AjmWcg3Rf0gQ3}?h8d=R$$>8r$MOyIv`6z}%0@slD9 zW4H>*;LWvGRVI?E%WMVmxE86Z8T5BHp*UU`b2@elRo#Ef0i<4waZu{ExQJp0tMf=a zC0?5yZ+1Q1j`Tf5VeSyZ`G~9p6ZtxWs18D<(7>(wLi5jTgc{BSbu%yy3kLF$xXaKF zB;lF|UUr;w#-61#gnG+ws>F6l!^DIq2r~Mq*8`3W7V5Qpr^#aqbyvy#O%d$d9d3z%BTj;Mgi?T7 zDtJDi?K#F$H4b#gK44}{j0hqS_H{pshy^rt!Xytw3TtMtb%l1j*318vNL~6We|D?F4@1L(Qq`q`6VGY#hWjVa2<-7mp z!NF!alLl|Gq^2Tj#udlmdxTBx<^xi1Rj46xdPJX4S=|ZUamgYL|0 zjH;tO#ajQOIHkS<%#SzYMSQtfWQ6gAN<<;XJ6ke|M%bj^B?}?#aIedm!%F~Q>$uS(A2TUI;FCvRGP*t z5ls@ee>dVU6!#F%Ro=9YJgEA3?7i!)J11?y=kL!qzII;%rchM z%V*dB=wE*NfBM~D{@?$#PyWv@Z*QKxI^C?7Wgb8oo+4|G#=K0^GEL`atB>A&{N&Ny z2j`m=)3VHm!=aRsd3<(#`1-}gi||uY@;B32k@BZeUJFD%gK9_w5E2T-{?bQxzV+zjr!Q{*=YDXl&TRD~5SpcI!ncP?e=t9?D#Cvzs9_gmNKAf)c<3+0#M2hLp@pRnTf&C(ut^ z8u>LICeVhklI0V1MlaezEU0z)-Y1VfetfpuPgl1~Ro{fS^_{`9Ko=~KTCso*%XBuD zyPL5rAlVeUKNLKFbA7u%fb^>uum0VSnCXLWy?_2Ue*MW;uP^`P^H<|)6VgL5Q_TR2 z5;!;WEw@a)UxM)-6J;4%ZS1WUl{0FE*b)e1;p>~jem~7pmjzW-7zARJp=c>!VxqDt zv?&+{9!nXRxbVO{FbZ2Xva2!+Em_$xPp-7gBPM}f-B#}?AyGKS1izuU&KO1NoCA(3 z%xt9_DMISDTm!RuB9>ztwG10kf)*Y$k5*|xltOFiJy3|5F&9TlgpqMIf{0k>A|+4v z5fZniYMmaehFS<=pz+uRH(^H=vAC+$8&y_SWp758m{iGjznmIuJvtXlA#}_f+o7?< z{zd4|68PIPXZ?21w zDSBuGv?Gu(02PWnXuFr&7bCs32v$RMEUZPKY6nhrnHLlq3KN%M)ZB4k0+?*m&dB3_ zfGA~I1M{pHQi(LqP%5@Wd93Jj#!-gQv@9EBS)x!;wDg15ge8Z zXyH-{4a6WtGQVILxiBB5Ws&A?xM7aOnZyvz+%98*tXuw>rUL~a^XVu}n*W_J#3w5N zV*7;15geK`d*n4U0qQ7luDVpMtc5Lm&I>G9OdlB_2v;j(E~a;UMlb#-45IrgetVN3gl=%nXR(qa!O)l3M5gC1k=<|DRT zvcQi%kPLdaJi+))bF7p9I;%msV;$~%*2D;Ni`)iA=Yz$XLLn{09X?5jPz>F5f#)=8 zu2tCZ6tpxp+Ob4v-Owz}k@uw{XNA}xh0ROJQyZdeatk%18<%IrCRYT3gBz)7Ipii+ zMgR~KiFXKJHJ+8hfz%K&MYAg!K1gzGQ-*K3(;9LYGj;&c=+mi`#y2i#M_;8va>Wj` zZ{fw5gPYS+X=+d)KPTUCc{3mhcUlgHOG(n) zesoMRMPqhnx!{B-_TB`r(}!WG;#SmJ<%Cvl8YxX&Q`U%Wha(wJkx4d7={?f48Paw( zZ^BC*@m%$|&U32!z}@o&(z>4i_!7E-<~@9^qMuzN(x%&Hl>vBw#3$n*?>=P zP}vDUwd;a3`_Ar65EOkB{{>E>8_}9PnU{d-A|LW6!{o`k=)p{s8 z-yT+l3qfjyEN}=(xf^c}Cz~Y}ZVsR=Rq5F2t7ww|B*44|{pioW{)Z3G{;R+C!GH1Bzw!6~$NfAX3KuH} z&OqV9jCo#AmpiBH4?ceK{-Znh?raC5WnK>RQn+k3o2%XO+1Jm%etor{7AS@?@W6GJ zI#*IH;{e68=da(qzC7EOZ+-CYw?BUT@a}0LEc2|;)i@9_l~S0OrLKnZ&i#|ecUI@? z!dj>OVNtcZc8;<9BueP;Fyp%5fbP`MI?& z0CSm<0Ir`Kwa6FuwcI zz2E)I-@3UyJiR`wH|yF;`-SI2CM{tBoRduFMUf0Y3jvD#L5}DL1@C#_k|0&ix8o;| z?`;R3mjx7k>kAhu*3JP0BIZ&?#)@euD1`^M7QiS(OhRDhfrwO=Dq2AT2BeU(#dVd4 zshZj(GAWBnN$yx7+&DChLJ}J=CbwD*Sd&LmymP#tszjg-AT$Fvi$`4)s1Sp!+q$Ze zv``7DSKFJ{pfWYYAUK z*@&h}7?=y&^F#aFqXRF7pn!-9yupjBAM%8`gocK7TI9jPG#$}95ak=O9vDXY3y?fS zU8*DamRAOH_8YFu%ZJwZ-_9 zMCwv4Kp(MF5J;J@9vR9qN!U&+eGtX3G-&OVAjB}Brp-NKMJaMI5j0Eeo}uO5_AWv? zvEl19fPUmKwB7~I`3Yxc(M2j(V#YX7vHZ!N-r)>u5YBH2(-dt*j6KwMG=snh)$5*H z2k|4IW(*TJ(#a*piijiJ!8^!!Ydo~~88S|yE$bslq^XNqm3X%+;ixtDGoBIvsX1pU zQ1-a+ZO|MV}^3Y7Jo% zOeM5+6;FrDFAk!gV5o(F4n6KJP*o0P|wR=I;iZ**737$~L_qmO86(7A;no18aT=l*d+ zzoCN2=i3Z6g(Yd4nV_2UimQ?g4LIam9qH zIP{Oazr4oGcWR6#C~2#X$DGTGwwAH4YqZKm%dzFoh3gfw7qMMLIVGD!=Kyw`al{yS z`%`Vdf9vA6Z{myTe+@OFBFF$)5ZPHLXQhF3U~Qzi0>ftb#xH&H`A)(0&JKukD z|7`W&{oAkp>3{fw%22p0^I?55aut~?#46mlZSx&tTTS)BJFV3BKefj-3R3XE2hs8L zelzWdGh-hFs?Gjgqqs;*btXl%!e0>Hh~ z)jM}L_fLibo%RPym&o%xxi>-$>ALi>_lb*S-lGc|^V-1-i84_HCF_Yclv22Gp#lX& zQ7b0FyvQueTtzCXdc!ynsdxBv(PE|ovO3xfErgMIEM+Jt9&J#y0Lfbt0ncz@;{Hp| zZ9s?Dfyl7yg769u3t?X|iLMsCGnU`{@Xj|MpZxgQ`G5HG`pcKMAX=?Q2x{nPB4(mm ztJ^B$2Y3R9YDDWifRa&w+^^Gd9042-3l(Cb+nd9@)YFp<6W!h(04=3dtqGD%1`tXv z_5>Iz0%eaXo8lKDhMmWTvdFTVFbuiWER7s_JPgU|W>ZV=fw^S9RR=V6&wAGP!Q17+0gh5oS?xdwHc>r0n(~v5N=fm{w zz3s1k@?cL!vxbxn)x;iYkv%bDQJl+hdIx=lXE(E%B z!c+?I^yTH{?oc70K7BnDj7-1$@!h}o+rRXW{^gG@_seR%vV)VFRaV^|utrlj1hk21 zIrB2dIfL+Fs8h;B1X2dgBHIl}Q6VMfLR5&E zK@cVurRUeTuWt`3V4@kg*v)Ig_ujvEI+hugm0-w^tR*Xq{g@i_s%LiwbWNpV&WZaU zUK^Dn$in^g#^1ILO;L!BK-S*?pspUTiD)D`cL0hwn~D&cEUBmKI=us46A(SE1g@LR z)^)*VqO6bM;oyu9xOpOjFN6kX5yqV2#JuHsRZ<-aF|i1|KMs?KhxJ0+pmT%+eSnB9 z36X}rohzxRvhRohAW@09rx6Xcx*n;uqVPDdqaDD5P>%VPBNS))RYB47z(QJq3tO2M zsHpY%@OtrpIWZJ}x)PRJYh`6-FW^R`wK}+0#kAB49l5MmgEbL`f=dK|ycvaK5gP=< zx@o9WPeY`Th_HE>U2MYs>^zEi%giEb%@YiCm~L$7*{Q}Y5zDNAg^4wkoPxk=0a}gF znc5@L_yTceP@F>p?W7Z$iyC1XdqC3|j@vZr*riR^=;o|S3azdhO-dBNG*zf=BN-$J zaS3gc*?{Eonz?P(=J1GoJc-Jn zZGaiuh{tx1X?_hk_qx4^7)QuL{E`%&bJ=@P>fv4nNtz##60HMkx)*uJ41lU<=Cy}vql67CR}vA+Q@=^>358Z7 zU>_1iHzgO*8_Q2h1sPG4x7OW(cHRZ*r(hkg#EQU=?Ngv|->8Zw9mzo(M(3i$Bb1Im zL5`=foU7;5DYle|;1rU|`Jkj^lOO|lc2Vh=u(<%X7`uer$374#!M3B z+aMh(G+o+rLb$F$Amk+b6^x9Dm|5EKW|g|-PLLKX5_%WMp99D;%{}`e;3{>?mVDJh z-fc2XJjr!qgcmZZ+K7biEk)ob1*{ottCk}QiYR30E!QW(kcg<0QMrj^+)u-mlko4F zfeT^eFi6SX=w7`jk{e`yTxTzXWZDb`GzRa;J{is3$s?(UEB#pOw^V?$LZ`HxWx|?y zifEXZFuuX&A+nk1+5}1)*ZD3XlHYT{F;oU5#^2yUFn7;7vDay^QA32a$)&5Ku)Mtn z)i482pSZMJkDmS7>qw90hw*9LFj=0Ce)#q<25LGhMa%vsBBg8`oQNkxm$*#J^2sM3 z?QX6w-&_vE0Fq8kAdh^8uacWQHZOw{tg6+3Igx^wS|2=l^yGtws}ajQy?S-|=Hhx0 zVdDM%@X@H7=sWM6{Nd+U|HHrevlH+}uEBw%nrdY}k7HT7bZuF~=RTRRMv=f5<{d(I!4ngCIOy zhR8S!`|I8B{mY+xaDV%|zxnv5&u_o@(Pwuz+i9A#PItDe4?V3EOn~cIg^$BqVuAw0jFd6t&i?}^6>OWU*G)6*HPqQ<#3K7p!y_Vg2wK_f9?00jm!hYZjWcBRqG+%*6UX_TJ zgah%$s!>%@kZ!l@p$z-oB4b^j48u6y+#b%>!`+AH*RQV?7??z4nHFmnX{;bB1DFfj z?JTToVmPq%eIQY-)l(`x+^CGnf+?Z#9jeFCGX#fuB3oI6E^c;*c`0DP&l0xXChOkK ziN{)1LwJ#6%M3H0HS`5}_I(uyRRV!YM2NisK^7TFOv=RbvfMje{iSa{y1N}-U+s5u zXqI3M^3v(L9?EtY?`~IhTJwZyo=>*xfw+*20}+*C2a5HS3gP+X<<0Fx)2Gj05$Ss5 zU;DEbQ;Woer&;(ek2c;olPlENXzxb&<(btTDBPH_4IM zP>GU@8if})odd6Qo<0&KZnirpz$H{3HI$KF1p-6(;=6pSMvQ~qJrh{@w#Xu9lMwIM zM<9rWu{bdoF?r^lC2K@ZAGbKHmyQ7u6$VfgssNrqVZVY>h#3+;HjQk|!XOE6RbBB> zATUSY^vFJO2d+dMeR~c4#N)C`DEy$Ou#lwZ zOOb3HwH;erS*>A=h?$8(5aMwtDqhN-*vgpFveaT{T?u0;);&T{LEh+=nY!QxJQG5# z3}EzaXyJ$)nmYwddCr*N)_q=pS_QBXw(JY8&?wpeWo1}bd%Td zj!hV(xQ=p16FnJQ>nByJm+ya(t(g%sxI z&3Yi$^pqwbCZGZ9c&Wp#xRX&R0)e7JaZbDaumxJskRUt6Ne)ND;;KM%#k< z0FWmkXGp;B;y(Z^qchD|#tXXVgj;FZA+foDqu^Se;mh%42sHVz$680jjG#aZfv5vE z--PQ%gcxiUP13_iq-(>D&iZ!vR38>q%g{w#OSogspuJK#Xt z@u++7zGNZOK98nKV_+dn6dJ$1T;$s$KxVs=^V_J5dt+)8s}s?LPE)xw*!puiSh0$Z z$%qJEVSz&0J$!-`Vk2AFvRqA7c*%!8WY#WmZ^Mb5zPpUneixk-)&Z*SG*^P{@n*t8m)Z8jtP)T#09Fzv) ziIr{kq>U^!O_ndr5Rdw|rhy#Qxar9_X483%n{x6=yhIG>FZ_j9r+JRlTd%z_5Cau}m(~a^tYH{C zXc0(;2?VYp>v2`MeD<@?BVSpg!oBBCE38tCE99nka+bbiwuMKt%AE&y-hc9Fvu2s= z>sMDVUtaC!naA-kP3I@8zw_Il{KkiOzPg(KyFd8(%j;#kUC)Q56kZiR+}z46u@z5n zpdTB{k$n{2KG530H5E=ahxH053@rQo;o`=sHKi0&UK#6=a%(K7UeW{}doe`7E$P}4 z>5NS*3sgnNGQN2F=70V-U;H2b&UgOaZ+-B8dw#Qfb9r~WdFR3QqsR9io}CoJJTFsS z3S+xom0@^wwR`&F;>E?)ey&73tcolaX%Z-y3%I;|eR0_DKX`oiJ0HFC{^NV6o7LfP zxSFQI#7t7FGLwP?OnkZ-9-ghvH-%KDeXSr5D|+0==g7&llX^rf5T~z1EOSAb zv04qoY7nK}BwxR|eevez*{iFUZ*E>+TwmTCu5S0YhiRG@Q3zOxwfPlZmOfC4KYg=a zooqJi)p{Ixy&6~JaJpHYZ8qnptJBSRx>=o!WjoTyG!|YBbh;i+*TZ^M#(@Tch>D0q z&ERvi?o?*(G-c6-kWf3cNQgF5RoyRos8|)bx8c9`tvla(y#3)9SAY7|&CN8g#}Pn< z!15+6)!7iHZz}tdoK9%%2?R?M8_HOCnwMI|Yk#O0IG?9F&%3kp&FT5}_IkI>ODSyQ zN|fnIouQNRkfT{sCMK{*<$+JPo5DOzGu2u^)775OPuH8(?cp#GHmBR&^-ilYP*v2s zMw)PO>iOJ-P)j!>f>7034KLdXJonSvOSD&{30d4yiVBET>GEc`I~*ca(!C2yJJp*F%nKhYpos=gt*mr?6B#rlZ~rk%205wl06^n~&eSv$@_)w}+~c z%n@owjaRB@6`H0+sx@|wW^4>nWx_ZxLGGNat#hf=sw!8z+x>*kp1vu>!|>5x`QC#? zzxjKA__O`IjO(##%>qzfEX;AwvE^wyZEC8{kW*+)OF_-pI)TViMbuKI3|%RN=*u^| zAAIpzgg+KOJHd~iUSD3{JUH8G!~i46tI4;!S*L}xjPRBqWZ6gtwb{#mg&%C`v`l_r zE|1(8k9zT!<_e`ZquCcCEU@E0wG#(~0G;6(rVpT515|@o;%`%C1hT`E-gXqm&~cow zF9a;Qlr>5<&wxnaTh ziFMgFB(esQM*UZXs;VlJA3?1SLrAQxJF{xGXaRYeA*#yYCG32uG-wD#Xu2pa;j?e0 z)uUZApb%0fstQ1@2&PS}TDEm2;J7w6*hZpS;{Y20Qq|6`8hRH}h+5xxRWM^@Mu~$l z3J@3^-Gkl7aBs-O6#z6cPmxHliwH=dVWVOE2FgrTOw(Fal|WQVQU3{f( z^AHBY*-9o%?bKjIj>8{wLWsZrDi+aFwJ;SXX7`lyc&0II!0AT#oMb?V=89_I2_qIWcTonrWjJyf7YN+mG-S7J zlw|aG8Jr6$#y+dNt4ZB(p*xZywNkj`vBXA{Bj3W;AntoaN>@b@Y6$P9Te6-fd`Ri4 zb>=K*oc@W8%ae5x+9dG1CvRx#p_FSzHwI1Bhzw*Plqyp9Lu2fePxjrEj6XVZ>347x z?RF8j(40|d*JOowQ1c9_c{xs!O!96}5jlJJdX&|2SA7gIsEB>2Gk9#|Hfv_ysUqDr zl4Uy$-GuSpluTTMPzd!qntv#37U9* zbeagt^+|0D2O9mD`&Cn*0mWoI3i}C{%?=7`D90{aurtF!KDcGkNa_#%`wQ$@H~*MR zPqg^5S&sOaI+AJk-{YS)5)S~>atC@{?7FmLXl;^~cH`{M>C30jr~S-C-fOgn2S|qY zTzj&u_5?t&Jj`IFDzZ5}{otc_S0mTCUSIB>KfBl+4k$d&wG{k~zx?rE{^o<3>A(NC zU;fz_S7)cERB*W2KYV&LuGO!tVT#wiL`RP}0p1;1j-A_bX2ClOTv`SS~ zDm;{Od3pWv)#d4C{QkE-{FQG$Io}S4!*qFlLqtqP1+2oLssh!M)$rha{qSU5kAN(5 z6_DpOHHB!pGh7sqYgC5&>rAOBDA@*(Dx!+QbaFC|!*Hnj{Brm8XRkl|`psw0-hBG> z^~={+*Vng)d0v*qu=}_khjHAjH_TK@mQM1F6FalaW`$I1&cJSomZ$oUQrp$$0;CwH`T z={V7toEZ$?^rARA#DrO}9As1Q57Q5y|X# z0*Dr=QY%~#gHcpDw53apd;3;+gEZT&h(b__Zf^ItyM6GT)7&3tBNET4Zji!aly+tf zq#B(_%%Ng?qsj9fS6e{@JGzyc*Ls*@JJ4@@^YJH-Pp18Hy`No8kZXCV8V7gCLKl;z zAw|d^YS9z2SRWI{v7BvJRYdee2=$rV?Dl&spFMw5e#qnS(O>tnVl%Q=n$!=|)i{*7Eu%nPx z;z+Xtx)Xdrvzh!%SV)lcQVP*$aF` zp+;=tw(lHOvpW#MAc2cRqEGULZ0xFDiJRH|dm@0DBAW(kM-GGYa*xGM305<60KwCf zArMs|wF;Hux=D$sGFVhZz}DYZKvpqOgxTdeU^T^=U{0Lpfo-F!TM#?x8Co=nW3gAF zRx4XbtuaG`TAKRM69c!x33%K@ySB&y3&xzIoaD03-Zx{pASpX7<&8stXF z7#l$B%G246a>mWo3LKtZM|@`?PKyaU%%E2DD)Ev9-n?h7TU+s{R8-=Kf5PuZ=ZQHI zcj@dvzPomWw@`5ZZ$q-GV9$aHk0c-gBEAv`JN^Gw)hRvLIH|{`p<|Jy?Zz}s70Nbu zk5ajW((hCa5-vx5SmS!O+o!0zwE$@hN&>!{{t#sk)`WS5OS*@l{8E)gD}#v(qgXd; z_5gEw`Vd(l8t9k$;X&0K*=Mc(+W4Vzfuv>5zVGKhDAhe;0e0Wg)bw}iop{Q4y zovT7ay1wxJmLMMmJF55Si`$X4W!Ko;(3C2>si)CVQ^uNd9IsBvxs-=KiKXwtQ_TRi zLls7g_$vd7fe(?aMIIx~;ART8aSX>=Af+eP4nPM!C9R<5*eSt9GtjZqZ6&Q*WV5$R zZBF?!YBA_|Na#Noo^BJ+*Tn>oI1>9{baS2vdl1F>wN0FIqMpe?25N{xvG~SA)3K_C z;-!~oxM3pa0ZNXEy~D6}Nz*7c=4mnLh~9khwyZhnCSCcajjb)%FT7%;G2O7*$1oAV z5ap-?TE%Wy$C3S@y*gNxdUA52GVgA0igmlob+(OxF2|l?4@Ser*^Sg~xI$S#<9hYv z!*|!~Q582=`=?*O-tP}ez@p1C|K@Le^xNNicfB5d?~kAT!Jj@`uQwy}e!stSXR~73 z@0ayo^-NO%& z+Z5)&0(a_x&Md0x^+OJS`c>TR(ET6>(1fs{?2qZ$rBV9 zN|8cD+f&(^V4pD)5@Gr+y;4=@P(lU~V3wl)Uu0yxr3j|M1UVss_SwRb;c8VT8NYXL zc6+z~ho@H`Kf7G4#;!}iFa*}A&P`30fcU({#$X^Kq?B38XwZfSI}{U+B>|2C^ZBaZ z&wIODmlrqVz{%PU=}kPdf^m1%E}kQDVIrAM`q`vo=9}eO7!sl|F#-aQ^VJPlY24*v zxt%)fd03A*0zu6bEgz}{-kRGcA`uwIf($964bY^<8M(qn+Nf2xO;%GtupnLCtmez5 zdLFjk?ltel2;izail`b4Ec6+Ok=BTpE`mXbMj!InP1T?@4nY9=B;R{{^sRe4QpT&* zz=DY|tbXGU)gp-?j0$g9>6eJa9Tu@VLY6M4t=Xiou;4f_3#^9qVk}?2KF43uAN}a@ zAAEQh1^@D+=kuX-T^9CvU+uY?(o&1yko2#5GhIMutLo>pl|D9^mIc+?`JF|$R#6EE z0|PLi2yxNY)~K-sgII-~5FxOF>M*jbi?E0=7qeGD1Vnnp(2zf?P$t0AWGMg&q3U0f zM~c;_`|Sx0Tty_pf6vu0PQ;XTDXEeHBC($ysm0d!dY3Vc6x<-18pbJB&0a7d75D$n z33SjKYGmUN@!Zc9+!#oWKQ#$zA|aKede%yIfD4FvNycwZh&Z<_SZB+XB18_|u*WCu zt4M$>iL~nih>l>_8|R3C2uzezb$BcS04Y&U$gES4sUz(a3d|zxw$qAG{m9fnCC?J{ zY|YASz4j9U09hb`i*p1K=(-LTbt#W)D6U10B1G6F z@B}g;Nfr<&TEz*1r~`6HQ!;af5#}n}1lhGQ;%hsY(5%e;if6*i42dYD$!!O^D0r$~ zgH!PA!6L1Vc;98CiBO$Z_DAzV(+P0tf;Lx;1ObD{ZuLOPXiZ89liJV7DbV^@p@s|^ zg2gsstz@^}5dpyZ8=6gyHPuW741)+f3jw%>WYuUJ8$c>Y^pr&`A@@jE0{T_v3M%;P z>0c1vPkllYE#)HAA;nxoJAdQ^Oqj@lU1=39+d%^FCJsnyRHbWcKGUd2l|X+RSiUYUY?j8l&KS)- zS}@U3>TNg_XC1|t{}I{nG}x%vbd8NT#}$d)Fc`Gl_M8>(w5}GurYnITi0eTOpFp4? zR*)MZQu1o+{0rb74qJ_tCP8*3*7qBjW1Dgg091g&`E4S)@f-<}aGU7!N+Ls7>xlj^ zf4g6N4w^_HCyskbEvgL9ixF92EHz9o1Swp0TQEnwCe#QY5+)&VajItztA$YR9K{RU zTrgwxR$L7ckYKwq3YwdXZI~SSz7oyav%B230_kzHigHzNH{@=cDqrGD8$deROc45@+@ z=1dw<2T$jk3d0Tg6DKD$rE`s}Z}1kvgf@Hh&9xHk3(}vtAqx}lUku<1`uuR;@e?qsR{vESYs9M>F)}h+kFbFM-E>zB%ZJ68 zl2(g^LC=~vx=3$UIaH5WzbzZTZx+-rru8kGpKG?Hf3m;G>uek1+fhHdp+raWK~m0L z-_5VD5JjYj0Agz7SUj@xmrL+MA7YkE1%(BW@ZO`ld;41=vRtgsPA}&31ppAxYQ1{* z-FtuhqsMpl`ky|z{I~zDIK^ z4mk~V7ENP?v_DS5>1>*djPv#C>Sh?$q=O{Q;<}Y~$FGET@~GJ9oINcas6HDJiNOX0 z#wb`_7Fxhlgv%&h&JSFadvTZu>FG{e)#S89!|S%xtg;!W(T_sln|K%Qv4s zd-LY({Ccqzp+sr6)g2vd?QQRDZ_jpjXZu@|t=VLn({$F)`fhi7x;5=5eb*6n9p#j? zU$4757iJlYu*hm%mZe-S)|ZR%YQA19$FYn=k}2)Z^8WVZaA$h3(;sb5_O|-1 zY3dWE1c1N=t_rMIuo}kIIIh-ZwJxh+9L8}hWfYI;08_$D)MuP_d1pG=opoE&JW0?I zBm@HBBBgLquoN`U10-4wvL5+pmj2{B2X}WTKYMci@_ZpkIpN5xl-D+Vro(LH1y2VP z5~A*x%^sr7eiHzva)?L`fu?50I?Nsx0#~C%{2u4czyA8OGx0)uJH0np*Evfo{7Gt_LLg>i7bFiGTFHhyUcecLd}we)W7l3|-3M z&^%jFi=}sOMZ|hVI#bA;na#pgnGjAotkaEvun4ml=919LJ6WWN#9a}!rO6Ryu}U66 z5N1*Yb_5)OGGZYRg}}XQry6BN<%kfGQeuTLB$3Nq;+2J2r_tFr|J5?WkGUcHM(RrJgsQbJTg2PF01gx-42{9Po@ zVDn~u4jo!qqsFB=9Y}j^iEo~4wuNwov_JrWZALAKXv@V?z~Mp=U`7-|VGwP6#KzB} zR>4FX5ky;AS(y?WpG3gn3`FEgQpIL8L)HRVMn)}!j;IHjWdtThW)>YsmAtp41r*L* z6e0k^QUt;J0icEWC>mF)M@5$*v$hst8F{_9$Qn9&M&eN?M;;JmpHaoB2?0gASkJnt z4dnGKP$2~*K(#RD%}3aEOrCRr>x99FMj z*Dyl$S!K|KIr19AredLua{9tJ$l_UoV^C_SoB61=J95+Eq5(b=wq{B3Mt8|=3g>L_ z3S{Ghij9FTtxZuyNZG6Q5nTBEu2^WS@13b|P*3QO$E)D3T+$kjhfW1zhxPY2J^{ zKNzGo@HaY9fE!Cd@FH**;Gm)_j~BYeIFv>g?JE+81@;mvXsWxmOhA=hD)dkR@cJ3G zk&*w$YuYr;>Y_w%^SE~D$D)&yKT?|Iiet@@VF99!=aiP)4F;k0t4{NpUAwb#(!~z! zSIprURMbssOn%~Z!S=>qsqM2&Py(!~wRz&cL|4H^pcZfiSN2dgrFJ~F8iO!R7CY;? zZ=7@Mk&Fqr)$%wp4;z0(+?=}zDbbV-YUw1ZxYU~$LwZWNY5)^@ew0v{EfCe;C z)Zg~R^e(HQ(Y;Hwv&#R?)gVdun!uC6pB56@IMWaoN3)%Dp_B;Ld?W-mK4K4z(`|%G zX$x4K{b&*pBGcf-j>{S`E#@#=t4$~T?zWOX;LEVtq5dXV%2*7G6*A+?mM}N*FAJB9 z*$vs$*|$e=jX@7HQ$vBu*s58+wXoi9zN;v>q(RgYy0TWwTzTYAMYM4l;S^kz1)>(qaLSJazP{V*Q+(u9vtt(Yfq^ey=a=4rd4D0GQY>Tg_ zu0Wj10059Renir#g{ZVge@k#m<2iL}EWE$FJFJ#vEH?aGJcay2&tK zri_d*zq~m(*b|Yf(m8q?-`>01>e6-QWhd22R?GXDlo-n@si(w(s0JxO01dI-RT* zt2e9FPTsw{KRv%(UfnDK)7Qrr&%QoBzr0R_(@9s#CMpOZU%q_Rk^Ja; zZ~y4K@88M>dobHJ*K|j-Q9Wc@cz;M-v0Jvf4AS; zo*nM*Zf{L@w@b`)HWe7!7-)mVUY zqOF|vcKY3|-1oo&%N1PTtX`hqT+SCKSF5wj^~HR3wHR)eWxg8MV_B`o)lk;!apW>G z$1F$`poEE_ODX5HGn?#hb^F`XgRSmxr@OV+-`ktrJ=nRmH`|>W>|F%bLs>Hv1{AsC zGVAe&4`=uGy8raq*+(xfSEF<(6)oxjM2XfTfF@pmgj({(MMf#0S5{eUxQIeU77|4w zAZ3u7vY2g8`o2S?^?ES#uKv66{~}BTlRo!d29Wt;HI9Htl(7^>u*=^z7E#6ln7Y*W z-7u7tQl3s$H;atPD=EFnr$FsQ4}ii5IBH1^0y9U4b#o2Yp0erE!&YKywitmiEr#)W zzET9)z$Z$;EWngdXZkkB%c}BTL}X^%!lTAg*6>2DQ+QPXX1~Z8J)VjP5y?2beQW1~ zhld@>)nZrh(e^6f{1_;P_ovY78iPLsQ@D~(xULyAZzCJ zx-5rr7zqeH-UK2f5iK-Ho+SwB-8?_w63cJJ+Kihex2<~Q5D;FZ9g2=c`G9zrdeo91 zi;Vm%$H5NrLUI)hZ8i*c6T`cOg4g0%#0$QhI z07igJzKnI53}4Gci6|vZh$&G@Ku8HC8Q!5_vtK1J%nm(Xt+!*>m9?i~kaf|Vc@zl_{K@AcSaS%0!(2&@3H$jHokV^gJwrEn1dW-G1o*@Cum z1ko}!9?e&=2o$i6dqRSs6DNR(K+jGzb2GUXLP2B}ZPv;F43bz9S^rE%gd&KT{5UF6 zxO9vJs;~#3E>YZ_bBmgbA7f`eX9Zj?35J^P;s{;+1q#Q&@ja3#wH<*LIoWRd0yr{YkOD+%1b(Ikv4M!an;H?rAoQQo{1_mtw-G-owyJTW)ge%HjhOmR%UM(_azfCFZxJh65VhmasJr^b@G z=>x1aZV*VUG1M6o>wtiaLij7PgkF^*o*=9JaFZW;?^sy_bGTGXL@dF>c#ti8133zf zLJuJ^SQxmKKgXXE;#k)zv5+cSjgCvyxrRsw=xJ6rRKX(|BdXi#4UDbbmVGu9&!ivq z_O19PO@AQD&3yY-5ij14unML44o!(Fpc7^*kRs=4XoN%%;9>){b_qgyK*9?6fBkl2 zg&?I8w-%#?Wrzqh9BQm4vI41bLlv0tbM4lkR`f;kAD~#w*7NUTeRyNZ0}vIrbYOyx zk#>mJGlioJ5~3gZ0B-(x8&`2sbHiC*8<3 z3S`Gm0jsMOkXW8caaBsNen0{nN7~|Jkz89{&A{V-aLz+rnj7`%;Q+wL+57JRup-*w zEn7Dje#%1zZp@Z*34#j2{QCXo&qi5e^W#=?t11fuNDg%l_^)v^V%`{I5hyH^NlyT) z#R}9$>WZ~3K-iY*`vm}E1O)i;1ppur5e>s|>+Y?45APxHIF^g^tDCEZb~5L}sl(s- z$vfYAYyWbDfA`bpUpzmX=8o3`5mN48(8H` z+{_o-ThsgZZ{NLhc>8Go*5S_4-qz9H&h|9-T}p&~rko&=CA#J>3Xi2&_6V2>2tjAa zCXI#(&@yC0!L{6DD10>^aVXn>2m5I{nM@}=BiyXv$?^Q@>+>fs&Y!-%c=_i1{BnM^ zST0sP3|v$+DIujqnFv!(2uMUkm=oqiM1r2PB8)}Gm**=j)gj@WrOUWC>5sN2_ik;! zb$k1*TU(EB@7+Jz+278400OWYWIdGYC3jTr?BxIQ`?q$s^WS`SGGDGIT~CH%xcwyS zsE%aifh=4Um8(&ns<*dnKqN$M$6mN-sou@?YSQPO-C4?XbG^{ws3M#sflbAdNtb5R z4g^-qVH~YwOaRI#poKgv;^+VZl-0=0{cOevtHN88p4Q_yjGbTFi%ia}gqtC8A=I_A zUQ2WsrFw2Z*D%Xd?R{Doe)jzJe6h}5k|H@1rIZpOGmsFX{(m4M@p*@8ZxGR%jR~SP z`O+{5L|cV;H%zT^a&;&SHdBG2*!F;k*6ZQUZuh;nZf$jRwOq}IsL}B$|^!-i`6QCLO54MlqzP*FOBZEQ}tzRU-$s`v6LEwXJO6kqX)i4yn?z7hy z@JsrW4!tZSfflWR0DCo~jzd7iK4l`;e2WJ~1d3ib ztS%Ci#EdvFT&+h+yk4(Y!!WXF2^_nVQAUp-)El4)=y(>zAhmQs{H=&Zq{BA)R>&9pL*~heP<;G`Mr{VYdIUq7UU+zo zfN@Kiw4Si1+R7dOzGXlM{nm=!@15*yQo*rk*Sw3v#J2r*^Mgjpv- z5~T`+X#rvl*3pV5EOHc)0@f0T6^v)m{i-I4VEo+F6HVhi_5?r~O)R~#+IWKi?1h*1 zb|ru0aTIZ#mFWQiU?N8~JzpS1z?2aXdQRGA0}-w4NrNT5Fl(@#N{UUKjxDnub%<6~ zb5RgbPd`L}3)?Igk3DQMbpA(EK6vb1%{MdSK>a_q+%|VQK-B$-tg!RzPqG_=Fl|e`Vi83N<%FPh@9mj|Xvr$pY zrHu%{reV0f!nn#Jk;CZ{8jB_fIx$$-FC5nNIcmh%^X%A$pF(&l;fi8DKnqBj3kxFZ zsRfZ@u;62$JuKg>mvCykFj%r*#R7xL4N3im>L#ZuSP)s3gBJQ^1}}dJ%OnuMZS!_S zV>bFpR;2h)b-+uZy!lI$?l3qC>Z<}kApnO!ReS=~HF{D5f9T@tsYaztRI~{A*@-<3 zHn|P4hMMp|P`aXsHaatsv>?45;9zBeF3;5^-la8H*s7dI;#J-4)z&M_JDH(x))#{U z(XdvO99D!A z0JUSPseoHKsGqN7spkr=w#`vk-5Wqu%^O#1co4h}%Nrl6KLme8o9RN8|E8kY{W(@0 zZh(oX58bE>^Qpe#PE&EcuvW1Y4R`IkH4|{js+Py%gbjyh2YS*Ft6_d95IDsuH5!3H z_pVUOWYLt?@H)Rz6HYv;xS+h7D_?~lc?H*{E~ok)^z*Iufx&CPspcwU z&jfcfk^EJU)@J2k0HjGlwN7=vu%TLw83>{VD*?c-ZANAy5YR?EsdX|+H)ENA=1=uI zl^U%p(w_w~?1T#XAbKwbKOKmrE0M@ewbCZYE3p-HAJTa177#ZbbsgWZK}Mj;7}K3i zpWOVt{nu~(2^H{vH_$Rb22UjQY*t&P`;II^;i%db0m8lg-J7c$5X4kTse&2t5&}u} zRN^nT^=M%hAqmTDXY2ms`(1{S?U2pG_2PwOsmhKv*~<9qmmXA8j3O=S<9{2qIcf3==2&OE~;0 z2}&*0wtCjy-Y5b)vp#qE_-6f!pMUY!KYRMomoJVl=aYW=?z;~k-8+1EcmM9;&aM6J z-L2{Nv`Yyo~utvJmGyEKDdga10)$Wi#zB^=kr8&b zyZtoflokb!ua>W#z5L?q)89Nh`{MbV=P%FC&Tp3MfkjfnE~m+K(sli;?^D;M+>@Se zr<90PXOSSMlv7G50GJX|q7E_TlyjFe5$QcaUJv8A8c*iSmzO6$|NKqg;ojEt?%~ek z+dJ>y+kWrv{)5}QyIUCnR?G2fG0eLB2k#$Fy7bqdot#{(5@GHWQ3431L85SlmJjRY zETRi2V_96Tu}Mbp@*fY-xa$z2Z(yV zzza{pN&+CWkhQoqvzY)UU2kpX1%zceti<%$buQ2W)nG(IN{NVoFcDEAB!onX5+&5k z-@2@Mrl^Yt5J`&p2yRC zM@EVUr&A;%=4Z4GoHl|?lo)hygr^M5LbU02^f{DLA`l$cAT$n{wkNl?`&ojc?VQM$ zjYdKAs}1kn-rb#av%Z^TNQfD6mT7`eN^w8z{EMubg)PYryX`QZ8d_@|4>lJ>OD+)v zga8UyAyQanA~WoSb~y(Sefp8blA2H&$5_Pbya60uMr&38rXGIxDS~e>Cnpw18K&gG zke-AHQ*x()fQWrgS&M};<%Bt5CYwpyQ`eybrWQbO!>MY?%VdoS5Pu;SmJUI%?@XaDA?a*QSv+$=jz_o5%$+@2Aem z44VRHz{pBSLWk`TLy4mb7(p=(bUhaYuyG9;5*dgG9z}|Gw`1+Gpuo345oT>KC&FUs zw`Ve7C8KIob)W@DvVaksp+HI`VwYnABmu1+vaq=k3xGDovi}Mof?erv?pc6WZ7Ap_ z2wr+`DHNFsdw7SINgx0ba0BoIT5C&RgI(8gL+80DnI`RP}p`~3G64Y6_u?f|gT1+U- z&0uV3?#Ie@%%$cYtYprp0nh*$vT@ze$m0JMWTS}6ln_BOi3Tg$#rl0KX^ek@!#W{c z{zn`LFa|_nl$T+JxLIvv^R1>dLBxau+*^7`f%Xtjg3LOLhxfi5Z?f#se@)$WX(92x zK0pnL!CLtNs>IgJDCmJTB#7lyhPL@pm4upqMuGd{aJ zJ6scg3F_Wm><|LUtWX11B+e7SK&H$c*W5a^^_w=Mkplm&DVNbQlF)`MmXf%hvd<20 z^L#frwlFZckvOaHvKr5j!wUxv6VS~!>q1PD8bDJv0Skz9K6vEjg2P!z9q*1dF*I!O9Gm~)8mt&IAY8DouCZ!?qk)T=KVE{t4PqE%sNx(R%h+V8 zf2~JxFW}VH5Q=Rixj5|P|K|u|sFL_m5^lVo!|*geHzEdo(a?MdxGuPa5Z(_%4PAu7 z3)^QJL`cGGTle0^aA8~E8uD6AlYW*6L|jW7KNt^i?)j#?`XV68O^473q0?X7H-tHo zO}S~{L2y$SB3_qU{{mq*s`|F(B0gqOg~o?c`4yXW{qo~4V|oy*a%e+nt6K;wY(#S< z^%d9R@y%y??9l{lzUT;1B8;~|J!akY1Kip=Y>aFeQ)hSG@<005`s(1b{WeD;%rzva z_Kj-)JpjSNytA{zBBgLj1Sp7*Q__tNV*wj3hGN&(-NT1L^OYw`O0~!DzSYmBT*~5R zetvqfS`H~A3XNmAeeduGKX|;m+kf`z=I{UE%i(&tJ?){CoC$^j$ASn*)KflxeM$rm zAKrOIaCvc^QwA7^_0Z=IsUKEr9*Yfj6cHU-gES0d>bfrHo70PHDdTFDyqb@s^3SzZ z3ocC{g&8Q$QONnk7WTOzK%=7NVwCJ^&EC%J!TsBJjt-`iEX?cGngJ|5XDK6NPM7o5 zFF$_z_3M-6YMBysO6CzDi2xRmj=GcMlV?w#-rC*%=YR71-}&HeE_`}%NrVYgVbL7R z)S0Ev>E8aD5?5OK|LvmEEE0swtZ-E6WFcyhY<R_aqqWS2n!fkeu{TzJ5glL!tL?wX>S8jJPlNd!bR=_h@cCX;SD?Pt^J z?*7i+)^vN4GQlv6tL5_YW^r=0diCb|KmVF`wkD5mZ-4jE{&yZ8Jh-!S&;g5JDZlg9 z?%r1ZUCud!g;Rv6owfwPZm`C2v=9n2`N?o16usgHfP~BfAd~=^ zmh%CKc6O#b@NzjIk|1{-&88CqSuBUudO$$E_*S^+^AT;*VuXXjz$nU*vKlBY``Ki< z9)zHqOqbX5J|)L?JQP50ek{PqV<|+b6sAN3RUI)c;;t$Ka1$#Ln#eDV2=g(H_!J}}+z8zw+)D{)81O!SsAyFbkNGT;unJAGcLYEQ|VAA2FP4SUN z<^pJy7%(2~V zx`;&xM3DKx-qxdo9pr*~saL0wa47#l1MQXn#~BYk=ahag19fZ8c=A139|TlFqO2x)5bI0r-##04ZX9-$303 zrUbdqU80;)-;+uj2vDMoMA|{YfdW0e7{!9)GH6u!)#L=c;7ijO zJ%?^1e2hRvS?xQvG7n?{Oic)@LoBsYOvBZPX3%;@T6C*VPElw8ks<;5Q8gn7ODQGN z9?Nb4w7Lz=_p%_#Xi0L)?0!Tk3PQeml-tA_njy*U-Osw0nVw z>+5#~z{*M>o*{m~UQ=srGeYKk5r8NGA~SG^Uriw)ASbsU#x>1(6!=ujV33BMMF%4! z(krQY81~kc721wb%B653KX__jg$~U{GiCIej`0|P{YDWm-G5; zm!`m?+3?B8xJ(EQ=#f|vMo|(t>J~W}Hj#TIa!q`Q!81J%ag&T8X#r>e)Fh@2Gb_EE z<=6;T0AwO!BQ9ev&F^AK5vpS(nznAm5KV>kz5{}fLaHJ!U?uTN9P&yri~bRPFY%~Y zYh(%WH#aG+9q1*U9#aRPB))$8j~PlgK86HK+$Qky0ts33^fItH`+JS&1sm%l&@iM{ z2KtIU+=@`&@eXi;Z&ri`j4Mtf<-sOV>W`gvvHfZf8XAUtqeVav*=`jB=RzaY_R|3G z(3J%J*J_GQJ`JOBhKfP)05(-A1d3g&$^Ppi82S!%iS~2W?R<1;nOxI-S!Ti-5~=thgb`}2pAsq} zC8=w(R%oG+SnYop1FTx(d4#(vfz}$as=5yg^lma<_~{Mf2+iA{K;TL z=yWqpGh2V6ivx*B*X8MSa&dOXMbFqouZ-!g2$4&eb614`p#8qEmcK@!QHOQ7suz6GV{0|*OT1ibh=)zxD;U4>yG14n0UIq4M;o=SI6fpk|^4EIvvbW z)$(5y0Uw5KRY`_eIRjV#MK2VpRWi3s84;mCm+|(|-s5|>_V%^`WLU2S023xay>3H9 zB6NCo{pHh_Z{D0D(rhvr#$g;e2~xr$rArwBo<9BZ?A7aUz5mv~_>(`lcl&6*xEZq2bR<{NQ_*&reaBieXp6;;g!yFLlf>+AI= zUw!?{&)&Q|zU(L6KmWrYzW4af{iB`ztvpFO{jmrSs(BOMoLMc5=qp=Ut)gN z+L%fW05d|)xMH}P4_Awkh$fQ^eR_FaKKb(1U;p~m-+lD-i?3dtTwIni&L(MR+VAfi zGWuS zdw*}T(|3E@(+9WrCpihj)nYiixcchl#V1eC_I76P+}r*BTjiVx5K7_3Yq_No&WVP_`nqt} z<&?^LER(+Lx-^XA+Q$A8x(chuVGo`VKv*TyG=sIwM`TOK+ifr=;1rW6QMgR!76iU$di2x|2RpI$!v0jcy z0yfSf@&}J-NuhW`KuQTg8$=-y5>S^@Le2O@5j!GG3PK@*W~o;Hq`4hr96tEYdk=5# z46F6cVqCKi>=Uyv)!JGNT<>mE!UTd0)1JEAcLbB2t&!!6 zug}K9(`mQhGM^7Q<%Aw(*^K0re=_nc8R0L2C&6Yl(eFi!@OZKAt>Lv zxBuNow=yEhh{8e%kV+{!mxKV=w&D>mGc%8Z05(lnDVvBWq3G;aW{Gl9G>JzR5g<$o zEQ)uY5U?wk2#8Veh6upKRxtyDjMnoRy>)AFLS@6moe&a|P7qOa8^mv15^@p{D5b_D zh+0S|wH{gB0-L}iB*LywIZ;ZOvR+E1l#r0RWEZW3g@H?f!n_{GvXZgz$UKhBf`vgp zu#v@)T~9`@rP58*x|bRSdOv%x+Cv2q*lv9J@v+Bex*A0CE1osu0JuO$zg3ZB7BTRa zP&`}E5MHEsKPMgBK!~UvDI>Zm1q_=b02oUt%!-6M1|C71xlI6wlVV*+_8WlpLzY9p zXa#pptD;FZ0u+@O^n3?xv^Rp6Br7-q0)BnVE3!42Gi&DHwvRz%yE18^ucmVX*3Zzh zDTq+lGh%0@%b?9)0RgW^)9+Yp?SX{hDJtj~)dr!smPqJ_2vJZG=?ad0BW(2lcwSR; zOI6Sa2AVHfrrH8v;`_83$%>1C0;{Z`zdL^bU^6-BX{$%e_7Lts#A#mk(S9Sl-K6-e`D-W%zV?m$ly864VBq0sl4t*p68tzHBG?<~+* zKBzIPBQF#jLeIlNufmw4ghm+LVwoAW6M4^TEZ?>-S`m$y?XmBp)ufqByMPIckakaS zYC1|GE|CzMQ#C_B67V~iU^tR0sl_Eu=12v7y~Y>SC~&J}#PRH=Ng(b2tisUQ>}Afr z*y!osf+1krM|yEH?!7b2hUx{y?mYK>!f+&N3B}u#Xtu^n2Fs z+f643f-u((R&F+3I>5h+;MKXNUl8{;gM!rpw)hFM)6oqJ#~3~Pu?J}3LfbXl*X+IQ zM|Bd@pg@>_}b;L~XmGT_;`G@u25cLN4%SJMFYYGJ5>Fnpx}8CRu=D9C+WD_T+4 zp}t5Qq4vG|ag05&k*ccFVHqI)#8E=%j(tAdjD3!w(#butQ9<1AnJ~wrLcx9S;AX&f z;%JZqnvE?D3dEkwqB$7>n$vpcwh@i$Ce6j0nmBPa;Ap&XD>RP7HgQ+N_8*=QBb z3e;PFb4{<@N^v3R;&X@_H z0I1D$qxMbwE&|p4z1`JnKCFj;X^Uo4Y^k6J1_1R01}hg`RtVBKjt7Sa_usl#$|z9I zPA{&n7KlKJWB?I)=i3h+J>Kso`4^uaKmF>sOI=Q=^IF`g3Sq)TIwE)4PcKi;k>Kv_ z+ZpKi^em+e!t3?An@*-XTjOfIUJan<+kNV0le=#}THef0zJ8sx)W`xyr63uz?TA4m zV?jZ6(kMCw&YLo6$dCG0y?j8);bpXsD%urYWaVT

    Tw&QU*9(!wc7mOkfp#*}6#mpwyAhpVUr0OM;$yiR1 zbs@DHVgjHL3A040R0Y|6!QT6{nV(*lH@p33_fG!$-SVz&wH7iH&TKsztYn@C*(UOK zr-_7^p%yxlZ&X+|tkb+Hv@b-H3+J6d11#p*>}n)LS(K`Zbnbky-5iDfyI=1A@>2iC z$J@XC!R9e^?z(TP(3$CPK00~V@K3(nRTQ#vnWfNVE~^#uqJHm^tTL&UHbB5K>my;P zk_cVVTGy^r>@uW)s2Bt4mmD;|o5#%+`WIl|LB9eh3M?grZs-?^<`U@snT+6 zDq5I&_V$$s8pCd+$F}5@5h(;jLlEmDC>)1&X(Ii)40IQEi zL=a_&TK=qb?b4hJ^hj07+jlTjm{CfprIb?UscdT9Or=g`Q_5yDofNn4872}@AuSAs zGE?F5!M&67lZh>Hm6@3r_BOg^9tnP+=6C z7o#v$LSv`QY(4^XH~8E|!Q8sV1C}=jRc|F>-iiDkE20%u`Z4F7DY7ONTnJn|iV%zd z9{Kt}ueMZ{M(S6eBSe#^#+i&L5{W82n>Rz%Rqk1QY$fYhe?WcZGjNVb-Ac_8ktbl9 zX)wf?*`pBz`g0}XEf0sS5rc89Y86`Zx4qfsq@LcWQ23u2I19gl%=sm%-k8qvsTZKEkF)yfSOyhf}sRkR`Vrn zr>izM^0*YM*TAp4`bm}Fl8Lx6Uh6NHgl!Rx#I{m=#Wya#7CRpSYea))DBT^yMNr9c z)|jr0?~+HBk$X7e%K`mv$6%Uc_i@@2Kt8W}CFEFb5HZ zx~hmHAY>G$jG#u-3qV!j6ER=f%2S?3>w#*o0)5M7>!kI8t`XC zsP;Y$RZ2vP2!1J0Tlz1DQyF@uM7W%5By+|8!A|4S2@dF;bGI>Ll|FR~$;Thk3{e=E z5bJzetRjUiv`;yF@NqeRltmI#jAL;Sb|nm_YJ|Y{Hi7fZgX+bYka(R~2_3O}LmG2m zPuu;Yu3j33968MpI3VAWStRSlv_IQE28~5y`!j>iL6%tZ8DmW#7 zkR1!;60JQ&5Mj444#i(r8=jJ+83_|Oh{g0xx?0v)uVFF=W$NOaT&gb!IbWX)eBdiHo*&RKeVV%wLNPA!1IWq%@WM*)x4Eccc#X8!L%7`aQx0Xd zxit30HF`KKjc`2FH$`W~*^Q&5e9Cz9?JPJTDc}_=2e%de7D|Je`V}LI22wU160+>0D>iYfd)H^NGLa$Xfns- z?1`%O<#@Qde*66O&DFJv_IC8@?Qw$vP!(xS5cjiZy?FTT&!%~^ zzrLtin^qAR$X0ZM8& z&cI+1vFdUPs6e2{DPcI#1lX9QXU)lqT-IS*0ox5R{nF9g&kl6zB8&@b2kx ze|Y=unpD60!ToPPxpP?L%eT9K^YdrK-1;KgNJYApo-SxwYZbxS`T5z|iKx!CF!XdT z4=(1Z_~DO-4c-8B^X~evJNDC)Nks0RZnSko@#=6JKom#t8t*1Tq|W%8CQD=plcTTE zLPWzVTPwG)Px*N(cgPl#IB%j@9Y$GVl@d5Id#!m^n(wd%RzlsI->zY#r9j593mjEi zHh?wA(=aY7VlBGF=Ve?iDM=WWw2V`&CsQpzD zpv8K9I)o!8+Mdiemy1&g8evD8A7D|``J`Oe_Uu{x-uG3teDd+>_da>|Z=cr7o8{f* za&=cO=DX*cPd>W;;xE256;WdDqFmS-pE3kw{aHyxMV3QrO^B3AL7XfRfk9oB2~FkZ z`sRagJ=|=j{b8ZP3cP-I{p@}F^uc_7w!OJJq)%muybNoh0El=24C5k+AWL6bYs*5= zTA1vuBCdO|HnN~xJyj3y32hZ0nk3&0F7yj8gPvij8>(o#w{UWNemYIj%j_Ag&w z|N9@@`_}t6U-#vDsw%xy8zDoKtlXD+=>sM!Y3E+uNCT_b$I-Eu$nNW_!B9%|0jO9L ziQuP1ODzOy!}AF<1A=b#sl9KtuC<3(QPxhAz4akFhaBNmY99s%qa?Kf^?lR!p47m?7g7>jQT*;el;$ zIy^X61v5(FT4*YDDl|<~EnG{r$Va3f_x*6}O>}8Z#B41YdsvtXmoBoMD-&98Q{}>Z zI4obkx_o%&3|EI&uP*mj%d{ySLZVFE<1l3)P*shKlwNU(g6cJf$LV|DP*o6Fc`;3- zYmX7n{LSz;P7SD-gS9@Pts7s;y=&{TG%01^UC+xbR4YgJt;@K=pbx32khUg=rHLLx zIiS!2Dn!--k_u1EwbnY9)6I0Yoz6GY$)-$Gou+BuM1lJkC$Pc=_I8aDFHJH=!OdjO+`e7JONF^n<%VFs!4?@0ox&(62vGuX1|!nq-4aLXHqIu z8P@LFZf`2B`(XQ}Rc0_T15`?>#?5Jk5p$>vyDRSIgdmD8AgePgP*4-?1VaT3^q_hi z&#CQcP|ShC6XmWXOuGW4#^bZ&LuL5wyeJ80x|E#=lt&mILG|cR>_G-1NMFY#Mjerh zO%l)p(W=HJz|}KM1x%T}Y_U6YBOfDh2Kn859>KXr5|kNBue?ZrmoN}7atPRFt2L5# zO^e2$>a!Ogyq_r>UbQmFps3Ra1Dp{QNBMSDt5i2aRKMI{EAGeg$tk+uh&^y%>z%E= zdcK829Pv-G9l7ipP6{J=$3l(~8Rws(t3?EI@Vd#urn#mCJ+AokEqO508_7w?XRaEK z*n25rKc5ET)G8A1S6wR|!-Wx`@n?AaWxJ8(H6xt$)Ig7-Ol-sjQe#tyg4xj_&k^#F zZ@sTz*2Nl$QmU$y{X^Ug%Aj|GmQJzp$FS%9*@MY`nX=m{bq3D)uaGpKkTVj7c47g7s6}qEX8Uok<*r`J%p=P1K#6tD!;FL#(7?F4 zf*xaKM2=Wwqwwp;_k4ERVR;IM{Wu1G6D@VRC2^!Oe;n2tH7gvF6|rn#EZ4KNrxN2?*gDIOYQ z3TqkrGZu6Opb)}>v@2dG+=B{ApNEyzjn9YjCQrATuWx7egb(LMx28NSDFCg3#9cgV zoocPS$Mj14KZqabn=jV1}iN+Gk2&)XD&T z{pIszx3{Zf#4Ms5=60A+MemJ>;Ad1;mZ*z%f*$vWY1-U>@*(OZ$9)J#8Z!VQ&d-7f zh56OjuXg*x#hp7M(w4ksd39^F6t%guM=lJ{45chxUQ zP7p~R7_cI7npe?L57L>y%(WD2=fNmoD~e`UY>-sD0b%Jv+s$9Tz4{&PpIy{nTpjj( zgEGM?E0Lut*nb0*u*cA5Me-grCA@J56Rq$()+J9uB2qO@8eGa$Yc1Txk~N9r!V91z zs-nyS?Y*JQe6g7Y^zx|RKcyPQE}763h53B0@0P|O7Lc%z7IqeseQ@db0!->~T8K0n zRh8Ha0`g2pMT=bo*0}v`U`>p7cOMe*tKDxJSc3@jR5nvBm1`|bT-h3+YFqklzZ{pg zv=&!8$ri8_F6_?C)=_&`m0AjuqBT*Lig{D--Z>-C^RHen%W^u;Dvbg3?%6iX&GA?q zj*qn<0Hz(5tmeUX_z3&6SOYJps;~=kMskrS8%OT;Ln6Bw8rCt~lZc86WzAJb?A;lw zxIdd=p|3g-AcYH?D~HFw4i6nXN$+}ST@I~ZLba1>Ar!`BnTbXI?r(qR!+Rg0o9|LV z+z9c=(s!QX415@XkPvSTL%D$YUuUh{t7hU{fMPL$QT7ZxDgZPZq7cYpCCgC-NIV6N z87$}=N@aTPPM?A}ur|y90fh;ILR6RvlYp7H5S2o;tF&Iktl}N1yq~j1!U;~?3mMkL(R`tb+BM{8gBueoNVBw2CV(g*K2-7&$-nMnb z%CI&ajO08hDVPXQ?RANDAkhQw3;UQ`N{BPnT;0lSEz==daqb* z`C=kWkvEeHx_WH>FqUOCfEDo*KaWY;e?o+^xx}z!7&5n7nf#{DKZc*m7at1~Gqf*M z#k?to2Ci&xE=ZV(FyMe@8kj52?JY2eJW}4=o(#G#LYfibd;IHE;cc-T3r3CXzu~)RRTFJ=ht$p-YB^RS{pCbp4TvGc)2wRpxT#a_^V&n8EnPFc* zji-!}gtc7_X|)d&N|O^F?+GPIih1>f;f09eZfb~jK7O@*A+Grt)xoN!Ri_N%?MyFM z-FHv$jr~ag9pkkaZ8(KNdychU%_crVdHZc`GBIX>AuzcD!-53Yj2O*$R4Qh?b457j z)~BahO)aOeeqg9PQI+TlZtdGPCl!p=nu%d=O`C$CqFjQ%P}0IY73pm`9MBt7?Y!Rv z&kz7dy=|zgT>1u$-BLu^lWC%MER~B=>)ng7kq0UeG!>`hVS!vXeIzDr+Iugc-F|=X z$;T)6A2z!!VzYPjmT!%_+Z1b<>qGNGqg@F=*RwWLu)U;`Gd1(FP773wXqRX$_S_sA+&(~ ze7D=rWm!(0Mi!D@70-DbMsXPe=thBb)4Ru$FQE0j$P$z!&7xGfk=;AI3jCQ%>t@g@ z-OpYLibBi&{BStz>r_;rrFijjRjJkOW^sPWx_$k{b*=jQ?_P6RKDpZc=`TL1ig(BU zzy0kG%h9wpFFqLOjYjsaQ!(pj`^(GAb2CnpDzLBe?0l->Rxny}SH;!E?)}~JaI{*) zA|_c~aG*e6LqD<%m+rz6y=W-gvaT4wFeMpKDM-f~w+xuH-YRxIj!Q!_%s>(AWEQnX z(r}A8vD&S(8;vw$Gi%+J-mP=#z4g|X-daDk*1B1<*4wEs%i>|Er*P0hD@?&6o`xgN z7wo5Lznc!b`7lrOG)+^5N{#G>K&b*botB%Ack^6#^JK=Qbu(`P3Lx)muVyFgO?UjQ z4m{%qutn9XIKP8IRS)OW{rwTm#!0`6pQLLuNZ+05%?)3@k}tjlwEW>O&%S{_Db>G<`fSKco6$%)gZ@zeTc=6)mx4-%J_}CG7d}QjZ z+qBbhd3boZes=x(r?(J+NL%{%Kfbd+d-;p6U;fQs|4vHb(pA)8Ae}_OYVy@9w~UJL zBF<|7h}@+*)y^K_WK>{FjDrY=#Dz5Nr?=R2yjE06usaVJN3H@$+%gR0kl`=2=#Qws z`|$B!zPSF&k8j?#cARQAF9Ij7Yb4<11Bf7sKz2jXjF^Ir_Tq(ZCl#Jer->3`j^f=I zRBNeDO7_T4U{Mtjb~+hjX6PzvTD5gsTHj6O?ZSK0PX+fbZIDOe)yW=~-aKVMOIJeU zTuwb9daa=zo_&zKtM`w>UhdvCf5dc_!Pbt6#atvUJEAeASDPxOxVNcQ=c4=Fyql^P zd3-z_Pm6Vs?9IGojvJ8T-32m`G&7p1dX`}n;X{>4%K3iB){3YU-A(1NpM-q-?#52- zY_0{ppV~}b7VK&{HG80aY;2_v$>fe02y1lXT0ycq7BCO%J=qELK8tZez|nq-KnIJA zd=I2zQNmZi%Qks-wK1}SJee+v*KPV-XT8BVb|Z3;A!SD(k7|QLoH}E820)sYa5v3x{ z88TMTtU2lh5hG9)FMr|F^ax8;l+Y-<;EbFPSRu+a5>!D^DNu9D+qKb4>G`e^U3{-$ zz+&iRH*c;aB4U(|uu$E|;^$l84ucy^`;I|nB0^$Gtmt*tBG+uhC~KS!OB<*wTQq_R zFQS>jo@4C1A`=az!d=tt+z4IZboLW(w5G*JU<}F8I4_o$S)#gJ{HJItd43&nhhVt( zP+S;lky_QvPD^L<_<4qznO~01EE0(VGZ27S8k8Y@n-FY+>BA*p;K}i^G;TqYtpndA zXUJ3ikJN)eBmVrP~RJJm~C}j4&^dp^rpFMv~fyb|e-n z@R6h0$kTSo3Y|<_8U-0QVQ7kRE=xL;j9uwUnpR^IZKvIpkuYg%VM_;*uEO~q8B>W* z|=DP$>6v^dl&bpU{55zLrla4Se7##INxsl{;fI!-d#v2bHa z!%RS;wv&I#m)1+~#x4#XAYd0pVmdOfYtSg6ZXVLFr<{oDqnqP{n5vWKxlQ?s;NVwt zm%Tm-Y@1>r9~9r^<~RQFRqw$hHPcA>x*^cH1Bu&!^7R}ND)t;39s4Y(qpg?OvWGApi+ui zXK&Wqr(b_HUtaVcZ5@57!#71N>lB3@=EIvGe|-1T>#0^Pa=brT?=X|N`_N$v+p*n! zn0IF{zWUX?n;&lPOQd{?j4CKH{>!Lr4W93(Qgk^jX7ILjX6#WsWmFTR5!P92IU4Vd zt=3`|cX7N32*R)L2l@tS?|5mmQ!zLBt+HNKi=L$<e<;ZKD$~B|M(Ras;7@K#O+*K-E&~RBI_yook)uI+Zd_Wt!@4o_5nTPj#NkJk@!s zwUiR2)}#NPYhAZ~Jf3z_HBY-B>XXxWr_2%GixwE@Mh!%<+8{F&uc{J#Bm2B7XJ_;6 z%|qP)B3bd28fd#+t-IyBALq}%07R~@ra${{%KzhkvG?y!??3d17ro6F=kqVV`t; z9l!eW>aef0E>I5$!!$n4C^=7e5 zzErNb(t9@oX2}yG>7+n(TBJ@B1g%*(ctAy@Xb~yi&Jv7j;t*rP9cjIhv(+>D^S6T*dsg= z82sWWNa;ZL98+VFA}YbW#9W-4iSSEBrdp?}kr^&ZLaU013W{K=73AabbpLp27I$p{ z)Ka7lNbl`OlDlM8m8v?;wN_P?zO*{ksg_A}S(b~lS*J2-IXygn{P0nU-8@-u5KNG> zg1y)d-4qv;vx>XkA8AdC1wvf!n-HK`VnGjiBfel>e@|xo8{alXVit^=Sc3~oOHF3*bO^N2sX7RI_c+)@dd6T12}CSe z98Of?24o}`X;CfCc6y4Pr)@%1#mx5$BHqq5=mG&oyzK)6I?yP97-S&{ZDi{8AUU>t?7!rP zJljCl2r9JN^)_Re6rnY!a_Jk?OumsxW2M3M_3=nU73|RhVmv1dI(1VWIv^ATWORz( z*qb3l@dAx$imK5MF?`Zud3QK8P1k{@az+Gc!QeqDqe*x269Kf>iADeepM$tS$U3la zvdL{o?n5#N8OLox7|DTQ^Y`KEGMtO2CGH;p0YoHjGxwXug;oSwq^LMHpu02oaUm}8 zvDW{~D?K3ciUN}jBL(r^wN z<$Dm8B&iVQ$xkXle$hZgDQ*lNVl}f7358)?s}iLI#s4zi8ha5&j7nWG?iz5qQxM4= zUJ>s4O8=|5UBzbPf|Np$^()EzraWgd+eSnO(pwifzfK6mM(Tklj7AoRag}smHyKzw zmuUoZ65BL@*?@TQj1;OZ;`Bi836(##f*bYmRU9Hd1|&I%&D@ahrg!nmgw$d1Fgj7M z+rBRUI_|M%$UonVhhl#i}5J$URtx_T9R8 zry zI_{kgQx_lD=3zbg=eo`t=QAcc#A3@?u6sR9UyMQEHxpB22VF%O^IHvLL?axhOkt$m z&TRA^c_t)b(^8C_(_Ce7j9#&7*NDWJTZwgvR>h1XH^~W(PsO1SqWL6-$J3)t6S6+Geq(}U&4eBAdum>WpK=MS5{!Nrm@@5_)@jr#q*?D_ zGKJpalN2MT-CTEj>&=cW88`swS+T$i>bvY_r2~kc`Na_}K?=3C{_N9>^Q*JhKbkEp zCC(ee4LiF?i%By$Eg_?{97sS#PfMHTvuB@wE|d1hBP0u!iG)7-sZ=PPmRer@@YCJx z!{y}#h<;qyd+e+Cr?u8k52uIQXP?Y8fStE?- zq#@ZGh;=`9bZ(J=J}!M}b~aCDYi3bUO(|&>m6*cJ0%*NEFGP$>uXa41PRCQ3rUlIn ztZ%;ur5db)LQpEt&ky^v{a^q6w~r5}8T{pE*UvAfyVLSl|McU{&7Ep#ZGjnRps5H* zEy6DQ!+d>x*?U)27;EMA*=`a64bfRu08B-$FZXv3r-x&&RgTSSDJc`qc_(ruq12+z zc`!maHPAd(?*a5Y*{~ap)-6s!GY!UzHG68C^On|oZ^qtwv$ibl)Y`JN)_QAwX?;xzpbL(a@mA|O`B}=AB2)wV3o83%a#Yh`-L!gn< zH*om~k6d*`Aa3cJDDwYPYsK?4)WLV6EX`^+oBDbgIfJBn%1k$O z6N4Dh1-n{bUKZKy+)H+owk-2hv;g9%odSU>rK7mmt2l#JB0r8=wREb|yRs_dIy*$g z?R=2;0|xu~5-2Jv)@Y=ubVNnG$KEQX89^>fdtBP_WN3@DHo?x-=7Oon*=J|ZDmzU@ zI;5yLzv%ch?gRx=klc=lZ$0sofSDaz@5WZjVJ;=t&Nq!2^`-!AaP~+{11<0u!AP+i z@mWUV0*KHuLn9@ET(R65kY%`)zshhlAf670BUyTJ#1#;ckbKS5c?de~@n~b%wh<;I ze-@|b&Q(ivK%$_Vr%Oj8h=GweusNqoW~k>H7U6&!emAc1>NSRdZZa|kBNcQ7Gh&TA z*--d+P5}CGp&;Yj?Aa2r<-_|%Ss!fezY6gc{ zOn^ilV{O+hLa*!r?_MQUH^b93JxRNmr9#I~WR!p$;o_65x^W~hXrEk%F?+$2xCiT3 zeP8`OjLQL85F{a#4C$4KCAsb(N1jCDtF&tw5~t}^RWY*>xd&aH{6mrs$m>S2r(xt` z-rVp4Sn0qJ?`;!yKZ^G-Yom7}2@7KwE~D|!q?khFa&bgrOwMbJ1<1gE3~$gmu}Pa{ zUk#Ipz$?p)v5ExDUiECmzTRRd#9lTMy|F+@pcvncd-Hh$8EYtUeqgzK>za=QPvnj2 z5x}gk*sc)9I5Ga6dzgDaL=o~|Q7Wre!U&8~JZTcJ5^b85C>nvr&#LkO@9{_$iO z;~UBQ4C@o6L1NtnPxkbQw4}bI8jdNt#%^A`a!=bO99AylirCiS%i;qMW;^wXnT_CaUN|MK8>^d^foKxC7U)DjVc(1Fq4g#)f`LA5L*j=t` zI({*XNNT{k1xbge5gJM&z^IG4_AJG!43Z#owe`LW8HsJ3I5yiojGV57Y~X|q7sz!3 zQmk?=+{&(umGOg$oTjUG)C-W!G7M3HJAK4gH*1vCUVI6HvHxTF2Em(K52ik@@}KV- z-YspyQ0&;KRL~(ptBc*TbL${Dc6H+zhbrZEt>47>E-RQh*v7J-%T$i1BSfWCFPa5g zjd!{mlzG-#Y&m*E00ILke? zQ}eva7ipyR)&QK2kC!jLID7G;BRrwyy?`+uiU<|3I?rusufF@qy3O;h_14>BX2sp7 zXFs)OkN4Kv^RIt-{``~Ww7}~_8{>S!^PN*#Be4gjAjs>G^bp0& zNL6XX{c#C!Pg9N%On^+{7g$49?1zB8b6I*%xfM`E&8(f4qB0k66DLZFMx7QFXc2e? zE(L+-SLY4<;nf?lewgJ?fBE@t!Ve$XU;opq-nvXo598q2sXu`F?E1P)lQSIvF89;< zZpu@M=$s(H<=M2~)&Kn4568w@qwq{RT&8oU(56ylDi5vq1=d@G^-eSP-dpd@dh5L{ zz57pEUzWD?wk&Pwy)|R+%{+&#HM73-#oDqo|FD_0rS;yHrS;Z(?=DJts7Z&$;*Bwd zqFTh$-BgQ~Ql!+#Ig;WH1+%Myb0b1feZ^zNHeK6X8I6RAD0)|t#SbG@m7Uf)i;4x$ z=p;elw^FoQm`x*Slp;?IZQ2`2c%PhF#4|>Ai$(!M`^>x@Xgq?nx-0wrbbE6@X;~jF zS^PxM0Xv+R+qr%BL%n`ZpnUo1{Kwy%{_=O_@xI@DT<$M%IlsJ~Up~9~_SJ2fX7QA~ z%^{Vf-Bb}muU=e=^4;4Hr4(;AjHgCKAtJU`Syo*fA+~IFJE50 zeRVTUB?r4AWFU_QKzIgkz{fGn|r1{uZr1<}61t-WaRT$YgtmX~Yd z5yMG%CNn{lN&7-0Z}$8D^zr^zFP{DDtHXCUci*1M398N5nPuCl9-*2iFNlyuy=EUo zRD@M^n#(jzszt;=D^hmz)Xb(*i+ZKO5y5TT`Z(YT$7oWNW(F%VsZa&I+3C0x$Wr83 z^7^`!dxqrLxdyqx(jKH2@-udjdovj5XhAHVx>e1G5BQKYK+vU!IUP-sr5 zXKtGBlz`r^)-QKUl$-}RNNp*8j*!KV2sP`i+o{>{w49b!)D1n%z{aI5273K8c4!F& zb^Gj2%CiTNwFn*AAT-55ER8CVqA)93%xu4_hq)eGzqx(v4bwCccx+u%REkvGn>{wp zb*I9(Z`}KS(!JmkyaYRYGdZyziKFQe+NDHh5V^L}qllnqqX7p5W4P&X1R})+JK=|a zI{k*bco)0S2V!%Blrln6aUiT44a$%)fl7Sd9cntK4Xh2|k)gI5cY=OTN5sq<9guEL z%;72W>EJkCNLVw@_EaE(0~qgZdw!+ z`}BMgtyPPVqUhafEk*Ud$|8Cwo*jpZK22J>Xz5y2eGe4YVG5~f0bHCz$3z4jIGHVm z#rW9lXk5rnHe>1StjfMv0Z+7xNqJUzCZC_xomPOQNKu{YnGjy4!LSacMp@lmowPF(93)&-bKmZUWr| z0V!UH*>6^8m5t#>#(9I}+K7y0$4IUoYL*YuK?bZK41{HN?b!5f44m*OzZI4zZN&Qg zpAFjOYCQ~%vy0p~AcA~gq`t%sZQnjn(dNmkc;t7O#}Jz}LGlfomCsXvbxnT8T*YXd z>4=~ zxJW~dd}j=gK9(?YC{uFA-UVIYD=hziWHBCLn$dKyi zGajqHT6<;sROW59)v&EAy;U-famqM}WjGhvd^UdN15Z60_2k@L424|%VVKb*qBdg1 zkvM0o`5hl!dFkL2*M)bT0iTG_AjjfYxu#DRH+{;+8Ly7sAM>;A%DqqBAV#AU$zvW4 z05F7wPW4?1Ypo8$1)@%ZeE z&*$?Cj|KhUZv@CCObSHRn(gQL=KalwpI%ojrRs8eY|D`}O7WaEfmu79?my_XfAQt7 zro-9s?mE6ghP~oZ3`sWPJ(1 zadsF;zzmtb6=w^rSzio(FVMW_DroG@ymk)ByyYB`6ou^cP|)kvU7nxae!P4C{sXMN zyx#rEH=i6A{Py+TZ@+sDptlBE)~%;`8<37VmFs8MfwLe*cy&HcHSSiq`iV#pyFTB& z{&@WM?Y*hWqkVFD2G4R#OhpRWck@(shkyL`$M4^LI4#zWr^Q-pjg8$}>#en=MVgzn zwzSsTa$0(8OLM}`dNUfkvA0I{?k)Q$s*&DS#Pe;cRu$1IRc297?mL<>Wb1uag}~UCuBDVhYi8ONVns?C zeDUH=Zd4imbd58j_X9T;4Z#XIr_@O)8RrK)5Hs4KDgW!u1{H*?~Kdpc9_q@4T-o5XizkEEN9rpFhPp^LeGW`MajuS+RhGqm_uZSvfBEU>FR%W(FPQg! zU)%GDqPeaI0DyT#wLlBPDEftYvc5u;)-(SrD$sM03%(^Z!Ae3VhA&^%JsgOE}0`0gsz1B-_i=Gs) z^0CRyqj^lf-`7{Sr~m%H+bC^t#_NCS}KIJ-T^68 zVetm3ajOm@qNCk~r)LC!8x{Nrzw&Rr8+x}+S~G8{qR>(_q7;?h$kyH6#34!d+5i-x zs#g)CKsq}|Bu$h_g{m&2uGfSVoonr_x6a*E4u|>v{`m3sQAM<9Gm~7l5tFKD%hV7B zbgoCrP3yCAr`)N`MGiF3PG+~=9>~X5nrc*71VJ$nR02Y8p6Fo*%Ya&IkTNhK@bkPR z9xw|_55O zdhtC8?<7vC(`(mTmj6h0DuWYd3x|;EB!(GWVS;xbtVLaQ5?Mk%VKgE;4H8JyePtl^ z0m3bb91sGjUbcl1Udn*49xnzQjlrsVnGw3y*jVArq`=4q$cZpYL1lb1LbaGzz|?g1 z;VC5t4{z0-#m~Z^I~LTukRr$!J7oo-Y)lT4gR&c8Z9XRzSr8>?%#3~~U|`OTcoUm+ z-i*>2&A0uxMmN8RwQ(GtJ~+U|_VqCUrqt!{f+2R&sT&iS4JK<)z!_6#x89Lnmg_d! z6Q^v&dW>)>AIK4V4z?`+>N!;e!SW>iYKT~Fk-%NH=2T>)X{20=*g8TNRL|0l1de#r zxVr5abi~-meo|sA0P^j4qZ$C5T_z}K8bW2Iq~?PSc*u48R|b$2*Gd`kvN(T zY88{*(hZ*)|4j6{9s7uGhER%(wOZw$W6Y~W4#SdmFsn2VL6eaaGbD$rT5V0l`u;&& zaQ$~I=io|`j9pbEN8?3Dwzo{TmSGG{wn99J!jPEc$GQGC-r(jb=M+tEhJK6WJ%16b z4}2n{q-<(Wd2@_Z4H1c+OGx^1O?8V_pCL!F6ssnu+sT0=Y92tWMMr9 z;LytS7-1|E*QB%9Y$69m!?Bhd3!JA=9J;zH#Q4-0Qz{3yDw8a#Z1rX z_mx_y;jn4LD`P#r3WazARMvI%zijMfPAH+;=B2CsTA_Qq0o67Tq1HlA8BnDc0(YzP z)K;RDI?rZ2-aT-M%I<-^n98*x2ty{4D&U-JZ{4w-8Rx4rBOmV`*dbsy%ac*hFk=Sl zLER=%ju|7RiR=%LSjgizZBCvy?g!o?&jk>&!W;#Cw5zh z46rx$)AD$GxO#c<>6fmP`83(??*=3lh)lKY=ZWNE)(o9y6bj7z_9YC`N7Ge8p${i( zorhUH*PX%Vx_kB7-=548@ACj@vECAJh?5#%w=N>3l+AtvG?k+2{YxWV+hF_M?)+^3 z?T@b>9v=nx)t4{7e7S!(^}qZ6-TT{zT4!q~(9{$7IN||0yS&~X4rZKcVYjngz1;8O zAcSG6%y@pNrIvsE%}tr=>9ov(Qq>kKj%*=*0Yrg|tIPlSfBnn<;eY=Bo~)BZYbIs} zbb4L4ZVkrnHMe3R!x_^r^-)|p#Vope z!S8B_Y6$@6C>>FvT11?8P#GkHk0zjKfDgaoXicH+UyL-@1)$Sb2*x+YVTfnU7|h{ zQ4}N;D5c!q-1Wr{huzYeQA!!UHtZQeqdh)6UO#_XYB5463VHSV!`nys?9=Nym4V69 zl8fK-DiZ~hHUQ8;8{*30p)9GHCN!3_>g$P6oNEaQi z_Y~CvY2%KN3e+eSALspF-9LVPzWn)%!|#5&zb$*4Cg~tiiq`4{*kW{&>AGGRP6bn~ z(^LVp)^$YLK34+hUUm&mb_^^Ra1b!lQaD0Fvr^Ts4)w)Mq-X^^Lsb_L-R7xO6@bl% zj*F`E`TWz}i+G=cI-{1)@e6+fiFMsC%bVm zzr;Zwa5ntQ5XFUBmr+BV%ZT4XHKz%SY(t#c_;g(yT>=tP}D{MxG-MoU5QOZJT8wnSB?j0OPo(ifiH z;rK;J_kBGxnu529Ux!T-L5;rD(ldHA^4QqfR8>@4Yb3kj`?vSM`{~^$7xmBo@XPZ_ zyIJ=O`w)vVg^nKrd;qXOqSiY#Lu3dQN}*;9Q?y*}WIxHQMx|DHxRT4C8}qCc_{N2=U4klM3?L7eA2^I&{eAznFaKkt$15;rk!&RqepO4HWv8oUJe|Q;j0kFzK)0y?B>AWf%-a6MW!W+(3FIh=ACynP;&B?p zG>!3=E#jwN>&8H@W{1s2TCMiCWkS4aSEvS!xAr9|#oA}OOclF=qTrVe0}FOy~l z8NYM8P(H$p;W7BKl{Q$zGUWVMDH%h^35?isGd6+eWQwnWWbhrZi{t+2%0`JemmO9s z!|!#_BT(m1maS^wzhY_zYn^%$Yl0yXST3mHZrCbuSMjj^RD zBs-EGId?Yb;pF>}fOC)z@n6}lu;eQ0uwW7N#%8UH786=|7C5T(P|#;O;+y!ii+H?w z#OYc5am0}v$1hKbs#sQ8O=*q_;~XIZ)y-E{r5a)urh7|yjD1>@VTsl9r;?0?8gKT0 z$zWB6RBva|1&g{<|Ckb)5 zkX(1lE;elY#xtcvVWSQ?c#gEMVYU2gnRmYN>Z_+i795vtj&MAb7=~_ zjN@czeQ6kzr}JCoaNUTZe3DLh2ucn^*2P;n|I9L5|;|maN!~_^IP#*@k!+|bvM;h>q}$z zMpuA!daX1wnnfovGpa}<9!{q`(WY-l*oXDzT`Yv8U2ff$rF+R@COr+HwMM|%4QBg7 z@5$wLVpP?uI+^gWpG%e3Z$B)H?F;{#Uwn3``0-==FTeS*Emo_MJt_*teuRm7@$#i} zMj}wb#bMglLelGHdtRXk&d+x5ZrklcJ3Gupc(I$rx*|&)5fHK7pFcbN?%N;!um89I z`_1hDmq2L0$7v@nlrkx#7Ofi9+*FE`2^#4&0x%OqL!O5^S)LJ-(jz|cBuX*T#7f>1 z1)_?-K-S{WBBD@e6rE9Vdd01nGjDW)4^;nNM#aN|cyCZ9nD7-eQbUmAva)sSN>WKL zA!jO9gk7zfM!pO~cs74v`ENG^VbD1ep~uBIfkd{d$7QxTwK9&9-eEmz)x-Jj@#8TQ zW;m=Q2?bk6oA;&6%MY)oFTNlk7Z>#p|G@so|AY@W?d^N};*;L_@_P63`r@~*@5;14 zweBWK1w!YA#Wh+K)^T_DxI4_9-8y}=12~C5A>HusaD4gMG*9*6@k9~Ta{qAr;q~#e zPY(OTZh7dD_G>n#t)iWlJBn@;RqH*lv;(rl7<`)jF??|{4q)=J!=fYeuJyi{sMe_p>6yCAW7B={M8Br+{?5|P z7K+)`RIKRRyVL*kFJ6Ckx%(I2od3bg{g*G#zk754?W>zNH_OAakc{#u=Df5dVJ=?9 ztvIfXj?>86q2c5c6og@^0xc>O!cM2=yB4=&Db7t~d^I3(c*N*03Qt3c>l-xdDtT$f zR~V)p#`8nnA9nBGKioZ>syfMT$jH+K^xl^m7rxw#yWNP63(-NOEZ|AYBl*$#j@+AF zR(-KU?{u;0}XBF%;}0b?yi(nHCN z9uZoo-ZR?R$lhq(%X3E2!vHd(p6qGR#c=ZMHptTD?$nI-_}Fglmrq}wUF_$d-rbcV zwbsA-?Z^M{cR&2AZ!Z7j7oVS>q0@S_CW1wNfBa{SMq+26>i?&`v52S!Q0ro<>JE>LK)WCPicFxJIBB7o5M=q3~K2no`hjm_Y}_m^vk=7Kb0 zSD%zS7QzCG}~+Hrn6^0k{O}I z5WQN14W_}DB^ZAvT_XK3q9b@6#*C>Vkd!E`vYx<)k0=lm*xGm$BdFXKWM_CYjDLE_ zGvWb{B~(6Ab2{CVqU|i>j;E^&Cte0Dw07UY6Mjy z=PM13&$kHIk_o@xwL{c_lNkcBgEo7#yZsbJ9I8sU| znhfA(qh!eHSlg|+7|%@#Kw^ax;^cI~apkV9oMn=ln@w0hvNACP)(+lz?fn{?l;RNr zzM3b7__>$JP~JzYd8Uyonh-cQXNX>G@W#|V5uBAX%Gqs}n&aeWXhM3+p|)Y;QoPnJ zmh^~7KePEva)DcIN(7Izj03r+1ZL6Fq*jK}Oc%JJ1vX-qc4z!*Bk=Lcjqb0|Z7c2T z%8d0HdNhPPd{>BQu0yWtW=zb#js20d7D!{^NDf=?FEW@-m@5laEQRz^s+8Kz;)KVnw}nHnV<-lZGR;y-dwjHI zNl{&$TDLAL^pf7b_HJWsbRQARqOug7_J`h^C)Tk$KV?H)5(RK1&4C2{VvN@?vZAsa zk6-@!^TXAJpqCOgjEok21b}S)DP*6g+8*!UefPc4=DGIXtv8|9VoNv=v*SG|*Pnd3 zKR;`&iC?uz^<$h4gvl+n6ortxX{x0(>kTwRhnPiv0oMvR@L85gAA5gXdac!HtIP?q z)D+_Sq@}_T6ge%unTZsykR<>`d+*lG>sm`@@L*Kp9vA_B=M>jh=dHDy+gq4j9_By% z`qM_dx;g&l_pfWMy>}o)Lzwh7?d<&G>gt*zMMS{4>cxKcd~nN(LIieG+3o5-y}Hq= zpk18JJ5@1*s=>m#8;auU{O~{ifBs*$x3|wec}DcfsWMe!9Xaz4Briux4+b<(8PP6cxt4E1;M53b5aYPxPkwAJPSt@$C@Xei7f%D=TKQ+JFm){UKOEj9+X+E?MH*@bO1-m_d{Y(B&{~jMc@bx=; zIJP$J=K95F*Z=g>M}epA_!=e2MM`m-M^)LM9p?S+csxlSqbFJkg-|WWQzLLV9PS?; z9px?Eeth-z55M^A*|Ur9@7_&iH(0rZR*>3<`|scW z)oJ%o=OR+!K~#3_RC@ZJnMo=0T<2OtWs1{Y$-n(B;5YO!MfZR;IB_$Yj zx&R?XrIuo5OY2%{QLuLvm2M_oMO*7}BTI##7N-Im8k?DrhgwkTySw)P{)@Ng`|_*L z&wlmE;otnx=kM=Nzy0a`x3BJQ?z>2xr=q2}AV9NaC+IoaswjY8h_g;J7D?ag>DyK3 zQWP{}>utrQfJ7HfmZFicmMWVE$OFH`UsQralA8TA+{+q_)T+;(9Ta%|?)LGqDb%t6 zY7m7g-K^H?XDKcW!~H&q3I&}u>`GUC6h6`(P3})DWT&ah-bgbgO5xX+yU(uoS5@or z@zh#@(94#wv|dgkRCNOoNj>gp)0B~{O>tNHSo9`=OvIP1dTXwrCiR3W1YaReu6(Mn`I!8NFeGpJPYu09cwyPwmHZ8D0n z-ok{c65iv*tdrf)#dD#pbw58rTsQQ)e&S~mVkT0AU{UE1qclnt9)@W zA!>~NESOKt*jT4Po*O8Mu^9OThZb?|6n?e2dpfY!2vY&p+oiG!)v8lSOvq@a6F+Axt^u@_squabPvPg z5Z7Y_k{XTKa=t$1@!w$H!hrb%W8fCv6WK>-NN0>SXS@l1)=wb2R78Eitu~2dV7AVF zee4*=Fz~vGke__RjsJRz<~A`PS#0L|4aC%93x@E941n-E*C~PHWm|4!`_C0OrGAYO zrK|)Xdwj$_)kfMsgh+s|Ab=a4}nFmK|pO3Ar;Nh+BnRG3og7b|oHjVT##)X2|IeoH2 zYi6kAD0BC>9&_Ezv68Eq@xi5sU4J_qQT}|q;i)90h9pMI8LxKSpB78J`N^1qjPK`i zZl@UPAnSBirOe_*VUD)rM`m+BeUQuKkY-;yNsq(LgvXYLG4liD#4W=Sa=ekbAKT>{ zkCgv9i*^+-8B3DeziLwsEc}^d;Ktv*z0?<})e_j)#ZI-a8FkeMwlc`C-aB0!?d6@tDrE=>@SgQJ!KF>2b7 zH1D^aAcv#~A!41TD7C28+xH)ASpWtA#Zcd zDX}l~xSPpI?dJL2_uqef^}3c?=IQuw*L&Re3AkWHU;6RB&WDQ^pQ+Y%JSx3_N!keu zPnQTv1T2ENRsgND8^|o@?}c?Ot}%Lwq7a>YY;49k3qOT6xJX!NPv_>!7tzg5t(!rV z5IS7~pe?=kUQ2bE@qT-8{2+jb`o>bVcavJq&(A;JJ>1>hOYfguUw;1S#qFv8(~s}p zyuGQlwzdRj%XS*i}cj?lG~2)rRuLUB|}q7(66YntizC1Me; z6zn;Yj>T6s%6@anqQSRMjUpab1ls;9T6qoWt8jvjCBCa0+$ z&gYxQW68)YOiw1ybpdvJ+`i*aKjO=;1duO3tIy8chY$6`&GGg7`r>>#=;tpkXVrz~ zsYv1iAV5?sbc?BG)_Ska+S0YCMrq_Uji3Okayl)`@pRbl7+t9-ov&VhQ2G4Rm)GC^ z_La=Lm5W%@NFbSop@QC90yqCf)Vh?BNL$>ET79KpWx!Bq30EK`}Nq0;p2x zcX*o--K?7!Ak$PuQ6UnUVMV00&L8Xfe|-D#|MKf^{`Jk>Pqz=Rr>VIV8fa3ApfggG zKvkJ0o#)BZKi%}Z`2qnm5q&(JN-1?Jv~Ffl9g&ZZxOXoGU{X{}j8;_?>@*O?C76VE zHm@_Hgft^+snibk)h`=hU~{`s#z`_-5I zH{ZSe?$!PMX=#g0Q_-pd_3~AsrF)Cs-1jXBDPg5xnt@;n|Prv8GS^zFRxL_i?C0yVy%c1d)Na9jwpT4>L<;(eZw@r4tW!{T5-A$9|#jF?m`gmO4JX%9s8SRE< zwwRsFj@>9QL-Q`@ZgdCYB0zmOF1N=%Pt&9*MWi|%NAxanwj>mm8fEOCZ!0? z6j4n|TKE1wj&&k+zo&1rAmfU7UZun(w;-|!1np;#4xGr=GP}Skz?;bYfu)$VI^1^(Ss%I%kV&$;i<++-eKuAwg zcbn~n7XyPOrerjEclr0WsR8fSFm}XD#u0E0cd|w`#QK{Iv-5B!)Rum#HT*$jonz%( zGDZowh>_{+giwONH9Yd)L~LtmU-RB3EZV>ObO+_jWHJE?qP2~V_-d`|muYLGEHh+K zCCM-_6H{Ut*360ZGdVBGd5H|lDMF!4gW0g0YrHZdifxEC9yyRe>B;Z8Tx`@n#b40 zi;Ia@qZl${n?QZ=B0;2BR?}#DHDjfjyRu=5jDEJZL$x?VL+PFeD4sEA^h6` z4da>>h{pKcTy3{Na*HL-L4pI#QnC4&*gbhNvzWCnKZ8H_8^5(Vq0nhCpDb}&+l_G@&SmJuD$=gExoNA-SShTO=a99H*;(h5 z-tMVE+O7q#84-q&7{iGF9r`6{KL@ph;a&$fgh6wS!DOYl^#kcQWejhd(3sX>{mp86 zfFx-hNUZ|twDuT=FP(0G3;e7*nOffeQvNHlpv`ud#YVqlf7mpkvs=w7elv z>!yz#2yY##9daJ`t00?g8ZX;u@UYG)^FhGKy4AzxrEg6Wzy79}FB5<>V#l$An|pDR}`kXx&DUBVTBx7?i#D`B101SUXwoTFA8(+p0p{SMiPkr^3^5N94h?5gf+F*9$}&}rQnHquiO3GV_y zlA`Fw$ z{bBz0+qcK#QefYFdj0IOe!M&V?QehTZ7K7F&LO^DC4y$V-TuYP7pgFWid2>Jecexr zOxh%2hTVjV^ZD<8_}Iwew`bgAYZ&PuwuJlrd~J%y@ zlM2Pj9#tKEza1sJ42YmG&V>Xj(T&toNW}l-UT$>$i2(?EFHy=r(T4yue-6UgP~v8D zq^>#Dv!1dI=|$ABT9(Bdz;?54R$$G##?{-jf<_~I??wa421ukGL6|Jrs*S@E73W`i zFY4t7lg;y_(^5pdSPh{C`-|!0do_b(5>Q$!0@e&|+LcmI-~Kp%`4x$BcDDcZ*LVNn z@1}>l+n?U_Klq&c-OKCU)%pDTF0w)MN>R41u_&>RT3WX<;p+L>$D4bn(>Hr9X-WIz z!`=Qci$`1{gnYPtxL@Scm)D*;=IA99l4D^+wFI0j+FBRU%+`ByN+Jn+REKN9SY4N~ zEQyppOrpPSLx_Zke7HOP z=BM|&{ccw=6)n?LM6Se_$jH+_#`mo^L-BAE7^|sluwNsZLZyv2J|MueSrpc}8xztn9 z`;IPU6{isc4qxJ|Igri=3EBa$M-8R1^)9MvY3K&L9^Y}pVu1CoDh1+BHKJO$nTdOE z3D*+qi{w)hLk~ka{$!vK@O}hWV~}u-$NCWfSr!g!R$T@rF{W_G8HJ{EPUy^d_=u%E zLdg6(3B=gV3yh#U2LmY*J}CW5VrPd8MLbW{rNCLL@Lf4~5AikK@`@>BGtzgqOmfEfGV~2F11tpg(FT zQ26#Wl8JrD=M5Ye(u7>#^)HEA5FTL=f9uvs;y;ZRJ&c^V6&m}6?QDUWFG!vXA;UV( zAvnU|O!!g?13lgjgn%p+LJIon{CVaY!om)4cGre$+#HvTTzqJzjr9Dw8(d}y)}Sl7y7RgiJl z|IrY(Y~A)x>Os&U8{y95)hBK#&2y@dk6*Rld#tuNt#;m_wU? z_GzRM&1tVI>%SXv9Sgm#&DhtV&xVFz{Yp+f&Cb~QC+jD!|B}Xt*zk~>HH|^%4}5u* zd2eg1MQYZ1HEi>>r)#u=@Re2@2`K{#4Lc`;HiTDrmw_dcJVm;Iv}UVy5gE-NWP`u9 z!(0Ed@qJ^$2wmQ~p)t^5NaItWp!zZyZLSkVJRAU}wkyw%> zqIh^iB68e9>V4BpRJuV#wU*ubt|48LSxq7KMq5HWFNHdF;p2^^4EWuAcYa z!+3e_SODBXqB%Yw$hpqDsdn%4010{yqe2*Z6xVZPAssj_JsOEIGItPXBc3gWE?K4{ znsQ2O9Aul(2&$m<-cO5&LO}CYt(Mm{qp7Ehl#wWMb$O;m-@bX@Pp4gxUw`#U6}-7$ z{_eN0RBP7eQh^wITwoKsy1Y6+KeNbyLls=^cO^Ye-V3zDZeEP9ZcZXXny!YJ8Ntcu1j2;4>pi_CxS?r$%Tg{%#Y9)YQR9k1r#iE^WJNS!>ROVx}o0 z6-mE}#Q7uyPKjoKExsdu^c$%Xv9_t2l+g)gJlc&H0CuwyDF?<5K%FDP(wdf1nkjmR zW^FsM?u}8{Mr}E+Et7@=$k)5+5s{546`HZplv-R8+~N}kXx=h%g`IYFKFrJQsYJ!A zO|CpZvX?s7eSiI4j*l#}91i7=ekK3@Z{+r#Z{Hu^-yN>z{jPrY{Nl&=KTY$bom#*S z@17t;De4{8G95wUyjQ_K7A@?GcWb@By?ge_%i^ps1eCkm$2YhAlb07|nmGJr*xC3p zqrBU=Tr>WN0#1%&q&nu2s6S!D&B7%80yVDXC6rqi-EXg$a zoueW~y}f-rJDcaJTIa*#a%#q* zgFEh;C&WTT9l}V`)FK!AdVPHk;Pso2_m4}_B4E#gS*~lY>~4U~EF*EatmU1rp_i1r z2o*#B|y?ZzkG8Yx$ zq%x`QO7U(*>Q;DMFk<)0uja?1ol9r$G(i*jc;d~{y5XVY$D2peUR<2@j(3fJ{oR{i zJiGkr<^J9lL%~!QIcc3lrA}qafKW150&Ccn)SToIasZyN<}P9JLk8vK-!&sj2u@NlCdA&F%PaC-zGT`(F&2}N!?s*h9etwACA@m@tP_NL{6Ip zLubx;`_vT7z2GMPSpDe;t;ZT+16kMjC=44?1~8ttaxRH;Ms8tHX1O<8ZYZp_`^k}S zI3gu~^=75g@A)^vB`PF}O~#(ZX2>Qs8xs~8GZ>j`{_}Xl_)3s%>NZvbUv0n3Au)&u zCF9x^t7H&3{<~eHP4F69y^e1PZ9GI*V7@*w29FWh zB}Q21%q?fN`EmfnAxJ6hxm_8cr*X>llK2VN?;&5cZnvzTPqROyEEj030>eRIGqh9; z8M6)xn31xK>5S0@91kJNhpfZeq&jjGZS3wKO z9)HPINy*Q-gyrX0|5Wo;%#kuUHgYupNd=}Z<)mYsSF;kc#L6vg-W!4xTjmdv?MF6y z>%UyLc%arX=I{pVstpStPehWHly%6%mB-lPY%K+9weK6P$~4n-&_guFFxG!=tmqKZ zG&RI#o{`TeTz|SbARAUJj@8FkWRRs?*Djxn^f8Qdza4;eA^ z6LDFU9-DoNF%v`RpI8r!u?_69dC=-OhB;UrAwa26F;EnBp3(t$7tx+oTl{;zY*Keq znTnwIwg|jdrr}Oi}v+H&`(M(GbvU{lO6@uW$N&X}O zJx{_p{ajBG6Lhl|Uwkng&a8LQI3dV+0AAe0om}tpJe^Lbw?F(;%RC>>T3b9pK;shz z8oIT|JE&ZL{^joMaB59+{dC+|AIwoy##I%YYb~X8vqp*hI7G=jGwEIunILI|7F|qQ z=WbS-ZNx^9oGt+CDViiydS^$rj}&NBDn>t^02CEEiDTmSgmDdofVjIVIT~zrZcdQ=cXk)>0eN&11~S7 zlX?vTW~_Dfh^3Un`R;go)U2sBFoi?YF2Mdw-@oE_Kgh3s36%1Sucxc?<@Q1E?v~f@ z@y&~=md`)A_{-n?AcCS|KoOXTI)UOGr#aojn|HSjHq~l~)>≧|`eWYp69l7 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�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%0DSXl%GFM1d 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�KWj?Yc8mbVH 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 `*F)%x4Bg1lK= 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 tb!C`%PXL1b;w z!Wny|=2m3F(q?c+1SS39=2tFX6`OvYwGc}#)Z&QfrCD)O8c;=#^$K>S#nQGC8tY0T zs*tD5+nWi`raK-#Lxw=ha9CZ~BWQJr>T#h>p-b0~rqDPgM^vG4&}gP4eBaJ-O{qhb43iPdYgVOqV{N{@WT#J^&3N6Jm33=K{w* zSsjI5FqS1*i1EVnQkVM5KFF9*e;cD@fcC?Vom)5_ z3Nswivx&zlr6xAs%h;*IKp0rt8gv zbk!tft+7%N)`)!yA5;l>{N2JpH=6VLbovUzHLhL?N_vDggq_j8raC!okR~9!6q4$f z&MtSd-8?wT1T*we-@!o*mveb8n(2#;;GBkSm^wt9vB0Emb7@rCFL>)g8lI6Q3}f21 ziclkbJKEb@7AkIM(n>R_3CKA&{TZH9(9ZMTUNcCs-;JZ!tJ9=3+$jw<-DOA9;grU7 zB+9{|#i(*d8SBapa7Dng=9`jOt01B_q^lI5Z5I=^0|_3l6O~&1&)NwGt$9O{99zIf zx7zHzdbMRSp5Y)3gZN$S3i3;czg-8T+0~%2v(tx( zed!PpFS;j+mu|>T=RH75ot5?IkIoWIFoNd*1vLstXHm;R`0`pdIgZsEf z9=4f~1QqDo(~eem;f&avqXYGlG6FO{Z*09GjpyhSlF9dG&cX}7Fo4;ZmkjeWHe!B> zcH_!CC@EWOR4A*b^9d~XWjM#2r4Tb9pnhRBdbyrVQeP(+2TwjUrdzIerz)(KAd@QM ztajK~zFWy+nAsYd`Dyysfi4^dHg0qG%=Y-y&}`cl2^6)Pa3el7_+X4GjKx)kP1&3d zRaUY#Tefoqsbz&0B4x1-Od{52in6tWSmg^hFU*j!6G|f;z_yd>8CxOLSIQ0# zg%Q(6Uay2QTqv-{FS<&T)_UR1$_6GqkQG-Vj#6_|^Ruzz|I#&R8FuNd2npq0Gfwqx z)5g5m;$=>|7%JE3_Rlv^3S4^0g9#QxnkLzcgwqWv%=JDSr}ya&Q(r7z8VaqdTtx zQd*NVU|WtJ3SMR@Eqip?4NjVC-d$>uBQnwkgN|o z9=l`*O^!X)J^L#;CP53}E8VFPaNqK=z3=Pe@USE3^Y(Op+h$s&Qs(KX5!=eTKgX}XC+YWG}@{&Svr;P z%R|&I5g2VJC|_SoM5bIU-do%KPkRel+{wrvC?7NYW^VE&>|8FCLSdH3ann5_VU`~_ z!nJJ1!xSrmFm*DQk>xZg-%=StX?=NEawu*OjE$dec-XMQ&v&;9f&1?g8;`L_V9!vR zEh#rml0@DTB)hjt%e-Z~)#l>zcnPeU--|}~!M!-2`c*FCYSM}mI881sd_L!Ne@@+t zpW8peEc~;O)m{R_@nm;QCxXK2rE*BQ1XdcS z`}PB(vOuV+o)>>;!hF28?tv^S^-Y2nWdY~_mjKXk$ZD*WU zulut5=6k`_tm(M$1{Q5A2v}~%auNW)TG#l?^?g$Cj4MMjGRZ=wD8QiN-}8!u5455$ zLr_(2wKq9rmoJ&9fu`d#hA`U;Hu8f$ZfKLw%$H4Xu2Ms6QG!=Ec5D&%B;Iptx^jNc zf>YBJ_h)!|1%gZw@CfqS$F@J*&8PkJpCOeKX;dm~Gk2vutteUKSL%9qu8RfBg@GzJ zj9)FzoQwgvD+mgcZ%{WIG=GRy0Ip%Rr;D)fT=!u1c7fGxHNZ7HD0f6NEOHcOt}Zif zaGTDH;mVZZFhF{7xvlqnL_W-W*Ha-VOr$II

    kID&P5mwT?u(nc9(PV>Apl&9_lr^;Ox@A(! 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 literal 0 HcmV?d00001 diff --git a/smtERP-web/public/static/blue.png b/smtERP-web/public/static/blue.png new file mode 100644 index 0000000000000000000000000000000000000000..37d0ed4da0aa197834a3c4f2546fecef5cf15cfe GIT binary patch literal 42984 zcmeFZ2VB$1*DoAI#e%TAVnLcEfQS$XC3JKVFmzEtx)=gd1BBj!y2^?I8jxN@5LBf1 zt|A~^dJiZibcE0XBzY(7%KG1D|M&5E?!E7Q@B5L@CuI0#&Y79-%$)N*XNKI@(NaCI z@7O*F1abg*@q#V{vQr8I*-^Gi zxu&ThgTmMgn_FORpoKl`9YJjfL{8De(Hv!qb~%0nZDs8se{#OG^5k)A3;C1!5}G2K zj!Nj8))&2;(U-lnuAsbZQPLJC6&3c$dB^|-_GlOL;~w^Q4pl@Jw|5@`EycXA1KK=TUg5IUQqe7Iq;YK$(t@NjxsQqySuxvyO=P>*$O5qEiDZb zfy3Z%Ay7jI>*?TP?jhuWJ@to@uX-+^u_$M2M;B|1!*RM^^BWjf7x|MX=?!iF{5dXr zM@`M`rW~+;q6ct`jd0 zw)nqvV*BGQJpO3}V6ptO=vNT`Nyx?8^52Y_{>i^>3+-Y3Z^Y=I{2{irrv8{}InXyv zO_>WAlq($sG*AaB3tL-T$lMUMFo%nqTL_7WN}+{NqT&)l=9UsSgrp=82obRxq9S4z z;$KyNBmN&$Ydc$mjcRW9-{|o_i2eul7p<`_7-!FK5CS-DZNJNCr+|A?!!q=UM@KtrlsSDtz}y@x{yK?ow{u%Y_W!Ug6%)09o5L-HB*hUogv3O|;X>vX<~M}El!=L&n~OHxQG#8+Vdbc}zuaDREuZw${I4^m|M!gff7+6MA94JHK>Zgj>Hi-$i`c8mW?RPslMz7hE+jhO#V^zet~ ze-Qnvg|7%-_zTEyc&D5NO2!i7Y;W$O@Qo$<>)|(gwn?9i62=bWtckHeD~QR#{^{{I zQUH4yC1;6s8)_5?^S1=g6|0ICe9@C$-zfnXFm1U50vaN4z;c`*Y9qrKH%=}kg^RN4nPItBmkAl>H=5hY} zHU8NcY>npM^;mA})2&zy1T4)zJ*qmgYWzNhd5uJ1uDJD88rg1Fr8uX}iu3xVEAA zp282fz6Yi4IzQmrhT?k)Kj8Wvl(y^qfNL9y?w8ezuJZ$~Z79B{@B^;zL20|r z54g6W_@2TKxV{Ia?K(f;+J@qL3P0fb9+bB0{D5m4itj1>fa`lu+OG2hu5Bp3r|<)= z??Gw1&JVb@q4=J{54gSurR_RD;M#`bdkR0``W}?F>->Og8;b8K{DA9wP};8Z1Fmf- zzNhd5uJ1u>LLjap5XjVZ2t+0l0y%=g zn^mhoAUAT57tUYt=$jdIkF>vPju;+_@*=KiVNTxu-QUFS_uWQsuHER^b0+-g&+6}w z@*YE-ZM}B+>MyrN19@NEKYB;BV2vGGqY~j)JV0nzips52Y%X?`Eo^M;^&a<42w;kI zUWw1|H>@mIoBjPk;7R(Ir!c)(`2ZbE9}JKTU;uxacdNg_jakvX0eUqh5z4T{0}W zp?G-w8h%9Q9x1z1WzJhoV-|aUPdqa;%93XwLETw1{1YL$d6YU6eZ{IRWzbhTFY?40 z(BpGsd%-uzK>X_uZhaff6aHcF7vzlg8~Sjr#QQUXw-<5@OyEt&a|a7}d%C!j6TJN& z6r9%CN$<{y<<_Nv#e8Pk=jq9E(mgwq0w`m7xxiG?WUPW17nW5s*w3PbXYu`#+{#_+ z1o!u0rw?z9BWxhg5a*Xvbh3)Jys)`}aA>xl4usa7*e|m<8n9~dX`sNxEzb%y)Hsl9 zbGnxnreb9o*Dz&9QI%m)6nH>e z!nH}F2+3y!v0GaA#&tOPQhn!696#)AS?uqH94YIy<{ZE zr1@#sibcY-b9)Pwmp{SBStWc3zl`%SyceQ9v4LIXXAvt zfx2jHaFLe=hU%`;Fj5I?HqKp>b@~cLr%mM5L%k@+6^i2rC^>S=PKtFA6-#5W*kTic`tqHObhj_5siY1S{`uM2wVjFQRC4r zlO%Hb-Ra!PsmgkyFs0wFC+h^VZE!Fyw^>HeD&EtQd*OH0(MVKq-9Rz69XzK}sjrQT z;e`Y*Tk0x~hM(AwO>aPR>Bcu1^o`{c)7K=tj)?tOu{0{XV6iis2T+vp$Rb*s}3s{ zPoQlQ+xz=tpq_Q=rubaK7hh0}ao~xxpar)&`S0^W=z8J2XxDP&I z^_@^6ZxR&~o}FGCW>S>Gc~7Fr-Rq~Yov)&HurLJpS5XY!ByO2)Hpjdy&C(aP;vwglSgs#P3r;d5iG=qY)5`Q99~x?Z~Blf=Xg{-5MGvy`P*XD*W# zi7g*c+%8Hos`H%v6opTfVm;)Zv!-QIO8Y}v-mOx~7VQm{u0U$)au2VLbFrF6RMM7) z#;SOzj`-1;+?Hm3MRFad`+yS@g%*!6BaH$MT#q7gP%a8lc>C&sGLATGggxy{&X@_BETxl&1KDRw-{YTTg3ORrgK z`?WqpvSJ)Hl9` zrKb0IeUU9C$4n}0)=3j%vCh?p^ph(*HTx`KuUyD6Q7qRv% zn&n3|H(G>+7>273dMXpvjI`?m6gNLL#>>mjdk<|m_uCha0U%U_%f7sm`}}iAkA2Z& zXaJYnwPw&QpBWTSLko^dGIs5}>iKEES!BZID8DCR-Z+*-z3G~fh7*kOB1ArOdt}1l zovDeJ`?Od4BA$7WLP9!mdO&8etfjO{E12H#H>UEaOBi7VKi`Ut!TIq!Je$|?qq7*C zH-X&jZb>NfL{*f>$H#MG8%4>Vk5oop)|Qu;?#^sUGhKcqSBAPuaNG1^+6lSN$t8=D z!r}S?jXipDd?rke5M499P1e`f7jLop99IN0i(RNbV)g0W-3>}H7Z;c3dV4~=Hg3J0 zOjxamuu>pJ6;HiNTU^Rbh)AQ(XB#LG``ITvW^T=|T}PP~g=)zNAmJtB8TCB-8EO?G zHx?@!XNcv3BvaCAl-oL%ZBLdeYrJTfyMl)aeVIOhRY)y+$yaWaR>tgym5GpuEj)#@ z&9TyApwu!JVHRJ-swn3^WnQ}oEYq-vaX{X9OIP@271i>hyadx?3)@=G{POH{6?|GtxriTtGBMAS=HE%pAH z>L|*y)!DU;Dn`1c6S%kTzCq4!o^wf93hOAbDw;A6oOpf6vqh;ZB{%&;0(COMa-=56 zv!{wXe6?b=e54JFvLcN)HGKKvsIdG}du$iX<9r3V2{T^kH(lu5+Me*3HYg>ez9Gv6 zh4_muP9-76ZzoBjs{;>h89rY1@KGU*r#b;FUAk>yl8D+AKCl`beAc)~1Z)K@Zt9l+ zVrQnG>y}^f_4O^Dc&6BRvERwyfWz^%C(VGpgp}${iJA+L z7kVH}o^z-yTsc)4^_HWuuzP6U>mw>>&6hS^A0Y5qIRI1V)Eypq>d=I5eV@i zeoIMF3cg-4viy9;krK9gTC%fwWh?oaO{t2MNuMuwcp43?;+_;L-1Mam*C=t)$MhvI zNpg%nrs=M9PjZ7cQYwkmjZr9EtVP$eTwXk19VH(RkNzUCS?qe}S zo0i;S?#EMG*ta}>1yP^fbg|*#*-GB(FaCF!AXz-|#YKorc`sDpvkx(ZrIZ1;etWP? z)tw2RL^N2$BfmJe&lIS)LCCnYMK(!dHP^wCJ z@X%uNcuXiXE)d#b|^E^FW=!mI@d0&5jdzWOk!QyL!Ts$<>t21pe zJH+>F!e&EdeRt-%p5J<9cM7HWpDQ@)o0E5@C-}KAvO~O3IG(|Hed~R;eX((W2Wu+19S)}vi^N8`{7GDR#VtC;w z@P1nGjiyO%a^(^;ZQ_>V%^G$jo(HVWm-+e6Ns+2osB0a;MK4axeSydBM;GxK+8?hI-x#JE<85=8SNUA| zR;{`%ikoZqwuO(*Ya2a2XvMO%Df`;v!<8Q#9;5FFICi}8tYO~GUstULOI+ExxSF2m zn?@Cu&)R!Vs+&bC(nyNh-o9v-p(PG$!Gbvoqt>Q%L6>%YVgNV3wMx6`onm1MBs7=Pu&Mud=P!~s5}Iq3N>rVvhBb?q)p_dk_06IlfBM8#f!mlZBz~!4 z#gIQ4=UQqW7B-GFw4YZG$j{H;f`8g*C^{2InU0dAWu4u8?<_A>@2r^@&CNO2f-d1( z9@eos(;)FF`fLkXib2L!xnlFhn8AQNzI47qmhRcGHSAWSqy(CeO@7~RtArlQs(T06 zxw)GUAO;?R7=fP{@9jWc&!oxZ-w;u?^SaSDZR<{ZQ0pgcB%2TlkQPltuv#qeMW=ciB(?Qj54K90;?Fjx}nTrc3c7@81^@trpE>{U-ln9kTh`?<{y40sZ2UK^NcKQ=6p z3FP#>`M90CK+1~Jb)C9VITVd<2)CLOq>T?(1>t{kgv{JA#7A%y3uMaN@TE?$!kW7) zsmsv1P(WJB0PScFjbBQxrv)irvH;u4D$Z38KYDq2bO0t?2h(Rs9?3cww-fRvY&qru z2g%@JaPYXT*@j`T{7O%(lL`vod_VG-EQdOv?P!iQS2jQ?ICo4Y=xj$Pr^9}AY9E1KW1O7L|XZ;mqx^hd=2b3EWN5@e0R z42`s~DL+cvqD-st^yw6w^&6c!hBAE@knoeslrmpL}F`*p9{Uiv7X~mrAxu5@08!==uhjO zX6NK=WVecaY@1mwNw-SQGb20+h#`@%PT$Tr3B5Pju)aB1ilI^IqQAhi@KMcL`-^xV zKuWdD%*?pSA5_P0?-#yVr+fXNwTp{5(z(w%b?m;j&keuL5uVg}Tt%coi)Y$FMo47X za>Ws@3h7GsrJBw4duHRxnK<8Ym|1+S!b-Mhdki6rzST`kLT!s9pPhzFNksxIW8Dd! zNIZ-?N4llFM83SL({8mu`Uy`@V=Bee#-zR7X$?84FlM)F$L04)<1C}Uu`973J62D( z_fYa3#kD&fHu=a^|Nc1p6SZ`&39b7mM4L?pxq&!qdu4^CkDZ?FP8^FQTU;zXzBZ`z z^QC@blOU5ALP33 zSLoWmvncWV5k^+3a!Wdyy6r%7EG zvk?F;=&I0OqqNSHE7Ep@eI8#@2VbZ_t}hmS={d04xlCQ)p^4JFV7d^fKch1rqgK#V z84f*S?07!VOWwEJr&t$v$Di>!>r@jCGyPUXs%PSDR{93PqHs37+P-iw96EW;<6-Cy zNF@~N@TYAO+%X8BW@Pi!4GTdQ)Zmx-k(Z#lVFh0j6jKu{kP0QV835LYHCAqo6I5xVh={8F;JkIq2mwBO6`&5*lS>WZ=Mb(c?@cd}K0Hy??2AYXd}f zbxpj?vWG9f%!AHU^p&{U+Sqp*%6|-7gLsP=cQ{YVV@VkYyT%9S{oLsTESpe+Zk(HGN&Ik~&h*AB@^{aiBjSVwH>nQ%65Rpl{>3kV+@nn%46l*w$X_B#2^Cx|@ z`sLvlt}Pes`_5W%i=3z^_fql8bMQJ0GmQlbI-}&h-S9PV!%(LeYQQCcJ}-9TDBZxg zDd3?|tI_K1lHQL)86c73U91Q%K09yod@om2#{HK$h6HZL+vA(37#SIhCsShD+};a- z*4kEvj~ZazRk{hjL$q!g?>5&>RPGu@Q60n(0)fnf3zY)*Hs&)UVRDjO4}x9ucc4-( zE)tB6jAv>YJPEau;7eLxDXffZ0ht)j{(eF@J&c>2nu=z_*@EubY{lg{jIw&WE(GT(rqY`rd=8Cn&9(^Whm2Cv*qWART;rsq7pipW10v~yt}-G zeSFDNnBsbCh%<epR{Z%zz5;to5$5Zf!YlXGM=MEhEV6^sxK_%BGwKlglh zF#ZvulH7#EgK$doB`>NU1hAc*PoAB2Ug@EA+;zff<5UA`ouRlGyo>rx;z=haUo8CgF7hriJ=sDkJnd#SM z!@FP~$i##MIt7+J``l1D-%vwjn2gQ~43xQSkg>OWG&x;N-lImRS=z$Z za$tFgJYYss&L|#_hSq`jhn~G1ok$ANQdP}&xBwcaP$5=aw)v*%hS6A&P@FWdt} z`;nG3Hkwqr6e@o^;0?3kc>Qb#0P+9ak!l%>GHCy@l70K43uV!EvXUIo>(!l^i;VX*J#Q@J3=wY0Kg+4<^f@mRQ#^J-@TGJ~pN*%B8aX1W&5OsnA;?^-{( zYj4=rsWM+8INU0}zOcBtnd466p^>rHwzdr*lMzbyho1G9<3Y4BxY~TJ!pAeCY_Z8 zzJ&2B+|V!nB9YlhH@T_uv({UVH~{Sb4Zr%%>Eh3Uf{XF1W&DDAuRnMa<05LyKcUDC zybs`6`Qv{cu?v|K5?T<{(X!2^x(0Zm?UnP4&rc15g@yc_uZn3b7MrVYFkQ*91ICG- zO{6D)Q`2YPq)}=)u^PgqGdX25Xjp?gI63i|Q^JK+dX2tnw96E9e0qg`Y%j8Rv*sD0 zZ1Y2qCp~2XV*fFa!SSGt|50#9f&w<9YK|xad!S0llo?E~C z4A#N9Y7pZ!^#dlKmQiv>5uDU5*6UZmTf7ORwn2Hf(A&*`mw}v6Eq3iw08xJ4Q(Mcy zC<@Cu`0C58Hu^$3S6x0n5fr7zJVsCB9u_hTQ{1dl1i3?OjSELyTwIi_y8~f^uu4yt zlfmgsTsLRF=%D>wMo8Fg^bH2c(|6OfQRWyK8)fRU8BM~(#Dp9-M2@3(%($Slwe|7c{YS=^LBuGDA;jX=I)rFO^b=JbQ#&lv^VmnE#?;xi$%5a!l?;!}mmKSy&G%td%oZB0W#62}J|6>L#_rzj1V*AE{)OfD~%=Sr$7p7U+d>=tMN zXZf4%Ol(IJyq|*`I{wbG^S^6)whah*HW(4`Z{NQ40cVR%VhQ9%-2je$a59@(S}L3A z*O}HvYrvoK?%IN@i;-r!IETwfi~g5tHnTH){j7Y+xe7 zy7AOz`tk4N%uFLliaHKChNwx%0MkW`b04qaz-SQfYrE;(S}5*54ZPgxOrG?Z_~78+ zSf?8HEdr2kRA}kqk_X=a$+9*;J6e3k#gO<(ZJ($+`yTH9qb~^k77f}>A$lwg;vagC z?0R#a!#9R{d$+DIB&?0{w^JVRCvPNL$-H<|BvQpnA41Bf0w2q|va+$)xz51d^CR!w zy9WY3-SxeyfI8;-QP%0yM5Fu#nz{=|^xrX}!V0c2oi5JIh*7oYk0R(dpiUQ`tgD@iOsF)2BN&xVk>_dD zd1J@7yQFEGB+|4Qt;A)c6hszf;Ox5b6v$5vICbM2aTG3W#@C?qKoLcu5e{y_r&ih)#1OFsB(Ar+9frJJZ&3#gH-YWUL zQMv2-z3WvCxt~hrpSxF^u+I(kwVBvXPpH+Jvm(2Z+I36(@evsZnNvlkDo-!9QqmXi;A6`Z*H+8bNB?hczdH&US#vjBgc93m92Mj1NMp1c*8K0 z@Hn{$QTGbE?7JC9tx>FA6u%vubZP>8TodNc*yGND{~QdhVj{D1gmOOa2-eWO{2K7j zw_xxa$=9Ms3EAseHCBg=@O}4@eNSKzh@&H*)^bljXFN11$}ZPLI-!n*h5;+Yxl>-s zzq}MtSMRjBNk}f@eHq7Db@h7AQMFTVX4K)48^mdAZMe`&O>MZW-nH8=lVNq?$rBjD zDV27Q&c65#FMQ)o!jUq+T`adjw{kU`5(P%=vAP4H9l@7IbqtoFX`we<@q}{Pgzp34 zCM}x)sKHMR{2D4%$ZU9BwD`MbrV{=Re51BafaDx2WJ4VcJv&=>K>Aj{QM`ruF^r?X zjltj^fmQDvpPP``(sgagZgzOjz+d<@xjqx1f;sbo8N5NsC==}7bpzzA)bft&w27U& zX9)FB#)GAGpB<`Mp1@<-5J7LJ)EI*jZK~}>`B|@+V01Un)aA^W6=mlNA)S0{tXM>@ zx3%42?78}wt-&a3unAdE^XiPwE=rK&DJ9felr6^y$(A*UEd4Z45?Y-uU348qT>sDp z^+nG9cC>!C+;ITnpq>uPl>N-x4z!-2-|6yO$wenn91eEv{hKr9)y!AZWZ4QWX5IzO zrmF{(BCNu)C1@e3{0sCHC4JRmgr;U8VoDvfWDh9w~xWR+vi2j z3D`HjU&%3?^MgD`yzRDjvf|^@U^s&WbzbZ&=ii5#PYet6=JUGa<#g_45VSgHFJWBg zn7lN^O$k(KdwNs4;li(EJGHj{+p`(!)80=QN(;{jO=@0x{kyc6{~$P5lI=XEmc?3< ztVDJ=U~5>kAW_dVaHK#itgHFR?yzvM8ZLS7U3n|Bs-qwj+mqSzVlC0-UR&FdU+&ha z+!_QdS9Z#QBHSUvx%>2!TMy@RvREx_T~q^dChZqi3Z-_w$=Jzxjy$(7j)gHyEsgl* z^bKy7(^1blL-8EV`@-@B7_&|>FoiW_`9jp(G=poBN8iv{!W%{ebcQjj{P8a!T-lLz z5ID^&cXTA}*__C^mtiN2MFgb(d^o$paN1n(oiD@bPw9Ihr*nljAT#fC7SHVkSAG4< zV^TzS&Ai}q*{OCBa4flV>MB1&WC6A3g#y+CSqT|Fc>2WFJ=uSA-XL4cKzOFhWEu z!B{vWmyy}fx;K7QLU?iy-ojc}Rwn2vxNFRU_h&?CO(9apkE7#F15RH@NNGA;bKra>(qkg-Rg;C;|Oh3w_y$B=3;%r$qAXc znk{}%K{&5SwU`ldsE}8{?+GI-NTDZ^4LI1Q2@`L#D^=PrwiYCdTH3rI=NsmVmxlH= ziWB6Tb&bzeFBeXnFL_Q5No9lRCq>~9gzqfLyLsn~3$(l0$YTz#~o(5fZ>4#{@gq+T3 z+Pq;O4D(ADIjVRE?D`S8vce+ypr3cmoO_dvh>0GF?cyFK0zBf7PM1e28P1rC2klic zx_17ZBwzDT_@E3l&X-8qx@0`gtSqTHkGZ;f5Y93qz+J!EyFnwT`Hmy~iSUIqImWXR%hXFhWY*4Hw#t z;hQVQ3NBjBJmii@-#PQ@a&qC@TH<0Nmeij_OMcpmh-tg#n{mkX`EnqRgQ0eX&zZA5 zybJ0B*?8TxZgN_MYd6GgzN9aSWHw7o5nA@SzV=RZuXOO4xqAKG3DKxP*&K;nQf`45 zoA`#Fm4U28p^4;<;92d5=%}6rLPL9W80&Sjyh6VtHu1WUnYR~Z7E3Y&>ALvp&IfST z9xf!N-O+9qt>)^z5)%>OO0#lEi+fG)m0_8E)fN06se(!+$sGaruZSxh@`q0ezg2LN zVTR1~I+nQYl{Q5zwhmHf&UxXXMq;)R^IS#)@tMpD5&?%Baw-Z$U{mYneyuA~yBaGB zd6|rgC|(Z=%}(wJw%1FQc-h@|6vYyDnf={e;Q$8z^8UllKDiWkJQOFl8Bpvvs#Ll; zU|T|!z)Y;`W?;NKSj-eNitGa%M|e$!8iedw^|NM5;jh>EhA*BRF4AtO5jtdjmLFI~ zn?Q&^lVog0S@v|`rtQW&ACe%t+03awP*Byf`E1sy_!XtPbaU>|9jpBaDJk?dyV^1| z63?RiQSOAdQ6c#TO4n#u1kimx6kJrXgg^nGL3Bs3n)C0^&X)g@H)1o(qI7cjBAyL>R7~PCh$7D| za~wfti`Tu)2$zawbLXSmz~Ao|HoRsQY>`$3(|W949dw z9XrnyW|DpOV8!)w+2T9S^&Fsk+l@?Vo^$tVoH%S_uwHKzrW$pq*VnX3ZI5w1#39d` ziOR9Ob#2x)nGdfHZzeJ#yJQJjVpx#1${Grk6;qH$xE09N%|J=Cb7F!J6w)%3(Zvm07mtgc5K(hctlZffc0P6%cuwkuV}5kvgUY0XVRLYqm5 zYLP=d_rYTHr`UFAE@eG_3l$8LE$t4i*sS_Un%j?{7Ln!`$-zTIpR8D5;o}jM2hL-| zm)+LZ9ZMG5=H|z7ea&h{Q{?v_8&+YXJp=C)%i@z;76O1_2fcFVFl>KuCcL)a#;rB9 z!dSsWtN9ouq@z9D-NiH-H|IeSR&>{JQnj?O<<=c2YFJ$tlRx5u!_t(3A498zg#FJG zA$IhCXL_R`*p+v)>Xh|wf*Gp{f#7~%Ok=WdY8;;_G*FoP5UAX_0ZG1>x5oP$gOCMtV?+>+Xxi-O=-wTw zGw-%qLnz-IcsSd9cQP<2a1!H`|672I;Dyh4}vmcwXG)F1op z^Z4tA&+;@!cGE-CZy98Na?G0Vf>xIY?H*)&#orst785!UYGJM`dj?r}!{QeS%LvP% zA&V6RRX{KKXDV0c%~AMXJBRrFF{_jTBu4kFIy}`=xKa1vmG|fN7G(0XX*Sr@jy}tP z1(S&^se+if^-V_Fb??3V636BI!BqC7)?aY)X4yt<*bT5Jky~!Y;|Qt@1A8he>CFX`uz5}UQPBwjhrs(sUWS8MM*(%j z!A^`m--4g(Co}^&;43D}g>fj~z{p<&t8$Iryk+PK1DAx-L+v%5c6VkmGBA}EW=o$% zm)Y6h9`dGa&jF^zlCNxQk2hEodKolRE@v3}j1 z`xxa?BApMd^~0&3s>a739Xeh7dF3JPy;l;_$#%)^%<}z@aw;S8OmB6tvOBJ;z0kYo zcpkLBK3`xp+EoxBuqX2UPR<#_fJ(80h#EKLvt*Ux^ty`7Fz2lGm^3FHt%lsy=l->A z;p3E_>rYeZrbKSF-m!6j*G8*4&+et;=F$z8kxgPkl zqhlpC&#vfVw%WqwcPg_}hwVM=8>=t9I(P#4pn2D-3gB`4!^3{lhDEanL=(Bk;E%e} zZFF0HV?Bg|64U5Lb1*s90O$KzW<$jt$98L)EghnpI+E)ROT!AGOYFu zo8l1$KINp;_#qzh#b$2Gy?6e|*GfM>O6FAm*^uQi{AHoX1|Peta1mn1!zk5`%qHF{ zObgwCbyeuydIQa;G1Q*J3n4{6zV;8{v(~nWLxLTu*7owcG~}u`Nf{hN> zbkekm3B7?jrgWL1Tq%dI(@R-F9s!Yt`~S~tswe!m&I!$?Yy;` z?FbyH^Bc8uMsGxWj9)p-#tTwpJ7|`C`O3({5*R{QLWSIh14{R-c241aCe`RCkq1C1 zlk`qkR=n;+eF@wq&_6|wb$p34J=hC>6=X5IS!Pw+_k8dUz0t2e3UUx%prk{el11?r z=v=B?9xL%(^mz9;Uw&2eAus>Bl#3wgqi4}VY6?pE*=>opx&*4;w&ymhcFvbu(-Ynp zn*;pS@(s=#Bsa`} zSOdz?u)pec|A`mBxgwqPS?rLXgaAzu_o8qOtsxE-zy-p`-`tC^w_90>1bG?tB*f`A z7FjQQ!(|@HTs6}jh#w^+uRN`hch+9vbbPHHDC_Kq!l?pwfzL&-eNFxUK+mE)+jX%7d!?@kgzHA-62uD$)HOJ1W(z|)SYruDXK%#-t)fzvVP*FFUn zII94|BU)l+rxrLJeTb|ac=$!uXX=r1Ci~+84mNV9Y*noaVLRPv!Hb0PnBTIGJ?rwh zKA*3ynBM&vQKO8kjXS(5u5>>;_Mo{E2wdgejh-*dq^>M~a0_@=-EG|j&mMF5NQlhd zizvw4BW$hU-bmBs0`aR-jU;nAf^hAy`XQLkrDe;EET4yp?w%y9d%J>dzdg!9&LJ6C z3#{SB;fKzM7iv9E1;hCaB(-=5-5ST6T(4?zWiUmr-a4$kX0vzp7yUj5Efl|cK^RArCC&xhWZUM@#>q~gb@0vy6^DjC)Wcq zYKGSZAKQ>ZSX0Vj3=WmX82mm`xBhuy zb^p-RPmnOZ2h(ToT3ztWTfep>vlF?KSqGl(r*+6k{U=8@KDB2WN5-x{aDTH5(J^Jb z?6V;*xZir|*ZBJ7CpjPQFxEfsTuq_EmxiLbicPd+50(r; zsp97**e|0`r7NZy@;G`J1=UXn_i^rqbVRA8nVfodrTc>5wC3#;idd|LJr+-B>ZPb% z$OojT5oxnObm_FD{Yy$If1bkdqmP&Pz-j(2PGrPMh}sLGbdy(|q(siXS*4f98smfp zDxO*oF#~>Meb#C7+=1bfL3`s0#c@_zfZ)`ft$rbtj{(gWoxjW%7xjnPmpVMJb z^5nd=LvXsn5s=mEwb7i?uuDosB~i-IHkir|U?WmM);fEVT)-!gq288yQ$2m>GO>$^ zlMs2Cuer8Oj?Ku_x^0%N#~_Vy_gh=fJk5pKi0T?WJvO|Z^By-_DFKIzsQ934@kbz1 z>V5Tl{_}btZ*eB3ENomN^JG~7e^#y@6X%r1*r#h@O1S+A-P5SgLxb#^fiYr!RqiS^ zWRkR$y&Hq-4mUvQL2Rw}I?}LTh_X<03OO%@v49FVXxj4o5~4m{&OLTy*G%iVw1npD zB@W1yw;@}i+EQ;kXhxE+O3$M5xuF&i*=rs5j)y6*j|pAh~= zaRI07FOFf#<~-K}+MQ-Q1|%Vlke0dU$eImu`Rm?CR^5wcgJ6qkN{@g37<}dcgQ`KE zR~b#Gai?bSYwK1)zS>$J*RFD z8pozzao=+~>M>L(GO_I1s|kh<)0fH5es*SCwU{Bi=q}vQaLcSdm~l9!eVv=ll+F7> zR;XUcSZ=sD`gQ6+OpVd4`#HkDc=+dtb;U9LKkZy+R8!5?MiI-a*ih;4D!ogu!Ge^~ zrH85@B|r!edPGnZG?1tedVlHN07)o9b+J5PXp#o_l#YyXrA^HIVa~r1Fitx+LK&HXN>K`h><1 zS@eO~Vf@egV%s|eb%{Uz+8j))9tDg5LilOme7KeWGmxv*nMqU`q%ura3&P2Y%?YYX zGgvqly|WCq1Y6O^{c(!utc+;x~{|H3O+tF6BmxVWsXm7O8Q7L+~a;6W+rL9Y0);CUnlLtrdRIy$g0X&N^$?p<4jh=HJZrm$q1Iu z-u;f4anU6F!lO5z#7u>cV&phee+r4mxM-lfcdZnxp-iFV3~g*ey>zDw^+JE z+~{&?-H~3q(6Xq-i^rz%a!*gMpuNqLk}ufFf0LNF6s*2ytV{QCjo${lnS5rpU1crx z1e7#AxeCAD0k5I1{O$z4Z?RSy^Oyc+Q=d zOO@+!K{6}Go{0DWqn3_Ag{3?!;4$?^%~hwIIf*Oub@^i$9KqE+W&(dth%rMIXvIo_VScfUTdf$_{O#0e3BX}d0jABw!A}m2 zEwdUfb~$!?6!)=2P=x!qppOo6{&I^i)vc3-#0{TFlVl~)SxYUYC_bE7GOl$ptm@~) zN~F-QTqu=a0hLPC@lrB2GOrx4UPpJl>m0bbfiNn6u5--Nqpeo$IWIagPcn|-jx3X3 zLp(u|`ed>c7jx@1zJ#$)#g+p&av)9n1CO3K1X{0X^*+VRLvF$GQuDUe6jtQuCUmGCA$SUKWIG2s4nycjEm-o4lTJ%rJ_{zE@Hv%<*5na;xYrou?fWEJhU zf88#j$8)WTljJk@`PVj>)+H!^c1nIwam>v1+!pD_wVY#Q&m+2)-Z0D-pg+fcIjKeu zdQ4a1>u4Y4z#O%(27T;s6DVXsZJoUZU2y1Fsq9maAFXBfu3avB+;QxOYx-D;P4<8r z-e=5IjG8`AE6*pq8A%%L7o5|sq2aHh6U|EHc*@R@KVEz)c@$H+Xo5n zcjB^gQN}cFNKmzb1)Ubg)#NTdhk4Id^XS2SpM{8gs+;)O7n^4b%^e{o8YW3>hI1?M@sjpqJeKg2-29qi5?)fQD&>`0Bi?!jNlzt{#CFU$dww<-OtM>{ zMT@?5e<)UnAuwH!8*rb+$T_~TMSM6+|nn!|_D-&ameOeI;Yvlbwy1*=r5-38EDSK2|UKOM_~O|dueqW*!QWRem$ zlnwHUp*Eg_Wkgv`R-v%h_AdF}9H|XCn)ji60ozxoFu`T~G|a{RhEQ1@erIB4!sc;; zAo|{Sc4+xcYo3h|3- z8^tHpj@-aH$jQmL|3`Z!S53jdcVvIK3qkB%?p)wQlXw;|%$TbT9YE9kvuiMaIOTzZ zHutJme2;N;NCvS+JdAKF6_)ya41N*lpSSlng08cfHmPhP!|(@oIdpC#3f3kKRk|XY z-K-G(B7o?z%gytI#0ga(#aj0Mf|D!RYF-**Zs6| zlL83~aEUawzc8Jq&6czF!tBGn6*-pVkFT+F+L4jWq!5H>-xBMy4qi*ZsHj|cK_^c8 z8Q|UuExQC;Tt!Rt$Dbc;dhKcdCwe;yr7ow$_7Wr5PV4<)U3cW`8(}F%AKPCE=gM!I*uqSqgyBf zIQrvmtcFISb^)!2U8}k@4E|QRM5?Ql$w@xn z?#sh!BNLbQrv$h5a6$AoY)8@RoF4K8y&&rnQAs47cOFq&Clbamg=vA4lw% zA>HcdAp=R>RFZ&;U=Rhp6mCP|JZL%A4X=>0cRXE!43eB?$lcRYwYHW!aRO`aM^-@> zNN^>@a5@>3a1UaqE$?u8ou(#yPl_Yk&0p?a*=I7fv`hG27-u3w3+zoy*B_Q3Y*}7` z7mD`#iF!q?Oz0#p%QoI(RkB8(_rY3oa$y@J)Y(aoq`f_)xhXe-BHaCuW)z1n?}%r} zqTvy__G*`pAaO!smEFTz6!A0}C%6$bW-q8t6jW|t4yUfa8ZHY2@C7Bj2_0>>PK@e7 zMpE*t3=@vvxLs8=qootIB2LloYrW_$B0@sdHA;A2GoO1ps5tM(DY-Uj8@+={zHKTk zRNOeIW(c?RjOtB35+jJuJNq3{U9x>Nr-~Bc69anwSk1N1hoA4WFT&A!vHxb_qLk4;<{S4=pBKn@;Y#IV)?`p zD4Y{Fls{Fohf;9#uLM^YZ)arGza$R@_A1@c79RK6&#OK&?kM%l@~i;;em1KD+dyMN zj|U~kv;WIU_0hDUucl_3%5WWK<0^fwo;Jy6^+oRAaqDmk zgiAuZ$Ji58AEBKYHtmjjtk6KE7ur_weoc+cO#Cxan!;Wh*j(;?d^fXqeuj`ZKblTX z?W1KS*qPU_s8*a)2{Z7$>*HUUd<%!)YK@f$mEKf3=u`B)xMXC&jFF>ckF41Acz&br zirctFfd>t%k$GxtZ#EQ1(g&{8hKNWOIT*D3l+@S(C_tq2WnnR+fMdmAXXrs~g#Zi` z+poF*Djz`S>XT&I=^a;mkOm}KC_6gcMWXROx3wXsOf1sQ0y2`bY!ECh>D9LZi6YqB zZkL<6KUwEAa=E6rn+1#f4yqQ^^K0yG^OK!TyH0)0By;DT?hzjK0f zMM8}QJIQwb=yHzo$E8!vS5~Z+3u>>j?cUDul@2iuGk&uBWcO%eDWiha)iD;|7nKs} z8Xzjb4L4|ldpDwz@=kOn)y}c@>BUJ&r*A=fufKj=OAxuRT(SN}5PkWo@CQPLJ6{Ia0cQm z`b-qJ-lI$4GSNfNIAJjqabI-?k`02*6OEeywI>|?{96f$n z`Es=)a8P$?PQw+S86Wrl{D*R>yB6R(h*dS$;cB{#QolwiM!hJPhgnigPuU6o8N$I^ z6q)HSp<})}8F;Ob4(SBKCTb@6t*Hy(-Ex=UiZpta5h|(-OGsS*z|-mTr9D%YCs%y% zrOQPJIQ{!baY~6#YhhizADQxt`#xZIU5n)?wGNCzJA#0Nz|Pra$CTM##QPdt7y$#n zS@P-F<=QYF>lQB91mbCyxpDZtaI@v%n^l2iP_e2!Al6F4e~y29Zw~jS{uzL+KBg?x z&I+cr368sLrV8{D&r>sV5&>jRG~g)#t935O$E2YjOQDicW52N}dVq-Bz(_0*;e$% z`9V?O^w_95H7)RSwjDKXBqcUavtb@aE5ev1&*;@4XGnluy2h{ZM)!A^r}VG-5ilfl zEX<+DGwbvQeIDg)HJqfKtX9~U zIY9ichIzLe7EEYFWBYz z<5N`}`Y!QpmZ+nE*)8&fLQ02kLL%zPzC{_0Lt~)x`u^y4jVC^8r%p-tG=K^lt{_zM z9uPTr%lr)5E3@(a1Uk~1R|?3v7wpNa-dlf{-$*v#hk@A@ExX{9djZ6;QIp?fk;QLr zK-O>%*D5FZlgU2Rw5IMMon34G&H0rT`5o_GFK_BS`qvVmQKn_93J?r*I(U11A*sn|wD3 ziJKuOMX0RWY+I`a_ebyz8`lQrhY!j&K5EiT>q8UWA8cfbMI#wMsqMaS9i_=sAZ?Y) zM-WY(P`#=8YCNC;c$1r|`yO-C8*oHc;xhs2y0yV1-sx&5!FT#p(~Vw-aou?@L^h&j zw{H-n43mF3OkKaeh|YD zqBFnzFt~up)J)rRyX|UKcjCsUahEPx8|tSn;|*)T!B5ekJ$<{~#c(&@eP3brMRWgi zEm^~#eB-(rB_*;p!f0vVi;L|A=IrYBh8tfhFj^Q0dC>!!~{Zh%SEA?Gk%vnm9Q;VO;5JpSanBy&i z@&PSa64+}zzh^EtN)+EZ_zDhxF!>1gzevw1Tg{RovY z7-9ZsJpAF#SRs02;!?>uAAO)3?Rs!j-}_yWi!d*fiY9eDhV!s?J4S{e-f!#>VF~mn zG`bkL+d7@vV?IXuw$9ME*Gi zH-;yiX2vCMB+>tB?q;me)HDFz30)D(`rmx3Id_^>er>CIdTdKO@t5G|cd`-~+X$d@ zu9ltO2dceVaA7it5Q{`r009AzvwE2yGM?W2`nR&zjCtxnaC-!#aA=qDQ(m6h6#Bj+ zf*cn%i52Jm-D!)KkIck5HpT(?5wg`%^&yHC2S`~5w|jM?efh#SOUe&i&>v5~%UC@JHNUz6!uGkfH?&Y4_h;_Nh|Sp=c0 zZ1Upo?58h4)vFB;ofjKd0hkADr6%a-K`6DV=QO~U+5C&YGH}M^?617vrSl(;t$##L zDhk~``*+C{+b7Owbx&lkIC~HQpOLx@OJjJKA7u)(J=3>JEbzX!yqrE;>Vr|KzN~ z51RP^isnXEOU?Y8C>NQndyiZ%Zgw(SsxCdGqEvAO-YDlOntmx&u|Y9?%$>I8{wRdH z;g4kCLbqhIDKy5I8TsQrajq~cCSUW#u4;ga!(ovO)Bv5!XE`=()L)AXPG~Ma^E;N4 zRA#h&5%7ZmkBBcDY-A-DIOrN~`(Hote?5UhveHThf2G}7E zpI!z@Xr?Jw)_ebNN_o;XT6-5(=EUEp-S74DUr)CC&teWP6W(romRwZxBqeJdMxcEF z=$HZYW-7o30?g8X0i$pr)>RjiVm(u*t$l?oE>}~eXD3y{{&DcY)(T!STd9bb95Y26 z#xO@Z)M`wr1Q@^W1Yir7;@O?55WDrxF z5flI-s|5xCQ*@;#^X?3!2s2lkN5vezt8aD^3(rf9!Yo}L#JyYX0+^Ed*PSO-4;zY3 zI>w_bBkI3&i~d1nYatBdXsYrA$Y^Oh!9#<6oW}5{Pq4pKZ_Wy$wj3s7mA|dE;7-T( zEbyggvCB8a@-&*t97f2bEZLs-9WdAr1^(aMG7M?Kd05?DA|Ljz)cpf92I??-paIm%8EPyuu1(lNq--6=7YVC3EM~hx^`AR zUl4yA=ihORXVm@M-d^jJ60Z)idYuZ=9`yt_=@IBd)nNuw!4)O0Bgfw#2kLxNhN)ie zs%AZU2Dq7ON$EP&ApYGrs{fhT{Oe-B|IG-z|2sH;+d%$}m-zqA)!(|-e-tnNf5qxQ ePON@KFzMb6&0&+gr3`FhOki!}JC(QZJ^3Fd{F|x( literal 0 HcmV?d00001 diff --git a/smtERP-web/public/static/color.less b/smtERP-web/public/static/color.less new file mode 100644 index 0000000..f62bbb8 --- /dev/null +++ b/smtERP-web/public/static/color.less @@ -0,0 +1,7701 @@ +@primary-color: #1890ff; +/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ +/* stylelint-disable no-duplicate-selectors */ +/* stylelint-disable */ +.bezierEasingMixin() { + @functions: ~`(function() { + var NEWTON_ITERATIONS = 4; + var NEWTON_MIN_SLOPE = 0.001; + var SUBDIVISION_PRECISION = 0.0000001; + var SUBDIVISION_MAX_ITERATIONS = 10; + + var kSplineTableSize = 11; + var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0); + + var float32ArraySupported = typeof Float32Array === 'function'; + + function A (aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; } + function B (aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1; } + function C (aA1) { return 3.0 * aA1; } + + // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2. + function calcBezier (aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT; } + + // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2. + function getSlope (aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1); } + + function binarySubdivide (aX, aA, aB, mX1, mX2) { + var currentX, currentT, i = 0; + do { + currentT = aA + (aB - aA) / 2.0; + currentX = calcBezier(currentT, mX1, mX2) - aX; + if (currentX > 0.0) { + aB = currentT; + } else { + aA = currentT; + } + } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS); + return currentT; + } + + function newtonRaphsonIterate (aX, aGuessT, mX1, mX2) { + for (var i = 0; i < NEWTON_ITERATIONS; ++i) { + var currentSlope = getSlope(aGuessT, mX1, mX2); + if (currentSlope === 0.0) { + return aGuessT; + } + var currentX = calcBezier(aGuessT, mX1, mX2) - aX; + aGuessT -= currentX / currentSlope; + } + return aGuessT; + } + + var BezierEasing = function (mX1, mY1, mX2, mY2) { + if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) { + throw new Error('bezier x values must be in [0, 1] range'); + } + + // Precompute samples table + var sampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize); + if (mX1 !== mY1 || mX2 !== mY2) { + for (var i = 0; i < kSplineTableSize; ++i) { + sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2); + } + } + + function getTForX (aX) { + var intervalStart = 0.0; + var currentSample = 1; + var lastSample = kSplineTableSize - 1; + + for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) { + intervalStart += kSampleStepSize; + } + --currentSample; + + // Interpolate to provide an initial guess for t + var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]); + var guessForT = intervalStart + dist * kSampleStepSize; + + var initialSlope = getSlope(guessForT, mX1, mX2); + if (initialSlope >= NEWTON_MIN_SLOPE) { + return newtonRaphsonIterate(aX, guessForT, mX1, mX2); + } else if (initialSlope === 0.0) { + return guessForT; + } else { + return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2); + } + } + + return function BezierEasing (x) { + if (mX1 === mY1 && mX2 === mY2) { + return x; // linear + } + // Because JavaScript number are imprecise, we should guarantee the extremes are right. + if (x === 0) { + return 0; + } + if (x === 1) { + return 1; + } + return calcBezier(getTForX(x), mY1, mY2); + }; + }; + + this.colorEasing = BezierEasing(0.26, 0.09, 0.37, 0.18); + // less 3 requires a return + return ''; +})()`; +} +// It is hacky way to make this function will be compiled preferentially by less +// resolve error: `ReferenceError: colorPalette is not defined` +// https://github.com/ant-design/ant-motion/issues/44 +.bezierEasingMixin(); + +/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ +.tinyColorMixin() { + @functions: ~`(function() { +// TinyColor v1.4.1 +// https://github.com/bgrins/TinyColor +// 2016-07-07, Brian Grinstead, MIT License +var trimLeft = /^\s+/, + trimRight = /\s+$/, + tinyCounter = 0, + mathRound = Math.round, + mathMin = Math.min, + mathMax = Math.max, + mathRandom = Math.random; + +function tinycolor (color, opts) { + + color = (color) ? color : ''; + opts = opts || { }; + + // If input is already a tinycolor, return itself + if (color instanceof tinycolor) { + return color; + } + // If we are called as a function, call using new instead + if (!(this instanceof tinycolor)) { + return new tinycolor(color, opts); + } + + var rgb = inputToRGB(color); + this._originalInput = color, + this._r = rgb.r, + this._g = rgb.g, + this._b = rgb.b, + this._a = rgb.a, + this._roundA = mathRound(100*this._a) / 100, + this._format = opts.format || rgb.format; + this._gradientType = opts.gradientType; + + // Don't let the range of [0,255] come back in [0,1]. + // Potentially lose a little bit of precision here, but will fix issues where + // .5 gets interpreted as half of the total, instead of half of 1 + // If it was supposed to be 128, this was already taken care of by inputToRgb + if (this._r < 1) { this._r = mathRound(this._r); } + if (this._g < 1) { this._g = mathRound(this._g); } + if (this._b < 1) { this._b = mathRound(this._b); } + + this._ok = rgb.ok; + this._tc_id = tinyCounter++; +} + +tinycolor.prototype = { + isDark: function() { + return this.getBrightness() < 128; + }, + isLight: function() { + return !this.isDark(); + }, + isValid: function() { + return this._ok; + }, + getOriginalInput: function() { + return this._originalInput; + }, + getFormat: function() { + return this._format; + }, + getAlpha: function() { + return this._a; + }, + getBrightness: function() { + //http://www.w3.org/TR/AERT#color-contrast + var rgb = this.toRgb(); + return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000; + }, + getLuminance: function() { + //http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef + var rgb = this.toRgb(); + var RsRGB, GsRGB, BsRGB, R, G, B; + RsRGB = rgb.r/255; + GsRGB = rgb.g/255; + BsRGB = rgb.b/255; + + if (RsRGB <= 0.03928) {R = RsRGB / 12.92;} else {R = Math.pow(((RsRGB + 0.055) / 1.055), 2.4);} + if (GsRGB <= 0.03928) {G = GsRGB / 12.92;} else {G = Math.pow(((GsRGB + 0.055) / 1.055), 2.4);} + if (BsRGB <= 0.03928) {B = BsRGB / 12.92;} else {B = Math.pow(((BsRGB + 0.055) / 1.055), 2.4);} + return (0.2126 * R) + (0.7152 * G) + (0.0722 * B); + }, + setAlpha: function(value) { + this._a = boundAlpha(value); + this._roundA = mathRound(100*this._a) / 100; + return this; + }, + toHsv: function() { + var hsv = rgbToHsv(this._r, this._g, this._b); + return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this._a }; + }, + toHsvString: function() { + var hsv = rgbToHsv(this._r, this._g, this._b); + var h = mathRound(hsv.h * 360), s = mathRound(hsv.s * 100), v = mathRound(hsv.v * 100); + return (this._a == 1) ? + "hsv(" + h + ", " + s + "%, " + v + "%)" : + "hsva(" + h + ", " + s + "%, " + v + "%, "+ this._roundA + ")"; + }, + toHsl: function() { + var hsl = rgbToHsl(this._r, this._g, this._b); + return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: this._a }; + }, + toHslString: function() { + var hsl = rgbToHsl(this._r, this._g, this._b); + var h = mathRound(hsl.h * 360), s = mathRound(hsl.s * 100), l = mathRound(hsl.l * 100); + return (this._a == 1) ? + "hsl(" + h + ", " + s + "%, " + l + "%)" : + "hsla(" + h + ", " + s + "%, " + l + "%, "+ this._roundA + ")"; + }, + toHex: function(allow3Char) { + return rgbToHex(this._r, this._g, this._b, allow3Char); + }, + toHexString: function(allow3Char) { + return '#' + this.toHex(allow3Char); + }, + toHex8: function(allow4Char) { + return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char); + }, + toHex8String: function(allow4Char) { + return '#' + this.toHex8(allow4Char); + }, + toRgb: function() { + return { r: mathRound(this._r), g: mathRound(this._g), b: mathRound(this._b), a: this._a }; + }, + toRgbString: function() { + return (this._a == 1) ? + "rgb(" + mathRound(this._r) + ", " + mathRound(this._g) + ", " + mathRound(this._b) + ")" : + "rgba(" + mathRound(this._r) + ", " + mathRound(this._g) + ", " + mathRound(this._b) + ", " + this._roundA + ")"; + }, + toPercentageRgb: function() { + return { r: mathRound(bound01(this._r, 255) * 100) + "%", g: mathRound(bound01(this._g, 255) * 100) + "%", b: mathRound(bound01(this._b, 255) * 100) + "%", a: this._a }; + }, + toPercentageRgbString: function() { + return (this._a == 1) ? + "rgb(" + mathRound(bound01(this._r, 255) * 100) + "%, " + mathRound(bound01(this._g, 255) * 100) + "%, " + mathRound(bound01(this._b, 255) * 100) + "%)" : + "rgba(" + mathRound(bound01(this._r, 255) * 100) + "%, " + mathRound(bound01(this._g, 255) * 100) + "%, " + mathRound(bound01(this._b, 255) * 100) + "%, " + this._roundA + ")"; + }, + toName: function() { + if (this._a === 0) { + return "transparent"; + } + + if (this._a < 1) { + return false; + } + + return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false; + }, + toFilter: function(secondColor) { + var hex8String = '#' + rgbaToArgbHex(this._r, this._g, this._b, this._a); + var secondHex8String = hex8String; + var gradientType = this._gradientType ? "GradientType = 1, " : ""; + + if (secondColor) { + var s = tinycolor(secondColor); + secondHex8String = '#' + rgbaToArgbHex(s._r, s._g, s._b, s._a); + } + + return "progid:DXImageTransform.Microsoft.gradient("+gradientType+"startColorstr="+hex8String+",endColorstr="+secondHex8String+")"; + }, + toString: function(format) { + var formatSet = !!format; + format = format || this._format; + + var formattedString = false; + var hasAlpha = this._a < 1 && this._a >= 0; + var needsAlphaFormat = !formatSet && hasAlpha && (format === "hex" || format === "hex6" || format === "hex3" || format === "hex4" || format === "hex8" || format === "name"); + + if (needsAlphaFormat) { + // Special case for "transparent", all other non-alpha formats + // will return rgba when there is transparency. + if (format === "name" && this._a === 0) { + return this.toName(); + } + return this.toRgbString(); + } + if (format === "rgb") { + formattedString = this.toRgbString(); + } + if (format === "prgb") { + formattedString = this.toPercentageRgbString(); + } + if (format === "hex" || format === "hex6") { + formattedString = this.toHexString(); + } + if (format === "hex3") { + formattedString = this.toHexString(true); + } + if (format === "hex4") { + formattedString = this.toHex8String(true); + } + if (format === "hex8") { + formattedString = this.toHex8String(); + } + if (format === "name") { + formattedString = this.toName(); + } + if (format === "hsl") { + formattedString = this.toHslString(); + } + if (format === "hsv") { + formattedString = this.toHsvString(); + } + + return formattedString || this.toHexString(); + }, + clone: function() { + return tinycolor(this.toString()); + }, + + _applyModification: function(fn, args) { + var color = fn.apply(null, [this].concat([].slice.call(args))); + this._r = color._r; + this._g = color._g; + this._b = color._b; + this.setAlpha(color._a); + return this; + }, + lighten: function() { + return this._applyModification(lighten, arguments); + }, + brighten: function() { + return this._applyModification(brighten, arguments); + }, + darken: function() { + return this._applyModification(darken, arguments); + }, + desaturate: function() { + return this._applyModification(desaturate, arguments); + }, + saturate: function() { + return this._applyModification(saturate, arguments); + }, + greyscale: function() { + return this._applyModification(greyscale, arguments); + }, + spin: function() { + return this._applyModification(spin, arguments); + }, + + _applyCombination: function(fn, args) { + return fn.apply(null, [this].concat([].slice.call(args))); + }, + analogous: function() { + return this._applyCombination(analogous, arguments); + }, + complement: function() { + return this._applyCombination(complement, arguments); + }, + monochromatic: function() { + return this._applyCombination(monochromatic, arguments); + }, + splitcomplement: function() { + return this._applyCombination(splitcomplement, arguments); + }, + triad: function() { + return this._applyCombination(triad, arguments); + }, + tetrad: function() { + return this._applyCombination(tetrad, arguments); + } +}; + +// If input is an object, force 1 into "1.0" to handle ratios properly +// String input requires "1.0" as input, so 1 will be treated as 1 +tinycolor.fromRatio = function(color, opts) { + if (typeof color == "object") { + var newColor = {}; + for (var i in color) { + if (color.hasOwnProperty(i)) { + if (i === "a") { + newColor[i] = color[i]; + } + else { + newColor[i] = convertToPercentage(color[i]); + } + } + } + color = newColor; + } + + return tinycolor(color, opts); +}; + +// Given a string or object, convert that input to RGB +// Possible string inputs: +// +// "red" +// "#f00" or "f00" +// "#ff0000" or "ff0000" +// "#ff000000" or "ff000000" +// "rgb 255 0 0" or "rgb (255, 0, 0)" +// "rgb 1.0 0 0" or "rgb (1, 0, 0)" +// "rgba (255, 0, 0, 1)" or "rgba 255, 0, 0, 1" +// "rgba (1.0, 0, 0, 1)" or "rgba 1.0, 0, 0, 1" +// "hsl(0, 100%, 50%)" or "hsl 0 100% 50%" +// "hsla(0, 100%, 50%, 1)" or "hsla 0 100% 50%, 1" +// "hsv(0, 100%, 100%)" or "hsv 0 100% 100%" +// +function inputToRGB(color) { + + var rgb = { r: 0, g: 0, b: 0 }; + var a = 1; + var s = null; + var v = null; + var l = null; + var ok = false; + var format = false; + + if (typeof color == "string") { + color = stringInputToObject(color); + } + + if (typeof color == "object") { + if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) { + rgb = rgbToRgb(color.r, color.g, color.b); + ok = true; + format = String(color.r).substr(-1) === "%" ? "prgb" : "rgb"; + } + else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) { + s = convertToPercentage(color.s); + v = convertToPercentage(color.v); + rgb = hsvToRgb(color.h, s, v); + ok = true; + format = "hsv"; + } + else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) { + s = convertToPercentage(color.s); + l = convertToPercentage(color.l); + rgb = hslToRgb(color.h, s, l); + ok = true; + format = "hsl"; + } + + if (color.hasOwnProperty("a")) { + a = color.a; + } + } + + a = boundAlpha(a); + + return { + ok: ok, + format: color.format || format, + r: mathMin(255, mathMax(rgb.r, 0)), + g: mathMin(255, mathMax(rgb.g, 0)), + b: mathMin(255, mathMax(rgb.b, 0)), + a: a + }; +} + +// Conversion Functions +// -------------------- + +// rgbToHsl, rgbToHsv, hslToRgb, hsvToRgb modified from: +// + +// rgbToRgb +// Handle bounds / percentage checking to conform to CSS color spec +// +// *Assumes:* r, g, b in [0, 255] or [0, 1] +// *Returns:* { r, g, b } in [0, 255] +function rgbToRgb(r, g, b){ + return { + r: bound01(r, 255) * 255, + g: bound01(g, 255) * 255, + b: bound01(b, 255) * 255 + }; +} + +// rgbToHsl +// Converts an RGB color value to HSL. +// *Assumes:* r, g, and b are contained in [0, 255] or [0, 1] +// *Returns:* { h, s, l } in [0,1] +function rgbToHsl(r, g, b) { + + r = bound01(r, 255); + g = bound01(g, 255); + b = bound01(b, 255); + + var max = mathMax(r, g, b), min = mathMin(r, g, b); + var h, s, l = (max + min) / 2; + + if(max == min) { + h = s = 0; // achromatic + } + else { + var d = max - min; + s = l > 0.5 ? d / (2 - max - min) : d / (max + min); + switch(max) { + case r: h = (g - b) / d + (g < b ? 6 : 0); break; + case g: h = (b - r) / d + 2; break; + case b: h = (r - g) / d + 4; break; + } + + h /= 6; + } + + return { h: h, s: s, l: l }; +} + +// hslToRgb +// Converts an HSL color value to RGB. +// *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100] +// *Returns:* { r, g, b } in the set [0, 255] +function hslToRgb(h, s, l) { + var r, g, b; + + h = bound01(h, 360); + s = bound01(s, 100); + l = bound01(l, 100); + + function hue2rgb(p, q, t) { + if(t < 0) t += 1; + if(t > 1) t -= 1; + if(t < 1/6) return p + (q - p) * 6 * t; + if(t < 1/2) return q; + if(t < 2/3) return p + (q - p) * (2/3 - t) * 6; + return p; + } + + if(s === 0) { + r = g = b = l; // achromatic + } + else { + var q = l < 0.5 ? l * (1 + s) : l + s - l * s; + var p = 2 * l - q; + r = hue2rgb(p, q, h + 1/3); + g = hue2rgb(p, q, h); + b = hue2rgb(p, q, h - 1/3); + } + + return { r: r * 255, g: g * 255, b: b * 255 }; +} + +// rgbToHsv +// Converts an RGB color value to HSV +// *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1] +// *Returns:* { h, s, v } in [0,1] +function rgbToHsv(r, g, b) { + + r = bound01(r, 255); + g = bound01(g, 255); + b = bound01(b, 255); + + var max = mathMax(r, g, b), min = mathMin(r, g, b); + var h, s, v = max; + + var d = max - min; + s = max === 0 ? 0 : d / max; + + if(max == min) { + h = 0; // achromatic + } + else { + switch(max) { + case r: h = (g - b) / d + (g < b ? 6 : 0); break; + case g: h = (b - r) / d + 2; break; + case b: h = (r - g) / d + 4; break; + } + h /= 6; + } + return { h: h, s: s, v: v }; +} + +// hsvToRgb +// Converts an HSV color value to RGB. +// *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100] +// *Returns:* { r, g, b } in the set [0, 255] + function hsvToRgb(h, s, v) { + + h = bound01(h, 360) * 6; + s = bound01(s, 100); + v = bound01(v, 100); + + var i = Math.floor(h), + f = h - i, + p = v * (1 - s), + q = v * (1 - f * s), + t = v * (1 - (1 - f) * s), + mod = i % 6, + r = [v, q, p, p, t, v][mod], + g = [t, v, v, q, p, p][mod], + b = [p, p, t, v, v, q][mod]; + + return { r: r * 255, g: g * 255, b: b * 255 }; +} + +// rgbToHex +// Converts an RGB color to hex +// Assumes r, g, and b are contained in the set [0, 255] +// Returns a 3 or 6 character hex +function rgbToHex(r, g, b, allow3Char) { + + var hex = [ + pad2(mathRound(r).toString(16)), + pad2(mathRound(g).toString(16)), + pad2(mathRound(b).toString(16)) + ]; + + // Return a 3 character hex if possible + if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) { + return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0); + } + + return hex.join(""); +} + +// rgbaToHex +// Converts an RGBA color plus alpha transparency to hex +// Assumes r, g, b are contained in the set [0, 255] and +// a in [0, 1]. Returns a 4 or 8 character rgba hex +function rgbaToHex(r, g, b, a, allow4Char) { + + var hex = [ + pad2(mathRound(r).toString(16)), + pad2(mathRound(g).toString(16)), + pad2(mathRound(b).toString(16)), + pad2(convertDecimalToHex(a)) + ]; + + // Return a 4 character hex if possible + if (allow4Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1) && hex[3].charAt(0) == hex[3].charAt(1)) { + return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0); + } + + return hex.join(""); +} + +// rgbaToArgbHex +// Converts an RGBA color to an ARGB Hex8 string +// Rarely used, but required for "toFilter()" +function rgbaToArgbHex(r, g, b, a) { + + var hex = [ + pad2(convertDecimalToHex(a)), + pad2(mathRound(r).toString(16)), + pad2(mathRound(g).toString(16)), + pad2(mathRound(b).toString(16)) + ]; + + return hex.join(""); +} + +// equals +// Can be called with any tinycolor input +tinycolor.equals = function (color1, color2) { + if (!color1 || !color2) { return false; } + return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString(); +}; + +tinycolor.random = function() { + return tinycolor.fromRatio({ + r: mathRandom(), + g: mathRandom(), + b: mathRandom() + }); +}; + +// Modification Functions +// ---------------------- +// Thanks to less.js for some of the basics here +// + +function desaturate(color, amount) { + amount = (amount === 0) ? 0 : (amount || 10); + var hsl = tinycolor(color).toHsl(); + hsl.s -= amount / 100; + hsl.s = clamp01(hsl.s); + return tinycolor(hsl); +} + +function saturate(color, amount) { + amount = (amount === 0) ? 0 : (amount || 10); + var hsl = tinycolor(color).toHsl(); + hsl.s += amount / 100; + hsl.s = clamp01(hsl.s); + return tinycolor(hsl); +} + +function greyscale(color) { + return tinycolor(color).desaturate(100); +} + +function lighten (color, amount) { + amount = (amount === 0) ? 0 : (amount || 10); + var hsl = tinycolor(color).toHsl(); + hsl.l += amount / 100; + hsl.l = clamp01(hsl.l); + return tinycolor(hsl); +} + +function brighten(color, amount) { + amount = (amount === 0) ? 0 : (amount || 10); + var rgb = tinycolor(color).toRgb(); + rgb.r = mathMax(0, mathMin(255, rgb.r - mathRound(255 * - (amount / 100)))); + rgb.g = mathMax(0, mathMin(255, rgb.g - mathRound(255 * - (amount / 100)))); + rgb.b = mathMax(0, mathMin(255, rgb.b - mathRound(255 * - (amount / 100)))); + return tinycolor(rgb); +} + +function darken (color, amount) { + amount = (amount === 0) ? 0 : (amount || 10); + var hsl = tinycolor(color).toHsl(); + hsl.l -= amount / 100; + hsl.l = clamp01(hsl.l); + return tinycolor(hsl); +} + +// Spin takes a positive or negative amount within [-360, 360] indicating the change of hue. +// Values outside of this range will be wrapped into this range. +function spin(color, amount) { + var hsl = tinycolor(color).toHsl(); + var hue = (hsl.h + amount) % 360; + hsl.h = hue < 0 ? 360 + hue : hue; + return tinycolor(hsl); +} + +// Combination Functions +// --------------------- +// Thanks to jQuery xColor for some of the ideas behind these +// + +function complement(color) { + var hsl = tinycolor(color).toHsl(); + hsl.h = (hsl.h + 180) % 360; + return tinycolor(hsl); +} + +function triad(color) { + var hsl = tinycolor(color).toHsl(); + var h = hsl.h; + return [ + tinycolor(color), + tinycolor({ h: (h + 120) % 360, s: hsl.s, l: hsl.l }), + tinycolor({ h: (h + 240) % 360, s: hsl.s, l: hsl.l }) + ]; +} + +function tetrad(color) { + var hsl = tinycolor(color).toHsl(); + var h = hsl.h; + return [ + tinycolor(color), + tinycolor({ h: (h + 90) % 360, s: hsl.s, l: hsl.l }), + tinycolor({ h: (h + 180) % 360, s: hsl.s, l: hsl.l }), + tinycolor({ h: (h + 270) % 360, s: hsl.s, l: hsl.l }) + ]; +} + +function splitcomplement(color) { + var hsl = tinycolor(color).toHsl(); + var h = hsl.h; + return [ + tinycolor(color), + tinycolor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l}), + tinycolor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l}) + ]; +} + +function analogous(color, results, slices) { + results = results || 6; + slices = slices || 30; + + var hsl = tinycolor(color).toHsl(); + var part = 360 / slices; + var ret = [tinycolor(color)]; + + for (hsl.h = ((hsl.h - (part * results >> 1)) + 720) % 360; --results; ) { + hsl.h = (hsl.h + part) % 360; + ret.push(tinycolor(hsl)); + } + return ret; +} + +function monochromatic(color, results) { + results = results || 6; + var hsv = tinycolor(color).toHsv(); + var h = hsv.h, s = hsv.s, v = hsv.v; + var ret = []; + var modification = 1 / results; + + while (results--) { + ret.push(tinycolor({ h: h, s: s, v: v})); + v = (v + modification) % 1; + } + + return ret; +} + +// Utility Functions +// --------------------- + +tinycolor.mix = function(color1, color2, amount) { + amount = (amount === 0) ? 0 : (amount || 50); + + var rgb1 = tinycolor(color1).toRgb(); + var rgb2 = tinycolor(color2).toRgb(); + + var p = amount / 100; + + var rgba = { + r: ((rgb2.r - rgb1.r) * p) + rgb1.r, + g: ((rgb2.g - rgb1.g) * p) + rgb1.g, + b: ((rgb2.b - rgb1.b) * p) + rgb1.b, + a: ((rgb2.a - rgb1.a) * p) + rgb1.a + }; + + return tinycolor(rgba); +}; + +// Readability Functions +// --------------------- +// false +// tinycolor.isReadable("#000", "#111",{level:"AA",size:"large"}) => false +tinycolor.isReadable = function(color1, color2, wcag2) { + var readability = tinycolor.readability(color1, color2); + var wcag2Parms, out; + + out = false; + + wcag2Parms = validateWCAG2Parms(wcag2); + switch (wcag2Parms.level + wcag2Parms.size) { + case "AAsmall": + case "AAAlarge": + out = readability >= 4.5; + break; + case "AAlarge": + out = readability >= 3; + break; + case "AAAsmall": + out = readability >= 7; + break; + } + return out; + +}; + +// mostReadable +// Given a base color and a list of possible foreground or background +// colors for that base, returns the most readable color. +// Optionally returns Black or White if the most readable color is unreadable. +// *Example* +// tinycolor.mostReadable(tinycolor.mostReadable("#123", ["#124", "#125"],{includeFallbackColors:false}).toHexString(); // "#112255" +// tinycolor.mostReadable(tinycolor.mostReadable("#123", ["#124", "#125"],{includeFallbackColors:true}).toHexString(); // "#ffffff" +// tinycolor.mostReadable("#a8015a", ["#faf3f3"],{includeFallbackColors:true,level:"AAA",size:"large"}).toHexString(); // "#faf3f3" +// tinycolor.mostReadable("#a8015a", ["#faf3f3"],{includeFallbackColors:true,level:"AAA",size:"small"}).toHexString(); // "#ffffff" +tinycolor.mostReadable = function(baseColor, colorList, args) { + var bestColor = null; + var bestScore = 0; + var readability; + var includeFallbackColors, level, size ; + args = args || {}; + includeFallbackColors = args.includeFallbackColors ; + level = args.level; + size = args.size; + + for (var i= 0; i < colorList.length ; i++) { + readability = tinycolor.readability(baseColor, colorList[i]); + if (readability > bestScore) { + bestScore = readability; + bestColor = tinycolor(colorList[i]); + } + } + + if (tinycolor.isReadable(baseColor, bestColor, {"level":level,"size":size}) || !includeFallbackColors) { + return bestColor; + } + else { + args.includeFallbackColors=false; + return tinycolor.mostReadable(baseColor,["#fff", "#000"],args); + } +}; + +// Big List of Colors +// ------------------ +// +var names = tinycolor.names = { + aliceblue: "f0f8ff", + antiquewhite: "faebd7", + aqua: "0ff", + aquamarine: "7fffd4", + azure: "f0ffff", + beige: "f5f5dc", + bisque: "ffe4c4", + black: "000", + blanchedalmond: "ffebcd", + blue: "00f", + blueviolet: "8a2be2", + brown: "a52a2a", + burlywood: "deb887", + burntsienna: "ea7e5d", + cadetblue: "5f9ea0", + chartreuse: "7fff00", + chocolate: "d2691e", + coral: "ff7f50", + cornflowerblue: "6495ed", + cornsilk: "fff8dc", + crimson: "dc143c", + cyan: "0ff", + darkblue: "00008b", + darkcyan: "008b8b", + darkgoldenrod: "b8860b", + darkgray: "a9a9a9", + darkgreen: "006400", + darkgrey: "a9a9a9", + darkkhaki: "bdb76b", + darkmagenta: "8b008b", + darkolivegreen: "556b2f", + darkorange: "ff8c00", + darkorchid: "9932cc", + darkred: "8b0000", + darksalmon: "e9967a", + darkseagreen: "8fbc8f", + darkslateblue: "483d8b", + darkslategray: "2f4f4f", + darkslategrey: "2f4f4f", + darkturquoise: "00ced1", + darkviolet: "9400d3", + deeppink: "ff1493", + deepskyblue: "00bfff", + dimgray: "696969", + dimgrey: "696969", + dodgerblue: "1e90ff", + firebrick: "b22222", + floralwhite: "fffaf0", + forestgreen: "228b22", + fuchsia: "f0f", + gainsboro: "dcdcdc", + ghostwhite: "f8f8ff", + gold: "ffd700", + goldenrod: "daa520", + gray: "808080", + green: "008000", + greenyellow: "adff2f", + grey: "808080", + honeydew: "f0fff0", + hotpink: "ff69b4", + indianred: "cd5c5c", + indigo: "4b0082", + ivory: "fffff0", + khaki: "f0e68c", + lavender: "e6e6fa", + lavenderblush: "fff0f5", + lawngreen: "7cfc00", + lemonchiffon: "fffacd", + lightblue: "add8e6", + lightcoral: "f08080", + lightcyan: "e0ffff", + lightgoldenrodyellow: "fafad2", + lightgray: "d3d3d3", + lightgreen: "90ee90", + lightgrey: "d3d3d3", + lightpink: "ffb6c1", + lightsalmon: "ffa07a", + lightseagreen: "20b2aa", + lightskyblue: "87cefa", + lightslategray: "789", + lightslategrey: "789", + lightsteelblue: "b0c4de", + lightyellow: "ffffe0", + lime: "0f0", + limegreen: "32cd32", + linen: "faf0e6", + magenta: "f0f", + maroon: "800000", + mediumaquamarine: "66cdaa", + mediumblue: "0000cd", + mediumorchid: "ba55d3", + mediumpurple: "9370db", + mediumseagreen: "3cb371", + mediumslateblue: "7b68ee", + mediumspringgreen: "00fa9a", + mediumturquoise: "48d1cc", + mediumvioletred: "c71585", + midnightblue: "191970", + mintcream: "f5fffa", + mistyrose: "ffe4e1", + moccasin: "ffe4b5", + navajowhite: "ffdead", + navy: "000080", + oldlace: "fdf5e6", + olive: "808000", + olivedrab: "6b8e23", + orange: "ffa500", + orangered: "ff4500", + orchid: "da70d6", + palegoldenrod: "eee8aa", + palegreen: "98fb98", + paleturquoise: "afeeee", + palevioletred: "db7093", + papayawhip: "ffefd5", + peachpuff: "ffdab9", + peru: "cd853f", + pink: "ffc0cb", + plum: "dda0dd", + powderblue: "b0e0e6", + purple: "800080", + rebeccapurple: "663399", + red: "f00", + rosybrown: "bc8f8f", + royalblue: "4169e1", + saddlebrown: "8b4513", + salmon: "fa8072", + sandybrown: "f4a460", + seagreen: "2e8b57", + seashell: "fff5ee", + sienna: "a0522d", + silver: "c0c0c0", + skyblue: "87ceeb", + slateblue: "6a5acd", + slategray: "708090", + slategrey: "708090", + snow: "fffafa", + springgreen: "00ff7f", + steelblue: "4682b4", + tan: "d2b48c", + teal: "008080", + thistle: "d8bfd8", + tomato: "ff6347", + turquoise: "40e0d0", + violet: "ee82ee", + wheat: "f5deb3", + white: "fff", + whitesmoke: "f5f5f5", + yellow: "ff0", + yellowgreen: "9acd32" +}; + +// Make it easy to access colors via hexNames[hex] +var hexNames = tinycolor.hexNames = flip(names); + +// Utilities +// --------- + +// { 'name1': 'val1' } becomes { 'val1': 'name1' } +function flip(o) { + var flipped = { }; + for (var i in o) { + if (o.hasOwnProperty(i)) { + flipped[o[i]] = i; + } + } + return flipped; +} + +// Return a valid alpha value [0,1] with all invalid values being set to 1 +function boundAlpha(a) { + a = parseFloat(a); + + if (isNaN(a) || a < 0 || a > 1) { + a = 1; + } + + return a; +} + +// Take input from [0, n] and return it as [0, 1] +function bound01(n, max) { + if (isOnePointZero(n)) { n = "100%"; } + + var processPercent = isPercentage(n); + n = mathMin(max, mathMax(0, parseFloat(n))); + + // Automatically convert percentage into number + if (processPercent) { + n = parseInt(n * max, 10) / 100; + } + + // Handle floating point rounding errors + if ((Math.abs(n - max) < 0.000001)) { + return 1; + } + + // Convert into [0, 1] range if it isn't already + return (n % max) / parseFloat(max); +} + +// Force a number between 0 and 1 +function clamp01(val) { + return mathMin(1, mathMax(0, val)); +} + +// Parse a base-16 hex value into a base-10 integer +function parseIntFromHex(val) { + return parseInt(val, 16); +} + +// Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1 +// +function isOnePointZero(n) { + return typeof n == "string" && n.indexOf('.') != -1 && parseFloat(n) === 1; +} + +// Check to see if string passed in is a percentage +function isPercentage(n) { + return typeof n === "string" && n.indexOf('%') != -1; +} + +// Force a hex value to have 2 characters +function pad2(c) { + return c.length == 1 ? '0' + c : '' + c; +} + +// Replace a decimal with it's percentage value +function convertToPercentage(n) { + if (n <= 1) { + n = (n * 100) + "%"; + } + + return n; +} + +// Converts a decimal to a hex value +function convertDecimalToHex(d) { + return Math.round(parseFloat(d) * 255).toString(16); +} +// Converts a hex value to a decimal +function convertHexToDecimal(h) { + return (parseIntFromHex(h) / 255); +} + +var matchers = (function() { + + // + var CSS_INTEGER = "[-\\+]?\\d+%?"; + + // + var CSS_NUMBER = "[-\\+]?\\d*\\.\\d+%?"; + + // Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome. + var CSS_UNIT = "(?:" + CSS_NUMBER + ")|(?:" + CSS_INTEGER + ")"; + + // Actual matching. + // Parentheses and commas are optional, but not required. + // Whitespace can take the place of commas or opening paren + var PERMISSIVE_MATCH3 = "[\\s|\\(]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")\\s*\\)?"; + var PERMISSIVE_MATCH4 = "[\\s|\\(]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")\\s*\\)?"; + + return { + CSS_UNIT: new RegExp(CSS_UNIT), + rgb: new RegExp("rgb" + PERMISSIVE_MATCH3), + rgba: new RegExp("rgba" + PERMISSIVE_MATCH4), + hsl: new RegExp("hsl" + PERMISSIVE_MATCH3), + hsla: new RegExp("hsla" + PERMISSIVE_MATCH4), + hsv: new RegExp("hsv" + PERMISSIVE_MATCH3), + hsva: new RegExp("hsva" + PERMISSIVE_MATCH4), + hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, + hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/, + hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, + hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/ + }; +})(); + +// isValidCSSUnit +// Take in a single string / number and check to see if it looks like a CSS unit +// (see matchers above for definition). +function isValidCSSUnit(color) { + return !!matchers.CSS_UNIT.exec(color); +} + +// stringInputToObject +// Permissive string parsing. Take in a number of formats, and output an object +// based on detected format. Returns { r, g, b } or { h, s, l } or { h, s, v} +function stringInputToObject(color) { + + color = color.replace(trimLeft, '').replace(trimRight, '').toLowerCase(); + var named = false; + if (names[color]) { + color = names[color]; + named = true; + } + else if (color == 'transparent') { + return { r: 0, g: 0, b: 0, a: 0, format: "name" }; + } + + // Try to match string input using regular expressions. + // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360] + // Just return an object and let the conversion functions handle that. + // This way the result will be the same whether the tinycolor is initialized with string or object. + var match; + if ((match = matchers.rgb.exec(color))) { + return { r: match[1], g: match[2], b: match[3] }; + } + if ((match = matchers.rgba.exec(color))) { + return { r: match[1], g: match[2], b: match[3], a: match[4] }; + } + if ((match = matchers.hsl.exec(color))) { + return { h: match[1], s: match[2], l: match[3] }; + } + if ((match = matchers.hsla.exec(color))) { + return { h: match[1], s: match[2], l: match[3], a: match[4] }; + } + if ((match = matchers.hsv.exec(color))) { + return { h: match[1], s: match[2], v: match[3] }; + } + if ((match = matchers.hsva.exec(color))) { + return { h: match[1], s: match[2], v: match[3], a: match[4] }; + } + if ((match = matchers.hex8.exec(color))) { + return { + r: parseIntFromHex(match[1]), + g: parseIntFromHex(match[2]), + b: parseIntFromHex(match[3]), + a: convertHexToDecimal(match[4]), + format: named ? "name" : "hex8" + }; + } + if ((match = matchers.hex6.exec(color))) { + return { + r: parseIntFromHex(match[1]), + g: parseIntFromHex(match[2]), + b: parseIntFromHex(match[3]), + format: named ? "name" : "hex" + }; + } + if ((match = matchers.hex4.exec(color))) { + return { + r: parseIntFromHex(match[1] + '' + match[1]), + g: parseIntFromHex(match[2] + '' + match[2]), + b: parseIntFromHex(match[3] + '' + match[3]), + a: convertHexToDecimal(match[4] + '' + match[4]), + format: named ? "name" : "hex8" + }; + } + if ((match = matchers.hex3.exec(color))) { + return { + r: parseIntFromHex(match[1] + '' + match[1]), + g: parseIntFromHex(match[2] + '' + match[2]), + b: parseIntFromHex(match[3] + '' + match[3]), + format: named ? "name" : "hex" + }; + } + + return false; +} + +function validateWCAG2Parms(parms) { + // return valid WCAG2 parms for isReadable. + // If input parms are invalid, return {"level":"AA", "size":"small"} + var level, size; + parms = parms || {"level":"AA", "size":"small"}; + level = (parms.level || "AA").toUpperCase(); + size = (parms.size || "small").toLowerCase(); + if (level !== "AA" && level !== "AAA") { + level = "AA"; + } + if (size !== "small" && size !== "large") { + size = "small"; + } + return {"level":level, "size":size}; +} + +this.tinycolor = tinycolor; + +})()`; +} +// It is hacky way to make this function will be compiled preferentially by less +// resolve error: `ReferenceError: colorPalette is not defined` +// https://github.com/ant-design/ant-motion/issues/44 +.tinyColorMixin(); + +// We create a very complex algorithm which take the place of original tint/shade color system +// to make sure no one can understand it 👻 +// and create an entire color palette magicly by inputing just a single primary color. +// We are using bezier-curve easing function and some color manipulations like tint/shade/darken/spin +.colorPaletteMixin() { + @functions: ~`(function() { + var hueStep = 2; + var saturationStep = 16; + var saturationStep2 = 5; + var brightnessStep1 = 5; + var brightnessStep2 = 15; + var lightColorCount = 5; + var darkColorCount = 4; + + var getHue = function(hsv, i, isLight) { + var hue; + if (hsv.h >= 60 && hsv.h <= 240) { + hue = isLight ? hsv.h - hueStep * i : hsv.h + hueStep * i; + } else { + hue = isLight ? hsv.h + hueStep * i : hsv.h - hueStep * i; + } + if (hue < 0) { + hue += 360; + } else if (hue >= 360) { + hue -= 360; + } + return Math.round(hue); + }; + var getSaturation = function(hsv, i, isLight) { + var saturation; + if (isLight) { + saturation = Math.round(hsv.s * 100) - saturationStep * i; + } else if (i == darkColorCount) { + saturation = Math.round(hsv.s * 100) + saturationStep; + } else { + saturation = Math.round(hsv.s * 100) + saturationStep2 * i; + } + if (saturation > 100) { + saturation = 100; + } + if (isLight && i === lightColorCount && saturation > 10) { + saturation = 10; + } + if (saturation < 6) { + saturation = 6; + } + return Math.round(saturation); + }; + var getValue = function(hsv, i, isLight) { + if (isLight) { + return Math.round(hsv.v * 100) + brightnessStep1 * i; + } + return Math.round(hsv.v * 100) - brightnessStep2 * i; + }; + + this.colorPalette = function(color, index) { + var isLight = index <= 6; + var hsv = tinycolor(color).toHsv(); + var i = isLight ? lightColorCount + 1 - index : index - lightColorCount - 1; + return tinycolor({ + h: getHue(hsv, i, isLight), + s: getSaturation(hsv, i, isLight), + v: getValue(hsv, i, isLight), + }).toHexString(); + }; +})()`; +} +// It is hacky way to make this function will be compiled preferentially by less +// resolve error: `ReferenceError: colorPalette is not defined` +// https://github.com/ant-design/ant-motion/issues/44 +.colorPaletteMixin(); + +// color palettes +@blue-1: color(~`colorPalette("@{blue-6}", 1)`); +@blue-2: color(~`colorPalette("@{blue-6}", 2)`); +@blue-3: color(~`colorPalette("@{blue-6}", 3)`); +@blue-4: color(~`colorPalette("@{blue-6}", 4)`); +@blue-5: color(~`colorPalette("@{blue-6}", 5)`); +@blue-6: #1890ff; +@blue-7: color(~`colorPalette("@{blue-6}", 7)`); +@blue-8: color(~`colorPalette("@{blue-6}", 8)`); +@blue-9: color(~`colorPalette("@{blue-6}", 9)`); +@blue-10: color(~`colorPalette("@{blue-6}", 10)`); + +@purple-1: color(~`colorPalette("@{purple-6}", 1)`); +@purple-2: color(~`colorPalette("@{purple-6}", 2)`); +@purple-3: color(~`colorPalette("@{purple-6}", 3)`); +@purple-4: color(~`colorPalette("@{purple-6}", 4)`); +@purple-5: color(~`colorPalette("@{purple-6}", 5)`); +@purple-6: #722ed1; +@purple-7: color(~`colorPalette("@{purple-6}", 7)`); +@purple-8: color(~`colorPalette("@{purple-6}", 8)`); +@purple-9: color(~`colorPalette("@{purple-6}", 9)`); +@purple-10: color(~`colorPalette("@{purple-6}", 10)`); + +@cyan-1: color(~`colorPalette("@{cyan-6}", 1)`); +@cyan-2: color(~`colorPalette("@{cyan-6}", 2)`); +@cyan-3: color(~`colorPalette("@{cyan-6}", 3)`); +@cyan-4: color(~`colorPalette("@{cyan-6}", 4)`); +@cyan-5: color(~`colorPalette("@{cyan-6}", 5)`); +@cyan-6: #13c2c2; +@cyan-7: color(~`colorPalette("@{cyan-6}", 7)`); +@cyan-8: color(~`colorPalette("@{cyan-6}", 8)`); +@cyan-9: color(~`colorPalette("@{cyan-6}", 9)`); +@cyan-10: color(~`colorPalette("@{cyan-6}", 10)`); + +@green-1: color(~`colorPalette("@{green-6}", 1)`); +@green-2: color(~`colorPalette("@{green-6}", 2)`); +@green-3: color(~`colorPalette("@{green-6}", 3)`); +@green-4: color(~`colorPalette("@{green-6}", 4)`); +@green-5: color(~`colorPalette("@{green-6}", 5)`); +@green-6: #52c41a; +@green-7: color(~`colorPalette("@{green-6}", 7)`); +@green-8: color(~`colorPalette("@{green-6}", 8)`); +@green-9: color(~`colorPalette("@{green-6}", 9)`); +@green-10: color(~`colorPalette("@{green-6}", 10)`); + +@magenta-1: color(~`colorPalette("@{magenta-6}", 1)`); +@magenta-2: color(~`colorPalette("@{magenta-6}", 2)`); +@magenta-3: color(~`colorPalette("@{magenta-6}", 3)`); +@magenta-4: color(~`colorPalette("@{magenta-6}", 4)`); +@magenta-5: color(~`colorPalette("@{magenta-6}", 5)`); +@magenta-6: #eb2f96; +@magenta-7: color(~`colorPalette("@{magenta-6}", 7)`); +@magenta-8: color(~`colorPalette("@{magenta-6}", 8)`); +@magenta-9: color(~`colorPalette("@{magenta-6}", 9)`); +@magenta-10: color(~`colorPalette("@{magenta-6}", 10)`); + +// alias of magenta +@pink-1: color(~`colorPalette("@{pink-6}", 1)`); +@pink-2: color(~`colorPalette("@{pink-6}", 2)`); +@pink-3: color(~`colorPalette("@{pink-6}", 3)`); +@pink-4: color(~`colorPalette("@{pink-6}", 4)`); +@pink-5: color(~`colorPalette("@{pink-6}", 5)`); +@pink-6: #eb2f96; +@pink-7: color(~`colorPalette("@{pink-6}", 7)`); +@pink-8: color(~`colorPalette("@{pink-6}", 8)`); +@pink-9: color(~`colorPalette("@{pink-6}", 9)`); +@pink-10: color(~`colorPalette("@{pink-6}", 10)`); + +@red-1: color(~`colorPalette("@{red-6}", 1)`); +@red-2: color(~`colorPalette("@{red-6}", 2)`); +@red-3: color(~`colorPalette("@{red-6}", 3)`); +@red-4: color(~`colorPalette("@{red-6}", 4)`); +@red-5: color(~`colorPalette("@{red-6}", 5)`); +@red-6: #f5222d; +@red-7: color(~`colorPalette("@{red-6}", 7)`); +@red-8: color(~`colorPalette("@{red-6}", 8)`); +@red-9: color(~`colorPalette("@{red-6}", 9)`); +@red-10: color(~`colorPalette("@{red-6}", 10)`); + +@orange-1: color(~`colorPalette("@{orange-6}", 1)`); +@orange-2: color(~`colorPalette("@{orange-6}", 2)`); +@orange-3: color(~`colorPalette("@{orange-6}", 3)`); +@orange-4: color(~`colorPalette("@{orange-6}", 4)`); +@orange-5: color(~`colorPalette("@{orange-6}", 5)`); +@orange-6: #fa8c16; +@orange-7: color(~`colorPalette("@{orange-6}", 7)`); +@orange-8: color(~`colorPalette("@{orange-6}", 8)`); +@orange-9: color(~`colorPalette("@{orange-6}", 9)`); +@orange-10: color(~`colorPalette("@{orange-6}", 10)`); + +@yellow-1: color(~`colorPalette("@{yellow-6}", 1)`); +@yellow-2: color(~`colorPalette("@{yellow-6}", 2)`); +@yellow-3: color(~`colorPalette("@{yellow-6}", 3)`); +@yellow-4: color(~`colorPalette("@{yellow-6}", 4)`); +@yellow-5: color(~`colorPalette("@{yellow-6}", 5)`); +@yellow-6: #fadb14; +@yellow-7: color(~`colorPalette("@{yellow-6}", 7)`); +@yellow-8: color(~`colorPalette("@{yellow-6}", 8)`); +@yellow-9: color(~`colorPalette("@{yellow-6}", 9)`); +@yellow-10: color(~`colorPalette("@{yellow-6}", 10)`); + +@volcano-1: color(~`colorPalette("@{volcano-6}", 1)`); +@volcano-2: color(~`colorPalette("@{volcano-6}", 2)`); +@volcano-3: color(~`colorPalette("@{volcano-6}", 3)`); +@volcano-4: color(~`colorPalette("@{volcano-6}", 4)`); +@volcano-5: color(~`colorPalette("@{volcano-6}", 5)`); +@volcano-6: #fa541c; +@volcano-7: color(~`colorPalette("@{volcano-6}", 7)`); +@volcano-8: color(~`colorPalette("@{volcano-6}", 8)`); +@volcano-9: color(~`colorPalette("@{volcano-6}", 9)`); +@volcano-10: color(~`colorPalette("@{volcano-6}", 10)`); + +@geekblue-1: color(~`colorPalette("@{geekblue-6}", 1)`); +@geekblue-2: color(~`colorPalette("@{geekblue-6}", 2)`); +@geekblue-3: color(~`colorPalette("@{geekblue-6}", 3)`); +@geekblue-4: color(~`colorPalette("@{geekblue-6}", 4)`); +@geekblue-5: color(~`colorPalette("@{geekblue-6}", 5)`); +@geekblue-6: #2f54eb; +@geekblue-7: color(~`colorPalette("@{geekblue-6}", 7)`); +@geekblue-8: color(~`colorPalette("@{geekblue-6}", 8)`); +@geekblue-9: color(~`colorPalette("@{geekblue-6}", 9)`); +@geekblue-10: color(~`colorPalette("@{geekblue-6}", 10)`); + +@lime-1: color(~`colorPalette("@{lime-6}", 1)`); +@lime-2: color(~`colorPalette("@{lime-6}", 2)`); +@lime-3: color(~`colorPalette("@{lime-6}", 3)`); +@lime-4: color(~`colorPalette("@{lime-6}", 4)`); +@lime-5: color(~`colorPalette("@{lime-6}", 5)`); +@lime-6: #a0d911; +@lime-7: color(~`colorPalette("@{lime-6}", 7)`); +@lime-8: color(~`colorPalette("@{lime-6}", 8)`); +@lime-9: color(~`colorPalette("@{lime-6}", 9)`); +@lime-10: color(~`colorPalette("@{lime-6}", 10)`); + +@gold-1: color(~`colorPalette("@{gold-6}", 1)`); +@gold-2: color(~`colorPalette("@{gold-6}", 2)`); +@gold-3: color(~`colorPalette("@{gold-6}", 3)`); +@gold-4: color(~`colorPalette("@{gold-6}", 4)`); +@gold-5: color(~`colorPalette("@{gold-6}", 5)`); +@gold-6: #faad14; +@gold-7: color(~`colorPalette("@{gold-6}", 7)`); +@gold-8: color(~`colorPalette("@{gold-6}", 8)`); +@gold-9: color(~`colorPalette("@{gold-6}", 9)`); +@gold-10: color(~`colorPalette("@{gold-6}", 10)`); + +// The prefix to use on all css classes from ant. +@ant-prefix : ant; + +// -------- Colors ----------- + +@info-color : @blue-6; +@success-color : @green-6; +@processing-color : @blue-6; +@error-color : @red-6; +@highlight-color : @red-6; +@warning-color : @gold-6; +@normal-color : #d9d9d9; + +// Color used by default to control hover and active backgrounds and for +// alert info backgrounds. +@primary-1: color(~`colorPalette("@{primary-color}", 1)`); // replace tint(@primary-color, 90%) +@primary-2: color(~`colorPalette("@{primary-color}", 2)`); // replace tint(@primary-color, 80%) +@primary-3: color(~`colorPalette("@{primary-color}", 3)`); // unused +@primary-4: color(~`colorPalette("@{primary-color}", 4)`); // unused +@primary-5: color(~`colorPalette("@{primary-color}", 5)`); // color used to control the text color in many active and hover states, replace tint(@primary-color, 20%) +@primary-6: @primary-color; // color used to control the text color of active buttons, don't use, use @primary-color +@primary-7: color(~`colorPalette("@{primary-color}", 7)`); // replace shade(@primary-color, 5%) +@primary-8: color(~`colorPalette("@{primary-color}", 8)`); // unused +@primary-9: color(~`colorPalette("@{primary-color}", 9)`); // unused +@primary-10: color(~`colorPalette("@{primary-color}", 10)`); // unused + +// Base Scaffolding Variables +// --- + +// Background color for `` +@body-background : #fff; +// Base background color for most components +@component-background : #fff; +@font-family : "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif, +"Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; +@code-family : "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace; +@heading-color : fade(#000, 85%); +@text-color : fade(#000, 65%); +@text-color-secondary : fade(#000, 45%); +@heading-color-dark : fade(#fff, 100%); +@text-color-dark : fade(#fff, 85%); +@text-color-secondary-dark: fade(#fff, 65%); +@font-size-base : 14px; +@font-size-lg : @font-size-base + 2px; +@font-size-sm : 12px; +@line-height-base : 1.5; +@border-radius-base : 4px; +@border-radius-sm : 2px; + +// vertical paddings +@padding-lg : 24px; // containers +@padding-md : 16px; // small containers and buttons +@padding-sm : 12px; // Form controls and items +@padding-xs : 8px; // small items + +// vertical padding for all form controls +@control-padding-horizontal: @padding-sm; +@control-padding-horizontal-sm: @padding-xs; + +// The background colors for active and hover states for things like +// list items or table cells. +@item-active-bg : @primary-1; +@item-hover-bg : @primary-1; + +// ICONFONT +@iconfont-css-prefix : anticon; + +// LINK +@link-color : @primary-color; +@link-hover-color : color(~`colorPalette("@{link-color}", 5)`); +@link-active-color : color(~`colorPalette("@{link-color}", 7)`); +@link-decoration : none; +@link-hover-decoration : none; + +// Animation +@ease-base-out : cubic-bezier(0.7, 0.3, 0.1, 1); +@ease-base-in : cubic-bezier(0.9, 0, 0.3, 0.7); +@ease-out : cubic-bezier(0.215, 0.61, 0.355, 1); +@ease-in : cubic-bezier(0.55, 0.055, 0.675, 0.19); +@ease-in-out : cubic-bezier(0.645, 0.045, 0.355, 1); +@ease-out-back : cubic-bezier(0.12, 0.4, 0.29, 1.46); +@ease-in-back : cubic-bezier(0.71, -0.46, 0.88, 0.6); +@ease-in-out-back : cubic-bezier(0.71, -0.46, 0.29, 1.46); +@ease-out-circ : cubic-bezier(0.08, 0.82, 0.17, 1); +@ease-in-circ : cubic-bezier(0.6, 0.04, 0.98, 0.34); +@ease-in-out-circ : cubic-bezier(0.78, 0.14, 0.15, 0.86); +@ease-out-quint : cubic-bezier(0.23, 1, 0.32, 1); +@ease-in-quint : cubic-bezier(0.755, 0.05, 0.855, 0.06); +@ease-in-out-quint : cubic-bezier(0.86, 0, 0.07, 1); + +// Border color +@border-color-base : hsv(0, 0, 85%); // base border outline a component +@border-color-split : hsv(0, 0, 91%); // split border inside a component +@border-width-base : 1px; // width of the border for a component +@border-style-base : solid; // style of a components border + +// Outline +@outline-blur-size : 0; +@outline-width : 2px; +@outline-color : @primary-color; + +@background-color-light : hsv(0, 0, 98%); // background of header and selected item +@background-color-base : hsv(0, 0, 96%); // Default grey background color + +// Disabled states +@disabled-color : fade(#000, 25%); +@disabled-bg : @background-color-base; +@disabled-color-dark : fade(#fff, 35%); + +// Shadow +@shadow-color : rgba(0, 0, 0, .15); +@box-shadow-base : @shadow-1-down; +@shadow-1-up : 0 -2px 8px @shadow-color; +@shadow-1-down : 0 2px 8px @shadow-color; +@shadow-1-left : -2px 0 8px @shadow-color; +@shadow-1-right : 2px 0 8px @shadow-color; +@shadow-2 : 0 4px 12px @shadow-color; + +// Buttons +@btn-font-weight : 400; +@btn-border-radius-base : @border-radius-base; +@btn-border-radius-sm : @border-radius-base; + +@btn-primary-color : #fff; +@btn-primary-bg : @primary-color; + +@btn-default-color : @text-color; +@btn-default-bg : #fff; +@btn-default-border : @border-color-base; + +@btn-danger-color : @error-color; +@btn-danger-bg : @background-color-base; +@btn-danger-border : @border-color-base; + +@btn-disable-color : @disabled-color; +@btn-disable-bg : @disabled-bg; +@btn-disable-border : @border-color-base; + +@btn-padding-base : 0 @padding-md - 1px; +@btn-font-size-lg : @font-size-lg; +@btn-font-size-sm : @font-size-base; +@btn-padding-lg : @btn-padding-base; +@btn-padding-sm : 0 @padding-xs - 1px; + +@btn-height-base : 32px; +@btn-height-lg : 40px; +@btn-height-sm : 24px; + +@btn-circle-size : @btn-height-base; +@btn-circle-size-lg : @btn-height-lg; +@btn-circle-size-sm : @btn-height-sm; + +@btn-group-border : @primary-5; + +// Checkbox +@checkbox-size : 16px; +@checkbox-color : @primary-color; +@checkbox-check-color : #fff; + +// Radio +@radio-size : 16px; +@radio-dot-color : @primary-color; + +// Radio buttons +@radio-button-bg : @btn-default-bg; +@radio-button-color : @btn-default-color; +@radio-button-hover-color : @primary-5; +@radio-button-active-color : @primary-7; + +// Media queries breakpoints +// Extra small screen / phone +@screen-xs : 480px; +@screen-xs-min : @screen-xs; + +// Small screen / tablet +@screen-sm : 576px; +@screen-sm-min : @screen-sm; + +// Medium screen / desktop +@screen-md : 768px; +@screen-md-min : @screen-md; + +// Large screen / wide desktop +@screen-lg : 992px; +@screen-lg-min : @screen-lg; + +// Extra large screen / full hd +@screen-xl : 1200px; +@screen-xl-min : @screen-xl; + +// Extra extra large screen / large descktop +@screen-xxl : 1600px; +@screen-xxl-min : @screen-xxl; + +// provide a maximum +@screen-xs-max : (@screen-sm-min - 1px); +@screen-sm-max : (@screen-md-min - 1px); +@screen-md-max : (@screen-lg-min - 1px); +@screen-lg-max : (@screen-xl-min - 1px); +@screen-xl-max : (@screen-xxl-min - 1px); + +// Grid system +@grid-columns : 24; +@grid-gutter-width : 0; + +// Layout +@layout-body-background : #f0f2f5; +@layout-header-background : #001529; +@layout-footer-background : @layout-body-background; +@layout-header-height : 64px; +@layout-header-padding : 0 50px; +@layout-footer-padding : 24px 50px; +@layout-sider-background : @layout-header-background; +@layout-trigger-height : 48px; +@layout-trigger-background : #002140; +@layout-trigger-color : #fff; +@layout-zero-trigger-width : 36px; +@layout-zero-trigger-height : 42px; +// Layout light theme +@layout-sider-background-light : #fff; +@layout-trigger-background-light: #fff; +@layout-trigger-color-light : @text-color; + +// z-index list +@zindex-affix : 10; +@zindex-back-top : 10; +@zindex-modal-mask : 1000; +@zindex-modal : 1000; +@zindex-notification : 1010; +@zindex-message : 1010; +@zindex-popover : 1030; +@zindex-picker : 1050; +@zindex-dropdown : 1050; +@zindex-tooltip : 1060; + +// Animation +@animation-duration-slow: .3s; // Modal +@animation-duration-base: .2s; +@animation-duration-fast: .1s; // Tooltip + +// Form +// --- +@label-required-color : @highlight-color; +@label-color : @heading-color; +@form-item-margin-bottom : 24px; +@form-item-trailing-colon : true; +@form-vertical-label-padding : 0 0 8px; +@form-vertical-label-margin : 0; + +// Input +// --- +@input-height-base : 32px; +@input-height-lg : 40px; +@input-height-sm : 24px; +@input-padding-horizontal : @control-padding-horizontal - 1px; +@input-padding-horizontal-base: @input-padding-horizontal; +@input-padding-horizontal-sm : @control-padding-horizontal-sm - 1px; +@input-padding-horizontal-lg : @input-padding-horizontal; +@input-padding-vertical-base : 4px; +@input-padding-vertical-sm : 1px; +@input-padding-vertical-lg : 6px; +@input-placeholder-color : hsv(0, 0, 75%); +@input-color : @text-color; +@input-border-color : @border-color-base; +@input-bg : #fff; +@input-addon-bg : @background-color-light; +@input-hover-border-color : @primary-color; +@input-disabled-bg : @disabled-bg; +@input-outline-offset : 0 0; + +// Tooltip +// --- +//* Tooltip max width +@tooltip-max-width: 250px; +//** Tooltip text color +@tooltip-color: #fff; +//** Tooltip background color +@tooltip-bg: rgba(0, 0, 0, .75); +//** Tooltip arrow width +@tooltip-arrow-width: 5px; +//** Tooltip distance with trigger +@tooltip-distance: @tooltip-arrow-width - 1px + 4px; +//** Tooltip arrow color +@tooltip-arrow-color: @tooltip-bg; + +// Popover +// --- +//** Popover body background color +@popover-bg: #fff; +//** Popover text color +@popover-color: @text-color; +//** Popover maximum width +@popover-min-width: 177px; +//** Popover arrow width +@popover-arrow-width: 6px; +//** Popover arrow color +@popover-arrow-color: @popover-bg; +//** Popover outer arrow width +//** Popover outer arrow color +@popover-arrow-outer-color: @popover-bg; +//** Popover distance with trigger +@popover-distance: @popover-arrow-width + 4px; + +// Modal +// -- +@modal-mask-bg: rgba(0, 0, 0, 0.65); + +// Progress +// -- +@progress-default-color: @processing-color; +@progress-remaining-color: @background-color-base; +@progress-text-color: @text-color; + +// Menu +// --- +@menu-inline-toplevel-item-height: 40px; +@menu-item-height: 40px; +@menu-collapsed-width: 80px; +@menu-bg: @component-background; +@menu-item-color: @text-color; +@menu-highlight-color: @primary-color; +@menu-item-active-bg: @item-active-bg; +@menu-item-active-border-width: 3px; +@menu-item-group-title-color: @text-color-secondary; +// dark theme +@menu-dark-color: @text-color-secondary-dark; +@menu-dark-bg: @layout-header-background; +@menu-dark-arrow-color: #fff; +@menu-dark-submenu-bg: #000c17; +@menu-dark-highlight-color: #fff; +@menu-dark-item-active-bg: @primary-color; + +// Spin +// --- +@spin-dot-size-sm: 14px; +@spin-dot-size: 20px; +@spin-dot-size-lg: 32px; + +// Table +// -- +@table-header-bg: @background-color-light; +@table-header-color: @heading-color; +@table-header-sort-bg: @background-color-base; +@table-body-sort-bg: rgba(0, 0, 0, .01); +@table-row-hover-bg: @primary-1; +@table-selected-row-bg: #fafafa; +@table-expanded-row-bg: #fbfbfb; +@table-padding-vertical: 16px; +@table-padding-horizontal: 16px; + +// Tag +// -- +@tag-default-bg: @background-color-light; +@tag-default-color: @text-color; +@tag-font-size: @font-size-sm; + +// TimePicker +// --- +@time-picker-panel-column-width: 56px; +@time-picker-panel-width: @time-picker-panel-column-width * 3; +@time-picker-selected-bg: @background-color-base; + +// Carousel +// --- +@carousel-dot-width: 16px; +@carousel-dot-height: 3px; +@carousel-dot-active-width: 24px; + +// Badge +// --- +@badge-height: 20px; +@badge-dot-size: 6px; +@badge-font-size: @font-size-sm; +@badge-font-weight: normal; +@badge-status-size: 6px; + +// Rate +// --- +@rate-star-color: @yellow-6; +@rate-star-bg: @border-color-split; + +// Card +// --- +@card-head-color: @heading-color; +@card-head-background: transparent; +@card-head-padding: 16px; +@card-inner-head-padding: 12px; +@card-padding-base: 24px; +@card-padding-wider: 32px; +@card-actions-background: @background-color-light; +@card-shadow: 0 2px 8px rgba(0, 0, 0, .09); + +// Tabs +// --- +@tabs-card-head-background: @background-color-light; +@tabs-card-height: 40px; +@tabs-card-active-color: @primary-color; +@tabs-title-font-size: @font-size-base; +@tabs-title-font-size-lg: @font-size-lg; +@tabs-title-font-size-sm: @font-size-base; +@tabs-ink-bar-color: @primary-color; +@tabs-bar-margin: 0 0 16px 0; +@tabs-horizontal-margin: 0 32px 0 0; +@tabs-horizontal-padding: 12px 16px; +@tabs-vertical-padding: 8px 24px; +@tabs-vertical-margin: 0 0 16px 0; +@tabs-scrolling-size: 32px; +@tabs-highlight-color: @primary-color; +@tabs-hover-color: @primary-5; +@tabs-active-color: @primary-7; + +// BackTop +// --- +@back-top-color: #fff; +@back-top-bg: @text-color-secondary; +@back-top-hover-bg: @text-color; + +// Avatar +// --- +@avatar-size-base: 32px; +@avatar-size-lg: 40px; +@avatar-size-sm: 24px; +@avatar-font-size-base: 18px; +@avatar-font-size-lg: 24px; +@avatar-font-size-sm: 14px; +@avatar-bg: #ccc; +@avatar-color: #fff; +@avatar-border-radius: @border-radius-base; + +// Switch +// --- +@switch-height: 22px; +@switch-sm-height: 16px; +@switch-sm-checked-margin-left: -(@switch-sm-height - 3px); +@switch-disabled-opacity: 0.4; +@switch-color: @primary-color; + +// Pagination +// --- +@pagination-item-size: 32px; +@pagination-item-size-sm: 24px; +@pagination-font-family: Arial; +@pagination-font-weight-active: 500; + +// Breadcrumb +// --- +@breadcrumb-base-color: @text-color-secondary; +@breadcrumb-last-item-color: @text-color; +@breadcrumb-font-size: @font-size-base; +@breadcrumb-icon-font-size: @font-size-base; +@breadcrumb-link-color: @text-color-secondary; +@breadcrumb-link-color-hover: @primary-5; +@breadcrumb-separator-color: @text-color-secondary; +@breadcrumb-separator-margin: 0 @padding-xs; + +// Slider +// --- +@slider-margin: 14px 6px 10px; +@slider-rail-background-color: @background-color-base; +@slider-rail-background-color-hover: #e1e1e1; +@slider-track-background-color: @primary-3; +@slider-track-background-color-hover: @primary-4; +@slider-handle-color: @primary-3; +@slider-handle-color-hover: @primary-4; +@slider-handle-color-focus: tint(@primary-color, 20%); +@slider-handle-color-focus-shadow: tint(@primary-color, 50%); +@slider-handle-color-tooltip-open: @primary-color; +@slider-dot-border-color: @border-color-split; +@slider-dot-border-color-active: tint(@primary-color, 50%); +@slider-disabled-color: @disabled-color; +@slider-disabled-background-color: @component-background; + +// Tree +// --- +@tree-title-height: 24px; +@tree-child-padding: 18px; +@tree-directory-selected-color: #fff; +@tree-directory-selected-bg: @primary-color; + +// Collapse +// --- +@collapse-header-padding: 12px 0 12px 40px; +@collapse-header-bg: @background-color-light; +@collapse-content-padding: @padding-md; +@collapse-content-bg: @component-background; + +// Skeleton +// --- +@skeleton-color: #f2f2f2; + +// Transfer +// --- +@transfer-disabled-bg: @disabled-bg; + +// Message +// --- +@message-notice-content-padding: 10px 16px; + +// Motion +// --- +@wave-animation-width: 6px; + +// Alert +// --- +@alert-success-border-color: ~`colorPalette("@{success-color}", 3)`; +@alert-success-bg-color: ~`colorPalette("@{success-color}", 1)`; +@alert-success-icon-color: @success-color; +@alert-info-border-color: ~`colorPalette("@{info-color}", 3)`; +@alert-info-bg-color: ~`colorPalette("@{info-color}", 1)`; +@alert-info-icon-color: @info-color; +@alert-warning-border-color: ~`colorPalette("@{warning-color}", 3)`; +@alert-warning-bg-color: ~`colorPalette("@{warning-color}", 1)`; +@alert-warning-icon-color: @warning-color; +@alert-error-border-color: ~`colorPalette("@{error-color}", 3)`; +@alert-error-bg-color: ~`colorPalette("@{error-color}", 1)`; +@alert-error-icon-color: @error-color; + +// List +// --- +@list-empty-text-padding: @padding-md; +@list-item-padding: @padding-sm 0; +@list-item-content-margin: 0 0 @padding-md 0; +@list-item-meta-margin-bottom: @padding-md; +@list-item-meta-avatar-margin-right: @padding-md; +@list-item-meta-title-margin-bottom: @padding-sm; + +// Menu +@menu-dark-item-selected-bg: @menu-dark-item-active-bg; + +// Tabs +@tab-bar-margin: @tabs-bar-margin; +@tab-horizontal-margin: @tabs-horizontal-margin; +@tab-vertical-margin: @tabs-vertical-margin; +@tab-horizontal-padding: @tabs-horizontal-padding; +@tab-vertical-padding: @tabs-vertical-padding; +@tab-scrolling-size: @tabs-scrolling-size; +@tab-highlight-color: @tabs-highlight-color; +@tab-hover-color: @tabs-hover-color; +@tab-active-color: @tabs-active-color; +@tabs-ink-bar-bg-color: @tabs-ink-bar-color; + +.listContent .extra { + color: rgba(0, 0, 0, 0.45); +} +.listContent .extra > em { + color: rgba(0, 0, 0, 0.25); +} +.avatarItem :global .ant-avatar { + border: 1px solid #fff; +} +.chartCard .avatar img { + border-radius: 100%; +} +.chartCard .meta { + color: rgba(0, 0, 0, 0.45); +} +.chartCard .total { + color: rgba(0, 0, 0, 0.85); +} +.chartCard .footer { + border-top: 1px solid #e8e8e8; +} +.field span:last-child { + color: rgba(0, 0, 0, 0.85); +} +.miniProgress .progressWrap { + background-color: #f5f5f5; +} +.miniProgress .progress { + border-radius: 1px 0 0 1px; + background-color: @primary-color; +} +.miniProgress .target span { + border-radius: 100px; +} +.pie .dot { + border-radius: 8px; +} +.pie .line { + background-color: #e8e8e8; +} +.pie .legendTitle { + color: rgba(0, 0, 0, 0.65); +} +.pie .percent { + color: rgba(0, 0, 0, 0.45); +} +.pie .total > h4 { + color: rgba(0, 0, 0, 0.45); +} +.pie .total > p { + color: rgba(0, 0, 0, 0.85); +} +.radar .legend .legendItem { + color: rgba(0, 0, 0, 0.45); +} +.radar .legend .legendItem h6 { + color: rgba(0, 0, 0, 0.85); +} +.radar .legend .legendItem:after { + background-color: #e8e8e8; +} +.radar .legend .dot { + border-radius: 6px; +} + +.timelineChart { + background: #fff; +} +.waterWave .text span { + color: rgba(0, 0, 0, 0.45); +} +.waterWave .text h4 { + color: rgba(0, 0, 0, 0.85); +} +.descriptionList .title { + color: rgba(0, 0, 0, 0.85); +} +.descriptionList .term { + color: rgba(0, 0, 0, 0.85); +} +.descriptionList .detail { + color: rgba(0, 0, 0, 0.65); +} +.descriptionList.small .title { + color: rgba(0, 0, 0, 0.65); +} +.linkGroup > a { + color: rgba(0, 0, 0, 0.65); +} +.linkGroup > a:hover { + color: @primary-color; +} +.lines .shadow { + color: transparent; +} +.exception .imgEle { + background-repeat: no-repeat; + background-position: 50% 50%; + background-size: contain; +} +.exception .content h1 { + color: #434e59; +} +.exception .content .desc { + color: rgba(0, 0, 0, 0.45); +} +.toolbar { + box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.03); + background: #fff; + border-top: 1px solid #e8e8e8; +} +.globalFooter .links a { + color: rgba(0, 0, 0, 0.45); +} +.globalFooter .links a:hover { + color: rgba(0, 0, 0, 0.65); +} +.globalFooter .copyright { + color: rgba(0, 0, 0, 0.45); +} +.layout .header { + background-color: @primary-color !important; +} +i.trigger:hover { + background: rgba(0, 0, 0, 0.025); +} +.right .action > i { + color: rgba(0, 0, 0, 0.65); +} +.right .action:hover { + background: rgba(0, 0, 0, 0.025); +} +:global(.right .action.ant-popover-open) { + background: rgba(0, 0, 0, 0.025); +} +.right .search:hover { + background: transparent; +} +.right .account .avatar { + color: @primary-color; + background: rgba(255, 255, 255, 0.85); +} +.dark .action { + color: rgba(255, 255, 255, 0.85); +} +.dark .action > i { + color: rgba(255, 255, 255, 0.85); +} +.dark .action:hover, +.dark .action:global(.ant-popover-open) { + background: @primary-color; +} +.dark .action :global(.ant-badge) { + color: rgba(255, 255, 255, 0.85); +} +.headerSearch .input { + background: transparent; + border-radius: 0; +} +.headerSearch .input :global(.ant-select-selection) { + background: transparent; +} +.headerSearch .input input { + border: 0; + box-shadow: none !important; +} +.headerSearch .input, +.headerSearch .input:hover, +.headerSearch .input:focus { + border-bottom: 1px solid #d9d9d9; +} +.login :global .ant-tabs .ant-tabs-bar { + border-bottom: 0; +} +.login .icon { + color: rgba(0, 0, 0, 0.2); +} +.login .icon:hover { + color: @primary-color; +} +.login .prefixIcon { + color: rgba(0, 0, 0, 0.25); +} +.list .item .avatar { + background: #fff; +} +.list .item:last-child { + border-bottom: 0; +} +.list .item:hover { + background: color(~`colorPalette("@{primary-color}", 1)`); +} +.list .item .extra { + color: rgba(0, 0, 0, 0.45); +} +.notFound { + color: rgba(0, 0, 0, 0.45); +} +.clear { + color: rgba(0, 0, 0, 0.65); + border-radius: 0 0 4px 4px; + border-top: 1px solid #e8e8e8; +} +.clear:hover { + color: rgba(0, 0, 0, 0.85); +} +.numberInfo .suffix { + color: rgba(0, 0, 0, 0.65); +} +.numberInfo .numberInfoTitle { + color: rgba(0, 0, 0, 0.65); +} +.numberInfo .numberInfoSubTitle { + color: rgba(0, 0, 0, 0.45); +} +.numberInfo .numberInfoValue > span { + color: rgba(0, 0, 0, 0.85); +} +.numberInfo .numberInfoValue .subTotal { + color: rgba(0, 0, 0, 0.45); +} +.numberInfo .numberInfoValue .subTotal :global .anticon-caret-up { + color: #f5222d; +} +.numberInfo .numberInfoValue .subTotal :global .anticon-caret-down { + color: #52c41a; +} +.numberInfolight .numberInfoValue > span { + color: rgba(0, 0, 0, 0.65); +} +.pageHeader { + background: #fff; + border-bottom: 1px solid #e8e8e8; +} +.pageHeader .tabs :global .ant-tabs-bar { + border-bottom: 1px solid #e8e8e8; +} +.pageHeader .logo > img { + border-radius: 4px; +} +.pageHeader .title { + color: rgba(0, 0, 0, 0.85); +} +.result .icon > .success { + color: #52c41a; +} +.result .icon > .error { + color: #f5222d; +} +.result .title { + color: rgba(0, 0, 0, 0.85); +} +.result .description { + color: rgba(0, 0, 0, 0.45); +} +.result .extra { + background: #fafafa; + border-radius: 2px; +} +.blockChecbox .item { + border-radius: 4px; +} +.blockChecbox .selectIcon { + color: @primary-color; +} +.color_block { + border-radius: 4px; +} +.title { + color: rgba(0, 0, 0, 0.85); +} +.handle { + background: @primary-color; + border-radius: 4px 0 0 4px; +} +.setting-drawer-index-handle { + /* 暂时不知道放哪解决 */ + background: @primary-color !important; +} +.themeColor .title { + color: rgba(0, 0, 0, 0.65); +} +.themeColor .colorBlock { + border-radius: 2px; + color: #fff; +} +.logo h1 { + color: white; +} +.sider { + box-shadow: 2px 116px 6px rgba(0, 21, 41, 0.35); +} +.sider.light { + box-shadow: 2px 116px 8px 0 rgba(29, 35, 41, 0.05); + background-color: white; +} +.sider.light .logo { + background-color: @primary-color !important; + box-shadow: 1px 1px 0 0 #e8e8e8; +} +.sider.light .logo h1 { + color: white; +} +.sider.light :global(.ant-menu-light) { + border-right-color: transparent; +} +:global .drawer .drawer-content { + background: #001529; +} +.standardFormRow { + border-bottom: 1px dashed #e8e8e8; +} +.standardFormRow :global .ant-form-item-label label { + color: rgba(0, 0, 0, 0.65); +} +.standardFormRow .label { + color: rgba(0, 0, 0, 0.85); +} +.standardFormRowLast { + border: none; +} + +.head { + box-shadow: 0 1px 4px rgba(0, 21, 41, 0.08); +} +.head.light { + background-color: #fff; +} +.logo h1 { + color: #fff; +} +.light h1 { + color: #002140; +} +.trendItem .up { + color: #f5222d; +} +.trendItem .down { + color: #52c41a; +} +.trendItem.trendItemGrey .up, +.trendItem.trendItemGrey .down { + color: rgba(0, 0, 0, 0.65); +} +.trendItem.reverseColor .up { + color: #52c41a; +} +.trendItem.reverseColor .down { + color: #f5222d; +} +.container { + background: #f0f2f5; +} +.title { + color: rgba(0, 0, 0, 0.85); +} +.desc { + color: rgba(0, 0, 0, 0.45); +} +a.listItemMetaTitle { + color: rgba(0, 0, 0, 0.85); +} +.baseView .right .avatar_title { + color: rgba(0, 0, 0, 0.85); +} +.main { + background-color: #fff; +} +.main .leftmenu { + border-right: 1px solid #e8e8e8; +} +.main .leftmenu :global .ant-menu-inline { + border: none; +} +.main .right .title { + color: rgba(0, 0, 0, 0.85); +} +.main :global .ant-list-split .ant-list-item:last-child { + border-bottom: 1px solid #e8e8e8; +} +:global .ant-list-item-meta .taobao { + color: #ff4000; + border-radius: 4px; +} +:global .ant-list-item-meta .dingding { + background-color: #2eabff; + color: #fff; + border-radius: 4px; +} +:global .ant-list-item-meta .alipay { + color: #2eabff; + border-radius: 4px; +} +:global font.strong { + color: #52c41a; +} +:global font.medium { + color: #faad14; +} +:global font.weak { + color: #f5222d; +} + + + + +.trigger { + background: 'red'; +} +.desc { + color: rgba(0, 0, 0, 0.45); +} +.desc h3 { + color: rgba(0, 0, 0, 0.45); +} +.desc h4 { + color: rgba(0, 0, 0, 0.45); +} +.information .label { + color: rgba(0, 0, 0, 0.85); +} +.errorIcon { + color: #f5222d; +} +.errorListItem { + border-bottom: 1px solid #e8e8e8; +} +.errorListItem:hover { + background: color(~`colorPalette("@{primary-color}", 1)`); +} +.errorListItem:last-child { + border: 0; +} +.errorListItem .errorIcon { + color: #f5222d; +} +.errorListItem .errorField { + color: rgba(0, 0, 0, 0.45); +} +.optional { + color: rgba(0, 0, 0, 0.45); +} +a.listItemMetaTitle { + color: rgba(0, 0, 0, 0.85); +} +.noData { + color: rgba(0, 0, 0, 0.25); +} +.heading { + color: rgba(0, 0, 0, 0.85); +} +.textSecondary { + color: rgba(0, 0, 0, 0.45); +} +.title { + color: rgba(0, 0, 0, 0.85); +} +.main .icon { + color: rgba(0, 0, 0, 0.2); +} +.main .icon:hover { + color: @primary-color; +} +.success { + color: #52c41a; +} +.warning { + color: #faad14; +} +.error { + color: #f5222d; +} +.progress-pass > .progress :global .ant-progress-bg { + background-color: #faad14; +} +html { + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} +body { + color: rgba(0, 0, 0, 0.65); + background-color: #fff; +} +h1, +h2, +h3, +h4, +h5, +h6 { + color: rgba(0, 0, 0, 0.85); +} +abbr[title], +abbr[data-original-title] { + border-bottom: 0; +} +a { + color: @primary-color; + background-color: transparent; +} +a:hover { + color: color(~`colorPalette("@{primary-color}", 5)`); +} +a:active { + color: color(~`colorPalette("@{primary-color}", 7)`); +} +a[disabled] { + color: rgba(0, 0, 0, 0.25); +} +img { + border-style: none; +} +table { + border-collapse: collapse; +} +caption { + color: rgba(0, 0, 0, 0.45); +} +input, +button, +select, +optgroup, +textarea { + color: inherit; +} +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + border-style: none; +} +fieldset { + border: 0; +} +legend { + color: inherit; +} +mark { + background-color: #feffe6; +} +::selection { + background: @primary-color; + color: #fff; +} +[ant-click-animating-without-extra-node]:after, +.ant-click-animating-node { + border-radius: inherit; + border: 0 solid @primary-color; +} +.ant-alert { + color: rgba(0, 0, 0, 0.65); + border-radius: 4px; +} +.ant-alert-success { + border: 1px solid #b7eb8f; + background-color: #f6ffed; +} +.ant-alert-success .ant-alert-icon { + color: #52c41a; +} +.ant-alert-info { + border: 1px solid color(~`colorPalette("@{primary-color}", 3)`); + background-color: color(~`colorPalette("@{primary-color}", 1)`); +} +.ant-alert-info .ant-alert-icon { + color: @primary-color; +} +.ant-alert-warning { + border: 1px solid #ffe58f; + background-color: #fffbe6; +} +.ant-alert-warning .ant-alert-icon { + color: #faad14; +} +.ant-alert-error { + border: 1px solid #ffa39e; + background-color: #fff1f0; +} +.ant-alert-error .ant-alert-icon { + color: #f5222d; +} +.ant-alert-close-icon .anticon-close { + color: rgba(0, 0, 0, 0.45); +} +.ant-alert-close-icon .anticon-close:hover { + color: #404040; +} +.ant-alert-with-description { + border-radius: 4px; + color: rgba(0, 0, 0, 0.65); +} +.ant-alert-with-description .ant-alert-message { + color: rgba(0, 0, 0, 0.85); +} +.ant-alert-banner { + border-radius: 0; + border: 0; +} +.ant-anchor { + color: rgba(0, 0, 0, 0.65); +} +.ant-anchor-wrapper { + background-color: #fff; +} +.ant-anchor-ink:before { + background-color: #e8e8e8; +} +.ant-anchor-ink-ball { + border-radius: 8px; + border: 2px solid @primary-color; + background-color: #fff; +} +.ant-anchor-link-title { + color: rgba(0, 0, 0, 0.65); +} +.ant-anchor-link-active > .ant-anchor-link-title { + color: @primary-color; +} +.ant-select-auto-complete { + color: rgba(0, 0, 0, 0.65); +} +.ant-select-auto-complete.ant-select .ant-select-selection { + border: 0; + box-shadow: none; +} +.ant-select-auto-complete.ant-select .ant-input { + background: transparent; + border-width: 1px; +} +.ant-select-auto-complete.ant-select .ant-input:focus, +.ant-select-auto-complete.ant-select .ant-input:hover { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + border-right-width: 1px !important; +} +.ant-avatar { + color: rgba(0, 0, 0, 0.65); + background: #ccc; + color: #fff; + border-radius: 50%; +} +.ant-avatar-image { + background: transparent; +} +.ant-avatar-lg { + border-radius: 50%; +} +.ant-avatar-sm { + border-radius: 50%; +} +.ant-avatar-square { + border-radius: 4px; +} +.ant-back-top { + color: rgba(0, 0, 0, 0.65); +} +.ant-back-top-content { + border-radius: 20px; + background-color: rgba(0, 0, 0, 0.45); + color: #fff; +} +.ant-back-top-content:hover { + background-color: rgba(0, 0, 0, 0.65); +} +.ant-back-top-icon { + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAoCAYAAACWwljjAAAABGdBTUEAALGPC/xhBQAAAbtJREFUWAntmMtKw0AUhhMvS5cuxILgQlRUpIggIoKIIoigG1eC+AA+jo+i6FIXBfeuXIgoeKVeitVWJX5HWhhDksnUpp3FDPyZk3Nm5nycmZKkXhAEOXSA3lG7muTeRzmfy6HneUvIhnYkQK+Q9NhAA0Opg0vBEhjBKHiyb8iGMyQMOYuK41BcBSypAL+MYXSKjtFAW7EAGEO3qN4uMQbbAkXiSfRQJ1H6a+yhlkKRcAoVFYiweYNjtCVQJJpBz2GCiPt7fBOZQpFgDpUikse5HgnkM4Fi4QX0Fpc5wf9EbLqpUCy4jMoJSXWhFwbMNgWKhVbRhy5jirhs9fy/oFhgHVVTJEs7RLZ8sSEoJm6iz7SZDMbJ+/OKERQTttCXQRLToRUmrKWCYuA2+jbN0MB4OQobYShfdTCgn/sL1K36M7TLrN3n+758aPy2rrpR6+/od5E8tf/A1uLS9aId5T7J3CNYihkQ4D9PiMdMC7mp4rjB9kjFjZp8BlnVHJBuO1yFXIV0FdDF3RlyFdJVQBdv5AxVdIsq8apiZ2PyYO1EVykesGfZEESsCkweyR8MUW+V8uJ1gkYipmpdP1pm2aJVPEGzAAAAAElFTkSuQmCC) 100%/100% no-repeat; +} +.ant-badge { + color: rgba(0, 0, 0, 0.65); + color: unset; +} +.ant-badge-count { + border-radius: 10px; + background: #f5222d; + color: #fff; + box-shadow: 0 0 0 1px #fff; +} +.ant-badge-count a, +.ant-badge-count a:hover { + color: #fff; +} +.ant-badge-dot { + border-radius: 100%; + background: #f5222d; + box-shadow: 0 0 0 1px #fff; +} +.ant-badge-status-dot { + border-radius: 50%; +} +.ant-badge-status-success { + background-color: #52c41a; +} +.ant-badge-status-processing { + background-color: @primary-color; +} +.ant-badge-status-processing:after { + border-radius: 50%; + border: 1px solid @primary-color; +} +.ant-badge-status-default { + background-color: #d9d9d9; +} +.ant-badge-status-error { + background-color: #f5222d; +} +.ant-badge-status-warning { + background-color: #faad14; +} +.ant-badge-status-text { + color: rgba(0, 0, 0, 0.65); +} +.ant-breadcrumb { + color: rgba(0, 0, 0, 0.65); + color: rgba(0, 0, 0, 0.45); +} +.ant-breadcrumb a { + color: rgba(0, 0, 0, 0.45); +} +.ant-breadcrumb a:hover { + color: color(~`colorPalette("@{primary-color}", 5)`); +} +.ant-breadcrumb > span:last-child { + color: rgba(0, 0, 0, 0.65); +} +.ant-breadcrumb-separator { + color: rgba(0, 0, 0, 0.45); +} +.ant-btn { + background-image: none; + border: 1px solid transparent; + border-radius: 4px; + box-shadow: 0 2px 0 rgba(0, 0, 0, 0.015); + color: rgba(0, 0, 0, 0.65); + background-color: #fff; + border-color: #d9d9d9; +} +.ant-btn:not([disabled]):active { + box-shadow: none; +} +.ant-btn-lg { + border-radius: 4px; +} +.ant-btn-sm { + border-radius: 4px; +} +.ant-btn > a:only-child { + color: currentColor; +} +.ant-btn > a:only-child:after { + background: transparent; +} +.ant-btn:hover, +.ant-btn:focus { + color: color(~`colorPalette("@{primary-color}", 5)`); + background-color: #fff; + border-color: color(~`colorPalette("@{primary-color}", 5)`); +} +.ant-btn:hover > a:only-child, +.ant-btn:focus > a:only-child { + color: currentColor; +} +.ant-btn:hover > a:only-child:after, +.ant-btn:focus > a:only-child:after { + background: transparent; +} +.ant-btn:active, +.ant-btn.active { + color: color(~`colorPalette("@{primary-color}", 7)`); + background-color: #fff; + border-color: color(~`colorPalette("@{primary-color}", 7)`); +} +.ant-btn:active > a:only-child, +.ant-btn.active > a:only-child { + color: currentColor; +} +.ant-btn:active > a:only-child:after, +.ant-btn.active > a:only-child:after { + background: transparent; +} +.ant-btn.disabled, +.ant-btn[disabled], +.ant-btn.disabled:hover, +.ant-btn[disabled]:hover, +.ant-btn.disabled:focus, +.ant-btn[disabled]:focus, +.ant-btn.disabled:active, +.ant-btn[disabled]:active, +.ant-btn.disabled.active, +.ant-btn[disabled].active { + color: rgba(0, 0, 0, 0.25); + background-color: #f5f5f5; + border-color: #d9d9d9; + box-shadow: none; +} +.ant-btn.disabled > a:only-child, +.ant-btn[disabled] > a:only-child, +.ant-btn.disabled:hover > a:only-child, +.ant-btn[disabled]:hover > a:only-child, +.ant-btn.disabled:focus > a:only-child, +.ant-btn[disabled]:focus > a:only-child, +.ant-btn.disabled:active > a:only-child, +.ant-btn[disabled]:active > a:only-child, +.ant-btn.disabled.active > a:only-child, +.ant-btn[disabled].active > a:only-child { + color: currentColor; +} +.ant-btn.disabled > a:only-child:after, +.ant-btn[disabled] > a:only-child:after, +.ant-btn.disabled:hover > a:only-child:after, +.ant-btn[disabled]:hover > a:only-child:after, +.ant-btn.disabled:focus > a:only-child:after, +.ant-btn[disabled]:focus > a:only-child:after, +.ant-btn.disabled:active > a:only-child:after, +.ant-btn[disabled]:active > a:only-child:after, +.ant-btn.disabled.active > a:only-child:after, +.ant-btn[disabled].active > a:only-child:after { + background: transparent; +} +.ant-btn:hover, +.ant-btn:focus, +.ant-btn:active, +.ant-btn.active { + background: #fff; +} +.ant-btn-primary { + color: #fff; + background-color: @primary-color; + border-color: @primary-color; + box-shadow: 0 2px 0 rgba(0, 0, 0, 0.035); +} +.ant-btn-primary > a:only-child { + color: currentColor; +} +.ant-btn-primary > a:only-child:after { + background: transparent; +} +.ant-btn-primary:hover, +.ant-btn-primary:focus { + color: #fff; + background-color: color(~`colorPalette("@{primary-color}", 5)`); + border-color: color(~`colorPalette("@{primary-color}", 5)`); +} +.ant-btn-primary:hover > a:only-child, +.ant-btn-primary:focus > a:only-child { + color: currentColor; +} +.ant-btn-primary:hover > a:only-child:after, +.ant-btn-primary:focus > a:only-child:after { + background: transparent; +} +.ant-btn-primary:active, +.ant-btn-primary.active { + color: #fff; + background-color: color(~`colorPalette("@{primary-color}", 7)`); + border-color: color(~`colorPalette("@{primary-color}", 7)`); +} +.ant-btn-primary:active > a:only-child, +.ant-btn-primary.active > a:only-child { + color: currentColor; +} +.ant-btn-primary:active > a:only-child:after, +.ant-btn-primary.active > a:only-child:after { + background: transparent; +} +.ant-btn-primary.disabled, +.ant-btn-primary[disabled], +.ant-btn-primary.disabled:hover, +.ant-btn-primary[disabled]:hover, +.ant-btn-primary.disabled:focus, +.ant-btn-primary[disabled]:focus, +.ant-btn-primary.disabled:active, +.ant-btn-primary[disabled]:active, +.ant-btn-primary.disabled.active, +.ant-btn-primary[disabled].active { + color: rgba(0, 0, 0, 0.25); + background-color: #f5f5f5; + border-color: #d9d9d9; + box-shadow: none; +} +.ant-btn-primary.disabled > a:only-child, +.ant-btn-primary[disabled] > a:only-child, +.ant-btn-primary.disabled:hover > a:only-child, +.ant-btn-primary[disabled]:hover > a:only-child, +.ant-btn-primary.disabled:focus > a:only-child, +.ant-btn-primary[disabled]:focus > a:only-child, +.ant-btn-primary.disabled:active > a:only-child, +.ant-btn-primary[disabled]:active > a:only-child, +.ant-btn-primary.disabled.active > a:only-child, +.ant-btn-primary[disabled].active > a:only-child { + color: currentColor; +} +.ant-btn-primary.disabled > a:only-child:after, +.ant-btn-primary[disabled] > a:only-child:after, +.ant-btn-primary.disabled:hover > a:only-child:after, +.ant-btn-primary[disabled]:hover > a:only-child:after, +.ant-btn-primary.disabled:focus > a:only-child:after, +.ant-btn-primary[disabled]:focus > a:only-child:after, +.ant-btn-primary.disabled:active > a:only-child:after, +.ant-btn-primary[disabled]:active > a:only-child:after, +.ant-btn-primary.disabled.active > a:only-child:after, +.ant-btn-primary[disabled].active > a:only-child:after { + background: transparent; +} +.ant-btn-group .ant-btn-primary:not(:first-child):not(:last-child) { + border-right-color: color(~`colorPalette("@{primary-color}", 5)`); + border-left-color: color(~`colorPalette("@{primary-color}", 5)`); +} +.ant-btn-group .ant-btn-primary:not(:first-child):not(:last-child):disabled { + border-color: #d9d9d9; +} +.ant-btn-group .ant-btn-primary:first-child:not(:last-child) { + border-right-color: color(~`colorPalette("@{primary-color}", 5)`); +} +.ant-btn-group .ant-btn-primary:first-child:not(:last-child)[disabled] { + border-right-color: #d9d9d9; +} +.ant-btn-group .ant-btn-primary:last-child:not(:first-child), +.ant-btn-group .ant-btn-primary + .ant-btn-primary { + border-left-color: color(~`colorPalette("@{primary-color}", 5)`); +} +.ant-btn-group .ant-btn-primary:last-child:not(:first-child)[disabled], +.ant-btn-group .ant-btn-primary + .ant-btn-primary[disabled] { + border-left-color: #d9d9d9; +} +.ant-btn-ghost { + color: rgba(0, 0, 0, 0.65); + background-color: transparent; + border-color: #d9d9d9; +} +.ant-btn-ghost > a:only-child { + color: currentColor; +} +.ant-btn-ghost > a:only-child:after { + background: transparent; +} +.ant-btn-ghost:hover, +.ant-btn-ghost:focus { + color: color(~`colorPalette("@{primary-color}", 5)`); + background-color: transparent; + border-color: color(~`colorPalette("@{primary-color}", 5)`); +} +.ant-btn-ghost:hover > a:only-child, +.ant-btn-ghost:focus > a:only-child { + color: currentColor; +} +.ant-btn-ghost:hover > a:only-child:after, +.ant-btn-ghost:focus > a:only-child:after { + background: transparent; +} +.ant-btn-ghost:active, +.ant-btn-ghost.active { + color: color(~`colorPalette("@{primary-color}", 7)`); + background-color: transparent; + border-color: color(~`colorPalette("@{primary-color}", 7)`); +} +.ant-btn-ghost:active > a:only-child, +.ant-btn-ghost.active > a:only-child { + color: currentColor; +} +.ant-btn-ghost:active > a:only-child:after, +.ant-btn-ghost.active > a:only-child:after { + background: transparent; +} +.ant-btn-ghost.disabled, +.ant-btn-ghost[disabled], +.ant-btn-ghost.disabled:hover, +.ant-btn-ghost[disabled]:hover, +.ant-btn-ghost.disabled:focus, +.ant-btn-ghost[disabled]:focus, +.ant-btn-ghost.disabled:active, +.ant-btn-ghost[disabled]:active, +.ant-btn-ghost.disabled.active, +.ant-btn-ghost[disabled].active { + color: rgba(0, 0, 0, 0.25); + background-color: #f5f5f5; + border-color: #d9d9d9; + box-shadow: none; +} +.ant-btn-ghost.disabled > a:only-child, +.ant-btn-ghost[disabled] > a:only-child, +.ant-btn-ghost.disabled:hover > a:only-child, +.ant-btn-ghost[disabled]:hover > a:only-child, +.ant-btn-ghost.disabled:focus > a:only-child, +.ant-btn-ghost[disabled]:focus > a:only-child, +.ant-btn-ghost.disabled:active > a:only-child, +.ant-btn-ghost[disabled]:active > a:only-child, +.ant-btn-ghost.disabled.active > a:only-child, +.ant-btn-ghost[disabled].active > a:only-child { + color: currentColor; +} +.ant-btn-ghost.disabled > a:only-child:after, +.ant-btn-ghost[disabled] > a:only-child:after, +.ant-btn-ghost.disabled:hover > a:only-child:after, +.ant-btn-ghost[disabled]:hover > a:only-child:after, +.ant-btn-ghost.disabled:focus > a:only-child:after, +.ant-btn-ghost[disabled]:focus > a:only-child:after, +.ant-btn-ghost.disabled:active > a:only-child:after, +.ant-btn-ghost[disabled]:active > a:only-child:after, +.ant-btn-ghost.disabled.active > a:only-child:after, +.ant-btn-ghost[disabled].active > a:only-child:after { + background: transparent; +} +.ant-btn-dashed { + color: rgba(0, 0, 0, 0.65); + background-color: #fff; + border-color: #d9d9d9; + border-style: dashed; +} +.ant-btn-dashed > a:only-child { + color: currentColor; +} +.ant-btn-dashed > a:only-child:after { + background: transparent; +} +.ant-btn-dashed:hover, +.ant-btn-dashed:focus { + color: color(~`colorPalette("@{primary-color}", 5)`); + background-color: #fff; + border-color: color(~`colorPalette("@{primary-color}", 5)`); +} +.ant-btn-dashed:hover > a:only-child, +.ant-btn-dashed:focus > a:only-child { + color: currentColor; +} +.ant-btn-dashed:hover > a:only-child:after, +.ant-btn-dashed:focus > a:only-child:after { + background: transparent; +} +.ant-btn-dashed:active, +.ant-btn-dashed.active { + color: color(~`colorPalette("@{primary-color}", 7)`); + background-color: #fff; + border-color: color(~`colorPalette("@{primary-color}", 7)`); +} +.ant-btn-dashed:active > a:only-child, +.ant-btn-dashed.active > a:only-child { + color: currentColor; +} +.ant-btn-dashed:active > a:only-child:after, +.ant-btn-dashed.active > a:only-child:after { + background: transparent; +} +.ant-btn-dashed.disabled, +.ant-btn-dashed[disabled], +.ant-btn-dashed.disabled:hover, +.ant-btn-dashed[disabled]:hover, +.ant-btn-dashed.disabled:focus, +.ant-btn-dashed[disabled]:focus, +.ant-btn-dashed.disabled:active, +.ant-btn-dashed[disabled]:active, +.ant-btn-dashed.disabled.active, +.ant-btn-dashed[disabled].active { + color: rgba(0, 0, 0, 0.25); + background-color: #f5f5f5; + border-color: #d9d9d9; + box-shadow: none; +} +.ant-btn-dashed.disabled > a:only-child, +.ant-btn-dashed[disabled] > a:only-child, +.ant-btn-dashed.disabled:hover > a:only-child, +.ant-btn-dashed[disabled]:hover > a:only-child, +.ant-btn-dashed.disabled:focus > a:only-child, +.ant-btn-dashed[disabled]:focus > a:only-child, +.ant-btn-dashed.disabled:active > a:only-child, +.ant-btn-dashed[disabled]:active > a:only-child, +.ant-btn-dashed.disabled.active > a:only-child, +.ant-btn-dashed[disabled].active > a:only-child { + color: currentColor; +} +.ant-btn-dashed.disabled > a:only-child:after, +.ant-btn-dashed[disabled] > a:only-child:after, +.ant-btn-dashed.disabled:hover > a:only-child:after, +.ant-btn-dashed[disabled]:hover > a:only-child:after, +.ant-btn-dashed.disabled:focus > a:only-child:after, +.ant-btn-dashed[disabled]:focus > a:only-child:after, +.ant-btn-dashed.disabled:active > a:only-child:after, +.ant-btn-dashed[disabled]:active > a:only-child:after, +.ant-btn-dashed.disabled.active > a:only-child:after, +.ant-btn-dashed[disabled].active > a:only-child:after { + background: transparent; +} +.ant-btn-danger { + color: #f5222d; + background-color: #f5f5f5; + border-color: #d9d9d9; +} +.ant-btn-danger > a:only-child { + color: currentColor; +} +.ant-btn-danger > a:only-child:after { + background: transparent; +} +.ant-btn-danger:hover { + color: #fff; + background-color: #ff4d4f; + border-color: #ff4d4f; +} +.ant-btn-danger:hover > a:only-child { + color: currentColor; +} +.ant-btn-danger:hover > a:only-child:after { + background: transparent; +} +.ant-btn-danger:focus { + color: #ff4d4f; + background-color: #fff; + border-color: #ff4d4f; +} +.ant-btn-danger:focus > a:only-child { + color: currentColor; +} +.ant-btn-danger:focus > a:only-child:after { + background: transparent; +} +.ant-btn-danger:active, +.ant-btn-danger.active { + color: #fff; + background-color: #cf1322; + border-color: #cf1322; +} +.ant-btn-danger:active > a:only-child, +.ant-btn-danger.active > a:only-child { + color: currentColor; +} +.ant-btn-danger:active > a:only-child:after, +.ant-btn-danger.active > a:only-child:after { + background: transparent; +} +.ant-btn-danger.disabled, +.ant-btn-danger[disabled], +.ant-btn-danger.disabled:hover, +.ant-btn-danger[disabled]:hover, +.ant-btn-danger.disabled:focus, +.ant-btn-danger[disabled]:focus, +.ant-btn-danger.disabled:active, +.ant-btn-danger[disabled]:active, +.ant-btn-danger.disabled.active, +.ant-btn-danger[disabled].active { + color: rgba(0, 0, 0, 0.25); + background-color: #f5f5f5; + border-color: #d9d9d9; + box-shadow: none; +} +.ant-btn-danger.disabled > a:only-child, +.ant-btn-danger[disabled] > a:only-child, +.ant-btn-danger.disabled:hover > a:only-child, +.ant-btn-danger[disabled]:hover > a:only-child, +.ant-btn-danger.disabled:focus > a:only-child, +.ant-btn-danger[disabled]:focus > a:only-child, +.ant-btn-danger.disabled:active > a:only-child, +.ant-btn-danger[disabled]:active > a:only-child, +.ant-btn-danger.disabled.active > a:only-child, +.ant-btn-danger[disabled].active > a:only-child { + color: currentColor; +} +.ant-btn-danger.disabled > a:only-child:after, +.ant-btn-danger[disabled] > a:only-child:after, +.ant-btn-danger.disabled:hover > a:only-child:after, +.ant-btn-danger[disabled]:hover > a:only-child:after, +.ant-btn-danger.disabled:focus > a:only-child:after, +.ant-btn-danger[disabled]:focus > a:only-child:after, +.ant-btn-danger.disabled:active > a:only-child:after, +.ant-btn-danger[disabled]:active > a:only-child:after, +.ant-btn-danger.disabled.active > a:only-child:after, +.ant-btn-danger[disabled].active > a:only-child:after { + background: transparent; +} +.ant-btn-circle, +.ant-btn-circle-outline { + border-radius: 50%; +} +.ant-btn-circle.ant-btn-lg, +.ant-btn-circle-outline.ant-btn-lg { + border-radius: 50%; +} +.ant-btn-circle.ant-btn-sm, +.ant-btn-circle-outline.ant-btn-sm { + border-radius: 50%; +} +.ant-btn:before { + background: #fff; + border-radius: inherit; +} +.ant-btn-group-lg > .ant-btn, +.ant-btn-group-lg > span > .ant-btn { + border-radius: 0; +} +.ant-btn-group-sm > .ant-btn, +.ant-btn-group-sm > span > .ant-btn { + border-radius: 0; +} +.ant-btn-group .ant-btn-primary + .ant-btn:not(.ant-btn-primary):not([disabled]) { + border-left-color: transparent; +} +.ant-btn-group .ant-btn { + border-radius: 0; +} +.ant-btn-group > .ant-btn:only-child { + border-radius: 4px; +} +.ant-btn-group > span:only-child > .ant-btn { + border-radius: 4px; +} +.ant-btn-group > .ant-btn:first-child:not(:last-child), +.ant-btn-group > span:first-child:not(:last-child) > .ant-btn { + border-bottom-left-radius: 4px; + border-top-left-radius: 4px; +} +.ant-btn-group > .ant-btn:last-child:not(:first-child), +.ant-btn-group > span:last-child:not(:first-child) > .ant-btn { + border-bottom-right-radius: 4px; + border-top-right-radius: 4px; +} +.ant-btn-group-sm > .ant-btn:only-child { + border-radius: 4px; +} +.ant-btn-group-sm > span:only-child > .ant-btn { + border-radius: 4px; +} +.ant-btn-group-sm > .ant-btn:first-child:not(:last-child), +.ant-btn-group-sm > span:first-child:not(:last-child) > .ant-btn { + border-bottom-left-radius: 4px; + border-top-left-radius: 4px; +} +.ant-btn-group-sm > .ant-btn:last-child:not(:first-child), +.ant-btn-group-sm > span:last-child:not(:first-child) > .ant-btn { + border-bottom-right-radius: 4px; + border-top-right-radius: 4px; +} +.ant-btn-group > .ant-btn-group:not(:first-child):not(:last-child) > .ant-btn { + border-radius: 0; +} +.ant-btn-group > .ant-btn-group:first-child:not(:last-child) > .ant-btn:last-child { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.ant-btn-group > .ant-btn-group:last-child:not(:first-child) > .ant-btn:first-child { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.ant-btn-background-ghost { + background: transparent !important; + border-color: #fff; + color: #fff; +} +.ant-btn-background-ghost.ant-btn-primary { + color: @primary-color; + background-color: transparent; + border-color: @primary-color; +} +.ant-btn-background-ghost.ant-btn-primary > a:only-child { + color: currentColor; +} +.ant-btn-background-ghost.ant-btn-primary > a:only-child:after { + background: transparent; +} +.ant-btn-background-ghost.ant-btn-primary:hover, +.ant-btn-background-ghost.ant-btn-primary:focus { + color: color(~`colorPalette("@{primary-color}", 5)`); + background-color: transparent; + border-color: color(~`colorPalette("@{primary-color}", 5)`); +} +.ant-btn-background-ghost.ant-btn-primary:hover > a:only-child, +.ant-btn-background-ghost.ant-btn-primary:focus > a:only-child { + color: currentColor; +} +.ant-btn-background-ghost.ant-btn-primary:hover > a:only-child:after, +.ant-btn-background-ghost.ant-btn-primary:focus > a:only-child:after { + background: transparent; +} +.ant-btn-background-ghost.ant-btn-primary:active, +.ant-btn-background-ghost.ant-btn-primary.active { + color: color(~`colorPalette("@{primary-color}", 7)`); + background-color: transparent; + border-color: color(~`colorPalette("@{primary-color}", 7)`); +} +.ant-btn-background-ghost.ant-btn-primary:active > a:only-child, +.ant-btn-background-ghost.ant-btn-primary.active > a:only-child { + color: currentColor; +} +.ant-btn-background-ghost.ant-btn-primary:active > a:only-child:after, +.ant-btn-background-ghost.ant-btn-primary.active > a:only-child:after { + background: transparent; +} +.ant-btn-background-ghost.ant-btn-primary.disabled, +.ant-btn-background-ghost.ant-btn-primary[disabled], +.ant-btn-background-ghost.ant-btn-primary.disabled:hover, +.ant-btn-background-ghost.ant-btn-primary[disabled]:hover, +.ant-btn-background-ghost.ant-btn-primary.disabled:focus, +.ant-btn-background-ghost.ant-btn-primary[disabled]:focus, +.ant-btn-background-ghost.ant-btn-primary.disabled:active, +.ant-btn-background-ghost.ant-btn-primary[disabled]:active, +.ant-btn-background-ghost.ant-btn-primary.disabled.active, +.ant-btn-background-ghost.ant-btn-primary[disabled].active { + color: rgba(0, 0, 0, 0.25); + background-color: #f5f5f5; + border-color: #d9d9d9; + box-shadow: none; +} +.ant-btn-background-ghost.ant-btn-primary.disabled > a:only-child, +.ant-btn-background-ghost.ant-btn-primary[disabled] > a:only-child, +.ant-btn-background-ghost.ant-btn-primary.disabled:hover > a:only-child, +.ant-btn-background-ghost.ant-btn-primary[disabled]:hover > a:only-child, +.ant-btn-background-ghost.ant-btn-primary.disabled:focus > a:only-child, +.ant-btn-background-ghost.ant-btn-primary[disabled]:focus > a:only-child, +.ant-btn-background-ghost.ant-btn-primary.disabled:active > a:only-child, +.ant-btn-background-ghost.ant-btn-primary[disabled]:active > a:only-child, +.ant-btn-background-ghost.ant-btn-primary.disabled.active > a:only-child, +.ant-btn-background-ghost.ant-btn-primary[disabled].active > a:only-child { + color: currentColor; +} +.ant-btn-background-ghost.ant-btn-primary.disabled > a:only-child:after, +.ant-btn-background-ghost.ant-btn-primary[disabled] > a:only-child:after, +.ant-btn-background-ghost.ant-btn-primary.disabled:hover > a:only-child:after, +.ant-btn-background-ghost.ant-btn-primary[disabled]:hover > a:only-child:after, +.ant-btn-background-ghost.ant-btn-primary.disabled:focus > a:only-child:after, +.ant-btn-background-ghost.ant-btn-primary[disabled]:focus > a:only-child:after, +.ant-btn-background-ghost.ant-btn-primary.disabled:active > a:only-child:after, +.ant-btn-background-ghost.ant-btn-primary[disabled]:active > a:only-child:after, +.ant-btn-background-ghost.ant-btn-primary.disabled.active > a:only-child:after, +.ant-btn-background-ghost.ant-btn-primary[disabled].active > a:only-child:after { + background: transparent; +} +.ant-btn-background-ghost.ant-btn-danger { + color: #f5222d; + background-color: transparent; + border-color: #f5222d; +} +.ant-btn-background-ghost.ant-btn-danger > a:only-child { + color: currentColor; +} +.ant-btn-background-ghost.ant-btn-danger > a:only-child:after { + background: transparent; +} +.ant-btn-background-ghost.ant-btn-danger:hover, +.ant-btn-background-ghost.ant-btn-danger:focus { + color: #ff4d4f; + background-color: transparent; + border-color: #ff4d4f; +} +.ant-btn-background-ghost.ant-btn-danger:hover > a:only-child, +.ant-btn-background-ghost.ant-btn-danger:focus > a:only-child { + color: currentColor; +} +.ant-btn-background-ghost.ant-btn-danger:hover > a:only-child:after, +.ant-btn-background-ghost.ant-btn-danger:focus > a:only-child:after { + background: transparent; +} +.ant-btn-background-ghost.ant-btn-danger:active, +.ant-btn-background-ghost.ant-btn-danger.active { + color: #cf1322; + background-color: transparent; + border-color: #cf1322; +} +.ant-btn-background-ghost.ant-btn-danger:active > a:only-child, +.ant-btn-background-ghost.ant-btn-danger.active > a:only-child { + color: currentColor; +} +.ant-btn-background-ghost.ant-btn-danger:active > a:only-child:after, +.ant-btn-background-ghost.ant-btn-danger.active > a:only-child:after { + background: transparent; +} +.ant-btn-background-ghost.ant-btn-danger.disabled, +.ant-btn-background-ghost.ant-btn-danger[disabled], +.ant-btn-background-ghost.ant-btn-danger.disabled:hover, +.ant-btn-background-ghost.ant-btn-danger[disabled]:hover, +.ant-btn-background-ghost.ant-btn-danger.disabled:focus, +.ant-btn-background-ghost.ant-btn-danger[disabled]:focus, +.ant-btn-background-ghost.ant-btn-danger.disabled:active, +.ant-btn-background-ghost.ant-btn-danger[disabled]:active, +.ant-btn-background-ghost.ant-btn-danger.disabled.active, +.ant-btn-background-ghost.ant-btn-danger[disabled].active { + color: rgba(0, 0, 0, 0.25); + background-color: #f5f5f5; + border-color: #d9d9d9; + box-shadow: none; +} +.ant-btn-background-ghost.ant-btn-danger.disabled > a:only-child, +.ant-btn-background-ghost.ant-btn-danger[disabled] > a:only-child, +.ant-btn-background-ghost.ant-btn-danger.disabled:hover > a:only-child, +.ant-btn-background-ghost.ant-btn-danger[disabled]:hover > a:only-child, +.ant-btn-background-ghost.ant-btn-danger.disabled:focus > a:only-child, +.ant-btn-background-ghost.ant-btn-danger[disabled]:focus > a:only-child, +.ant-btn-background-ghost.ant-btn-danger.disabled:active > a:only-child, +.ant-btn-background-ghost.ant-btn-danger[disabled]:active > a:only-child, +.ant-btn-background-ghost.ant-btn-danger.disabled.active > a:only-child, +.ant-btn-background-ghost.ant-btn-danger[disabled].active > a:only-child { + color: currentColor; +} +.ant-btn-background-ghost.ant-btn-danger.disabled > a:only-child:after, +.ant-btn-background-ghost.ant-btn-danger[disabled] > a:only-child:after, +.ant-btn-background-ghost.ant-btn-danger.disabled:hover > a:only-child:after, +.ant-btn-background-ghost.ant-btn-danger[disabled]:hover > a:only-child:after, +.ant-btn-background-ghost.ant-btn-danger.disabled:focus > a:only-child:after, +.ant-btn-background-ghost.ant-btn-danger[disabled]:focus > a:only-child:after, +.ant-btn-background-ghost.ant-btn-danger.disabled:active > a:only-child:after, +.ant-btn-background-ghost.ant-btn-danger[disabled]:active > a:only-child:after, +.ant-btn-background-ghost.ant-btn-danger.disabled.active > a:only-child:after, +.ant-btn-background-ghost.ant-btn-danger[disabled].active > a:only-child:after { + background: transparent; +} +.christmas.ant-btn-primary:before { + background: url(data:image/png;base64,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) no-repeat 50% 0; + background-size: 64px; +} +.christmas.ant-btn-primary.ant-btn-lg:before { + background-size: 72px; +} +.christmas.ant-btn-primary.ant-btn-sm:before { + background-size: 56px; +} +.ant-fullcalendar { + color: rgba(0, 0, 0, 0.65); + border-top: 1px solid #d9d9d9; +} +.ant-fullcalendar table { + border-collapse: collapse; + background-color: transparent; +} +.ant-fullcalendar table, +.ant-fullcalendar th, +.ant-fullcalendar td { + border: 0; +} +.ant-fullcalendar-calendar-table { + border-spacing: 0; +} +.ant-fullcalendar-value { + color: rgba(0, 0, 0, 0.65); + border-radius: 2px; + background: transparent; +} +.ant-fullcalendar-value:hover { + background: color(~`colorPalette("@{primary-color}", 1)`); +} +.ant-fullcalendar-value:active { + background: @primary-color; + color: #fff; +} +.ant-fullcalendar-today .ant-fullcalendar-value, +.ant-fullcalendar-month-panel-current-cell .ant-fullcalendar-value { + box-shadow: 0 0 0 1px @primary-color inset; +} +.ant-fullcalendar-selected-day .ant-fullcalendar-value, +.ant-fullcalendar-month-panel-selected-cell .ant-fullcalendar-value { + background: @primary-color; + color: #fff; +} +.ant-fullcalendar-disabled-cell-first-of-row .ant-fullcalendar-value { + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; +} +.ant-fullcalendar-disabled-cell-last-of-row .ant-fullcalendar-value { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; +} +.ant-fullcalendar-last-month-cell .ant-fullcalendar-value, +.ant-fullcalendar-next-month-btn-day .ant-fullcalendar-value { + color: rgba(0, 0, 0, 0.25); +} +.ant-fullcalendar-month-panel-table { + border-collapse: separate; +} +.ant-fullcalendar-fullscreen { + border-top: 0; +} +.ant-fullcalendar-fullscreen .ant-fullcalendar-month, +.ant-fullcalendar-fullscreen .ant-fullcalendar-date { + color: rgba(0, 0, 0, 0.65); + border-top: 2px solid #e8e8e8; +} +.ant-fullcalendar-fullscreen .ant-fullcalendar-month:hover, +.ant-fullcalendar-fullscreen .ant-fullcalendar-date:hover { + background: color(~`colorPalette("@{primary-color}", 1)`); +} +.ant-fullcalendar-fullscreen .ant-fullcalendar-month:active, +.ant-fullcalendar-fullscreen .ant-fullcalendar-date:active { + background: color(~`colorPalette("@{primary-color}", 2)`); +} +.ant-fullcalendar-fullscreen .ant-fullcalendar-value { + background: transparent; +} +.ant-fullcalendar-fullscreen .ant-fullcalendar-today .ant-fullcalendar-value { + color: rgba(0, 0, 0, 0.65); +} +.ant-fullcalendar-fullscreen .ant-fullcalendar-month-panel-current-cell .ant-fullcalendar-month, +.ant-fullcalendar-fullscreen .ant-fullcalendar-today .ant-fullcalendar-date { + border-top-color: @primary-color; + background: transparent; +} +.ant-fullcalendar-fullscreen .ant-fullcalendar-month-panel-current-cell .ant-fullcalendar-value, +.ant-fullcalendar-fullscreen .ant-fullcalendar-today .ant-fullcalendar-value { + box-shadow: none; +} +.ant-fullcalendar-fullscreen .ant-fullcalendar-month-panel-selected-cell .ant-fullcalendar-month, +.ant-fullcalendar-fullscreen .ant-fullcalendar-selected-day .ant-fullcalendar-date { + background: color(~`colorPalette("@{primary-color}", 1)`); +} +.ant-fullcalendar-fullscreen .ant-fullcalendar-month-panel-selected-cell .ant-fullcalendar-value, +.ant-fullcalendar-fullscreen .ant-fullcalendar-selected-day .ant-fullcalendar-value { + color: @primary-color; +} +.ant-fullcalendar-fullscreen .ant-fullcalendar-last-month-cell .ant-fullcalendar-date, +.ant-fullcalendar-fullscreen .ant-fullcalendar-next-month-btn-day .ant-fullcalendar-date { + color: rgba(0, 0, 0, 0.25); +} +.ant-fullcalendar-disabled-cell:not(.ant-fullcalendar-today) .ant-fullcalendar-date, +.ant-fullcalendar-disabled-cell:not(.ant-fullcalendar-today) .ant-fullcalendar-date:hover { + background: transparent; +} +.ant-fullcalendar-disabled-cell .ant-fullcalendar-value { + color: rgba(0, 0, 0, 0.25); + border-radius: 0; +} +.ant-card { + color: rgba(0, 0, 0, 0.65); + background: #fff; + border-radius: 2px; +} +.ant-card-hoverable:hover { + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.09); + border-color: rgba(0, 0, 0, 0.09); +} +.ant-card-bordered { + border: 1px solid #e8e8e8; +} +.ant-card-head { + background: transparent; + border-bottom: 1px solid #e8e8e8; + border-radius: 2px 2px 0 0; + color: rgba(0, 0, 0, 0.85); +} +.ant-card-head .ant-tabs { + color: rgba(0, 0, 0, 0.65); +} +.ant-card-head .ant-tabs-bar { + border-bottom: 1px solid #e8e8e8; +} +.ant-card-extra { + color: rgba(0, 0, 0, 0.65); +} +.ant-card-grid { + border-radius: 0; + border: 0; + box-shadow: 1px 0 0 0 #e8e8e8, 0 1px 0 0 #e8e8e8, 1px 1px 0 0 #e8e8e8, 1px 0 0 0 #e8e8e8 inset, 0 1px 0 0 #e8e8e8 inset; +} +.ant-card-grid:hover { + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); +} +.ant-card-cover img { + border-radius: 2px 2px 0 0; +} +.ant-card-actions { + border-top: 1px solid #e8e8e8; + background: #fafafa; +} +.ant-card-actions > li { + color: rgba(0, 0, 0, 0.45); +} +.ant-card-actions > li > span:hover { + color: @primary-color; +} +.ant-card-actions > li > span a { + color: rgba(0, 0, 0, 0.45); +} +.ant-card-actions > li > span a:hover { + color: @primary-color; +} +.ant-card-actions > li:not(:last-child) { + border-right: 1px solid #e8e8e8; +} +.ant-card-type-inner .ant-card-head { + background: #fafafa; +} +.ant-card-meta-title { + color: rgba(0, 0, 0, 0.85); +} +.ant-card-meta-description { + color: rgba(0, 0, 0, 0.45); +} +.ant-card-loading-block { + border-radius: 2px; + background: linear-gradient(90deg, rgba(207, 216, 220, 0.2), rgba(207, 216, 220, 0.4), rgba(207, 216, 220, 0.2)); + background-size: 600% 600%; +} +.ant-carousel { + color: rgba(0, 0, 0, 0.65); +} +.ant-carousel .slick-slider { + -webkit-tap-highlight-color: transparent; +} +.ant-carousel .slick-vertical .slick-slide { + border: 1px solid transparent; +} +.ant-carousel .slick-prev, +.ant-carousel .slick-next { + background: transparent; + color: transparent; + border: 0; +} +.ant-carousel .slick-prev:hover, +.ant-carousel .slick-next:hover, +.ant-carousel .slick-prev:focus, +.ant-carousel .slick-next:focus { + background: transparent; + color: transparent; +} +.ant-carousel .slick-dots li button { + border: 0; + background: #fff; + border-radius: 1px; + color: transparent; +} +.ant-carousel .slick-dots li.slick-active button { + background: #fff; +} +.ant-cascader { + color: rgba(0, 0, 0, 0.65); +} +.ant-cascader-input.ant-input { + background-color: transparent !important; +} +.ant-cascader-picker { + color: rgba(0, 0, 0, 0.65); + background-color: #fff; + border-radius: 4px; +} +.ant-cascader-picker-with-value .ant-cascader-picker-label { + color: transparent; +} +.ant-cascader-picker-disabled { + background: #f5f5f5; + color: rgba(0, 0, 0, 0.25); +} +.ant-cascader-picker:focus .ant-cascader-input { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); + border-right-width: 1px !important; +} +.ant-cascader-picker-show-search.ant-cascader-picker-focused { + color: rgba(0, 0, 0, 0.25); +} +.ant-cascader-picker-clear { + background: #fff; + color: rgba(0, 0, 0, 0.25); +} +.ant-cascader-picker-clear:hover { + color: rgba(0, 0, 0, 0.45); +} +.ant-cascader-picker-arrow { + color: rgba(0, 0, 0, 0.25); +} +.ant-cascader-menus { + background: #fff; + border-radius: 4px; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); +} +.ant-cascader-menu { + border-right: 1px solid #e8e8e8; +} +.ant-cascader-menu:first-child { + border-radius: 4px 0 0 4px; +} +.ant-cascader-menu:last-child { + border-right-color: transparent; + border-radius: 0 4px 4px 0; +} +.ant-cascader-menu:only-child { + border-radius: 4px; +} +.ant-cascader-menu-item:hover { + background: color(~`colorPalette("@{primary-color}", 1)`); +} +.ant-cascader-menu-item-disabled { + color: rgba(0, 0, 0, 0.25); +} +.ant-cascader-menu-item-disabled:hover { + background: transparent; +} +.ant-cascader-menu-item-active:not(.ant-cascader-menu-item-disabled), +.ant-cascader-menu-item-active:not(.ant-cascader-menu-item-disabled):hover { + background: #f5f5f5; +} +.ant-cascader-menu-item-expand .ant-cascader-menu-item-expand-icon, +.ant-cascader-menu-item-expand .ant-cascader-menu-item-loading-icon { + color: rgba(0, 0, 0, 0.45); +} +.ant-cascader-menu-item .ant-cascader-menu-item-keyword { + color: #f5222d; +} +.ant-checkbox { + color: rgba(0, 0, 0, 0.65); +} +.ant-checkbox-wrapper:hover .ant-checkbox-inner, +.ant-checkbox:hover .ant-checkbox-inner, +.ant-checkbox-input:focus + .ant-checkbox-inner { + border-color: @primary-color; +} +.ant-checkbox-checked:after { + border-radius: 2px; + border: 1px solid @primary-color; +} +.ant-checkbox-inner { + border: 1px solid #d9d9d9; + border-radius: 2px; + background-color: #fff; +} +.ant-checkbox-inner:after { + border: 2px solid #fff; + border-top: 0; + border-left: 0; +} +.ant-checkbox-indeterminate .ant-checkbox-inner:after { + border: 0; + background-color: @primary-color; +} +.ant-checkbox-indeterminate.ant-checkbox-disabled .ant-checkbox-inner:after { + border-color: rgba(0, 0, 0, 0.25); +} +.ant-checkbox-checked .ant-checkbox-inner:after { + border: 2px solid #fff; + border-top: 0; + border-left: 0; +} +.ant-checkbox-checked .ant-checkbox-inner { + background-color: @primary-color; + border-color: @primary-color; +} +.ant-checkbox-disabled.ant-checkbox-checked .ant-checkbox-inner:after { + border-color: rgba(0, 0, 0, 0.25); +} +.ant-checkbox-disabled .ant-checkbox-inner { + border-color: #d9d9d9 !important; + background-color: #f5f5f5; +} +.ant-checkbox-disabled .ant-checkbox-inner:after { + border-color: #f5f5f5; +} +.ant-checkbox-disabled + span { + color: rgba(0, 0, 0, 0.25); +} +.ant-checkbox-wrapper { + color: rgba(0, 0, 0, 0.65); +} +.ant-checkbox-group { + color: rgba(0, 0, 0, 0.65); +} +.ant-collapse { + color: rgba(0, 0, 0, 0.65); + background-color: #fafafa; + border-radius: 4px; + border: 1px solid #d9d9d9; + border-bottom: 0; +} +.ant-collapse > .ant-collapse-item { + border-bottom: 1px solid #d9d9d9; +} +.ant-collapse > .ant-collapse-item:last-child, +.ant-collapse > .ant-collapse-item:last-child > .ant-collapse-header { + border-radius: 0 0 4px 4px; +} +.ant-collapse > .ant-collapse-item > .ant-collapse-header { + color: rgba(0, 0, 0, 0.85); +} +.ant-collapse-content { + color: rgba(0, 0, 0, 0.65); + background-color: #fff; + border-top: 1px solid #d9d9d9; +} +.ant-collapse-item:last-child > .ant-collapse-content { + border-radius: 0 0 4px 4px; +} +.ant-collapse-borderless { + background-color: #fff; + border: 0; +} +.ant-collapse-borderless > .ant-collapse-item { + border-bottom: 1px solid #d9d9d9; +} +.ant-collapse-borderless > .ant-collapse-item:last-child, +.ant-collapse-borderless > .ant-collapse-item:last-child .ant-collapse-header { + border-radius: 0; +} +.ant-collapse-borderless > .ant-collapse-item > .ant-collapse-content { + background-color: transparent; + border-top: 0; +} +.ant-collapse .ant-collapse-item-disabled > .ant-collapse-header, +.ant-collapse .ant-collapse-item-disabled > .ant-collapse-header > .arrow { + color: rgba(0, 0, 0, 0.25); +} +.ant-calendar-picker-container { + color: rgba(0, 0, 0, 0.65); +} +.ant-calendar-picker { + color: rgba(0, 0, 0, 0.65); +} +.ant-calendar-picker:hover .ant-calendar-picker-input:not(.ant-input-disabled) { + border-color: @primary-color; +} +.ant-calendar-picker:focus .ant-calendar-picker-input:not(.ant-input-disabled) { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); + border-right-width: 1px !important; +} +.ant-calendar-picker-clear { + color: rgba(0, 0, 0, 0.25); + background: #fff; +} +.ant-calendar-picker-clear:hover { + color: rgba(0, 0, 0, 0.45); +} +.ant-calendar-picker-icon { + color: rgba(0, 0, 0, 0.25); +} +.ant-calendar { + border: 1px solid #fff; + background-color: #fff; + border-radius: 4px; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); + background-clip: padding-box; +} +.ant-calendar-input-wrap { + border-bottom: 1px solid #e8e8e8; +} +.ant-calendar-input { + border: 0; + color: rgba(0, 0, 0, 0.65); + background: #fff; +} +.ant-calendar-input::-moz-placeholder { + color: #bfbfbf; +} +.ant-calendar-input:-ms-input-placeholder { + color: #bfbfbf; +} +.ant-calendar-input::-webkit-input-placeholder { + color: #bfbfbf; +} +.ant-calendar-header { + border-bottom: 1px solid #e8e8e8; +} +.ant-calendar-header a:hover { + color: color(~`colorPalette("@{primary-color}", 5)`); +} +.ant-calendar-header .ant-calendar-century-select, +.ant-calendar-header .ant-calendar-decade-select, +.ant-calendar-header .ant-calendar-year-select, +.ant-calendar-header .ant-calendar-month-select { + color: rgba(0, 0, 0, 0.85); +} +.ant-calendar-header .ant-calendar-prev-century-btn, +.ant-calendar-header .ant-calendar-next-century-btn, +.ant-calendar-header .ant-calendar-prev-decade-btn, +.ant-calendar-header .ant-calendar-next-decade-btn, +.ant-calendar-header .ant-calendar-prev-month-btn, +.ant-calendar-header .ant-calendar-next-month-btn, +.ant-calendar-header .ant-calendar-prev-year-btn, +.ant-calendar-header .ant-calendar-next-year-btn { + color: rgba(0, 0, 0, 0.45); +} +.ant-calendar table { + border-collapse: collapse; + background-color: transparent; +} +.ant-calendar table, +.ant-calendar th, +.ant-calendar td { + border: 0; +} +.ant-calendar-calendar-table { + border-spacing: 0; +} +.ant-calendar-date { + color: rgba(0, 0, 0, 0.65); + border-radius: 2px; + border: 1px solid transparent; + background: transparent; +} +.ant-calendar-date:hover { + background: color(~`colorPalette("@{primary-color}", 1)`); +} +.ant-calendar-date:active { + color: #fff; + background: color(~`colorPalette("@{primary-color}", 5)`); +} +.ant-calendar-today .ant-calendar-date { + border-color: @primary-color; + color: @primary-color; +} +.ant-calendar-last-month-cell .ant-calendar-date, +.ant-calendar-next-month-btn-day .ant-calendar-date { + color: rgba(0, 0, 0, 0.25); +} +.ant-calendar-selected-day .ant-calendar-date { + background: #d1e9ff; +} +.ant-calendar-selected-date .ant-calendar-date, +.ant-calendar-selected-start-date .ant-calendar-date, +.ant-calendar-selected-end-date .ant-calendar-date { + background: @primary-color; + color: #fff; + border: 1px solid transparent; +} +.ant-calendar-selected-date .ant-calendar-date:hover, +.ant-calendar-selected-start-date .ant-calendar-date:hover, +.ant-calendar-selected-end-date .ant-calendar-date:hover { + background: @primary-color; +} +.ant-calendar-disabled-cell .ant-calendar-date { + color: #bcbcbc; + background: #f5f5f5; + border-radius: 0; + border: 1px solid transparent; +} +.ant-calendar-disabled-cell .ant-calendar-date:hover { + background: #f5f5f5; +} +.ant-calendar-disabled-cell.ant-calendar-today .ant-calendar-date:before { + border: 1px solid #bcbcbc; + border-radius: 2px; +} +.ant-calendar-disabled-cell-first-of-row .ant-calendar-date { + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; +} +.ant-calendar-disabled-cell-last-of-row .ant-calendar-date { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; +} +.ant-calendar-footer { + border-top: 1px solid #e8e8e8; +} +.ant-calendar-footer:empty { + border-top: 0; +} +.ant-calendar .ant-calendar-today-btn-disabled, +.ant-calendar .ant-calendar-clear-btn-disabled { + color: rgba(0, 0, 0, 0.25); +} +.ant-calendar .ant-calendar-clear-btn:after { + color: rgba(0, 0, 0, 0.25); +} +.ant-calendar .ant-calendar-clear-btn:hover:after { + color: rgba(0, 0, 0, 0.45); +} +.ant-calendar .ant-calendar-ok-btn { + background-image: none; + border: 1px solid transparent; + box-shadow: 0 2px 0 rgba(0, 0, 0, 0.015); + color: #fff; + background-color: @primary-color; + border-color: @primary-color; + box-shadow: 0 2px 0 rgba(0, 0, 0, 0.035); + border-radius: 4px; +} +.ant-calendar .ant-calendar-ok-btn:not([disabled]):active { + box-shadow: none; +} +.ant-calendar .ant-calendar-ok-btn-lg { + border-radius: 4px; +} +.ant-calendar .ant-calendar-ok-btn-sm { + border-radius: 4px; +} +.ant-calendar .ant-calendar-ok-btn > a:only-child { + color: currentColor; +} +.ant-calendar .ant-calendar-ok-btn > a:only-child:after { + background: transparent; +} +.ant-calendar .ant-calendar-ok-btn:hover, +.ant-calendar .ant-calendar-ok-btn:focus { + color: #fff; + background-color: color(~`colorPalette("@{primary-color}", 5)`); + border-color: color(~`colorPalette("@{primary-color}", 5)`); +} +.ant-calendar .ant-calendar-ok-btn:hover > a:only-child, +.ant-calendar .ant-calendar-ok-btn:focus > a:only-child { + color: currentColor; +} +.ant-calendar .ant-calendar-ok-btn:hover > a:only-child:after, +.ant-calendar .ant-calendar-ok-btn:focus > a:only-child:after { + background: transparent; +} +.ant-calendar .ant-calendar-ok-btn:active, +.ant-calendar .ant-calendar-ok-btn.active { + color: #fff; + background-color: color(~`colorPalette("@{primary-color}", 7)`); + border-color: color(~`colorPalette("@{primary-color}", 7)`); +} +.ant-calendar .ant-calendar-ok-btn:active > a:only-child, +.ant-calendar .ant-calendar-ok-btn.active > a:only-child { + color: currentColor; +} +.ant-calendar .ant-calendar-ok-btn:active > a:only-child:after, +.ant-calendar .ant-calendar-ok-btn.active > a:only-child:after { + background: transparent; +} +.ant-calendar .ant-calendar-ok-btn.disabled, +.ant-calendar .ant-calendar-ok-btn[disabled], +.ant-calendar .ant-calendar-ok-btn.disabled:hover, +.ant-calendar .ant-calendar-ok-btn[disabled]:hover, +.ant-calendar .ant-calendar-ok-btn.disabled:focus, +.ant-calendar .ant-calendar-ok-btn[disabled]:focus, +.ant-calendar .ant-calendar-ok-btn.disabled:active, +.ant-calendar .ant-calendar-ok-btn[disabled]:active, +.ant-calendar .ant-calendar-ok-btn.disabled.active, +.ant-calendar .ant-calendar-ok-btn[disabled].active { + color: rgba(0, 0, 0, 0.25); + background-color: #f5f5f5; + border-color: #d9d9d9; + box-shadow: none; +} +.ant-calendar .ant-calendar-ok-btn.disabled > a:only-child, +.ant-calendar .ant-calendar-ok-btn[disabled] > a:only-child, +.ant-calendar .ant-calendar-ok-btn.disabled:hover > a:only-child, +.ant-calendar .ant-calendar-ok-btn[disabled]:hover > a:only-child, +.ant-calendar .ant-calendar-ok-btn.disabled:focus > a:only-child, +.ant-calendar .ant-calendar-ok-btn[disabled]:focus > a:only-child, +.ant-calendar .ant-calendar-ok-btn.disabled:active > a:only-child, +.ant-calendar .ant-calendar-ok-btn[disabled]:active > a:only-child, +.ant-calendar .ant-calendar-ok-btn.disabled.active > a:only-child, +.ant-calendar .ant-calendar-ok-btn[disabled].active > a:only-child { + color: currentColor; +} +.ant-calendar .ant-calendar-ok-btn.disabled > a:only-child:after, +.ant-calendar .ant-calendar-ok-btn[disabled] > a:only-child:after, +.ant-calendar .ant-calendar-ok-btn.disabled:hover > a:only-child:after, +.ant-calendar .ant-calendar-ok-btn[disabled]:hover > a:only-child:after, +.ant-calendar .ant-calendar-ok-btn.disabled:focus > a:only-child:after, +.ant-calendar .ant-calendar-ok-btn[disabled]:focus > a:only-child:after, +.ant-calendar .ant-calendar-ok-btn.disabled:active > a:only-child:after, +.ant-calendar .ant-calendar-ok-btn[disabled]:active > a:only-child:after, +.ant-calendar .ant-calendar-ok-btn.disabled.active > a:only-child:after, +.ant-calendar .ant-calendar-ok-btn[disabled].active > a:only-child:after { + background: transparent; +} +.ant-calendar .ant-calendar-ok-btn-disabled { + color: rgba(0, 0, 0, 0.25); + background-color: #f5f5f5; + border-color: #d9d9d9; +} +.ant-calendar .ant-calendar-ok-btn-disabled > a:only-child { + color: currentColor; +} +.ant-calendar .ant-calendar-ok-btn-disabled > a:only-child:after { + background: transparent; +} +.ant-calendar .ant-calendar-ok-btn-disabled:hover { + color: rgba(0, 0, 0, 0.25); + background-color: #f5f5f5; + border-color: #d9d9d9; +} +.ant-calendar .ant-calendar-ok-btn-disabled:hover > a:only-child { + color: currentColor; +} +.ant-calendar .ant-calendar-ok-btn-disabled:hover > a:only-child:after { + background: transparent; +} +.ant-calendar-range-picker-input { + background-color: transparent; + border: 0; +} +.ant-calendar-range-picker-input::-moz-placeholder { + color: #bfbfbf; +} +.ant-calendar-range-picker-input:-ms-input-placeholder { + color: #bfbfbf; +} +.ant-calendar-range-picker-input::-webkit-input-placeholder { + color: #bfbfbf; +} +.ant-calendar-range-picker-separator { + color: rgba(0, 0, 0, 0.45); +} +.ant-calendar-range-left .ant-calendar-time-picker-inner { + border-right: 1px solid #e8e8e8; +} +.ant-calendar-range-right .ant-calendar-time-picker-inner { + border-left: 1px solid #e8e8e8; +} +.ant-calendar-range-middle { + color: rgba(0, 0, 0, 0.45); +} +.ant-calendar-range .ant-calendar-input, +.ant-calendar-range .ant-calendar-time-picker-input { + color: rgba(0, 0, 0, 0.65); + background-color: #fff; + background-image: none; + border: 1px solid #d9d9d9; + border-radius: 4px; + border: 0; + box-shadow: none; +} +.ant-calendar-range .ant-calendar-input::-moz-placeholder, +.ant-calendar-range .ant-calendar-time-picker-input::-moz-placeholder { + color: #bfbfbf; +} +.ant-calendar-range .ant-calendar-input:-ms-input-placeholder, +.ant-calendar-range .ant-calendar-time-picker-input:-ms-input-placeholder { + color: #bfbfbf; +} +.ant-calendar-range .ant-calendar-input::-webkit-input-placeholder, +.ant-calendar-range .ant-calendar-time-picker-input::-webkit-input-placeholder { + color: #bfbfbf; +} +.ant-calendar-range .ant-calendar-input:hover, +.ant-calendar-range .ant-calendar-time-picker-input:hover { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + border-right-width: 1px !important; +} +.ant-calendar-range .ant-calendar-input:focus, +.ant-calendar-range .ant-calendar-time-picker-input:focus { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); + border-right-width: 1px !important; +} +.ant-calendar-range .ant-calendar-input-disabled, +.ant-calendar-range .ant-calendar-time-picker-input-disabled { + background-color: #f5f5f5; + color: rgba(0, 0, 0, 0.25); +} +.ant-calendar-range .ant-calendar-input-disabled:hover, +.ant-calendar-range .ant-calendar-time-picker-input-disabled:hover { + border-color: #e6d8d8; + border-right-width: 1px !important; +} +.ant-calendar-range .ant-calendar-input:focus, +.ant-calendar-range .ant-calendar-time-picker-input:focus { + box-shadow: none; +} +.ant-calendar-range .ant-calendar-in-range-cell { + border-radius: 0; +} +.ant-calendar-range .ant-calendar-in-range-cell:before { + background: color(~`colorPalette("@{primary-color}", 1)`); + border-radius: 0; + border: 0; +} +.ant-calendar-range .ant-calendar-header, +.ant-calendar-range .ant-calendar-month-panel-header, +.ant-calendar-range .ant-calendar-year-panel-header { + border-bottom: 0; +} +.ant-calendar-range .ant-calendar-body, +.ant-calendar-range .ant-calendar-month-panel-body, +.ant-calendar-range .ant-calendar-year-panel-body { + border-top: 1px solid #e8e8e8; +} +.ant-calendar-range.ant-calendar-time .ant-calendar-time-picker-inner { + background: none; +} +.ant-calendar-range.ant-calendar-time .ant-calendar-time-picker-combobox { + background-color: #fff; + border-top: 1px solid #e8e8e8; +} +.ant-calendar-range.ant-calendar-show-time-picker .ant-calendar-body { + border-top-color: transparent; +} +.ant-calendar-time-picker { + background-color: #fff; +} +.ant-calendar-time-picker-inner { + background-color: #fff; + background-clip: padding-box; +} +.ant-calendar-time-picker-select { + border-right: 1px solid #e8e8e8; +} +.ant-calendar-time-picker-select:first-child { + border-left: 0; +} +.ant-calendar-time-picker-select:last-child { + border-right: 0; +} +.ant-calendar-time-picker-select li:hover { + background: color(~`colorPalette("@{primary-color}", 1)`); +} +li.ant-calendar-time-picker-select-option-selected { + background: #f5f5f5; +} +li.ant-calendar-time-picker-select-option-disabled { + color: rgba(0, 0, 0, 0.25); +} +li.ant-calendar-time-picker-select-option-disabled:hover { + background: transparent; +} +.ant-calendar-time .ant-calendar-day-select { + color: rgba(0, 0, 0, 0.85); +} +.ant-calendar-time .ant-calendar-footer .ant-calendar-time-picker-btn-disabled { + color: rgba(0, 0, 0, 0.25); +} +.ant-calendar-month-panel { + border-radius: 4px; + background: #fff; +} +.ant-calendar-month-panel-header { + border-bottom: 1px solid #e8e8e8; +} +.ant-calendar-month-panel-header a:hover { + color: color(~`colorPalette("@{primary-color}", 5)`); +} +.ant-calendar-month-panel-header .ant-calendar-month-panel-century-select, +.ant-calendar-month-panel-header .ant-calendar-month-panel-decade-select, +.ant-calendar-month-panel-header .ant-calendar-month-panel-year-select, +.ant-calendar-month-panel-header .ant-calendar-month-panel-month-select { + color: rgba(0, 0, 0, 0.85); +} +.ant-calendar-month-panel-header .ant-calendar-month-panel-prev-century-btn, +.ant-calendar-month-panel-header .ant-calendar-month-panel-next-century-btn, +.ant-calendar-month-panel-header .ant-calendar-month-panel-prev-decade-btn, +.ant-calendar-month-panel-header .ant-calendar-month-panel-next-decade-btn, +.ant-calendar-month-panel-header .ant-calendar-month-panel-prev-month-btn, +.ant-calendar-month-panel-header .ant-calendar-month-panel-next-month-btn, +.ant-calendar-month-panel-header .ant-calendar-month-panel-prev-year-btn, +.ant-calendar-month-panel-header .ant-calendar-month-panel-next-year-btn { + color: rgba(0, 0, 0, 0.45); +} +.ant-calendar-month-panel-table { + border-collapse: separate; +} +.ant-calendar-month-panel-selected-cell .ant-calendar-month-panel-month { + background: @primary-color; + color: #fff; +} +.ant-calendar-month-panel-selected-cell .ant-calendar-month-panel-month:hover { + background: @primary-color; + color: #fff; +} +.ant-calendar-month-panel-cell-disabled .ant-calendar-month-panel-month, +.ant-calendar-month-panel-cell-disabled .ant-calendar-month-panel-month:hover { + color: #bcbcbc; + background: #f5f5f5; +} +.ant-calendar-month-panel-month { + color: rgba(0, 0, 0, 0.65); + background: transparent; + border-radius: 2px; +} +.ant-calendar-month-panel-month:hover { + background: color(~`colorPalette("@{primary-color}", 1)`); +} +.ant-calendar-year-panel { + border-radius: 4px; + background: #fff; +} +.ant-calendar-year-panel-header { + border-bottom: 1px solid #e8e8e8; +} +.ant-calendar-year-panel-header a:hover { + color: color(~`colorPalette("@{primary-color}", 5)`); +} +.ant-calendar-year-panel-header .ant-calendar-year-panel-century-select, +.ant-calendar-year-panel-header .ant-calendar-year-panel-decade-select, +.ant-calendar-year-panel-header .ant-calendar-year-panel-year-select, +.ant-calendar-year-panel-header .ant-calendar-year-panel-month-select { + color: rgba(0, 0, 0, 0.85); +} +.ant-calendar-year-panel-header .ant-calendar-year-panel-prev-century-btn, +.ant-calendar-year-panel-header .ant-calendar-year-panel-next-century-btn, +.ant-calendar-year-panel-header .ant-calendar-year-panel-prev-decade-btn, +.ant-calendar-year-panel-header .ant-calendar-year-panel-next-decade-btn, +.ant-calendar-year-panel-header .ant-calendar-year-panel-prev-month-btn, +.ant-calendar-year-panel-header .ant-calendar-year-panel-next-month-btn, +.ant-calendar-year-panel-header .ant-calendar-year-panel-prev-year-btn, +.ant-calendar-year-panel-header .ant-calendar-year-panel-next-year-btn { + color: rgba(0, 0, 0, 0.45); +} +.ant-calendar-year-panel-table { + border-collapse: separate; +} +.ant-calendar-year-panel-year { + color: rgba(0, 0, 0, 0.65); + background: transparent; + border-radius: 2px; +} +.ant-calendar-year-panel-year:hover { + background: color(~`colorPalette("@{primary-color}", 1)`); +} +.ant-calendar-year-panel-selected-cell .ant-calendar-year-panel-year { + background: @primary-color; + color: #fff; +} +.ant-calendar-year-panel-selected-cell .ant-calendar-year-panel-year:hover { + background: @primary-color; + color: #fff; +} +.ant-calendar-year-panel-last-decade-cell .ant-calendar-year-panel-year, +.ant-calendar-year-panel-next-decade-cell .ant-calendar-year-panel-year { + color: rgba(0, 0, 0, 0.25); +} +.ant-calendar-decade-panel { + background: #fff; + border-radius: 4px; +} +.ant-calendar-decade-panel-header { + border-bottom: 1px solid #e8e8e8; +} +.ant-calendar-decade-panel-header a:hover { + color: color(~`colorPalette("@{primary-color}", 5)`); +} +.ant-calendar-decade-panel-header .ant-calendar-decade-panel-century-select, +.ant-calendar-decade-panel-header .ant-calendar-decade-panel-decade-select, +.ant-calendar-decade-panel-header .ant-calendar-decade-panel-year-select, +.ant-calendar-decade-panel-header .ant-calendar-decade-panel-month-select { + color: rgba(0, 0, 0, 0.85); +} +.ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-century-btn, +.ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-century-btn, +.ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-decade-btn, +.ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-decade-btn, +.ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-month-btn, +.ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-month-btn, +.ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-year-btn, +.ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-year-btn { + color: rgba(0, 0, 0, 0.45); +} +.ant-calendar-decade-panel-table { + border-collapse: separate; +} +.ant-calendar-decade-panel-decade { + color: rgba(0, 0, 0, 0.65); + background: transparent; + border-radius: 2px; +} +.ant-calendar-decade-panel-decade:hover { + background: color(~`colorPalette("@{primary-color}", 1)`); +} +.ant-calendar-decade-panel-selected-cell .ant-calendar-decade-panel-decade { + background: @primary-color; + color: #fff; +} +.ant-calendar-decade-panel-selected-cell .ant-calendar-decade-panel-decade:hover { + background: @primary-color; + color: #fff; +} +.ant-calendar-decade-panel-last-century-cell .ant-calendar-decade-panel-decade, +.ant-calendar-decade-panel-next-century-cell .ant-calendar-decade-panel-decade { + color: rgba(0, 0, 0, 0.25); +} +.ant-calendar-week-number .ant-calendar-body tr:hover { + background: color(~`colorPalette("@{primary-color}", 1)`); +} +.ant-calendar-week-number .ant-calendar-body tr.ant-calendar-active-week { + background: color(~`colorPalette("@{primary-color}", 2)`); +} +.ant-calendar-week-number .ant-calendar-body tr .ant-calendar-selected-day .ant-calendar-date, +.ant-calendar-week-number .ant-calendar-body tr .ant-calendar-selected-day:hover .ant-calendar-date { + background: transparent; + color: rgba(0, 0, 0, 0.65); +} +.ant-divider { + color: rgba(0, 0, 0, 0.65); + background: #e8e8e8; +} +.ant-divider-horizontal.ant-divider-with-text, +.ant-divider-horizontal.ant-divider-with-text-left, +.ant-divider-horizontal.ant-divider-with-text-right { + background: transparent; + color: rgba(0, 0, 0, 0.85); +} +.ant-divider-horizontal.ant-divider-with-text:before, +.ant-divider-horizontal.ant-divider-with-text-left:before, +.ant-divider-horizontal.ant-divider-with-text-right:before, +.ant-divider-horizontal.ant-divider-with-text:after, +.ant-divider-horizontal.ant-divider-with-text-left:after, +.ant-divider-horizontal.ant-divider-with-text-right:after { + border-top: 1px solid #e8e8e8; +} +.ant-divider-dashed { + background: none; + border-top: 1px dashed #e8e8e8; +} +.ant-divider-horizontal.ant-divider-with-text.ant-divider-dashed, +.ant-divider-horizontal.ant-divider-with-text-left.ant-divider-dashed, +.ant-divider-horizontal.ant-divider-with-text-right.ant-divider-dashed { + border-top: 0; +} +.ant-divider-horizontal.ant-divider-with-text.ant-divider-dashed:before, +.ant-divider-horizontal.ant-divider-with-text-left.ant-divider-dashed:before, +.ant-divider-horizontal.ant-divider-with-text-right.ant-divider-dashed:before, +.ant-divider-horizontal.ant-divider-with-text.ant-divider-dashed:after, +.ant-divider-horizontal.ant-divider-with-text-left.ant-divider-dashed:after, +.ant-divider-horizontal.ant-divider-with-text-right.ant-divider-dashed:after { + border-style: dashed none none; +} +.ant-drawer-left.ant-drawer-open .ant-drawer-content-wrapper { + box-shadow: 2px 0 8px rgba(0, 0, 0, 0.15); +} +.ant-drawer-right.ant-drawer-open .ant-drawer-content-wrapper { + box-shadow: -2px 0 8px rgba(0, 0, 0, 0.15); +} +.ant-drawer-top.ant-drawer-open .ant-drawer-content-wrapper { + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); +} +.ant-drawer-bottom.ant-drawer-open .ant-drawer-content-wrapper { + box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.15); +} +.ant-drawer-title { + color: rgba(0, 0, 0, 0.85); +} +.ant-drawer-content { + background-color: #fff; + border: 0; + background-clip: padding-box; +} +.ant-drawer-close { + border: 0; + background: transparent; + color: rgba(0, 0, 0, 0.45); +} +.ant-drawer-close:focus, +.ant-drawer-close:hover { + color: #444; +} +.ant-drawer-header { + border-radius: 4px 4px 0 0; + background: #fff; + color: rgba(0, 0, 0, 0.65); + border-bottom: 1px solid #e8e8e8; +} +.ant-drawer-mask { + background-color: rgba(0, 0, 0, 0.65); +} +.ant-drawer-open-content { + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); +} +.ant-dropdown { + color: rgba(0, 0, 0, 0.65); +} +.ant-dropdown-menu { + background-color: #fff; + border-radius: 4px; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); + background-clip: padding-box; +} +.ant-dropdown-menu-item-group-title { + color: rgba(0, 0, 0, 0.45); +} +.ant-dropdown-menu-item, +.ant-dropdown-menu-submenu-title { + color: rgba(0, 0, 0, 0.65); +} +.ant-dropdown-menu-item > a, +.ant-dropdown-menu-submenu-title > a { + color: rgba(0, 0, 0, 0.65); +} +.ant-dropdown-menu-item-selected, +.ant-dropdown-menu-submenu-title-selected, +.ant-dropdown-menu-item-selected > a, +.ant-dropdown-menu-submenu-title-selected > a { + color: @primary-color; + background-color: color(~`colorPalette("@{primary-color}", 1)`); +} +.ant-dropdown-menu-item:hover, +.ant-dropdown-menu-submenu-title:hover { + background-color: color(~`colorPalette("@{primary-color}", 1)`); +} +.ant-dropdown-menu-item-disabled, +.ant-dropdown-menu-submenu-title-disabled { + color: rgba(0, 0, 0, 0.25); +} +.ant-dropdown-menu-item-disabled:hover, +.ant-dropdown-menu-submenu-title-disabled:hover { + color: rgba(0, 0, 0, 0.25); + background-color: #fff; +} +.ant-dropdown-menu-item-divider, +.ant-dropdown-menu-submenu-title-divider { + background-color: #e8e8e8; +} +.ant-dropdown-menu-item .ant-dropdown-menu-submenu-arrow-icon, +.ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow-icon { + color: rgba(0, 0, 0, 0.45); +} +.ant-dropdown-menu-submenu.ant-dropdown-menu-submenu-disabled .ant-dropdown-menu-submenu-title, +.ant-dropdown-menu-submenu.ant-dropdown-menu-submenu-disabled .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow-icon { + color: rgba(0, 0, 0, 0.25); +} +.ant-dropdown-menu-dark, +.ant-dropdown-menu-dark .ant-dropdown-menu { + background: #001529; +} +.ant-dropdown-menu-dark .ant-dropdown-menu-item, +.ant-dropdown-menu-dark .ant-dropdown-menu-submenu-title, +.ant-dropdown-menu-dark .ant-dropdown-menu-item > a { + color: rgba(255, 255, 255, 0.65); +} +.ant-dropdown-menu-dark .ant-dropdown-menu-item .ant-dropdown-menu-submenu-arrow:after, +.ant-dropdown-menu-dark .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow:after, +.ant-dropdown-menu-dark .ant-dropdown-menu-item > a .ant-dropdown-menu-submenu-arrow:after { + color: rgba(255, 255, 255, 0.65); +} +.ant-dropdown-menu-dark .ant-dropdown-menu-item:hover, +.ant-dropdown-menu-dark .ant-dropdown-menu-submenu-title:hover, +.ant-dropdown-menu-dark .ant-dropdown-menu-item > a:hover { + color: #fff; + background: transparent; +} +.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected, +.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected:hover, +.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected > a { + background: @primary-color; + color: #fff; +} +.ant-form { + color: rgba(0, 0, 0, 0.65); +} +.ant-form legend { + color: rgba(0, 0, 0, 0.45); + border: 0; + border-bottom: 1px solid #d9d9d9; +} +.ant-form output { + color: rgba(0, 0, 0, 0.65); +} +.ant-form-item-required:before { + color: #f5222d; +} +.ant-form-item { + color: rgba(0, 0, 0, 0.65); +} +.ant-form-item-label label { + color: rgba(0, 0, 0, 0.85); +} +.ant-form-explain, +.ant-form-extra { + color: rgba(0, 0, 0, 0.45); +} +form .ant-upload { + background: transparent; +} +.ant-input-group-wrap .ant-select-selection { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.ant-input-group-wrap .ant-select-selection:hover { + border-color: #d9d9d9; +} +.ant-input-group-wrap .ant-select-selection--single { + background-color: #eee; +} +.ant-input-group-wrap .ant-select-open .ant-select-selection { + border-color: #d9d9d9; + box-shadow: none; +} +.has-success.has-feedback .ant-form-item-children-icon { + color: #52c41a; +} +.has-warning .ant-form-explain, +.has-warning .ant-form-split { + color: #faad14; +} +.has-warning .ant-input, +.has-warning .ant-input:hover { + border-color: #faad14; +} +.has-warning .ant-input:focus { + border-color: #ffc53d; + box-shadow: 0 0 0 2px rgba(250, 173, 20, 0.2); + border-right-width: 1px !important; +} +.has-warning .ant-input:not([disabled]):hover { + border-color: #faad14; +} +.has-warning .ant-calendar-picker-open .ant-calendar-picker-input { + border-color: #ffc53d; + box-shadow: 0 0 0 2px rgba(250, 173, 20, 0.2); + border-right-width: 1px !important; +} +.has-warning .ant-input-prefix { + color: #faad14; +} +.has-warning .ant-input-group-addon { + color: #faad14; + border-color: #faad14; + background-color: #fff; +} +.has-warning .has-feedback { + color: #faad14; +} +.has-warning.has-feedback .ant-form-item-children-icon { + color: #faad14; +} +.has-warning .ant-select-selection { + border-color: #faad14; +} +.has-warning .ant-select-open .ant-select-selection, +.has-warning .ant-select-focused .ant-select-selection { + border-color: #ffc53d; + box-shadow: 0 0 0 2px rgba(250, 173, 20, 0.2); + border-right-width: 1px !important; +} +.has-warning .ant-calendar-picker-icon:after, +.has-warning .ant-time-picker-icon:after, +.has-warning .ant-picker-icon:after, +.has-warning .ant-select-arrow, +.has-warning .ant-cascader-picker-arrow { + color: #faad14; +} +.has-warning .ant-input-number, +.has-warning .ant-time-picker-input { + border-color: #faad14; +} +.has-warning .ant-input-number-focused, +.has-warning .ant-time-picker-input-focused, +.has-warning .ant-input-number:focus, +.has-warning .ant-time-picker-input:focus { + border-color: #ffc53d; + box-shadow: 0 0 0 2px rgba(250, 173, 20, 0.2); + border-right-width: 1px !important; +} +.has-warning .ant-input-number:not([disabled]):hover, +.has-warning .ant-time-picker-input:not([disabled]):hover { + border-color: #faad14; +} +.has-warning .ant-cascader-picker:focus .ant-cascader-input { + border-color: #ffc53d; + box-shadow: 0 0 0 2px rgba(250, 173, 20, 0.2); + border-right-width: 1px !important; +} +.has-error .ant-form-explain, +.has-error .ant-form-split { + color: #f5222d; +} +.has-error .ant-input, +.has-error .ant-input:hover { + border-color: #f5222d; +} +.has-error .ant-input:focus { + border-color: #ff4d4f; + box-shadow: 0 0 0 2px rgba(245, 34, 45, 0.2); + border-right-width: 1px !important; +} +.has-error .ant-input:not([disabled]):hover { + border-color: #f5222d; +} +.has-error .ant-calendar-picker-open .ant-calendar-picker-input { + border-color: #ff4d4f; + box-shadow: 0 0 0 2px rgba(245, 34, 45, 0.2); + border-right-width: 1px !important; +} +.has-error .ant-input-prefix { + color: #f5222d; +} +.has-error .ant-input-group-addon { + color: #f5222d; + border-color: #f5222d; + background-color: #fff; +} +.has-error .has-feedback { + color: #f5222d; +} +.has-error.has-feedback .ant-form-item-children-icon { + color: #f5222d; +} +.has-error .ant-select-selection { + border-color: #f5222d; +} +.has-error .ant-select-open .ant-select-selection, +.has-error .ant-select-focused .ant-select-selection { + border-color: #ff4d4f; + box-shadow: 0 0 0 2px rgba(245, 34, 45, 0.2); + border-right-width: 1px !important; +} +.has-error .ant-select.ant-select-auto-complete .ant-input:focus { + border-color: #f5222d; +} +.has-error .ant-input-group-addon .ant-select-selection { + border-color: transparent; + box-shadow: none; +} +.has-error .ant-calendar-picker-icon:after, +.has-error .ant-time-picker-icon:after, +.has-error .ant-picker-icon:after, +.has-error .ant-select-arrow, +.has-error .ant-cascader-picker-arrow { + color: #f5222d; +} +.has-error .ant-input-number, +.has-error .ant-time-picker-input { + border-color: #f5222d; +} +.has-error .ant-input-number-focused, +.has-error .ant-time-picker-input-focused, +.has-error .ant-input-number:focus, +.has-error .ant-time-picker-input:focus { + border-color: #ff4d4f; + box-shadow: 0 0 0 2px rgba(245, 34, 45, 0.2); + border-right-width: 1px !important; +} +.has-error .ant-input-number:not([disabled]):hover, +.has-error .ant-time-picker-input:not([disabled]):hover { + border-color: #f5222d; +} +.has-error .ant-mention-wrapper .ant-mention-editor, +.has-error .ant-mention-wrapper .ant-mention-editor:not([disabled]):hover { + border-color: #f5222d; +} +.has-error .ant-mention-wrapper.ant-mention-active:not([disabled]) .ant-mention-editor, +.has-error .ant-mention-wrapper .ant-mention-editor:not([disabled]):focus { + border-color: #ff4d4f; + box-shadow: 0 0 0 2px rgba(245, 34, 45, 0.2); + border-right-width: 1px !important; +} +.has-error .ant-cascader-picker:focus .ant-cascader-input { + border-color: #ff4d4f; + box-shadow: 0 0 0 2px rgba(245, 34, 45, 0.2); + border-right-width: 1px !important; +} +.is-validating.has-feedback .ant-form-item-children-icon { + color: @primary-color; +} +.ant-input-number { + color: rgba(0, 0, 0, 0.65); + background-color: #fff; + background-image: none; + border: 1px solid #d9d9d9; + border-radius: 4px; +} +.ant-input-number::-moz-placeholder { + color: #bfbfbf; +} +.ant-input-number:-ms-input-placeholder { + color: #bfbfbf; +} +.ant-input-number::-webkit-input-placeholder { + color: #bfbfbf; +} +.ant-input-number:hover { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + border-right-width: 1px !important; +} +.ant-input-number:focus { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); + border-right-width: 1px !important; +} +.ant-input-number-disabled { + background-color: #f5f5f5; + color: rgba(0, 0, 0, 0.25); +} +.ant-input-number-disabled:hover { + border-color: #e6d8d8; + border-right-width: 1px !important; +} +.ant-input-number-handler { + color: rgba(0, 0, 0, 0.45); +} +.ant-input-number-handler:active { + background: #f4f4f4; +} +.ant-input-number-handler:hover .ant-input-number-handler-up-inner, +.ant-input-number-handler:hover .ant-input-number-handler-down-inner { + color: color(~`colorPalette("@{primary-color}", 5)`); +} +.ant-input-number-handler-up-inner, +.ant-input-number-handler-down-inner { + color: rgba(0, 0, 0, 0.45); +} +.ant-input-number:hover { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + border-right-width: 1px !important; +} +.ant-input-number-focused { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); + border-right-width: 1px !important; +} +.ant-input-number-disabled { + background-color: #f5f5f5; + color: rgba(0, 0, 0, 0.25); +} +.ant-input-number-disabled:hover { + border-color: #e6d8d8; + border-right-width: 1px !important; +} +.ant-input-number-input { + background-color: transparent; + border: 0; + border-radius: 4px; +} +.ant-input-number-input::-moz-placeholder { + color: #bfbfbf; +} +.ant-input-number-input:-ms-input-placeholder { + color: #bfbfbf; +} +.ant-input-number-input::-webkit-input-placeholder { + color: #bfbfbf; +} +.ant-input-number-handler-wrap { + border-left: 1px solid #d9d9d9; + background: #fff; + border-radius: 0 4px 4px 0; +} +.ant-input-number-handler-down { + border-top: 1px solid #d9d9d9; +} +.ant-input-number-handler-up-disabled:hover .ant-input-number-handler-up-inner, +.ant-input-number-handler-down-disabled:hover .ant-input-number-handler-down-inner { + color: rgba(0, 0, 0, 0.25); +} +.ant-input { + color: rgba(0, 0, 0, 0.65); + background-color: #fff; + background-image: none; + border: 1px solid #d9d9d9; + border-radius: 4px; +} +.ant-input::-moz-placeholder { + color: #bfbfbf; +} +.ant-input:-ms-input-placeholder { + color: #bfbfbf; +} +.ant-input::-webkit-input-placeholder { + color: #bfbfbf; +} +.ant-input:hover { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + border-right-width: 1px !important; +} +.ant-input:focus { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); + border-right-width: 1px !important; +} +.ant-input-disabled { + background-color: #f5f5f5; + color: rgba(0, 0, 0, 0.25); +} +.ant-input-disabled:hover { + border-color: #e6d8d8; + border-right-width: 1px !important; +} +.ant-input-group { + color: rgba(0, 0, 0, 0.65); + border-collapse: separate; + border-spacing: 0; +} +.ant-input-group-addon:not(:first-child):not(:last-child), +.ant-input-group-wrap:not(:first-child):not(:last-child), +.ant-input-group > .ant-input:not(:first-child):not(:last-child) { + border-radius: 0; +} +.ant-input-group .ant-input:focus { + border-right-width: 1px; +} +.ant-input-group .ant-input:hover { + border-right-width: 1px; +} +.ant-input-group-addon { + color: rgba(0, 0, 0, 0.65); + background-color: #fafafa; + border: 1px solid #d9d9d9; + border-radius: 4px; +} +.ant-input-group-addon .ant-select .ant-select-selection { + background-color: inherit; + border: 1px solid transparent; + box-shadow: none; +} +.ant-input-group-addon .ant-select-open .ant-select-selection, +.ant-input-group-addon .ant-select-focused .ant-select-selection { + color: @primary-color; +} +.ant-input-group > .ant-input:first-child, +.ant-input-group-addon:first-child { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.ant-input-group > .ant-input:first-child .ant-select .ant-select-selection, +.ant-input-group-addon:first-child .ant-select .ant-select-selection { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.ant-input-group > .ant-input-affix-wrapper:not(:first-child) .ant-input { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.ant-input-group > .ant-input-affix-wrapper:not(:last-child) .ant-input { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.ant-input-group-addon:first-child { + border-right: 0; +} +.ant-input-group-addon:last-child { + border-left: 0; +} +.ant-input-group > .ant-input:last-child, +.ant-input-group-addon:last-child { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.ant-input-group > .ant-input:last-child .ant-select .ant-select-selection, +.ant-input-group-addon:last-child .ant-select .ant-select-selection { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.ant-input-group.ant-input-group-compact-addon:not(:first-child):not(:last-child), +.ant-input-group.ant-input-group-compact-wrap:not(:first-child):not(:last-child), +.ant-input-group.ant-input-group-compact > .ant-input:not(:first-child):not(:last-child) { + border-right-width: 1px; + border-right-color: transparent; +} +.ant-input-group.ant-input-group-compact-addon:not(:first-child):not(:last-child):hover, +.ant-input-group.ant-input-group-compact-wrap:not(:first-child):not(:last-child):hover, +.ant-input-group.ant-input-group-compact > .ant-input:not(:first-child):not(:last-child):hover { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + border-right-width: 1px !important; +} +.ant-input-group.ant-input-group-compact-addon:not(:first-child):not(:last-child):focus, +.ant-input-group.ant-input-group-compact-wrap:not(:first-child):not(:last-child):focus, +.ant-input-group.ant-input-group-compact > .ant-input:not(:first-child):not(:last-child):focus { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); + border-right-width: 1px !important; +} +.ant-input-group.ant-input-group-compact > * { + border-radius: 0; + border-right-width: 0; +} +.ant-input-group.ant-input-group-compact > span:not(:last-child) > .ant-input { + border-right-width: 0; +} +.ant-input-group.ant-input-group-compact > .ant-select > .ant-select-selection, +.ant-input-group.ant-input-group-compact > .ant-calendar-picker .ant-input, +.ant-input-group.ant-input-group-compact > .ant-select-auto-complete .ant-input, +.ant-input-group.ant-input-group-compact > .ant-cascader-picker .ant-input, +.ant-input-group.ant-input-group-compact > .ant-mention-wrapper .ant-mention-editor, +.ant-input-group.ant-input-group-compact > .ant-time-picker .ant-time-picker-input { + border-radius: 0; + border-right-width: 1px; + border-right-color: transparent; +} +.ant-input-group.ant-input-group-compact > .ant-select > .ant-select-selection:hover, +.ant-input-group.ant-input-group-compact > .ant-calendar-picker .ant-input:hover, +.ant-input-group.ant-input-group-compact > .ant-select-auto-complete .ant-input:hover, +.ant-input-group.ant-input-group-compact > .ant-cascader-picker .ant-input:hover, +.ant-input-group.ant-input-group-compact > .ant-mention-wrapper .ant-mention-editor:hover, +.ant-input-group.ant-input-group-compact > .ant-time-picker .ant-time-picker-input:hover { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + border-right-width: 1px !important; +} +.ant-input-group.ant-input-group-compact > .ant-select > .ant-select-selection:focus, +.ant-input-group.ant-input-group-compact > .ant-calendar-picker .ant-input:focus, +.ant-input-group.ant-input-group-compact > .ant-select-auto-complete .ant-input:focus, +.ant-input-group.ant-input-group-compact > .ant-cascader-picker .ant-input:focus, +.ant-input-group.ant-input-group-compact > .ant-mention-wrapper .ant-mention-editor:focus, +.ant-input-group.ant-input-group-compact > .ant-time-picker .ant-time-picker-input:focus { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); + border-right-width: 1px !important; +} +.ant-input-group.ant-input-group-compact > *:first-child, +.ant-input-group.ant-input-group-compact > .ant-select:first-child > .ant-select-selection, +.ant-input-group.ant-input-group-compact > .ant-calendar-picker:first-child .ant-input, +.ant-input-group.ant-input-group-compact > .ant-select-auto-complete:first-child .ant-input, +.ant-input-group.ant-input-group-compact > .ant-cascader-picker:first-child .ant-input, +.ant-input-group.ant-input-group-compact > .ant-mention-wrapper:first-child .ant-mention-editor, +.ant-input-group.ant-input-group-compact > .ant-time-picker:first-child .ant-time-picker-input { + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; +} +.ant-input-group.ant-input-group-compact > *:last-child, +.ant-input-group.ant-input-group-compact > .ant-select:last-child > .ant-select-selection, +.ant-input-group.ant-input-group-compact > .ant-calendar-picker:last-child .ant-input, +.ant-input-group.ant-input-group-compact > .ant-select-auto-complete:last-child .ant-input, +.ant-input-group.ant-input-group-compact > .ant-cascader-picker:last-child .ant-input, +.ant-input-group.ant-input-group-compact > .ant-cascader-picker-focused:last-child .ant-input, +.ant-input-group.ant-input-group-compact > .ant-mention-wrapper:last-child .ant-mention-editor, +.ant-input-group.ant-input-group-compact > .ant-time-picker:last-child .ant-time-picker-input { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; + border-right-width: 1px; + border-right-color: #d9d9d9; +} +.ant-input-group.ant-input-group-compact > *:last-child:hover, +.ant-input-group.ant-input-group-compact > .ant-select:last-child > .ant-select-selection:hover, +.ant-input-group.ant-input-group-compact > .ant-calendar-picker:last-child .ant-input:hover, +.ant-input-group.ant-input-group-compact > .ant-select-auto-complete:last-child .ant-input:hover, +.ant-input-group.ant-input-group-compact > .ant-cascader-picker:last-child .ant-input:hover, +.ant-input-group.ant-input-group-compact > .ant-cascader-picker-focused:last-child .ant-input:hover, +.ant-input-group.ant-input-group-compact > .ant-mention-wrapper:last-child .ant-mention-editor:hover, +.ant-input-group.ant-input-group-compact > .ant-time-picker:last-child .ant-time-picker-input:hover { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + border-right-width: 1px !important; +} +.ant-input-group.ant-input-group-compact > *:last-child:focus, +.ant-input-group.ant-input-group-compact > .ant-select:last-child > .ant-select-selection:focus, +.ant-input-group.ant-input-group-compact > .ant-calendar-picker:last-child .ant-input:focus, +.ant-input-group.ant-input-group-compact > .ant-select-auto-complete:last-child .ant-input:focus, +.ant-input-group.ant-input-group-compact > .ant-cascader-picker:last-child .ant-input:focus, +.ant-input-group.ant-input-group-compact > .ant-cascader-picker-focused:last-child .ant-input:focus, +.ant-input-group.ant-input-group-compact > .ant-mention-wrapper:last-child .ant-mention-editor:focus, +.ant-input-group.ant-input-group-compact > .ant-time-picker:last-child .ant-time-picker-input:focus { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); + border-right-width: 1px !important; +} +.ant-input-group.ant-input-group-compact > *:last-child:focus .ant-cascader-input, +.ant-input-group.ant-input-group-compact > .ant-select:last-child > .ant-select-selection:focus .ant-cascader-input, +.ant-input-group.ant-input-group-compact > .ant-calendar-picker:last-child .ant-input:focus .ant-cascader-input, +.ant-input-group.ant-input-group-compact > .ant-select-auto-complete:last-child .ant-input:focus .ant-cascader-input, +.ant-input-group.ant-input-group-compact > .ant-cascader-picker:last-child .ant-input:focus .ant-cascader-input, +.ant-input-group.ant-input-group-compact > .ant-cascader-picker-focused:last-child .ant-input:focus .ant-cascader-input, +.ant-input-group.ant-input-group-compact > .ant-mention-wrapper:last-child .ant-mention-editor:focus .ant-cascader-input, +.ant-input-group.ant-input-group-compact > .ant-time-picker:last-child .ant-time-picker-input:focus .ant-cascader-input { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); + border-right-width: 1px !important; +} +.ant-input-affix-wrapper { + color: rgba(0, 0, 0, 0.65); +} +.ant-input-affix-wrapper:hover .ant-input:not(.ant-input-disabled) { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + border-right-width: 1px !important; +} +.ant-input-affix-wrapper .ant-input-prefix, +.ant-input-affix-wrapper .ant-input-suffix { + color: rgba(0, 0, 0, 0.65); +} +.ant-input-search-icon { + color: rgba(0, 0, 0, 0.45); +} +.ant-input-search-icon:hover { + color: #333; +} +.ant-input-search > .ant-input-suffix > .ant-input-search-button { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.ant-layout { + background: #f0f2f5; +} +.ant-layout-header { + background: #001529; +} +.ant-layout-footer { + background: #f0f2f5; + color: rgba(0, 0, 0, 0.65); +} +.ant-layout-sider { + background: #001529; +} +.ant-layout-sider-trigger { + color: #fff; + background: #002140; +} +.ant-layout-sider-zero-width-trigger { + background: #001529; + color: #fff; + border-radius: 0 4px 4px 0; +} +.ant-layout-sider-zero-width-trigger:hover { + background: #192c3e; +} +.ant-layout-sider-light { + background: #fff; +} +.ant-layout-sider-light .ant-layout-sider-trigger { + color: rgba(0, 0, 0, 0.65); + background: #fff; +} +.ant-layout-sider-light .ant-layout-sider-zero-width-trigger { + color: rgba(0, 0, 0, 0.65); + background: #fff; +} +.ant-list { + color: rgba(0, 0, 0, 0.65); +} +.ant-list-empty-text { + color: rgba(0, 0, 0, 0.45); +} +.ant-list-item-meta-title { + color: rgba(0, 0, 0, 0.65); +} +.ant-list-item-meta-title > a { + color: rgba(0, 0, 0, 0.65); +} +.ant-list-item-meta-title > a:hover { + color: @primary-color; +} +.ant-list-item-meta-description { + color: rgba(0, 0, 0, 0.45); +} +.ant-list-item-action > li { + color: rgba(0, 0, 0, 0.45); +} +.ant-list-item-action-split { + background-color: #e8e8e8; +} +.ant-list-empty { + color: rgba(0, 0, 0, 0.45); +} +.ant-list-split .ant-list-item { + border-bottom: 1px solid #e8e8e8; +} +.ant-list-split .ant-list-item:last-child { + border-bottom: none; +} +.ant-list-split .ant-list-header { + border-bottom: 1px solid #e8e8e8; +} +.ant-list-something-after-last-item .ant-spin-container > .ant-list-item:last-child { + border-bottom: 1px solid #e8e8e8; +} +.ant-list-vertical .ant-list-item-meta-title { + color: rgba(0, 0, 0, 0.85); +} +.ant-list-vertical .ant-list-item-content { + color: rgba(0, 0, 0, 0.65); +} +.ant-list-grid .ant-list-item { + border-bottom: none; +} +.ant-list-bordered { + border-radius: 4px; + border: 1px solid #d9d9d9; +} +.ant-list-bordered .ant-list-item { + border-bottom: 1px solid #e8e8e8; +} +.ant-mention-wrapper { + color: rgba(0, 0, 0, 0.65); +} +.ant-mention-wrapper .ant-mention-editor { + color: rgba(0, 0, 0, 0.65); + background-color: #fff; + background-image: none; + border: 1px solid #d9d9d9; + border-radius: 4px; +} +.ant-mention-wrapper .ant-mention-editor::-moz-placeholder { + color: #bfbfbf; +} +.ant-mention-wrapper .ant-mention-editor:-ms-input-placeholder { + color: #bfbfbf; +} +.ant-mention-wrapper .ant-mention-editor::-webkit-input-placeholder { + color: #bfbfbf; +} +.ant-mention-wrapper .ant-mention-editor:hover { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + border-right-width: 1px !important; +} +.ant-mention-wrapper .ant-mention-editor:focus { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); + border-right-width: 1px !important; +} +.ant-mention-wrapper .ant-mention-editor-disabled { + background-color: #f5f5f5; + color: rgba(0, 0, 0, 0.25); +} +.ant-mention-wrapper .ant-mention-editor-disabled:hover { + border-color: #e6d8d8; + border-right-width: 1px !important; +} +.ant-mention-wrapper.ant-mention-active:not(.disabled) .ant-mention-editor { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); + border-right-width: 1px !important; +} +.ant-mention-wrapper.disabled .ant-mention-editor { + background-color: #f5f5f5; + color: rgba(0, 0, 0, 0.25); +} +.ant-mention-wrapper.disabled .ant-mention-editor:hover { + border-color: #e6d8d8; + border-right-width: 1px !important; +} +.ant-mention-wrapper .public-DraftEditorPlaceholder-root .public-DraftEditorPlaceholder-inner { + color: #bfbfbf; +} +.ant-mention-dropdown { + color: rgba(0, 0, 0, 0.65); + background-color: #fff; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); + border-radius: 4px; +} +.ant-mention-dropdown-notfound.ant-mention-dropdown-item { + color: rgba(0, 0, 0, 0.25); +} +.ant-mention-dropdown-notfound.ant-mention-dropdown-item .anticon-loading { + color: @primary-color; +} +.ant-mention-dropdown-item { + color: rgba(0, 0, 0, 0.65); +} +.ant-mention-dropdown-item:hover { + background-color: color(~`colorPalette("@{primary-color}", 1)`); +} +.ant-mention-dropdown-item.focus, +.ant-mention-dropdown-item-active { + background-color: color(~`colorPalette("@{primary-color}", 1)`); +} +.ant-mention-dropdown-item-disabled { + color: rgba(0, 0, 0, 0.25); +} +.ant-mention-dropdown-item-disabled:hover { + color: rgba(0, 0, 0, 0.25); + background-color: #fff; +} +.ant-mention-dropdown-item-selected, +.ant-mention-dropdown-item-selected:hover { + background-color: #f5f5f5; + color: rgba(0, 0, 0, 0.65); +} +.ant-mention-dropdown-item-divider { + background-color: #e8e8e8; +} +.ant-menu { + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); + color: rgba(0, 0, 0, 0.65); + background: #fff; +} +.ant-menu-item-group-title { + color: rgba(0, 0, 0, 0.45); +} +.ant-menu-item:active, +.ant-menu-submenu-title:active { + background: color(~`colorPalette("@{primary-color}", 1)`); +} +.ant-menu-item > a { + color: rgba(0, 0, 0, 0.65); +} +.ant-menu-item > a:hover { + color: @primary-color; +} +.ant-menu-item > a:before { + background-color: transparent; +} +.ant-menu-item-divider { + background-color: #e8e8e8; +} +.ant-menu-item:hover, +.ant-menu-item-active, +.ant-menu:not(.ant-menu-inline) .ant-menu-submenu-open, +.ant-menu-submenu-active, +.ant-menu-submenu-title:hover { + color: @primary-color; +} +.ant-menu-horizontal > .ant-menu-item:hover, +.ant-menu-horizontal > .ant-menu-item-active, +.ant-menu-horizontal > .ant-menu-submenu .ant-menu-submenu-title:hover { + background-color: transparent; +} +.ant-menu-item-selected { + color: @primary-color; +} +.ant-menu-item-selected > a, +.ant-menu-item-selected > a:hover { + color: @primary-color; +} +.ant-menu:not(.ant-menu-horizontal) .ant-menu-item-selected { + background-color: color(~`colorPalette("@{primary-color}", 1)`); +} +.ant-menu-inline, +.ant-menu-vertical, +.ant-menu-vertical-left { + border-right: 1px solid #e8e8e8; +} +.ant-menu-vertical-right { + border-left: 1px solid #e8e8e8; +} +.ant-menu-vertical.ant-menu-sub, +.ant-menu-vertical-left.ant-menu-sub, +.ant-menu-vertical-right.ant-menu-sub { + border-right: 0; +} +.ant-menu-vertical.ant-menu-sub .ant-menu-item, +.ant-menu-vertical-left.ant-menu-sub .ant-menu-item, +.ant-menu-vertical-right.ant-menu-sub .ant-menu-item { + border-right: 0; +} +.ant-menu-vertical.ant-menu-sub .ant-menu-item:after, +.ant-menu-vertical-left.ant-menu-sub .ant-menu-item:after, +.ant-menu-vertical-right.ant-menu-sub .ant-menu-item:after { + border-right: 0; +} +.ant-menu > .ant-menu-item-divider { + background-color: #e8e8e8; +} +.ant-menu-submenu-popup { + border-radius: 4px; +} +.ant-menu-submenu > .ant-menu { + background-color: #fff; + border-radius: 4px; +} +.ant-menu-submenu-vertical > .ant-menu-submenu-title .ant-menu-submenu-arrow:before, +.ant-menu-submenu-vertical-left > .ant-menu-submenu-title .ant-menu-submenu-arrow:before, +.ant-menu-submenu-vertical-right > .ant-menu-submenu-title .ant-menu-submenu-arrow:before, +.ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow:before, +.ant-menu-submenu-vertical > .ant-menu-submenu-title .ant-menu-submenu-arrow:after, +.ant-menu-submenu-vertical-left > .ant-menu-submenu-title .ant-menu-submenu-arrow:after, +.ant-menu-submenu-vertical-right > .ant-menu-submenu-title .ant-menu-submenu-arrow:after, +.ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow:after { + background: #fff; + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.65), rgba(0, 0, 0, 0.65)); + border-radius: 2px; +} +.ant-menu-submenu-vertical > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after, +.ant-menu-submenu-vertical-left > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after, +.ant-menu-submenu-vertical-right > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after, +.ant-menu-submenu-inline > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after, +.ant-menu-submenu-vertical > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before, +.ant-menu-submenu-vertical-left > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before, +.ant-menu-submenu-vertical-right > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before, +.ant-menu-submenu-inline > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before { + background: linear-gradient(to right, @primary-color, @primary-color); +} +.ant-menu-vertical .ant-menu-submenu-selected, +.ant-menu-vertical-left .ant-menu-submenu-selected, +.ant-menu-vertical-right .ant-menu-submenu-selected { + color: @primary-color; +} +.ant-menu-vertical .ant-menu-submenu-selected > a, +.ant-menu-vertical-left .ant-menu-submenu-selected > a, +.ant-menu-vertical-right .ant-menu-submenu-selected > a { + color: @primary-color; +} +.ant-menu-horizontal { + border: 0; + border-bottom: 1px solid #e8e8e8; + box-shadow: none; +} +.ant-menu-horizontal > .ant-menu-item, +.ant-menu-horizontal > .ant-menu-submenu { + border-bottom: 2px solid transparent; +} +.ant-menu-horizontal > .ant-menu-item:hover, +.ant-menu-horizontal > .ant-menu-submenu:hover, +.ant-menu-horizontal > .ant-menu-item-active, +.ant-menu-horizontal > .ant-menu-submenu-active, +.ant-menu-horizontal > .ant-menu-item-open, +.ant-menu-horizontal > .ant-menu-submenu-open, +.ant-menu-horizontal > .ant-menu-item-selected, +.ant-menu-horizontal > .ant-menu-submenu-selected { + border-bottom: 2px solid @primary-color; + color: @primary-color; +} +.ant-menu-horizontal > .ant-menu-item > a { + color: rgba(0, 0, 0, 0.65); +} +.ant-menu-horizontal > .ant-menu-item > a:hover { + color: @primary-color; +} +.ant-menu-horizontal > .ant-menu-item-selected > a { + color: @primary-color; +} +.ant-menu-vertical .ant-menu-item:after, +.ant-menu-vertical-left .ant-menu-item:after, +.ant-menu-vertical-right .ant-menu-item:after, +.ant-menu-inline .ant-menu-item:after { + border-right: 3px solid @primary-color; +} +.ant-menu-inline-collapsed-tooltip a { + color: rgba(255, 255, 255, 0.85); +} +.ant-menu-root.ant-menu-vertical, +.ant-menu-root.ant-menu-vertical-left, +.ant-menu-root.ant-menu-vertical-right, +.ant-menu-root.ant-menu-inline { + box-shadow: none; +} +.ant-menu-sub.ant-menu-inline { + border: 0; + box-shadow: none; + border-radius: 0; +} +.ant-menu-item-disabled, +.ant-menu-submenu-disabled { + color: rgba(0, 0, 0, 0.25) !important; + background: none; + border-color: transparent !important; +} +.ant-menu-item-disabled > a, +.ant-menu-submenu-disabled > a { + color: rgba(0, 0, 0, 0.25) !important; +} +.ant-menu-item-disabled > .ant-menu-submenu-title, +.ant-menu-submenu-disabled > .ant-menu-submenu-title { + color: rgba(0, 0, 0, 0.25) !important; +} +.ant-menu-item-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before, +.ant-menu-submenu-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before, +.ant-menu-item-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after, +.ant-menu-submenu-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after { + background: rgba(0, 0, 0, 0.25) !important; +} +.ant-menu-dark, +.ant-menu-dark .ant-menu-sub { + color: rgba(255, 255, 255, 0.65); + background: #001529; +} +.ant-menu-dark .ant-menu-submenu-title .ant-menu-submenu-arrow:after, +.ant-menu-dark .ant-menu-sub .ant-menu-submenu-title .ant-menu-submenu-arrow:after, +.ant-menu-dark .ant-menu-submenu-title .ant-menu-submenu-arrow:before, +.ant-menu-dark .ant-menu-sub .ant-menu-submenu-title .ant-menu-submenu-arrow:before { + background: #fff; +} +.ant-menu-dark.ant-menu-submenu-popup { + background: transparent; +} +.ant-menu-dark .ant-menu-inline.ant-menu-sub { + background: #000c17; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.45) inset; +} +.ant-menu-dark.ant-menu-horizontal { + border-bottom: 0; +} +.ant-menu-dark.ant-menu-horizontal > .ant-menu-item, +.ant-menu-dark.ant-menu-horizontal > .ant-menu-submenu { + border-color: #001529; + border-bottom: 0; +} +.ant-menu-dark .ant-menu-item, +.ant-menu-dark .ant-menu-item-group-title, +.ant-menu-dark .ant-menu-item > a { + color: rgba(255, 255, 255, 0.65); +} +.ant-menu-dark.ant-menu-inline, +.ant-menu-dark.ant-menu-vertical, +.ant-menu-dark.ant-menu-vertical-left, +.ant-menu-dark.ant-menu-vertical-right { + border-right: 0; +} +.ant-menu-dark.ant-menu-inline .ant-menu-item, +.ant-menu-dark.ant-menu-vertical .ant-menu-item, +.ant-menu-dark.ant-menu-vertical-left .ant-menu-item, +.ant-menu-dark.ant-menu-vertical-right .ant-menu-item { + border-right: 0; +} +.ant-menu-dark.ant-menu-inline .ant-menu-item:after, +.ant-menu-dark.ant-menu-vertical .ant-menu-item:after, +.ant-menu-dark.ant-menu-vertical-left .ant-menu-item:after, +.ant-menu-dark.ant-menu-vertical-right .ant-menu-item:after { + border-right: 0; +} +.ant-menu-dark .ant-menu-item:hover, +.ant-menu-dark .ant-menu-item-active, +.ant-menu-dark .ant-menu-submenu-active, +.ant-menu-dark .ant-menu-submenu-open, +.ant-menu-dark .ant-menu-submenu-selected, +.ant-menu-dark .ant-menu-submenu-title:hover { + background-color: transparent; + color: #fff; +} +.ant-menu-dark .ant-menu-item:hover > a, +.ant-menu-dark .ant-menu-item-active > a, +.ant-menu-dark .ant-menu-submenu-active > a, +.ant-menu-dark .ant-menu-submenu-open > a, +.ant-menu-dark .ant-menu-submenu-selected > a, +.ant-menu-dark .ant-menu-submenu-title:hover > a { + color: #fff; +} +.ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after, +.ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after, +.ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after, +.ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after, +.ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after, +.ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after, +.ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:after, +.ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:after, +.ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:after, +.ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:after, +.ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:after, +.ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:after, +.ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before, +.ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before, +.ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before, +.ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before, +.ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before, +.ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before, +.ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:before, +.ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:before, +.ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:before, +.ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:before, +.ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:before, +.ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:before { + background: #fff; +} +.ant-menu-dark .ant-menu-item-selected { + border-right: 0; + color: #fff; +} +.ant-menu-dark .ant-menu-item-selected:after { + border-right: 0; +} +.ant-menu-dark .ant-menu-item-selected > a, +.ant-menu-dark .ant-menu-item-selected > a:hover { + color: #fff; +} +.ant-menu.ant-menu-dark .ant-menu-item-selected, +.ant-menu-submenu-popup.ant-menu-dark .ant-menu-item-selected { + background-color: @primary-color; +} +.ant-menu-dark .ant-menu-item-disabled, +.ant-menu-dark .ant-menu-submenu-disabled, +.ant-menu-dark .ant-menu-item-disabled > a, +.ant-menu-dark .ant-menu-submenu-disabled > a { + color: rgba(255, 255, 255, 0.35) !important; +} +.ant-menu-dark .ant-menu-item-disabled > .ant-menu-submenu-title, +.ant-menu-dark .ant-menu-submenu-disabled > .ant-menu-submenu-title { + color: rgba(255, 255, 255, 0.35) !important; +} +.ant-menu-dark .ant-menu-item-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before, +.ant-menu-dark .ant-menu-submenu-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before, +.ant-menu-dark .ant-menu-item-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after, +.ant-menu-dark .ant-menu-submenu-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after { + background: rgba(255, 255, 255, 0.35) !important; +} +.ant-message { + color: rgba(0, 0, 0, 0.65); +} +.ant-message-notice-content { + border-radius: 4px; + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); + background: #fff; +} +.ant-message-success .anticon { + color: #52c41a; +} +.ant-message-error .anticon { + color: #f5222d; +} +.ant-message-warning .anticon { + color: #faad14; +} +.ant-message-info .anticon, +.ant-message-loading .anticon { + color: @primary-color; +} +.ant-modal { + color: rgba(0, 0, 0, 0.65); +} +.ant-modal-title { + color: rgba(0, 0, 0, 0.85); +} +.ant-modal-content { + background-color: #fff; + border: 0; + border-radius: 4px; + background-clip: padding-box; + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); +} +.ant-modal-close { + border: 0; + background: transparent; + color: rgba(0, 0, 0, 0.45); +} +.ant-modal-close:focus, +.ant-modal-close:hover { + color: #444; +} +.ant-modal-header { + border-radius: 4px 4px 0 0; + background: #fff; + color: rgba(0, 0, 0, 0.65); + border-bottom: 1px solid #e8e8e8; +} +.ant-modal-footer { + border-top: 1px solid #e8e8e8; + border-radius: 0 0 4px 4px; +} +.ant-modal-mask { + background-color: rgba(0, 0, 0, 0.1) !important; +} +.ant-confirm-body .ant-confirm-title { + color: rgba(0, 0, 0, 0.85); +} +.ant-confirm-body .ant-confirm-content { + color: rgba(0, 0, 0, 0.65); +} +.ant-confirm-error .ant-confirm-body > .anticon { + color: #f5222d; +} +.ant-confirm-warning .ant-confirm-body > .anticon, +.ant-confirm-confirm .ant-confirm-body > .anticon { + color: #faad14; +} +.ant-confirm-info .ant-confirm-body > .anticon { + color: @primary-color; +} +.ant-confirm-success .ant-confirm-body > .anticon { + color: #52c41a; +} +.ant-notification { + color: rgba(0, 0, 0, 0.65); +} +.ant-notification-notice { + border-radius: 4px; + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); + background: #fff; +} +.ant-notification-notice-message { + color: rgba(0, 0, 0, 0.85); +} +.ant-notification-notice-message-single-line-auto-margin { + background-color: transparent; +} +.ant-notification-notice-icon-success { + color: #52c41a; +} +.ant-notification-notice-icon-info { + color: @primary-color; +} +.ant-notification-notice-icon-warning { + color: #faad14; +} +.ant-notification-notice-icon-error { + color: #f5222d; +} +.ant-notification-notice-close { + color: rgba(0, 0, 0, 0.45); +} +.ant-notification-notice-close:hover { + color: rgba(0, 0, 0, 0.67); +} +.ant-pagination { + color: rgba(0, 0, 0, 0.65); +} +.ant-pagination-item { + border-radius: 4px; + border: 1px solid #d9d9d9; + background-color: #fff; +} +.ant-pagination-item a { + color: rgba(0, 0, 0, 0.65); +} +.ant-pagination-item:focus, +.ant-pagination-item:hover { + border-color: @primary-color; +} +.ant-pagination-item:focus a, +.ant-pagination-item:hover a { + color: @primary-color; +} +.ant-pagination-item-active { + border-color: @primary-color; +} +.ant-pagination-item-active a { + color: @primary-color; +} +.ant-pagination-item-active:focus, +.ant-pagination-item-active:hover { + border-color: color(~`colorPalette("@{primary-color}", 5)`); +} +.ant-pagination-item-active:focus a, +.ant-pagination-item-active:hover a { + color: color(~`colorPalette("@{primary-color}", 5)`); +} +.ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-link-icon, +.ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-link-icon { + color: @primary-color; +} +.ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-ellipsis, +.ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-ellipsis { + color: rgba(0, 0, 0, 0.25); +} +.ant-pagination-prev, +.ant-pagination-next, +.ant-pagination-jump-prev, +.ant-pagination-jump-next { + color: rgba(0, 0, 0, 0.65); + border-radius: 4px; +} +.ant-pagination-prev a, +.ant-pagination-next a { + color: rgba(0, 0, 0, 0.65); +} +.ant-pagination-prev:hover a, +.ant-pagination-next:hover a { + border-color: color(~`colorPalette("@{primary-color}", 5)`); +} +.ant-pagination-prev .ant-pagination-item-link, +.ant-pagination-next .ant-pagination-item-link { + border: 1px solid #d9d9d9; + background-color: #fff; + border-radius: 4px; +} +.ant-pagination-prev:focus .ant-pagination-item-link, +.ant-pagination-next:focus .ant-pagination-item-link, +.ant-pagination-prev:hover .ant-pagination-item-link, +.ant-pagination-next:hover .ant-pagination-item-link { + border-color: @primary-color; + color: @primary-color; +} +.ant-pagination-disabled a, +.ant-pagination-disabled:hover a, +.ant-pagination-disabled:focus a, +.ant-pagination-disabled .ant-pagination-item-link, +.ant-pagination-disabled:hover .ant-pagination-item-link, +.ant-pagination-disabled:focus .ant-pagination-item-link { + border-color: #d9d9d9; + color: rgba(0, 0, 0, 0.25); +} +.ant-pagination-options-quick-jumper input { + color: rgba(0, 0, 0, 0.65); + background-color: #fff; + background-image: none; + border: 1px solid #d9d9d9; + border-radius: 4px; +} +.ant-pagination-options-quick-jumper input::-moz-placeholder { + color: #bfbfbf; +} +.ant-pagination-options-quick-jumper input:-ms-input-placeholder { + color: #bfbfbf; +} +.ant-pagination-options-quick-jumper input::-webkit-input-placeholder { + color: #bfbfbf; +} +.ant-pagination-options-quick-jumper input:hover { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + border-right-width: 1px !important; +} +.ant-pagination-options-quick-jumper input:focus { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); + border-right-width: 1px !important; +} +.ant-pagination-options-quick-jumper input-disabled { + background-color: #f5f5f5; + color: rgba(0, 0, 0, 0.25); +} +.ant-pagination-options-quick-jumper input-disabled:hover { + border-color: #e6d8d8; + border-right-width: 1px !important; +} +.ant-pagination-simple .ant-pagination-prev .ant-pagination-item-link, +.ant-pagination-simple .ant-pagination-next .ant-pagination-item-link { + border: 0; +} +.ant-pagination-simple .ant-pagination-simple-pager input { + background-color: #fff; + border-radius: 4px; + border: 1px solid #d9d9d9; +} +.ant-pagination-simple .ant-pagination-simple-pager input:hover { + border-color: @primary-color; +} +.ant-pagination.mini .ant-pagination-item:not(.ant-pagination-item-active) { + background: transparent; + border-color: transparent; +} +.ant-pagination.mini .ant-pagination-prev .ant-pagination-item-link, +.ant-pagination.mini .ant-pagination-next .ant-pagination-item-link { + border-color: transparent; + background: transparent; +} +.ant-popover { + color: rgba(0, 0, 0, 0.65); +} +.ant-popover:after { + background: rgba(255, 255, 255, 0.01); +} +.ant-popover-inner { + background-color: #fff; + background-clip: padding-box; + border-radius: 4px; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); +} +.ant-popover-title { + border-bottom: 1px solid #e8e8e8; + color: rgba(0, 0, 0, 0.85); +} +.ant-popover-inner-content { + color: rgba(0, 0, 0, 0.65); +} +.ant-popover-message { + color: rgba(0, 0, 0, 0.65); +} +.ant-popover-message > .anticon { + color: #faad14; +} +.ant-popover-arrow { + background: #fff; + border-color: transparent; + border-style: solid; +} +.ant-popover-placement-top > .ant-popover-content > .ant-popover-arrow, +.ant-popover-placement-topLeft > .ant-popover-content > .ant-popover-arrow, +.ant-popover-placement-topRight > .ant-popover-content > .ant-popover-arrow { + box-shadow: 3px 3px 7px rgba(0, 0, 0, 0.07); +} +.ant-popover-placement-right > .ant-popover-content > .ant-popover-arrow, +.ant-popover-placement-rightTop > .ant-popover-content > .ant-popover-arrow, +.ant-popover-placement-rightBottom > .ant-popover-content > .ant-popover-arrow { + box-shadow: -3px 3px 7px rgba(0, 0, 0, 0.07); +} +.ant-popover-placement-bottom > .ant-popover-content > .ant-popover-arrow, +.ant-popover-placement-bottomLeft > .ant-popover-content > .ant-popover-arrow, +.ant-popover-placement-bottomRight > .ant-popover-content > .ant-popover-arrow { + box-shadow: -2px -2px 5px rgba(0, 0, 0, 0.06); +} +.ant-popover-placement-left > .ant-popover-content > .ant-popover-arrow, +.ant-popover-placement-leftTop > .ant-popover-content > .ant-popover-arrow, +.ant-popover-placement-leftBottom > .ant-popover-content > .ant-popover-arrow { + box-shadow: 3px -3px 7px rgba(0, 0, 0, 0.07); +} +.ant-progress { + color: rgba(0, 0, 0, 0.65); +} +.ant-progress-inner { + background-color: #f5f5f5; + border-radius: 100px; +} +.ant-progress-success-bg, +.ant-progress-bg { + background-color: @primary-color; +} +.ant-progress-success-bg { + background-color: #52c41a; +} +.ant-progress-text { + color: rgba(0, 0, 0, 0.45); +} +.ant-progress-status-active .ant-progress-bg:before { + background: #fff; + border-radius: 10px; +} +.ant-progress-status-exception .ant-progress-bg { + background-color: #f5222d; +} +.ant-progress-status-exception .ant-progress-text { + color: #f5222d; +} +.ant-progress-status-success .ant-progress-bg { + background-color: #52c41a; +} +.ant-progress-status-success .ant-progress-text { + color: #52c41a; +} +.ant-progress-circle .ant-progress-inner { + background-color: transparent; +} +.ant-progress-circle .ant-progress-text { + color: rgba(0, 0, 0, 0.65); +} +.ant-progress-circle.ant-progress-status-exception .ant-progress-text { + color: #f5222d; +} +.ant-progress-circle.ant-progress-status-success .ant-progress-text { + color: #52c41a; +} +.ant-radio-group { + color: rgba(0, 0, 0, 0.65); +} +.ant-radio-wrapper { + color: rgba(0, 0, 0, 0.65); +} +.ant-radio { + color: rgba(0, 0, 0, 0.65); +} +.ant-radio-wrapper:hover .ant-radio .ant-radio-inner, +.ant-radio:hover .ant-radio-inner, +.ant-radio-focused .ant-radio-inner { + border-color: @primary-color; +} +.ant-radio-checked:after { + border-radius: 50%; + border: 1px solid @primary-color; +} +.ant-radio-inner { + border-width: 1px; + border-style: solid; + border-radius: 100px; + border-color: #d9d9d9; + background-color: #fff; +} +.ant-radio-inner:after { + border-radius: 8px; + border-top: 0; + border-left: 0; + background-color: @primary-color; +} +.ant-radio-checked .ant-radio-inner { + border-color: @primary-color; +} +.ant-radio-disabled .ant-radio-inner { + border-color: #d9d9d9 !important; + background-color: #f5f5f5; +} +.ant-radio-disabled .ant-radio-inner:after { + background-color: #ccc; +} +.ant-radio-disabled + span { + color: rgba(0, 0, 0, 0.25); +} +.ant-radio-button-wrapper { + color: rgba(0, 0, 0, 0.65); + border: 1px solid #d9d9d9; + border-left: 0; + border-top-width: 1.02px; + background: #fff; +} +.ant-radio-button-wrapper a { + color: rgba(0, 0, 0, 0.65); +} +.ant-radio-button-wrapper:not(:first-child)::before { + background-color: #d9d9d9; +} +.ant-radio-button-wrapper:first-child { + border-radius: 4px 0 0 4px; + border-left: 1px solid #d9d9d9; +} +.ant-radio-button-wrapper:last-child { + border-radius: 0 4px 4px 0; +} +.ant-radio-button-wrapper:first-child:last-child { + border-radius: 4px; +} +.ant-radio-button-wrapper:hover, +.ant-radio-button-wrapper-focused { + color: @primary-color; +} +.ant-radio-button-wrapper-checked { + background: #fff; + border-color: @primary-color; + color: @primary-color; + box-shadow: -1px 0 0 0 @primary-color; +} +.ant-radio-button-wrapper-checked::before { + background-color: @primary-color !important; +} +.ant-radio-button-wrapper-checked:first-child { + border-color: @primary-color; + box-shadow: none !important; +} +.ant-radio-button-wrapper-checked:hover { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + box-shadow: -1px 0 0 0 color(~`colorPalette("@{primary-color}", 5)`); + color: color(~`colorPalette("@{primary-color}", 5)`); +} +.ant-radio-button-wrapper-checked:active { + border-color: color(~`colorPalette("@{primary-color}", 7)`); + box-shadow: -1px 0 0 0 color(~`colorPalette("@{primary-color}", 7)`); + color: color(~`colorPalette("@{primary-color}", 7)`); +} +.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) { + background: @primary-color; + border-color: @primary-color; + color: #fff; +} +.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + background: color(~`colorPalette("@{primary-color}", 5)`); + color: #fff; +} +.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active { + border-color: color(~`colorPalette("@{primary-color}", 7)`); + background: color(~`colorPalette("@{primary-color}", 7)`); + color: #fff; +} +.ant-radio-button-wrapper-disabled { + border-color: #d9d9d9; + background-color: #f5f5f5; + color: rgba(0, 0, 0, 0.25); +} +.ant-radio-button-wrapper-disabled:first-child, +.ant-radio-button-wrapper-disabled:hover { + border-color: #d9d9d9; + background-color: #f5f5f5; + color: rgba(0, 0, 0, 0.25); +} +.ant-radio-button-wrapper-disabled:first-child { + border-left-color: #d9d9d9; +} +.ant-radio-button-wrapper-disabled.ant-radio-button-wrapper-checked { + color: #fff; + background-color: #e6e6e6; + border-color: #d9d9d9; + box-shadow: none; +} +.ant-rate { + color: rgba(0, 0, 0, 0.65); + color: #fadb14; +} +.ant-rate-star { + color: inherit; +} +.ant-rate-star-first, +.ant-rate-star-second { + color: #e8e8e8; +} +.ant-rate-star-half .ant-rate-star-first, +.ant-rate-star-full .ant-rate-star-second { + color: inherit; +} +.ant-select { + color: rgba(0, 0, 0, 0.65); +} +.ant-select > ul > li > a { + background-color: #fff; +} +.ant-select-arrow { + color: rgba(0, 0, 0, 0.25); +} +.ant-select-selection { + background-color: #fff; + border-radius: 4px; + border: 1px solid #d9d9d9; + border-top-width: 1.02px; +} +.ant-select-selection:hover { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + border-right-width: 1px !important; +} +.ant-select-focused .ant-select-selection, +.ant-select-selection:focus, +.ant-select-selection:active { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); + border-right-width: 1px !important; +} +.ant-select-selection__clear { + background: #fff; + color: rgba(0, 0, 0, 0.25); +} +.ant-select-selection__clear:hover { + color: rgba(0, 0, 0, 0.45); +} +.ant-select-disabled { + color: rgba(0, 0, 0, 0.25); +} +.ant-select-disabled .ant-select-selection { + background: #f5f5f5; +} +.ant-select-disabled .ant-select-selection:hover, +.ant-select-disabled .ant-select-selection:focus, +.ant-select-disabled .ant-select-selection:active { + border-color: #d9d9d9; + box-shadow: none; +} +.ant-select-disabled .ant-select-selection--multiple .ant-select-selection__choice { + background: #f5f5f5; + color: #aaa; +} +.ant-select-disabled .ant-select-selection__choice__remove { + color: rgba(0, 0, 0, 0.25); +} +.ant-select-disabled .ant-select-selection__choice__remove:hover { + color: rgba(0, 0, 0, 0.25); +} +.ant-select-selection__placeholder, +.ant-select-search__field__placeholder { + color: #bfbfbf; +} +.ant-select-search--inline .ant-select-search__field { + border-width: 0; + background: transparent; + border-radius: 4px; +} +.ant-select-selection--multiple .ant-select-selection__choice { + color: rgba(0, 0, 0, 0.65); + background-color: #fafafa; + border: 1px solid #e8e8e8; + border-radius: 2px; +} +.ant-select-selection--multiple .ant-select-selection__choice__remove { + color: rgba(0, 0, 0, 0.45); +} +.ant-select-selection--multiple .ant-select-selection__choice__remove:hover { + color: #404040; +} +.ant-select-open .ant-select-selection { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); + border-right-width: 1px !important; +} +.ant-select-combobox .ant-select-search__field { + box-shadow: none; +} +.ant-select-dropdown { + color: rgba(0, 0, 0, 0.65); + background-color: #fff; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); + border-radius: 4px; +} +.ant-select-dropdown-menu-item-group-title { + color: rgba(0, 0, 0, 0.45); +} +.ant-select-dropdown-menu-item-group-list .ant-select-dropdown-menu-item:first-child:not(:last-child), +.ant-select-dropdown-menu-item-group:not(:last-child) .ant-select-dropdown-menu-item-group-list .ant-select-dropdown-menu-item:last-child { + border-radius: 0; +} +.ant-select-dropdown-menu-item { + color: rgba(0, 0, 0, 0.65); +} +.ant-select-dropdown-menu-item:hover { + background-color: color(~`colorPalette("@{primary-color}", 1)`); +} +.ant-select-dropdown-menu-item:first-child { + border-radius: 4px 4px 0 0; +} +.ant-select-dropdown-menu-item:last-child { + border-radius: 0 0 4px 4px; +} +.ant-select-dropdown-menu-item-disabled { + color: rgba(0, 0, 0, 0.25); +} +.ant-select-dropdown-menu-item-disabled:hover { + color: rgba(0, 0, 0, 0.25); + background-color: #fff; +} +.ant-select-dropdown-menu-item-selected, +.ant-select-dropdown-menu-item-selected:hover { + background-color: #fafafa; + color: rgba(0, 0, 0, 0.65); +} +.ant-select-dropdown-menu-item-active { + background-color: color(~`colorPalette("@{primary-color}", 1)`); +} +.ant-select-dropdown-menu-item-divider { + background-color: #e8e8e8; +} +.ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item .ant-select-selected-icon { + color: transparent; +} +.ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item:hover .ant-select-selected-icon { + color: #ddd; +} +.ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item-selected .ant-select-selected-icon, +.ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item-selected:hover .ant-select-selected-icon { + color: @primary-color; +} +.ant-skeleton-header .ant-skeleton-avatar { + background: #f2f2f2; +} +.ant-skeleton-header .ant-skeleton-avatar.ant-skeleton-avatar-circle { + border-radius: 50%; +} +.ant-skeleton-header .ant-skeleton-avatar-lg.ant-skeleton-avatar-circle { + border-radius: 50%; +} +.ant-skeleton-header .ant-skeleton-avatar-sm.ant-skeleton-avatar-circle { + border-radius: 50%; +} +.ant-skeleton-content .ant-skeleton-title { + background: #f2f2f2; +} +.ant-skeleton-content .ant-skeleton-paragraph > li { + background: #f2f2f2; +} +.ant-skeleton.ant-skeleton-active .ant-skeleton-content .ant-skeleton-title, +.ant-skeleton.ant-skeleton-active .ant-skeleton-content .ant-skeleton-paragraph > li { + background: linear-gradient(90deg, #f2f2f2 25%, #e6e6e6 37%, #f2f2f2 63%); + background-size: 400% 100%; +} +.ant-skeleton.ant-skeleton-active .ant-skeleton-avatar { + background: linear-gradient(90deg, #f2f2f2 25%, #e6e6e6 37%, #f2f2f2 63%); + background-size: 400% 100%; +} +.ant-slider { + color: rgba(0, 0, 0, 0.65); +} +.ant-slider-rail { + border-radius: 2px; + background-color: #f5f5f5; +} +.ant-slider-track { + border-radius: 4px; + background-color: color(~`colorPalette("@{primary-color}", 3)`); +} +.ant-slider-handle { + border-radius: 50%; + border: solid 2px color(~`colorPalette("@{primary-color}", 3)`); + background-color: #fff; +} +.ant-slider-handle:focus { + border-color: #46a6ff; + box-shadow: 0 0 0 5px #8cc8ff; +} +.ant-slider-handle.ant-tooltip-open { + border-color: @primary-color; +} +.ant-slider:hover .ant-slider-rail { + background-color: #e1e1e1; +} +.ant-slider:hover .ant-slider-track { + background-color: color(~`colorPalette("@{primary-color}", 4)`); +} +.ant-slider:hover .ant-slider-handle:not(.ant-tooltip-open) { + border-color: color(~`colorPalette("@{primary-color}", 4)`); +} +.ant-slider-mark-text { + color: rgba(0, 0, 0, 0.45); +} +.ant-slider-mark-text-active { + color: rgba(0, 0, 0, 0.65); +} +.ant-slider-step { + background: transparent; +} +.ant-slider-dot { + border: 2px solid #e8e8e8; + background-color: #fff; + border-radius: 50%; +} +.ant-slider-dot-active { + border-color: #8cc8ff; +} +.ant-slider-disabled .ant-slider-track { + background-color: rgba(0, 0, 0, 0.25) !important; +} +.ant-slider-disabled .ant-slider-handle, +.ant-slider-disabled .ant-slider-dot { + border-color: rgba(0, 0, 0, 0.25) !important; + background-color: #fff; + box-shadow: none; +} +.ant-spin { + color: rgba(0, 0, 0, 0.65); + color: @primary-color; +} +.ant-spin-blur:after { + background: #fff; +} +.ant-spin-tip { + color: rgba(0, 0, 0, 0.45); +} +.ant-spin-dot i { + border-radius: 100%; + background-color: @primary-color; +} +.ant-steps { + color: rgba(0, 0, 0, 0.65); +} +.ant-steps-item-icon { + border: 1px solid rgba(0, 0, 0, 0.25); + border-radius: 32px; +} +.ant-steps-item-icon > .ant-steps-icon { + color: @primary-color; +} +.ant-steps-item-tail:after { + background: #e8e8e8; + border-radius: 1px; +} +.ant-steps-item-title { + color: rgba(0, 0, 0, 0.65); +} +.ant-steps-item-title:after { + background: #e8e8e8; +} +.ant-steps-item-description { + color: rgba(0, 0, 0, 0.45); +} +.ant-steps-item-wait .ant-steps-item-icon { + border-color: rgba(0, 0, 0, 0.25); + background-color: #fff; +} +.ant-steps-item-wait .ant-steps-item-icon > .ant-steps-icon { + color: rgba(0, 0, 0, 0.25); +} +.ant-steps-item-wait .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot { + background: rgba(0, 0, 0, 0.25); +} +.ant-steps-item-wait > .ant-steps-item-content > .ant-steps-item-title { + color: rgba(0, 0, 0, 0.45); +} +.ant-steps-item-wait > .ant-steps-item-content > .ant-steps-item-title:after { + background-color: #e8e8e8; +} +.ant-steps-item-wait > .ant-steps-item-content > .ant-steps-item-description { + color: rgba(0, 0, 0, 0.45); +} +.ant-steps-item-wait > .ant-steps-item-tail:after { + background-color: #e8e8e8; +} +.ant-steps-item-process .ant-steps-item-icon { + border-color: @primary-color; + background-color: #fff; +} +.ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon { + color: @primary-color; +} +.ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot { + background: @primary-color; +} +.ant-steps-item-process > .ant-steps-item-content > .ant-steps-item-title { + color: rgba(0, 0, 0, 0.85); +} +.ant-steps-item-process > .ant-steps-item-content > .ant-steps-item-title:after { + background-color: #e8e8e8; +} +.ant-steps-item-process > .ant-steps-item-content > .ant-steps-item-description { + color: rgba(0, 0, 0, 0.65); +} +.ant-steps-item-process > .ant-steps-item-tail:after { + background-color: #e8e8e8; +} +.ant-steps-item-process .ant-steps-item-icon { + background: @primary-color; +} +.ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon { + color: #fff; +} +.ant-steps-item-finish .ant-steps-item-icon { + border-color: @primary-color; + background-color: #fff; +} +.ant-steps-item-finish .ant-steps-item-icon > .ant-steps-icon { + color: @primary-color; +} +.ant-steps-item-finish .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot { + background: @primary-color; +} +.ant-steps-item-finish > .ant-steps-item-content > .ant-steps-item-title { + color: rgba(0, 0, 0, 0.65); +} +.ant-steps-item-finish > .ant-steps-item-content > .ant-steps-item-title:after { + background-color: @primary-color; +} +.ant-steps-item-finish > .ant-steps-item-content > .ant-steps-item-description { + color: rgba(0, 0, 0, 0.45); +} +.ant-steps-item-finish > .ant-steps-item-tail:after { + background-color: @primary-color; +} +.ant-steps-item-error .ant-steps-item-icon { + border-color: #f5222d; + background-color: #fff; +} +.ant-steps-item-error .ant-steps-item-icon > .ant-steps-icon { + color: #f5222d; +} +.ant-steps-item-error .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot { + background: #f5222d; +} +.ant-steps-item-error > .ant-steps-item-content > .ant-steps-item-title { + color: #f5222d; +} +.ant-steps-item-error > .ant-steps-item-content > .ant-steps-item-title:after { + background-color: #e8e8e8; +} +.ant-steps-item-error > .ant-steps-item-content > .ant-steps-item-description { + color: #f5222d; +} +.ant-steps-item-error > .ant-steps-item-tail:after { + background-color: #e8e8e8; +} +.ant-steps-item.ant-steps-next-error .ant-steps-item-title:after { + background: #f5222d; +} +.ant-steps-item-custom .ant-steps-item-icon { + background: none; + border: 0; +} +.ant-steps-item-custom.ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon { + color: @primary-color; +} +.ant-steps-small .ant-steps-item-icon { + border-radius: 24px; +} +.ant-steps-small .ant-steps-item-description { + color: rgba(0, 0, 0, 0.45); +} +.ant-steps-small .ant-steps-item-custom .ant-steps-item-icon { + border-radius: 0; + border: 0; + background: none; +} +.ant-steps-dot .ant-steps-item-icon { + border: 0; + background: transparent; +} +.ant-steps-dot .ant-steps-item-icon .ant-steps-icon-dot { + border-radius: 100px; +} +.ant-steps-dot .ant-steps-item-icon .ant-steps-icon-dot:after { + background: rgba(0, 0, 0, 0.001); +} +.ant-switch { + color: rgba(0, 0, 0, 0.65); + border-radius: 100px; + border: 1px solid transparent; + background-color: rgba(0, 0, 0, 0.25); +} +.ant-switch-inner { + color: #fff; +} +.ant-switch-loading-icon, +.ant-switch:after { + border-radius: 18px; + background-color: #fff; +} +.ant-switch:after { + box-shadow: 0 2px 4px 0 rgba(0, 35, 11, 0.2); +} +.ant-switch-loading-icon { + background: transparent; +} +.ant-switch-loading .ant-switch-loading-icon { + color: rgba(0, 0, 0, 0.65); +} +.ant-switch-checked.ant-switch-loading .ant-switch-loading-icon { + color: @primary-color; +} +.ant-switch:focus { + box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); +} +.ant-switch:focus:hover { + box-shadow: none; +} +.ant-switch-checked { + background-color: @primary-color; +} +.ant-table { + color: rgba(0, 0, 0, 0.65); +} +.ant-table table { + border-collapse: collapse; + border-radius: 4px 4px 0 0; +} +.ant-table-thead > tr > th { + background: #fafafa; + color: rgba(0, 0, 0, 0.85); + border-bottom: 1px solid #e8e8e8; +} +.ant-table-thead > tr > th .anticon-filter, +.ant-table-thead > tr > th .ant-table-filter-icon { + color: #bfbfbf; +} +.ant-table-thead > tr > th .ant-table-filter-selected.anticon-filter { + color: @primary-color; +} +.ant-table-thead > tr > th .ant-table-column-sorter { + color: #bfbfbf; +} +.ant-table-thead > tr > th .ant-table-column-sorter-up.on, +.ant-table-thead > tr > th .ant-table-column-sorter-down.on { + color: @primary-color; +} +.ant-table-thead > tr > th.ant-table-column-has-actions:hover { + background: #f5f5f5; +} +.ant-table-thead > tr > th.ant-table-column-has-actions:hover .anticon-filter, +.ant-table-thead > tr > th.ant-table-column-has-actions:hover .ant-table-filter-icon { + background: #f5f5f5; +} +.ant-table-thead > tr > th.ant-table-column-has-actions:hover .anticon-filter:hover, +.ant-table-thead > tr > th.ant-table-column-has-actions:hover .ant-table-filter-icon:hover { + color: rgba(0, 0, 0, 0.45); + background: #ebebeb; +} +.ant-table-thead > tr > th.ant-table-column-has-actions:hover .anticon-filter:active, +.ant-table-thead > tr > th.ant-table-column-has-actions:hover .ant-table-filter-icon:active { + color: rgba(0, 0, 0, 0.65); +} +.ant-table-thead > tr > th.ant-table-column-has-actions .anticon-filter.ant-table-filter-open, +.ant-table-thead > tr > th.ant-table-column-has-actions .ant-table-filter-icon.ant-table-filter-open { + color: rgba(0, 0, 0, 0.45); + background: #ebebeb; +} +.ant-table-thead > tr > th.ant-table-column-has-actions:active .ant-table-column-sorter-up:not(.on), +.ant-table-thead > tr > th.ant-table-column-has-actions:active .ant-table-column-sorter-down:not(.on) { + color: rgba(0, 0, 0, 0.45); +} +.ant-table-thead > tr > th .ant-table-column-sorters:before { + background: transparent; +} +.ant-table-thead > tr > th .ant-table-column-sorters:hover:before { + background: rgba(0, 0, 0, 0.04); +} +.ant-table-thead > tr:first-child > th:first-child { + border-top-left-radius: 4px; +} +.ant-table-thead > tr:first-child > th:last-child { + border-top-right-radius: 4px; +} +.ant-table-thead > tr:not(:last-child) > th[colspan] { + border-bottom: 0; +} +.ant-table-tbody > tr > td { + border-bottom: 1px solid #e8e8e8; +} +.ant-table-thead > tr.ant-table-row-hover > td, +.ant-table-tbody > tr.ant-table-row-hover > td, +.ant-table-thead > tr:hover > td, +.ant-table-tbody > tr:hover > td { + background: color(~`colorPalette("@{primary-color}", 1)`); +} +.ant-table-thead > tr:hover { + background: none; +} +.ant-table-footer { + background: #fafafa; + border-radius: 0 0 4px 4px; + border-top: 1px solid #e8e8e8; +} +.ant-table-footer:before { + background: #fafafa; +} +.ant-table.ant-table-bordered .ant-table-footer { + border: 1px solid #e8e8e8; +} +.ant-table-title { + border-radius: 4px 4px 0 0; +} +.ant-table.ant-table-bordered .ant-table-title { + border: 1px solid #e8e8e8; +} +.ant-table-title + .ant-table-content { + border-radius: 4px 4px 0 0; +} +.ant-table-bordered .ant-table-title + .ant-table-content, +.ant-table-bordered .ant-table-title + .ant-table-content table, +.ant-table-bordered .ant-table-title + .ant-table-content .ant-table-thead > tr:first-child > th { + border-radius: 0; +} +.ant-table-without-column-header .ant-table-title + .ant-table-content, +.ant-table-without-column-header table { + border-radius: 0; +} +.ant-table-tbody > tr.ant-table-row-selected td { + background: #fafafa; +} +.ant-table-thead > tr > th.ant-table-column-sort { + background: #f5f5f5; +} +.ant-table-tbody > tr > td.ant-table-column-sort { + background: rgba(0, 0, 0, 0.01); +} +.ant-table-header { + background: #fafafa; +} +.ant-table-header table { + border-radius: 4px 4px 0 0; +} +.ant-table-loading .ant-table-body { + background: #fff; +} +.ant-table-bordered .ant-table-header > table, +.ant-table-bordered .ant-table-body > table, +.ant-table-bordered .ant-table-fixed-left table, +.ant-table-bordered .ant-table-fixed-right table { + border: 1px solid #e8e8e8; + border-right: 0; + border-bottom: 0; +} +.ant-table-bordered.ant-table-empty .ant-table-placeholder { + border-left: 1px solid #e8e8e8; + border-right: 1px solid #e8e8e8; +} +.ant-table-bordered.ant-table-fixed-header .ant-table-header > table { + border-bottom: 0; +} +.ant-table-bordered.ant-table-fixed-header .ant-table-body > table { + border-top: 0; + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.ant-table-bordered.ant-table-fixed-header .ant-table-body-inner > table { + border-top: 0; +} +.ant-table-bordered.ant-table-fixed-header .ant-table-placeholder { + border: 0; +} +.ant-table-bordered .ant-table-thead > tr:not(:last-child) > th { + border-bottom: 1px solid #e8e8e8; +} +.ant-table-bordered .ant-table-thead > tr > th, +.ant-table-bordered .ant-table-tbody > tr > td { + border-right: 1px solid #e8e8e8; +} +.ant-table-placeholder { + background: #fff; + border-bottom: 1px solid #e8e8e8; + color: rgba(0, 0, 0, 0.45); +} +.ant-table-filter-dropdown { + background: #fff; + border-radius: 4px; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); +} +.ant-table-filter-dropdown .ant-dropdown-menu { + border: 0; + box-shadow: none; + border-radius: 4px 4px 0 0; +} +.ant-table-filter-dropdown .ant-dropdown-menu-sub { + border-radius: 4px; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); +} +.ant-table-filter-dropdown .ant-dropdown-menu .ant-dropdown-submenu-contain-selected .ant-dropdown-menu-submenu-title:after { + color: @primary-color; +} +.ant-table-filter-dropdown > .ant-dropdown-menu > .ant-dropdown-menu-item:last-child, +.ant-table-filter-dropdown > .ant-dropdown-menu > .ant-dropdown-menu-submenu:last-child .ant-dropdown-menu-submenu-title { + border-radius: 0; +} +.ant-table-filter-dropdown-btns { + border-top: 1px solid #e8e8e8; +} +.ant-table-filter-dropdown-link { + color: @primary-color; +} +.ant-table-filter-dropdown-link:hover { + color: color(~`colorPalette("@{primary-color}", 5)`); +} +.ant-table-filter-dropdown-link:active { + color: color(~`colorPalette("@{primary-color}", 7)`); +} +.ant-table-selection .anticon-down { + color: #bfbfbf; +} +.ant-table-selection-menu { + background: #fff; + border-radius: 4px; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); +} +.ant-table-selection-menu .ant-action-down { + color: #bfbfbf; +} +.ant-table-selection-down:hover .anticon-down { + color: #666; +} +.ant-table-row-expand-icon { + border: 1px solid #e8e8e8; + background: #fff; +} +tr.ant-table-expanded-row, +tr.ant-table-expanded-row:hover { + background: #fbfbfb; +} +.ant-table-fixed-header > .ant-table-content > .ant-table-scroll > .ant-table-body { + background: #fff; +} +.ant-table-fixed-left, +.ant-table-fixed-right { + border-radius: 0; +} +.ant-table-fixed-left table, +.ant-table-fixed-right table { + background: #fff; +} +.ant-table-fixed-header .ant-table-fixed-left .ant-table-body-outer .ant-table-fixed, +.ant-table-fixed-header .ant-table-fixed-right .ant-table-body-outer .ant-table-fixed { + border-radius: 0; +} +.ant-table-fixed-left { + box-shadow: 6px 0 6px -4px rgba(0, 0, 0, 0.15); +} +.ant-table-fixed-left, +.ant-table-fixed-left table { + border-radius: 4px 0 0 0; +} +.ant-table-fixed-left .ant-table-thead > tr > th:last-child { + border-top-right-radius: 0; +} +.ant-table-fixed-right { + box-shadow: -6px 0 6px -4px rgba(0, 0, 0, 0.15); +} +.ant-table-fixed-right, +.ant-table-fixed-right table { + border-radius: 0 4px 0 0; +} +.ant-table-fixed-right .ant-table-expanded-row { + color: transparent; +} +.ant-table-fixed-right .ant-table-thead > tr > th:first-child { + border-top-left-radius: 0; +} +.ant-table.ant-table-scroll-position-left .ant-table-fixed-left { + box-shadow: none; +} +.ant-table.ant-table-scroll-position-right .ant-table-fixed-right { + box-shadow: none; +} +.ant-table-small { + border: 1px solid #e8e8e8; + border-radius: 4px; +} +.ant-table-small > .ant-table-title { + border-bottom: 1px solid #e8e8e8; +} +.ant-table-small > .ant-table-content > .ant-table-header > table, +.ant-table-small > .ant-table-content > .ant-table-body > table, +.ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-header > table, +.ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-body > table, +.ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-header > table, +.ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-header > table, +.ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-body-outer > .ant-table-body-inner > table, +.ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-body-outer > .ant-table-body-inner > table { + border: 0; +} +.ant-table-small > .ant-table-content > .ant-table-header > table > .ant-table-thead > tr > th, +.ant-table-small > .ant-table-content > .ant-table-body > table > .ant-table-thead > tr > th, +.ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-header > table > .ant-table-thead > tr > th, +.ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-body > table > .ant-table-thead > tr > th, +.ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-header > table > .ant-table-thead > tr > th, +.ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-header > table > .ant-table-thead > tr > th, +.ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-thead > tr > th, +.ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-thead > tr > th { + background: #fff; + border-bottom: 1px solid #e8e8e8; +} +.ant-table-small > .ant-table-content .ant-table-header { + background: #fff; +} +.ant-table-small > .ant-table-content .ant-table-placeholder, +.ant-table-small > .ant-table-content .ant-table-row:last-child td { + border-bottom: 0; +} +.ant-table-small.ant-table-bordered { + border-right: 0; +} +.ant-table-small.ant-table-bordered .ant-table-title { + border: 0; + border-bottom: 1px solid #e8e8e8; + border-right: 1px solid #e8e8e8; +} +.ant-table-small.ant-table-bordered .ant-table-content { + border-right: 1px solid #e8e8e8; +} +.ant-table-small.ant-table-bordered .ant-table-footer { + border: 0; + border-top: 1px solid #e8e8e8; + border-right: 1px solid #e8e8e8; +} +.ant-table-small.ant-table-bordered .ant-table-placeholder { + border-left: 0; + border-bottom: 0; +} +.ant-table-small.ant-table-bordered .ant-table-thead > tr > th:last-child, +.ant-table-small.ant-table-bordered .ant-table-tbody > tr > td:last-child { + border-right: none; +} +.ant-table-small.ant-table-bordered .ant-table-fixed-left .ant-table-thead > tr > th:last-child, +.ant-table-small.ant-table-bordered .ant-table-fixed-left .ant-table-tbody > tr > td:last-child { + border-right: 1px solid #e8e8e8; +} +.ant-table-small.ant-table-bordered .ant-table-fixed-right { + border-right: 1px solid #e8e8e8; +} +.ant-tabs.ant-tabs-card > .ant-tabs-bar .ant-tabs-tab { + border: 1px solid #e8e8e8; + border-bottom: 0; + border-radius: 4px 4px 0 0; + background: #fafafa; +} +.ant-tabs.ant-tabs-card > .ant-tabs-bar .ant-tabs-tab-active { + background: #fff; + border-color: @primary-color !important; + color: @primary-color; +} +.ant-tabs.ant-tabs-card > .ant-tabs-bar .ant-tabs-tab .ant-tabs-close-x { + color: rgba(0, 0, 0, 0.45); +} +.ant-tabs.ant-tabs-card > .ant-tabs-bar .ant-tabs-tab .ant-tabs-close-x:hover { + color: rgba(0, 0, 0, 0.85); +} +.ant-tabs-extra-content .ant-tabs-new-tab { + border-radius: 2px; + border: 1px solid #e8e8e8; + color: rgba(0, 0, 0, 0.65); +} +.ant-tabs-extra-content .ant-tabs-new-tab:hover { + color: @primary-color; + border-color: @primary-color; +} +.ant-tabs-vertical.ant-tabs-card > .ant-tabs-bar .ant-tabs-tab { + border-bottom: 1px solid #e8e8e8; +} +.ant-tabs-vertical.ant-tabs-card.ant-tabs-left > .ant-tabs-bar .ant-tabs-tab { + border-right: 0; + border-radius: 4px 0 0 4px; +} +.ant-tabs-vertical.ant-tabs-card.ant-tabs-right > .ant-tabs-bar .ant-tabs-tab { + border-left: 0; + border-radius: 0 4px 4px 0; +} +.ant-tabs.ant-tabs-card.ant-tabs-bottom > .ant-tabs-bar .ant-tabs-tab { + border-bottom: 1px solid #e8e8e8; + border-top: 0; + border-radius: 0 0 4px 4px; +} +.ant-tabs.ant-tabs-card.ant-tabs-bottom > .ant-tabs-bar .ant-tabs-tab-active { + color: @primary-color; +} +.ant-tabs { + color: rgba(0, 0, 0, 0.65); +} +.ant-tabs-ink-bar { + background-color: @primary-color; +} +.ant-tabs-bar { + border-bottom: 1px solid #e8e8e8; +} +.ant-tabs-bottom .ant-tabs-bar { + border-bottom: none; + border-top: 1px solid #e8e8e8; +} +.ant-tabs-tab-prev, +.ant-tabs-tab-next { + border: 0; + background-color: transparent; + color: rgba(0, 0, 0, 0.45); +} +.ant-tabs-tab-prev:hover, +.ant-tabs-tab-next:hover { + color: rgba(0, 0, 0, 0.65); +} +.ant-tabs-tab-btn-disabled, +.ant-tabs-tab-btn-disabled:hover { + color: rgba(0, 0, 0, 0.25); +} +.ant-tabs-nav .ant-tabs-tab-disabled { + color: rgba(0, 0, 0, 0.25); +} +.ant-tabs-nav .ant-tabs-tab:hover { + color: color(~`colorPalette("@{primary-color}", 5)`); +} +.ant-tabs-nav .ant-tabs-tab:active { + color: color(~`colorPalette("@{primary-color}", 7)`); +} +.ant-tabs-nav .ant-tabs-tab-active { + color: @primary-color; +} +.ant-tabs-vertical > .ant-tabs-bar { + border-bottom: 0; +} +.ant-tabs-vertical.ant-tabs-left > .ant-tabs-bar { + border-right: 1px solid #e8e8e8; +} +.ant-tabs-vertical.ant-tabs-left > .ant-tabs-content { + border-left: 1px solid #e8e8e8; +} +.ant-tabs-vertical.ant-tabs-right > .ant-tabs-bar { + border-left: 1px solid #e8e8e8; +} +.ant-tabs-vertical.ant-tabs-right > .ant-tabs-content { + border-right: 1px solid #e8e8e8; +} +.ant-tag { + color: rgba(0, 0, 0, 0.65); + border-radius: 4px; + border: 1px solid #d9d9d9; + background: #fafafa; +} +.ant-tag, +.ant-tag a, +.ant-tag a:hover { + color: rgba(0, 0, 0, 0.65); +} +.ant-tag .anticon-close { + color: rgba(0, 0, 0, 0.45); +} +.ant-tag .anticon-close:hover { + color: rgba(0, 0, 0, 0.85); +} +.ant-tag-has-color { + border-color: transparent; +} +.ant-tag-has-color, +.ant-tag-has-color a, +.ant-tag-has-color a:hover, +.ant-tag-has-color .anticon-close, +.ant-tag-has-color .anticon-close:hover { + color: #fff; +} +.ant-tag-checkable { + background-color: transparent; + border-color: transparent; +} +.ant-tag-checkable:not(.ant-tag-checkable-checked):hover { + color: @primary-color; +} +.ant-tag-checkable:active, +.ant-tag-checkable-checked { + color: #fff; +} +.ant-tag-checkable-checked { + background-color: @primary-color; +} +.ant-tag-checkable:active { + background-color: color(~`colorPalette("@{primary-color}", 7)`); +} +.ant-tag-pink { + color: #eb2f96; + background: #fff0f6; + border-color: #ffadd2; +} +.ant-tag-pink-inverse { + background: #eb2f96; + border-color: #eb2f96; + color: #fff; +} +.ant-tag-magenta { + color: #eb2f96; + background: #fff0f6; + border-color: #ffadd2; +} +.ant-tag-magenta-inverse { + background: #eb2f96; + border-color: #eb2f96; + color: #fff; +} +.ant-tag-red { + color: #f5222d; + background: #fff1f0; + border-color: #ffa39e; +} +.ant-tag-red-inverse { + background: #f5222d; + border-color: #f5222d; + color: #fff; +} +.ant-tag-volcano { + color: #fa541c; + background: #fff2e8; + border-color: #ffbb96; +} +.ant-tag-volcano-inverse { + background: #fa541c; + border-color: #fa541c; + color: #fff; +} +.ant-tag-orange { + color: #fa8c16; + background: #fff7e6; + border-color: #ffd591; +} +.ant-tag-orange-inverse { + background: #fa8c16; + border-color: #fa8c16; + color: #fff; +} +.ant-tag-yellow { + color: #fadb14; + background: #feffe6; + border-color: #fffb8f; +} +.ant-tag-yellow-inverse { + background: #fadb14; + border-color: #fadb14; + color: #fff; +} +.ant-tag-gold { + color: #faad14; + background: #fffbe6; + border-color: #ffe58f; +} +.ant-tag-gold-inverse { + background: #faad14; + border-color: #faad14; + color: #fff; +} +.ant-tag-cyan { + color: #13c2c2; + background: #e6fffb; + border-color: #87e8de; +} +.ant-tag-cyan-inverse { + background: #13c2c2; + border-color: #13c2c2; + color: #fff; +} +.ant-tag-lime { + color: #a0d911; + background: #fcffe6; + border-color: #eaff8f; +} +.ant-tag-lime-inverse { + background: #a0d911; + border-color: #a0d911; + color: #fff; +} +.ant-tag-green { + color: #52c41a; + background: #f6ffed; + border-color: #b7eb8f; +} +.ant-tag-green-inverse { + background: #52c41a; + border-color: #52c41a; + color: #fff; +} +.ant-tag-blue { + color: @primary-color; + background: color(~`colorPalette("@{primary-color}", 1)`); + border-color: color(~`colorPalette("@{primary-color}", 3)`); +} +.ant-tag-blue-inverse { + background: @primary-color; + border-color: @primary-color; + color: #fff; +} +.ant-tag-geekblue { + color: #2f54eb; + background: #f0f5ff; + border-color: #adc6ff; +} +.ant-tag-geekblue-inverse { + background: #2f54eb; + border-color: #2f54eb; + color: #fff; +} +.ant-tag-purple { + color: #722ed1; + background: #f9f0ff; + border-color: #d3adf7; +} +.ant-tag-purple-inverse { + background: #722ed1; + border-color: #722ed1; + color: #fff; +} +.ant-time-picker-panel { + color: rgba(0, 0, 0, 0.65); +} +.ant-time-picker-panel-inner { + background-color: #fff; + border-radius: 4px; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); + background-clip: padding-box; +} +.ant-time-picker-panel-input { + border: 0; +} +.ant-time-picker-panel-input::-moz-placeholder { + color: #bfbfbf; +} +.ant-time-picker-panel-input:-ms-input-placeholder { + color: #bfbfbf; +} +.ant-time-picker-panel-input::-webkit-input-placeholder { + color: #bfbfbf; +} +.ant-time-picker-panel-input-wrap { + border-bottom: 1px solid #e8e8e8; +} +.ant-time-picker-panel-input-invalid { + border-color: red; +} +.ant-time-picker-panel-clear-btn-icon svg { + color: rgba(0, 0, 0, 0.25); +} +.ant-time-picker-panel-clear-btn-icon svg:hover { + color: rgba(0, 0, 0, 0.45); +} +.ant-time-picker-panel-select { + border-left: 1px solid #e8e8e8; +} +.ant-time-picker-panel-select:first-child { + border-left: 0; +} +.ant-time-picker-panel-select:last-child { + border-right: 0; +} +.ant-time-picker-panel-select li:hover { + background: color(~`colorPalette("@{primary-color}", 1)`); +} +li.ant-time-picker-panel-select-option-selected { + background: #f5f5f5; +} +li.ant-time-picker-panel-select-option-selected:hover { + background: #f5f5f5; +} +li.ant-time-picker-panel-select-option-disabled { + color: rgba(0, 0, 0, 0.25); +} +li.ant-time-picker-panel-select-option-disabled:hover { + background: transparent; +} +.ant-time-picker-panel-addon { + border-top: 1px solid #e8e8e8; +} +.ant-time-picker { + color: rgba(0, 0, 0, 0.65); +} +.ant-time-picker-input { + color: rgba(0, 0, 0, 0.65); + background-color: #fff; + background-image: none; + border: 1px solid #d9d9d9; + border-radius: 4px; +} +.ant-time-picker-input::-moz-placeholder { + color: #bfbfbf; +} +.ant-time-picker-input:-ms-input-placeholder { + color: #bfbfbf; +} +.ant-time-picker-input::-webkit-input-placeholder { + color: #bfbfbf; +} +.ant-time-picker-input:hover { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + border-right-width: 1px !important; +} +.ant-time-picker-input:focus { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); + border-right-width: 1px !important; +} +.ant-time-picker-input-disabled { + background-color: #f5f5f5; + color: rgba(0, 0, 0, 0.25); +} +.ant-time-picker-input-disabled:hover { + border-color: #e6d8d8; + border-right-width: 1px !important; +} +.ant-time-picker-input[disabled] { + background-color: #f5f5f5; + color: rgba(0, 0, 0, 0.25); +} +.ant-time-picker-input[disabled]:hover { + border-color: #e6d8d8; + border-right-width: 1px !important; +} +.ant-time-picker-icon { + color: rgba(0, 0, 0, 0.25); +} +.ant-time-picker-icon .ant-time-picker-clock-icon { + color: rgba(0, 0, 0, 0.25); +} +.ant-timeline { + color: rgba(0, 0, 0, 0.65); +} +.ant-timeline-item-tail { + border-left: 2px solid #e8e8e8; +} +.ant-timeline-item-head { + background-color: #fff; + border-radius: 100px; + border: 2px solid transparent; +} +.ant-timeline-item-head-blue { + border-color: @primary-color; + color: @primary-color; +} +.ant-timeline-item-head-red { + border-color: #f5222d; + color: #f5222d; +} +.ant-timeline-item-head-green { + border-color: #52c41a; + color: #52c41a; +} +.ant-timeline-item-head-custom { + border: 0; + border-radius: 0; +} +.ant-timeline.ant-timeline-pending .ant-timeline-item-last .ant-timeline-item-tail { + border-left: 2px dotted #e8e8e8; +} +.ant-timeline.ant-timeline-reverse .ant-timeline-item-pending .ant-timeline-item-tail { + border-left: 2px dotted #e8e8e8; +} +.ant-tooltip { + color: rgba(0, 0, 0, 0.65); +} +.ant-tooltip-inner { + color: #fff; + background-color: rgba(0, 0, 0, 0.75); + border-radius: 4px; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); +} +.ant-tooltip-arrow { + border-color: transparent; + border-style: solid; +} +.ant-tooltip-placement-top .ant-tooltip-arrow, +.ant-tooltip-placement-topLeft .ant-tooltip-arrow, +.ant-tooltip-placement-topRight .ant-tooltip-arrow { + border-width: 5px 5px 0; + border-top-color: rgba(0, 0, 0, 0.75); +} +.ant-tooltip-placement-right .ant-tooltip-arrow, +.ant-tooltip-placement-rightTop .ant-tooltip-arrow, +.ant-tooltip-placement-rightBottom .ant-tooltip-arrow { + border-width: 5px 5px 5px 0; + border-right-color: rgba(0, 0, 0, 0.75); +} +.ant-tooltip-placement-left .ant-tooltip-arrow, +.ant-tooltip-placement-leftTop .ant-tooltip-arrow, +.ant-tooltip-placement-leftBottom .ant-tooltip-arrow { + border-width: 5px 0 5px 5px; + border-left-color: rgba(0, 0, 0, 0.75); +} +.ant-tooltip-placement-bottom .ant-tooltip-arrow, +.ant-tooltip-placement-bottomLeft .ant-tooltip-arrow, +.ant-tooltip-placement-bottomRight .ant-tooltip-arrow { + border-width: 0 5px 5px; + border-bottom-color: rgba(0, 0, 0, 0.75); +} +.ant-transfer { + color: rgba(0, 0, 0, 0.65); +} +.ant-transfer-disabled .ant-transfer-list { + background: #f5f5f5; +} +.ant-transfer-list { + border: 1px solid #d9d9d9; + border-radius: 4px; +} +.ant-transfer-list-search-action { + color: rgba(0, 0, 0, 0.25); +} +.ant-transfer-list-search-action .anticon { + color: rgba(0, 0, 0, 0.25); +} +.ant-transfer-list-search-action .anticon:hover { + color: rgba(0, 0, 0, 0.45); +} +.ant-transfer-list-header { + border-radius: 4px 4px 0 0; + background: #fff; + color: rgba(0, 0, 0, 0.65); + border-bottom: 1px solid #e8e8e8; +} +.ant-transfer-list-content-item:not(.ant-transfer-list-content-item-disabled):hover { + background-color: color(~`colorPalette("@{primary-color}", 1)`); +} +.ant-transfer-list-content-item-disabled { + color: rgba(0, 0, 0, 0.25); +} +.ant-transfer-list-body-not-found { + color: rgba(0, 0, 0, 0.25); +} +.ant-transfer-list-footer { + border-top: 1px solid #e8e8e8; + border-radius: 0 0 4px 4px; +} +.ant-select-tree-checkbox { + color: rgba(0, 0, 0, 0.65); +} +.ant-select-tree-checkbox-wrapper:hover .ant-select-tree-checkbox-inner, +.ant-select-tree-checkbox:hover .ant-select-tree-checkbox-inner, +.ant-select-tree-checkbox-input:focus + .ant-select-tree-checkbox-inner { + border-color: @primary-color; +} +.ant-select-tree-checkbox-checked:after { + border-radius: 2px; + border: 1px solid @primary-color; +} +.ant-select-tree-checkbox-inner { + border: 1px solid #d9d9d9; + border-radius: 2px; + background-color: #fff; +} +.ant-select-tree-checkbox-inner:after { + border: 2px solid #fff; + border-top: 0; + border-left: 0; +} +.ant-select-tree-checkbox-indeterminate .ant-select-tree-checkbox-inner:after { + border: 0; + background-color: @primary-color; +} +.ant-select-tree-checkbox-indeterminate.ant-select-tree-checkbox-disabled .ant-select-tree-checkbox-inner:after { + border-color: rgba(0, 0, 0, 0.25); +} +.ant-select-tree-checkbox-checked .ant-select-tree-checkbox-inner:after { + border: 2px solid #fff; + border-top: 0; + border-left: 0; +} +.ant-select-tree-checkbox-checked .ant-select-tree-checkbox-inner { + background-color: @primary-color; + border-color: @primary-color; +} +.ant-select-tree-checkbox-disabled.ant-select-tree-checkbox-checked .ant-select-tree-checkbox-inner:after { + border-color: rgba(0, 0, 0, 0.25); +} +.ant-select-tree-checkbox-disabled .ant-select-tree-checkbox-inner { + border-color: #d9d9d9 !important; + background-color: #f5f5f5; +} +.ant-select-tree-checkbox-disabled .ant-select-tree-checkbox-inner:after { + border-color: #f5f5f5; +} +.ant-select-tree-checkbox-disabled + span { + color: rgba(0, 0, 0, 0.25); +} +.ant-select-tree-checkbox-wrapper { + color: rgba(0, 0, 0, 0.65); +} +.ant-select-tree-checkbox-group { + color: rgba(0, 0, 0, 0.65); +} +.ant-select-tree { + color: rgba(0, 0, 0, 0.65); +} +.ant-select-tree li .ant-select-tree-node-content-wrapper { + border-radius: 2px; + color: rgba(0, 0, 0, 0.65); +} +.ant-select-tree li .ant-select-tree-node-content-wrapper:hover { + background-color: color(~`colorPalette("@{primary-color}", 1)`); +} +.ant-select-tree li .ant-select-tree-node-content-wrapper.ant-select-tree-node-selected { + background-color: color(~`colorPalette("@{primary-color}", 2)`); +} +.ant-select-tree li span.ant-select-tree-switcher, +.ant-select-tree li span.ant-select-tree-iconEle { + border: 0 none; +} +.ant-select-tree li span.ant-select-icon_loading .ant-select-switcher-loading-icon { + color: @primary-color; +} +.ant-select-tree li span.ant-select-tree-switcher.ant-select-tree-switcher_open .ant-select-switcher-loading-icon, +.ant-select-tree li span.ant-select-tree-switcher.ant-select-tree-switcher_close .ant-select-switcher-loading-icon { + color: @primary-color; +} +li.ant-select-tree-treenode-disabled > span:not(.ant-select-tree-switcher), +li.ant-select-tree-treenode-disabled > .ant-select-tree-node-content-wrapper, +li.ant-select-tree-treenode-disabled > .ant-select-tree-node-content-wrapper span { + color: rgba(0, 0, 0, 0.25); +} +li.ant-select-tree-treenode-disabled > .ant-select-tree-node-content-wrapper:hover { + background: transparent; +} +.ant-select-tree-dropdown { + color: rgba(0, 0, 0, 0.65); +} +.ant-select-tree-dropdown .ant-select-dropdown-search .ant-select-search__field { + border: 1px solid #d9d9d9; + border-radius: 4px; +} +.ant-select-tree-dropdown .ant-select-not-found { + color: rgba(0, 0, 0, 0.25); +} +.ant-tree.ant-tree-directory > li span.ant-tree-node-content-wrapper, +.ant-tree.ant-tree-directory .ant-tree-child-tree > li span.ant-tree-node-content-wrapper { + border-radius: 0; +} +.ant-tree.ant-tree-directory > li span.ant-tree-node-content-wrapper:hover, +.ant-tree.ant-tree-directory .ant-tree-child-tree > li span.ant-tree-node-content-wrapper:hover { + background: transparent; +} +.ant-tree.ant-tree-directory > li span.ant-tree-node-content-wrapper:hover:before, +.ant-tree.ant-tree-directory .ant-tree-child-tree > li span.ant-tree-node-content-wrapper:hover:before { + background: color(~`colorPalette("@{primary-color}", 1)`); +} +.ant-tree.ant-tree-directory > li span.ant-tree-node-content-wrapper.ant-tree-node-selected, +.ant-tree.ant-tree-directory .ant-tree-child-tree > li span.ant-tree-node-content-wrapper.ant-tree-node-selected { + color: #fff; + background: transparent; +} +.ant-tree.ant-tree-directory > li.ant-tree-treenode-selected > span.ant-tree-switcher, +.ant-tree.ant-tree-directory .ant-tree-child-tree > li.ant-tree-treenode-selected > span.ant-tree-switcher { + color: #fff; +} +.ant-tree.ant-tree-directory > li.ant-tree-treenode-selected > span.ant-tree-checkbox .ant-tree-checkbox-inner, +.ant-tree.ant-tree-directory .ant-tree-child-tree > li.ant-tree-treenode-selected > span.ant-tree-checkbox .ant-tree-checkbox-inner { + border-color: @primary-color; +} +.ant-tree.ant-tree-directory > li.ant-tree-treenode-selected > span.ant-tree-checkbox.ant-tree-checkbox-checked:after, +.ant-tree.ant-tree-directory .ant-tree-child-tree > li.ant-tree-treenode-selected > span.ant-tree-checkbox.ant-tree-checkbox-checked:after { + border-color: #fff; +} +.ant-tree.ant-tree-directory > li.ant-tree-treenode-selected > span.ant-tree-checkbox.ant-tree-checkbox-checked .ant-tree-checkbox-inner, +.ant-tree.ant-tree-directory .ant-tree-child-tree > li.ant-tree-treenode-selected > span.ant-tree-checkbox.ant-tree-checkbox-checked .ant-tree-checkbox-inner { + background: #fff; +} +.ant-tree.ant-tree-directory > li.ant-tree-treenode-selected > span.ant-tree-checkbox.ant-tree-checkbox-checked .ant-tree-checkbox-inner:after, +.ant-tree.ant-tree-directory .ant-tree-child-tree > li.ant-tree-treenode-selected > span.ant-tree-checkbox.ant-tree-checkbox-checked .ant-tree-checkbox-inner:after { + border-color: @primary-color; +} +.ant-tree.ant-tree-directory > li.ant-tree-treenode-selected > span.ant-tree-node-content-wrapper:before, +.ant-tree.ant-tree-directory .ant-tree-child-tree > li.ant-tree-treenode-selected > span.ant-tree-node-content-wrapper:before { + background: @primary-color; +} +.ant-tree-checkbox { + color: rgba(0, 0, 0, 0.65); +} +.ant-tree-checkbox-wrapper:hover .ant-tree-checkbox-inner, +.ant-tree-checkbox:hover .ant-tree-checkbox-inner, +.ant-tree-checkbox-input:focus + .ant-tree-checkbox-inner { + border-color: @primary-color; +} +.ant-tree-checkbox-checked:after { + border-radius: 2px; + border: 1px solid @primary-color; +} +.ant-tree-checkbox-inner { + border: 1px solid #d9d9d9; + border-radius: 2px; + background-color: #fff; +} +.ant-tree-checkbox-inner:after { + border: 2px solid #fff; + border-top: 0; + border-left: 0; +} +.ant-tree-checkbox-indeterminate .ant-tree-checkbox-inner:after { + border: 0; + background-color: @primary-color; +} +.ant-tree-checkbox-indeterminate.ant-tree-checkbox-disabled .ant-tree-checkbox-inner:after { + border-color: rgba(0, 0, 0, 0.25); +} +.ant-tree-checkbox-checked .ant-tree-checkbox-inner:after { + border: 2px solid #fff; + border-top: 0; + border-left: 0; +} +.ant-tree-checkbox-checked .ant-tree-checkbox-inner { + background-color: @primary-color; + border-color: @primary-color; +} +.ant-tree-checkbox-disabled.ant-tree-checkbox-checked .ant-tree-checkbox-inner:after { + border-color: rgba(0, 0, 0, 0.25); +} +.ant-tree-checkbox-disabled .ant-tree-checkbox-inner { + border-color: #d9d9d9 !important; + background-color: #f5f5f5; +} +.ant-tree-checkbox-disabled .ant-tree-checkbox-inner:after { + border-color: #f5f5f5; +} +.ant-tree-checkbox-disabled + span { + color: rgba(0, 0, 0, 0.25); +} +.ant-tree-checkbox-wrapper { + color: rgba(0, 0, 0, 0.65); +} +.ant-tree-checkbox-group { + color: rgba(0, 0, 0, 0.65); +} +.ant-tree { + color: rgba(0, 0, 0, 0.65); +} +.ant-tree li span[draggable], +.ant-tree li span[draggable="true"] { + border-top: 2px transparent solid; + border-bottom: 2px transparent solid; +} +.ant-tree li.drag-over > span[draggable] { + background-color: @primary-color; + color: white; +} +.ant-tree li.drag-over-gap-top > span[draggable] { + border-top-color: @primary-color; +} +.ant-tree li.drag-over-gap-bottom > span[draggable] { + border-bottom-color: @primary-color; +} +.ant-tree li.filter-node > span { + color: #f5222d !important; +} +.ant-tree li.ant-tree-treenode-loading span.ant-tree-switcher.ant-tree-switcher_open .ant-tree-switcher-loading-icon, +.ant-tree li.ant-tree-treenode-loading span.ant-tree-switcher.ant-tree-switcher_close .ant-tree-switcher-loading-icon { + color: @primary-color; +} +.ant-tree li .ant-tree-node-content-wrapper { + border-radius: 2px; + color: rgba(0, 0, 0, 0.65); +} +.ant-tree li .ant-tree-node-content-wrapper:hover { + background-color: color(~`colorPalette("@{primary-color}", 1)`); +} +.ant-tree li .ant-tree-node-content-wrapper.ant-tree-node-selected { + background-color: color(~`colorPalette("@{primary-color}", 2)`); +} +.ant-tree li span.ant-tree-switcher, +.ant-tree li span.ant-tree-iconEle { + border: 0 none; +} +li.ant-tree-treenode-disabled > span:not(.ant-tree-switcher), +li.ant-tree-treenode-disabled > .ant-tree-node-content-wrapper, +li.ant-tree-treenode-disabled > .ant-tree-node-content-wrapper span { + color: rgba(0, 0, 0, 0.25); +} +li.ant-tree-treenode-disabled > .ant-tree-node-content-wrapper:hover { + background: transparent; +} +.ant-tree.ant-tree-show-line li span.ant-tree-switcher { + background: #fff; + color: rgba(0, 0, 0, 0.45); +} +.ant-tree.ant-tree-show-line li:not(:last-child):before { + border-left: 1px solid #d9d9d9; +} +.ant-upload { + color: rgba(0, 0, 0, 0.65); +} +.ant-upload.ant-upload-select-picture-card { + border: 1px dashed #d9d9d9; + border-radius: 4px; + background-color: #fafafa; +} +.ant-upload.ant-upload-select-picture-card:hover { + border-color: @primary-color; +} +.ant-upload.ant-upload-drag { + border: 1px dashed #d9d9d9; + border-radius: 4px; + background: #fafafa; +} +.ant-upload.ant-upload-drag.ant-upload-drag-hover:not(.ant-upload-disabled) { + border: 2px dashed color(~`colorPalette("@{primary-color}", 5)`); +} +.ant-upload.ant-upload-drag:not(.ant-upload-disabled):hover { + border-color: color(~`colorPalette("@{primary-color}", 5)`); +} +.ant-upload.ant-upload-drag p.ant-upload-drag-icon .anticon { + color: color(~`colorPalette("@{primary-color}", 5)`); +} +.ant-upload.ant-upload-drag p.ant-upload-text { + color: rgba(0, 0, 0, 0.85); +} +.ant-upload.ant-upload-drag p.ant-upload-hint { + color: rgba(0, 0, 0, 0.45); +} +.ant-upload.ant-upload-drag .anticon-plus { + color: rgba(0, 0, 0, 0.25); +} +.ant-upload.ant-upload-drag .anticon-plus:hover { + color: rgba(0, 0, 0, 0.45); +} +.ant-upload.ant-upload-drag:hover .anticon-plus { + color: rgba(0, 0, 0, 0.45); +} +.ant-upload-list { + color: rgba(0, 0, 0, 0.65); +} +.ant-upload-list-item-info .anticon-loading, +.ant-upload-list-item-info .anticon-paper-clip { + color: rgba(0, 0, 0, 0.45); +} +.ant-upload-list-item .anticon-close { + color: rgba(0, 0, 0, 0.45); +} +.ant-upload-list-item .anticon-close:hover { + color: rgba(0, 0, 0, 0.65); +} +.ant-upload-list-item:hover .ant-upload-list-item-info { + background-color: color(~`colorPalette("@{primary-color}", 1)`); +} +.ant-upload-list-item-error, +.ant-upload-list-item-error .anticon-paper-clip, +.ant-upload-list-item-error .ant-upload-list-item-name { + color: #f5222d; +} +.ant-upload-list-item-error .anticon-close { + color: #f5222d !important; +} +.ant-upload-list-picture .ant-upload-list-item, +.ant-upload-list-picture-card .ant-upload-list-item { + border-radius: 4px; + border: 1px solid #d9d9d9; +} +.ant-upload-list-picture .ant-upload-list-item:hover, +.ant-upload-list-picture-card .ant-upload-list-item:hover { + background: transparent; +} +.ant-upload-list-picture .ant-upload-list-item-error, +.ant-upload-list-picture-card .ant-upload-list-item-error { + border-color: #f5222d; +} +.ant-upload-list-picture .ant-upload-list-item:hover .ant-upload-list-item-info, +.ant-upload-list-picture-card .ant-upload-list-item:hover .ant-upload-list-item-info { + background: transparent; +} +.ant-upload-list-picture .ant-upload-list-item-uploading, +.ant-upload-list-picture-card .ant-upload-list-item-uploading { + border-style: dashed; +} +.ant-upload-list-picture .ant-upload-list-item-icon, +.ant-upload-list-picture-card .ant-upload-list-item-icon { + color: rgba(0, 0, 0, 0.25); +} +.ant-upload-list-picture .ant-upload-list-item-thumbnail.anticon:before, +.ant-upload-list-picture-card .ant-upload-list-item-thumbnail.anticon:before { + color: rgba(0, 0, 0, 0.45); +} +.ant-upload-list-picture-card .ant-upload-list-item-info:before { + background-color: rgba(0, 0, 0, 0.5); +} +.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-eye-o, +.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-delete { + color: rgba(255, 255, 255, 0.85); +} +.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-eye-o:hover, +.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-delete:hover { + color: #fff; +} +.ant-upload-list-picture-card .ant-upload-list-item-uploading.ant-upload-list-item { + background-color: #fafafa; +} +.ant-upload-list-picture-card .ant-upload-list-item-uploading-text { + color: rgba(0, 0, 0, 0.45); +} +.ant-upload-list .ant-upload-success-icon { + color: #52c41a; +} + +.drawer .drawer-content { + background: #001529; +} + +.ant-list-item-meta .taobao { + color: #ff4000; + border-radius: 4px; +} +.ant-list-item-meta .dingding { + background-color: #2eabff; + color: #fff; + border-radius: 4px; +} +.ant-list-item-meta .alipay { + color: #2eabff; + border-radius: 4px; +} +font.strong { + color: #52c41a; +} +font.medium { + color: #faad14; +} +font.weak { + color: #f5222d; +} + + +// begin -------- JAreaLinkage 三级联动样式 -------------- +.cascader-menu-list .cascader-menu-option.hover, +.cascader-menu-list .cascader-menu-option:hover { + background-color: color(~`colorPalette("@{primary-color}", 1)`); +} + +.area-selectable-list .area-select-option.hover { + background-color: color(~`colorPalette("@{primary-color}", 1)`); +} + +.area-select:hover { + border-color: @primary-color; +} + +.area-select:active { + box-shadow: 0 0 0 2px color(~`colorPalette("@{primary-color}", 1)`); +} +// end -------- JAreaLinkage 三级联动样式 -------------- \ No newline at end of file diff --git a/smtERP-web/public/static/favicon.ico b/smtERP-web/public/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..baaa5459b3fe2354b2b600c4beadd18a682585c5 GIT binary patch literal 17014 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 J;D@Dw{|CwmaKHcn literal 0 HcmV?d00001 diff --git a/smtERP-web/public/static/iPhone.png b/smtERP-web/public/static/iPhone.png new file mode 100644 index 0000000000000000000000000000000000000000..9b81d5b9050322c215acaad0f52edd99a798e178 GIT binary patch literal 3155 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 literal 0 HcmV?d00001 diff --git a/smtERP-web/public/static/iphone-code.png b/smtERP-web/public/static/iphone-code.png new file mode 100644 index 0000000000000000000000000000000000000000..f83fc358f1d4e18bbed24d64149628e1aed7b6d9 GIT binary patch literal 24255 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 literal 0 HcmV?d00001 diff --git a/smtERP-web/public/static/less.min.js b/smtERP-web/public/static/less.min.js new file mode 100644 index 0000000..295eaec --- /dev/null +++ b/smtERP-web/public/static/less.min.js @@ -0,0 +1,18 @@ +/*! + * Less - Leaner CSS v3.8.1 + * http://lesscss.org + * + * Copyright (c) 2009-2018, Alexis Sellier + * Licensed under the Apache-2.0 License. + * + */ + + /** * @license Apache-2.0 + */ + +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.less=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g0||b.isFileProtocol?"development":"production");var c=/!dumpLineNumbers:(comments|mediaquery|all)/.exec(a.location.hash);c&&(b.dumpLineNumbers=c[1]),void 0===b.useFileCache&&(b.useFileCache=!0),void 0===b.onReady&&(b.onReady=!0),b.relativeUrls&&(b.rewriteUrls="all")}},{"./browser":3,"./utils":11}],2:[function(a,b,c){function d(a){a.filename&&console.warn(a),e.async||h.removeChild(i)}a("promise/polyfill");var e=a("../less/default-options")();if(window.less)for(key in window.less)window.less.hasOwnProperty(key)&&(e[key]=window.less[key]);a("./add-default-options")(window,e),e.plugins=e.plugins||[],window.LESS_PLUGINS&&(e.plugins=e.plugins.concat(window.LESS_PLUGINS));var f=b.exports=a("./index")(window,e);window.less=f;var g,h,i;e.onReady&&(/!watch/.test(window.location.hash)&&f.watch(),e.async||(g="body { display: none !important }",h=document.head||document.getElementsByTagName("head")[0],i=document.createElement("style"),i.type="text/css",i.styleSheet?i.styleSheet.cssText=g:i.appendChild(document.createTextNode(g)),h.appendChild(i)),f.registerStylesheetsImmediately(),f.pageLoadFinished=f.refresh("development"===f.env).then(d,d))},{"../less/default-options":17,"./add-default-options":1,"./index":8,"promise/polyfill":107}],3:[function(a,b,c){var d=a("./utils");b.exports={createCSS:function(a,b,c){var e=c.href||"",f="less:"+(c.title||d.extractId(e)),g=a.getElementById(f),h=!1,i=a.createElement("style");i.setAttribute("type","text/css"),c.media&&i.setAttribute("media",c.media),i.id=f,i.styleSheet||(i.appendChild(a.createTextNode(b)),h=null!==g&&g.childNodes.length>0&&i.childNodes.length>0&&g.firstChild.nodeValue===i.firstChild.nodeValue);var j=a.getElementsByTagName("head")[0];if(null===g||h===!1){var k=c&&c.nextSibling||null;k?k.parentNode.insertBefore(i,k):j.appendChild(i)}if(g&&h===!1&&g.parentNode.removeChild(g),i.styleSheet)try{i.styleSheet.cssText=b}catch(l){throw new Error("Couldn't reassign styleSheet.cssText.")}},currentScript:function(a){var b=a.document;return b.currentScript||function(){var a=b.getElementsByTagName("script");return a[a.length-1]}()}}},{"./utils":11}],4:[function(a,b,c){b.exports=function(a,b,c){var d=null;if("development"!==b.env)try{d="undefined"==typeof a.localStorage?null:a.localStorage}catch(e){}return{setCSS:function(a,b,e,f){if(d){c.info("saving "+a+" to cache.");try{d.setItem(a,f),d.setItem(a+":timestamp",b),e&&d.setItem(a+":vars",JSON.stringify(e))}catch(g){c.error('failed to save "'+a+'" to local storage for caching.')}}},getCSS:function(a,b,c){var e=d&&d.getItem(a),f=d&&d.getItem(a+":timestamp"),g=d&&d.getItem(a+":vars");if(c=c||{},g=g||"{}",f&&b.lastModified&&new Date(b.lastModified).valueOf()===new Date(f).valueOf()&&JSON.stringify(c)===g)return e}}}},{}],5:[function(a,b,c){var d=a("./utils"),e=a("./browser");b.exports=function(a,b,c){function f(b,f){var g,h,i="less-error-message:"+d.extractId(f||""),j='

  1. {content}
  2. ',k=a.document.createElement("div"),l=[],m=b.filename||f,n=m.match(/([^\/]+(\?.*)?)$/)[1];k.id=i,k.className="less-error-message",h="

    "+(b.type||"Syntax")+"Error: "+(b.message||"There is an error in your .less file")+'

    in '+n+" ";var o=function(a,b,c){void 0!==a.extract[b]&&l.push(j.replace(/\{line\}/,(parseInt(a.line,10)||0)+(b-1)).replace(/\{class\}/,c).replace(/\{content\}/,a.extract[b]))};b.line&&(o(b,0,""),o(b,1,"line"),o(b,2,""),h+="on line "+b.line+", column "+(b.column+1)+":

      "+l.join("")+"
    "),b.stack&&(b.extract||c.logLevel>=4)&&(h+="
    Stack Trace
    "+b.stack.split("\n").slice(1).join("
    ")),k.innerHTML=h,e.createCSS(a.document,[".less-error-message ul, .less-error-message li {","list-style-type: none;","margin-right: 15px;","padding: 4px 0;","margin: 0;","}",".less-error-message label {","font-size: 12px;","margin-right: 15px;","padding: 4px 0;","color: #cc7777;","}",".less-error-message pre {","color: #dd6666;","padding: 4px 0;","margin: 0;","display: inline-block;","}",".less-error-message pre.line {","color: #ff0000;","}",".less-error-message h3 {","font-size: 20px;","font-weight: bold;","padding: 15px 0 5px 0;","margin: 0;","}",".less-error-message a {","color: #10a","}",".less-error-message .error {","color: red;","font-weight: bold;","padding-bottom: 2px;","border-bottom: 1px dashed red;","}"].join("\n"),{title:"error-message"}),k.style.cssText=["font-family: Arial, sans-serif","border: 1px solid #e00","background-color: #eee","border-radius: 5px","-webkit-border-radius: 5px","-moz-border-radius: 5px","color: #e00","padding: 15px","margin-bottom: 15px"].join(";"),"development"===c.env&&(g=setInterval(function(){var b=a.document,c=b.body;c&&(b.getElementById(i)?c.replaceChild(k,b.getElementById(i)):c.insertBefore(k,c.firstChild),clearInterval(g))},10))}function g(b){var c=a.document.getElementById("less-error-message:"+d.extractId(b));c&&c.parentNode.removeChild(c)}function h(a){}function i(a){c.errorReporting&&"html"!==c.errorReporting?"console"===c.errorReporting?h(a):"function"==typeof c.errorReporting&&c.errorReporting("remove",a):g(a)}function j(a,d){var e="{line} {content}",f=a.filename||d,g=[],h=(a.type||"Syntax")+"Error: "+(a.message||"There is an error in your .less file")+" in "+f,i=function(a,b,c){void 0!==a.extract[b]&&g.push(e.replace(/\{line\}/,(parseInt(a.line,10)||0)+(b-1)).replace(/\{class\}/,c).replace(/\{content\}/,a.extract[b]))};a.line&&(i(a,0,""),i(a,1,"line"),i(a,2,""),h+=" on line "+a.line+", column "+(a.column+1)+":\n"+g.join("\n")),a.stack&&(a.extract||c.logLevel>=4)&&(h+="\nStack Trace\n"+a.stack),b.logger.error(h)}function k(a,b){c.errorReporting&&"html"!==c.errorReporting?"console"===c.errorReporting?j(a,b):"function"==typeof c.errorReporting&&c.errorReporting("add",a,b):f(a,b)}return{add:k,remove:i}}},{"./browser":3,"./utils":11}],6:[function(a,b,c){b.exports=function(b,c){var d=a("../less/environment/abstract-file-manager.js"),e={},f=function(){};return f.prototype=new d,f.prototype.alwaysMakePathsAbsolute=function(){return!0},f.prototype.join=function(a,b){return a?this.extractUrlParts(b,a).path:b},f.prototype.doXHR=function(a,d,e,f){function g(b,c,d){b.status>=200&&b.status<300?c(b.responseText,b.getResponseHeader("Last-Modified")):"function"==typeof d&&d(b.status,a)}var h=new XMLHttpRequest,i=!b.isFileProtocol||b.fileAsync;"function"==typeof h.overrideMimeType&&h.overrideMimeType("text/css"),c.debug("XHR: Getting '"+a+"'"),h.open("GET",a,i),h.setRequestHeader("Accept",d||"text/x-less, text/css; q=0.9, */*; q=0.5"),h.send(null),b.isFileProtocol&&!b.fileAsync?0===h.status||h.status>=200&&h.status<300?e(h.responseText):f(h.status,a):i?h.onreadystatechange=function(){4==h.readyState&&g(h,e,f)}:g(h,e,f)},f.prototype.supports=function(a,b,c,d){return!0},f.prototype.clearFileCache=function(){e={}},f.prototype.loadFile=function(a,b,c,d){b&&!this.isPathAbsolute(a)&&(a=b+a),a=c.ext?this.tryAppendExtension(a,c.ext):a,c=c||{};var f=this.extractUrlParts(a,window.location.href),g=f.url,h=this;return new Promise(function(a,b){if(c.useFileCache&&e[g])try{var d=e[g];return a({contents:d,filename:g,webInfo:{lastModified:new Date}})}catch(f){return b({filename:g,message:"Error loading file "+g+" error was "+f.message})}h.doXHR(g,c.mime,function(b,c){e[g]=b,a({contents:b,filename:g,webInfo:{lastModified:c}})},function(a,c){b({type:"File",message:"'"+c+"' wasn't found ("+a+")",href:g})})})},f}},{"../less/environment/abstract-file-manager.js":18}],7:[function(a,b,c){b.exports=function(){function b(){throw{type:"Runtime",message:"Image size functions are not supported in browser version of less"}}var c=a("./../less/functions/function-registry"),d={"image-size":function(a){return b(this,a),-1},"image-width":function(a){return b(this,a),-1},"image-height":function(a){return b(this,a),-1}};c.addMultiple(d)}},{"./../less/functions/function-registry":27}],8:[function(a,b,c){var d=a("./utils").addDataAttr,e=a("./browser");b.exports=function(b,c){function f(a){var b={};for(var c in a)a.hasOwnProperty(c)&&(b[c]=a[c]);return b}function g(a,b){var c=Array.prototype.slice.call(arguments,2);return function(){var d=c.concat(Array.prototype.slice.call(arguments,0));return a.apply(b,d)}}function h(a){for(var b,d=l.getElementsByTagName("style"),e=0;e=c&&console.log(a)},info:function(a){b.logLevel>=d&&console.log(a)},warn:function(a){b.logLevel>=e&&console.warn(a)},error:function(a){b.logLevel>=f&&console.error(a)}}]);for(var g=0;gg.Math.PARENS_DIVISION)||this.parensStack&&this.parensStack.length))},f.Eval.prototype.pathRequiresRewrite=function(a){var b=this.rewriteUrls===g.RewriteUrls.LOCAL?e:d;return b(a)},f.Eval.prototype.rewritePath=function(a,b){var c;return b=b||"",c=this.normalizePath(b+a),e(a)&&d(b)&&e(c)===!1&&(c="./"+c),c},f.Eval.prototype.normalizePath=function(a){var b,c=a.split("/").reverse();for(a=[];0!==c.length;)switch(b=c.pop()){case".":break;case"..":0===a.length||".."===a[a.length-1]?a.push(b):a.pop();break;default:a.push(b)}return a.join("/")}},{"./constants":12}],14:[function(a,b,c){b.exports={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgrey:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",grey:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgrey:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"}},{}],15:[function(a,b,c){b.exports={colors:a("./colors"),unitConversions:a("./unit-conversions")}},{"./colors":14,"./unit-conversions":16}],16:[function(a,b,c){b.exports={length:{m:1,cm:.01,mm:.001,"in":.0254,px:.0254/96,pt:.0254/72,pc:.0254/72*12},duration:{s:1,ms:.001},angle:{rad:1/(2*Math.PI),deg:1/360,grad:.0025,turn:1}}},{}],17:[function(a,b,c){b.exports=function(){return{javascriptEnabled:!1,depends:!1,compress:!1,lint:!1,paths:[],color:!0,strictImports:!1,insecure:!1,rootpath:"",rewriteUrls:!1,ieCompat:!1,math:0,strictUnits:!1,globalVars:null,modifyVars:null,urlArgs:""}}},{}],18:[function(a,b,c){var d=function(){};d.prototype.getPath=function(a){var b=a.lastIndexOf("?");return b>0&&(a=a.slice(0,b)),b=a.lastIndexOf("/"),b<0&&(b=a.lastIndexOf("\\")),b<0?"":a.slice(0,b+1)},d.prototype.tryAppendExtension=function(a,b){return/(\.[a-z]*$)|([\?;].*)$/.test(a)?a:a+b},d.prototype.tryAppendLessExtension=function(a){return this.tryAppendExtension(a,".less")},d.prototype.supportsSync=function(){return!1},d.prototype.alwaysMakePathsAbsolute=function(){return!1},d.prototype.isPathAbsolute=function(a){return/^(?:[a-z-]+:|\/|\\|#)/i.test(a)},d.prototype.join=function(a,b){return a?a+b:b},d.prototype.pathDiff=function(a,b){var c,d,e,f,g=this.extractUrlParts(a),h=this.extractUrlParts(b),i="";if(g.hostPart!==h.hostPart)return"";for(d=Math.max(h.directories.length,g.directories.length),c=0;cparseInt(b[c])?-1:1;return 0},f.prototype.versionToString=function(a){for(var b="",c=0;c=0;h--){var i=g[h];if(i[f?"supportsSync":"supports"](a,b,c,e))return i}return null},e.prototype.addFileManager=function(a){this.fileManagers.push(a)},e.prototype.clearFileManagers=function(){this.fileManagers=[]},b.exports=e},{"../logger":39}],21:[function(a,b,c){var d=a("./function-registry"),e=a("../tree/anonymous"),f=a("../tree/keyword");d.addMultiple({"boolean":function(a){return a?f.True:f.False},"if":function(a,b,c){return a?b:c||new e}})},{"../tree/anonymous":50,"../tree/keyword":70,"./function-registry":27}],22:[function(a,b,c){function d(a,b,c){var d,f,g,h,i=b.alpha,j=c.alpha,k=[];g=j+i*(1-j);for(var l=0;l<3;l++)d=b.rgb[l]/255,f=c.rgb[l]/255,h=a(d,f),g&&(h=(j*f+i*(d-j*(d+f-h)))/g),k[l]=255*h;return new e(k,g)}var e=a("../tree/color"),f=a("./function-registry"),g={multiply:function(a,b){return a*b},screen:function(a,b){return a+b-a*b},overlay:function(a,b){return a*=2,a<=1?g.multiply(a,b):g.screen(a-1,b)},softlight:function(a,b){var c=1,d=a;return b>.5&&(d=1,c=a>.25?Math.sqrt(a):((16*a-12)*a+4)*a),a-(1-2*b)*d*(c-a)},hardlight:function(a,b){return g.overlay(b,a)},difference:function(a,b){return Math.abs(a-b)},exclusion:function(a,b){return a+b-2*a*b},average:function(a,b){return(a+b)/2},negation:function(a,b){return 1-Math.abs(a+b-1)}};for(var h in g)g.hasOwnProperty(h)&&(d[h]=d.bind(null,g[h]));f.addMultiple(d)},{"../tree/color":55,"./function-registry":27}],23:[function(a,b,c){function d(a){return Math.min(1,Math.max(0,a))}function e(a,b){var c=h.hsla(b.h,b.s,b.l,b.a);if(c)return c.value=a.value&&/^(rgb|hsl)/.test(a.value)?a.value:"rgb",c}function f(a){if(a instanceof i)return parseFloat(a.unit.is("%")?a.value/100:a.value);if("number"==typeof a)return a;throw{type:"Argument",message:"color functions take numbers as parameters"}}function g(a,b){return a instanceof i&&a.unit.is("%")?parseFloat(a.value*b/100):f(a)}var h,i=a("../tree/dimension"),j=a("../tree/color"),k=a("../tree/quoted"),l=a("../tree/anonymous"),m=a("./function-registry");h={rgb:function(a,b,c){var d=h.rgba(a,b,c,1);if(d)return d.value="rgb",d},rgba:function(a,b,c,d){try{if(a instanceof j)return d=b?f(b):a.alpha,new j(a.rgb,d,"rgba");var e=[a,b,c].map(function(a){return g(a,255)});return d=f(d),new j(e,d,"rgba")}catch(h){}},hsl:function(a,b,c){var d=h.hsla(a,b,c,1);if(d)return d.value="hsl",d},hsla:function(a,b,c,e){function g(a){return a=a<0?a+1:a>1?a-1:a,6*a<1?h+(i-h)*a*6:2*a<1?i:3*a<2?h+(i-h)*(2/3-a)*6:h}try{if(a instanceof j)return e=b?f(b):a.alpha,new j(a.rgb,e,"hsla");var h,i;a=f(a)%360/360,b=d(f(b)),c=d(f(c)),e=d(f(e)),i=c<=.5?c*(b+1):c+b-c*b,h=2*c-i;var k=[255*g(a+1/3),255*g(a),255*g(a-1/3)];return e=f(e),new j(k,e,"hsla")}catch(l){}},hsv:function(a,b,c){return h.hsva(a,b,c,1)},hsva:function(a,b,c,d){a=f(a)%360/360*360,b=f(b),c=f(c),d=f(d);var e,g;e=Math.floor(a/60%6),g=a/60-e;var i=[c,c*(1-b),c*(1-g*b),c*(1-(1-g)*b)],j=[[0,3,1],[2,0,1],[1,0,3],[1,2,0],[3,1,0],[0,1,2]];return h.rgba(255*i[j[e][0]],255*i[j[e][1]],255*i[j[e][2]],d)},hue:function(a){return new i(a.toHSL().h)},saturation:function(a){return new i(100*a.toHSL().s,"%")},lightness:function(a){return new i(100*a.toHSL().l,"%")},hsvhue:function(a){return new i(a.toHSV().h)},hsvsaturation:function(a){return new i(100*a.toHSV().s,"%")},hsvvalue:function(a){return new i(100*a.toHSV().v,"%")},red:function(a){return new i(a.rgb[0])},green:function(a){return new i(a.rgb[1])},blue:function(a){return new i(a.rgb[2])},alpha:function(a){return new i(a.toHSL().a)},luma:function(a){return new i(a.luma()*a.alpha*100,"%")},luminance:function(a){var b=.2126*a.rgb[0]/255+.7152*a.rgb[1]/255+.0722*a.rgb[2]/255;return new i(b*a.alpha*100,"%")},saturate:function(a,b,c){if(!a.rgb)return null;var f=a.toHSL();return f.s+="undefined"!=typeof c&&"relative"===c.value?f.s*b.value/100:b.value/100,f.s=d(f.s),e(a,f)},desaturate:function(a,b,c){var f=a.toHSL();return f.s-="undefined"!=typeof c&&"relative"===c.value?f.s*b.value/100:b.value/100,f.s=d(f.s),e(a,f)},lighten:function(a,b,c){var f=a.toHSL();return f.l+="undefined"!=typeof c&&"relative"===c.value?f.l*b.value/100:b.value/100,f.l=d(f.l),e(a,f)},darken:function(a,b,c){var f=a.toHSL();return f.l-="undefined"!=typeof c&&"relative"===c.value?f.l*b.value/100:b.value/100,f.l=d(f.l),e(a,f)},fadein:function(a,b,c){var f=a.toHSL();return f.a+="undefined"!=typeof c&&"relative"===c.value?f.a*b.value/100:b.value/100,f.a=d(f.a),e(a,f)},fadeout:function(a,b,c){var f=a.toHSL();return f.a-="undefined"!=typeof c&&"relative"===c.value?f.a*b.value/100:b.value/100,f.a=d(f.a),e(a,f)},fade:function(a,b){var c=a.toHSL();return c.a=b.value/100,c.a=d(c.a),e(a,c)},spin:function(a,b){var c=a.toHSL(),d=(c.h+b.value)%360;return c.h=d<0?360+d:d,e(a,c)},mix:function(a,b,c){a.toHSL&&b.toHSL||(console.log(b.type),console.dir(b)),c||(c=new i(50));var d=c.value/100,e=2*d-1,f=a.toHSL().a-b.toHSL().a,g=((e*f==-1?e:(e+f)/(1+e*f))+1)/2,h=1-g,k=[a.rgb[0]*g+b.rgb[0]*h,a.rgb[1]*g+b.rgb[1]*h,a.rgb[2]*g+b.rgb[2]*h],l=a.alpha*d+b.alpha*(1-d);return new j(k,l)},greyscale:function(a){return h.desaturate(a,new i(100))},contrast:function(a,b,c,d){if(!a.rgb)return null;if("undefined"==typeof c&&(c=h.rgba(255,255,255,1)),"undefined"==typeof b&&(b=h.rgba(0,0,0,1)),b.luma()>c.luma()){var e=c;c=b,b=e}return d="undefined"==typeof d?.43:f(d),a.luma()=v&&this.context.ieCompat!==!1?(h.warn("Skipped data-uri embedding of "+j+" because its size ("+u.length+" characters) exceeds IE8-safe "+v+" characters!"),g(this,f||a)):new d(new c('"'+u+'"',u,(!1),this.index,this.currentFileInfo),this.index,this.currentFileInfo)})}},{"../logger":39,"../tree/quoted":80,"../tree/url":85,"../utils":89,"./function-registry":27}],25:[function(a,b,c){var d=a("../tree/keyword"),e=a("./function-registry"),f={eval:function(){var a=this.value_,b=this.error_;if(b)throw b;if(null!=a)return a?d.True:d.False},value:function(a){this.value_=a},error:function(a){this.error_=a},reset:function(){this.value_=this.error_=null}};e.add("default",f.eval.bind(f)),b.exports=f},{"../tree/keyword":70,"./function-registry":27}],26:[function(a,b,c){var d=a("../tree/expression"),e=function(a,b,c,d){this.name=a.toLowerCase(),this.index=c,this.context=b,this.currentFileInfo=d,this.func=b.frames[0].functionRegistry.get(this.name)};e.prototype.isValid=function(){return Boolean(this.func)},e.prototype.call=function(a){return Array.isArray(a)&&(a=a.filter(function(a){return"Comment"!==a.type}).map(function(a){if("Expression"===a.type){ +var b=a.value.filter(function(a){return"Comment"!==a.type});return 1===b.length?b[0]:new d(b)}return a})),this.func.apply(this,a)},b.exports=e},{"../tree/expression":64}],27:[function(a,b,c){function d(a){return{_data:{},add:function(a,b){a=a.toLowerCase(),this._data.hasOwnProperty(a),this._data[a]=b},addMultiple:function(a){Object.keys(a).forEach(function(b){this.add(b,a[b])}.bind(this))},get:function(b){return this._data[b]||a&&a.get(b)},getLocalFunctions:function(){return this._data},inherit:function(){return d(this)},create:function(a){return d(a)}}}b.exports=d(null)},{}],28:[function(a,b,c){b.exports=function(b){var c={functionRegistry:a("./function-registry"),functionCaller:a("./function-caller")};return a("./boolean"),a("./default"),a("./color"),a("./color-blending"),a("./data-uri")(b),a("./list"),a("./math"),a("./number"),a("./string"),a("./svg")(b),a("./types"),c}},{"./boolean":21,"./color":23,"./color-blending":22,"./data-uri":24,"./default":25,"./function-caller":26,"./function-registry":27,"./list":29,"./math":31,"./number":32,"./string":33,"./svg":34,"./types":35}],29:[function(a,b,c){var d=a("../tree/dimension"),e=a("../tree/declaration"),f=a("../tree/ruleset"),g=a("../tree/selector"),h=a("../tree/element"),i=a("./function-registry"),j=function(a){var b=Array.isArray(a.value)?a.value:Array(a);return b};i.addMultiple({_SELF:function(a){return a},extract:function(a,b){return b=b.value-1,j(a)[b]},length:function(a){return new d(j(a).length)},each:function(a,b){var c,i,j=0,k=[];i=a.value?Array.isArray(a.value)?a.value:[a.value]:a.ruleset?a.ruleset.rules:Array.isArray(a)?a:[a];var l="@value",m="@key",n="@index";return b.params?(l=b.params[0]&&b.params[0].name,m=b.params[1]&&b.params[1].name,n=b.params[2]&&b.params[2].name,b=b.rules):b=b.ruleset,i.forEach(function(a){j+=1;var i,o;a instanceof e?(i="string"==typeof a.name?a.name:a.name[0].value,o=a.value):(i=new d(j),o=a),c=b.rules.slice(0),l&&c.push(new e(l,o,(!1),(!1),this.index,this.currentFileInfo)),n&&c.push(new e(n,new d(j),(!1),(!1),this.index,this.currentFileInfo)),m&&c.push(new e(m,i,(!1),(!1),this.index,this.currentFileInfo)),k.push(new f([new g([new h("","&")])],c,b.strictImports,b.visibilityInfo()))}),new f([new g([new h("","&")])],k,b.strictImports,b.visibilityInfo()).eval(this.context)}})},{"../tree/declaration":60,"../tree/dimension":62,"../tree/element":63,"../tree/ruleset":81,"../tree/selector":82,"./function-registry":27}],30:[function(a,b,c){var d=a("../tree/dimension"),e=function(){};e._math=function(a,b,c){if(!(c instanceof d))throw{type:"Argument",message:"argument must be a number"};return null==b?b=c.unit:c=c.unify(),new d(a(parseFloat(c.value)),b)},b.exports=e},{"../tree/dimension":62}],31:[function(a,b,c){var d=a("./function-registry"),e=a("./math-helper.js"),f={ceil:null,floor:null,sqrt:null,abs:null,tan:"",sin:"",cos:"",atan:"rad",asin:"rad",acos:"rad"};for(var g in f)f.hasOwnProperty(g)&&(f[g]=e._math.bind(null,Math[g],f[g]));f.round=function(a,b){var c="undefined"==typeof b?0:b.value;return e._math(function(a){return a.toFixed(c)},null,a)},d.addMultiple(f)},{"./function-registry":27,"./math-helper.js":30}],32:[function(a,b,c){var d=a("../tree/dimension"),e=a("../tree/anonymous"),f=a("./function-registry"),g=a("./math-helper.js"),h=function(a,b){switch(b=Array.prototype.slice.call(b),b.length){case 0:throw{type:"Argument",message:"one or more arguments required"}}var c,f,g,h,i,j,k,l,m=[],n={};for(c=0;ci.value)&&(m[f]=g);else{if(void 0!==k&&j!==k)throw{type:"Argument",message:"incompatible types"};n[j]=m.length,m.push(g)}else Array.isArray(b[c].value)&&Array.prototype.push.apply(b,Array.prototype.slice.call(b[c].value));return 1==m.length?m[0]:(b=m.map(function(a){return a.toCSS(this.context)}).join(this.context.compress?",":", "),new e((a?"min":"max")+"("+b+")"))};f.addMultiple({min:function(){return h(!0,arguments)},max:function(){return h(!1,arguments)},convert:function(a,b){return a.convertTo(b.value)},pi:function(){return new d(Math.PI)},mod:function(a,b){return new d(a.value%b.value,a.unit)},pow:function(a,b){if("number"==typeof a&&"number"==typeof b)a=new d(a),b=new d(b);else if(!(a instanceof d&&b instanceof d))throw{type:"Argument",message:"arguments must be numbers"};return new d(Math.pow(a.value,b.value),a.unit)},percentage:function(a){var b=g._math(function(a){return 100*a},"%",a);return b}})},{"../tree/anonymous":50,"../tree/dimension":62,"./function-registry":27,"./math-helper.js":30}],33:[function(a,b,c){var d=a("../tree/quoted"),e=a("../tree/anonymous"),f=a("../tree/javascript"),g=a("./function-registry");g.addMultiple({e:function(a){return new e(a instanceof f?a.evaluated:a.value)},escape:function(a){return new e(encodeURI(a.value).replace(/=/g,"%3D").replace(/:/g,"%3A").replace(/#/g,"%23").replace(/;/g,"%3B").replace(/\(/g,"%28").replace(/\)/g,"%29"))},replace:function(a,b,c,e){var f=a.value;return c="Quoted"===c.type?c.value:c.toCSS(),f=f.replace(new RegExp(b.value,e?e.value:""),c),new d(a.quote||"",f,a.escaped)},"%":function(a){for(var b=Array.prototype.slice.call(arguments,1),c=a.value,e=0;e",k=0;k";return j+="',j=encodeURIComponent(j),j="data:image/svg+xml,"+j,new g(new f("'"+j+"'",j,(!1),this.index,this.currentFileInfo),this.index,this.currentFileInfo)})}},{"../tree/color":55,"../tree/dimension":62,"../tree/expression":64,"../tree/quoted":80,"../tree/url":85,"./function-registry":27}],35:[function(a,b,c){var d=a("../tree/keyword"),e=a("../tree/detached-ruleset"),f=a("../tree/dimension"),g=a("../tree/color"),h=a("../tree/quoted"),i=a("../tree/anonymous"),j=a("../tree/url"),k=a("../tree/operation"),l=a("./function-registry"),m=function(a,b){return a instanceof b?d.True:d.False},n=function(a,b){if(void 0===b)throw{type:"Argument",message:"missing the required second argument to isunit."};if(b="string"==typeof b.value?b.value:b,"string"!=typeof b)throw{type:"Argument",message:"Second argument to isunit should be a unit or a string."};return a instanceof f&&a.unit.is(b)?d.True:d.False};l.addMultiple({isruleset:function(a){return m(a,e)},iscolor:function(a){return m(a,g)},isnumber:function(a){return m(a,f)},isstring:function(a){return m(a,h)},iskeyword:function(a){return m(a,d)},isurl:function(a){return m(a,j)},ispixel:function(a){return n(a,"px")},ispercentage:function(a){return n(a,"%")},isem:function(a){return n(a,"em")},isunit:n,unit:function(a,b){if(!(a instanceof f))throw{type:"Argument",message:"the first argument to unit must be a number"+(a instanceof k?". Have you forgotten parenthesis?":"")};return b=b?b instanceof d?b.value:b.toCSS():"",new f(a.value,b)},"get-unit":function(a){return new i(a.unit)}})},{"../tree/anonymous":50,"../tree/color":55,"../tree/detached-ruleset":61,"../tree/dimension":62,"../tree/keyword":70,"../tree/operation":77,"../tree/quoted":80,"../tree/url":85,"./function-registry":27}],36:[function(a,b,c){var d=a("./contexts"),e=a("./parser/parser"),f=a("./less-error"),g=a("./utils"),h=("undefined"==typeof Promise?a("promise"):Promise,a("./logger"));b.exports=function(a){var b=function(a,b,c){this.less=a,this.rootFilename=c.filename,this.paths=b.paths||[],this.contents={},this.contentsIgnoredChars={},this.mime=b.mime,this.error=null,this.context=b,this.queue=[],this.files={}};return b.prototype.push=function(b,c,i,j,k){var l=this,m=this.context.pluginManager.Loader;this.queue.push(b);var n=function(a,c,d){l.queue.splice(l.queue.indexOf(b),1);var e=d===l.rootFilename;j.optional&&a?(k(null,{rules:[]},!1,null),h.info("The file "+d+" was skipped because it was not found and the import was marked optional.")):(l.files[d]||j.inline||(l.files[d]={root:c,options:j}),a&&!l.error&&(l.error=a),k(a,c,e,d))},o={rewriteUrls:this.context.rewriteUrls,entryPath:i.entryPath,rootpath:i.rootpath,rootFilename:i.rootFilename},p=a.getFileManager(b,i.currentDirectory,this.context,a);if(!p)return void n({message:"Could not find a file-manager for "+b});var q,r=function(a){var b,c=a.filename,g=a.contents.replace(/^\uFEFF/,"");o.currentDirectory=p.getPath(c),o.rewriteUrls&&(o.rootpath=p.join(l.context.rootpath||"",p.pathDiff(o.currentDirectory,o.entryPath)),!p.isPathAbsolute(o.rootpath)&&p.alwaysMakePathsAbsolute()&&(o.rootpath=p.join(o.entryPath,o.rootpath))),o.filename=c;var h=new d.Parse(l.context);h.processImports=!1,l.contents[c]=g,(i.reference||j.reference)&&(o.reference=!0),j.isPlugin?(b=m.evalPlugin(g,h,l,j.pluginArgs,o),b instanceof f?n(b,null,c):n(null,b,c)):j.inline?n(null,g,c):!l.files[c]||l.files[c].options.multiple||j.multiple?new e(h,l,o).parse(g,function(a,b){n(a,b,c)}):n(null,l.files[c].root,c)},s=g.clone(this.context);c&&(s.ext=j.isPlugin?".js":".less"),q=j.isPlugin?m.loadPlugin(b,i.currentDirectory,s,a,p):p.loadFile(b,i.currentDirectory,s,a,function(a,b){a?n(a):r(b)}),q&&q.then(r,n)},b}},{"./contexts":13,"./less-error":38,"./logger":39,"./parser/parser":44,"./utils":89,promise:void 0}],37:[function(a,b,c){b.exports=function(b,c){var d,e,f,g,h,i,j={version:[3,8,1],data:a("./data"),tree:a("./tree"),Environment:h=a("./environment/environment"),AbstractFileManager:a("./environment/abstract-file-manager"),AbstractPluginLoader:a("./environment/abstract-plugin-loader"),environment:b=new h(b,c),visitors:a("./visitors"),Parser:a("./parser/parser"),functions:a("./functions")(b),contexts:a("./contexts"),SourceMapOutput:d=a("./source-map-output")(b),SourceMapBuilder:e=a("./source-map-builder")(d,b),ParseTree:f=a("./parse-tree")(e),ImportManager:g=a("./import-manager")(b),render:a("./render")(b,f,g),parse:a("./parse")(b,f,g),LessError:a("./less-error"),transformTree:a("./transform-tree"),utils:a("./utils"),PluginManager:a("./plugin-manager"),logger:a("./logger")},k=function(a){return function(){var b=Object.create(a.prototype);return a.apply(b,Array.prototype.slice.call(arguments,0)),b}},l=Object.create(j);for(var m in j.tree)if(i=j.tree[m],"function"==typeof i)l[m.toLowerCase()]=k(i);else{l[m]=Object.create(null);for(var n in i)l[m][n.toLowerCase()]=k(i[n])}return l}},{"./contexts":13,"./data":15,"./environment/abstract-file-manager":18,"./environment/abstract-plugin-loader":19,"./environment/environment":20,"./functions":28,"./import-manager":36,"./less-error":38,"./logger":39,"./parse":41,"./parse-tree":40,"./parser/parser":44,"./plugin-manager":45,"./render":46,"./source-map-builder":47,"./source-map-output":48,"./transform-tree":49,"./tree":67,"./utils":89,"./visitors":93}],38:[function(a,b,c){var d=a("./utils"),e=b.exports=function(a,b,c){Error.call(this);var e=a.filename||c;if(this.message=a.message,this.stack=a.stack,b&&e){var f=b.contents[e],g=d.getLocation(a.index,f),h=g.line,i=g.column,j=a.call&&d.getLocation(a.call,f).line,k=f?f.split("\n"):"";if(this.type=a.type||"Syntax",this.filename=e,this.index=a.index,this.line="number"==typeof h?h+1:null,this.column=i,!this.line&&this.stack){var l=this.stack.match(/(|Function):(\d+):(\d+)/);l&&(l[2]&&(this.line=parseInt(l[2])-2),l[3]&&(this.column=parseInt(l[3])))}this.callLine=j+1,this.callExtract=k[j],this.extract=[k[this.line-2],k[this.line-1],k[this.line]]}};if("undefined"==typeof Object.create){var f=function(){};f.prototype=Error.prototype,e.prototype=new f}else e.prototype=Object.create(Error.prototype);e.prototype.constructor=e,e.prototype.toString=function(a){a=a||{};var b="",c=this.extract||[],d=[],e=function(a){return a};if(a.stylize){var f=typeof a.stylize;if("function"!==f)throw Error("options.stylize should be a function, got a "+f+"!");e=a.stylize}if(null!==this.line){if("string"==typeof c[0]&&d.push(e(this.line-1+" "+c[0],"grey")),"string"==typeof c[1]){var g=this.line+" ";c[1]&&(g+=c[1].slice(0,this.column)+e(e(e(c[1].substr(this.column,1),"bold")+c[1].slice(this.column+1),"red"),"inverse")),d.push(g)}"string"==typeof c[2]&&d.push(e(this.line+1+" "+c[2],"grey")),d=d.join("\n")+e("","reset")+"\n"}return b+=e(this.type+"Error: "+this.message,"red"),this.filename&&(b+=e(" in ","red")+this.filename),this.line&&(b+=e(" on line "+this.line+", column "+(this.column+1)+":","grey")),b+="\n"+d,this.callLine&&(b+=e("from ","red")+(this.filename||"")+"/n",b+=e(this.callLine,"grey")+" "+this.callExtract+"/n"),b}},{"./utils":89}],39:[function(a,b,c){b.exports={error:function(a){this._fireEvent("error",a)},warn:function(a){this._fireEvent("warn",a)},info:function(a){this._fireEvent("info",a)},debug:function(a){this._fireEvent("debug",a)},addListener:function(a){this._listeners.push(a)},removeListener:function(a){for(var b=0;b=97&&j<=122||j<34))switch(j){case 40:o++,e=h;continue;case 41:if(--o<0)return b("missing opening `(`",h);continue;case 59:o||c();continue;case 123:n++,d=h;continue;case 125:if(--n<0)return b("missing opening `{`",h);n||o||c();continue;case 92:if(h96)){if(k==j){l=1;break}if(92==k){if(h==m-1)return b("unescaped `\\`",h);h++}}if(l)continue;return b("unmatched `"+String.fromCharCode(j)+"`",i);case 47:if(o||h==m-1)continue;if(k=a.charCodeAt(h+1),47==k)for(h+=2;hd&&g>f?b("missing closing `}` or `*/`",d):b("missing closing `}`",d):0!==o?b("missing closing `)`",e):(c(!0),p)}},{}],43:[function(a,b,c){var d=a("./chunker");b.exports=function(){function a(d){for(var e,f,j,p=k.i,q=c,s=k.i-i,t=k.i+h.length-s,u=k.i+=d,v=b;k.i=0){j={index:k.i,text:v.substr(k.i,x+2-k.i),isLineComment:!1},k.i+=j.text.length-1,k.commentStore.push(j);continue}}break}if(e!==l&&e!==n&&e!==m&&e!==o)break}if(h=h.slice(d+k.i-u+s),i=k.i,!h.length){if(ce||k.i===e&&a&&!f)&&(e=k.i,f=a);var b=j.pop();h=b.current,i=k.i=b.i,c=b.j},k.forget=function(){j.pop()},k.isWhitespace=function(a){var c=k.i+(a||0),d=b.charCodeAt(c);return d===l||d===o||d===m||d===n},k.$re=function(b){k.i>i&&(h=h.slice(k.i-i),i=k.i);var c=b.exec(h);return c?(a(c[0].length),"string"==typeof c?c:1===c.length?c[0]:c):null},k.$char=function(c){return b.charAt(k.i)!==c?null:(a(1),c)},k.$str=function(c){for(var d=c.length,e=0;el&&(p=!1)}q=r}while(p);return f?f:null},k.autoCommentAbsorb=!0,k.commentStore=[],k.finished=!1,k.peek=function(a){if("string"==typeof a){for(var c=0;cs||a=b.length;return k.i=b.length-1,furthestChar:b[k.i]}},k}},{"./chunker":42}],44:[function(a,b,c){var d=a("../less-error"),e=a("../tree"),f=a("../visitors"),g=a("./parser-input"),h=a("../utils"),i=a("../functions/function-registry"),j=function k(a,b,c){function j(a,e){throw new d({index:q.i,filename:c.filename,type:e||"Syntax",message:a},b)}function l(a,b){var c=a instanceof Function?a.call(p):q.$re(a);return c?c:void j(b||("string"==typeof a?"expected '"+a+"' got '"+q.currentChar()+"'":"unexpected token"))}function m(a,b){return q.$char(a)?a:void j(b||"expected '"+a+"' got '"+q.currentChar()+"'")}function n(a){var b=c.filename;return{lineNumber:h.getLocation(a,q.getInput()).line+1,fileName:b}}function o(a,c,e,f,g){var h,i=[],j=q;try{j.start(a,!1,function(a,b){g({message:a,index:b+e})});for(var k,l,m=0;k=c[m];m++)l=j.i,h=p[k](),h?(h._index=l+e,h._fileInfo=f,i.push(h)):i.push(null);var n=j.end();n.isFinished?g(null,i):g(!0,null)}catch(o){throw new d({index:o.index+e,message:o.message},b,f.filename)}}var p,q=g();return{parserInput:q,imports:b,fileInfo:c,parseNode:o,parse:function(g,h,j){var l,m,n,o,p=null,r="";if(m=j&&j.globalVars?k.serializeVars(j.globalVars)+"\n":"",n=j&&j.modifyVars?"\n"+k.serializeVars(j.modifyVars):"",a.pluginManager)for(var s=a.pluginManager.getPreProcessors(),t=0;t")}return a},args:function(a){var b,c,d,f,g,h,i,k=p.entities,l={args:null,variadic:!1},m=[],n=[],o=[],r=!0;for(q.save();;){if(a)h=p.detachedRuleset()||p.expression();else{if(q.commentStore.length=0,q.$str("...")){l.variadic=!0,q.$char(";")&&!b&&(b=!0),(b?n:o).push({variadic:!0});break}h=k.variable()||k.property()||k.literal()||k.keyword()||this.call(!0)}if(!h||!r)break;f=null,h.throwAwayComments&&h.throwAwayComments(),g=h;var s=null;if(a?h.value&&1==h.value.length&&(s=h.value[0]):s=h,s&&(s instanceof e.Variable||s instanceof e.Property))if(q.$char(":")){if(m.length>0&&(b&&j("Cannot mix ; and , as delimiter types"),c=!0),g=p.detachedRuleset()||p.expression(),!g){if(!a)return q.restore(),l.args=[],l;j("could not understand value for named argument")}f=d=s.name}else if(q.$str("...")){if(!a){l.variadic=!0,q.$char(";")&&!b&&(b=!0),(b?n:o).push({name:h.name,variadic:!0});break}i=!0}else a||(d=f=s.name,g=null);g&&m.push(g),o.push({name:f,value:g,expand:i}),q.$char(",")?r=!0:(r=";"===q.$char(";"),(r||b)&&(c&&j("Cannot mix ; and , as delimiter types"),b=!0,m.length>1&&(g=new e.Value(m)),n.push({name:d,value:g,expand:i}),d=null,m=[],c=!1))}return q.forget(),l.args=b?n:o,l},definition:function(){var a,b,c,d,f=[],g=!1;if(!("."!==q.currentChar()&&"#"!==q.currentChar()||q.peek(/^[^{]*\}/)))if(q.save(),b=q.$re(/^([#.](?:[\w-]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+)\s*\(/)){a=b[1];var h=this.args(!1);if(f=h.args,g=h.variadic,!q.$char(")"))return void q.restore("Missing closing ')'");if(q.commentStore.length=0,q.$str("when")&&(d=l(p.conditions,"expected condition")),c=p.block())return q.forget(),new e.mixin.Definition(a,f,c,d,g);q.restore()}else q.forget()},ruleLookups:function(){var a,b,c=[];if("["===q.currentChar()){for(;;){if(q.save(),b=null,a=this.lookupValue(),!a&&""!==a){q.restore();break}c.push(a),q.forget()}return c.length>0?c:void 0}},lookupValue:function(){if(q.save(),!q.$char("["))return void q.restore();var a=q.$re(/^(?:[@$]{0,2})[_a-zA-Z0-9-]*/);return q.$char("]")&&(a||""===a)?(q.forget(),a):void q.restore()}},entity:function(){var a=this.entities;return this.comment()||a.literal()||a.variable()||a.url()||a.property()||a.call()||a.keyword()||this.mixin.call(!0)||a.javascript()},end:function(){return q.$char(";")||q.peek("}")},ieAlpha:function(){var a;if(q.$re(/^opacity=/i))return a=q.$re(/^\d+/),a||(a=l(p.entities.variable,"Could not parse alpha"),a="@{"+a.name.slice(1)+"}"),m(")"),new e.Quoted("","alpha(opacity="+a+")")},element:function(){var a,b,d,f=q.i;if(b=this.combinator(),a=q.$re(/^(?:\d+\.\d+|\d+)%/)||q.$re(/^(?:[.#]?|:*)(?:[\w-]|[^\x00-\x9f]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+/)||q.$char("*")||q.$char("&")||this.attribute()||q.$re(/^\([^&()@]+\)/)||q.$re(/^[\.#:](?=@)/)||this.entities.variableCurly(), +a||(q.save(),q.$char("(")?(d=this.selector(!1))&&q.$char(")")?(a=new e.Paren(d),q.forget()):q.restore("Missing closing ')'"):q.forget()),a)return new e.Element(b,a,a instanceof e.Variable,f,c)},combinator:function(){var a=q.currentChar();if("/"===a){q.save();var b=q.$re(/^\/[a-z]+\//i);if(b)return q.forget(),new e.Combinator(b);q.restore()}if(">"===a||"+"===a||"~"===a||"|"===a||"^"===a){for(q.i++,"^"===a&&"^"===q.currentChar()&&(a="^^",q.i++);q.isWhitespace();)q.i++;return new e.Combinator(a)}return new e.Combinator(q.isWhitespace(-1)?" ":null)},selector:function(a){var b,d,f,g,h,i,k,m=q.i;for(a=a!==!1;(a&&(d=this.extend())||a&&(i=q.$str("when"))||(g=this.element()))&&(i?k=l(this.conditions,"expected condition"):k?j("CSS guard can only be used at the end of selector"):d?h=h?h.concat(d):d:(h&&j("Extend can only be used at the end of selector"),f=q.currentChar(),b?b.push(g):b=[g],g=null),"{"!==f&&"}"!==f&&";"!==f&&","!==f&&")"!==f););return b?new e.Selector(b,h,k,m,c):void(h&&j("Extend must be used to extend a selector, it cannot be used on its own"))},selectors:function(){for(var a,b;;){if(a=this.selector(),!a)break;if(b?b.push(a):b=[a],q.commentStore.length=0,a.condition&&b.length>1&&j("Guards are only currently allowed on a single selector."),!q.$char(","))break;a.condition&&j("Guards are only currently allowed on a single selector."),q.commentStore.length=0}return b},attribute:function(){if(q.$char("[")){var a,b,c,d=this.entities;return(a=d.variableCurly())||(a=l(/^(?:[_A-Za-z0-9-\*]*\|)?(?:[_A-Za-z0-9-]|\\.)+/)),c=q.$re(/^[|~*$^]?=/),c&&(b=d.quoted()||q.$re(/^[0-9]+%/)||q.$re(/^[\w-]+/)||d.variableCurly()),m("]"),new e.Attribute(a,c,b)}},block:function(){var a;if(q.$char("{")&&(a=this.primary())&&q.$char("}"))return a},blockRuleset:function(){var a=this.block();return a&&(a=new e.Ruleset(null,a)),a},detachedRuleset:function(){var a,b,c;if(q.save(),q.$re(/^[.#]\(/)&&(a=this.mixin.args(!1),b=a.args,c=a.variadic,!q.$char(")")))return void q.restore();var d=this.blockRuleset();return d?(q.forget(),b?new e.mixin.Definition(null,b,d,null,c):new e.DetachedRuleset(d)):void q.restore()},ruleset:function(){var b,c,d;if(q.save(),a.dumpLineNumbers&&(d=n(q.i)),b=this.selectors(),b&&(c=this.block())){q.forget();var f=new e.Ruleset(b,c,a.strictImports);return a.dumpLineNumbers&&(f.debugInfo=d),f}q.restore()},declaration:function(){var a,b,d,f,g,h,i=q.i,j=q.currentChar();if("."!==j&&"#"!==j&&"&"!==j&&":"!==j)if(q.save(),a=this.variable()||this.ruleProperty()){if(h="string"==typeof a,h&&(b=this.detachedRuleset(),b&&(d=!0)),q.commentStore.length=0,!b){if(g=!h&&a.length>1&&a.pop().value,b=a[0].value&&"--"===a[0].value.slice(0,2)?this.permissiveValue():this.anonymousValue())return q.forget(),new e.Declaration(a,b,(!1),g,i,c);b||(b=this.value()),b?f=this.important():h&&(b=this.permissiveValue())}if(b&&(this.end()||d))return q.forget(),new e.Declaration(a,b,f,g,i,c);q.restore()}else q.restore()},anonymousValue:function(){var a=q.i,b=q.$re(/^([^.#@\$+\/'"*`(;{}-]*);/);if(b)return new e.Anonymous(b[1],a)},permissiveValue:function(a){function b(){var a=q.currentChar();return"string"==typeof i?a===i:i.test(a)}var d,f,g,h,i=a||";",k=q.i,l=[];if(!b()){h=[];do f=this.comment(),f?h.push(f):(f=this.entity(),f&&h.push(f));while(f);if(g=b(),h.length>0){if(h=new e.Expression(h),g)return h;l.push(h)," "===q.prevChar()&&l.push(new e.Anonymous(" ",k))}if(q.save(),h=q.$parseUntil(i)){if("string"==typeof h&&j("Expected '"+h+"'","Parse"),1===h.length&&" "===h[0])return q.forget(),new e.Anonymous("",k);var m;for(d=0;d0)return new e.Expression(f)},mediaFeatures:function(){var a,b=this.entities,c=[];do if(a=this.mediaFeature()){if(c.push(a),!q.$char(","))break}else if(a=b.variable()||b.mixinLookup(),a&&(c.push(a),!q.$char(",")))break;while(a);return c.length>0?c:null},media:function(){var b,d,f,g,h=q.i;return a.dumpLineNumbers&&(g=n(h)),q.save(),q.$str("@media")?(b=this.mediaFeatures(),d=this.block(),d||j("media definitions require block statements after any features"),q.forget(),f=new e.Media(d,b,h,c),a.dumpLineNumbers&&(f.debugInfo=g),f):void q.restore()},plugin:function(){var a,b,d,f=q.i,g=q.$re(/^@plugin?\s+/);if(g){if(b=this.pluginArgs(),d=b?{pluginArgs:b,isPlugin:!0}:{isPlugin:!0},a=this.entities.quoted()||this.entities.url())return q.$char(";")||(q.i=f,j("missing semi-colon on @plugin")),new e.Import(a,null,d,f,c);q.i=f,j("malformed @plugin statement")}},pluginArgs:function(){if(q.save(),!q.$char("("))return q.restore(),null;var a=q.$re(/^\s*([^\);]+)\)\s*/);return a[1]?(q.forget(),a[1].trim()):(q.restore(),null)},atrule:function(){var b,d,f,g,h,i,k,l=q.i,m=!0,o=!0;if("@"===q.currentChar()){if(d=this["import"]()||this.plugin()||this.media())return d;if(q.save(),b=q.$re(/^@[a-z-]+/)){switch(g=b,"-"==b.charAt(1)&&b.indexOf("-",2)>0&&(g="@"+b.slice(b.indexOf("-",2)+1)),g){case"@charset":h=!0,m=!1;break;case"@namespace":i=!0,m=!1;break;case"@keyframes":case"@counter-style":h=!0;break;case"@document":case"@supports":k=!0,o=!1;break;default:k=!0}return q.commentStore.length=0,h?(d=this.entity(),d||j("expected "+b+" identifier")):i?(d=this.expression(),d||j("expected "+b+" expression")):k&&(d=this.permissiveValue(/^[{;]/),m="{"===q.currentChar(),d?d.value||(d=null):m||";"===q.currentChar()||j(b+" rule is missing block or ending semi-colon")),m&&(f=this.blockRuleset()),f||!m&&d&&q.$char(";")?(q.forget(),new e.AtRule(b,d,f,l,c,a.dumpLineNumbers?n(l):null,o)):void q.restore("at-rule options not recognised")}}},value:function(){var a,b=[],c=q.i;do if(a=this.expression(),a&&(b.push(a),!q.$char(",")))break;while(a);if(b.length>0)return new e.Value(b,c)},important:function(){if("!"===q.currentChar())return q.$re(/^! *important/)},sub:function(){var a,b;return q.save(),q.$char("(")?(a=this.addition(),a&&q.$char(")")?(q.forget(),b=new e.Expression([a]),b.parens=!0,b):void q.restore("Expected ')'")):void q.restore()},multiplication:function(){var a,b,c,d,f;if(a=this.operand()){for(f=q.isWhitespace(-1);;){if(q.peek(/^\/[*\/]/))break;if(q.save(),c=q.$char("/")||q.$char("*")||q.$str("./"),!c){q.forget();break}if(b=this.operand(),!b){q.restore();break}q.forget(),a.parensInOp=!0,b.parensInOp=!0,d=new e.Operation(c,[d||a,b],f),f=q.isWhitespace(-1)}return d||a}},addition:function(){var a,b,c,d,f;if(a=this.multiplication()){for(f=q.isWhitespace(-1);;){if(c=q.$re(/^[-+]\s+/)||!f&&(q.$char("+")||q.$char("-")),!c)break;if(b=this.multiplication(),!b)break;a.parensInOp=!0,b.parensInOp=!0,d=new e.Operation(c,[d||a,b],f),f=q.isWhitespace(-1)}return d||a}},conditions:function(){var a,b,c,d=q.i;if(a=this.condition(!0)){for(;;){if(!q.peek(/^,\s*(not\s*)?\(/)||!q.$char(","))break;if(b=this.condition(!0),!b)break;c=new e.Condition("or",c||a,b,d)}return c||a}},condition:function(a){function b(){return q.$str("or")}var c,d,f;if(c=this.conditionAnd(a)){if(d=b()){if(f=this.condition(a),!f)return;c=new e.Condition(d,c,f)}return c}},conditionAnd:function(a){function b(){var b=h.negatedCondition(a)||h.parenthesisCondition(a);return b||a?b:h.atomicCondition(a)}function c(){return q.$str("and")}var d,f,g,h=this;if(d=b()){if(f=c()){if(g=this.conditionAnd(a),!g)return;d=new e.Condition(f,d,g)}return d}},negatedCondition:function(a){if(q.$str("not")){var b=this.parenthesisCondition(a);return b&&(b.negate=!b.negate),b}},parenthesisCondition:function(a){function b(b){var c;return q.save(),(c=b.condition(a))&&q.$char(")")?(q.forget(),c):void q.restore()}var c;return q.save(),q.$str("(")?(c=b(this))?(q.forget(),c):(c=this.atomicCondition(a))?q.$char(")")?(q.forget(),c):void q.restore("expected ')' got '"+q.currentChar()+"'"):void q.restore():void q.restore()},atomicCondition:function(a){function b(){return this.addition()||h.keyword()||h.quoted()||h.mixinLookup()}var c,d,f,g,h=this.entities,i=q.i;if(b=b.bind(this),c=b())return q.$char(">")?g=q.$char("=")?">=":">":q.$char("<")?g=q.$char("=")?"<=":"<":q.$char("=")&&(g=q.$char(">")?"=>":q.$char("<")?"=<":"="),g?(d=b(),d?f=new e.Condition(g,c,d,i,(!1)):j("expected expression")):f=new e.Condition("=",c,new e.Keyword("true"),i,(!1)),f},operand:function(){var a,b=this.entities;q.peek(/^-[@\$\(]/)&&(a=q.$char("-"));var c=this.sub()||b.dimension()||b.color()||b.variable()||b.property()||b.call()||b.quoted(!0)||b.colorKeyword()||b.mixinLookup();return a&&(c.parensInOp=!0,c=new e.Negative(c)),c},expression:function(){var a,b,c=[],d=q.i;do a=this.comment(),a?c.push(a):(a=this.addition()||this.entity(),a&&(c.push(a),q.peek(/^\/[\/*]/)||(b=q.$char("/"),b&&c.push(new e.Anonymous(b,d)))));while(a);if(c.length>0)return new e.Expression(c)},property:function(){var a=q.$re(/^(\*?-?[_a-zA-Z0-9-]+)\s*:/);if(a)return a[1]},ruleProperty:function(){function a(a){var b=q.i,c=q.$re(a);if(c)return g.push(b),f.push(c[1])}var b,d,f=[],g=[];q.save();var h=q.$re(/^([_a-zA-Z0-9-]+)\s*:/);if(h)return f=[new e.Keyword(h[1])],q.forget(),f;for(a(/^(\*?)/);;)if(!a(/^((?:[\w-]+)|(?:[@\$]\{[\w-]+\}))/))break;if(f.length>1&&a(/^((?:\+_|\+)?)\s*:/)){for(q.forget(),""===f[0]&&(f.shift(),g.shift()),d=0;d=b);c++);this.preProcessors.splice(c,0,{preProcessor:a,priority:b})},e.prototype.addPostProcessor=function(a,b){var c;for(c=0;c=b);c++);this.postProcessors.splice(c,0,{postProcessor:a,priority:b})},e.prototype.addFileManager=function(a){this.fileManagers.push(a)},e.prototype.getPreProcessors=function(){for(var a=[],b=0;b0){var d,e=JSON.stringify(this._sourceMapGenerator.toJSON());this.sourceMapURL?d=this.sourceMapURL:this._sourceMapFilename&&(d=this._sourceMapFilename),this.sourceMapURL=d,this.sourceMap=e}return this._css.join("")},b}},{}],49:[function(a,b,c){var d=a("./contexts"),e=a("./visitors"),f=a("./tree");b.exports=function(a,b){b=b||{};var c,g=b.variables,h=new d.Eval(b);"object"!=typeof g||Array.isArray(g)||(g=Object.keys(g).map(function(a){var b=g[a];return b instanceof f.Value||(b instanceof f.Expression||(b=new f.Expression([b])),b=new f.Value([b])),new f.Declaration("@"+a,b,(!1),null,0)}),h.frames=[new f.Ruleset(null,g)]);var i,j,k=[new e.JoinSelectorVisitor,new e.MarkVisibleSelectorsVisitor((!0)),new e.ExtendVisitor,new e.ToCSSVisitor({compress:Boolean(b.compress)})],l=[];if(b.pluginManager){j=b.pluginManager.visitor();for(var m=0;m<2;m++)for(j.first();i=j.get();)i.isPreEvalVisitor?0!==m&&l.indexOf(i)!==-1||(l.push(i),i.run(a)):0!==m&&k.indexOf(i)!==-1||(i.isPreVisitor?k.unshift(i):k.push(i))}c=a.eval(h);for(var m=0;m=6?(this.rgb=[],a.match(/.{2}/g).map(function(a,b){b<3?d.rgb.push(parseInt(a,16)):d.alpha=parseInt(a,16)/255})):(this.rgb=[],a.split("").map(function(a,b){b<3?d.rgb.push(parseInt(a+a,16)):d.alpha=parseInt(a+a,16)/255})),this.alpha=this.alpha||("number"==typeof b?b:1),"undefined"!=typeof c&&(this.value=c)};h.prototype=new f,h.prototype.type="Color",h.prototype.luma=function(){var a=this.rgb[0]/255,b=this.rgb[1]/255,c=this.rgb[2]/255;return a=a<=.03928?a/12.92:Math.pow((a+.055)/1.055,2.4),b=b<=.03928?b/12.92:Math.pow((b+.055)/1.055,2.4),c=c<=.03928?c/12.92:Math.pow((c+.055)/1.055,2.4),.2126*a+.7152*b+.0722*c},h.prototype.genCSS=function(a,b){b.add(this.toCSS(a))},h.prototype.toCSS=function(a,b){var c,e,f,g=a&&a.compress&&!b,h=[];if(e=this.fround(a,this.alpha),this.value)if(0===this.value.indexOf("rgb"))e<1&&(f="rgba");else{if(0!==this.value.indexOf("hsl"))return this.value;f=e<1?"hsla":"hsl"}else e<1&&(f="rgba");switch(f){case"rgba":h=this.rgb.map(function(a){return d(Math.round(a),255)}).concat(d(e,1));break;case"hsla":h.push(d(e,1));case"hsl":c=this.toHSL(),h=[this.fround(a,c.h),this.fround(a,100*c.s)+"%",this.fround(a,100*c.l)+"%"].concat(h)}if(f)return f+"("+h.join(","+(g?"":" "))+")";if(c=this.toRGB(),g){var i=c.split("");i[1]===i[2]&&i[3]===i[4]&&i[5]===i[6]&&(c="#"+i[1]+i[3]+i[5])}return c},h.prototype.operate=function(a,b,c){for(var d=new Array(3),e=this.alpha*(1-c.alpha)+c.alpha,f=0;f<3;f++)d[f]=this._operate(a,b,this.rgb[f],c.rgb[f]);return new h(d,e)},h.prototype.toRGB=function(){return e(this.rgb)},h.prototype.toHSL=function(){var a,b,c=this.rgb[0]/255,d=this.rgb[1]/255,e=this.rgb[2]/255,f=this.alpha,g=Math.max(c,d,e),h=Math.min(c,d,e),i=(g+h)/2,j=g-h;if(g===h)a=b=0;else{switch(b=i>.5?j/(2-g-h):j/(g+h),g){case c:a=(d-e)/j+(d="===a||"=<"===a||"<="===a;case 1:return">"===a||">="===a;default:return!1}}}(this.op,this.lvalue.eval(a),this.rvalue.eval(a));return this.negate?!b:b},b.exports=e},{"./node":76}],59:[function(a,b,c){var d=function(a,b,c){var e="";if(a.dumpLineNumbers&&!a.compress)switch(a.dumpLineNumbers){case"comments":e=d.asComment(b);break;case"mediaquery":e=d.asMediaQuery(b);break;case"all":e=d.asComment(b)+(c||"")+d.asMediaQuery(b)}return e};d.asComment=function(a){return"/* line "+a.debugInfo.lineNumber+", "+a.debugInfo.fileName+" */\n"},d.asMediaQuery=function(a){var b=a.debugInfo.fileName;return/^[a-z]+:\/\//i.test(b)||(b="file://"+b),"@media -sass-debug-info{filename{font-family:"+b.replace(/([.:\/\\])/g,function(a){return"\\"==a&&(a="/"),"\\"+a})+"}line{font-family:\\00003"+a.debugInfo.lineNumber+"}}\n"},b.exports=d},{}],60:[function(a,b,c){function d(a,b){var c,d="",e=b.length,f={add:function(a){d+=a}};for(c=0;c-1e-6&&(d=c.toFixed(20).replace(/0+$/,"")),a&&a.compress){if(0===c&&this.unit.isLength())return void b.add(d);c>0&&c<1&&(d=d.substr(1))}b.add(d),this.unit.genCSS(a,b)},h.prototype.operate=function(a,b,c){var d=this._operate(a,b,this.value,c.value),e=this.unit.clone();if("+"===b||"-"===b)if(0===e.numerator.length&&0===e.denominator.length)e=c.unit.clone(), +this.unit.backupUnit&&(e.backupUnit=this.unit.backupUnit);else if(0===c.unit.numerator.length&&0===e.denominator.length);else{if(c=c.convertTo(this.unit.usedUnits()),a.strictUnits&&c.unit.toString()!==e.toString())throw new Error("Incompatible units. Change the units or use the unit function. Bad units: '"+e.toString()+"' and '"+c.unit.toString()+"'.");d=this._operate(a,b,this.value,c.value)}else"*"===b?(e.numerator=e.numerator.concat(c.unit.numerator).sort(),e.denominator=e.denominator.concat(c.unit.denominator).sort(),e.cancel()):"/"===b&&(e.numerator=e.numerator.concat(c.unit.denominator).sort(),e.denominator=e.denominator.concat(c.unit.numerator).sort(),e.cancel());return new h(d,e)},h.prototype.compare=function(a){var b,c;if(a instanceof h){if(this.unit.isEmpty()||a.unit.isEmpty())b=this,c=a;else if(b=this.unify(),c=a.unify(),0!==b.unit.compare(c.unit))return;return d.numericCompare(b.value,c.value)}},h.prototype.unify=function(){return this.convertTo({length:"px",duration:"s",angle:"rad"})},h.prototype.convertTo=function(a){var b,c,d,f,g,i=this.value,j=this.unit.clone(),k={};if("string"==typeof a){for(b in e)e[b].hasOwnProperty(a)&&(k={},k[b]=a);a=k}g=function(a,b){return d.hasOwnProperty(a)?(b?i/=d[a]/d[f]:i*=d[a]/d[f],f):a};for(c in a)a.hasOwnProperty(c)&&(f=a[c],d=e[c],j.map(g));return j.cancel(),new h(i,j)},b.exports=h},{"../data/unit-conversions":16,"./color":55,"./node":76,"./unit":84}],63:[function(a,b,c){var d=a("./node"),e=a("./paren"),f=a("./combinator"),g=function(a,b,c,d,e,g){this.combinator=a instanceof f?a:new f(a),this.value="string"==typeof b?b.trim():b?b:"",this.isVariable=c,this._index=d,this._fileInfo=e,this.copyVisibilityInfo(g),this.setParent(this.combinator,this)};g.prototype=new d,g.prototype.type="Element",g.prototype.accept=function(a){var b=this.value;this.combinator=a.visit(this.combinator),"object"==typeof b&&(this.value=a.visit(b))},g.prototype.eval=function(a){return new g(this.combinator,this.value.eval?this.value.eval(a):this.value,this.isVariable,this.getIndex(),this.fileInfo(),this.visibilityInfo())},g.prototype.clone=function(){return new g(this.combinator,this.value,this.isVariable,this.getIndex(),this.fileInfo(),this.visibilityInfo())},g.prototype.genCSS=function(a,b){b.add(this.toCSS(a),this.fileInfo(),this.getIndex())},g.prototype.toCSS=function(a){a=a||{};var b=this.value,c=a.firstSelector;return b instanceof e&&(a.firstSelector=!0),b=b.toCSS?b.toCSS(a):b,a.firstSelector=c,""===b&&"&"===this.combinator.value.charAt(0)?"":this.combinator.toCSS(a)+b},b.exports=g},{"./combinator":56,"./node":76,"./paren":78}],64:[function(a,b,c){var d=a("./node"),e=a("./paren"),f=a("./comment"),g=a("./dimension"),h=a("../constants").Math,i=function(a,b){if(this.value=a,this.noSpacing=b,!a)throw new Error("Expression requires an array parameter")};i.prototype=new d,i.prototype.type="Expression",i.prototype.accept=function(a){this.value=a.visitArray(this.value)},i.prototype.eval=function(a){var b,c=a.isMathOn(),d=this.parens&&(a.math!==h.STRICT_LEGACY||!this.parensInOp),f=!1;return d&&a.inParenthesis(),this.value.length>1?b=new i(this.value.map(function(b){return b.eval?b.eval(a):b}),this.noSpacing):1===this.value.length?(!this.value[0].parens||this.value[0].parensInOp||a.inCalc||(f=!0),b=this.value[0].eval(a)):b=this,d&&a.outOfParenthesis(),!this.parens||!this.parensInOp||c||f||b instanceof g||(b=new e(b)),b},i.prototype.genCSS=function(a,b){for(var c=0;c0&&c.length&&""===c[0].combinator.value&&(c[0].combinator.value=" "),d=d.concat(a[b].elements);this.selfSelectors=[new e(d)],this.selfSelectors[0].copyVisibilityInfo(this.visibilityInfo())},b.exports=f},{"./node":76,"./selector":82}],66:[function(a,b,c){var d=a("./node"),e=a("./media"),f=a("./url"),g=a("./quoted"),h=a("./ruleset"),i=a("./anonymous"),j=a("../utils"),k=a("../less-error"),l=function(a,b,c,d,e,f){if(this.options=c,this._index=d,this._fileInfo=e,this.path=a,this.features=b,this.allowRoot=!0,void 0!==this.options.less||this.options.inline)this.css=!this.options.less||this.options.inline;else{var g=this.getPath();g&&/[#\.\&\?]css([\?;].*)?$/.test(g)&&(this.css=!0)}this.copyVisibilityInfo(f),this.setParent(this.features,this),this.setParent(this.path,this)};l.prototype=new d,l.prototype.type="Import",l.prototype.accept=function(a){this.features&&(this.features=a.visit(this.features)),this.path=a.visit(this.path),this.options.isPlugin||this.options.inline||!this.root||(this.root=a.visit(this.root))},l.prototype.genCSS=function(a,b){this.css&&void 0===this.path._fileInfo.reference&&(b.add("@import ",this._fileInfo,this._index),this.path.genCSS(a,b),this.features&&(b.add(" "),this.features.genCSS(a,b)),b.add(";"))},l.prototype.getPath=function(){return this.path instanceof f?this.path.value.value:this.path.value},l.prototype.isVariableImport=function(){var a=this.path;return a instanceof f&&(a=a.value),!(a instanceof g)||a.containsVariables()},l.prototype.evalForImport=function(a){var b=this.path;return b instanceof f&&(b=b.value),new l(b.eval(a),this.features,this.options,this._index,this._fileInfo,this.visibilityInfo())},l.prototype.evalPath=function(a){var b=this.path.eval(a),c=this._fileInfo;if(!(b instanceof f)){var d=b.value;b.value=c&&d&&a.pathRequiresRewrite(d)?a.rewritePath(d,c.rootpath):a.normalizePath(b.value)}return b},l.prototype.eval=function(a){var b=this.doEval(a);return(this.options.reference||this.blocksVisibility())&&(b.length||0===b.length?b.forEach(function(a){a.addVisibilityBlock()}):b.addVisibilityBlock()),b},l.prototype.doEval=function(a){var b,c,d=this.features&&this.features.eval(a);if(this.options.isPlugin){if(this.root&&this.root.eval)try{this.root.eval(a)}catch(f){throw f.message="Plugin error during evaluation",new k(f,this.root.imports,this.root.filename)}return c=a.frames[0]&&a.frames[0].functionRegistry,c&&this.root&&this.root.functions&&c.addMultiple(this.root.functions),[]}if(this.skip&&("function"==typeof this.skip&&(this.skip=this.skip()),this.skip))return[];if(this.options.inline){var g=new i(this.root,0,{filename:this.importedFilename,reference:this.path._fileInfo&&this.path._fileInfo.reference},(!0),(!0));return this.features?new e([g],this.features.value):[g]}if(this.css){var m=new l(this.evalPath(a),d,this.options,this._index);if(!m.css&&this.error)throw this.error;return m}return b=new h(null,j.copyArray(this.root.rules)),b.evalImports(a),this.features?new e(b.rules,this.features.value):b.rules},b.exports=l},{"../less-error":38,"../utils":89,"./anonymous":50,"./media":71,"./node":76,"./quoted":80,"./ruleset":81,"./url":85}],67:[function(a,b,c){var d=Object.create(null);d.Node=a("./node"),d.Color=a("./color"),d.AtRule=a("./atrule"),d.DetachedRuleset=a("./detached-ruleset"),d.Operation=a("./operation"),d.Dimension=a("./dimension"),d.Unit=a("./unit"),d.Keyword=a("./keyword"),d.Variable=a("./variable"),d.Property=a("./property"),d.Ruleset=a("./ruleset"),d.Element=a("./element"),d.Attribute=a("./attribute"),d.Combinator=a("./combinator"),d.Selector=a("./selector"),d.Quoted=a("./quoted"),d.Expression=a("./expression"),d.Declaration=a("./declaration"),d.Call=a("./call"),d.URL=a("./url"),d.Import=a("./import"),d.mixin={Call:a("./mixin-call"),Definition:a("./mixin-definition")},d.Comment=a("./comment"),d.Anonymous=a("./anonymous"),d.Value=a("./value"),d.JavaScript=a("./javascript"),d.Assignment=a("./assignment"),d.Condition=a("./condition"),d.Paren=a("./paren"),d.Media=a("./media"),d.UnicodeDescriptor=a("./unicode-descriptor"),d.Negative=a("./negative"),d.Extend=a("./extend"),d.VariableCall=a("./variable-call"),d.NamespaceValue=a("./namespace-value"),b.exports=d},{"./anonymous":50,"./assignment":51,"./atrule":52,"./attribute":53,"./call":54,"./color":55,"./combinator":56,"./comment":57,"./condition":58,"./declaration":60,"./detached-ruleset":61,"./dimension":62,"./element":63,"./expression":64,"./extend":65,"./import":66,"./javascript":68,"./keyword":70,"./media":71,"./mixin-call":72,"./mixin-definition":73,"./namespace-value":74,"./negative":75,"./node":76,"./operation":77,"./paren":78,"./property":79,"./quoted":80,"./ruleset":81,"./selector":82,"./unicode-descriptor":83,"./unit":84,"./url":85,"./value":86,"./variable":88,"./variable-call":87}],68:[function(a,b,c){var d=a("./js-eval-node"),e=a("./dimension"),f=a("./quoted"),g=a("./anonymous"),h=function(a,b,c,d){this.escaped=b,this.expression=a,this._index=c,this._fileInfo=d};h.prototype=new d,h.prototype.type="JavaScript",h.prototype.eval=function(a){var b=this.evaluateJavaScript(this.expression,a),c=typeof b;return"number"!==c||isNaN(b)?"string"===c?new f('"'+b+'"',b,this.escaped,this._index):new g(Array.isArray(b)?b.join(", "):b):new e(b)},b.exports=h},{"./anonymous":50,"./dimension":62,"./js-eval-node":69,"./quoted":80}],69:[function(a,b,c){var d=a("./node"),e=a("./variable"),f=function(){};f.prototype=new d,f.prototype.evaluateJavaScript=function(a,b){var c,d=this,f={};if(!b.javascriptEnabled)throw{message:"Inline JavaScript is not enabled. Is it set in your options?",filename:this.fileInfo().filename,index:this.getIndex()};a=a.replace(/@\{([\w-]+)\}/g,function(a,c){return d.jsify(new e("@"+c,d.getIndex(),d.fileInfo()).eval(b))});try{a=new Function("return ("+a+")")}catch(g){throw{message:"JavaScript evaluation error: "+g.message+" from `"+a+"`",filename:this.fileInfo().filename,index:this.getIndex()}}var h=b.frames[0].variables();for(var i in h)h.hasOwnProperty(i)&&(f[i.slice(1)]={value:h[i].value,toJS:function(){return this.value.eval(b).toCSS()}});try{c=a.call(f)}catch(g){throw{message:"JavaScript evaluation error: '"+g.name+": "+g.message.replace(/["]/g,"'")+"'",filename:this.fileInfo().filename,index:this.getIndex()}}return c},f.prototype.jsify=function(a){return Array.isArray(a.value)&&a.value.length>1?"["+a.value.map(function(a){return a.toCSS()}).join(", ")+"]":a.toCSS()},b.exports=f},{"./node":76,"./variable":88}],70:[function(a,b,c){var d=a("./node"),e=function(a){this.value=a};e.prototype=new d,e.prototype.type="Keyword",e.prototype.genCSS=function(a,b){if("%"===this.value)throw{type:"Syntax",message:"Invalid % without number"};b.add(this.value)},e.True=new e("true"),e.False=new e("false"),b.exports=e},{"./node":76}],71:[function(a,b,c){var d=a("./ruleset"),e=a("./value"),f=a("./selector"),g=a("./anonymous"),h=a("./expression"),i=a("./atrule"),j=a("../utils"),k=function(a,b,c,g,h){this._index=c,this._fileInfo=g;var i=new f([],null,null,this._index,this._fileInfo).createEmptySelectors();this.features=new e(b),this.rules=[new d(i,a)],this.rules[0].allowImports=!0,this.copyVisibilityInfo(h),this.allowRoot=!0,this.setParent(i,this),this.setParent(this.features,this),this.setParent(this.rules,this)};k.prototype=new i,k.prototype.type="Media",k.prototype.isRulesetLike=function(){return!0},k.prototype.accept=function(a){this.features&&(this.features=a.visit(this.features)),this.rules&&(this.rules=a.visitArray(this.rules))},k.prototype.genCSS=function(a,b){b.add("@media ",this._fileInfo,this._index),this.features.genCSS(a,b),this.outputRuleset(a,b,this.rules)},k.prototype.eval=function(a){a.mediaBlocks||(a.mediaBlocks=[],a.mediaPath=[]);var b=new k(null,[],this._index,this._fileInfo,this.visibilityInfo());return this.debugInfo&&(this.rules[0].debugInfo=this.debugInfo,b.debugInfo=this.debugInfo),b.features=this.features.eval(a),a.mediaPath.push(b),a.mediaBlocks.push(b),this.rules[0].functionRegistry=a.frames[0].functionRegistry.inherit(),a.frames.unshift(this.rules[0]),b.rules=[this.rules[0].eval(a)],a.frames.shift(),a.mediaPath.pop(),0===a.mediaPath.length?b.evalTop(a):b.evalNested(a)},k.prototype.evalTop=function(a){var b=this;if(a.mediaBlocks.length>1){var c=new f([],null,null,this.getIndex(),this.fileInfo()).createEmptySelectors();b=new d(c,a.mediaBlocks),b.multiMedia=!0,b.copyVisibilityInfo(this.visibilityInfo()),this.setParent(b,this)}return delete a.mediaBlocks,delete a.mediaPath,b},k.prototype.evalNested=function(a){var b,c,f=a.mediaPath.concat([this]);for(b=0;b0;b--)a.splice(b,0,new g("and"));return new h(a)})),this.setParent(this.features,this),new d([],[])},k.prototype.permute=function(a){if(0===a.length)return[];if(1===a.length)return a[0];for(var b=[],c=this.permute(a.slice(1)),d=0;d0){for(n=!0,k=0;k0)p=B;else if(p=A,q[A]+q[B]>1)throw{type:"Runtime",message:"Ambiguous use of `default()` found when matching for `"+this.format(t)+"`",index:this.getIndex(),filename:this.fileInfo().filename};for(k=0;kthis.params.length)return!1}c=Math.min(f,this.arity);for(var g=0;gb?1:void 0},d.prototype.blocksVisibility=function(){return null==this.visibilityBlocks&&(this.visibilityBlocks=0),0!==this.visibilityBlocks},d.prototype.addVisibilityBlock=function(){null==this.visibilityBlocks&&(this.visibilityBlocks=0),this.visibilityBlocks=this.visibilityBlocks+1},d.prototype.removeVisibilityBlock=function(){null==this.visibilityBlocks&&(this.visibilityBlocks=0),this.visibilityBlocks=this.visibilityBlocks-1},d.prototype.ensureVisibility=function(){this.nodeVisible=!0},d.prototype.ensureInvisibility=function(){this.nodeVisible=!1},d.prototype.isVisible=function(){return this.nodeVisible},d.prototype.visibilityInfo=function(){return{visibilityBlocks:this.visibilityBlocks,nodeVisible:this.nodeVisible}},d.prototype.copyVisibilityInfo=function(a){a&&(this.visibilityBlocks=a.visibilityBlocks,this.nodeVisible=a.nodeVisible)},b.exports=d},{}],77:[function(a,b,c){var d=a("./node"),e=a("./color"),f=a("./dimension"),g=a("../constants").Math,h=function(a,b,c){this.op=a.trim(),this.operands=b,this.isSpaced=c};h.prototype=new d,h.prototype.type="Operation",h.prototype.accept=function(a){this.operands=a.visit(this.operands)},h.prototype.eval=function(a){var b,c=this.operands[0].eval(a),d=this.operands[1].eval(a);if(a.isMathOn(this.op)){if(b="./"===this.op?"/":this.op,c instanceof f&&d instanceof e&&(c=c.toColor()),d instanceof f&&c instanceof e&&(d=d.toColor()),!c.operate){if(c instanceof h&&"/"===c.op&&a.math===g.PARENS_DIVISION)return new h(this.op,[c,d],this.isSpaced);throw{type:"Operation",message:"Operation on an invalid type"}}return c.operate(a,b,d)}return new h(this.op,[c,d],this.isSpaced)},h.prototype.genCSS=function(a,b){this.operands[0].genCSS(a,b),this.isSpaced&&b.add(" "),b.add(this.op),this.isSpaced&&b.add(" "),this.operands[1].genCSS(a,b)},b.exports=h},{"../constants":12,"./color":55,"./dimension":62,"./node":76}],78:[function(a,b,c){var d=a("./node"),e=function(a){this.value=a};e.prototype=new d,e.prototype.type="Paren",e.prototype.genCSS=function(a,b){b.add("("),this.value.genCSS(a,b),b.add(")")},e.prototype.eval=function(a){return new e(this.value.eval(a))},b.exports=e},{"./node":76}],79:[function(a,b,c){var d=a("./node"),e=a("./declaration"),f=function(a,b,c){this.name=a,this._index=b,this._fileInfo=c};f.prototype=new d,f.prototype.type="Property",f.prototype.eval=function(a){var b,c=this.name,d=a.pluginManager.less.visitors.ToCSSVisitor.prototype._mergeRules;if(this.evaluating)throw{type:"Name",message:"Recursive property reference for "+c,filename:this.fileInfo().filename,index:this.getIndex()};if(this.evaluating=!0,b=this.find(a.frames,function(b){var f,g=b.property(c);if(g){for(var h=0;h0;a--){var b=this.rules[a-1];if(b instanceof e)return this.parseValue(b)}},q.prototype.parseValue=function(a){function b(a){return a.value instanceof k&&!a.parsed?("string"==typeof a.value.value?this.parse.parseNode(a.value.value,["value","important"],a.value.getIndex(),a.fileInfo(),function(b,c){b&&(a.parsed=!0),c&&(a.value=c[0],a.important=c[1]||"",a.parsed=!0)}):a.parsed=!0,a):a}var c=this;if(Array.isArray(a)){var d=[];return a.forEach(function(a){d.push(b.call(c,a))}),d}return b.call(c,a)},q.prototype.rulesets=function(){if(!this.rules)return[];var a,b,c=[],d=this.rules;for(a=0;b=d[a];a++)b.isRuleset&&c.push(b);return c},q.prototype.prependRule=function(a){var b=this.rules;b?b.unshift(a):this.rules=[a],this.setParent(a,this)},q.prototype.find=function(a,b,c){b=b||this;var d,e,f=[],g=a.toCSS();return g in this._lookups?this._lookups[g]:(this.rulesets().forEach(function(g){if(g!==b)for(var h=0;hd){if(!c||c(g)){e=g.find(new i(a.elements.slice(d)),b,c);for(var j=0;j0&&b.add(k),a.firstSelector=!0,h[0].genCSS(a,b),a.firstSelector=!1,d=1;d0?(e=p.copyArray(a),f=e.pop(),g=d.createDerived(p.copyArray(f.elements))):g=d.createDerived([]),b.length>0){var h=c.combinator,i=b[0].elements[0];h.emptyOrWhitespace&&!i.combinator.emptyOrWhitespace&&(h=i.combinator),g.elements.push(new j(h,i.value,c.isVariable,c._index,c._fileInfo)),g.elements=g.elements.concat(b[0].elements.slice(1))}if(0!==g.elements.length&&e.push(g),b.length>1){var k=b.slice(1);k=k.map(function(a){return a.createDerived(a.elements,[])}),e=e.concat(k)}return e}function g(a,b,c,d,e){var g;for(g=0;g0?d[d.length-1]=d[d.length-1].createDerived(d[d.length-1].elements.concat(a)):d.push(new i(a))}}function l(a,b,c){function m(a){var b;return a.value instanceof h?(b=a.value.value,b instanceof i?b:null):null}var n,o,p,q,r,s,t,u,v,w,x=!1;for(q=[],r=[[]],n=0;u=c.elements[n];n++)if("&"!==u.value){var y=m(u);if(null!=y){k(q,r);var z,A=[],B=[];for(z=l(A,b,y),x=x||z,p=0;p0&&t[0].elements.push(new j(u.combinator,"",u.isVariable,u._index,u._fileInfo)),s.push(t);else for(p=0;p0&&(a.push(r[n]),w=r[n][v-1],r[n][v-1]=w.createDerived(w.elements,c.extendList));return x}function m(a,b){var c=b.createDerived(b.elements,b.extendList,b.evaldCondition);return c.copyVisibilityInfo(a),c}var n,o,q;if(o=[],q=l(o,b,c),!q)if(b.length>0)for(o=[],n=0;n0)for(b=0;b=0&&"\n"!==b.charAt(c);)e++;return"number"==typeof a&&(d=(b.slice(0,a).match(/\n/g)||"").length),{line:d,column:e}},copyArray:function(a){var b,c=a.length,d=new Array(c);for(b=0;b=0||(i=[k.selfSelectors[0]],g=n.findMatch(j,i),g.length&&(j.hasFoundMatches=!0,j.selfSelectors.forEach(function(a){var b=k.visibilityInfo();h=n.extendSelector(g,i,a,j.isVisible()),l=new d.Extend(k.selector,k.option,0,k.fileInfo(),b),l.selfSelectors=h,h[h.length-1].extendList=[l],m.push(l),l.ruleset=k.ruleset,l.parent_ids=l.parent_ids.concat(k.parent_ids,j.parent_ids),k.firstExtendOnThisSelectorPath&&(l.firstExtendOnThisSelectorPath=!0,k.ruleset.paths.push(h))})));if(m.length){if(this.extendChainCount++,c>100){var o="{unable to calculate}",p="{unable to calculate}";try{o=m[0].selfSelectors[0].toCSS(),p=m[0].selector.toCSS()}catch(q){}throw{message:"extend circular reference detected. One of the circular extends is currently:"+o+":extend("+p+")"}}return m.concat(n.doExtendChaining(m,b,c+1))}return m},visitDeclaration:function(a,b){b.visitDeeper=!1},visitMixinDefinition:function(a,b){b.visitDeeper=!1},visitSelector:function(a,b){b.visitDeeper=!1},visitRuleset:function(a,b){if(!a.root){var c,d,e,f,g=this.allExtendsStack[this.allExtendsStack.length-1],h=[],i=this;for(e=0;e0&&k[i.matched].combinator.value!==g?i=null:i.matched++,i&&(i.finished=i.matched===k.length,i.finished&&!a.allowAfter&&(e+1k&&l>0&&(m[m.length-1].elements=m[m.length-1].elements.concat(b[k].elements.slice(l)),l=0,k++),j=g.elements.slice(l,i.index).concat([h]).concat(c.elements.slice(1)),k===i.pathIndex&&f>0?m[m.length-1].elements=m[m.length-1].elements.concat(j):(m=m.concat(b.slice(k,i.pathIndex)),m.push(new d.Selector(j))),k=i.endPathIndex,l=i.endPathElementIndex,l>=b[k].elements.length&&(l=0,k++);return k0&&(m[m.length-1].elements=m[m.length-1].elements.concat(b[k].elements.slice(l)),k++),m=m.concat(b.slice(k,b.length)),m=m.map(function(a){var b=a.createDerived(a.elements);return e?b.ensureVisibility():b.ensureInvisibility(),b})},visitMedia:function(a,b){var c=a.allExtends.concat(this.allExtendsStack[this.allExtendsStack.length-1]);c=c.concat(this.doExtendChaining(c,a.allExtends)),this.allExtendsStack.push(c)},visitMediaOut:function(a){var b=this.allExtendsStack.length-1;this.allExtendsStack.length=b},visitAtRule:function(a,b){var c=a.allExtends.concat(this.allExtendsStack[this.allExtendsStack.length-1]);c=c.concat(this.doExtendChaining(c,a.allExtends)),this.allExtendsStack.push(c)},visitAtRuleOut:function(a){var b=this.allExtendsStack.length-1;this.allExtendsStack.length=b}},b.exports=i},{"../logger":39,"../tree":67,"../utils":89,"./visitor":97}],91:[function(a,b,c){function d(a){this.imports=[],this.variableImports=[],this._onSequencerEmpty=a,this._currentDepth=0}d.prototype.addImport=function(a){var b=this,c={callback:a,args:null,isReady:!1};return this.imports.push(c),function(){c.args=Array.prototype.slice.call(arguments,0),c.isReady=!0,b.tryRun()}},d.prototype.addVariableImport=function(a){this.variableImports.push(a)},d.prototype.tryRun=function(){this._currentDepth++;try{for(;;){for(;this.imports.length>0;){var a=this.imports[0];if(!a.isReady)return;this.imports=this.imports.slice(1),a.callback.apply(null,a.args)}if(0===this.variableImports.length)break;var b=this.variableImports[0];this.variableImports=this.variableImports.slice(1),b()}}finally{this._currentDepth--}0===this._currentDepth&&this._onSequencerEmpty&&this._onSequencerEmpty()},b.exports=d},{}],92:[function(a,b,c){var d=a("../contexts"),e=a("./visitor"),f=a("./import-sequencer"),g=a("../utils"),h=function(a,b){this._visitor=new e(this),this._importer=a,this._finish=b,this.context=new d.Eval,this.importCount=0,this.onceFileDetectionMap={},this.recursionDetector={},this._sequencer=new f(this._onSequencerEmpty.bind(this))};h.prototype={isReplacing:!1,run:function(a){try{this._visitor.visit(a)}catch(b){this.error=b}this.isFinished=!0,this._sequencer.tryRun()},_onSequencerEmpty:function(){this.isFinished&&this._finish(this.error)},visitImport:function(a,b){var c=a.options.inline;if(!a.css||c){var e=new d.Eval(this.context,g.copyArray(this.context.frames)),f=e.frames[0];this.importCount++,a.isVariableImport()?this._sequencer.addVariableImport(this.processImportNode.bind(this,a,e,f)):this.processImportNode(a,e,f)}b.visitDeeper=!1},processImportNode:function(a,b,c){var d,e=a.options.inline;try{d=a.evalForImport(b)}catch(f){f.filename||(f.index=a.getIndex(),f.filename=a.fileInfo().filename),a.css=!0,a.error=f}if(!d||d.css&&!e)this.importCount--,this.isFinished&&this._sequencer.tryRun();else{d.options.multiple&&(b.importMultiple=!0);for(var g=void 0===d.css,h=0;h0},resolveVisibility:function(a,b){if(!a.blocksVisibility()){if(this.isEmpty(a)&&!this.containsSilentNonBlockedChild(b))return;return a}var c=a.rules[0];if(this.keepOnlyVisibleChilds(c),!this.isEmpty(c))return a.ensureVisibility(),a.removeVisibilityBlock(),a},isVisibleRuleset:function(a){return!!a.firstRoot||!this.isEmpty(a)&&!(!a.root&&!this.hasVisibleSelector(a))}};var g=function(a){this._visitor=new e(this),this._context=a,this.utils=new f(a)};g.prototype={isReplacing:!0,run:function(a){return this._visitor.visit(a)},visitDeclaration:function(a,b){if(!a.blocksVisibility()&&!a.variable)return a},visitMixinDefinition:function(a,b){a.frames=[]},visitExtend:function(a,b){},visitComment:function(a,b){if(!a.blocksVisibility()&&!a.isSilent(this._context))return a},visitMedia:function(a,b){var c=a.rules[0].rules;return a.accept(this._visitor),b.visitDeeper=!1,this.utils.resolveVisibility(a,c)},visitImport:function(a,b){if(!a.blocksVisibility())return a},visitAtRule:function(a,b){return a.rules&&a.rules.length?this.visitAtRuleWithBody(a,b):this.visitAtRuleWithoutBody(a,b)},visitAnonymous:function(a,b){if(!a.blocksVisibility())return a.accept(this._visitor),a},visitAtRuleWithBody:function(a,b){function c(a){var b=a.rules;return 1===b.length&&(!b[0].paths||0===b[0].paths.length)}function d(a){var b=a.rules;return c(a)?b[0].rules:b}var e=d(a);return a.accept(this._visitor),b.visitDeeper=!1,this.utils.isEmpty(a)||this._mergeRules(a.rules[0].rules),this.utils.resolveVisibility(a,e)},visitAtRuleWithoutBody:function(a,b){if(!a.blocksVisibility()){if("@charset"===a.name){if(this.charset){if(a.debugInfo){var c=new d.Comment("/* "+a.toCSS(this._context).replace(/\n/g,"")+" */\n");return c.debugInfo=a.debugInfo,this._visitor.visit(c)}return}this.charset=!0}return a}},checkValidNodes:function(a,b){if(a)for(var c=0;c0?a.accept(this._visitor):a.rules=null,b.visitDeeper=!1}return a.rules&&(this._mergeRules(a.rules),this._removeDuplicateRules(a.rules)),this.utils.isVisibleRuleset(a)&&(a.ensureVisibility(),d.splice(0,0,a)),1===d.length?d[0]:d},_compileRulesetPaths:function(a){a.paths&&(a.paths=a.paths.filter(function(a){var b;for(" "===a[0].elements[0].combinator.value&&(a[0].elements[0].combinator=new d.Combinator("")),b=0;b=0;e--)if(c=a[e],c instanceof d.Declaration)if(f[c.name]){b=f[c.name],b instanceof d.Declaration&&(b=f[c.name]=[f[c.name].toCSS(this._context)]);var g=c.toCSS(this._context);b.indexOf(g)!==-1?a.splice(e,1):b.push(g)}else f[c.name]=c}},_mergeRules:function(a){if(a){for(var b={},c=[],e=0;e0){var b=a[0],c=[],e=[new d.Expression(c)];a.forEach(function(a){"+"===a.merge&&c.length>0&&e.push(new d.Expression(c=[])),c.push(a.value),b.important=b.important||a.important}),b.value=new d.Value(e)}})}}},b.exports=g},{"../tree":67,"./visitor":97}],97:[function(a,b,c){function d(a){return a}function e(a,b){var c,d;for(c in a)switch(d=a[c],typeof d){case"function":d.prototype&&d.prototype.type&&(d.prototype.typeIndex=b++);break;case"object":b=e(d,b)}return b}var f=a("../tree"),g={visitDeeper:!0},h=!1,i=function(a){this._implementation=a,this._visitInCache={},this._visitOutCache={},h||(e(f,1),h=!0)};i.prototype={visit:function(a){if(!a)return a;var b=a.typeIndex;if(!b)return a.value&&a.value.typeIndex&&this.visit(a.value),a;var c,e=this._implementation,f=this._visitInCache[b],h=this._visitOutCache[b],i=g;if(i.visitDeeper=!0,f||(c="visit"+a.type,f=e[c]||d,h=e[c+"Out"]||d,this._visitInCache[b]=f,this._visitOutCache[b]=h),f!==d){var j=f.call(e,a,i);a&&e.isReplacing&&(a=j)}return i.visitDeeper&&a&&a.accept&&a.accept(this),h!=d&&h.call(e,a),a},visitArray:function(a,b){if(!a)return a;var c,d=a.length;if(b||!this._implementation.isReplacing){for(c=0;ck){for(var b=0,c=h.length-j;b0)throw new Error("Invalid string. Length must be a multiple of 4");return"="===a[b-2]?2:"="===a[b-1]?1:0}function e(a){return 3*a.length/4-d(a)}function f(a){var b,c,e,f,g,h=a.length;f=d(a),g=new l(3*h/4-f),c=f>0?h-4:h;var i=0;for(b=0;b>16&255,g[i++]=e>>8&255,g[i++]=255&e;return 2===f?(e=k[a.charCodeAt(b)]<<2|k[a.charCodeAt(b+1)]>>4,g[i++]=255&e):1===f&&(e=k[a.charCodeAt(b)]<<10|k[a.charCodeAt(b+1)]<<4|k[a.charCodeAt(b+2)]>>2,g[i++]=e>>8&255,g[i++]=255&e),g}function g(a){return j[a>>18&63]+j[a>>12&63]+j[a>>6&63]+j[63&a]}function h(a,b,c){for(var d,e=[],f=b;fk?k:i+g));return 1===d?(b=a[c-1],e+=j[b>>2],e+=j[b<<4&63],e+="=="):2===d&&(b=(a[c-2]<<8)+a[c-1],e+=j[b>>10],e+=j[b>>4&63],e+=j[b<<2&63],e+="="),f.push(e),f.join("")}c.byteLength=e,c.toByteArray=f,c.fromByteArray=i;for(var j=[],k=[],l="undefined"!=typeof Uint8Array?Uint8Array:Array,m="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",n=0,o=m.length;nZ)throw new RangeError("Invalid typed array length");var b=new Uint8Array(a);return b.__proto__=f.prototype,b}function f(a,b,c){if("number"==typeof a){if("string"==typeof b)throw new Error("If encoding is specified then the first argument must be a string");return j(a)}return g(a,b,c)}function g(a,b,c){if("number"==typeof a)throw new TypeError('"value" argument must not be a number');return U(a)?m(a,b,c):"string"==typeof a?k(a,b):n(a)}function h(a){if("number"!=typeof a)throw new TypeError('"size" argument must be a number');if(a<0)throw new RangeError('"size" argument must not be negative')}function i(a,b,c){return h(a),a<=0?e(a):void 0!==b?"string"==typeof c?e(a).fill(b,c):e(a).fill(b):e(a)}function j(a){return h(a),e(a<0?0:0|o(a))}function k(a,b){if("string"==typeof b&&""!==b||(b="utf8"),!f.isEncoding(b))throw new TypeError('"encoding" must be a valid string encoding');var c=0|q(a,b),d=e(c),g=d.write(a,b);return g!==c&&(d=d.slice(0,g)),d}function l(a){for(var b=a.length<0?0:0|o(a.length),c=e(b),d=0;d=Z)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+Z.toString(16)+" bytes");return 0|a}function p(a){return+a!=a&&(a=0),f.alloc(+a)}function q(a,b){if(f.isBuffer(a))return a.length;if(V(a)||U(a))return a.byteLength;"string"!=typeof a&&(a=""+a);var c=a.length;if(0===c)return 0;for(var d=!1;;)switch(b){case"ascii":case"latin1":case"binary":return c;case"utf8":case"utf-8":case void 0:return P(a).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*c;case"hex":return c>>>1;case"base64":return S(a).length;default:if(d)return P(a).length;b=(""+b).toLowerCase(),d=!0}}function r(a,b,c){var d=!1;if((void 0===b||b<0)&&(b=0),b>this.length)return"";if((void 0===c||c>this.length)&&(c=this.length),c<=0)return"";if(c>>>=0,b>>>=0,c<=b)return"";for(a||(a="utf8");;)switch(a){case"hex":return G(this,b,c);case"utf8":case"utf-8":return C(this,b,c);case"ascii":return E(this,b,c);case"latin1":case"binary":return F(this,b,c);case"base64":return B(this,b,c);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return H(this,b,c);default:if(d)throw new TypeError("Unknown encoding: "+a);a=(a+"").toLowerCase(),d=!0}}function s(a,b,c){var d=a[b];a[b]=a[c],a[c]=d}function t(a,b,c,d,e){if(0===a.length)return-1;if("string"==typeof c?(d=c,c=0):c>2147483647?c=2147483647:c<-2147483648&&(c=-2147483648),c=+c,W(c)&&(c=e?0:a.length-1),c<0&&(c=a.length+c),c>=a.length){if(e)return-1;c=a.length-1}else if(c<0){if(!e)return-1;c=0}if("string"==typeof b&&(b=f.from(b,d)),f.isBuffer(b))return 0===b.length?-1:u(a,b,c,d,e);if("number"==typeof b)return b=255&b,"function"==typeof Uint8Array.prototype.indexOf?e?Uint8Array.prototype.indexOf.call(a,b,c):Uint8Array.prototype.lastIndexOf.call(a,b,c):u(a,[b],c,d,e);throw new TypeError("val must be string, number or Buffer")}function u(a,b,c,d,e){function f(a,b){return 1===g?a[b]:a.readUInt16BE(b*g)}var g=1,h=a.length,i=b.length;if(void 0!==d&&(d=String(d).toLowerCase(),"ucs2"===d||"ucs-2"===d||"utf16le"===d||"utf-16le"===d)){if(a.length<2||b.length<2)return-1;g=2,h/=2,i/=2,c/=2}var j;if(e){var k=-1;for(j=c;jh&&(c=h-i),j=c;j>=0;j--){for(var l=!0,m=0;me&&(d=e)):d=e;var f=b.length;if(f%2!==0)throw new TypeError("Invalid hex string");d>f/2&&(d=f/2);for(var g=0;g239?4:f>223?3:f>191?2:1;if(e+h<=c){var i,j,k,l;switch(h){case 1:f<128&&(g=f);break;case 2:i=a[e+1],128===(192&i)&&(l=(31&f)<<6|63&i,l>127&&(g=l));break;case 3:i=a[e+1],j=a[e+2],128===(192&i)&&128===(192&j)&&(l=(15&f)<<12|(63&i)<<6|63&j,l>2047&&(l<55296||l>57343)&&(g=l));break;case 4:i=a[e+1],j=a[e+2],k=a[e+3],128===(192&i)&&128===(192&j)&&128===(192&k)&&(l=(15&f)<<18|(63&i)<<12|(63&j)<<6|63&k,l>65535&&l<1114112&&(g=l))}}null===g?(g=65533,h=1):g>65535&&(g-=65536,d.push(g>>>10&1023|55296),g=56320|1023&g),d.push(g),e+=h}return D(d)}function D(a){var b=a.length;if(b<=$)return String.fromCharCode.apply(String,a);for(var c="",d=0;dd)&&(c=d);for(var e="",f=b;fc)throw new RangeError("Trying to access beyond buffer length")}function J(a,b,c,d,e,g){if(!f.isBuffer(a))throw new TypeError('"buffer" argument must be a Buffer instance');if(b>e||ba.length)throw new RangeError("Index out of range")}function K(a,b,c,d,e,f){if(c+d>a.length)throw new RangeError("Index out of range");if(c<0)throw new RangeError("Index out of range")}function L(a,b,c,d,e){return b=+b,c>>>=0,e||K(a,b,c,4,3.4028234663852886e38,-3.4028234663852886e38),Y.write(a,b,c,d,23,4),c+4}function M(a,b,c,d,e){return b=+b,c>>>=0,e||K(a,b,c,8,1.7976931348623157e308,-1.7976931348623157e308),Y.write(a,b,c,d,52,8),c+8}function N(a){if(a=a.trim().replace(_,""),a.length<2)return"";for(;a.length%4!==0;)a+="=";return a}function O(a){return a<16?"0"+a.toString(16):a.toString(16)}function P(a,b){b=b||1/0;for(var c,d=a.length,e=null,f=[],g=0;g55295&&c<57344){if(!e){if(c>56319){(b-=3)>-1&&f.push(239,191,189);continue}if(g+1===d){(b-=3)>-1&&f.push(239,191,189);continue}e=c;continue}if(c<56320){(b-=3)>-1&&f.push(239,191,189),e=c;continue}c=(e-55296<<10|c-56320)+65536}else e&&(b-=3)>-1&&f.push(239,191,189);if(e=null,c<128){if((b-=1)<0)break;f.push(c)}else if(c<2048){if((b-=2)<0)break;f.push(c>>6|192,63&c|128)}else if(c<65536){if((b-=3)<0)break;f.push(c>>12|224,c>>6&63|128,63&c|128)}else{if(!(c<1114112))throw new Error("Invalid code point");if((b-=4)<0)break;f.push(c>>18|240,c>>12&63|128,c>>6&63|128,63&c|128)}}return f}function Q(a){for(var b=[],c=0;c>8,e=c%256,f.push(e),f.push(d);return f}function S(a){return X.toByteArray(N(a))}function T(a,b,c,d){for(var e=0;e=b.length||e>=a.length);++e)b[e+c]=a[e];return e}function U(a){return a instanceof ArrayBuffer||null!=a&&null!=a.constructor&&"ArrayBuffer"===a.constructor.name&&"number"==typeof a.byteLength}function V(a){return"function"==typeof ArrayBuffer.isView&&ArrayBuffer.isView(a)}function W(a){return a!==a}var X=a("base64-js"),Y=a("ieee754");c.Buffer=f,c.SlowBuffer=p,c.INSPECT_MAX_BYTES=50;var Z=2147483647;c.kMaxLength=Z,f.TYPED_ARRAY_SUPPORT=d(),f.TYPED_ARRAY_SUPPORT||"undefined"==typeof console||"function"!=typeof console.error||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),"undefined"!=typeof Symbol&&Symbol.species&&f[Symbol.species]===f&&Object.defineProperty(f,Symbol.species,{value:null,configurable:!0,enumerable:!1,writable:!1}),f.poolSize=8192,f.from=function(a,b,c){return g(a,b,c)},f.prototype.__proto__=Uint8Array.prototype,f.__proto__=Uint8Array,f.alloc=function(a,b,c){return i(a,b,c)},f.allocUnsafe=function(a){return j(a)},f.allocUnsafeSlow=function(a){return j(a)},f.isBuffer=function(a){return null!=a&&a._isBuffer===!0},f.compare=function(a,b){if(!f.isBuffer(a)||!f.isBuffer(b))throw new TypeError("Arguments must be Buffers");if(a===b)return 0;for(var c=a.length,d=b.length,e=0,g=Math.min(c,d);e0&&(a=this.toString("hex",0,b).match(/.{2}/g).join(" "),this.length>b&&(a+=" ... ")),""},f.prototype.compare=function(a,b,c,d,e){if(!f.isBuffer(a))throw new TypeError("Argument must be a Buffer");if(void 0===b&&(b=0),void 0===c&&(c=a?a.length:0),void 0===d&&(d=0),void 0===e&&(e=this.length),b<0||c>a.length||d<0||e>this.length)throw new RangeError("out of range index");if(d>=e&&b>=c)return 0;if(d>=e)return-1;if(b>=c)return 1;if(b>>>=0,c>>>=0,d>>>=0,e>>>=0,this===a)return 0;for(var g=e-d,h=c-b,i=Math.min(g,h),j=this.slice(d,e),k=a.slice(b,c),l=0;l>>=0,isFinite(c)?(c>>>=0,void 0===d&&(d="utf8")):(d=c,c=void 0)}var e=this.length-b;if((void 0===c||c>e)&&(c=e),a.length>0&&(c<0||b<0)||b>this.length)throw new RangeError("Attempt to write outside buffer bounds");d||(d="utf8");for(var f=!1;;)switch(d){case"hex":return v(this,a,b,c);case"utf8":case"utf-8":return w(this,a,b,c);case"ascii":return x(this,a,b,c);case"latin1":case"binary":return y(this,a,b,c);case"base64":return z(this,a,b,c);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return A(this,a,b,c);default:if(f)throw new TypeError("Unknown encoding: "+d);d=(""+d).toLowerCase(),f=!0}},f.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var $=4096;f.prototype.slice=function(a,b){var c=this.length;a=~~a,b=void 0===b?c:~~b,a<0?(a+=c,a<0&&(a=0)):a>c&&(a=c),b<0?(b+=c,b<0&&(b=0)):b>c&&(b=c),b>>=0,b>>>=0,c||I(a,b,this.length);for(var d=this[a],e=1,f=0;++f>>=0,b>>>=0,c||I(a,b,this.length);for(var d=this[a+--b],e=1;b>0&&(e*=256);)d+=this[a+--b]*e;return d},f.prototype.readUInt8=function(a,b){return a>>>=0,b||I(a,1,this.length),this[a]},f.prototype.readUInt16LE=function(a,b){return a>>>=0,b||I(a,2,this.length),this[a]|this[a+1]<<8},f.prototype.readUInt16BE=function(a,b){return a>>>=0,b||I(a,2,this.length),this[a]<<8|this[a+1]},f.prototype.readUInt32LE=function(a,b){return a>>>=0,b||I(a,4,this.length),(this[a]|this[a+1]<<8|this[a+2]<<16)+16777216*this[a+3]},f.prototype.readUInt32BE=function(a,b){return a>>>=0,b||I(a,4,this.length),16777216*this[a]+(this[a+1]<<16|this[a+2]<<8|this[a+3])},f.prototype.readIntLE=function(a,b,c){a>>>=0,b>>>=0,c||I(a,b,this.length);for(var d=this[a],e=1,f=0;++f=e&&(d-=Math.pow(2,8*b)),d},f.prototype.readIntBE=function(a,b,c){a>>>=0,b>>>=0,c||I(a,b,this.length);for(var d=b,e=1,f=this[a+--d];d>0&&(e*=256);)f+=this[a+--d]*e;return e*=128,f>=e&&(f-=Math.pow(2,8*b)),f},f.prototype.readInt8=function(a,b){return a>>>=0,b||I(a,1,this.length),128&this[a]?(255-this[a]+1)*-1:this[a]},f.prototype.readInt16LE=function(a,b){a>>>=0,b||I(a,2,this.length);var c=this[a]|this[a+1]<<8;return 32768&c?4294901760|c:c},f.prototype.readInt16BE=function(a,b){a>>>=0,b||I(a,2,this.length);var c=this[a+1]|this[a]<<8;return 32768&c?4294901760|c:c},f.prototype.readInt32LE=function(a,b){return a>>>=0,b||I(a,4,this.length),this[a]|this[a+1]<<8|this[a+2]<<16|this[a+3]<<24},f.prototype.readInt32BE=function(a,b){return a>>>=0,b||I(a,4,this.length),this[a]<<24|this[a+1]<<16|this[a+2]<<8|this[a+3]},f.prototype.readFloatLE=function(a,b){return a>>>=0,b||I(a,4,this.length),Y.read(this,a,!0,23,4)},f.prototype.readFloatBE=function(a,b){return a>>>=0,b||I(a,4,this.length),Y.read(this,a,!1,23,4)},f.prototype.readDoubleLE=function(a,b){return a>>>=0,b||I(a,8,this.length),Y.read(this,a,!0,52,8)},f.prototype.readDoubleBE=function(a,b){return a>>>=0,b||I(a,8,this.length),Y.read(this,a,!1,52,8)},f.prototype.writeUIntLE=function(a,b,c,d){if(a=+a,b>>>=0,c>>>=0,!d){var e=Math.pow(2,8*c)-1;J(this,a,b,c,e,0)}var f=1,g=0;for(this[b]=255&a;++g>>=0,c>>>=0,!d){var e=Math.pow(2,8*c)-1;J(this,a,b,c,e,0)}var f=c-1,g=1;for(this[b+f]=255&a;--f>=0&&(g*=256);)this[b+f]=a/g&255;return b+c},f.prototype.writeUInt8=function(a,b,c){return a=+a,b>>>=0,c||J(this,a,b,1,255,0),this[b]=255&a,b+1},f.prototype.writeUInt16LE=function(a,b,c){return a=+a,b>>>=0,c||J(this,a,b,2,65535,0),this[b]=255&a,this[b+1]=a>>>8,b+2},f.prototype.writeUInt16BE=function(a,b,c){return a=+a,b>>>=0,c||J(this,a,b,2,65535,0),this[b]=a>>>8,this[b+1]=255&a,b+2},f.prototype.writeUInt32LE=function(a,b,c){return a=+a,b>>>=0,c||J(this,a,b,4,4294967295,0),this[b+3]=a>>>24,this[b+2]=a>>>16,this[b+1]=a>>>8,this[b]=255&a,b+4},f.prototype.writeUInt32BE=function(a,b,c){return a=+a,b>>>=0,c||J(this,a,b,4,4294967295,0),this[b]=a>>>24,this[b+1]=a>>>16,this[b+2]=a>>>8,this[b+3]=255&a,b+4},f.prototype.writeIntLE=function(a,b,c,d){if(a=+a,b>>>=0,!d){var e=Math.pow(2,8*c-1);J(this,a,b,c,e-1,-e)}var f=0,g=1,h=0;for(this[b]=255&a;++f>0)-h&255;return b+c},f.prototype.writeIntBE=function(a,b,c,d){if(a=+a,b>>>=0,!d){var e=Math.pow(2,8*c-1);J(this,a,b,c,e-1,-e)}var f=c-1,g=1,h=0;for(this[b+f]=255&a;--f>=0&&(g*=256);)a<0&&0===h&&0!==this[b+f+1]&&(h=1),this[b+f]=(a/g>>0)-h&255;return b+c},f.prototype.writeInt8=function(a,b,c){return a=+a,b>>>=0,c||J(this,a,b,1,127,-128),a<0&&(a=255+a+1),this[b]=255&a,b+1},f.prototype.writeInt16LE=function(a,b,c){return a=+a,b>>>=0,c||J(this,a,b,2,32767,-32768),this[b]=255&a,this[b+1]=a>>>8,b+2},f.prototype.writeInt16BE=function(a,b,c){return a=+a,b>>>=0,c||J(this,a,b,2,32767,-32768),this[b]=a>>>8,this[b+1]=255&a,b+2},f.prototype.writeInt32LE=function(a,b,c){return a=+a,b>>>=0,c||J(this,a,b,4,2147483647,-2147483648),this[b]=255&a,this[b+1]=a>>>8,this[b+2]=a>>>16,this[b+3]=a>>>24,b+4},f.prototype.writeInt32BE=function(a,b,c){return a=+a,b>>>=0,c||J(this,a,b,4,2147483647,-2147483648),a<0&&(a=4294967295+a+1),this[b]=a>>>24,this[b+1]=a>>>16,this[b+2]=a>>>8,this[b+3]=255&a,b+4},f.prototype.writeFloatLE=function(a,b,c){return L(this,a,b,!0,c)},f.prototype.writeFloatBE=function(a,b,c){return L(this,a,b,!1,c)},f.prototype.writeDoubleLE=function(a,b,c){return M(this,a,b,!0,c)},f.prototype.writeDoubleBE=function(a,b,c){return M(this,a,b,!1,c)},f.prototype.copy=function(a,b,c,d){if(c||(c=0),d||0===d||(d=this.length),b>=a.length&&(b=a.length),b||(b=0),d>0&&d=this.length)throw new RangeError("sourceStart out of bounds");if(d<0)throw new RangeError("sourceEnd out of bounds");d>this.length&&(d=this.length),a.length-b=0;--e)a[e+b]=this[e+c];else if(f<1e3)for(e=0;e>>=0,c=void 0===c?this.length:c>>>0,a||(a=0);var g;if("number"==typeof a)for(g=b;g>1,k=-7,l=c?e-1:0,m=c?-1:1,n=a[b+l];for(l+=m,f=n&(1<<-k)-1,n>>=-k,k+=h;k>0;f=256*f+a[b+l],l+=m,k-=8);for(g=f&(1<<-k)-1,f>>=-k,k+=d;k>0;g=256*g+a[b+l],l+=m,k-=8);if(0===f)f=1-j;else{if(f===i)return g?NaN:(n?-1:1)*(1/0);g+=Math.pow(2,d),f-=j}return(n?-1:1)*g*Math.pow(2,f-d)},c.write=function(a,b,c,d,e,f){var g,h,i,j=8*f-e-1,k=(1<>1,m=23===e?Math.pow(2,-24)-Math.pow(2,-77):0,n=d?0:f-1,o=d?1:-1,p=b<0||0===b&&1/b<0?1:0;for(b=Math.abs(b),isNaN(b)||b===1/0?(h=isNaN(b)?1:0,g=k):(g=Math.floor(Math.log(b)/Math.LN2),b*(i=Math.pow(2,-g))<1&&(g--,i*=2),b+=g+l>=1?m/i:m*Math.pow(2,1-l),b*i>=2&&(g++,i/=2),g+l>=k?(h=0,g=k):g+l>=1?(h=(b*i-1)*Math.pow(2,e),g+=l):(h=b*Math.pow(2,l-1)*Math.pow(2,e),g=0));e>=8;a[c+n]=255&h,n+=o,h/=256,e-=8);for(g=g<0;a[c+n]=255&g,n+=o,g/=256,j-=8);a[c+n-o]|=128*p}},{}],104:[function(a,b,c){"use strict";function d(){}function e(a){try{return a.then}catch(b){return r=b,s}}function f(a,b){try{return a(b)}catch(c){return r=c,s}}function g(a,b,c){try{a(b,c)}catch(d){return r=d,s}}function h(a){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof a)throw new TypeError("Promise constructor's argument is not a function");this._40=0,this._65=0,this._55=null,this._72=null,a!==d&&p(a,this)}function i(a,b,c){return new a.constructor(function(e,f){var g=new h(d);g.then(e,f),j(a,new o(b,c,g))})}function j(a,b){for(;3===a._65;)a=a._55;return h._37&&h._37(a),0===a._65?0===a._40?(a._40=1,void(a._72=b)):1===a._40?(a._40=2,void(a._72=[a._72,b])):void a._72.push(b):void k(a,b)}function k(a,b){q(function(){var c=1===a._65?b.onFulfilled:b.onRejected;if(null===c)return void(1===a._65?l(b.promise,a._55):m(b.promise,a._55));var d=f(c,a._55);d===s?m(b.promise,r):l(b.promise,d)})}function l(a,b){if(b===a)return m(a,new TypeError("A promise cannot be resolved with itself."));if(b&&("object"==typeof b||"function"==typeof b)){var c=e(b);if(c===s)return m(a,r);if(c===a.then&&b instanceof h)return a._65=3,a._55=b,void n(a);if("function"==typeof c)return void p(c.bind(b),a)}a._65=1,a._55=b,n(a)}function m(a,b){a._65=2,a._55=b,h._87&&h._87(a,b),n(a)}function n(a){if(1===a._40&&(j(a,a._72),a._72=null),2===a._40){for(var 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 I3f6)D2Pt*VGXMYp literal 0 HcmV?d00001 diff --git a/smtERP-web/public/static/rightImg.png b/smtERP-web/public/static/rightImg.png new file mode 100644 index 0000000000000000000000000000000000000000..e892b383d00b488be38f83b65860af2d790328b3 GIT binary patch literal 1555294 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%0DCNFqWnqd7^&7d<}K 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
      hm0|&y~h-F@|F1zI4kJP;44Vca1Na6(JV) z*s5L8DwtMCl$j?zejwh|@saGBR34DgVK?VCGItG&z}ecBYIDyUbjNefGj_~emRnc~ z&N2m{$zXnt7w-e>+9G3rKuEUwOeWp}Cca+$hZ>lo3#P|=W#cghs}UFf3C@|y;eg|D zc^qDqxmb>j0ShMkk;?kX9%-!uu`!4WJFhSgkuFZdmEn5v-3e_x-&4_%7VASm#qr*C zt7rxe6JoKfVAYYgI3$HA(83T6fw2BEN-Ug1S=LDOvI#s%SQRClDwD}hhJVvM3IQ;F zHGr1l^=X=Er*wRVaA0`-aO#?%m%P%5q-HM+2l0L>lpZB_hVNQ~a1gXclT^Mm!Q7Lz z*5S2j8B)*ZcuGTL7DTyn!}^&Z+f=<&Uv5-ZL3owHJ|;7rq%cZSImHPJXj_u5l%;@* z2t`dO<4RAeP&Bk(t~+Hsd>Xxk6D_Np8h>Q8r!fXmrzp+Y60#$u!ARHwj7BIa31bGxVM4h=p97||55Ob3Fy;fO)nwr~>Ffb_0}VxFIQXC^!Mt)jXC+^X zm*}2)Clx4DsJ=pp#+Ol@_j+l5U`7}hk=U&`49|xS=zX&&9LP$&O!oY)*bDv{=~71` zqp!an4uWTm$>$H0S(XZDcs()rzU8ShuFJJGE)kCQU?K1mhTEr!Ld(jtR8)dlWdx^J7Cs3jC=d3{E|+~tM5B|WhUUak;Z@>Iy#kvsG}`7poWj|P zLL7qwZfHAM-QV6lbnM=4eh>WFUw-!X=I&~D_4@SC4tVk2qu=`W2VcCo{=*-9`gi`? zw=XaD$MtpY8-jO0qdg&eJt2t7JK$IZXtG<>T(*v_n{_*GE)6Q$6ux$eZGEb3QEAwE zT$$Q;i!QCTG-7ni^Ccnq_lvmZb+zMZdpPkEBZ+Jxh|U9yVv)9?GASyYnLCh)CG{o)cGjdao=$_ z>+S~~jIaromiGv$PP?5lNTrcW5xc<2w7}tSkTF<#OnpP9I$&P*jZY?93&^BW`TLs6^dJY-M-nDXP70dHAd{ammq~D=>MP|bNf3H0 z(TS4H!4`F*ZRDK5wS{mn;vFrU_RUDm=vC4S*dzG37xg9(>ZFpXq)@mqD*BTK(lRg- zE;bia&ZYMfb@n;WOEDPoq^ZzIs+c=+TO^&~_sZJl{0XRrzcK!N?SzxaQfjHYEV)d6 z434s+WJ&#nubn_9|5Epsq%dbrf$?k-oXRh&xrvcsdcMe<8DM&1t;!c`VUV4|BJFxC zxTdL~h|rmwydE@BM^x;~2UJdySrUKD91;BSls!V;;bXa0sYCEG>tG0srUgEHDo5lA z52g6}6Lv*>B?Od+N~?^~@hM|@390?DbMOrLN`qx^NJC|OFSX^kQJ#CIJ+S9qFiom{ z{_d=Xi3nvL-ob(wk}!pe$i&JT_)nQzSm$??b)#yCW6Hzit4c+jtzXu}huxFIl==Xa zP!wd~vBV%5A#!qr$vNr9xv$pv&b+d)jR-j2JqtOd#zcDl{un=4NzYRobSgi;8$O7{ z!IfFxu?kNS1K!c6aI)!)b(13HQ0-B_Dp{W&laHQVhGQGL^GR$uYJOr=Ri@`~5;VvO zrORkp{ew^8wZ>K4Bi>hmaum}`4|5EiqC-uUPbJo*Tb)50dtS>+E2`%+%R43w7YiEE zFm8|l+ZTw910RNEp4aBeb-lEU2|@Wvr~LYX)v`9w=76l}hBy z9aU@!an-#`%7oS8|Byf0Z`2byYC6Y}i1gnRF~25qZZ(}rdL$3OUmng5O7{dN8R z&wlyUEt(>`XV?=*V~q~9>`*95=r!B(NdwwiCisk;Y)$adBnOA*eXYBt<<$W|9>8Um zXUUu8enqqH@ikM?lR$FaRhsIinU%$<;L>Di+C-P8t*MA)bakkxi8!{{F=uXhzJ$Tu z+@cZ#+dP9b_a9mu9mjLDGLA~X6ht&uz@v)hfV+0jY4+|eadaHSy1RGxZoYNv9w-09 z%rf%{E95F}?shbX_--dE+Bb(FjtN&$-)y;DV(V>>!|BwIr>$?NU2E;Iz@>Zl)8^N= z?hchVZ|@u}Z~t^}Ev~KD;xx1P;ks^SX0|Q6#ZOyTT(tK5@#W>kp;=#hPx35~ygd`T z>^dLKE^HK>x`?Rz=2#k3{O;8EyXAB= zckFh0wBEgop*7zrR76`lxuD~)=mMM`wgu-MR$>02~=Rf?J{I7rVvzz;Ml}mFw9@ndj76%iWfMwon3dI?4 zxwtn#o9x=+@O889zHNOI*)1v}+q$_JfII?D;O?9Gx~|K@3y8T?A{7hGn@BsfU6*!4@d30N@!&_Y&-KzhdmQi1X?mIX}Sli z;NX+pg<z!WuIJt_)_1#}FL<~UBX;(!i&=yDqWBft z`J^YRFG90xK8O!F)n(5~M`)avDr& zB*Jz!1wd7xCn^q_4Y^S!na7FbuSrrr{rm_C1s`?7J{h2#rIf!`u@4y$2Y<%R7-qL* zh%{%94ue`n-&IKX=_&KczvTA$2*W4Sd~2c0xrhi&c(|ZNz!lS<%g9&rLqMo$OSB@*UYcT5?1W*v{IjUE_QMpMS@r^z9sD5+(s z%;m=T%Ss7rJO4mzq>^PK!pMq*AvlWEx=Z?MxhjmmqvF!TeFzpUkh(nUOu3w@Pw4fO zGBDednqkG599LMcndEY$_Z5$w#}l7tZDkBAwr=ulF&mJK;>pd3hX`@F6qB%4{#T%| zO#78aTuPC0jz~os!;ss>kz6b{o&jAkAJ%c0FJe4)sAoK;XHV6JIKI(+<5J$*Kdq)nNjdNfHq-Wx=egXgeJKm%sdtHvNac{Mm=+ zU;prYS(Y?E3K-pcjc({Zp{xR+^%JS(6?m>tl$CdX$;r&LAW5c-);;e6ylfeLBh5T2 z7aJ)m*mgz*zIa(TZ)}guW@~0bS|uMem8(!hn?{@3=Buf)s>bCJ-&o|?M?Bj@okDM( zW0@_V8f|7(iJy?XGLUY1F-?JrMAJ0d$h#~5`n!+k zz5n9%{a0@ew)eqET=sOZwwd3QAxN^0z@<7p40Rm{72imHLp>@<05m-#mUUr_<@f^UJII$7{D}HBiQ)yw-F;BB0=nFNFYf zX$I`lJv^r(OKT$NW&|v+phBRFY{b^BQ4UR-M0*ED94q#0ZL+lG&f0bB*UoG2o5|AJ zx@Z@^ocm?pFV)gv#NwH#O?7ChFHqvLfS^Qt&_KUTClnQlT(qDmMJf}1 z2~jWkPWIX)|KBV^84xZMWYTCzaKel)s3#m%**AxBgj7uwARRMLGV-1_mN_M9Vl(Ik z(V-_Xw3Z3&@b*AO1L}|XdlJOM>rU^hByI9mJ$klvs__1>e!Of+Z;M!G+U4LWvG^{k z8eL^mv2&WG0W6l3d@GAnM4(awa!mygHR}#N&O9>r#Z8f*sj7awY#+}Ca#=;;zQzCn z002ouK~&oPaXpEy4Obtw`Tb~*dzogUtBO*%s5YT$ytJG7O=Yh)7fUW8Y=^@lBIj#= z=>VbH4y)cD*7eYiTk8g+3QePBmZz1aQH;h64hHo|T1*uAfB7lmDW?K}efo4P#HAn`SgBqsyF-;{2NWy7(%czx0t1MUq=W}4Ltq)og2mZ89|$Id zSlp{5@p zEn_8>RVqU=vfPKvAKw&mAZ9&!2e75}W5iEq6Q7jk+t(tVjk zVn&lRC8e5UFOnJ$)te~zkn&lQ^Dm_Y{u%W)CMfjs|Eujy0v77VVOa-+faPoY0iDIp z!tXVYIn{PfvJ{j0)H5vEuXu&8P{uK&Ok&blN46O<@|VRuQUU}+Bnm+C>^?UrT!E&onHW1WW>5f&ikRe=1$7EI zwgUCcGAs41l&Fl4<5HOKC7kLDp=7mI;sJ%zlZaO8 zbS_%Tf9ZpdZbA_MV_|$Fsxm(yVJhNNT3eGaBIAR#KLg5S$kY@#PQXfnGb~B&QYhL@ zVmkuc-16l|KV96){pm=>=i~~KDmf*Bz~7v zVtj1|qBMv%b_%zDh$VD$3a$#qfqz7CU^G*WY%)|hIUdPwjI^zwO>SqH<(X*2Zf<45 zPLU+C4H!VeNUvM>XMgqgKlyOpx=AiIeT{)~Yv~yu7B^!s6f&7r+F;-KwRvE{(+aEu z4N45-K(L$bH1yQcefMHAs)(#zQ3Bl)uT(sv4an}ODm2^4rrOOsdhGclDqe(0l3#5`sfvY@J7ea11E6b5S4dF?%FrSJRR7QJr$d_7+_ z6WgCI+duo`ufG2Lp{cBX^g}zF{`qg-|J8RNw{GA5@bXXo=(9ii{LVY1A~AL#Liwc( z%93iwvQIMDl$*G~ zbvNw0*&>gx4o88Qsi-fr;{Z}On78XK?{xu@36uDogvF*PS)Y(iasm8tFh|C~K zQZ1LGSDj!mHLj_g_x`^`S7yu`?YU&e%UY2y*2yk=l4JV z>h-y`ckk`()8%JhJyfq^vT}Li@>?p|6k9?i_)&mm(MIgujNH44U};SiCZreF%UV{u zaqF_}a$Iz2s$zt6Gw)a8hD?b?<#bw1^yA*&Uiyd2w!QFbwi&ubSv3vTMp`OXr_cn_ zmSyX$FK7pRm4?zJ?tamER!?(#l63ucESTzJx%dbP-jbbLPF$ynwt4XCm z#Ijv8!V8GS4L%y8TL*N`k*In1LjYm4b?KQ9^sWtsL#>*L6x;gjrXPCwwv|7bu(O_U#@Q+?o_IgeV%&zMjJ$A z??!KEZU$)x5~yZ-TyKYD3KA;F){XC;FYCLP^W_TgyxGgPUw7Mf+jrY`dw;!%w8Pp0 zGu;U1*_?H%TeQ75Z46zbCsQ|RX0{QaXj6i{(>hf3^{dnA&|WUq6b*Rua9ElM^QwC7 zVwDh^+(ViGSs^q5O43mYDgeUIY?$yg$WRDH{l`z@M7-82DqtWtCK^^ugNEA2!STC zNXRQJ>0kQSZ5V;@Dk`f53E|W8k-S$jR=~jf^1{hl_2L*|j|v7^Gxxg`eyfCKY3Ixr z$3Z4>OE~g(#$u#{9mC4^3~xEnxDX&b6qa$%a3ZD&Cj*X` zrpo4ssz~SL;gnlhLYEv4Wkx4wjZzux_3?DVSTWWx>T>&#;rxv)PV2)l7!P;}$&n>F zJek}Ni51GdOBt)D1Sn6?mqYd9T)BDSNTnDL)d(FwnDD7WEn5O>2%xA|^f+_Kb06H8OqjslIHHo|-|oIC@Oa zaEfIlC1nQMa&ZTeF~?uO3Fa{KMigGw>@b9QgyCX}OoN_EFweF2rIaugrHCR@tdsxD zTQiHUqyt*JR*TF5s~j`RIm8n(IyeL)HFwgHWCnTps>FE+acXFw&@}HFTcLU}6R^&( zgR#l55t!dQ{$6W~+-RocFr{B+xEVq-4PnBk7(OZ@ln@$VhNAyYex@%@Ch6wD2}#T* z_U&LBK$&pHVp7PQtduC+d>5=AO=c~Cn8(8UYeT`1bac*>h!}KjPWJZR03ODIY~?Ic|qolf`peanezDhFuu6?z$7gpiivBO zWXT7)xYdlf4sbj1Vqg{O?!E8(zNs8e$7N|#`nay^@pL>K zkIUWNdRUdTND!J>M8YK?N{D2kE{dpz7-^*KN$w~T?LsQm-FuPj&1$Xb0_n;H`7O8vOx%J+A->>`LZSUPZX6xMdeP34-Pw;4a=X1C3e)sXzV7?mr!H8QRki*0{mbX?&;4-t=DYW=?$%#^ z_4w+vJU?&Wyg$EOdsF%DdHY{}{cXcnKYeqO$o7T11CDb@&QVs%1xpgrTpr5ehy4JU zQ9QzHTnQ;gzvfIMI&C+zp3)|0;CgI3mgnA=rXVjbS3UN})6#bp(RI?I7*6yu4h$ef#_mfA#v+>xcjLUw-)b za_t@64ANASrNFPv0mjS%5kx1-VwT8Dxg^n4l-g+qp0~Xz*4CD$YznaNCQ1Re-LA&X zR0W4c7uB^bVJ8T`3T%R>t$*0IkC*bNqLVgek_$DfP76N6;YjZ zlaEZv0+K9e>;1Sc_ou_hmy2o}TAJk8S5#*I8T4q#XtS1#Y!FjYBpc=wD3B2v%viU! zW+W71eOX%XQFW9?QE94SUMV7aT$gri`_A1=1l?1iQ-zA!iHcB6xUqN8>l6BB8rTVk zc+wygQ4tks-PuxWP=zX%X0~2lt{-0P{nK`T*sr@uQ(4>7lWm>LMuD9cJ+5tS+61D? z@}smhU~LOYQ4-xO!wr>CK&nVvRhqn9wznUj@qo*|Z+m|@9`EngRej8f6gP8?{Ekf1 zOlXM*C#^=PB#?ZJN$2bL4uo!xt>WPMa}fx%a(crpsUC2UP+=0Xs8aCz_va7K`~BVV zbZnQ)w&=1Rm*=OapMCN8=HbMR(j;AGa!TDtjHPH#o^1U+PCl@~me=$`_ zf1~s&{28Y-wJW*TZUi{qRlo;KQ}B3t@OT-c;LSLP7tR4UA@LGVP2ErKp1MC?XJZG) zil)~?fEFu|e7dOkY&R3LZ=9K0;c(N^%^NV4en`1$7zZKAU_??tQ7%TYgpgPgh*}SD zGM~wDQT|O3bTt>d9*49t$)ckRMlK#j>LSZz=%)QDUXlMVxz3tT$;Vmxhsk~uq=8Do za3^uh)zx8se>`kxR3@k)sB&plFp42$={ZVlx(j=GGe`@L40!|@Qs-acU9pZBF~oPs z6_AROi$N0T*(1F~CUt&7iSeBB_eypriwAdUL!IXsr~u46S#Gk6|K*cPd(&YMX71k2 z7*b7`;*o^))=uRx;Yx3 zwQlnqYDx%?XgvQ`s%m-j)%oiQUFQKv&MWZ;d8`)dmj9hHbhCQMFVqrawo5V2+kpkP z5gAGFMYuuxj7drPu4Dn|1hMt}0$3#Ujhz_h7xKyCj}4og>0B+;G)tnU{Y9QEp4m!3mj`$HnA3SQuO#o1gAMIbLv{IT0EwBLI6mC>9i4LaKjeYPX}q8K057d zYT@`UYViX1uwYom6#qZ~dR{>imh7Pi&=2KH!Xz;}Mip>RvRe-|4pUgfbR3|V1rKu} zqc?wahq1EvqNhp}PD0#FDTyJYxKLrL1VK%Esd2Z6-T@QB?pJEXVYhdBLXCKkLx5b-L|c7m+N`k_HI}0S(#7HSMuXoPp1$2{$KvdkAMBUw?Djn z5p4v!aq(h;L~G4WX!=NusD%1eUv4|swSj&v7HDUX&E)%+{^9T6{^p0L!zxdg?Z5s< zU$sNKY&&WUbJCAR_4I^p@Tro69O4Ayzt{)jwszcFyXhH zJ!2+t&^$u~CHx+El%{ARge_~kbfR};w@MLJRjj1w)o^|3YXc4MKJNW)eK<6=PEx(w zN5R#IpjBc8%KrQH@5Evtnh;}R@NoISAE0KjzH|-;!jMF!0cY^e868!HqVL|H_r3r8 z%ZD!?*MIkC&wur|Z-4Un>v!+3*UP@__Wbb*@Y}a9|K>k@^DqACPyhIfD+mFk-?8eJ^ zKdgBjCD$ye-ryTSCIE=GGluu96}rQOc}2dabE@HB>{ahC*fM>+eSLPTK2Vf{HIrviy6nja@(7NjaU zPw@sZ;&R>Zj_c!TeL7#IEf9!J9Jq=Ph^LnF?}V`_4y&qo2|X|Umv)rNbPC+Vm6mQ)ubBq#h04SvSSJ?O zcABw+*88?Cy+eV0x8Aw!w(WSi^lhh#(J0VPSf?2;dzbURHaRYBJvLIb#TymU_g#c> z#A0=MbJ8XH+($zeTVJWd&;}# z>*ufeMm6;yxpVqmV}g=glc;mP^2sN1SXw*$uR3}hUQI!A!aYO)12gjw#iG(jb-hV& zNu!pFRe`%i^8CGjg3;e+igWqj#*iGh>d+@*NbVQs2jT*twMBjB}h2IoO^6z zQj3~9X1@oC(4~jDF}Jc(n_i0;Hb%xL^IYhL#DF!*kc0GD$9snlp5h(<8eUz=CDPW7 zamg(yVkK^~Mk1xfHC9g41c(B@Dc32-7^}sk>ddHP5b-GleB*_Wzp{da!?cE8r+b|u zJvX_|MT%eN_>&UWLZov)WXEM9jd(&t816X|IyrySSf%{&5gOo-=Zqi}vCHi)X!9jx z5zaA_FybPaA5rl*$vg|d-g#Pgv0dDtk zvTZ5A%0$<5uBfdlNoV~gsQfUrfiROZSlfph!&r=*J|>Y# zY>I{9Sca5!Bq9zG%EwPaHN@-_7%pTUqBSIeGPb^i{N_jbN6KK`{47mzJuoMmBbmPt z%Tu!ma}?W_a1aKwEMBb1AUYh97GmdrC1#nNKAJY5Hg2qZ zyt*vd_*J^UGCyY$<5}oFv2-`dVv}fL$VrUY1#yM}CN75mI&aEkGv}4h+366(f;daL znZzU?ldQ-2!1Q?rBxU$zlJ?ZF$-K<=5_L3_0fF51fqpkT4lMq6TFPcv2%k_Y zroSsokrJ6YnMOb7Gvtsg>J!Llgu2ff*95F?ry^=iLXsY&w>2{rFzc6zA4uM|$wF+j z2(&1YgQXCyH5D*>`A;6(tz&wuvC4y^e|kQ@T;q}!*xK^_^YynM&X4y8g@z`D;1=e< z2%~ix49rN7#%hZIO_Y$GW@gc8Rs^sH!7@N^*lG>Q1dtAwKycoTy|1UGn;s6!@vxjP z_Hw;yTUu)Zv7LuSRrS(&Bu?%rV5B-DGd0M}X&9J~L3xuY z3B9~OW>dy6)X4y%`A)sGD4p!&ckf@xzC& z-rTpQebL?c{SVK}uYUB4AHVwZU;j><5{+ax_AVmSE~;3XF6ymIWsIwKOGKjfS=@Sc z`>Y~|MUB|I7 z(OD@y^e++X^9#>)sj_*Bu1jKCn4m4b(@e)ZxhVjIQR@^$4ZW$mMDBlh|0;2c;z5EG zJ1HI_fJBHd(AgpgUZyNKyHi3HvFR+KJhikf>oWZw67uH=T@D z^kvXk|D9wz*Ct`A3GqI(qcck7P?x2W3k@9egpuY0@jvTqI&3NfKCwJUp5HTDkDphf`}kuIW; zwumgc9M*Ph>jooD2B@dyR z{{JqStw~eex`|?0ni;H{h!^bZp2<$28wGNIe^?Idy0*);Z>`&E5BG=X>tR_Nq$HrE z3CV0iq>5xt5}pE0O4irbp#cHZr3x4cM0I?P^aFq}EYZBq*Db^~%UMW*NU0Li#|vGM z)X!qnK)Q<=g_=1e!o3cCNV-t)<&aQ*bQr1hw17cmSzn%h8=IHRRoq}|M!3B4MukHL zV5Ae2{KXxKJXSO0!9i_F(E5-!3*(V{ls1ILxXBVHjOEIy$#8|lYz!g^_(*{n%V>j~ zON_h7>|k!WBuECq#IAVLr~BGw0{RZU6C=t%t~7dw=3!1Cnqqy!_Ew)jFmNN(Pl zs6459`8LSM#r##$B)W8m#HMReWHWUtVV1QTk$&xU>@gOIAYf_IvPk1(K>$DZg7|T? zNYZg8qmZ!_vqL*(;e|vcv3qU^9Q7%JUZxwLUmm$$r6@PLiW{{Zj4h7?a>;9Ku7pNl z9%1eZIc<8aD+j}ye_c9TUU!bn-PEDLLlnnr10E`5Hi>YGVZvkWa^goyMautld@R!i zfs(F#Y@P+gQ5tjiY8|E(0n+D+*(3suWvG1*f*t98F)VN#(jqleruSqlX5It$4W|?F z6!bDALz~Nb_$MAxQK&@Df3>svN-rqirc60-&{f@B$ zQ(@y&0bj@IzT^4=dk967NdR$6AcI%vdod zA5Jq{_Bch3(+|hrA(P9*JRrymDLMWO2Hl9km{F+PJpFJm(zK@2P&8mNN|l^}ggMFM zh&+`T8YJVj8C{qgzKkP^c_Zd1+wHD$-jWF|r_XarkPBJKy(bFn3I0!A&j+t23;q(K6Pm6&~=n^2p7@;_rcqKZzI-Xtys^Kpv(c6q6bCiA%hL2sn1dXTqq)_reU306QJ{dhZ%pL@ZG<3;%PFx0H>N zaO8oklt|GNNJKPiDSZlo5lB^dERT`eLa*2cS~rifIVzE0Aa4q|NNWO!K%06<%m0gH z3->lLFVo+{R;Z`NsXN@-BGXO8P(}j_ce~3lJHD7jsXZe)#iVi3 zwyuZHzVDrKx;vd7@7bDZ6Oc`pqyFj_pZ)c>&)Wu-j;$-m-bKM~%eug9w=S(ArQCB| z_RX}lzMC#evwe>!EseagcakuZMbx1G(|`Q-?|%RO+WXQL&m`F{du#gl-@gC)_1&Ah z)w;(xyjC7az#CAIBs%DK!+aT4TjDf5CaWSQs=j%I7pI!pvaOnl7U2s*B31k@|DpOd+rD8qKa-k3Jr*4WTy>hO^hn>(K^MfL3uAGGs_cON&~|H&^t z`~Uv={dd3r?u#!TuA6=T{ri9Rr$27WfBzT1|N8UCfAi;mw_j~-+G!p`Cb4&lu^To( zn>2|aoq9Se*&R?aiC~z&;%vWu^P-)N;r zXx-dup5zdD3x?=4O;LoPX?yE`gQ1t?Hl8a1_D9vj0&FuGwVBrCZqxnC+&tq z!)cLKcw9xGG)8Pa4Qp$Sgc*0U-bsTrnvsSkvK|(a+jZMFcA7wX??7L5v1s`OZe{}8 z_x-Z%oiu}IqMH$2M!rf|cDK}$e=h@{gsc3|h|aNOkoDp6Ui9suAF&)XHiJo=`#nt4OZ_B(gec(c)vcsT-Z%TT3CUQmvZP*GgE#Ga_j7_W|#{x z(>}@14#MvhHwx4yp8!)35QAY#_PChSayUIxaelZ)d{zJK{j`N0a*1n1cw1L}a={my`VQ3@H7Qb3EG`zJE* zFV$=VSjvb8Q&?^=rL%TgBF%%;gD=dlJfMhKtE0pb)#G$Q- zN{%GF5s2n={io(Xym@x+Y5iy{u7FJ1h}i#x*Z{04J~D79g6t^1Twv=wn z(@8zbO_=0@B+H@=CQ`AZfQ9;+NnE$fc&P+}4h=AsQLre?H07qirp^D+)%Gl5ObDY;5U446;d0)#%eLID zXY$|u_4k*(-yILvtuJeXcjs*Fho|c|A71W{s{-9UH1Q?#j7cJ_jQricguQQi~@22g;1&r zy2yFwBl*R>ZhQZD!QQDJI_hO?BCNV~+l*=%vo0tfXn;D{Elib^NAW9wEVXB`D^z`Z zB)$bi3MFpDzFhmekI%0jPaE*z!}+IQzCPRbZ~yW)>+v7-tM%Q^9eBE4p05ApKmYl< z^56cu@AmDvsXm{#$GdjE^rbZmz8C^)5bNB*OQ!;=vZ#3PRE39y5x6&#iZl-dn|E1k z*kG64%y8}9j9ce!7P&_vs?l58tQ)1ffmYBfkwK8xND*ye#E&*uwQ&tt0P^m*iU??J zJuCu9Gm!8)dV%0#B`qS+<)VBz>hKCiTM-ZNOU1-l3AfSi%#(c+M*JFX=I4kcq{dui zH2NvDjUxg?%QFj7KFsXI?*hiz06@I{ppMUoCg&4xUh0FD+^qCi6OE{dV7p>y5JvDO zrXZ4}(9=a35k){Ka^3r3T~uYaBK+`_+YB7UlqH$IALAg7c|-weVq}AQJ|ME0Y|$Ud zKQ0?I`rSxb6!c5v=rDE)(P`psf+%fi%hIH^6JZvSD~}4~@S@9&cNrR8OVl;KIdAdd z_Vh~JW?8f^07b65U3Pvv?+P3acE0lNAS&MX$REbR-$;mP6M>4TXct0N4K(_(hY3BW zTUKq|Aj0k^C=?aZrmN~_4|k`-dcJPG%hKet$KzpXBldt1wh<9ZavW5kw01JW{SvJ) z5Ilq>!9gyIv5rtFGGorOhDm}(a_`ExY`*Os-oD6&SR1QNbKDEg8W?tLdOGOcVOdnf zQYngRPqJ#2z+x`vL1++>-2&8*!du!NAPnZrk_V;Sr{cs?#z!ZyymjaVkz*%P4Vpy; z({O?XsoU+*QhD-5!k4OWz#JFw(};RkdIX5+C#|aqgmV_3AC6bfE)_g|ZUbQEzH$B0 z`a%vwf-zbd-UJp&L>VS9;_)Q%6xwH8L_ALEC$B0aEG&nl79*>@#@0ygQSDN(ZAhK| zrxR2pArkg59I04*%f++(9QIa%Rr~t(L(rLQm+aM!+E|QAM`eulCc&h$$ zubv!RRG%AGr(T*m9{jz+B^92@apXSc7)5|AClhJsz9v(QW71)ivQ&tQX^c==ny4I) z9N-Xf032z9aE%?=e{~`U5h+73iR>ra8&$t^OA>i1DjQ&Y8$XOCk<_u|8EFNEMJ;e2 zSQvvyUw?pBT8`SL_(+LxX-bHV%{%DSwWKl)`v_Tb7H=o+NKQQeYJ}rQSLlIb8L!F! z1;@yyoGiq#lZ*t>5xfoAm{mT5D+2hTV#uB4#-lvF7(fL3CIyIeVx%pZmo;r>EnK1m zz-S$o9}@BKw|jkV;NlB4)tVCAme?e6t}7W?9>6+$``oWkOC|!;aO>}%pu)U^g~l_8 z$v6z)&4*=3R+`RSe4E8%09S%j%5jG2hnS6kR9czH;hkPB^F)}hLE#f{GtNo=Yu_hi zosOE~!&X~~^jpb9=vscpHf0=JCN#;cF2rBsg(~xVkw5qOu#l>-DmRFXYE>hKD|PoL zXE-9fGG)zXAbs97f6L793vb*Kjxz}6mJPDxZ^@R9i5e+|H|e^NTA2I^yp3jx1Zz0~ z6br;0{Lk{-GEE`mWXYwe?o?qxBCMW!7~3~&>TD{~JrAP8BGwiOWX?Mn*C&zuxoCit zxJmFl6{KtCc>z9nuhbJs8HrG7eCk??wz%?uZjiQa(oC1vuO6OuJ)9QWE^$ac?Q1|3 z7kcIS2oZK--+SM?s2)U{W`;`K3G}KGES43q8h2oTaS}>03d8{rdIN>*Z0IS29;2k! zR0Y5t(Yu1#6d|M~azLz$iZOp9-MVVJFC)p)JNkv3Y4gL_dfdR7AadcVlpRQ2KE_>(+PaTioO$bGkCen@WN-Yho$$8t&xcC0D z*-nVGZ6`_eZrz&7cG->g_uqc}`t`%9!N|B*>{+ZNv$3hbV9{j25Ru-=x`qjNU2)uG z*@EC9G>)Xg5;3?0dz_kV0$t>MvGWzD!@4%0+oB54le_xv#nr_i?_c=pfUoYB$CYm{ z_I#m1ymze{35rTLTsPZ|$3=_85-_qesF<_3Ou~W+TH+c*{S)`{a5d9n0!}A7G9f=f z%FAW{@O=I3N3YK>S8n~E|I?p7U9SJ@fBg2p``pWnEMyyU8X{rom8m;db)U zdEWPPxASgB^*V8k0)J7P7y?x>Lu+b=P9tDF$PGMc4iJx4TYSFB;wtaw2T#xY<-AL4 zX1#Cww{N+MYExAlkL%hNU0{ZNkMOt;#I-HKEsSzd8P+*md;|0dNq|j#I!JT!0H)mC zu#kxmK{X1uArD65>lm*sl8E{hnPCC9dOrRJDN=^qM*&nLVja&ZAuA)tYGcTN`81du zC1YY${FO;u;vq3Wfk3+Pve~k%9mFfxZBtKwiIFYt?9!1iE$ZvUejzR65yn{7i~8xQ0k4c8~0vEz+1X zrLik})Q4y!HM&dyBG=8HFZ+4xAD{Q7$>C@pFZ=P(_Rh<7e|=bGklJ}8NI=zVV7qvu zZ?}5D*Jj(>hbJsl3~LIHdBd#%@|wid4_zM0O< z{BaHvJ;ppf5s{h@0lGMg5Y}y1xSm zs-nl^a=5lO(X(VeC`TidtsI~b>Et#!F}4Zk?o3+ae*8Yke)V+&6X>XzIp8t(%%lV$>~{R8OEOGSA&mE z^elbm7;YS#+6-*dYb(4E4A$j2PyppLCG(E`E52T~4#fr`^@8z%V&-8vhmZ%z4Msjt zw1S=`1L=hoSsXxJuaG#Qmo$unH-{L=5S`pIR#+9W^(>2uT-rk7l)V(p@~+B*AHyAg zrXW=s?Gi!eqWWv&o5hXCAbheU^B6dt(o~jV2F3^`-zc5jgpMhLs|Fj+S;-M5lUS&F zGqqA-$QTbqrmYXyOq(DXqbmO}Lqnl|RY)gk_7H^Or^hoZzLnAoDN&gQkg}J995I-X zykS5&&3>TkjWA{gz_lcmLDD5?F-?L)4(pf(i)UMA!jY>5fC({5DI<7NwUNoz4G zIB}D|m8#Dn5HWzjwxs2wwEtN4JjohoMJW*u`~l8I?ovS~@g5Ny4s{M~EdUeb3E4C= z1e%r1X2hk|oTISABn)YT0t9^P%lQa&NpQ-j_(055pwxn!5v3IZd-VN%cBE~}h~wB{HIf;rz<&%}$|ElFGF?_xqB#}Y~H$D~TR zjUmx#!Utu6BoRPGucac@gZ#J`lhR%@pN*_PZ2)&lK}GH}w4AdD0~U~7m=V&*DzuWu zYKTzbM7$%j@X|vWmK2jyTUnDsghtY+lnh0naMIu;`8f_2hd?cH!Odh_Cq@)2vxLVR zisgs@V-W))yc6RT^h?z%@I>k&CIjL=Rdgxz(n~0e5x?{o#qAusBtEI4(nLLdYH70g zg+Y}lHLLPY?RQm>{A+TeP?LW)o2?$vbkxC}QTJO7qQ*r~ySpG*aB7W=syu z%pXQGHgA=vFcB{gL@(YK2_Nw_WgLW2puQXQ>s9IXQAD(p*3Cj4#J$8U6%fZMCfIkH zbpUjyuR#Ru&`x*jab4CXx@Z$^P1YuBlSO4+nyR*jviw2wy0e@1XQt(t=ot5zSAX7{n)@jVONJT1~hB>6B+9SA_6WN zw*n;*IgpE#NGNlkye@fx@Xp2%KTx7lBO)f&dpB#UZBYTtOw(wzriETA(jiZ~d?9$f z%Ax7|1@A80HZBoY6abyPbm@k*!<2jHZrIIsLnjes69uHEzql^#*xD*wn%7xOCok*< z7%`{;mo{1V!aEZo@bP88bgZZ2;izAI@o;Roe|6ga!H@sj|Ic4MZM_{1fAhO{Z|=YT z<UCl8?W8AzBiS1)wRhItWUF&VAdpL7RGxZOc?@dH}a0A*kpC1W_WV_-r{ok@*0C zc_UkZam$~{$-ELy*qhPQ2O^rs2_X)GxZgfpCqJJT5gUdisX^wKxQaxrp5&As@YJ+; zl0p@K{ZmTho;v)T(e?fRpX>MKtx4v zNsK3VN3y7-YR7j1PDP+9iwDP>%czN9S+s9#-Z&>BgCZiTVvv2e^VVrtkE_U34AQKr zbV4Xi#Vl&_1>;nWvRNvf21PgX1%?-?^TQO8=>H+wmbM-j717poX&u_R17e=&VYI0} zr6&E6u}eN^F<@OAd)S6zCyAYHSUl7A{I%?q4m(r$j(?}Hb@q-tK2y@Z+{Q%h;@p;ShBN$;DI^I6xmJS8>j<@}eUF_B5D%ANTCUK(n5<$J39HZK9*p>r z1m?)xUwF2>W3NLPba+3(I*LXL&xn#>CKERS5d@7XA`}o*p`P>*C-4Q3 zZW=Hm4j4=ZWEOW%8pW(4f+UACd}Bhe^yfj`Dsoz=06vGW%%>>r@R8J`kT+EFpF@mp ztb@xHuRX!cZV8A;lTk{LA1oP85xmuu+S35L;Eu(`1bG-6XCXXK8W1D7hAE2~|cppy_ zH~Q(8u(r)rn$+nDW&D_dZv@jZGH=O&-MWO_SA1wtw}K;;rmeNsAQ3eXQ57_8+C+gk zs+Z&!B7`D}#W|9~Q{~{@FwMy+UyOhGySIP&TdIgIitu8|1!+1ZDgsb#(6&T@Bk8?&@WUA|XQRQRz|Xrq z?Piqi(#dY-xpDzfqLA)j#V|i2y0M9^io+s{%0YE$QLoTDU`%?S7B#_ZvRnXQkPpw> zW>8(W%l`VfKE2!4`}O_v1x*g?;rYY+R}XhTynnL()!m&uziclbFaMigeE!=HPwzfn z^~Y#Ue57ua7?&r~KZF2SR47rwTK&nqKHOlWOzlRH&7Wlk(TX%1(8jM0NAn}0#8Ft zUte6#>QhNHRJ>F`8R$g45J*Z~d5_1YrE}b!m`KGak{K17FV~Z0ZL)JkP#tkuLzL$X zj*-ZSNaxgaf>cF3PhLTycWbR3&^L=zGD|hDKN92dsAU*0wX7cItzAGcYvB!+=BuUf zmI6&gW$(Qdws#McHeZ+CO&dhS^SJk|U#^`HUAanRr$Hh@>S9hpMHSvf)KR4ZF(lc^ z=oJ)&?XcImq8WiEY@pEmg0^~#UZC9j+%wcavbvPhUylJQmPVs>tJ>Pyq#MrH?o}Fm zNWGg`e|ovBZC#r}*o_}wt||+05K)hNWd#5v0Z{kAH0c@L8YdqaVH9|f(}`u_5vnNK z@U&b_lHGYKz0r1ybU#3V-i_UiMH4kb36a6J7Jy<^QGU4SS8hf!5-P(ehdUoE zoXFh3bPL@@60a^=9C|2p`H=C;aqLlpB_NIyo>k(Giqjj*dBfj3-ELKB=td=X7!n%Re7$>3elEcd77O9&}Ao1ptf^ z616e;w~}5=8=Ik}VPt_!E1DL4Oe*3~Hw?=0rBooeN`%hxsho-9_??%o%Wxz!!6k*Q zycb6X`c-7q*F%;Az8qp?#2;&UI8YSDrlw>%sd3g8mkP(~$q<=Po?>DHz6Y9(gTS0{ znz?B!E9gDUgnzgO8-W9VE9*rOqLtjN*d|6oMi|nu%K=Vu@JU?= zVi7;J5wjr#$-#2(6ir|f)r*Q1dajm#Uc8G@nhClrn$g=J`cR|WLj}V{7HyFi*Zd^g zlM<``6-k<`pMH#@Up`28Xl=Z_v@8H-0ny+&cB}v2Hd+)aQuBuIOchvji>HhBU`fho+ zTOaS*t7H4@w7j`n9}n%YNCO1u`Jc^j-t5x*yG!48+dVs}_sy`AW?sQhc3N8&QJmKG z;r{S=zy|#Kf_G0>-TO)$6-SX%)4N4atDaUpF1TCu^{VYYye^ONU4fS!Puu={wU@nr zyzC!0d-uG5xbAOXwr>~x_`JV;xi)B1Y!^09y*wQHws|_J3SU2*1X<)?rFlsusnUwE zaSj5KhinoO83&`jmllyL&|rS$F)Xat_$w>jL}fRxwn&h&+tbn~Zce@(*;cuu%js47{Jc`25#KUYwP!3XA z009AwFgKGWPykVVb9WG6T~vgJ!+PHN@%f@nPj_qY{P^6>%z78WvZ(Ah9GWgoh>ZC~ zaZD{PK&6B{_0H%U6DW9t>1Es)c|b079^mR>k~Qrw65Q$jIv|n#h^VADsC|I+#KOQh z;$nJ%$;y-9rjsgh=o+;rGJ;!vau|M0$FCCyl{9}ch0(-$iR4q_6IGedEo;OfeDpNZ zBSd?rMAs6iMEA-NwE4u^jdMhbrn#tqmLb6$kT151*?zUI(K`~JfG8pcZq^AdO(AMt zw5-!_MuS<+lV~CxZulgPVA$g(+M=rI=GIn(3#7FsWNX^H0j2_P6G1ZtoA9*gm#>be zMeo+8f(AP-SUs(FkZrnskt8IZ{6LI@+U^lI+CdldR=27k_P#$~JET`xKmi|4%a?EN z?~W^t+qMh1Hq{n_CgtA5oZR%}fywxnAYHFTV;OeZ4-klazn8CWVmZ*th?LjINQXH(ADWby*nHk)yzwR|m zo@2&;vxaTVXnH;}A{OmNW%x@Kf-k)(nkng($+S`e)TJp`<5Goj=gt5zh_H&5rVmjs zkR133LRqG=3^z*BQ;s>>?5)RWDuyLBKBV!ALRw|1wNhEb#ZC6f!igBARaD<&-#N7; z@~Cn83q5e1ReQzThcSGC;r9+2KMQquLy}H(su<@uR82am-EiqynF8heB|MFCe*V>} z#3^aZ%DwcW5^I*PxM?*}4@LQ7VMb87H6`f7(oFG! zkUi$U*SO+c0V4i66Aari-ivZ-hi5mIjls^Cn>Hd`E|vi1B5pEF!6&<&`r`kI?D`pir>X!>$~yC=GTTa*69zXKx&0Qrj;pS z4;CFI>?MIACo(E;qReRG2&W&GIi4S0e<#K!jE~g_@>5A-OJ!2~3Y^D-Go+NrSeAFl zNdfry9cyooC}NxTHq6v?nw8P9;!0V=x1OJpEnzOlNC+S+ z@0N7BFEtdYVz3hNCf~Evquiid@1VvrTQLBB!hM6TH!B9*e7q!c(#b)P3f78Ll=y;0 zY+0yq6aC8oP3=uAm;n)g@^=ltAiu>-yvC=P?{>#>j*V%j;3V;(g64>S@aPxiwm*L zIGO`$#=MY!5s1YaMnofON7E$m)+Lc5qS`!b&K-Q3$>MElZ6^fmB$nd9Nz9YC5gGt)?TP%)EO zNVqf0VY!kutCGC#+`Tv)cv$pq)rZ%I*LR24cZb*a%V&?v=cmJ~kQrNr>*iBKrFN&S;ly*Vas^%lfk) zKmPCk_~1;Sg(&a98Fv|Lr%=KYX}8y=)f~p`DJ+dOsbHKmW;R z0$lcfJgk0EEECA;vWLs{WHiUZdIFkHHLgAd6N-SUxP6Z1=%9$~X3y8Yb;7UB8U=RU zO*^hv+d8$05l@$X-TGl|$F((8K`}A^H z+uiB-!-wO`^?&-^cfkJDo6~3aKlzvc`fvUp|Knf$H~;5f zohUC)*B^a${};dc{<_(s>M03SGSp}EDgi{Z{els_+h%q(Ud*=6UL1fF@2HrkYMDuv zlb%c=fmEQtWy}fcp_0IKks+Nffj||9_29I?tb=mCZs*H(e7w87T$e>f<#O3yM5wm* zWnGrGHo@=@C5dgETSycWT9)ue-NbeP-Fy=%QKKCUP|mFg6!ic^kEXp5u_D;bM6gK9 zYynLV3yJJ0_bOG*IK(?`m?F;7KPV%q zN!Ub%#uDE+H8db=3@89qGc)kGG_Y@-lKI9lS6>#bUDdcB3wR`#(~T!h3+IIe+{9!V zWN~L-wRKOLb8zUA0S;AqQNM&ZebB3XaqJRLsHzt#7XS8eburtLV)irr> zn4NfCc&9h)JJbhcxq1237+yLW0#pJT%NR{?U*>T>9#2Rut|{J#D{ZLnQuZ_;kzP-^ zj6k%>ipNG~Zfd$CO>Vop2C)lP%gM5T3{n(<-@&@W(?DHonE0~X{7>Z~6%v8d{D-HD zS&l=K>KhonPRG7W5neAV9;-5bUr~cx-gxuPdO_;P;o1(?GHvbneEKPa4u`P|gQ7_i z%16xmw;}*lqy5R`=TB=lVq?g$Nluo@luG`G9F3Sl`8y5~@vFLTMe*>rf2!Q^iUkNV z*fizTjIe0Fnq}0dr%0mVpgAL2?J=uq*kQEBPPt&lRq;GDU>-Y#G?l^$1ZEi~X0U~SeE2j#@cG<=+}{Q7s9)8avMXc9_IC#g0dtK z)0<0W0^af>$Rwe&s1#f9lCA@4CLKdP-8-S9Rv?sY*+eNxX=&`b6508pqT@emKD<3$oL;#kxlbOGJ`Cd*d$r*Y^EGdAgb}evv z;Pr$=rLWV5lJj?STZ@?%;QHyTmV9QW&@Gc5s)!` z4(W;M%u`6*8fp|u23DiLs1D+<0PrWI%3WvT>ZG>4-7+eqcXLwpM z#sNS^@Wu&ap0`L2gF~*GAzU5)`oogM+=J_RThDCKQ%5ZR8K^l!$4@}EC=3# z3klPH^FxJ!V=~WHyO}DMrpwZn!?J)XP*tI@Armn}I4VI5S(8XB+!mWd6O)9Fs1sQX zt@6@xan0dbEiOozUm+DU3QU`-C*>qiOVd?av*tlJ0P1JOJ~nYyFZEIY-V)VdqKZsq ztCn6t!<kW&ifW{&eo|uKU{; zd%ohl^|SToYd>#&@11~kddph6Yv@;B1priJ1zM9=hr_;Yi&&G^XVQTpGMk0 z5g|+p4)a)xk{4qLCDD!S6ro;a5v)xQi!4o6)g|+VB7a^8LPf4yfA@6$>Whb;{rLW` ze*N+3*KdFS_TAFt|MGwM)nSD!(w5e@?Tg35|M9>0`Ty&G`t|?wfBcJo{PQn=`Sq(+ zDB51O{qxgu?OlbII4ThkM+bIe@7&3)+urHjNGvZGc?PO~&m%QKT_oX?#T-Slt9yn5 z(l;1VfS^P1ybO#K|BiRj`$!;59A2-sEZUmvdq3VCbXnHBldig7FPCjM$X#2DYLvib ziY0<+r2$`}2O%vsjZr2~JmXfvZ;C?$&u5Cre3P0^QY%KbXd59!+#FLkYEhvr*W3c3C1ogI=$SYkaF2a)n1ukMYg6|GJz`%K{nplY z>*?9}gUo3A-nX5AtkRllGA9q0go9j>(N6QutxcdyBdvEzqjk2X^a!9Pw^N8IR4#k} z=G_yZ&*y7f7K)y)T~Fv8TkqW#i@Fy+sNq=;+5`}2s*AR*2RWv?H3VARuT^bMZw>Nt z>EC^LzFQ94ws-cs6ICMLb|NH2V)7l5{>31(z-^li8=NLoJQFJ&iNl|WCx~Z45>r^q zkE6PDFCSq>5;Rb-@7`7y5*R{&O?6qYv?fRNPByl+-P-{YL^3&jIog8>m+zD;J6A6q zkOX5ZXBhPx_qpM23nHeDsdK)PIK z&v&!*;?liHy+rIo`OvVq6P?CJAfw>Mt+=_;PyR*nr9fdnKJg+gwLZw`atzJ$N<4iC zAynnbBWC~-Wdx-jGEsd@&P2*wCR1A2(Tspr07x>lohPU14M+)nZPJae6OOl=Q9lF- z=8%CS%k`QS$)mZcs~H_Abj^>1Y@h}i=0P$jiwx+5Z-k2BmLps{ejY#7QWTBhdr25}d@8OjB zs}qpRe-E3-;z79;X{nP&jKLxGHDAXe_BWE09~`fW_(i-kB`BYnDIkIBwS?1)hyR@a zL~PS=&|Tm|Z7t_sf9e#LfE!w0&|Cu!1*%HA#ChM8PNhsOQ)9B$e+}0eh8&U9O&G=nN)*NUqn-Fr4 zuo53i*$;y^mhKP!6lRSDOshIe0wOlYn;9@e)hX&SE!XtJ7~|09G|khWB^@?1rkg>_ zAZcWjS4Kwavk5|I2P-HFqhT(*y%^6DPnN* zP{|e|knRUf+Jaw8nr^=l(*x0^vx_lGy;z(E3D|q7h|#ijAEUgTcnfH%>fX)FR0Kjr zgQC+^n;TYDX>DOe4+}IR=_aZ*rACmB<|1^&j~a0mR(Io~tg5Kpm{pY0PG|z4U??C( zMG@8SJGt$Bw~ZoeTVFjMK7TlV`RefF*X!30>sJqlR}Y8N0s%I|)5X5~u)V)*@6OwY zm;QX|FW3IE+jZ;R&8XG)~(y3CL&OMdg=e+ zFMc>4+K1=uwTP|_8v%9z6eGH-2@TQ#Lb|aVt~<}@-}lXUF|er|RZfR?f496o9zH*| zFCLfAj{3#j`uf;DyIbEJ+E;7)hmR|OXW;$CzI(oY^YQX`@3*J3t+Z?B-bF9_smZ#i zw@swgJ|Oaj0WiXIM(zY-A0*h4t6DTu7p0o8A~_Pv!bRoP-9bPR?q(o%;JO=)ON$e~ z!1Dm-+Xz${@4GzKYCd7<9XMnqU)l%J#SyXI{x4O#h?85|G&TaH-Gv4*Izx{ zpISG3c-ek*f9SnSayP=maJ(9?W?Sdht$Sfar&7)J$-`q#g3DwiI+1`hZHvIdMW0z+ zY*+^AIP{8e97}A^dMPYJEl6VGo<4!+=a+S95058W2Uag=xGuW3qmkBmz3%IxON;gr zgddASl2keDSz2A!^td%oxTJPk@1STCuNYMPHx^FNg*f_X%mvl&oE~za z2X6(4h9(?qW|T}d5u^hgQD2i39s)8Y&E+{4Gv`V2$H^SE3lz)?*E#~n5fsc4@M+`9 zav(!Hg_9{95Nhw%mUcQW=j$#iCIX{)haQgdmjscbRLsxM9sFg6$UAliM5A|z2qM$m z%p!yguMZ~*S)0{AadfmwzY{EghW#n&U9ZOvUlt39#t$eYoztw zkxk4!0kP8)TAO;!Q+D8K>)5DmefxAV9xmIy?{;i!X@UFvW)Th!vM3ejWbYu@AZ8}w z4W&E1eH^~b5ovgo?#LR_rt zK~Hzf-n(~;a63I^#toWZVcm+$AbX(aT!I3AN{VCJ7K9OK*>@8G{yx^}V64tj(k5HdTR~nMPo2_A-axvo9uX5kX8A;=#^jV4 zLXbQbK@P8kGA(Zoe5_Zf_~hp}+)&ejb@7Q)D*8!6Y<*OHD9BGi8lokV%sI{!LZu@T z;eqQEzsWB_jc{_COSUZnTe5+gW9v0UO5?zd=aszd^ZI~ zU6?au9Fom+n`7vireT@BooR8I!4R(@6EjkRZ*{l0 z(}=!fM3ETLwQO@C>6E%wN`x#)hhJY=#v%-lHamaCm||Z=Bq|Uy-)EjfQlGAzvP>J4 zq-*uK$O2JTc%go7DJ!>2IFadE974oKq_KETS}!uE9}DAsn=Hk`r9USe`#aPmqpP)g zOu;IhouM(pfXQNWr(!Xf<}=|aPH8cvt}(T$j5*d_lUVBj6eet^V8*&??Vgt+ zKq`U*zr?yRHaM{;wLeUlB4emIW#85S(V*}-;$-rG-!6!kBG8K^(Q(BsOhZl6FE9BR zhp}cYNMU9k5u^#J!eNCM$Ov5MbWVR@R3_~Va|l2*YA^ae5|Z`2$N@QlTaFtsskGA^ z;t_&9Nd6_7SX`r8V4UX4tRRFa-o<$dR~>Sk3ZJ zI1sC@^az}qmS7HM;3&fzT?oUGKd(XLU;G73Qxd`m)QN@*q1-6N5X21p6*-($bxiov zKmIGv30r&-qx_*uMZsQfLV?S<9@2wvuPFsohDrBBYmu*Z*#v?zH>NoXZX_;LS7LS5twC ziV6k2^W68|*%rM&EuX(We)anPtJjCG9}hpeKfbzKjw=j!zT%tb{oT30f8O4n_m403 za_Q&mw)MSt-*@r4LG9hTg#nA0McOY*l?F`#?mK7=hJ80+0q#04?=Nr7 zROK}U@EjF0K?hCHfnC^%9cGjc?2tuBz?u^1hE80s_H?!1ez+Q68e}=N(~4K8!`-TH z9u8lf^y|mNX9xZAVg2&{@WoMoay5#Fz4Nm74QQ$&(ln5* zGj9>AWWP+w%qmIi7b4>YXqm}G3Dt$-9;5ZHB<6P`pD)|<`FeL;*H!m@?^{=q%cX16 z$NSTo;b~YT-#|cvi7l%DLZeZbn!9&7Z#-|@Hl9}d{6T;8+2Qx^&(|HRX2TOQ8%&wg z#lV|E0H>o@#AWM3U3b8Y=*F${ERYRen{QP)G&!uTLB4<9UwZ%Ivj^Mv-+ue{;i3Is z|HZG~9QEnL8S9Z0X-%{(jpy^es{U91>{q}3-4Fliw;%uH=bvA?y}RsPriqF)ku*^`yy~Ypec3dw{ah@{&h0!TMom*uc< z^CK1oy+CRnkRUTOL~6Vd_(Reoox&k*m)*J>vD>cFESz2M*E`AR`xQXT2fEhE?Ax+s_epCoC;$_=kt|Ny=U2gKv zqL5;sE8v29Kz6C{mtkE^;nsMkrh%)A4W|667roiQh97J2MKxHOP;o6Oogd9fs;f zlaA1MeJq^-euXk45}`Ut(j}v?kx({imAkbX+Q8xH zLHtEWu%IG56-~)O7otyJ9MJ>B%>c|#rd5`7Qr!}~G3ped>1CNm7%NzDc}_u*{QvYn zUHpP`!8mV6{hbwQn>_Vm2DwM+Q{DcN%s9dXK~6))chi^6RhgD7V*s^@6Kzgw6}yp< zQW;?-8Mrd#iU75noHi+vC?-#EzHb`C;T-KRRjHK?SJ}Hxr>kCXs_<{TfT@+`Z>7hZ z-$-B?AkTbnE(PS~S7WS6qr(`F-O2Tt=Jkhv3THT}X9*+6#|m08fd`8rPdgbS9uhc^ zf5`2$_qm%s{z=qx#hng?I2F*|JY=$Z$e`8O4PQ*b{7_&{5E+m%Ee%QqB)Lw^O~UBr zmc?#HTqkp;98q)k(|kBqg&apnLQp19#SwVp>i??x%(jfR%A%Cu!6LiyKx z$WTSO)dwlnW|m*9QO`nMW8^1e!#GwHNO6*BJo(+}{3uazPSE?qeVX2yqY{aO;T&g1 z(enE;iOx8{$S50T!xvwjr#QVh^d0s1d6nY>8O{ST@>NF%HJSKfeu?$P`4|Tos+?YU zyQR67{A3i~l{Kx(*lQw6wK|QM@XY`2_n>7+YGT%aQurfO*%b7gPq!`}VkeCBip&v< zixNL(RwbXhi6}(~6{QY)Wj(qUQVa|xo#rJqy?Bfm2=jZl0#M95^>hpWFc&IloA+Gv zbu+d_A<_a6Npe|~q?r<Kse~m1a))+43nz> z4a~}Y0-&31mu|wt+TOgr`{LE%r=Q*Z^v&_7ukSv8SnnDHcmck7vcLcC^4pKw`xpCo z-Y?gFy=*&7x-`fF9-1B-AZSpCu+!ML-6OA-(+4UFQ41y_!I(?0)Oxq>i6HP^xqSm5 zrv@e1Y1RRVQ3Z{10Ay7HY>hyNb;EAl$<45J+stIG&YPV(uAO@a1kG1g zBOD124!Z`DrC}VTKVUIxLSoVZPo+sE&jV;R*wWhFVX=c_H+k_G!gQlPvL6pf6) zun%!*J*F7_L}m*?h&Ux6fDQxBfWi)&9FF|qdE3qOaQd6yzx?i-_y6=C{q*i`{qTHg zr$eVgr5z7XJFk0x|GdBZ*iWxcUw!rZhj&l^>aX5i4CmfIZvE}cZlYV~#@?-t4jpyF zs*VINzgMIKVT%Z5*X1yuM)rMIRb=5>Cg+es(}{ZqJ9Dh_P*wC#^eeoq<3MTJ2@`oa z@8|7u-Ems=-G`U+%gYy^A4Sm3ykezlr?zETAl`k2A{6r*f12ko3D-rK5qHNBZibH; zO02EXZ0m7_a%tY}#=%NRUJYBf-ut!l=UdRkU(->)RGY?`T7dgE8Tpepf(mH8+p;XycQaITYZ3Z1>%+djeu9|kGs$B8sj5*>G|ak+sH#|pw_>1Z z^WcF3qGny2sNXf!FpyEMbmTrjHN&q8167gzKH_6LIt;QbLej7-UMZrPb?bdu7FP>5 zhuv)3`@WlXgPD-RF0>}Hs_ZHeXbD3;lMLi`5+>3B5mhmx$9Ov|%#e77J5=4klk6(` z>h5rNY?tePy>538%iXcLk@C8b$!~0Oo+H-hM>JA=BRL(T7<*8#VEpNPgxfH9*WE6=?U`vPH~&r4kn4CI zmFQMpiraU~NP>UGxmKK@1hvYU1>r;WKE3h&ha&k+071G;^QZD}$=yZN*+-1H!cXy| zQry_FoPo=(!jmPLX9cwiL1-&No{F17K76=jTL{A7HQ)k-;@a2j&m?~>uf;(nBT4C5 z1YHO6@nmq7;ZmimT5g+E=&H6!B&}fjr^wV6Ok)cFjbV=Jh+W3Yr-WDRLSjQTR#&9B ztMh%|=QspU`aU9|$aA3N-4VoO9vf6lAu>H68Jxn%JZj}BD<(2vndzfR*ifku zvp1)boMVo3_WoQon7m6xqivH*CayGOBLGi#m3~Bj31 zJPygOG}j7?Fw@*>ebO0B#wr8de6S;HES6^MXz`|iSpS9PM#}h-Pkl#=l|{X~Qm-eN623S9@;$SRB+n%@Df~&C)=W^dJ|t0CDU+ zst*Soc(9m3G#L7vAX5+LPw_B%q=^(es#W!SJ%2Wkw z7*mZOXG|c>LY{2_5yk?t{8zwC%)@Bub>09%gj>i|z`%fL;*PSWfspm$v?IB6er0uh zF07{I`GJc>=w8OrCCiBfnCB;Jc*r67n6*T_HY_vUhGc|r7No>pJ2%kcNca@*EEQjf z=nE=i4Kmvc;u!)tfcjPnVLn}O(=R1>g|J?l7ujfN&5<9_aCm`KVQz5y@?)F4~j;tt1L|xQ57mE1`uZ1 z2^Jnxqe4V*-TU4tQcXPP1|8bQ`t6as!e5Gms4BbJzb^6rP|ii484=xq{^}zEclYk zm$NugZ(7)`iELfJeZT$e&HAga@BZf7^Yg{lDz(evuTyBhj3_bjV%PS8?!iDJ(I(Wu zRq<-J?L3RUd%6Ja@4tWgZGZZspMI%r`5*q*-yYX?e_D(yRoBD%+jr0B=Vud9S+7sm zWx>P!;XnQThYy!41gtMN$yfyI}Bj}vMYBKmkbjOpBf`t$FK^$ zgXj=hn_7BQanS7BsvaX9%*vncFr-a)<8C-#wx@l+Ub|UiH*E^GyZhs^G=-ecJ06Zr z%NmP{Uzn$XUZd_xs>+h*|IPEXoh|tohOd!+1ECOY%i7S%-E8Z)ni+Z7`?Yi5``&Fc z?wy^U4b11X21O}+>qTJ(K@|5A$t)xh4`eh|6#z*Rq4HZ5Ktgy=)3i9qH1LK zp5uPFq-cWOkYorjTU5*g@qSgC5U{DT)5Dk6Em29pP+IHUck3PW&I~jaHgXXhGz@+% zVnyc4X$^fLAy{zt4jrI@6r$+}lqJV?B>Dnc5PZzu0cc0T(Ig$OQD-8Sxw3r;j?A|#Del6yChBD(Dz zenv+TKq&$q4h<^HA~fUPK{+nX4h>92Dwss(v1tC=@nYhf<=zZZRxG==p=KYCDWQf) zHcw6EFNPPc=_maACiVrU!%^rlvT1@QyT=>!%q)KfmSD=AFr5SN!X zoR1M8kmP{QO=AGeWnj$#xwulI8sX2f0^wB=y2^LshMat=`yJdC+%fn&bb>Kr!^ zI9DhuljZk3$JioWVaymqv`1Qj`^D2rr+F$*VzR=Si7ZkUImKuCNBILaR3tU^x0-)g z^OcM@j(%3-ne(!b$Bj->DP9q>5I{yR`_jnCof`X(iY8=45w!}l%T|BFO&xA~;l&&} zDfxq+!U*DSfrO|}E)z%2>LevTA7Dld$7BKDPuah#bu0R5H}%j*5^@!8%QQ~UibQ;}V$9iq~YseXUWYfyLCrHL<|8vUae{R~~atgdr zEEk!X1TB*)PJ1Hpk~HX;|0~zfqZ`PP&o-yltYE0tHe#xuTTR)gXmN5;d+CuzyOlM;sLPfIY9a2E zGy%x$d#Muv37GOnl`PCg60>_XMm#n*Ul!U>b~sdvGHpccOYKyx!i_wRh!u5yt(0An z5&$Mn@ej-dXPK#YB*rskqfCWNNppoO6AH~Leyepi?;3(XagYC;1uJ9x2fvw7cwto5 zn4-+JvzZtZfSavJ!UpCKiavzd%M1b!*(yX8h%TePvLL7malR}R@rDdu0!9@X`@}d) z+~KKJ^geK{X$nHLIQ7=~e@7DEh)h}MHKYMfd#p~nG9uHq0_0=k0xAx-`&c>&!z1{io zVlNvmJFgaT3MUkEjj?42gim-F`a!_(n#_}zEUua5dp|McsRFV_#x zc>D6A?{(1wRF8+{-G|G|Wxu;y)exrCe%XznCN`RI+u8U1+HLRF_r7oY z{oz1ezkhE691imIVg`fgwHuo^r4HA}2vvy4B7%lGE9l)I5b<*Sfuxx+NBT|kI3`ml zjJWQ+cDro-vfH-zZSTEzzv7yFEj)>qab`sG1V0xM6%P?Yo9nczwx5#04>m}@MQ*+0 z>c#2=D$-Q6sWvQ&o|fg|xE$Jo;lL2U*5zXCG$>WklEG-marpWkw$TcUr8<#>2B-3& zO9XZ_+BK*Ee!CkYmERcD%kzIIG@2VH&-+kB!Xux8}B`1L{Rf1p@1K-S@py7iq+`vv<>lAeN=A0wcQ>1WRjbG>uXW zehMVL(+dv5qVkj1BBI|KITs?QMtrWzuQK&<(tc-Q|5~2YD%|lMJ zu1%2@^}AJELsY~>Agz(Z|K=CR1jb%W}M_qq$+00 zJ}4#AYf7hz6&i{0I!y~lM1qBX;($5%)H%3VOf-EAR1(qbKcrq(?67ugMp#B81j%g9 z{M9u6q)^4NZJsN0YGJzu>-O+A65RZ!I))8+6HLb^tpKJDMJnjM`R3)6jc8JOQ!SD>4JEyAw4#q`e6QHpvdXRE;Oa(lMCcZmmX#$M#Pgms^}RK zfhsoEUGlb4v702yc_bFkj9UgSHOVAGP%7fYkcXih1xX=qq8TpD6qblu`A2nRo4LRW ziXeo86leQM!N<{EE!_0#l(bAxPl>B}aFUTYosCqBpz~31Cp9;0SV=Gj`S4APY$}!v zj5ml@C?>>LhW+tJWeqf$Hg`0l@IjkJ*f()9o|y8^44F-Scmxv>?;H?aIWz78hQJP? z8q_RvOab`y_vHC8f)SubP03XwZG+2n45Q+%7#{1{WrQP(=&2tgT+7)nM-V$a>INkU8xZ^UtY0ZQibtx4fCl2*gY2yyDhIFSwM z7O^N~@28$=2qjH^NoHA z{3T>J&FJ7dBR4ha8U%}%!4A>(VvItIUL(Pd7+C8|?)qsN$)hK z^z?2c{gR(Aj1ht;a5oB&C#MsFd0kGT=paL)A&ByGX<8(Co`{IYSqP74L{lE5FYNcK zMCeU5Vig$q6=HkuqS{(B?tqz{j{2j|9)9xK-7mkq`;#9%{`8CE1Mm!d^Wpk8KRo~S z57%$rUA}+WKVG)$weQ_jC0DlUp}s1 z9OSFJWTmPHyuRs6% z@W)@>{qBd$+m9W9sv6CU`Si3^0l`E#QcjGr4PfDTYETHX(K;pn&Zc;|UY}krhh@1x zt)IU-sN!y2PG7$Mc)7m3Y=H3Gl{g;Pz3-AS{=IYG`xmcHU%z?$?uQThtDpGnm??@b zk`@veb}Zy0^d+o9QR^}xDw$Rb(QF?OOeo+;nqO28XGwbRMyj$!l%MKl$$~2yM7M4) zm+iWHjm+j5Xa7RN1_4l_MuCK9JbG&8cB z?cG$omY+27u!wjclFN0!?ETXF^=jw6Z`~r_O*{ivR7I=8phVQbPXHWavchAmM{ImZ znHL$PLIH~!mOxYS&JbnqJJI)!&dY|Y?w8AQSiM2BE=|_8wbr)Hp05-YSXf|w6ZEUTzt@rQWKb@8nt>51-Jo3ZS z3+~p(4+C} zqhzRNGj9!+DrQVka9yaA0b5!IR%laRl}H>WHV5tM-zhOs>wXP&$um$%?-O< z6JrqQ0o{;UJmx>~arZbTxJVB_H!NgkMz`|fGYl;?-z4I-%1n_^o#ZFicDy68ru0AN zKdD{bwv6NhV7y(@SzwN~VqTf52V~GUvSmYHEH9FkD_Ri~35duiV$z`6*GaEr#HnhT zDqtQ`fjIiC@LdKqa#wTq60A`QVZ_0<*j5nX8V~KJ+IErg5>l>l#XId;!CbT5-6=Wtkt@+**!Sb|SP zE`A=Mk#Ec$u3ZRi8o{`@uvl8Daglc|P!_J=jmsfE)xMT8sQ$(W>dbRG^2MgBn>J=)e^%Lk943DBfW-? zM8r8*Z;AlaV1yYB^t=`@x(qjkwzvT$s@hsRtSZ_>mWI>a`sKsnmtWoe=@$=w{MGRh zI0JwG{`xdBmCevh#Vv`>VaX*we*!lEf0(HbsZLn`8*AzqbjN zi70sBovP=~&2V>G)+R5TCq_qEa$pHvtXt@UCIZTJ@7L@8 zaCiFE&p+RupWnTEe)DjDzV3_2tH;C3dD|{m+qTEkvSNL?Y}<8HS(jCecDd|7`uz2O zeEasY?M-#-UI!9Wq#!_b1=4Y20zS7F3%1Yw=mZcmr(vfE{|ZQpxlcd16KLA<4(nRuOnWUH9@ z*;ErD?0T{<^8!*?zR|PH+?;#OHG{x=^@IwP>6P8sFWbx24|Jg-%hHyn9q5Dz?pFQ! z;jm;#*Tvjt=l2Eul>M-%ioAQVj~6m;#YzSQAtFoK={no?HI&G$^0`G~OPV{0^F5gO z*$kl42^G0JGzU37$g(!>?Mb%tb@$qT1a~sN?gu!@i7Yyx&_lOIsH!SewW(V%G*#=S zadT6awY3GU#bwg&H6jfV?A^>KCt{&+UMkTEu{0I*5bM5MYXXr@rjZRR<~-imclK+y z-mxtEW$X9UbMGspPd6hZgut~cI*5k$7*tguwp;UsNVlqq0Cec}tE>Q;>ai{N_Xod2 z+YP<@*`E-)ccoC2%Z{~4Yq~DFw2-27nIiI-^dQfGNT!|5AB5hU5K&x#Hu|!JRU*7~ zk?EjgVPUPCimZp_xGcT*%Wlpb1!8~+uDjWJ-}ipq_STH(=WYA!enC1c&R~N$2oNFu zp>9c{Ty@0A>)us#Jv1=efcx=blFpe^A@+pn>jel#E-Q+ngb@$M%yiHz)G%T^VdB)a%P_h;b701+)5Kq;k}AFr2HbB$vU3^i4gb z&GQFyA7nV_j&V7;VLgKGmElejhp;B;MM~~SF7o7lNBNEHvi!PjAO3Btp#>v`#^W#qy=+YAj2ehkf?8By z+%w8fai~$Te5#WE61((|(%YYQI^;Q15;8fVwi2ms5WZyg;X z&r}P+JS&l0+G#mTHUt&!s0agM9|!wQ>CMPSVY)Ea$z{yU2(uj^?(-NWI+* zW5|k(S>^moN{hcCX<_Yf=^@=W86BENKte+4=9o#XYwbpO;ki*>-e!CO1s5f~$N{EP z8yIPl%QXTkkyMqF0Z^6l%JrzPgs6?93kMvg3WXRB1RE7*{k#6~d{qX1V(|XVY$}_Z zI$=Z7WQWvp;RA{XaF%7M3QO~ z0yzafB~Nw|Jkmxm&Z|_)xaOb>%zPu5n808R1;o{7Xd1r%r;KaJYF6{~XH@k-sn7VA zZ91b0Q(anL2NS_eB%>d><2e%lN9_sCYJ3AT>bJ3NQREweWwL|}Ri(}R>{KpfGBUIP za}fzAh>$EWm*a^e^_*|hR+XXPHZB3qd!}kyEKSL$c=^JlAYfD+ouZ_k&LwKrA>E*| zz$@MelVD8YNhgwV3o4V_&E5DwXGwOgLoR^~3}w4wdh|Eyj}Xy5!ZRVmch7BA0G;&g zJoB5HaVJ$pWzj_ys!-9TwPk6oHC=RF+qx{WEFc!en}_x5SL&Vz$bzbs zTjRE_Ooz)4h#uz5Ne>V~$cgK@6K>rEpmigvWG$_mwIML%zAMg>|mrx3g zRB8Sf1k`~BHhtc$1IJZ8`N*MaBmLfEI1(8;Wg>!KweIG9cm>&o%(ug(YtbeGn0eHB zRqVuXez+dKTz>VV!|Aa9?c4pjd5)%KDuzR?<5RdUjv#f}&B@g8kP?6tLJe^@!R5Le z@#gXV^H<03&zEi6{YF*qeO;E;A{p#%)yL!Mno~_@li=naa{kk7d%V7~^KONiqm-D*FdN^Kt@4Hm znJclcnr4nP3DKxV?^?#Dk?pJFE@|@oOxw(h>{X~!t~>YMwTaXA_aCl*ZT9N0+%38; z(!^uYPStt&QJB5(159|ADf7yBIxNN-}t;3@3f%jDnAr#G+T?ItFS}Q;q@n0f@*x)}FURc>KoT$^M5Z!i5gDXg z5HW$my6t`6Iw9gp5euneW*)2!g61@bviA;BRoTPHvP09+sha|-+IJHOI+vq7-W}dN zo;+H6Izl^|#9&m(c;`$J+`J)qsE8-mI`)e9nq?=kwv}StsLg#wKWOU9q7Qe+ z&mQkC`}KO+!X$cLyvDf*O*TQ_f!>$SwaKEgEV3vxvQ#oqlLwti)CaM>@rQzOfVUYZPn&*))XzT-g>Qp@KPOt-OFql3IaUqywb?<@rcqYQn|H7IKpllaR~& z5R$h0+Kx&gd0EI2&X*`I>4y~KD@8+;igZZJht$6%45Wsf=ug_ zv4+Th0hl>ixsTy~dVRW~ok3Tl*Kl2q{iE z$nl8h*7eAAMUgH`nE=FTy+p-x-%9_#M9YBUq}EaQZD8=;$0bq3*R`!)3?pf zYbC1tV2V*yM0bkkq(~q}JxP`z!x@s&ID(<&aiiqsW{#6mqTVlHrY>R(J4QwK|1yFW z>K6|!8I+vwh^G4(kgiawa6DYy2@O<~X`w4}bA!Vr+^)tmm?KW~(+ZTBChsj{m`gF# zVbTnE@dO)do!}h4p0&D7B?*lRvrQHAvfp+ik*_SBl$MmO6~d)?B4Q z{_^R&qn}BM>8Bs5%wlqEZY9>;d@NBbT%R-|gdZ$vhDzf%e~5&!Ev^_+QyU5z(;ff3 zK~aQ3X9`rPb3Dk8qC$W<>yb}Nna4X!#7^NFYRY*ZM_i|rSPE-^%GD`1!NXBQt*3aA z)ZcRL;^d*a*s%~L>B%Hcnfsd?BzdRD-QJmMj4dwJ5z$D{pC&8AdIabXi5qyHr*AS8 zeBcEOl~K7EfhdKe^`QE$UqOzyl~m>@S>KoxKZKu?B>Qg{2(wol$_>tONPI(Mn4+3T z>XO1a5=}Jc;bogdwY8(z=O_Nj7pFh{>h7_L06)C+fBo(GKYsV} zSKmDS?uX}(=N*)_Ef33r2J6fFp_-CHB=n>O!5EAU$_dH=!x z*GMmg?u~9iG!=!k7XRJWCW6DV0N8rpyLACB`-Rj+X;9Vsr4hF6_Pe*+Z-0c|Y&m2^DD|sV^c^!aGHHQaciXz1 zmI&LoMf*+>X2E@l+bpqCnyTr?1H~;yC|t~=6>%@XH-uhCNu`NguJ)TBw&RzFAHQBq z@cXst%*vM^l=7**tMZ7PDj3+=S1 z9@=&5`z8u>>k2s>7ZoV*`qi=R^8We7dcV6n-D}%B%&>Pev(2C?t-){Jt11CAxm^3D z?@t#yU+i+-_s(vSSK~>hVNxVaXf995T>M*nrZz)lz6Ew3(Csp-BPe2I8^V9b7vYpoDuC>#lomO2$fgK7JEKRlHbZENjsyNcV zyl*D55zpJQ8Mn@z+;{9?hAO-O6K_Kpw}K&r=3EncROkiK2nc@sxO{z*fBXB* z42M;=EJ(EPG-Ffk){`to{|y!O3Wk!58z4aIySC=%FV!qNOHT^3__zT7f4=^tS+XTb z55zuIv*Ye}iW|clb0}n@FtNafup#K)G=&tQaKoR>4Y}wR0U#g%5@-mTU2|ntzA?r- zxcfO~s$A$`=26v*l6o0&ulqS>I)19ArYgN}Tid#nQVSQim{5qa-_mjp*tL0)ZtBNg z<{igYV=gwaTK$q5x5QctsaDkjMOTQBc4-@0w~AYknAK4QyaLxT`49(&baC)+P6K|* z%}joP2AdBHg7)6GzMW6!wRh>A_E@Z@&Yl<`Cqh43yKYUHv=l6b_cm0dPys8e_K>V0 zy9upknN9#7arOuyl$33Xj&=KrTYMlQF5E>`q_r-pTv%1v1zJntt3BZQOGSwFaTO9-D%~CyzYt8s(0%2lGMoGLOI~^Q z9_hHijv4n26GmAGY(#R1#eUd0;c zF_5EuCu<-zo{52H&7dV3y?8xmF`|EP1UwT)hk-Lr6FHeV3;bz*-vr^4vm@^rL=K1J z;lc>hEfeNO*q3A9@xG-|o1vqWk}%dbBCh%Enlx6*(j$c>(gsB%dlH+}q%lR(Q4@L- zMbI)u37_*iqA3S17a<>91p!2H|D`%ik4iLS(m4P#0FcF1n&oxQn1I-WIYw@p3T+0r z2mG8I_=Rsz5iwf%!lJ7XM3l3K-~}=b6`0Z_ z=Z5%9RxjS7hU=M z*?#{9gi#5}k&Ya?8ZwsDoimISbx%$}Z=4;knaD$t@^Dz9&4DpAvP{j=F+B1xKP)jpa)$p)k%<^Y;tLUpHjr>>@0>E7kjodoFaxxuq98O zpNBhvA1>+mYWms`0o6g`{O{mUKGVWCxarTj))W|ZUou%h1j$Sob!6@aeTKfI0Om)G zogs{B|H%VF9V!{RVTC4PChWnAoDcxNw>$xrsP7~1d}Y6xTEFHV92J8+%|}tnO%(Xe zay^vf^SsNwKO@q3oR@UJ2F*cT|RNA_DdB6CyU^!08CYBg3+x`0W;mx6}oBr3g z&%gU{`u)$RA3q%5Kb%^VU8#5by(+qDYh9aome|rHK}l#QkoCk#O@gsRgMDr(Agb2D z$(oUg1qR4D14c0>4va+vB8^s^-KcFjHKjZ@m8q1pby;e)fSEj_tso*M6@`pu*vt^| z#$YPiv=dP&+?!a*p{g=VwI+s87}&5*n?eoRP2Yq-oyhOwGGV`z)}-4lsI7~THESm> zwV)CScsp;uJ8pmT9{*)ufB9nftK0I;b$zwt*L(W)b@}$Xd|2yGr}q9?kBzo2+))?| zwoxP+{TVe<*_J`rR3K6+i)!oKyLYiwYuK%x0;1@E30U0iovqD(8pk*ci6?~NAzF&6 zvzu^i_?vgz?N!Y&GLpU zQ3x7Fl+-7F0AQu-eU*LP)%xLaEzE~~m9;BS2t{;XskH_bX+la%DZA=bqH4|lfvusf zeQk2y+Vi=cw!U?R1;2&JjhSlx$IKdg2W+(oB!no@oM04Y(+Bs+4ih5b2pGZbc!bs3 zxOoYc$w60C?-%N)TUHoqT(Tz^=EymzVQkneq!o1btv@x{x@^5(SK3!5(Js=r4#Me- z(@t;peA@c?SqS7+frWOJDzolM6kV&RNLQPVB4T+Q77=fpt0bag!;7skGbdC92)jzJ zuF5wR?_Mm&O$$>mkdDe&J5;o0J3Z?GLw*k7?OV*vsj^EOV$)&?Ndhdj2iTzwSz%o% zyr)V{3Rh6h35F`TfP7@A5mc=k-L95Kot0~)ZR=1h%OcX3rL;z(t%OK(`g+ygr8nuV zL!qM5#hP^*wB~`!voa)v#pFw&45O>6lHL8ZzL+XDhr3HGmQZ5!ZtLADeHnUvSay|S z1}rN~t2I%O0;04v*;+pnN}*ll%36vwe}qffj5mC&?gZ@-ahWfk?6#`(t_qPZT^v`Y zZ&J%$qAZoHC90rxiCYh(0wy~n2w0XB(3p?CTJ{@y@!xPX&0SPP=R8Nx(U$?ql4=M16W+0Jab4ET{AQ%U&@P#_6HEn@-AaB=KGN9MY|HjId z{M0Z!Y*w9Rcm_l3{*2@>@^7YEF|2z;0Zv9qj%PFf6FtX(p~l;vh|fW;tA#zR9}4!vHVt30B(> z&y)e*q;tk}35vK8VGK3Sy1Q`!(NL`PT$KLNOpFHWC{qwnkJv+!5y_Nv5^hOU#|Fca z6A;Dj1P@~n5*zqLnCFDl1&VY-9D}5Z zA3~L;4e%CQEGn9}@vM9#QsZfeG^{#JWSBFmQ(`?_Vit?U2WWH-wa7PeS2V8LnW-fj z*%BZpCJcwB!6F0b8pt8GrWdOshw&7iIu6+q*o>OhggpT~#(7KXV7v;5^Q~aK%W!bT z->II2F(VX9q$rX~jg2n(!SoBPA6{n2I7N6H*A#|Hn{~(3IF=f2h9>EXgn(@{^(18g z;WjnsF_1^t$x$esdBe;<=IT>1U6gUbElkwD_(L=(9unibbnAo9zA#WyoVd9^MWuAa z*&HMnV2>`bX1CQ~VuM9y>7vppoD;l-69@`)LEM$fLY!$Is!BQNc`SUO1_YFn;lRa* z)|*YiOr+jBGZ_@=BG#nLt%$j4Kp|{{SIq=@Xf8nUEV}uEU?PYtFxI#{sDiGlXbb{# zt#wz+VZZEmyIn23lv3(axo|1PaeQyR^}e0fO~ksrDWDwLTvpZIL)(EP z{q6mZfag>D&p#di@~7jU|Ng`KhZ8ngN;%Yp7Si6gt+|Vm=&l2T2yyWOfsk1agBtbp z9+ibbHo}Ij@gsW6w~S5{;Q&>|On@mX5it{YbcI@XUe4zX_^OEWcx57H>7GjUfZ6a^ zI+RRjhxZf+34m@^#4U!Rwa%3}a5gDXj{Q)$IS^~ut<0WvErn{SHpx_&x~le$E`3ul z5tm&l`@#);KD9qPwLkwEH;3iTb^XO1|IzjG%d7f&M_=rghiiR%l6NOOZhGFdsdhl@ ziYr^usHvbgJrqSP1Q0PdMHkdcc4SBx6NSUEq>FQtV|S=5DIKRxUaA=dGU z)I~p?^utlEuFKuN-dvS;Pb-5|DB5TbM`*9}W@qqo3bTb)LmNif)s%r!%eqP1wih>t z>%;Ep`KVo&W!aj1`t zI|$@+_XMg!U1U9rd^xpUTdfLjO;D(1mAF_gs{q=q5f5=G^}tY|4{Qd@C)#iw z`;leMmr{tCs$E7gj%`$dq2&civ5 zh{Y_G+F=;13!C+%ugnm;vrHiBVwo!i71Jta+VATvZuYy{*R6Hz7Or)-l!&su^xh@I z6C#EHY@&stH9fUvokMq(c7>PX!&J=yg@Mwj_i(H4H+}-Nk+;4sQ6HcHF%=8R1Nj1^ z(xou>E(DNi1*wvD$lA0P0z)>XLc4uwDl}cFL_{b;U&kP)t@MUAX%flR^u^oS%PMt5HI#R6848>6W ze7x`PBEZK8k3E>gPY@^5G_&PQO`qb|3rZ(Zkinr=ohufy-=hlE`zsh9PJE zSk3B|nN^rX0{PH%+QF4UJsRdUl*(0!5Y3?HO{Fp*c%#D_n|_YmYpg#Lxbs>g?3P6H zp^J23n`Ty@o-07N!5lAQK(4PF7ohRwrfJBViQGc{2nMi$UIO?|GX z8y`_6r4qstE$o1pmk0Psf^WBVkiCuk4l1mkrNb_&3IxQp@NT!;)pFP^`>Wm6e!sW= zST^iZbnDVv-`1^l>D{_`yKxi5T`FcOP?2+&ZRt8ar^ipngW^zY*+WHIYpQ^BRTU+uG9cda&jN)$a#E_qc5Al}`=`_K5ftd~ z5(){*fmFeM$ju7mBvMT?Vcnj@dcrZWl6Jd86<|#xf$Qd4RYljW_1-P#XHJK_;fV2q z$Xf!LQL(dPE3_mPtxJ(6ez#A+T(oP0mJmLO*MSp}bTw#90Ei*zP;0m7-RO#qCsR*zg*WW#@fAcf`=R^I~i~Vo!mp{5LUtaNVZp$xk`Ta?MKFhn4 zJgl-dsOT~-P9f?hAeN_bx~rf4DVRBH5?JlJr~$d~4H`Bh%(5L^c)gq`vm%al!$PX@ z)_Mv8cz6=kc7MN|d;9Rzmr|gjKG6eYB4lm!^Q43bq#^;I<9vakW+s_HM6JuZZC|{& zM^|Qo(D~G^_Pc%MmoE-?`{mP9Q?PVm;=}c>9O`M+r&Uj?p(YCg=^=*}>=am$_Y1zqoS|579y1w0-Y%EMvmU=qNX_MpHPOY6*S$l6yL@e>6 zAQUc|E07pfAMdp}(%G=dN*Fl&wD~duDM@6tCEdI2AcGdl5Xhb$`6d%o@~9V4hVE%{ zO{C{PmJpSIxvC;mEZs@)jw|FiCl>1Q@YbUE2Rg-c;tDk|IPSgp(`ghGc(O4J3?wTTMQx=P3OqW6Rf+!s8vK6h#Y zuJDADDhkm^UMMj{86r&FtvO#fhKz1I#l;unYa{I zXct({(Sw|+hCvlzmfp#pARwl0^GeMNTagH;uxDOHoF+Eh-A>_1^?Yu})B5syPhdi0L>WSaWKGa~I*5%jSD{QXczo(` z%Pf(qK`Rmk+fw$_4O*Yk9(24c)R40*X9X3{MP<0-toP!Fo)|8b@+@ zRx#o40H*|%j1gls@Ke;7XGoU44_vKY&F<$8_Wv5;-)vePCJ%#x45%o(m$|Q-?^2iz z3dkQ@wD`usxH=kgYw2*)mox$*xZe}RNkqm!Bl_bg?H`em8H)Kqk$V|r&-7h5)0sr} z`_FPP{&|gW(D*o6Pi2$9=pnBoZ!pCI(iap4e10OIco~qoQb>4s0WB+IE7yy(e$kZ#FQ?# z93IknEM!^~5;(YOl(uMdWKE-gQRcK<%O+G1^vsZ%U;%%Mbi82Z%NwYkWA!ZTG8)c_8ijY#WFWs2snS@av2{q~SmpfhKzOO+ zQEdu}_d0~uJlybH)vQf3aowVs42ifDr>>6%jFTrrX4BI4Oqsl3eRv0zLEC(eM!86K zEu}b>@p0WFuMYnO9NwobR>>+bBdN|E%Yv1eb5GY4Wbm#_ZozUQuFfQnq&!ECW2WQ0 z-_H`2QNI>K6MI6GxgZsl1{|7T!uZTYQ*wBx6wS6H{puW!-h8o`;T(`jFxOB2l_Zcr zHX292{9ApYMaVazagQFN5!Vt!FZrxC-1H4JGD@8%*i9-{sgPKz8` zHdZ$>o9S3W`*KvvB_j!c{~ry~<%{wce^(IFbyQ1Zfs~4O05)*yucABZXE$2Q|745pEDG|ALgulU0Wmgt zaxl|a0I1YLpi)VJCN_;k2t|CtsMUeclF2Uuk@bEe5fSSm#OPZ$K_&FUOqCWQa9Kn; zAcC&iTi4!uW0b;$uS&Tp)PeQf{`80Tmp{|%+vV3U_rJYeetA>AI?z`Ke!SJ6PV)0n zetz!9jxJifDhUE~RW9t;p)8Je1`V{pain6{@B()x$_iNK7DHhz-ou`es!imK_$zUXtXA)^N z0Z6OwFkw^#x&?KQsu`qGZl6d!q3u<2#Z&hN7^h132+v_zB+Cv`ctd~hI1p7O^1&_R zya#bDh?JN>#Agw#tuP&^B$Di{5rc?}5(u4yfy!QG)}7}*BBY5l#k!itgNTGIq2h)P zs-$3ODK<-nMfBrYc7$4J&nOF^INIzQuS$cvG7u?*94@K%*aH!S?0izC35Z0saN!t7 zK@L?xq>KVf<`DzbMM|kATBe=e3=xCc8N}IDU7v1FOeDmttwYg8YN;L*F==mBID0y8 zPseSyw5ODWn3$E`P^WG;M9V^`$7EcN07h>gwIRootSBE18xYZpNKw)McrL{px} zB{3jo#7F7+N0wq(f;{*R*Dw-8nZqKQblhJt1swUTM3sJo28x2a5r*j4h7 zmOJvdO+VD}!cid^0yjsDBOc2P)%fIic;=_VO{GH~?1cQGmLI5Xb>koglfu(o%&3M z%XgXdP6L|ioOBtc$Td=jmBTP_gk02E2Zbn39Ec1;o2;A-y) z#o!y#9VKt$JlelLnUmS~rQ{C*pL4gWqu_ny*aI7SnbjI(bC$;wF-(kS z3Wp|uLQ_KgN#WQ#zZ=G2axIEH`JEX&XQqjU5F{UUtY%ttIw>Ijq7zjjhNiGIVe#k3 z1g&&_=JZ(?xoSsW?9vnGnXw}FAy5`*#RIG?i@fEB#@i@3N@VF+*G6l66eHw9;&tLr zs;~PqPw8~+RLoqNQiH6E3IVEx;~I1z8oPay+FQskOJZU6RdQq=qLZ})cgysWsCMb9 zR7K~M{QlVf-S0pB*PqWnerla)SLte@yF+c)_5Jht zylEk&-i`0p#w@ZGBvzN_7f6VSopYinZ0=H!sN8R~7_Y2>x81pnSWrnXFTI2%^G+O* zlyT!iARD;KUM*E>@v0NpgEVz(6M6mSrFOi3_klTz8v(Vj2hsru6(Uv=0AkUSjbRn( zDmKkfQK&GXt4Q~`A0|A~`zoEhpFTqykS4&k1nn(w{ z$x!FcfJJU4 zhPa@H!ZAjN;TK=o?yo5VU?ozB_+j`F%tjLdQq>#7`~61It|B7vCQVRPh&AgcQhNX4 zTzLPBS6AQb>G9MHv-gz^oD+r-@oKwbJ5H(CGrV9gs@3CZ>#A4RdjWoa_bBW7n{Qvf zxj#Ja=x_e^-FNRFU)|qH@1DnNa%%F^ho=Jl_Vu0gj>ccSzI$G`Km71%Tl@a7FocLK z3zONv;Xe}O`$BzKG|@DADlrCiRI$pEa0J6_&EDXB z9nB1Lq^%|KgeM!V51v?F%1vWhr!0?M(=sRG737peicQYkN2g*u|hiZx6e}u8@$O_Y_vO zp-QTD6xUn#SrE+9#ZE^QN@4(kKz_dm0lhGGwd@at0hL~hUF0<%LQ_>hxP4VobXAun zqb2~5S`Rn?z^1|-hpM&Ex^*TlOtsL$RG6$A9Wz+{GQSBQgGIWK+VmY4IG_6J4op>h z?+op&iT1*ace59B+g+H5tU07E`(?K;HK!N^a(BjwuB~rPN?}!Nz8D)0)JK6%MU@MQ z>Wf49^_MqRsolCXQBv6zwt+zod^F=GiTCRC!$fyxykpGB2mzuJGVJ1I80983vk-~R zMp$Xc4Vq9t!!nOC!gu(ikdb4C$`p|XD>Q6ySRoiMFb5f~Rs+<^6q$HNWOjm|Ij#{i z@U&m2Rpt)jsD7&CGbY8~y>w*8{XvyMAN52MkaS2FGzT;^XcuTXuOnvLcRwacdPe-F znQGQtc6`NWwyPrSM+ye=)>5=6v=>G>20Tc!#?50qq1$+Y&{!{m{ouI$8n}I=c>+Rs zfi_z=C{I&>Cb5ZtD|Vx*Bzcb}*+e1GBWat#IQ)c+DEkh&@TQhfTxZrvm~s)mtT8(^ ztHr(H9SwmVMPaJpwiRASMM-nY*XT&yc#1_M_{-0Ph$&fHZ6i^1s?V2t>*dIykS~Lf zof!i;QbLMRxMapQ)H4{76b_w7i25)D`Ts%o__+rDif4`8g)U5ahrt(QpsEn7EFQtL zD`{X1b+8g()R#AD8wMd$#U}F;66$;&DMOd`Sg~@PV+N)3u$E@vOIZ__M#dN5H1k*} z<$JOuxqX*q31JCEMOFhD;gZY=%cr#FNa+RdybVKqH0*u|TqcuZ+6oYDG<|EK_K~kf z%B{E6O%4FbhDfHQ#WO$_2Ejk0VR`JJDFiCKi?eBjHo05GiG-PWjtE!7q-rc-w0H}* zb3wGIj`THC!aHY&ub;!QW?`L9c|<64q#!N@Zla?@YGiK2^B$DDO$yKYk`_Bdun+|Q zHl|eCknC`?6f!6@sU+eFkr2)FY#QxwETMyuRZFc38O;|bi(HR@F{nWUjwcFHH_}5B z?0<8HMuZXRu_jjP_9_r zNYWxrd}tKrXN`j8nSnzHHC+)<0qfswn`ICL>b0ZOQG#?CHVsgf*40~SlU*QnyXSxM z$dAAwrjAPq$tTB}YK_fZHcYTB0VLhhD`Z6_07|h0hD*8G0Zl)VLpVHKvE2$#h*(m> ztuge|vR%bJ!hrM5U9iO^?U*;luH`ZJT9lNQtNtF*8wR ze<`bC>k4hwY+F?NXiHBWvTmEGzPQ={_N&`}@v9gA?CYy*#@om3Uw{AfpTB?p{rjVU zt=-bO_v6-fl?(WKxAb*oF)`}eH9~B_?W-xN*I==NxES65c?r6=5i~)uu_j&`$)v|5(4g+yA52%OBtEzrNyc_Vmr3 zKi-w!KgoBG^3e3Of`H0IFwa8F;A+}pF{MUo!4U(6wo{NX@IfB1oA9R^LcK*)u#6J3 zOXw?9@$jLEQb0shfHu@g;^m27B~mS#`;Jp#5K$qBDQ0+6 z-%-Y?QCo=Ywq)ORXr&qO4J2WvvqxjW05iV#u(Ju`{E0sHL!hkc6GSb-;Ba()L0EO% z2fIMhq#9NQigoL|LWQ}jSS_q?sjF(wLeoO51gq;dSKI7Lf_lkhx|mwaCU7gPYSrs@ ziA9MU(Yq%h?bip8^zD;=b-!Hi>D4uVc<$#-cC`>#Ar6~KBQu#0%G+ZSQ7JY`#a5zJ zxcCSiC7@V$2kFekMs*h<^j?@sVHOXJi;vuO696V=hWgEX5!qGlDokLzQc6T%ffTZG zx%9fU)N-}dg=tqxExg+=T=ZtQTMCItExZ9;*)JRb=PtY64=5gofNVf`S7Bhk)Kb`H zuUhy)OR)xSU2$%$LU#qF*4wu17DCh3q!if~p9F4bHH=GQXFhHHIW-+h){Q>=ijQMb z>uxBNftpC9TDAx@v=V zJC}loOM|rtxII!s2!OAXdbzDn)EcHVlrNJ_9#gqZnm#gX>vRH-frc>xoDp7(CtpU< zqh=sJ7bYb``e}I)OlkxqnTR5P?AUs2V%}VY!Lj5F1mhn%%D~MYA{=n|g@NfM(~Q$z zk_c16WFqxcilY~lAA9q)PKzJ$OYS3Vb|$KlP4Q3irRL95BI5a)!zG4@P{ilq=%*MX z|2}vJAc7T-eJIXaGN^IswJ+pwg{XX=pAR3YJkR>q}{>p z>2a9lTj!mn*>S__f=c7J7gUM^yZI*(^}{(b1ZOrA8q{!|oEByznRpOL#&Rnm$r7(l z(amI5VvhNZreGf4)1biLVfuJ!W_xDZh${Pqo8YVi7afn%X^Xa9mo-f%fPo+}s5jyF z6mFt0+?al!$;8hrAkuCO7ozDwjozUi*@u}B-Zm)`*)`4t$0S5~YCCTMnI9YxKmfp4 zZr+@oMb}BAaa0>3mru591w*p!DZxI3T}?meiiL?bBiEeNpM;$bwMh zyQw`5cDpD7`Q<5hl<`@TIvs7id9qWOK8Rr4uxzgNgX zZW@unyAV8#6jjhCEo9IoSC}}#@dzOgf`)Z9%MV~c7MfT#DC^Rv=?k3!W*G+2Obp^P z8T3Z}gJj&SqU7Ra_da*2vv$X6O)f5&=vz^}Sg_`)*WdX=X=VPNUxvwwm&8|+;cse-fUl1vB1rZgExzS#yp}NBBZe6TnRZQvu>}D=dmgVZI-rgQw z-d?|ab@SrI&DDMf((}4~cszf2cz8UvlZYx6Ywt~ESAD2N;?b_!yGn01OF(-dIol;$ z!mf2`_t*T-zIpL~_y@25>6g15@VB4V|LMo)|ML5XzkPe^fI&by5Bcr*de~8^E6N8)Ru1dJ=iB(cxMC-I(R}^(&AXB0c-IgQE+5}*aHEP<<4xd zfFcdPX>6o&&CyEX7$mBGmsJ8!E78+=vtE0u33g4!R7Q(%H}7QgvlwJo=O|8$30<{A z*!oa{xcJBm=Ax>lfGkDDL= zQY)YgDVZi?$>$XU!bh}LhxS#%s`RTXSEw#i5rX?Q}!a;AenyghyO>hSf; zD|vT(K1<02mgZw4Wde+Z+&I&7#{!_Mo?BxoKfZs^b^S-bdUJDFwrzt#MXnFK>%;!t z!?O_eF6-9MTYvlT^!mlk_0_VjYas^p%_@C%yLS)A-~Q^0F5sw0iTC>b{`3SOOX0J^ zYZ4_7oz(l2j`I+2JTp8c#mNwW z^E6DRrsN5PM2gnSF(cI(3xZTx(QU8H&$hGUqWfcj;WFzyaHJs&LUDIW=u zGUri1iG4(cqsjo#uC$7-T^9ATsh+*6pa69ReCCO<-pT=)NOw#`Y#lJgCQB1Yl!Uic z&gWISw;%0Yv=W2b*2+>u!Kwo4iucdk!>VuY>Z@z|;-!0X8*l3c;D>K{Et#aNifAp+%w$;Hto9unN(M9dV_HsObl31W zpi%{_yWG0zZo$@-Nuk<1te2tKWTem|1<0>SXA@DiVXP$DMOCmisfuC=K_T*UAFZXZ zLWCFA{Ze-OqS*IN!o3`p{k~8=6eGJ^?GeYD?O(f|RxtsiI4-7yzXSrhDwuW!SCtzn z7S5Q22!Qro9o2fDx;&>oy4^aIm9OsA{&#&`46`pd|*TraA^tC?n0Ter^;4p%qpu+q!DPwJ^GhK-&mE zjs$~YnANR87<7r5WzcTS#vF z&+zz@IZV|xn=*Z3IBySUQp6EHB7SVA8h+XWj8pZ1%{nwIEa3=bFltXOsz~D9Q&Km; zM8wn{?Zg9JlV%N#e8DhD^R|Y(!9q0*>!&Vz$-^{yQMQ>DE7c-ZZ>-eTIqzL!?L##3 zv=D9w0yDX(8ki_^*P(?79!6NCAzwlEFeQ{`M13?@YUC8Uk7?IKYGK|X5+cEU#M|83 zM9qdh#?&<=D-$R*%3)?g5vd(=hn@8;;gYR71R+?HNIPxvIJ^O}A1GqEskL$C0%7oj zXS1AS`e~3iF>Y+sgO!LMBa4(AcUBCM3kYie4K`(o9F2?tA^d(O#e(>%h+-}p6sII+ zu+{a|#n8ou(*DHB1cg^Lg|#e3GCG|;@>TX;dwDjA8{`;9KZI*me{wcCeRvY8L98^I z{?Zv{OlmynOhh(;Ae>pKX-I|zP}%O4!rm$dqfG)BtbmUg@NF={cNi_xsyLm~!-Szu zYc`fJN#HEe^YD|DHc-QuCj<_`&>5lY)_-1_-FJRETJq{E#n)0IQW# zfuayG7vm}w29%i#F-XAdM`-Z}su9DQ__?x<)U)O#b~WxL3?a&!JBSex8mYM$G3X4S zCK8=i8J=zl;U*L=mQJ&x{H;M%m36<=yW7Lv-POzcn^!MxZf~w?;q%r$J)Zvdhfhz( zc51zYN~xvnt`@7cu+j|?g{ZQUK)e4_dXs>3P$d;*0vA$(G-)C?SNu=DzW?w4;j4fC z#l8Z6^>O`AKOFz_-+cVtPoH|jzSKf^KAyC-!dyxrYu(1Y^=)e#i&UagXxZ&q0Tooy zbTAfFX;@9~;;$;|U2OsF?(q|!syl84v-Ni?#KI~fQF)b$eD(*Y9I~Kba{&RhQZM(PhtNkU6@EAvMFbmEW4+| z1SkuEyg`zfAb>%nD%zBag|;>{QI_xm3{oR6noMr$#X z7$lUMfhV~s51T5q30l`CV5VRH^3CnOv~{()w5nQ^Uff@l_i6eXgXgmG9I6R3?KZXgqv zl;PN>qT`fx_dQ~khPZ5khf{laIv$_5b(5~5iggtOfQPGH<=VEjGAm>$xW7I8^l<8` zl}QT8Ksf%I9D+RlNkp2k#!RiV*e;?+@-g`3)KGvZI+O=1Kf_3FU>VWOD*T!e!CSBiUpr6joCQ7d&-+$cRf094? z>gwD3!}Gd*c-*K{Wn&XW(Z$N0+!&H2-3-fCwz3Q36Syx$` z?yCbqmu&yL8(MQKTWf}0MX{bYtDS~-J0xZ;g;r$nY0=q(7>b9Ea5DY1HV&6wkR$Vg`5o-ZRPi;#lA-|_Cx z;{}%oP*|SfQl>OT?7?5>6wJR2y~Pw#BGR5SJ0r`Sx-^MmrV}0PVS27cUe4K^tQ^2a zFIYY{>P#_}n@6m;jt0&ROfg;gQ&&lg_UJ;A=bD#zdAvX0F4maEj~9byx#ysOzlbgZ zW4NEm{e)IeQ`yP2ol4TgZ(|a!-Q_5nj2+@(jeZabvcI z?Y1rF;Am%J8og2P7@9Tl)^i!i`ok%JfhNQJ9cg@wzLPbWm|`rXi8L3=?!a-jcxjiW zKQZS4p^Av_AsinO0GXp+iu=Np4@|m+$<5_Nyg>QSiO8W8vD*upgr)@XF5WWglqb!V zLH4jl!Fip2KHPi|BP}W=GS4CfLm3`ox_sq>{3(&?nx7NAOEDUBM*3v}G?$&8X6$Oj z2$?#HB@Zz}*#1zLw98}fGzv{A!D$x_an zxD>|u4-r);RBYZ{eo&*ofzJdKRZ=a)%%u>zDiIl$@-) zP$FXQZ4t4TWdQwHz}e`xT9A%YNvXrtne46>6EStq)PhS@JNbv_H|o9~_PZB%hu5#} zUcR`!x>{8G@oD|t_wOE#>v@$fO^cn1 zt77ZDNx#{ZfB5a~fA`y$|MC}yE8wpm*Z=n)j{otmKK#v(kJ|KVAtr36wYRMlUYJQB z(#2vAy9;c|BNYN_DaCKmqB2`qT&bnll#Ns(RkdzvWJPe6V-w@9g-M*Iy9*P+C!GR- z^oXSFHkXK%oPc~zncqJ(`HS4L_)slTu!ve#kI1ho+ZffZ+BUh_S0d^*baE`x41o_o zAVpIpyH_Ymgr>qij8dV>{$#cDHBsw7M=Dmf;t%T5;T|>YkQJv`9#vTho=$UT3nVm$k{5%7sym<} zo1~Egjm;5z_M3=Agh4|1>HYcj%fr|AhoAcKdFzFXsV=;$J%vGaN8w2q8mTJN`W-#VdUY1o4Y_2)Ja8;r~dKrbbGyDDz;UIjTR_#;pKSz)Ye{#b?>(vYwT=5 z*~p2Kt;Y_~{9)onXj$Axc56G#k9RMc(5)M7c99O7oE{)fT8bMyrov6+xVCo>r+1I1 zZS92#!d#e13zu4HJ=+Xm?V<`CkK14T`0@Jg{(4^?p3k&YD=xN8cq!`$T>_WbSY(rM z)26Hux2j_4UaFum{fv~s1th9M1ZWA@HvwCspo0Vj;T}pUDvQKXkd-te+7~#@?Vcx- zyFRsl0#Nh}S7NA^v8!9ZLRBK_mTwBj)6^?m_m#_(3XD2$1Dr~;FI2TT%AGqAF_8^d zVWt8!h<1@C!YV>syrrc{%604ZnYPzF+8z`yJiV$HzuC%~{Fj zxA@#%@*M%N8g6D*QtzpzC=7zuTGW$nP(Vd&$}~X<%B0?>upVt*y_gql9GfPp3Ff)VV=nR_Ig4J3>K}8EQ71eI@ zn>;8~1yN3IW3^&TQ!c@}$@6I=2s5^(&*y$Rx2qlBUhg!CmC80_%lK6fU;rQYo5^1g zfyj&AB}3T2U`DFQCP1*3*}|zwj%z#%95!^Kkc^#x5`>`6*DAB?Mm2<&5~(t=trE zK&K!E9%7CUxOIy#+8-2E9F{{Uz7dAzxm?t5KyG@)D)E5!&ba zbr2;2qG*w&BYXk8T4!j0(ZPeA$Sh8>9Y}`a=NS@Zgq7lCRxTthXg(scDG_7#Sx2oR zh8vGsO}&t*$Z|$5X*?$Op{~Csmbeg}5ov~NCg1TK1FMk}7sI>f!86d@1$@0%%IXToTjZ z_2<8vi9hXh`k{YVBX#AfZYvtTUzUo-x2?Em?v=YRJXAO7NZAGPCZsZ@GfH)&Fc7G|q4;=*<%mhu=$1n@hg(s~m; zM@|foLTtA+3v=OOw6288%!PatGyPU1`{BdNFPE=gAAb69IOaw{88y&(F8N{HhjF5h&_XpBsHTKGdb`1nWXK*UQt1 z9#7}{>nkqQrL$eeEPP(&@pM+uacft#Z0kx?3?jN0A`M{+#OzXSBBzrD^=q*JiF)D6%)N^i9m z2%5p7rN*45!{1>JCJBTXhUg{15 z8WEL3$4#D(eFLs`g=%5)6Cnd9UT`S{s}=M-3lUK*Y?-6Nq+(o%;!5=b6>*osHrd=} zxSIH~pG$!#+7Ans%2s$sfT&QMa{wTQU6|##3gWRYX<@3B3xf#T)>YT@c{^K&y9zFj zhJwQwkla*@LB%v5*6`SmHsFTGWr&%HI;`f|uVA}luLVR6+B9dz4frv^ZzY)H4hZ5n zk3^LRnx;uGk&ZF85ulx1?tL$Ssxna*b>}DUr^xP(5|+xf6cDsG3#_bvK@)jCx7Eh1 zi|R^5g-JjaG)~r2?kPLpvK#F}Who5n3h5(vi3?jJ*Jg9c?QAnZ97SF`a&bsgJfc}m z$R8;Igu1%@Py|YyzvXla4$wse@fnaDFfk!=ek6jy3=2k_5lGybV6TbiRe)S&DFt(@i5v96D+M+}uxztO(yCBydR_u{E?H=gsGc;btQ6vHGg z@giV~Ml^_X8FNrdW-u6YTpQHSUrulL?N5&y&?OSN8b&JgAXq!o9G4{+7ZLd+D>N_M ztq0~6Xg)JmJhE8%Ws1sH_1}AvBP4Dl4KntNEsxA(5;Jn)agmXRO3nEX8d=w18AWy_ zcMu`?kgq927cO|DA3~(#pBe1Oawl~TeMlSR!bhG+OYx!1Ne$CwkJ1$4*#2yVE@aAH za8W6fZw|{ByTO7XFQHG+Q2*Gj&aVPKmy~>daA71crhSl$MDi%D+1N@* zapd?CdQC}+T#NfPlMD-COge|4UGQ=U00u(#!@RH(YD5Z7&Tq^A8LoIT6_fp+UmSXn z0+KWwE@{fHV%qb?DinxA4jo%hs53op=+DS2xErZ0GKZ$?3esKtOi2dNR z26JiH%*<}5@Q?S*{B*gx_)P3!N~8x(Q&%t>YG-WhFAUFkOD2-TLJXfx!<=jAuAShI zzr+iMYz=donepj&lVlDZM_8gT0(4P+eW`E5zovvtK057aDsP&_Ih__J@RHymJUYEQ z!rVzyhK2v%`ZKeVKKt=lfa=A+(}G{F>a#!9cc+u@G8G80W+1k3vB=g^Cr0!_+=tC} zo50c81lAAT#|c^lB~Y=uuccTD&26!zL`wlFB!=FVY#c6;vNbEpYLyQTb%iZLD78p8 zktP99X@5A}y}Wt#=I;Lf_Uf>(%K2$~`{C24PtWILXHco7lsy$vpo^ZjrVynfR8U!o z1*~LYq4_ibY!M4oQJ~TRP${i<1xn$rIB%UHZ|>{A{LTIU@DK05J<$72{~zC<|LtFV z__N==@27Ssg^Oxyy?0VALtfERqdPBD` z;S42auU#i9T&f3%uwi-ZeaN_2l)`pf*J=r3Qb0(WCE{$%s)z-tDu75+8)2ug6rmC+ zEGeTlmtJF7g{@Llw{11>AtDykibPM4srdqVfr}z~hecDtyu<;Bk_{ULwDrQ&wWl!? z?MfsbE|G}zN$orcwYm{iv2+!nB2c@5hTa90SgH38)mq4Mjg2f|S0b_-@ND}KtM*js zB3%x29yr75j>1DR;NE1JZC_W!+@m z(3&<;?bgrBA})*HyM_AEaf|@Sn4>uxtRRMC5>-X?x>8~S>Dy21>zBJPUtRt5{&ZZG zy?#|=m}Z!h0E?a+R8`n5xwVph^ZNGreE#d-zx(d})309Nur?)Z%0GO3{PgMc^_Q)-w1-FI(4e)Zuj-@dt%E~OR~$ygTvMPu10 z)>lR1K3KAOU{eACkv63nmc{i;Cq)Ji6xCyP=m7Asi7F~{7g;ws_5Sg=Jv^`HbGKZ2 zVUjM=v@kKFL0apTSz3oh^G(-nBgNIeJ~kR29#3o2wW~@r^@uZ_IBa0H z@`kv6OHthfRi8s;HE0q@%jUQEun))b8rUHmqPp-{m6^5aL`1X+AdTtXVA-5()YHMH z26>I1pUcG2B@iVUfaT*M=%mGzB@q1RTNh|XEKw&)r7!B|aCRnO;>_e#v}TSyEss2X zbsV5woAz~;O>w=HTds1@wf9q#RdC*96X_kjgW2Y{LRFh67xc9+OQllYpX8^H>;9@< zS1N_#c+bx&)Uk@HYAM{CSnk(yh(-sSIur$N`3H6#)y30ldqqlElJNMBb!_t-2R~fh z!aAA|uZ%^gH>+2{lW0-wn0LEn*%fBoTra27x^7)!ks_60D7b*m@hN}uwt}G6s=5@ZgE?mq zR5d0lWS)bph~2HahVRhG=&7nAhW`+e7G)I`(PBw!Mbs$D5F$|m)l!yPRC;S&04{cd zWm4_0%dmhz?5B;+xg0p#MWLX|(5NDpFhsdv%YKG$$|xj)jI`td_U0r`1nwSun2IK% z4P!-W^R53+Lz7@YeH^TJ5 zTA8d!6$@AD9%{VvvtUmzsBY4kyVi&vHNs=x0WOku(ENH5E8-fRSc&*9rsy_rf==~SDU+O< z9#+h0BJpz%MIFD+5j5i0E+E54Ug|gC=LPxNv{`mEqB7Xw+fC7RZUTr?i||atxlE!? zVN)jhWiIGKM{>WRpCB5dl^RLTs!P>y>7Mc-k%~o%mJS_?`hr+==6yr=-1NA>n_boT zrzX^&ED6Qh5mqC`CZB28FnBsS9vygd$Yjcs6KKvXlg{J<9O{s}!A$mLhCOyZq#^RZ zli*&ctXs1%iT1N(HGQuB`2cdSq=;Kqf7f)THy9peIHZdt9Y!{22v=I~*x8i6p(Hhi z5Kh1#X&B5(zu+lgKZ6R1qp%k=JrF_bk(0_FLKDK78vBdJvXbjYGE#wBMNxdraw(Xc z1%_=*5g#uc4l|vEDd{A)A>V29HMg8WPbdT;aJ&@K*Z~b`8sygLb0OrBBMe0h9*tj& zEnU)Oa5MipK@9szC1&bDDH|4MZ{gyDI{~5+A_eQNpiyz{*f2m8h(u5-S;6-JZA52x?GdwBZzw4EE23iG}e1B>grO7BV#ko4XG@IrM5B3c-Qm5GR{6u_^_LZPDC zJBbpCi1gmgqHdy1dQ<7Wt3rB5Aq6SN-fSGI*ri2Qr~q83F1s_Y zAfLkH;{{3_0CKcVBOAD>Akt{bC^2Ev3Kcobd9$}z7hzkWxcjMyMwI{nkuZNiVRtrm zwGdJC2Zg0CyG@IT^8x5w2f4kLIOIT*FXKS|NcXLdB425 z<-?xu?#jbafB&&Tq!M<8uJ(MhqpO8(Zb+$i!P;?J<-FpwNoyi4x(;h$pny7A&nF51 z8rnn1G4*PVi&*{caP%EB1Yl%&_x`Le_g}s|{QU8BYBo3$v#~IR8zm5C?1-A;y!HK3 zcMDhAeQ|&N-P=#B`1Z}sS>(I7pMHM#@YTx~_t%FXK0GYT0+Fkw{POFUzx(d(4{znG z`xnbnP7ObPcxc=D$G`gOr+1$oo{r_~mx-QeAjYTyh)KkW6e#Qw)b6zfgk?9|h6&T? zhR7j*pkCGD4`MxyI&u7 zVH`3@pw?uXfiemt753LYP6p~CKJ+Z?2v0nqa{`*DNTWg^?FbMV4#SdXCY5G@IF3L& zEE2LFp^l(ajk_#AhO>TRjgar@IGez zs1#4!GAV<->Y0#yo6U#eqzo@9HF4lBgp!A@Vj#MKSxF-ZwGu)^yIUqw_E6mVZ%AN5 z3q-mqdKVGv3So_Bh)@fzc`21dP>T_j0}6-r97v0hcL2!e8j0FC*N8;BsB|I-v`{et z$r#AOi6+{6TS}=FkOY;EgGc!2cFv30!}_kyir6L}6LG~zH#vbuP&|N3*lRP3 z{_Kf~sTaYfq*6%s2+bzB$!#UaBFOc#c#J3O_`3;GmXiC62_qbuew({WX@viG2w4VK z;qjBpL9&QDhYPTMW&SPYGDzsb{CJ)t0i9f9csCH77vx1EqfR|Pmjq0!g9z6`29uza zN$X)X=14T9Dqb+jJxL$r@O%(PT5lv8 z5-)jjYIu;5QI5q#(m(Pb$=u=B$=@=9==cXk@_M#0bm28-(IeI9+CB;Flugw%wzGwy z*=7wzAI529w2@ZmlFP|_H@WflQ~}$y8*?4+o>I)SFLv=DCrw~*+qx$(BM0Zypdo6m z3qjr?loQ=9OtdDNy7bFKb3GGFG|}Wgwr3TTO2$}jB;aA}L2}hvroqw3}$sxIsV$4!aqEx0?9fIgHUClg3CB%j3#ivvAb>4L3YI2K2ZcZuE z_mf8(oR}=5JvI#fWNPy7$@tJo8X}bB89C4}E|?xTeP)PPXdzAN7D_SM%oNpFNAfsb z$XLWsYc~wDr_=F}+3*5DjfIK=*1O1zylufcE@cH1lzddA#z7E~c{o+I?`uSaYQYYu zFc=_4;XV$lZb%WeW@qxNEIEPh4Hi%X%loMWh__q_QlQ1FYfPO z-QC<>6~^g#{q7HMA3r>=$CZ@|@vc-Ak*@2us%W?MDs>C=sh}_wrpmgMRti{>lBn`o)1&|Gyu%fA`(--~H+Pw{M?s3SR81 zi1e)y5i{7D_mFCr-g|EyX$#fc!TAMyGZ+Nv$~KGB+GQ!3yl~nEg_3p^Ru3b+vSN~K zg2ho5)tU@-Y<(kutbd&SKNT)ixcFT;B_b-G2m{BN0W;OI@KQun^t7HtJU(x#EMn@` zRi!Bv>e74P2q>kr*0~a~7M~SplTI;tSJy@H83BGz6$-J5AP@p|@iy8%DiYBhgvk7X z-vlNihZkM|+C{k#sdeP_i_r>F>2?DRjHcZh?k%OLqBSXO*Jo9_D%6HWbfH3|6b+?_ ziru$vT{_67nFwv??dP}c<43-|*}ZsCZ+66}PsesV^)ux0aeYU8b12t)zTWe$&{d`D zE23*!m5-Yo&v-t|si8HYjtUYV?C2>-343G#s+V_=%ZcXMTHs+K60wf;^zOro7rQTB z?tlJtKChD>g|ZcS1pJY7TSQ%CZR=sTqb|L*Z{OV3Qhs>Wk~E^0@HvxQTc*mXVs-nH$F; z83+xuXMddCVf)2O|Dw~Po5bkbov|JjE3H(MU8rg;A0D?KKAw-;){ zD#}dKl_(~55Gu3wCR|Ek60r(XQdO}wk5J-w52uIIdVh2E#hdGY@QWAcRepH?_~Bt) z&$cUus@2P?sBp@%?Kf)rqRx~840|j|;jA^FSVCZR=waZFNnz!&jF>Y~RMlut)(gmwU$B4l4}QK+?_Q?)6iHqesok~qK$ z5Q#z{OkVV0cR2~vRsCY9Hx%R!I&SiCI)bPYANF-u%WhYe>*Z#@L*E!e(uu%I+Pic) zb$Qwvf%f}Sg{8@-b32qm+)3DP0B__Il4yaUYev&G*vQ6(OWP`+G zsP4MTrc#AfwD;bjrGP|k3V{kj;ihFPV1uO1gDHW1QasxPUQn%uc?(x-=t_VJM4?Tj zYxHYW36~uaw1K5WmWIy;7Ed$p=FNL1c}*tctoQjN+YEj$L#h7%Eta2 z?}Pt3gX{_Qk28BCL7?<0FpKvLf;(OczlEq($th+Ts`)m>?6QYvpb=pr_>w)1Jq~ap zWH^@r6b6xF3m(RrMVAp+&e4*U{e}o#_>hUzrmIK+y^z%|gDX?y6VW53 z(;r_7(kT?8Ud?5+qOcEHLOI0BqroXYOcfZeF<9pR&cz{Ok{s|F5!Co}5}(*S_QVCm zA?Cy=V=CKfjZJZMmLfL=k@hr)bcu7+)h8?S#1H3UzaEM~!J~KDg|gdo;*tu@(WXas z!FmdDnYe&lTiT}#pC>K2jO{%x#Pmjul?1jK05h~~3UpJ8DcKrQr~x37`1!r5m<$P$ zQWfD|AmumW%!uB@R(if5qY_Pyl8HnzU11YNh-RA17&SPI+?u_>Eue{(hx%!?2p0Vy zIS`l$6U~EtGad5P6u>sV^10F_J8k!2|5U{cm4k#B@f9jD3=N3Ly1;8{Z~A)X%wL&R zb>>A#!o_!oshuoGh-~~(KUhd;6F*PsPwCG8^}ke@W1t~tF~n27=mQExSE+^7FME*P zbGuj%L9|l}vx+B-V|*NiC6MXJh7?RBDo~q`ZP3$9?u6~EA~MSKY)eg41iTP0xVpQ3 z`PIuWzJC4U{-*Bg)ARc2;rZdi)B14KvlhjHi;A{wJ2p{2u_V|`kf^OvW|Ts8q5WQ$ zMQTAUyzFRURPvjjz<$Ss;-2!{SEkl`Z_?U!b4~y4FJAtietY}v0Y5&sfB)n8-~8#v z-+lkE2<~@PrEgpFaLx+WK#<;KQ<=_S=ChZu2NPEf*Jz~0)FVTQ3w};75n{W%nUX+2 zv{9sxHW{9fymsAF2Lj8W>ZZh0n5h(~6d@EUfNYyGNf#=N?h(B4)xycbD20iNvSf#b!`2_4%JtRm=B8fnxQJ-;K@(38{rM4vQA^qF%5KkBJHD=Xy<@tg z?T(KfkEeb->+?z1qb^K^9rA;1{-9>FoU{d|hB90YO*loFxPae3tibMz7l(HrPp3_o zO4?4QFuKM9ab(fDc9H9wD=QdLk*{CgTpf0Q`}3oA`OViaU*27}b|$8Ux!ZgbA%*P9 z@|$0L@rSpce){-Slz#o?{eGc#JY8Qck58xG`mVB7PT?~LMj7K1d6#wv6GR{-283eP zLpY_}`(zwL@0iY;uAA%@UWf{z2_B!@cORe6tFjII@HP_>GpnUaNK}b!`emur&0OKi zOd_(BQkJ@&SCdyRHXRzfWdYI8?@#X^Pd8WlFJE8%>Z=#8@A?n#ovAwVZJTLJb?13EGIYk0gZLL3}`vy zvPlv(zNY{niQQ?yJOxoVWdf)J6l01B%>zN|5Wh$X^e)9+z7IqopxHtc1XN}KP2}mc zeQGDF%v`Sahx?nl<5G6Zb)mIs6Fi>#v14n!lychIZYj0UvFYu;>;%%ZcmiH4Q*#(F z-G#9GdQtNx4qW^qrDtxKy7bCLh?tql+h~Trg8^{sSf?tiHfo883ZSj`?hOUHbm2lo z>J?J<1T$cfpK6K%+M4Wl3m7b+#UUIfXQF6A#N(c26KSm%s$lA>A}ZR~)=5dQDYSbE zPeiq6P-B-Dn1~s~8Uxi0^C9Hg7HXOrA{*MCQOS_<5dGhgl(fZi6R2Qx~@uB zA%Xhj+_+S&=u%68hcLG6o^nY0C&(z<8*n579SR8c9wyF)$Xt&T~dh?uMvn?zL^ zo;xNYQK;AqBLc{}_^A?unQE1lUxxA zB=DXjJ=c!;k9~fwjELPz1nllFF26|ObsX2HkIL2N10!NLaEl4uP0@1hI&S^M;wMt* zkh92i;IluIASOGq+bm&7&DdvhB0e##T&G!t2w&p=a(L!k%77)AhdFaWCh_5=LP`*M zuHAlYYnDx9ZWdyAlgi#){Iw&2S+4;btR?V5S(&KGgf6&_G^8 zQX;e(+f^NV@EAH2c}SOr+-b!A7fTA`h_sNQ`6{AGi3>Xr?4(HiM0zj)L)hiO02gs7 z1$#mUT!JS74~dxK+v!gbV*0dePni9|ZA&SH$?|{OUx)~iYzm?I%n;>QG13fO-jd8%PtnKMKFY~K^bWdi?!J<1bo&ZCKev-!<$ zDGhGBr&X)6PukBa9M8FYNHS$apP?ie|C$mKp(upuBxbf|(+h(*@#eJ4BbO7>qW<#> zR#MbF({un85I*HB*PrSP*B&0=81WnoElej7Uz`(*vuI)B#H@u$(8!sOb&-Q&|Dj>% zwCDNcG?f>gbP!N!Fbz>Nr=Km6CQS(nj&CPUQG`5?bGV@T&})Y|vm=g2%`jl%t21ZP zDl;2%7Hs&WOUE^SMF>wdti)%3(doT`gTgEzAf~H881~tzeTF^EPfS2!tSmn^{!G72 zGngM9Vtyge@z%+R&uRaAtLFbdFv)d;dRljTK1K}H}_X>zI^rVZ@#|1+pS&R zy+3~Xcsw1qzHZn$cjZ;2%ek#xL=`? zRJJB$O`k-~ze-otW=F_&oIeo~={Gno@u-GK8`lf`LlQzDqJB}z3T?zoe*nOa&IIb0 z0GdE$zd@(BXvnqGd^l<%KrBv^)=3146(B-g*cL}j(zW+~dws)1pB|nFbhx>`xw+Za zZNJ+cuCCs{eZOw!FTVa#R2B96pMNe(k47vfT$kL&9f`!DXVpP!HHya9WlqlM76t?ugAukZfy4({&GP>@Yl({)fN;tc^YnW{H5QhBeHKc-KzBbQm?=H3CIP z%QB8Dz|K}BRUz%tmADdHX<@fYF3ua=tqZA3zm>BQ+ok zjA<9!JZmlFpdrCzq>AG_hS`vvPoeG7$!d7bmq57-n3l>n*SlJ|aH+MlRw~nZ?Y(#H zt|tkD%v7FR1Br-q5n`Js!^EtR-n3Q8R8|ukz^z@ylta395fRz%7E-M1)=RglZw(X| zRRS4^;u7d0f`Rdqh#LGM5)(@y$_`=CO;#9w{9-z8oZ1L)ufWy!mdQ#CeQSbi&cIrMYX3D{aNjH zt=w9~XzDoB&0SpA^dyjG$V3xPOrwqf+nO{)wkNxYDg!LJPOo7ITLVfIV z6v$jeQ=TC37(0W1k9k~NbHFw<;yjL1AWT&@gb1xEGI#3zcPVpTBfkSo(N9<@0MpRc zv^M@*`(K-YjuA`Eo3Z`}F#yTG9mwx^HZGn={l%5Xx;Snji3!K8D zU}0jLMA4a02-dhFM6i{Sb9$8&wdsBKvysa{h@6KCbDX6^Fnj~h47%g{G(_$q%M+;u zrs3u%X&WI^t~o-=DM%Y}(bzR&(`iw>R&iF005%!Kr3(4NVng-aO)!gx&oOCe4(*(V!9$y0lhOTouDq43aDaJwJsXVP%d8vY@ zxvQ#Ex$DgCK_UQAuaG!@icIrO_D%64A-|_W6LFK9X%F&gZmcqH2xak%JYnoH3Zxvz zxrfUo2Tf9XKooKMq=5d9Nx+7B4%r*nn2?E^OA;Zhz({>g*bP~uN8_tuo)P5LvDk1n zA)Lc1Cn57g6nXY(5$Vz}kwSClwv60qYLb67L^QGJ^ge`@_F|#53MrZP?`ViRr&^|0 zhF8!?wok4W^YQhpPDnR!Sv71w)RAZ-O6km}KxsPn8hSB^jf*Vc$YKEHsvXz@#mQQyUJ4rK67Nz(dyhR|jhSo?cr=7-5UW~z!XanBlE>x5U>dZ-B(Eu}Mc6xg7-{f?Ik z5Y<}uyrcf@PXFZ><-d7ZzpMn+cOC!nqyFok`cF^t)dBzf*Ej$DFRm8IfBgRRAAW!O zuYddW^t|3M*B$lNRD~&1O5VFS)g+=weZJ*wMd~tKw&TVVk!-vPiQg^#5 zDk}2g`ucjmtmp0HsyoEQh5h-5U3W|=wVe|o1Qm)c-Vdh?JDmNe0^PS4&@)bEOn_H=+oo&@v*Iq zw0pBn%cWWwhb{(+bq(RphO z+#dGO&V`uEacjT({)5fNcsic1+sRvu<2t?yAS6RkbU;(_*mRsHdcMADfB1dXvd7jM&o6PBTSlO^m|CM5v`BQ717` zU0614trMh>w$`ldQT%>y1S1!JoUBorB+5wVVg)_wSLhjrY`iK$n+mp!O4K?QjtIr2 zH{*tM@N@xUJvfVh(vKhz&fI72jNqkXQ9>{($ILoR6~L3rE#WB zP;kb*9<>1uEOQkJxDEeAfEt#^MZ6B{0so(7waO zAi2E#X0nYe5TLNONpa1;#ftJ{eravWS|GBH`ICI^OvY%EmLUfPP2(dW89EiA`Fb)Q zo^}yvXsp%XJ%X#qkbBx^#-$q^VkFFOyC>cq(0B#pQ*JTDI_$J(aSPNX=(zdQh$b2Cwp zDOy~uB?=8qEN2^FWC@s=s*D$s?S|jX^~Sp*3p_DA$$>l($bj&3_mSVy_)+|1*sO{6 zDV7RkhXYq+&x1HcQ*SY?)8dq5y?xu@ErB%JD^K#9d4SM2jJ?k>teu*Smkv9l(@w@? zZ6_Mxtivx4H4#Yz4|)Tx1|^1d8Kwi-pd;uXOm5q;&tOYWa ztp3~(s$32<&JqymnAnxl^roPBppi)oGGRs&1#n6D5OkMdN)SZ(hQUk!f7d$=iNY*T zA-n1sgUJZFH}d4n1>?=T4fhlIwabMfvvF{To4=&-H_`~rGN5?sp7tl~L|}j!3Jr4*vY+gXL!yhtr2q2&)s(yZAf|`R|2u2P z{NebM5GyuXW7m-q3Pz7~kA~$5Nz&8_YZ&4OIPjtewf=KTL``HpTR*A@kuzy$_kAeT zQ~|JMsz3&y(TSK@RGNSab1ko4-Tcw7-~5X|`Ngm97xez`{_MkF{LS|dpH7F}{&2P5 z9SVu8$J6QYsJ#<$snw+c)LMrS3MmuU3Xl?a*pWX3(7NNLYAHhARujz34D?^z;Q#jR z{=dDZDrj8@_%+ejZ+Ktz-@ny=@%rXBH~gpX&j0@V)1Uo#dVFYyuD7-Htv9;{VNt${ zUzV`HLm^^Gq^=z)a8U9~Yt~xIr4W|Ajvi_dO9VJCH44VmdSpp<5mm* z?ce@%b-i!vCO~Wb=H|eaO~I~q%ZuBq*=I<*c7l?})hfi<$XzYj zX)TDzr~R^m&`;XYhF2`frFI<3a6Y~T%HqdUDcg1m&=W~DmX)R34j&JXGFK_GX zt9o~{d^+p#q`gUR(mTs0ssw>u^b@fXLb4`M9Ofx{h(iR#C`&n=d++DFn?0UzJa2Vm z@e)p1(FfM^wkvhNu(YjIK5g=s-@Pxj{N}4y@7{iV_wo6cU*3acvy`-0k2a;Qv@Gu* z&X14BuU_A+=k>#<=l$y!`@-l_3ZG8f%d0~|n1QImZlrEd02ZQ1Y-^qkr6JT|w}}MQ zo1C}yaNIsVo=%%s3ov4$Ld3)Zfp!tr^fs`@izZ!$+?d#;%@A_j?nUn%rR>U1bW=vN zQPb+x$DICH{6A=IS9o8R?bQD2uReV7`udx%@7}!F|McPc__RSI4`D`0!>L08c3ajp zZbgxMq|op5*aQ_o39Lfk#GB#njb@3MXJBUwf~Ut#wC`$N3LSR5-9vU9dBC-pB5ok8i zbD(NC_J@w^t`~+tL(P$}bpYQ{b1@-LH^o`&q=C38&4(>~gt(qIK%PfN{FSlijE5-# z$M|p@B**DN1aE2NkWr*P)F#Cfxn_@u$Y!-@URTm2otuKpnz$}&1R`$z5ICD$>?f-0 z=c%8J8pcm1>k!1t?2xBVGT_w_q=cBuV3uAw$P5efCAg3`x3EDsd!#0x5Hw7$p_%Ko z-=r6chdS#lyo&*y@%*G>%6bNAWPmk)>sKN&k{qj#0;m+xNM=R)f&v7aLkmDLiCKOs z1O=EYDRQB?Xg~))Gng~6%qTP>Dq9#O<6NXoF^I-h>eQW##wMjp<@372jFz4H^M}KF z=+MOcdyqF+>|~ifWAB>7`49=@=cj6-vHehEUni#y1Qp_GQ;F6nG9@>clUfCv2D%wA z(IaQbwDGY`Wmyr#zeM}E03S5-f)zr@cRm!*TfTD~z za%6*ZZZ$R6HvDcz9GH$YoCv{+ zP^e59=c+Dt4);oMJRHiC7M+4BX_jY=Ks*j1_Ja|bKARUrksr(lQXH;aYFrqwSrdnM zBv1CZu$VDOHvfHphW>IiB&5Lb0EXYA^cN|l!&PGNktRcIFBlehGIJUyYa@i2jq~*3 zzoT!M9ufvOkAesn?+w#VLxCo4T@d0k0u9b;I)&-$?z1bUyK_D&(RA7{+PY=jqgF|Q z&?Un#u>{gQ%_LIdtr?DCd*L)NP%MTJ>+x>p$EJxA)EZa`_kv|#Z?E^?e*5MZzx?`_ zU*8nn9zUM`r@wmlH{XB!{-=+-vV8gSj!S8+pFTdGp3msL*2+|f;a6-#N}*lhW)0D( z2%$;uHf*3UalulAi`Wd(Qixd#mt6tl%^v^PZ`&Asd92^XxY-1YzXf^Q1_*GKvH z-<|*L$K%tvErQ$1y?5zCYH?v_h4pr31w^8It-=m=ys?forq-N87?-kKM8{2OH!bX9 zJSwzZrLCQ@VSTR=@D^1{F;v06BR+W70%(-FNbjYT-Jx9HUojD(eERgTKP=0#e0+Lt zr|tcRk0KpJ=k?sS?bD}6BiQ-0{^9pO6egel zY9Xe=s!~g7TZ8C+DMYLy>v@yjxiS&nzJK)bmcS2hKRzB$%=L6y3)8C?*OmF<`EK006L*1GlpWE>y+a@B04M;5m>18Eh+K3dI zVX%4JwaKTa^NZ`9Le6Wi9G7<$L?j?)R*`Mnt`Ey@p$+=9_TT^Tu$1!aZ(b3hzP|nV z`253%$FJ|N_j@XgPAG+WSDWaE$L+(%=Wkx!-rX(zx%?}piB zirlJs-019WFv#HrL+z$77bfo7Jc$b`#I>-fw(gzCBpPu-WLFtP@7_H=e*Hy#XbH^sC??OE@PYHo}qy2=g9W?7+nfn$@r4 zMAM$EBqZ{$u*TW7*(EPh^R|N)?*v|AZ+w!css2^>MUL7d794)fQCo|O0MAs8D1F?n z6%{5HkIO*nVYF3y6_Q5gkGM-$?SL>BW(fFs)rWIufKLEqU+c2e{f=ubcl+|u!1M6%*V^F6MWBWM!6l!b0r-iYZ87Nk{ zObiu8v2T-kY6{#>_E;`Vg?6&pg8y0FP!p zTu^a6=IxRTR zpb>1){LB2fOUnp7M{E2DPc+-EI%Y>0!jacXe%V4j)f3aZJ?vIz2Fx;g3Mgrqkw(6K ztTTUQU$F$VIFioSBErr98R7Dhq&l$y8Vd}eN~uvDRZ$~b<$^WkuMpe_mY5?^C+Wl5_!SN6dH|lO$KY=?S#~PT`JIgaCwfM8 zt1r`q)=JV5=>U@nir95T$SKtsfn(C35G_BCLYRZ(V497%fyzE|JW>}%2ZuC4VuEQiK|6h)L3H+UP9N$ecpZ$Vr>wCh^Fk;Bsvk9Gugm z9=r?-mfZjBj3K~-%R|fzK`eBH(Dne2_C2CEY(t}3#zkXDi+dJlNHmBvY7G5J+6JvW z_W_09b_o%sSdtFWqA5Y*L{C}K~Vu~>Xz1_E2aN&nHr0a=TN|dDd0HO&J73MA?s!HI(H&^@DU)}%ax8MHas~aZy{-@`E^Y8!i$Dcm6O-N+7 zUv8EIh}wBmId5BQ=SGB5SX$#+h|pUvjQwG`KI~BFbZ*D9Y^`^YT@JEo4+;_`k&ez( zOk=?yB?imCxG(?BHM4k$Nfbsv6nDTME&6}|xc+~B)_dMv73yshRn<(sw!bA2 z^m&!_Br52t)yLF=0K2fPUb7MT$3k0^$K&?$?(pvYv1>0xI_wCb*f!DLZ?1L#o>u*v z??3J8@<-p?Z|9X5hyAjY+aKP36w$BWysWi6AJ6BlNz;?y?ZfjI_c!-fwVk(G%eSv@ ze|Y!s_S4fhU%uKc%k$H-*-#M$yJ~oGmf3ytYwqPy2rgI@T~wg0ce|4&&0LO3m%^p0 zQ0s-*E{8%3fb(gSPVe5KpO)JzzP(;vUoY3!d{)B8=ksZkuF^;tkOH=P6(~TJq$?LP zH78Q*F$bWFR=c4Lg?jsclWGr*x))e!P=pJ2Q4uZ7QEsJxc0pktRa-z8X`O6pa93rU zsUzB2Z>@LHK8-;!If#DYBwf{#1p;Q(4zjV=mC1&n7a}F;U9*Z7B%)Sjrh;wjmB}X( zcN7aglp?Q2;-!}$Ya9_6F@f)N`6RNHfGAqmbCbectyog6t0Sz;jTEZEO;tN)tEJlb zQyZjf1h=Tq|6W)X1w_oPb%lLdnY5I$EQLtg)&&HGNG53#g~6?|d0_aMA)EbTh1hOb z-1)jmu?~GuKpCXN)`S%LLjfR-OmZ9^xV^Uq(DPLL^U>gyqOU#GmQbz&)dd za2k7`qNWV9@>7n6Gg^+s3fXEhG2w)xSeTOaN2b`mj!Bq^I3c!~1u_{h1?9tOMBY&c z;XvdG^UR?PQUlXSO<+RwK?HRxPBstQV~suct)7mAB0`fe&dzShh|Yr) zN(r(!Yl_T0%nzrL`vt;r(6nH9PJ}`xQ^Eco>7ocLVi`$ecrtzjw@It93j3RmMdm{$ z9f-&*!oDGY!6rm{E6X%9FBL*(bPJ6ePY!;0IveBztB`&bNyf2*i|2%hdTmaahWyER zFO3&QQUrso^9zDCNp?iIJs1)qjSOwcZwB-M~V;NRuC~4+X{EJS_q)lXLGYZ$Sp4rkOY+mT;_{^mU(Zst*M}&mi zdWQB#qS&7k<^mHtT#UjP1>5wZgewX&^3{myS_fL0>^3%~gsUQjF|1JR9!U{r-#D~L zvY3YE*6dViq66G!!p{sKp0U=+Ud3M~$B_a!OL(@_zR>7U6J*{w6gfX&G%z_%ixe0% z(|+lU;&&-pVa+bh6hOHJwMV-}!w`>9)c8LHI)-P6QWIy7Gkn&}Q;Pi2;8=)IL?}Ub z9sCM!jf*#C203>_K-^;({s8{ru>O)~WV6qTGlO{6OwV{hxCU3rFsD2Sm_mCA6LOVl zou*9SEO>z#kZJyqz0V%2L#`+o5mtH}Ats}ZUDIAZ|G-2?TO!T>i2pIFR$`JCH|q5> z2Ks_rXf!XFC_$~+w?w1_0#wwCfr_ChVS4*~J~t_aI~ZhL@&V7qDdIAfC@H9mfUvvX zzy9+6AN=Z@UwwPeMc%%B{I~zFzxe5=_vcezmgQ={9QHc{-`lnklXgh&B)wEpRS{kG z`(-J;HG5a@*tWLtj<~em&Rv-cxS%Y=Bovs>O6-VjrX3eKK@f;~D<9F>1X$#(;gDvp%;ED$A_(*RPf>FcOO4+>$2M| zt{S4u7UvYOT@v!CK^TZj?N*VS22mci#%hdQ09loo*e(r%NQ5a`mkU&cOHruh_@H@x z!ZbDd{ihM{LQJ&~lupNWTf0ID`rUUws#5QAjjOA}PJ4U#=I-g^<9R#pcS~D)v*%k| zdK+;ttl~hH%*=!?5*Z(YYVp5&mmI%VrmC5|j*}KO)1%0Ds+t&TIZ5UUP?!*;g;=(Ll^?7?dZV&JAheG>ZxxZgtUGrCWRqk=z z^zoTLK5nP8Zks^C;9`x>jL10@fJvdH)UG%_xBHvj+fUCZ%-*cpi;=h1mFRHTJ)GL# z{`j!3yI+5O-}~m(AKO-I{qoKI&mSM;?L#RQzSJw}ZPh0PlIht^THe?{8r^w3~KK6Ej+PfuR%$Vy*o;xp=H=nd{r>A0Ov+j`!_vNhr{FlqQtSZl!W z8x#XmJrsht<40OR07QPsOGta~#6j3UPe*!CI9w5V^=H&Tn+LQks;7OuOF$Onj0tuz z;MMWJCAig2DF%+W(yjDtrf3D>v?si%if$=Zjp`Ze*QT0i5-TK4Ftq>iq_BVU_?bml(*VB1>cs!jp*_x=3GAmGaC5UE&qAl$n;Wm+p z6B89C^@^$JnwF>7VdZRw1Lt`TluI!_a&gjW00>u5;#%vnfCyZ;E|r<>)WPhoB0T*R zk$Hl_r^tGMUYDXSHq=Cbu6Dh&6o9n%ya2w`T9+astfiEy5Qfge$9TTCEpp%}l& z7>N>>I*QUl%Gi28t>?pTPgIGNq_{=3UW8GCYJ$wxJPt%8mc(Lau#cHyW`QtstwjND zB1F~)(7HgDQmX2*5KvUKFqKl?X}X-vWnVah((AO(z#f@UcQBRBJ7M9%i#Vd%&slvs1vykS7_ z_xw>sw3{39GNq3L0cG)AhGC$KjvSO`AvQa|(~Z}hgaVLtXgYp1u#gKGfJ`d@NYv_l z4srrCn}uZM09WJ;vjb`2)IlB84$C~0G#5h@S`tXi7d%E3+wQ|mV$voLB*z2O;6zqG zOdCz|I>_o$Yz8r1K^o7&+bOM#F$!stqR*WJdE^!#I22&|d9FPQe1|aP333RE3(vfI z)k)^VTnDcwlNhGUzZ#-_namw_K7C32_F`|7yyaGd!bHfEp7F!aWiJd8FjpC;xAH8j zrWtZ88iM1wm-?UksO!m;g|1BdxJZf44EDgJ! zUk{>u_UG>rsQ+imQx1G)l zmFuhh;pPA$k$yg}hTi~aR{*tE=`I$fEKIy@YnM)h-t;8$bb{!q8|VOGM`-SvxCce2s@pFgVh^J(j% z+qQoCupJ+sxUjUo)T$_zxl&-|pUjI$te|VJ4&axiwW1q95Ns7Uo}nbKhHQHtIpq1?$>& zOL={F^ZnaLt##qDTS~pXdR(8bb_mZMMN- z_z{>zRh3y)d(*A=P5aiQcWkXUD^L+A=-m6ciHI_&Fj-_yVNoZaU{D%1eixpVE2i*Th~Ez$+5yTSlI zeRw*ZPG5a}w>#9j>~HQ4ZSAME9gnBpq;J~0u-L%~pw@}f@5>XB4#(mfD0b)6deIvJ zTtJl~%;gZ>#C+jntt&f5HXmQ$pa3%E>HDQw3-s<3T8cA{4=u3o-aUVVAniH_&?blOhGE=uQfOec_7^^}r;s&=8m1Y%GZC2x&q zVS}I9noZ`y*1?SnZ+$IN3bAx8g*s91-MV=q!UBR8qp*mIzzT{*Ot@`eg%|5Z6hk2W z|8e$b-IgWEc_8+E=6j!W?~RC@Dl;py<_ScB1PP$o6V>EW_v$C^%m zRxhc$DK*t3*aSfmAOWHZs4*+2$QbW%&fadO2OHc^6#GR%RwClwbM|&OH~Z`}b8~a+ zU44iUcxzH?t&X7DVP!L)m0J9<7$Rkyyoo8Gs5l|{R^Q$=Ks%{>WGKxQ4%q&-f4g5Pby*#`<_L)j?V(IGh3s&(vKMAQV%t z_`5>W06~;6l4M8U+dQE>$oHsNiO>S$O%=P17%SeG$%&-wuESbkecqKf)xL+mg~wutUw+k*XECnfXZUJEYr*^QU$?tRFy6< zgHbw4j(9tOHH$aR#@;}dHHFAhk8YM%ZWQ&t> zmy8oI%lYK^G9fZ4FESAH?}rXXWXn99!s$6#-IMaEv~T>JQG6fDnd+AEpQ7DNqj<+~ zH-?eID634HVAaGSRWUW$A0-uHCYc{}BR*3G=Z}fm`nu=R)JkORka{_*${RIt8A!yU zy7gGCL1?fq&v<=B94V_>wp`KtOGvupco_*Z4$V=@S`+;u#?Q4Ls#0&bOt?(PAtS43 znf^dv7jl9yi)*_k7)d*4$+;Fgv(@$aDPL0(zKq((1g%aSr`U5@FYvt{lR96|uBxAi zBRt{^cH~iM;6?&buu+@E7HS+&%vAcZG*ZZrgSa$YAQ|K|q|nvq*m9A|nUX4%0m<^x zYNXD}J|i8wB zpa7&kmp@Otu$1KRl10QZ(lX(q5-lg_4n{q#*I4*V*D$+!X7{l)pDF2Jasl!S5gL{O^B2;J~$Z%jb z{ckn^)L2k|#xN6?>o=F~snX!%6Z5Bk8!(p8A;P9c%k_Xf9|f3az-Tb?4GCau9UHNcCzlhLGQ(_`NqSE^s6Nju!E?|<<2cfa}dZ+_#w<29eZJpJ^ipZxNd zpWnYYuT8Fx>!X_+n5gQeTcl*nM5MI_KbL5>?Ynj;yP1iobw9ylq)-GRz56LLAq9Ez zS@&)tY@*uTC3-EFcLGv_2~OaNuxJAp|MSk?MhL7Ut_2i{%WBo{&;u=4nGw#FO~w*L z8J)p6S&?ukD-n&ur*#fHt?e&U8(m|?$(*R=kx8OmugAmn{;-)@V|)DQdTD&|;eiAhawxDk7D8P!_3D>)sKczCr+GSXmiU&4woVN?UEn+T!) z8H>9eK>EpN!WCP^+OjN0-rk+=n>@Zg9v>ag59fZ`ncYbcqaw4p4oOoOyNEPJ159~( z-GBY+_BRd3>-O%uhYzpi`){|8-hT9(7yZ*O?r-mR>}*S0U?QNYQ2j8M2sgFEX@7FP zlG~}P8z8|=aqcRu-QJzHegFD$7NO3{cQK=?W>n}ZIP?> zaCKbYefLS<%{uPxPxr6x1xDx8-ebO9beJnk6ahvN2wVi|kAvvc$yWm`s`4U0Dh~(5 z6~;zX#ic}HaP>YLP*y(Pf08Fz{mxkoS6zND$)843IghEVJe`dQDqLO`Jc1;nRtai; z1f3#c;#X8FX;HHVG+`uA;5Re`N%3S~@7{dV5XdJpQ`gIOD>RC+iOk`4!y=y>)DsMuViTQO#PU!h+@@lgDgLyrG?-Eh4QM{3rlbP0WNQ zk-nX%Qi_qO$9>_bwD6TJt3)DvnJXExs4pUayaEo^%F7 zo_D?9Hh_#}_2z(BiKWfqPNI&5f6p8Tl7cg3nelCoy$DH=M&{=(LIn@&C-Y=6`;^%n zv!xhEw%#K(r`Y3(MN*wO1*~PaP~>Q{6kbNyhYSv8u2EPPp)mnKJZxlM?J{C})KEhP zHQGe*8i3EMfH&&>Text;jj@93q!06JO1}o^gv&jx(1hnc_$XWcFF+l&PiC`LD7G zH|e_z?uez#5m`x%GOo0^?9Lv-$wiqW)r(~cnUt#3XL9UA530+-JGG$7q!?U3pQk!E++l=I@>b#uw381EQ$FPMv5vGE95z z2g^5w61cw(9LcJNbjLOgvF!X(QT+o_m==kq3)oMLLPWou2F8*7AJ92TIP%UZwTv{G z%4M}iLp?J_4~0QuPO9__zwssm+`lAN&z`sJ0+D>f_)}X{Mdc^zGlW(niKIvDz#+FE zY6rxX!P38kZVX(q`W$M#!evj^;XfG{f3p%1Wp1uLQmX(UHvR`L*H=o_(-<%Cu{8BE zNSS_{zq-ZVuMX>5$0MYf z>SkTMYreq~WQ)hZ`@V0R_KKbe-)6=h9^Ca^t*gR=u~0YbFl2XjUt2%#)VoT9`E88A z0^W7|qT@_R2+FVfgTP=W#8cy^_X;(EXqs8~H>sj`n3^h80gY~B{wqX6Edi{~>lw4k zGbaW_)dfOdW-6LXtr`m4O@+eNuAUs<{n|UaM-q$TbA^^`XrHwMW(q&jI;DPzF-VN=uA)ca;l|3F@~Ji1yB+v)DSZ@Ng`jbJ_=(6p0&AWzj( zfiyN)BX`B!>;Cf9>))*Hy|<6=ztz6;M85OR34dKw){B}*Gv$W(S;gmDxQS7$0*1Y7$9HY7cqSjAl zSL@Q6^i9L)gNJ5(qcB7>PR~5|v+8bbY3#Ob+xGhOs&PH8fW7_pEmuPB-2}zG-_oE+a}7GO^@Dzu}a9?IM9!&XKBJq?yKYo0%zElUhFJ7w93XF%cE1 zE86$oTZ5Tbu~C{|u6+=Zw&-pzU!A{tc6W2#-nltGezbn`Yc~&PeRX@fJN2`l;E3F% zkmkwbL8xN0fn*g;`-~_+?_QIxE@u$E_tx@u9j~NrVhVyxI_m~yaKMMD_U>1qM65kK zkPNvzn+fl#*@VVsUD*t57MHjB8+>pAg;`Y4dr#G6742$W;dRv-2dazs8RWF>x2L_f zVX_}1;JIj{LY4?gsBxXN&jY5a-4|1>(<7nPL$!mn=#l4^lxYsvTEc0GUoxfIDPq9B zcakFPNk&+yOlVZjcEq*0YThN#JYfPw z-?f`|(vh^5HZ7S5Bd|cW)hX71pgUDw3 z+o$@=Wc3_O=c3*)vgT_Tnk(U>z*m4DGiAOLWLa)K(99=V}#m}e2PHi}riiyIGP>;+X*0IC1El$bN zQpplz#aMMb(7^~Pz>LQcNxMuTO*tXdUq)o8Z ziD@V>n?IveL`55}qS8!EHyWv?N~*YPF0`_AFo`MvQs?pm ziLJ2|oOHVElYWs{6A0CQ-^n}7U^Iw}0P9Lob=%z5@!Z~W>Fp&%ZdDaQoSR5s3EUJi#o znR0&vn`iq^UfS9g^Jw4F z6ioqT9QspF{ADDTs-S~mr>uRMv|ObmZk1k_g@?hImq(eW3x&9OeErtDZ=Fv2ww>=^ z-*2b$>zB8SG+4LJ)|xbW$_X^O3skM0Op?s*)DW>i@`RGWBG0=|W*=7MnN%+c!3Aw@T`|P`CFoJ z!l1i(i>?>XUy@CPH;=At@5igdvb6L0wC#Q0;*={vW6YXu}qTpTE}6pPpX6K5vRuT5EJQ?Z6qZ z9at6(7$@Fa2M3zPR-d{bO41Rpl6j)kYAcsR+8cnSm6*R9tGe}#y>g$JoKA*0x z4+r7e8mWZpz8{w5`s#T5a2Cqi+6lPd^=|9uec!fyA32!FWRycpCzw3UB6HCQkltI} zdo$7t7`?z121F2&H4>p(Bs@nP9izEWO8pHxV{rYhsIdt(+>61-YzJh|neGg$L$5 zmoV|&2_=BWwj7RT`sG&-FJ5o3{^aKPQ6uu zQqZIUZRx6j&(=3WrL8nr_mXWw{C=l||JMAj1vH^l?VGtKGyJ3>PCC?*F|ipi^Ghw< zhy&E%H&Y{cXp;uRt_q6-%k-;c{SB!s%pjf757hO%>Qhvj^uR{9WQKLrT-S3?~)B$nZYioH-hlDY{*7nlF&tH8d&!7Z*#AD<9gI z1IVj{=j98*PeNiQXp$F~gd$3xq*WjDhvdLx_HhI!M^!Q4n0{h+h&3%eKUztWcznKe zWO#@?170CdsdcE+s4T43q%NS$!(jHKr%%}v=&91jV<4g^CR!*R+$suE7f z(#F0^Si%@^=G~@+Euft=i#B<%7~o_KbEt)^@e5ao{A?`W@X|xlrCAp71uj0`{itYb|Yg$sDMbknS|wc()SZ?mJH%4z0(4}{?lWsb4=!;R)unlm(IQ0yig zs!(1f@gsiAq)MR!iK~?dA8RlvP~uhcs;UA{lP?)%-r&L;mCy!~BOPBEDK3=6aye{T z(F>1KgB!mpGGUjBFm$q>uqt@bR_TMu7RPPd@ZbuDXsD)2#T&0nf!9cJCQwzKC% z7Etll+fTmpoe#eIy$>E;FRxzS|LLFq>XTo8b^GddGp@3%$7}5!-8627AWhjQfNlyQ z8--%K-S6kFnnkX$1yD(1|KnYByl~xw2`PSCsdvpwC6h+)m8wHdruIm-KX_;Ty$_aK zu|I#n;VAD4x>^gh#s>bYTm651p|@KT(e1pcs%qE0n|4)2S9bMlSj~HK#h?r@8T;OZ zQK+V{xXmy&LkK9fj)F42>$)Oc$p*7-;NklC)?1HGcjwc?S(fE=KEHnc>U4i5B{Fgi z(wbi?CnA0wp@`^i6o`oFzHeQYC7L4nMWv?MqsMQyqwbzCg4Ze%^jiXnEI$PE;z1aq zQbyH;BN}J7?R@G{L8Ox8Eb86T=p>713g0JK8dM2MBclEy(r`!y7?!Df_o5QZX7C1V z=Ur*i#1v}VZgzLO^ls;e^OLu4p1k$MRA0Wlg|Kg3t?LeHRXrQ$y9HhqR>91~v&=fI z1-_Y)lEh7II%Gl1zGm>hMVa32=b@~tZl`^@I-u6a; zcd81PVIAF15$mpuYY1UL*XTocMN!IjtG~Xz{q(cDcODFx76VUC-zJZr62dB3wYWX4Z8# z6+WEo*{i$j>nj6x;}@^)X?${hJT9^{w6^X>lDBuK)4sjDfB5pDcP@VMuCL~BVzJb& z5&^l{Xb4i?NG(#kDC!IW&}e2|#R%(zndR~YlWDQp;uWI?_`W4U?7b^ss*U2P2m{Ub zeLwGg@6kMQ+hyN1@^_8BD}@3%ojZZ3d1_)AQ2Hb#V{kA!4GGyd)xLWoqMJdj33lb< z>mvlOUp@F;+I?4%uos_8SZrQ01A>FdWTlvcOIE*@x1M$k5xfnarWPX`hS?5A!rG{e z;|tT81>4SDPzA-}Vw`y^F9QaI%}i_)&P<81Wbs{Bh3quu=e?X&E7;jp)hViY=1V(- z-RRY6K<&~y*@{>yK*OwW@J5!}qjRViTZ#j35h-fi{Pn7FO}v@`VieGNmt`R!M$_I^TWg42D_C5u06Hw1 zb=7TGRqI`?ckS9$Rju+xHU&=}e*q>UstRxS0GOG?#jk2GuZA|5`F&63e_(1*>strR zOndj1Y%)=Q_?cY4b=1!Y!*_-drGI_{0u+9GG(|iEs2!blcj|ueku-`ITT{%s7!Qr^ zQ8GDUBoGbhjBtwxowQ8HCo!;yYPv!VW=+_{kHC`MwsSX-s@n1L{`C639}lY#Ym# zA!8Y#S@S#2)$&JxaC2`y5y6sqBq<|TlPjII|*_|9Aur;p@MhF6RrKSL^HdG|C2wP)5Q-B(}IWGb*#-E!V z^#)6hk@{91EA#ES#5J&5j)eXAo5V9ChAJe_We)+>XT!Qk5OepSR3GWq1GTq&EwGI^sEf@{R_16PA=AX>iIq`?WpEOF<*RDUtc{!)P2%mynw7xv@t8Qq!2a>liY&(0 z(}}&AMx4f$Gs3iVv)+kQciww^{f$iyc34k)|K#%*zy8(d&!67f zxgVQc%S!XJ9vyXKOC<*Ve5Q~BQ`>a!+upMVo`7lxAbxIdXjlYjY|d_Vs^c@pUCaW2 zmB2J)e{^BD_mBGbzj^rm_u9$qr_c1C-tM2i)&9}D%ZCda(1GWQfAO^c@mKv`LIHfDx)*+JIO>4sYb2$Yi`AJ-0h5 zk$i{VN+*IEKuU%h(u^W*aVdxwwTTK@3s z>+28KUq0`jeEx9Sx|m3`XY|q=0_fm+TyGv<`8qfnXpbvEw8KnkeklmM+TqyNw%pzC z_Yd3F!Bc;9wH~exeQ$Sn+tb^V^}Z~=VC}T&(zt7X*!G8xWzF(Y@6}aKBySIO5-_Pv zaZuW5@dHGQ4yYk6StY%}y-DU5EcU525?RIqI(VyKknDShLH%$XNS}KX8cd`U-L#C( zyscO~1JZ<%3S?J}(kSy%w}LM+DvStNlMGow%f91{2JdaJc35#Zw5JWayX~u4q~9jr zjo6eBO42hY#}aoB82$cMz3|DbP}69pLL6H=3JKlzeW#c#8B63|)5N!GkJRNmuIgf7 zqocQXBy%_G0FpUA=Q)AYq2vjbl?Rq_X>t$*hN=1!+ahAt8r!x0=r zRd4UNS6kQf*5i80EZZ;H1x&c^`*=izROY@Y7@ar6ossbSe_M;{Pcw^aWgDf_AgoGk z=Wns|35%QQeTgZ8y>}O1S4G$nh19%q!x7!Vp8|@srI~eDmp~Ch?xmw(;g!IjaY+vX|48K?$()=@B!%xB6 z-ulplB3znWU#-i*l}SyNZBc`DE-NXrsp{qhpLySR%M2T;Z?wisN9I#28Cc4 zH!0i=eb+@Gu`A=rwM+~bUoecSM!TSPWPXXcE|F{!3n()(4$8ZHRkJB_MjzvUnZt^Q zri~@{O~qtcHZ23ydBDtIExrz`?dOUnGWeay+a+hNEJ>16i=1mku*u~v^J1f>%->aB zAi|4qi5czEU1wz?>c8`RGHw|Oiew&Exe;)ZOMWav+l;v?fGvqJe_8)5f>acJJQFF= zP>PEzl7HD%EPY{SbVgKb8PbEJ)MbP_6;ZGfsq@keks#ro7c7p51}xJAZTedYDKVTm z3@g$59Am+AAoaIYrV4~nYcXk4F6fw7$h6#2rcb7i2a~J}ZW7w`V$1+H)p`ykhWe)Z zO`%lf8S+u(;%!JTg#<&kn}}mQoHo6ZMvm8D=)cwSAldh%ueq!__(_qG{vbtk5%#0R zk&>=o5am5n1I*=o&ehw=?!I1;9&`_2?g z!&BMw|D?qwsRoeUg2w_3PW{`CAV3?1dTBg%A;qCMgSF)V2Bs7WrJR^%&*}Xo>KKE) zu?9Y=38*Fq$5Ib~<(TS`!K4bbbD?4ck$RnmVPkek${HgW$((qZrOkw$Cm!eM%Lpw2 z=Hlr?;xV9McnOkeCl{%{geDHRQF00Uw+k;kgVj*5dA@Z^O)l)vtg$Eo*70UAGt!gr zA~k`Oa@JQ`lu=|9f3dbRqNSP*wJbE7%yw3T6lw~fo<5YIz|Ld)a&gG40xtg8{GVA| zym%TWEgxnv@f!cj!f9pc8?$9vNMK}a$b_up^B(uiyJl!2O75ojr_;@&1r(&w|6XR-}^xRqwigP=Ph~mpnvkk`LA9X7kRz) zpFQA*H}cks+it&p)qnlU4E*4UY|D1O-ClMzwcZVW|DBq3jT3HW;dcBl21Id~cYd&8 zs8yw0u;yd;n>_)atOAFt#jFAJ;GXah+7Zfcme8(! z+m^QM<^0sdJ6ktVKXXXxWfxvgR(J*CZe1aZG{93@-f~|`{XLx|;I3x0iOP_E;{l*u zY1%|o_Zi7UMZMsWakR_Knl#rpwl)DqK#GH1@FP0!nT@9W{XEK7$zzdLO=>yt+Zh26b6d(*7g^$+Smh!N=Oox>=8 zq(bB97GTzeVPy44|+-+T<(n!yXZC%fO zYfD?!#k5MggZ^6|3 z)Vwz`bG%$!?bND~rJ7+k39C^dX{xHBZwBis!ewbNzh;1OD`>14NSI&MNk+no<;cx% zE<AV}Y9J~b#V!qwh+w#YJ&E=pp5z?Dt5phRB(dYsL18K6b zy>s0@dUAN{di}}MyPrQluWdo3A0wSo%-d>52edd~o8^3AkxEZMC-cb~9{+pz9#+#H zU$Q2E-(smWkk&P@$W#f5C`e5N+VjApw`cAawfEhcQ3&n(PSK~8D#=S@(-EH;e`c(hx1DEPru-$Ws4 zUESEkU~YIOCXLcs^E;m{Zg@TKy?Y&KPeSVo0x)i<6fdJS-|YaS*bdYljKS12T!QYs zpHF==u({!yn76gly-W17gBUv06xg@Es);mM^b_@dtl2m(`I1Eer>n8|b5*szn?cQN z@47Tf5&)}!IB0u?VwuKB`ptreaMgp1YS%$hEoAAg#|$nv56hyI&)*aWd%WC1)-mIY`D3xuio(6}AH$LY?xiIqP~+<`yH$ zs>q^$zY~Xk*+Cg=u#cx(HTdN zHgJKb~F@^3FPriU8l3mv@H` zE|BR@jU{bA$5dv880%YC`(7xpD?3Jppa_Bk`J`$?ARLPj8duxyDc+IA$}o(8 zcZe>-nbsW{dxf^zJjYDG*c-2ocZ~<6g4-Ow<=6_-CwXO>FLRKrODba0foeYNK+a5A z*qHtW0OYl{p@UGB1WJ z+#O(K$-j!er7yC=OHQG2Em)2(7k>=fN+~ea!KK)z^rnu#meap{R81m8F{#GLvxJQV z{*((D&&e^MkRxAsX>pha8VhgrnDC}%(d9aG%^5{j9yb*)*QfNI6OzoR$ofw~P=zb8 zFhkYeM4mFAHy&6csMQV_7v;rZ>NXv2AchmB%9k(CRUz2}``j*&kZqgSwtBSAWcNvNG2G#KnZ6>HCIM?NS#f+kfMS z7e5*=z5Mj_{c@(0W3>wus|CIM_EKKXue?k;Ypeq}5QUy~-_0Js z{piO(_~>u{_?vHCEq&{sz1la$|MQ>y%`blT)lsA^2U9h*U3(Q0#if24PR_N2q)`Oi z_kG)YEM(2uqPI@@Sie0$AZBRNqUIwl&djfl8=&mx^8o`CT)J@;``h2T`or(symyUH zU+@3olZRit*s-iv;F^Bc82Gb5TF*%)f_U-pSx_*NG&wuvnUPB9*@h0i)#$*g) zEG$dC5DW?B!OAb8+yHk!sbRJrk6-`zBO~r#-Szv2m$&y6EW+NcH8E8-f!}hNz|8~) z&mrvl?k9!_7!+(?BSSzMwX3xGI7Y$GFlIGvY-mYcCpY2|gGkcB*fkyGoD?>``|jhe z`|B_6))pxi>$Z1|J3L4~&LhICCsI$9)IG0$c|!Wv%V+`PM}xkPGW#Gm8B0`X65ijt z1~nng&Zlizm*>x3%hDRD!0~W==bgu|U%tM(yGLH_H!Q9G#bR#*l&2Q?QHi6f=kw|6 zupF25yekb0rF)x2k9q^842DKA)$RVFU9DG-ju6?@p1!#6TbC%4vpCF?`<9|!#2Q_6 z_O9VNyE3~hv72_VHIfTqkQXodv*&lec+|fB?%{XdYrp&6lfQYk{rdB}^9GWw@!V}a zuGd#rASi4tKpmd-@Eb!+>Gw4Y2`t3bvb^==aCNXIa@yjso6^pEUxZDlCLIvUxdVo- zc32kZ8DotzfQ%xeG@6Mo?^!0gjkvY>)uV8c+qZDaR^1|*&`u^%@$Ak#Hl@^hQy(}mBI>>%$+DBOli1U zmec+A9QR`0;md`R1f-Ze052v=5nW0Q7!Dxhed$fZQJ&7{*DueX|LS)C;L(5f_rCY! z*t9FxFx7&rh&W@P(bBzG^!h~ZWnYrAnsR-j3_86w{VD)aJ+7^>AD4DKEZy{U_UnL^ zklp+yK35x(ltyW?hSwoM5j5fT)pC7Y40e0oS%ryla(RHKr%XNhqmjw6!gW<^UbCe< ztV`cdQ5UIEL%NU$k(H#`cJAA*{nj>$8gH%-H`fO<-R{p_wIlik24iFRyQrS_6tX$K z`%BcX4fXiid6Nj1Ma0-?ZJ|MhXe~W91B;o_Pj1qMibd&k>V^mp(l+JZdpsh)rZD=a z#VBfwn<%=0A}Vs)_PcEd@;FwiwuSf2D{Czrhi}6O`yR)V$QA=8&_tS0LAq;g(!8%_ zTnJ9D5)~0by}nGnku1=)Yv#cP@aBB(2NJpo3Pe=U&p}1JtAhdb#G3e(>uN=r3~Fqk zP<$VyW;ch#L^Q&!AGvs!g-zPN8-*=z<>EyNG$S-}hQgxOm_BYLlN?Ke z;~3*qR8Z#Zp$2>N6b7S>k5h!AselUW3Q)$S3?m@;@l{SXzbgmB3Etqih6)Jn5z5$6xg0!j&tC~;Ek zvTP3m;-6VAVrfD1)1wGVZF)oI8Z4ZqD`Ca9ldR|UK&?0~fM-}usb~b!VH>5r`H%|^ zUFSb4`hz2NYGOR87MvG}o_Ppm2w~~5v~jsG%Ia(B5<@s9I)PtlSE_6thQh2|Nw!f8 z1Vf#t)%3rF9T_;+CDgK3v_BwxPUu#0=>n*tu4xuX;YUuPem-S4$dYW)w8A2PSRK-w zURR7M;$@rLVb8v&v@;{Og10f$R91_f)M=Hi95U=eL>G_G*A3BKE?vUnNS@?#kWtbk z!Z{6Es#FW%OAJm3QTcHL?Sn5^U>1+-~62{Xa(y@U6gTtpLB#_R-LCt+Y%KR%#f68Dl zISB@~%y9Z!U!NZ1+~eX2;G!{xDB$v>F|zgJ5M^RvV1E?K8pS(X>A9cQwSDl7cmLMk z{?3nn@ScIc`1#X+`tz@zKfC|_*WWg?&%V69KCI^5r}iE-YKGo5YOUy*0%uH0aA}LF zowl>zNeBOis#lf>#h}`aY!K7#aBkgtYfa4*Xsv0Fj%OwyBsNvN!H$^ul@VOdyFGd$ zfAl+V|Nggbu2=m0`T3v!{Pwe#`?9VJ47!;%!@6YvkFMwn@QatHU)lcmzx$T%{eSw) z=c*De!Z^+*kpgx9`l6czw}!J`Kk;!SWIv$ZS9UZr#5cc&WQcX3%#2j?)&i#H_G zTdo|L$Yb0d7%Qnv*Bkj(@!|vByQ<-|pJ9tvFR}ndsAfJYwPYy>+%lRs85e0tL@h)M zOS75ukDP{QEz9;svb6lSfrMDxDs6@)wBEgTukSl35BuGAeFSlJeYm-~y1PH09yYJ` zXdonZSmxuYKEiA_4!4@}eqHf!+FOhMO1r9doh;L5FLivPHQ0GO^}bvk+R|)S>(&jX zXu=j-tPl@MVNqLyC|4w7L(5NshyKwQ+553j$fdRW`~KIrx1X%?{#%D{zrX&i_ul^L z)AP?izumf+^7^o@t*QxNrDwVQAx+xkx5P|L7h*j$H7>%o9JH$u{l)<9dk4{bSH;8W z{QOnFeRz2H$>T@u;h}G6bt!atjEs>&Lz3Bfaf-!3t@uv4^7?rY)Yu9&ObxIjGyz14 zW)oOitSOidJtEu1y-0`Q+!x_-T~uvd48VCas8UV*degjDYu|VGuXzO7@7%Oh6-$T7 z+~1oSwZSYA1_D~QyW5i%HHJ6M2f-HcA4Voq;>=b$DPKUVy?Lk1o?T$vvJ~KdL5;+RdV1R989pO~9(U_fE>vWTA+$4^^t& zAbOj&M)bW?L|wzYT^|9^vw_+bfO#d7*uM2;ZQ8x7n|aln<<_N{old7$_Zt_vzB*nV z57*bnZhAWR-nDPtLvVtSrZDp}td1IvRLoPxeg@hrhTyVV>;3JkZN zMv}K2sECL(?cKANX1-AncL7Nrw0A&*Qemd*?d$fgeczkV$li5b7Q_LDbZ;^Ks)=+d zhW>S7*Ih_IQ>>u~ZkZ%--u9(Y#P(fHyXXRgX%uHCH6;ARv>!PSKP8Jah0r8%#v(6g zvBl_KQlmWIyW_z#-L9+FweMPSh$YRK zQaA{2QD+|H2NQ7T!nho!2BcASo?oxff@6YKb9S)H0IIg-FnO&MU9KwY@>g6$Jn_h+ zOUyDYPJ4~WniZr!Lq5Nv)?%1GRMQMu!cW-v3^>Oixdfp!72%}T5P(#>&=ELc%-_E( zMGgGB#;NW}r+ke|Ow~P6JdWkWr=)|0b4Mn#P${L*idd77zg^VjA<4@;#W|+Uw!mX! zH5GAI)39EundG_2`Qow?O60I=k{0*Mr?{+E9(f$30&ea(R zW8jCy?o9k^5c@E)!LBWZo0UW(R?m`23`av2ij|s%%yV|bKnT+yT*XvkYUaMa*lJq! zuxJAA_e(c2gmoBmPE}$ZfAXe-TRZD5iASN-W@~SztJjZak zDCG?%LRF)f%{z5E*W$wHkZYa(EbUz)!CT2|A{8%XovFI~yVce{m%w|})_*>=o>gVx;0RS@vEzEH*#@Yc&f|_F}Tg^v@Nlq1HbMAG@ z*44n{Td<5ZFjl|ZR!J{po2V0b$BK1rh+5$tbPTzBmai@luE$%dCcx?x%ptM-#MoCG zVCpO>SVY<74$wiuxr3B-9j2uq{nhw{1(WBW6ZF&}SooWi-w_S;wg>5t$4-EZ71&HnPU`+xS+7te0@zx1_ezi#vZm%)Wvj*NR75IEEty(} z$s)(A>nCqLdGgL%pa15Ihx=t?+VObUxAVU5(tSjLb0+5^nheoc49QhGQ)Xu9G!r%lEEy1+4o1Tr(P$l} zecvB;k@c`1THE&CRl(Lo8Z7SX@CkBwfhil4oWSB%GVOlzqxrq5=%8_J(mQ|o^x?Bt z_aD7={LTkg-+X8Nx4(J#E}k4^8$NOy2Ac499g5h-XxpD&~cIP1vLvsov32ytWI6MHb_> z??IfSC1(0T213l^5R5qlBsxbi%l|l~WrJbwMq8SA4opDN4nm@FAENP;KTu3aAF5A1 zdfX5Vx~zvUUOfEz_3e5%9u|?MLF60nUN>p$;m{h7g5x4h`08Q*$rpFePP>SB_EIB2 zD)Q&oM=-&}1ft;`EEpI-^<@=5_!NhT&B4KTwY8D0b#T-E`u^lS;+7?Ag6RmU-koh( zWY1DM5wA<*?P+^BZSOpJv^1d@df8o)bFzD#WGp;94U`B+531B`5jk&LZc>a}t-J+c zpow#pEL(JxyMH+A-i5ZT?drHJ?aEAd)ziay+xNa3DH6Te=v_X^xE^PMiLi3QuR|4~ z?p-AdG#yKk$(?ZV6;Ap3i#S}i7OmerUOe{>I^aVnUU5zcnk_9b*6a6L@lctvfljt$S~xj6EZWbo%pWDql3`b@G_>JCpDrIjK3vzOw`%mTK+x0M+cVi^69hV z?E@fFEv>SVO#cYvZNRa59ObNi**^&S#$zGwufQwVwyJze~E5ojh{xei^19BcR3zb)XL!F@o=lsn9`_}k3S~~Khn}N{*Ro+v^1&J7w}Tm z_y}qhT{eG98M0i}+!CBCPBS8cgC$&6GG?l*$q$Z%MJ-g>Va>XJXBE9AIQ zn5CA5uB>$=vN$jFD3Bz|3u~ICGP$+yYh5c_I+ebB5+Y}Zd-*^IHA}ZU;neh6}0Oa}kORQ}SHTF2PN49v_uUBvpF!R>{_!t=_UosoyVHW@a6ABuKy=sGOh50stHQKzu-I-TO|`eS0G>EARXbcQs&+n| z)uQFOH;5s`zhySS(g&}miA0{l=q>~`l||S@*W^XH#D zkJf!=;*AN+K(CeX)Vr2~#ZiUqvrd@z>H^SB+uGK)YPWS+Pj`2(U%l$*?rn$?zRfK6 zRcjw6eyd~?iUwXGsz}`FdDZ~%yqg6md+nk|z;E>Y1q1IheI7d!=6n0nvSA*n-Rl|A zRS(NLwpj=@jjI_GyB_Y&+LdNfUBL|q_8R*j9y}+GK*D~!UeaLbs!F9FN%F|Ga{7j> z-IG$7{L2Uo2X8>WGcsUh(X}NKuoY))iPQc0+5Qp+A+N4hTrbe(>?l55Io>$+Oev&mX!8EaYx5w#eGL zCU_7m!q%vM%?r)j=TW@hxiC9Dx%_okf(?9heI;gFx24IGC95ONHr2iB)@|GSuDW%v z6OCGj8S5eqk&erIkCj`?)F-o1;Bdg^U!F3vlD>pR`Vj{0e#mQ8g;Yw#t6g^v=Ijk3 zyP;WT&s&qOecScW7W!3~(kg05K5k}np55ho;UvuKc>?%h3KMH0`?eof`OZgAuEe&z zFS0C6*2YCdgw2m2N~Am**#smS(MTp#bZ`9$gX-b>_?MqN|KyA3qP7SL2=r@@uO1%{ zDR-k9%-(+Ia9HJE{`|$O-q%HXPj_???iE7#RMgDqxAh4Ldh(G$*+{CHiFNfWS$kJIG|_Io=WR5(2o{bb3n>YDC3!H9 zM9cE8sdW)57%0|AiCa*hYU?8E%PQgSv|F9J!NA*q{0dNl3`z?w%HW^`8_W8wdD~bv z68ol%a86Ctl0_s9K<+dkoroCVrKxUR%=7Tk0uMofRLy%EI_^g^K{eAH?}#T{LZf|2 zCVk>Masv{B!kR@yEiRkcyKTD~w5v6770_LAzxBJ*2HGleSXvWGlSZ_>(>9}_`g?jk zAccxFqj@tq*uPm`S{)zENQ(6wOLtrpHdc+JKz`!B7{f7Sb}$*|L`*9jssNu>^gX1h z6>Qgj>P4!;_q6Ueq z?IAl&jP)YMkX^|v7j%xik`8$)AuBR6ixbTE ze%JC6%t@FM*AiLKny@A(%mI-D;ZrRu<_w!KLl#M8mI#w=Wx0=y<*2vhyyNp6dJ^GL zsCO=LWw?eUD}o!lH5ppY4}Bvw8Bso`^5IGhVFs@^e~$6tH_CJTV;L8+daI6Qn&erS z2|u4#Fp3&s+EYMcnj&gyi05SGY^X7YIk;{4*Ar91t6LmGg26Z{{{s86=o#hB(|^ME zF{_V$8dVfQn1@LQWQkMBu*_sQnMB(h_XQxwCM3sCQcX$?W_7}B5J*ET*(LbS{-R*C z04)|Fh!s(+IHz3V$CKslG5=6}~Gt}kBIIDL&$erdaf^=FT&ol~~ zMp#ZaIUN$G=VcvQfTXg8=l+Gd-f;SI{x&^be$fp)eR_b-Ma^BJe60=Z7sYAjg~J$4 z=)vsA$7Az<7zVryVrvsh`_n`PO&7{)fN! z{cnHs@wWB9`Nfxi^*6uy^7EH{&v4K7uDMmB%TC?G=5c!B?9ZYr^{k&4~6F__c{M-T| zxh3e!D&U?Kt1^_dc#Aa=6&W_paH0VWW)godXl70!KqsBIbtpTG^z%zzSwayp@e{@uR~*2(QHP1h-J(ZL_>XKY_UE#LP^sn+fR!l0Hr`9E1mHw!jWc_sF*Q zO|`4;-MXRo9_hE@bjY$dDY;d~G6SHX5+E3-h8fmSKFspJ8Mh7ffJKHcY$W*s2~!m` zl9nLGTzkOJWn=Ryz-W@?>`zG%2&nGhWg^{a&UF%ZxDx_saQxiQ+oxZ?{Kli@$3Og# zrmARdx{uWlrAOC$H)8*j%V>5!?ayD|zdCPwx8D2p&Gqw_55nFWnot^>klOX^m2u_B zwV(8B*Xxfze)6w>{o=Go(&3UQz@a3MBT!Z2aA<=XVCofZOooKWdQc5Q>8g!rO-P=* zb&LBxqkRFbHQBY3^h+De%wMrA3q{~1Y{b>EiO3@K`!;H)p@^o4Ski{#4vaf<6V1tF zMMk2D_~}Zg4U*cB%rF>{+ZtoRZI!rdnri2V^Z9&MU|r>KSRXw)Jib{C*zUKz@8|Po zFv%7G!4C~d(a@UL5nEg|>%UBaV3}PoBxt;i9)ce?#vec$4h6TAOnuxR(p^mC5 z1gEWcwY4p+G1Bz){yOJBxp{xM-@y9A6UI6I#L8Lgmsp+nL>md+_eFenqdTr&6FxX%Khcl*V6M?v4IfZQ{WG2%j z{Tfz);#F*_cG~sT!*=SrcO`hjF6T~o_dQ-MeCvAk%b#Pl)3C_UrhLgn`9jTD1zy3y z((ySR@c)~Q{aA6e6ED{di;FX|jKeWI9JO<-fv9st#d?yJyds<^x*T4EbPRICsS<+t z$VB5Tm9seg@VVZ$FbYdD{}lc75+?EFu9mF5SO{2`N*Ms<+E}TMrG)vGv$5ATCY;Ud0L!C8~?1Zcv?F~ zr_tbAC1y)Qp9N^SF2f8mdpryzS92g#kg@X0F4Xzg6W9Vw?5%gy94hc1Y7kC4?LTwF zA??!Oa1Eem;f8mp?XMvdWHN`fUX#RZcF{w$7xs%%w@cv9fNZ=f2~QYv(rF}fK{~AA zLdz?ZUDwj{qCT-+QqxLFl)S>l<_b+i9;9Zrhl`2KFBpF&mpN$261O-;awH1AlMT6y z1NFL|J9vG4{iE-H>-YZlH$Qyu>gkuK|IZ))^)G+@^zOw2$+aC0t7zB0D~N5|!~l`) zwD;b(eS;y&);xB}KO|^8V<&Mq9(3EcZA%P9>@1B;3Nk;JZV_RG+KnDjD7vaGayVQ8 z*7x1>5D{ewLFq;{`@whL|BrwF>)&|y@Y%D|Kl!uY{NmFWtsUDUx_3ZD8W*qN0EwQ) zW2V{_3g3EeL*)>68Tje9pFQUMeY(^o+@ikE;0gB(_3PXo^Z^XS@j>q5)rA!qN zG!ayb!eSV`o1fjXt?%91VLe>0W_I59RhH#y?dN?zZ8Y^J=XRmgW4OtnfW~R;CM8TGWeC?e_ zK7lDNC0W8@&mPD$-{=b)$zz*Lxmd1(33w2!(lk0{!_0QoO|f_Fel9XX^e`MwCk$)x z6MKW-7OW$ytb(`EXW%-HI&3AF*(-gV#AM{b$n4ZAfz>e9?iwZ{>4f{|+p z=&<4aFNmj^MU6>#R%^tvED!e&cdzbF5B<;o;#ZF;f9Hqqi*Eg#%omXbsg9!lG>Kz< zFhI!bP?&0aH`gXPkUn{j52cZwV;;91VumZ-+b#}{mGyG=H=PgM5;t0 zy>em#XlmNkFG~d}FbXw$rTLw@eXGHsY7h~2?>}IX4Xj!*SHngURI`58*AEYr^Lmi0!{PeoXjr%NqTTlMZU*hC z$yq<`H=_2gzG0(XePMRRLS*CByd z-C*7T!$Nls>Ms0 zFH2f4j5~4|=}ypZ>`2nj3AHkGuzXsU8%(&CItZ=2W&$n}zF6^SEJj|>0OZkwj2tX> z3Pa0mPRCe1CkecZR$O{k6(3_Ga0;A3W}h__+Ltzm_Z!hvl-gEB0}RYsOLIu}RCTRr zYD{7Dln@C=lOd;nD)Thqp@zMNe;To4UZjc)i!zL!Ji@%*KrL2yVGdrKfn2H(ED!5j z>U@&$l+8qn!`BaZ;j|1^IfEP&QmX!fc%d=9W2&Wu*u{$J#79!z6AQW+Coa}BDe;BX z6C9iFmJ3??KHU})7Ei#>3Is&uq7N6JnqBi7HWDNRV@PE+qluWWN)$tlkI7g`rZwcw zB8rNQ=>ye1b0~9hA>>K%1k{Sx-5Mev4x5%{mUE5*6YiB_rt;R`=dc2qevAAm2a(7G zZNf_G&-g%bX4TADRXmyEDcFbkz7Wbl!%hCA-1J z2Q!Jxn!p6Zn#vK5#2o64wNS3rZc1r8flFzJD48QS7|1L&k3rT+u{x<432n8uX<|cpGc<|8gl*CZgX@fq<(lng_=wb~i;O|xs9h|RVcwt`NxESL z7Z1thVC_1LG;DB(#O8~2#W0-Q^%~s6YON;;VZ3Sz3UR3~HYrKHafa*h_WD{v=5PO5 zd_!C$kCG9diJ%ZnUKjc3TkrkukG}nbZ@+guw!ix1*&qMQpM3twi|xEGZCRy3 zpt_r7qJe%cQmyyC_kG_~mGdAhdpd(8_O8n+>tQ{gH}$^J0aS^ImJ6)407R{z1e_59 zKw+}B!_`&qx}UcYMgRp!c7W8s^SdAa=fC&Cd+)4&^XctB{ujUc;_2Pta4Q247GB7!}>qfr7%}SE_WOYPQTuesm zV~O6hH9rnU07Ma)JF@7S;SVXVTiRCWuYTN%ZrYCaQlg{CbVQ zIbmp^Ei2odyIT{y`cG7KhxtL;CW5TU7{F2DNPxD?)-eX3>XUxSQ`lzn%7P2c`gSr? zv#t;K4{yKo=;r$H{MoIC#{nW9D+U)1dZS(;BGOgOIwP}HKn#-JxVBEv6)DN3H|IqC ze15QgygICh^}OvH?fS5YU^|_=n!s|U4fLxp$f#K%0I0@4WK_qvo`VWiVFM^iY3=1b z{^XbUUw>=;=G*HJ-d~8nG+lG@j`f+6!g~;04P5M1G+ts$NyV`kI1-og0sD!e|Ng_3XI?5W7g{1b! zh>{zn4>gO{hvAclHcl+4HOXY7)8^8+G#bxvc^sav8v!FdzXT#9DI36Ee#>tlA+R)V z=hN#KukLT}M8K=-fAcqAaA|-0JMW6^nwcOgHaWao5}k~MMDW(5!_A|^^tC1z)XcX1o9|qi>A(Bz)!C$p*f-mRqrwxaw4#-6iSoDPmeanjlh6OV{2>_Tg=Q9MiHf%C%+ueg;ttS`+5O2 z<$9t#BTRVO^Cm#YnZgZkcvg$e1RNS8a}n9_yaNfw=xq=U{!$bG&JX)`?zh5qX@^CQ z>w3L5RXd%#cI~d&!VVsU-ea#d@f(h$2|SJvXy|8Dgfe&O2_xwD&a_qm0*UC-;)Rq= zng;-;(MF&xlI!Kyp&H2r(p9})FC4(I5irwY1eyfF%4;{gpum`=&&~HGJP#{EL4)<~ z3nP11xH?OCiwL^1qS3{dz2_YK#4OY!yK3Y|{f|h?O;HoJWr3M>#Q0|mnfO<6V_{Sj zdbP7A`3rdS#&g29NC(ebTn(~NT4NI~P0m4oi*+L65M&z6%zOQU^yJ!}`8i6N@|Y8{ z0#Q7JoX&%!y0-?jt6JPp)iFZRd4?6FTrzL$uqaF;5VgO)4a&w=o$^wblN$#oX8bEF zfa|49afR+oJi8*mFu%)%7>Jgb>C7VYi2=Qt!t^8N;a1#25h4$3_{m{b%qzFX}iGvcZNU69NYR*YbHw2*7AVEkv0w?Mfm#SmZ1 zi_mM1mfopCy&-`i-4sOqHVNVMbOM>MOPAm_6a^7Bjh0yx%Ti1WUs{!ZHVqL)7vq_e ztfo{SbKl`&4k^WDOSFDf~>69%osiZw3%veiA8EO(y!(?{TDitT06h_Bl z<+@aN6vT7tlG>C+s%S=1RW~|HA7=gaFH2YhLwZc}Nj&%0MRXl<8z1sljr&Z9B8O$V z^NQqOGaQ%_9HkGr6s)fV2jQe4aMT@oQNk)iovboPYz4ZEHJsiz{QaaqEOg9uaKV)y z&B3P<&0imRNsd=kqNf&bnp&-&RS`q29LLigUajUnel^l>sMPqZsK`7;0>;4C%%#mk zo#q2nmLD1Zm8ArtO?Jf`-kg(t(+Y95GX>RaO6Piq+eN4OtR2~X-hjD;kq(=N#W9kVf1s53~nT^*o60(yfPg%J)lzKMXi=kG9 zsSU}_p2`Z@e(R4V2N=sbev^`@uTN3fWVzEa;zGHm5$4cf!|mi}7yo4MN)e0vh4&eP z?%TQVj~*X?_xm6J!S8s&SGCT|r+o1}yWnHcg z`?l?;odCpZzC1*0+OZt?_kQmifB(ntzxUSi7r%J@Km75}UcPuZuB-05c@x(r5c66w z=fn-tbP+{nph=$&5t2P1d^)YcP3br z2Bf}ZGxe~c(!XFu-iI!LaH_1e{7JD^%l#;kvC~(WS_F%rsU6n#(MRvTdU0#J$si(W zX^wo8N93g;#r}vC`sDtKk0wt}3H>0Zx1ys^ygyywl^6l-30P`MQ&VK8aF!H`u(;Ai zr;MDEjUkGlYv1p-CTvUV`+mH>GLh|kwyyC-z%&l&Anp%cdROhc=QJ~10SQ%Was6=* zf0rvXpx7%zye8z_PkLIf4y&|H`~A7EOIxmw+B>>Y;peQQZH~_(w*xY00gYzH)(D_? z1w30#*uJZQT-pLr%IB~2+3Sb*o~-Xbksp1q?uu8Z{`#c%yY0IN-vpv(9SqVCB}jnn z=zg-bM^~$8kROcA@6yWcm)a7y3kn_jkS#8T{{nblXiG z1_MH9wj@yXvl_M4v}!+_>UK-_@G5CZ^WAj!j4pJgs%lu5 zb~u%-~n!{dXwnY$mWh{M-fDIyfq2Gv}fMgpom z`uUledg14;@NAn6W?B(~g}?PYMlG3%up4X?K8(oRJEBgG%;iH%dTFqS&Cl&xc!dNf ztFSw#IZ_9igO6>7$#eS`6@a1>RP0cLQPALNM>Y{*5^l>O*d+7w{> zI3-qk%*$*_qF9pNIo#%uLcg({UoVJ-boo6yENi8aYQ6vb-XWsjGINM`x8>6!VAVg4zm;XqQ2 zQ3#UJhQF9;PTuISkZq*=5_W2gr4P((hfVrGtzrDujBAdT<-PUPnpllJB~X~n+2rz} z)3O&jMZ2Cs=KUKr&QRIJuSB6si%S42JH@4ilx-yf%nl+49~&R3&qMCxtFvZChd3Li zd5LoMcS~P}k^=+5YI-vH)CkjOuYFp?_dSZWtIZpav+WHt=V{YI?$7#_1mYk*IIQmr+|Cz0A;Ccz1& zFhDQ4meRBBZtNnlclVAV)pMLi8>1!BPXbEuv6ATal(C^c;lX(L0ZyJb420 z`IpaMzdU>71A-!cQZ}+nk%9@vkbie*0s%j}%8@P4J)97mLDfZ-;tj163bG9+ayOuq zr~(6m0_p|u!_3C@bP;RSt*>5ImX}#nFal<B-} zyWF`C-83&$yugSh&CjUOGAlq0*s8dL|x-fcT2D4WgyLuJt`y%8(mPKF*=4N zRdSi_eY?F|u8xOw*?NE2wpG|D5Spp`q88;SgNl`lL(Nw6RtTn721LLnss>exkfM~Q zxAy#Q|KLgc))V>B<7Inf&vyOtPG3IQu51(&K!6Sr=&4HsKwB3v8avH1E@b1r>kMZu z&t$I_7nVwnbdVd@xXPavCo=)9D~LueYNc0 z+G7JE(cF^HSFl5YgF|AKP}bHCjXbW(bY$tU!}S=z+=Ku?ddK}-9w#PNBqt0#12rF+ zfXlkv-JPF5f7$oVU|&6b@zvAUFR$*7S2ykLn?L*67hKlweC?6;tr%6os*NBM7KOTT zZ7X2f?P`(lef;(ZUwizs&z^trm-q^FG8Qm*u(JHk87`P~`@A)2H%l7#vF6-`=KQ`Pfn7m;;Y*2Ob!V52vm zG*r9>cn?3}fr7QIi^LTLqp6tyCJ;#yxcA=GBQ%jIHxfRSY>RLQDNAc0q`7yBD6L4B z?;IqKL-MwZy({A6KWMS>Ahd2dGI)O6+q&`Lv^&@@O`5EYTn>lBA`2B}dsh{zs`ZM` zK{f-&F=U|m-O9q=BRtIe%q(nu1CUG3%lxntBTArJTlg1b~G-Aua%x$(*#ZurxH^F}2ERrd$F_Cx*>r66KdCSwteD zXkrFiDSGo_$_&q}UK6}@s7Vl5*CIsZGEHv^wcT%Kgg8g6Bf?7u#S$YjYf!T!q0{qS zY6SSs zJ7U!25|%&2{M-WoQZJt8;F{VJF&x9B2|!YOrdbA zGLzFdBSz2n4Hd}8R!BaS@0eWwibvM@0uH&wfO14Ot#k^-@1(K{ zs^{TN6CWA7oR%STOAx;>B9q~{D8qY&v-Y}>DX}yxY0UK!-!h>)VP6d|^C>0$%iMp} zkPc4+WI2C4gBcCPI4V<<@2k{vLET*5ftau*=p=a_SUwEH=WWE4Ih6}vI94x*7ype9 z1vU1?2vsQjE6dgi%1VtAcT6f%|As|lpcu!p#ER6XCIA~#axtWpS&rZGlZBR(SQDjU zK2jPnYu^~($mIql%Y_-xh)^EZse<`e2?e=uGqFKgKz;tAQ1`d~L}-68*cmH|v8F~XYz1#oy}#PHtMBZDmF@FA@&iyRK;ZQD*~n1Oz5iU6c7-Ovv0Kl{UP|HnW6 z+T$Dk%b&dXAO7c`-@Uv)uC4d(2IF_Qp=;M2N;-Ctal(z3b$Kxg(YP>BtsCsnmf!sR z>A!jB<`4g)Z~XA($N%+7mEZF@Uhbd(4AhZ{_I5u;$-Zg0P{BAVC#;|)ua5GftuQXl z_E>|NIpmhFFS}+2FN_pk@nIVGy`Rs$ESBjSBL^BSUdo}FKjF7DzBU8Aw94O0n>a{H zgObJ#Qq`!oM?;*}yulD`SM`2%mU{^nJ3Iknn)mxSn9A5a3!EH3w`jk2fBT@j9@Ylh zvb1HD^Lg8Q+&COw(oEyx51Wt^rdXC{Mz2~6Vip_u0*k^DFAOC8ARYu1azCF9*4hGC z@1{^`g2sLC3+T~l92H}T)-$07&{Kf~EG^OEMoG`NN^3^wt|lg}5$NO>ukH22_Ui5B zyN~$YwSDlGe12`exz*dVcP__USN74B$cC32KEK`1UDTwTv4QY{LK9&YegK{$3pKMm zzXgjUy`dCV)F&XO7(C42c|I|8Gmj|!lMC1u9=Kc|ni{lQ*S>Y@u&(G`x88dbA6i$_ zzN`1clV)7pkB1jFu^#AH+9 z77Ssk=8e$&y)N3mD~U%3`Mqzy|J@JXd3e|!U9V!?_70$0c?K~|b{TNd_wT)Tt!97u z*)5s~q+54ZKvfcrV$p37$k@yPY0|xwK0QgOYDx_i1)&Owiyf>rX?{9e#JV?dREtDd zFygM>{lJ|y`lhDcOrgyc9HUymBsKuzNouArRWyO;Hke~tygpi$g1+yq$$8t?wON2~ z^Q&{!%v9HP^%qr_Nw;px$gis%8Z}!7(jrOWNZGrs!bVs_SE}K>o9_3mwMJaG)y(X;wia;=R8>S8 zqb-J+FPdrBxRE@-G?_r%bZm|{6bRV>bXAE&U&bZw`OMU8HvrUbN_1e`yPwBZSj$i* zeS>3oRM4pB=##j_@lvaz_AE?MwXV`+73m5v3dRALb$GfuU0<3_ysq9G$G*I~WdfKx zl);9~@hvxW+`ptd9~?Q#8W6(rIvtD5d_?1huDCyIx9EdFw;;_}A_%ydnRc&%ri&f) zTa-&`K?Tx-M^y_lP(y|15w@k%A0ZB>XN8>d0j|qX!`}6*o@CcXX)><(h&ZOgtqfv{ z>e!$=6~j+igWC7b*oB!Ansu<|mAXPp+s~L4xzjoLeo)-ZWdvO1fx_CIFt3BnP|qgL zR$Ohw?I7tphlY%@e0cd-v()D~4LY=B`sXG88RN`|Bc=#52&clM(7WP1AqFExS7b|K zf}zEg(D7pCd^+iXhZ;%PSe7JMelwhPs9se?#kNPiB01+=rBW+7Le@%Zgn>qgZWY1$ zR5W@ATc~d>&_syi87ZUEr;JnMQyJ!^K8zBT@`e@nSv1m!3wAP>l<(4Fi-| zBc~W-zcgrS#pU{hDnczPJ*Hz71Rzr&HZ(JY7Yk>jRE?nEeQ8mpiBo@ywPI*} zJ|l3Y2Co?MnBb$ddN%M-*(qn22FJ^J<@;hJ6`_newOYSiFHEACH3S@*Hr^G>G+R1G z#v{%1V)8Rg`b^4DSW3(3{dVzQMCg^+>|UYf%ghEqi(dsvp0STmOVuMG|%ABEI zA`?NK)G1SL(}K*&{pl41;pLy-`r5@WGoV`_!bY|J zaC%r9f9HoE{TF}qy&rx3=HB>cKmYPy{rgXU`OD|J>j6Bj3pBa_vmy$K#VS;S!Jy1K z@*-q5Jc;WtcioPUuGhnQ_xct+TWePVlo^cKMt&e~t~!8dZxjaJWLXc=THnr|kBCYx z(tx%sTi3(&;lKEgzx!YO?t8~8{*%9W_K*MB&+lJu$HUrnhZ!kNNSf;IO;()I2|13S zBo5HqIhT+2thVZcM#^9R_I>ZyPp+?T9zEPW zJlsBf`l~Z&6NnZiW#^M=Q`tZ~WYwBy+aHPbUkh$C6tD z;DyX{`qrA5`5lW4+(9v})bJQJMI_IO&=r9IBl`yhmew}xl10_wJN5n&^Er}ER6`sF>o^Ok&k;CByvcWuAA!^@L?e1#v}$PvaPyDnc{%fEkN z&rc9(x_QbsI`om*Rd-5Tv^I0bKu8I$96k7IZ*7E3=O&ZWQjr6zcm5;aj z2baMmRmk#4gNOQMM)^`nA44>-ef9G8+4GmZ?;`yCi)UXxeQ`V?0Z z0Lk8M;r_$-Z=m@1U%WP17yxC`#CnJ6(wdn!AhhnaW8~gVnh3V`6WN& zDOiMF3Crn^f1!5;MPplqV4jYbHs{1D7cB{VL~WNFJH02wD(X?`}=x5~V%O0&F8*p^iQqW9L?U|bR&h^3(lUG>E_FQlqkzF zX3f94&v&i@`dWnOY9>X15NVVMZwjg^-pHtwFqs)dGLyIy#v>%M?!Lf95mtr30UTZ@5VZl> z@wpNQ`FcyOAEuP6QyMa+%&{6%x~?2th1Hd(p8+c0J54;7pwuSSKFJpotcGDFKvn02 zB61A-E&R(u+T?Gg`BU(LnNJ~Q5Pd?b%3;bNjc#$puh^ zQdnZ-uz=X^NGbWpZA=D+`O{+?qgp0bRYV#f>w)zcv&=c>$1w6QNEk>D7vC~7W@Faz zqcq2mZE8!QZcPy+)N~#{BDUgWmAFL3xj-!bHdl?!U|9d;$l3Y$Q=a*i6x|y#tR)!I zC>yKS1sa^c$|Gz&ufN7#wgm&Ie((vOSeDsh0==$>b)zj=K1 zU;l&e|HI#ThmHT;zj^vU{_!ui+tXo@U3dB?L(jc($*=YdTIq>QCzwj4d(71hxf;Q} z@5|E8x2J#gr=Ps@-jm<|yB|IK^7ii8t7TobzMcCn(w=nJZ!4NK zN?b{4-Z;N`q?)KFd8c?fm4poQP^C2qICr;DZMm5HKrTQZ-@FdQ^BKzptMC`rlzem z4@cLfSq3~XLTzcJ0eeS7BhC11$E(eLeb8?{lJ~FpgGb!2udpziJ}(ufFUL z1`4!CgE0sjMSBNKL_9H{!nIIX< zPJ_^Hj*nixy8D|?zB(M2BlYio^WFdI55M>RyH{V_J-t7xP*gHIZ?TaYr-~p(PqnAl zFp5|cZ|z~O`orM>HH%0-jGYaiyICCii;+qk)-(Fi23fv%_WFx2pYMGq`PmoGo<4oP zuE(3l*N4NQwI*n0`ttSb$B!O;@$%tc|MWM1^gAEFb93nX9;X0j%TFnp!eAnRRVhRW zU$?l#2JpT(4%K6ysVcA`6jd+upm{)iF>p%vNF*=qF0^ zg4pJ0Y30!nz4*F{fWm!?6aQ*n!$q2T+rFsC1I~MIf_>bMn!eA>%ulmIO(_w+xeO&M z9sGcBxK_)pJ|p~8Ea+)s>(+axffB7MmL|&@_aJk#uG*sjEII>thFjG<(XE-Kaa?Y0 zW9lE%t}07|Qq3GmRbfE)N<(1l3fK8O;T2h6#$7hZCITfKzxqyj`r6I(UWrBF*V@4%}jTA@bJM(=R+6>J@ z#pKMVm`4_(|V9Ajikw21aq0&NS#dROv$j6xz665I=+2t5x48hqz z=56Px-a{oSW==~P35b|{X~+PYiD8YhryBZYh61_J^ItQ!3nB^jg7$E@~IhLIJLZXni$xD-xhV=?>P`@ zjG>;H)Bs`5gXc_;QeI%_#Wdf9=nFPdpWw*9zhS(yGeSONn0ozLzWz@8@WXHY(T_j= z-iJ4zzTE%s|I=Up+rR$e<%`oISV4&^M5)&MZmGSRq{KyTb&I0^TxnIo;ktE!&7y!+Sq<7^hIPm}{V4%s~ODNt1PL%W8&w-}|`cuK{>idKlrxnq ziUWo%A>)K{ED2sdpnMgQE#&U$V2EQAawP_J)}*Eh%W)=&2vla-pYUSm`PQFiSbwHuS6!B5<#(;IZ2zX_jp1KGq(gA@0RPz@#Cb)Ry?^!}WI7reu zp562HX1`kO>o@$t4G(U$NDwxAd*O$V<>#+Dg^zh~5m9PVCF~z=HW7M{~ zX$Yx+lzW5ULnxjVX|gt`?Y5hUXec=-P%FxUi@+jH26ek+N`Q>29J;L8KK<&|r(b;K z)BW_*FP}YsaX21tZmti_7PM(Yfo-p53;#TFf6L*upioMZ8r3 zn+W0~GzgoCHOkUxCNLH1LJ^8@Eieb|fop5BqCvq0Mw*&5*_=^{z}UnDq{yzjSB?3B z`_`uGr+rb3(&)DtG(wu}y{F$N4HQw^_idvHt5+JhG;U_@m&0)+imP5m0lEC$teY*P z!B#+%rFTyc>^KF3ib(HW(4dwUk-Qo(VB0!r8w^Bia#-5B5{7Nt&Z^ti3I1v`$F$5^g%+9tSe9np3zDJGmbH6i60A&z z7N_*r$&k7Sw^3@!xx_6U8@=$K6tbBSR8_5FNl&kiVlJOiRqF-P4F}IyBv@T8oz@yb z5YmK$#Btv7$fZxSP7q>zIsf1Av&DYX%iF{>nWHL)RJzM#auu*!dTZN#i>#}VYva-= zp1eiQwm8DrDu|`XT0_fXC_md!6Jh)m8T16xx2OQP2vka}BO*wDn<|j{ngnH}4DiN+ z$AXQ=MrtY}E?0f2ZP)DH7t^t#DNa26d15uSMD7$+a?<+Ulm{ZS_QW0QIB7kN6`|6l zK@qe}PPOD!hc#M$mG*)VCb?X1QAhmRXNy;}?~AaWJgy=l?(kAk)(q0+_R` zoH%fO3#m&Z-H`K5oF7qTWy$GgGmAS+ENEq^c3DHFeEf+6K2l9k+7tK2rS?8fnhB528R09XTxwaBOD@2Hl2zclrH}suaRWfz(@;aR-uCD z!pkX>HqC~Wl?yS4G7s08@&GcE5}3&G=uyc}PI^_#QNcnEGi6yIgOR|hfz{ugZ+mT5 zs%}8l1&UsXYsU3?%{YCQ(*XRRSp}R}Tv z3y;kzPwNSfD%%>8LXt^G8gpTt8jPkc0pe6aUNplL* zDoH$0Zjx=X$ejD6xp`oQ;It=amMD?SF(+FmwV$=Z#ZiBl`zt|FLBwISkZAn8&frh5 z%z4cbb=;vjnbnv{KssS(eOi(H2xn&Onuf<2cSA@KCeG%GdFB6u5@3;ni=WM39BIPe ze#V7rarr;}@BZEgPp*IS{Pf@alb`(SzxwR;tMk(2kaweN?=Z7HQaRooA5k2K;CPzJ z`^o{=76H(tMeUOXo@n0>S68j^ba!9rSZ4h~OvLC{E|`}L1Whjv=S<2VtsPcr&Gvoo zz4z`#UGTtt5n0!V^Y-ya@BSbD;rIUYZ$En8`G5OozxpTt;#b&o73#hN>cNxldy?FW zM-1>5KOoHe5?Q7~v`0H@s9p-08a|Le|Eo{ldVKuR55M)!Uw!r2XJ7pN|K!J4$K|Jg z`Kza2KE=aMQWgSc-8%PWU8IR_I~I~uRki3Tmf%7nJI0_wxXKo`h)jxlxoVo`P51sN zP|WM&*nE+}xh+~8;icD3xjM^i=K%ba#^CVYr^HK_f+M6WEwloF7Rt^VjP2_DGdXmH zo3kbdlsaf3ZZ(~D5`+ny6HWmcu|(N>R^Y>(7#X(>1Vyk~#5lGbKr@12pQFx)J<9U4 zp;%-}%qwyPd)L-vU1i^PSed3l@#^K>dRX3j|DD6}(6@d*@77p-wY-g?EQ^};UCTPe zn+5_&AJwn^^L#>f7zz#a+bkTdbnEx8&L9p=)cXBtzh0MiuA?)rs2wjly4i;-pDaasVvU5nmPp;2xP6Iv z2QdJCyDkvH6_Qhf@CJ}^>|!eO4Ek#2suUU=(zS&K;j6p-i?8lKUFEP~S=*ttK3Wl^9`WyHdO-y+$%N6cZ??>haFF`cCpFhFKFawojhE`0R_XR1IdIeevw8ubv-| z$48GJt?OYCZ#%|p>Mwoow-2YsH`kwh`RdVO{evHV{kTHAMgUMwW7-iLz&uyT0tw8) zprF|nZ=yH_^7X)N+t;=I&WDfBd;j&b`}MFoo)NMC;j3&gXjJR2&5g!;#X0P$mmf7Y zRr7LE*M}rLR5e*Biq@JmIi1fiG}mwuZ)dl9+fAVFww<*J1=!UKoy;r_YPIQPWbe9o zhq(zB$Y!SEXW!iw{lbU$B?Pa(EM-+!OszAmML-Ox9_SJ*VaZy!Mvz7aWZ$vEyME|ENc)3^lqw9 zv!#(_YqAKOM(n+a`31e42Aw2s1h`>DOtw){D$+VkE%{*q)}Xo`G!}fo9dbEm|9?qY z^8@Y#73iC`P9c^Bi*GrKVeHK0E6CrT+yJnQQAcfN#GtjgsS|yPBB-32rN9w9N^61r z(?K{HS={(;WfL+57!pYQ%#WpKcVdtp%~vA&OBya>VZa>!oO!b=a zh0*~|YQWM5%Tfqjd?Ym@zfQoM(2ifHbf*HQsibRs3Q1hU{|(iT2rEQWCmiTH82CSUeGd-bsKoI;&sxtVPZ&uSuFZRecuRh z(|(dwmr~SgBiA?Sl7EiV*DIzT@=mLrQ*{*#g#`gVNzJg-g_nkvpi#P3dOnFO)zW2B zND_aIvbeGsZ`+;hsAT)bGgG9KMo(6fKd+?H2<4Cvk%T<>QG^~jhqPVGLsbDn$V^5) zxl|e!c#|uX{@ABKO=n=Mhrp>E8JpUaAfIG7z@$Xs`f@4x2-!GfXsJ9QhQy5;_GIhh z`H3U>;L;yD^yQ-v09&_mPwJkE=6UgvJhvM3rJETbUt_BPw4R&JHGY;+GE&YyAfNsS zV@e?LrZKVlYPOwfkb)u%6CJ^(zlMiSm1CUU73VR0;(20X_~ zoYoK6gyBennt5^H9%{s-X}ej+zha8CbH;h`!|2`H`nX&2Y>6sn|E)nA0Pkf&wuvG zuRgzC$pg?0Ug1Hb8VxY<(?+m3U?O9y%u+W%^z=}$Ko)~3*-{k?fD`*F@$V~>n?r+a z<%xrYFayPTA;U(8trt$DR%BO^K(ercC>P1SY(ZX>5bz1j?(*qx$8H8eX~QMZandY0 zjzvZ+jIl?yG!&e9k3qm|jMY%}R>c@3$d>O;C)t*<&5hb{8|=ozW`T#eO2(yfoc2$U z#E(RaQa2ZZD9w`~tu3bZ^7-p+?~k8cf9-3JzIuN9aKF0>sG*5~=)Iey)0PBTz*$*b zPw6h!`}bLNj4+E9?+Wiahx7dju=TJ?le6mGzTd3N0&b^m^7AcH=+_>}O3X`R@G4N*RZWN;-3)%lz9XwR zgZa@6*~l->UNTdy| zy0%69tawmwnxT<>-ya^%%gy0uUp#+wwf>#&er;X-hM7vOUobPqe#3Nr34_Va-WX8bW}zdp1dfBcqpeE#ZwJ*;uPje#PaN}H}mkx&8e!EfT!&3~&cIwg^W zcgJ(gGeDXEWD|gn?h1=80gAP??#HE@U#qybGt;_4rS zvm{Bb%hJ1Ifx((2gLeg?fYdDAj~D{5C}0`fh57%H8|LGEEkA46Vd98hr@EU$VA=bc#wy!-#=^?(xd~E2&IWM@tPc27sAB%pRDU3Z{Y$% zJHrVD3&=cfvALwD{-RLzpe(vsWF{4)d9&Mu+~9VxKTiPIy{y+@=KbRU!=57RYJ{y# zj>pBl(0Si?wH}uO`A8FL5@IHbnc+x|RpTo27=A^av(wESL_NX=Y)=(`94@t@vUq}j zi}k1+SU1~s-;DxW8rDVHkbNHg%c$EdB~^Z4a2DSIs^44$tjUF8)nj*t{y^ znPO8)Ei$TP)`(ALoBU@yaiZ@)g?6YA!uum!ZsA)>s5YHKjG5I(hLvR0x6YLY#6@PH z9*GO4$eM7dO6HO>uFiNS!{eb6tYW|f98~fvUmC_SX`m&^Y`RH$|_mmn-mlC0HAFDOi^)QICI8kzpcpO$ola}D5Fg4$c+ zJVG-hJtoDs^_%qipSEu+nJ}cZIrEezx?lVpWrDEES%7Kbm72*-#EG+{d{`DUJ-6U(d_JS~#HwsY0&?7A zI}3WGE#mpUbr-f2qe3FKO-nZB9+nJlrM z#W}U&oJpw0*lcu|+eYB5D#zntUAAq%JMTAF>p^(BJFU_r)ZR~*Q@i;&ukLrVxGxl%dhUr% ze8MVs>}sHTYC}(5nzV)1Y2A9~7sd~c{Al%sP#QqFSLlLoyeqHI_Ug{CuKTX%Q{Q?w zD%E^9lIEv+L+=eRHJIf&tOU4exh*n7zSOxuLNz{pad$fJp3p=nbm0B2*geUPZmR8M z=W~aeQfauq-(H{etJ~8rzI@T-AT$#&mRm%)kff1ljf-$;BIMedH0&E1v9uN7D$-iJ ze|Y%X&DFO)cp%bHm`0fET?$Gev$&&_w&PFe`hT|J03GjH72y*$`m zs#=ty<$kQ0?R!_#UAIOwTMURaSeEM|1H!%cWmy!kNIbgVNkBLCW^J45vUh?OjqS3! zz=@-3Ym2IyUm%;lvD_9LOm*)&z`l1bqGsrRs<*4EFNQ{VfUc^DLNJ6e1>rM8*C+-H zgE14ANnU_p7AIkoohMZ_gL%oSiQniw9IIn@_to)klBT9=r<3i?Xpm+QSwyami<@>g z+xNbA1ED}yKdcVYZ)c}STNa^kS2bcitdAeB?>=s;Sp!z#<3nq}7i#-?4`$}h+AFpF z;+#O%xL3jwvb(AXOueTb{(o%!+0$%Wavz5MGS}WUe8ZW~z4zR)Co~$3fdEBeyR*-UpOobqu1P6m6L9*EZ8t6uM-}%hv8>?#Xy)ylf z!&-G31@t}jRqfh)tz0?$GFPrl2)Hm;9SVVHo+{?WX^`g<6cpjA@RAjl?&qi)3>^rY zu|RY;cRe*#5&oEnSc$_$WGI6x+L6VrpWogYGLTAWBsYPS+~^l|kX=x#V!*g6N>s%G zmj-l3=QH$ilv=eyrbR^&4dTgwOmIHUi{xZC|w*w#Ds8{5azktx{tZ|ob&TYyvhWV zTvTHg^u+BDRbr3O=Ll483l_koIWWzcglczvkV4}qK{$Utbnan`s zXa*~W4FtDpkQxYf?IzkYZx|Gl7_``C^Xw>=J8z|-f8#d6p1vR+lv0NbPOV&~UTjs{ z-g^L#V9el3n_vXOw8QSf2|$h^^{%~f?H&KP&2)H~WOFp;zl;9`tEH-=R1WRAlm;Ne z(`_-d#UeY|CpQQkb44sVG@(PoxIx}C9rS#Eyd0hy5$i=wQE@MWlrf^VmxNAJ#W1=!vHo|HVvQS7yLXC`Hcgd;O<0Q! z%9Ve{Ws?0uMkomq%%!n)>LX|dEa}i)A4}eu_@>EnHhv0mbMXH62!vs$> zqEh3JV5gL0#6uf9c6oE|T06~bjv-P_4Rlr#8MSP$d{7GxrlXUTpl1EG%@t`k^IQKx zx3>{GrCGAZhjt}_w9CLGPhM%v)k$$E$8P-Hn_R;DytCBtXIhf}$4Asa21h8=nf*0f zUEDHbD5Z*>hS5|k>MN%KS6wBCVvS`_sdfa`X=U5I6A++v+#mWCOPd-GKdW+TK0=<}ZJId$a%9 z&z|1y55NBF-+cG+*^4h;fECIVRm!-f533?lqsX3nB$gV5mLp6^j6ir$RYHn`;SpL-Jd49!wCR(sK+hR$#;WXo|Yv(ON!VioM+ z8C%L+04_!cCkLmUaFfibPuW6rcA7OaYgAk7R^K$^09dJ7l;RX^#MH>!;HuOtIFroR z*1VAd1g3(altmZk1ft$iD5b!v#>e(fND_DJV0uhbcj}8Fur1`-icix%Ys56CK`wRg3oW1Pw{X?187m)K);^x z;#SVL^yIvp4D#|u_=Gp7gDkSl6#`V1S}i43#7-JgA=Wt1htQ{KMOxN_Z<8n~AeO1b zudnu3yD1O-aX>2O#Hro~LE3()YE?Tsw>#9y&*8xj@v9lTN);7eMUiKKP?(sQX{Mrs zF((eHG8CTYdiP{}c<0W@^_!3H-0qiWH}f#86}it5_SpAwx?DLyDO82N{QA|i7q3Cs zPt#XVpWogbR@?Q->FGF*r7*jK6ZTWaA!TG8SLCoi6k=YFfAs0|)j;2R?_SkOG~#Gs z)jhGCxmoqpB~~pA7DUsiN{1@K#I4+TCc?P3Cj}I=%*)9*{OU*dhOaKZygIB`qgKaa zqC_OFZ9)W0hKxm3J>`~6i!!TqkZ3rE!dV6vYXM5kOx90?#L~@}z_9)^L_jsRvBhEz zwd(bZG?K?Hr^(e@gW@2v((!B!VTin+Y1kLHn7OinK3vm^DtT)cRMmYIW-68_PTh%v zfF>T*3s1&f6eBpy_99}}1aeSfLe2!!^cHisZUdw&g1XcN)h^<~T*_F=YDG*`f&GE1 z$XvxLu@=JVYFMwB3&{Z@7{*d7ZVtKvM#e44&0eo>XC@to0xMFBsL4bi5R>{|1kqwW zB|v@CH|ut5Zj`7}A%WGA5ERxL_3tRm5=9^-*fo5%hK*HqU|x@9TEtPQc`HUACRRfU z#J1T(WPkdeI%W7T4R4H>Vrq_I5`QJ+WrRqJLMxO^<#5QARjee9gmg+CVi99#E*waCei%+~!H90obZFrzrED zGqPzaJ5_zA2}8Nj1H>D_mmS3AQfI*r{E1%!QFx*X9dA>6ys>2wIgQ?DJ;!# z??WKI6cp~lTg;ZL&@ou@7A4O#*xFhxK=Jj^`H7?WECHGFj0jv|~}HWXDpDVeCHrHViykNQnNwQCcy`#2Jz5 zRAExN1zc1UI3r_U9vN#K0V}cgB=c@Q?IhSRBedQ#6~CbaUb9$P>dz z+@GQv)O0l!b8W&-Nq=Xuri>7#9fsvXz4uzD4-xk&+Zi$lLTNFyzk{#R(Kwt`9o-sM zNg5~rg*oaq0}+~44R%hsj-STQld2ig3au1IorpSC&k2NBIj4n^^oK#!B`-KXxz1(N z`;zsFxC>Fe^=I0nm_=9@beDKyP#-WoQurAN&IdL#9*dSN-X}}a5v@W^$K|Pn!^Gwy z+YnPcn_BDnHVBq15zOh~)S+0ii&Xp2scM_-u5pc}qcfnZ3x#?%*%4xaM@<8al676H zb=quCh%xOCP>{IF2<_h9hb{04nW_@kL<(pbhB6dLUFJnBU(1ez`pFIy@ zH^2SYKR#!s|NaLr{^x)5CC{{G)I}}UR@{zA>a{fBiSVeRIA0*&ly)vR+v|7=~3)QZmOc z3)e|!qyoXT9kC>kw`zqAghUE66PYWnkyL6aQ#M<3UsbExu`q4M-X3Nrh?!gEcbgg1 z9b$7EDGsYeQ$h7a%TN>o+sh00D+~_EYIl)LlLE@s0SvlDok96=6NRZ$uf~HwN}Ln#zNoH13AJe4d`tw_6y^j4MVmpgeq z(SE8=Z*Vs1gVWW+bAEn3U+m{qDXU>1fE1;S1ZAi$qVsZ?tTdD|GlP{qI_FKz7$Qeo z0+Hq+Wf(87_7~T?US)?W;wx7xjWo#@A+0nN*eiRIVH3LN2T1 zc_mI*E@hsV^Y!q{A3u6H2mPtUoi8> zkI!V8t?OL05O83p-jXzu`#}V2{NrF$ZJ00)Q<2Ij91TnzkA$1*szj+S^<*r+^5ib` z;_Itvy;@b*eqx7RtdLxsrFJ7`o$1whz+z+ef#^`&P+Cf9peTispIue9vyTwp2;q=km_3?fLbG2PiO|%`|Cv{ zAd`0Ckw;XOMRh1c3AqM&_qUNzNJYFIQ5R!LbL^WX_Wbm|{0XYDXW}KzL{O|cBteBl zl|}2kR2C4xx>*m*WgN?(WmG7WEP`T(i`xcw6}{ary8{NM^{OcJ`sT3g7tSz)73qg? zKq*mW#aLKHSxLP`X+)D@B?aA2Ac0sKopuR_$L?-~RS*Ef>OZ=`=iwuefUMgRqVKt? zXsse5Lm8%N0eSuPrPhH>Dm5EoB^%UrFd0f839Zm}L#%0xr)<0s8^X`%4;z`*F? z+$R1EsSF{f-m0PtUg%Noh2{5&MIb0tDft4pFP6w8VP|^arc`RJTrn^Y#hL~=t&uR& z6{v>S6LWD88(x{_&ze~XISjIB_^LKKKf;h}tqJ-A(0k2X4d~$hS_eFwjEUt4HYkL5 z8128B)6)EC_duu(-2EwXIE`)sqA}X^E;5V~;R_#KbBnuicK&$hhsSDq+oyn(erY%w zjfK#8oUZa(q|0w6(mm^F!D1B74ak&{xPN}`SgwyDP|uk`O{2I`G~E8&K%%4Rr(2dD z5FzOR_j=*pIDAH(gHV4o2a{K1pi^IFLJ@`+084C^FaAcder?7^Hzp-eGuutYsf2*w+)msJtwM)cRVcpPomO#lRix+TAMShxd5607`4Il3mr~w z(l~i5OiEaCn=cb7qz~*R10$H~C^*sxjf|VQ#p)ylaE#~eXTrWAwGdhi&f$~u47#Va zdFEhx4Hm%6H~1S*DS+0dLfxL)23u&$Q1qRJNyQZ_PaQv+TqJ2t%f~4zjoc$2uqa0n z6?bZ4chhE~l5=WL3ndmxxP>wrE{kYS?;%o)sifuta@Z;I;a)}PP0`pUZBtUV2}4Sj zkDpu3pJ1&3C~4l&$cjF^6Puh!Q-}-!x&{nY7?qT5czwxo=lm2;=kZ)SinaBd+B6M- z=~48}%tAmav{^T@#L9$HaXxgj(Mfe89!0+G-?@E5Dwb4Ty=2kxzl6j`otf(I+ALh& z!X7ZFx4u(oZX*I{L(trm3u!~+!7#JAj6L@gK%}5W>-OwKs!qGbmn>+ThM=d9#-5LX z5>s$imuFZFV;SmFr7ms{yr3AVsxnsVO(oro!{7Z+zVW~M)*UYN4}S3MAOFGUG}rB_ z$UKuOF@{p0TB|^-{~Qs4b{6kOq6+KLrn)S%A{kh_Y*PSM@rzi8^{{&S`Lmz@H6G4E)DbbL?cCqJf zcRK?>c_1o;)j;d@aJF8ZZ^o1DupWo)YFLfD8hJhN;1O7mk^}`7 z!BS;w>%L*p{xWeoCPIBQLmKKsC_$(yws)6wGG))M6=POr-!?mq|qFRmE;n1{TJCl0`@fv*Kni zZ*KQ@H*|V7u2=HlfFruWp%%yg!AQt|O}- zMgWwV3Nchk1#JBc+&|*NB67MOfBC})A3fS$PWZu(zy9daox5k-@4kQkPrrP9ahQi; zG|^;uRN5Az5LBcLWfA$}tC!DSydmP-!~W^h7yHA!*>1M$%{UBYC|m}37Mrt|gp0U-!KlthMf%(b3&AiMsl(d?OYbm20P2;$Y9E!!VrGy&sI(pzz*pieH z$KD&#Eev3p>vlE#%KLZZi>v3i(|TAfbtz2MG7`C~iWMG(zfavPFSm4L(D9JI2~m( zSv1soUPl20vUa%;2oV<>G?O(!PnD#Q#Uq6ND+V^Jal0<_v`kB#7tewY2x%-X35U`g zq@^Qvkfs2`0_q?L5yPT#iTpvTDiw!Gn02XkaK4PIVY?kpHf1E;j71c*U!eCVeMuOgpjI=&6xmP)Fr+F-hoO+ymPLml!}$B4{ILcAO=oJDX$}9T z1E*kSEfoZeTB|-BD7}T9#11g`hvExr;`xg3+Fg}Nh510Kr!F}m=-0`&WUYN zKDWg!rK;h$1kf>cgqF!aJAzvnHIc!QPu@1Wku;xs$80sLky7ry5CsP70@0^I}{Dc#tWgjV)#nd=)<@k5{&&sgxuCh30*b z{MLL)0e4&A}H!LtL8&JZ7i8L=qi+?=*2TTP&CP`x{GWQ*q6hlZQ@y8tMZ{A?-vXHE_^ZBkUNg*9@hRC!!E8eNCPF^_?^YV>ChN zBD3V%!?9iA6|kczO3NZ|oQ`f?dMRl98W*T9Q(}Tp3yrTj#j8o7PGa9;gBBs`o=J36 zH4@#G+@^`Ze1Q{#S+&n5J)TI&UYqOjNRnG}=5O7m2~Yo_>k&9~>LFA6vzNOFH%S$M z!K$JeI!;mXV4c4Yg<}xKmw`frQX3)kdl8kg8ct46mgTTaGm8RNT*?>9r)(MdDj`Bh z5;x%@;$g*HWLcyx0wo0%ONT18)=IKIIVoHS`n!MSli&UB{Zi;3{M%>$@Sp!|IV>AS ztpaE%Gp$6Rtn%)I&H2gs@Qpj$bvap;?MNr< zvMD?k9+(S(T?+lkVdSW^oWc}_s(^Z1x+;2D>TZ@p#m!zWZl;%)`!~Dk^04eD9H#lO zQ~`!k#xe|pCo))Sn=7w0^!{{@dK%bm)UCAgNxo??=Ie4pPsDm-9Nv&zTNGoVm%JY>+LZ?NJyMntS_%cWJ$sHiDI=H zpt{U6c@n6#rGuz|i53-^0hD2=Rd&;Ix*fL#yX*a+R0=`W1Hs{EsJc`HO0d+(+{gro zYZVoY!!QnP*Uyub!X~mxkeP_AoHz)mi`W_4X_gn0Y!3C#>H7Wq>-|}I{(9Q&50);p zpO+iO$XGK@*5m2PYP%k%X*taGFjciihSb5DfN{{uLpjXy>f)9xnKVp=sr2Xu=_bRH zKqU^Q&mwk=_THVd&B^xXPv5AWb}`BK){0>E!m-x=!cQtWF!H_zL|B$(Rp>kK-+TA| zT8aMYzy0a|^v{3zSAON2|JiSU=gzwP(v$l?`TFW=ma!C548_BvUZG|jhiTEzzk2oJ zz9{UfnGJ{wH4#-+lkV`RXvwOyr5N65(Snc9R|e!A_{;(fG6$fqj=n#-T8gb!ai@ zU=YR827!p`R8LmrSKdFbUtYexUB-duTFGNKCXs6WYBkDe`4MhX5m}Xzy20f)j;{L` zs)eyk3$dyeLaa#BzphZ2p`t^aX5yhh)k^tG)OwhgYHdIzQg6(76lSQ12#9479#~aH zbR3F`dUQ059f+1H-f2`o1tQke6%fg7gW|_a>^WXZ(qwO17G~XyWiyuB!#q_~kye{c zt>1wGhRs;N6 z7%*LbI zHVTFama3&c`H*nVCK!m$j(}IG))6Z3eJEUM2Clgo4a+r8DL_urKH&>NH8QWYkvMQ? zbDO(}LxzW{Xoa#;ft139VGSZEhY^6?pgEIwWNKbbgg?`vN?-=k^j%v}C*8tyoJ|c7 zkUOj`Xp#!1OL}TBINclHn(lln6XEvzxLu6QZ>`;zA>J6n_Dz0AY>tHm)CkYQQ!-+Kf^8x& znGBVJjUyD2K;IPKpzi9ju*ATQMc5o#5B|N z&=Q(_x#C8t%=1Z|)(Csjv|q2sh)4v;B)4vGDGS|u*NPeF)6NjUnJNv3%YLdWdvJvO zI#q*atDF5vt)3S+?*xX3sBV+N&<&lH&9|j(# zG>Ga7r8APwTA61@@S`Cfe+m4Pq;M&4V;8K_`3(hH?2=w5|EeM3cbaB(oeJZc~M0YS>q4QO5{Ki}HdYh9v5ZPo=NVq}p2%ZL!?Fmk%GvpyLOf5? z-~6qQ{?4yFIveR9{@~d^{QaNoZ|BqXAa$_=8y4r0rK$*1)6lu}>Svmu*3u5DP-c>4 zih26K()ds@^8New0J?Z{L0WaG1Go&NqJ&C{v(5VA<;@TO_{+cc+n@Z(uU-G}-~8-+ zJyxr}9jcX%=n|&PIUc4Pz^0r{UB*tSFK7gh0-!jAiu)d^3ST_66f%p(73Ny&G9RSM z$aK0M&+l&To^H-hS7+;?3}Y3lRjNo8ndVwW4vQ>>p|q55QneNL7|W|93O`$ez!_0{e4;$rvwYP!5ROoyo|mx0T`1Gz74iOwch zd}QPhP=GrPZ?O}tT1mMS257`+&kn<8%W6$eDOblA+!GqSyJB4yDBbQ3B6@nd88_qY z^`TZJC?nuph;}sJXnIkV6gm_p!n`chGHn9zaqjAa^&-&P6enGBU3>WnAg9)Oo2(ty1k=vv8;u0#)#f zHDlH#{{DyO>+-Gl&VTm& z`eu@WS=CBf5i_I;m$F~<%dcO)e0@O!@AvbwXRi;3d3$=Y-mJ%QEM??U496NT-Q3=M z{p=a5tOf=ks#WR96FNOPp{6bfD!04ccC&qYJ^hEDJ^#(`ytiEs%d!l`8~k!-ohZ~Y z%*pq_ZM<)$*Z_yrpqS}b3Z8J~3eUi-%W}RNzW@ID55Ks6vs;E?SacZ-;!xCf3u_|| zH5|93RI27iFo=+$8TSC#H6ql`V{0l7L()+vGxVu#*Tx}aVyZ9`rqN-qGh5CO-s0I` z%+|{r6=aXF6SE)?i7boS#+b9CNEMN&&dG(Hk&^b|s}K<#rdn0&QcqXqWK&iZyF*=6 zEhb3>QdD5BT15&d#91gZIqW4K^T`T?Sj2F} zSdB$>j1)462<+Hzv~*|B0ZxnTfWuPInK=Ngdn&~4lUHXU0+FarbA?b49AV;gU>Zs( z9A!im%oy1Z$av#51C&h2cG@1|(^yG>Nf%k97A^y^g1yORw~MRJPC6D|55}$pvdlX! z3tjDNBK%OoolR%1fGi3YJE06{)L%%O?U>YmW}{^ykC7R-DuLDmSH)hcXm~ZjIphM1 zfiV;oQ56f&Nw}pQplSIg`Fjfg6z!kmb4)oWzgH&IHlyvqzYx3zNYZuF_F3~U5kGM= z)=6y#BB6pATD3A!VHyW68A(lSu866{k+8<&aaXv#)`S3wtAZMt#ueV84*|Ji29^_V zAHlDVj4d)47tryg?KklNjeEB7_dx+4Uce5H^$QG=8{WR`n!ie-H=LLQ2$UX*vw460 zoFc|Sae4TPLEXfth`?-nQtyU^rHF`6tYHvG+sHyEc8Dx9CmK&D*98=cd9?xcat+G4 zL}%R$m$F+oMC1iA4|_lu$95|>SHXr4P z>`ugR;lt!T_Zi_j#1rJq_;g|fSQ=?6+AAHDT4kZ9a ztcVXX`8d{Co9WDDLLX%!WE3f5EAd24aqC1O2dTjiO;Um{bMpC}dcErClNfqUT|ix( zwc)jAp*=p#Mhjx*ngnm9lWqgbkPLz$3Mu}-O*h7^+JnB=Y-*ks<%K+Yz-z3 zqePb<%)XA#K^0ay?b5t$|;t2t)QU*i(L zpB=r7IFMR}a#Dz>=&V&%Om|LJj~?HBc=!D7`N_#x2sq61?QXid+TTt$`>D>;GA&Cb zt;&ibs>`B>{q4s^F^+uy?%9Jo=MV0moUMn`&FXx`r<>tyJD#7cEHiHKVt5dd zy3~W0Ycek(25yB;)eby44>wckg6VS)EguAoxm#jWVKC8Huv(Y<+cMmR;$*JpyIC#| z_2qT_>ecS)#qH~>-C?N}7)Bm>prJ_QCLn;Qswh0qh!B0voNd{P-PNTsGY_=XDpjnm zU+dRxvY!bG0c6c9V_;c?Km$`%y}3CkaB{lYuE)bcEz`sld#LR2)j1OGh%IhghEheO ziZwd0V)XfQV|Vp1=t5k|IFjfxS1MR<#=2iDq!J5Zr8_zxrycMC%~CAYF(;8 zE%}nICZ2F^y6FOI^Qy84F%?y-EM|J90++XSx4XS}K0ds+d2lwqyg0nPo~Bt#DTT{a zRTdDD_0{#R z48u_9{+-k9W^=M#)uk$wnZ3=icu!;xb2#8~U2Q5{qOYj2>tQ;4!9hw1SD`{B<|R_kB;_QUf{`R3#EpFF)dhz!F>rX5sEDZ7Jw@$A)`HS#oiS8D1D9@wf{3bC2nv&uRkmUxFVkrZ8OI%H zS(dx&;a8rV|M1JJ%R?Q8qSaNf<4QIAh*Uh)$<(t~@rxYP z2J#|57pCN_YqlWvaG)NjWD)E{06H0Y99YNUW}3}B7=;guOtUU3ei(e{;(}zUSW$mU zy%DxiTvgfg1Z5~3szbRHD;h||P%Z-l#2^k$SQUp!h5;ipD}hxCRVj23Q5BIIF9!4i!HO030##y;_eJY2-xQYFo-dvEW``l1^J ze2cf?s&KlydmL%s-YXBU$ixBp%&;<+l%$<|{`M~$q*uivvQ*S6*1xqxi*}JCH^4Dx zvr7~6UTzwI>xl*oga*5K7>RfnVZbVj;Yk!|_VE!0q48-CZ(Fod>F*ai; z1UBCr*_)XB1#9ZcDu_+tX1nX#=fNQ|HG+L&&&KtGFF<~h3rIe^_Co}<+8jH64kciM z>FFkoRuq7=BW@#?@rWW0U6|(aJsNHJHk{$!r*)R_WrAC*;Ep37Fj%qijZZ#Wyt+aQ zlsLhRFgO=DD5*wHh!_Cz=S+%Cctxll0&PiKliEVV_83R3uY+ z<61&5GBE)}sJbyXy4XNQtPo6#oeRm~u;k|(xIc?z(Cj?@g zmT#C!SCa&uVTj~2$7~X51#DpO<<6QPkNf<3jYOU`wL%3!P39rC#hfZHBgY%n>z)~owDp1 zr{1zqGjgQ84Ex!n$i`%*MX0RT3Vr?NVw#rdlSrAL*sYxfiH-(Iq2UPb21~5~xD*hq z?hI5xeE;E{^Yb%7eRFyBm%sb&fBtLlesWrV|I>^A=kNdc;$pv94I-7Q9mF80YORV& z6deYA;(9DlY2usZapfCj?+h9XXtP<@D)a6B`4?Xv_VX|>8MI@+n}^PH*_72><=_9{ z(-$*e)rM+v&VPOPS!<4Z+3^P>zl7`_c!}xH!ag#=h-^o5>Wv# z)q1}PGxo2q1mGzLid=}Gm&YT(rT#c(hcGe8=V4vs=5EW=49g3F1r(-$a zj33;?_n&NchdXa}^Vb*i=Pz!aUff>Z?kiC#Jleq+Wl5VKsa_U;V2Zd5DN8~0w2kB~ zccswG0T5a(nsd8El)@T3r?AE1!(pD6x*ErEHB9roEQ)Mz>$t^>FHqc!Scj2CWm%RI zr;=mm+|^NPLuL|!EHeS)I4)J^!?InK)pj-Q=4cD+nu4MYyJlL-rNfZbVPE z>&<#SuFAkD!(gNJIFlv{@(_n(9u9m%AY!&GV9d<@ z)|2geftG^X{q!&X=x1fX_da@X?_~9@cg}wL^kS+yjH6bRQf~M2=U=_LyuL*#S2wrM zp1rCf+tcm18Hcj6c%=uC!tHUt%Ir3Q*_upBDMR*rH1#V0@gO3*!^G>=r!Q_c+gIQJ z_~FQ;YAKlk6A}yt|G5&kPu+cLK$t<6KN#Q>HV_XbA{KOE5idKGKChVZs_N|5A|tFyU@8K-o$5vbqQYTM ziT6w0&9Vpp5@1=X0;`cowTdo6b{e>V6sSnvaiZ8D%RsBKs9;$thcCpj4Pc#8n=?eD z0wGLQmMWHtZDwmI48pQl;L;*u9(01ICR&?ZN>pHaj)|BGk@aNi{30S)!W}^f+yZYN zZH)zmdhy_$MKo8BxFECYSEC$4C;U8BXVs0_Lsy2MHLn3 zBFa=FJQvvAQp%e1+5b3b9v8Q^RusWmB6dHPf=U`5c&;^EhBVSV0o-edL6-2grHM$ zZ_lt4L&%*9G|9pd(v9WD+kaBC>iwd4Y(DupmH4siN-ZbUG+5?WqLaiX_B%>yOURS*P?8*j}x*fVB>{y)9lM^F&11M=aq7;Va$BBbdK7!x5m zEI@nrl#KM*SW@;=&uW`Z8(7L@y3FJUjeADRS@-LQcw7^K5G6_ycWR&`S*+w+Lfdpp z8k+p#tpCxxYHq64@NRW^Jo8A7$dUlo%(G<*Xbr)nfd@cEWqZE9d+*_TyPoIy_2tcX-oO91 zzyIDR=fl5ycKhG_lOI2SezO^h)Cv`5DpnGz3ZnRm#$p*`%VtHZkqtN0D)S;DUL>d)w=6v!+#9JU z;LahBz1IlK0~tT{OEQ-3e>7VU_~A`k@L4dcVism4twW&|)7d!O*{(i$fZzP^?BcL| zeK~*jV)w<1%U4(XSul>{I1Z&S>@cR<;`k#N5n5&!Eh0#*l-Q9dbqHM2j$oxPD52IA zRR<>wm0Ax9QeCablkKp-JuI~rcDUxc5yDhdu|Vu-@H{P~guoQuhK~txc!`L}&iYi5 zx`<$knD2h7ye{kQxVt^L`p&#L3sHobsiF$mY*y>_u-_l%MWaoos%?qXN*+};>#qyd zLJUH!wUF)bfO=FY0tGWm)!l9VdOEBxr?b=5{qyyM^VP-8;pN42v#+ahD1}u}MdykI zI@LN%%P{b&&}uA7{MC!g*B93XET*#*9`uHDnu%5Ry*2(hIoX7%P>oE%!o}B6Kv8%P zjS0<7Bm$}RjEp0tg?XBnlaYSuqlcTZ><-g@(UaBcllLC{{MqZP+X+0~MK-T_ zTZgfPXjNr$hdJA^x$9-S9Z&#Opt3yJ4&Qt4>`%VDx|(EQNFL&MD{PHxx+yfcpN?X5 zr8aX`SVc==7Em1GFqWV&o#8_Z0fnKe1%8OWGksMvK$?ZB$K(!%7Y?DMP1P z*?K*LtaYp<&zb4$JHBU7#P^LT-bXDEs4a(DniCHY)w+l(Rzq=EtT@zqy`N_h@_KtV zT2UoYofgsP55u6s*5=w*fq|^)HWCj+vn60Ev9GOC92zEMYA9JRBg z+2ZL60u|=Er~+K5R)GR>URkQmh#9Dw!tUr3POj#zhINXK@%%}k=TxV@;;@cN%7sgu zEEThnZt*dYck6+=O?3OCC`@8yM=5Qd^FIL!X`_tUSA|THV9N?GByX32R|S?XIE$%E zu>n^JDCD$sD*{*c0e%(9vw>>c$sGqU9%QzCazuzQ3}VQ0Ky?R}EmD(?OT!25K1NUv zfSs3?r795?S(vyK9+*n(?P-T#9goCTO&7v5K<6?3x4=3xNu=SqLTgC83o1E%3E@u! zf@t1R_i|271k+sX@I^F3isrMX_uTnb84|KfEdrBM=-^0tJ(=(3Ung`4YeykCzD?0Z z!8B7S5~X!mEchh?v*BXIVukJXWl!%T{n3bshInzl={MGKRM zfc`PP=unK_^CBApPy&fY0df$cO6E}u#9(e8b;c$1Xt|D7+rO8bj*lofAw&en%LGI} zU&OsMRwg~`7*fNr&B4}46X>IgF4fNb$JYds)mTg8-(^TLrAA5XY2KNeQ_btwD zP~zAqw-V~}qAR&`vU&dW&F}yF&;N_R{^8$x{f+<6@BjGd}Mq58iq3&iy<0@0_fMVY40wk^$G`}}(T?D_4_UR=MtIvhYlDXX!N z6$A>atX3N?+O!v9kgA;pj~Od<>vxpJ;P04=3Op~*5wt^vLMkdt)e$-lrH*BqXBCv8 zP&4&TOfFnXS(ci78}hCIv^qW@;!;W#trZ|DAX%!Y4&%UO5Ya`13vW+W``tmMS}Apd zKx&yfgjtjepKR8J>1IFG*^ZA9qEf!iPNb5BMu|j($=cBxZ$b$SRPj?|t}eW#1ejSX zZkBp89bR2d=NrC%zJ7eRy1bshx;)(McH=ONLxG}-s>)Plu5}L`2fe=CzkGG&=jjYN zDu`f>2tvsqA|PR06=a36$TI{p>(Ex&V|Jz!3J=IcBX?ZVL;=KwM6|H{@<)#!o^SWl zbeLpbbh|F!cyf0f`LnOzyt%$T2tnla_3mH&@uv#;{>S$ooUY~vCtqG1t`GCizJ7Ia zaZ5vab#Zlhajn2+yBUWSm!TA^Y3SPsnj1!z&&2GJxk9K)Osq`innrF?pcvCrB(ltv zreXZEuU?&OhHt-nKFyO_Mv~$!J08vmM7=eQTSut%x@YB7)?B2__J;TG>d$tMQMkqeLxkkak#8z=F0c!f#c>$4DCR1*DaIfwT!@)5Ftf6cJ`e(kAj;7-lE_YP`q;uk zDmdH;+bp1z%a{Uztp2DV872L)FdoK-%(g|DjwpHHkwB5OI4Bm!avV6@5t1)`0;h!L z@hP>VU4dBv0~CxxvQ(|2RgJURCJ|jT2WIvr#T}6K5ipVZA#n;npE7woa;u%6Vly=` zx2Q^0TS4O}5e4(WR7M)AR>e{qSc;Pm_VvUqjM)0i`dP=soTDkz;{S3E_k` zrAm>&7Gk2!RSr~XpSvcup+ccD*UA`}OJOS<5zx-((vlgxrGWh}%yj2K*mWAwl$>P- zn-cBYm+Jm=?}E2IqVxq^eFwrJg6|gxF(^n%9a-aDKy2NVH2SHovN1-2&m_i(e_v8JoS!MZgcdU z8nbU47ewzT-55DtV)H;X+@BEtphMt_m`#L1S_mi{{BWZTP$d$fcE@9O$WWBIoyV-D zNpI~wCbd#G&696;2tLU%bt{Ypp6%*VsD^3(2< z0nNs_{Tg+5H60j!IdTXo2_`Lc%nVMh97oJuBRJAxj6M~2eS@O0UUAnJxJkOfaZ|_M z)acYA&GuQKc2_p>!w~YuEg)xo&mIY-=>#CZ8Tp%BRC~%1N!y}o8&Apr`Z2>7A!rvj z3SSFpP<)C>7=+3Nnn#pt8Ntj(!!}-zq4+L@vp0|y$UEV6aSx9vB=dEXr$#E3+Wq;LFJE5V-tJ~q zrBav*xR5N&e$a3~O_!Hf&tG5c4~KCa@83K9#)nVdeSG)Pz4P%;3eH!MU9Q;{(~gHf{rttI z;KO&$=Xo|cVugmbL_odHYfVh!D7g_hYzTpfQ6f3QdE7=_RaHIBV5;}l{JrVzMIFS%zAhsTJUYmvLQvES zRd)}V!9-jNkwPjw2j80FM$Z#%p%C%(>jdN)tQ0PlLv4i3g*QY3Y<3BH19cE??}q+4^jtE({s(+G4mEqX{sFn$EqzcnJtrg zo!^+TvvxpFpNNJH)Cf4bH2%9^!TPkuPL|c0sV^c7>BEiy0{7`xts`8ll4df>K*)wb+ zK2xUn1Re(gvRONkle90A=_5}>0(j&2*urVz9Pd)22M@VTi5+r}!E}Z(HC~1R&}if& zrj+O~TrFJH=#~qoDN`mIZIQ@B!l^t7;Wzcnn>tgvbk&y!T!To{sr+Rj>eb&ZF z-KKRzNiuU=@#N4$q(vjx@rsWNZj#{&3>FJ2nh+Vrj z*=7*)uhdAfg2|-0+`T%=Xt5sgUMyBjr{nJ?GOl0|+CE5^6b^L^AQN#A3a6trwTN=t z?E=YL+7iiqJsfaCBVOIyTS|wICxR2M5RijzhC@AduO+WiLSj#N2=D^4oR)eOfD%rr zV>Sz2o7ca^T4@>r_T=Y@enZu(OI7&m9e*MfKyY(ErWo4WAH=Gs>i7#k?cY$7ki0mt zYb=EhQ0_mtd++{T;`03E>-{tx7Frkl&ToDATOXZkq5s#v{_+q0-Dd;y zKw6gyl~R})%d&_FC9&WZI5a{UFh^i!h0L!uTCn@}5UK0a?Phyg=jm|R*F!DQh%tWa z@|H_Lim1Cx1z7eIGxMVV><@na;B@@o{H>4QT+Yvb{_JGCnx_LLYoS4`5VlbJ#-HJB zr2b%HW>S&eG(&K@9v(lu`|ka-$M-gm&o>Y6oUYfao5TF)UtK(Xb#-xjm}_M&<1h|P zP!SPPEP_S!;^OA{i;Fi`x2tiu|KR+C#~;3P@9gfq(~-w<98{I03Usp?@12eh&sX=h zKWh}HBaA!T-d$RiWJ7*W)IRE_3{wGhbKYwv^y_;97VKoi}s)F}n{CvB+ovv>Ws#*%G zsFJS6LWF6qO|ilrCkBiPvvr54Ra9XS$%ZlsDx!-h3o(J|AUY7AoNjM#r&=A#Tk6Jo zGmc|fmb%QM3MTS`=^*yAi4Jba`eXW(O-s81wQ^gM7FUIttHV%38cO7+9Sao|>=*fJ z+P}U!JU$=axqtfT&id8O^!3Z>>gK=$3TP<2JIL#cTL_3)yqr~%)a|H78@EvR6dDOo zaF&vXl6Tic1mBT6I;t`+&em2tj8N2SQxOf!(>#6iojbq${ykQ?otDK)g%wa$6BaTG{?QlXFnsI1yYJrHe*E~(7hk_Q9Oikd1YNDi)wpJ6CMr}C z5~ZcKc`Yj5ZQ5duOiZjI9Nd_O){=kcx|B+n2mJ8U7hL$sgVSZ6!!Vd&sp&Q^ zkq(z=BISf8B%RnPc^6341*$6Q$MDV0D7=7|R92!YI#$_i#_d>M-b^D#z)$qR+X4`Q zH4;}X$%s2|9ZjA!oWo#B_)c1?42Q4O*d$njY+EJnqX?Z+K(%G^#TwrFC>Kt}>w;@t4 z4C@s_*3-hXtplT}aSi*?*T!(z5NUqH5XHXUXZ@CpOY)uG;i*qkH(FHt}omvn#>R zT(mHcv2n&wBES`4L(M5spDx$22*rL_tabAuJl#~&M%a!k-g>pwiv_aLH1(BX-;Sz{ zD2@2RZ9)FjQ0O>4e$+*RDJ~A`#x}DD%Z)@~`6vnHeQZKFJGGX&B2-r@ncg{1R#2EM z2icA|klYFJ$^QcNVj+TT54Mxb`&vs>xuE}qs;)nzsJW?!D(B- z<2iLa7}L^VP6?y&0d*h6P~Uo`z6~EP5+!1wjgNbcpdEdhQYUSDhtA)D(KJm) z&$MyZh}AZB=?;s8v=cBa%wHeAq?ki;f7`JC3t!qVO8%L2rtW>b zI>ixzqPQX%e9*L+5e!zc1RPZu;Gi_;8vCDVnFD_S#EZzocOK8nbhzFXA|%8Av#A;Zru3z2!kN@na|Mh?V%m3Bi{Ko&~dUtqz zHICylPmE|56Gqp#InJng^Cwf~N?L$Yil|Q0Th6p^6^%%j=8l7q2g;dD?E)-}}}FAHVU>>R46VyNX{}PNJV9*4C-^~Y(n4I zqiAf?0^v|Kff7(N75VT6WmANM<(fchKF_g7@sp^F$}}k*q!d~gdVIQi=g#_j@0>lo zp8o9Xn?L*N;?3=Dy&Bi6QGlfi(r?tTOs?2SpuWeR$9e?{EsVXrOdtRO002ouK~!S3 zjeuxe1}iP-`qB5IeGia_a@fy9;mu}KMW@4T&l<);#M3;BNaUaRUT(3{PNguY*1E(Q zx3v0>k_ZY&t@EU19Ei$1ixw)Yvf2#OZc#xML7~lhB;asZByxN#)Z%FpP*qFep)lHt zKmgn-vD=|=o3dECoYh7VRjIKFM7cjIL^Kd7u;16ur~2yh@Xp=!gL|iszp=U5P0wEM z-&`LK2YLDWYMz%7T#F+5a|K5@(&NtjbcUUJGzs6xJ~HeYAYH499W6v!3l8lFW}27j z$-T|@KYFk#bagw=77PU<3y@U7f(Pd(3R02h7dK0lX_2p9U;p8cz8FjSpKKsr$AMfVr)6bqSLNr(eS7A+4IxLVnA4&t2k}0#R{Eo#zhLmY4^9vBK~3p6sI#z!WkZ9lQxDXl+-}RmH&J@2+NM(X)uU~bqoyhy;4#VK4N4%MTI3RO`C4Qz+ssW_&j-coA7wv^$xLp&ig zi)t7`-;H;+tKKM6rLw53SVdGV+SqF)=n2tOQ#pBP^YSh<61;%Bbo_!=JSAT z2l`y!hsAQNC`Z;7B_vP!o$T}`}16v-%!D&$aBU5g~9NJ4d145bi=3Rz-4 zhybzNI1eOy)_ot7@}x^Px-ygJ+%#pLNk*yR6sGk8vNw+}oB<6bvQ%$JP70to*NW`4*yMtAMnHw1rGeqDa;ZQ&P3}kdVGdxmFFT#$|7_f>Z&^9%M3*bLb zRHJQ~@`7F^#6#lo+EJ^;8q!iDo@IAT8TWBUYjnRTQbj=FB8JgGxOEMRYV6OaRCcT8 z2tJ2sbZh*l8Lf1b=ll&88T~m;c8A(EJ`es6hD4-vB% z-5WEIG}Rai!N#BQg#JUcEv8N@Htp2eW50%)Y*X}qZ_?&5*`QZGBcl_!|I~|JYO^3g z(>xkrEFIX?ew3tkX$lq9v1I`DjF`CcMkoX054W;*xIOQbr1l^}n$H{fX8F8EL%@K-@ID;=hmZmX0mHZKm3k}628t!Y{Hbxm>7Y3z6VcM+3 zHzd_d11FyZ1&;WFc zO6>>j_Zd5GH*E&o-VAP=qXLQ;NR6vIq~u}~j0&PeN+9N{a_9bC05_Lc%&bz$Ycvaj z1gYtASScQ1^bk-0%1+))32}o@xS`~|M+*l^Y{MRhyU&W^ru{f zxYSys=d2U0EorJnxXNcPORa~)o(cEPw(mcD=gGTwAD*ty*JU%7?PgW0e);P5ix-zK zFZcU-CN9>-Kt$$whSE5U0B(2tH*c=?`>724msqu@B8*?di~?4 zSI;kRwUpJkB4Ux+G#$nHT1D_=Y%;i>kYN~*joyJMAqKe{tMINN;p{qyVT^k4jkXScW0SV&b#x`YJRo54|GCYywHZ;cl@ z6kZlNQt@N?c0aQszHl6-3?Qaykw+)vuYcp=>8f1sru|Z@fPp0#yA+6^l(H&#aK2`` z59Z~?g{aI`K6`OF{^$!X@8rgh?L{P2g zXQv;3@IkHBc#286(4F(M1i_*EEo9?vfO^eDJsf6cdbL}A{Q1j)ap!EP3MzzZB?MJH zrY7j1tD`1W1!_2xRUxV(s3MCs>kwH)7tv)=frzR|T@AzClapnsm3*hHu--cvMJ-LP z`Bp9)YIQQ$RP;@^6A}9IFd6{s(K^I1Q8xJ5-T8t5OONsBIb(u|IffxoZyQU_7Rj6)90ghTDd!4erAoF2 zW;5ddO|DB}t$zBs0U;!OKDxPv9Z3olBGH8Pjzow+sv}3kTk_bkKiY*Vk$`{XxUAVR zAEe`a3XtRL42^~-eor5hvq!jlU3y8fCt+Dcpw?qr4D1kK?J!ge6G)dT63(m(Kny*> zp5K`o+xrqA{nkLu@m*}cYevV>eq($M^Os&rQRI9~ZMxw|hD7+`4FvDNMOhC@a8GPNMikvfTWi8sEwfeT%4 z1{cPsg#JEB{cd58U&&S}j2cH0Oe`DegP26B*5WKxe3C6WEh9(4mW)oVhFWYg6y(aN zToBu3+^NvH%$E8(>>!Ac-CH;Bm4fhFk_B%Ia$zyX8jjT4j5-Jv~2t@$@BCC02!MRf?voA+Ziq z&~}1297Ic}Ku1Rg2+R*2-+TAH2PY@%i_6_t&o6g}X|*o9o84df)}!C~wI}c28UFp3 z*Z<(3{`l$h>yvSiT1kYNEG8|rstA)Mg-TQ>4{K`mDMDPVg{nsZm{a_vigMxA3WDob zm$NK5%w=FZQ=8lU_ z`M>z{^VMkCJ&aU9<^eiRwAgUr!o>4j_q*L@MIS%D^U-?`-+g%JbSMMsP;@nx8F>2q z`m5&`uP%4fvVeIQN-4Z7GEFm=vRVxQUtC<@?rz7C@7+7Sd;0k7WP7$?u_T2s9)W-1xz~JTo(3tLvR0VRWk+2S~hqN9x16g=|&9& zVJIxByTkI?v*qjOw-4^F_JTK8HzhJ0nqmy}5E2gyat>vvOP%J!FpPzd66@YpzM?23 z-pa+-$5I-s!WR@3VCcX!&vLrrU;oC#dnc>wn`t-MxxF-fsrPjlAPd$*xqH49;wtj= z#U(IT(VstkT?&9gyf{QPCDI+PMjoPi8dXLMUuu_%ck zDsri)M%TYs4?J?df!|z7srzi)B`cOZ@~@x8|jdT8(K&R)z(_H zkd{J)xRl&!43S5`lOwfYlu5YVGLmfK+E~81WTC!dFaZoQu#(qDQk)A@{3z1_(wuZr zj?U?gU>qT0A6+PcGV&AIEj}?z1ZS^+*{X#GbVu6KHm}g0Nz$};aea8j8hc*;V>H@j zVxY50IAiIG#2nlE@G8mk=^|pF+Mre}I%Uj(Y#H)9yUey}J;0Ici&&xNvKkMD&PL)* zY7(3Bi;#mhR?qbdpO+MtTA5R@5{)sDMyn3o21%k=F1e7|5`ol`ZC#%PXz64zm!l({ zb;Qn~S#Yrf(?pA*L9-`NT-_;qzfI$}P?AdBTr|vtDgX(Jrz&WEb;_P+9$9giAac&d z2hnX=<{HIh8`HiG5<>tet-t^D$O}mXofh1t>&zCb;HKBU3y{#tsWTxsEiVgNxCbch z<6};3(&}8)3(GIeC^bW3AD7c4mm?yfKv^E$YvYfryA+{Za*a8LyqQau<8j_|4o919 z%uSPMWXdjPMf49*@`HU$JyOp4kPw(9W==$Zw{%|PFrFeS^ueE6{2i4cdbtj1j*(nw|Hn2@Q zRh@@n)ZP65{libc^WNG2?mv3+<*VJ#|LC(jC)+xU@h1n9q}Y!rAk5ReEYrz){N|HK zA3eVF_`%s`98?5#DP@?IUc9>f`qkz0H@CaPLWFTBM3{Gzk}#F^YNbjqUR>PX9`2rR zK78`<;hmH1W*mnii>lOVnyHLKDIj9P{nOQx2iu3IM@lEJ72{$u4$0UF|s!3REy zC-`21Z~EmOK%}IzVm`=jkrmUUv(1CE&3E2A|McbUkG{P6^wrI6t?TtTa9PBKpS@oh=`dN5mXs~fy<0qRk>KN8b=3WXOdtg<2){G z*?FO1-NeMMugy?FkflN~Y*xG;CO}u^&cm~-XV=p_6+#7=sqnx=%*2HVC{z?W&odXk zcfK79NwqW1GS5q0DuA<-)i}~L>+No?O3N%nx|lDuXknIGOJTNY`xylXg;p4g!^IS} zwv}8(rOMBq-oCiHfp~KRavta*jDuH-4T*tSS*i$&a<*}C1+AiXJku3J6)zr#&=VjM zjbiU%hUy{(`fDFOdiT!B&2E2ls8tuiH~c51&?g_iv;F9u)1Q2K^5d^w5-|_i9~Q~qPLzO+F;um$$XVV`Q5s@5DXS{f zz`c;kCV_}WWjD=I%hStA%I)s3KOAZmEUHzk?p_TKh=@=ag}i5~sjp(Z#%$42DhyJn zH!UrN2;SzB3$2DyMMS}lo;9#hZ@`EY9P-ITlAw`Es`#A5>#7wv(0u)UF4=Ddn(L#!T-6EnuVN$g8I5;5{ zplPX9mBwPjiwack(u55lS8p+D!(mLU;pY4I@b~JOjApPkQU*xHoiXu7v6h4mwqCEI z3yY`{mw`Zq4F?-T!edPheKLrNjD^UX83o5S`{BhI9IcR8So8?5gCg42Y=wIAMf1R+ zD85Z-8U;isOd{#)Dfz8B?<)AjmWcg3Rf0gQ3}?h8d=R$$>8r$MOyIv`6z}%0@slD9 zW4H>*;LWvGRVI?E%WMVmxE86Z8T5BHp*UU`b2@elRo#Ef0i<4waZu{ExQJp0tMf=a zC0?5yZ+1Q1j`Tf5VeSyZ`G~9p6ZtxWs18D<(7>(wLi5jTgc{BSbu%yy3kLF$xXaKF zB;lF|UUr;w#-61#gnG+ws>F6l!^DIq2r~Mq*8`3W7V5Qpr^#aqbyvy#O%d$d9d3z%BTj;Mgi?T7 zDtJDi?K#F$H4b#gK44}{j0hqS_H{pshy^rt!Xytw3TtMtb%l1j*318vNL~6We|D?F4@1L(Qq`q`6VGY#hWjVa2<-7mp z!NF!alLl|Gq^2Tj#udlmdxTBx<^xi1Rj46xdPJX4S=|ZUamgYL|0 zjH;tO#ajQOIHkS<%#SzYMSQtfWQ6gAN<<;XJ6ke|M%bj^B?}?#aIedm!%F~Q>$uS(A2TUI;FCvRGP*t z5ls@ee>dVU6!#F%Ro=9YJgEA3?7i!)J11?y=kL!qzII;%rchM z%V*dB=wE*NfBM~D{@?$#PyWv@Z*QKxI^C?7Wgb8oo+4|G#=K0^GEL`atB>A&{N&Ny z2j`m=)3VHm!=aRsd3<(#`1-}gi||uY@;B32k@BZeUJFD%gK9_w5E2T-{?bQxzV+zjr!Q{*=YDXl&TRD~5SpcI!ncP?e=t9?D#Cvzs9_gmNKAf)c<3+0#M2hLp@pRnTf&C(ut^ z8u>LICeVhklI0V1MlaezEU0z)-Y1VfetfpuPgl1~Ro{fS^_{`9Ko=~KTCso*%XBuD zyPL5rAlVeUKNLKFbA7u%fb^>uum0VSnCXLWy?_2Ue*MW;uP^`P^H<|)6VgL5Q_TR2 z5;!;WEw@a)UxM)-6J;4%ZS1WUl{0FE*b)e1;p>~jem~7pmjzW-7zARJp=c>!VxqDt zv?&+{9!nXRxbVO{FbZ2Xva2!+Em_$xPp-7gBPM}f-B#}?AyGKS1izuU&KO1NoCA(3 z%xt9_DMISDTm!RuB9>ztwG10kf)*Y$k5*|xltOFiJy3|5F&9TlgpqMIf{0k>A|+4v z5fZniYMmaehFS<=pz+uRH(^H=vAC+$8&y_SWp758m{iGjznmIuJvtXlA#}_f+o7?< z{zd4|68PIPXZ?21w zDSBuGv?Gu(02PWnXuFr&7bCs32v$RMEUZPKY6nhrnHLlq3KN%M)ZB4k0+?*m&dB3_ zfGA~I1M{pHQi(LqP%5@Wd93Jj#!-gQv@9EBS)x!;wDg15ge8Z zXyH-{4a6WtGQVILxiBB5Ws&A?xM7aOnZyvz+%98*tXuw>rUL~a^XVu}n*W_J#3w5N zV*7;15geK`d*n4U0qQ7luDVpMtc5Lm&I>G9OdlB_2v;j(E~a;UMlb#-45IrgetVN3gl=%nXR(qa!O)l3M5gC1k=<|DRT zvcQi%kPLdaJi+))bF7p9I;%msV;$~%*2D;Ni`)iA=Yz$XLLn{09X?5jPz>F5f#)=8 zu2tCZ6tpxp+Ob4v-Owz}k@uw{XNA}xh0ROJQyZdeatk%18<%IrCRYT3gBz)7Ipii+ zMgR~KiFXKJHJ+8hfz%K&MYAg!K1gzGQ-*K3(;9LYGj;&c=+mi`#y2i#M_;8va>Wj` zZ{fw5gPYS+X=+d)KPTUCc{3mhcUlgHOG(n) zesoMRMPqhnx!{B-_TB`r(}!WG;#SmJ<%Cvl8YxX&Q`U%Wha(wJkx4d7={?f48Paw( zZ^BC*@m%$|&U32!z}@o&(z>4i_!7E-<~@9^qMuzN(x%&Hl>vBw#3$n*?>=P zP}vDUwd;a3`_Ar65EOkB{{>E>8_}9PnU{d-A|LW6!{o`k=)p{s8 z-yT+l3qfjyEN}=(xf^c}Cz~Y}ZVsR=Rq5F2t7ww|B*44|{pioW{)Z3G{;R+C!GH1Bzw!6~$NfAX3KuH} z&OqV9jCo#AmpiBH4?ceK{-Znh?raC5WnK>RQn+k3o2%XO+1Jm%etor{7AS@?@W6GJ zI#*IH;{e68=da(qzC7EOZ+-CYw?BUT@a}0LEc2|;)i@9_l~S0OrLKnZ&i#|ecUI@? z!dj>OVNtcZc8;<9BueP;Fyp%5fbP`MI?& z0CSm<0Ir`Kwa6FuwcI zz2E)I-@3UyJiR`wH|yF;`-SI2CM{tBoRduFMUf0Y3jvD#L5}DL1@C#_k|0&ix8o;| z?`;R3mjx7k>kAhu*3JP0BIZ&?#)@euD1`^M7QiS(OhRDhfrwO=Dq2AT2BeU(#dVd4 zshZj(GAWBnN$yx7+&DChLJ}J=CbwD*Sd&LmymP#tszjg-AT$Fvi$`4)s1Sp!+q$Ze zv``7DSKFJ{pfWYYAUK z*@&h}7?=y&^F#aFqXRF7pn!-9yupjBAM%8`gocK7TI9jPG#$}95ak=O9vDXY3y?fS zU8*DamRAOH_8YFu%ZJwZ-_9 zMCwv4Kp(MF5J;J@9vR9qN!U&+eGtX3G-&OVAjB}Brp-NKMJaMI5j0Eeo}uO5_AWv? zvEl19fPUmKwB7~I`3Yxc(M2j(V#YX7vHZ!N-r)>u5YBH2(-dt*j6KwMG=snh)$5*H z2k|4IW(*TJ(#a*piijiJ!8^!!Ydo~~88S|yE$bslq^XNqm3X%+;ixtDGoBIvsX1pU zQ1-a+ZO|MV}^3Y7Jo% zOeM5+6;FrDFAk!gV5o(F4n6KJP*o0P|wR=I;iZ**737$~L_qmO86(7A;no18aT=l*d+ zzoCN2=i3Z6g(Yd4nV_2UimQ?g4LIam9qH zIP{Oazr4oGcWR6#C~2#X$DGTGwwAH4YqZKm%dzFoh3gfw7qMMLIVGD!=Kyw`al{yS z`%`Vdf9vA6Z{myTe+@OFBFF$)5ZPHLXQhF3U~Qzi0>ftb#xH&H`A)(0&JKukD z|7`W&{oAkp>3{fw%22p0^I?55aut~?#46mlZSx&tTTS)BJFV3BKefj-3R3XE2hs8L zelzWdGh-hFs?Gjgqqs;*btXl%!e0>Hh~ z)jM}L_fLibo%RPym&o%xxi>-$>ALi>_lb*S-lGc|^V-1-i84_HCF_Yclv22Gp#lX& zQ7b0FyvQueTtzCXdc!ynsdxBv(PE|ovO3xfErgMIEM+Jt9&J#y0Lfbt0ncz@;{Hp| zZ9s?Dfyl7yg769u3t?X|iLMsCGnU`{@Xj|MpZxgQ`G5HG`pcKMAX=?Q2x{nPB4(mm ztJ^B$2Y3R9YDDWifRa&w+^^Gd9042-3l(Cb+nd9@)YFp<6W!h(04=3dtqGD%1`tXv z_5>Iz0%eaXo8lKDhMmWTvdFTVFbuiWER7s_JPgU|W>ZV=fw^S9RR=V6&wAGP!Q17+0gh5oS?xdwHc>r0n(~v5N=fm{w zz3s1k@?cL!vxbxn)x;iYkv%bDQJl+hdIx=lXE(E%B z!c+?I^yTH{?oc70K7BnDj7-1$@!h}o+rRXW{^gG@_seR%vV)VFRaV^|utrlj1hk21 zIrB2dIfL+Fs8h;B1X2dgBHIl}Q6VMfLR5&E zK@cVurRUeTuWt`3V4@kg*v)Ig_ujvEI+hugm0-w^tR*Xq{g@i_s%LiwbWNpV&WZaU zUK^Dn$in^g#^1ILO;L!BK-S*?pspUTiD)D`cL0hwn~D&cEUBmKI=us46A(SE1g@LR z)^)*VqO6bM;oyu9xOpOjFN6kX5yqV2#JuHsRZ<-aF|i1|KMs?KhxJ0+pmT%+eSnB9 z36X}rohzxRvhRohAW@09rx6Xcx*n;uqVPDdqaDD5P>%VPBNS))RYB47z(QJq3tO2M zsHpY%@OtrpIWZJ}x)PRJYh`6-FW^R`wK}+0#kAB49l5MmgEbL`f=dK|ycvaK5gP=< zx@o9WPeY`Th_HE>U2MYs>^zEi%giEb%@YiCm~L$7*{Q}Y5zDNAg^4wkoPxk=0a}gF znc5@L_yTceP@F>p?W7Z$iyC1XdqC3|j@vZr*riR^=;o|S3azdhO-dBNG*zf=BN-$J zaS3gc*?{Eonz?P(=J1GoJc-Jn zZGaiuh{tx1X?_hk_qx4^7)QuL{E`%&bJ=@P>fv4nNtz##60HMkx)*uJ41lU<=Cy}vql67CR}vA+Q@=^>358Z7 zU>_1iHzgO*8_Q2h1sPG4x7OW(cHRZ*r(hkg#EQU=?Ngv|->8Zw9mzo(M(3i$Bb1Im zL5`=foU7;5DYle|;1rU|`Jkj^lOO|lc2Vh=u(<%X7`uer$374#!M3B z+aMh(G+o+rLb$F$Amk+b6^x9Dm|5EKW|g|-PLLKX5_%WMp99D;%{}`e;3{>?mVDJh z-fc2XJjr!qgcmZZ+K7biEk)ob1*{ottCk}QiYR30E!QW(kcg<0QMrj^+)u-mlko4F zfeT^eFi6SX=w7`jk{e`yTxTzXWZDb`GzRa;J{is3$s?(UEB#pOw^V?$LZ`HxWx|?y zifEXZFuuX&A+nk1+5}1)*ZD3XlHYT{F;oU5#^2yUFn7;7vDay^QA32a$)&5Ku)Mtn z)i482pSZMJkDmS7>qw90hw*9LFj=0Ce)#q<25LGhMa%vsBBg8`oQNkxm$*#J^2sM3 z?QX6w-&_vE0Fq8kAdh^8uacWQHZOw{tg6+3Igx^wS|2=l^yGtws}ajQy?S-|=Hhx0 zVdDM%@X@H7=sWM6{Nd+U|HHrevlH+}uEBw%nrdY}k7HT7bZuF~=RTRRMv=f5<{d(I!4ngCIOy zhR8S!`|I8B{mY+xaDV%|zxnv5&u_o@(Pwuz+i9A#PItDe4?V3EOn~cIg^$BqVuAw0jFd6t&i?}^6>OWU*G)6*HPqQ<#3K7p!y_Vg2wK_f9?00jm!hYZjWcBRqG+%*6UX_TJ zgah%$s!>%@kZ!l@p$z-oB4b^j48u6y+#b%>!`+AH*RQV?7??z4nHFmnX{;bB1DFfj z?JTToVmPq%eIQY-)l(`x+^CGnf+?Z#9jeFCGX#fuB3oI6E^c;*c`0DP&l0xXChOkK ziN{)1LwJ#6%M3H0HS`5}_I(uyRRV!YM2NisK^7TFOv=RbvfMje{iSa{y1N}-U+s5u zXqI3M^3v(L9?EtY?`~IhTJwZyo=>*xfw+*20}+*C2a5HS3gP+X<<0Fx)2Gj05$Ss5 zU;DEbQ;Woer&;(ek2c;olPlENXzxb&<(btTDBPH_4IM zP>GU@8if})odd6Qo<0&KZnirpz$H{3HI$KF1p-6(;=6pSMvQ~qJrh{@w#Xu9lMwIM zM<9rWu{bdoF?r^lC2K@ZAGbKHmyQ7u6$VfgssNrqVZVY>h#3+;HjQk|!XOE6RbBB> zATUSY^vFJO2d+dMeR~c4#N)C`DEy$Ou#lwZ zOOb3HwH;erS*>A=h?$8(5aMwtDqhN-*vgpFveaT{T?u0;);&T{LEh+=nY!QxJQG5# z3}EzaXyJ$)nmYwddCr*N)_q=pS_QBXw(JY8&?wpeWo1}bd%Td zj!hV(xQ=p16FnJQ>nByJm+ya(t(g%sxI z&3Yi$^pqwbCZGZ9c&Wp#xRX&R0)e7JaZbDaumxJskRUt6Ne)ND;;KM%#k< z0FWmkXGp;B;y(Z^qchD|#tXXVgj;FZA+foDqu^Se;mh%42sHVz$680jjG#aZfv5vE z--PQ%gcxiUP13_iq-(>D&iZ!vR38>q%g{w#OSogspuJK#Xt z@u++7zGNZOK98nKV_+dn6dJ$1T;$s$KxVs=^V_J5dt+)8s}s?LPE)xw*!puiSh0$Z z$%qJEVSz&0J$!-`Vk2AFvRqA7c*%!8WY#WmZ^Mb5zPpUneixk-)&Z*SG*^P{@n*t8m)Z8jtP)T#09Fzv) ziIr{kq>U^!O_ndr5Rdw|rhy#Qxar9_X483%n{x6=yhIG>FZ_j9r+JRlTd%z_5Cau}m(~a^tYH{C zXc0(;2?VYp>v2`MeD<@?BVSpg!oBBCE38tCE99nka+bbiwuMKt%AE&y-hc9Fvu2s= z>sMDVUtaC!naA-kP3I@8zw_Il{KkiOzPg(KyFd8(%j;#kUC)Q56kZiR+}z46u@z5n zpdTB{k$n{2KG530H5E=ahxH053@rQo;o`=sHKi0&UK#6=a%(K7UeW{}doe`7E$P}4 z>5NS*3sgnNGQN2F=70V-U;H2b&UgOaZ+-B8dw#Qfb9r~WdFR3QqsR9io}CoJJTFsS z3S+xom0@^wwR`&F;>E?)ey&73tcolaX%Z-y3%I;|eR0_DKX`oiJ0HFC{^NV6o7LfP zxSFQI#7t7FGLwP?OnkZ-9-ghvH-%KDeXSr5D|+0==g7&llX^rf5T~z1EOSAb zv04qoY7nK}BwxR|eevez*{iFUZ*E>+TwmTCu5S0YhiRG@Q3zOxwfPlZmOfC4KYg=a zooqJi)p{Ixy&6~JaJpHYZ8qnptJBSRx>=o!WjoTyG!|YBbh;i+*TZ^M#(@Tch>D0q z&ERvi?o?*(G-c6-kWf3cNQgF5RoyRos8|)bx8c9`tvla(y#3)9SAY7|&CN8g#}Pn< z!15+6)!7iHZz}tdoK9%%2?R?M8_HOCnwMI|Yk#O0IG?9F&%3kp&FT5}_IkI>ODSyQ zN|fnIouQNRkfT{sCMK{*<$+JPo5DOzGu2u^)775OPuH8(?cp#GHmBR&^-ilYP*v2s zMw)PO>iOJ-P)j!>f>7034KLdXJonSvOSD&{30d4yiVBET>GEc`I~*ca(!C2yJJp*F%nKhYpos=gt*mr?6B#rlZ~rk%205wl06^n~&eSv$@_)w}+~c z%n@owjaRB@6`H0+sx@|wW^4>nWx_ZxLGGNat#hf=sw!8z+x>*kp1vu>!|>5x`QC#? zzxjKA__O`IjO(##%>qzfEX;AwvE^wyZEC8{kW*+)OF_-pI)TViMbuKI3|%RN=*u^| zAAIpzgg+KOJHd~iUSD3{JUH8G!~i46tI4;!S*L}xjPRBqWZ6gtwb{#mg&%C`v`l_r zE|1(8k9zT!<_e`ZquCcCEU@E0wG#(~0G;6(rVpT515|@o;%`%C1hT`E-gXqm&~cow zF9a;Qlr>5<&wxnaTh ziFMgFB(esQM*UZXs;VlJA3?1SLrAQxJF{xGXaRYeA*#yYCG32uG-wD#Xu2pa;j?e0 z)uUZApb%0fstQ1@2&PS}TDEm2;J7w6*hZpS;{Y20Qq|6`8hRH}h+5xxRWM^@Mu~$l z3J@3^-Gkl7aBs-O6#z6cPmxHliwH=dVWVOE2FgrTOw(Fal|WQVQU3{f( z^AHBY*-9o%?bKjIj>8{wLWsZrDi+aFwJ;SXX7`lyc&0II!0AT#oMb?V=89_I2_qIWcTonrWjJyf7YN+mG-S7J zlw|aG8Jr6$#y+dNt4ZB(p*xZywNkj`vBXA{Bj3W;AntoaN>@b@Y6$P9Te6-fd`Ri4 zb>=K*oc@W8%ae5x+9dG1CvRx#p_FSzHwI1Bhzw*Plqyp9Lu2fePxjrEj6XVZ>347x z?RF8j(40|d*JOowQ1c9_c{xs!O!96}5jlJJdX&|2SA7gIsEB>2Gk9#|Hfv_ysUqDr zl4Uy$-GuSpluTTMPzd!qntv#37U9* zbeagt^+|0D2O9mD`&Cn*0mWoI3i}C{%?=7`D90{aurtF!KDcGkNa_#%`wQ$@H~*MR zPqg^5S&sOaI+AJk-{YS)5)S~>atC@{?7FmLXl;^~cH`{M>C30jr~S-C-fOgn2S|qY zTzj&u_5?t&Jj`IFDzZ5}{otc_S0mTCUSIB>KfBl+4k$d&wG{k~zx?rE{^o<3>A(NC zU;fz_S7)cERB*W2KYV&LuGO!tVT#wiL`RP}0p1;1j-A_bX2ClOTv`SS~ zDm;{Od3pWv)#d4C{QkE-{FQG$Io}S4!*qFlLqtqP1+2oLssh!M)$rha{qSU5kAN(5 z6_DpOHHB!pGh7sqYgC5&>rAOBDA@*(Dx!+QbaFC|!*Hnj{Brm8XRkl|`psw0-hBG> z^~={+*Vng)d0v*qu=}_khjHAjH_TK@mQM1F6FalaW`$I1&cJSomZ$oUQrp$$0;CwH`T z={V7toEZ$?^rARA#DrO}9As1Q57Q5y|X# z0*Dr=QY%~#gHcpDw53apd;3;+gEZT&h(b__Zf^ItyM6GT)7&3tBNET4Zji!aly+tf zq#B(_%%Ng?qsj9fS6e{@JGzyc*Ls*@JJ4@@^YJH-Pp18Hy`No8kZXCV8V7gCLKl;z zAw|d^YS9z2SRWI{v7BvJRYdee2=$rV?Dl&spFMw5e#qnS(O>tnVl%Q=n$!=|)i{*7Eu%nPx z;z+Xtx)Xdrvzh!%SV)lcQVP*$aF` zp+;=tw(lHOvpW#MAc2cRqEGULZ0xFDiJRH|dm@0DBAW(kM-GGYa*xGM305<60KwCf zArMs|wF;Hux=D$sGFVhZz}DYZKvpqOgxTdeU^T^=U{0Lpfo-F!TM#?x8Co=nW3gAF zRx4XbtuaG`TAKRM69c!x33%K@ySB&y3&xzIoaD03-Zx{pASpX7<&8stXF z7#l$B%G246a>mWo3LKtZM|@`?PKyaU%%E2DD)Ev9-n?h7TU+s{R8-=Kf5PuZ=ZQHI zcj@dvzPomWw@`5ZZ$q-GV9$aHk0c-gBEAv`JN^Gw)hRvLIH|{`p<|Jy?Zz}s70Nbu zk5ajW((hCa5-vx5SmS!O+o!0zwE$@hN&>!{{t#sk)`WS5OS*@l{8E)gD}#v(qgXd; z_5gEw`Vd(l8t9k$;X&0K*=Mc(+W4Vzfuv>5zVGKhDAhe;0e0Wg)bw}iop{Q4y zovT7ay1wxJmLMMmJF55Si`$X4W!Ko;(3C2>si)CVQ^uNd9IsBvxs-=KiKXwtQ_TRi zLls7g_$vd7fe(?aMIIx~;ART8aSX>=Af+eP4nPM!C9R<5*eSt9GtjZqZ6&Q*WV5$R zZBF?!YBA_|Na#Noo^BJ+*Tn>oI1>9{baS2vdl1F>wN0FIqMpe?25N{xvG~SA)3K_C z;-!~oxM3pa0ZNXEy~D6}Nz*7c=4mnLh~9khwyZhnCSCcajjb)%FT7%;G2O7*$1oAV z5ap-?TE%Wy$C3S@y*gNxdUA52GVgA0igmlob+(OxF2|l?4@Ser*^Sg~xI$S#<9hYv z!*|!~Q582=`=?*O-tP}ez@p1C|K@Le^xNNicfB5d?~kAT!Jj@`uQwy}e!stSXR~73 z@0ayo^-NO%& z+Z5)&0(a_x&Md0x^+OJS`c>TR(ET6>(1fs{?2qZ$rBV9 zN|8cD+f&(^V4pD)5@Gr+y;4=@P(lU~V3wl)Uu0yxr3j|M1UVss_SwRb;c8VT8NYXL zc6+z~ho@H`Kf7G4#;!}iFa*}A&P`30fcU({#$X^Kq?B38XwZfSI}{U+B>|2C^ZBaZ z&wIODmlrqVz{%PU=}kPdf^m1%E}kQDVIrAM`q`vo=9}eO7!sl|F#-aQ^VJPlY24*v zxt%)fd03A*0zu6bEgz}{-kRGcA`uwIf($964bY^<8M(qn+Nf2xO;%GtupnLCtmez5 zdLFjk?ltel2;izail`b4Ec6+Ok=BTpE`mXbMj!InP1T?@4nY9=B;R{{^sRe4QpT&* zz=DY|tbXGU)gp-?j0$g9>6eJa9Tu@VLY6M4t=Xiou;4f_3#^9qVk}?2KF43uAN}a@ zAAEQh1^@D+=kuX-T^9CvU+uY?(o&1yko2#5GhIMutLo>pl|D9^mIc+?`JF|$R#6EE z0|PLi2yxNY)~K-sgII-~5FxOF>M*jbi?E0=7qeGD1Vnnp(2zf?P$t0AWGMg&q3U0f zM~c;_`|Sx0Tty_pf6vu0PQ;XTDXEeHBC($ysm0d!dY3Vc6x<-18pbJB&0a7d75D$n z33SjKYGmUN@!Zc9+!#oWKQ#$zA|aKede%yIfD4FvNycwZh&Z<_SZB+XB18_|u*WCu zt4M$>iL~nih>l>_8|R3C2uzezb$BcS04Y&U$gES4sUz(a3d|zxw$qAG{m9fnCC?J{ zY|YASz4j9U09hb`i*p1K=(-LTbt#W)D6U10B1G6F z@B}g;Nfr<&TEz*1r~`6HQ!;af5#}n}1lhGQ;%hsY(5%e;if6*i42dYD$!!O^D0r$~ zgH!PA!6L1Vc;98CiBO$Z_DAzV(+P0tf;Lx;1ObD{ZuLOPXiZ89liJV7DbV^@p@s|^ zg2gsstz@^}5dpyZ8=6gyHPuW741)+f3jw%>WYuUJ8$c>Y^pr&`A@@jE0{T_v3M%;P z>0c1vPkllYE#)HAA;nxoJAdQ^Oqj@lU1=39+d%^FCJsnyRHbWcKGUd2l|X+RSiUYUY?j8l&KS)- zS}@U3>TNg_XC1|t{}I{nG}x%vbd8NT#}$d)Fc`Gl_M8>(w5}GurYnITi0eTOpFp4? zR*)MZQu1o+{0rb74qJ_tCP8*3*7qBjW1Dgg091g&`E4S)@f-<}aGU7!N+Ls7>xlj^ zf4g6N4w^_HCyskbEvgL9ixF92EHz9o1Swp0TQEnwCe#QY5+)&VajItztA$YR9K{RU zTrgwxR$L7ckYKwq3YwdXZI~SSz7oyav%B230_kzHigHzNH{@=cDqrGD8$deROc45@+@ z=1dw<2T$jk3d0Tg6DKD$rE`s}Z}1kvgf@Hh&9xHk3(}vtAqx}lUku<1`uuR;@e?qsR{vESYs9M>F)}h+kFbFM-E>zB%ZJ68 zl2(g^LC=~vx=3$UIaH5WzbzZTZx+-rru8kGpKG?Hf3m;G>uek1+fhHdp+raWK~m0L z-_5VD5JjYj0Agz7SUj@xmrL+MA7YkE1%(BW@ZO`ld;41=vRtgsPA}&31ppAxYQ1{* z-FtuhqsMpl`ky|z{I~zDIK^ z4mk~V7ENP?v_DS5>1>*djPv#C>Sh?$q=O{Q;<}Y~$FGET@~GJ9oINcas6HDJiNOX0 z#wb`_7Fxhlgv%&h&JSFadvTZu>FG{e)#S89!|S%xtg;!W(T_sln|K%Qv4s zd-LY({Ccqzp+sr6)g2vd?QQRDZ_jpjXZu@|t=VLn({$F)`fhi7x;5=5eb*6n9p#j? zU$4757iJlYu*hm%mZe-S)|ZR%YQA19$FYn=k}2)Z^8WVZaA$h3(;sb5_O|-1 zY3dWE1c1N=t_rMIuo}kIIIh-ZwJxh+9L8}hWfYI;08_$D)MuP_d1pG=opoE&JW0?I zBm@HBBBgLquoN`U10-4wvL5+pmj2{B2X}WTKYMci@_ZpkIpN5xl-D+Vro(LH1y2VP z5~A*x%^sr7eiHzva)?L`fu?50I?Nsx0#~C%{2u4czyA8OGx0)uJH0np*Evfo{7Gt_LLg>i7bFiGTFHhyUcecLd}we)W7l3|-3M z&^%jFi=}sOMZ|hVI#bA;na#pgnGjAotkaEvun4ml=919LJ6WWN#9a}!rO6Ryu}U66 z5N1*Yb_5)OGGZYRg}}XQry6BN<%kfGQeuTLB$3Nq;+2J2r_tFr|J5?WkGUcHM(RrJgsQbJTg2PF01gx-42{9Po@ zVDn~u4jo!qqsFB=9Y}j^iEo~4wuNwov_JrWZALAKXv@V?z~Mp=U`7-|VGwP6#KzB} zR>4FX5ky;AS(y?WpG3gn3`FEgQpIL8L)HRVMn)}!j;IHjWdtThW)>YsmAtp41r*L* z6e0k^QUt;J0icEWC>mF)M@5$*v$hst8F{_9$Qn9&M&eN?M;;JmpHaoB2?0gASkJnt z4dnGKP$2~*K(#RD%}3aEOrCRr>x99FMj z*Dyl$S!K|KIr19AredLua{9tJ$l_UoV^C_SoB61=J95+Eq5(b=wq{B3Mt8|=3g>L_ z3S{Ghij9FTtxZuyNZG6Q5nTBEu2^WS@13b|P*3QO$E)D3T+$kjhfW1zhxPY2J^{ zKNzGo@HaY9fE!Cd@FH**;Gm)_j~BYeIFv>g?JE+81@;mvXsWxmOhA=hD)dkR@cJ3G zk&*w$YuYr;>Y_w%^SE~D$D)&yKT?|Iiet@@VF99!=aiP)4F;k0t4{NpUAwb#(!~z! zSIprURMbssOn%~Z!S=>qsqM2&Py(!~wRz&cL|4H^pcZfiSN2dgrFJ~F8iO!R7CY;? zZ=7@Mk&Fqr)$%wp4;z0(+?=}zDbbV-YUw1ZxYU~$LwZWNY5)^@ew0v{EfCe;C z)Zg~R^e(HQ(Y;Hwv&#R?)gVdun!uC6pB56@IMWaoN3)%Dp_B;Ld?W-mK4K4z(`|%G zX$x4K{b&*pBGcf-j>{S`E#@#=t4$~T?zWOX;LEVtq5dXV%2*7G6*A+?mM}N*FAJB9 z*$vs$*|$e=jX@7HQ$vBu*s58+wXoi9zN;v>q(RgYy0TWwTzTYAMYM4l;S^kz1)>(qaLSJazP{V*Q+(u9vtt(Yfq^ey=a=4rd4D0GQY>Tg_ zu0Wj10059Renir#g{ZVge@k#m<2iL}EWE$FJFJ#vEH?aGJcay2&tK zri_d*zq~m(*b|Yf(m8q?-`>01>e6-QWhd22R?GXDlo-n@si(w(s0JxO01dI-RT* zt2e9FPTsw{KRv%(UfnDK)7Qrr&%QoBzr0R_(@9s#CMpOZU%q_Rk^Ja; zZ~y4K@88M>dobHJ*K|j-Q9Wc@cz;M-v0Jvf4AS; zo*nM*Zf{L@w@b`)HWe7!7-)mVUY zqOF|vcKY3|-1oo&%N1PTtX`hqT+SCKSF5wj^~HR3wHR)eWxg8MV_B`o)lk;!apW>G z$1F$`poEE_ODX5HGn?#hb^F`XgRSmxr@OV+-`ktrJ=nRmH`|>W>|F%bLs>Hv1{AsC zGVAe&4`=uGy8raq*+(xfSEF<(6)oxjM2XfTfF@pmgj({(MMf#0S5{eUxQIeU77|4w zAZ3u7vY2g8`o2S?^?ES#uKv66{~}BTlRo!d29Wt;HI9Htl(7^>u*=^z7E#6ln7Y*W z-7u7tQl3s$H;atPD=EFnr$FsQ4}ii5IBH1^0y9U4b#o2Yp0erE!&YKywitmiEr#)W zzET9)z$Z$;EWngdXZkkB%c}BTL}X^%!lTAg*6>2DQ+QPXX1~Z8J)VjP5y?2beQW1~ zhld@>)nZrh(e^6f{1_;P_ovY78iPLsQ@D~(xULyAZzCJ zx-5rr7zqeH-UK2f5iK-Ho+SwB-8?_w63cJJ+Kihex2<~Q5D;FZ9g2=c`G9zrdeo91 zi;Vm%$H5NrLUI)hZ8i*c6T`cOg4g0%#0$QhI z07igJzKnI53}4Gci6|vZh$&G@Ku8HC8Q!5_vtK1J%nm(Xt+!*>m9?i~kaf|Vc@zl_{K@AcSaS%0!(2&@3H$jHokV^gJwrEn1dW-G1o*@Cum z1ko}!9?e&=2o$i6dqRSs6DNR(K+jGzb2GUXLP2B}ZPv;F43bz9S^rE%gd&KT{5UF6 zxO9vJs;~#3E>YZ_bBmgbA7f`eX9Zj?35J^P;s{;+1q#Q&@ja3#wH<*LIoWRd0yr{YkOD+%1b(Ikv4M!an;H?rAoQQo{1_mtw-G-owyJTW)ge%HjhOmR%UM(_azfCFZxJh65VhmasJr^b@G z=>x1aZV*VUG1M6o>wtiaLij7PgkF^*o*=9JaFZW;?^sy_bGTGXL@dF>c#ti8133zf zLJuJ^SQxmKKgXXE;#k)zv5+cSjgCvyxrRsw=xJ6rRKX(|BdXi#4UDbbmVGu9&!ivq z_O19PO@AQD&3yY-5ij14unML44o!(Fpc7^*kRs=4XoN%%;9>){b_qgyK*9?6fBkl2 zg&?I8w-%#?Wrzqh9BQm4vI41bLlv0tbM4lkR`f;kAD~#w*7NUTeRyNZ0}vIrbYOyx zk#>mJGlioJ5~3gZ0B-(x8&`2sbHiC*8<3 z3S`Gm0jsMOkXW8caaBsNen0{nN7~|Jkz89{&A{V-aLz+rnj7`%;Q+wL+57JRup-*w zEn7Dje#%1zZp@Z*34#j2{QCXo&qi5e^W#=?t11fuNDg%l_^)v^V%`{I5hyH^NlyT) z#R}9$>WZ~3K-iY*`vm}E1O)i;1ppur5e>s|>+Y?45APxHIF^g^tDCEZb~5L}sl(s- z$vfYAYyWbDfA`bpUpzmX=8o3`5mN48(8H` z+{_o-ThsgZZ{NLhc>8Go*5S_4-qz9H&h|9-T}p&~rko&=CA#J>3Xi2&_6V2>2tjAa zCXI#(&@yC0!L{6DD10>^aVXn>2m5I{nM@}=BiyXv$?^Q@>+>fs&Y!-%c=_i1{BnM^ zST0sP3|v$+DIujqnFv!(2uMUkm=oqiM1r2PB8)}Gm**=j)gj@WrOUWC>5sN2_ik;! zb$k1*TU(EB@7+Jz+278400OWYWIdGYC3jTr?BxIQ`?q$s^WS`SGGDGIT~CH%xcwyS zsE%aifh=4Um8(&ns<*dnKqN$M$6mN-sou@?YSQPO-C4?XbG^{ws3M#sflbAdNtb5R z4g^-qVH~YwOaRI#poKgv;^+VZl-0=0{cOevtHN88p4Q_yjGbTFi%ia}gqtC8A=I_A zUQ2WsrFw2Z*D%Xd?R{Doe)jzJe6h}5k|H@1rIZpOGmsFX{(m4M@p*@8ZxGR%jR~SP z`O+{5L|cV;H%zT^a&;&SHdBG2*!F;k*6ZQUZuh;nZf$jRwOq}IsL}B$|^!-i`6QCLO54MlqzP*FOBZEQ}tzRU-$s`v6LEwXJO6kqX)i4yn?z7hy z@JsrW4!tZSfflWR0DCo~jzd7iK4l`;e2WJ~1d3ib ztS%Ci#EdvFT&+h+yk4(Y!!WXF2^_nVQAUp-)El4)=y(>zAhmQs{H=&Zq{BA)R>&9pL*~heP<;G`Mr{VYdIUq7UU+zo zfN@Kiw4Si1+R7dOzGXlM{nm=!@15*yQo*rk*Sw3v#J2r*^Mgjpv- z5~T`+X#rvl*3pV5EOHc)0@f0T6^v)m{i-I4VEo+F6HVhi_5?r~O)R~#+IWKi?1h*1 zb|ru0aTIZ#mFWQiU?N8~JzpS1z?2aXdQRGA0}-w4NrNT5Fl(@#N{UUKjxDnub%<6~ zb5RgbPd`L}3)?Igk3DQMbpA(EK6vb1%{MdSK>a_q+%|VQK-B$-tg!RzPqG_=Fl|e`Vi83N<%FPh@9mj|Xvr$pY zrHu%{reV0f!nn#Jk;CZ{8jB_fIx$$-FC5nNIcmh%^X%A$pF(&l;fi8DKnqBj3kxFZ zsRfZ@u;62$JuKg>mvCykFj%r*#R7xL4N3im>L#ZuSP)s3gBJQ^1}}dJ%OnuMZS!_S zV>bFpR;2h)b-+uZy!lI$?l3qC>Z<}kApnO!ReS=~HF{D5f9T@tsYaztRI~{A*@-<3 zHn|P4hMMp|P`aXsHaatsv>?45;9zBeF3;5^-la8H*s7dI;#J-4)z&M_JDH(x))#{U z(XdvO99D!A z0JUSPseoHKsGqN7spkr=w#`vk-5Wqu%^O#1co4h}%Nrl6KLme8o9RN8|E8kY{W(@0 zZh(oX58bE>^Qpe#PE&EcuvW1Y4R`IkH4|{js+Py%gbjyh2YS*Ft6_d95IDsuH5!3H z_pVUOWYLt?@H)Rz6HYv;xS+h7D_?~lc?H*{E~ok)^z*Iufx&CPspcwU z&jfcfk^EJU)@J2k0HjGlwN7=vu%TLw83>{VD*?c-ZANAy5YR?EsdX|+H)ENA=1=uI zl^U%p(w_w~?1T#XAbKwbKOKmrE0M@ewbCZYE3p-HAJTa177#ZbbsgWZK}Mj;7}K3i zpWOVt{nu~(2^H{vH_$Rb22UjQY*t&P`;II^;i%db0m8lg-J7c$5X4kTse&2t5&}u} zRN^nT^=M%hAqmTDXY2ms`(1{S?U2pG_2PwOsmhKv*~<9qmmXA8j3O=S<9{2qIcf3==2&OE~;0 z2}&*0wtCjy-Y5b)vp#qE_-6f!pMUY!KYRMomoJVl=aYW=?z;~k-8+1EcmM9;&aM6J z-L2{Nv`Yyo~utvJmGyEKDdga10)$Wi#zB^=kr8&b zyZtoflokb!ua>W#z5L?q)89Nh`{MbV=P%FC&Tp3MfkjfnE~m+K(sli;?^D;M+>@Se zr<90PXOSSMlv7G50GJX|q7E_TlyjFe5$QcaUJv8A8c*iSmzO6$|NKqg;ojEt?%~ek z+dJ>y+kWrv{)5}QyIUCnR?G2fG0eLB2k#$Fy7bqdot#{(5@GHWQ3431L85SlmJjRY zETRi2V_96Tu}Mbp@*fY-xa$z2Z(yV zzza{pN&+CWkhQoqvzY)UU2kpX1%zceti<%$buQ2W)nG(IN{NVoFcDEAB!onX5+&5k z-@2@Mrl^Yt5J`&p2yRC zM@EVUr&A;%=4Z4GoHl|?lo)hygr^M5LbU02^f{DLA`l$cAT$n{wkNl?`&ojc?VQM$ zjYdKAs}1kn-rb#av%Z^TNQfD6mT7`eN^w8z{EMubg)PYryX`QZ8d_@|4>lJ>OD+)v zga8UyAyQanA~WoSb~y(Sefp8blA2H&$5_Pbya60uMr&38rXGIxDS~e>Cnpw18K&gG zke-AHQ*x()fQWrgS&M};<%Bt5CYwpyQ`eybrWQbO!>MY?%VdoS5Pu;SmJUI%?@XaDA?a*QSv+$=jz_o5%$+@2Aem z44VRHz{pBSLWk`TLy4mb7(p=(bUhaYuyG9;5*dgG9z}|Gw`1+Gpuo345oT>KC&FUs zw`Ve7C8KIob)W@DvVaksp+HI`VwYnABmu1+vaq=k3xGDovi}Mof?erv?pc6WZ7Ap_ z2wr+`DHNFsdw7SINgx0ba0BoIT5C&RgI(8gL+80DnI`RP}p`~3G64Y6_u?f|gT1+U- z&0uV3?#Ie@%%$cYtYprp0nh*$vT@ze$m0JMWTS}6ln_BOi3Tg$#rl0KX^ek@!#W{c z{zn`LFa|_nl$T+JxLIvv^R1>dLBxau+*^7`f%Xtjg3LOLhxfi5Z?f#se@)$WX(92x zK0pnL!CLtNs>IgJDCmJTB#7lyhPL@pm4upqMuGd{aJ zJ6scg3F_Wm><|LUtWX11B+e7SK&H$c*W5a^^_w=Mkplm&DVNbQlF)`MmXf%hvd<20 z^L#frwlFZckvOaHvKr5j!wUxv6VS~!>q1PD8bDJv0Skz9K6vEjg2P!z9q*1dF*I!O9Gm~)8mt&IAY8DouCZ!?qk)T=KVE{t4PqE%sNx(R%h+V8 zf2~JxFW}VH5Q=Rixj5|P|K|u|sFL_m5^lVo!|*geHzEdo(a?MdxGuPa5Z(_%4PAu7 z3)^QJL`cGGTle0^aA8~E8uD6AlYW*6L|jW7KNt^i?)j#?`XV68O^473q0?X7H-tHo zO}S~{L2y$SB3_qU{{mq*s`|F(B0gqOg~o?c`4yXW{qo~4V|oy*a%e+nt6K;wY(#S< z^%d9R@y%y??9l{lzUT;1B8;~|J!akY1Kip=Y>aFeQ)hSG@<005`s(1b{WeD;%rzva z_Kj-)JpjSNytA{zBBgLj1Sp7*Q__tNV*wj3hGN&(-NT1L^OYw`O0~!DzSYmBT*~5R zetvqfS`H~A3XNmAeeduGKX|;m+kf`z=I{UE%i(&tJ?){CoC$^j$ASn*)KflxeM$rm zAKrOIaCvc^QwA7^_0Z=IsUKEr9*Yfj6cHU-gES0d>bfrHo70PHDdTFDyqb@s^3SzZ z3ocC{g&8Q$QONnk7WTOzK%=7NVwCJ^&EC%J!TsBJjt-`iEX?cGngJ|5XDK6NPM7o5 zFF$_z_3M-6YMBysO6CzDi2xRmj=GcMlV?w#-rC*%=YR71-}&HeE_`}%NrVYgVbL7R z)S0Ev>E8aD5?5OK|LvmEEE0swtZ-E6WFcyhY<R_aqqWS2n!fkeu{TzJ5glL!tL?wX>S8jJPlNd!bR=_h@cCX;SD?Pt^J z?*7i+)^vN4GQlv6tL5_YW^r=0diCb|KmVF`wkD5mZ-4jE{&yZ8Jh-!S&;g5JDZlg9 z?%r1ZUCud!g;Rv6owfwPZm`C2v=9n2`N?o16usgHfP~BfAd~=^ zmh%CKc6O#b@NzjIk|1{-&88CqSuBUudO$$E_*S^+^AT;*VuXXjz$nU*vKlBY``Ki< z9)zHqOqbX5J|)L?JQP50ek{PqV<|+b6sAN3RUI)c;;t$Ka1$#Ln#eDV2=g(H_!J}}+z8zw+)D{)81O!SsAyFbkNGT;unJAGcLYEQ|VAA2FP4SUN z<^pJy7%(2~V zx`;&xM3DKx-qxdo9pr*~saL0wa47#l1MQXn#~BYk=ahag19fZ8c=A139|TlFqO2x)5bI0r-##04ZX9-$303 zrUbdqU80;)-;+uj2vDMoMA|{YfdW0e7{!9)GH6u!)#L=c;7ijO zJ%?^1e2hRvS?xQvG7n?{Oic)@LoBsYOvBZPX3%;@T6C*VPElw8ks<;5Q8gn7ODQGN z9?Nb4w7Lz=_p%_#Xi0L)?0!Tk3PQeml-tA_njy*U-Osw0nVw z>+5#~z{*M>o*{m~UQ=srGeYKk5r8NGA~SG^Uriw)ASbsU#x>1(6!=ujV33BMMF%4! z(krQY81~kc721wb%B653KX__jg$~U{GiCIej`0|P{YDWm-G5; zm!`m?+3?B8xJ(EQ=#f|vMo|(t>J~W}Hj#TIa!q`Q!81J%ag&T8X#r>e)Fh@2Gb_EE z<=6;T0AwO!BQ9ev&F^AK5vpS(nznAm5KV>kz5{}fLaHJ!U?uTN9P&yri~bRPFY%~Y zYh(%WH#aG+9q1*U9#aRPB))$8j~PlgK86HK+$Qky0ts33^fItH`+JS&1sm%l&@iM{ z2KtIU+=@`&@eXi;Z&ri`j4Mtf<-sOV>W`gvvHfZf8XAUtqeVav*=`jB=RzaY_R|3G z(3J%J*J_GQJ`JOBhKfP)05(-A1d3g&$^Ppi82S!%iS~2W?R<1;nOxI-S!Ti-5~=thgb`}2pAsq} zC8=w(R%oG+SnYop1FTx(d4#(vfz}$as=5yg^lma<_~{Mf2+iA{K;TL z=yWqpGh2V6ivx*B*X8MSa&dOXMbFqouZ-!g2$4&eb614`p#8qEmcK@!QHOQ7suz6GV{0|*OT1ibh=)zxD;U4>yG14n0UIq4M;o=SI6fpk|^4EIvvbW z)$(5y0Uw5KRY`_eIRjV#MK2VpRWi3s84;mCm+|(|-s5|>_V%^`WLU2S023xay>3H9 zB6NCo{pHh_Z{D0D(rhvr#$g;e2~xr$rArwBo<9BZ?A7aUz5mv~_>(`lcl&6*xEZq2bR<{NQ_*&reaBieXp6;;g!yFLlf>+AI= zUw!?{&)&Q|zU(L6KmWrYzW4af{iB`ztvpFO{jmrSs(BOMoLMc5=qp=Ut)gN z+L%fW05d|)xMH}P4_Awkh$fQ^eR_FaKKb(1U;p~m-+lD-i?3dtTwIni&L(MR+VAfi zGWuS zdw*}T(|3E@(+9WrCpihj)nYiixcchl#V1eC_I76P+}r*BTjiVx5K7_3Yq_No&WVP_`nqt} z<&?^LER(+Lx-^XA+Q$A8x(chuVGo`VKv*TyG=sIwM`TOK+ifr=;1rW6QMgR!76iU$di2x|2RpI$!v0jcy z0yfSf@&}J-NuhW`KuQTg8$=-y5>S^@Le2O@5j!GG3PK@*W~o;Hq`4hr96tEYdk=5# z46F6cVqCKi>=Uyv)!JGNT<>mE!UTd0)1JEAcLbB2t&!!6 zug}K9(`mQhGM^7Q<%Aw(*^K0re=_nc8R0L2C&6Yl(eFi!@OZKAt>Lv zxBuNow=yEhh{8e%kV+{!mxKV=w&D>mGc%8Z05(lnDVvBWq3G;aW{Gl9G>JzR5g<$o zEQ)uY5U?wk2#8Veh6upKRxtyDjMnoRy>)AFLS@6moe&a|P7qOa8^mv15^@p{D5b_D zh+0S|wH{gB0-L}iB*LywIZ;ZOvR+E1l#r0RWEZW3g@H?f!n_{GvXZgz$UKhBf`vgp zu#v@)T~9`@rP58*x|bRSdOv%x+Cv2q*lv9J@v+Bex*A0CE1osu0JuO$zg3ZB7BTRa zP&`}E5MHEsKPMgBK!~UvDI>Zm1q_=b02oUt%!-6M1|C71xlI6wlVV*+_8WlpLzY9p zXa#pptD;FZ0u+@O^n3?xv^Rp6Br7-q0)BnVE3!42Gi&DHwvRz%yE18^ucmVX*3Zzh zDTq+lGh%0@%b?9)0RgW^)9+Yp?SX{hDJtj~)dr!smPqJ_2vJZG=?ad0BW(2lcwSR; zOI6Sa2AVHfrrH8v;`_83$%>1C0;{Z`zdL^bU^6-BX{$%e_7Lts#A#mk(S9Sl-K6-e`D-W%zV?m$ly864VBq0sl4t*p68tzHBG?<~+* zKBzIPBQF#jLeIlNufmw4ghm+LVwoAW6M4^TEZ?>-S`m$y?XmBp)ufqByMPIckakaS zYC1|GE|CzMQ#C_B67V~iU^tR0sl_Eu=12v7y~Y>SC~&J}#PRH=Ng(b2tisUQ>}Afr z*y!osf+1krM|yEH?!7b2hUx{y?mYK>!f+&N3B}u#Xtu^n2Fs z+f643f-u((R&F+3I>5h+;MKXNUl8{;gM!rpw)hFM)6oqJ#~3~Pu?J}3LfbXl*X+IQ zM|Bd@pg@>_}b;L~XmGT_;`G@u25cLN4%SJMFYYGJ5>Fnpx}8CRu=D9C+WD_T+4 zp}t5Qq4vG|ag05&k*ccFVHqI)#8E=%j(tAdjD3!w(#butQ9<1AnJ~wrLcx9S;AX&f z;%JZqnvE?D3dEkwqB$7>n$vpcwh@i$Ce6j0nmBPa;Ap&XD>RP7HgQ+N_8*=QBb z3e;PFb4{<@N^v3R;&X@_H z0I1D$qxMbwE&|p4z1`JnKCFj;X^Uo4Y^k6J1_1R01}hg`RtVBKjt7Sa_usl#$|z9I zPA{&n7KlKJWB?I)=i3h+J>Kso`4^uaKmF>sOI=Q=^IF`g3Sq)TIwE)4PcKi;k>Kv_ z+ZpKi^em+e!t3?An@*-XTjOfIUJan<+kNV0le=#}THef0zJ8sx)W`xyr63uz?TA4m zV?jZ6(kMCw&YLo6$dCG0y?j8);bpXsD%urYWaVT

      Tw&QU*9(!wc7mOkfp#*}6#mpwyAhpVUr0OM;$yiR1 zbs@DHVgjHL3A040R0Y|6!QT6{nV(*lH@p33_fG!$-SVz&wH7iH&TKsztYn@C*(UOK zr-_7^p%yxlZ&X+|tkb+Hv@b-H3+J6d11#p*>}n)LS(K`Zbnbky-5iDfyI=1A@>2iC z$J@XC!R9e^?z(TP(3$CPK00~V@K3(nRTQ#vnWfNVE~^#uqJHm^tTL&UHbB5K>my;P zk_cVVTGy^r>@uW)s2Bt4mmD;|o5#%+`WIl|LB9eh3M?grZs-?^<`U@snT+6 zDq5I&_V$$s8pCd+$F}5@5h(;jLlEmDC>)1&X(Ii)40IQEi zL=a_&TK=qb?b4hJ^hj07+jlTjm{CfprIb?UscdT9Or=g`Q_5yDofNn4872}@AuSAs zGE?F5!M&67lZh>Hm6@3r_BOg^9tnP+=6C z7o#v$LSv`QY(4^XH~8E|!Q8sV1C}=jRc|F>-iiDkE20%u`Z4F7DY7ONTnJn|iV%zd z9{Kt}ueMZ{M(S6eBSe#^#+i&L5{W82n>Rz%Rqk1QY$fYhe?WcZGjNVb-Ac_8ktbl9 zX)wf?*`pBz`g0}XEf0sS5rc89Y86`Zx4qfsq@LcWQ23u2I19gl%=sm%-k8qvsTZKEkF)yfSOyhf}sRkR`Vrn zr>izM^0*YM*TAp4`bm}Fl8Lx6Uh6NHgl!Rx#I{m=#Wya#7CRpSYea))DBT^yMNr9c z)|jr0?~+HBk$X7e%K`mv$6%Uc_i@@2Kt8W}CFEFb5HZ zx~hmHAY>G$jG#u-3qV!j6ER=f%2S?3>w#*o0)5M7>!kI8t`XC zsP;Y$RZ2vP2!1J0Tlz1DQyF@uM7W%5By+|8!A|4S2@dF;bGI>Ll|FR~$;Thk3{e=E z5bJzetRjUiv`;yF@NqeRltmI#jAL;Sb|nm_YJ|Y{Hi7fZgX+bYka(R~2_3O}LmG2m zPuu;Yu3j33968MpI3VAWStRSlv_IQE28~5y`!j>iL6%tZ8DmW#7 zkR1!;60JQ&5Mj444#i(r8=jJ+83_|Oh{g0xx?0v)uVFF=W$NOaT&gb!IbWX)eBdiHo*&RKeVV%wLNPA!1IWq%@WM*)x4Eccc#X8!L%7`aQx0Xd zxit30HF`KKjc`2FH$`W~*^Q&5e9Cz9?JPJTDc}_=2e%de7D|Je`V}LI22wU160+>0D>iYfd)H^NGLa$Xfns- z?1`%O<#@Qde*66O&DFJv_IC8@?Qw$vP!(xS5cjiZy?FTT&!%~^ zzrLtin^qAR$X0ZM8& z&cI+1vFdUPs6e2{DPcI#1lX9QXU)lqT-IS*0ox5R{nF9g&kl6zB8&@b2kx ze|Y=unpD60!ToPPxpP?L%eT9K^YdrK-1;KgNJYApo-SxwYZbxS`T5z|iKx!CF!XdT z4=(1Z_~DO-4c-8B^X~evJNDC)Nks0RZnSko@#=6JKom#t8t*1Tq|W%8CQD=plcTTE zLPWzVTPwG)Px*N(cgPl#IB%j@9Y$GVl@d5Id#!m^n(wd%RzlsI->zY#r9j593mjEi zHh?wA(=aY7VlBGF=Ve?iDM=WWw2V`&CsQpzD zpv8K9I)o!8+Mdiemy1&g8evD8A7D|``J`Oe_Uu{x-uG3teDd+>_da>|Z=cr7o8{f* za&=cO=DX*cPd>W;;xE256;WdDqFmS-pE3kw{aHyxMV3QrO^B3AL7XfRfk9oB2~FkZ z`sRagJ=|=j{b8ZP3cP-I{p@}F^uc_7w!OJJq)%muybNoh0El=24C5k+AWL6bYs*5= zTA1vuBCdO|HnN~xJyj3y32hZ0nk3&0F7yj8gPvij8>(o#w{UWNemYIj%j_Ag&w z|N9@@`_}t6U-#vDsw%xy8zDoKtlXD+=>sM!Y3E+uNCT_b$I-Eu$nNW_!B9%|0jO9L ziQuP1ODzOy!}AF<1A=b#sl9KtuC<3(QPxhAz4akFhaBNmY99s%qa?Kf^?lR!p47m?7g7>jQT*;el;$ zIy^X61v5(FT4*YDDl|<~EnG{r$Va3f_x*6}O>}8Z#B41YdsvtXmoBoMD-&98Q{}>Z zI4obkx_o%&3|EI&uP*mj%d{ySLZVFE<1l3)P*shKlwNU(g6cJf$LV|DP*o6Fc`;3- zYmX7n{LSz;P7SD-gS9@Pts7s;y=&{TG%01^UC+xbR4YgJt;@K=pbx32khUg=rHLLx zIiS!2Dn!--k_u1EwbnY9)6I0Yoz6GY$)-$Gou+BuM1lJkC$Pc=_I8aDFHJH=!OdjO+`e7JONF^n<%VFs!4?@0ox&(62vGuX1|!nq-4aLXHqIu z8P@LFZf`2B`(XQ}Rc0_T15`?>#?5Jk5p$>vyDRSIgdmD8AgePgP*4-?1VaT3^q_hi z&#CQcP|ShC6XmWXOuGW4#^bZ&LuL5wyeJ80x|E#=lt&mILG|cR>_G-1NMFY#Mjerh zO%l)p(W=HJz|}KM1x%T}Y_U6YBOfDh2Kn859>KXr5|kNBue?ZrmoN}7atPRFt2L5# zO^e2$>a!Ogyq_r>UbQmFps3Ra1Dp{QNBMSDt5i2aRKMI{EAGeg$tk+uh&^y%>z%E= zdcK829Pv-G9l7ipP6{J=$3l(~8Rws(t3?EI@Vd#urn#mCJ+AokEqO508_7w?XRaEK z*n25rKc5ET)G8A1S6wR|!-Wx`@n?AaWxJ8(H6xt$)Ig7-Ol-sjQe#tyg4xj_&k^#F zZ@sTz*2Nl$QmU$y{X^Ug%Aj|GmQJzp$FS%9*@MY`nX=m{bq3D)uaGpKkTVj7c47g7s6}qEX8Uok<*r`J%p=P1K#6tD!;FL#(7?F4 zf*xaKM2=Wwqwwp;_k4ERVR;IM{Wu1G6D@VRC2^!Oe;n2tH7gvF6|rn#EZ4KNrxN2?*gDIOYQ z3TqkrGZu6Opb)}>v@2dG+=B{ApNEyzjn9YjCQrATuWx7egb(LMx28NSDFCg3#9cgV zoocPS$Mj14KZqabn=jV1}iN+Gk2&)XD&T z{pIszx3{Zf#4Ms5=60A+MemJ>;Ad1;mZ*z%f*$vWY1-U>@*(OZ$9)J#8Z!VQ&d-7f zh56OjuXg*x#hp7M(w4ksd39^F6t%guM=lJ{45chxUQ zP7p~R7_cI7npe?L57L>y%(WD2=fNmoD~e`UY>-sD0b%Jv+s$9Tz4{&PpIy{nTpjj( zgEGM?E0Lut*nb0*u*cA5Me-grCA@J56Rq$()+J9uB2qO@8eGa$Yc1Txk~N9r!V91z zs-nyS?Y*JQe6g7Y^zx|RKcyPQE}763h53B0@0P|O7Lc%z7IqeseQ@db0!->~T8K0n zRh8Ha0`g2pMT=bo*0}v`U`>p7cOMe*tKDxJSc3@jR5nvBm1`|bT-h3+YFqklzZ{pg zv=&!8$ri8_F6_?C)=_&`m0AjuqBT*Lig{D--Z>-C^RHen%W^u;Dvbg3?%6iX&GA?q zj*qn<0Hz(5tmeUX_z3&6SOYJps;~=kMskrS8%OT;Ln6Bw8rCt~lZc86WzAJb?A;lw zxIdd=p|3g-AcYH?D~HFw4i6nXN$+}ST@I~ZLba1>Ar!`BnTbXI?r(qR!+Rg0o9|LV z+z9c=(s!QX415@XkPvSTL%D$YUuUh{t7hU{fMPL$QT7ZxDgZPZq7cYpCCgC-NIV6N z87$}=N@aTPPM?A}ur|y90fh;ILR6RvlYp7H5S2o;tF&Iktl}N1yq~j1!U;~?3mMkL(R`tb+BM{8gBueoNVBw2CV(g*K2-7&$-nMnb z%CI&ajO08hDVPXQ?RANDAkhQw3;UQ`N{BPnT;0lSEz==daqb* z`C=kWkvEeHx_WH>FqUOCfEDo*KaWY;e?o+^xx}z!7&5n7nf#{DKZc*m7at1~Gqf*M z#k?to2Ci&xE=ZV(FyMe@8kj52?JY2eJW}4=o(#G#LYfibd;IHE;cc-T3r3CXzu~)RRTFJ=ht$p-YB^RS{pCbp4TvGc)2wRpxT#a_^V&n8EnPFc* zji-!}gtc7_X|)d&N|O^F?+GPIih1>f;f09eZfb~jK7O@*A+Grt)xoN!Ri_N%?MyFM z-FHv$jr~ag9pkkaZ8(KNdychU%_crVdHZc`GBIX>AuzcD!-53Yj2O*$R4Qh?b457j z)~BahO)aOeeqg9PQI+TlZtdGPCl!p=nu%d=O`C$CqFjQ%P}0IY73pm`9MBt7?Y!Rv z&kz7dy=|zgT>1u$-BLu^lWC%MER~B=>)ng7kq0UeG!>`hVS!vXeIzDr+Iugc-F|=X z$;T)6A2z!!VzYPjmT!%_+Z1b<>qGNGqg@F=*RwWLu)U;`Gd1(FP773wXqRX$_S_sA+&(~ ze7D=rWm!(0Mi!D@70-DbMsXPe=thBb)4Ru$FQE0j$P$z!&7xGfk=;AI3jCQ%>t@g@ z-OpYLibBi&{BStz>r_;rrFijjRjJkOW^sPWx_$k{b*=jQ?_P6RKDpZc=`TL1ig(BU zzy0kG%h9wpFFqLOjYjsaQ!(pj`^(GAb2CnpDzLBe?0l->Rxny}SH;!E?)}~JaI{*) zA|_c~aG*e6LqD<%m+rz6y=W-gvaT4wFeMpKDM-f~w+xuH-YRxIj!Q!_%s>(AWEQnX z(r}A8vD&S(8;vw$Gi%+J-mP=#z4g|X-daDk*1B1<*4wEs%i>|Er*P0hD@?&6o`xgN z7wo5Lznc!b`7lrOG)+^5N{#G>K&b*botB%Ack^6#^JK=Qbu(`P3Lx)muVyFgO?UjQ z4m{%qutn9XIKP8IRS)OW{rwTm#!0`6pQLLuNZ+05%?)3@k}tjlwEW>O&%S{_Db>G<`fSKco6$%)gZ@zeTc=6)mx4-%J_}CG7d}QjZ z+qBbhd3boZes=x(r?(J+NL%{%Kfbd+d-;p6U;fQs|4vHb(pA)8Ae}_OYVy@9w~UJL zBF<|7h}@+*)y^K_WK>{FjDrY=#Dz5Nr?=R2yjE06usaVJN3H@$+%gR0kl`=2=#Qws z`|$B!zPSF&k8j?#cARQAF9Ij7Yb4<11Bf7sKz2jXjF^Ir_Tq(ZCl#Jer->3`j^f=I zRBNeDO7_T4U{Mtjb~+hjX6PzvTD5gsTHj6O?ZSK0PX+fbZIDOe)yW=~-aKVMOIJeU zTuwb9daa=zo_&zKtM`w>UhdvCf5dc_!Pbt6#atvUJEAeASDPxOxVNcQ=c4=Fyql^P zd3-z_Pm6Vs?9IGojvJ8T-32m`G&7p1dX`}n;X{>4%K3iB){3YU-A(1NpM-q-?#52- zY_0{ppV~}b7VK&{HG80aY;2_v$>fe02y1lXT0ycq7BCO%J=qELK8tZez|nq-KnIJA zd=I2zQNmZi%Qks-wK1}SJee+v*KPV-XT8BVb|Z3;A!SD(k7|QLoH}E820)sYa5v3x{ z88TMTtU2lh5hG9)FMr|F^ax8;l+Y-<;EbFPSRu+a5>!D^DNu9D+qKb4>G`e^U3{-$ zz+&iRH*c;aB4U(|uu$E|;^$l84ucy^`;I|nB0^$Gtmt*tBG+uhC~KS!OB<*wTQq_R zFQS>jo@4C1A`=az!d=tt+z4IZboLW(w5G*JU<}F8I4_o$S)#gJ{HJItd43&nhhVt( zP+S;lky_QvPD^L<_<4qznO~01EE0(VGZ27S8k8Y@n-FY+>BA*p;K}i^G;TqYtpndA zXUJ3ikJN)eBmVrP~RJJm~C}j4&^dp^rpFMv~fyb|e-n z@R6h0$kTSo3Y|<_8U-0QVQ7kRE=xL;j9uwUnpR^IZKvIpkuYg%VM_;*uEO~q8B>W* z|=DP$>6v^dl&bpU{55zLrla4Se7##INxsl{;fI!-d#v2bHa z!%RS;wv&I#m)1+~#x4#XAYd0pVmdOfYtSg6ZXVLFr<{oDqnqP{n5vWKxlQ?s;NVwt zm%Tm-Y@1>r9~9r^<~RQFRqw$hHPcA>x*^cH1Bu&!^7R}ND)t;39s4Y(qpg?OvWGApi+ui zXK&Wqr(b_HUtaVcZ5@57!#71N>lB3@=EIvGe|-1T>#0^Pa=brT?=X|N`_N$v+p*n! zn0IF{zWUX?n;&lPOQd{?j4CKH{>!Lr4W93(Qgk^jX7ILjX6#WsWmFTR5!P92IU4Vd zt=3`|cX7N32*R)L2l@tS?|5mmQ!zLBt+HNKi=L$<e<;ZKD$~B|M(Ras;7@K#O+*K-E&~RBI_yook)uI+Zd_Wt!@4o_5nTPj#NkJk@!s zwUiR2)}#NPYhAZ~Jf3z_HBY-B>XXxWr_2%GixwE@Mh!%<+8{F&uc{J#Bm2B7XJ_;6 z%|qP)B3bd28fd#+t-IyBALq}%07R~@ra${{%KzhkvG?y!??3d17ro6F=kqVV`t; z9l!eW>aef0E>I5$!!$n4C^=7e5 zzErNb(t9@oX2}yG>7+n(TBJ@B1g%*(ctAy@Xb~yi&Jv7j;t*rP9cjIhv(+>D^S6T*dsg= z82sWWNa;ZL98+VFA}YbW#9W-4iSSEBrdp?}kr^&ZLaU013W{K=73AabbpLp27I$p{ z)Ka7lNbl`OlDlM8m8v?;wN_P?zO*{ksg_A}S(b~lS*J2-IXygn{P0nU-8@-u5KNG> zg1y)d-4qv;vx>XkA8AdC1wvf!n-HK`VnGjiBfel>e@|xo8{alXVit^=Sc3~oOHF3*bO^N2sX7RI_c+)@dd6T12}CSe z98Of?24o}`X;CfCc6y4Pr)@%1#mx5$BHqq5=mG&oyzK)6I?yP97-S&{ZDi{8AUU>t?7!rP zJljCl2r9JN^)_Re6rnY!a_Jk?OumsxW2M3M_3=nU73|RhVmv1dI(1VWIv^ATWORz( z*qb3l@dAx$imK5MF?`Zud3QK8P1k{@az+Gc!QeqDqe*x269Kf>iADeepM$tS$U3la zvdL{o?n5#N8OLox7|DTQ^Y`KEGMtO2CGH;p0YoHjGxwXug;oSwq^LMHpu02oaUm}8 zvDW{~D?K3ciUN}jBL(r^wN z<$Dm8B&iVQ$xkXle$hZgDQ*lNVl}f7358)?s}iLI#s4zi8ha5&j7nWG?iz5qQxM4= zUJ>s4O8=|5UBzbPf|Np$^()EzraWgd+eSnO(pwifzfK6mM(Tklj7AoRag}smHyKzw zmuUoZ65BL@*?@TQj1;OZ;`Bi836(##f*bYmRU9Hd1|&I%&D@ahrg!nmgw$d1Fgj7M z+rBRUI_|M%$UonVhhl#i}5J$URtx_T9R8 zry zI_{kgQx_lD=3zbg=eo`t=QAcc#A3@?u6sR9UyMQEHxpB22VF%O^IHvLL?axhOkt$m z&TRA^c_t)b(^8C_(_Ce7j9#&7*NDWJTZwgvR>h1XH^~W(PsO1SqWL6-$J3)t6S6+Geq(}U&4eBAdum>WpK=MS5{!Nrm@@5_)@jr#q*?D_ zGKJpalN2MT-CTEj>&=cW88`swS+T$i>bvY_r2~kc`Na_}K?=3C{_N9>^Q*JhKbkEp zCC(ee4LiF?i%By$Eg_?{97sS#PfMHTvuB@wE|d1hBP0u!iG)7-sZ=PPmRer@@YCJx z!{y}#h<;qyd+e+Cr?u8k52uIQXP?Y8fStE?- zq#@ZGh;=`9bZ(J=J}!M}b~aCDYi3bUO(|&>m6*cJ0%*NEFGP$>uXa41PRCQ3rUlIn ztZ%;ur5db)LQpEt&ky^v{a^q6w~r5}8T{pE*UvAfyVLSl|McU{&7Ep#ZGjnRps5H* zEy6DQ!+d>x*?U)27;EMA*=`a64bfRu08B-$FZXv3r-x&&RgTSSDJc`qc_(ruq12+z zc`!maHPAd(?*a5Y*{~ap)-6s!GY!UzHG68C^On|oZ^qtwv$ibl)Y`JN)_QAwX?;xzpbL(a@mA|O`B}=AB2)wV3o83%a#Yh`-L!gn< zH*om~k6d*`Aa3cJDDwYPYsK?4)WLV6EX`^+oBDbgIfJBn%1k$O z6N4Dh1-n{bUKZKy+)H+owk-2hv;g9%odSU>rK7mmt2l#JB0r8=wREb|yRs_dIy*$g z?R=2;0|xu~5-2Jv)@Y=ubVNnG$KEQX89^>fdtBP_WN3@DHo?x-=7Oon*=J|ZDmzU@ zI;5yLzv%ch?gRx=klc=lZ$0sofSDaz@5WZjVJ;=t&Nq!2^`-!AaP~+{11<0u!AP+i z@mWUV0*KHuLn9@ET(R65kY%`)zshhlAf670BUyTJ#1#;ckbKS5c?de~@n~b%wh<;I ze-@|b&Q(ivK%$_Vr%Oj8h=GweusNqoW~k>H7U6&!emAc1>NSRdZZa|kBNcQ7Gh&TA z*--d+P5}CGp&;Yj?Aa2r<-_|%Ss!fezY6gc{ zOn^ilV{O+hLa*!r?_MQUH^b93JxRNmr9#I~WR!p$;o_65x^W~hXrEk%F?+$2xCiT3 zeP8`OjLQL85F{a#4C$4KCAsb(N1jCDtF&tw5~t}^RWY*>xd&aH{6mrs$m>S2r(xt` z-rVp4Sn0qJ?`;!yKZ^G-Yom7}2@7KwE~D|!q?khFa&bgrOwMbJ1<1gE3~$gmu}Pa{ zUk#Ipz$?p)v5ExDUiECmzTRRd#9lTMy|F+@pcvncd-Hh$8EYtUeqgzK>za=QPvnj2 z5x}gk*sc)9I5Ga6dzgDaL=o~|Q7Wre!U&8~JZTcJ5^b85C>nvr&#LkO@9{_$iO z;~UBQ4C@o6L1NtnPxkbQw4}bI8jdNt#%^A`a!=bO99AylirCiS%i;qMW;^wXnT_CaUN|MK8>^d^foKxC7U)DjVc(1Fq4g#)f`LA5L*j=t` zI({*XNNT{k1xbge5gJM&z^IG4_AJG!43Z#owe`LW8HsJ3I5yiojGV57Y~X|q7sz!3 zQmk?=+{&(umGOg$oTjUG)C-W!G7M3HJAK4gH*1vCUVI6HvHxTF2Em(K52ik@@}KV- z-YspyQ0&;KRL~(ptBc*TbL${Dc6H+zhbrZEt>47>E-RQh*v7J-%T$i1BSfWCFPa5g zjd!{mlzG-#Y&m*E00ILke? zQ}eva7ipyR)&QK2kC!jLID7G;BRrwyy?`+uiU<|3I?rusufF@qy3O;h_14>BX2sp7 zXFs)OkN4Kv^RIt-{``~Ww7}~_8{>S!^PN*#Be4gjAjs>G^bp0& zNL6XX{c#C!Pg9N%On^+{7g$49?1zB8b6I*%xfM`E&8(f4qB0k66DLZFMx7QFXc2e? zE(L+-SLY4<;nf?lewgJ?fBE@t!Ve$XU;opq-nvXo598q2sXu`F?E1P)lQSIvF89;< zZpu@M=$s(H<=M2~)&Kn4568w@qwq{RT&8oU(56ylDi5vq1=d@G^-eSP-dpd@dh5L{ zz57pEUzWD?wk&Pwy)|R+%{+&#HM73-#oDqo|FD_0rS;yHrS;Z(?=DJts7Z&$;*Bwd zqFTh$-BgQ~Ql!+#Ig;WH1+%Myb0b1feZ^zNHeK6X8I6RAD0)|t#SbG@m7Uf)i;4x$ z=p;elw^FoQm`x*Slp;?IZQ2`2c%PhF#4|>Ai$(!M`^>x@Xgq?nx-0wrbbE6@X;~jF zS^PxM0Xv+R+qr%BL%n`ZpnUo1{Kwy%{_=O_@xI@DT<$M%IlsJ~Up~9~_SJ2fX7QA~ z%^{Vf-Bb}muU=e=^4;4Hr4(;AjHgCKAtJU`Syo*fA+~IFJE50 zeRVTUB?r4AWFU_QKzIgkz{fGn|r1{uZr1<}61t-WaRT$YgtmX~Yd z5yMG%CNn{lN&7-0Z}$8D^zr^zFP{DDtHXCUci*1M398N5nPuCl9-*2iFNlyuy=EUo zRD@M^n#(jzszt;=D^hmz)Xb(*i+ZKO5y5TT`Z(YT$7oWNW(F%VsZa&I+3C0x$Wr83 z^7^`!dxqrLxdyqx(jKH2@-udjdovj5XhAHVx>e1G5BQKYK+vU!IUP-sr5 zXKtGBlz`r^)-QKUl$-}RNNp*8j*!KV2sP`i+o{>{w49b!)D1n%z{aI5273K8c4!F& zb^Gj2%CiTNwFn*AAT-55ER8CVqA)93%xu4_hq)eGzqx(v4bwCccx+u%REkvGn>{wp zb*I9(Z`}KS(!JmkyaYRYGdZyziKFQe+NDHh5V^L}qllnqqX7p5W4P&X1R})+JK=|a zI{k*bco)0S2V!%Blrln6aUiT44a$%)fl7Sd9cntK4Xh2|k)gI5cY=OTN5sq<9guEL z%;72W>EJkCNLVw@_EaE(0~qgZdw!+ z`}BMgtyPPVqUhafEk*Ud$|8Cwo*jpZK22J>Xz5y2eGe4YVG5~f0bHCz$3z4jIGHVm z#rW9lXk5rnHe>1StjfMv0Z+7xNqJUzCZC_xomPOQNKu{YnGjy4!LSacMp@lmowPF(93)&-bKmZUWr| z0V!UH*>6^8m5t#>#(9I}+K7y0$4IUoYL*YuK?bZK41{HN?b!5f44m*OzZI4zZN&Qg zpAFjOYCQ~%vy0p~AcA~gq`t%sZQnjn(dNmkc;t7O#}Jz}LGlfomCsXvbxnT8T*YXd z>4=~ zxJW~dd}j=gK9(?YC{uFA-UVIYD=hziWHBCLn$dKyi zGajqHT6<;sROW59)v&EAy;U-famqM}WjGhvd^UdN15Z60_2k@L424|%VVKb*qBdg1 zkvM0o`5hl!dFkL2*M)bT0iTG_AjjfYxu#DRH+{;+8Ly7sAM>;A%DqqBAV#AU$zvW4 z05F7wPW4?1Ypo8$1)@%ZeE z&*$?Cj|KhUZv@CCObSHRn(gQL=KalwpI%ojrRs8eY|D`}O7WaEfmu79?my_XfAQt7 zro-9s?mE6ghP~oZ3`sWPJ(1 zadsF;zzmtb6=w^rSzio(FVMW_DroG@ymk)ByyYB`6ou^cP|)kvU7nxae!P4C{sXMN zyx#rEH=i6A{Py+TZ@+sDptlBE)~%;`8<37VmFs8MfwLe*cy&HcHSSiq`iV#pyFTB& z{&@WM?Y*hWqkVFD2G4R#OhpRWck@(shkyL`$M4^LI4#zWr^Q-pjg8$}>#en=MVgzn zwzSsTa$0(8OLM}`dNUfkvA0I{?k)Q$s*&DS#Pe;cRu$1IRc297?mL<>Wb1uag}~UCuBDVhYi8ONVns?C zeDUH=Zd4imbd58j_X9T;4Z#XIr_@O)8RrK)5Hs4KDgW!u1{H*?~Kdpc9_q@4T-o5XizkEEN9rpFhPp^LeGW`MajuS+RhGqm_uZSvfBEU>FR%W(FPQg! zU)%GDqPeaI0DyT#wLlBPDEftYvc5u;)-(SrD$sM03%(^Z!Ae3VhA&^%JsgOE}0`0gsz1B-_i=Gs) z^0CRyqj^lf-`7{Sr~m%H+bC^t#_NCS}KIJ-T^68 zVetm3ajOm@qNCk~r)LC!8x{Nrzw&Rr8+x}+S~G8{qR>(_q7;?h$kyH6#34!d+5i-x zs#g)CKsq}|Bu$h_g{m&2uGfSVoonr_x6a*E4u|>v{`m3sQAM<9Gm~7l5tFKD%hV7B zbgoCrP3yCAr`)N`MGiF3PG+~=9>~X5nrc*71VJ$nR02Y8p6Fo*%Ya&IkTNhK@bkPR z9xw|_55O zdhtC8?<7vC(`(mTmj6h0DuWYd3x|;EB!(GWVS;xbtVLaQ5?Mk%VKgE;4H8JyePtl^ z0m3bb91sGjUbcl1Udn*49xnzQjlrsVnGw3y*jVArq`=4q$cZpYL1lb1LbaGzz|?g1 z;VC5t4{z0-#m~Z^I~LTukRr$!J7oo-Y)lT4gR&c8Z9XRzSr8>?%#3~~U|`OTcoUm+ z-i*>2&A0uxMmN8RwQ(GtJ~+U|_VqCUrqt!{f+2R&sT&iS4JK<)z!_6#x89Lnmg_d! z6Q^v&dW>)>AIK4V4z?`+>N!;e!SW>iYKT~Fk-%NH=2T>)X{20=*g8TNRL|0l1de#r zxVr5abi~-meo|sA0P^j4qZ$C5T_z}K8bW2Iq~?PSc*u48R|b$2*Gd`kvN(T zY88{*(hZ*)|4j6{9s7uGhER%(wOZw$W6Y~W4#SdmFsn2VL6eaaGbD$rT5V0l`u;&& zaQ$~I=io|`j9pbEN8?3Dwzo{TmSGG{wn99J!jPEc$GQGC-r(jb=M+tEhJK6WJ%16b z4}2n{q-<(Wd2@_Z4H1c+OGx^1O?8V_pCL!F6ssnu+sT0=Y92tWMMr9 z;LytS7-1|E*QB%9Y$69m!?Bhd3!JA=9J;zH#Q4-0Qz{3yDw8a#Z1rX z_mx_y;jn4LD`P#r3WazARMvI%zijMfPAH+;=B2CsTA_Qq0o67Tq1HlA8BnDc0(YzP z)K;RDI?rZ2-aT-M%I<-^n98*x2ty{4D&U-JZ{4w-8Rx4rBOmV`*dbsy%ac*hFk=Sl zLER=%ju|7RiR=%LSjgizZBCvy?g!o?&jk>&!W;#Cw5zh z46rx$)AD$GxO#c<>6fmP`83(??*=3lh)lKY=ZWNE)(o9y6bj7z_9YC`N7Ge8p${i( zorhUH*PX%Vx_kB7-=548@ACj@vECAJh?5#%w=N>3l+AtvG?k+2{YxWV+hF_M?)+^3 z?T@b>9v=nx)t4{7e7S!(^}qZ6-TT{zT4!q~(9{$7IN||0yS&~X4rZKcVYjngz1;8O zAcSG6%y@pNrIvsE%}tr=>9ov(Qq>kKj%*=*0Yrg|tIPlSfBnn<;eY=Bo~)BZYbIs} zbb4L4ZVkrnHMe3R!x_^r^-)|p#Vope z!S8B_Y6$@6C>>FvT11?8P#GkHk0zjKfDgaoXicH+UyL-@1)$Sb2*x+YVTfnU7|h{ zQ4}N;D5c!q-1Wr{huzYeQA!!UHtZQeqdh)6UO#_XYB5463VHSV!`nys?9=Nym4V69 zl8fK-DiZ~hHUQ8;8{*30p)9GHCN!3_>g$P6oNEaQi z_Y~CvY2%KN3e+eSALspF-9LVPzWn)%!|#5&zb$*4Cg~tiiq`4{*kW{&>AGGRP6bn~ z(^LVp)^$YLK34+hUUm&mb_^^Ra1b!lQaD0Fvr^Ts4)w)Mq-X^^Lsb_L-R7xO6@bl% zj*F`E`TWz}i+G=cI-{1)@e6+fiFMsC%bVm zzr;Zwa5ntQ5XFUBmr+BV%ZT4XHKz%SY(t#c_;g(yT>=tP}D{MxG-MoU5QOZJT8wnSB?j0OPo(ifiH z;rK;J_kBGxnu529Ux!T-L5;rD(ldHA^4QqfR8>@4Yb3kj`?vSM`{~^$7xmBo@XPZ_ zyIJ=O`w)vVg^nKrd;qXOqSiY#Lu3dQN}*;9Q?y*}WIxHQMx|DHxRT4C8}qCc_{N2=U4klM3?L7eA2^I&{eAznFaKkt$15;rk!&RqepO4HWv8oUJe|Q;j0kFzK)0y?B>AWf%-a6MW!W+(3FIh=ACynP;&B?p zG>!3=E#jwN>&8H@W{1s2TCMiCWkS4aSEvS!xAr9|#oA}OOclF=qTrVe0}FOy~l z8NYM8P(H$p;W7BKl{Q$zGUWVMDH%h^35?isGd6+eWQwnWWbhrZi{t+2%0`JemmO9s z!|!#_BT(m1maS^wzhY_zYn^%$Yl0yXST3mHZrCbuSMjj^RD zBs-EGId?Yb;pF>}fOC)z@n6}lu;eQ0uwW7N#%8UH786=|7C5T(P|#;O;+y!ii+H?w z#OYc5am0}v$1hKbs#sQ8O=*q_;~XIZ)y-E{r5a)urh7|yjD1>@VTsl9r;?0?8gKT0 z$zWB6RBva|1&g{<|Ckb)5 zkX(1lE;elY#xtcvVWSQ?c#gEMVYU2gnRmYN>Z_+i795vtj&MAb7=~_ zjN@czeQ6kzr}JCoaNUTZe3DLh2ucn^*2P;n|I9L5|;|maN!~_^IP#*@k!+|bvM;h>q}$z zMpuA!daX1wnnfovGpa}<9!{q`(WY-l*oXDzT`Yv8U2ff$rF+R@COr+HwMM|%4QBg7 z@5$wLVpP?uI+^gWpG%e3Z$B)H?F;{#Uwn3``0-==FTeS*Emo_MJt_*teuRm7@$#i} zMj}wb#bMglLelGHdtRXk&d+x5ZrklcJ3Gupc(I$rx*|&)5fHK7pFcbN?%N;!um89I z`_1hDmq2L0$7v@nlrkx#7Ofi9+*FE`2^#4&0x%OqL!O5^S)LJ-(jz|cBuX*T#7f>1 z1)_?-K-S{WBBD@e6rE9Vdd01nGjDW)4^;nNM#aN|cyCZ9nD7-eQbUmAva)sSN>WKL zA!jO9gk7zfM!pO~cs74v`ENG^VbD1ep~uBIfkd{d$7QxTwK9&9-eEmz)x-Jj@#8TQ zW;m=Q2?bk6oA;&6%MY)oFTNlk7Z>#p|G@so|AY@W?d^N};*;L_@_P63`r@~*@5;14 zweBWK1w!YA#Wh+K)^T_DxI4_9-8y}=12~C5A>HusaD4gMG*9*6@k9~Ta{qAr;q~#e zPY(OTZh7dD_G>n#t)iWlJBn@;RqH*lv;(rl7<`)jF??|{4q)=J!=fYeuJyi{sMe_p>6yCAW7B={M8Br+{?5|P z7K+)`RIKRRyVL*kFJ6Ckx%(I2od3bg{g*G#zk754?W>zNH_OAakc{#u=Df5dVJ=?9 ztvIfXj?>86q2c5c6og@^0xc>O!cM2=yB4=&Db7t~d^I3(c*N*03Qt3c>l-xdDtT$f zR~V)p#`8nnA9nBGKioZ>syfMT$jH+K^xl^m7rxw#yWNP63(-NOEZ|AYBl*$#j@+AF zR(-KU?{u;0}XBF%;}0b?yi(nHCN z9uZoo-ZR?R$lhq(%X3E2!vHd(p6qGR#c=ZMHptTD?$nI-_}Fglmrq}wUF_$d-rbcV zwbsA-?Z^M{cR&2AZ!Z7j7oVS>q0@S_CW1wNfBa{SMq+26>i?&`v52S!Q0ro<>JE>LK)WCPicFxJIBB7o5M=q3~K2no`hjm_Y}_m^vk=7Kb0 zSD%zS7QzCG}~+Hrn6^0k{O}I z5WQN14W_}DB^ZAvT_XK3q9b@6#*C>Vkd!E`vYx<)k0=lm*xGm$BdFXKWM_CYjDLE_ zGvWb{B~(6Ab2{CVqU|i>j;E^&Cte0Dw07UY6Mjy z=PM13&$kHIk_o@xwL{c_lNkcBgEo7#yZsbJ9I8sU| znhfA(qh!eHSlg|+7|%@#Kw^ax;^cI~apkV9oMn=ln@w0hvNACP)(+lz?fn{?l;RNr zzM3b7__>$JP~JzYd8Uyonh-cQXNX>G@W#|V5uBAX%Gqs}n&aeWXhM3+p|)Y;QoPnJ zmh^~7KePEva)DcIN(7Izj03r+1ZL6Fq*jK}Oc%JJ1vX-qc4z!*Bk=Lcjqb0|Z7c2T z%8d0HdNhPPd{>BQu0yWtW=zb#js20d7D!{^NDf=?FEW@-m@5laEQRz^s+8Kz;)KVnw}nHnV<-lZGR;y-dwjHI zNl{&$TDLAL^pf7b_HJWsbRQARqOug7_J`h^C)Tk$KV?H)5(RK1&4C2{VvN@?vZAsa zk6-@!^TXAJpqCOgjEok21b}S)DP*6g+8*!UefPc4=DGIXtv8|9VoNv=v*SG|*Pnd3 zKR;`&iC?uz^<$h4gvl+n6ortxX{x0(>kTwRhnPiv0oMvR@L85gAA5gXdac!HtIP?q z)D+_Sq@}_T6ge%unTZsykR<>`d+*lG>sm`@@L*Kp9vA_B=M>jh=dHDy+gq4j9_By% z`qM_dx;g&l_pfWMy>}o)Lzwh7?d<&G>gt*zMMS{4>cxKcd~nN(LIieG+3o5-y}Hq= zpk18JJ5@1*s=>m#8;auU{O~{ifBs*$x3|wec}DcfsWMe!9Xaz4Briux4+b<(8PP6cxt4E1;M53b5aYPxPkwAJPSt@$C@Xei7f%D=TKQ+JFm){UKOEj9+X+E?MH*@bO1-m_d{Y(B&{~jMc@bx=; zIJP$J=K95F*Z=g>M}epA_!=e2MM`m-M^)LM9p?S+csxlSqbFJkg-|WWQzLLV9PS?; z9px?Eeth-z55M^A*|Ur9@7_&iH(0rZR*>3<`|scW z)oJ%o=OR+!K~#3_RC@ZJnMo=0T<2OtWs1{Y$-n(B;5YO!MfZR;IB_$Yj zx&R?XrIuo5OY2%{QLuLvm2M_oMO*7}BTI##7N-Im8k?DrhgwkTySw)P{)@Ng`|_*L z&wlmE;otnx=kM=Nzy0a`x3BJQ?z>2xr=q2}AV9NaC+IoaswjY8h_g;J7D?ag>DyK3 zQWP{}>utrQfJ7HfmZFicmMWVE$OFH`UsQralA8TA+{+q_)T+;(9Ta%|?)LGqDb%t6 zY7m7g-K^H?XDKcW!~H&q3I&}u>`GUC6h6`(P3})DWT&ah-bgbgO5xX+yU(uoS5@or z@zh#@(94#wv|dgkRCNOoNj>gp)0B~{O>tNHSo9`=OvIP1dTXwrCiR3W1YaReu6(Mn`I!8NFeGpJPYu09cwyPwmHZ8D0n z-ok{c65iv*tdrf)#dD#pbw58rTsQQ)e&S~mVkT0AU{UE1qclnt9)@W zA!>~NESOKt*jT4Po*O8Mu^9OThZb?|6n?e2dpfY!2vY&p+oiG!)v8lSOvq@a6F+Axt^u@_squabPvPg z5Z7Y_k{XTKa=t$1@!w$H!hrb%W8fCv6WK>-NN0>SXS@l1)=wb2R78Eitu~2dV7AVF zee4*=Fz~vGke__RjsJRz<~A`PS#0L|4aC%93x@E941n-E*C~PHWm|4!`_C0OrGAYO zrK|)Xdwj$_)kfMsgh+s|Ab=a4}nFmK|pO3Ar;Nh+BnRG3og7b|oHjVT##)X2|IeoH2 zYi6kAD0BC>9&_Ezv68Eq@xi5sU4J_qQT}|q;i)90h9pMI8LxKSpB78J`N^1qjPK`i zZl@UPAnSBirOe_*VUD)rM`m+BeUQuKkY-;yNsq(LgvXYLG4liD#4W=Sa=ekbAKT>{ zkCgv9i*^+-8B3DeziLwsEc}^d;Ktv*z0?<})e_j)#ZI-a8FkeMwlc`C-aB0!?d6@tDrE=>@SgQJ!KF>2b7 zH1D^aAcv#~A!41TD7C28+xH)ASpWtA#Zcd zDX}l~xSPpI?dJL2_uqef^}3c?=IQuw*L&Re3AkWHU;6RB&WDQ^pQ+Y%JSx3_N!keu zPnQTv1T2ENRsgND8^|o@?}c?Ot}%Lwq7a>YY;49k3qOT6xJX!NPv_>!7tzg5t(!rV z5IS7~pe?=kUQ2bE@qT-8{2+jb`o>bVcavJq&(A;JJ>1>hOYfguUw;1S#qFv8(~s}p zyuGQlwzdRj%XS*i}cj?lG~2)rRuLUB|}q7(66YntizC1Me; z6zn;Yj>T6s%6@anqQSRMjUpab1ls;9T6qoWt8jvjCBCa0+$ z&gYxQW68)YOiw1ybpdvJ+`i*aKjO=;1duO3tIy8chY$6`&GGg7`r>>#=;tpkXVrz~ zsYv1iAV5?sbc?BG)_Ska+S0YCMrq_Uji3Okayl)`@pRbl7+t9-ov&VhQ2G4Rm)GC^ z_La=Lm5W%@NFbSop@QC90yqCf)Vh?BNL$>ET79KpWx!Bq30EK`}Nq0;p2x zcX*o--K?7!Ak$PuQ6UnUVMV00&L8Xfe|-D#|MKf^{`Jk>Pqz=Rr>VIV8fa3ApfggG zKvkJ0o#)BZKi%}Z`2qnm5q&(JN-1?Jv~Ffl9g&ZZxOXoGU{X{}j8;_?>@*O?C76VE zHm@_Hgft^+snibk)h`=hU~{`s#z`_-5I zH{ZSe?$!PMX=#g0Q_-pd_3~AsrF)Cs-1jXBDPg5xnt@;n|Prv8GS^zFRxL_i?C0yVy%c1d)Na9jwpT4>L<;(eZw@r4tW!{T5-A$9|#jF?m`gmO4JX%9s8SRE< zwwRsFj@>9QL-Q`@ZgdCYB0zmOF1N=%Pt&9*MWi|%NAxanwj>mm8fEOCZ!0? z6j4n|TKE1wj&&k+zo&1rAmfU7UZun(w;-|!1np;#4xGr=GP}Skz?;bYfu)$VI^1^(Ss%I%kV&$;i<++-eKuAwg zcbn~n7XyPOrerjEclr0WsR8fSFm}XD#u0E0cd|w`#QK{Iv-5B!)Rum#HT*$jonz%( zGDZowh>_{+giwONH9Yd)L~LtmU-RB3EZV>ObO+_jWHJE?qP2~V_-d`|muYLGEHh+K zCCM-_6H{Ut*360ZGdVBGd5H|lDMF!4gW0g0YrHZdifxEC9yyRe>B;Z8Tx`@n#b40 zi;Ia@qZl${n?QZ=B0;2BR?}#DHDjfjyRu=5jDEJZL$x?VL+PFeD4sEA^h6` z4da>>h{pKcTy3{Na*HL-L4pI#QnC4&*gbhNvzWCnKZ8H_8^5(Vq0nhCpDb}&+l_G@&SmJuD$=gExoNA-SShTO=a99H*;(h5 z-tMVE+O7q#84-q&7{iGF9r`6{KL@ph;a&$fgh6wS!DOYl^#kcQWejhd(3sX>{mp86 zfFx-hNUZ|twDuT=FP(0G3;e7*nOffeQvNHlpv`ud#YVqlf7mpkvs=w7elv z>!yz#2yY##9daJ`t00?g8ZX;u@UYG)^FhGKy4AzxrEg6Wzy79}FB5<>V#l$An|pDR}`kXx&DUBVTBx7?i#D`B101SUXwoTFA8(+p0p{SMiPkr^3^5N94h?5gf+F*9$}&}rQnHquiO3GV_y zlA`Fw$ z{bBz0+qcK#QefYFdj0IOe!M&V?QehTZ7K7F&LO^DC4y$V-TuYP7pgFWid2>Jecexr zOxh%2hTVjV^ZD<8_}Iwew`bgAYZ&PuwuJlrd~J%y@ zlM2Pj9#tKEza1sJ42YmG&V>Xj(T&toNW}l-UT$>$i2(?EFHy=r(T4yue-6UgP~v8D zq^>#Dv!1dI=|$ABT9(Bdz;?54R$$G##?{-jf<_~I??wa421ukGL6|Jrs*S@E73W`i zFY4t7lg;y_(^5pdSPh{C`-|!0do_b(5>Q$!0@e&|+LcmI-~Kp%`4x$BcDDcZ*LVNn z@1}>l+n?U_Klq&c-OKCU)%pDTF0w)MN>R41u_&>RT3WX<;p+L>$D4bn(>Hr9X-WIz z!`=Qci$`1{gnYPtxL@Scm)D*;=IA99l4D^+wFI0j+FBRU%+`ByN+Jn+REKN9SY4N~ zEQyppOrpPSLx_Zke7HOP z=BM|&{ccw=6)n?LM6Se_$jH+_#`mo^L-BAE7^|sluwNsZLZyv2J|MueSrpc}8xztn9 z`;IPU6{isc4qxJ|Igri=3EBa$M-8R1^)9MvY3K&L9^Y}pVu1CoDh1+BHKJO$nTdOE z3D*+qi{w)hLk~ka{$!vK@O}hWV~}u-$NCWfSr!g!R$T@rF{W_G8HJ{EPUy^d_=u%E zLdg6(3B=gV3yh#U2LmY*J}CW5VrPd8MLbW{rNCLL@Lf4~5AikK@`@>BGtzgqOmfEfGV~2F11tpg(FT zQ26#Wl8JrD=M5Ye(u7>#^)HEA5FTL=f9uvs;y;ZRJ&c^V6&m}6?QDUWFG!vXA;UV( zAvnU|O!!g?13lgjgn%p+LJIon{CVaY!om)4cGre$+#HvTTzqJzjr9Dw8(d}y)}Sl7y7RgiJl z|IrY(Y~A)x>Os&U8{y95)hBK#&2y@dk6*Rld#tuNt#;m_wU? z_GzRM&1tVI>%SXv9Sgm#&DhtV&xVFz{Yp+f&Cb~QC+jD!|B}Xt*zk~>HH|^%4}5u* zd2eg1MQYZ1HEi>>r)#u=@Re2@2`K{#4Lc`;HiTDrmw_dcJVm;Iv}UVy5gE-NWP`u9 z!(0Ed@qJ^$2wmQ~p)t^5NaItWp!zZyZLSkVJRAU}wkyw%> zqIh^iB68e9>V4BpRJuV#wU*ubt|48LSxq7KMq5HWFNHdF;p2^^4EWuAcYa z!+3e_SODBXqB%Yw$hpqDsdn%4010{yqe2*Z6xVZPAssj_JsOEIGItPXBc3gWE?K4{ znsQ2O9Aul(2&$m<-cO5&LO}CYt(Mm{qp7Ehl#wWMb$O;m-@bX@Pp4gxUw`#U6}-7$ z{_eN0RBP7eQh^wITwoKsy1Y6+KeNbyLls=^cO^Ye-V3zDZeEP9ZcZXXny!YJ8Ntcu1j2;4>pi_CxS?r$%Tg{%#Y9)YQR9k1r#iE^WJNS!>ROVx}o0 z6-mE}#Q7uyPKjoKExsdu^c$%Xv9_t2l+g)gJlc&H0CuwyDF?<5K%FDP(wdf1nkjmR zW^FsM?u}8{Mr}E+Et7@=$k)5+5s{546`HZplv-R8+~N}kXx=h%g`IYFKFrJQsYJ!A zO|CpZvX?s7eSiI4j*l#}91i7=ekK3@Z{+r#Z{Hu^-yN>z{jPrY{Nl&=KTY$bom#*S z@17t;De4{8G95wUyjQ_K7A@?GcWb@By?ge_%i^ps1eCkm$2YhAlb07|nmGJr*xC3p zqrBU=Tr>WN0#1%&q&nu2s6S!D&B7%80yVDXC6rqi-EXg$a zoueW~y}f-rJDcaJTIa*#a%#q* zgFEh;C&WTT9l}V`)FK!AdVPHk;Pso2_m4}_B4E#gS*~lY>~4U~EF*EatmU1rp_i1r z2o*#B|y?ZzkG8Yx$ zq%x`QO7U(*>Q;DMFk<)0uja?1ol9r$G(i*jc;d~{y5XVY$D2peUR<2@j(3fJ{oR{i zJiGkr<^J9lL%~!QIcc3lrA}qafKW150&Ccn)SToIasZyN<}P9JLk8vK-!&sj2u@NlCdA&F%PaC-zGT`(F&2}N!?s*h9etwACA@m@tP_NL{6Ip zLubx;`_vT7z2GMPSpDe;t;ZT+16kMjC=44?1~8ttaxRH;Ms8tHX1O<8ZYZp_`^k}S zI3gu~^=75g@A)^vB`PF}O~#(ZX2>Qs8xs~8GZ>j`{_}Xl_)3s%>NZvbUv0n3Au)&u zCF9x^t7H&3{<~eHP4F69y^e1PZ9GI*V7@*w29FWh zB}Q21%q?fN`EmfnAxJ6hxm_8cr*X>llK2VN?;&5cZnvzTPqROyEEj030>eRIGqh9; z8M6)xn31xK>5S0@91kJNhpfZeq&jjGZS3wKO z9)HPINy*Q-gyrX0|5Wo;%#kuUHgYupNd=}Z<)mYsSF;kc#L6vg-W!4xTjmdv?MF6y z>%UyLc%arX=I{pVstpStPehWHly%6%mB-lPY%K+9weK6P$~4n-&_guFFxG!=tmqKZ zG&RI#o{`TeTz|SbARAUJj@8FkWRRs?*Djxn^f8Qdza4;eA^ z6LDFU9-DoNF%v`RpI8r!u?_69dC=-OhB;UrAwa26F;EnBp3(t$7tx+oTl{;zY*Keq znTnwIwg|jdrr}Oi}v+H&`(M(GbvU{lO6@uW$N&X}O zJx{_p{ajBG6Lhl|Uwkng&a8LQI3dV+0AAe0om}tpJe^Lbw?F(;%RC>>T3b9pK;shz z8oIT|JE&ZL{^joMaB59+{dC+|AIwoy##I%YYb~X8vqp*hI7G=jGwEIunILI|7F|qQ z=WbS-ZNx^9oGt+CDViiydS^$rj}&NBDn>t^02CEEiDTmSgmDdofVjIVIT~zrZcdQ=cXk)>0eN&11~S7 zlX?vTW~_Dfh^3Un`R;go)U2sBFoi?YF2Mdw-@oE_Kgh3s36%1Sucxc?<@Q1E?v~f@ z@y&~=md`)A_{-n?AcCS|KoOXTI)UOGr#aojn|HSjHq~l~)>≧|`eWYp69l7 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�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%0DSXl%GFM1d zJ~=NuRMdaoTG03Vx z*?X_p&zTdT)xv2r{v1_h-4b+vIpPs_qB>URA9fFg;4|;+yv)P5tU492)pT~Z(oKn1 zA$u*O*+|*U>2$p!V7Jumt}X_*fyC3nM60e++N@GyPJ}6ON?dE**ScGZD)KZlF=@3$ zkOjQfFiWI}Ry)?Hw2bb2;VA`TNC1iVL}T}KEfX*t7N`1I=OS8;Sh;{1;oTb^< z4pw_x?q)p01BmM-CTn{DY6oF&Cl)zoef@lO|JKQ)%gZl6yxe2vIWLP?vI;X*)kGv! zG{6KN9FOkGM4+StltdN|g*P__3E|{10Zf!LGkd{l^{JmNR&1~Xh=@{3;cA$Fy4X9a zVPXXDl4qe2M|j;FN^Q=NqicaTd9O1Y|H+gR&xtdW0pZM%EobK#aEq}4vo~3=6RKK8 zG+9cZ672k-8uyAKx-8Wu$yg-diM4zR1q!e?N^+F{%9ImF^J}Y-_RGF$ZAo= zI%B4|D6o*vSgU&54{huOQLtJmD<@)3M*bK!VX{TXneQCsmyYO&ZN3T~@8!*B<;kv+ zV#>*yt14`slSAPxVv#Bu5FsLh?mVQCPe(1E5D3wu*22_zCN>)~+(1-y-PRaB{&aV` zO&gI$I#YoLclWqZ#4;5X=53ClLBuFy-l+S;N{03}u^avnk%!<^Ug!5#UJ+QUcjQ9yyjWPJe5Kr+7)MC`6pE!S3BeY@siQ z0{)2&P$1?Jp?Z#4*x2#N>>D!t0}@6@A;GF0W2MfV5t;?=KnyG27jFVKe9QUTzZ*i^ zIJhq=K%0&?9K^{^=rEk#SEwa~5CtPpmrJ)XjU`AslsWwO;1D}H5gL_(Y3(^79Q~ys zBTi}!L28DWdyveH<`@OUPfX1#o02J4Ao{dWBheVnYiEOz$kbug&e+r_+9+uJFVeK` z=rL%&u<-{=ztW2x9=!JuYEX4bN)U%S3gF69o5$x55f$nS1rP=J1l69ZOl~pV-%+Ub z>m`j;(x?`1s;yx)BhNKAV?>HgjU8CjL2BBd5?_}s+jIUy19a%Bb>o8fs}5~G)HYH) zy0Hz7G--#5Ov%gTQmqs)U-J(@qB)EcJppsc26HZEW2geOtng$=d0_B zPk!{(f9tRQ;3w}M|KI<+Z~UkK=wD*LOo^)0WKB)r@dvqTXF#e}n+`z))rxSgBffGw zU5kQqnx~Y~?&?yO9VffvHFI1P~;>@3*^JirocUe0X+# z`^JsiA`10ngjQ8!dpFf~c5(uwuYTpr&n}*w9G`VnK;Xn$NJLhr$G2X7<;jC5N7MA< zKla1OxOje*=M5GSG@WOiv3*_R!Q^BiNOl0y2>;sT4ze6nPAkjTsbc-BPd9Ug6v8h3aWwv zRK;$uMN|`4!czQ)6%e2R+o}u_l~u+%)A}e?s({$KpYJ750Nd;4dX>s4AMCY8F> zS{5kgJ+o^Z;E&Ezz9&HZi!lANthY! z%1mLMaH3h0cWq)mx_O-E{P?{mRK@1ndJFN|?4>uCN{NXwIE)-8!_`!ka)P2l&rarF z_`a7vdW5&G>OcJb2Tz~wCWcfttL(k@?;;W zQlVw3$`Dn~Nfl|%RqB3M_Pf2PmQvl%NK+K+g(s-tcM}p8#cLnFz1Nb7 zKmC#0PoC}`Kfc;sRndx~snfyLNZG)B|S(h+M<-xoY^vqW2h*x3!)9dB(lWSOgY*G+6zh*RZTt*0??Kh z4D~#D+V4uOmAnOEyR!DhazI)K>Th7PK>}fcAAzcK4TihWCL`t&b$8W$Sw+s)V-6;Q zmg$)+nH9Wf)vDHyvWgI>RG%Ydk!Uyvo+na8DX!3@Dn%8%r~qDh+CU<|Cb3QX`2hr^ zI2*WqcP(LQa;jAnB(*ljuc>!RoRasTB~qy9$&_9>&G(NulZs*yeYDeep6#COM2RO( zN~V{pXWn|5t#-C?_tZ`z7+OIZCEhKutGmB&wse@KN4{a&{G?nY6hWE>J_P4FYSz9^ zXvrfy*vSa(6vRx{`POg%lLli(yW?zrysea@bE1V4Egc~E2yw{G&sGXaiEasAonc$H zmX+3d#B1_h_KZb2XHJPzCJ|jqU5Y}L&GLw29^@slVVnXF$T7gt?oJhy+sFe2laHDK zg0gl{@GxTlGfV=!17LvTEnJLY?*3qqnL?u=v=qyz^oFYafZHjzpxR|0p5h$Vs_iR& zJ%(;A4jPqZ1g6xMIjW5?oFV2=1?o4MHI#nVY93cWNRQ2CdfhtbYAdp#cMT^k%2C=e(>UI%Q?g8-;$d^K#Zpf zxekU2jcBWGkW;*)0eQn$hCe}qaFVURiQ(YkA=nFe@D3XXG=>ku+U2r+kUK!8p6Tf# z(_ZdgLtAJ6)49VBU_{IZ{um;;ad%xqI7>Qvc5$Fl3=as?|4Kwr5Z^!MmxTyEh>q~X zX(80kxY8g-$svX=x?DM*+`4^ygRv@hyM1Df9xXj zzxyBk#vgq4OY_78)oP-oQY(#)loX$_rPg4jp>k2jq3Zsi0?cVzU0&{{b)FM;mshSi zBq~G0NQj8hPDHHGPZdxV5uWli&-?3bmEy(yaPmpT+4;>Ix9>t2Dqd}dc8bx5MD_S+ zGtK$UZ+`RfgU2VwCrExXuLMR)X*#-jzB)R3{NUl+-+24p-FrX%Ge5aHIePy5D)EXG zQF*NzU4As~LQ5&jvVd{--pzY2-(IcEG+PTGXTOw)+@rFb9X}cC@f_sszD`P@L`ASH zvIlCZX-=z5P-qo~X2zUoW}2BY!;m|`yDPbbR`r}lf!9eA6~%VZebGf}5iE)V6oDkF zgrX1!o^>XyC(J8S$k*Q6|Mnj~{QMj5Jb3332~tY)L@J`C)ZI>{Sn7<5dJ+MYlsbb7r3e?*eRjH&EDg=;LRs~C9(rOn|7RtDrX@Pu76Q=|w2$)H< zO0gc^wLq3d_NDM@zIpHEkACdqpZ?T`KJ)P#AG@_W&zz)|?NY9G=SOLMwEiEy{K4;i z?V(+(cdY$DxrKv7iGV8g;HF|wL$3P`{7RJO3?YHi#AUlR+{5L_xIk4|*^2$_Utmfk z;r*-U(GyQxiRX!b;ydpD$jhsXMSkte&wuC34^CETDV2yOqSNE`+0i`DX<6#CZ7I8I z`XFUagv2Pdrkt1EQfsxupGr_dDV11D(OLy6%&8V(B4u-ak#n*^GGbFmS^*b9MM)i= zQ`l$%2B@gy&HSC;_v+1)Ohv!>*3KTq>I}V{@I=t*OtQgyWpSmMW%rp-QSunCG;a@@mSp z*5}W6`y!e+3eDVTG5G{oXE2RYsc8k8LerxmUOEwB!wtg9=toEhUsw$2;cc;sJx46J>=N-5TnWJG@ z5fXDVgI}Yh-tVeM3YbGl97Ru1PTT^ma3j=`lamkSG*^W=u>w@}Y>n5>=3A>YF+{Pi z@?=-vzE~dbNTE}<0WTufw@%%?Hm6@ftR#R+1w!03%rONzsIA1*RDip!9A0cFh7jO( zpFhSK?YC%Wq~z+xt2!-bL&L8%F>-Gp+OPX_yve7hZFqpkLyPuc232JbJhW*oe~8JK z)zQXj#$TjXOPS<>(G)Q%rv>c_Fo-iEFOtmJsbY5%E$Ob8g$@f~*If~$g#vMxv>_=3 zvY8z?;QmJ2KY`lulNL>Ce?8EnS$6yyDz&!u_b$9WAotZr=-6W*7XgXBPN_L6wzn4S zz>TXOXnXC#uVHTvLnSo5MIS{CnM=%{JA;5jt>ayU=>unAjSfi>d@gtO4|+Gv3AT4bA&-7s}H$h1?0 z7hN=(Q_>7NhE&HeG`-@gvD5HACyN48!fN6~sSP!$_juDP812*$sf(X=vBoeq{dxE7^oM#*TfH< zMZ3e|e|te=1HE|p02lY$n`q7O0-D;m$UUm23q6L>L7R2JytATj3Y|`&g*xAdtvLMC z9&+H7HI5Af8sPpwj3A|xCC=S{=AO!-qUc(2&?*Y0pZa_MU?~a}aw_S;`4XuLbAm#& zl3N~aFCNycjc*S2qMdh%sY|SVj!2Yfn$PasT_3G4pFF$1e4ZwR(RwvWHAAQH25^8+c{khV|JDBYSVwRhNNW+ER+8rRYLyw! zo;=aIOGIKLCc>{Veo!CtASz;91UtYN}{5hqqAGL?x!?WDQ5qe zhyB|)OD*g5Jg+t%y!+0>_utyl$pDoNGdegW(4yXP;zbZdPy0pUM5X10#u~}$&Dr@!KKc4*zU$+ke*Nyp?`-a#OHJ2xt+W^DZD%;iowA^TsjN^H36VR3gVQe zb=E4o>jl?SFFaX(?Q@S$ zH!Dkep-d!L&nYooZFk>#_tEpqy}7U+VMf;*1*z1ONU9agpc32MjKq|uEY&Bas%jO< zIh*%ci*h2bh;{`aMBX;uxY?=;nOT{T($V?xe9Sja=aXsv<1c)x?CO+w;>?MxOJb>2 zL{%y!GEEuPU}|_A$ln-4rh+D|8ejY5Xc`-(Zp`(-sZq1)CfUI4H4(=Qg# z%BLbFKinq3b!3(?ww4x)@hSf1Y6N3TYdle{^_Dh4iy3<#h$N-ilKHrK<4esGb|> z@xGu*D-czOP3D_0d*Ilf+vQw?n_c-wY)(WBvIIFpjynS?qVVwq4qZ8%1cm_jLyyN@$+GJz5^paM9IXwovk=B{nj zC8lAreKCY4oe}7@S0SP?dtq=_-~*#}cb}JfSV@gJ<2e>gTA)rn{EIjCpiPIpy1)|I zW_>uj|1Q|lo+Ja6x*i!7?+|}?4ea)(GnK7?0S%}twi5)>0T`n=B-7*+OKA84Km-wo zM&e+H&6z~FkRqn%f+7>Guiu*;MMz|k>`;+AJT)|Re?mKf9zBa|KT~m-Gv`F4r~)TU zsLZCiX&43?N6^-T(2(PM4Ve_U!?)U^+Ln1KY$u4g_ahe)U7;oGmAk(L*2h?ZoLe%Ef*>eOiYg zt83TDM?*6r2e(QMReV9gLq}#fM0khq22vQV2(=UFWC-o+-;J$lTif_d1?Z>#-mff+ zw3~YvqBPu-_*aZ1(z@zuQ*9K=OPVkP5Mk?2LF|cZu?GsVP%|VT0p->D{O-M!^VRdG z%k{R(VslroFE79M`@i#l{R`j!(eu^+YEJg<4Vx|F35suin-?RTlLF1%!ZkO)m_n)0&U)%`+jUG~wp z?-lPNRoAPNo44;xt97kDF_v7X#AUKVwM=tfuQpE~J$m%${XDPc^=3Lb6`j^cN7E)> zJiU1O=*jN-+0~;5*N>mxymR+Q{&C<%d_jcFZKL%zImKxhK-05 zAyOph#K=rJQD&MFO$1A(Yf@SYs=6o&k%iM$u?Pxb5tND|T7e=cH40r9VaAkn+NAZ& zQtNw88_?*`KG|I^tRgccUR8ax zy{alfsVbzX7Km6scQybhgjk>;_O|OhrJR|wKx>uluI~5yX`b(X=#@`>*Qfr>XI}q~ z*G}%7%twjxQdDXwf+8vqspm&4p7^t0{or%oeCjueYPR16uPcv$-vf#FD}V2mXdO?R znpA*DfV^HY^KQRO)&vZe+({~uQu5uyszAM&6kFtE(#@1pX73`Nh;?7~_fA(o|EF%< zPV{Ie|DQLWJ-d>1rlpj9sa3QTkt+NBA}VDm&^9?#iAY7KoY0b|2nLE*;QZ$K>S%TG z{Bn1_Bb$z*fLgVvGADr6n~74odcGw>Vo0&7c8mH{0k&{B5do!CPARWvAj16%~K98a3Mat4l^&Zdp7;n z&=)8n`0dlAYN@ZuIIEg9R4{bToKsFrRpffN>}shX1#?RF2C-4mAXJ?QC+q2Cm63S6 zFW1|ph%hsV(n0l^8)7r98tz56f37Orb7;!Snm_>nSR70rf)Db&*zCy8QwWRgfAO6= z3Ou-m)|}oDvfgsY)1RS0Qiqmc9atHJnwNSqr;p!1y?^)k?Z;Pt@aDxHX_`_k)sX;b zt<~(J_S!wS*X@oJu}+s<_5^iDFFfJLm?{L_a!EkU%tTsyU*(rF+Jl-|Y|)<-|E9yN$6iHs!9y0x-7LyrPlPCjMWF7ZmW&ZJp8AgG^8zqqiLZ?-k}!WXoGvG z)tOWOIiS|6HKGnD5qus4S;m}Y)M*>YFr`GqqFQUIqBZ<0_uu;cAlgrzw2g;JNpXnS zcAG#Eqc{s8{BK)fyDKFnN(wc|$G9vJDZC6{)sPrB9UAV&*(%-JNuyfk-Wj(qo-y&)jM3!K8;-4UtCU&x1b$gwp)6_8}&c zRx|)Zu4`l9h$>?Kq9t814bL9`^e~J5q+e5rbBkb7Y)Y)FVv9NuXA{d0xZH+)yKoV! zRMc9F4P+CL52oLc!)NbP8@}~_!Q4Oc212eAq2j~qEhhWI!f!9rq zr`L4Gn9MaA?t^1)S2w23L^UyGW>GDz#nlj2V+`lQ5=Zns7`RyVV96syi&N@DM-Gm7 zIE1#NVGG7+ZDlUi9Xg051u4cL) zomZOyKpdj~z{#xP6%0>qFn? zmMOTdRS4}C?}g(VPD4j|@f|lEZ!ZXY(+nS8z=8)Tb7Z7}ZHL70rWywgOhm)u!+Zp7 zx_pf?<%H@|qYC=zzxSUkMTmUrsDH(ePhvCfO^8o1X$SYh`TJ+#rB$A7KvHVmdiFyM2ceUp#nNc3Y7}nMic6`j>z1NB@l<`tWtazyA+@>v#W$HzvDMw6qlo zM9h6R%S5nhjOvbcFE9ll3MEctS67i#r*(IE_4M)4&AUJTv%m0(@BGx0hmRA_)txi&dGeXP7^6awHlh~{7GzePhdDaH!(O-iXu}>H}Eqf6aWNfct}3(Dl-4Kb_g}sD zsZYKBy`OsZlOI02cXNF{aayGA_q9|MYeYf}N|4jj`Ff|n`{nn)^4>EdA|wf_M3xf| ziY;`f?Zf8%+1xoN@(@N5Jp zBc+^KneN5wA)nX4;Qo`nVN-14Dy;iAAkfm};WnUQHQeD;R zXcQ_!$T^Fu^$kR#8|UY{-L`D^iMW;uzZU|L)hcq%4nUS#N|kDJa|#T%CV~=@Phbx7 zK;*e>?8>oSV7PV)U%9#5ncd>1%(c`951y8?-y}XiU7u}MGwJ^7`44~3NABFc^Q*u2 z=9|y1=V=O{flLc=B616*9g%CU{J<+waRmhU*xbj=w92f2bs^VwQKn!*&a}#Tm2-tY z-|a8Amb?*qgo$7i2|ywf>G3*GQ_3kXRjzl-ekrDsIhows{R;HZlXo_Du636-d?y_T z=ta=tzB>Vkt{7qi~jak9z5OYYRaObA~~}Z5ujFq15eE=H!JGq+74Azi8(WIba8T*R#c%<#e+Qx zuZ4&?k*MQzDTzoGuOk^95Ctd(@|sg5;%;Jd$f%(*@PBhSpb~xvN9@53Eg+=CIkDGw zdsQUIZ4UrtVoF>@Sk=1UTXHcIOD*cpq%0(k=Wks-$Fqe_%P}MV)q5R;Nq>G1(4`1yiDw5om zT3G*z%|y43ru)a~D3d65MV}RYa8;h~rB*9pC-t$&o+fWnU`sS&n{M&5ZpyGZQSQyO zn1?JmTUFg3vAZfZ`ZixTM3|xWaFb{IWn4mAH(icoiT+(x0=P{+2?1!N^UqLMo9@AM z2@5nNd|w7cwL&~dV%OMC4D)ND%*nWdB9F3)NU7Ca+_+6l#ED$riqCHyR?>ArTLXwF zv{}R>et!W+Urj-X_B!3Bkp^$xp5tF1!cNA(PNpc>k43Cjw+Cp4e<*yvz^3DELF&c` zk(ttxN;zW6_w^NH@pT=|o7sC)z z9%vQBZAaCKrcQRZ-_-3}=(rJv2t$U}Y%A!179!h^d-h5TH)HX^EZyMtq%dut5z)*b zW(hbdSflgaff5B`irzq~W`^Tm4IO|>bfm9_!*9`bTr2l%I923?Ii;LPwYA(1DVOfh zAWWEP&e0hN&8gjppm9Xp%QV6rtf%`+jn1a^P35v>YFj&l&;qgYcAECJW=w)b2>`s! zV+V{7`=Wl_Eqx@O?Do2COifd&vmgbVc_S9P-LZk*q5JSB{2}V^3P~AQH~toevWJkW zh#QJvKSiTOmGEbR*8M}x@Wq7^8i9fmxq-%_JR&8)@BXc_GA4%kf(u(vGCy0E)E**6)Ckl_bvp( zmq6_fAlBrx?gxo3K;zy23rMY7SqEBzZlg*z>Nt0+b~*=HT&mE7VE8k>&5T&5&*1L5 zR5son1;1}U2u)$DG0=5*W>}!+dv>mjry37-NBV$QYzc$U+&3_guA9OZbC{L->A&|Y zOObFOv>|`+=Av#2Mb+Biid0`rTv7p^k%AEQZdBEsCwo7G2g~41J2dDhp!xj#hKl}W^__1*QH)i5&kA!n?{3l55@ zDygVDKzh_9d42NgCqA}5JAU}B z2N%ztE!(TBi;L@L&$R58{q^P3r<%ry4<9dCSSu>E6jiiIJIh2F} zJ^e0~b%*XG3 z?B(OTXY1q4RIuy~u@k8a6p5^6TxZ7d(fr=?{b#@U-a8MsJo{_~Av+vZFG1o6*up0d zljHi0gp?@SdzoyAC^J#wWhs<+bG%u~vRv+%k~f(MJJ=M4MJ8cJNl2NJ`)-CpGBI;r z=kI#`{O3M$niPNhc>gQE@m3PHJPDYi>gJEd{x0nn7ZBmroZOCAs=-@AB#QZH1*YA0 z$0_HOt5i)o`H?iGntgcA|S#)O#H#US+_oKPLppn%BYv0M{`G1PWlA1cy(Z1yM(OkhfO zx}x&%(euYouhNuOiSFJyy>mQ0fB4{szxzWUdG+3}e)e16czU&(CRODW?pi44CSs#$ zXuzDy&?wmlc2RSpDY4DGsj9UK+SOCkWMt-fO4F3VREq5OWm#%5CsfE}b~8_#b)F_J zOVv`=^OQ3SVZX2YQc4l2Uc5@wl6e|W4^9+$vQJzV!4sRJL_)(B5t-a_Gg1_GI}BWy zNPJv?gGKe{eN+vza^t~UuJ8$@RzWn5!r`y$P z)>^C7c}l8SijCK96(xQqB4U#!JVmubklOUS<*W@ZwB@9@tE14Im_el$1!YPKUBr5~ zBfL=bI58ZIaHU5%Hay+KB(P zU&j>yfgQp1rl8Gh4mD_;V?7h9w8q1(KE|42?qB2qSV1D<1dn2EB9_{eF@jaJYWoIp zqLfp}yJ$uAkE_3_slrePWVtww?CZcJ=E|WhCYZdh-#2aIoRY~`yC(~-^#_SZjM}0r zJBFS^XF?Hi9yMcbnaCO!yV^Mtu?q}K8_d^1Ow)bQI4eF(RR}KcmTg#DY^6g0EwcI( z{!myKkF`2<aKgw%tRv9n@(7VW*5l7NXFHwNoaefHcW?` zM26fo5YDB~YdHE4%olkfmdT2F;yE*bB0lmkj$0y2o6&$G(C^w*2ZPs}q@AARQzV61~+A2r91#&1$L_~}s39REd&4cCvTI~FQa6i#hT>> zZ_{RKR;%TBxlVPDAi7kCcCpp_CkK6Iq;HsbkVacINw8nATW7yc(l8!CPdOX(kiV%} zZi<%z-BJ&00jO)aaS`2wzeqe^-5~Bb_(iuW9%G;Gy++?uOFthupK( z4hvHl)1XBxbUezwyoL%k3@X0W$ub_BpVd$QAAe<8I!+Y7)>x-sPxzg&VO-Y0qNUeb zZ)Vg126YK)UKKT-2!-7$*4-EY0E*D&{O0QT`0B}%{q-d!1t_I-z1x50Pk+b1`Lo~m zu{-Nu{p`EH{9pX~<+H0Pkq=0%>J~uNm5-xc)(EWM7%Fon7FDeRsUQ*+Vo1>{Sf3s# zrTyg<>Q1F9#K+!*lOv)EP17W$*8M)X#X?s>OHoBB*X%mH=EVb=6YK$ueUdD-_TMoo;`i`=!ulF-(D^IZQ1YYet-S!0-V0{&-}m- z{OFHSO1sPJ^}K>q13V0~5K;2M_8N|-tTyxct+PA#&gUsB!0fJPbeDG>Z6Rx9B)ZJD zDI=DY=;m0#P=>5C_aDFg=6mnG_5RZbkCv+|*)7)LB>@CZOvvnIzGP#2QWq};RABekT2)GwT5Bn_ z)GAVIg=)%qwVKaP&u`zj|MKmRf9T~;zkdJY_fPMiuTR#i6%*Bp{k|57-cLm2&=v`# zN}hOL<*&Yb@q1r;aB;0EF|jrcWD@1pS}o3ngAqDNU1LRrACNqAL5XbE+cc$RR~*5B zB}Ihh)<8!n+MIjRM@z{E5tv!PG_eWl>U8x(AG`6F?ylY``b)p_-rMhA9?w%Pi;;~~ z)O_?Gt^{VcxHN{g=kP2{ebR<&t*E=Fs%MR{dqS0|!9h{647KhTiuFuvXQ)hW@OvWV7NYe0(b zVKZy^WTKLY5@SwNo|u4AjQ~95iJ3E$n0AXizucB(nG&s6d6m<8HBX6ErPR7FWxrIZ zTH`{}n{me4qSZohdl-BJ$P!WWdb{`RK%=|6gJbU008Gvmh6=KKCQW^t-E({B(FH+N zqRW~sBfjEI4=pkyqLi3GQp)K}-}Cyd8)x%pzxMR4M^`ydm9$Ek)1;zHwX``vl-Neq znACD4i?#fG2MQ^!%6&WP?o*50OpG%#6IHFXYUZShMa7nfpk)M8uvUyjNyFW2L4~~| z#wvMlHt+uBQyiG#eM`mqd{~DBlZ%AZlIWBg++skysVq^gwOS^%p=yb!YE{w1i9lv= z%%5&?hp3jN)>6Tg0>82++qsHaDOD9E0Vhi-CjrJ2pS2 z*Y-C~uwvB#$F)arA01$9hAyHiL|mbU%H*8vPHML=wgum{D=S1shUL>m_sq5)b4;Tk z)F8kZlj5dURXNI95izyDhM*4j2qpN<0{i_AJ9N#xOs&_+;3U(XW4^skYlbS8iYt+) zTY0pVtD}p{>Z#Hq)zP$lj+h#5YVl?1)s|KQ>f3 zf?Ft*tT$em(N+v*vOof{D`0>c?9~GrS5+GD3T&clVvrj0E-HRmYiGrX;SCfFgsS1c zn(wJDNxIIk?({}vNKtIAZ3o&RjSv%$cgDo79^APuYJpP==v)=G&kSMw7@4(rS|b$& zVIB_Rz2-y_cr+#GpC9-uB$_C32DD16Up)vNTeKP86abB34sezL!SD2&mxNY_e;Du& z)+tC7f&Dn7vXhber(a-Q4^iDRPfTqsRJA!w0;<902Gr12JlM}uSH*W zOA3h-81UA(fqi4qx{-HzVo1Vuq;@U1T*9^Uree$y;JB0?R`Bsli~ zF7$`^W7{_l_!sV!58tJ4E3%^&?sv2kdhjm)<4GaWx+LPa4oMr`;$knnA99z<-_^FH z-TZk)Oy~WE^f`Y}KWkF>xTM1)8|WKvZ%zc-*NLFf*VT$!2hMDeL})b{A9<(?J3BQ! z0#Ak=NH=EBwLGLa4%hZH97;Ug5mD-IZ4^Xju)ahJUqOdcYx@O8S{<;74jEh_=yrMB zHSZ{&O|%d2{{9OSxJYE~UQNW@?J_&uX>R=6SaP7cv+ltc3DM=?g+T&ce+NHD^g)e) z;kz{D7L3}^wik}6-Rs5+*vIUJJ`TQXoY%J8bbfGeQxY)aN3r#$XEd}SLP>Td0cvci zVFk2BQt|Xy>fp>fZ9@-7!e*R~(og-}e^9Dgw_fn zDAap)kwqrWFlu9Jb3kLCE?TxqyA>7Y_1VolO;=AJ)y0xoIOV*n@|S-42mZ#7eRP`h zfAC-a{;&Uw-)C!HTchK+YRHdCgZe~qtt5aojaO0?sg=aiJiRN2wJ1iST6A-AT12j% zK29t^6fuca5>d*jlvC98PS2iPF8iI7rI!7EyQ|Ai%CftBUUvJ} zKKk+R`;i|#y>aXM;$q^NtZ}xhcQBC`*8nL|%FLiV@!5@|TX$|Aooq}4!$wjA&tr@ncY6ddvJke@3QKF08@{JF!-+FNQ{JJR9@n$|*=hMx6dNiLL z&Fgi_85Z#_RhO!zO05u4A8Q2=)Wd$piXEz(n35|#HEp5MJ8@zcwTi|g&>ZhyVsFN-V!siJm!+%89|)@ZYA zUVNfF(KP4HdOkiozIE&D{=M^8@85pu_UY~O)s5rT*=9PP=M`}>u&_uie#67|5P*mn zlvqhrs^ryFKwo(4$s2Dz+Acax6RiDHyJjH=uFPUnbGkM3QnL+BpSl`QFeBwOWo9mA zsY_u{ElL2AS)Q&qLenX8Qia9sXe!j~6EkHJ>vNp)`Y8Xz_r3J$O8?RCKlu8$F4j5K zDwd@dS~9e$glf>Hu-$q@@PT2Hfbuj=^Hi5gnH2C?N<~Ulf|4fA$0zI4^W*K+ZhN(L zzoRM$Qk98_H7Cw_V&bxtQWq^Eq9C;@KVn+VGobtJzQu5MK+>#fSTxhT8oHc7q!zm( zF{hNk&}tnYkvI{NwQGcW&5=|oHunUoP$ndzdE$vUPid7s%TY^xdR@Qv{-evCt~T>a zH%{(t^1WmJ{_nVVv86wL`(mdMk+LlNs{1Ncq*MrrR*8;ljvOQdal^uTqOXixGujWC z5>GjoV$%Z2N6on#=T21-(HOk5ndYN)o~CT!W)&?(JNQf8@jL;Bqxxq1KA=8d;5zWm;E%~O@4q6th) zRit<~bVCOnc5BmA-N}oi0Y#AP84wgR3Zd>jn52?T%`2rES)!DT+*4~lraI2i$}ueH za@aC_cjKO_3hO=wXw;DrIQhhrNW3P1II}0$`h*H1$3c4KtH*cCQkZ$3lHL3<*hamx zk_Q7mg_b-7f=bn;6!8*BB83fBH(Q*D5+Ucbp3>=N+Dx?0w8~7N_n+fezH8`Mqw~Ir@H?Su7$pu!8zke0S{$@TyrNj~XMrq(wdmok)oiv$YnJ zT9;D8J0y?OTti0XpZnctA~3q(90w>7jUdj{6#juI5piN^#@!%mB2JW3N(maB39Wl! zO93&FQdSZ@nbPe|y1U6oNzEc(SADeAhueC+SYb60Y({~nH(K8ln>6H&L(FanV6{%# z{Y0~7!8^u&L}8TxpOey@eUDnG0lQ(1EYx&2+Njs#(ul>ndyj)ZmaW!&V|BNdC?`&d z1y~kyPl*kN=E$jniwyxbV9McE&uNdFY>uGZBsKQiqaB3oy1YXVR_I|Fe_M3r8NP53 z-1a_Hi1veugO9=mN3l(uEE7vZq`Bm;1iAN52l6c_+LbYZ#zh`o-Ofr z5e+yxd?XlL->BD79cRV300;(a?4urmc2bY$)mGh}ivX<#6|0(==1f!amUF?UkYVF- zHq;^r@Q_N0CQZ~2dWfw@8cL{N92OCG_#@t=zVs%9XlXc1+#>imENx=g<^S8rq2UO1 z0@*JOxqy$=0)}%BbinyTouoYOsJ)$t8caOCvc(tum7$)4gZpq06YIl4C)9A3IJt-| zy0i*fC31h6cCGHzSHHCa`o4M+Q*2xj-bK5I_LPzetTTBWxxGuZ8Zf68I}yA>M6JM5QbXBpUii^w(4&*{^RpW% zO||Yxl`MK;D&UgmpZ&4#`pADNU+TA> z?7sH?^LL+ZpIz=30+Z&Pa+0Gtuh-MjX0=|e=hZxA&dIVXOtwO40!fhoww`q6=@Q7i z3Q>hFWvR6;r3!31gzl>@MWm`g7gZun&^*yJPe<$ZdNogpAW|W_Qm>b?y{fxyx!Nte z>t)&P_hrA7r7opfe{ls7an93fTCG;=_4;@-AD>RAo9V_novicmlr~e^q-j#6TCAl? zS)>*VFhL+D>+5GRv=AZL#dWQTDbLfxtMa*TJbL@#m5?TzcWE$`nJI!{-PXJZmK)15%5x>^3Cq;TXQ+H5EDJ4pIK3aYJ zBR5{Ung8JP58iy|a(1uYEQ{#>pRGTQwQbAJ!?16RIoDcypYC?AtM^{DEEZW5MNzaU zQ?1pJ>LshOEf{hlAb{gQ1_A^D48+ur{0R~y0RjYY?7$t8z_vt6j!dheDVvl@N{m8^ z#h%4tRk51a-u`sES!<4wAETM;Jmr$_)qUsey_z{k^Nnwg2Hy7Dmm~T83dWPO`{Bmi_LCCRD&o)KIDwY7;@5wBvq;=+c@c zT$I9q+EGD+Ow&}D4*P?d3v!#+aag!_&Hx~O1*-v2RjWfPl`Byx)hY>OmL^SA3Ch4! zcr(_`G;BtmhHBNI15+u?Ox09PtWvyf&bB}LGr##uUwyjSY(DqaE8p|kN1u2&oQ=Q+ zqeq$H!U-T^e{XF>#9%9=_7YBzKquDEzH#>UtLI;O_wvghT!X8qh{{kai3)USEi!&I z`ZsAvZ$DTgiz0#nl5J-M8pTpwB#q(0wR+k0FOX$zkcfw%Ebrov?dB&77aiKGhF6{ ztvLXB=B0AnD^{(iC;gdrv(bkg1zYFp*`Kn)j`Dzr?hGFY_$SbOWN*YgWs=gjYon z0Pi$Pp)xUNMg1Q)6>7P-i1TK?js2z zgFsa~Jy-OUjR1wzCESM1sJfoo7OaCL0`i{HqMj~0W&&*KpG=0AjP(d1HWcEqAqe2! z&ko^nBK8YDGozj!%EmJ4N0-<>mVD_t^^!asiu90GSjWT+P@HhZ2jd}$IF`-s!%^)Y zdkx@DQ8qI0y?Zyx|B81+-va;Z>gO&X{YK6NWmSy7c{&d2acf4EnaSk|K}q67AWaF@ zVu=twp(9dv%0v_i+DJAr&YHrJB8}7PIvKK3h;I7me{mg%fU(d}L7>*05Om66l{kg| znyGKA0^}Yi2Q&>Cc6aACAp`jpP+Wz~sa*X!DO6DSDHoWstl|!mUq6QbB(?o6EDbN^ z%mp$Ek5!bF*!1|^zO?QQ2EZpt0fa)FjFbkuO8uo)VyXRMsBZ?P*?|ZCE4viC-btMJ zL8=Del*0NWa>ude-I6PJ;O>q!wy!H~7^S-;R~TPAa3#k_tKG}x3HGFa*Y|*k5LWT7 zjAfo6(kk|VXKlT^Q+9-Q$EF2*Fk#UUmKAXCyAa#FGBjPb-NCJbE|=-Fa=BbxCG)oN z%2sobmyI{^n;EHNZO%1>LDyxttL;cLw>G?YO}8e6+6aiIcwNpl6)}uIt!TCo zt<|!4u&fT0*IKqpqFiAotUnV=>iBDQO7W35$}L*q!!BSo3LPwp_H$u3G@@3|ct?2B zM)?0~BvyH8BYQAooU^(|)w zvw44Waqq#&`MEY(S}Qz&%d+5mKL4qI>yLkax!M2YpZnT-?>;#_KYL|)^__2g^LTi< zIX!Er3S}xZZh*4Phk>Y+a{cnz&;R59;p#iT>$BhS`PQ&M>`EPc!I{z2#s!$go0}|) zY{#N{c>L~@!_DFTqkF@)wxub+g`wof%O<)3Cd4x3G^O3L1=9MM%4uWFieuB={%|_- z#WZ~Gm6K0B+C05Je)YqfZ$7Ga@Ydw#l| zraDe#JB|0Z!*sqGhB9!e1+|#CC>ia-7KCuE1Q0VyLnTmyJ%hHUx3hYvXvumcN({1a zjt!+j$x=cJsTET)#;MGWzV!apZ@hc?^5#fBGS`xGtQ&eF759i{J2+qs<-i6wWk8e$ zmsAAI+wG<>DPx+3+v}aGvKq_BF&n{}<$3(i;HY+VGmJpwW=8}9r9!04j~<=9@^Ji( zuU~!b{hQOFv|v+;2@iwFPej8}Nl1~ySf4SHp0GnAYO+|f_3bp2lQM2ML#@+LNo1Dg z^73}sH$a;TDe6$I)WU~Lv_(X8ky6Vv49mPUX+&h@qjsD}1PDmHnZKyoj*ECB8-F0z z2gjBKP~x$2|1kZF>ilzw&k?a$aGrjgHbML zeZ14>`=+Es1;EmpHtSH4TI;ihh^>D-aiQX#k4m*z5k%T~kBo-k1fORyx~cJke+0x{ zq3S@;-q^tRp=mhY$R>#Bh!o!JhnTJL7EFbFG$NH!D9SeMXWHxpIG;#YTtu=1Jq9(V z#GtvWPmdgwpp=7f+=GUcA>XaXAS*jTCLumX1^~ds@%Nrxp zO+_IM%JFe~mxTNjM=J=DT{4ysp`LCN$)UYSnQUu41|#_NwS4&qP9q{%QzC(YBcgM= zM&8IQHJMiNtgoT^Y;X8Uj>3A%0Sax_EW*O2unW|;GPoz}@#d+pE&5chBU4q?zJ}yoWzjDbBGf^&_*16h z+y2_CQSTsW2h6V5WQF>^=>6c+5Vao&^!Ek<7Jw;331n=@zc|_@fK(C_eI3%en2NH(!Ljg|ACm=kCbR)hKd}aVODU??`}u-?tCZ7d3Y#P>^eFh#d^3Eysgw zH{)j8j*F70U|yDKvw8C2vmgEGUww4%cmDq0@%mTZ`TS4*)EAn9DpL~zVkV81!7FKX zjTcD}k&9x_Y2mguEg%#X<#C$Y?al7`l0jwK?DxPj6GKI$sf8F;k>Vc1$DsH&6e6H# z91ReW5tf{Z&ZH_uA#L8he0Eso-Nl1f%eYaLMfkUW`Dg(g;y4Eu?IGZ&CG|S6Gb_O(UJ3Ow&+@feV2OGl5Hyrb`oP4T^bxY|AXmB2Aa0 zG@S`Vqo`otu)I8QWvW~Y4~53c!&oNf%}8S{<3K|#W8ty#P?<|n;)7}>x){nyA%Y%f zX_EWzez#I_1HnYuAjX@c$6r*TYW(B#-Tq78eEyBcyMt({m7`ddyUvIIaZt-1WW^{B z!1`+go_tPZ<*(M)rtrzxwhqJPi|g@ZLzbGvRa&zS>(JsAkG_?X2jBM6x z#qEP3Bo&cm5w)B(^K48SeXm5RHC>wOPOcB4L{v$c0klO+AqDM^%OYAx2;!F22ZF>1 z0yA(GG%_|-fCinL9u~PdE?2wx#m)TmdVhJln;Q*7&1q|DPb8LILWOxV7;nLaRHPkc zY0aB@H_bM7P9#|ma#9s-n(6oM3^m%}2WJIRu}*lZpw=Ly0-c*2mc{@V5OE=@%p-HD zDCAhqC^2ceKwB0}80%D`4{^9ccpaRF4aN-H>4kIOrc~yde1e5Hp)Z!lLGS`TwHX~8 z661)7Lr0h?@}HpIQk{;VuROjz%<}2C?{m?weQ>)dDi^B=wwleHyiC@JFl=jhRSl0x z4gvyck#$3dAd599zozI%a1qT$V-9m<-c&0hjyOr82!Num89Ugat}1K9k?_}6TOdwU z2SOm&V9#U_$gCAiDa`WpV8f9)sUl6pldU|L z5&8Udn1$O?2-{NLe7JpdK0LoUKE6I)?&b#g@Cl!8?uaeB`&$M0il&dJrC6AJGrIe? zz>@(%fyk8z3?J|=Agq0?S>3q^F&SVh%nENFX(XLWQ-V*u=qNN65E()s;d%sqA_8V` zA?Ct1a#3_y8sf;)PEwg!RE2EBpen)3c8Sp9{HZ4GgF>W42Wju$EHCzae^VYz65172?F!`*Uq5P+sy#P!o9yh#iH1sdSUsk){r5^kLmyo<+3L4lxMg0XnLV<8Cbrq)(ThZ1%e#7oB#+!8t+RTv zFPq7WWO;_wo@tUY8FOVALD7yqq7)anEMiqfbJ5i>#k5+7h`b^cME+Lom=A@SnMFh- zB5ZpTH@FH=L$vx z9Q1SRAl+#l8?VryhMig6+o^?kJ7*_*8XE%gBg=jLweQ-TFwDLv==pJZw@lm%Zy)DX z;mXyw$CQu=JnC^Q<|jV$VuX+PE3b{tup*z ziGk`7cW$L73lPjHB=X?=ZIueCYAK{bMjmQxmf7VM`=mjL0IU2X3H+0mHn%Z_GZ|FZ zECq2?XA^}*>}#3(*VzOhjZbpxjs$wtW=rQ9v=Rd7YH`iP05HHwA+~Nt+rl|;N9;&Zh$ zPfy-~LL#J64JZaP7#=P(QJS{f^Rs!sKiuwAS{>>*O{Mbwu>U>3|GWRnANkyirvKr8 z^-sU}E5EfZg)|0b`t}Qf0=hP}w1x0)wxiO-U5HAiZw?(cp56Q60bh-evxgyUv~RYios*1XV5*tpnahN+fmC}$_rb{eL!7Gh!&S?1Q}MWwalVFu8awk&fy zE-nNBR4dczW;{DN9f#tkkV~HPTIC6YhJsqD5Gqk6Fd9^Aq3vdR<=)AwXPdLJptZ%j zio0u64XFUdlp$j0c@)Ob8B5osFve*(2!H+Y^_Sjz_TpwHlsGCTBF{Y!3jmi^w-0_b zQdMiXF2p76C?W^QbI^FKr>7@#n|GJHQtKj%DoUw^Syip|q6)}jDL=wCQ{_A9Swf-X z>NB|u4fXt$vrm8a!Aa4d|H9*EPo7V8P*En-%7u%?kpz;~8k#Idx3%yoRvP4`SE6cD zG@1yJj^i|Krqg?y^NZ8l-QmU4>-jj#ved$&7>A0c0xgA^D+JM7s6})4Xu3FfYrzt>x|4F5b9*aypi2 zvb0r|CZZ|=&)`r)pTgqem?Dp4t=5E&?HB8#;{Q>Z`*YP2N$;0qMEuOk+dWA`IHupq=Ddt_oxy;%AU zMZ9QkCQcn0G!`0JNp&bC$|ea!i;@7M+C&!>X^A`>dMMk36ZeuGdZdDBI8Te?UD7H1 z8nRMXfkG?C4HYPppFUYJpbsAKex_z3iVCsJpL~7$nYSN4yWIcgyH__e09dj7P>WZ6 zuco$Srx!=Mi6jYS2F2T@V>Q*l+eBQ`&5njT0&Atl%~4`|`1cy`=G0oQVUe4`lM z0tML@@G}W711fp!$+Gk303cSt6GFAV=T0(JXPKfWi!%H zcpxfSP2qE8yuQ><=LBqpvC)-0N|z0)s#@EGS_%ryO|A~h^Q+^t>%*=!nBe!UB25%d znslgn#(=~Wom%=`0;?fF)e1D5g>k>NJ`GbjZhCmUD zQ?ytj^pOn_EPx1Hco?dE+lt3ss{0WpvDXu?BA$e_M3!A*PsQw`qzF{vTLMzSRB>t>&nwQv}zOB`}GSiB-X@09Zp+ ziGm}t5^2|U%0gBE*~322uZ2KlU=AQ~VTHodgT1wciV}J2R0Dy*Or)9VeU>!nf9erm zk0@3#TK6~+i$v(#qZxGxNh9ypGUF-(Ane6ZE>|o0Bvr2g&fB{&P))uKE;MSh!V25K zZm-NW#my(e>QBBF<@3i2WHTZ!&57SpC{08(ssd}{mV4q>ctr{2+pl)aHJ6B-u}#V( zEh>V3AmsfrZtPTx|Cd>Qe-iQGtl`qSzw>L@^*l0*NI8B2b>oZ(Dc1|;EK7#Inn6~E z+8sin$!P+|dKxoc2}E(M?s6I=Z7i*(eM{?A@RRTY{M2X-96;L?wpq_oMvCzKM?ly^3FcWPb++!}s+r2DD0&h<@ROqnZQ>}mM zPki5>`rU7R;ho$6^uPG=7au&CYL!LEE@72O_6*h^&ZnNL;ZvxYF1@qC#Z3~EK zIC=2;oBy-F@&kYE4}QznU*7)T|KYFvvtNF997h|62nZ3zI;i5w(})~-PPgcvpP&~eeSzH^&Q_eoSe;v#-(sAuGFri1cEf-f@z#iPo}Z* zG?dfr=H7#|?a62;Q{go|9?`+s6C#SFcncD(49ew=Y&aixkY{4c%-UqAv>9+V4Vz6} znm&Gc`_A*5_n%ze-0qfnF+r$IweVEOsn$A_T6r7>W}?Eia^(`^;UGe7UY5BvY5O+s z_wzDKYqA{XWuD=62T(#OJdO2qGfl%#xHu+KmyW{4O=qFXT%d$zNiPH8bSn4HhF9;M z+&`O6hYFR}mc{55SElX*)si~`PZAkD>pIsl8##{;&iAX+> zjd@11qAR}&kSc)~P_`CT66q4=nq7kx%0nGbHc;%YZ%g5277;0xR21w@{S1jIp)Hyd zTo`~tNZAV;n_C+u0jUU=Iz2r52lc8T~yfy)VAY;vyHEB)768Iuf%pJ2*18!&8&CBjE@8`CgWnNmFr8POK&xI&T0|AT*T%2qk zoNv!Ze(TZp)r-0`yxh0BX{GK9Ban-TJnp#4lTbufxi~f=Fdtfbe0liN2QQyo&7}^t zpb$B4Yw0@8n-!Q>>G6d-Rz*x%vLM&aA2^(+_SA`tK%699`8g`gCE;yIe4aR3QC$J5 zqOcE#VP*k@NST=nF%h$|TdLa3K5MTsg?G<1mt+A&B9s)69y}1Sih_d|P}ji1ETU8> z^7I1Ah6M;_E-FVDDj+U^4Afq~zxkH8AKo06Uw`NF<@HhqMw6&vhtI7+hO<#865I=d zNfQr>wAiUq?z4%2Q-o@Ao@djM9vX0Yg{l0wJ^Vz+04ZGPcr8(*{i}EmjDWd{ecN_Z*7av>dd zMF4#FWnDUn7=?*TY0%xVJ-<0VzC7IQmqt`-WwMFc&R0fjzcnt8F8V#}^#3;6I&a86 z=pfpU`A0)Gy`YH#Kbf|!7-Wf39Mg8Te;Yd8IrIdkf*_(Ls zbog;kFe8A7tofJser10~wnIwJU9^X?%*1GOZ*3Al8YLaI()qxzZp;0FD``{QEP6G| ziy7C))_j;Oys@JMDw8`gMKiumP1Q7GVs_W*raCy!jL*8sGD8s8gvUE3hP`qrNd|?2 zNu!;Hw#C-ilFEtUBLFn&2Q%V|IL?tY3yFwX(r!&xb46D{wuk+3bYZeh5uv1c_t)oW zQbs8X8OU=Fb=0$^R(}HhXE2dh=Y+_FV*HlX#akhY?|Hn9i>?WB+7?>hX7w2lU;Aq( z8D(0du=W<}G!a%Ze&@wk7m2+M$L)bn#7%xD3Y|o50^mi?f#q_2dn|73GZlh}F5dT@ zkZE^uEuU$d)Bu2BwlXaGh@0W~J14=cp@6>sgh-%Ri*UYeu7kK(yGA5sLdl}6;&@t1 zNra2`JeE1T{>n#$6B!{AI8Ia7@&Af7fw4rvwh$!Yao2`-qr%6vrq zyDG(!1kw%#PGHfczJFwW7@=!nS{buD|CP&65nc2H75hullikYQ(WU%Y{5&;+A{Q@~ zI`56VQm;jf-*sh8ZVh?HACDX#O2Kqp$?ViHDE`9kkMemD%edZw@V@=%%O8~D*Bu_O zFhU0lsSSVZ2Y+Z;6mdFbY`uz_i;oxR+vnO_3ILVnS>f?st~GtJV}~gW37PIebXjYT zH>WTTNI*nQ6~nN(xTm1wZeM_596%y%KI{*t_wW6sfA#nM-fw^K4}SLjAO3It$#Qc$ zl_G8SSks=;ai~(bI8q{S4riJxU3kr@k`giO7?5!O=+W_TynXhJsz{=n_N{muXJi$C$RUm~6& zF~u5i3jx!#sij<9zI^W+-?+Sd!G%lZWuDPQMVicVoMqX|@%C`_vd!(m>u-PNyT0eu zkAF*RZCM&|Eu4q*Mmp&tjeyN&JlSqG!!R&Sn{sh_a&iBxjacMdr_C^p!^kw$LR3V|Ul}YZ%2c9V3sgy| z6djA6ZR*3b&BOEQ;$%3Rc*8|iW=mCss>9Z>3Al4)92|!0G!d+-y414S3|IU1<@YbY z`sC(j*FaipLC}03F@vgpoZS_0l^4&}A}AshsCA2ing+AhX#kP6z29B$%1}fUuC^3m zIuE6k!o&>b)?{uo**wHT3XnLLYsEwg01T$-{PeYt-+%LsX?K16=Rf=I@n%lm-AzXxI0J%W^){v0?1=feL^^{TdTGL?5c9GaF<0l~5i36!7Je1&nVBG) z1qrf*E$I2Ce$ThQ{@U3_mUdj)(o|GMwFv+;#nPJEaUVz&x5xJ6YIi#~%bsJRY2bl) ztTa>_YZ(g(X&L0Ps(Cywd@SQe+(2MXKdpxNi@f zo@}1u4~)cxP-0TBG+lsMVWZSbWg@ldu<-RzPgEBFR}*Psj2-%OA?^Z-;Wvor9(l${ z(QOP0u)U7w;Y5D4qvSJ!b-hrM-4<`pnx8k4nG#TTgF}GH_KD5iKRon0ySA ztum-Lk3(FOtiaROmIk(oWye6|&V$&i>S73t%WN&^-YOk!r9`%OhFo2IJ2HfNm6?x+W%l-ufX$7! zGI3#m3<0>kA{a+VP!Vf3kjD?fSm`=!vx{1|$`l2j&e2f>rRwh$hB6pr-)z{B4d{mH z{#5U8_+sFRRDjzB*Rwo3w#$RG=;>;)DS%Q4;)4Rh8bOR30|F~So5Y|RisNlToDi6j zCTD8ri5V}6yHpo+t7C6KiQy%M&5gG#Pz7v7G9}N~DW*%hRqT;{oDCp7yTMhsO84um zjFJY|wvsjfd4`H)we#-$dKr#mQ|(vPc-pkO9g3TPg>BED*b!8*MhC_!TAa>l?fXtc zwHI~84>BC+99Ei?U@PLj{#~+IfPDdJ6*WbuyGkLUjCO$Fi8|4eLF_s)4S<1@SZZ2d z(?afeBxawy3h}AIlwI$7kYon~5m@$L-JuQ>Nyl@fJ?gQsZ$x~G^ZAe#A-B){YG)Ol zfLmRW`lb3`<2fl}&>oaVkA`R(*aORakrWlphTRe6tv|*TAd`Abn!W?@?AKLGc-y{? zGgbx@Dfzj%zOOFD8gB)KGIds`5>1tAp`}@YAX1J(ClVcXih{Zv=VqjCAXU#L4r;rQ zgtWw(0e0qh>8FQlr*IB6FvyNVqT z_~XY>p!#B_BDrjl8?^YjNZ$%l*cc*&)~D=fM~s>EhSgH678Q5?o=;AG{$mg0-BwpZ zy=Ev=O;%!y^!AZJeuvu)gcCWb)E~fYej4VK#ZcG8z=;6OebHLUk*UH+bEI7Wx=X@( zlk;%ERvsU<*eN)D9UNcZv58?yf6Q?N7IsVY^cHB+ZT}M9?S>N&BU-T4^qQ z@5~Iut;3$)4PGLfAs^`@ujwC($ISb6y9b1)@0c&O*m`62%7i=CnerWIz0^ReQwj`q z`M6_u*W4=sNpgjv_xrlpNk#bnzwyJ%q8d}=6%du^z?>WCF$g6V;KE!0S(Yeh^`-A# z&7PO7BoER2nTWh~LKE@qdH~jf$Ko)FrkhQ4I5{obljC6?H`4$dZf}~*wUpc2-N!!r z@xS^P|K(4;a`IpN*q8o?AOHD5=1R0Iji6R-Z$XKw21y6+S4l=;C>KO*1sJ31ErXPZ zwCUUyD2kOb&TTo)&;=H5HxOAa28b+C&Wj_2BxGOu5umk#QL!`%<55a2$3+D6m;THj z{$Kv<|H`nP{_}tI#lQI@KXrC?vN=1SXKBsxv|9HUfSEVbIM0U<-+SkScivTLb>Ox% zX^X11*3g#Ljd;Vy*za_9w3JfK0(dxV~Z#J9FW-vzJ z^mKFY;&gku1!+?i36?%EEj$cC@XZN9?|8f9@4XcXS*{xqfknnbL#6FhPo`Rjfr*Z- z-R_UKhq*1<%%NL33K0>BVriVw{io;d z`LWp2qz>ieY;!y=``cq3iuEjK0-}ox!4u`o)|8=?Qc5jKXiICe7%S>(0iTB376J2k zI=%ANgV$c02GU>s;5o;l)=)0=YgjGa{i}f<6%ID{&XZKGPw7)ql z`{TSnEQ`$ZEF#i`hy*m9Zb5w5A2#E--HyxtaMc*H7S_Fqh02HFJ78@uzFx5iE>LRT-Wef^56jaFK1tM48 zjuR3?X2jKFICpslvs}_Jm6@;)zUOtb0ENS>rr;o-!rH z?OirBT(}}8DI{_XJeoj)!#^RuWpgF+=?$ytDso_8WEv=%-w-OZsNOm!PgVfOObnFD zT)8r{&5IFI8!;)~&&f_$nlvSE_O5rKM1;f{E`Sw6z242TW_kfBfr$!}`0n`IIhYQZ z$b-aANkdR=SXxXcAkRxujVAFn{L*b^FMSCvR@vD%vab8dj(NX4 zKi(jFTOv|vT(~fU%TeTNH$S;NJh?gC>>HI*Yq4TmakFpcHWQi$B-CX4EKq$yhWw4*M^Q%-!$zh|M%HFK!E9oh_Mq z45tRUEInMk2aAW+wyf57MEz7KA|x0>s}5J=V-?b}!;z%jYrt6bAt-4#?%h-HU%eUn~9;rcy`+EweMD zw90opFBMQKoPmemK}vMbw{p;V?>nWst9TxN(Ac+cT`&$j6at~O4wpg&I&~8-?y`o6=@Zx7At>(hmAOD}O2ei) z^@BUfP-)Hc>)m$7HZdE9^5i&Qsnv?RCFLZYDf24xswv8bQX=6B(fT}yvY0xSCq`); zD8^k{n*v4j&*9EUW(uhWjh?dM=O4W}4Rg4A^C#@WLQ|3Mlg`pEiHzE_Ax`d$tD zz49sXKXE-upXbZoS7&t*Hxz)<_y3K*y(}KeMmU#7PSd5?&%)0^6}47?=QhL3=qSPl ztn6X9PJ&AFUgYt5syVZ@s6i?(TgcT{0ga~@S_ft>Du?T9)kd`xrrrMbbKmowf9=nG z*TnoE|Gi)Qxu5x!6CyxGlr3CPg({JSHnBjV3+Qx2p8N;mvM&PClx$v&=y-ajT=thQ z+Tj+~&c%vuD15J`U9rnch_G2KBk4rNe1b5uG~FMTKmRBG;Q#us{qfh%H~;V#-~B)Q zCx8F(2T!JxvDESG{NA`dV`6CyOhkoHl(Z0yLjmOS+0*yF@r~>2%QCPkq%{>)qtR4! znPom6Z?Bi*@!_L4KJ{JS{rV@rRkR!qJLbZ~YULQV^$G<_;Zo|fnKqj`l)4@3#rgL9 z>|~rORGW&Zq0~U9j&WQAvWG|f@md!0>UM91tEy6nDrgwXSb4jdHp5UyF2uD^0Tr@` zB=KSl9cmfI;dB~KxAor1aJC(`wTy(qYE$W&w1{k|a4Bg}%=v{4MK{VJ1?EaciF6nS zC4T?K?#u68e)w{KT$*L5rS(k@r7PvNwoE=AlRQ_Bd?1lSj%fVPx%MIoraBE{t)g-` z9NV#RVf%Ffl%i*xKe5|N3kz#4r7)EW)n!>!r828`*ak5*5Kq(nH!eQ*=E>QJuYdjK zH^2CPwa5?(Rrc1};=X~DK!vG{wboioEkn^ls(OCD<&m#<$D5mj?B{kkwx+TyX5y@y zY#m3b<+wkLwbsg&sFrfr9}fFt0oBTCb1z6FIt_`4du;U>SVg&V;ZlmRg;zk ziHIu!(>Q=|JRHpE`+UGvtU$?oL5aCoDgjX`tV+k@@pB)$|M|Bc6m7SM`LMLsjOroF zy7z=x3nndtrZ58xFsZlG28==S=Fdc#mq*!GiajSB?Co%odl(>FR(5~oL?S#;sLhfS z5tVT)XJa`%8UEQEgkPt0EELoa z9IZ%+BT*#YSaqi{7g7nMRWGX)ra~BMot18nt*OE%0fUrK0H835S{G6lRq^R&LE}atvoz&&qR1OmQuBFifuOOkS|6g-e`bzzj$s9+@{|*^GQLluhMLEh8&K3qU6P zAQ7nAXlw6qCL+>QA!K8IikTW8p3(&t?_yrrgU zbWEcL+#K5ToB6}bbVtNuebd-A;0YxIi z(60z-Izhe;4$Y&N!oyh0V5}p_BFiGJEw8z0u5J3<3;Mhx>*wLvQIx;yURpDZZN z{SBMx!Hs(TzAZznaptc%sl-fvZ0dH9G)kFQ_Ou(@4D8~-J2Jmu>K}n_K;8hr7C`pk z(Ee@>E{ctJ&~P-_nUCV-Rr?{0dzUDzi^p^1LaWG00rFBc>JMVyj{%%+zj6h=X@D=I zW{#eV z9u_<66aght9=rEUMl9$mq@?K`JL8tzL(I6R1v2(wB2tkEr{g|7G>wprZD0%3PU0yD zAKY1%zz}&<5SEHmRXLA4BKXUX*!MH)_7zGQ4PMiqYqiC+lJt1J+-LH*p1RQ6Qn{dd zF|_YQB@Bg2fuGIAvxJNHRb%8E*ybbBkX<1A(>P}D);M0s**UvR|GAq|Hy5(%&DZx` z{XHC3Wr*MtKf~38JfLG#TfA-x{9|3>!-C%hYW}1F$lTQzhH8x8(cDsRgdK_{Vez^j zT4|gbwEzP`K3gni6#2d;`H(;%Y{4C;mY+{r*q+xUDl?_sZlorL*wdXW+Y1N9ru}K} zJiV*o9UN=mFTl3m-7-&Scb)SC2RPcwL{S2~pkYnCqzC!v)@b}FjAfXo6`vkzf$q@J zWx}OD{+j-BZEfx@GlFjoP@iO70+L)6!g|B=N$%L*#L!8Yx^dUOdhvY@Dp~EPqIYF# zwS(wiwAYA7xby1NNo|-0N7Rz$$rQG$z5O(;XuoeKdlS^B8ixA#zO4~=$kGbI`2(+j zOSosy5B!b4vowhi8g32*N)mH1J3b4{VRoeuRbp-PF?Ljv7-WE=BOv**Skjfha@4>= z0OraHC21|a4OwF~5k;NG^ZTWg`T9zhg90c9YjwBC@B1VF(!ceGKl^yU{D*(@pMB+5 zzkD)`P(`yy&k$LhDIt7qR5(~&jY6=9dv|Z(BK|5S{Hkqk)4h8SKK9nl%d4mFd=1N< z2+~^Qu0{h4QP|7WHMJ&4u(sZ^FtY+zH~T;O2fy!s^Kbu|Pd_~Ur(b#efBet? z!LR-L*T-qt9gfnLQiqe%^NafrH>YRBr7hx^5r7C+8kr8e-3RZz^X&15A`1;Eg zAhG^(Dg@hBZ*tE>F4zw8Y-ba9_c#Yo)nTYy z%d_j_SKfR1&Xe1lLo0=9VKoI4WNs%?&m&_Z3|eSkX6Zm-87$$3EtSZ!%!o+@+q088 zmaFGiO{6es1F0_36)X^s%&GZS6C|qTN9QCNX~3ebQ91~6&zsux6_@u zte74sw0QkVXcyur5aC%A1TBO@7zl-xi7R0mY9qcrEVB=aAqFi?JxMbFl=%crP|Fap zic45XNUjp$KvmUw@mS*?VQMIhdYLLI2ghhSC6ENeX%i^tIuX^%rI5CE?`(Mc_4`j= z?%#WIjZ$UtE>s}WrZzOz*#JfJ6IZhts%klgsy?knB8|w5fm;qD5Yy5Wp2^ib6tS9J z>lEvP0#EkM%2_`$^8?MCd`TINn1%G9je{ zq@}PD?`FB$&CjlnPp|iT(NgMAY6K);Z0pzI&D!r0lU4C6#QO>Wuoqk(n@IW&JoLOgwT2)rj&qSoGVj0f1{41wH3F zLd-19HPS?n`j(QL4hKJel|X>LjObXX6T1JxjRE7MDMfvSB!kW}qtZ_k9Vj_57rv#d z3HqNkUuO&kqJB04v~HL|lx-YA%GfK;_0W}MoHhsZZlP@KW9C=a_J6Kdh15P;TH zJC)ZBUw+GDZ>O$Y!X(&)J2$0_@WU>2oRg7(-NBzfejVs2C~cw;Y_s#?{?UwZYPq91 z2T_b%F#n>iWIprUa~Dj#d?U!aziMP1ssPpo{f?Z3&j&uDWzlpsPQ@q@Dy3y|QOxB5 ztri6<3G#3h+Dr0dOG2E|$ooM>*839q5Gc4xAnm_vcQ?dgzxtmQ;z$xXe|iVf`iE`* z>c|@L1CT9(S&^dVf#U%=M1#*8Z8;h?Vwh zSar8!J^eE`G|afOb9vYFN-JX?D(&W#;w;5nUiX7{7|Q-1s_Pf~h!m|>o%&zD|8M;5 zr75&UVxtR=qNVu@;c<%vv04}^WdM=LqOwHL;=YD5a6?$H9ywb6Kuc{gryCZ=bBNUE z_vtJ&o?g^(JX~Kxn|B=nsMglnQpZ34XMfLM{M~Q<(g!#H@!$L>?|=2(vuTpny#JKv zJ;b@NDw1AR5K|cjsIW{VENmj3*c4>1jJ2UVQl8yxR?xH3r4=N;X0~ z&F*Q?=3+9?9`(5At@BPpJ^0&Qt@e5yj_J96={dYh2g)g0K#-l7MDk94~ ztLQKeC#M$|j~;DL?#DSYAAP_ThW)+}vDK;ZjGDrA2D5wgsfx4!f(% zcGzFsfAsdZf9IQ@`L;5g9Co+TBpRayBObn>)G|%uW}2pH*baQM87|JZC#NTssEHNl zfw_p2Ze0aUW;}foxgrVF-53>Sj&d{h$|e*mbA>Xa5;0TdVz}P=>~kTTJ$E>^ z%QDM+T$W`yN;3;tmc3TYy(X=^e!ZK8&* zP322yW_l8{BjoVZZ5VZ74<=YK424U*+$~>!eD#ed*Dr4lP_Cu82AG}^K|3#wu$7MD z!Ufst#>`g4%o!Wq>dk`kSda%+ODbVH?hXK`aHR7_E_59DNL<3Qa|#t3xn?)D^UtM; zip@GGJPeyhXRm+!;ekbQ1HNDV$k8{aJacuZAv;#oAdKCLOagOJTLRyWELI^kw+LFLk6T? z`F~h@oI+HFQn=KyQXyGnInE$njTpbR_ z^MPNvH@$xE^tA_PXJ;pyp%kb}Yqk(^!f2^*mITK{OkhSK8!c=3KrUB>13JU=HLN%G z$`MF(*Nn(N@N;M$Q6#7qrfHz5dKQI(0H;7$zglap$+R7Q?rSf9>ertNms(gM>{96K zmy`bTgo^@*h4^cHxDNrRRZTb7uFc*=SZE(nX9w$m}?c?3oU_O(tF4y?vpN2vI*)(X@5YXonxXSY*j6BEYlm zY4I)wq11>uW>(T#N-ag?c)l4v`H4p#KD&AU$&Sd|IgvFvR){nZJh?~W0c>acnz|?I z776}r#)3%NYC@(vC-_hp&Q;N}25BF0BM7Y9+FbWG97F2IKZlyE+wBCAmkVo5sQ zniGgc?x-rqd#2U^P!W^;!c)*^{D^VaB zjmKQ=h;vLn=OWQ5GJzCCmSf>QQjyZ{usB17Tv@WDW2Qn15|P5#6uOxB;g-(}6EKV1 zEP8p==X<$rA_OyC5$egRV%3{*H4(?sx%dEJO%(hM#b^5wnfQif6VWCy4a2C(P7`Tf zDlfYZG2KSN$AUW+)<~#{wb2~L5OJNF2Uc@mKD4Mq42rUBTAZ>zD7MaRT)RGP}*Bg3LY( zj~yHlbukVh&t=Kw>47&hXC!5>7)AY_0Io>z5S(Ld7Azk1 z2ag4E!c34*5lr_B`AlS8>mV|8SmoBF{<}(rO-{fZo?QXtF&T*b2JR@0wu4W2TG=vH zjgjRhrdAq4VP_1tLcvm2CF_Bjd;tMZ zO;}l^m2{&E&stwXE<2k=ak1D1O^XwkajmED@SP#aTLeE7+Z8u*iKCU#=y`T4F-t}0 zKS%Jt{wzRV+w5$52ILihYy(MduSn#MiA86f`=pbl)DU($_C6%<67^LG%7D7CqZHMU~bn zm{uiIs%`P0^aFq6hv!8A@snoyPy?u zSXlwwc4qf6DlE-^9j#^wJn%5+vJeE`QWA|&hv6_Un+Fg6%3u7wf9P}fe)2aj|DS*7 zr?1|ByqyL#b1@R?qC`YaqXB?5vn@k`V%hCwnb{7SR$;thksQg_7Qrx{-+$OdpT7St z4!dEnRKJyWxTxEzOU#&4?@VXC{0LVsU;d8o{I-AZ-}%?S=hLtJ+WVLPr~k))_me;K zD;H-cO_rt20Erqzly;m|+c0g;&L3Vpd}Z36s#04P&&eayQpQ^LhuxDWA3po=@jM?& zVQ>-ek}a^q4=l_6=5Tcd(noK+{jtw}=PPf0im4vl?XY$fE;wxp^nqA8OO~~ zwqx0DHxJIYC))|o)_m-RwH~shh3I)jVTD48M9#9{pka=4 zHQ;FvX?rZ{hL)jD(>O1!%?lGPOG8AdmhtarI1p8}_JzcSf-j7o-WK(ck`;2RK$b;R zgt<%)&+fl{{_$6*LFCuJa`p6sm)kOgLTm66q|&VExHOR_kev4iUt;QJ43;gTP>9Q( zv4Ev=DbrM?L0UT=j%dxkx6EzaPKBrp#9T@lj>maFAKN0+P*qHUU@Q#55;h&QO1MWZ z%v9>8j$<8$L0cP!x*Vk~%RGBIZ6SvroQBjmv7le=2tzP*34IX@Y!v+>0w7Cbf)c@!gS;uC zr;V^tHf~{8;lCRSGw#t_Fk%s((``Opo7K&u5)HL(20q=?ld*2ca=NLTp<3HScI4}= zw7g-zsv>J_{qoWNl@mKaBhfVXCQLfi+IOm|mcpg5<_oK%xe&E9HXc}!cW-ogP{~Jh zJD)*;DHO#}cPL7sTFauiJuWZy%ag0+YQL!JIF{lRtwTvaGJ!9z84e4$CB5T1GPwhN z5lm2^Qpbd0h19`JDO}BQ8fp<$b)}B+M1c2jfm)HTRcmq%J<_&_rDG7O)7>@?(^SkO z2?9YZw=(j$(oOrCW#TE3r{u+-!rr%ByoskV@`!JNh?H4X3u7vDQTgG9&qroLQ@x($ za+a3|xm~R53Hi8_GzAgY^z@0q9z<~>tl$+N;L(#neX4xN4T|;mgJ3$D2@(=vA7xGd*YCWWT~T%cquZF5chI>mnjVJrzdol zp)lKoht?c828K6!I1IaHDQiT)Da3YVkI3%k54f>Pby`Jjlp$46N%6YK=O<7YYD8=n z1sIxV{;5duWKrAWi|Z>4kG?2woiAWVvNpol$XPGn?QxswQ9P!_JL>c6Glukky5DqZ zi-+@{$K`rB89yiUK8&7qV#qpl)oqOJ1qmVZ8vGd&sf7Pd$Be)O8d^g>!$ULMvIy)auHhgi!@PWuz>IKCa^EyeqK)?Aov zPkxULT>FRaAd)SJwNi&9!Q{nbg-XXqy7BHyi(qhEzr*d3Npc^OXF%TrkUZP)(@u&o z$+ucbJMl-Rzd#D>9Vv^*QKJi8_|{MS)xY$+KmYpnAN<0z|M!3M zQ^)5ow&SF&xhq_GzA#C|*62#4&5Oj&6}V5cGdQc zU;owl=4vRERrY>z;t~_GrK(~x9|WXa_~nbM@A#Ha{ICA)zw~=Q|K@K!zWKlWtsno< zAOE?NaROr|*Ao z`Rv2imNHbTRYV|7nu3~QL2Jj`tNqROIBZ^h`_r#~>Ra!<{i^d49D&iWcH(Sso#dBn`~wMwqauhd7EklJW7NL2z5=I?2!_R%~(Vr)7YGiXS+O zid7DZYa+7`VF+wOiYB^H=zuAck0K%vd4Z_fy)>RL6ihORP-Y%#DGXxLCTbIk?2LgN zqBP6E(O4jtV1R5ui82u>dCMDK$viXA#$h}=9dB=UXWRPl!TEbnFLyg7r3RHnxR;cu zXR;7caDg5-I2|P#A+WR3{zTq*U%c6ChX$*NJ`jK#P6@5NgW^O~n?RMBD)Xk+?Y5q8 z$Ft3NGSFt=v3OdX84y)bfvu0>CICh+q?VG(xqycVv6Y@f�KWj?Yc8mbVH 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 `*F)%x4Bg1lK= z?25go_3g2T5k%ur0_=RTWo1NDa-~nqM6mO%AWF%rA%{#=^|d4XyDyJ-A_Mxy5&wIy zt^U#n`v;Pe*g?_Oj7ANjAhA@jdbR=-gW{a>dNYpWdbQ4^!)n+a=I#El-A_QNMRr#^ z)RKtp#3@J2=mmMI?5Q=Lr+Kqp8-i)p925q+J2yCC5DMS21x!BMP?d5ffQ-@BaOmRs z6G##No<<+=a4^rx3dsXJLUXQE9C7~1nS=VpG3D}125McrtOjU8swT||i z_2&JDyRZJ{`#I0*>-1-S{;mJbPk-*m-njYCzV~qEAt?~)Dpen_=vLACz{lZ4 zs1mcNHQgtO_RJeup3VDkGDB?s2r;RUk}uC5X7eni>+uwvSTwUOF z%tdOPR1&o&pH>5}MP+xG=DEVM^h)H1HQ+WxRPD5Bk(uj$o&nkK4+_0;?RelcjtOL= zYYdn(0I8mduGJGX$>QY#&I42r(?sxBQPnkrz|%Z)N{Ja-IyUj1T5SO$aEX+7w15JX zEQ!iQ)d#-a8vEaMr`lA7`PU}G?yXqTndraT61EqRzl91=rB#U z$1xeZ*T6+XE&enF?|P#h1`)IhrF49ByxZ+TNXjX5UX$$slOLDvoof^T%xi0)t0g#x zw|yYkxwPIR2A&r+>lA~}4K%9F25tc@g}Df2i%7;K$@}s6>|nsNwpMf#=@?I#M-~x& zrm58l`ZOaZ4ql>FQjqBmKunUMBZIQzA1mq+RTXnMa73lCIt*e~A%#vwK0do*=o`;n zPf*)35%h@_4li4j*WwCCSPCyBiOK#4ggP6P{JfS@9X&v>r6)@Zw4N$+)^K z*-kpCR#Bo(*V;=nVU>_c2_(Q=F7fy*Yem-H;Cq5d_YRo_@jV-c){2!K2*3iI3{ zxs4V?+}Eptf+6(hwIqVL@-FOr9DR4bMyT4*Lbp+2GMY~S$O|_?pjrj0oIqeRW~m8j z{MG&#<_w1xkTYPSHU(&qWSP>}XlF^(p5OK(+J7$}&^5iaBM;w;z?1EP8pGlyGHe)p z`4+Kb_cM`;h?r8lrc)OyktK)VTT0Zd5W2c8sE+VsW|9IwxqYBmhkgkc%J%#U@`|fo zITqK~ZqU_#-dvcvXsAo$!f~VNvbM+xK}ERXrskH_e{U{Yr4ET!nG(U=pEO}>1d0Yq z^ffm(A203SM8GB>sG?W~3Iq`jL>o^OG8N1-H3Qc7KSaeFw1v?6YIcfbX*vBHy z;_YuxVeMy{qf|s9ya^LJ5gbd=r)la!z7|OfH>lJ$r|k_{Uvk)Jh@2?_rTSr#FvCk& z+HQ@-Ph-8@kOcV%7v|>a-Ae)C4cbbED`>wO1Xf!#P*f@L!is6jz?cwrv-J!n`GmH_ zF1bZ=mX?U1;zu~bT56~)X%J~~nO3$Ly3x&LpyPPWcHf2N05=fXm82yawSCdvZsFj% zO;pvKQkteYRw*Du8Kl|wq9z3`_zo2Pi67MHs1%p=67Q)_)F%c(D zqAH>(B`fr@J>taTb8B7U4XP5fdKe$+6<2L%u@`_Zyha=oFy6zoHkpOn!zF{wTZM)@+D9U zz2Y!D5s-`vB1){FlsGd1EQzfc&7|>k)Zh0)x|5*lg8?h>T*i;x8UFU&Dy9rRZibXN z5mbaju|zQ>&Y4#0Gz^<-)AfB7fu3JpO;4se*I`K6s%He5kVw40iz+c#A$IaHiYz!0 zffbT75v6HTSmmSZvy+UbZ%o`+Nvn`DooD#>nJn=l%$yQev3a>9s?my270y?JEF~f| zrla+G7>D^V?Ju?j3`Dh*v>rCA@v`pNx%DVjNUZ86m5CaIs|un-P$H~X`RI7OygW#y zUwiZ8TQ{%$$$#qyKYsM|t@~%=wVPFI4=fc-T!`;KJpc6TFTM84o%ilPIXXHL5g%j# z;>1_`^3l5=e*foQ|JpaceRZ`3ky2%))xgK=)#>K=D5v9-_2*xGUO|URt`5_qvy1y5 z-`h@e1t(6N=>PuLe)T{3nIHM|^%XPyPk!=C|M_40>UpU&u2jIVm$EQ|R_k=RpHGkF zQ?I`G;oZlC1f2(_&3ZgJJ~=twFzRl1_^n@luz`8F;~%)(?RNx$FF~M^=JRy_x{sA@R@0z{`uSI!ijx6D=9(P^EXQIp9UBS z0%a0Ay2w#-tVB6cN=cbeMMYqYkSIYY&aqhMDF95Ad{{AD98BNBMaBPo=gI4DfJl%w zuQeB)sm>Kd#EGgxfC^MqQDudw)LP7Rgyse<(~4s4{g{|gwHD=4%YKh(o`-Qx<9dc>eaa5AHsmim2#RDl^f+NR>2KAwp6r_Wh3X%&hr|?WmJA zck4B%0WZ1xKhIW?T}nim0p^R{{xHo%s8a2yk%+q)GCGRT#6-1GxIdtK7zqa zV3qap{`$2O)7nK~vw&6_BYO=Rh+|tyNmX)AM@JhF>L5(0rHA_BpzPc<|q`az~p1q$to{!-E!%1bz!j-~E0=RMFk3g@vHjue^uGK8YC0 z#J+8g*L*AiQIxs>=IeZ&n5-QwqSKaT21)Oxv3@2-UY0P}Q6WsYlQnaBFc{YU>_a>RSAa6Gxx}kFsFr zbrN&VloMCcX`1IEM*gOhRNI|~95fd)5qojM9v>nlVN8pN*H z@=*IL09(k1|80unQFlPUgX&>d&kr&%)&s9IR+$nhgGRVB5Pth1l;nYM2A`p?pWRZ_?0Xd~1b5%LawJUcOw311vdN&6Kqtn^;w)$Skx<7?Z^%27=n|IGN~%*jpB(13>?z@4M^e;srWO z*34rV@Mg%>SGCDZkn-_y4Th;nJK{5;>~7iOS(Xcn_}ib`_hDI;7R(4Y3mXqiVSim` zW2@VGgCM@|AqR2OU|YJwg1eUm4~1S5CtaMP9D5-U29K@6w;3~+fcCVGsQlVZN!#bz zE;s=|-6M8ttsP)kEJGC)f)#b-L>Z_RqHv4s%`n?K#~FgF2g^;>|1Qx2VO=`lJ#?!Ss#D^J?=A$l+i#Kg65bN2@a+tYz z@Ida(QMdKc5WS|U@g&b$;LytDV=TT5kC2r(r9ottIK%A@t0znC&HTt1aRB7TYTAY< z^@HhQgVlQ=MzcLt21%LATv$W61EwIT*!Y2cQ84WUdqq{uN`+|_EvkT?J$U-?{BZoz^S54m zX}G+8{`l;0aY^&R2GpsY5d&Eu7ADI{@lvb#X5(Ta{D_E!sMM;6k#Y^3OPKf~(Fv|Ao(d8xQlyb@`@3*_tYd21>-#izhoW}L$`in1Y z&(E(OJ*Lb|R4SEuPDArxcKS9$XOG{ALrusGv!N?yKfamBx_x`f7e?+em{3GtUE`I( ze766;sm?2_bWHP=GAW5vQX#1z%|l9=)+;9PdNt06Iu5jE5O996yZ7+%G}i=9sF`VG zPRanZN}bD)_#moU0g_@Zu?XG212!;`Q>{{J9dkbHW}(W#(6p|`cJfd}tVxdgk##oK zMpOb57#br3A62Y4!ur-5#bq59R8*_A99yqetC5Iymsj(CN(u%EP)e05V@_<208j{r zGh}#&9Vd&H_{s1J^R=T5i(c;LQtB`M+PD7j@BZ@t{Ez?m|LMQ}#V6Z~VRJf{+9DFI zH8Ib%-2M2$8=rmc?EG@K+vU|5a~-RIQ0v|Er@8FD_?ef!_x4BQYIA(DUgf+VS5oU- zrt^!-kDfdr!gDX)x%c7Y`)5zb)tCvKc*q{1zjy!Q|MFLU{eSl-f9uN|`r?c0KlKN` z{OAAHSEni|k1hwIDnhI(H6?!Z@%>jm_5AD4U4MGEJH38#a=b}MRb;>071f9P`TXqi zb8o!(o8Nl(@vf%zN=b7bG90*-st+HZz4H8x>Hc&z6-``gWujVi*sTBATTlPOKYjl{ z`rWTRxtzc8(d94>b{rHC=VHZCp;+&Et1|YyadhSIpHtTUUqz1aIJB-cawr>8!sfuW=M`ONuvVOc7cW2uP)rN91 zrOcJ7CT0dDR+0ugSiXP-5=jquwJ*?PjRiG%H(aq}>NB|mEv_?AE_YN!7o)|(5U z)jwi_@r%@eP2->)2m(67vIm;0tSdeIu`L*lND`9eMyjn{Q;ufvOzw? zU5JR81+=fa7vVit1FbWy2O1cOz=V-#TqPa#P<2;mSE108fv)8y0R(6Qog`W@&S$-v zL)}6nxYbOW{Q+8ECR$Vh5Fw?M63=stUJbL;E#lfsvK*KH9}7gb)1! z1O=6+MAhc! z1E2Jl_h;>u4Q)BXh5MBqgN4EDzuFG4EjB4M9nDS4;vt(=Y{C|HAbzWF1G?O^-OC1O zc|lA9l0pPk8jy%L>r2u0pgSpZIZ*&=o~{{SYBh)w^>Lw|Sp3`JYP(fq_{b4i6qI!p z=yiwz${Z&|RppWbj%RU<5Q6U4ak1>i$4zp8if83HWDCtKh2u5xYm(6wt=V0;RFig* zZkWfvYVR0A7nick7MRk&EJLk!GNk&enm{nsDny_}P_(Azz5ot+(vY%mhm{QJ6M7dfCK*}R>QWZHciCBNGu%5(3Dq_cD4~OY=omY%$JE>K+QB8^j5Fsft zO9oOw28eWo-YIzX;_+vmzW?fPd2REj{%w8z3pjsr@!$RRcmD2I&sWc%zj*5`jaQlX zoGV!=ht13O$r4Z&2q^|)fOgP5Ak0-Us}w+pDgfbmKizxpW4dv1?S(rxUw!f7?CJLD z#o_7-GAAP-9Sg)BSm6?Ztu7<6g}mgO400&b*V6(=uLrm9`l%T=I89^i3hX4EB`Tws znIbfZSj`>|b{+%{^@vDHVa4w3?4zqosg;39E1+^qnBDE$doV@96N}TOXh=LQP%&N>ei6Rd<=d3D7oR|@9EU#~9Fsjbu z8rOt@aXet2bWA`Z1r3``N@+9jDj~0Ux0CIz9uE7f%V|v{N8@h0lX*_W0}%-&zz*<5 zB3d(XVg@Hbq1M)mQn%X?r$BQ~rPQPKYI8K~4+VfRI7Dn6tnBQ77druzJX7e4t0dH# zl`FK)Mb@j$IHpo$t~%SHH8o0CtD+LpIIPzzFinTKOhs!=>NN-nr~(xXt2|`uVb2j& z`EEDkuI{N?lVS@IYoc^|daS(N@964q_=mspt)KoqKk&c!6Tkh>{-uAsJ6w(H<9QN; zZp5mPJn-diclW&yUw`GLZ@>B7s+CBSrg2D{aX7txvdPy6)=k1s{OA|n|L|;A%GvqF z)y2n$`A|gcy!bTF6CS+&=~whU-R=)5C6iLAGdSnX>ix%;f97X@?SKF8|LASZzw7%> zs{Zi*`yYOD(n7#oimFJdtDLT%ZeF-`ZOAm2a_jmjUMcq;T--mq*v>ZO7D`N$kV{k40q+}Qll zAAV_9KKjo6tJN@=nImQ;5m@sqsB0ZLs8r&_(jkReS1wXnSrtl7o4TKf;}7P)P4c2* zjI4)*+W=|+p#$R{v=BteJ8|08hykL+Ln0_jcxXdu_H(vKGLDlsco}6PRz@cPrNm%L zcFxq9N!cF`iqq9cG+G!AYyOJZdsevjs5 zG@3qhWIMTG6d?K|*+-k1Qam%3!Me$*#)GOz9)_p8`b*z<@9x9%FTM8M4}Rvk`%kvN z`kjYG=;U}kC!QxO=!dFSwW_ZOcosl5d~84J(%vW~`Y@ z8)f7MB|#yylrU8ozPEOnUYAFSJRo#~;1n%^)OrYZu-HWPnRu!N8}XS|B@-e}i?yWA z%DH&T0xA2>5k)+=-P*@Ah?9tvD6&`mGVsW{ zg(@Mu0he0@*v-*GG~K7$it2I$%~EoR+#2~oXTDl|*~HN~8V_H%J$|f0+c9o6g(i{Zi(p1^eSK>Yr`#F~W#w`*h2{#ZCq+LS(ZXya%fWHyIkD<>aaM+hIYzG&ZvZ z=5`~EA|`F;QM7MD11Roo%&>RDzYCwg2vM_8UBsv@aU+aKp@)K6b(Jw>N(oR@g`M_& zM!Vn+z2$+rdNgvzE7APU3x4n!rl##na3$0>1>wNEE2Sn9zAKBO!G^_rCn-uA;vy6* zNpE7OL3qSHLxNiobhi&CzVz$|0eH9_+S8aX>Z{VlC@?j`clUL*Cw#W@w^=aiALuVH z?b7}V0k)p`usXUxxG8`B-ksC^va4njHut1%g8KW$6ROy}C;~I(Z1kK~L%V3;F-((& zbjN$Eg1j}Br$}P46j2Ymd>v?Cc9X~^dj0PXNo+HkjSmK6;hdVm0Pu;W3)N}wjP_eV zNUeJlYD?|=9trOF)o!HwKK6Sd_6UG?CS8a;5CeI!=r>1w5du`S7~I!*A+-Q0vO=o} z6Xl#$wG{i9*w6;=XyaL<HROv4_^I!Kbrp7PwAZ(>7(~P`mg`H_x|MvSGPWMc6@vWJ}?*13@QXc=iH52 zcPdvglQPo*d=Raq0u-f6R1~vlrAox9*8StB_qY4g=Wd_eyfz+fuAW}(FE0+;J!wse z1hBKJE-K#sOYNkg2F*|8)2U+Dbm1o87`AO{m?}$fnUh}lHQQ}B%#orn(}xIl0f0FH zp&JaSrj!&IhZLAvWG=g>_5JUBM^wvxo>!|`RXKh7`@i_nyB~~4r+1#e{p9|Gqs@5z z+R66(5~@WMM2G!EL&~dMCQL{=45Foq4h#`3Bm#hhlC|Np({$BuEN;W%H2}akwQEPi zdY#5e3F+#R=L4omE)MgP>9E-h)4m)IMM@>oG^7NOS`HLS;{MXkL5mWRlsXJ4=Trm? z>z(J-;EBjG503RkiTN;<{b3r0%!gT(HtUtb&arxYpnl5N_DD(n6bVN=X2VFTDpFPI zkkU9(8C3UWvH@n+&XbgL-mF(CrNcDO^K2oel_aTvjmdIya7>)bTsV8tay*Up%wDrw z9Tfl|m6~$8ak9BkV(5dX+kg5mzVlPR^GpBn&-{-6;;;PDVZTp#Ws`o&G)XN)STWC6 z7ueAEz46?=drw|?2LryQ`Dqfx)107|a7O z()robyGdVp_4)67=e;6CiKFU6lu{bkZ+(3J=l{lU{BQr=uhf10=^wmyVQ(BM1IHpqNY`6R9!NvA4f!S8$d z*S`Ke#Y#DAI8^~S<)>Hk(Hb|d9p8I$fyA7=)T&k)R>NQUhu=Jr^5dU-{&M%h!@VYE zD|6JUW-F|fr2hj@r)RyzoRjaN>)QOc+K)`TZTP85Oba3fnAIJ+$IJ;q_3?ShWf>YN>`^q*R3}^Q<6d&iU!Z?rJ+7t;bR{G0&x@RGCYfkqDKk zRw*%mN}5qb%W8#XG{EZv5Ul)~+!@16tZE=Rk!rtH=HfM2{zIh(Ba{SAjfrScO-d8A zlpqIv{w9cN9EOXFZ8?|g9YprvUQe>JZa<^)Sl{$Or2#5(W(ITK0 z8r_B^05)-=MGwz#(!iqMe*;-|37?VNft7ijj;08$Fa%!kE(&jbN)b<*WvdiyO)oSs zRf=x>>Q!X~0PF=88u`kI_DD%>e1wrxaN{XzMdz00g||pZeqm{@GC{+{W@&N5$x9}i> zr55y4n5Gurpn4ggiw^e?PM7qJS$;p{?Oi{-KX0Rc>?>atYU0fRDzKY%H|dylOf)7W zrbJjVMyn}`doDl$0h&RZjJcvl@J#&+G9zl7vGri6B8h3pEL9IvDYeDAp=XAgF1o3QHo;IxH{ne@=k^dKa| zXHfVuE$t9PTW^5A6Y*uoaY(n1KDmyFHTFg#&6LtC3~TNuk;8QYi}S>D$^E^Tc= zaY(=Im+iCXY5ai@@~L5*{Ds@gxv!1b-0hPtRK1;Vh%c4{Nt<{CDT6SvprDI1O33{I zVlS{@4*Z#!5VLd_yGL>B<{SINQP)v|S!-ZlbgpWME)&GsqG-RN!+}l&D$Kzk>{L^Z zXYOV%gLtx~D7nbADs5^tcmYUhu_24SMu>zx$nsWz`yi)lyk|w+08wN_3*l_S+f@<@ zr$^l>*ekXv$c|@Xb-aUT-#eGWz6D(eqNw>9G414B^J>jk+vlAs?aVoA=VF4j@m|l* z$Zc36T6plz^&5O?E5E334N^iI?N}5(&jUG@xw9$YBPwX=n$~?bWoA!wzi1Y`HQ} zmw|?;LTwyn6T*Cj(#Ep5gsG}yfQ7jXWAiNXbJ3>7!r0w&>nZ{TCmwhxQl-G0jS)w% zr?L(RHYQSSGD5Oh1w{mucpS78iV4F6Z=2%I=pelSZ&9}#NeS`ges>IBcR9H0$5|pK`YP~7?!hCq?>HRlO<@ta6kEEaY zaXmVvum7v>{KdcZ?#I*BOP@Q-;}!FixDY98B~*wgNeH$yNC{Ha3QbCrVzN$5L^V+r z6reI!!mI+K74hM)Kl|wJdcQrodGq-8&EeYd{^Dx7xSaPph_W@VQ-Yr;vY-gWoOA1L zYA8+d7EW2)`RIfDn;XY3 zzyAE)4<27#?O*)#3!4GEU6}<{q=5H_>Gay>XpdiR5?>2NXAYvHXNq_K?n~E zcC${C?6y_PT=&y-(3DtINHmKbflD(fkuoKUmY}4q(8FCP`>IGDhID{M+TMHDHPOXd zL_w;mtSKezcKb0Mt;Rghm16RpRBuW}%%xT}oGCsz%QE1sAd-f+IT46HXjubmFb@lQjA zIo-Iv8ArO@(mVGq{@GXG`Mp2(Mk&AjFZ|7ael-_X%8cXV`R@Y6_h!P$Zx*&?hk$6XMXgDKmWCFzRjmc#$f@ZQi*AGw0U%P zK4$*H=U@NsTOWvmh5;Z3iBvF#)%a`QdiWRr{&)V9Kk}tVPv+nG*`w#Lecyla^WQu# z=}LH(vM=RoKg~o!iBl5r?t{la@aY$)^!Vv^qLdMbo(Ob${pf=yXE#qbU;5N@Uwh~N zYIUs&h?1%hDKiu2$Cvw;U%G?UaDKj>r>a^9;MNhna{cJbFTZr>#_DvXzwPrc{Ngu0 zzO3Ms046KkC2jLSz@ETxFcqWXIQqv?!jK0d)OnUt8PKX|qY0y$#oN*WM6hB~8$NB9 zVxtW?HrPTYxP>vD_W$=_NdbxUc$?_v4#rGCB3iG9VMvFmGLdliF3t=R^05h%6di ztJLaPwK(xvH7F3%-GXih6IqwXOK*u3ymv=iD)@)Ld4pl1`1+u zgoX`*Q&>b4)pd5HULdWxm^mkMw}r;`sh(~Ii$pC|6B>)TL)gUUj$6rMOEZvHo+=ZVUB1FXn6I(0lR%i1rdhdyphnM) zN!Q%N%r2}Uv!hQUvM^1XJwhD&qeyiyVa$n%O4VtW>J1Xw7`sr7h+%uuK9(|=G@A(S zUo%IWX*f~UR-K81nX~$`cr*adl(8t5KWwBMwb$%V6~Priy^sy<9A89s6!td)Hn^)@ z5Jv&gRY{F8k3ceR+uvUkv8dMBXA>=-tlg+F0`^lM+v=A>?=jE?9sT+IRa_~&;fnJF z%>>w%dQeNjrY&rqI}B4ZYHF{#*p>)kW7#9lb_S*`F*ULPjckBZ5$@0}KnkS=sP$cG z7K;{k13jYkZElo(+pu_XfB2{-bmfNUlL(zq!n1TzW3NqX>^ZnuB*aJ)$5|8$5=^nz zquI9rXpCg{veUNQZUNisbm}=SLlhRr*Gqt1ku0>zl$bb?s1)h62tooH)z<#qAGg`v zST7AhYAQ_6{x6imey209{RW{W=05zR)ZFaiPmrI%!dZ~&E(1|$ACK2*Awa!}*y4I2 zRgIhL-=q-E*vj6ujhi!F@Tg5(mxi*vR5#@0L46ldzmY*W1-wmUn1ZEI=#ylD;0FV2 z_~mrz+G5oSHr6ccgX*F-mKHN6Iz<#(Rz#{IF*9M6NmNTEhggi}r4dA`U92^d@o2*y zm4dKpR@5H`{?^*++5Pb~KKG0eEdCMKie2=TZG@#6zCKCXj==QUwN89HK$JL9CXuRD*b0Rd z%*h^>bCN1{M$)Pbq|7SJDKl{^`7)mxJ~C{K8b2*5CuZU_pRwtPY36EX15xm7s%^(<(3Q=hqGwuavWwzVy=Zzw>YEXFr27 z&42$NeCx0N@(0uU{P`Eo677fzb7e#PB+3FPsJbCW0#t$$ zRrLxf>yea6caP6^SBI15ZVuN@jyJ2-^=pTV?e6Tn>~|~z4ol=giR7Htn^m35Za=96 zRv_5?)6mZ@IRpKppm_6H4Mf@!BYyIQ!qq}mbIvAM?H8e%$E=`QtP7rs zYEooMLdAY>NQ63<%Q7U={q*F+OCg=FuBP49e3%LR^y~?kb*?m}i$_m)mlp}FbKTFS zR-LB0I$ATR93XR*fy+G42cV8a!l0~)9`5ky1lQwbDp4Z3ulnYbdAlc+nnW@?w?)iS z&8vGvo5%#ooVhj~Q^4XiH(@59f-z3o5-U5%He=0zwTJhUO_uvji8kw_tE=7Kr;pi| zTB*O`SJqrg1k4Ku?9+1IVlr}DRCY$XO>x}-9c&@83`a3VvFUBnd+Y9Ioqqq1y$1gAzw(RUxN-AN z%HwWV&Mq$ReRyxX-4>Bjgk}D|&%btZ{rY#m{`Tpu>pY|tTO}WZbe{EFZ+`b*`^pzT z^Qqf!y?g)U`l)&YnyjS6Jg(D&Cs*TY{khM5`t5f=D6^=5GBIeq&eu+k@7%fd-udC@ zzxMEtf93Z5$I};X4L|*3Z~W(fv#(sf^}N(W+-Ab8SoE0@73HMYPmTsA6(K(#2Rq`b3iUc> zBU_aSwNS0XL@G5ftCFJ53Ppm>WllMtZ>Oi1hl_ok<~BFeS^|+Z`0MUkTYa?JaB1}p zZ1yj5+}0St=D!>GwP<<4zBg2X#umgf7*FJwsXf0xh=U7v5&>g`e0-BSA`6B{Jf9f_ zRuOi?H31CtVg4*7WeHmK$QarySs(60w$lu1BHZim3lU78Bc5yh1#^mS6nGH8fu@SP$ z4PX;gbxi!+_2YGBPQ;+qm=a+YnPxc@-A;266p^ARqGIA_(LDLABT58=a}lFPY}lea zbe)N}Xm1k;-rb^lHw0X@qk{X7Uy#PwvPEdC*Gdl z$mGxyuY;qubO1S1Y3nSiNW_-3GfsLLl2PmywGRJ8*6ttzN!N>F2qL_@{jdp^7w}sf zT41Um(&H7cQ@0`Ur^lWN7*vbb3z?B2BM0rmBEn2L`#74zq1t)rfU} zUF3qF=2pEz1oheFBGSc@{6}`RR$be|CEM)&X=k98fpkRmUc-R4wswiwg@|Eex_A4U z!oU$zOyP~#yh(B}$w3_`qB*jg6DS;8s#JAxY5{PsQj0va_>iUcv;HD276`j95m@#O zr8u$fuS}|o`o1uvzKG!h{T^tvmy;#7KGAKkF*d$*;zb0O)8c2he^D!kNDVKvHCU+@ zMk>6=PlvP3uh^Gij6FVV8r0(LsBH7MZ35h=1T#<+*xVxmv`2`H7d7z!44Xe&64Q)P zUlm`62--V`5CK1#68aop4fEkYbO~bjgn`rTy~4Z))kstnWs*c#WzLC)WWE12>}^1d zXSUbClY6$-`qfn+zUXc}?hCYK>|P@_1tH6Q*_&Ev^9yjB>fY6Os4(W;19k0Q$a!of zx(DkPTeZ_4w6p-UxO!llXB4R!jV6a7u03d^XDrg9cne-6-7FOlFH7yW@eEDY1k=^a z%~yZlE+}oO0XswBOU+E}q@AsSiRH4ze3%PrB98ESMU@0hNQqV>)S-n<(+bq!;H@nH z3?Fld#PUz9qrHul(>D+6J|x}{-F`=TZ_pZDLlwqv^pbE5NtTcbJN2`0(7u21d5ztq zw&A_ihFWpGOJbMdMW_sodj9r@8tthK3YvdvTkOx@4QboKg?GZDLRLe$RkIbfQA`p* z3=L!=AyF|is|2OQ*4o^Xc9zQW=GO{9nUkiBS{yofNwD`WX-0TlkII~DCY3yRFZ^LW zXi=S2iPDf!iXJAzM1hds8rLtnBbW-YPrF?3C@$zcA{Re&` z{p3%`ty}5+cOLxQKl%EvfADCyb#>$PDKHV$LKB$zS^EXcWZUD&g)G++Uy>mO_!Ibv%~h5U?DDZEu|>I z27kdMl8I_$+%0<7>md)6(x?znDW%qd`S9dye|E0W&GFHbyN~91N<#v$ zzuZ>hS_{i&It`%SNd=V2n}v>OyVjz5>_UF zkziash`^-D-Wfy;R+q~_uQbNjBCCQ0%%21uI4)b9mMJ8UahV>W~el&_| ztvc6Qiztv(S&00~E}yW0(m;WFx{6=9Es4*Hv+GgihT3POqQVB37d(Qc0D0`0)LQFBf|C#plk?FNf9U=wvmFtCYuSu4mgr zE%LL!^u2-Tr+@I)-Lv`ke)0Nu?tSL3{^M`0kB>z~WNwkXf>NUMxxD@U$DjMm%is9+ z`?^ZRB%s6z1kjL<({H@_{_ptFFKjj+e(%GlNSshk2YT_w`t=v@eE!AjFW%VPI^r8E zy4=^h7xTC8pZ~3YdH&A5r;m4auW2`xUw`ZI|KX2)-yis)SN`tTKG+_Rhs-$Vsj zkQ5%@=R7l8h;BZEnKi*OoTQvApHZtaP(iBX%rOzcDkI2yii63MT_7(GGN5nJ#~PxU zf*PAHYEx&i05(YM6pfD|APhqq$HbYHpa$HwB2p$6(KN2AV6_^Lj#ii3z4eq- zuXXSM%c3td1y*IE>a+6{5jrw+9tR{YN{`R?_Z~f-C8-x6+QO?bty7f-S)m3DY-0jI z#1>g#i-1xQXnDBXnx)k;*E*-1a~hc<7FR@ZeQbHVEE=kCzJMAz)zBEcw831OGAMGe zeh9~<;8~3CXuac0f!Wx=B?^$2kx(EvfY>_|Df(3m{s$hkWQeK>NuZ8+3!;=bCuX9= zlrvR9N;Hm~fguqQ5+mDiDN-RYgIZO5K%xkGv_&A=;8`$91eiZ)ypTlT9ai6$T2%>3 z6;&LkMOoM_qU|O^CN{LF*-CWME4k7@ds#vF( zB1*6p;C6Sb_oj%@9bY$8=y4E}le#UE>GeU)CpIzC#(VVO4W9CXjh&{bXP^y$7Ve=f{$H_zV zJq)%EAu3}4qRVO(p_aUf{A3ZWO4;F}81(1oZjhvGnicYggkFf1i%0!td z5vEyY5fGw=*GNKjG9O_Z2v%mmiGW7N0V>vj*t!f5cdTpMkor&ke12)wo zH*6*)tu|8;L`kc$bkXzh*)ORsRT>sX+w~jDwjt}bp!O)LaaJ|BqO9f#ux#AKZK#)3H|fbRz}<4JNQ}?!+TDIi4Nlv*MQrs<~ri} z8`$wnQ~zi4F=7=|N+78{ zTU*<MY?pjearCdpC}UV@U=T6H2Bo6(j+rJ9!f)m4DyB=VbN{8fD%zkNr)?o z)dsLCvr!ht$g)V4swriu*0KYflBh@(W)fM*U#N&w;*{EP(NaVsb3X0oF>xMqPN}NY zXf118CbhN;P$EtcP`WsjP0~A?ahj!Emg{qUecpbqT)gz@Tbn=lTj@(*&=u=1{qmcC z?N`422CdP2{<5D zRT5Il#N}%LWcTsr`pN0@&z;=7p4Y3($K!N%iCUSe)LOMNu>#XvY{r7+(+P3tH6Vwg zw}54kGW?LaeLf%psgFU_5L^Xp)@>pZC?^9)(8ve6JTo9xPbbt4FW1_9Bou&josJWE z=({5Tu{CM|8GvK!h6du4M9RQCFy~QDynfTu2tSxaREetUekzEg zfkZ+c$HZC(&F=?)I31>1%hhJH*{sHk?XJuv=j2MJ0LX;F0GLGTo`{vS_LLWR93>|^ zQ=D>QP@T)X+sRzA(Y2-Qw?%3ukW}FzjYCc;jjJ)Iq(yi8{cNG0sz`@qp3qsOg55N_ zXYB^7TbU}H)5+0ln#;vi`A5J0-qF$cGr#N8Z@%;JSHAh)@%0-At%#~Fg$}EA0lxG0 zM_>HHXP%s29u8$Z-qcdrPod`_jR%>({q~1n`JwOUuYdcayXV6=)G}wLYsc%O_0jRk z(Rv(m(xc7z!kudmA6#y?hewYurz*49q4|_j{_}t5o15dW{I1uJ&d%rm@VCEk_tE)3 z`TF~t%{Jv#X=c(=UGd)vtf&{iD+pZ~{@0x|{by1?KI$Z+`pt{pe>d zK67J8=~K_0yn16iNwlwc|Iz-t_bxwtcyYEr9A>Tl{1+cw6@ab3g+;1t;TAhtrpbLP+AM+;Wvi6PnsTWM2_q?0VGnm2 zjHVQ0*NM^s&PM@D#Dn1{yxX0KDl5RMuo{sbYr0t>DN>3KISq-0NEP#3?%cU~ae4LD zyC2kwk+@8picqoxbqpoSb~ceUa0{twm0HC+?0IbL0flQT+_!;^ zUPn#CaK10!`1U&wA3J+!XT#y~h6Y-WY)iNVo2zPWc}VH#@SLcqxkK09iM zH5Cr>%6(CUcg9kp`4JUj?nO`#kl_aKVaLn{<1k-aR7 zo@~a=INBKnOM;R@6jc>Pc4gjAwUjcB`OdX2RR z$7UjL-O^$b)fNq55gkN%TL-uuoG&V4+5))4(}q)8or0>u3jfKWh63II(ZP!@s!rZ2L+miDz?5SF7?|1lyGoN#ZzEk(@+xPa! zrbLM%MT&|PnUO_FmKaA4B0E8Xz#N}@*_Y3BnTWNfQ`UT5L>cj7?5K{ij+u> zB$^TjiEN6^W;c7hL*Mbt=X~Qk?7dc1epJ=k`?PY%zW3bkd*8j+P^;>xr)pI}g$P|v zDKQkK)X^`lwyh3A0?&x6&Yy!>)j;#zW?}ZQtuUNsTpK*6EQ))oR&(;jvtw)-+EH-c zEtmv#zC_9AiQvtxn1&tJseliO68V}?TO0&`5nEELHM^&w=-6v+${=)0ICTV|Pv{fZ zPRoLZBHK}RMM`xqmJ_S$ZWIek%#McNb=6QW%?Bh>&+i~`^7#@cUlS%Gk|?(T*70~D195$02y+ZsB!aVUuOM0;<;bk2^<^Ew+5Gc5zf0YvBz zB~sPIl$mRd9DwjQT?wn}LWBp}x297#X;O#T*}9C)i4Xhk1mD}< z=zPoCUefFhI@y>YR0wFYMKO8Bv)rH4{PBl^k8?KN&5-Y7Goo-?IE6GOTg z;GE7FHEE~WiV{s0))Z`r6NOG|Tj{QeDx&u5#FNA_`Ub~HFe(2Z9UIM#mA1o40h?l8 zf$-ubGudnJn*W*Y7=YHR*~jOPM+l-@E`-KFJ4-qfgD?>YSH8iI2(31ej=gEC)7H_| z#AKjn%zy`YHFn=;=PDw2W>M9uR_=p|I3Yu;pw_52Obz@syhJYXXitxAi3MzgbsVT? zAmIeFX4tT;vu~OIHf*x5Yv}LT7pS+d^yh_+nxrmPrtNhY(gtz}(-yZEP&>b|^^+xP zS5w+CP;E}wj1Zh#5dabUnLo^>j-ZO{H=*E_6~r>6LX??_D2rOvWfc)lETV~%`h`{n zz&V-DNSPJhBZ6jki(LU)C2nSBPPu9kW~x1^0%sdtv^gN)lJPhVT?ZvD}(bbt8A_4!+L_v0u3?_c@mZ@z!8yMA`_${F#V zYh^N@r@{(KB@u5+BCs+>EI?Hecj`=JxeypsfvON9yR=qagOCPar4~5#E5Mo(W#(}l z&mTP6UYsA?xOIHz*6R4+?BUt=@l%w6RY0ZeOZC`kQs>V7;98)wNevNA<`h7JR*jWy zI^47sA#Tf=h@{5H!Q+M+CV)Vq4QjgK2a!OCBkWFqrR^jT6MIe`HAM-4hy}) z5iw`VoN`K93-?)Ps6`vD4O>FQrm7iem!HwVij_;T+`6i{@0QDcGnAp!U;2%Ae*ULE z_m}?MS00^h-n;)~d3?OD;u8V^NXz9g44>S8{Nq3N`G5MG-x478OQ?AhDgsXZ)3eL( ze*5juzxA1e_5I7u{^qUgi9{5e{dl<_9-VD!1!vs4bw#@My^lYnzT=L;DSK|Oo>%-| z{_gKy`Nbdm;;nvPGhey##m_wV?RW1n z=YvJMvEtW0b>*!WZoKjQ(NTwkMOyb)cSY`=4FCM?r{8-2;U`Zwry~uTOQpoPee=q- z=a&12C!^;|Dzq}CEQ7S7lCykVT-xPO;d9Hb2$g zq}VdwC?!suL~E@iij))}QA)92Y+g*9Hxo=t(X!Hs)ls}?I=PgxD@x|x1`~3$W-b3$se;OD`O08TJN{K0xj56+roSBICWrWsS zcb>jGIs*&BT3H!FIc^D*bxF*-9l)m1=&3rOl)wi=HHai!MQRmAO4dX{!v%DVGJ~gx zzmR&kJun332HNzBDzpr{(?|Euke0_+^J0-xXLMXjU0(EE&i$g#-J@Ah*HFF455{kF2Xcbvf-z9mbJT^2Dg-nsWq`X#!+3s5t}X zf!oA572Ao)=_3&pM?RJxOAnr2K03L)dU$yA+Tr1X7nw2>C)l-(TB<0jf6I)rwomR&+00!>ME2OKD5AqSj#b7|OO>(eu2w~A zDLsBVYyvtHzUK2fK5p3*u}XeZ##KsOooz5K|Y)uCNm55w@`N&4G$u29@w`U`3PkI)67 zjBJ`wm}*MeoGrSxzqyKc50Q!0k_{7U+{}p`kLiFYHF2{X2roJ@S@D@a-_EeWQ>lST zlGJjxtu9?v(dj|vDA>o98)Y_~OT|%r}>%jVY^9k2hE?~Jo)%T^S3ooQk{-9f-#v5WcquwSZPw?dS64SX(T1hW=|nY zUON9@*-1C#H_WV zN@M?H#TCuH!?e8MC}lA{JbcN?dcZ>^&kO_MbTrf0bSt&5xr|QhHrq($@nEa9g za}^{ow5n9Qgun_Zl~aZY`{4aNHu?twCM8iOO{BT&(tcQ<-v2Du*WSFj{^_^q^Pjffqikib^7+DiB!tSr!O`3aCIw zHRi&K@>)$RGIB^P?+`FQL&UE^t4L0)o8jd0lZ&UP*I#_`_RG)di?^TNfBf{x)2uaN zkg}I?Ftcw6&@+PFJqsfd+f1M+elZz03M=8^JpVbvvppM^EpZxLq4;6&OJ}4&)F})5 z(r}czHq$tqu}Ngt?EGGx2$M0LWKh=pB~>L6-%t_wDOD2Xs!9S?Eka;rlP{72O}29& z;0Q>fwSW@1D1)?$+D`c8dp{R;gTRf8dJXu=8=y&z1J-Ixq}HZ1l{~H#?FOggH6aBh z1w=HbtkC^1GI2^=N|p8s6I?^16fTA5S`wv9%Z2p0LI}hl5*_!0?)M~;iF||1PLw1xpvtPj=~!?@c+a{jM> z^X)(NM?U{={kgCHum6)@*={fU#d@?(7e;$9_ltCXetGuf#L;f9|<2zjWnz*}r*b^}<2!I(~RwKY6 zl=1E-51zYq<#^pcIlE9wND0tdOHO&YTK( z?C7ZbPJa8Kac2Y&n3?=`f%rWW0$an1*rU+iyB~(FW&0s~a z2zJbs$igr{1)$iBwd~E~l2Snlq9|3m%%6Vs6#~Ei$z7@1_gzBLsvyydaW{5}SRrFg z%nYjIxF5zo=WACF57vvtVs-Pz^#>0hbI(L1N+1TRR3LL1WIGJt1Y%1_(`wpIYZVoh z-1W;9=dOrm=D?E#ki`+yu9m}#Z80UI;5mC>Utv9z1Cb-_V&V@!dT{^YlP-6v6;+v8 zYXMZ$%g9PqjwB8d5Ob{(-hif@YsK05rD;fJUM#wUqr>%bd3v_V3Fnu)vD8{C)C$u= zq$+f|SP-#BrIMzQ&|;g0w?tfQRG3)B6`J#aO-+e|jE)E?vt)-M<*c)K6 zJ|UDirJQru_kG{>x$kn{ce!V4!^@nQy%(KRb%6ra@hQ3DcURL?B#2t@(6ywu(NMKe zlbYB&igHx1Vol26sSO%8nk>P}6|Gw89%lbfq1VK9cd1&cDj^ZNM19{~JzVSwePXF{ zF%Ab^IzC(_g5O3oa3Y>-M^W!?^7wWB57n5a{n~Tr04PLM?0%wKL2zPX-tUI@-oK~F zi)HQ-AFcZJvO8GyN9)D$;cC5FEW6Y}M5UCffEIs?jZ3QThoMwq=4Ib47rE|*L!HbhC7p%m zXXq78y&!;rPNWianr8ydg|1fF4aB_kHF@c_l7L7<( z6A$kW2@0;DO=%Jd;|F39shyLV90ku3L?^_niR+AiaI@{4sp-7%0Yi}i9)}elyUUmD zXl8nHp9f& zuN;HgM4JFMKoWu)TQiL%&Oju9w~$g>WdFjfg44`~BpXQ7s&j)9YRC_ln-TbXMbr$OLT3enC(Q;RYO{tK ziIHniPm`$xS_@agTwi0hHc(Y60 zv|WL87uF{8}JpBLs>JNVJgS&KidiBO>?smk5wJIu-SjHSD^KHacJBt0M z-ERd%2^_UD0AaEM(uJt7ss%B~0jiJ@b5Qpb;H}7cs_LaxnJ5#Nv&(zuZ=XGQc=NTF zUis21x3;%G_|AvB;WYJjY1BC;HR$FZy5%^vfCv~&1h#x;Ci0N=Gul7-t0%z;18;ou z43RVyz#d1-c2UksJ6KHA%sYsf*%BOuOl;yAc7cyLr!FT_F+ZA#s;#4?0GQ7bDzKRp zD~WHFs8|6NRw66nr)qg_H4Z+z8A1e8{HU8r6&3czVB$^UXyPUO^Cr^NOeP#2t7f(W zR?P)#MH21)a2yAk&ay2#0oD(ak&vmnn`aB_FYqWOP@$SqS}thO7gB+CoHD8G#&NTw zDv8L-zN$vgIB%edlr5j7Myyg9WK4=j`Swf#Sk|RD0ORAAG#-=ns7L^$$LN zc=g)##WEA|b}PI6{=-ksiAkkiyK?ZU=WgDAeDY*JrhZxNwuOS3a)(jI5AHws%*)Ro zZ#SnG+rIC;BWA5dgi?O{;mN=EH^2VB`o$l+v!>Us_y6WEeChx2H-7u!*#h~ z0TYP946=p^mOa~^=E5nUQS@S4E;r+1k;fuKsiI8DZPZwlnLqRCm#$nnc>kljr>7T# z>{F&bWoD9u+@;mQf{98Qhq2_u*RCBM9Um?Gg+jWHUwGlpZnwR-*yL_OY^7$w%w3;& zK{6tB-IN8K0BEgJp@-|$)oWK)>vbqOn%rE9bYDy+Tm|9wrX_dpGK-$b5ax%C744~1fU@=H$XiifEx4o@XajOTiVt!tDL5mmv(sF!0Ms%jNd9k%;Sdi{8@?0LCZ zKY!z}Pl>h4G$zAGYaBvw!&H{DV&(7ZHN4SIeWL_4VtA$E&_eNkxbfD2ii+7_;#oZWbwy+WJYKM@AdDVZwRE^a|rr`u*mnVL^!7Ah>44a5@^{O1O5 z5>waZoLEGLQc7tak;R-`Iw|~RHK(enlYss44{fdV>o)Uy5ing9PLo8n(UuD`GcSPV z)b1Fxc~B^UmQCcfk{cf}xykL_fcp#n7mby086+TDtc0?gYIny7nt+9`(WI!YwF8x4 z5L)t%CHIG<1sNBrW|Br~-uvtg(Y7PdpJxo1-^vQl)k4&}j8U4&GEv$U0MkG$zbzum z1uqgZ@hFHwrjweojg5ebW&DMq)VAujd$C8_1kzIk;)j6_`E;H6_+}(&;VTs#H0Y72%Be-n^lV6x3AN*@)H&{jijWlz@>tU znvVoxS|pML5wB*e?WL0#+YkKUsbz%FBw-48olKhXm6&a(s^#&`w0($0dr#ATO^jS! z5gKpXJ{-%{j=y)JdiGFL9LX5$Y$mRwnsu59&rCZ^^twlzVpNm%a>1oZczko7Ir2b` z@@cMW^v2}WsN)qf{F;a)5ubV6NywxNV%`NH*U`K3|oAxf~+=q&Rm5+ zB88b`sCENOR9J{q$g0+MweYS&kV1gbzQ1*)vA>elAz)&7Gbv_}np?=MVmXp%guUxtMM|sz z1%mKKQ#Ax)XVl1?t2iCZoQ{qTj*i!LKWG)l>Ne!i1qRnGw!lnPy#BOfW(A3I_6j@f zi3!RI7E1^MjL{GzquT_QY-4V!TZNfUR7VO8w#+oCI?xXgM^$B!5-df=B*0GTbjBv2 zrR_;dmNwjSE=)By6l46k^SMw;nHLN6S%_6N<*^f%nr`+Z4`0CNE8`qAHmSxx<94@~6h1cGD z=i?9VZ8m~YNQtYcf+2W#ezD(ee(Wo+U;fs2p6N}Hu`1GX{f!Tv{-6KWH~!r}|KkT)e)6UDzxChx;y?cG!`ENA{o>Vp=W4#S zPR#sdqaWTs|E+JIeR%)m-pP6DSEo-e?p^Nl`moDg?m7nNL=b%IoqIjiAAjr4Kl+V# zba4Pu&uAiL=8AOh;pwew$D7UhI1H4t9qTIErF>rX|Ncww9Q^znzwifNIp6-^2M@RF zgC!?)=)A0pr~(3!3SnfU*2&2O zvj-0!J$~|Zx7{!L!~_s83`iUsY<=%IH!)K0dm2^ZMbzTBMRtO02Nlx461MPIqynB2u%iP^lP2 z$lQLiN(sb7raOrE{QTnV?1Bwlh=5Q_NlaRWi6ci&Ypn*`NG0c7Y86rTQqQgpQ~{|V zm8!c*bONP_b%sD%H-fNR?XcetneeGvjPYd2WfLSn~vE&E88y>@Y)B8c_!U zL^Kh5bOTI@nB8)iyC_~Muc=2<6ewdUBV$QkCUDtJe-*;W^dd?|vrj*U1 z_+TJf&CB#58rf=&hG+x{tc9e z;3oWC3`3SoRG?=AE=Ng(l&s!}*NLB?3rG{T6`Qg09+|PowC>U(Q(|OA%Dl`tUUC)e zi);tk4xU(y@E0WnK@4_cnkORYqHP7C6l$vZs|~D9-YA?Tm{Y2rapxO0Yocern3iVFsi=k{`|18(>6ZA zG8ZR zRKsi*bMncjU8dQw1CeJPYoj|O+Tre-hVk{61ks>sp+}7ro#|jS(WSXa@U$ioBhxv% zAL3U;FSli%Y1MIN%FLsvbsjP)@~sZy;hD*X>t|~eyX|mGn`{N$X|ZI&%;5qS;Nlt5!;2ywelDX1R%0U?OO*ynZ<=bF}5+09@}@NLo)pP7PAGi5## z*GN)p>p#USC$ON;?#bjph6eMow6l(&de9bslI+P?fMkYe$Y(S|l!_&7ak_(ti}Ap(g7wF=~po4Fho|rz!erXk1u~?ML=t zVn0D>H^BT%H6k+Td0&h6F#n7n$!P_{o=#c}XvdLe0y1HP7~Wj>Yx_=Eo7q;*)S~}3 zr<6*mfEsiq@!m-00>sU^*hN3F3L1!Lr7c*v^D zp=x3VA(4_IXR@oLM4n3pfQdT7lJwy0>`OHMp)Wpv`^P^+FWkh@0o{B2-aq>1-}>f< z=lNi`zCKZGpp~d9#5*BSC5TPTlh9FB3)HUZRH6d6N1nB26K0Z1)hfyn1YYG$gZ&h9 zxkDpQ+aB#wRAI{nz}ib>ViMild-VPLkNe}p#d5ViS`7(h7>M9hocLZcJIM0h;{k12 ze>nnKpriRh0K{)~nz&7-#J=qX4#Hb%DJdXgPDMmTn5KK7W>ZOF_o0|m6*biBj_37aktxl;ft?-^IPv2 zX4(&9l>v$Bs0*U+zI*qVzxm0Z_~M=2rvA)luYT#(bq#9w~>h2Q?}C*9$p+Er`7ZtIU# zH{~YrpdD|M-u;{;&SjXa3WF`0bA_HhsTHtjjLt zE;Eog3#o|IssbzbA^;Dh>lG__yd0CJtSV43+5!>+?Fn!u{+4)5mRIcQlQWG3)kqG3 z0-9jqE~b=I%FKyJ<%>;yd^+r__BkCbyJc1-xp`&zrBB}&s}_~Z?RdE>+tJE1VXVra zTh|V69d850wgS`GH(F84Vf9vUJ)Y_2=VlJ5I1-#l2{I__S&bLGma zTX$*Mr8M{;1P4ICvKqKJCZxz%(a zRVjs3#rr2Kh%^)Bo(}rOl`99!!=on`!|ut&l`Drgt{z@JTCUg23Y>3;{a#9~-+k}? zyB|JWCtfe}vQNuCFEg*!i`8H;hZC5$=2TFKE!y7BaC}75(L5sQ`g#!v?E~0 zU42l7+-x3x`&ct`-*qXGsBHJ8)FJ>iHWBU^#ZeNY>l_<7(wnf735v;1^fYm|&_-xd zHTel~l*4TxB5iO`ybhgTUnLI;xAOe};x=)ca~yVRv>L_hf}3!S(V9|_^$tSYDvA5! zZTbRFx`5@IsWsOi1x7&utWidA7I6^VlL99ar9osr==pwJbZMDr-E*J7gbd__KG9*H z1Zg|!ZjfD7qerc_Z<|q596;69O;_iR zVfb=D-2cV2&`l)~0gY`5Q3&UsVyQ#C$v1K$9h8~7#8s>~UwCkKGQzpykigj)d1h`D zLJB}wH)fmL??a#d zE6nCJ;%AtS_&-&{pNUz~TG*ixRR~|(|2jM6Ue(-|M_L{tg|cp2>-*;}xJSU7Mrg#h zjhov(*yp(=6HZuUo?`W^eRj@8eZ!sJYHD@XhiA6@O(sLMCNhDh>=|dNTF}H2P2$uv z{p%;j{H(E})Y@lSb*W=Ygd$!I1G6=ucBR5MDtsJFvv$4EfCx>xJt7~I1Wytjdmk=G zvn`=$Y}uv{x7@LI2AnA|mLr_uU;|^D?Wc_&Z0bFR&>Y(aI4H~yqEmT{)(r=tDPA-s ziFlohVtbfEIodKeA@Q#}*l3z6j=*FoJ(srWHe31-d#I|{l_G*p?)|h@gkVQq9@~Nk zX*lVu*|x-P#2v5pRXYz=AypH*FT6-7Rws8R^fRo`;#;n7TLeNQQ61hZOW`%<8q?Mi zV4o2voh6uIiXhAmudiRzpfkanbbpkiXwnoKHVi>CEYC31VR@S%Yt#2MnasJhiqnVy zF!n}oj2mxjlzI##Qv=W{M8sBywOY$93C$%;q~5V^>asyZDRm;Ekqd40Dy4{!cDbV@ zQfnesHI5A`N>w?Lz}NvrQC4uu<4~wWA|mlypCZDh#sq9dd;nOlKuMhoFSV^I^ma1Mn4&Gd~0##iDRlmDRqEdlsNo@#$ zAyn}&jVO%NtI#Tf#Ofcm%R=5Z2mz!(EDBC3b&FcZIu>*C0kv{pU?Er&1uExf?@gLE8 z^VC1P#7be$TfMU?bvkv-q~Mga*7MVgD&=s!JUlq4V(E#-vr`jCTYZB#nMp)Bfh^zK z2_bMc1{4aYK-q(z0RlvXgkb$^rAl^{qzqJRGps)7X*LLi?GsZEoyCD>P%XlsMVCcJ z5VJ(aoRV5&BPjU~J;T{9uL4MkyWB4pd~~Q#Y=_}=Gi-K+6v(VyrqpRp)lwWxCGGd) zenc4)AvvyasKjwjmDm$j?fh#PY(K+7L^*X{p01Y6)OEcQ_kCwqVGZZ4mfhhZFEX8N z_D|1t`=N&Ba0RLX?Y$U@YcM)J+kX7eChaT z^|kN4Uuqh*+p&~Eq^K%q?m7|u*7rYn>vOMt?hCJe_w5f7diS~<%yzXu_|Co4~9_}m|4pB@d+EjxK7O(~I4~d3vUpO;j~-u8sYk2);PEDRi)EJ& zudG*n=Dtsy9-p24`+xttf9a2Z?qB`c&;8&2-tXRjdeJSqOO?ziF>+41%h_3sjuV4< zU^=+De)0BFfrpQF7Z3M3RuZk%t7n<94*!6Z!AL>xI0&{j5Gkch$e9vzmvfi7@6sZ3 z-z8?`#H1KScKfoiF6hLG>8Q_{nITe@1U>1kgH9DyMUNImbu8GIx*yAKl>J!8q3rj& zqkd6tUU~BLq?Dqn*RLGB`ofJTr<>gf8)kgq4de!2j6+} zoncoPdU)k}e{_X7ExN9^if7hGlZ+N`rP(pdA%`LIL{YiPKt|}ipcbrBdo!A@rhscMGpMOjD>K(B!%$UK#F}Ueh1rD{cT!dB9x+~CUar=wzU!n` zsS-+Ap_a{RYRi?ip$_Ze196pYBTxa@iIISG?qRw@w;nzkWUP{?kRWGHIXQLf$%15E zD|NzOLd@zOD9rRjH7BxyE!0`sumGsll!B_LlySS?Z!bh)`SRTLi`&nC>gez|8oxn3 zY!lE*p%BmahJ^xrQ{YK@1k!;1an~mROAXB=$!GyqhqqN)y~JU-uTOFdk#my2$ZQ`e5Q&Q1UwTx1vUhX#c9-b|eeDSrLuRVA5Xx%~N+QH(*TSp)&RrW=< zyJ26-eqY9+jN>qlyKq@Dm##C)PNUO62ZF7^mG|E8EETXlwOl95|-H&oPNG2>hUUsxdl$aPuKw8j2 z&s8y$v>RnRh~-vr^P8JIpgDh*h0NKDd)B}vjP@qYc;7P zTR3t_3WrY{O*ZGhDE8Us8;Qn5ezNA<5wuY|z?euv3h@n(m^}%=PBU>f0aU=_PyYPS z3&y-OQ73n*!(PmGH|!f(ez6rHb;T0};kXU3Ep;$Qwou$=?%QpeCkko<>Xo)57#3;@ z(Ge}Uk6@1}n5Xd3(WWwOPhgbzUr3+n1GfnC8^>oQZ{QJ+u&Gw-&ap%dX?eX@lJuEZL?JiEoN8U3vJfo!ZI zX6qH)jeXpLM6@$;7ENpb!rx(TtWvr`lb;~BatDAGtjZWg3L z0n2VynQ>+fIW)E?^gG*i7V^P2?H{tCP3|?$u(Xpht%K)H8~CD`+MgL-AT~I@;%C_q zq79QkF3a2~4r@0*mlInPD?1+RIH^G|YFSiCHG!Csh;m9*MPLk_w(XuB0AFqwi_r7* zOl8298|qsnAx;e&gaXk(5YsOvk!dP1G?guSI0rE0AYt(*OVc)R8ofR{DxX4#y@_|^ zt2PJ}gEW<43MbSoDVzpryV;Hv0{keD`@RE{Xsu%fyGpfV$Hc@CD}Xw?dSG_F={IjT zr3mgRnoX&slwmFGi4?-bU}B<_7$TA=6CC{?_-u{_)9ES`7zRiiap^mF##{5f!^Erf`0Z2!Lh4 zRbzRAl>@~sRGVJ1c5$i+8vWZO^q!q8;VD@T5tLUo6-<=4>kc2>>T+n*!TR1|gb4nn)#ARl-s7AT`e@0agkJfxxVAui0q^k*{*o z-0DZnLeNq*DM7?*{HexA0E!!*K3Y*L7T0i?`KN4G23r{pkBhlFAfhUIak z!4h~U$W97aO_n&uw(gdHV0mgptAo|*aJ9#76y#NhoQe=L=R_nT!&vttNlj2zWu+8J z_+*8h5(vsEIW$m|Dnvvnsj7%1rmoLcQ_Sw&Rgv|od-=tyl=BCloDD+}t#uqls)C-L zAwzFmU0*voxa`W=`L64dx|lW}r3non%FLqr@bTk|(~F!LqDADv{g1C4uCE*(e(iUE zc=d4o=YIN?Z@qi(TOWLUWxa-u$uiNH0PVUo*81LupS<Wbi-Z$J2BKk??z{JuB7_U#Xr*REIQeI3X1Esevf!>wh$vOoLsOIPoF`Ny8Sdidgv zMF*rVpKbKs+5R`)K6&)y9Ao|O{@mx*OC2ix>7RP}dmo*?^YHODj{;&SS@0<;FmDwC+DYD=1 z(`HA^d6{$Hb*oifb=0TTI&;F4%Y=^lRiAp&n&K|K*$!__qEKS%sF_kqIdkq(ml880 z5tx)onF^>1hM{f;0q>2GA!s7XiPww%aMdp|G69Ne-YgRnQUQyIDrp6%0~Q@0Ei!2$ zqwGbX$J>h2(-R$b%jG&H951_VA#~7Yf!>iWH$_^ zTf*gV6k@ClyFFF%N^L?6W-eoa0C_^6>gdoPUPXy8jN^8@O(`j~s*q9?-bQPnv%r(a=fS3as)0Rq5B26hlM9Ns0vNkskK(|%k!#jPJwJ}&<^o9fJC5Rc5g(Xq*l9& zncg|)_ul#B@yVuN_C)9sua|kf?2p%rtB0$r2aDrnzg*9rS zzEYH!DDx}NU3u-r>zyh2Y76O}ATcd~u47&<=xBui_aa(F$5Qr6U;o}mf9qF%>!-f( z`p^Bu7wa&Z3&Dx|j)-|E1s1)dsGdF{?BG6{?^T0yfxCtA51MaBX7k+qDgb${33A#w zTnc)o>%`Jb;H? zC;tiUVGU=~EQGDmR3JRa@WjwKKAJfVs!fiFi3C=TyE&>1SfW~Ls2>`rs%eth*$By; za(}`|(R3E<7d|n!;)-M>`{dw=T08)NHLf94 zg@_JSF7}$4mYJ75`b5?um_c2~>n@E;j8%tXK!&QQNXss0s-kHmG+*7X!oyP#C6>)M z)?8n-v|pc&Heb)R>g+Xh-!B*%NBd3_P}}r4CKG=hA~^lXJ8gOjXC%PUF#PUzCi7bjVB1viqk6o_?c3j++=$UTMTF>fHM)D{P|dr zsEOOcXKIP~)&)9foTk)VhJ$Qr!!#|WE!}snh&7a4Ra_1_R9$B3Gv!RBqDIJfmP!>e zfl2MOWvAu{H>FCkk}ZMEHBksaqa+ZZ4QR6=*QzsZMuCxh4m9P|$N5&zd5^UZ!p?4H z#k@lYwiG!-IL=ZqP@i5(*X%>gGu|?1R;HEt5t<3n8Y>Rlw36{Cn|c#2LVI~L z&~3=R6ER0Wbb(%cMOrc%8uc{ga``1ssSzP-CQ7GWZeU<0ayrR75iEO7ycEA($w~wf zlx9;swOHrj^C_aGEyIz~jfI@8Q7mU0WS|<8TQd+-G`Rh$iAS8PiHHw+ZTbWOnFuK}D|IQucq~9_1ypL) zDD)OWC~X{8y`pMUI}s*QkG-pC%B-Aptk%820I?M$W@Z!ll)KfzYPDRPo##3Xx$n9% zvS;2DP*Pz9W*&CFVaqe~zG zcFq}OJT4-(U>ZrGR+>5#pNp%g5Tz!U;_AWTWILRlox@x}icCwvAo}p}`F1l_fryO8J(|gArn2cB6{5Ty z$A^!eh$vGM9Wv{1vH9WqpS=Fr&+LZs>tBEOPyX!Z|NB4xh5zkec`W0;Uv{+=MyiTB zRLz+ZUtVrLeCOj=Ui;Le``@WK=jD>XoU%c`)ODwq=fCz_-}i$mM!<_x|Iz-hBCNvmLhE~9wSS&gc9kpCs?%wWTq}5CF)XIB0rsvU+a#S*I&9QCl|x% zX1^Q8VJJhDp;l3gurQF6REH`8h1Q{x@?y~?)?zpOP36X2Csk#O8w4`*go_}>8Zvj6 zJ~AV$wyQeP1GE^vnwzgb=#sMPBGjjAeK?L?>7h}tL=wT#3P zB#tOVwFG*k&E+q5dXOE{sO@Ejdo8R8eT)&jvz`1Ky| zyD8zjs$)cmlZIryt%}r>>W-E@=Uj?Z&5L!vv@3lk|E0RT*IHaA2;}$K zYO(QI@1o-KVTNcX$~hmc7FUmt&Nkzd%l#YGPU}a^_S;_WN3-I=FB5$-=>zCoH&&G7FP86#Ps|K!Yw`7{CQGAPO~7 z-SGf^^fqI&q6GKJTARHFiY!;orayOL8i&$+H?cnR)^e}mc)zJi;zj1d5e>%0-FjD1 z?&}2_bbUzS@y2^?se-gn07!`iD8(uzgPEjib1G~X?O#<$6rHtF>bgEE2t*m%z?Dvk+3U>hWI}M5 zG_44=gEH;A&QvK)4D{q)+ib(h4o}b*aOTB@!)c1Zp4{9#b7Ut+)8)sUIrU=RXz7QF zMD}%QjG~MNWkQCO$ z+#ks+Xnz6?!TUFv31Y_ddQ*k&YeOS+;6(>ATxL>Fkh zRa>e^QftJCuR&N7nhsq%X-#M_6M{Ap12Z$jGo5O9tN8Gh{~ zxzf}2_=!1;#n-5_Wj~x?bqH-7FQ*XV%aIYMQNyaLTYaubOo@>|RjeF;oSH!Daa#Oe z?$Za8)#3~Yc(36BK@klpLW+HjyB(#F_kbhzW+L)9lR04K*qc30Y@I)mQj3v*n))*Pz@S7_8L-%L z3wzmZGYU!?k>o~BIuno*hzgN{2O^Nv%$7mMs@U(w-Cm0<`&B$tKYC7Wzs~nx!Aw`-unuQ3`&%`zRM{u z@`}Iy@yUPm_rCk@{OLD8{BVEs=JMb93qSFH{OiAQ3F*47FoC#KE9*y@2^}6ie)8sL zUwQYvkN0C?%402BB@q@m^*LWzADlipee3n--v8*yUZqq$Ioa*@`)#e(FZ{uWPoBGZ zbmi8y-ThOwq#h<_V&Gu4`u>xP|M-`_`)~h=H@Caj{`POYTZlSNuF9F%ixnb6Wj|o7 z4=*=QJA&3+u^$UX_7K8r$;_E8&MBlwi8)z!WMZZSN{Kje$GXVbs?aCqoN2+_CFV>7 zD!_g>K74ZeDJ*v(Surbs4`aUhO!yP&3-)Jm&@I7xhvx!QuaxO35#XwGu!cR&K^a7J~o!n zT@)pc%$qs2;DlpbHuy!PQ}GC8Ff)Wms#URYN-foH#)>pj!!V9jh;VNwBAKQ|@7}$8d49H7E;#3Ixy;wx0?i(BWdfzzTOe)Zmkn7yN#0w zTE_-8LuG|PYk)=NL~QK_y^XEosu-WM9}So?nyIC*2BwQ!VND|MXk^YI!CH9OT>ul4 z=v5oF1$_JhN~-W;vSwVZ>8hrbiSxb+mC|Q+=2={LY?=zEVned(vCS%P+nD;>C9Rogd!4cJ12DD~DHB z{d(1}7u~Aoocoqj01*`#ixI&@1Ww88WCWJ4rD`=MQV3Qrdm+mC0B zQv<zyhdU9i*zLf>D%E z5>t?Ll#?MCyS@uy>J#;0wk6X!FL!r(_BJB zszxSQ;T-~zlK>1cHQ5{|+hX$fsq1ZR-f#2QTbRHk-F-AD6XnFJI+kLID&b|jn*gh3 z*qlKC7W+40i@p%^smK4t4`zCnFjX0ImEXMdDGjr|$ro2u=8;)@OE{

      IU+=sj4nu)gI?)$d3}9n$0{<^8qRD&gWP8Te&l`p0uPm48Wz=MQQOP)?PRb; ztk$v_yi;YS!E*Lv%vPcu{5d}?suVO4Mxt?KFqsuKTLd?UMuz<&3MFQa#u3Spxp!g# z3KAD+Py-;g<9~A&+&2v;{^sLuRJ|;A}II zPE{;x&)y54HDOsOW1?OGx+c#AgmUlP{IM+(`vW8f0};q@Z!?{E>wBJH z1W?sdX{?oCbCaf8+zLgB;!z>%8V~MhEWi>a-0t`#j=Vc~N65;ROV1lv^B0i3L_DqK zJa<2|K`aKC5AJ}H23g@~OSIy@4C;W=6>~q`oG^+><*7Sk5z%1|MRtNl1dHJN>Ee{K z6i#a#-+|H#X0>nfrb`ZgFC;l8M4xov(CVL}dDr}W$EVQXKlrj|dM0*e- z2+gG7W_t1gngmvKf;J;188Rt(s)A(mNHe7`(Z!xf&D(v(@vyEr;v~84&h}}65-fRe zH#Ol%rvdM>WF6f1Q=MM4i#SIyD>2yVj#VZ2dRyEx=_K-lMM;YhnPO!J`_8S{Cbunr zggAF`jw$yue`CkD%+eW6Zm$2bD+9}atxmH>V!y!h@c!g#H+o7h3^v zUaQ|fUX3VsFBT!8(+a5K?`uday9_1H$RiQn0%h7j>bvyNsNbgBz0QrUtSII0EmCUM z7=~F_Tixr+U;t9fQEovX>27Jb?!}e7IHDuP`${U zwj%~)1^?YA$5~TmWf2EY5fB6*!>y8 z{KmOVDKxjoUH(1BLg<;Nv_@qS+-n*o1H8E*1vz4dm~x*)Ads<7&)af`tWOf}y#F!n z>&ykkLtD3xsVntA;jWqN3DD3`FXk(7n@b2pRI7^Du;Ha%301 z?AB0vA6!Vx=1D-sUd_D^RPIeF@b`zy?V=R^aDdsr?zJCgX8W##1%tZ`^0VWd;YLUAK2+tyNy=4yn8Bop5 z4lALC-rBtzDUO~yAt*ja%Yp6UsR3qDE#YbeD5b!xEz6PpVd{i+ig+qDbKOPhBAKa& z+;WV%%u)o^o0>WNBubYgG_ASzk0)^w%H>ug_+ybZhE$8utKE&UXBBvnbRLl`lkf#K z%{FvoAexs}hU$&I+#NNwXYjP4heq#zeaKC>5f%SgAyt=Lh?ZAAENA&hBshwO{zbXV2e%`o;O3dp_5aAl4$# zGuGkbk3RX$n(dI+%sf4Z2;%-5(*FoQtU7w2(9Ggw9vK%RvRdmn@K6eX+eL1tc6}?i zvrJ7UZ-lSv9qJ55TuV|C2AHXY+VY07V1^>P(RCMtODW6-%+020zPdTwOw-MNI!w#F zEM6$cJnVKS!)6%9ajb)H#hULxL?A9a)H-;@puqr9Z5lHI&5XcmS_|(sb+@Udcy24^ zCL$L3>S_iOgTb7eQ_)2*dB&7z6BXY?Gf^)|EZ{=SYAUcM+L}f63p8CLA{a4P0H&cb zl3FqXmq3y;*b4RwS}pkUe3pJ217F>!v~ zJcMEzFBs26@pMk`h7u?9_HQdn(T+VrcXJ_*QE|r^GyxopLA!B#JM6{N>=K_Cc@K4? zuJG5~YfvOm$01-ppv<1Q&LEJ2pb@GuQf=Z!5chYRCS_Y`Gmhgx1q8$8elax#n%dlC z5p7~(n3guTmW>6YTd;vtk-gH)ROWd<&svAdTUHAs^oCpSV6=k z8J^@@01=H7)cWj0<5CqZI+$n1tEpE~24PAR!2lxW%Hm!)v#PzgIm~KJR8$Lk>;#9~Nq z9@I@hcxcF^wsZuelC=w62TGyp+%=^L!Wkl=@F>vH98iG{*PQCgL!H#qWFSx_wp`apGwM5jlcUcu_IM@{-_~3vc&B; zoczAE{(qv*C>e~C9V|MR#_wdNf$VX>YchewE zm(Y!LGvy%-0#l}p;3qKVhcIW%pa+Z@fFKAh3}{3ss#}Vx%Bswaj0k_-hnbzT_gbn9 zRCVorqi%$|+cmSZA8YAS{q)mUF|>h!3f)HiRYZcloA1NlHWyOW7UkNw2o|9#TZZg` z(6a%fTlLuTa@q^PTL1~7wT<0GF zPhLQZ7PE2q*Vj2kIC9N6Pxd@~ZbdlNG>m%W;D9`R#Cq__)YV2DC$!%4s~4_Sn&KYt z%MSY+lIVvXnnF=|57Eyr{VvoTxH=06M_|f$`Q%<#$z{mZXK`LUp78iHPmmQiJYR~( zHBQH5p28YskBW{;_~VnzN;d_l;?3&!7#S+LAY@gHalTD$Cnw*LT2m&3nOTNF>X8|j zsSh7YX>$FnJ^`r!WjF7`cjF>h8k>sKhxsr}W-}HTUS!sxdUBh+Ea=xFn7hV_n^C;h zY2~N9

      1N?4M=%u>`zxdwRh@(Rn;A2&sv;#B@8Zt9dgR@<5qUV13$+PTKaBR9`< zDu^gkb70P>$h^7J>y`8z?|M*3<(H<0j0KQ78Yf9DZ(=4h{n5*&^7iVwP>FK!98>9I z8lw`E>iIwI)Vy^3#mW}W3#C;^5C6#4XBqnZ(b>SHiOYz9*9UDxRyZ^wte%5b@^l=M zk|bfZ+sDifWNFKDM(8}RiQDVFSSQPh)I@Q?PPG5&fAnX6_U-LA-#>r<{@l#e?o z5}ul>^gRz|La2&Aq(-cxTUddi-s6=BOrI%#YFV=70Ie*pmHxDB+$JIjr0sRK^DZeJ zvtytCkqphSZNyBfF_t+ZZQi4Od*qF|A%m1jTnf_<3p^ibG1;Zvov<+&Q(|XpUK_#s z5$=5-X6BUe<;ci`^#jegX=^GR{m4%&>G!!ev7|wU^)Uo=XYZZvP1!^j)u*TH^|stD z>uuF_6%kP?>1Ni=NADmvqYx5Jh`gHe0`B5D{6tjr)9e1@mmju1z-kihTq==%@9d1~K3>A(Bm{p)X@^t*S<`*m3t9mC(Y{==u&pI^40Ui-&~{qEP!Vv{5X>mg#$iY^i3TA4NtA%<%E_XyBTpSrU&*7?N!3!#&AVPS! zE|hhZCbFuq2^{UvmCJ-%yUwLIV}?fIYuT1?!z8^AHzl;?h=PMq89*MaDTh+ z`>uWT-bWu}z(;aXsjvyS+eimB*rthcQ29p)(BvnTdPYfw?~1re*4{E0QyxXC$cV-; z^ME{`z-A3&%Hk8@8wmcvTMaxRn6X~PV{Xy`!@CZb9*SiK5d!F?3coQgXE zV^nG?>0=1+C%^vw-ShLKZ~LP^wr$(@ZS+2dnT>s?jYebHud=SF(E)igX04WU-Zi4i zW^SWFo1zIXOOyAv*Zc17i_p!tK0d!~pI`28k1bNCW7I=8d+c_9Y??r_@EQ+ZLv0f86^B^3$9VIaySmF8cg*`}xb`=U+ZA3Lloc^o?zV@taNJ6vZZW;*#d4yv#skaRJ0k#seIHD_a z!Sb+QoJ#EEi01APGAmaLBb0SAo@YUEdbXALk4We`jB>z^nf;mP8nHF-Y7$zh8JPu) zPcN#Xb`&>OsBy#`O7+!t7Fg+?Xf7Oip~L=!{t;QZDjA)nx(;bL3|_ zcL}5|T6<&YJO=IyN6ThIZ2OI$l|nvGJvfLs>#e5%xr$ z>7Wa;<|a|S2?k?>kyofTXorI~B@3tAts)R(gXz)ccplTk zEY#D6v&K3rk(=(BS>bXbG^$7s4xEqo+@O=Aod2%ZsE-#17{)S#QS(ES5eHz;_7iFH}y4NYgbEY}u;$#v1#RG>bY&Y zP$?6cP%;@SDSvK8Lnws%{643`B&^~WaWVi%Cb7+4vh~iTaVE8LkeI0mN@XCAoS%P# zVV$uJU&NP2X%wTuM%8p5A1u8Rsv$LKe#0uIBm^Kz5~B3(coGU~`;M}<@MjW+5oxAu z@_?tzYUW8#d5`|)Qc2&(3Z7(@a|QhTZOjC`IJV4VIMuOC(L(XlQlfq+ z#xj9LvQ~N~5u0IOzf64ml*cI9rxa%$a+E))|nf+sE&dAy|1@reR^)~vfb~!_Zl5-Wo8*lOCXU@kkqDR zPisT@IBzL3_JnI!FK04 zA;6qPPmye`CQ~@bh-TPSpNv;PZVO{Z7bU8ZPKT02-#Q{bT6TQuh_cW%Hw$#mHh8Q^ z*Zh75*#+%!+Q*08;~5^U^XD;urWrwqdU!PWC>K5qfnd7k+%nyKWuIIUm!*w zmW}5ngmsu>-`@Zq{x5&`@&Eo$fBQfDPyXtE{XhRt{`ddI|3eopDjp0V&+{nu|NdY7$(NV6@4mhM$*uk6ub=*%@8A97Kl|o4-#&e~t|ZJ1-R}4855Ii+_}YJY z-9Ei-KfP=}etGEa>9;?<{LSC}-uBVxmnMtqx-z5b zslYX>(kZ#6R4-8ssR6IY@O>NiZQr*2?XkZ;_WQQ=VFq#V^8Eb%dRdniHSBPhS#&22 z-BboGdoCpy1VJBWLW*#h?UZJCj4|9`LZFF%cz#+`9({CkcubbWa37KWmJuAY7z^vZ z54&$;A2EwFrc+1Ok!OoBbMJ4TKYw1=>!RM)>*(DEgX1TN@R1X!B~d*_^gk0;Pw1#( zN>+|g(Q4}w4r-wk&wh3__8Mi|J)-jAeO6VlbA%HS+rcr$zU@vKhUhj~yde{YGB~vW z^CY3H#Z6ENAXy@dNXCc(8eJxU#*B=o&uk8}YR+`{7w*yd!Tox<-flPd9IdeTzK^kO z`@U~)udnZJ*R?5Zq!p-Ozh0OnhxJSe-^$^uU-zitju%LMK~9hE zB-oY!mVh~hzBJJ$X1;B`50hjLlg~i;WqDFgkAScIG|XpC+;L#=T8Df#JJ`G9_ws_~ z$Gs8{#T8~8IbS&)%eiaEJI5(2jd8eGU-K_4B7-yap%NW%_G&9p;t394Vz*g4$s_x8E(xmqF{y?4_9RV{e{d9`8IoVn zyb$;4I83DwUuOV{#hxS_Pw%9BZJf4CvZ(7oNon-rb92K>1ha1&=kcmTjASDtX`u=W z4iBd;jXWGh$rb&Qy5uWqwIb_^c{)*qQ$+v;w&wuidUGCHBl~zy*C(TIm3Ll`UT@0N zO;YlYW60uta6U53#+x-I7sVgVJH%TSUtLS?o@1=b790#lLWN|&B{Ga``e*LdO#-Ec z3#E6&eDi^8}}SOTZ?p3+6O~4nbzF?@aktjJ~^J@u(v*qMtHs%6^)ozi4jk4 z7hr%rEU4hHlgJsg~m=-fW*%rm4`!?|TF@F2;{xARVxmcCzQ&`Jo%GY$7~}JW1B3RC*+U} z7B~YP7Ic2;z~aMVvFGanh*XA}1wb;o3E40~gN^&=O`2XW>(jgUkH`J7-Nl(Tf7yL3 zMSgY&0)m-~r1=wC@py!w!s5xt%g0amm$#>P@1NeiTb32T_4!H2$Nj!-Tet2$mSv@A z9SnQ&LI0UJ7tdf>3^I>5>%$fRvqO^Xc-2DCvXnTtuXT7LEJa#NW3m$&}gpFaQc`gnPax7U8Rz8e6* zKtI2_VVF0S<@WsJZ$Dps{qlN$dwpD*y4z#hALfgy3R@Fx8i{ezg~FzbszP)XB-^bh5x83@vxE`e~3TGS_ zvkJqyMX&J;QX$Z9ct#KrX(ALS_tD=T{q_EMdu(s_{n7ijbu&Pyt*y7G57*1GUd)58 zWX!zu3h^iak(_50tC1B)d>$2#!?W2}4N>&Z&+jx0{ z9-Y0+yNw7o`KbKrXmSxg7wB-KKfnLxAN>da?S)*g7f_pe9O82vFZ|@F`*k=CY}D-8 zmZ~o-OW!u@JxihUgjCNUGU8q_rUw}r0zCQ&nz%ZqmKG5Q=|ZZAHfak*hXcc^?tXe8 zbvuxig(o>@(jyj?J`YK0aBmQYyF{UX{z2punpx-$cXx|Xp(M>lGPhy02{`&Nu!j_p zXl+?87nUL&))i>lYDQIpvJe9gRGetteKLpXqBx1`qPJC^uFJOdVLpcU?j!2pBwBaC zMv}9`gBi4a*tUtYtZssBpl66%b@I_UXDjY5p>4y8Gf4)DQ{QSBJOvNvY zUe|VgzAe9tI(3L}fsi!%7^9OmER%5n6~;KDG&nPmn=gLyw_LNsoKNRr`fSYHqZ5po$QkpRn9dF3cMAK5Y=`5NHnrX$ zq)`$p9*$9XECk%m6BAkei1j-8fRld-HR0LMEi-d`E)1q~Udj2z*x~3cb1s}M1s_Y7 znZpUKRj@V{av!$$f#^VX%A^R;B*!&)T=8JE(pUFC^6H{;!i&U81Czor^ZJnC(%=BC zsMjeC2}I8ha2?q+8aXLtl1671^BjCnc$GLe#72q+I9@LnfR17bC;Ut2_;|(n6o;>N zdg9qB1=Ojv$~Zf;iGe*E+2sDzn`dcFp!B#^gr4aLDj_|I<3076U*` z{>l4Im%haI(81G^9$G6r_cN7RYPqxx;qKze@z;cgulVkS^Ha>~`4TaC=5BHNY3Db| z4hBKb>xHWfJ&=H)+6*+mU7A zyn-d}4zE_}ESlL%00A&ZgVuGxLyxBx<7ojVgZY*2Pgm1fd6egqlBIyP3w9Fb+Uv;D znY3gbrNgKWc31`LJdFXErxDN3f^IG}ASG(pSmkC$niwRF-ESjL1HlD-r%enLKfN zv`;Lpl_9mr{)vrqRKn#+{7$szT%F4B0nEG58@2cGvb|n!x9jtByDaxFuV#ZHQOE<7 zb9^kIaa!5>f=&~UZlxvMAY4V<#;1?J+}~cm`PKKA5ARH5efNBMemDC5*dA|RUd)Gx zGAdkH$GdKj^mf#hNVsgCNf*=dWiS6pdVrNGDG?MA2?{1PjL4zq4Kr{uUopFahY3qa zB*-{oZh1K^8SY8VhZ9|vk534^*SU>WfTiM4S$W-DM9a?BgU0WCr?N6 zq{B{sviv6{(@!5j7UBin;GnQuCH@=;4>43YWs3Y46-vt?r!BraW}*Y-#MY58uA~?%NMf?=H*I;;H)>eSkobYSC+(?jGHm%%jx7 zWoeJ$+n!!M-KJFty3j#ti#$eX8eWG7ixe6zr}e;oXN{zkmMCch7(M zryu_6SMUG)SI^&Eln zx!wNZhmU{w{I)b%6z<+_h`2;Yh7_E?J!KJcUr#5s0&ov#G2P{L)bVrXCmWHTQ3m~i_ z8Wp+WR2jBzd-r=E_pRUev5z@5h!kA}=4OF%%rj{%h7*l53b$x-tc+VMDq`dq)W=E?heYbEPA=!F6+9i%eq8oI_YM8+qXUtVVyWDY0Cl>AQvVf6cDZS zBhfhO1|t>0VdfjgeeX74ZYsVu>0=~Z3k^aHOedCO%zn6O5n~rr%6<_s)Hcqs0xBFL z-+c4U81I@uwJl2|1|nwW0I78&yN;@6CgNe^GW{YLx$vS5_s7HbUCS4uNU~w7Hpb|? z_rc=qLh*PiB^m&WQ4DbR$io^WsMNMxuIu&6WyuzO)tb(SIbk+psWY`82QtLB6fioH zhpPE`NOTor;t8u#FU}= z?kLB_vRArUS@vm&`Y^zwjbIWcQ6v_=D=-Yh&<)+(hL6EMymx!-{l1NDjNwJlnq}Tx zj_`^4Cjlj*66Vh8;jbbjhxPrjU9Y#+G#N{Ci=_0?2_JobyWh8MM1*DR`^%TdhxhMw zWgnn>Thtw`sgl~Ls$1{(tvj&y@#yyDG5Roye)Du$m6t`t9l|jzGQmB@%laAqhtOE4 zcTwi_r}A?Pf94lCv*;_f=x~;8`enKBoU!ujq7x!dkMD3_3#F4ec_DMXeE!4^C^0?Q zqn1GA0L+tcgIh*l>tZfGrS*9#M7r3M35sw4OYk^ZxTN*xHuh^uN+Oo^uWI+Tk=m65n=D8aSs2#e9iXEsOekCNG* zITI)+SNqken4gKS%}e$?A!fBTNH3$V5Jnkwn6sKCbxd~7&dZmFay;}DkX#s<3e#t7 z_E`v@^`OUe2!mPHC zbaX6h?<<`qlxi&Ei7ewJ=)GVkW>#;hCz9?~RKszdphCP5D|5F(B{54(LorPWsdp_4 zRjLdis5HmuKDw!JUAQP(Baoww^G3D6hY}6DR4si{IdKXW-Mv~ClSdx5xQBMFvg+41$M!IGw*JO{wHZnXnznSlCH})%p;V z)-R-DWf4;(PN(?mv%vO${4am|!|Uf?-uB)6vb3k$m7tl8ZWsozh3*bln;4^1uvG#P zstK=`K`sr5I_9&V?g!2#4`qznt(G&HKo7yn{XnM-DK|c@eAgFfR;2W z0TC?D-Td+PYCfKxpY$8OzrAjcO@yH`{3Hfbti1l6b|CdEYB9a^k%=e;+rHhm$0F}v zUmkCtzbvgi-EP<0yJfjh+=feQ)_Y{B=fM%ugqkyZGnyen&qzH|vw?FtS>a`Xs3|a{ zr_&#hBIGra2g^>RdI{K8`Oo$JDt$Tq>x6B}r;KW?(zA{^UkMNq`haLOVh9X_7@H7n z30k1^!Yrw2%*YnY>*pg~hRlLun@>exWb7i+_uQuRxRkdLwVehtIE{nR4g+FGS#EXi zM}ZtTxJQQ%5*~?x#a>G0D;B6sem(PDgZqSphid?%|{4f7x zZL;_A*tU4{nCkGyIe1z`M&qZzJGk_pI)|)_x<-jz5MX$ z_0#9q-uHj!Prv=s@4x-_>2kYX6wsW|2kW-qAIs9--Il-m;iIg}(qO}-rEV$<3pmW( zyNOfO2ZjtEeeAmLeSc`%mfo7KYg17T3Ww&7Wzn`Q>#{ZxAys7uUw0d$_ufemfj7y?4nlFFo9$+A4}0{nb?dwB zeT*8D60lgb_C{Na3NJ%PA_X9Bzvw>k;#6B+6H-?L9yY^SccI zZ~KS@F_hf_Tqq-w4vzo_LmPzkiw6+0kx+>qUfHe58Kg`MBMr84SG6%nE-FhC6^&qr zdyZE}733B#cp!Vp0WiT0u){95t1k=8;nw>w^WM9=(QS-w`+k4@qWkJi2~nkr8qC}v z%IJ0IrFpzO+u5sy(MeJy<3!>BmPiNppz4B6ce4SP=+VHD%R*6U8TC#Tkh(T>j!*Ct zZPbJU0majEjOsg~)L)5E8!B`+7I7EN)WWsew_Su6krMX;oD9vB8rdxV?_uC_)DJLh zkV-;HYPbd`yc2|B^tv?!*zLo%z2CPU!$%_1*nN!NhnvUXhp=-@i45wV@kll3MTDdG z`~CIl>0Ks&3Zsa)Z@cyGbtO?%QVB6UKl8Gx3m*ISxNmJ2IBwSqmqpkB?7i>3gKUD^ zyGvXA^UK@2r{(#oK5UH9&7EUdPys1{g6#Wkpvq#4vN7>I3DH9;%lK?!!zHsNqTV8>JQwRansQ z>_AxdA4ZgZ$9GGCrZ?sA>LVoZ`Et3v<#I(^pi1NS$-D$erNa$I3+IvqWZpWK^5l#h zWgJW-QN)`^l)Bv2l+eJc&U(v}6~?R_3QP@!g>}|AyPKZG#@#M@K^;NzUn0ArnJtrIg0;<=O;NyUiMo?l7{7z z1@BFs9NyHebwEyfHU4J)RZJzdW2%vP!(wxe0>?Urlju(gi@m6j$2`lmVWDM9uNGU6 zSkCzfUO%4xyBUyh(rbxB{yn>Jmd49|K~fN)i1H)}<7!B6y4WV|X_g z!DW#}sY;QfwfCX(0Gz~+U#qRqbE(n3B00;})M}SfC_9l1V}hO9tfa$2n^f1#<8FD+ zyv-3^!j!yF&OY}iOdB}0E9T}+Wj%E>lF;*dm3l{>_?B#iUF+#3Dqc@<(77y)pR2<% zr7YgzSgg>cWfjUKc^P$hc1}-*&n^)CCt2w3_nYYptO3-D9xI@s={Xpj2(yobLvB-T-C;e^c_Oy zC8!g~1XESxK}4zq<1mwvYI1CEW&NZWQKp8Rxyn|Wa`u2Eu#0En^XT^h@x}+TEA+!5EA`j8y(bDKmc!i3Fq@!XUuYh@qa_C;^ zd9s#2n-J1HW_~eKvaQN(Wm=ke#@qyfN4p#^Z9o^yYlXJ;Oupz*18cz;m{)S?^sC%K zu{1zAawt$Kj%a0R0m~1@^p6mUd6HAEPQZ<%n^8C_IFA%chx;%yv)+e0f(FdYK6<5M zz=uQ2C-S8EP|UrkrqEf;c1)!muNeXy6NyOKd%s-QZ@>HC@Ynl2TSLXW4Rnk+Un8i; zNXl@@FQVZQdBqNy@fg;dGD_2E{SlLl9+Dj+U|X!2>| zH1B=uk4;pf-Ix$Qh7Utxz{vM<2UWD`V(hVqabAKWPji%j(fSzC4)5h-|FQAP@Bd%_ z?C&r1|H(i3Yi+U(ylvx`Pp_Ze9-m+DpI+|2e0lr%_5Shm+m~(s{P}I$eQdkf{XhC| z{l!1}%RhN}d84rJW0;XtNHD6_{oT_w_`+q;?xU%|jRsOseiccLF`)1S|L%Q^aW~@e zN&%Calp1#V^7``Fw%50}`>Gzj-oanKY(IW_gLxCbU6$L*)`TKHEJf8F#Hv&_rS%b= zCl3o6zmRT6MPc0>7+!TZDzd69O`58R4D-GFHu}Af*GIqaW8ZCz0kR1fQB_99nn#}F zNP?wk=;WTV-ZO`zKqQz1I5^Di_xWBu9lc3DATCBM>mcPxSU)%B(0fdB`kK9 z=hG`CFc}_{3*o8E4_68ZiXkmCl>%%wybly`FBClOPU6@A{pOygA;pGN-QCP-mct3- zP>sIZ=njgsMMQ<8?`>(<%k{G8K8Ay$SN#q>Z8< z^`nlW;QQGLse7?vk{Cz}NEP(wi@31rQwhaVdKm3shMhUQZWr zE3%{O=vjo$50oFmV(!DScYE6*^vI=M89nK+h^SIYEeg~#=^K^|9Y@7ZM>@t{b&#RX zDsQ8JMYyU0W{z;|;q1Oljr~2*Qt8LWHx52D*##CmUOFbXIT9tabIX{n5b>sXUza zuXm%?JO9nJi`fJIV6AK8@|O>b^G6px=$CZyWWLti`+Qm|+_4WIW+GS@Sp?zHgfB8b zG|zLY_eu17@oaOI4x&FovNdZfAFVXiN#T99V)bkD`p0vZrHKC)d+KEhPJC8BfQ4|E#5B91I7^&?+HN4m zRZo>rsyx?f_6m+ukW51@{M`PK!hEt!WleqHX_<~+3kU`Wy{s@mXYda;v$RGBoYzJGo^tiRLsGR!V*S(fX1 zyTX0jcSbNYm5>t@LaO!?^+ppV%+t<_69>90ab&^4YWj67OuoaB=o^mS%v6g|NXP?X z+cP(VtOk*FY6G~TQVdxS8&4aEkfU{c5%_@EDjqHRvr5TSQw*6LG^5ZqN>^&Vdiakly(j4!#}?~USFTS`C!A~ z6`rb=eeo1NTvc0Z?cMwJauw2gN9AUu*kIOOfbh&iK>z&9=YKG+`1VW351;S9|M}(T zm&Z?^A3y#4>BraCkDniJ_wBKFfK9nxm!-AKMcpp_)wXTh`}q0Omo4CpfRx+1+}34X zmSOgEyR;^QSet5&CDD8wmr(ptngJA10jMe}s%4&sjj=~gP4r0f(f8}3f?>A*^vjp` ztHEsB#=BMDUE9-jdAcqOA%bo1TQ-uZARw3mn7_x*Jr_ia4(zT1GufDdU)6to8O10N<+iw4jL6lDkr9V1kPXj4Fj**?a0 zf7~DY%iH7i{IHpURkNESUh z3I~Y}l4#^2Y%N0R5?TmI{@viw*bL=Mm|67m+RVntNKha6H^2K?MSk<$`(az}(GWH6 zf~FFNswx~Uqr|Q-j?A2OBhB5!BuI2M0K9!ia zg(N=`<8dUhQvip<948vF!hW&O6TqhpuXK$GWvrT@$Imna^tr-m1_WY|s=Lz|aFIFZ zh<+8jjorpR#xV1I^{7RT?s)?~z(87qZcQ7NGBW$#tEau2i^#I9fn!5khyP|{*w}sa zY;B5kIJVwj?yt|+OIw!9qO!KOG*))uvdFr$ch_ZfkTT52KK6YCA{v(1z|Bp(4>Pkq z%z6)4tEx`y123=pmzV9gzyBz-WznVSH{U&dxLq2j8-R=IVtNM-T@)|O>YjgdZN?yQ5w$`#5xd57hF!y_0w(N|uhQY;D( zA3|&udqlBX-5%-txvH(oMYt%NLd!=GQZ!dBy0Dp5e^ouQJFC)}S_NdIK|U)+1#)vc^+QWS6=Uy~(`PA)h2*$#HIX9MS1? zcp5X$`#Pt@M448c<2loIWUR&~#o?tjNga$V&;E(c}JXC@AIR7bhyrR+0?w1>QdL9O7ifk zC*v7^&59^L6+<64u6jdEjZ>7=QO{q`b}UO?B*pKvI9Uyt)f?{j%{F3bvItb!qA}8d z=P>8u#eFi8xxuCHzTzz~^L!?MbGAwOqw~6ftYNLeCVB2v{(6{_5~maU?^AZpI}NYv z^Q3fVN^5@4Q!S=SJNfcS+C|o*7ri(y<6o`qIf1&AF{fD8l}~o}BuV+-DGcXtPfK&W zaysULl8 z(F(f`M67Qe9?nx#D_z0T&~yUdTFa}_q}iXurWm<;iY>S9Ms^fG8nND zH3PvN(sb1(^RUAR*QR5OJ+kffZNp<(T3b|>bzNF(&GruKecL?J3OsM>73NKI1TRc= z(qkTZ8dWY?m8BM2=_bUmh+>vi1PK?Zkv;&);W?}z#l4o_9f%gm%yrl38I$LYDwVL7 zvKvAv@WG?Yv?F^W=b)k)N%rBQbPE72Zh+>Uri$=W>OD$n#uU&Qd2u=~q&10!%dA$|ux`<-Xc&x;>?VL{1eR!H zWO&{!|G{J130~GU9Jzq=r3M*8`Sa^fue-K|G&nEU zTFH&0FrQ=-StT0CWq#74vNVPhy{Hhbl%?rqk=x?d?RL>`-d!7YU8YX(VAdu={mS0D zE1`=ljr$mVSnuY5jVPn^MySdfb)-r&47119w{EYGnBI_cA1R{3wKd}SpG7%l8Nv|- z2u^noGHzNrZA}}8`PS|J=x_J^^XuE^x3~M-W8eFLFWPRG^;hqoZnxWQy~I3;Al;&> z&LV9pH0{*v%!W6it*qGSw3A8)_Ayj=y3A(2;>O#m^$ig(hY-VG?B=U$%3*7YV_f2 z(=MQ+HBpr&5|P_DfSnGSg66~k1yUw0N`O^_!T$&y9eWa*1EL9Z} zttvgUWyf&%7{jCQt5Qsc4X7@crzYxs-^@B6k$x2i5R8U*5nfFQ5Sm0JLpSCz@wNeQ zQIr~YGvus{NPI8iF?bQchpCc;MDZ}9N-NS#3OjoCO(YNqK1-wBqt4JPMw@1Zbfeez z9BytlvZqoAF9j}M&R7!tBqPu)ga{DRxrO40kVn`nvq+E|5jcs90$`5XHIFg%`?hTx z04m4W&0V3PGiEZ;dbvdZ)*N38=8$0@K6dxIQN`z!(&78o*UM#5A)o|76*?h6YeG4B zs*&d7F<&?vrbkh-lfxjY>(aJuf9$^R_pR@bNB{Wc{@u6N_wOzrp4O*ZYos>9?9_#h z#YH5p_pJOzqP9|Eu`)^q$*j?P*4^9}=*UO~hRtS9q4+J`$!wQc3NSKnW(^^toH^4B zs&p_dJ*#V*PYS34*NKHD2?C7it~zjLmCH8^6BJTdUOC}W1)F|iiKx#gyrUe=BdsDa znALS`h5_Sjp?IV8q5Y^H#=m zsRhVrZQx$X(_f=>Sq@aBGkbY#EPr<5*ZQ8%dxn-S_dB8biPyQVW-b6i$j)O+03=Y=#|hkG4;YH zSIvYjjE@BMBN^Yu93f%T!%pp2wDBPX)4iJl=gtGg&*jY%$(V8$n4I0bn-eZ%lgOb% zlgKm&gQp8+sI@wd$ijd#5HLbcQAWIrPv-bsC}M0M+`439tBhV%@<1hQ_f{x z8S|&{4L>2eLo1~RaL_q*LL&%P8Aqu0ebd}q31}TL7VC&&bW8Trc<19r*T4!XRNoQS zQ7tW0k5^9YadL}*!Q9$poa$&KbT6q)79-Z}lt}3Ff%78g$ViYc$4^6Ms`7U-V96rQ zweTt!;qi3&5>rh_mcF?^cHiNxu?d^7Mm7ej@rpdwZWiv%z4m(Mc$ONYQ;N1cdRVP( ziah~JOker>3iF~<8cX0Z;i8Up1+7a9`IJgl)AhPeB-w>f%sB~XZCu+>iY^6;nJiK^ z=b%icU~vlh{B+7HGuI)-vT~S__;CtV8O#&O$$8^CCb@6*4P=laqaEIrJvk~jX=N-z{RGVy0F8xF{ z2PHFR1oA6pb|$dLS@O2b42{@-Z3Ya%aNo>2yqjBem5RX{6lOOfi$I?cssf0ZoBOEX z?R@BiGM+hG03v=)4x(UIiTl*iMKBXMA`f%(lhI7n#X25f$aO8BWEvQ2l_YbrO7#L1 zh^jkB?-W@t%hU5ZF5~`o-}cSS2rzqdF-0tMx=K%^9u1oT5s@eeH5;P~K%q)-KGa2) zWr4JirR{Nl+$U&CQ4tH)`t5ShCZbAoVZci9dm{2V5gGJQU(TU5cp~3!Z#XZ znXRt{M2=~Coa+q2qD|4{p^3R+S-OTGII_jC)CWuMl0#%20XcmgdYB9+OeugHXE%{N zKk;8iL7>fk%=PBA8*y2OqnfQlRD4e!n38OI%AgHQkmwAytoU#GZrw&FKn|~A;#pV+ zBShq}?H@nC^xdV=#t5d#qL-ZHi!-J$*m05*0npuYD!n^@_~91OKU9}kPROM#u)BVBxqwFeGGTgJ!TfiDba}DHffR1OootniI_SfBZ;B_ z{r5k8{y+Vn|DSND=+b0emt|eGh4L;9Y!)@8t}x@ew#%YQ?+&AiHqeJz-|Wl%Z6D)$ zxx#TmnQ2X*L7JIeO{NR>+*bA z*M-qkPLi{eWs&z!tC$V<-mMRlcxIU;EmQx3nI3@=*xenDMO={iFuJN{ikuqIqo>tk)|mqJL>z5yQTQJy(fRbrZf(CF+IgD-}=j~+1O)7$o6{Wt&mAAa@z&%XcmyARjv zvMdXufY)fl!z)QpMWc`dCX|jSYby8}um`6% z^X>Pb46qOLXhddX^pQS{W_@t-xFUuu7xt-Xk70Tq{&D;|oJwdKATu~dl*fge=L!=M zWlXvw0HF*Yj+%N|Ak101%)|MPd}ScivYA1dBfMCFsmL*jgjJM~1s7LbdPw4Fz^Iaq zG`fgWpiTHd=AV+t;nNSVg^H=*TqeNGOhE>S1QiNMLalefRF2A~LX}#gc&;J5r*l1W#uMo@ymw9+oJq zuc)}=^|9UW+wXq-cz=5grwvoZZC(EA&pv$n;raQ}e2mE6GlPgkyUW<`qpkUYBI*dh zVQ{(-IdO#~eHgk~-@OT!mg_DvbZ$iWD(=Io1x9i}IU)<5`9)D8Aqjf}3{oUJLe5;3 zXv>zP(p@|;bM|_$4E2ULHL11faVAo4|}=qeW1oJqwq~#0_jlkzdDa$JftsCoXTdOkhb{0ZlEeEJq8;D5vk)pL6=8{kZ7D@mwbILXIX$NH@A~omuX01YT-<`iOfnjkKYIkeSSQbmjhX+GEQrqb)2AnmZ8~;}WNENk zph+X;$#WoEwL~k}Sodh%So;;_YVMQzm?y2ioT6IWWb?sTb&N^fOvP1uQLB`Tc8FJg zDi1{Jh@g?`w7X;PzQbZJThpj-WelnsHg$jPKsC8KE!y##~XNY)|^); zb$Gt^6m35hHQ?ZA&EM7)!8XDA?p+p^=FPsS-MW5ue^DwsVoN+|b>d42E*F&dz0GO76LskUZe2v@3%%LN_>w)!G_& zk_~m-$8f1${7tCfsyc{$*bdvfclQ8>L9>z)nF|@cR*FzTVH@V7508FEna6)i;7C$ z`|Ia7z%Q5E?fH4>m+gLkJT}isu_$C$iq+v%D5Tyo8tj8Gw=b`sd2NWq8Im!CX>H4T z>E<@9sT$}8>!Uxmv2Ao{i;h;h$igMMu|G($fc7vShN`AvQr(^*QuhE^r15C^=k8I) z1x>R5Rqu{VYK9fmIB0Is zS1D49=vR%63u;I-pt1SreZvrKO(-@-=HP9cS>GRz(YwPxu?3w-hFYXB|BoK_K)@Xa`(6U!`veyHQr-pgv1yMo21oT zveor-+T^k{711U_2wYV5?vF-L zByBSsv}nj^0NgB-K~Nmls|zV1m_JQ{q_sFzzH) z#dU2W^4Q0H?^$AAn^mrI`Kv|o#AmAqA20`T=4(g4Hq2@Vfb+4BOT}X))tj#%m8n*j zo^bt)+)FV563+vdnaqKNqUFot^!4ObrmvYRR6*~c%d!bBsvzCG2@vu;iS<`v|1Qex~XNfriC~4Pf&0JnyeClAx z%kRZkGB?d)twM5duspnR2xt>?g|nZ2byeIR@H0-m%weURBtgmOiKqD5IY;fOn@vw; zY6(nnD_+KDblqqF?2reZJ|2Iu^XTOAb1N6vC#0U_Im`^vKeBz6#U$T=zCJjZBM=mXx9nXWPjz~s) zPO`9}mdD}5ZoZq#V57IjMWP!(h&1LF9BW{+8rIvCZ zE$JD{gl*;;=E}`Qjca+RyF>o#&F0U`V$S6`U96TU|C~BHmVZD0TDXPtd!Afz;l}w~ zWjAW^a9|$Hhjh-T`wq%|w8uSj4r?KgM`(p&>OiIclGRB<}@4mrfK8CXqGx=HWrF+ z@UYjhn)Cl~9{UmcG_RAL&pfSXZBoF4>|vcvc|<6hu--!%gCq>Y#e#&PA_6DugpZW8D8cgt+}`< z$CxS?_-a#*0XsEokM+x(Usp&mZaXi=tUW@ix#{s&)Z}Ckand&d&kN}zI=juML^RW@ zJCH6hj1(G9bu~jMW$sbFlv`@%s$%XgIdX|*M?5 zG1{^+2OKzBa%Q-vv9-l1d*6Tf;o~nqefseJ>D%w#eRzI)ep;{BwJlAR6jAfx*2f^+ zI{Iup5EQ#|X|f~*Pzl+wLXHtUBP_>V23dv%*BtX|wlrOrB^>6cOV9jmk$vAEZ<{Vk z%Gk&LcpKa1`))R*>2g_B7q(S|EtZ+;0J3)u9Tvl5Q2CU|YRFIwK_I#ab4(~1eC0go z29sg=S=puAy^J7X^Vm=n?pQa->OPXqn&SfIQ z&3uf(``hCmetvt~`rfS@qGLBj7d&jDmRJ@;(QS$<8rS{a8K z7E6H`x*6$fW!d9|s4Q(+FT53Ch!}$RzDNH^cMsOp%zShJ*6HFIW)AJi9Bf@x#NiiB zI0g;wBpMnLk;awqZDtu27(9STtymO0XMCUrn1)drfdC6~=Y>3UX#uq$+a~_44#@$O zBZaHl8yRWgltwg8BoL`}>wDkE=pfe1_360@8?-{TJ|I+Cw5g5W$LQPMM<0E+y}yk| z9849Jrm`$5i>S6`8T)W^*K95rGm_F*$#5nh>Siu_0R0@L6pF%CNa6eE>-*=Y-C#LP zcE3ON$KJnxfBhf-r~lzU`tx7^$*;b>tji)26~B+i9;EHkq6`Oak*DU-|1PygV!`UM z8e-3wr%o4+;iHeOkKQo=QdSk2B`sy3neNPlwG%a<%utc;2fjF*+`tN69#LrV3{D4@ zEubOH@n_ZKn@!skh7--6f|^Nt(=90Me}WVRa#Bz$!v~yr^LP>R_$CXRd`!vUBtlGd*6o(b^3xrcs1%`Azaj@h_5ereAAPq`1(C#hZFZWrE32? z84IT|w0R_C`;4x{mEFuCB9R$bBxZG+%26}|cLBzsAz1Lo^E2gc`lQznJfD7B70{ij zj57M3+fuTN#H7gRbS_RMN7U+NV%0Rur`#EWB9fkfEb=LH?Z~;lU?8>Hk}fo z1_vU3?Lbcasn;fg?Bcv%{v;#nX+&B4Lt1o{>n$Z=#~GS}SU$CtUwR0JxtROrcnqUc zH9K#rpphcfn2|&fSQHU!2?l!@hC3W1o4i)SGEf}Jfono{AT@tl`zjOhv>Ua@W{D*# zu#-C<#?(D?C`isl#8f#h&T@V$r|+Py2tU?l-ZpL!gDi;XDpQ$voJoBMN{C?)&j$*1 zOLvbm=~ExXCS?PJ!vcFuUx^nBvu=)RPB_6J&T8r8s27cpRg^yY#!zu33J21wOvCz9 zFU``$`DiEgd)6RDvHENmQV(#}BGY`Gj!`K;aMDI;%gX&r9&JABOre+?e^POnI<#&& zuQR_{1ftK?n-4o5%Yl9PZrOpZMcPn0%(?6{N>eI%E}73ed#%v4VmRyaVj)kj!})@a zv)Jc@dhu1$5ziSYMIAAvm^>sb1!l5Khr*u^eOeAbFR@Rt{3GL6FM85%bNf!~d@Rsc z&yeSQ3hI0uFA{8Wk%i6cR>?53kVy$fsp`~<=PfS`9P2fWAL@2t*9_;ip4K_7%=vPt zSD#zy)0TW~N>8W8Ppg_|?<~j8(<03^o;&1-e1%NhIX_C|#w$w85pXsNqlJ5A`s6N3 zR92-%h{SHWG%n<2(c##8)LHhCN#%k2=^j%GRhq8q-TIDU?lH3=CAWeJoOy{5%-*__ zk4ytMvz%F0%z-Ke33Q(YDIiGIMYFw*h-TimgVBZ?;%1gDzYwVkW@CG7eGKHXQ5s3^ zk9~ji+tYPj*7bV1-ELn#eg6FE6CG#~F_Ti;o{0_~^E#X=po9ZXKH!e*^#h2w!+RgS za}iNpZ*9HZ+~IF`1VuONf(`p)-^XqaQH^G5bg~9S2Fck+_tEFE)fkSEok=S45{?`k zIStRM6adr3FM&)VP9Wi$CRmMGYh@3QgT&GbwL3^TGZA&~d8BQg@hm}Ck!V{6ccn0R zhhw^HX&MJ&G9{9SJRr_Q2nAUDICDoj=(}2n* zwdl_`)T#TvtB9(MF`9^3aJq3;7-!5z#0K4mABUL&5fwQ<6ueaOvy0&F$Y-}o2Sqk8O9-`*5?iuClHgc{bWmlLq1~hh>grdZf`H zg$hs4E03fkwH|iGDy$hEP+F!!2}kGz5Q;e@I!eId-iHUvVST_{MOLK(-QB>)z3Y4b z^@n%w)>VWH*czM2qN1cWT{PO)M~e!Xed3uhgD`~&i_1tPj#L1EcqTGrRwe+#jAj^a z(UiFQAJ6L zh`IOS_kFxR?jK*?e);nH>E-Rd4KrwKm&@|uSMQ!~*W2Z?EUM|9gG|aKlT|>2+ep7N zimw?h7E#Tl&6~*c?W)AFQbCWQ_!-n=T;1F|y zs+lI|g|8ylxBO)H6F!e@wD7~`VF_o_W@2Id6S%CGr`wZgLIoQ> zU@-y1O(5QuwzQS&T199%GiCJNN4LHA-XGgzzu)iU6+)54`X;i7@^ODP7m5Z++ZIt> znkW(OsL(y?)2Dtz6uzmNvpe?Qh4{lypZgdw$750c=2!3jy{BLAW2~x8W$d3AL3*qSIz1uc?bn9;L9FC(Ti7`Nd!iQr3mBX5rdZN>U*J<}7 zsVb6CQ6?H*j}a;~gq%{1%Vg3b9+{g$w-|h63HA^wy0mma$(ph<(M*|+3?WD0!M#Sk zM{Ij~2#Gi1d=S}qcP?f)7Sly45-Qz}!#SvEI*-6Vg28cui}LBZsLHnWx874>7Tv^h zU>!a)69X#SbTSeSCr?m5P~?RngB2%F?0AU!DreFB*{}n~<;B zJ(>{bUxRYZ&1U%$aU>&MH2OY=OE_g35aFoeyL`LKH3{+{#IdM~yoY;gCmt_fF>bFs zr$mYcv^m)_0M*m2MD)b&_#7NuPjM{o%z?z|>f~{$+Jw?-Q~0LHCN|5}nQ(IQEpW?r zkS9;Save~@R0=%02WmP{rHE<~v!o=%kbbyJ1z3w~Oog4mt_pc;O{ET^}S zQLGo9L`-NW;#i`Rx;TlMOvkxQQSmW#K!q0&&vB46rNobq`tg_Co(w+_*}uLU#^%E4 zKv!kmIhDSSXzQshDO5SXF}ze$?M5sUk-b%BZ3_}tOp>qy8M!X= zZ>ebOD)aRZJxe=8bjs2M1}qC&O#Xo(lbuga-Se!(9x$_Z3`d@&Pm<54M_$?kBE$^q z)rQA&SDTdl-GhDR-1Mv!z})>qZcYZQjCHgTlu7Z`asz~UbJ744!YxKUST)6pONXMj z;nC8HN{Te1t&4-hb-3^Q7#8hP;bsHgyGN#g=(36qbL)}eV1=hZGU_-YZH=W$gEh(D zAfb|pxLz%T(?f~A5|S;ggiBkrwMYrl==?k)L16UZ{+L$NN~2I*bP(Q!wWJ{po)t_I;=;55uPMhbJ3*3ZRiLopVB0^dp z-n*)rYP(#e>DYEan7$63E=#1=(A+T~0)t79AiS0y%fx`tJLxzDk}FNX*>yGbrc4BJ zRxL#JhG2PRQ?$Y}t5Vjqlp2$1yn>YR3k3^`+l>W@CiMBk%C<;hh!%eFWHYQ^uK{9% z8@N{-BObcoK+!p2zYPXgRs$}A!bp`u4(4zR1(a4{s!SOXFB837^_y?r-(T-P|NIe_ z?Qk%RVsPBI9_@CwZS(=cm<2g72MojEs8$WpUkX$esv<3snfcfa+Zdw*!-qknEsEC6 z?7r=<_w9!tKZ0o5)159NtHHxb%pAo3HD-u1g}9VZHA*y7vJ@6aEP-H3$Z(oN;+bPhckge1__7W2 zdpDBLm-g*#T@;Pdl#IMRBGhgHSVqF7B*x772|WM14oWOsU+Hq4aN0QEsv08!>2Z2^LnAth zdJ(Ltk3u4q9^D_SV^MTwi+*h8ZW_G=qGy68eu(PLM00^gLob@7vW>&UqAwywWh40} z>%EWB$KFQ_w27@tBz-z0W^fI&?$u#4>$6Zo<3-(jHhe7(!-v14EFdTf2$I^aHhyKe+<>*aR2#`tX`W6HdbIcys4 zKK9{sX-h~^xS&F~lFMZ+EZBc*sbh$0?wXkn5QRGK$ncxgz=k_nN9%E&HFaCZu^MtrUAZW`tlLTab$V3(_@hB97S0e;ta># z-H%fHi80Qxj`^X|`F>mm6Sb;}kY?st%3lcGz0VAnbZ;nGB#|Yt;iP4IK_a5WY0k{E zhn?pIJVRDqo?tS-#>^@?xH*883_rasuT=O1O=ZMTWTn#ARd4I!?qBZv7@6~13}5k) z?l?{FnFx)s1)Oe5`XlkMRZN^_1GCrt;ez-KE%EFp9+$7OhS>J1z02PY#8$?6gaZUx z%+{#gJyxJ@5i1w-H)3H^D|ynXUTy&j4NPb^Q9)Gc6>n=swDiHB#+NNsZ&$rD!aN=OZ#CFYW`F6vRa19#70TM0sO z&vpIzqe%?pf|ZbZrmI1tK^~4O!MQVaP~gCD^xYrb0hg)_h|H`2~(9ZcD%+(aOPi2^W`)6!E7WJ z_IWWszQ-&mW>)`N9oQls>TIUumdcNB#>q@BHT71$6G6AqUS351JVm7ibCnWa&0n4c z^qgc(;bhWdv{VX!&mYQ^-#SpGYUc7C3wgXseSVUCEDgZpQz;T0N zOi8#)mKtI5q*Eg6xsLty5`k&w=weJy3V=2bGE4n)DGd{azim3q8Hc3#TQPf9r4EYy_enTT}WvT<>la2Zmb=5onV zko@(IV&0b3Ol8`4vihE4zJSzv)%u*bsn#u-%c22&?rknUZbkv=jp7U3bwngSCgm~o9)*#4lTnnk8az};AkOSsVelZXlp@-i zMvbZn2{D-Y*d9Il(=+gX9o_7n!SJH8id(3|MyV=`)+(0VpHbLE&3wB*e*bsB>thg5 zmC<(y;eqffbm7ID=6s37ec`P!$`eAEojgjuY~LO>> zI5kBsBLhztI0FbFMx9GWg5at6qH-`RW*AXK-UsfEFNWO`f=KpU$R|(rm(Q68qfiKI z;cNtrnKc>Kos7aU^WM8tb~AHI6J1w4_F*uXc#c-`Hq89<%j0Dm+prF(5~F&?z=ydB zwJo9oWbG(Zk6SnM(cLVdeu%eQ4Fl-o$Yp4%4zXd5F~-ZbfByW%fA1hwT3grK?egy3 z_1)9;`T6>ES(m0Co^NhO0yd&XHQdx;beGm(6=!#cxKrt%4+C99RKzrtZ&fP-u0dU< zYBWk@+D18+Xp|*FMSPgW*hpY$3xP4lu#x&SRe$KmY_ONms#?ScuN_HiO*Ga{BsNH* ziMtsMQ7T|Uiu-Rq+?Hj%UDw;CT~u#tTLn$AEV_03?y{(v*!Xa5*CuO|Yo)o_U!ENWfS*(nAf>`?!yN-|W#xw@h8kw~VC;a>8Q($tezr zn4uQO#=ZLS%c1mO;J*7~?63F7%iH$yc7M6w-?na$by>gp)pxh&+vVxn+OlYdJI%Tc zQlO$t>i9UH88S1kt}Q@}Wo#r6a^j*d+x_Lf?dC%4)?+C4Km}@}C!L1|L^y9jACGP| z%t74P$9Pl{_W}t|nbY`!I1=B`tKdxO=tJ zHn@`2VJ0Ze7)?~DJZ0P+q!LP9RDHc9*sw8%_0jjekKTLlW8b@V4<0d^#`hua``%l0 z;tK=ALgeu$KuCo*ZPc)8Ae8d(sKQK&Roqpx%TlzHC0%%=*k>)C2PcxraU%<3Q-pTI zV;fuVuaE8Z{@Au{QT@~Je|5dCPfu5Zz4vYS9`9H)IAYxI7^C-L=C+JsMqOHK$lMl5 z$IPRTSGra$X45`B#q&hpI(LJ?%(i{+``#Z9GyC%83n)&AEF#iYZEQ2qq{f&M znGxv>)u(smeMB4s%0^rL!|^&L3Tb!5o2jM%X{%M zOQH29yqvywJc2|8B}%Qw4{F9M>*%wXNz#kxNbr|FE*vTxMObHod#Miqb8@_y$;tN% zFpLzNVr;5bHW$Ycq0Q7vA;VF8;MLs-=@!kaA(*}zh8px`=C+mp$x7Zs36x=CO}g7v zMS=U?-49j{bK~NZD1kI^zH~B?;X0yTECEI4d{{nJd@4HYc)DAei^Pncg3Qj>$v>Q_ zhv}Xb333vHS?0;2KdL*~$s5c=7#?OdtvP4j#3ZGyyPJtp=}oB0Mvpjd(A-f8E6%0z z3f*my`q!N+j~>iFOC6V8nXEBuFAi*m%H6g33@Mx^Wj-Z3qd_>? zhr>|R0?vgk!wR1^w-z>80!-Eb#jW|gtxwruX_%>A=6Y4~TQLK1_p{n&m6Feve0AJ& zu~|p(Sfmn&w6p0g;>=EBD#$P#spSs>ZhmnfnM!=j)u=B@C*(@z={OOgl_i(o_CH$u z*{C7!h#K}?56XJod25_*J*5I*Gtjc^F)@gfQEPNm(3F*Mz?>j0V&gV!HwZOawvdZx zTh$pJx_9&8W9&Ah(?Lq4ei?mEuyuhZ`VPN1tY9!U!Px|h5QXq`wI;GG%X+yWGAYt+ z*v;IcBMdY!f4H!W#_(0JU+1S(9xS^or2NRTa14WiD!R1MM<1QC&}rSIab1_bW4B(L zG!LQ0l!s6|B;2gbi5CeK-1Wj7{fOg)?`p}-(YKZr-ZCYgIp(dzsX8acmBWE>s}4uXO) zFw5>@iAkIAE9nqYjuPQriz-{Oc!QnU=m4fW7uC_8c#@TD-y#G{6sD#UOEF=GxW(|3+UFe|H*^Z=`mP?UNutu3(^8fkHeN;VPMhrK=? zyXBlqH~i^$&%geay1OX%4d(v#7^JmL7Lot-Klsi2=j*DzYJ)>+(ocZ3;M1l#p9X`a z5WfDyQr(&Ju3}BFG^#}h%Wzh`o4<|mw%Pr$-}|tUhBXGcs^;ZJ0x}1Y&^l8?z`=8kN*1D-`*Z?k4GQYnqDsJufG3oy{zlHiZ+si4%LWL3n?OQI<}pC z#A`;;Nva2TGb3E1S)o8fPh}_UNU4Vr!^b|XJG)^wE>5eCr?ISKB1z^v2LVUQ13?UT ziN<`x+z}$`6X%2uvZ<=0CLcv&qHJm!`wV>sjEiEujv0?}OMOvx(M8$X!b)Etuyxx% zzy0$0MS!MU*LG>`cDuILmZi0(m&lNCLAJtFr_s5n4!1!SEv@bn?emz?t(inneWM*pLc}wF zm?>{b4JTO^8nvl5ZMSR6X{6NI7=7FN=zH&d+eq2B&3!OBlx5opib(8I0l}nW6U4#G z^^U~HU|R`M7stqguR>!{pqTBfzzWnM^=H6OH|*W-`*?Zu$G-2ojbTE5^ZfMf`)8GA z?n(yHy7lq)=zAaCk!fx+nZjbJ zNYcw0z!)(+7p3a+VbX!CQ!FItB4k8N#Lc6BtWzVS(|!842}4pN9KKsQFYBVWYjgL{ zuX`V^sxp12)JoIu421#I*pq6eA3kbjT&2r;ptU*>hpTw}EWhJ3K0V#na#M8sorx#Ow~?x$zm4j(^L1 z&2$;W=Pt~S?`O~I*b~1jvNXAGy@qS!z`e1^tTmsP48cO7qOvTpgOaW0!y@I9%hA^% zqqpTiBJ0A+&kM0;iDUi>hEO);2tCI%3ym*Q=&@N zbI%ij`Jblj~>Zf2$3w>sb{OhfBcNWJNpF0%oyg{BG zp29^_*W}|>s(r}7u}*PMCs{r|N;Axy;^TvLmRVlvWY~bO#joNP!0{p_G$&f~_&%qq zto>vivu9=;vX?+)e#N9br098VR4hBd zy&Gz7r^Fykk=9~jLK}+@_}F(db2EylQm9soDJ>q@(|G27`{ac4HH6wk*jiIK?~kqb zJ@V0_BeAGx_TC1wR}jkDrCh6M9hIU>(hU5UNOpSv5Qy%T6~CAf~WoMr@gIf}o;!Y4_~N>x094c>m>Lj7$mmMoRB|O6GuWECC3uT6U`&3jDDez_$U%hvmF+aKGyEZwE|JzBvVfE}XP`}o}- zei@)G7pN}l(k{(`Agz6D_s5&<-OO0PtHzeW>A_1^s`1pYVHT28AKuM(a{$AA8@@KW!$N&| z)}kamkX_5r$zk3z8P4g_$6)W8@m`DyI+=Oq%eyD`nEEl)cO4vecZiwa?++hFm0?~k zYgVkEP;prP3~+f)w8))MjW9_f_-*(5q7Ki_Jyl#>C)q&6=xK3rg>5Y>O<~)~3rMi^{U-vb5*R^8M5D;rX(tiqb~! z+aCU{C_R#Hsx5%Pg*kPuJUOH_aRVXbval%$jcLLA@W*c3u%1Qq$nYS5N_CvY4JDTNG8*9fOSxvVGmsg@?$ zJBvEm>5i}*1&@U(N0N!U6XzG$uhmI!ED<{j5LO2Rgv4a0`_tsW>7JZ@yrPplb@s{O zjPzg!A}(CPd`y8XX)m|R5r>cm&{D67C$SsZoQn>>G+9+2dmqQV##)z*Xu#(>6j>9$ zBQ>`twm_7HnUP!+5Gi8uVCGZv^8Cz+P|4z*S$YGrEj%3ATc~)O1QWG=Q*5MKB-Bdh zgUnZmcMDiD_jUT9nXi`)b2K?{K#c6}*6qFnL?e}KO;orDRG_2?lxzYL-UNQcfQQ*W z+>wzYN2bGt2*`;$52v`|I4E%{Uy~)@&VyV#Npab{@}=uo<)Aytc~MG3lw$bfKLjjO zY|9xx{cxrZCk;}nCI}76$;77AR9_dVB&pMBuHR)c(Jc16UO4NSQVn2I7nsW8V6t#z z5K3`BAyt-ZNkkTH>GpCWLa=dS0Sli`eUesg9)r1O|Mm+N0`r+1k23=sj*oqnF;re( zXqQ@;ic22O>uDD!e)eO(>(ItiRI*_~SOS((H{3^uz+00=T!gBr0Ufh|a;|GW{M3kL zMPj#3>`$%_>x0MY1}d?)l*}KmRjp0j;zT+X z!cMHr^Xuf$fH>;8f{l2;zau1#q)$=RB7|CN*?? zutcqF%_LGzB9iY@4~9BF#7W)c4~ifs;W*vJk$eaf7Ql-NWL7dwJ;ZFVUW<_OSxPwd z)HJwtwvT6S*_NfY&5najCv#@NWaWw$^wNDc^=-Tc(0eaZaC1Tzjdtp~ESS`FG&P`u z93iC=tw$9?z+5C184*NY6U{ivu*bc}RwxxM6>;J9#1*Hd_L4}GG;&1^J4i~XqFPro z$f8g0)^7fI?0p!C$TMN?vhLds_w{;_Cfj|7`RrdQ;oV~9|K(fd!=;Ktw$c`Xhi{A+ z85>0pePdrqz}OCfS2Kj!>*J$&u`|xE9DszYR*+NBNx@anfJ?+T z@(THD`6~ir&No4-ibJ&xHwB(AO@;0*g8%HF{Ja14zxcbq{r#ulD8_KPw004>NPo$I z&^Ede*3`y`NUo^Za1(uyPw(G7FY2QEqwm}O{&w&8jib{caH-~Hr(*-aF>(M!=}o%3 zkMf4&c;=L}P#gh~#A?!2w6`=L2muzhn3Dp49A+OszWnmbXAn*GdRd>Y>*eWkyIii9 zb-Apq>7u$cHE)^RItIm^7-O1~mgc3QY==AG!%3)^8GS((p~f2yi|ThP6%lEMBa)TS z9G-l6a*`Rn4;hk#rI|Aec(>low$TZQs0f=XKnRWg7^6dW$LITa>HGHBNnDz~zg=!? zyR4!B>DKpfM^aHHX^q@e-e!Cy!X{Wmm&Qe(BGNa52(WA#V&PE?H@0aU4^z!%}7O@!NyF$`j;@QwSN$cgNW z2DsZW=_3)R$Gm{l6j^zczEWI)Zls%!Ot*?PiSE)$GpZ7x9+BtB9Cnndc4Ia*&lTjf z$7MHPU+%W=-~H;_u?>e|q>6}%64iV&?Q7VJ9A%oPGv_`;NF>#FYXr0m+}`onx0ko= z4?nvAP33x7uGhK#2ovFDT}7_LELyaUG2FV194zs=?=#awBA>2_QkyD;wBZW4mGMbfk?e-M z10yP}2S()XN9MkBA7ks|@vu*AdwXo=T$;Rpx~yw-_rtI;y6t8vzBVYE!!N4WMI2a^ zTN|<2K@6G$4kP>M!`uzSlEZSdK4(H;TCdQ~^e7un4>??Nlc;M~3Pn{^Wl=V%iO;Gc zqM`wRf^~adM1bCRTJ*BWk{XnxvNBM3z#f(sb^=0Q7B)d^Dug+=ZrkSj7*?qkk+%{r zTp;`mU+Zr14_(}q(v+$K^3#3%i{E}6!@qt1{5D1+K0$d9S(gx>c6ZF6eu>t}arHXU zc^c`_Ym+vzxVf-wV&eL6eY~PAGcCp8C#aXp!eTxAI3DFG02 zkcs##hfpWp$$7cuf*$f(k5cPa=*g{0ppjxZff(tIrd$@;`q+ErpG<9+zTEM$^`i4` zLR#s4!2w;t?JqC7N1`Y?WCKgxw+*4v`!h=L1KmdiGr_BU>G zXc8dE?EFO@>+C%CtCZg%%AU`jtH#3M@Y8b4>y<;6>uK)W@V$Ga&Mi&C97iEl(d_5r z=0#u5G`HhuO#n9kS{COxx<@GL#0=ZeJ>ruOq<%yHV^!~Xf{Z@Hw0-sZ6aNWq>22q-uukse26@=T(~eaLa^@kPo@R=A;nYJtO`BLtC(~%w9!wLEyD(qoE2EZ- zZrhL1TJzXViaJ-%YAejM9dpEf>g2%zA5rLM03meqm?Ghi?u8LVL_}3Zn`mnwsq*Nf zsc!qAt0-)AH&7HJeK#kTr8NrRHpadWw;209F<_kXqV1z_$=qO>{9oaWD5(f#ey9y1 z2b4R_K=|dV>+|h?-(Fwe;E+XpxOLZPv=GOG+V^3&uj_if$i6*njOm7|5R`#*<`~s; zQxi>>BSn=AOM^oLLLdewlVcQO2vrzh#pz=_-unI3rM0Ck>t$74n-K8P``Cx|KKjF9 z)^mrXID4%=`_YWOOh%o6JhNU0VxE`$dV-4+%$~Sx{um;$0YOPJopyJRAb+VH$xZ=2 z+d0Q?TGRw1%PHf0#GDIO`18=f%xW)(!#pR((X;%-+@fEqK~?|qH@~`G7KiPR?Y7GE z(^cg2Fw<3iANQBLsQ4IT?+|n|iZBGQK~@>vrKv%@+j@OkuIu*l_V)U6f4kd0lvqTw zk-poJed=-4>vckIy*fCG?AvyKeUsMKbpha(xg>!v!+IRr((AN`K)KPy#xPK-)+a_n z#Jykc`=^&T`@vwYB5iG#%jI^xTyK}_ZM|LAb#2R{s(QP6^rf>HXJYA+IHKhj-OR-o z7qj8kDD-UM=y12iLARbJGl$e3y^7+kk2FC>0lPpW)0JRQndNpmU{MZl2D35HyLB4` z_OUm!AAkI1@$q`!MD^DnF7Kajt5B6`PTlEMSWTF_kAx4L0YH`#kg5Hqg9iarrHQu2 zCfb@P;O_T*+~4+l?|Yw!Rv>5+If?F8LrY6R#?GZq%1J?)H;E_!6om{x24!^HM}K{c z*T>`KZM$z$-|eYgf4!qN*BaEJD<7w(pRZ1tg-PA~b76TjWAt zgx4l((`yr>{NdyM^}Z!pWPTj8Oq64=R|7E}G10pX--qve!~?=)r1xk8?%pFs)6C5J z7*R*&p_W8N7SUi3;2fhzkJ3<-u}7*RWxdmy&bBO(up-K)`iCEXT9)N{TdOkMiw*)% z0UKpD{bWXTrxpvkNkVPU)HNoF9v+HHn_3R;_l}oOZ$Eu{qnoHK%BRbEyDra9*Y{7C z_qX+SSuPh{TU$g_c)f@NeOMpa@F94&EGVFsH&$v{xDQH_fOo}HM&8xqe{2Db(=aWf}|Q5Ei*BOTy~%<=T!;1d2@i(FPl z8fnwY^bHMXeT?XM8C9^>b4&sqO;nrqn6s&G(Gx>NG}9Y0&N5x6*eNp%_ip~!`rBh4 zy~h-kUw!j*U6*J{SwiM5<4MxQci}E1u!t-zxK5Z_!iuGn5?Cv^`{*+W#}KquQMJH;<-%p*TU1u&Zi9ei zk_$+-2B9?NFx$-@n{C5~1-3}8VmeWYxsi@)wFWD=Zef~(Y!IQi`^(mU_sjNge)w_` z{}2E1uOGX;zVu2_O8yF7=)bV5ozZ*(j9JJQ=hR6?o5FaOC@wCOm)zdWTbj66svZYk zQ$Y^&;xTHZ2#4^IBW^@gPlI&ODwobnTTh3?Gw@oqTIG<1dWk6`aLl0#nI~lw;i_B~ zb;tcNL~vc3=LaVxS5XQ?%2K4RmbPUrWMQGB4;m1!5S1Z7K)S<+FYSjw6e!muUm{C=*g;ORnz;tw_{)+bx>r_=Q{Pm#L@ z0q43;2N?;uz|-qbpPvqQ2z_bNhi{`C2M25WP;UKnpYr-{o=I(vpi+IhW?G|%H!6ILLEGir>S#Bg>4%w&hdMU3z!Y?)C}(=dfgr8js&I~Z)_l%C92 zwJ8Is;7XmKlu9XtJb}O;|M=_8OP{79E)GNpW{SmOUGft(N~HYlaNQ3U__$9V+tPP= zws>3@l@eJe1McIvOzulyp;Rc<^~cLF<;n0=rjxnIj~{GZ#TpJxd?JJ*;1^tXve!9- zGTpZFD&{MkT)@%{R=;1o{%H-f^uY6likK+BtbQY3x!^a6WWZ9iSeiaH9#hGejOLS6 zD&=Hr+~LQ{$8nhSb$lpXBcGyE&PWdY=5ebK z!0|OCypPI_ISn(2k0-e0SH|mf{OhItbfWWQq&-JLRX;t#Nfb+Z&yR-GYF5{*ggch9 zC45c>IX-<@5zYihOtPg6bV^|v)v_pg-X;J_67@J@WyC>prrYH{`$4=-`+HJxM>vU< zIanf;Y&T^RrH3{A+AvPl0k0&X)Py$A=rl%ovw6Z%<6=&NkxIwQcR9(jS6FH?Yq@G| zki9fqtk2B&i2D}5g|jq+*_{fd6aw7U0m&4wxxx`rbjRr3qBUsm+LlEYUG>ASo&6c+uoY!vh2Q7o15)@A3-otsDRSU1eM@UGAa_h%Ii_aZCdqX59%uxZgeLx zU=Tb%-0H}*DZMj^px96J!Zrd1rzi)1% z@7-efUmc`k&8In=+}c!xp;PnZXWlLAtw>0Ynq|cX)8Sz3i7+z&03|Himq%Ja!u$Zd zg{~8IGsbDiyiV*CDEYk>UkhU1bEXp8p_I zf>B0&STH{DJbjGAR3|Td9#6l_huQt{u(!8&@1K`tEv;STTlmg!aYiGmIFOS3av;QL z!FKzW98uI7sm{a8*<^5!>4I7ona=YkbQKYz37d*)4hD_5tBR;1lTeBm zU{yPg-o^dfcbE6i*I$44bXk^IOGJmX5CusXJ&z(J+TD?;goqH1Y3s#l5VAF0Ba1BB z^SeEE`}o+mEfQ&vT!f~^iEJ`29Cm2URL2RseR4(dc+kL!gL2>OI;!+>U`F!ZPBW?kIbW)iH82-yBrAsJM$WNL+u|*m?}C$trA7#f7Ve1Cs^) zV~lMKGuwMlUenZBeCeTsw~JtIGlcczTTdme*EFbckiEXw~MNh;cYpK-N>yD zWfNu#@Fbhk?&nm2Nh+ZBPgut}3~V?{lqM>KE8x5NFE5WDKfOemtcWz_<~Cgc9+r?<&r(=8-7E?x#T`v-xT&HKM$$pKZ7$Wq$00$@ zB5P+-wYx=HhQQ(39*F>LxX}cF5Y%wzU%l!yUv7Z6QkT^3Qs00&ES zA46wEn^c&U4rlfrN(Oeg5jt$VZ99F7j!dGuNNbC>MO$kiF51kzo87lzX4^jYF&tQ1 z`^~RE#C&QZ`mh|Fb;G2%tmzpi|W$iuUs8lH-J$CUXY6{j zn#5eJ60A{_XiZv^MG`Y8T|~@dcu*{j8BQWeXqYlUh^B~~Za*W&l0$+~XdHK6Byuw; zL=0wi_%{6It#47Sipus+v{NWGbX6f@lv<9Quu#LQIV@^7+#lof{qggs$IqYNHuFFG z=JxOZ=EH~Q<+r~);Fu3Do(`yn`cNpVJ)!Qcp)94686sTDp0MWAgQXE9wrOs%$_9ZI~#pZCRVXZGGE2 zNg2hO0~#&t5S%VEcQ;*=%u2=#Os1te(R9f%!mE*gF80jOIi+Px4}H4)GqiAWX%3$T z%tY=uu>XIy{;NxpCdU#4F91=9cK1|wW_~1y6C)}D z>;s6XXHQgRW`w($5)lY+alryEQf9}Ok7X6~2=9+VE$3}eB_cTNd|2ml;waq+;>cRf zH=@eWC}}G3J$ga;1nF%a-N9LBXRH87VB0FHxJ6}2__dRTneH*i#$4CXP(;%I5+Be;%8abP~W2R>6f zbQ*m^g0oy!r_|nCX|;ft7E8_ zObv5To_S*Gd5-F)j7X{TshxrX&cPRS zQ@f!eMwX1(A&QV27I?r7%)am4RMs~3zO2$778nz0zYQD8YSg%2%zAGiZUhA}8`Kmm zGKour`v)0q3@eq%*zsP`Miz(!DvFbCYKGAkS+_H@eE;!!zwb?2jQ%U5;R!zB#uz9v z4sO@mvaQRuj@#YF@Mdg7(Y9q-+PbWbc^IPV1Wd#}mC%W%p&<6-$XU=VVc_ySAu=G4 z6Hm*O7{}mZ5ZUPcdb?k)S0Y~4bzNIqmhEW+pkv(c*M7S**sQBn;biSjsRU1W)HJe% z-w6?$WrP<&hVWZTL!}@_9KyVtQ0x;Ck$IXs0R&-6h69$N8^n2b9GYq%Z6v zPwSt5y#DdWf4jb2h0%i}!Wi`M>64LNZ#N+#79GReKzUXgh4F!p=Ty^LNJ|;DtO!#K zGFz5*y<+a_wjZcKi;o@zFxk6f4klLP+eMkI&Z)H^7;AU^sudq zFyQ5%UB^t`m~D3o?NJn%H>Lp^s>IA72X(|G6zNV2(ev6iHaPiZ(M5Fcdf$~e^DC@J zjfuIlrjdnZIzYXvnt9I0+iiF8hg}c&Q?XC>ok3&?9@y56@4+{Py{k5Rd1L5&zIYO`|TU4Nt4sko*qt552sI0 z=ckA5@w}c^S(nBnp^Cj&(oc>-)w&V086ygYna$|lsWH@y`X~o=wrc>q<6j!|e6dD( z2ZJ?V2Pa<*G922d89QT$H04z%g#sA~;L(_yh(pKP@EbOi`(kevw~t4 zjM~uA_x-;60N8QwxBFee1;R(W=j z(V0AmMzLG^`z2Btevp`K6j&{t5g?jFxo{dAFG8oa348kw+tsf7xc935lor9C^sy## zP9M^y=cDRVq#zyy1K(9|_x|ne_WO_9x7X`^9}i3W^{2<5pSPbL*XJ!VYspD&2g#m~ z%xvDKzyfjx8D>d)#3>9}qln$wh{#s?Az?Cr%oIphJMbsclcSinZCQN;4!iW2rsD*Q9Ezf&-sY4-FUZ z384=gM*zB_n~|9(4K#|uvvCVes|Gsk>Otcjk5Bl6sZ=VeF^QLXe(ad42_KT3>f^8` z?tsMd7*HB1w(BT6dCfE!Nb$>E52nHIPe(zUrWUC&W+q@gDk!Z&VU6QfVzPayP*WpW zy*|+asUj_S9nOQ+3PDO};a(=DWi6w%BfbeB2g3pm_8^AAHe`(G=u@WZnEB9%xU zy^1MirHH1s4E$3!JwBREQ3nAnt`5LWOElW3ysEt2(J&v<9rK5Am5=*0IY`&w;s2Or zEICXR2(n-w<9^+h_58ds^KxpV>waM~>SK7%IZrSUA%+YaF13kmK)@(zs|gp`?mhruBs49FhJ+u-mw3LLsby4(PV{&pM7Lh0`9zaCuT?ea5+dswmS0`WmC$1W^m56_pDBApW=m@Ri z?wX0n!^6pxn_%?LY})m9y&6bZ_WPX$Yg=D`T>kO5KLFQ2D8Kj7KYjW9{p-u^?M;S~ zLI`~*zA%NJvQH-!#C^yDJ=NC6A?kRYuAw%_+S-Cj2h1&qk4F(uz7k<;ls#<<__ z*Xxa4KAA*XTUKepS>ee{urTQc^Bppnw-E%94#NybC%NwXk?63_a$8#VPXvJL?S8%7 z{_)!%%r3^u>9l@&JUu>~p3djA~6lblQ&dVb(jssFrUeVz^Kj&nz2vwW$)BR zjcIAT2(QA+!W+{f)EYZn&X;AwMXYIX7gde4(!qjBrgAQD~ zzTEGB{J8x7{q@i9Z*P}<*U^MNKb(L0<@wXY`QfyloaRu4>Anw=eCm9P&|N;afg^3i zD3d4|1PGYGVA3=L%+iEal|e#~q($6DD9{bJt|VO2lJ%?(cMP6nMK*>FRVEM_F%8rA z>)useArb6hUA{b>&)Wjh*L&Z)jnVhL_kE1L_r4Duf^pz#g0P2 zUH=55dVYG?&fE2JxxHWB-rktNt!=AEDw>E$YvIWF!y{o5(VUCxZeA!c4GO2a*C)`U zQopVrEmN-2TX(P~O{9r`N7XL7zW@39_dkAsNXS}~^SV4go<2REKR=(JAGW9SdRkW& z0-U!rH5)@sZKw_(AsV4?Go?jnA1>>}l$~hF&r3ZYnO9$FxHL)@gU&}*-6xnc^(CIw z_GbR+aO@qaMN=(6m|J5a3^Q*iX=dFF*|EXTt)pj0(B!d&ROv!2LM?N?T$`DWVZ+SG z@O)Z7J+6)Ar!SwjZ50WmV?NSxX0xOe!N{k^`BNw@42r28w{$$ zUoKKL5iKJfm2|Ms?j z{qg?&?S1ch-j*-V55ImsKX1#jFcX@`7^|&m;6#TI1S^7gYQ@6n{`Yc*y}hKFS*1Fc zCm6{E6VyANOx!&6aNzY+xnv2Qr*@`n{!Yw@+?%XLLPFVtS027X{?|O^gxXSn!UW@H zMi8QH;caOH_VRwS;HLtYA95uq{g?=24*+Jn7nUcJ$Sw>?>oSqd`yU1X z4FU-jBBdD-F>w8Oq=Aq=XFjnZ>!wvb#ThaDCJBfn2lEP3M1kzkA8^`RL=fw7iKd?! z!CyaTwH8z-InUYj)`JniJi~EFE%|=r0PwV|1j=*+pNV|yvBiy87$Vf-zsZp` z-CL3ew$wa}=0zxOE=qLW_N99i;&AYj%e6%ejSWFO9v447$tk6iA8&Wy4JI7`AXu&W zK@^{fgE~pKn9NK$d*7A{0**_E;JYI~KXqzmr-tV7%m%90@PmOl;!GEN~Y6&89XZ=b&=vzhlAH?Ig1!XwNJ#gm4n zN}f|)X$6i!ZbPhU7}jE5%H&wu>#S@yvaZ&Lbp{i8S&ysb`nJR7v_# zVnQl8&gqAxI0{^)|HK0yZE(t2Ealv$sgPaFG4qHm48gq5an+6#7=-`?L4f#e@oJgq z=l9G9JUn>>R!aBLL6l1`e%RRgxx+rDSv;6QGP8z^8XT57aF5lnsiaHY4K1BM<;!4| z$yy@myy#&e%5FH~C*je@ee`YP$8GuaY3WbcPV2(UFx$y=*XPIc?RvStzS&T_5AEvV zX(+ablkWR|A8xaQf`tTHH$%2?inUf7P^Rets+u%;cs#@C>&x4I-&-n^{CM-r^W-~S$vDs$A3})?-Yz6fk z4kN_fnP`L}N>>m-G*FA3$#7qe`gDxl#M>uh?6=olO?7lxme!WG3bVA+X+4t-?Y-;J zecy+7WhWTS**ceB_I+b=PmP#ZXy1q91g#bTNR+DDh&0rt600n-E$gK_Xfh#``hW;Fs^C9Fd{_jPO+9DAODUbS(ylg!dNPUb!vKhy z>d-MR^m6<2cJKS>V^=7x%c5Qdp}L6EME&~mLfg4OEAsV2z$r8avzVDtCrb=d0VDVb zh~&SSNO)}mET(3CjIsAI`t5R~3waYVCK75(V_74y%k>bM4>Qc_XJ@ZW*r}9hFG95* zl#H1{N0xm;T4d^hNNv2|_P6W)$G2A|YAov_59ibK)A`f$`Sa81^V8{RS=Z(@hNc*5 z@E&4nIqsf_yy1vXy^NuRXv~sMFEhCh?2K)_Q_O`a2x`v4A%=;Xd5M{EG#C%h) z-}N~&V1QxL#1rv6B~jIO9dFnD+Q((@`)t8;9d4Blvcv`uEO?8+-$4(kuIgy&v zHM%0>lWrrq+9sI5gDcq#3v6UIbP%|SKX$^vIBp!!7Hp)7edyh(eT>W~Gy+*hUE@cd zE~mq}0UvD;qX&dUq%m!cg<(2wxBJ`W-iPW?8*0P#vz7=FbCO+NFk7@PqUCdd|LIg9 zDMdo{E+HloX*z~9dU$#~KR%2;_Wjncw|(EQ*9(&|w`EycYpsbekubo*&5u%cgeJ}V z!gCYTN_)lul5+{SGimQZrHbL^FAUAF=}j4lfTT@OrS^W;x9jWw{Ot!rS#Vm~EZd|^!&J;xAkFbYiqo?zplMoSJjxNp~G|^?1{(BLfI(5j;^PYn|5!omC3r6k?P1J z4^UxY@PlKU5YdS8jD}q#@?xb7wW#OPI!aIs9R^U$Hii#ZWoBV`7)ltzyofA~y>g^A z77<~Ij%>zCVCbpId0~*5s&&^Zv4k9>lS{K%WPc=L3fS)E257=UFft}ALgyw?pn{mm zur&58OJRUXV4j;Ex)G!Z3K+#*u;?d-p73?%#}C$q>;2m}Z(ZLm`)@z4zx}wpyj%@< zJjpL#9=|-Dp0>qR5ruE(BeP63YAquUcYxQ^cO_U5e|&K65q?@0dH|KUf&i4|W*y_n z9)3t?mFfVNpTiS5ICos^gGT#EiycXcLAF}-rnKNP%E5zJM%pZP9LbPOxa;&uV>+K2 z3tg`L);ov=R3wEf@Sv-ZZ#3OACp1F``2!3!n9|@x*|FF#BVi(lM{7I}m8ZvKFjX## z<%Xjr@Gx`#J9}*!5R4Lu?`(K1iKi%>*iym~5YM0Z6|+^EWn9cxp3F3~Xwp2IZeGM$ z^3;6bJkl?Wh0kb|75#(oK{DsMyrQ|zr3KAw6IvQw_ui}b8#3oEIO{29fx{^nF0;sh zab1$}rhT9gneXRvxLsRiQ)gK8 zq70QbpCJEp_#ws9rna%nwLFLfLP~*5t#dUM>bV#Kt43O>)bf5bKc8c&F`5!#%3 zBQ0nyVk#{EhlUQHVp)d3N?z@so}qA8vGd_OPu}JDr4);U<_X!c!(&lQ+_G*UGjFrw z!y?Qec?N?jjs5zN1NHx)`SUBGVkws;O`?TWD0EyeJXb5C@<`zciXb&o?tVTGTN*G+ z+?wlI98-p14(njkN*Ev46LS&6lF!J&wB9J^_pr`shcHtJ^O=cr+GTFd0offQ3UxR` zb9ue_Tyy^$e{3pw5cR1FaeTG|Zi>Z$cee=HPVt#yQ&R0~8>MWAd_axHQ-=AL^ZEhL z%9sMpSwEx5)<&V9G*?!-JN>y-UjWh~5&#R%Ysz8l713OaLOlLY21EPHkN5xhA3p!@ z|M{18mbTLW@BjPb-~QXT>;3j{-p;4x`RVcW>*q#feVBGy$Oe7=?Z>ul_xJ1fKVNJN z$9^DEa;MLu&EyKmB~lq?#zGo}9wtqeWxd||^>Q^c5lK}K_cClmDl8Fs(WV!`_}4!a zo11l2R*|JCIvI4RFg0EpkuVDj$WIZQ69kkD8hiR2!D9MkC{|)1^02tn18~SLYES0S z7?BW{uNyj^r?s1Idg56ngIRorymW<_NfaW(lj~Rr%*G5=sClK4A#&Wz;0cUIL`Dp2 zO~$PQF@jdRdTI}VrSaJNdZKk*Mx`4R=*q4l9$B$y^p-}Hz)?}HWbsx6BVCxikCe4W zwzNez^WM;E+WQ!z_q|{5Fy*$iwzMYF7HM8P>oO9h3WNZUWhz6AHEbp2A7qEW8RRT| z4w4p=-(6c>_i?$u{NvjXA`{}%wtjjzefj+O^Yg>!$MdI$_0z+0e%yow=CdO_#Vv-P zRu&`~G1;vCLm^;8%sVWFnc44f*otZi?%IZhRKbRv3QA?vVV=_EP>;8*EyBz;2KKJ6 z*KytZt!osU5{PJ7nwVMjH%YCV?Zq-`6o}ALeH+1|KRU4*4WnD{Z@2#A;kR|Kf4^_x!IZ;D>9L^x3CJSIqcomUF;!H9% zc1x0+89e?OXtE-@7Uo4$5G-Al}Wo`WU zXr|Wp(R=TGzxT`K0v)gcp(e|=o}`J0Ffl|B(pc-S6HpTkQ%d`Q2@nrh!Dn9tstfNZ z&m$67YpyI2kuXscLi6+2&Az@|{`he*RVFZFZE`-Xj}ND($MdJh)A_WWw{=|>S>5X! zs=c~&Q(Er8)*gSJg;h!R0Ea63>8Vg6YfIuTY&VmDJCjoSbpO424(mrkG}4Y})e7;1dGtFpxF8G8(+;ZJqIj=mMdrsT;)O5yK?z->b9 zY5NQUh+_hutG|q>6Xvfdl~1Bu%Chp1g!Ce+H9hiFWT(SIUt!K74iLf?hA)=RqJyC` zq5H76d%yNEG+?_Ioy)AmVf!n z^Docmhjm$65SHPFdYT|5jLg@Fa~W4IM=2(-5D6?DjR@1G?^4_W>T3T4!ShF%U`3WV z$mPj$MlIE*$J?0|#h;rN{S|;}$ORy$2LwgxyWql6)0{2M59+i;?Thask!=faYg5zL zw|!SE#E7g=a}`|VeoS9B3s9CE8Rc4wPhNp~M z9Y!3IeCSYAUU&?c&L^gENbPd)=3)#7Plq?HUhcX@sf#7gke7(^3xWZ|Ob2dVJ>iR) zgtak=cl?Z&nP7Jah|-Qh0zO2dvE~deOLFGJ@j1HX@%(OS5)?lUhWgFi zsL7{Ix6_y6^O{U6(QT9?yeu-Dg{s%)*@ z-)?WefBU-fX;~g0PTOfcKX2Q%EFv#Iu0OuLV<@UmAiA3Nphm6uhgt&%E&Fb5Wo2R* zx8-u*@AtdUQH?AUmn4g8c$J^3i4_0@QDnU#VVsAF?tS0ZwY9}}f0K1tm&a{2Gf|}` zOgt2(Lpz{@O}j?Aff@EObo8m7EY&y6%yYWqaQa#GX&W#gdwn42?%;Rbr_nq&-Wp6q zlptti7=7rtUax?Ggr7b=>#!f+e{84IU;o`-e>$xs3}X_GGD%Yr-X6}-fnnr5&xK(i zhHA8WeSTb)ZGCyYDR}Sp`gZ;Ce!1Sq(i$0ldRoUAut5+FjcFuIP1L9{4ON3T%mxd2 z^=A`EQWDu(G@9D@S&X*9pkb}-!L%i=%u#J;`v-mllI*@fVf>7}iUCz=pPCYeQRMYBlwHBgRbI%u#up02i%O#otC zu%#{q2rSH5w{`7!|MvDjzP*tSW^Teyr}fM8!(YBU{pIuH&!0}8PHkJ7h&u?D;fH_< zGaK07*sHcP0L$s*>NEf|?BXZGs~#+1q17yUBA+H9>k`ka!)|x`v0ra}^llN{VIcVB zScl@;Qi&QDnTdD?i#*y09Wr9zQ#bBiU+?!nU#{PNynlbWTyDD>)=eI^^*{Xer}O#r za9Vs^u1`(X(KWS>NMl$Z!%A)XEKY}5o{L9BhHkbBIjN^=3)ADnx-Pt{{q}OdclBy0 zW>!@&12j}y*)aITSeTbw5_xCB9<9DKnGmFjMV} zb(MuE+TJ;o*R%>sWTc+NMNl&zUJ*As_*4;KLU{6&7K+S>IqD-KU)Ln63;mbo0|pR& zi||TqUDw3E+V?Sb?R&rV>*X@~4uUXCYuuJ?S^X#h@BuYdr{GSIH#BsJkPs7QHbF`( z-ZXsv!z`yO$HWTqmZMGtX-i97sHT@;Z$GYo`*tz=-PQYPYv*nI^z``C)5E97?df5C zJgw)gEsWr@qwN}o*DhM-QCe^o5u7DYH%&)46RzFoOuxll6!+x7NwXzBfrvEmnsN7M zsfep$E~2z16Je<|Phthdz??a*oSCRmD5AuL1cI6xD7BhV{hBhZg;N6(8V8Y! zL!bhY6|UX{02vAnU1QEj)zC)I;AP8;SgNu5)>Ig!OA>2Z{V-&^4kbWfQYLGDIiEF4 z=v`m-alMTmvs1IGZGJZbFoizn&nFbLC_Xe8@fh}c@4tP!|Kr>B>yOK=>%*!2>#vVr zo|cEx+G0$$4)swvh$2d-CICAeTK5IK(Oo){KxM$?$q7uEfUp=DAUJxi{ou@Bq@QKoS;55y+iSzXj=X96p~eVqiQ?=s&$Ff+hae;U-XR*GZ%1Ejb5)5P{gs zD&j!-5)akry%|V8VL|FEB8&ND`6uywU>h@yE?(&|8IZ{&b)DoQ;`PlA0-P62*NYtW zQ7zBGNJQFKd5rms^4rPGgt0a0U46_8>LkY_lH=QXW~uyPODs3l&fHS}iDDpHwYoMR zq2ak6e?Bsh_C1mbD5InXbXDh_LxCsksqc;h2Z1yz1kfCxO3_2xTT=S*ptxB+$H7^k zu*voEbtaPu_f=0~(RF*k%7ZgHl`hTaC7=QZ;VW8-cb@LKt?@km#KbTq1;(&_JWG^Qo_$rk`4Fe1S%%NtKhQi@rKQ7Ba#NB??)5z7xdVA{E#AYzln0kb2*KirGL$jGQeVa_-*RC=`@yOQJ+LuNTZ?sy*Gc!)zD^ifl#p_%kbQmgRAQX)j%Q z7WgB;$G{O8vTnsGo7|P$ld!%16h3Vd_aE=qAMbr=TX6hn+Uw--d+w0r?wy(14=tNlBvaTysMTCilVrXX;WNbG&7DZ1lpZZE*2ospj4bKe% zoQM_y7;K16+U9{FayS_x9YB+!#S4Qxw}t>pRamt(KFylQIK~yaS@p6o1JsQyvnklC zS%)?vWBT;@iI^{MZxxLon5Q_C5RnqtbMC4GSRHz1vDh0{l|U<|2IEjR&Jmk~WCB4T z!fjnQPjel8j6Qnr`+j?QRUORa)q2uelLldCNnGrq-N@BMu2I^!56)KJ?F*+wb2m|L1@IoyksX`+Q!1`h5QN%k!_F9)Eg1e|lKXn=IlT7h_g} zGpcS_&9wUXYC;V!Go;Y;4&b2%CL?&Vm9oL$JxaKFH7?=a_4OKaREHXfn4GkXktt5D zMR$_a&Qs$@H_R~hYLPo-p2-@-E8Y5dzl}d%E?&EpWg{|o{-&K!DOygM12GPx@&4`sy6n0eOOPe5!-F=!ypV{jJ$~z3@-FZ zrlvlSHu5FXh(IBHY-;+koD?j;^X^yr>vKb!aA4WMfaG ztbi*Qg2^BCfJdW)B@UkA;Y*pqSi=8Nz|&a+QRA=;#C^rqi~qr>(UG@bWGeuShxV1)PG9m}A zB;1MPJYSm1JX^R-G#A8$jgpHbh9_V9QBl>s<9fS%{eJncYDBa)I&bUKd3}C9e||oH zd3yMC-X72Gw8_$h62J|Gjy}wWC)h=A-1_pxgn<;7EK4o^YT>kB?OkO)w5b&3|3tgxYYzv>?^*S~*#`~AiFxb3gMJpS~w zowj9_a+957rEKj=vEe><#G>UBg%6aea#SQqY^0?faWoUkh!S$=y2S@Vo)WQGicH|l z@(2u7@>%Xc0P+v0my?;TuKL8zqGr3fQ1+TnpO;WIL`GAfvO2|8v(D^ z`+cZLLrS?KPSCP7a?OvpZNCF<{!ddLw* z>HAoEbVUu8HmxAyGz8P6)Hz_nX%$o4_A%X07oExhY$YoE_1AH zf=Qa(G3Ry`V`Z61K;afK0T?5h1uh;Nlw!@oW<|;*n+BwP2_22h0ZE@AB*%Psc4lPc zWMD%OJvJ9Clx;!6gW4;XI6j*<%43B{2mpZ`+i`vKu;qy~<7HyqLm-QyL73D08-+)X zVb;6dVRQ#kv|tfNi@$iY6e5Cz8V<=akec_yG0Wy8WyzdSnuFhS3yPjas#Z`k6!oJL z;A64=flP@P%w_gbxQ9jK?!hH0MSETc5 zl{7$^V3;OwlB<>nnhxt>?(I(bN(+@IEA?AwtI5q#L8l2HQnU`X_n;IpH#)CV6n`46 z`j!D%>Xb$r^A`DSlm^b#QM1S;rh^pwxARH|H9yztpWs<8SDwl+A-O7nGc$bXf>AKu z>Vd)zO;M$T#MW+9FzG;ryC9`l$Ku&sx_Fh^jw$&>&GRNKe(60VBlKcW3dO`QV_;;y zL_!Wn51907=-|wC^hh=`kdzsonm&0rOGL}EfOs`yCN;ahy>r`yrT4q`!A!!UMi_Q~ z*}q?Ygs=hqzPF{Vr)?j4yL24`peC}MPTR69%f^jO;NHyTa$C0c^IyNbU*7KoTN~L> z3=G=Uh`_?$U^|vOCt8_BTcpF@$B!d7SUv9vs;X+_lhOuksDKE(`20LIHEQ6KEDMQe zt@xs;+IiiG_3i!5X|tq70L!K-Zo29yAgp~L9#EQpSDPRBV>1&L1rad|`}jEkV+?;8 zFMI&;XFMH7Mnv9gU)!EvN5HxvK~%$UNed(kg3uiVz<~Y5Cc%;C|0V(-nf+jvmOOaA#FpB;UAcKuE1jbAv>kD@W@!@>lwiuUa3L9PFbRgwLBfxGIxQiZ$5!y8~A4X>AL%Z2f z)1gC6O)4q0SQ30`=K$=MO{2h%^Q!8F$k`nsLVDK!AQM^*Gx!;4rFsT zayFon_$a@2^cmc%KSIznb?%Z{D9Om|_tY%&c?j;aVv()Mc3RKodog++k7rjzGAY*UbeNJ1hj&PbPPop{A?~7 zkR+HC@AU~p9dSTZNb)y6n%sfCe z5j91YYLH>I(_DJ&!&;#T7>>zwxi7g5hWWjOW%V+ykF!|H0xKsxwsPCdryB)^1DSC| zjxc?)a3p+aD*zRuZJ}*lPHXe)-n-s*y>}Z~!QOIMV_gWTyDi1ttQ^6@$a5^xK5)H_ z-+x^G{C@rR<8tlRmgU!pr^iN`?LroRY;cKFRL~}t9W->K$MFK8UVk49z zkuE^8TIv3VN-vx}7k8fX0Gt!!X6{3JPsfjW?R7puoUm}}sj@6B^-6Ae(G3Bz{4rwq z;)J{9d-!dc^t85hk^8=1?gPY)CBUe(QrsTEF@NseN?EiCn12- zEayHQA1+mDSxl<+oPy^cscF%vr4B|AVWMlD=Z)sOqyCg`K0M9g#>Z8OMGG@~Sfv02 zky4fm{gL3FdHp5KiN%rPbkw{dW_h*vcdSp@-^1BUZIWbVtY{eYgWwU+JW!X&HIB3Q zYYxi_^O_2n5wZ9FkDJ9>8jw|I1ta_x49cY9e0%?|1AU9YCJt1hSdh4_4Q6&#CW2y& z4t9Ld2sHK{a@I|oZRhR%<^ARRi%)^np&%#}+#s@S%d#!o<3rmPTbK8tbUJ_jcYk^R z`f~a4qH4TGD`V@)$@vQj+ZZgtgAfB6F=RW~(J**0M6PZwrkIbSq(%!%PN@Jy&JU;4 zwu*2Jmo!tTEOKt^?S45>;#OUue0#j{0di{&`<8msbyNjVBkby)ITOW{Nxz&9W%is! z_()iClVczPi+2Qyt|ewhLXDV-7iMKJiT_;5WrH*ZfQ&JGDHY&2>YiE!Vj*Ty4*bti zzDZ!fdyfGih>&;NBQh2e36RY0z%!XTVVMTc|K{B|!~0iHUvU~+Nuzo$&t4#|*@@Wv zA$)wO2+ofW1dP7JTP!CkU?L;f7{dIIzyE{G0NqZjcgPrHWQg4l7lgUWAst$nna5Hi zBZWoGygQ-i>;X_u8?jUxj+i0N%mE-YZ{-#m(OdT|ww(ckjxk0beb>?VeZSv##L<%0 zT5D@-D+|ZCUnWEkI14k9_N?>{d3{Q$p(yL2aG|`Y&GA{r>v$ zfBxeKn>L|S)0DUHmF_b{Cn5pObVX94vZ4G&c2%Fi6v9s3IZhefQqmNy+ zt7pfPF|CQAgI#sA9jBMrxy*D=E2fp4piSq-m4I0Xpy*v2%foguHt|wDvN3eudsmM* zRA)w_2!4u_sf8>J8e=vHL)GC26Nt@*5n;I5WUyD?M7E80)(a))X*of)5JKa0AnAmy~<`xY(rIhzg>0o`~7}< zzu4<52@ALQvu+YIU)>!DGnbGm98^@)E&eOZ0Vq*PqL0X}o#rL*7Wpgq)YL4?@ehcw zaPzc6x7Sy-_m|u6Kdx$DiKqeVDi7!F`SJYu>Gb9K;rYBhotKBLtu4G4I})zQ*&pe7 zBvBK@TzUAyEYY-_syX8XTE2%ymIqi5*f&Gy)AuWufl>LB9_lKKn`n#tV`h}jFctW) zL_BUAD=R7iydll#M3BebNn~6;#z99Uv7C&OnRkgw$K4;pG>Bj)?AU{7dODv^ZEgNe*$*)}s6+?Z|1_0<73MjL8D_&BjoLc@AW^Mtu1H>*h%&-lK4-BJ zlyqBhYp8)voaaOSu3~D91kFtEQs%DfeEldRfms(z_92=3nHt2l5W|B2`x`;#_ zaOiRF=}UgfvxhGoe5w-6e4vc#na%sfe}(1E#x$DFWF>W$kXTlvVya4yULL&DJUA&k zRu6;x9`W4c+IMepLzFX5=L@jSEN`=PH&9BaB$}vLwmi1!eiPwC7o(63swJ)KOwBbV z8~M1Q{AglMDnXbKC`83oKuj}IyN}@(iAjmjn7lOw5ea)ue^M0;^D!tEa5v}rlv`b- zfyE;@@S11OtfZjC^vDg>ySm;BRy0s(t$~}fylSb*!waWg3{k1S0FmBoW|qUjN*qHQ z=2uGvQ2;@X!xsF3ORu3moV-H7$=tlC)lEf?LOKJ8Ul< zS7SaW&7U3?D$riu2;~u%CJQwfB=3;z~^;HGz^O^sTb`@3gHB{#4D#bPTdUW=({b#=>h` zh^gDj)6=y3(j_^j?3-(^8WSrug0w0+G+jtm(Pz6r^lba zJpcLy0O@%9{_^ejKYG76KsbU3W<1TxL$7uka@`rQ*DTjn^?N2Xq| zdEdvr?|W-hMiU^SvG>l5EYlbk^F%o??jwLa={BK&V<|!osA6K!n06@Y zszl~lbcxZ_8pMwGh}niuWt}?Kh{kyx8L8*R8^TtKd#YiYbl=2vwlnY?!iFFRDh4 z+873Jj%RVSObr^kH4Q0XG2{{TpL`Mjvm78?y0_D}cbmqBRTf*Z_n0~YLtNG;uc%Tb zpAyGD5kZxc2NWiV4Ao4kwQ$vm8!gM}4A*=*w0Bb-`@Q#mx$b(o!IYUqmaQ#IYqI)r zYRt~{`;nSCT$KJ~{9-EVF#QEVQhUVVG9Bd+G0ncx=2J`*fO_Xu0*G0}lef&&uH9b0 zz5ng&yRW`5ZA~7w_T~Bf)APem&kvs;x5tNeUfb5P7nQ-P($k;GkpUktb=IvU!iLpw zi}a)EkX&E>S)E9Hg!6v4oP&J`5i>V@P5~?FPDFOzkGkW>9Et%e);nB{Iouu7Up9|1%G(9+T3zf5NvgzY6I8^ zP!M|$9U}F?_rd-XtctnvQN!;HQ7`wxaup}aO_>F10rw2kJ6?}+5&{D@ODhDqGrKnyZ zYpvbxV`v82GRM=uo;=)Ksh|&X@+D2bi)sb@MN2QFn0!zObkq|_AvkbtT5%Q3Ckps( z#RE@wnu1)mVaAbpSGqLf?+1~KU-H3bhPe4{HQmG1rvcv%)GhGOdO0tf8$&>Hmy*XJbtqgA=EJ2um@Apy}$|(yU_XAclK$99Yj|Nz5U;&0uCE@Qz7NsMoU4ec0(dVS+ zqFo&mxxmNw$RtH9Tk)Eg6htRu9PSxkIqc!w{=+^vhO)FQ<#zauQe&jEaNz1-$ia+9 zDRIkOIlUZf>Wa?%q01X093QZDN5h9rl@gJ#M#2&%!5F}f6&xN54l`RbKk1|NHO1nYLv+KdcW=4_j-er-%Re@)|lkPc3$1!OfH2s8l8 z5liZp3OR}^ZA6GJhD zX7&bVL{9K{av2%CQkG%H-s+1G3@~|JPpDEitSm$XlK5y28z7=+VC^+E7QH=)!9kf3 zk$Vtnp~;_F zU?x68Av%N|!<7h8G|V>Q&Rixh|_SSIC}k#J0+h$kS={0|SX6%0VpQ!LWjYS~-M z03Ad7K1LsV-}|_|y^kN=phDDITh_HLYg-l{k`OxwIOXj-9i1(+!(bwA7^)Q4eG&~D zk05fwzt$*xh|CK_-Ka|`GDZrZiGaxynN4k1e0|;jc)i*G_$ovqwypBCt)CuGpP$ZO z9#5Yhx99VA-rCm4=a%?cLNOwdAqfPa3BMqPfe!ylpnQPp6G`U((EOoEsd3JPoj`v9 zBjdx_J)??JCexcgwT#WUi95>PM0LPKT9&#Zw8{tf!&iR(w1E7ZejL|7Yb>$)^z zB2(;Yw|gHWYh5`y`%xX3LrDuJSVVQ~!NiDRWQXDH+JAq!{qg z&Xi1)YZ?+-AIhaChwBt>Ozc6}9Hem%VT-fIAI>Xfsb@lc8^aFnD+naw6%HT*Gq(?2 zyv$sk#ISXXTPKY}$2-O3pV)QZbL6(te8G5ShMm^7cikgEZu$5Jo-G!8Dgg)2n0@7P zgOH3$>MsAz!E-j7nJuv((SX;nW!@uZ@c=RDD^|~_P7w$e@mF6)Pb(feJ*?SQoI=F? zh;W^?5RLhqmgnA=Ai8PS+~HKGo|>KitVSluqP zIOSoE#R`OBh5^%|HXsCHYK_DvEV-^I`Ydr$sp_y-DTb-|D2@N|dviH*%VRr^@P#5S z7fyG6?#R1Zb|Z*`k1Sq6w6LJVt5u$MP99H+KP7t}jl*_X-jMSC6CoBDIhc|7CYJ@9 zw8oUE8Rn@aspFTKm<2!6KK?H@G_+79L|Se&%r$JG%zPKlJ}zmyrm?M1T;4W5H(zAh zIFvaX-{rbY&o)3E&iLs_H%l9QP#pa9NEmY(y4ORyRLT zZ=>CWmxY9+t!-J*1S0*uJDR@V?)uhsbW-)n@kEsE48g+dx~N+3U3C;^Vexlw%0;Rw z%*@h=H}{!|``h*P$LothR#~_8r(b`T$J4-g{`uiQef}#ibiL!{`{l=vm-m-THl z)tDQ|Y>0@B7RlCOr{EEs=jO%hK}kqQUD|q z$@XH=^VMt^M<4kh=Q#m^5oy=;e181&Fm!})GoaLnBTU7F5!jsxKK}9f)5GUq9{>3L z<#yXWM~485Iw3Y2L_igTyDjI47%=-l1ZEL6V0b}U)|HK5#sjGxR8eN8_!^R#Nu#jn z1dxe0v-GD~<@IvgP1kjMemwt|fBE(CblSGoh=`$m z5ZO>z4!4Q*2d05xnn#1CzV}V@zTc{*!}dOgT300_GhBM#do}xV)lX@)$?cNshg<=W zx1I%oSYf>fTcD=d)(f6>CDYzQzm0T&6+e~>wOIB*^w=R z?Bx(f+B=dv1axS`h185q5wGb)I2Jo1n zDnbluDowgq0c#c?sb)HlnjNx_WBZbl2Z)$WwQz93iTrm+xgGEU3!ydCH4Ubt_W&J1 z;=XJ)WP> z>#1=Qw1kTOxCD6aS2A>ohtm%E5Y&3qif^W08Rjg&C!&cR5=SwpigKuuFA^b5>*ZUJ zXx3LuhYbe|379w>Anpwxw+=dp`L6-tW7H zPzDey8M9h}<82EWm!AVOUmVX(>PoM-@sID9-@d(lf4iyD`LzD!=jW%>dfr4LeaV8m zL=k{)jy_<vDcU%aB*t9 zL?I#Ur3yTk1e7gxEsaH<#89!hZgEmA!~W?(1e>U)xuif+mIs#&dAIlpsji!xw$^w3 zak;6cA7WD&;&setVTabXe42QkbQaQP+5w$c#E8Pydpf^sFl0tdu{<;3sN#SKV0G|P ztqM}gi7P6n-n7cZj+(hX9xA>Dea011>ML-I5Goe~iX%TFMiQK*Kf4c*rzAi{%DIXZ za&-YSg;|dlD|4?Y#r9xd=k}ZGX{Cs*E997bFmj5zT`u!Osz4AV!LnkcT3K+`=DBJ)wHhm^YX$;%|hnr17#RF=7hA?-2~*cGWU zN(d{5F8L^Rl3ml2Pg#mZC>k*iJJljv(vgQJn7Y*s%`oV&y$5~E;6@Pdnk?J9Qo*2UnRLVB=R+^eTQ(9-<8Pyoq zI4jK$M`$je*)a63yAlzc5oV?eBbHqY5R$LpyKz{;Fn-4?=R#yZ0$^5bPO~=mp$sV1 zUZ)tARnkPJXfBgvxDfTcCWifhq1I1g4dC2w6)jsY^ zSe)hy!3EF+(f-?mxMtl)nfm>s>RX*r)}ihZYo)5kWtF^YGHF*ht79}&jTy`&Lc+_s zN^2~F)R}F5RbqHGgBMniq%Z_n=RYAownQMHhT9dbb|l` zvoP`KL!@;b{kFHZtgATZ)kM^fB4J$j-~Zd+egl!9kFlKE&p$u^<<~D?K0o~Rm%rN3 zuYX*A`~CaNx0n0NReQH#p+LQ_k9!$D@raFl7-yt zY&Nka+`f?0I%$amt`WF#v>su2+x<~}7m1QhuA=Y!FA9IirI?d`aS`IEwux(aKYBj{ z8J5TK8#CX}BVedbYH>I7n4vICDWiwcJ&vef_iw*_rN#o{CLn+z!m7%`29@R$jZK`{ zH1uw-->>)U&QZjuNgff%NXVyuNRSNK=*sH@WAcXYIFT?Ap;a%;GlQCr;hA*idG&xn z!q+X$5|%8w+NqlsQw1Qrl>ZZZ>L#3xM5ICJv^_o%X9}yCk@Lvo`hK}yFAQ3@rHRPW zoG@`Qhgr6uN#Qz}l-M>a=Yi8Z0_B+Y0QL$q6Cz^r-g#!^=|n@7i3Y5zjxlVJ^bJCp zy1h)q>1M7Fbs}tdC4+$Ivg?nx{U6`ne*60R$Jdv)+r5c=dOkfrKK}Jzem$SobF^bu zm=URh7I0gd0W`F{l4vSDk6{Hvl$n?qB04mh*^y^R!pw%++OVtbW59HDz58E=C9g`} zt%%|u(N2!Z^VGamBM8O-6ZJms`+W@Kl@}JzHEXRA!I%v^)Nc1-Ll?14@UU#BO+fJ3 zEaI(Ln8+Ap$i_)*le0qov1vI&9R+p4p7lyG@TQ4P ze8_?M;ssvur0&Y|adqUDp9F$7*i6LC#u#3r?tYQ64JSXneSLZlFt|Yb^d2jtY3VCc zPM=Im@1Jlz?3~(ku%#{1*6kcQ8mea2_ulvW{dT)uZ~gtkAZBoD1l~^P^R@s=Fp-u+ z^zxij=ENP4tsnDnr&EgtP9%f3*mK1ep|CnB`DSLCh<|7pC??|OniC9x*-h>Ga{ujR zm%n`#B562p%k%mC`SJYu`Sj)K{QR&!otD$u7PiGi6+=hpElX(uj?k};e?C7Vr`}8T z5q5!-y5dTm&Z|U18WCkQ238l3SJk0C#~cweA91rwQ{t&<1yPro9crjVoN9*?txtc{ z?`aHMmbNXtHfAPOyWjP4AD%H9Dia90B)^@c8|tEUD;%DX2;>>t#Fy*%`;Yg3e0~4+ zdK-p^hwWc~{ptB(JuM!Jvc&h9x*ZE2X{Y`!nI`3DD7gU7Ne4J47*INT@hmZ&Ga|SJ zF%M51k|u!Fc+&*O>0Lyze@^S9>?oK{f*n=^hJTtNaQIE`*K8t@{#AvhL*8mDjQ~bQ zR%Qa$VJ|?48gvt~hliy#dB5)0dq-wNo52GPzAPUU#54pcZsDVcKNRhH@`-ATD!`cT zkUIeR2AD%I>m-NwlFmk)uSjw*6dgdAlxsX&I>-6ueja^m{Q7zj%er>4E{@LPTXoHP z8OoEK4c2tG?O^34NUueASRz5 zw{^aI5sHzG>9TDfovZMPrxj)n^q7)o_1(yUCPKhdi?kH;s1=wQ?B{3J6IiB!I;+N1 z`wKcufh0tw24?dtd|39Pr(GTTRG&JG>7+(}M|p&l#uYQ#O7mAC8iq=(&2LVGN5@6* zw$UTQb#VZu^m-(zdUY2fJ!q)|e@!WeL?1LH>fJ*vr??f=%X4wmJpR*|RT3@(9pn{& z?P|LsxH(tO-nler{O z!}L+ZBAJhH{W3){X;J$pgj{f@*6?s}j+9CKZCc`~+%o&L*sci*>BIlPtqY>-a=uw! z6PEX$O5O~?)JB?1EeMJnN_#VjDa2}4T4g)~)j87oxkdM=S-BiSMpmPeCQu0zFkg_| z_QjDpklFwRZ$gy0Y==Lg%k6Mef*D4)Ze9R`#^x47v93qgiUdST%gq&Uxw?RPs?} zS-O^|axUj<*7GFP@f%pIV_Zgm1~m_ z>+n3Oo|2+Y43)cs=2GC^4ugnTL1rWE0ZC*Mkfk52ro$Z5hTx?C61fIUG27dS%)|a7 zXrxAHaymb(+r~>%^^S5wP50aVI)>`N7^8Oumh)-s-Kip&Rm1=}EY$!9gbs@8H?<6$tyXxRZ9l$Ua7SEw!GB9=e_CH?!{I?$QQGOSxjKX70V#aExLbodSn1ypz+fg83@c(Hppa_{HA)>BTF)k5A9Q3I z+fwO{db~!U3^_59Drzg}H83JD3fZCTfCSr&tkFh{^g!!w}lk&#AtI&wBOlqq>$n@Dt^3xyaCwYl0- zHDw!$-nEOatyv*yq{yaD^a61PLD)bb+10*Z`fp!fe*5$Fx390?FElA0F1#BN92k17P()x0;&jNaH~?Ok=y5R0BE#MrOjqLL#&*%h#9dx7TYE7EjrQ zr`1MOnV4E*0&fdEN^$QVAh)P#4ko9QsK zK2*)boA?!scZ2J?*kTL?93)!wIc4(1pVDz$w#Yv$aE#YIytca=W~4>$0w=wyo>3vP456N0tr>^G-=qF(UUF@N{Va(K*3s=|mik zN;7nC?sfQ^CbCyccks=z(H7;Or zJ`>bWbe|2mCNM-;Dj13I0N!`|?Z@T!ua~bs-n-(ot$+RH)6>Ix-WrFNwInMGN+Ugy z2+Njp=;kmeI=9*Ju;{s~}Nw5I<|14jf`9;vmpyOwYu4p{i2d;r+~u^bIRQJRYE zs2IHSVV{reULM|5{+JG1_Z zBlhuvxjtd$Lc4`rhf%QUy#&NMELCVsID?kUUQVJ>xwj6(F`dWoX##@R89CH)qnxyI zy^pyjgw(n5T|;HC#`8sHe7tb5`GHb$<@`FCMiKy^9?8EMiqRBF zU{H{sL|~Rf4}>^D8qaJ1Z0OQRm~Qv3Iej}&U#3}4y?qcN%nHHuFI}KCPKV37x2DO3 zw$vgYlud0A#|$Djqrs+8vO-}iqxmecmqeKvjF<%MxU~AzcpRx}pd!FUnYSJXGqj=k zWF<;{HFqH$NT&|x2Gu3!qSf+J-QuvJnUguMQcB&7d_I?AeuM&2Xk=_z^5`hxv;=XU z`GVpwLJu0;oK$*F0>zq*7RYw)M+9c;Oy!X{(5m@GiqDj81PnBQK8%K&ONVxC+y5p?&5D2(uI8QxdLf2@=K-LYUyh?4@WcCKCV&#I!>wI=&0|~87c*E zxLXd-nWlOi?uaaGO8s1U{h-QYGJn|*G*^A$aAZGd3G+@%Q+wD^aUor%$gNC5C+jU7 zBgIRO()?-AOEBU
      ?F(^4rGps2N;%H9t0l0QA5npt6%j%f+m)U;)JQXZ@;hT7hZ zy~>s5DE7HvwHM{I#qOuuAJ{l8LvU4f|JdcaX1Sm7gfRn>HPxNmFA| zf@$R1dcc&(XQBH0MAVf9Od>*PBq4&lEbGHVzu)`Yd+%NQ!02&fGgDmUF z@WL#zz)Z*Z{@d#xfBV6UJbgO<`s+`hzC8bzzy8#i_UnGRyxrce*URm8x!!JjzxLjh zU59()Dl$~=95FXE@y;9mZ%$bgVHRNzjTi<%#4J8C)=vb?0&yKMHFI_{P^?7*hdpS zbcX;Ci9%`+Vqv!Gl$8Gsz+hzXLRSE)>K)E(IP6i?aD2O}4zJcC0CDI7W`QU=QGl=z z6Eh2o=Ln??soL24zTbP_bwrmgGGl4tO}^AC4~%qZ??Xr5`|WzWUvAW(P#wx@*44UNB(8ZJvi{$X6)`azbMN}& z-hcb^_3yvG{`U3d+xxYfoYw96`Sid4%g>KnJFRUI5+MS4ZWd*)L~reAPRV(wn9aTJ zU<`yj_S+<)d?F--r3t~7#w6|g+f77#{P9rho)VW-1rjR=U_|#m0IZE?H!>o?M&?5k z>@55*KR^BDX(6(q+wL7T1)H`G*sb6CxZk_ac!V)C@#3R+d0`TkMc9VkebJd5Svofn z*%&d%A>}YOEZ{{tgO)fN=%q!e;`A-M^0E2^3g2 zIQcOARk9IQfBLiuZBk29K^)Hvkw)i-GdIz$syg=l;rU4#>%PCeU+neO)LIj6yl&gF zu1oVgNcPFA=1~%)4voP5#I6WK8EPazI8i|-t~Z*jQ$Q%rvX_F$rV3A4LsITU-hlG9 z+vRru?ZyS95(4<`u7CV-`N!ASKi}T>frr!S z=bt`3Kdjp#3lm70tA&McvCg9vYl_&u-0sM?r6?%(lS?Vs^|e9){sLKnN?kD$t!J0R zG_fg)k>=*tN$LvaC(i;C)XE@ZRQZ#`MGy%COXZb1PA| zj~1VSw^Lks>M7LPrNjjouX$ot3?0mSIYfDc<^JSindW$37tsS>nz~>*bw^LN#IO#5 zi<83K&ib*Km@;OlB-Bhl`Jj<-^kd6sw>*m}cu426u9a2ciQVJD^3k#%Q=WiW_j!t~ z=AIq@6x0AH8WH&JQ@nO^*?}U;?#|sUyI$8!9yS<_dY5pcgS(u$r{oY007ARQ86}2z zPi!F}&w@as!vPK;fmpH3q_b23n6=ya+kYlu^Er=F2R{MfsLgdN9qW5{kWJJoCR zdMMMZK4ekV!SP>upuLWND9ez6G7f~~P{L1%CCD{75egLstd-P8$gQJ2g;rE)3 zem7?FR&>Isp~@N)YD1DIi*`6@dAWKAB!4=kzCL3CqyHby$?+&5f!h2c(j53pm93fQ zEcYdMn93QYT&WP?gva@x680kd4gxb5D>+9q%kybd^$;Bvr?xnxBEi@^14tZlgb}6l zGb&Y>EHj$>3o*1c=>w$^Y4FNUtV?ZyV>Zw!RI6rj9Ek& zHWaF4X2Y1FFttkYB2^V>rlzVs=M>25#x$T|*YiBESE^cUS@0FAuH03PMSL(K2*Z0! z5KMzwve;`2)5OF?G0M@5qD(sEC>s3$PDQhqm6~Oy2?_cCL)dY@`&;DOr>dSvs0Lwn zOi5ORJ(*#Yid2iTA4TEr)Jen~Q{pW9ao9Y!@F6CSVL3335{L}a$XkA9xm7HJ#Ulcs zho|SKpPt{pzX4GfL*6$utaL=Qm`I1+`@Wu<`pm3#S(mdc?R4JA@Z;+b9eZm`W<+dM zC!GC%Bz)YU4nxx%H6<0Sh4VXRMh$ENBNKp{nT=uheIKfx@-@`FwF(Hb$Z1)ndE%HC zpF&mp=(dmHqgwkIs^-}iW{nwKQ5$&qELe!iOj#CLsR5fQ%!Ur_!^Xbv<959P0P(W4 zCd;xm;zrCQ%+cuFt8_z@wHhLTV5TvjFqF5r%$tz{Ol;_C_o0n#sP29A#;VS|`wR^+ z=6ly4*YW4~*FV0${r>gk+w0}lb!qG4!!Z(_o46ieRx_N zGhho56P88J+qx{xh;@urcw5`!sWI6wyX|({$1q%O{oCul8xhm8EbFq|`WQo1ZQME= zAk0jSnTflC%vea(#!wMx*RsK|Ior?|C!>jG7Anain4(0)evZ^BeyUcvR;3-@>RPEE ztQ{=MPm#Vw{RW`Myhw}OrZk#F)6!X(9CwN+`Gdglu%pR$s8XSNVs1VUB*C$B+!m6a z*xc>T05aVH8>p>ZnlutWeQm8KJ+Ib?*9nUVU?>&Prk|IrM94zJXRF?f{v#zEo1 zQwx=B<&R`A+#eeH7C`L0%KQ*(1UynV5~zlBaj-f75V> zJa<^>y6ZoFy#4<5^7ZA`)lOUc>n~rP9!?KilhBdIFfTlggmyw)gL0V)7*@HZMjj1$ z%^;<9$2^7l(P>1&{Tg}G)l9vmU>uKGdy>+QEHre4;DY0(lM1KK`_y^L-94cH%y$B1 za6LWha(>KGE%tZABa=xzyp$feL(Y2FTs2*roKK6HeS5q1ZVaLHbNIMkWvqPd z4v9RJ$vYsxeO<>76sSAB4&;Ev>BbdOpFXwK)>wkz*fCFCbYD8)A*CoLdWk`!bq31A z3%Ap1CCz3`my3)`pT&o&)4W0aI^?_fnQ*idU4<&-GBB1@;=u{`_S1Bb*nH3kd!-{u zWHDbZ@QL?H-WFaqx!(JIXk+nZTsf~E&uaDj8snx8?l)2P!!GhDNvO~Z^PI$c)V{>p z#c0|nEh6G-0iJ$*Ws()s;HeKuALoc|P%V4xX(j}_T^W|8vT>#(#9^u54pp&)%*IWf zlgjU)`6;Qry0PQ!YWOu}=iq=@Ik>UeocYQ}uapqa6Hcrp!id)|1(igopQg;YNwx1H zo#U2~dTE;ZIFj|8pxT$j7_$)x@&WyMtiDzooUXN%o~mF`aImHdMfaI_yGJ`huL=>f zcL<446IHa?Pe)QUN)f7zbvD4f`Aujx)V`!RTRvx!b)I05bZTJ|BoX3(cTR4quSM7{ z^R5E@G39#J(k4GOV`L$*nb$Tg9EB3dSd9PJqOBpy1f;A1m7q<@t608kiPJ=8r3&MT z!>jrb`pBBtBzH=pDda4zB_Rz!$~dPjii_nv+{Hy|ze?1b@)FlcQ7`VNIGQQU-sQHw zhcskfDAUPc#zZ1$oQ#ki;<2g2Y2JD!7#`lojVgt&OM%SeCj`oY7#@5*YqqUl0o6kcA$aBAaJ7WuOd9 z3e_w-t6*C!A|*v=69P>_)eh>lbV|1Cu|jv#t2t~{3UQ&ddKGHsoq3=%k3Q+qBogT% zOE4eUEQXTOx@{uu-uqA$ZhnM%-!0qvAiNZax6pT(M1*J34M7C5D2`xO8w6CRNdu&bseS+U zeYas`(j*4E8w8n`N6|vn-F;Sq*_U5FFWY*%@4b)xe*gBzpZ&HoY!mmP6dow9K!VT2 z^DI0jCQ{IJ3In+MR{P$7vfe5`5NSV5Ok%@CyMe&cqM4BhGq0xRdbiI2)322XO86{OkBU*)bA0Gwv zTm^iHh*|+hQ&V_WoQ>hLz(OO1Id<)2FpGRZpYy6?q$ZxW%_5u`ESCr`O{7U`1eBy4 zfKakyX=RCXklA$YiV;8o4Y$z(j#O-hPn2;Rm;DuW9)qEUpIkGAfsONlgqm#5FGUF+ z5xjeV0w%)D(w2o_3fu4deWP`|HcA zFJoKVvMlSmNn2WLED|Y;afGZI4dsarsO$&5GAdAQkCGdi&Snsx$Q=NZg9H(bREHsP ztbqt^;d1eB1Gl&RkJlT1eFCm$Me&}a^9BH%8PhzaEvcG zw2-oZ*yUFqewJw6N{=Ws4{Tt=;L6gz)E~;>K!wJv;F|^V7iJb}-m_K$KHT@QU&rX- zYlh{ae1b&nR98&J9{(F)F+3LkyD*#Z<*Hx5U4Q#}`Q!Dr@BMUYzx@3C>1jJJ(wb+j z8?rtakvQ$12**+4^jN|Yy2UP6C>DXsw>YR@Iy_vN;9O&}h{y&_>zC!KU`fwmCXRUy zW>~cfzD^DbakDu4>DjryiDk*>0msu8lW*xG#fRu4Tt;{>~opjM-7Sw29EooscB_KMHFJ ztuGS?l{=O0q(Mptnm
      j*tvKIpt+ocKhVIIIz@);dECkp^W4kve*zAD`J`1yEWg zznEu%5*^i{K~m?(4UNa*ObSdB(s*>=()**i!}aqL&^qzR2*XiGGMpI?g^xQ;2)ZG?14=q(?sWq9q&(dHOm{uL zl52xdskxK~$1UaCzdmtuIQe;^D|8lA0fUsnqL)ljiKfS!vZFiZ`OYIy6a-+Ab%2># zN(6(#`Y5rAqYehVLCzNuPsKBi|RHam1T8N38DmHxYOT1q`&$_ z%bAMd%PEDEj7U9-{69n4kfY>GzM3XGlec5SWK!p5r^3iZBeR(gSW0;=fy+*SjokW5 zKs(ACMHHl#Dev_`gN0Hn`LmA?n7rHZx0Hr^${}Vx*Wr#u`JiZ+{69OyJ}voZw~ZA) z%L9kh66w8$P!8DW*vSYGA`xP#s9*U?A1q#O{anmkvAS8Hn^G9@-l=3#8vvyZ>%^uq zI4by3#gt+~^KPj-F(JX>*YVs22LKc&;9wR|M>rFc^N^NES*|XnKCZ3L-2HswdgBz0 z)R3t_d@()(#QDX196SE-s2~wb@xl1g$B)eY&1FpZ8iBZGIS0;7;4t5b7?|Zt7rjc& zLren%W?7e|wMLDXwy0Xy(YvYc(bFww;Bl^>!E7jt5SbUXsX^h5y?nR5vjh~--kUA! zx{O_oRfi_Vk9BuDL?wcldeaxchTZp@J1s&2v(cln)fD0+pn8^^1d>b(OSvbed^n#UZnyn6Ij&kBek z7ZL|D0%e0l7$7Jat9PI?@2+MrNzV|QfIz*g68f+hz3EuUNa1ti%?QK5$f;P7=f}~z z5C9^huv7>WjjkfmEpZX)wmS?62hXQ1%$UD-^0R)wy?pJv>evSn*aj1wJkhG)Y^i}z z`Iu)rFiZrLVlTq6B^bnIG<)~DXu#8Q2*k9m>q#CpW9&oqzW09bd*A!@c4O$!uG*Xu z^Q`flt`}i(b9W#}x56l?=PIkw00_54DWIu(h!$!PH$?;+W9ZP)d*Ao#<$BS<#3Y_i z*IHZHhom@D93D&HjL@n+=)lJZun-G~yV7MJ_o1)XyXjCJ{oY3(Fl%djd^r85fB*UE z;dDN)3n#EQ?`R1lGD42!4QP&vOk{-Bm8MR!dLO(<%M9zMM&5h~YoUe}O#T@#W|ufTVWqo9$II>oxGDucPPKx#^GYS00Q zIThQQEZZpxtB37g5UnE1%8#ez^TYP#`SkPC`OEXe(|I{9+?q7P z!o01#G`DD;{Ow@Hd}3WBbtcK-z`zRcl*{6{Pd%XEr_p6PQV1hM6Um^boduDq-ul?P zD$rO~Ve_6Ilnnt8Cj#jk*a7|FBdoFmqGk{aE74`QzyJCEx36#Ce%yxIwzN-A+w;TY z<9XdY*k#ee5&+kT5}R+GzLjsaKR(j!Op&L+v}S=U?Bh7O#JS1jB0|bh#bv(lu*@rP zM>ILI#Kx6~6jslP9Jfv-LPh7LlStX7#~VCGTS>}u97|aBu?H6{V&kC-kfNKv;K?sd zVVE5PV%fAYJ)RaYy}jS}VZOHxc*rQ4x=ep9G#3teq@}8&RgH%pV`t!M%F+Wdxcr2; zW@cF6?Zg;)5`9OG-j@M~geIC&9yZzXJX^*mVkskEJO|($-MHMsgj=B@t-OQk{^c7U z1w`4wKC3@nZ-Aht$G~U!fc~tRVxx(C!ks0!L4=iaNaar^;Sx9SrPvyq>Fw5iTpd!H z%`E&Hqh9L?1n|fN9bY7GfpYM+ED!1AowMg!{v^FMqHGAG;mkO;PXP-e-6^VYfYX=v zd+N{wtr4$qFoNU>9CXBuY8GuLtmHb#K~*PV#)uFFK&W2q#YdJ`6#|s+O{t)QXp8j8 z(qERC)!)T`!O@-=^~Xidj=4Ok0+6gq!o}n`B8@bO$WZ2CbW+LXgG{e5j~LB@m^Avx zT%W_rhW0QjHC^m;(kD4Ib}HIh2g@XG$CgO|r1HrXPh&(dSa+tyh_X{6fit&`yjPtN zQ__wcD%dhRNwXFq(rtlimuaXQ&$r8kubQ{mmQKY82zRE_cdB$=XIJ4ML@WWp=T2oT@Oaz8R zt<`}bb6@#`B}hAO0cxo7zhHTqhz`deW!oG!q!FpV9OZ$E6;0Oo@ac(!N~)aHExnTJ z14;MR`K-M=V0g0v8>mN1WP*9kSc&}V)GCu~hO*iKgW(;xZ3;)caM1f99BCrV z^nSbf9Ei3ySTJ1XJ!ROVrNcYX6~;&-N(MBMm=xLA2EaNj$xKAfRNs3%xv&T~VHUP~ z|NeFv*XsgfqHiznP1@7>{Q2{z_S54kFw?iYcH#l_-ib&^nRHoNAH&I`!kQ!;RD~~> z`kNHc%bXG4o0cj9CTnBwPsX(O;UDpaax654iU)C+u`EM%-|q&fS!4Fn9m^PT+8++3 z7a3=vqdfe>L<)e}Q-ey0`m=gji4g|C24QKffgnOmCd~twG&26n0stgL1Sx_XU|?Z1 zirWu1BOb%HCbzqRaJ?%-iCAIAWK2dd2E>UCBI422LzM90jc}fk)qB$d1X|Zkue)&; zuTtTq45maCHbAxrn*qj4^AjIdF?J?qz2}z zc0O-kp3cAg{Q1-4>FMFLEwV@qgUZS)L)Ms#Iq@h4I}~m%w#Wk1kR$TltdC(9^SrLZ zzP;aB_}SE`!IRy{i&;5}m3(>*u`zj#c;5%$9CGM%)#~%YMDRv%Ar`>(cH6rTG$!GQ z@OuL{Q{25oj$j}grZ%GZg`;&kS8Hum1F4gq3KA0GWnlq{kgDyAb~C$;F~;S3cicf{ zTa&e&%Mf^N&QKd;^r3x>K2!%_ssqdxoypwyGkE6}cyBU;r@fDCr5I+C-I3!+z%nDE zCbG2Vs;OMyX(uS0ObT_5G==z(J`@`UkXr`;BBVsP$4Mgs zz=UOK(%1|Qlw_zQ2bfy#-E3^jdOn|8Yxgm3w_Cs8bwrzi?61#WJ0KDuz-w3|#m5e{ z?EpoSM=Jy0T7v=W$)Dd;b&THoe!Dpd{{H%ALye4?)^%Ce)4FbLZPLWW)H_Ui?lR@_ zMc^krf<#j&K$H%EdoC2+vl7W!0LnQX>HrecLxZ!8jmT%Pk^;9~ulMU8KQ8=tbEI70azs~5YaGF8~K6V zFw|7h$LM49u3fcvHGs*Q2oWu-@EWSOZj|gs6;qfyTHXU76k5VtmlRAap-*;Z~G{i@uK=V3_SK1~LaI76H^{7eB znn4t>Kl*fY^$uK!MLUD|LGCyxd8@*t2Tu&in}-`!j-h4VW?mi%3FD`9JoU#vzJ@ba zUj7)6zSMj+6e6r&7GMmNeL(Vh-sH5l+kL#h??zN6*DJ+IUS^Q2h86!T?NXDvguc4FeCCMiKgMR z$Y(rwm$kRS#Zy+j`Nc96Q4C0UL9woBUL9?fzgKKdyiA?mJS=`f?I1I`byG;{8PBT- z^V`)~xe1McO468~Dnda;?tBr-k-~l$8iqV{QM^omLF(qdn}L9`hox%dS_K{o?-y}% z$23|8FN}&|0P|C`F(T!Pl>kyXq;J#? zB9T&w(rU5dMwD&!iU^NYO?;KCt&4SW1o>VlOOjjcN5z8EJe>1P`lgio!vh~|`utCl z+L)q{*QBG(uv!GFrT`s#p7l4nU^V%Fmv1k@#NZk!oH@FFFz z8LjRzlwU}NL8()aZZW0$JIH_?j>3nHn=hXKiY&`KL$G<0ruscz1EIzbTUkoHge`4> zuY}F4#DCWG2LSis7qMNIUnim*^;4IzAO~W-W3qi{6(D_-v{e6WVw^Fl#`;JXC-hkQ zIR{xOP=>=(1n@aHbWwOcg{PGJ!OW!IIhf6lKZg%if$c$R!--u1h>WB0RAQjw|Bjix z`C4h3QaENvtK3zi;~vv|NC!;Er#<|!xeuu<0Fd$F8C?3w4&Sd6gIwsmXQ2p7zH)j7 zG{MJQ$hmOGhbw#ZK`R0Wl$+)fD2P>7WGZ|MQlM6lQt(qA3I(8E=BRb2Fizn~2}2tr zU48GK#cbK$z}JF>Wm$v-#J!K9W9)s5TTCZ3gSWsZ@-oP>Q*?OgsA2V&Wk!Y_9n@1a z-SM>92!@M~G##B%xjRYW^GPk@@?fr7A(&4ih=)-sx}JQEYz!>xN`!sC=`a>=h(u=5 zp~{mA+&c|xn#8n z;I6w`w`#i!&wVq688p^S$I!cv;1Ce7tm1n&OqWHPCq-w>yk&dg=; z43@T7Tj=r34<}r&{(=E+UN%sULmgZjzwy-3YIftO{t`{<_uaQe&Y z8l@1$0YZjbE#fl}X>H+$GdXUI0zDmL_jeft$@3)({e8veZieOSz_R%H)qRbr3A`-I6H!!6BB7g-TcAYj@qk=dmfXft9DMfESA{f8;OclaC;KM`}P1e;moN=dMEBPmnQ!jhUFVHS%3tfNRJZfLY@c6xXW z{iCXT-+SNh_ug;sm&@DhtCxh6@UkxJx^C-fS(_}2c<%wfzN#gZgn7aXk;ern+kqlk zE@bv0Lx-bJO-CVBM?onA1!bI4Z5DO61~2V%GNc>&Zm;*deZOW#1GpyQi8SWccxfD& zw<6Mb5nh-@$kWdyy8LiFuIJYU#!&CMI?Oa!ZF9U8+&^(6iYaL=2%(h&<@#z#LOfUAw zl2C|zo{uCzR(+OFnLJ|1jGuMODLdtfN8eOSRe-cVX_pVqoU5O-Uz(pec$ns{f(l*!w!CMOq#_T+}kon@@Hngg$Hfvhi2> z8tIT^3?p{Z{hzd}uo(90DU-2Id~Ahj`E!48^V6s2#;wu&y^q5~7UvjR=LldZ2bfSH z8KTUd^ShbX3ArOMKDaYs$cb|9gdZPq(MA&(dB@BkYXd^KE{Fz)VaQ_gTQt@Pk#&^q zzlvlXiqytTX~@h`O!`>ON0O(fkf+0MR|hFo$~>mNGKZavlk3kx!Qn>8DwR-KsT2rD zRy6#eAwBZR_*to_x;^SBWe17+B*l?QbDS-)h(0`QFwS$8QjKYC<-w)Sg3%J)+|^8M z(sZP9yWA1i0|v%Xv!zn2Gi8UPo!Ydt5IoGDmrsHLlTPsK3`6fDm8AooNTZV&X6I&< zIC4DwlbKOWsX;==#ja_1EvOx^+EL^ycuPM8)Fs$yQ35sEPp-m z&2)3hxvDKjlE}H{87u#&jSV>b0IArfHL-9}<6SfplwzCGb^&Qu;(x93BI^YYb$Rg| zsbG*Vb5M|BjlFc;DD#$pq~|i>xI~NoX?^@MxeF}#CbD-C#vYntPE3kpua2-(QKj9TG=(my4Fa|3<7 zLd&IYK4k5E6dDW6jfQkoT>k`4Y97j!CStImhA$8 zKwxz)%d7BQDv6`Vd1@!mL{l;rCU1V{Tfrc(r5*MwJNjoLV~GYg$MuQ=KM=x3u|&tS z)MEFZRhi9WZM{{_uFN^T(9@nn|B3g7Avenk=EpCWu_2e zGY+1Pe9&P?v<{1ITA&ty<=|$bFq{TOXeuyawEx#;>~P~}DdYbgC0o(>8)fe;cdbZ^(3e&6JYX*#)-|%y!j(B0Rne0 ziOsW`eHg3yh)cj!fEFE2VjxD&%ORLD0m9G(a>hoU)yj1{*C_O7>q)Jjq{fgm&?vLzqwK1QlkNAU*F zl2b5~EURzUuBy7<_py)Bz1}=H3h)8B2FVNfkyf=aEc+ORP4}DnDK80xd43dJ&oNOG zUN|_l+fAKW=^aES!bS$AW-_1(9UWtsjebqA9=;+&h?_JPSr-vrC2FKWY6^ANUWaxy zHSOACwW>jkFKl`?{zDONIpfxqSUSdGjXBM2n$xW95o4nm_%boRug2soC|ytfP-B)` z8Qw&hSD$x6Il!3+5GL`khlbJhP2QGeS=ZL2_i?-5Z`b=!6&CT-UxUF0<2pKd=5WIC z*fpSP4bqo3046??AmljXL!c%I+KwQC>^W8tff&-(C99p>5RAU}z2EnH@BRI9e|@`} z4uVOOb=}r&UAJv%t4O180Ibx5`Jh|p)vVUvch80BV}}{QER(#7DX+3w7tO?FzDrIR z`HXLvfg#+Gp#lXt^Ly(C8+03H8IKE`;DMY7TySLHdX2o*=^$pI7`5c&IL8omUK%wf zfiN)%3CF?XEZ9R}&_sU#g1n0N4MbQTOKM8W8BK5R{cnH1|JxrgfBv}bLmy7dUw{4l z`RV+ya9f-oMRFN)@M38&6ok#iuT5~%;>S}Mtua~5?4}sl1#yQzc>2<`PD4azEX(e7 z>84~6E4+?9Ud^VnaWnxbE{9X)=a7TWJMct-KTEZSqYyiKI3ve(OuG_4CLaLpX);q; z#%9ze9i8C(q9@PVX=&$ex%csQxhp|f61_)=-<3xJeH>2)!IKp7?W3~Pk}#RRCFRLY z4#;o-=n?KsHH0w1FdIQPq=%5~0lBD1>bErFi0&ET`{jaVz8lr{#UHK(rj(>`BmzK` zmzc|+3pcWyrIpfoV=W~av6)-Ja`Mnvn= zy`GyL9vEeI)+FF^?U7jYXgcx<6EqZNML-5`A_k9tM{f#d_IbVn9~6{iT^ue?X@SAV zra{#_^hFt>_3Nl9e_$M{U^#PGEb`4GLc?rk9vU&L*8Tp@ZuM%JOTG?oRB!*0GpbXa z#2MN2tU^|N^M#3stlC@K6p-@jOTO|k4sw&fo5EOfgy`&?XRLU=5(!G-$wObKeI9=* zmz-#dzmqQ!YoWu|A29s9LLSaibw^M+zx9E`f!QnoxIjn0=bE5oYR+Q6>u}lB@V@xT z=G?o_Mhmu-De~SUWaabP8H8we;D20uOP<5%F`@C7YJOQ=_dZC01%N*&cGSZij?q#5 z&z~fGofiEouTZbsofdQltG@4(b zP`t?NA6_?gGNtgAoifae)Jq-BHKvB)!#dXAEal+{mV*64T_ERO5DeHowBz|MY*8gG z`P@^tACO`lx#}R0+iC|ZR?7OIQ8T_V*93VA4m?=y$w3}mdsXx$+$Bp(fg%eJca9ZE z^oh0i z;VB*(I?-u0HEpc{<|Utfs3PhdO^wp>abxp>t)WDwV|2A;X$(lRQNlEak&`%0h{%kT z_}<6;dVjs`>$b0(tcx({^l*Cq^fU~Y%kAy`?dALX<+As_6PTG7X%1({7^X0`6tp;} z@HqB}S+p$T1onO3iJW_M@zpYs3}X?0FT3ykw(ITo)|HrLY1{dHemp;Y{^Wbit=;#F zo)pB^yPA!A_g41=^wACIs{2qS)?p)?b2&ZRRW#zdXk{$DqRrtZIHoPQ(RPxv0%|Z* zOGi0JA{f|?047mzS}k01crm0F%x zK_3IdKujWmHh8v?DJRdue}M%L8kH=R`pHoFRv~qHXxeXn|MlMp|pn!Bi4HA<%7jE7j2_RH%1d!oV5CQ*xvi`Kml4Qva z1J6-&zc(T?tLiP?O*8-kASf8&$Z$STWd8pz86i0&mhOH_Etwh1bvHfpK^OCQNTBOw zM%?Rerl!kLHC^0n05K0JRmo6DNnRGk)@uprFEWNLmugGf3)4!RNx;~uDhqhG-^mx&(Tr=Yci*Np-~}sgnL7M{){G&6b#Yq&^O_Mn-4(N+95a(Iv6&wzkvk+;yRSQzM z=f3=Ozgg6cSatM?6%8vqOGHn|HU>tE=6`0m?VDVW>2l4fscPgNfwPQ4FhY5-YUB}z z0fXRElk@$Y07niQ8DrRH+-z9Q64`Fsoq#mm-_L39$C!~_tm!jckhY4^zHJyR^)SmO zBu^x3MY=_U+%i2zQw+;3B$%w($5?l2&1O}7Tgd?z?TNX>U~xR?83yFfIWfH5xSWUhm69cb6(I9Soh44UCF56uxby$RGk@^ zW9g)pt5i2I4j`PF%#)Q-fKN=o=nlCJ7q*1J%E&kqLWKvV!q|n40VF<2JOhp~WPE-2 zpZ@at-~RgT&%eCB9rJeE{_xYM-+jJ+`MmFAR6cmH8OsU0xFr=H;U(~pzpO+;%Yb&6 zQ_Sf`qHy7Kf1FY}VCmE_^L|oF#t0p__7wS81&A_n2cpUXkPM?&A{J{+mnU79aQtd_ z-Qh74VG`&g<3B1($t;s>_)nmt;m8TS#0p;~(-pK{y1$|GRkkG!!m(WE~bpF~$Cx?;6oF59JlTGs4W6h33Ik$D?CPgK9 zI}~;LDkr5AuQDZJDe6>m*bLA2{rxx}GjWJIFY=O783?QZMa4gJNzCYQccahqs%2-v z0f@?uTV5f9LlTW48fAD1uF7wNAs-QCIU{Zl5Qikv;y%(V!jMgVJE(byGlxp)P5}J~Y;w70n;$FD)l39`vv{p zf5X~*)Cvvcjc{t|);E`it?3=FV)*oxFQ6F+JBcDxK+#l^v7nF(a84vXLh=rQ0Sz-V zjO?Y@#wBv8pqK-jrwhb1shf1>hh5blcMc!tM@u?E=r-cT!G_ep%pD^ zx)m2e7ZR0iiLI^ZbKO%c)@@q!;xgdY;uQIG6fh@9#pOX<5M%)X`(=HoZ89&EY(GSa zACfVO7gQ&>h{e_q@@>8RW?vM9rsmaeg4vzOK?mm+T4Q_JfEWRta@Szo~A ztZ+FF^?wW9tW(cO*Clf{DAf7ax)3neQ3Oz(7b*~JydcQ+a{<_%?)MX-Wg+S@=lMAN z^cb3%2E)K;{U1TnII0*TDJK+tl)d2(N^_@#m)w%uZO6zaWj_7X2{n;BUp|0j2I-S} zM8YoFxt!s+_wz|xsPo`m!I?TfH3ym;QO#`x9OQ*mOD)+&dCU6 zL_zM-$nMRHAbHycH$()&WZS9R7}2FB_8B?JHybx|jva&B7&c{_2BdfW_U-L3 zK7IQ1Z~pk>(|@!ne1CcS`LAF9@|Ry2OMjcl(Hw3hbg9us1i(*I3kb{=fdL>Rt%2ABbMZWqp zBhaK>dSitWiLO!cUNCU#nt+}nq1ci61S@Qj;YPJXl#h*eIm39n-y>HUimvh5q%Chd zj8S+!W7u|-_m&I6RL@1WLQDz!QGPS3M_Z~Wbc_y=8H19n*j(&4JnuM-8G>NEGy`ob z61Y*(kP3*l9Te@?@9)399&e8+;&$7&(Pvy|i3kF@d`9VTLfbTy(;bAO z0Ys)~BIxsoxg5u=>ZdAITL?36I9PDBh!wOoWD*s@)pj(=8YgZM!V9iY)d1H2hm4YO z6HkzWNlm!2w-KE&Npy?tSf~+*G>9G(7V{bp?lTf+0h-`bDt{o7BOyc!&dw&uVp!pv zCp5`ODhhU~F56(C1eR4zbdyUKl$mQG6g`%@ei>9Qh*J}RRS!}&1Gp43wINNOvrIKz zYRYiG-L`!XRrz>(^BLDm84pr9XuPcYwr@T+t;t1U`Ps5;V@Q;HA&i{h5kejE7J5D# zQv-<%O0Q()LWVV@Hj04{f-NPh1b%1-Vnzw_g6DBepT}_?$K(6Am#<&HOB%zrF>beg z-}miytI^7%*&fP?Ozk!^Gkj}Qb~`>SxU5K1FV`o?zKSl2MHVtnBtS+kO-{lIT7-rG zoN?KbnUr}5L7viMbhweKju6&?eDjE80*WCKnYUuGosdwgeIjF2wE-e9K=3(fV*;2>>~ z${aKY&oe5}3yzW?XSvXg&J>0oW!1_@x$-T^0Sp_m(%~78(9Bki&Cl(*q_Jxqw(h_c zvE|e>Wf8)qOUsMm*R&f2TkG+S@>Ha`nbD$raMoScj(L4_9bni-mC?95;n3tHj(=B7UTVop$~T5RU+QRky`DVJaZRklVs(B(ERal5=h z{ecptb>Ok1ayaY9t&f|Ci$O~f6?HqIrnu}HvFNZ(EqX02lv{tg4BGmC`MT1#9|_3* zY7q@8{S_#jg`)d)t$j*8MA$dAYHRirJZD{L$-{XH&^w}E#HC%SsF8i7YE&&C^=(^j zLcPt4TcHm*T&$|!JgHuKkUF`k6n>oxniG1nsfgE(M||Fh01HE*NN4@P+XXvG{$dU_*C{Htxe+L875 zBG%%bD~7%r8W0t~ENbS`j|UW)G8bBG&|fGkIwsiG#9eOqY}lz{|nV<`Q3 zo5$mDf8Punzn!nopPu)p?e_fichArB)Z6>Rwn6#6agOnjK0QA@4%ab7jLqCR%<3L7 zZ@Cjje%jrec!-sA9mZeZA6-(J2ENDqjhT*yU=V+e76Gu#nZR({qAX6{_g1t}jP z0?3HE0%dwcXu@<4;{Y=sKH4-cPpg7{5n>M3DgYB)7B^mFAO=#r9sbu}UjOvV%U^$e zeLGIG@%hW`@Bi?_51*c%Ze!bW6jr*AIq>^pF8<@C1)xDCgXLT zZ$)%iYLT)Qy|hPxDi*S58$_XIuzo=5^_kLJC9maVbPT5wcCI3v2BKptrP7mrrPxqO z3uRv{T9H=G@S;HdofX1MA!64%DgASanIYPK3~I-%Sub=*IbTkz7ysqy8%Ofk}mTP1hL+^e}E~zg;?^mxjPpl25gq87ZmLpi%9C>uClm(!hb0^MMFU*UxKKil3b@8nN9bk3S zxC+N5B{N(bOEK(^Uh?xUdoDpQix4Wv>h7we4FwD?DV%I-Emp5+?@|Rx$m_mJmP(_P z-D6_o=JEB|UbM2SaitjNVK$AFOU&IxQgaG|D~F!poB^D=?%x1(*<*HO%|BHIS(IxI zsqL!tOoR`X5^2S_u4bU#ac2{^4O*s-ANm8E@%1zJ}iZUUNe?i3S6oZ@x(3CVilJ5Rg_^t!s57H4Dv{`i=dw!#J}Si0c2QmkwEk!scAejx5EA)kKwxkLB+{bmEyAh&(r2M2lI za{!<1oZ5bRy8U<`_T$r!pYHqfcHj4%bU$AokC)f?>1IBMK*#Yu-~9diZ!iD!pZ~nw z_WP&X@Bi+{KmPHjzx#)u&N+Yi?d7jOfB*X1>*L$&JRUY-W5BRQ-#5XlJK6vd&36FA z8PpwvVh*Xd%_a%jn5lOol?xI3voXdtT=4UF`TAntIqv&5wy}?~4;$Nlx7)Beox5S+ zK8ARs^z^h1v)jIzt8#}~Sx|AA6I4ZxV<5m%B^OMc;$zbu?~=%aNs|qb{Gx=tlB~S>?cn)f|yr!!d$;gYP2!Q}dWpCx?YbWeyRx z4aO~cVj@kCd-VQ`iaK{m^p5eA6d>f&9eGDnzbsMea8!`_0%*{_Hxr7-SIh>_(_wbM z-EO!2cDrHv>+AdZh;9NMM^4z{g&@m!jXKq|&?6>-vp{5`icC7Fz7?yks++7?-i>)G zy#)diG0@uQNk6{)F&11a_!DaP0v8ghZaMokfMY&PxI+;b_32YN{`H*aJkHn0;V-WN z47L~|wD0@2joYxOt*oAOV6CeImkEU<*c1sL=#;OZ;xZ!?921* zU;p8UFVDA6_i@{77z-}Tm}T$ykcpv+xpp#Myf-gG;<|f^?~nOD&rkcH)gB8jd16OP z@2s7picccVOyNQS(l%_Eo$j+rl*`*pn4Tj?U9-6=r8AoGaW^75XXUM`I#QR+Dqt!M zO9v)W+)9B}G^Q8Ua9vRKnMOJ@i%NC$y4d25moTp_ME9rNK0V)k&fi|%50?!qg`N*? z8DckJYPiX@z;;CvPc|b-fpOzlY%y2E7d7)=wD;xC1cfMK``rcOlD}rXQ>BxZgsdY8 za&bj%J~+hzp<`fMW(q3W$>#-3Lv9sq6Zj(E62k_VnER@R)3h(+wf=8y94%nU2G)w8 zHnI%fdIoY~_kG*<@$&Y_yTnxARI1~2$(A}#Psz}(AcZjXb$3`9+N{MD-!_XfIaI8I za7!|^e5HC#{i5q0%LOXxRo*yBj$x&20U{cPrdCFpiCCV&wdVEOwUNjQX9qf{=Ors% z&!cz@2pEI9W^1<=r8cAOL4`tyY#_s=U|D>hm3T{l%+?^~Iiq4u%M=tk1sT_Zs3~Q2 z?y>g%K|A$A`@^a3l(rq~kZN`9IV|=>Y1{=yn>dEvT1Q#-#55Nme^huWM_{`uhrGa3F8%@`uDok45o)?N_3Oy%pP{95%gGX91-)<24ynwxtuDAn;dR*=Qf z?X;m@@zG|KM*bU$E{SenhIRn6D#Gfi|Zeyj@Je+XSa=Qivgxy7`@IjlPfRxBtUk2%N1Ga z!Dx^yfE;?C z3J{<)6^OA60Z`@{$qO<5Hb zIVn7opTFFOji>v5gFW538K1{EX~&%J?{6>1@%H-me)=&Tx0?-G3~o0Vhq=Z^op}4@ z^}qb~`d|L{f4+adeg5+N4@-S^{hZWy@_4K>107@Ld{#MQZ9IGpfPHfY%*Loqnh z5`TceX6cxj!VDCYkn#{BkPZR{E7c(*l(Rw*rVk6EbXQX7V#lRxAlAijv4N#;7O;Pl-9DSHtKr z)Yy3X$pDLrGFSsNFoY`ADYXk!^dv(Vxo}IvPgeih2;NrWy+?ve^t>Ik@B||-63F(1 zAfCn;aidTwvTo+lY=y2Uq%znO5wi5+*Ol)T8lrlQBOdFT)6W5s?mETubkdQ1IeEIz z8BHvG-)O=x+OX+*f6O`E#(-qVgqM{uugXU&CD^r;GcO1_E`tL6LAgt5&&6<65peo= z5_(8WQH-7FUG*TfrEpU2MsC*GZLzQs4%HZp+~?!a zG+}~-NuG^pZHZ~r|`S$vzIfvzFfrXr;5ZySxB&X`qs7ld{6h97xh4Dip-FD}cr53E&ub~z_ z*G#i{nc14q@B&miECGL?> z9*@`8H)$HVZQH)z_WgFdZDS13Vy;|pV01$#blEcsas+T%v&`bkwCWPIpbh}g!*hr^ zzm|E6G^>sikp@?xoCG%t`%@;wE5Z=i)mwVh(6a8U;fet4{Wf6s`mX=_*O!0#<>jxx zzC9l2u<_}6|Hq%6fBJlXzK`2BMvPv`Cnisp@K!|a3TYN#j3bSZH%HwWOyTV~Uyoxq zD+eisQmGl@QmNS=N|9?G&obe7IidT;eIM^9-`_` z5OgDxa=e$=^EXvG1{E>e|A*CTlr zpL$i`uAlRAB9{nW8YxuTViEYmIn_h*EZev=C)YMhkTUPECA#f!8_nyIO3FI(po}%z zZkDCFGQv8*#S{gP>m~!2*X03XeSXn-@lHRyRbNJHGFrMUM!1iW3+YDQX$)hI8)X%&@+&vn?)#@7o__fK4}bXMPygZH{n6+A<(JoAe*XU3Z!h0|{eGNN6Z^jJ zV{lNCCgd})zeQ-2oTn=X)Ye72GfHe!jkY0HlAA#g70o1vN8%5S@F_peImWhaE`0y~ zINy)s^L{?&?P-JS$@s5+_!N!dV~k@8|5)lJ)PPqGk+O^plbAq64#5~fC8g1z1db&L zjNaZraMUnvF=bC0m0n3~k%RM?=lk3HuO>5W`}X{FfByXR`8Iy{`OBx@J-@#C_ivBa z_s9Fo>+v}KJWPTI@`C|BU8g^pyE`Vf-S($_-$%&(Jm)zbb0)xx!>*{4VroX{!AWnG;r)=t08AFyA3|w#&H}z74v5-6Bv{1W$iPYA)Q_H=m?*wn$iiY z>m4+}iCbbt^u;)V!}WU3_xDE}#2DOZfv}&SHo!J&+c=;>?Aw^mfBE&>%fki4a1N9s zlnh)I8Kb~DSs8^<|IHjynO)7$IjG^v=g^M=(1EKm@et+tq(zL37^vfAN+FWvv(h>F zkWDy7A%Ms-HnN0{mEl~L2dohxB21YIYitX; z&Z$WHnb|DWU66M}zucTsDjbfi6BnugmkcigB$z}lA;4=YF6vr0KGty`g|84BPRabr>E39Jvi#lMJ zK@u&(RrweJ$-5~-W4=OiWgP=-Mt^8y-{Hk4v?;E{Tn;)UP= zmv#y_#3xjnrxL{xqzM$DeMg+pc^*D8n%U&fes^Wl!fMWb;4|95-%Ol zR1~bEFW$0QY5D&(whA5cj#qP?Xd&+Qht}_1{Prm}mZMAB7r**!#nK@}b(K|~Q|i9# zDiZWek1Cvz*iWw~4=9Qw`X(w<<-&yvD>S1b)hdRy+PSDCF5mSbX($<(Wcyqy*<7^gVkdN@h9TX_q3vu#q9w9zHb9_2 zE5NsYzQ|H6+N!9${lp$c6`^{JG*$B|BkLR5dgdC6>(;v}Ik*q*DpSP^>)f>dr?R1& zdFz8L&C?pDPO7gP^3>K3GXJcCTo*oX5=G{)0;xa(&b*Gu>0QQXyc7NDGT~Q9JsWTR zkQLj9Rf4rR4aHyA>ok7cS~(D{R6F97qn7DO zSy|)Ja5^(hT9?IhE3+37o{wEQv{gaG=u{)1R8X?ms2;pV`qCctf30Xzci0ki67UjK zM)*&PBp8D-*G6TlQgdWODT08*H6@ru(of#0472G1XvQeF?kvFLoMOhS_OX5b^5ut5 zPoHo5eX|>|YaZ_p7|!?O{c$`$-QOOM*Vo6`u#IuP&%+(t*tY!y-;ZNX$p%GDM^yV( zNn?Vf;M&2VnBYKv*L*yF`TF+rfBWS>Z@fS4KmGXW@BZQU|L))Y!_za*sb7A3{QQ@1 zzy0$4R8OUpI#S#x zpPozH#79+aRrE00Afg)d$AEOAl5PTtl2|oPd1!(+KnZ=O%0(3|+V#U>W)7JlvTs1! z_U(4tw{7gValW6PWip7YOMp`%bHI}sGtowh0fNTCbm*4tL!`wRGD#$UWgJBq!6d)$ z{5OC2WYBa8_I~>Nbf42aCZQmwNsA1S=VAplLQh6zWQ2X018^?55)EjhdzY*_+{NmQ zCfZ~A*Vpsi_~z%F*!PX#zF9P;ad6-5Gj7JQ4Q%Oj%*{CN_iyjV%khdfn@j^>^|vtp zaY)g-#eq@Yf(uqqFT#>BPqS=R$|RJ1>#x>4En*v>ut&bsYZ*Plq9Oi3T8AJGK}B5< zP%XG9Mhb30$C$gVWbX_j7%dXru8|1V9$D^dtjU*oQ_TG+YavORM+!`0mb{4>!-lYp znns3@Le1!;=sp#EQ$|*4Q(eA|vG4mZvz_O|UtZte-XGz!(lTx}=gjy`PlQ|yoPVrv z6VXi*QB@Qmvd2P$%OJv(xQ0;lfdOF0v$x0yi?ln(DRa7k+=hV2YxSBQUf`krD~KAa z2Fg53Z=ux?nkl)LYL4pRfGuY7M#rDT)ZU0c|J-hJhcu-*UGDRo(@#IobIzBycYS}6 zPr?`!>do2tQ@Vuc(&GvyPv7&D4m9rD{f1SPDzN4qLi!o}!AKS>Qh4{K7Le2>;)kw1;C_cFG<@}_; zwkM>*ivUh{bDq;Xsg0GLQ9*^PlCJ2mLSvhtoU&RnoBt;`Sv3!eFs#-6LvVEz(Tu1& zsOGm*(m5TNQe}Z8EJmdQv7GEepe4zjrXxZ4^0a^Xv_H=I_4Pcx63)5QYk4efr5o?Z zqgD=1V({4hN_#|UvX%Kj63uhz$%-|3ptJ-KVaW{E)I=#j#VyFY}<_9sq!faEdIrMu5euvDv`f`g|LnhDEQl- ztK>Yx-YwK|s)6f#%`5%rZ>vr)qu%Kkmv*RMK@_66iI%-06oo!w7)Mon5EVcug^v?>3Au$5*n&LuKWUm`u4r$0ojo%xui{p@WW_{9HOW*9DWeuU%+qex>cg)W7gM1$ zP98-qwX%m$UVRB8d2tOT7pz3@@@W8hWnITW6v0T=Okp9j>sl+OKb@BcSd7{aYWDzsh(nJ~%IN@$o5SxIUSDh<6(kF zAS+#3R4Ph1-ek>(1LCxDX-2jGl-?$q{RU8S z&H44^`}cX?Tu*~f)YG;(^fYb{*w?q?_5Bz=o^Lj`ZIGw*HgWX2GXMbq07*naRL?0K z4%*;Gn!!&KJVxIVK=xLNd9hJA8|rmzMq!8$b@)7wKY#n{U;gQ5+s3CK?oXdTfBD@H z|LTAE>HqPc{(emV`PaAq{LjDr_0PY({r2jI4{rO|Y};sxHU#sSD3=-|8OnyG3d?LO zGkUcCj;uy@U?oxrNg4-Cz<%4#slkNX+h);PZNvzIh|N{^g8X45UK4?YC78kUpNJCT z{A~qSslLS~81q2PXp_@wTIz@y2IcaNVGx`N_L)PiXk&1UZRhQIzdsEh_WJht`pdiK zFT8O|<92&~zWwyW=liGIejAui`>>7r!;j;KXZz)sfB(84<-oRTbWi6?shVbb>K?B`aRn zJwDT~$l|?_;mFiwOm>e>$-Eg2KA{P`x{h-Ow-_*;D~AX} z1%+Gl3RugLMfk-1bbHJQfEZ1K7OwN@li5BQw{65FK;?i8QrqBt--cP^EQT(RLc(?X z6`81^^FwojWk@b&Cu7sj2(AO?mjSdQ3JZ6}t$gg)#;%J3(HFL5D6p4w(a|NyWO^JA2HV;N28~s5gIIfJ_8h$(MXnQngXbNf^q_^ zn9Pz+7P4$+gIlywB{()4X2T}S%g06oJ-q@m5s1ejKJEu=~XynG&(x2UYktsn-9i&<8a-kO3 zDsV}>styrSkjHH6_w|1NRj z(5U2#0torX-DljOqVE#8LK(5ex?CsmB-~(s7v>P$yI=#SuADWCUNZ9m=w`K8tfDp;5V+ECpC_CP%)repD`Efs^7^ zWDsq+u3?c>5r;4gpPmMZm-jPnui9zDCCaqY@q^kK=v4A5SFv(=C`t0ZU5)@sI+@vI zEstb*v>*SJc*GLYKel14jMI=%YuCByezBGvcj$+%|0ypnyw+Lk$P7mUI5Tw~^p1|U z{U{B-sD}0f%Ep!DeuJ0vt?s^y+j~giz z(FfF70F^1 zvLxD&HKNNf=MvMtVMXb^cw2fL^gKtGV3UeY?qTeTVG_$+tn^^^)?A!i`v|UX=O_M3 zff=fwHL9r)>ZSsT)QUnS+CXz|U6g`>i#sn@rFHudQ=!#;1J>mlx_qK_WixS_@>U;t z++LynG_4sRDrsHtMSae_&N{0w#R(NkeA1>>7HfcTl|*%5DmVB+;t2qoq&X*`8YGlo z1>ru!+?zOk3RG08RykhwE<@dl1b$#VOqYUFGg%Fp+=U%$Ui;G7fg&-?ayj}jejX8X21&g1d^c$|7aPa4cPwn6dj?fo5k91gQ> zGXOs2lq2ebtaj7K5{%#xmu$2b+9WR0Hf$2~@Rz?nzW(*`r~mrP|GDAw56^%1hoAoS zKmPvz^S}LY|dsd;9+KDt8L|K5Uqc0RaKRs?$Iu!emN)03D-% zm^a$jN8u&7YuloRRAbO*+R3OVHD=?L1iD-z7!mt)c?qvjt2?G)3NF06W?5XXIJDBX zmP=6D$g2B&Cgwq;x`Kq2M!}ZgDDpBMr|ve!Hf~S*r|0``fBt?v9_HKAr{_QZ{>LA_ zJng&v`q!_2{r={2!br@&e%YUH_VwG_`zvny?S317{NwKk^TW@1%=4I!bDnd~BdnTP z7AJAr+7xF0L|1_!FxxAFgcm|e<|mOOR@9cQ#we{MAk-I}X&FGo7(bi>GGE!qF=WFw zv+$_hXNcyUo{|6=ErM2aO7Qb>J{}K7-!udWb%P}gLf>CRgXO|rz?{>wR!{D3l?ET@ z89maXJ4SI;4O~se=|Or3mQ&h648|M=D4caiCeq3kLnK@@nXTJ`)cf7lSe2I3)+9na zbE+nRKHtY?wj1x;*v4?zan57PU1q}R5drdYEHdcWcUF0?-~sSh^l3m=HYUa2n7O)9 zve}&PKo#rdoU24mIjtgbiX&4KMR?wMrOHi{Yy`54oLQ((WX>@&g{Ks`CC{`?4ckn! zXvQQenidqItRAy4VnjLCpm#x3JSREWiR_P$1(gyQx042mY-g_?4N2MYFt~Bf^g1N> z>1P=Oi|jKR&2G1S!+_!Gb~EyEKEA!YM?Z!rwLH!Y#6)Aw>`1Jf0$xTFgPGA;s6^6g z0Z;%V9mwYM!q!Sq9!R!u;su_E@Hx#Y=tOnzUR|7lK+a5>g(}R_bt8c>xN)dgh;W<% zAOb&R;g`6;%Co3C=2SNgdBW z+_AaVp^Nm9OQYc1m9U8umTS{~ZZLH|#D@kDmHoM8_w9qK{LP~8~Y$iPXm zy%>{WrZ6L$6L9x!@WkKhQe7Mn4%6kVL6tQ z?fG0^n7ed7(D^f{yseU>i%VXoSgWaUg39+|MiSwXm4s%Xbn}pz!zJS+Glwo~;N!i{ z?s}U-O+Y#Pjyb$YiwCkQTNk*O?j9@Y|H3NXfq{sS)F|2&DN@B^;_f68e3*P`c{Hs_ zBt6}X#@Dwa>!jN{6yb^io4!r|8q$m`5xuf%CKlD*PR$C9NPi}0<=Cm@oSM6*N6+~94aiqlvwy*SOp&X%HKl(-a*b>E3 zBB>&@uvBY>I-kY5s<`_h&mf39BR>E3XcSXuS{7IQ)v10{- zQ+1+$e#ytUENL-w9cc4;vFk;PmVxdwzdXMZ>uT+>+}XJj@VH4gq-rNKs1nb(Gz9`; z%J2u%7w3w_Rw|3EHaK+>E&lcNddvrFt_uA1sg|}$198DD%gXBVxV6uc<_>Kw!N`N| z^8_h zk8{q`eV&rWX8X2n+dj522Dh=#u+M z{(t-*|NQi6`@7#g|J@&d_iz94$N%&{|K8+ZzaD@7<@L{h`u5kqe0zC$nGYGp{k{(y z#D*xDEuM_!MJ{~~iVT0mmaPh18D~AnePkQJ%`}D$*fw%b->^yrw~W|CsD|U>ghyLS z!UY#j;KX8#Sdzso*W~>&g;7;EX(OVTxq2finM))wtOmV@3#)D41jgurzx?ypufM+h z@Wb=-(@*!$Pd?q}{OiB`GLO^WPn{J7m%GLW8;1IOcgCfkurswh^=KfCapl z7^8GS8m??G$})V>Krni?TOyaNXwGWf~<8(;J)NyJ`7S;b2#q%iR z60Dha8srp?>THq$>YUA5wM+u~HVHt)F}o--csYvqQpY60(+P@DkfnBN4@oghR&}kP z9~7dUpD{bzyF(n+_8iQDEE|N(GZm?DK+v%UI%Vs3#Xw&5pdv-?w1dD_e!G^$Dn?Dj z!t1hKh3%?nRBLQ5di?<^L3bYp$mFsCVT51gnYc$0K7CI2dG6ab#vttU`S$(@M0wjs z=ocHD=Q#$SpYH)#`yxJ$GUHH{*jk`+!Lx#op*2%dhmA@Px)w)Od~EG1HCF0XW;fL! zZ%8-I;L%~hGh~pLbfuV)bd7a_a9|Xd#HDl^)m(qxAv%0|#vw^KM*2&LC`{O@Myd(> z+CcZ~LX=$2p-lq;H(VSBY*{n;^dxD{nawezDfctWj^{bg^Nhb7ZwK&zOArk)j+AL< zvhqD{*-P7WN@bN52(U`DOh{@r5Gi@LVcWiM7HPuVxBb4`zHj?J?%VdXZ};1{-?pcH z>^pB9W-`NwZkT|pwPfY28wT#?}&@| z6^{s2%eejOd(ifnNjYZDRm|Vka+jl4crw@zwE*>=%bzP3qR8GYdy8w7KoWpr;5o{9 z>A*xgO9bRGzMQ~`92{5bF6)=gHew?NH$ms&wDEKsgM4{A&Z!P}s;_<>tb3+XBZv!E1Ey+?P-Qwjyj8oSCxjKkV!^;UhFdS(q2-zBy9#u2x=?E1r=XV zX3(^-lvf7bcHTC7d7p>ZZzUF`_~8|e3+ny~#pj*1TDKP~3dTBa_A@WBj}i%1qQK=) zmva?fV%GaaYaCC1vQA`)Z+*YlR=emV>t@S~P}P!z%qFk$i-_^y%HuAjmkDhn2V@afD=pKD#n*ExP?Mm6ix~guDf3{k*@T%g2FEC`(co znFZ&KJJNua1A8mXj9-^`Ni%hF3dWFquM_bJJx z^gW@_+$}*!>B#vHt(EFp;-X1P;@W&%m?yZ!Nh<|Y)LnO2)mW88xCqKtj~OSAXK;

      M*Oo7JmZn}{b`+pX)&hEwu})T+b1V~6euq$jiXL%&6QC_R%*S;As=NAvweY6NU~XOM1t`gzrfSbP$3X&(?rW({SmkXfpTI^dWp{NY%&dXU~+FV4wEXTq)FlHi?} zN=65|aZcS!F;iz|&qWumS{!V`=Gw|dMCjH>(+tueu^XQ#7H_H>q-Vab zdbS)z%}W9WMB6aQxB^l5n)$}5BK4pMsflN|L997_o6;Cgo$jB35mPACDZxrWXxScv z>k^K`eb6OJwlV?ey?D^zJ0@|$YHbM%GOOE>SXfVvHw^-A*z*}P(83aYC@;WYj99jgv9 z@cZ!D`X$?Y(o83Jz{%1XxRe^I@T1%jQ-|sy%FQ9Ls1m}=U?52r;Mc?~F{Fc*kky=- zh)k=v+fnK;cy#E>Fd{nLUuwfGoYRlH<0K$B3sE*QO+fldwNhFWD-kef5q8WtN?OuLSkD#cJh@=gL#8p+?`F259J&1_p8J%UeOry~JR&)H2Dym+xGRLb#IK`KC z57uz#l*fisg;Y_@javTpAieb6C-FLQCySK=RsDANCCQX`axXE5P|Wj4~shv zYkcdzw@I&U*OWiXBOG^!gUCLoVDmc$IU2B~m)2aEaa5N8%4Ac9fV%BJ(hNe0;5{<9 zp%F%Ewn*V+r2{osx=S_2WPk@wY??HTTqfT)grYeS5`iIPi=|e+kn;n|jHXkG+7OvFjRYQnWFe+k!xqL7Ch$7PF zv4{D0FwN;cB4;|wC)jXF>mqoiBFV+DlXGD9I6*9GiS&# zE9NBTiGJP2TB^gpsBU!iz5Q|N+OtMVx`I+l$bD~>*X6-kLWtqu|1K5yL(}mXwSkzg$`7*QFNYy#;$z!u!AWr$0td6YdS}lsdVBJ zrDAC2aydHkHSJt!AK5d}X*s=G`HMSp1S+|6U~TI`4l8z{cDFmsMf z<%_ ze(u%MIl5$KQC44I2sLxqMC+4yoXk(nT0E}#aws@#8S)%(Gx-SY_or{wr&bPbjc)~? zj<}eeEEA&omB%IPJg!{A*KE_yvQicU?|cC8&5w?|sXJKyEY@OVjeb$c0->mfs2&TO{#WsndUj8!Q~7^dnw0L*fXoe{a0mlyzn;<^Xm7CdYdXi;8u zp{sExz^kgcBF^VZM(9)70@qkmR+3BnXD@e>QWSAA=eD{gFrJ8m>a~HNl1t!cWw*?} zaLDSaOyckX5)N*}dUbD-*k4?!M6t2aO4WuBy187PCYOa67mwI*QtO7__ipjBS;%PJ zqk8r+t|b*%V5~OCo<3LTRYDJNY^yox9K8yvxmwu?GcY6ZRrOs-)^6WNQAS(a?8GVp zVpGilW9a!Dj>JXyQ4Ll8 zK&-Jt^^Ghi=w&7FrD@h?V$WC@SRiq>LTsg5YY6gXPl}&scv87nlI&tWs0zxiM5<3f zD+hk%N*>xW9_?_|E$37J0&yN-S=ZYDbI-jK(;H=(hU3>Am?+{<2znLv8?K+$51-;n^yQXH#2Q}7(mNb@Y++WYL-}CaBy}s1NkjX>ssPk5bvcCV6b}s8 zue?Q&v348B}%mrve?C{?x~xwUl;Eo z={>V)1GmMan^m0Au#>w-n%J56EUgkWGH{RnlI(N*eYpwBlC~{v{ty$sv{1t8OPFcJ zTs;(Gpm$qhxLHF>dfK1i$H&uJI8sV<2QaIqS#p&7NPMU6?ea5a@>6FHvB3o!1u=^$ z&27+@zM>TJ-7!o{?luMB>!(oyKOEz74WB{kK2^)wi-S@AY`YO`bOVR;V*vO}R$Z?- z@@1Y9i4f8p#(`t>Le+(Go$MkWRwvzp=om?`I?e?09gg-Rh%1AaP%;BP$te-psBXT) zHfQjVQH-wM5~o-~yo8MTa4vh9Z_4NDvPKd_DAK1kJUb60G6t zvK5!RDP%oQ99}6XnfKR%n;56t7tHN>;s_=>s^nmB`6LrGAd;F|Q{CCrY^{S+6}5Zz zrz)lqm%qAge`Vd{b4yEby*3!#igY)g;g=4kU|ogVeP)H_L3b|*5ppuzvOi&kepsa} zm~{(@8Xj+%fqcXw&UDECu!q_Kt}O{U>DsN7k#@v)#udb7!7iaBcp)EsXD*# z>AJUmE`ILqsi#AWo)Rn+phQp?jy7K0d1qmL0(Qo)*J{D`;UQg14H|(}pD-t)D+Dh` zCB#mu!#`BP6lpCocN<&jh{zr3At?N{(n5VK9&qOHQ!%}$O?5i4$aXgWbV=7zU{z{s zBMwYPhZ1fJ@TA%iuO|8ylQLz5B*MdTMcKpQww2T} zbRgiJF}tg8GCQzJV!BJNT)_lgiK;)B04ahX8D~+ou-aj?>}>g{60wq5YeCB;F6$=g z3p6A{+z$(?X%fkZBSOLBuEb%Qdj3m5C5rLI4As){;$xX^#aCp?^kblt46swlV(MfN zDlhYNTPFJ7c{5FBwp0*Bx;E235WPr?@7~%bMm&_9TdBW<%|f6O%HhQoR=b_(trb@Y zTZJsxy5m?abe4(yIHs9Z^EDo!edV~C2CV3+2QCoEwGKl&dZs9K_T!UzXWypSTa z0quB2VK&;`&-vt50T<*lA(8Mu+Yj8}4Cjs{?Ii&Ys&dV{Fwrl%N2=QXyi(B(EeVQj%+-5i5rlW8QtPN6Wzs zeIQZfN|~TT+qHkurnnw_5e+dBj1_ zAeLecW;|Eru(zYJ!yNxj%sj2Mb96LXyqBwRE|{YRxRAD`J~qKF&%;aD^ym6UJyjXQ z6q+L(9Hk_<3&FF>XTCqJPWHT_RC$rWY-jxWbONeR=uoijfuF?{&n?u)*C|Ijbsrh+ z=J+cuW|$6DPzLNWj@5_>jT@m6*i$>X-9H?;-LjdcspPmW;BpaIH*h^K&u;Msx4Ze` zE2l;Yo6|$vICn+u0&sUMBbm1$(-YLif6_N2So~2XO(%LPQk2~KQgvH$yBCP zXAP%7njQ1DNqfHCp25i#b&d2lA4nP+%&nB)+RzGg{qdlhwBJ|mb6TANc>~qA2NJNN z8hCUsz?E2NEY#?m>RUDDq3oWUT_vaS4_!JhWb3}=86Z!ZY zDqS{&bR6@n&Dm~4-zntv1^Q|pu)BYn?DCeLikLz?plU*{TmY!gaULy)gp-hM0F$5`l zU}o!+F#-resMUdH`{~kh#fEHff!lrWMDqMHc9OuzdrZ?AM_BB-Xu6~ZLu5^%(2Gg+OOg%%}_0lu}{?; zO!%E{DJc;bsb<(L$5x%<>s>@TGMO?i`u4>@`LbX>m#?G84a>(5x<%Ah2qa-e#{B;% zHv5L@%+hqTjb)6Uys1M`h1=3J%^XU1PCoTQn2`vi0Jp7bdKhk3>sriw!J4!b2a<4A zk0`#017^QL`5D(nnfSQYSS|B}5f%+p(&sm-F*B2l-f<1SZcJp|Cp_ zJ#X(US`SGaN-_XA$yY{}5=W9|i`|)^L@<_qutl}~St)fZQ;U!`zU>-%HgCisN8THL z3skPrDxGD~=6gAiSPkj9obD^3MOYU5!ds~~-E-2|&6tp_!YUHUr3?^Ohbe+d(Xzs&cfP*iQH8p4VegzEMWcgh6+bhFw{vm9}Te zpY5FH@T?9`NSi^LfvqmpfxtP=i7aMHvkZ!W75*d9<8K8}_CDiSouk!`QWLtL;}P4o z1XPP$p$G8aBcxri+YlAeaec??{zp2=V+?3QC)a_(enm1vUR^;s{Wr9tw%p%Ki6sb# zrWodmbEJ_JTP_N=60F3{PJC_|>3%Z7Sz+Ix4jyI_pG2n=VUBakzH1atmz8*`Wb-Cs z$X-ceP)itPqauTk3#P8iAxgK5&1f8=ju`<(o^l?>(kXGVi7y*(nVIO zGXbpZGhm!Ib=mkP`#Th)VT*s-s2uI&kWs!-{#4fhNkF#0P^~0J&}lI1$<0=pn1o`j z@>Nt)0)iY+90ZJ>bu6JJndV$V04rM?-6isGYB^_kp=d6|!bhteROw*=@jnTbUW0!z z%ydCRMWw^`_%krW#JxT&VY~`QAcl;iq;HDaS%dM?5+{sLwE?RzZHi=ifN;T~5G%Xl z!-rHmcVg(Vs3KoNmrT+b_CVjRahb7Os=!!TqmCr*rZs6ZY|o-F0;Y`cODNpl{S@yg zngFbjKv#kLaV>U}k7^|vQUG1{YC|=kl>)@_HhD)&VMmj`Zn~jVm5aOL?iH(su=K4^ z=6g5L{VRm`qE@MCdQ}1r0Gyh_MJWQz`%~kDf}p#-R6~IFODuubJ9;Tu@~ovM{hVVU zwK>0U!jq|UlT&u8aL%kXcRu{U$$;^DykQBtQGW9I!)@~u*zGWmkOLE_5;6wvyul-S!G);4uP z&m=7>)+&PtaexRjK z3kIgSdY2-$+*{;QU7z>mz4?AU2cBv^&hf>v2|P+F*5&9;&P=r1BQxYCqIzlqFn4l{ zi~ECf>+|Vfr^>H}2pf)vRBiyyuR6DWs(&tiu3kbeg}CG>=G=YXLBZN2Yh1|0m6t(- zyrRzm=*i+D&@*Q!b3^)ge0-G-YQ?j_qak#W(u=i_k{@W*`IMVY97`H++qMQ&$(O9MwhLJLC z=oWaG70?R)HF6X2x}!2wbI>MLgx$?~dXAR#Ww4f%Zeq^*NXNVlwdwRRvl4ZH~_mdcs zB?IGH_iyG!hobEfF7ok>*ToM;OSqoMOmcC=OvTAMTH-MjjJG$YX>+4f`RZ?rqSQS5 zE8+pz8g(~%foJ=o9*?m7O67!CsSDB=a|xT*QMF=IDJ0ld-C;h;Yvo(Ha5Y}y9#6yK zTmIWrvITErr=BemUNi;&*2%4Vm?@ZGOylQg{GC?JL1b&Az@byCxpuU=zbJ4YBuE;- z%WIF6kP4_Inhd+rR`^oFg*$Hn3g;&K5E`P4%Lublg+k++b@dn(b{UZ)Z5;F09tX-C zSxczp!0V(jZeDk@7iho=Qx+!yFf&lSX&O&K5C?f^;)?gv7f>w~vd{1aF`(>Rhq~dzk00c;OB9h>}EHtLwU`$194T zEn7Foi%263edB(IGrLyk+muHrZSy`L9-;Y0y%y9Ftl@Z zDX<{Ux942Hinj*}dKs%j=1XM69!^YqD07_b9cjuFtmMvUwxzPh_G==Wsn=E1E0T4VFWI-s49Cc&=4i7BVQDx@==D1$Qto!73VxlS|7flOwft z6i%h=Ql*K_I;bQ4G$rBIJ55<079O5BD6V${eXFpj)abjaZr`h9pk*FCyX{E~&bZ8x zITr2eyTn3frpBh1=3d6qB$!4Re>%a-{pm7bMKn}9G+XNnu;_?b8p3KJ{AWma$YgLP&#c%-o(}XlgKhi+!rj@qQ zqqK>a2@LGX&!rV5S{^YAb_$1u+`eKsnbEL;TvU@=Yu2ebKFd$T=%SDypt%%H<5Grn zrnUJ+1_Mz7cAfY~Lzi;f9O+u1zB4FA&YGF-OBW34I&bteJ0a`HhB3k<6SjPb$E-)( ziy#=h%(%1AOhBr8`(EC9jvV-nGcH$_T-kz};C6!(N_8)Ox_`R=^}GM`cmM0Be}0CQ z(3+&OxkR)0RQ>v#fBxhA^Hcx$=$$KN6N8MWk+ghQm4{zTbs7JdhVFh z$Sn$^Jn@1f5yWIuV9l=*A61;rgRzwmpuHk*_+sm8W#hvNB3J1t$4f>Xq>-}_uOwOwXVd&yfbtOQ;c0v1P^r%Lqn=j z+RvFvI2ra>A1aC+E^f8iSjU@AmclR!#5|@E(Xx~=?WJ(rlf4p!z0jPqu8pCU>`pq1 z3Dy4+a1;vNT1kRck<8s>2|`Y0uElw$bnVSnPM$WmhR5oTSXTz4r42vdESaF?MH40@trsss%RUSR=$Im?;hrl4*`=#c0^-b@c^SA2j?G|mRCjmHgAb)1l?T9;UnhwPk%JIF zi@?brVTxl^Cr!51-6*NZ04i}=QWmXR$6WHuTy{#9FoYte?ST%n42}DmSB-Nsm#QdV z-t5$Ny@Gy9_T9mz#&by z@ASpq=1}(&>AgckDFj(Jh`q*5p#-S2Ga4;nYqdWdT+!zq5YsU*DVJA5^LC{L>w8U1 z+2wXHJ?Fc{IwK*CGV24GF6`tYCM!Grn$BiX-nPU2Sj^HJu{6+`N6m=11^X6!0r#QCT)I`RW29K0j}tsJIJ5iJj492a845NQ@1XSP1f0BrSCa_=t4SS8QDr*X zTJETb2}h8CFFnvsQdsxRR8ebA1-1!q=k%n6D?&>MkHxjBS=MgTm_cJ-syqB#z#yg# zIVJ81lV4+X3)uD~VMBY!c;OP4d$gR?oS}+hn*T7%c{Q&d1lU>omP442mzR>eIH9v; zPow!BSl$-~86%s_ps7vxP!q(~1l?72x^JKMg~p_O^JCmayY{@ZQg<_O^n@m}s^qR$ zolkd>*K9lLQQcWqJ-h-Um%TPZrO*=h$Bir9+p4jm7*QsgJ^R3wr~ELy!JK~im1(+4 zb7BP~-$8sND=vd+w$8f8wxQoRA7chEvGFbnm)yg-L`@Y|P+no;9PcX?5L4uCn8Mdw zhy2AzFOIhh8k=a&-H8H{%*yJ7JbFDXl8M(@AW5;n^-6dKr}H3rmtKmcFr#I(FWvFm z73L)>iuFeK$qX91-sryliQ(mjz{Dn}i`s9=k$f4`lbgyG^lrs{A~WmjE-)E)s&Ypz z)TK1D1MAv2BL0G`UaOmi=T-?ocOS9}c`Yq6%kg>uaOWWe52!5TuPQo%;Xr6_2Y1ms2_Xi9j&L}7rxjZoCR$ZU$FvBDJ}0*(t9*j1_02*MHS3R zz*I$VqEppn6OVBEfB$(3PI_I^o<=+u%utGiE~RxQ|7ZKO|H zB~lPeS^&}Xq2UV0)asuhWJiSwq0nmpjN)ZkqoIr}wavA;m8d6+3Aq6Ro{LVi#X?1> zIah(AOS<0>^T2~COYIT&S5nJ^WkKA1@%2hpvycfTy=IfX@_xu+X7L+DS8+3xvTYLh z`W(~M(@>+NYWY(i)wZOhu~04&l5zCyAs1L^M48Zuub=ows#}y3SE2Z@@Jq!a1tSDQ>Q$xPl-ZA^vZTM+#gn#($vbOTH&TXu zL^{+F5^oO#8hSvf^N@ z!zZ7WU6Ttw9!17H0M_`fzK#nS&wbTF6+_%J&NsK zi{bWQLvgCb7$v_iyb#;)CD-Td@^iWO1L8oYfa$cfe(a5W8@%Lfvj#(6(UFl(TsiV6 zt>2woCaBd$b8pz9v>Ivn)WNvUWr{AkIdPxp@aMe8Hj&z-gmxSSo8Ob9oveHdmYR}f zu!D)k4b=zzr5c~5GnTR62>=eD>Ta#d4D2xpX}y6o{qNP|RiQ6s(HUPC7rR*VD9pwr zCtw5VR`lbn&QyDRmPACNu-7SuT{4RdqMrAD*5=VXrqSY9FbZ*ui>|`i($Yh5It!li z)(SbL&x3hIsa|nKUghm)kfx0%CSq}=;Z%wM@<;tB9u<*V>}qk<+QH zm%O+0#j1w22Di=~;tHjApG%aDrlt$#n(7Oi9-BZ5M|EF#YKxwl30K8z(>b!CQ$+Lg z?jPE+fxcyxyqh`DaDG+99=30Se~zDD_$a;eyql!bRn4kQ#ck^ty~ntuo{CTy?a^cw zPZuoF&TNKc%i_8@ZA?bdQ2qzdN2M;Sd(D^Y`WU4#GibV4A`lec$lR^h8h50Tk=S+} z!$vd)v^E54`a-1H4Nbbz)Jp~2E8BMWs^)vt+9+-$<~1!>jhP>BFxTC)_ng*g-kYll zj)Oz8*etU9x&2>1{hz=4zkc_>?rMP-ObDj)QkZk_kI(t%=lt_i|ET&^_(-%I3AeEh zYvU}wfc7gO;fu3hn8QVPsz8aK&QfQNGP^*GY@aH$M6^ZAB&1s-1oB;*LzKm2?IZ=dBiSiN)tk4p{}HD={W7Y$v!}wC*!@BH)|p7kyg^ZRy*3JvnJ4mobruQ z@e$zPr~N!AOwN_;0~8Z1q05F~jr%4~t`YQv60`O=t!KLyF~r=z)M@#cYyI%HU%H39 zCY)@^2Lj7fY5=84TQzBEKts9ITV^VUlelSKPQLmwrFxQecgw3PucWEaavXQ3<&wdH z%_3WO1^@#^&%ru2u!oJqF=e}~5JN9#iy$c<=H!KDxj5mhW># zZI(kwyL*|ZT0*4+CyAsutY6c($+eDPQg#G)rgcaADl(Q-RY=);nHDdHKzB8_Rw{)Z zYXh3tP}XbIY~iMHU@;)NF8x+M}2+sb_9krtCz z2?k*V;u7r_Rf#Os0qLc}9t5e{4gHekMuON5;=;Zjy&ZL|l3|sI zl$458P0`s3+p4#^AYT;oXhGq^4UOVDI9i>amGH4+rq(Gdfk^KOdZNM>d|TQP16?w- z=I1+!Z@C79M5($;mJkcG%gT-A&@7MIct0nd?R#0-VFg92m`8Ndy1Lq_u2|bBG_awo zXi8|X|GvHvl3dpExSF)$ur+7zb490OPLEogfa0$Om9l%*xlkgO8Q$y(QB4wQi*8gW zrjM^Qw(Qm27q~W@dkl%LzB6axsOhMhJxyiKw{0H=D<4BYIn3mFhJ@I_9h+DayHwPE z#^c@ZRh(tSiexinDQ0VE@F)hSidL3=pi&Bxu&Xn=qQ&qe=;aoJxKwuO)n=Lf`|~m? zTDdQ7Rsyx51|YpwcnKAz0HrK^U58(uyx!CyucS(dqN(7kE0h>;7t>m9UJ+EWXt~!L70Z=vVEAee#8xJ+Ra6-(`Zi(#> zsxffIqB~uiBj|6*@+hF;*VRpMk2#aTms~1x4bkjgDgMAw5VV+Be68E_hLC74pwGP9 zk=F(nDRgNi(cYVLE;lVc5?Iijc!iskH2d9YsuFEbv#YxfON-~6d7Hu2wWvA{Q&!uH z?DOydRsC9URqU)h!N7NLggcUalu@9ROKH%0Z^E3@K-~_K74**aNm&z6s;N1R${cIF z3k^G5y4IQ+L+6StEJh1)GuxMWUFBIogIzI2K&dQ*yhjbn_Bw3+_wW()-eTPh2^*Iu z7_OzI_R+aT<`xW4o-FAg{Max%?)rfJUc(s_Z0yWAo%3FMw7e%_|2d|6(%cVbZgE7Lyo z#5`46AHQ#T1*5ABw39h<^?jLnpxRzM)gA4kw*NKHl`X!|r7BkU^JXwyaU?351u@E4fiW@KL7okeYIL9ZEZE$aJP z-D3|fY;8-)#U6GbEO=BBAh(+E11eLuT<1M+H0F3MG(7Rs;gLZ7L-ADI2#mVINFUvCTSl3ltWG3c*8v3>IC+#){Xh! z&e-#uLrEj>T)izTY+;=OK(Btbt9sdGix+$ClF91caoHh(6ko` tb!C`%PXL1b;w z!Wny|=2m3F(q?c+1SS39=2tFX6`OvYwGc}#)Z&QfrCD)O8c;=#^$K>S#nQGC8tY0T zs*tD5+nWi`raK-#Lxw=ha9CZ~BWQJr>T#h>p-b0~rqDPgM^vG4&}gP4eBaJ-O{qhb43iPdYgVOqV{N{@WT#J^&3N6Jm33=K{w* zSsjI5FqS1*i1EVnQkVM5KFF9*e;cD@fcC?Vom)5_ z3Nswivx&zlr6xAs%h;*IKp0rt8gv zbk!tft+7%N)`)!yA5;l>{N2JpH=6VLbovUzHLhL?N_vDggq_j8raC!okR~9!6q4$f z&MtSd-8?wT1T*we-@!o*mveb8n(2#;;GBkSm^wt9vB0Emb7@rCFL>)g8lI6Q3}f21 ziclkbJKEb@7AkIM(n>R_3CKA&{TZH9(9ZMTUNcCs-;JZ!tJ9=3+$jw<-DOA9;grU7 zB+9{|#i(*d8SBapa7Dng=9`jOt01B_q^lI5Z5I=^0|_3l6O~&1&)NwGt$9O{99zIf zx7zHzdbMRSp5Y)3gZN$S3i3;czg-8T+0~%2v(tx( zed!PpFS;j+mu|>T=RH75ot5?IkIoWIFoNd*1vLstXHm;R`0`pdIgZsEf z9=4f~1QqDo(~eem;f&avqXYGlG6FO{Z*09GjpyhSlF9dG&cX}7Fo4;ZmkjeWHe!B> zcH_!CC@EWOR4A*b^9d~XWjM#2r4Tb9pnhRBdbyrVQeP(+2TwjUrdzIerz)(KAd@QM ztajK~zFWy+nAsYd`Dyysfi4^dHg0qG%=Y-y&}`cl2^6)Pa3el7_+X4GjKx)kP1&3d zRaUY#Tefoqsbz&0B4x1-Od{52in6tWSmg^hFU*j!6G|f;z_yd>8CxOLSIQ0# zg%Q(6Uay2QTqv-{FS<&T)_UR1$_6GqkQG-Vj#6_|^Ruzz|I#&R8FuNd2npq0Gfwqx z)5g5m;$=>|7%JE3_Rlv^3S4^0g9#QxnkLzcgwqWv%=JDSr}ya&Q(r7z8VaqdTtx zQd*NVU|WtJ3SMR@Eqip?4NjVC-d$>uBQnwkgN|o z9=l`*O^!X)J^L#;CP53}E8VFPaNqK=z3=Pe@USE3^Y(Op+h$s&Qs(KX5!=eTKgX}XC+YWG}@{&Svr;P z%R|&I5g2VJC|_SoM5bIU-do%KPkRel+{wrvC?7NYW^VE&>|8FCLSdH3ann5_VU`~_ z!nJJ1!xSrmFm*DQk>xZg-%=StX?=NEawu*OjE$dec-XMQ&v&;9f&1?g8;`L_V9!vR zEh#rml0@DTB)hjt%e-Z~)#l>zcnPeU--|}~!M!-2`c*FCYSM}mI881sd_L!Ne@@+t zpW8peEc~;O)m{R_@nm;QCxXK2rE*BQ1XdcS z`}PB(vOuV+o)>>;!hF28?tv^S^-Y2nWdY~_mjKXk$ZD*WU zulut5=6k`_tm(M$1{Q5A2v}~%auNW)TG#l?^?g$Cj4MMjGRZ=wD8QiN-}8!u5455$ zLr_(2wKq9rmoJ&9fu`d#hA`U;Hu8f$ZfKLw%$H4Xu2Ms6QG!=Ec5D&%B;Iptx^jNc zf>YBJ_h)!|1%gZw@CfqS$F@J*&8PkJpCOeKX;dm~Gk2vutteUKSL%9qu8RfBg@GzJ zj9)FzoQwgvD+mgcZ%{WIG=GRy0Ip%Rr;D)fT=!u1c7fGxHNZ7HD0f6NEOHcOt}Zif zaGTDH;mVZZFhF{7xvlqnL_W-W*Ha-VOr$II

      kID&P5mwT?u(nc9(PV>Apl&9_lr^;Ox@A(! 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 literal 0 HcmV?d00001 diff --git a/smtERP-web/public/static/screenshot/1.jpg b/smtERP-web/public/static/screenshot/1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d4acf006fba3315b5dc9ab0fe5142287da1c0f62 GIT binary patch literal 161218 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 literal 0 HcmV?d00001 diff --git a/smtERP-web/public/static/screenshot/10.jpg b/smtERP-web/public/static/screenshot/10.jpg new file mode 100644 index 0000000000000000000000000000000000000000..68b5afe02d604aef79cb37c448d430c8418251c3 GIT binary patch literal 103769 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 Ygz``Flr8_Ibo0*;`fn8{;`{!;0gyybsQ>@~ literal 0 HcmV?d00001 diff --git a/smtERP-web/public/static/screenshot/2.jpg b/smtERP-web/public/static/screenshot/2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2ea469fee3934e33583bdd8a505d1c98b9997d29 GIT binary patch literal 171688 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%0A;cSc^qf<`h|Bl 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 literal 0 HcmV?d00001 diff --git a/smtERP-web/public/static/screenshot/3.jpg b/smtERP-web/public/static/screenshot/3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..20d64c88a1d683c94572b67eb4c0832e0914ad12 GIT binary patch literal 189680 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 literal 0 HcmV?d00001 diff --git a/smtERP-web/public/static/screenshot/4.jpg b/smtERP-web/public/static/screenshot/4.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a79b861cc77064553dbcd1a9506c5325837bd3d3 GIT binary patch literal 189262 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 iuQ_|9G_J7tBT?DU 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

      V;C&oR<*n^^aU%0m; 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

      B6AT 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ⅆ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 TU(3pV)1|eVzM1ezg(1 literal 0 HcmV?d00001 diff --git a/smtERP-web/public/static/screenshot/7.jpg b/smtERP-web/public/static/screenshot/7.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a3f1d76e8df71c849b6d1f417ad6743e11cb694b GIT binary patch literal 151200 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 literal 0 HcmV?d00001 diff --git a/smtERP-web/public/static/screenshot/8.jpg b/smtERP-web/public/static/screenshot/8.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d6e1d46413886ed07cc3ccff603ee3ccf49ff871 GIT binary patch literal 152173 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ʖG?=(GEf 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ℑyjtMBw9Av8AE$ymG< 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 PEnrx0s7k_UEsWQS)mE1 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 literal 0 HcmV?d00001 diff --git a/smtERP-web/public/static/screenshot/9.jpg b/smtERP-web/public/static/screenshot/9.jpg new file mode 100644 index 0000000000000000000000000000000000000000..df01f2b9be1a9e619d50caaa35d45924af698714 GIT binary patch literal 134033 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

      6lKUhP9A3 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

      E-U; z&j0*-?>xSHusx+rfIMOuhCvEqBBVqqqc(|4D0(kdySz&Td8!Q@2ck6+W3YRX`lrvh z2Dq4yCpQBj&Sw2c>C@xupML)OKm7EIpMUo3+3}T(yw!JiZ|_fXN(55IGM4pfU@pK# zU+2*&u&7uN5eWelLdw>XU27Epk;qwV>M8&Q7zzx`2*YwfxVkw@`Q#+eCTWsrHk)is zr+ZtoqrL6JgPm``b@zwwKe}2jU%WZ{;_LIzzrHx!-TL6c&UYW}zI%7~_D=WiLHG8- z!H19bzdW9Q`s(`0@nW$W`Yt7cqK%6LMOcgGG={MnO%*hxBJ6RG=N26HoI!B48d$iS zWa<+LF4u+2000T?R;=>e+MH`D>oKtv;sIJ)dNms?>zl<^rY@&3!Ooq%vlnN`ake0C zfRKcMtlU6Bw}BZ_N^LZcI{XGa##BmiAEp@gS z5m7OjlnmB|`sncV7LyU`6*xm|*ba%U0*6Fzks|>hGYl*CB#TQ?^N|v1D|oUZJ@B11 zuHKDJQJ*9NASA##UBohMk!E=&1%8x`dKVS+3M=Y89Y2Y$XC?k742;N~vB?7a*#nE{ z0Byx^`wnLl+)4qIEvU+Q;8tKb4vopj%&&U9s!WWA`!MZ46bOB#kX2`YN@!9#cX)B{_ao- zNr*)lon*=;zn$peg;?xHNHzz;Q{5W>3NQj$Fl%LGNLuD+7ylJTAuBQz@eoJXCV<2e zB~9cj5bO$6p3Dh&|XDwPr^7EvP z&{jP9YjGQ6w-G`hx@wEpJ{acbv7DZSvEDFf;%MKy{|%tYm)wa|xJ`|>_{XBq$&-AK z=xVqd0puo&)s%~SZ$eKY1fojBkqe8l?eN&18sL2-7m+?iuI$F9)u~!r6tz|!)J8a} zuP~(%r?NX7H+`1oDf?8Eh(w?W7Y0H}2~u3#cFz%k5V)0yoWmZ}+?lgXcO!YgW*Ok| zxj>sh%7vC}Sd7J(UuH0g7K?9DZkWOP|+<=X+|2C=D+-_+ZNF7X>~XzDnV zM;jF)2{Y!8GV=mj_T(D{6wA?YlU&ZmSRPc*0%2?_$`B4G90WF+YDlVE@tOqacf}hS z$GXF{NyMn`?P&ni-^F>KgsrLul)_ML zki&WA=h>c32fcurtEgsJn!QI5lZB$+fdH{=&$_#J4v+Tt zM9MIZm@*J(GCdY4T!d&f$k(sWpFDqYJzwUoLx6ECsZT^{9BwEGQ#2Z4@%(sxa?lvWZhL#SzqfP$&e2;Bk3M|=VgH@C&TbYj zUS0nDtBYSgJ$?Jm?vLL&`p$#BquqQk#ou|n{qEiEPhVYs^7Yk=)5W@Q-)BfzSeWCW z$r@~_re(GK%!H^nTGUuE*0WndAcSEo-LyN}+rGYDU0%$)q*tw7>qQ`%+lLpm=)^~y z*A$u%po~1fT5Rp_PzK7hcerzTaz)~HpY6R2lC75|3X5LlEGT+MO7DAWuC9hi1gvCH zF)wnrjc%88VcPRP>xfYzW*w$z1y*i}Y*wjMA0r}wQpRyrc%`M9-q26k>pla~M`0i$ zCK-m+u+yDg4^K|dZtZMO`@S`ot^PEQq_*8~-v<`<0FZ~z(f7uZ5f8O(8mOQkkYI<{ zA*O^0Nv|G@0u>p(HJDmTE#ngH4e7DAx;%A%h=Od#3S>GNaUohON9CBdpeF!A1t8)m zkC89|fLEaC6k7IRR=}F`YnW0^jN2WRTLzL`!zKW*Ik9N4o}T!lW0rPUfWkFfw6B05 zdk4eFD$(cHfRzj&0627`%>lKqKTyJh?R0;O_6Y^xcp@ju(si_??&_wXh?Ya=M1+*H zHFGDVlq|NeJ(Y5^9?QsuOJOMtHfuqt3;tFNLAJd&F^zc9mP!8`aR>GN8~Cg2!f!uQuK^0qDqSgm}@+P7HBw% zjex9U1$9juwJD;ei^Y=2HbqA3niQ`E56smLsvLT>hK7v^v)BL!1rt!uFkB+*EegO= ztaKOIToidJhn{Kcb4&}gWRsB)kSHr`nnXajfOtngJuXo6*+QepcTlgK1Y0eaHC0d= zkTtVw>`d50n-yt%u>(bAWL&_Hv<`hpvDr5O0h?EB)QtdNLoBVJ_c}BH>))X4qJR$YeJfLNwC}vg8D&2I9xYv4Uy7RE8V0*#s#XgPTI^jlG5n5taeby z4<>9#S5vWoE>rE>>+Kq&YovU3T4kr>;1Y#S0s~)Fm8iMx4qm}$`@m3|=6YB7WI;cl za$Dg74$*-@lSwf}s8p!V3mm=Bf)HCdsa5yNkNO1>0%Ffm^(4c~s&$1{Ai~X&TUgne zv!SP}==a{i<<_*a$?`%1wI>6B_L(txbNgS-hFx3{XFZyTh`W?{wJoP5Nj1^-Oqbrs z4XvLNuuo$RBr8)(BC!{=4S53}14_(S zRB?^B$3Miy&x^S2*v4-lR7}-&6V%YBJCh|i>p@0^)cpbO4w`2oG@C;75Cr0BP7Ra& z#`YQs!U6eLq*<^=!vYq@)GdJBD0Ly$=R_0-j*p^g@;8zgH+Q%JR=Sdy;|y!yPj+Cz z=n}R=FqGX-zUuY>Z{*zm9_bd#(=c*`?EiN=bg8%ZmvbR>w2>e;?{u?05am8-N}1*wr}qwfD$&s14wWL&o*Zr za@=@@aG_U|=1c|fd_KIsSe{(3D5bX^-QM1vl%cGaiv-YTN;zf1NybTrSx3{1UBXPF z2B5Ir2dY32fL)adIklabO<@56%n1eIYF#cC!_^uEXh8V*$;n^;!&iUt_n&U;o_YOXI z@7`OFZvF1}AB&XN$LC+aJpc1wy#DO<;=_k~@7~=y+)f9*{L{B~-n+Z~>t`3gesTHc zY9&ZrCPEy%s4$dN+Z$;i4_4)~!g3{J_(5b`E{Bv>0!S3sra;@h>HQ*YrW;Ajh;!Hp>bim_+SW=Um3fK!iwK_{q!l z|NYNDn!w_}`GX&mHrlrvl8vi0Cl;Zk>R1F}0G4Nm?X~E@J+ehC{$USN1$si%K`4Nv zg+0bTupzntMM^_B0I=QP!wAOvLb0ACuPX#d}UIn;s<(2LIKenl`T&cy5o zsuKRw5=B8OfJInX*e(N>?L^Z=B3zRT6DxKLNwiv+0evag_d6OX4%Lj8&~ivZchVNc5=uosX3 zAOlDDcnGi_jk%6_u_8I}645r4R?4SO_83vIQa^|DryHqJT$gl^ zL}X_E99Fgvk{vT5ByD*h+WJD{Lz~gjM7}16;hVv1C)DgfYM`nYn%n%|U3yp;&r!T| zk)y7_M1s&WJ^gNN?=3DlI=a5v4IiKx`DJC1*-w*HTbZOrWFYpUg|E&giw~WZ5smut zF+{IEB97}FJqf{%ntP1ppnC!IxYX99MK6eM2dx&wPA)7J32eM7i~A4zIY7`f3QfZJ zR9-^OgzHZOc2WgEJ=HMxP2dMt2o{_gIs6sm_tda?nAggy2se@=PE@xwp7I$Fk;ujx zo9pmwCsY&Ly+BBl%6#3}hDdJyaYft^9Aj~l7u$2N+C^ifRNniG{iV(6K}&S?-Sv@9 zJbNHEV+SC#(PYVQDq(!wpNV0|-7ypo*%e}wS2g+zlnW5NWU2`Z)lKXFAVi^)J;ik*o(d7= zNQh1)q(D>?`lrG|hpLEsHE@ZH9NI)We%?xxxC%Rv=vuS!kSaTYBa6G<=G*qc4d(y$ zTdRIWBp6PU9JY(E2-rDk6NA|%D^w*eO&-g%&>Z@ELjw)&;JQ*jfv9Y$KykByHbBr6 z*_;D;DUWNqYezg!{CuObtTF5UO(NMi8Q7GN-;zey@H8&3A%Za>VyEbU|Qq8?dcH>-pU%^4~Lxs&pIfCb(Yy>G_a{ZSP z$!kxWK&zVGP4SMJZl`Nt;toBzg{)i;v8z9Cb}i0`2EVSS3DGFSarqDsv!vDMIw#3L zU#V4JDIp~rvF!%I^nn|K*KFE+na^FYUzqwTg{A$5G!Ce~#oa)q%f{;(7v%6PIB_6* zt4v`QpQr^+k}wIfySuj@hMVgfO_9Q|LZfnMIDM^0K=gxIFwcMhrIfq(?%scRcfOb- z;F}j`%bSHVNyk*(y1V!2;oiYs_p47%zWU;IpK_m)lwyQLadfku5QddyE`8svZ{{cK z)!yMg9_?RUTp&VDnT5-W`|0H1)^6@5H<#DT#XKV*VR9#fP75H^wt4`-Xm{}416p?A zH!)GcScM?a>yrpc1i0{Q(%rkYe|WHih^wJ!QBE00Z393{pbJUl!)zr08}cezs}E06&|VCJ6a{{HM+ z_jZrA5VUhxvim@;)mmo**qkvV*ik29=#hv(N{B@Bbvd06Cs*qtcyzcoop#JDtC0}8 zK4ru%VV_}=ah7q~VMmblh>b1B6U(Xy{StX7Qj7G0-V;+FLLh`U17FO?>k)4_T`$+q zp1t{-pMU-zfBN~eS0}m8`-l7eWFkmhMi~k~5kwwKDI)_DVCpgmi4$bP1{cLNtyEEIKZEtUF?M!B~>7?uXzVEu!=iDXeG9_UK8OAcK$Ms^hTCdlu^=eg? zi{;H?b#=44UaXh%)pD^0!IUX?sZT@*DH9i#A|T^pG0tzUPcPnl`Sj`id$-?teE+@2 zciw$)_}#Z}UtBJqy}tb0&(6L)UVP`l);qVSd$W9Nf`9z2gLm$1|KjQS=db6N^8qoX zjH0&_5f!aY391r;1%O=4nAUt%yH=C%P|nY;bC-2(T-ch*cyb?F6Z@FB6irEE6cGNF5d!fit1>IZwI-%&Wph=Y!aQ zdy7#Vkq`j8z-2juby^ZX!2-V`jUZ?(Vr-PMhjWNt6bOKn?CQEe_DUgU&^kM}#Y#pI zz?>EX|MH7xKYaIY>bm0LqYVi4m{sC%#%S7xeBo)s;cC&4#2i55Lzr3r9|6qSdV3~9 zNB}IDNQ6?~W8X=EB4sEe4@HrrNGlO-E(e1SV@12ACk!mvr*byYT^M#CL@_i_5>ZY$ zB{FoCP#DHiSfJ~)w-~TM5gdz*<0!x*z>BNp%j=a|#r4S7t0D35qen;Y-QDMLtvHBR zDxwB^M8FKIQCLLphY}%|V!^4mP~*bjmkcfD1P`Z0izlpc6##0A#wvz_39(B^1YO3I z)7CT}OmII@uRH}ofbC3kfz(4TX;{g?GLBrhj3Y3YabyOG3nPh;Fj?_+O)vz&Q(kpr z9wrJ{5fH_hWay%Y74A*z)&PXu-L$D_J>`v5l034BN<2S-tk%|(BYR$xi-6xsu)y38 zK|RYfA&%e?YYY;ZC75WF73QW0lr8wxZl_J%hd+Y=5Q!1MAZ&{;l?qr7jV0o1tFN;* zc@fFmj%&nkxri0(!N#iFI0*pR$<_uv008KhJUuW20U9+S2NsB|p2^$6k(O5z<|KXu z9SAmv_6E`K)Zb`brLz@d^|lK3EO9fxx1d&l9Sn+JOKR&zUBDvLcHz+`wc25znk+A9 zYHBkTlB`i#jo=LnRZI+P4Io4<9{NFHn-18N5Ab^Hnuvt>p`TzYGAD@Iz`!I6y@(Gy zLIoeh3;=#Ks8J7D_g3?79_dK~&Wi2VW!!`PSd{{=;^rPAlLjaLH}XGaLO z1U#zXP^&|?eTd;{YP_+%loj(#FlspXpwTIzlOs;XMi#UYJgLI4Pny6R7u<0d;) zCTbK^!8l4D!c=@_+B9vL{0>qhFtNfG{n+=2+kfN2SBM*mpD5%JBVnYH*i z2FZ>3E(G=g->rMAMhYcpe1v(JN zMrOV2&W^{Mq(4*&>z6#LZK`73+O*y^q*TC%*T)|TDAt)3)NB6F5=YinI(}<1tc}0Q zLlQS}fZ|7Bai*h-4tPZxSjU)B*9y%a+cw+uas9nr`IV-mF$jfNor9gN7+>vO&}gNr z4f;pO11{4W^#HyJ0uj55>uTn4LYP*gd}EJ{FMf^{qmXSWp=)dhr4r{1E=mFbq{X=Q zL<0YpiEMy|)#}GzEOw3chNu$S2k2IHB$B06z6z{KNl${E^@OyGujX%O{Z}KtpyViwN{xH=WLo&yJ-a zq!3XIJ^=zDGRGMxG$DdwMFL1fGz{ZxHhuS7Z?BeXVZOYaU!GmEa86X#W8e3ao!Pwy zx9=QIPtR8$ef*3@p7dE1lrwxCK?Q!EaPIP0%K6FZ_U_K^?#}#X&V_SF zJo2zy-?@7W6JA|hl3-Fy&OtS?DuBq1(W7($gk+;08BlL_Kyh0P?f|ta0R^?K@Ba4I zgZl?NThnnE^>&SnP?~|GmMNyP7j3P2k>EYq@y}R4{Q?2u)hWQWzX?#R!`f1mX z=tWxu$T|V0=0E@J*T*O4Thr;odk4_SgqGrSBvw@>+{o#le3#w$Cs~9E>F*|Z{|xb zB_U_>*FiFuiQ6f+n2{GYv(wwa z%LuYwuV(~z_ID`f%lWWo9!Fjce7zo4%k{0@+3mgU#j1RHw)o|n>q*~p;l*lwcC(m_ ztA__$-^zz&l&}isMHqDW=H+sAIUfpOPBiWER-Y#}23*j3sG;bIk~t%j$wb;tP6}HR zz{1P|!g}{SC+d6Jnxw5s?mOyIN(plZ69E<&J#rU-LF9Unn^A67yjpVM!li)aZUBgc z$SBsK8KH=19genoBEN5ob#;+dy6E}NU83}|C;I2XQzUm%HOhCgnfO$pci}>^q90o- zc=L|U;9bBxVN*)$)Il@E)!Y!FX2n8a}2G2@F>N*^kf(qDX!EDZtpN$m%c?hkdh#Ns zMXtnXyI-zzRHWa{bBRk97sfs0y&L;nI%T|B9zr!UlB(G{dShx+2G{rn=cYO7? z==$z55P5ZkE2`$k8};c%peP&z0721P0)jqkT#Spp2_z7(n#3kOGAkji0S`b1Lkiqv zh3Ag%n#}pN-|F3cBT>8R)tZfnNu_(muE2H|9aOKh_k&a-KzJfg{Z6wTXA%xJP!Ibem z&GDoWGzmRH|5kJ8g-}B{n`c^aEW60oNVorQ#k=&-fHo-msZ&}F} zX93mOx$O#F$5s!*f`#j;rqY$%w`In`eLF&MdUH8e^Cw~s(UJ*>)!FmKQx{*U?wA8z zb@Z`uz9zc{|9Kc(olYZ)t`hMgG>)lGqLZ?E^$njQz8Q$0g!n`ANN8E}+lIE0IsjMv z_DK*@7cnh_Gy0BL5C&f|X4UEbV`V>y0(GL&^9DnrSc@?^4i zxPSk_9%lOa-#@)MpU=81fC!9=8bkeU^Lm3!| zrdyNsa#$@_z>*zLw^kGM9d-mLfWj;w#Uu*dpn$nsb*Jr=GSwBcMl5zg zxgcIFhSM8fGA;{#_Vney|BH|Qr@#IA$=TW7{?@~XM+tK&4CA8fvmglxA&w)6KuWn3 zUN6_HaY!ILv)S$Yw{9Qp-9FsAeYCfAaLBX6b?%vP1Rl!xW;KpC*K9337y%Li31ozv zuuIetqyz{sO|;#mtsXnz+@-#wzDozUw(mdKoAr;N!1baWpI$zH{_@$^XU|@qAD`b` zoLyZn7Kvz*a_$HKQcjp~7>5@pr?1b>K7aE3qfhVu;9HM=@cx}2ef#cmv3~aY`j=0x zUhJ&ixjlJ!Fx{Te2e+qh9o_%c*H=G%diLUM4U$qOwxBXxT{Q!!kZVPGfSD1IS+u2m zI92L$24q>6B3iM;Al~u4v9H{O=G9yZdf`%8538HyWN*e&4i6_cS3Bp&HxnXufF1yd zMFa{9f*|6$@XgJz9LjnaGUDaU*1LBP`o5?2(x-_DqaB1Yi)Akw9SI{T=A=QE#v&9E zyg3XT1q*gf*G7U_dn2%k7ByM0#DJ~iQ#G;(03=BO5eUap5~bwhQ-khmq_An&6zqui zIH)F(2H3P>v>`l-eE4w#h)&Y9`<#-@OR5UnMg@o_l((@+LZSQnX?{KV_>+_4^JOMx z9(3Tw-tP8ndwT2E&Ij)v<&ICUmN)YuXG#grUS5sot0@_lfC!|+2M`lNvhYQ^t~Jb5UtPR&xcz6p|9#5xcb~m{d2ut2yd2gSi)C3Z{`kZ9?j7zGDTQ+C zXWeWf%p;~;kk%-a+^zy5Fx%t-K^R84nlDdpR-<09AIjCudVALGPy5-FtVNknF~^Aj zAcP`9iDcyBa>CjGOcCl#iJ9egAt%v^kaTXnwzsMpK^RoeA$5ke_N71OABdiB#0t_KPP%uGZYx@r`I zQPS`61&bt&A1vGSf+_I=t?&Ugf>e`le~U|h*7ipg$_}kOe1-7p;P5~M5eR@qSFZO) z^r~V6)sad`Lo|zjLZIuZuaU^|@z8YvJ3)=hAZXnzt1A;XQ;|wJwqij#xYGxZEaF($ zo=|^-Qoj?9D^lDhcY>CgzHhX)VwjGOTrBM7&;{&W|d zKpkTn&Jy1^AbL<-17rY*WY8S+W&(nd8cGY?8utv*b350h5~dBPLJYR=Nm^E5QSqw{xCNG>e6Febajf`&y7ep+z@I}3vn%8-#iBv`#NG>WzBu03IO^F z07G)XI=72c9l`MrtcAR-)s1ukYHo=DsO29KCrjiq80QijB=B8SZK;CptmY+9ps6S{V^|v*p>IEeZKF{bjHomhlsFoZZ`hS;x4hR~ zB%+(2F&>0?SNZV0w06;5Vtk;XaU;u0q85nP+l?1gzVCrKWXRAPvJCuNjzOf58%?=G=OVjX1VZ!RdVN-*_<%1hk)YonjVir~x z>X{4}{;P*l4S4B~cgNZqAMs%B8_RLw4XDl(tujOeYAa+5Et`!fPsKfm3w%W2t*(Yy zREzN2-Uk3fy3|T)Et`Ksep~%FmAC$>W~h~g`oc==tS;HknW?ect~Rq--%q-elT+&s z?xxQlC$0Wh+v&#D~K>hx@bN zd~y8Z`RODXJcR(F{ZT{^&`*=XidpF64pcyZM@~dQv|bH4r@qSrG5}5b$>rts{Cd@O zi4y9SIh)e$a}tYtaJ!$XAVzeX0Pr5^Rq~1m=ml6LE+rG)KHR@`w1))q(C`jWkIwXLj|hbD&3t@uHVnes z+tW;lBpEOhb{%vCJ>jgUE=$(a3D$#QFNu$^L`<2Wfxg8Kt?G4d@?vpHG#};kYJI*c zYsjxIuKx0Ge*ORYH-G!|`K!I{$>Ya&0YM5E9DtEJ0u(7D_a zfBXCI-TlFP4?lSO-kqb}tr>~H@dAGK?B?e$u3yiGflxcXBM~8{1VkNyB!W!Pr<71K zLf>g5%#=tv8W9n3C~&nJ00sn12p!?9qn%lP`|j?C?;MK2;%G4-Th)^_!DVzP=uq`rHY?SVnVc8n$`gqYft)%*g~!!bLUh;H8Dz;yxRY7N&U1p9lFhmQ`fuh+wJ=#WY&0Kx$4 zp@>do6dA^Ha&vQawJOX+kW#u{EQd0@b@zynMi{Fp*A+?p%S|mX7v^H!q-vxBp#EPQ z2wKqNhpukwLA4tJg{?-_^TFs_1RAs;dNC}L0Aiv-&?O>56b@%2HLkJa2p!E}krPF5 zBPdoM4mRf$JwU?bt&ar&C>0Tu;*~ee2E=a16{|s~Re{TuEV&ehNe{zv9L9mAj3bxA zD9pg?u}qLAJN@mu{oWStuV?EKc6*=>e_G`Dd`U!NP5dAsN5rx$<3E1 z^XY60kXP$;htry2y;wg#zj=AJrbK0cMM=!KE+Qfcgb;F~J|Pl}9cH3F=j>2PT%uWy z<@{!iIjxq%&1xuuDJMJ1O*CJZu`KWOvo6tkWF#8(UUS0rSfp4WgUp1`C7kxT&y=)J zf5JqmBSexUFqX1d@i-I~^kW#JtV56cNe63&VdO58h>T*w#6{FCkx!3-q#!^NL19J* zXZ0R*oJ)tIXf(lk!4R$Z+u|_sb7K!C)TyDLpMi(V?4G}!7~t8TdL^qbM-MAiZ6taP zqKl~?Z-;v`7j72{M7-0#)YkEKYOYxZhikN8P!Cx=WHPkNtOdk;TvYfQnz$6~5;`aZ zFN8=4EOz0@de0%CC_KG^9--*rZUl^;yjgBxL7=S<1a;m*6T>4o`V--`SSuWju8B}# z5iu`W&sQ}}L_5H+mx$d%^dL2dDfHDsz!`fh|w<@RV19fQTA7ZQt%*OJUy;c9USZg&nZ2ni$HS&qA@8&MD|U3 zCR7nwf2qIKo)~1N80vu@ROrK5iW^w4XfzNpX)uDC3lIWZ%`G_FjXV*@TOKB2(1qBK zYKqfP%>7}VjTZS4+F?>n(rgc#>4{6Xey-{y`9G}tKH0pNB0wNy7v~Mhug|YMtm%_& zH(1jY962Lx*#<9&_;3^3Y1O-m1A9mr_RIa1RoF(Z3h`u!1OWuVC0Jbb#EA&vp`yzV zxfpM(MgY+90?(}4HeOht8Lu!pI9cjnKs>dn$Us9)v2ijLEJ5($C=PUb>0x z#+e-Hti)-GlUm=RU7UR*#>#d_9++CDV5C!3Fy#+>P;1;;JJF^abz$NRa|7*}W3%9D zlU=I4nU5QUHWo%fq1q~50!?n)6uS6GG`EKhmYGR|P4L7#su?TWp`C-6lwrUeA|ZQT zMk-d{sAj8i=&q_@BfbS><2*U!B~}Pw{~XnF(+HJf=;lw*rWIr087-+1A}Y4sYj9w9 zx-BHOz*|{qI}1p~_#LRAZOZPwXlZLyq>`Iw?|~BrOdz`PMA^7U9ssd;z=o>9Q6y7( zX90SxuFGlAvI<-MUw3qY=*4eaoXzL6#KXdDdFBwQi!@q*?%~3FRsHfEV{pOUn<=*c zuIhks#O2%LhKQ;>jdT?QbXitrVK@l?bRcL!kdWQF%dyje~vJ5D`vrdGk2Ioenl8%f8v_AcRJ5n(69%l-S zwun?xO1nF|%jIeu88L2T*I3jSYG8DIiQ7)qe?ltE)9Li_J8!L4OGtQid3|+$sqYgm zv#nXzcLzs%_aE(@o-aQA&2t=ukf5+O9fu+UoG>+~K^kRwS0?hBSU~_u)?ovPQehF| z{o8x9+1A;~GIv% z2mAZmrIgiB5U{WmE=BbEs)*j55xTg(e)am~`g*R8pGQUIP(+X*a8g z3L-!W3*zN+e0^1xfLDcn@yV0_+yCRQ|MSm2?vU<3xRr7$EQFAVfRK6u!7_|Mv|g-+ zaRh{|zJKez`#=8HgWvuBTR-{Wt#@wc9RLAY3}ro*6+<_rt#`K`9rm9cFP>eGXNzH3 zbSejc=xrQifx<9?Kmr0-txHPS5fzsCeBeGopE^XXyCkBN00b6==NIcYXN!ceJ4v_q zx*xu^_fNn5 zd+?)gJ$m=i!FS#|y1ZU}eL6pTa{cIV^7gIC?lj%o?*8mY_ipV>e)`q<&3eo!0TRS? zK|}x~5KPucoTadUd2ED~5-4^cAk2Dzzg#S))9G|JSuU5!0_$+w7EFaTtX9n00eC)v z2qME`5X7sk<^4O`j~*R-`S}~2Dxd|?h)`Hqq_Dg>zdpOZ$p|SC0TM6~o?hPcDcwEX zjkh48rShW1Fdi-m5J)NBY9Aq7x~8;@z|3=&YXVXja{S*>AMb0SEHEQARt zrA)}c1b{Yy!y3_nXE>z@3*@e!^d;p^pit_B@>oCw4!38JC#g&0x}4qIEO^}|B;btD z5q1fB6a?uIGf_^I5~f5Z8HgfyF(00v&ig(K3ndbOVPq|zObJDB6qv8d-i*3TNHpsR z0U^WL^;m#XN(o@n^^=YWpzD%aJ}zZsS*_OBBd^z`6b9i$)DdM$DI;pW$1DODS8Ggm z4>1w*$bc|1v&cB=&?QOe?Gr?_Dj7wzrkoN27$~a;<7`+qXk&K|amDUYTI6CT-7#nh zQC8tHpdd~=s=h~%#10Y?pxe`5Hv~ z%;>x1F0x`xP=ob|+YBRcc4=&7JFn?Cx_Vk{YPCiY&qZ04ug!9-8cIRDPe7QZpm4F$ z*`yPwwUjjxWkZ^DT!79$;U=oLz|&u8s2?H-LZW(r9ufvZ#tXlzrY@u&vx%b$T7PV@ zrbQ7^0pLYH9#u;X{hLH1DC|LS#0m9yTm-Dwg&IGyx^F=B29_teCDgex6i^0|-B+z~ z9VjHxQrdww^yI?h6EX~|CSHo-D0eUtNDtPn8!W<1D@Rn=G*n&;OkmsKeY^{D@;}$I9Zj~G4mMeC-k57a;vQ|6t891FOgyJm&{Gu}8C7hWIGp=+!y#F~q8*0WV3j7^eVx%wrB68zX66 z!j9`2?52?liH(B`zl3wNmp5;e#?48DJ=Lio)biTqW3fbwn5x7&a_0My>U2Fv3xb%5 z!G;JD#yIQ_ZWIQB)3g0(yvqI|@w0{$EtUrmMSr55bi>m@eTvCUWkI-B7xeZOu1g~R zEr__b1=QRXx~;CB!5Oq6&(0GyGT6>pa^e`qfp!|b5yVy7T^Z4QA~xIp7Z5{@P z)hc(1nJG~>o%XZo-FpWh_{k^FR#)q!rE4NCy#Yf;7_I^&u^uOE7(v?!Ar{6w>HAp+ zC_HjXC@5p$E+=QR5 z(sGnHSL@3)+>G?%^77yQhmZfwpa1Ro$@#&-9_6lp=-fa|s8}OWD(f__)cZ{#;$zWC)QUw!<=izhG6Zx+k-dYvbeuIqCWK{>sg|J^UYc=qD- z`yV{|(fjuw-`)B4qrKCs)yu2(<%-|A)!*4p+mrmyKRCRzJNc{M9KXIAkdlX5CiXFI zQgpbRdUugTWc_crf~JX}jIvq|(`n!3JPcz7tO`_*uT64_uw}WdRV@IZB|snuNU~n7 zPfu?4cBe;2)ANhn<5w5coXdJtp=B;2xLOZ4izSH%KDr=E%zV9C?+&F$)CRa=Z&> zuhuXJ%qcAwWvi!w@aHGdV?QCcr47;763uyXlI&x7Jwns ze2xP`r}H8}I>e5kONb+8#6(0)2{8i{k9tI)FfgWqNrVe4OYB@>C}U1p02YhY-TnUl z;e-HYeL{jY(4@~x#zcO6CNd7=e7Rb!WGr0D=q?!(Qcl#RoCwKBE|&sD5gV1}Q9u9_ zlBK2~%p=E;2V?*#Y!<9A`cO-+eniE1Jpi3RV!tXzj_R#AM+LzmI!qZ5H5o?3TnQpH zwEo=Y-u;Xj#E)C5%lB!F#T_Eoh(Il@ArBEPcsDG-c(}g@0mRSH1wf}|kk^DIPa{FQ z4qK2){v8rK&2s1LIlDp9BE|v;(Q-Y{74UiB}yi2=A z{t-ec;UZE;YyOSi-q^#b$a4fl7y%12A&M4E8qyart3fJa8JFuL0wVbjJtQXZj!w2Y zvO@Dn+L}Q&{^Z0*}HZ zwv~Y809aoZpS4B%p>R#(90#<_P&?E?-76X?!^V4ZY@|RhYy?2u$U)*Io9O`PF=dpE zNR9cMWJ4XFv)gzb0Gk_H1JS*&ws>~w_At^bu*q9yiKD(O_$j6Vc0Cask%B-8YD!?V z@mxYgnw5Jp=pQn|xRMH6m`Wmqk~}!Km{lSOl+Yd*HP2G?hhFMakNJJ)H5>KxunIyg zH1Oe6620>H6_#cH%Y3$AcE;5Vq(kh>DV zD~BC-Fq`Fe!Kv%C(p6WWvMF7E3>em1pD?x-}*_1QapkE2mh6bGphy)Fe zP_cJ(LVQm#7jaKLWV@tdfWD6a&3IoVU8;EW&>PqJl*gff7Nf> zUpG+zX^9qw%}hot)Bzc<)(R^q5@nqNdJV}G-Khm;HN!(8Mp3gptFFUWs2i*@SGS4a zTo8u`s?t;q5<650;R*3jvWS~M$5A%>$@9nn(M=+8rs7K-=N8SB|CXQf_A_O5&Jo9UEM>0+)xM7 zU&YAT zqGnbxEDm|5uN76HT$=g_)^g3Y&t>Tt!m56$s_tr9&HvB4{_@#=>2(%Qs! zjT@W*45zyJ>xOU$8C|u}!=1PRo)T?sZ!ee2akPR4Ft6i!YvBXd@)DQPT39cM2umr4 zw+`>zzdepa*XNf{UM_DIHUpMmYj->K{lTq+-My_RU!9!2z9K>9Vr46A{b&(LFA4<} zYV6hOhDPNW9$f%Zm-6CbxxBpLahOi?SQt4m@Gy=El3tkw0I*?~HsKEdt+AGh45^tG z(3@`hcS3|D48pRtHMx8HXg1A@^@;(3g;@$q5f=MPA;OX2{QTHWQaD@g)G zE#GoGs3gOH<=p=&wKPxCjFb|NL@zJbPfk_>bpLR=Gr?Jp+mn<@G6*391F&A#(z=R77 z)Fnh9A`ymhWSbR%FhhKI8{gX5nh$uk;x{+Lo2%8yVmx1#WhsRb30Xt{Q$heJ+WMae z0a#!)j0iHtoQVL0OHobHK7mBU9gK+QL%BX4o}R4sruqI}_Xpp(|0h3uczngb{LRz< z_zz$F?9*q*my2;ZbbU9O^qA6;<>~SH>+`FpFHU~{hi`xT@$I9%$-z#4db$4e<>F!| zKRTT3&C>VoZQb5^@K>Lne)jriHA3o01er@1G9|TEj|zxFFd$aNL+(LQKU2yujFZ_^ zWLbuRLJ7hTsM|32#cg=uUJOKlp(N;*^YzK=oBI!T?%m(JyjrXl>y%OvCT3wFqH!$a zIFjZtT+|hnQjoe~EQ{qj&w6dD2I>{vKx?lha5S%&myH-0F%bfB?$gfBw?4f4Xdf>I zxLg1O+~0$zPsV@$;sRx?wwO>W$aB~29PJLw!!V9R0bvBm$Vo5}l68J08~#A#{nxa( z#lrP9;@1nl;&febu^!*r@7`REAHBZZ;_{jK>t zPC8ni4<%2L5(sL2h}RB6xOx!~&>OaXvH|4Tm~S5X-XYY zmwATOi1VanixTcK2X^GM18w2A1WLhp{ZzrHrMF zJPf6j@OGF0^gb(jVyD8-MSzNqwpAC1j<%>x=7M_XRL81t5pRLa>VMep9(cqGjXOsu zs1?=>+7r(pH&D<@r#4Fx6e&`eSy+ntwL)5VN1~nnATmzy^xAxFRrdIS>Wb8~OCx!U zErGo8vnmYui6VM@tEsO!)`%Rz0y+UeDAs}ip$L)~pCGCi)T?M<;iF14WAwN?)j$ME z{5%&OXH!6kbTpP>-sm}%`z?JVYNfaRK)|?ZZV5e7LEkN~K*IX-=1|ye2zYh~0s);s zlfQy*CxY6DNy58Y=4WTU{>&DC5n~P1gdE~yNjH);o2dx(du7(d;3 zhe<*b5J*lKvgU5dK9I1|9~(r(#FT~2Y1!Ka6M|m*G{oIc6b0>ugs(!pAV|DyLV54W zi6;#XO#lc2*?1RLcrnOlyA+)mD4yn8wB1aEbzSyEpvq3DokvRHF+!^1bB=X88wAA4 z(h&eT6S;g>Y}(~F3`i9QPYd-){&Rh>gAxAScDs@BHfcw^!2iVR>xU3S_=4oN@rqJ8 z5$bOtBLDhrPht?z2LAdhH$}I}$o!d};xw>DSVhl3zVZFaS#YAZ$)&_zaAPR~8awNg ztO;hEp|28U=eHBp$bHVON5Ot zd?Vj>Xv}d5aGzGu+q!W>AB@E<^O}|W=V60ovBtI_3n~diei0lS5i9$~_^8@;#H#wC zHXByB1xS3O24Ol%(}0exxT#b$DP`=mMjp^egkzN94%|ITAjeS6MC>~(U&vC>d}B4@ z&#s2r-?0H2)~6e4TQ^d9QD4`r%FT4+$ilZ_z{XBIC!c$%y60+ZV@KkvjSpeist`eA z_=fOQ)>WL*ZJO`SnPiD!*q9dhhA{Q`4Z6m{jU0^vp}FhUu+;BV&24lj^v1o21j|}; z5laFHk_Vr~?Z5`jf~E#3I(%k6HpB+Rh8c!QZ6X|x)~agx8e+>eTr=W_o2a5vL&r@& zge^5118I0C0%SoAz*&d=xxYXV*qTle@%n0Rod8+t>OI1TP#XuHeU)hNa6%}Ma(?{o zBScI-tYN!_#5$GiPQXAi_>?WKM+4P=jvXIpR20>EY3(}UgV{rzq`YmV(cKb*ri<;^1!Qy9`E!_1Q4+JjT!_fY#qRbo1x%z+p#n1ozuYNvXuC@*j2vbJh+1k2)=U{tl_T=j~*UL2^ ztyk+r^5E9qhabH4lb?M1J8wVO-|2W*zdpHsF>sf3ECcpH#DE|@aZX6?tF<>g7cKyT zFhzPefd^aNaI3!>;CMb9->lwT4d+X~8OOpXL^+dQ?i-5;LP8>v^~kaqw_qzZ3C-3}=-+SkyFE9S;?|%KCe(~kAjs;pFyCcYC}0U;X&r z&!1lY-Iu4w^MNQKl6R3(M9a;kpmy3SMGZ6fOgfvtLjdD?K*GsnvJ{q)&HA`u5`kig zg=uCS*;u4(u>|tS*wOjLVzSj89Zv7vKlt*qSA-}$Ff?D^VQIG z35x*GBqwdxrQh(uQLUS%ChGGNr$h{JaWih`G_WAc)&y{bB7>0k>=6J_jFF^Bnx+Te zd%tW?u9oYY^LZJ^-99g0pDd5h$Q&&K5eg&f-9<#LqyzH?MFaq^AuaZ1CnLN#S>8S9 zpU&myb9!&ujkzC2o)PM3>x6!C$x{wxUO* zL`Z@<(*rWmfS3~{BaT_l43I#GAPHuYOp*nNZ0esfw+OBZ&(~wGMpi@$XTs4OGjS0> zn6Ko`#k$XFzFuR_rNG%@IJsIgAPEox0e0FnF2Y_X7E0J`Kty5G^Af0oJJ5bFR>5E} zhFV~)5+z|~?VQbpz5BQgT?DkFQoWcNP#Tx;O-QI9tLWShLd;zUpgjrLKspv+)RDME zfZ_*2p^yOXZ_yp11`mN_yBGCXDgs5w#Fx zF97gz5L-iCDTM7&x`p)sL=hheR`VQ>!Tl4F0;?9PDn~MHVUC%>x+YC-bx&xOJ0jr4 zJJ^sAL9|v*1S1aiOw0nECNuO9)4gqw%N;Sajk?-EZR4=iLOG?p#u#l<8d-;nkh}9y zPztPyok(_xGGR`bkvhUYfrxMt1{oRjJVU*eb2myJ%&2c6=gMeh3((5jGDx5rU!ajV`;e)1OWu0^9mRB0YNLucD_$msYZ~zg2Eqf zHdFxh2DROA)2PQCTSfJJX8`Dzq%9$Z@R%-p8`u_L9o4(3k&RZj`!!Xl$znwXOhzCQ zFM}ssj8H&;VGt2vBG55Db}k_s-W&8DgFVuz?qPPYz%CwvF95yOqB!@Rm2M@>5K3&U zB5#pBRM`)79(*DG|2+5dx*PDaruvl1rie%kaYk=D<+ODQR+z!E+)Y@?rMG>!8yK~C z@lf&iiC6?;3=WM5sR-U9f)5pq91tDmaiF+#RjdRXW7&6*wSWg}8#Yb^UJ2 z>njkXsuNqbiB2zV#ZfzS~l!&oI zKpVg&Y*XD=V=&^6=m{`@c(ocR003ZUtSd;1$~Z(E>%f4OEb0e`DXO!oej&aa787i! zZCDHmUfGh+JyAe2?hJj2E^4iBtWt@fY{U?gR%_hMRdld^xjqp?I-7vYLELbN7@Tp+ zx>Oqi7A03o&{|3>VZk<3PkGUv^8o}ALZj`oQspyjWDTTZDUIXScQuyNp5mdOn}UcR z8>pahP~hAZ&x@qh)PSfIK68z*uR9hStPDUfc<20=g!g1{A#(9?B|!1 zQr|)0G8Wc?H9!PHBIr}*!Xkh=^i;e(yf9ej4$zKAUTKJkur-_R?(YEMV!2k6P=v<< zg&9zonT3f&ikzOGpPgQmB8gxuMOX-QD!UL8LOOo(k`9qlDZ2ivpzxA(sPtp`8;?mM48d;R6tuNTYJ_OyF^cmH>P^sPVq z$%psv9*j~ht`^7FOBBdm>Qc^t%R*EDVazFY2@^>|$cZvYCU3ECw{@h5ND&x`fDaSi zI?Nv&=J|lfH{o&!iY$jh*Tw5aT=EOP!J%eD5P|I$pTn%G8l)D2$2yk z#_{H4{p56gdnbMPc;|QD{rxZg`H%kc?|=Ote){=W&)-~MEW3U(*`5OA=O-6ufAh;H zUmyRIAH4hBckUeROt$ZApI@(^ovtr#%A;G8qwVyQxA$)E_W$2szkGhSBI-b~IT7y^ z4Ioy;sy7|cEw-_hRQwZy49iv8#>s5Dx>+h5;eJE_(dxp&#OlpSLJ`rs(78*K*<`sI z*XyzCyVJAz)>e0T(4QUcoV~f2AgLNd;e$)tlmAqi;t zSl~y3$Wn^UTVyOG0;PzEbcFkTPS7KvPq6^81)B~6*c?g%NhsN_F989N2ChVu5jgyi zuo`F55LQK=pDr#|Wi^)Ebp(hgeaeV{ zMRfZJ68(S?QEM8prW5XW1puXJ;Z)T>Ea1Ar76MM@cq$T%_*Ar~DNlROBs8X2jG z8E9pTNKIlr8pAlO0b~yu6q_qvDdY(l80_fjUL@opc}-@dV;tC}M(jCQ^)(KF!JM-{ z616>M%@qI%NPKjqCv46Vh+A^za^fHmF-~G_*%GgVrYNR8OV@u{@PoFoCgAgk4{;;J zfymSJFWh9vn%fx$DUm^daoI($Cf&}ph{HXpR13Y4T6uu&7SNyMnZ2)hU1UA7j_lBW ztT9`>&j*mGRfG)p*RG>5@t2S%H%!W>j`_@==yg2?^ z4M42`1u!}Fr8)#$_ap)Qx*e$A%t09m(elSg>rK2;H3ToDE;bRcAcTlF#?&m>Z=osy zU^T|C`9~N$34*(it#m*)yNyc4S~pChu}696m{f?Ffl6S2B}Tkts68|WK0Kxy$*@SR zI&9tnP@$|oG_>ADr!l|*1c$~qN~h09<9y3VSLb+REv5FbpnhK2Y8(iUD2*h68$zf; z0^y2kG~)iqSi8(h#f6vv|q`?9|#X4bR@z&%Bk zN~o&TnlhzCwxkY8(+xrdLI9d=Z&6C)F!Ws>#zFItx?Zadj1bdG*nF<5{ZHz$2;|x1 z;p6)WX|-BkoL`p0UEimUN|DLdG^qP)HwFsE?UE}dSlpPa65M!8%q|HpsxpZ@({{d_I3e|s+jZsq*o&h77i z@bEkD+Lxwqv|6q^vYb})2lAv{36_#x^+lZ~EX-T8zMu80bt!8eh7kzQPFF{VleZr2 zUtit~t975!Fct*Kgv3$=Yyh=DVHN=)Vi_;5u5*_VsPEF{)eY`$_X$A+XydAaptR_r z=6H&jF$0PumX2ju%S1o~dPEXYXifyZXNf++ptg~51Q?k|#%={G1VIv!!ayJj`B?mg z*kr^tz)r|8!g>%GB(Y=>7R~@YP>0eXbeI4@JD9|r#}QzbaMHnwVd!xR+#}rD?aGbt z$ZN$TNN?{d14!6znwEAXtq;j3|OA+Cz;Q0R%G&i!fVIsT2Je?OM8+-!xt4 zh#hLcqeg=O6X{JvAvH^a1P0<^I6MLIAqm>d%}8V;JYZlMYXy*qfG{M$X_uyxObpXW zXIGs?R--Ieqc8&qCG1j$f=RS59`RU;<}b>4XyXI`q@;Tb1WOTg1P~@djwxr)YMqTVUdgZ)`jtds%VsW(okHL0;HW5V|i-_^)|EtP6&pYi@d3NSf{>{Zx;87QbGZ!)w8Fn8 z)Ccfs0~X9TZ$iKt;#N9ivo_jXIMfZ8TAFwkONa<1*|eh?6RN2~@aj@c7{!y8N|lh_ zYC9XS!}CCJquYE>vz$nL(4$HZOyC>$Ft9!r++W+PFbqsZCZPUBiS1Wy(D3w)^lU?V zf@m7;x4sWULhFWFQbgUbldR3Tq>4A1qm+0gR9HMqi&`aRe^7EFmE7kHo*|VhK*PiX$}7tR7QB!zwz{@S@6&6>>W=qkDFz>d!(yMXLrI z2ua?<3u_uHaqHkB1)J=1GZ9Zhe?{d(qrp;16@S!CO9fDD1=xy* zdxzF4glC5;>J|9KI6iQA&D);DA&`5<1{|)`tSocy;UT3ryW*@pYE0 zOMK81Vl|G!hf($AwDJaye%jIzH$<*sMcn`jG}DS3opTwgf^NJBQ!jQlQ|&pr`NpT?m%TeKk%5LkacEte<^58ryY zwL9ZcF3vB<^}6d)LX-sEBzOIUCX?O6EhId7a{&WWXnWiV6d_?d{1&!;Y=JQcH<-~o zi0Wz*rA#!N_UH4}upV+I1QHg7OUgJ9VV6_RI3yT`A{tidRk#EsU~RV04}4uO0rheu zG74r&lYZnfjsk!zqt?M$+hBnr1rq_#`PudH@fnwr2($r`%cT$@0l)a-vu7WF^iTfj z@BOR))4$%@-nyCJP|9H}$Ti#AZ*!R>y1O^Ix7+V@*b}7W(YgCqX-0FnI)UpViik3+ z2%KJzr#HjS*5uB9KS|ooN(fPlp~NtUE}O>*BIUoZah?>~C-_3Jt`*@A zF|2ixy2#<&bM|@PHN^15vtmW;9-h{p`^xLv%?H2v-H$~J*P@~%!Bnd{R`zS*5LM6n zioh8J5n-a^&9N@^?U>`6CXWvOy(o9z}{j$QU^D_k9)c?LvSNAr<(1Y`di zXThXQbw_o<(rH+*L|Zz;k`v^0vFsp;jM@^ zJvM1;@7Q#a4rNglmE^d|LyiLCLYu-Tg%{OII4RVaiC|4vsS=dah7kPBa8s@Jys|(Q zoyZp>Z~VCh^!2r=5~CF2%1orJP^MC>$0`?P5cN36Fw?NI0#E@eAg!y)dZV4p19M<-nmUK-x=ytx-ta2$ck(;8)F{f?!=ZPj7Cc02)<(L zqcUu6_mGPG+q^3pi%M}~KhZDR#cpd0vsF)JgeB9d-(Q9{k;sC84I>7|C#AyI!0H2} z$^;DYflf*{;?ZFNaz>si8b8gIw9~q*p0n*t%;yz+I=&E854%mX}o=8#~>m$ ze}EY?9?Pk*F(D5T)>05C9yi4f`Bui1eUv)ZV-kaS15MwGDU8rA6>S8)P>ufAp)h&m z9x1qXnMkA0N$jZyDEArrxzL^@k=l`|O^2F~Oq zcTk~O9W_n*WC4bE&_DeAbee;nj^~Hv1jshp6=|~A);20A29F#^Mv_kC(Gbx2;kn&8 z<}mV;NkXdEZPRsY+e}4o1)Uf#9iNG%iH!@M+R3$aBEcO5!IHW(jVcp%6Z(Z^NCBk~ z4An?LN=iBi>KwhTcDDGrCHGpusO&^%+GFYs5S1NjnQxZ?Z z!n%dj@$O*60wV(Xug`imr6JOW3lUo%B0=Gdrw>5W+Qo|Je$I~_KTOgy{Dwx3B@O4B z5|Kn`98*LJ)bzU!B$7(EQN|c%;TSSG0Oo)op}DRMIogO326>(3ZiEwOkcK`0<#}5kV`sV89 z;;M))OKnX6)WQThJKa{|7tb$_mp9x50K~Z`jWZC1m&@YZHl(pY(%Pz;XL?kK2>Z+Z zAN<~T6|!s!6kmtI;y(=>nZ>Z>+X?zku3QI77K&;@hRfg)_ z@(09=juQZq-nl3dJ%4fi^uv#&HzM?=DWF|sDau6eed}9qf8#fP@+W@$um8<||Lo4` z)%EpKiz>3pz6Xy`f=ZWK@c7Q=)w|of8(PRYM4}qfE7bzl@4kQY z!R6sd{ENT*TmRkv@XOaXSLY8Na;4Ml?sKod{Nq3PxvzZjm9y>g@%8aHe(#;{z5DDZ zzVw-&`jOAQ{^+bp|L}v$qoQnj~%?aN;*l6@6_T#FZ-(Ls!DF z>(X?$(3Yvt@X{v9T%kZ0Jv7;`TA4n5R$sq+?}JBY-~8b6yU%WJ_Oe+PqJoaXAi~YD zEfp`FZ8qEvYlHfIS3uQ>9;U)X5D`+l`AS5kD)Ea|FF!n-ZH{l8*ZC&d{!@?cJh;1@Zp%l{_cw?ArylPf zobsRl;g?UA)dQ6+qWG#qkr4#Gqzt6rfJt@o<9kmVJY?+SVAs2s{lY z7-lMoI83WG>m(xELs5bf*glW7JM;_yLPV}OtH`RInJaTCU?vVc=ENZKcOp2HI4_pO#}sY(pV$YFNhWxdp+X|V1hBE)L?D7F-wI!iDitET@;su% z7+#vzaH$|777^x*UNWTuKnBpEu7Mjd0J#Q(OtzMZRe(q@8E4L}i{zzGeS`uMK~r3> zoq)pF6t0X?%CfkzTcxi}nyRRoIcTI2&16~Rv;gEuVKO8k5@(QG8S%D)Mwhw)?d)oB z;CV;hG_Wj1q=|?;Qz>yY{NPqW*}Opz@mI!i z0m#+OO9sIi5IJ8X;iiZvZ@$}#W-D?(gK=>p;wgm^L6QY)2GWof|FKPRis$o_KJ|=X zJ5;(-TyP)%r4dP|g2$ySS2Lp2UtidW9yJ-CFaaa`2oXGKzRR|6Bmp79F#p=f{y`Eb zR56s%WnhF<6G4DjSMjJ0_~VZA{N7SCz`d{8=Q&A*GZ;x4!b>Q zi%7Ajw3ZkwL59hh6ywgYG%MY?9?2<`=Vx@xG?p| z|H%*uQ?RiJwx^U_~tdnXSH*y$Ngf-4thwnxpmI%TpuRL}+zM^mfX@7i=F*`P-yo~w# zcY_fKXP7MEkc7~KuyeD0L4GfMWq!*d{K+EOv(nAlU}6YSo*U`TZwmo#{pMJe1QTJk zr^&i3k*j+yo8A)Lv}W^)50^UO&^SMft+$c7x1Ghl zjv>Rh{)F-Kt+hfM)`3n0;N_*4UphJ29FObM_dn8gt;|XwRxS+C?sRu{wv{d)z5fx` z#?Z9mG#0|Mw$xUXc=UseF$BDrD$3WQqNSj%jmT3CTme;yqJ*$_&(+FB7ivwUi=7&_ zV!gmdBxYXCwyO(3TH~+@&?DXR5a;b|ZEcM;7X~OE$Jv!UIdT)2W5@yAWwmnb8>y63C;BafCK$kEOI(}DG ztqN6BefPuthZpficHKla&I&t+}TpT1a?xz-(1>#EwT>iMpALF=+Mpiu7;*Fh{>hg4Klh#5q^ zNhcJhT3CQCx*qyk=wwrO3bLY$?w&|tR3)pTt6ts+NM1TEk3WC!)6Y)7@$SX@mj~zu z%K{=MFqO-jzM#EwzMO2z&AvB~TCNSTolld3*p@`Xj1fRWB+OU6zx`}|dLyr&*Z=6> z{n0=DqhI(h{`-IZufOr_n~SU6>B(-hxwtw0i+}UmA3S;XXaCrje(24|XPff+0UOq2><_8~~ZtE}p-upLeFJRAWad$v28Ii(kmybDWqa!e$tn2=oOR2Cb zR74^|AZG5(^Fa$27|lmwk_iPVSgnp55$WM-zuzsp-JQdAfAdohFJD|8E^nBKn3-4& zthfmY^C!}k2{;~`2yJ(p%bP3a z-CT8oa$!*sPq4Hb@?>o?2{_r%reGt)3vppE8<`RcL0utgReR9gvDn!s5n)^CQKh>l ze0fuMir3CJZ$3VGD7s}9<(24ID-mxhZAkYA-8Yg>Txk`3D)`<}pI!B3S@unyuXqe7 z(1EV7`LIy*2wW9Kp5IRl^AX%Al97`O6p9O+gx#dQ|)BGVl7-Fkt`nJ*unD7 z>~3iAENp`}ZX<@{(AJz|!WL0Iw8p|j%FJvHaILSYD(ohry$$INeT@VV*p+7kC?Mv1 zmoXHDnL*M;Af!w@MXrE1W+IPh#)5k$g)e$Eb%@9S3L=I#9MORhCxjT0%B}A^N*I`O zU;zxcW1shP5wqv&^Nxr#fm>iQ%BKe)Rs_HWAsWRFzG5J8lcI#_8SX|ffTTjy(|j`d zE6=VFW=)BlV7%4fRHxkwd=Qv2BAqx#2`SeYYD5=->-{*70MN1bwTt=a0;#2J3U5kT zcGVU}RV|q=Jifxq1CGcoBMcg6Boy)23|enRR1px`0!(p8uFen^(}a8}DG)^{RAWs% zdFNKJ%3-GCmYkz%M?3b_m;xd&^QYVrMtF8c%x};N{vsKpO~Dv5(2z{c^@)&)lFYo7 zA>?5hBm#}F2I{jIu@L|jBe2|Ddyq3}jav_nUx*maK1_5wZi6$06z0qkop>zAAQ}>= z@hFXD3jLg9Qg0uwy8(`^<$&=nHmUTK6Ubel5&uSlkB=i1;?|!`kC@vMmru`lv|^vuff?ayT3nkqe8X2TE^t7YHIcM(W()iQ*GJ2jq$ltv@oGntf> zi#TH$gYkWt9ETrXguRUgiEL;}xtJam>o{y(hE%~|YQ77}lnntIk`~S{bZwjxgq){6 zyfvM$hhdb062L6&ep;r%*kfXL$kKN`O7qA2({6zgMb?EF(;aSctSV9@{*V=&Y`i*4 zc*|Ma(j^E z#wbmtlEQ1_C@fJ&xs=VqE6}93t|H2HAuT-2;^ZvW<9}h=nT6?FE``!SO&4!=9|K7KLTUJ zKBre};WN{^d42>C>*`p>q^he&q>54V7O?wLpvqnF&eNOsU+lm8u-Jc>64ExfBc8u_#>ZvywvvM;|me3OC@DX zQKY7o84&4Ur9$8ZUBHEdOe9f-D1q1$zNiopLqt~9$}G?ZT15|SJze-@;iXVz%EYk^ zlZdL4uqCkQ&9#8^jl0X^^M_x1_u}_IygID9B;F9 zir@W%_b#uFFMi^Of9#8|-#@J{-`_sHIDY5per=oA?$@9A?D^@g{7+wh@A*wD7Mh36 zG;t>)N#zPl6re~6&`y^Z`(?B2PIiZzW9w2DR#oZZJs)WJjKZucwbb6Vt*sEy0Mexp zL~mYPott?BMe&*%h`uf|%yl=;wn*$Nqb!Th!i8v4z5h94FQq^N?O-^fF%3{up zn2nEvT|=b-s{s&2(`KT&lsk8LJ?Q0;X`vOkY0_HTOpu+5U1Idx_m${sFV9xpotA~r z*DeAib~L#s?W$Hly&)MT_efpny3@0+Pp_qx@~vlwcb;CJpKX@yPDNH=S@=v9(9OxR zo>Xm3MMw!Eg|Tdi4^^3tAZnmuxRF8NkO&9OLwaFlij9N z;!1jdTiUvUNxIl|(k>7|@7e^bs0dCMx?{(zLcRCq*ZJ+4s!;YQMj=X7l^{)wMJ*Mo zkR}X0+m_veoBhhnj&7|Fb=+`vq0;b*>a35dSo;a}oI!?q>!a?+3>sDr4x9sIbad-# z%if=yh+r31MHOB)t&?~0j>A>rC>f)w-bVrm>LkGz)zsw;R_`0I>1h?Vq#sncikTw5ty)H-YmQ@?Ur(~ z0E(`%w%)vPgc%6y7;JLy%b66q?>Wnc`1l4=B zr*`|dCDJN+3Q#GLB7mTSEc}t+sL6tW2tU<@sw-^8;=Q3i3iNVZzde{=n=H>++gqf8L z3U;E0lDqb;#}o+I$3#8d&Yr}c%zR5%0YonE2pVHwY^w1k@?$)f)gVKLRj6=AbOW>n)pDc(U>&vsW3beQU}Y^IDh zH1cZas_LbT4OqF}NmvFMvgzZb2!hl_Gwg2cf4H^q+v;OL?7vJ>myge7o@NstF^r_X zD1)L2G4@wXI^omFH&E!dBO;e}GfIAtq80@sr16%H>qPs~*dt1t8&Dw_QA}>j$4{_a zfgyh}qIkN!(%p1QXzETNcl%CP3Akut={7nhL>j0i?2$Rm$>9c17Y^F%AiESJ57K-V zHbJ{UlL~9wA)nXHSQ+HJ79S+={) z+L{eWA%=q!9gTVT4rPhef{ zYVRPfwUBaKn{-*JEoEV14Q#Atm57-O5!Tk4K>Z4yt+bNCJjk-yTpy0#fA_=v{#YUh z#D;1cQ%kw}=;_T=ms&lX`rlLEhQ=N|WbS6;oheXuLL zg325M4p{B5aY*S46duVn5QNVB^tyj^aeQ!R`_kP_v0j}3F^edex&+cuw@QiSC5lhk z?J)Jo3PRAX3hLrJL_`vGlth%7z;tNx!R7ILA76j%_ul<){^2iu@WF?tcecd1cY6Ah zU-^MQ^r?l3Oa1QC%isQkCwEVGKljIf@WCCr{OH9s=~5To6cH`Z-nFuB3aLW6 z3aq=F1*H%Hh$HjO4Vd-w070OZ(p9YFDzicb*tagCYwITqZwuE72HVmWSlVDD;xB;W z>blp0AA9}$(MkP{?_FN)kDKjcEg0*jTs2u=93S0T?w>9vs{3QVS(|#Ut`P%%>qp~4 z2*Fa%NQn+05p758KRUd$qrdvc-~7rKU;j`4{xARHum0BcMLRt`tDDXH&o2Mb|NQlj zU)=o3ue|x{{q3WB+gjRt&yQ=z>kpT&yn4E=um6*;zxUzun_8>HiEEf78P3Noq#x6( z@fOCRK4V1)-+Sl7{q^y%UwKmv`=#6tkKpGY(z@M7R25A#=`PT`Zq~mK8$`@Xq@t%M{9uP0 z!p)AB6WVR5ZkU)Tq``mF+M_Zm6Ej-J#f@xE3p4R3Qw0sDDJJt!5!FEED#WD9Sd~8P z_|6^|2fA~@-@jPD`~2orM!B~ug;?h*(3wv3(9X`xNQhGoO3 zhRrAvvCLWQ3jN~=`NI5qfQCiNPYaG1X3pLj3WEv;kd5EH{_g)l5Pv{xI)Am z4brIF>g^ktK&&EL##cZ867eew;bd8^_WSR@`}A-;mfc1PA`pcVR>i95pjAmkWHqnm zU@%>vLvqXZC6HZ+CGOI~o+_XPEZR3kPq&*0I_z=In>c}qs0nJmC|qsg4}-``klqYs zMpnHK1pz+DtAH^e3ie|LwhO$9Xq@LxQ5A$PRtg}DvNJ57L=@1ei8;Y}J;`!N5k0cw zS|ZPaNz9knPa}p&)+OUZ*lpRSt*P}CUYJWkbz?JPHDX#yD)@vyq z=OmRD=*J7ohBb&JfB-Ij1&W-I31%SD{lxBBXY+^nt(>FRo^X&Es3#8kGfo0BR#rqd znh8{xJ&IU5EZ)HOQy`HMON8H(aSYs>bI_1wTa6GiST0(82Z30Us|mXsEYduc@h1Y6 zG4MEn48p-)@3U2Rc!3AU79|0ZTx9+U9}v(Ek;liy-N9aTf77g7#!`4wv0>hB_=I5P zJ6e}6Xd+^kHL(algaXp&gK8riH!^KTiSgibody=GX5e=od@yaf)ZqZeOd=q3gJwib zW)P%l(6P?3UZK|c#!#0C3dSBxFoT-`dGMA`CIrS!&c&{$+u%{)jGf3wu_oiVS#Ut~%gW4duk4 z#|wS(`GQpW97`M>3<7a-BC{(Q8l|!FI^{6ud0@PlCaaZhW$c2_J^fN}SizGaHho$& z9ipVLvMotvr##MX&E$B*+n8976fmEB5TraTOsJU+R+BD@N5;w_nUTq=q-xCynT~gC zf5MBjb}3GpD-Gu~DSuzXi{A3Jo$nctN(KAOLx=;C13dT1)hE}t@&TDYsWqexwsT1ot9 zO)SxlSU}pfiPg=vG&*tnC0$jP&E~N7_ul>R=6YWWb(tWAh^j10SuZc%{F1mB%DwI5({fU@M6vQvQ$O4anMu?%{b6+Q zlPmf7sz18Bdvsnousn#YmX$TwaQ7DFRIC6|0IZZQ7BM%Y-Rlkks&+?5MM@!%rA)9g z9h*MASl@nf`A>f7>%Z`ezxm?wYB}3N^_54D{?t!?Pl2&G6AZt8-g%5jyW%CTv)d$^?}_f_BrPzCS{ z!o3&L$|#jLl{V1D3S$cj+gy~0!04c(Nbl$%D#R7ibbqzJdA^*!dG9ygy?Fm>ztp<$ z2Fj(fKt8-|YsV}1>iyHYJ>Y7UV{?e)jJuK*>q7ADR-mdBG{72K$R0-=KXZTizxV1}|I#}jJU`L9o0HAO_4+S=WxS5z4P>Nb0`c2dh2#YLOq{>M6@u8 zsI|jd%SqRBD1BDk_fS`=yPDxHqa8MFrHBtTZ1OKPq6&UmxXlk2_; zPzwtCjWAJ5B@z*US*TdwOX$#I&oI>9rMK?J-Ix;V^2ua5T++Mr&VKbDW(lQBCy+AR zi3AZqT!;ZyNbexOPpaz8J((;k*U22aBd}utU7H+xzu6xSy|)hTs;VL?BBFX+``V>- zi`!+Pq6)Iy40oX(?hru)g%wKDrMF(lOP5MhkQSzSkV2ILI;*h z49WvJ2CBACSiwoN-rB`3;0G*|#F7%J`Cg<FatxUC) zQmDYsDgah(L|lkgX(}jI2@~idc1yMOPL9I5svU&cz-`kVsWG!!wvNFy^{R0_P&7fT zPp_d*1y+%0uMwK;Y8|~45FruNbEv!!dBi8a1|e4w7}zPR7d}s@?}S|dC^gj_xQPN} zkomE|%9`Tl@Pt%^L##6NK{ROc=t(1va7*JMp?x;%$7xc30oNja9tXS=hDesuzreuR)>Ge>C=e~t9W5rM=$ zE9}1N$UyX!aG?lmqakvxWh3(ORT*aj2LCP34nf7J&ZN7cNg(8QuI zxm!;08`tP2x;K|dH5sj3>L78QSwfaQ4EHp+5yMa#i;?DXyfNqr3Ti-80}xW5Ry`G$ z!aDf!X0tjCq10j0!!=_{e{!o6_w-Zb@~=ct*oBSUck(#Qh!9jo zk{UWbGYG@MQz$eoK#GJr0u7ur6$MERGz&be)2;C!zm2KcPQJ(XjmDDQ){2~CDy&;Y^lREe#HLy!a64JVOY9Wz5%T0k`(%xJ1nzqv9 z#=p+10J&mA9@GHwNcTR?y z%mmkwu^YDhwk}jy@o-2fT+32w>8jE?yBzxBT2$ruF0w8B^7;0q(|S^=S~;xT8~-zc3;)&dZDy?-(TA7)`Bi`Q-savZp+|zX zqKg_);vH12foh-@vjY-XC1^&!h1kXOuZb+P1|rdWL6k}n;OZdHSNXm7pZ|CN^jH7o zzy3xO@UCo1{laHn|8sxhNB;PiKK1x~_u^*#&2PP{s(<1upF6F1{_F)5T$qSS(OR!e zrLw3>Q{v(9NnzJ$3eyRdT`3J{9joYzwO@;NLGgQbWnom3MR2mzUC~XUg>kasP33K| zd#pedI&omCP(XlHsEIa37c_wuY7P6F_R_Zg^qcp8`~A!JuJ+oFx)Lq5*4jxwJ_ud3 zSMJpF)4FYXdDHeydM7OoCm|rVtP?~_2r(Gh`2*J+rmwUGGH*VDmCfhgTe`QJ57_z zi|cx_YfR@Sn@@l4)#n$_?=9yaUtUrHGq)}VF^OS(0TI}Up+cvp+rlMsM$uHcSr=vz z?H9rl}zm5R))K)R~1?iG-*V4o!u0ui8mFvt2FkL|RA%P^kbBpA_6HIMH5> zHH;US)U@7P7o$hmEU0CtHdQO^9{J^lgKWT}qCIpvt~(Jq8dR{3GzE77MjSK4*g3ng zCgLGB6{5n#Z08b2i77!Wh0O?3RcX@f0SE--V&?8X{EarZ{nmUN(?K_FH|1=%xxCyD zyf;HKKj0b%YzPz$c)Q`;#dL{tyDQIwBMXH<(AI>Rnr1b62bS>T2Y0bVYzhl+qM{LS zAfQ+tfBXAIHFN94p@^z2$m1*cU`1suzssCQEErgkg zP*SUo7yB|XYa>LMqUrdHj=uww$%q$gK$8J@0vb^|_S79taSF4f`Ai+p$d#YL_5iji zpOfyW$2Anj9%}8AQ4R0os5taaYp=j|DZ7O?OIa42s&=)T?9xPP*IT~~ ztF9boA|IK=Y6u>X_-kVGGhO$6ROHD8@!CN|WllMbYuQ{$LHUL=uGKcQw&AT!1h{eY}^#ZpYg~4hEv|ACHInI|EmK z!qlY%P2!z@`{bgG>4(O}yhB|g>c;&17c%WGQ-iVb zXC^D1i{@+39#PusTzV(2GUsTInmU??DkV~&1RrCrW`fgM&&~q3zS6*4$(e*{0uVLD zX7e=te2zya?kpF73@?9olG;pvn$_6X=#vj3^4eFfIT62vPr!sd{MSC=nNtE|`!Fr! zJVyUBsU=O{A{QQt)e8@hhIiKI*^P`rk9W-T8@?dkf+3!&lYJXZs*_qY{myhP%VlfQ zrtu?HU>xy|wMvZ%@RVNTwjNIAN>xAcJH8Hs@f&!I1_*aG3wcf2Gu*?lu?e?QM5eJI zL?$-?p@w08#+mqJP0}QUvl^lhekoQ9;Y44wi1zc zZMtd~BGN8A2}aD#*?$D<55i#UqL%QZM~{|e(_4S>>_uCfQM3$dO?atP`TF|s-uIp! z4+mXW0!dT0cw?xM&Uh^rW%yt}TMGeTF1>?^&L7@u$9DNq7g?>nSGqd;d{=>jJvkz+ zB>ad={d|Flm!+<2Z)@+}tJDyYiV6f0Y+Qs@0ZwG8M8F3heDwU|=S*>i7M8e6FRWPm zcYo{aH#Zl5?Qi|fFaOAwudXl5B#Sp+R|*E+Hd90k>C1PvubgjA7pjG_mAJw2BzQ*v z7}q!KFI1?3Ke$|9T(#F8o}6zKJprTnNbNEq<2a?83L67C1CBAwIjbYQ_i%EM?1jC2qJpJT16s7spk>ceeF( zp%bRlE$<4SZRoVpQmH~K6UX@+0z{-EHE1YGn;Hs5=!z!jQu=9Gk8-!@Yj2%DJKTBy z+41ry7i-%$DYcYJm#c1WI-@Lw?%&y59s1SHdhDv8%IK=nWhq?JzMFQ7HtB^~fGal= zdhG2p54QjDfB3Wi`9FF2|NB4w>h;x&?diF0mhU}%@lSu{cVAo{e)5mJ@#uWBJm8OB z9N+(Vr3dt2SAYIT-l)XC{`SY4%?=Fd#)c?@TvN}YcMg)Q9v{Gksq1lV+tcmoozts} z>)w^}3F)>$UAjPf7a~>|2WsZcU>UdT17BR-Tkc(6A7A;@y?5Su^xpSBxc}hZ^XD(b z$QV;;1(njIn@v;ETKIIkCDPsnh3#db7}UF$l7PL4xiAH$S(Nw$W&7s%AyM+PmqN>Vvk+p*vwGx^p@oAQVCv=gf0PqYO^GufF zXPq&Kp~^;I(#RL{j5YPLR-OQ5duSY(N3rn(B%+N(n;FCg$P5UjN<>{8X9asYjJ!Kr z5u&^rokxV2LTY%mPTyAZ>4}Bh7mZLv<0xSY=|*ChrjH*vMC4EuL~-ixVVn9_36kCX zN{HIP6!DLFzOi0$SqpZE|62Qhp*d8EKx8k2}9>3ii|9 zO>y89`XS7l!$ap;b^I73^h<(m#7Z$?8@6U>H-}dNr02v{`(apyKp6SZ)bUBeeTgXG zozFL-S0}$yj9oZ1U`85%F?r3fZ<6XXocZ|-F&Q9=v|QIv|J6B^@_7Xgy7kyx!w?{i zC3Ljx`W}RHJO*J@%yfoS5~Y+4ls3kN2m)vr;Sqi2)JNLp0PU%L6weHqbQPE*f)U4r z!i_Z&Q!-GMMlz7OzlOq;i3{sZDWXMQtZ>n z8XjAdvX_!iVf}4w(n$_WI}dJtLW;~}MFUOTmg1oqv2X|{i208OSz&pAsU{)aDX!@; z4W!a|YL47@J%>Gndv@rzCU9HxV(-S<`r8t046m6!Dc_Z!v7C@J97AcwJ5%GF|4*=i zd{`KQ$spy*gv?A%!RIT(NZLE>vE=KT%jJI|3O^puh$3SoTCn@)!~H^s+e%#KKMY9@ zLpU!r`TB-)zU4i~c87xrColoP(7xLus=2&0Wr3jsv6R#D|zj)wzTE%6DcSm@*c zMU7TyZUkf}B zB@kK|O?wNpkUT!yymoJUcgNcr?H*$7HIpW%9hsA$x$p{p|8jkC-9GjBS zK#>v{T~=X7H9B<3zOPV`Bq9c3pO{n$(v=H!(7Nx}t6T_v^PBJegMacXzw_~R{!^BNk_N zD<;PzK=0P2gPBRBQz58w>)Y+}>e=R{(^?CiZR*(;3v^*BgaR#V+}UmgJ>Rz{*Yf_AJQqQ!RLb?LTg7fe=O?umdVbT6 zM-@RaVp~)hHPnGk?#V5iC||DHgj&^h-S2Mc@BHjnKJ)6s|L1@8i|;;t20bsdd3Lq` z<*$9~`eywTfAq~a9&cZ{zxn9m`2DAQeYm}MQvTwXUuQ1A`Ug+8o1GRmf*{UP((<~N zyF?MBcU3Ig&1SpQT574swgRN&8Q!YH07w@V1;<@SS zwfEkC0#!2JgzYjcmQ59#G3KJ1ZDG;OF3xO=zb1Ae{NG)}tZKYjhX1k=sfn11)807q|sVIA< zw}>{;)^)v+O>1|gyuR>TJ3Oc=s&-beLKQd?H;^zXdllGwOFd^O_i_Sg2MeDU5pJzn z;$hl66&2}SItf7q-8yAb2rVM;QbGjp09!^Jgjg-zO3CuJ++Hw8=`)zRbH35+ia7vF zjAjiV=c#B!%v9LOJsXAN_te!9~8S=3NUjQDO?2BIHOpE z#9%}N4OR6fr%1=|7`2Pm!UR~oOEbsB$)HK>x7{&`y2}xPu=fkLADKapj+_HfAhsC9 z6p9~C*I<=cSVT96E~3?(BvT*@F;(1DHkD^$f+$2p30{TI(FRnbxdbCltiy4en`g&d z@%Us9jj2@C+@OddBJPQ?PmG%ef{5^g5K+Kb0wm#ufTf5;_sGBFNXemuXeJiJ#Ycz% zBw3SPQ(cGx>wEBlcpo7rlPJcVWj>!0Z|PXLgsp=H$;F(pJp$$W=6gb=Z!lD0>0j2% zYJl8%dc*OV4orxD(%OW!*;XvNdr$|u;BXKe`-XTayj^HhX&haFnsnv$?*PGh!i0)k`)Mc$zeEq+!U)p z6u&g8Mn=x8eI!sf&1jJ#;(+75f$uF})`w#v9mr#h)OqckPy|_%gp42|XE*R+%smjV z@oi8ega}h0=h0Z`Vg|rK2IA9uJvt+&m@j4XJL|1a&y6y z8y1Yr5TSfY$Yv0lW94XG@Ui7#{*o;ia4Cl{PbN7zAfQCbg0ISLyQ7W_#zu$5b5SAh zbfhubXa_v@o2borYD1#$l z1o`B*QfWFM!TgJ1n`4k6tdn#FhKWH3*AuJ$iv^|$XaVz@OkxttkcV+WXXlh}srJ~g zpyA@wMq@~~hdV9mqDv{P?fsf_QqIvyDi7-Lq9gs4#Ra4T?5Q`i1nya#t<$am6gsX^xlccvf_?i znXoz8uKQKn3KC^rmW7D4H4SDp&N|#aSfO((mtzJjN)-Wi8H_ELQ>HvDg7Eoc9kKXNA`+R-AZ=Zg&+g0?g?6ztg1u z^jF{f^uyDa?{1&G*nj8A^&1aQ@1K^x@a0zk`Zs^@bi3VwsAHS}8ov=CqgzJ1oySy` zQm!vS3x^}3RQn?T-PIp^^S~(}%n!*e~dZ$v%?Rk(d4uVBg z+a4eWN$biiz%}7grBr4+xMip)gUB!A6RAG?;03)XjhT3}+^gF=WlLNM6^2LL44e2f zS!t}Ww~@sAXagpBu+`0$&u@;eoGm}}$KL3Ik3T*fL`h)zaW@K4G*y8%@2a6@Pnzcz zi7^fiLH&>S&s*1ZJ$5JnYdBzJMtWfq%`7V}ApxdH}taaO~pNz|nq+r>m= zg&_nTYGznPR}l_RM9dPk;p~XUdx^5weX|}o?s~%G`0s|XAwN3SKr$ZXGs6=1Eb$GN zz1O`DEL2Nmr(%Hiaqg|z8r3|5p=R~|n7yltP%T}wHR()Cv5vP=2q;i*tx8a}ikLh~ z36LR3X&qMUFzUT_Md9{{5hdz z{#AD3$zL0h8vxL%IIjJsfq|u9Q_F7Q%5<`+3Un(y*|n*tS~DJ?5Y!87XvSY;HKWI) z*$1p3DxPZR-|_L2Z?DOMZwR@~(&+o9>Mf*I0Z1&K2OfgKAiErgEJi5lQf6jX>{K+{2MgpM&D4HZ+Dm$YE{M*%QA$-);`p`^uZNcK>U_}pzw)E+WxAjybK zLk?bJo|j|&;o!oN@(58q2-IN}GAI}nz~mF=sYI-KdwJE&nj%ZNCu1^5LrO#F@25ef zMXVpjfym8ckdQGXTcD62gu%t_&*az!J>tt7CT~RS`7$4MTIr}ZM2Nf`TWl|g>XJX+ zD=y2o#MQUdDlF^REjOySPsCia5}hXFFe#nNt#w0$Z)xCXu7_fM+{>Fev%l&v2I1E7 zt)I~4fRl5gU_O8PlP}SL$B1brP#Iz~o)&IU$Hoz*nYu+Er&N1-0MTU3LhAt<5$*U7 z!OHR?9_v3!$34`+%X^Kzu?0+9m-06$FT!fU$Op==k#C}S9nFq%0NXqch~KeiiYgQA z(ylK`%sYne(wN&`ApE$0W?RWLPI=KY3J5k|DM%eNGxS zx1yhTWNyR|30nxs6@yxpVWI>86r!j}?WJ^SnmtN2sY=RR%BHSsUzWNa4z7+w-orF) zq1!u#3K(64EyD!SO%J4md-w03+&R6uIqZ+ec5a+u9CC5-o*Q zCc~T)AV5(@;ZiRH7goSU#u|y%?Q(v)TTZs^X1{-S1p=3%O;)VSQfXO^ts^)-9m#&S zACr3@!bb|rHqj0xD)5G%V0Cn&K-Ms{ku96$^5W)$_n$TqQSHZOc{Mg_g;dhZr%&Gb z=I_1r)>}XOm;Tarx7i=|wR-DM6AG_$93*sCJzMy-`@6?y%W0*`lyg@=EoqCw$pV^9 zk_iMbQzw4s;`sc!zw!8FSD{S;nuj}3WML)=^kn)B<1S%UoUMT`RLRL%g#cDf0z>;#m;3iP$BGyof>yJy?;^X-;V3soo+NpIAk zjB1>YUE}JW`X{QGO4)E)wJg{~w%6%Ag@_I+1Y%ZZS_&7YN>mt2ngP`<>uXzjdAHnj zeYV$UN4@M&qIJc#(&M|!M_29YARbH$x@B@D_yAPB%ZGihb-e)^&$=_?OTp1e4G_vy9h$-}eyvp@WD z>-x3td~~wifvQbCok{{jbCO&N5v0rUa8Qwjm)*%`vt15{=cRDhyt9|y%4(P?G56k8 z70j(SOJ|oZB)EKWT~Br==ex_B_W3Wo_6Oho{;E=_P*nnItxK&0TDve&VcOPZv)K@9 zl*X|9C0ib5W+F*|KOzyhtpv0b1}wp!YAH-~IIdklj8cd}wQwaWl`AbzzWZ)dMP*Uc zW!WwpJs!^%CSWkvL?GtEwQ}{w9VS2|KvBJ0nc8|!RRP&I(X|#X%uV`1upw^D%4ke0 z&_E3&KsS}+Ft+e(wyLw$OWQ0rH#gUZej=U8GTn%niMbF*WGM>PI6!d`w|GY_vyc_u zw#JvTcO|mh(|}r1s`1sHzRI2i7ak}azgtr_wmvYonT6Prl(g|Tny01!Lr)8x)qfu3*6#m({R(AM6M%?dtx?hWkVF9Rk&L^Z+i>(w3|Oz}Ltlw`mV1I$no zWnu&MU6p`NAaE_kC{M%+5Rs^`GFvtTk*JFFYHeqPrar}fwCkvcz1o4jlgz{rc@xus ziRS)@$#R4f>|_R<8>SH>1xBY>dZ=0(5P(-_`=OCMVXHwO*3o{j>t}0DS;R+vv zWuWT1q=?tu$69uV6QUk83mi4M7Q?W5bs zj6Cd3=tRc*q{o?e(;t)&F=L@&?HrjqP#nC0J zl^pGxoC^^?G6qNrG}YE|v#u9=UYIuvZ7Od{*;Q86*3m_+X0KUSva9WZaUHQn6p|5| zD}h%~4=fi_lr`_2IkDWR^@0 z7$I^BlWvVv6Q4m;f0%r4#|BMWjWNd{&0GgRq?ut76{tO8&mdHFSjDjzV-INf z+2lszqp`^dwKf;xODi_@9&ve!Nvvc*2q#7cvt|xGB<)u9uCY3)dKrA)+RgE~Np7NL zivKlm$}9u^FbZbP&0lVZPk*oyLlI*CB3ed7AhE3xU1)y!3DbZGo9$x~<<0}}^ z^)TSm+ml?iF^qBzi7~<^6OE$pVeL|drzelZrF_r)#{ffEp)t;g!zL0cMw-+^$k_PI zr0vebQ<%Mhk)}PS97Q?^|Mo4@6zWXTqA_-C$Q(ZTRGW@%am>V*fkL3CwfA+KEJ?^y z>SNlO@y2*)F1~+7#?DQjqgc9lZG@|_*CCU!Y?EXGk)58z^ElPY2mYaP=5vXH?aK8I zy~rJnrAtE;I~#(NYfGty8Uq_jbz90*hmEK4eD%4+FAifzGwnOYa8nu^O*2w*e-Z0D zOhV9M4x1=U`PeQu!l{tM-%r4VFc#H^I&X7opSzSn>%~f9{%b4&a{Dx%tGRKSE0ih@&2Y&SR0FV?;mkYzcj%JH}s zuFFz;YrS=oxMU-U2fVOiIKJYl0#ed0Dqy<+1}C$Eh>*Ag3RRJ1Q}+Ag2k(D)JRX&3 zU00}B?tqE{y;j~|UA*% zr&fm^lfAHW*EFW70QogTh`#q?{pg~7`jN4612yUFwfx&IZ6f0{mK)O*t!o#M_vP~f z@phVL-mY6WN#=gUaczxs1^xQ(yz}?|(Z77>{ij-ZSIespU;4_I-u$UAzV_Ky?jBnI z#_zp%=ltx|M|UqSF99%7UpqWC2eyNvB0>t4eq?Ks3Jb!Ohzba6Glkz&K0nz$zIU=+ zxH1?@Dj+bSES?j0Y$_s6wEGzf938WA00KYng%S4fNHM~_eFqT$667psWqN#$40mk(*Zyy?u=Sw`7K+l9QCcv%(&xaX-Z zLHE-8`si%=-~W3*{;8Ml{b&F1moJ_@KRvr6qQCP8AAlt@;lHOb&>!zIDJKbL%ECHrl#ubdg zal&J5-PE?PjX+Js3SenhX$N`o{MFrZx%Rtv?|klyZ+`9H{MPxMv%WtP@v<-x?4mpf z5M4HfSi3}f+^`4cgT#AH*)=$WfNFMM)$9~SUnQtgS5@Wfo114B7hKpY$`#(!`r!V( z^UbCz7O-~hD!TTg+;E}AS~ja03@AWMm8mi@p?X6)NZzgzVC}0TUBK!jimuX|Pys8G z5Sq%dkq|Y77_#@uw+NRROk?6EB-D`o{%~=*?`^|`!nKqF=28kX*_F?=wa$g4lIf`e zpf1u>dKaiN*|M5lmrl%fJy^X4Ct0UOvHwa}6_JeeL_IJu4n&;rQ|TQLSS8BfvsDS9 zyxtPkQMm7zh>|E*^tC5EErvA+m6^;j5TD&EkIzq<%3EV`hMl!W1MZDNVmm&+8;Y1QR4!hjWxe^iq+PnHOHF@6ZpuOkyI%3iuU10%JaJwX~AdQ9_>fMIPdKNP? zgRE}}6Ci45fQsbNMjUM>H&Bny%?{YSPq^*ZxXDW{>5j<^ICyrFyGIQ?OwKjiI!7MX zCt{FHSV&Yld(HUV6!HeZiWn!rAqIen90UV=>}*{+adI=`c@XMZAo;q0L7K^?VHm~A z;30_yWJ0RRVazelLXnyCkwup9Fo&AUsX2IC$Z(4hM&{=okxOQnDL~voy~{xfhhCX> zl{U351C;^Gh{im(J4%Wx~~ zjN1ezC?hlq6+`^KP7{ZQwI-yWMy?9-a*f%<;Ey6GiqAw8GCpA2O%b@6&2>o~U&OCO zG!`6I{O**4F^$m^d(tlYa%GS>6LtQsT!Jb7!VtN^-`&y-8t)w;H&I|ukGiKoa0;e# zohF<+@!hd+bAV^?b--hc+}g|`^sRteernv_Hkpn2hPK)>hvsHrN4Lfl+ne%BF~T5c zRXZhygu1913$$Vj&X_zOs_A{db zP3cO&G0_3J-oplt4`brLY1XHqCd1tLM(Y@^N4Tk~QF~X1$onskO~On~q*Bg2La^WJ ze0?ZrFfcwoinI6GvcZFne6u}LA~E;Y%EVCPb!qWJ=VJ_*eldQ1FxP3~++|LW0*0JS z@10o4Fl}LgM(nF0iY}|Jk8p-RokcEYN_nngJS9$;b5|#+KprKI{R(Rf4Z-t$3sW;} zV{m!?h2PXEav%-Ckw z@G<_7o?JiE)^rjyO=r@F^l*Wj5$mCoNc-n~7i%e{E>(K3g$siq1qlNHsI{SYq@y_j zR#h%;WGuWXwLE(1aVfk%?0c8Peh*S6(ypFX1TLG+=497y_R?BqVk+9Y0_0V2KrqGx z#9%O>Tna=)`*4JYT^OormB?=P2i|X9JbixL?<+OVpMc0fs`-Q2wY&EG35Kl4}q z^5=f=2QK$lTzM4Fj*}xxeE}d=TJCi7>fO!xmX_kk!Lh|SX+mrY@bx{zv25Eg&bnvhK z*7yG3|L~XI{pdxl<$POz@bjO3^QDJB`9rV1_41jX*w zsW$0E1xli;h$Ih81QrnyVlG6)q-!IQ!gO|8AKckJyt~^~DgdDqz|6H21ys-Iy7qUDeBl#Z4x=t)}qmClGW%i5iits#opahW`4We(Tl8cm5y$ zmX19-VLg{8wHQmEU>i`EIvE>n8k4 zO4eS3!d8=`N;kfwH`h0GEL_U6+4SDQmNmnQPE6dHO;uGWn)vQ-Yk`8vFD%>px(KXoFOiBeVIkCo z&Ndqb388na9sAy|u8$Wt`{&oI-3~UOE0hOuwtkjc&v8rAI*@w!A!0mRBqu=CO3PWk zt!h&h)#_xM1{_x~nphSs!hAT|Xd;%AI2}ZasuHu6t1~W)nd2Ut<60UW68_LBv^zvg z!~>O4WhNs6M9Dcq)aP`WqQVXws-={M?NU{h=PIASwxAPJb8p3u~Xh=LMP_|;2ytp3b2 z36vPl9Xmxn4v{6>n%GcyNQ|(`Wpw;+DDDV)rl`s=8?l8V6Uc*qDvsXcVdKy~-i#RD z_+8^_k?1p`g|HtkKjHT*fp!Y~16yY-=z2IPfjYT`=a4)9v|EUg zCg59rTii2*jxPeG4kQ-Aoc-O|1y3@i0DF^A+R?-$sBwhmOBnfm>VlWxXYYv>JX3oKbe4zbq?7uiJN70yk%0=$+I8~Go~wC!%NH(spB~s z$+9j2NrBEIje!%9omg`WEbEDn;f0JT0`UYu%1_#CZ`I|W)pR`a)*wt6*mGafVYw&L z^n?>zXr1oi=MJ#wOJ?m(Lq)gVJ24IQXSsdoY9u>6$LePdP=`BeZY8Y>yocvf7 z)!B9-X`tJNKQ~w=hl@!;;|p?*E@^ZJMgG`yc4OCdXv%m_o)SjV@!;lMbZ3e)_BF}> zG#i7kGAm`O9g>`WBqUY!mO}U*#eU2>l{-4Y6Ck*ZPwaOX&*AMnXDf!7a;5W@h9{YZ z;mZ}O;666-IZcnDY2(QS*cZY-F@e>27B26Rym-s^<$Rr#(GV#GP;GF%_w9DmTZekz zF}G64a=dQ4*os{d6}$UDO3Ymdj0X?z@6PUA-`o)K&CShme9DHp=K8qzPRN^H&N?%5<)t+}T;53UmdEV9?fguU0Q9v> zm(6Cg-EI&2qx4RGux}hLMT@LFo`nEi04f9)Rqv)3M*$x6fmFmU8h-Tg#pUHSnAX-> zYYK7kl+LV7`s90maP{oT&;0z)fAzaQ3a83eee1D!Snv=gWc&C(v-<-<_{_G6fh_}H^dTR%mf?nX2tA9 z96U%@QK3Qrl&FcWg4VQk?^f8>4wAB|zxs{u{@uU-&p-V50^8+esb7BUvp?|KgCG0i z%Rl`2$KQGX>i6Dx_UPe*0{Qsa1usPf(z^<}Uu;$ph2!$bw6}X@3>NJos-0BMHp?sb zPhNg_vSk2WJHT9PDV0^UH(5p2uDweD$YF6c=o^h=16L>VHRbS*t_6XO!rG;EP#R{{ z?Q`pvPfAo!7?rWGl^It8?i8Fc9T!|30O6H=}FV>6}I-o30959=lBb^2Ac35cl> zuDZjJF2|q#;a4C0hkx-u`MbaHjo`zUzx#eytnH02e&*iku7dd4)j@H5e7^bf zUw*lXeCz$^yY0!^vgNpE;&{0+^PoK(Yu8fQ6r^lRyJ~hbqluKtB52Z&t@kc=7g$;+ z7>z>4>?ou6t~b)3yx5%XHrs9O^$Tyk@$3Kk>t~yd+MPs@sEUeqt0741+M_Ic_)8(O zW~qf#IBk^OhEN@5pKhTQ>&4QfH&RfZD*^zHYct-6iO>;YmY**A-y)D^LLnIO$_gq) z0zUY4KkJk-+4J7*LMRo+iA8riS~m2~fu0$y#Z$HQ!K_T$bFCB;f@UDvL1b6B@a1rYtUK+KlGR2WNPW@SYuX(}ylvvwOK2F4Wy z2`NaFj;m~2Z>_5`t1i&<%DP>!99iEiQ)UYf=8*AgnJw__zMT^9wY z2v9V5&Zb6En{>~u<46w)`=Y%ob1^UGO>Cgv?A0-iwXK2l&cveLxwQ9gmtk!Odl#@X zN*w0|R-uUOGE~3}6Mn$6ZplLjhN5_7C(x0L9~oU zpa7&>4q&XF$7hbV=V&dL6hZFb3S|l?L*fEd*j9K(=@3zxggb%)d#qca9D~Ub4`ZSk zXX-2}AufZin5;#9Abus|h*+J-$e|Jhv|5m86+$K{dBb zZ~ba&LrA>;T_c5){6iz=oeWq`Gxk9d3`go$3Mu7-J_*2F`qSR0$8pgZYv6WL74+d)J!q~dph8X4;3Bq+x)=7O8J^aVC zbE!BwtZP`5AQ3}eDHCuhCp(P)P{YWc%#A=W>n_p*sL%*_kya?MYtE6vxJ|AK2)rpzwvb}S% zob2|OSM7K#st~cr3xd%*#%w4F}4Su$X7_RkX-D+Ft!RXn9H+gmlw}p zprEz2uZ>8fy0$DX5`l?}m(N1)?X=Kq zcTXOlEhh_4nw6Rf{lu}khN=*R`Gbq~ooC0F@9xgFJWlpal9&Qe0agwvkcwR+QX&zE zlB#wq{a}fcfD$#OF6dpmsCB(vyNfwQT9=d4?eBi;$=~}2zwqSakLzxCQs_s%@aaGH z1FwAbtyjPBsfWM!?(^?_@a(0B_oVlmwklI=b`FN#E!ASgCiagYPQ5_rD%v4(vgL>O zPG7rs=X6Wj``UG>thieI*)z6^(ROPxpgp-ehrR@ z17Eoqt3o7YK3D37tBPuC5LGQWT<-b3XPYeeY?y-rSYpIA*lql)VJu(qT70)gZNsu`xP% z^2kfl5EJrZZbmIpQ8qHp>^f`YBQTNOh)3WTRZ%WX1pv{8bw}70;|T3A+@*#hbfo|= z1M3kH(Xy$V&1NfWVMt{wMnH@pyDV_yj+~i_h;&^~c5Pi1YAmoBIw6ICiMVj(vZ=gO zF2qIU*xIozU8yUr)=EM&YBN&r3c*clht@XRN<^odrE;l--gtQSF~3l_<(B=h`@kazX}QzXAG!WoV9zYD$ zQW*-dlAR_}PymIkG=y~Z^BVJtmLeyK1vAG)wOhWT4b{)OY+#!FS}0`2Q`YAhvc87jvk3+eJ+d(baK)=!{(y z*&8=4D+T_a?5u5y(KUZ~QgB!jD&ndakry=c?+T0J(B&vXYpawb9dC(jtDATlod>Q! zsc{4nL5T)8f&rp4u7raNxY`nd;Po^U<=f@!NlFBc$4E74N4?G zV^D`97#o@hxQl`_^qC53nWh#Jxf~eA^JJfBxEkUUNMf?L@t8hNvzajk4H!;aYF zITbX2TjO_9!(2||tJtM67lddGt@6i4W$LKb>N_-SSFU-=+*r@p|5=vc-jGvRFc>aB zHL>Z%;cLR$c#XN#uy~qJ9WW^VgaORWro4v}%i~@9(&OA#D;lb(vEymSLy=?3wtPiynxiV{gk`t2HCYcw>YbeQX=aC*3NtBjSuBJ^2^++O)_P$p`d+Lqu-83e z+TA%L;QH!X*A9WQiXE+z_U@Ck`&Oy~=wZJXS-4bYW6h{%?wdl?8mOX+f-7-xah=G~ zA?czDskK~QUVrrQ^RCi+Z^x#+s|pbyo-Vh)zIg9jzx(jP{XhE`|I(vJk1lU+O59>q zRbnu#1*cXbV!Ao5koNfA>C1OECkqe$2tec*ryN*8HrGM{Si$A}%l@6Ghezkz^HZiM zxnxOW3WC_2)F?-bZdARtY1w_!LouBSLc=F;u z|8M^3JMTTMXWIqz!*9OvGe7pZpZ+#ssn`*0cwaPLI zZLJ41VlY{&R8yxe1oYiPkMEzo{9t$Iq!#G$&}yNx?PjyBs(N#1$JSdH!YvI;Fr1mo zxu~DO(H4cxX5RIM96k{yOEK92TeXNM!~6x;CtcT$&Jd=;RDy@uRo+%S+~M&F-hQS} zuA4GG9qzXm2JQjw$f zrrXnPsdRn4O4ruAbi3+pDVAN2?o_;cfYm7@Y9hkmLeF1Z?Vh}N^_Bal=ey6n`TEx{ zuTM{R8>TzwcOE_{ue>6))U(swQtM_@?M5&IwQ#XJrcgjjEd+ECE^LFGavPy}wh?SE z0Z@U6B}x&1Zv3`dgFwsE@+=JJj3|f$59hcLDT;$A!xb8JLd-O3{w|4ic0-Pd*c**B zkPHt#`GLeR0bo)BO&AEeFrV)>D5X}mo3tkEOx7$j;{4$x&3HqV1S(x1(z~`UO?qpR z+XRv0QCb57TuRsVur4pI_N;O+2N5DqAZwa&x@=!A_55sm|7^P+S7!!Qt+8ie+AgJ1 z5!J4mnQl4b$nsD#yJBY9v$5h-FYYU+Y?@#eCL-E0Gjl1#WYmrJwRPzv)lOV&K*n38 zYfYdOcRB-iE7S@)5>!+z%~gcJJ;0XjC5Os0v)%txg@C<4xZUQqDwT0QpfIkGiL5?j zrhb!(b^^m&aKQU-Lqx6pn1m++yq6p^S0=OJDl&*S4}NAC8*DmE>2VXE;3+Aa+WLEqiZ1p(!Ji9 zky&Y+O_L1lL}fW=VutmO@J=&SH+Ast>6wf%DVCBDtxdS_ZmFAs%AT!k4YDb)v3cIL ziyWHQ4D>ec0wJ-~;^?x+R7CaqaJanL*QGuQ-|RAj7dUN;)lV#r(6&Q4u$kATQbzNMa) zfSz)y-hc=2TB@NiE_oOm!3gIyRL>SYMRizj8+uGPR$3=`Fdi^|Jyrlj!))fI-J!>} zzZy;N%fjI)O|y_XbtwaWrG>*q)(^xh%dmu1ofrpe=m9>F7hW{5O-> zf>}kwcu9!lx{buv3FRZ1l9)a6W40!wx1=a_a+ueM+oMAD^zhu?^fHQ2nM@E&-Ndki zn6{LrH4nRN-?k?Xr*&(IG>WK>_Yd=a`vGpibhZLBE0T844Vgr#O}HT+#2V(8=J0NP ze=MVKVREz6YK8XE*s!o;wkJCBye2-L@}VvU(_A!1X!?-c4UPR8>oER|R^ZJ5a#(X51pfFZns6zf5H4}NOc;yP|#trW*N=x3$r}?7Bk?H8j-7- ziZgsyCTWH+sV^M)DdX%@QtgMFc$i59d_n~fjsUl|0I{;^oiV(v`HB=qt@h(htx$nO zB`}z*p)ZlB5CdW*2*Qa@mEr+CJHN9%-5pwEE^S?JZf@*?r-*Q2Vg{A6EOobSYil>h zg1oe9%j+x;Q7K>|D(oq57B3qoxE>p^S|vPXkn*v$yQj;&d*|=J(=I={ti;e!JvB;Z zlZqNEXDf3&u8QW>-R#CG#B{*wR&{|g*HVeutdilgpe@D`R%PDr*N>lFwk}=dxE@sm z#>%N$>3QkxkoI!E9cw0C$)N) zKex{s8)zGS%Ldu3xjfnH+aKQCJ6#@}RY@`gQg6`7i(JKk{>5dF`b; zo3Fid`CH$6dVY3(bvX9kr5i!0s<3QLvGx(9L@Z5|q#dO&GZBM&>s#W-4^Ccve0q0N zOF>(kD4m@yC)6$UZ0y9reSn8Dt#S+nc&5L?Sg zww9x|2Ju6(3*4maZck1&<-z%8Q+d0w%KdCAVaWkRq)fZDZwfPMDfY&|z0fc^>fg6M z17j%aNQAAuvTcLU)fU#C#^f2K;Xnt{QDdgM7A96HTtJTJQU_gE0H|L8O6|tDvv4aD zgAmnUMzEJI+cA@Rq7w#bpD_YKd$;YiOk_5`-;uo%*`4(ifPiuqPFr3TTi{2`h zO-BHQaxI5dzxlnV&#w1pyIn1`EoE6sDP<{C3vr=Br4*`#?Vn98cg_||&$mQ2CSnrp zVwE&iz)Z??d9&QTUd~Q;_wMdaxRA)QuqX~|vt^v&ZDuzb%yJiI{))l|C_Kd{DfdzG zjr^3|p-p^qLq^R3t#Ny)i;XY=zt`rX5SfPXlV} z&@w*;A+;*d=iT2^1lh50-%_A#Lv+0-{c;S}WMX zDN-ul{3et>Mn4Br;Sr#$&LK}+$f(61(B6^a5Qf!mC7@JL=H|LSI zGn0PRSHi``L=~B4m%&`(t%&F_yyd{jKKqHMaGRZT2`P?yKL}beep$V^T(AS_8FV%+ z&Lf8`08V z-0eh3lLb^e2pgI|@qIMbCbdSVX{OZ+W9UXxrx&Hz_-R7|2Aa$VrveTqIg=K{+WI>~ z-g5`-=Pp^3wXk8htl4WuGH2wjjpedeQh1$E`q;5-3Oq?v6gAIHi(H@B9{++OTbpwF z6cV5ql4&#%&(l=FJ;2eJcVdA^g$pt#K%`QOuK{~=+}X?fun+9(~}Wa@MK>>tJ0-d z=e5=;#vqQ5z2sOpwX|4fRRqi;%1gO-?_N_m9@pKnJb!W34y$&d$`BAkRLfF{xwn42 zzUjv!Yp_Hq>}uIreWgZ#Lg0}j5mE0#P|LsTt*3C4==HNpIkdyoffP!fHK2-a1%T`- z4TZ1_D5_0v5&vGp1Z0)%mb$=V9*Q>3L>eTtEkr5QyF7pPe7`>c+S=OJP601OyQ(nD z#e3g>_Tjrf`Dgy@pZMvYW)dP^yowMLDdklT)mm8|RQbR7Z-436zW(j9+f~MAUw!GX|Lj-);#XgL0nw zvp*i!QLa=4GFMd9agSoM7l0>Hq~OBt|r( z98hOs#Nm^-@RCy7OrehbFEZ&Ei@T)WmUz# z;Te>`jQ+~~-T&cl|G8x;|M-9UH;?GiHTs8yum5)4)bgW0^xB=XrHj7%@u61w>Zk9$ zxc<~X|N8efyAuH7K+l2}o1ucej+>>DDA0R9UaY5g^!|f8A3eP+TnUh_fQoEXRiax6 zA{o=fNdP9Coo*hze1E&$kfH*QA8ZPj4?eyIY3m)95Ftn+nu&TqTma}wVwL#x>iXDP z8~7#7U2M3jiX|Ail&ka60HD@Y6KYj1#Y_`tP-gi&?g))jbGPn}Uu|b#(Va$Ekbu;W zAee}>5E!yJucda?t&mnmvEU>TU_>!A`RVu%DQL6Qm+zk)#Ba}8>tDM-%uLluL$x|? zb5NZS)P1o7v;>3$Z!%yN;VSFth89jWQM1F+>ryKRsfwnTRMC_7fUdpL3!p=$T=UHwLj1YtC}02#ho~ ze#b)@V=I|U3G_;qLY7(14%fO7(Bc`ks^-5)K@edgx2^UzFXrJuQ5>~{Vb=^GU7)&D z&Sf-wD@{CFL;Pwaj_3$tO}@0X22f?I%w`=JJh7FK(1x6=9!gbF)~cNF2LVoh;<)aEr#kM?9jz&l%WRw63OwQ?<3xRgS*mdbSh zbobV$?w+4i6^Scmq`0nnSXzLQWS>cpZ`w+*rf%^dp0xc8ghZu$$58X95 zpgP3WzweTnh%=(tjD8ZxIt=v-%K==S<4vw*L`M^g;uB|#M!i7XyVfZ+)kb{_$j8@X zc(Lj>1rfBP+_ZkVZnFX$#_`jr442uxt5Yqn#GfxoQemNj@?I!L11@;?+W=vyvSFFQhzYTQ`3^=lDfb+ zX~M(8QOI2Y%J{a?UTK{u#}MyO>tGNO1!<0Pk_2Stlv|UxCZ-aOUBNk3MU3S`!cuq`rwCZ(xNMl(?h~4 z8sr|~hJcL)bd?Cok{soyv<-FF1j|qw)rZCs=y-I*z;x?}N%v3=H~pg#3bAtj%Yn>X z1tuabRuR5F0p*Co8ih`U>9|FHV@|Nt$wELu)2tA{5UD=?&f(7TmlX)|BSy?alH={J zAw&IAm2C7*ocrJXa2kZTK{uq#9dRsej?2Y0CqfegdyBzTB-NLw0#1}9o2h}dG$$RR z5{s0?ie*2BaJrVIxj|@gIG}h!{A8TNIL{K=htYN<&1=m0*4l7zdNKIAw@yYnbF8qr7+fm9vy-^KIZlzJ(tfV)-L`&eLi;0 zzwZK?>}WZ%IS#003!KTm#0w15m9ZvfXZpR76J9X+ISYOW;fF zG1s7lkfcgXW#tHU-(NufB*c>&HiRv z7mq9aqK;X9E6IbK!x17c-935fd^ufi0jZS5+=k&OpoTWC8ou?x0ZK35+p>BwqY(hB zCR?H*p8`@DRa&gWoh@+_y1H&RM{5OP$tF(|uf9=t zn+m+~(%pam&;RJp|JbKqI;n3z-T$Lse|y!<< ztF+!*(+>2=fvANxrEF?pFHujsrEW^8m6n29w17+D2t2%fud9#TzEYkFXn8cA%xJpe zzj|8mM;>oqKCQq1@$sg~rWWF1H?0mlS*JO5fi^uk3Z5T~RhP$imjCTv|1;Y47k=^A zm-6uH>hkGR{>E?D-FEYpw;tZVv-C@R_sQXNFQ5ML&p&u}b^P@|_;9y7k;ooZ%ULEu zhpMo(Zd9nEcL7LL561?om6!;24HBUv6pq1^nu)Am$97X+d->s=ySpaV(UmT)4);#$ z%jfmk3%==%0`2F)6+o>UX`n{R*sVSS7`Waa)>T?R0#*?z!Tdn1nlQp3pao9^i!tn$ zM&9I%ArkzM_y%C87@Jx?2w5P)lk*Y;U1Yg(U za02WZcBq7)041^mjrg#FYfhWE%OqkgqTcFSKuvVtd|bV$YWyYt6YHyqwuzXi7Fw8@ znC&JnsZ{{v01HviPAMRbSwJEWKE010($fuSspB{_g7(;Y_$N#(Ai)`_D#A}O*;OeZ zF2uPHH>b{QKkcf8Dc%T2D@*|kU?s_-C>wc`6LbtYbGZ~~v~WoT6=$9_^vb6*LUPB= zOkQ!(cn*S=fX+lTfP6fPGO{svZMvmwUooL|5$ViT)Vv-i81_Q?Q$kQIssdy!gCYLp zTgA>YYKTp+BDk9EdSbtba<4R&U&*iYIs7A1230P#lv0W{JxmEucNYpPTdr6|-DH#4 zuv=^Qch|2!KDo2mNEdH^8zQo*T5_yuUM8x<&m&xLWO&QI3_KR7RCSuYOK%=vBg2J( zQoyxo>fEfDEegs!V7x)sTdkkt^Mzt?(?IG*!eQ1~?v8oYLf zCutorNDJ^4dK4Sx%SqWN)?_iJ!nuqPag9>D+1P_aK4xi#{iZ3$2 zn?Hk01VhBC@s&??Kw}^17*@<8CoqYs_o~l_sSB?!k|A#j>GBu*c4#bvFOhvVBOZV4 zpu^G>1WPikpbL6h`=J6#c`ID~%nV_k5tp80JfT7`G@7du%b2w=5wEaSlC*KiiO1ll z1%Zz6(~m@v4hunKWZ;#{p7_LI@pV>pmOLF87%;B1Q`=?sBA@*O_XLGi?|YdQko zOQgtPzP0YQB{T>@Rd4_ggwvahaL8`>n^*))BMhS&n+Z>CkF7yIK2P$Xxg5b7hA%*Z zyD)FQ*VBZjRUTjYhNe{*5`ozH+#jcWU4O!$r)`_^@-%iQk4b`in}{$SN}X;t7Hu}a zV|++C@X@B8xy(iOTO+I|9cnwq76Xo-+9vQc z9vah1VGJP1sq8K)A%xRb4hNUZJR<}but^au}gU5~Oqa*Joh!rJ2cp_$5v zb1V#10Z^D!wWC`{KkX{bu7G;nAy7D$clU1^ZrvXMKb(?j|b@3(~>FqUz9uNf=Iw*bn$?@i> zZ@zrO=&BHJFPH!k8Yj7;{-tI`IlwzF077&WJij`ut1xjX>?NrD^(-pAixPE_!?8j8 zqepjt`PaYsKm1SsifXB)eEQMdzwvWF{_p&;Hy@lV-+g}gZ~pb$hgNFA+M7uqGiw)O z&-F{QqSC$Eq}ZbC`N`(>N9PaEHGiQ+AJ)r5JG9=qN+gX?+_z$8Qfi$<^w@hLVn$)y9JSC|m`NtKfy*|6S$fyPN;r-}tjc_-DWPYY!hje8J4+>DPX1cXqmY>r;2`o^77KIDY5D zn=ib2@~6J|=;N!yw?BAsy4|jQ_hZTX7mnenx`%X zS1d!5fThrDFW-N7|Mak~g}I9mu>v1{eEs>?&tJN~d;8tzOR3%XJ!U|qtMSPq+Ix@N ze4hWtfD-LaPr8Um)A)?R!AL70Uu`BPD$HaZ5}1i8N;awj0@2>s$pfl|2?SOZ;$jz2 zy-%duQA>iccBR9lJ7gpW7z#3eN{N+8Hw7EUDzrdN$(g_fR9L#3E-S7tmhq~ps*&!Y z1QfPJHgXFh0g%(d1r}#wUMOrK!3ub#cK{+%HRIq>idknrI54)WfXVU&Bt3X?Pau>6 zA~1ogwO!3pMqDd%VO8o~yTB?sHT$~D>R?WI% z$%gT^R&h^l3*0z__x3AnfTuf}8=8tHE8D7a_)#6zg|ftqs1<;-3?p%~5mZ<2p3*pK z$w$j$B6qSB-c3}Ai@LW_fJ!jUr4)-=dTTw#XPJpmwXD4iGfXP1nnZYYWvd43__izJ1bbc9fW%ykEHmR!tO+=)KvSoVuYAMF|*jV#5)c>S+bv;jD1|=|g zk`w{nvx(R$!V^;Ob2AdP5~+BBKlk8f9s&+JuayC2niFK&TmV*k;uIx~xdX7SBJr6K zr0D2C9Kl(P(MLh!QBHKKYBb-77}J+MaAd?DnXy7%vSC1N6F+4aPs<*#X&6_w1i1VtGzWD0q+>Nh}a?Z$w`aDhEo< zWzFS^kSx#LTrV=@(Vzul4oYLx@lcx6p8{}dyf*_c&1Zn3L63%#B>v&=n>q7H2PY&gY+*I>W4#>7*2g-OXPdq`@uK$c-bUb()N5 zf)=D{96`Q}SDRBO3Y$AWWC)_>XDN8PWOD)@$9YK*oguZiEhlCPbC+n&$9H#7-7&^^ z%sk_0ghXM7lM4twF|{-gco3JAeKm%Er->N>4JL26S57NE;Mp%rF}H}Y*Q-tBwX&k!coRK&LnrSu7Nc| zS*Dk!-AZdYv11yRO2_v@1O|+`y+UE2ri}~2NK#1?g}8Sy9*h$G4Tn3vm{fO&OFBwQ zw+M5i&WH`+^}R?=ZESNgHTE=#-JG|b2yt5Lf=>YwQgQ~&qcDGd!sM26HoYnIkzby( z^Wmk%%dMsS)Ici3*QPl8mZjiLn0i8Cz?`m{I}!36o2lU;kkou#mRgvOtxp>gh7uq{ z|CZT{PY4bv==|>8?QVO0IBYkYwyu|#SE^cyuQ?GZQQd86sUSUGUQ_SGzQX}fh%P{3 z3zT>|o;73!5EnMC&R|Dt#uG>|uWs~g8r~Ek(xWvbMAJGOD`$%@+IlZ_vurk>ga|g0 zp#D{rOF69l;}@5Q<4Qzrwc5d9cT9SFd-1)uZ=OH<*}w8ve(F#DbngeYkj?y&+c-Zr zX5v-){;-}@dhP!9!D+3mVwJ{Y>2>lz(XJtd6|3_1U$l>|)=xh=tC14hb-wZdt9b`c z3Q`3G-Zf7_;{EfW%vXp0?DC+Br4$94g=z%j3A=R5FjDAoZLRm09-RN~x8M7({>OiL z6gk{XhSsfAuFm_wb~C@5SN2`ju~8AM1wr*t_jJMM=>_x`CF|fSob)<$PY$L0R`;^ugL(+&-*sFx9E zs>HN7Y%LCZ%z9NKD+KQQ6+ym#s|j_{Lu(9hp@nHvc(ask<)!37jjC7w(V?Hn?@$*N zMYWQQ#HuQyCroeM-<)sDcb^~EuFJ@d@X!)afQyy;f|7!nj-ns$yX*>)zI=D{zy9}r z`ub}BuYdI$rM!Hxxq9crC%^u+Ww&|rjhA+J&z5H|j^BT>|IFjv&wS~XXIIB(m;23b zYppX(ZAz3Z>fQDnL{8g?qHfFGJ10+`tPn7`qk{o4_Q6{&+iHo(Quyxq2^XTHA1P1) zP@2le7whZymk*v*Y06eO&)60p9&0+orNVrCTq)A`*q5mo5`RICoZNY^gCi+82y zA_^5F@Qz2jD{C8R)FwluHA@4vFs=iIsGA@NF+&I{ol#6*ETNKAyM|oD;U=4Oc#?<~ z=0d_?(gsC?=eYr3pg@mnJBU@!cT-Padtb5t%2ryusv_^gO#BS^?Jw=hWLRJE}dU3&CLNGKFJ6A5xgxRXbP2q*^e zWUHJbz_cvYi+^RMkLgmFp$QAu=W1ylD44TTVx|s-xbd-kB+FNXRUt&~s+(B2P~Aen z@$^tLxAs<|Q4_GMC2_lvCikCe&Q}Ojq5&;=@Z&5BktbYe90*6#GyuvRT1YvL3GXGM zw8%OEXzWGeS{iv;DR}B95kz#0+tZvz{z6E>!0*#vG{P%iHu^(0AqVJ|hO{flE}nZ> z;xm&eke(u3ifIqwOrNSFQwd0t#1~N_d~!r=fJ#*NP4=xbVZ*fbF7~=qUJ6U^b|jz* zM7=)Epl4*yMddVlv0!UdOF;omK=IG8l5ZXNSVbwT^>RTKXG`D_` z&i)+V)_m3!zL~Z#sd`EtDa5&+>FL1<-&(lvgW0}rtVAl53AD!$8E%F+#3>Dp74Sb^ z%_A(#m}Y3hpu;A!>5Dc-I*~g=;3GdTL;(?2hIph*PE#F9IBf_GW`U49e9K(Xt>9mE ze%FxXP|1*B4e_S*siEkh!!C!zCSwq{9HE0j2wRDz_>sVC z?M0$t4Awq_)F4&WaZe&;I(9L(!42wg7bz$yh*-XeRL1OvXt;Tb zWuFAxiLl8ICVQx%qqpqpcy@^EIJU~qX_B=X7%GKo91_@f2$`Q|gQ3ZT`uAe@XAMXv zHl9CZ1Ia9ft%%=iQOPGi1geIbgw1=P{Pa)KWmlu{-0F zrXn$sQCcdjS?1vmfy&S*h1!*Wb`c|)FD5g4%^Yu-lk{H0E>K`CBC3^&ip-Tb%)BX} zs_babf9iGh0VqU4wcNdbzDn<1mRg@*T(0{gi3kHAu0^_HDa*-Dq3v+&H+$~ttw2qw z?MhCJJ#yKg;{9O(Dy68ZXoo7PQYivGy?b(ccKY$t7uPTL<^RvtpLN-mB7H{zVV-EI8L+}w;v$t&*E z^0+~LBZc!t)pK}YST7q3;*D=rMRmK`fXgZ?qs`Q{hx+XopGC{hpFh93IRG@z^D-}p zyO~y3$3<^Gef-ILZ+-Jy-}+mB_it~vaU#4y9=5(0K@D2||*$cF|f0q4{B%EPn!7n?16CCX;tJKKRt zuMfv+NtJ*rh&qB)58Ee^hf1sH^W%DXbGkmPr)3qwP)gyl9lWD_vHxW%(T&~O8(F5n zZc~$A)ufmNVr)sBCt;iUiCLwrGI7}qJdHdJJg~KwP9}t-7bw6CA#V|1l$e#xGl&$T z&z+ZxVf*goe08d922~-dh0VQ5U|~0LOf*-0b`TXsrPp6L`%nLq-&{`fkAD2lwAo!h zd;Xr#Zko=%_r(|QmU%Z^AC^bg>z7{K{*7OF^`HFVd&ha^ajdJCs8n&EQX?|7=GXw3 zxh`^=*NcnY>9E{fpLk%YHN?}q2SRMklOvOC+($CK1rRisu@ zRn6@e&;Uw$KxX6$jIi@n(fr~s!`Xssm6 z;pVVE9|Txd874X_yt})5VWiE_dI@AyoN;lJwSX6eLB--?U?jU;+PM*^!U}&a53dw` z6WuKKCq4x0Ua#(LnPJ;6JdA}mLvcUufxBIGgh;Jb?5X0dD-nR!=K}>c3qS`u=gD&s ziU5*QmrOgXSj%!BiJ9|{sxYiF-;(Qv2*XfHp~uhX_da=ExcKaD_V7m$r8j|@GMm-~ z1hy0jlz-ddMzgKJsQ|zr^13qxK($&eo7p-WZcaqCszPg(!A7-0xv+?k*JJWDv4WOW zRCFB5R8U3Knw5%5On0?N%z&S&*-|PL_vbw?L$*l6B{m`5s3!?8EZJL%Nrz>wEupM& zB_PN`5w$o6yEFa(aP|+cPj8Gec&KqQukZmBCdnOi@lZfCdX$+Ii8W-f3VIJhM7-wH zPIs8N&8i8uWeQYblTs;?sU5(KQ&SahF=-XK1QJn8ZmMTLjINq#BM~LU9Vpdk&=IM+ z3|ahERFm);UMt)>65(l98AW>7wiS!bI1~}31pPG*@DK-=&43`jrU`oyhmD96+Q@#$ zXKhGCB5}jNp$`XDiFt!ZWK+K)?~_>p$DQyrq9%lPB?h9$y!ur84BR4r;0Dpj(qVW1 zNmU$HJuH6MHYPq?kYK?@A1wY-bRi8-HQlcTkwmoNIBJrGV90@auoH!-e z$}~ZT6nYl4aKS-K9^)gp>ST!NMnnL_&M1jmY-{SNl5dDm15xekFDG)h+F})ZX1pxc zYjSRDizqlYmEzlyTVdO?E;1}h`%Xx8O!$P0Tn3+%L0|?{UETlyMMZOGu_;8>|0cKg z&VBsrLT3xlxRsC@R126QpMt*l$nLB#!JBp>12i)WU9jkEi9>hxhN#`nPf=_AnSQk`CY9brIv7Na&sLP)vR4}JKoPzdp}rY(q}-Fn#r6L12R5CVMC>&)113E%Byy+&gQ2{vrt{!+9cL%Zq=P*dbh|ux61NSK zYp&a*=1wy^8sQg(-H4J>3VWvMj1c;Vrq9lWSeQ}7g&^a~W;V4m`oTIVb+Qyfn%>%U zCvI^iE1NM(P|-|GV^XSQ=MDlvIl;mnn7a2ZP4nq6U*YGSA&;@I?v6#+*MJfL{F+Gb z?vax);Rv%OgzW{?a0ptm+ZzYR@(9qr+AfX|(jcjdoS_h}S~UQN>yKY4 zVq&sB);9HxxY#b3xB|QLv+Z_seL9ZQcs!o0T+Z!|I?5O~8=eMYUY;GWt|oJK=GG=?P#CpVX*d0xl2u^kFl!aada;{U!hilR ze(%FiFL!6-1?u1VwO{y$fBhRT?8?om|K#7k^Y}(~n{ky&!5NEr$l6S)`u#8k88WH0 zjQrqydg0>i?s;LYwbHQ7CGfO{rrl@ad9#v()GN)78zqQ~^_A z-fcEzph7ejE`^wB7`Q~_N;yHvRoDJw2Al)B4Jl_;T_+_*mH=vfmR3MkokfO4HUn)& z9tsT%bcfS+m)XrzOu#6B+Knmm5rX?0+P$!O_u2C3uqed{h8Cn~CUw-H8)H?yoRx@m zu3vuj?*H~b`D_2#|M{PO{PE-6E3Y0-`?ufy;B3dg^4%}qJL9zuPp<2B;BSBK&S81& zpa0=IDpa_vqD-Dzh_E1N1X$I}GB2MV=E8LMd^1jEsR=6KT1;_Z$XF{r{P^6|wuwgu=uM8dy}TmF6g@6cv?m&~>#Ha#+&p z1rpk?I8qg)P+hAJ9TtUZ6$5S>Un%Y&5(d# zmsm|K32;?vmkG=Y8H~s-m)6e@jXQzcdf;sqBXDyHITI0>n3xI=L_-m#=g0Nx>GAQi ztHXX>co0`bRPk9x9Jg;&)hed#1FEn=VHSHt%~v@7U`Aqb;{V=?x9Br@?TU&`7g{LA@om z4N_`X0g{9SNJ*JQ0tG@lEk)uRn{7CCGRql@HwXvhAOGB%w=)(gvyh*-=h&3D$ z27)9CoZ4qb?DGjPBTi0CN^MK#g(zqFQEZvWW>%$XYJ%mrnInqv_vYXTlUILSB;#BU zHR$GA>F`mR*b4QjAb z%`QXJR3NNJq*DUXn+4ETf)}x0kP;DYHCglWw}{13nmk~P3|LfHxLxYP2UV~Y)FnTW z<(MsmhOf{;NXm6^!}k(FkLisnBJ1ZK-^Er{15Ab3P^tjsgDE8feO@bFbt8v1ss!hg z5)o@e(#I;Ty=0j}dxA;f7%6BTi~x1wr+z%8S;qm_DeZbc87|Is<;UP)$5`%>ziR(t z-(aSIJ7exkO`M;)ZlAHls~|f?q$#Eh*^!n$8P(}A!lpFWi)Ii~aFS)6ls1}BTELb- zaCT@uA*#*bJd7k=mzv4sXxm{3Kv-{cFX068?MS%a?YYq}M6MYw`$k;9MOpxfKz6?# zf0lXz06h`HKm|dJgVb3Z7a9-aLvWyx5JS8#U}%@AN%_?{M9MYy$%OuYf_G$d+f$m- zRai0zX(A#W5{IOjAfTX!ruf>|tgRB62kY%g8nI4X+iGs9M)#Vg_0GaL9m||ke4$$>-QI7! zJk>JZ+%(f+yj$bXQZ$bTx*v2&B;RSM7)3Q`%e{v0j8$lQ*bac@Y!fps&5VbVkw2<= z1ShgaO4^A}@iN~gX>7BzzP&SW=OxB*WqwN-x<_+t7%*55ZpjS%Um=0lDSpunc~;q6$)?}Y?*e9PsDfc z-CfqIRjAT>%OBn{X zNE9}IkghNHRn~Q$p|lD}Z77_o)yt`qPD2zd@9zR8QawW?_SR+9GLF+`t00j|F?K54 zI)V{0j9hDd{P^iI&ww6}C+pc{G#07Eq;-A%-aGrtr~lzU_y@o8!(Tlf_Ld2?ILjm8}PMeXJWm(qlNT=B~YKG5sk_5Ou$g`W{{LNG zJQOCvz=SL&PsEF6BPgPCBEW}-gQySSt#rlZTk~imBK`_GRV=kmg*GFPg_zqtJ9~Om ze~<#JfS}A6Ja~YrZVJBqVBC)M!S$?4#m8}2k9bIH3Z}5zm_V(#nUw(I`putv>3{t{ z{p682)~ok-{P@=(UYo9(z6%e2{? z@5*k#s}H8TyYc2Q@1~8*zo^6rj%BS?RZ4|WtyM))KqJ#S2q{zxbI_9sepf6X+E%bwgi^~$o2KU5UMJn6z1(z3Ugr|1};S29Id$H z6P2aPMZp#xr&*DbK$dEGYKrbYCTxw~z0bJi@68zoe4+p^_79FLuuO#`?~?9|nV#*J zPo5sCXt6JOPd9L%ok}0?K?y;bNU7Z@j4pNIezK>7#zXvsps#~-X;=FdLF3vf5x`!@ zS{(P1LU~nPr7o*3Rp+|S%X(VY(^8jtUgtWC6y}%jZr^z2!K3TbN6(Kt9z+E`BQg?) z>Q{_al$fOo5v@Ki6?vF$7%0j)%&i5U)d(oy2af^&qVNYQHa5hE#6lnns#VstD$~GR zO1to4wL(=C;uB+55hAdXdKsgWOe0_G0Ru(3u|nV#ULsma2~=ez>!%1s?1hL5v%)TO zYoN%O(WZbUR^v4q2dC=N<)^a=Xp{o*1&pyT3lg1a6&*NgF4R_H&e%g(C?p1tYCDLw z$>l@OfpmlmsmDO&e`^q_^I*JmZXqraTz||O99nL#95pkd^c7|9cxg7DJba6(@ zxCQOdWyKQ>Q=FFu60(Yt4ADM=DFg0m82m^VkV{j9BVlc#MlL_^DfaAONzh2AHlYrv z3LhQgYp2#7n4KIHV%k|hH{?laq_0+ADJ_a+)x)wDrfJ|!;qy%q!Mxg3=M08C-=J-z ztZgvSw3kWRbsSBu1QV!51s?6?3IXK!owoAcxLZd77Z>C^wH-G`@E8xFm`6(aL`woW zxqvJPZGZ;ZHPWNa2-#zuPKx}lvDKB%q62HY=Lp%$=be{5Z#)=?dZmagoWRv zdF(~n@(8J)2;pk{>#}i?=0V5EgrMnxz24n_mn^d#<@|ce`48bI5V;`D(ve7tXtOUS z)Q*ud3?qVSOdac|LdR*xXMs1MuC3DV%Qx@oC%}VzZL|oD32AL#ZTbWLQExys~ zX-7v8y6S1q5h&d<8lFN3uheL(P?c7u5$w~n3<$c~bDfCluqL2bXG9Q?C>*HoJ)K$9 zVrgd^G}G1^G_+=6Au2&1%1x=aP@p{3v^}aXlB)Aqgne~ z03bGE{xTQae_kVK{@G1j2SyK-9_!(cE+=03m~+ zLIE+5N2iLU+byrsN?Kfi?K?>mwM;#ws1TZPQ5p~z%FqYfdb7-d{@^yJl^FJanxzVb zfMQT9n{wA-TI@bVRHd$2U~S1612D?G+3j{`yPMOIxGc+hJRFHA+L0T?A>K^W#SX-W z!>r3%jI8a1CpFxMBB2qlQ$(h9S!g9<=7FcpM5UZg>$22rR3lK5ge8DAIBLS0_)8Hr zDfT0i2V&ZuosFAmS*!KM3ULp%`Mm)m=4VeXZ*KNnXrAY~RD!a%n^7Vq=;6uZC-45` z%U}KKZ~pE7LD>wK&ktiEQ7DnB);J9z08FBMT9$RGFJ5e3xpy{2J8#wOCeUnQbLOE@ ztCn}3&7a<^Uw-w1NxYG8SjUj}Zp#YG6RjduQLTHCqJl5?%gte)#&H!TsWBJ>we|JF zBG#oFDzY85o(zxA^#8w@O-~M zeSSKv!ZvGfC?nH2QYkzzjqKfU5MaFdmW02alJlR(F{wrGa~n@EfiteJxd*rTdG zApopQi)x+gSaceADujZ}&ACI03o;6VU=d{|Z_y+uq+hrdzybga`QA4^|NQU$)&J{1`j_+mu$zX{@#Zgn`r-N6<{Mvmc(K*%!+N=2Ub#E| z;Ejh*uTOvU*5mE=>|{w*FkrWfj8-J7N~%P)3I-;o`Lq-!X0jxfjV&Os`X~d4RArV@ zxD+9X=qmLvSL^Ez;*am|9=>>IcRu{9fA^E!upI}QN*TF~<4}gdYa5w(8Ve#0sC8X= zH+VnqLO?Xs@J?u~1h0N!>pjD1WgM=NZ>-4?6A^Q!Zi~%|Ahz6=1@=(c418}}1``Mq z>eeMw$*(v{^&91+-qI0b{U3os7zksbW!1QKnph%H?O(FtMqr5?ex-}aWfVX@%Xvn=QxxgW`&IaQJ`=k_B^sTz~~U7*)1lL00dE_>z^<| zWX}0>Svy8mggNp`L<%ZI)vN{cz$jeo$V7wfM5s0T$T{)Cj|EU_v0@%?S(S)2?xg55 zsD7i?XkZDcQU+Fv(LG8)Vd@)77&|0l2I^kpwlGX0h&51u%gku}#ed?@G|WMy-IQ@%*A>7xjc2luMm(iVbyE>0RfHOQE;hiP!vjxzFY$<`>e%MM3Kx_89ARfa$bi8R)c1ykf3 zXpveM3r93%KGEz$dsx!1lgdVikZcW0OR>s?$&K``q-ktgnA$#~4)E-up->s6cv|0Pu=gmHj_ZCg`QwU#!+EkoB_2IU9*=0N*w z`W-~LVZUlZt>I5%HMd9>o6JZmHx{95I4a6$^)K(&%~Z1;VU#kx5U9^nIRj_TZ3sN zudBs^BDJn7cK64Ndv~UJdHU(REJA)_<^4@!ra9Z^nMjqS<){3pU7!}pGts)rW_PwZ z+lj^QE`_9)I3ko%6r@_GX?T8hc>3&$nCrSM^Fon2RaIzZCOPh(zw@Il<2U~9|M2r~ z{M_TqOCoq*6IWC*(@3hsRHg3cd189){@LAafk+L}hyX-Eb|w}_4JHK&D*R|)-+Q!w z`N7%whU}}MKW->Z({3>so~%%+GF4PoE#BQWPsQq$)wlJK>wepsJW{ zms*Db5ANT4@53j*{d<2Z#M^0n{qE*}@mt^h?iVfwqCfq3|4;w$T`FUh)eo8BEvQ_A zQ(0J*KvDsEcxU_a!#n2_PlXDYA?Mrid^0l3GOyK2h}gQzgUuGGHn>8hM9=rj<@J1; z*HU;hmZ_9dXdHPc7?`Z}3`NWns(@zZLQy+)*MN^`&M<6+>2IP#PJa{r+Zxz-Pd;UU zz`Cl|rLGm5kq73|`o|D?p#Y)JAXgd~-YQGv)$?&=dgs})h>WFJMWZ#D5>ieRS*_6o zPOGs%?``R?|KMv+pI-m7fAM?w&UZAfr~S3%=05+*`DT%ueZ3ybgWd3JUwi4}r-x6U z&(k!W)(TQmpZJrZCdB%WK-RjRs!sC7FFce-&mVnyHBN&Flpt$OcPoIZ2v|jwF_Z!Y z6;dIBu2nvIy8nxhuYUgX=VuppE}vdarTBG6pAxI2L<}ZOV;P5Gx1FY;Oe0Ta*lf#C z%68z1X&jlMY{!=tAHu;mY_I^6-877RYX%Bwe=YOqu0$il<#x>(%_Gym7&y>b!*PDd z=CKKps+Arpz)GGS6JV_}C|O;k&;Lsh?#4SyK)jm9tl2mYV9oj+Ml%aaS~b!D5p7mg ztLv$r%z;)Jg_bq30IO8CK>z{aoH8MY`4Xp^u~llEp^!kRI-D}+|IIqXkdN|ED$J5R6w5%11MYO6c)#`OoT}>H`Qkc1n)37Z(3_KA}L)nhQ#b(?T znhJ?xS$)?=g2Z_4QLSB&uw4vNCKiq|T${q|v8+T*nB>$pPrD=tbvlXE$VPePqkYDX zN=l%*aj=`vRD4vi5Rp$oRbeKG_tQkk9&=3EA|P)AsY_drUVOj_MbrTf|0y7F8AMT+ z%037@D%G^%vp^5wdbLBHXfGs+nl)}{Dq$kj^LQM{FXu18@Ahc1naGI4A5ShwWKt5w zxhxqhA^7FqDybGnG=xP^c6dOBsh@EIbTl zEVLO|z<2LneD0MhL?W^-t0;)1&Z~H5%HTWuP-g(l#i&uMRHX_%t+FnX<|If9$*n-^ zDylRU0`h`_ayB*vF?nex`-N=~K|r5eo{noZO;YqdVq$P@fWC&TBi_hhBM@OCd{=4v zREujIp=jm@yP(YNnqBqHnoGBPHlNqdC%Rz38YCv7Cy%Te!11bOpBIt%z*IJ)2=V%X zE;fsDlZ-=5z2kU>5^s1$S-{6C^SYMRW~uX7cq+WAEUQ#et$u6}!GM}Vz$Q(r$D>*W zZulGu^n+83mn!N7BW^P_m}7@V<|869$#6YkdkYt%Myb`n`F#R6%>INnE;@sRSTi!g zZok%66A@vY85Om?Aoy-1Hy315*D{crmO&AaGaX+<`^G|#^C>xG9LY+SkQdnVQ}z-X zWkSNibo1Cm8H%e}zl>hcBp0y)ioN7>;%KBPPy{pa`*iGW7B+6J4bYU$#+P`ru@M+t7(pD@@P>Zf{meWSt?=*kYW&gL$D@KhWx>l>5q`ATi&J_ zji&F^whwCaWD!4?2xP;EAoL*(QR+@oEuzBE4zyv)Vda3RMQDjnLv*p-+ok`uy(B~? zfZaN22I$%ebNqu5=??-FQF_+W3z{mKtWZRcz+0BN%Y1Z6I_=e=VbVl}sk73uK`k$k zC5=R(CEU0kBIm?2j2S5=a>WPi=sM3M+_?Cgn*xPl&n2Za`UcYR1gD$rPiGV&7y=dI zozKYNE|%7bkmHG{5KWMR&}E>@i?!CeLDb+|*xRrG@tI&ru!HhT2$AjM#E{txzkNHl z=#(6!YmSG84-O$U(F$*fu)v7SNuwbs9lHNBK#^-zSI`<}9I>Pxu%Vf+Fwr53{~pf) zO+I^_ihn7T2Z($Y(u=ky-x@EbiZ($$(&S2LTQFN22q3;_`}OXMjsA374JrIk<7P05 z(3}f3VZ9{*NK$p532~&rE$J_M^*8eyz2BRs$`41z(2NeVU1~JW0?=WNE9n}9^)KgP z8j-i+jg2emb~B!xZIAO2;41a7Kj>Op6%qi#u$iXamWE+|{#@s!bZ+d{P95fW7>th8 zPE5DHqzW+YuWptqTD7j#(NC2$j9Nv2!i9+|Iik)4hmqRBkR4Bnlwml#xZqOOb+tA< zfjgNQh1i#qWZZdQ8x)5C5%zI1O>mz82( zg$5KgK&d`pjzm?|npqMtsw*=#n`_E@Wms2YMLt?LTKJTJ?-PUq*ldz%_2U#fUH z+d!+-w?BFEl`r1;@*A)G+vhhzgQ8j~K&{@OT~wu3Pcjoo!3ATXX&N`fu-i;$V>#Q7 z=iBLgJDqKY-EKVFOc&c>Q>YNER;Y^BwN|@zmZeiLMKYERuWz(!Qz!zlq!%C$ zj>InQ65=$N!F~%WOl~HC9XCYRDnRXsqvY?LMhco&-Jj}dmE&SP8YGaeuMG^F!8#6Q zEIbS}F%JU~mwR{4$}miYCgw6SM;IeO6{)qZYh7wxmb$EUS?gM>R9&kMSSRLnsfTr` zs!Xgdme#TWRvB8D3ehm|VA(x_jqEmAVndf*N5#D^7`TFafkG>Zht>6-Fe-RBd=*>D=Z!sqkJ%uI) zoe7Q4p>^bY@{l`&@h)<1+N?S@B{n`^{*2ziT$L5W~ z_Q__RgA=j#PM(}768I*W)%K3~ouoL&JDb}LI^}w_BWWkg$peZ-YFAs756-X#3G?KP2aSASdkRZ_ebU`H_~OQI)zD@Nrm^|#I3K3gBwDHRg$QtF>)VAzLqqW z%{8w5Ty3$)4!c485d|70HZDQZ|D7x|+&0Y0`YDt?JgF zuqp|)dpT0TD{>SedZB$G#No7>m;{^Bw&&+NYuapx=TguqMnFcOJD6~qy2T84oCYMw zO9pH-NgaDs4G^5`bvqSO-K9ozGum5>-X29th|;iz08q1Uo%g*Znj!ky9+ybZl(zFA zjWCgPZARYhn?=e*edH4SN@;PF5t~BTnobzv9k+z5&4X9%blH5CJxy4uP1T19NAq{3~jn31w8`cg&jJ$P_-=VFyQpxC%MV+&jJc0g4{>o`qM zo?cx&-wSkI=4F{Fj2aZG6_C^Z`Q!KBeE7mk-~X+@HQc#)^z3qEKCNm6UQ`97HpK^a z`$=>@%@>7Ux|q&J@{aZFElkLJSGgdmg^ZB~UQynAdOR-cS3Y-7q$cAUw?fRLySGR6 zCy^>xtF9u-bhV$KTb*$w4~ zKmY3A`_(U>4Y*qL|M5F-e)8;eake|1R#qPzX;TQJ7m3?sQkJy}>MJkYd-cJc4Pz>$ z5Ea6`^UZGLwaU6G!E@>s=;oPEnDC;akFSnbH#0MDw&Tdmq|?ZwwH%{cfWq^@5;iC- zfa|OXVqRHd2@NaN%!W&Ay3feXIib|9Hs(2;xf~@_5JaoB{bwb`xVL}Z<3Rjtdq)LI4GJLjre6*d9aDu$Fv zgq}P-eDLwl z;e0cmZ^w(X&BZjH@21^$JfFsC7{|hfCsed*m8uoGR;dE15`ze-8E3b+c3s$QuDK7> zk!Yl7@?qJT@F~Ouj6)dmrb9~2CyJ;lTQZV}l&IRxRuM2&fj|qB0wTgf0~32rA4FUV12(3%a9}E}vWnc) z^>mmIr}g?c-<*!ec{v@|F4wg{cjh3h)NNn@0Iht;Di5H_4W5iovTGqDNS7 z5*=reT57Qcigx5>r(wd@0u`1xL3v5hsbk<2QSAzLE+PGqi$>IZTPXx~>W+ zvCs+VDNyW&BqB7A0~+9Mr#&&nQZlj&&mP}%k|p}|XwK7$KEcj?l*yn^7muhv zppz#053A)Rln77^JIz9ftx2Iq+$%QFDMG`jXYl8f1vAa9h9pF6kU5r!irT_5a)5hn z)37G8sW>ilq8ae`6?V=b(x4^?gsP~DWz|#Fkx`h(!n<)0)mn9}QlWOo-7^N!`=yVC zT9g9I<+&Bea@{Z!6jv3akie0Ai#m+;X$`1LtT43*-%iU6_9hh4{!O2$O!0qmqJLG@ z?uu0ZF+{S(T)oRfa3iF~;ZdS1m9G1Wt;#RTMEK^2ESmSWcAxAP?oRy5Jm@iYQks|py0BJlOsLc{w-sfjjrcMmrU(A8%VbJOL4s!N2@b~N9G;k+BixZaRuo%^3{hKFV?APXE-K+p zLQ^QjBeEkYLK;$+@)T+xa^mTkFw9LDQluk1uymv+#q-Uc#R;RO3i0G|*h_TljD^|T zIToFE+?852PxLbp;bPV-VuTqjOB*a`HYoKqGA?oU5Edz{aqzmyQdo~J(Gwezrn;eZ z@yXz3k}zCZ5KCHCC`CHkkEA;@#GcxX_)@b5=-%Y~)6Pp#9w(%4HDiIg)*4Ne#N}GF+EJ>KU z^k11waj&UjdMpY+h)JsprMfmlTNhiK=voUi5&MW)t9`D9;z_Wbzy2j?TB)<{Q3 zY7Q|)+l0vmuvW#X)@4y;TB|DY)y@3$`JTYzz-E&R6RZunkGIORSz8Xyx5M3gcmBvI{m#fI!n| zSth)2@7~J~F2;g^nV@6gduQWr;#%uk#o(xja$G$WtKU>`DMYkC*311oOWjPvG_a}` z#yFG$rHHYcT%}Y8v`AEt*f%j~3L^C<*8yCzEVwDNMWk_fj2Nlg0aFw**GpAZs#0Ml z2(YXog0b+(u1VT8K`@IU0=uhBuma3_cf&t-Z}ZOOe7)3>JwqcAOk24-11dHtl1{5C zP>$=DzWCzb{A<7T|M@R|yIwuJdvQSree(AEADnN#_;U}r$l+8khxPt${N9%yzW?#F zPj61+uvxV#AS$KsDk^?4wbo@>R=b{60D1QGY8*#Zndc)x=VkTrA`U4?>T2!wE1*kt zhe9yHI4;XOkDk5s;!B@<{lylJ^*Q!*jE+@Uw<=OQL z-4hc*hQiF)lrk0CY|3Vu&Njnl9JbRiP2+YP#-WU*lroH2XbHDc9<4G8h*YM5wj<|! zG>a9jbD4>ZDA}DqQK>M^q7R;~78HQVL*zto@mCA!Buy`%#FpAJQ>#%-;Ic=F5W$HO zTXbY2E?UaIim{O9RjP;)x1D0AdJ0r3Jv>8h&M4(z_wu~%W#zX^y zQoPQFgmR`^0=}9nOq=I~%y=V9i8|;)f=EB0J7X|f*fu+em@!ji`ZT&RhOO0>1UJHG zVibTK+iQjbs@Bkt$O8;}jkrmG&5Ne&AV$h1Hy6on0Lr8))jD$uYXz6R0whoS}wamzi?d|Z+39wA&8^LT!>M*%XixiO$XcUO}&`3II533A`ZzCN#bT1{Gl!Lf;YxDM6r&ncHqcM>>jiYDZ|2&_!3OL^KpK>!dB+;|8ja8GOkR zHrw*lft>TMoJZ~9s@7&Cp-?BCf%5Yw8K~y3lY|kkYW`R~rx6w~ zSm0}DBClbZLrB^}Isu4WiU*6a&WOB_FKA^#?O%a5GTQOr&3%R^nK)8RU0y2*+s-J$ zJa&I|DCu0X-?+67|Kf{ul}#%e9E<{!c&@hl^6(=Kmj+{FBnq?{fX0j1pgB0E{%!I4 za3xNoUg|>TK4UT>lhmjid3-{|t}Zj3*5}vJ!s#SQo1`9V3EBn`kt_8$xL?pMP3z*& zctNYgiD*K*2X` zxJboCrZ=U4K$>S&afBT^Ou_19JN9{-46*Ex+TaJdy|8!W>0cU*#=>M!BuL}e!KCIf zZfR=hPZ4Bl2^`@3@;*wUQJfFiBM+yH2Lw!30=W;WFO4e}9;!bzLa9pg=UzRrrnQ z%ER>J(`V0~Uz5smI#s*3TNp&TRs%Q7)$_}rz4z)DzWANr_>Ef1;pR9_yj1mwQq%(s z5$iz@sLabb(@S@zUE#V)utkZeYP8`HC7>qPYb`^$UiIC_`|UK|yO`!>hFALeRii3a z8mP%WI~G2!^|Yvf>QceHKdn!m?L~D{AXU`Th;8Z_)jW1)f7EuM`*$xs`1ta_`Mp1@ zwQh#;!fyCGKlsY`zVv{gzxU>ofB8orY&RG4vP6-Hh;>jRf>ql(abATlw^QuW#OVSlWp@NODNgjI*J5cvqd=11~m z&l?&B^on31&f225J5(jJoMDSRaJGn{m8im}F-8!hp$u*kI6$!~7*s}*YNQdVM1_rO zA|eGNb1Al2Z#ZJ>74=Dn#RUowx!CZR9&Fx!cDkBn7})A(?8c8M3c*`22$Zx6omM;( zC6ZtK&KuW{p8eZ@`QMELk5Z-L<3E4rd^f%L;`wow%jG`9_yLAolwiFeC*~@^;W_$UJc@nP-_WX`{RY?yF)tJga zfJ9#*zjz51Pu51Qla;LvWtc`Bml#|lA z_$0$vq=~jwy@^0TOaqD+jW7{`N-2o5+|NRj@apbC*&Apv1BJ)Jg{Q4txk*yF@DaGg_ZgQDk0c~Uj=#XCi|zY>6w4Y3dh3o z0t68$TpVU35qwOx;iPc5Eqt;`0-!8c^q)i7@r`AKyXASPNa5O zMHN7m`T4$l`;FIzLW_9vL;aqChG}Z&(yjt(sLIM?0)YqABM*#`=rEywix6%d!>5?} z*TOHg{BMHzaAuiK(bSDVQ;`#j9|t50%o|+p))xV%xr_L6q!Pr#3$sg!c*%8?;w;vi z0Y_G*+jvqgi;`N=RmK>>Fz2(;TnvLnDz`aS5woCw%csmZ85$h^T zt!ox8dY~KDtP5i`uBH2LjP-HO7UsvJqok2~n53>jU2v8xNK&hpgxJJkim{xYxz;$c zK=(>lcuE!b*7O%yoPB2DB2n}7Kh%2l&Zo;$(ZywH8f*+fZAZ0kfe*yLMZ=q?RLx=xvY16R=;nHzfqSZ>|VGWW(ee!D| ztl|t)AnqQzwU4+iH=iD$`-{IcH~scG9a9qGrc)DfAMFY+2u;zibyUX ztZ@iUYGYb;bP2d7L!la7&5k;p?j-j;w~G2tt3q)yZnnj1TAP6X&+L5M+Gk|dbR zrE{Osb2xdmUtnWEWO1{4D$R)5CuhSg13(eJxyNyqH^FLt%AJi7r8$r01d$f+7Io8t zeP-$Cjv|oi5OmDHg!5`56ow#J6?I#Akf14*$&Nl--jXDghaWDivHON40x+b#Ni*JT zc_i)ntf(_ag2v6l^!c^U@wpOfr0gXX+pKNWDWd6oBXt^TguS2?hJto`F5@| zz$A2ieWTtP2ksm|V4BXiyqQkNldLOqj&ux%LP6?Vo;zX((~m6F3XeBU6GN6|c6;gO zQ<3MZmXZ^P%OaJSiLD!!ny6X4#*8X*_u;+W#kqJB-5{`nh?SHSOsFEmFdpai(r#EHm_M<*p2tMgW6RU z&&45j92QUWFDgW{^83%{{VZ?1bT+SxJ-LRv3`^}!%x3p-s>AB_{uF$1WuQ0dWL0=q3I7i4L@b3OW z`)dBLeVS~qL_ovk0Dv-(Vvt&^7;UsL6Jf2QDkE{R7*H+sKmZDpLT!XVAp#%@7QGnh z3-_n@pUu~^lu}e%0c^FlHDR3)zTX$c2iDaE0)sOyS z+-<)yZHD6spI$DnKG=Ny^?N^g_2Hkq_vv(YKA)DVsI{&($U_yXr4*!m86@e*c3f-~09}uYd8ScmM1i zq6yaPP$T=~NeLzLsG2zvt!COi#1?q(d;y{%arig|DT|mrRuQFDA*;aBB6}4%g2-C( z7sfP{O__GvvMD@`JWgdZ3};i>Y{s#m3}qnNj^)mF916tl*EeJ8Cshg%ypWd&g_Q{G zS5he;i2`Iz;2{R z@xzawK7M*rm%1)`5quv6N{Xxezh=cU1wknI;-(%FY=&Tg5M4K`K_YaXa2`PWhJZ=aFe5 zB+VGo{SwkhIdQ%BJGonCEzBoHbxYEp4R~qW)vBeE!7`pfX zB~p#E$3%a9EYVCOHM>WF@+ob5hgr?Zbx_W5l2XR=04P%dNK|eHH&G;!!$1W}UJ^)y z4y6)XZ3o2KM>b861DM9Sokm%nAB?gWMiSP-Hp_?Ys0Hat?J5Wntb*AoV&7`+gEArG zD4*Jj4IzeDHo#({rrj_{)r>TmYu)%AN$X#%~sQ} zr$hoei7r)6jDcwyu^R>vT}0NZ)e^+fB`pytqvKjouM_OX)jkkUiFQ~_P>~inhoy2& zwf{1UN>wF^F^X{mw6z*Q%9P&G~+hXmgEkFum{@p@Dz!rOp#>@b;Iqar><%IU7NB6Q#7|u?Srx6_OE8m zVDtTgj%^XW?MXUO6OM>90|1&=%VL}0e7_7zZbcp^JWfgvb=PK$X`J>sWF>y%PqeIl zX$~+ox_3{B5j2X&A}`U>A0dbE71$e7GbpUKyS1<`)M(I~o~WzrY=N*S* zb}FQrx;4i>T@-KqtaHj~F1o`rv~ZESBsH3(E1_%47wJNZlpqE7sM}*KD{Ur1ZqPr! zX&jme-4eL?6F@k{z;838ZS0Ie{8QaRy8Wv&iAW^|OsM|>VwRBt;3}%ec|Oj|vcTpcL>Oz>P1Q!n=8ypau&hfd zHcKEHy+Z*kbKUH=ckka*=4Dw*M`A-E;hh8!=JCmsr`OkeCORFDveaQ1z(uRLBFb{O zdUE;6hhO~K*M8xLKUBz4W#AGB*|_fZ-Bcc`Se845Ub+}J14;FgI7{88VbS!{1Y150 z{PZB7UY;IaY=?p7Wp(SRE(8?-NYpx^z;bgUa$I#5ttwS%6?y#R<}@#3DHSRrL=eIn zRSealPf%1z5-HBk#`Ckyzy712{`pVe9ScuVzw>ji{{3J3`3Gmi)hz$`zkB=RXQ#8x zv@9npP~;=S{cb>PCPXWQ}q#WWC!h=?+^8KAZcGg76LrRvpl zD|q5%sk?~_fr+gje1I9sydJ_0`{Vr5Q!6p`fjwqQ;)D@t_$^vsL=O>1hkn1}wri4G z%FeyzNTv1ODVE?X#d5^PT`L8t0$F4nX!O(v5I5wVJ)*>12p|=xRy`Z}^Y=IJU!JZ` zb>t#ZZAS{JVvW7j+PV>#ajJOqe17@G^I!ZAzWe*1d`wr*&o0h42RXj~!K1Uy=f3eJ zV!Gb1j|i{4u=(ECUwr%HXV?3K4#T>v*1Lh3MU_ESMFD1(s!$ym%l`Q2v=lC-4D&J* z<(LSVcB)oXsp~r9aCm;LM8h}`0nDHR=#Tc-U;5m`pZ~($w|<1O&X72f@j^4BNCwi9 z_6JBR2B*7A`cWRF*_(*GS(~SPnBYxKa-e`RRBOcys8(87L@Ka=>;`CM87fU812eNO z0^JOV{M@t&C?0YTo}w{C@6$d=ya+B zVVZarx<1zHn`M7ot`EoO$Kzo?-|P?9`}ug7kEi7{&+D=-B6dZYRBhw~gOnKzrosRf zFihHf$OAW*rigw@oWPFNk6nm}NVF<(DMh5Z+huPV=IIR(feLeB9tPfShH)I243K8H zq1`Lh|LF&M5CN>lmUvOjOhc8`lb5Q1N~EW)-inLCgB(#7$-e}&20De6EY5_dJlsL} z&0r-Xnx8pXd6#H*=72(@T1wNBm>Z0nETWnB%H{*nhSca~{n5zo;;IU1(L!AP3NlLJ z?Pe^6Me1>0*QFBRNkc!cb6gm>&L%}>77FUEZ7g&Mkb`XKq-6KvGjkZ2KTNX&noME! z&nAjqPShwEfk21>A~L5GeiI_0(9XoT{!;b$!?A>dpe&lY90eR|yd%!hu4Y3K`sT4r zi_DXE;kiSV6SIovqu~LFjfvn=Hl>V(;5}ujbubU-(*gh_=E&{4k7y{rk1lLSF}$Tq zu?49$)0ZBHN9s-eFV2oG`_d&MTl=-Bo6FS(@zL;XM0(_)nSvw68kZaDVyYkk5IUjx zbKi>Z%2RRf_}Y3rQ0+G0_=@nEunI0Q9MmF5*TD{Q(iyIB6^Jt%XF(_{DbXyLMQ6c4 zGL5_)3I;4ymZ~)%j!h)$EX=${#aM4!gLFNCDZ-Fa^1>~fMo^bEsfchCdD_?VDh@AW6S$BU(A5S*&oY>0+DhKjajha4o`-AcF~cTu@!aaPDpCc@(bAxSB@ zx0;p4SZ0JD>&l;8oI=p@@nM3UxoLE>5Qv=Y$P!AI^eEmAPTq1Bl%I*UQk?AscUp{{ z1ZlAG7B)+GukB~h7FHuR6?%crfM@1ZBe$N5rZ7$UqXZ6~ljwvz@uEVl5?pg%3aGaM z%{U&}oh=IEQY)K8xGn|!@y%ymqdBXTfXI|Jx&}~FUxv$MdeC5fFJEnMAt0F{wJ*3x zQU7vuukBWtPP2oJ{%BVXZ4XUpNz7sgG`;rOqcgK^?p_16^q#R<@c0 z1n`0@fS^R<*>*hJEz7c=j-G0AAC@#s$IN8qAmo8Vw>CFPsygj9o1q+T4s~4u!Z=JN zKciC-Yi5m-SORbUe$XsgbELD|h8288JlgH1h(15xg zPDCg}@o<1u)++Pi=A(BD(RY6BH(vh2=Pqxqn2I6KUcDQb0w6L#UOXEfoKJe;vzu2NpQ%i!E>GsilmLhd7{DtJAG~n?yg&+gfL?6I2WQjBB(*Bq z!AR?S1Rcf!p#8C4pH5Y26}`SWiPr6KF%$s8o+*#gw9p-olR1>7b4L1^aTHb_|4QFBk)(~6{T~5b2Q`Fr1a_qYG`ZnII6@#cE} z_WMuooj-W}mE)q9$91~qFTHZ{!*9O!&;Q`gDnV7MfIYj;f?9>R z?9O&_v)Yn{1cLCBMMNxFZ}%M6Wj!5^QiTXyc>hd)^rvtC)~|o{#RvC(|9AfIe3(?F z5D`%shB6Fg9EM>W$Dvp&G*2D5T_LNMRfT$y7f5#?u1_0{1!tHN)BF;O8Z zj8b9(X&?*{As&bbYza5BSQ#04rX%CPl)nHcYF3uSYJOYuW(VR#g$tO5!32YpV8fKF z=&|a2T#xg7JRFx=ulL7KpI-e(-~arpuipF5{@-u@_wPO34qE49T^FebyGn1Fr_aSFr>Qhu0t?f=|fhnE42+ zRCTW>YJ2g_ky(JgT*35Qh%6opb2`MCTTDFC8>8+PLo=Eb z22TU?0UTB^LyL@#0&5z42!FxZ7BFK5AfN4UB>|}R=+8x_FJ4Lq&ykgj2f(Kf2g6$M z>N4*Xq83X~{z)AHDbc{p1ZK|)T4|SfP#nlAc-rG~v^Q&_HwvFbZDS5>H5%-pix4Oz zidy^&qP!p=s{-$P60Y$S`f%2g8d+x1Y!xzh=oKPk>>r$X8`9qRT`Wy)xJdRSTLnZZ}(#lH^@3tVauQQd(v$BoouX zw3`^Bi|86>Jsz7xxIm2)o@xSnzB1LYTScoY^}$5q7TQ~|BLcK|lCMfqp3s6QO;V^6 zzX@J0BR(HOKPlyo0M1JJmr(#=5oth)?2d6rx0H}JNp*Ngqj#{n(sqgu;_+M_InNpAt^@$y& z8rQ=5`5qgrZ2HrzPN#Ri4R@bGTBO{10@Qg+fY)z!3uwI7UKGNT`RmfmXMJ_3uYVwo zPfMqHqq$bgnR8l_+3pL&9=Wx#7{}wDPNLxWIo(>kuJ;Dve&!#93Q(>@v)o#*>{*={#dk&DA1Imz$hI zgh8Md{yQ;>&HMf9{IX$VJm_shv14!Fgm?yKbd5dH_P2*;> zKOTl*IPOpDvLrVndI1f*IX^2yxp{WE9_IqKcss3diwyx4yRGHff@VjeXx$fDaQB7# z!)AQ;$z!`Asrej06{1qb8&9hbQ-s2Au0p}3AbRV}^LqF0-8=X1R`UA->7X)2%LEl+ z5S8JhPaj`C-;YeEo10qK%{Y0lG^o_7aymYLa{1`PuYKpc-}wIbPwTu&wZ1}>&M@JC zsvAX-J0o7cv)LBPen>7d3V6CeDX!thkiqfMu|7N2m+x-ZS{?qX*VK@>Cts~ykQFG2 zD$}WAnPrs?lEL2Jb>=*h8ON` zii%WMC{qA0(N`hDG>xjbJ}moFT?AG2>T0iby?e1^2B~ zZiftrtjcL1j|)Xrs+>>!xjUN=>TzG|z(tirbs&IL#HRsT3rOSe&7p4Z3~&76*Z1#z zP~ZMwclTmk4*cZVfA4qoa6FPK)aDfcL{x}~xC{eP8A>T!%1}xf?N1p>VU$9Ji+3jk+Xzd6`XEa$ zdon*MIn~i!fx3x+oP9o0(ihM8vMs5_wuK0=yV0W(jjZb)`zeR^3_1 zMj{McXrMw?gu@D|pj9zfJP0H_d= zjf?P@oRE-#$!b`o3hbcsk5gnh!xkW3B z(ke=Y6j-X3T1CX7wkrMo^1MgV2}`@QT};iFJzr0iWB>A8e(=_BGe zy3YW)(@FI24XAE^%`sYp8HPwa&8P|cL3z-KIGF1&pBaBu4NdjB@@`w1ri@p$pZEhB z^v|$CGse+8AJ*7yo+P(|rqsw=r-t?{JI0ghcP~Ekc@uHpG7(YB;!$RBI>(82SQ+@K zg|C@iaq8R_V{WlrJSr=ae5+ldpDUl)k!AxG$nd>QloN%5*HxKhAf6bTfwzRE>SB}b z0XxfZii8;0gY2e90xgq+Scpe?VPU$G!wlE-R^T0Xetpf;HODkNuLUSlki7 z*U0PP7Xs`l%b-uAZYm6QP9?{l@MA8Pzl(aSPR;GdvLps%rNOw}YWc+KxioF?QO2xMvUTi`{qLped7^ z^3?X!`3#{no|3wv`JT|AOgg7wYiChGJ#C4_B%Q{AiTx-{S@(imRWPQ<9IVj0s>U{x_uF)r$yCsD(4HJBg^-|Tf|3pi%Z#NKd-NV5)f@d9sna4q_=pE)oE}-Z5IGI2oZ{M3%vG-g zZ5^m^!;==KX-2p<%{ioB;(Y}B8Z62&bMG)rJirMH_xxIiuZq@m>{W`w%gtP z3jl}x!O{@Xha{BB%WBDTF6ufESA{4+vVVuU9QUW2=hw^eWbre_8jUBS(5lUshY`?F ziQbODq1(&&GVc6$B#aR3Tj;rdnU$EJZ+{b>ssgI z)dz2F$MW4@`;GfAz4G|#Sz#tM2cU@hulPR@5lNj;Upk-epN$ZysT-FSBgg^CuN&wo!sZ(Z(Xvm0t%NF%eY zZeu~-oR&Z;^5Vk>uf6n;sSd;=(Y;-H;qG>1NR2{xr1yknL&jlH;A(%mIcXI=o|bu8 z#=;Np-kBz52szurzJ!LP&5HUK^Uy$R_~v47uM^QYpKiVifmi{JTAs9kohkIP3!71( zmURIlW=p+{^kEn~E(}0Lv_!RwYMe3=uYw{v6{a|abSMuM#R?iMVVsZt#Psj8@`ETYhb z0Er%nOhiK|g^9WFP=;aPQpRB{Z1*vl%iyio2*Qw6)kmJVdDN;X?Woo)VJU?G5fxA& z8zo^j6zVO=bRei|wN`C$1+}mZuLqZ57`@=H*g!|(3aqM!MUDqKoKA=1e7!&I567G1 zyg!_7j`Lxz$CI4uIxp*5WvO~|Tpzyp;<_x)pFJH0CI&Nu%Bm>S<~Yy4^Um`h{@jDV z`@`4&`%j*~_u;eMxS_fh7MALlBF*QBa5zqdf-H~bYC$#xSwY#t4^)^2=2D9F$RiNx zz(m8y<4|aZNF^e|V2Hrd;^R1+@3wZ=l}llwLd->N(!HhUJa5Ggu{1nn!^D|)$T-6^ zmm-DluHL7zD&W~eHv+1FiVj3(?kg!-VK5O}38A%p3r!&#TS;8qCO6ov*^)&yFT_${ z1d8-*bayn{?l~Xw&@0Rj$ezn=rEjY0qHJ5PQbE`bWwROY-^C5 zA}Em(%nWp2mRO}(RfjoZ{pmdC6K4f!AHuTP5vkk;=m@L`^~xCs4;5itLS-nz@1zw7 zpULyud+g+|#IFc`p**pEL>e9?`_Y1d4~eX!-4XY8t=1$~3ry|R(NsW-KBzILBjGt5 z2!y{*e3?j|$rZ(iZ#L8FJ9We84% zV4hyUIC|lyuZ!RV2|ClkHS)vJDsJIUq88lf?ac-OnN$%q-T~YR2#ncfNgS&ZI+;WM z!-j5|v*z2sb;PUM6_6vdIT@9-q;0Y|Bd$bwt(uhDPNS)-`Dr6FS}7-y)nN;05m^MY z(7?1QG)z<#Yn8LdK}_ZWALNb$--%mh)9o18?`qZAbdH@eH-Y zGzQvm$tQH#)fD(Z>I6jqv6iK<&oQ_6wyywDWq{2)#| zDQaq8hn+^GMar5VuQUYIX2i7+&UovoF1__|&vQwP-}cvaVS%$n?K~E4d_%_LXvLE- zZe-#`6u7g^FN8lKG_OmXAVSob@#;Pi)*db(Bw}X-pY5c%O5) zm^g|;w&-IX1Z!E9K1C91k8L+b+a}H8X_tyh;~A_;De!c*7ntX&toew$(3TBs6mpS3 z0tlu4=MJbE6?)dUL~~;-+Tw1xYod_;FnzI6XX>p|z4&r7p7FEJ8t0pvMIv}jPuRg` zYw31+@%H}ndDIG2!)Z~Z@+sfpJnc{rK-xy5Q@6>3ajo|&3a<5OUnnHX>F5I^9A7j+>Vz8UAhnaW7_D<_vuO#! zBzI2EB>-u%5Up0iEZO1{7=$uXdxwVoM=aP=vXKkZunLN97d`32>#1to39y&Y0Edae zdqDFq{$j@v(==_*cBgqRT;^px9%lEA1wQyJB+Lq4imLe2 z6{=deh~#0hn9*_J2AH80Pd|OC7MJ^|P-j53UOQr}*XXgL8gm}(MYa0$iFsM?zxd+$ zox8QxB%h~06(RzgA}7`4?!!->TwUI5#&Wv8L6x$d)GE=SDyzu6fAZ-1@uTnj;D_J* zab_w%WarK}K$79MK2ueDYN5tGy^0$~7T zr9ivgX1~-w`m=W~uMX3IH(tK`KmN_{zH~8GmEZlz<3D@zlg;izWHnnCFsQ`}CdO6j zgZuYhd*#IeG7t@*^N}Ck@sdG1<#w~Ajx(4sPGenhd2_lxuJbDEQmfSMG+gYqNPFIkled6KJ!QUf5xyed?u@z$||ze}_d66A=8s@y*x)~X*~o>Zyi$%Ea@Y`#ZS zh#1SN*C%=KmCx_L`SaI*@JHK1qVw6jKfV9K{^f^vUVgBzx4FPU9X>Bjnl}?D%fl$+5jM_vPxZ!vjc0!yspICX}6n~ zD^=7*hQiB=zxea_e((#gf9Ds!`tjQzKv^Nw&H;j=!~#`ir#?Yc=Vc|W8E6_SNkIh! z=2Do;Fiz7j^1#HUlw#uxm_nh8LPp8&D3^&V@!UT&(7bn0a6t3Ugsoo5D7y!Lt->ZR*rU^Esp%m^af< z3acnbK1ChPkQ)hs>wiI03yn_lj`r$`Hk}ib#Jw2T)R#!dz9zYPP)T z9YIx8nEZ~Ld2kUL$m`CKz`UjTIKhRASYeG@7%Bj%3g=Z>A{9vh9w`qB^>^5AuE$;{ zs#>LR*=~l-RK}6FX)`RNmFj z`^_8UB=?=jgCg1?3cm!7qKf>4fCxfflt>W^xKT7C8gUI%BP(KXIiZ2aJS>fS%x#-i zuIzIG3`%HK7`RXYDXl6;SxXrvW+t&w&4r*+K~#njQk5XFB2_3!I0Z}G-nym5aEIPz zY=*;XxHjvgQ~}CSEpdU|cVUFE;#pOQ*G}qjk$Td#(#>hv7Jcd7*^t}QMmZv=*wy2R zOj@w$ZY!W+=zDV^0eae+#mgJfBUBBz&l$0V?{h#IFY@wI;*1_!(5o$^i3C-MVao?l zTWR}nV(b=L^-)+N_|z<9Y#-Sb&GoA|0MATxZqpv0@j}ExVj-G#N%jN|MnVu4!6G_W z9T;Pwq0m^0h%8lBCqRqfT5Qu&0WF;t3MP%jzDw#@tc}%y{t%SxfJ4ZpOHD>@E_&L& z+w@d>4!0x8Ov2b(@_5HMW9A^ufXSMt5nDKSyS}f5CGnKBHq0z-rfoA-)U7mj?^+jm z2Ms!KN~Xs~?Pak^>b8hRGv}{o__`0>(j=3gPTTU@t%rIR7fJjM`B_cj^;oXIV;UQ# z$cSYgIX;nUrR^u7Qbjd@-iy5vNz;~uDCb(*3IqP9 zd{UaDSd8XplOSlM4qV^w1-amGVkw{PyFgSyQ_@{i-a5bzgkUFqQW5j@L0=;C%Nf&A z@_>5nqg(4qY|{JRKr>-?kgwHPQq#ilw`PgZy#KK}Gg3zq zYkAf2ngv4CFqp(w&Wu;w38q7 zMdcmE!qA#7q#7rKV#k`=9hNc?M{oLIuD(BgX~x#JAaNewTbl4DA$fF*nHsx{BzC{N z&SQodN+}(>kD;estkf+Jh^F0+r{Q$7-;SHB=U3~xmM~&r0%db{XM6XYhjO|(P_1?> z5PjcNk#)R8L{)?UawtdfCi@=`W-2gkw?*~l>IxAN`S}iLRjp8u)`I6YmQ`|FVNaw= ztx|^R-h&6c8BWXMMa@|Q3_>)8uBw~O^!)1Z=+V=nO3S>?r!ox0gH)3TRaxulaP#py zXXj_X@auo={K3OVPcO%z&~2gX?FWMfm5KDli|O8Ogi308j>oNmxO}>-2O#`>#i!Tn z#cl$r3M~3i@e(ZsyiUgmA)bC-mb$D}RF(M2v+J9~%*=~aQX-~WS4vL}0+X(lnZ>S# zkt%4rDZ^C$;@ywm{@|m5aerI>_Fw(Z55D%IYW?W>@-Ke>r&LCj8tzk*nMy6qB^769 zXRp8Z@@62049vTcAKuxGg*;t*OQ8Y6Pp7;8T^!6fo?a5`j*q z<^0a(rSE?I@b>%q{PJvDMw$89<^G-b&+cFBcH?QT*EjXv+3?F>d-&GR9)Em2Z%bK3 zn22i?Auc{9vf8v(C|PnxX?woCOL{mhs*rVF*Sefm(F%}NjX@dfvMlqoJs+mBoGODV zgqT16^u%7^STU=DN zO)Mq~y(gPDY8PV1VdP;b!$f7^GE!uch?s^_hM_R=z|&ARn`s)yX;U^MZ-z3IQODs_ zbzke@wCv~Q`Tlfuvp>JMc=r6}XCFS~sG?QXZx!a*7%_Z`d-dwd=0O7w#37v6*#_H%rX05BI^Pl+s!A$i^=^nRIUX31 z!_PeQ3Lu-2nW54^JphR+L&tI0OvCwZ90*D}*Lr=L*L79Zx~dKKArAN$_D-yiTQh$I zLX9kvB^oH93J3s`mq{nA@o)EY1sSYPAp5DEyfA^SLaKp0@91M~1_kC)2pavHV8@4k zu4w0TRy%6WmspEsvi$nK_{RvvXTD@S;5zJ56o@%-psF&L<7xSek3T(Dy}Q{k5f6nG zXCpnl*ePg#S}c`JL<5(h7}T^Op=)!=;}&nnpozFmG-7l;fn1A{thZBbzK25b&qNo{nDhVVtu;B|Er=3`Yz z#ay+Jj)h02&B&u-t+I;Rl^x_hZ|hma1&L3bj>+2=@H>(G@8Qi7x}#y3us(?{{7(}Y ziUs_85*8qkMjlyxkD%;qkf*4Ljy%Z83nKY6Mch+}MN;mOB6@^JS@w0i_e!l3OrFlf zb2CQK2;wLMh-^~oU*d#(DV<$V>?`nHXnr0V-66x!s0L0>30A<8wz05Ot`wFgmbZe{ z#-$A8;)^YejdvvRa$BToE?R?#;SJ;Ax15n1gIIQ!I#J-|ULhN4I#Uy>9S;fT)h7*+ zE;+dj)o50jOUg_KHBUr{#6|GY-BB#eh{cWB{es;gYnM?<1Lg{zw_O|&dNX`;J5-CW4?>Kb}txKGrWl%2p{^%UX9cIm`s(*=hVRXachDHO?NY#1Z1|@T>+8)tc z-HvCmL)FZfQxGrd-Q}3N97lSNIHn406F-koOw*bn(`vEm1U|{wT&TT4A^{t`Z%M$k zJRz}Zxv8g~eWX7D2xEx0PBI|ktDt04yTjPzB9uEmOHl!J%hTniywW^uZ?j7F6iuD8 zqacJPY2?$LENz?3&or~w6R~5FDP2o-BA@EgVTVkddv95!d}wE2Q#|sRgc{RLLc?-u z2u+u#((a+%Uz&t=p08OTa(9&S!9l3z#UimA-Y=*dW&YuSD83q&%=poCu16q^rWAyO z#UsrGW^qpYNVl7S3AY?>6Yef?sm-eNd~a#}!4nCp>Q(pc*e%cj1VqEIJKvp_RYXMU zVZV2$t>9vz34y3=HWj4vyuZArDhb8BIhVx-CWIx7hN_n07^<$eRqNCtRWR`G&iOo_ za6_~vcU9Fcs8%uOsg|De1)Icp91ciTYcRE(<`-Uj_3Yw&sjCURoqnsGQpTBUjnel| zK6$)QUSgl{uDl`tbINR(G^N)Y}-h4c5 z2mSunKL2-r`1PV9ME}1(diTSRug>nA*L4Mym|+zQac9Snuv8t#@$;|0yd7Az4nr9U z4=*;`k)>v3Q_Sgu66r9M?Nko4Jia_!A8i*HhjO-^Mh5q{G;Z1Xgp0lCBa89!10g7; z@S(9;&tM#|J2VMFo6*d1j^naL}lBmkMEbDrj=i?%C)$3FJ!4H4w>Er#|?>-(2 zmqKM=pzsJPL*Z#4tu&yF!#GUCFjO5tq(V{&DsjLVr#=u>sn~3$$B&=x&d$F4jj#Ub zPkwSb)!o^yE;ErYS@1Ac+#HSf-eT+nE@pyd!4rMitAl)GC{495!4H zs1y7cfk|!nj5?rizCWvD+~bKTlL`~7VqLAvp=7YBem-v#t3j$&l{tIHvDpHf*dh*d zrFvjTmSig4E>3KAuSWsqOx+eJsWmi|xCCsW9C@!Qw@9AumuQO)Xr#+^8hE#vHroNJ z%d#HVx~MK<`8wso1ZAedZ~+Usu`rq>8aI$)ud^8n)9D#6*5+tKEdf zEqqOp9x(f?BKFp`f9v=tZHiOjoD*XO}nAFp;I5tK8iV5AU8o zz1lCUPKC>WaTv~q;cPn)(NQrl4Fv-iaIyA_9Ah~Ju!gQGDncSaAt9<&=T#4D9T+3? z<)L0LGJ|ezPOskCjLgpui!fIn-hNuY^ujpqSjUNmfrw{}x>gNXquM20BGLxpXjg)B z!9%EaX|5DM08M?8pdETuw63Nkh}yAurbk5fKvymf_ZM<=3wNu37m{#R^XCW)7q2JE zb0?%cpn31qnf4Kr1zV#TivIR=7rYqiRV$q{tu&N6a3A7mMoO`rTM>>yW{UhTg-9CN z7ojS8gpLD7=CPEqU=>-bif=E%?XI}PSt+z13SPRi|(%d{^vBmaC%5-x+hMon!jiByTxGl~$Cft390vMmw2!mN=C zl>75em|TnFt%zV=TVf~O9YTcxh1`C3mzF^np2wOZz_bTa{sl&&tV}@zh#q`~dH73l zre+{+7QmO-COHtijXDM3)FywSHwI8CQbH~&ot^OgHV4zKqzQ2-ql-im-?x|60AXr+ z1xU}5lImo$FQXOxbV8>sYuqSJ?L#RXX(%kxfdU#9P=ttU-U8fx?urZ}`T!3+5abq}ro>~U4M`q)9%Vucz~h)7tKFa`)m5kj7JFOoo- z|80B)no;WM<_=@?ima|Baq|anFDXnF&Iat&wH?)5Vav$c3ElR)=cEKTCp`E-E_6;bE3eZ&0-I?w?KankL*a5d9%WhG zA^Qmufs}?}INwy&>!+9V{y?gJbt4FE)`LL;t+gtIKt#nfBS2Y@kU>-gIL-6%Z~%yl zl{}EDsEUt!P$E#Zm@93BXXPxfrFKiGF3UKL_wL=NVUTsD&VPqdaa~iDX*1sJ51)SW zDJ(^`F4mT+)~W!c)>`Z7=H_Q_Z#SE-|MIVF&hI?Cyeb9jx)O+)RIt{S2}BBF6)9sW zpi$-FcDmRMRccjKRVdlz)tH)SkS7eCf(k!7$+P`@?_%fOg~erFqK{7%fT&7lD6uYe zT~}*%a$43W&#u=hV<{4Hq}8${mQNuSF~_J??08pHHk;|xF&a8RLG=RPRZwise5g{&} z7wAkVJRkM1xhOh362u(fvzv=eAH{ePM%x1dBMg~XyvA`7EeC9FCX ziVe0jy1`lRtD;(09SXg2cO#1ZT-oXit;opsuCST{i}ROdUC*`;zw_n&TW{Al-`QR4 zSdPmLU%&J2;lah`;e%z-t3$mwE8qCsy`R2z@24MMj?+$12~46~XcbkEB`;J&1y$Bs z>!XkNWf<1AidHV9!oo^Swc7P_B`6bD$g(V(?WPQ@UeBc!c>jY>KEC?e*T4MAkN(}+ za$UI$nW9mzfC3l4v*#*r1zgoG2C@=VP)ec7%OY_GpOr9?pCYzE-jz?p?>)f@M_@NW zATA^zLQw{&kW~ko3HDsN2v~VIiOxK1?p$m(<3KzVP$9MWYA7g-Dj-VN#HNEP>b)ne zVu+L^0UxQ7;(WXP@WYQc+wC{M{gpre(ObvkyxVQ6tc8iB-ra5g^sPt#=#}mN?w4Qv zhrjlv|HJisvp-&plPoK#FaQx^^#I%uIS4A`nHZ4iRk4n8mf!JyZiOv3lMcm-r)+*O zHH~Jr9!^w*qy-4LtgC_ze5 zzh-_oQUdlFzgXd4SAe{oplZO~2gYvAx?Uh<~18UAaZpo)*jSq)d^l;3MpR;*| z_das4*M@T<0ASGAjc5MRW=m6tsj6M}9S5%90Z>p8(#kvw?bo`mv<`#S46aqU(wUYg z$Mxzc<4}ky(`g5N?ZE|sKDxY_#&Igd1w0H4y0a;--#ahG4*GSCVd$z*rBANcw=egK zQbA7+^TX}%#>4YR2iz!O;LDZn@i1+8QbM7ll9oZoQbyWLg$h@qVJf8z(a*61(g_U$ z+BKJ!4lgjDiCRQb4m5)~Xi;_gxu|YJ@31-mO}F7~b9|Ay$o^w}h^INHwS6zR76B$9 zl?jNhf0Si_iGZU5B5{8oRiT6MrZ+_J%tD3*LRs=%mO=e(N~i6_z^wBSU%nJlkbeGaVfOL*sFrS%%Ox-Z-f#Ed-$5A!WB*ZwVjC zgb36+#FSwqy1%r55RRc;N&{szvmDmAt)CQ;6hVgv4V#5IPD0$;xv4=M>1sFtw6`Hc z>CoJGNB1zgoregki@4(xgwkZ3@itzds;I4KGAUt7oCct!d4mznswT!nid?7mpNZ`g z_u2>-FRJS8jDM3NZGk)v|BU4Hk`y6v6Km~gbt_%r8qq((Gv-N!jQl%6&X7Lwe7DE2 z9lrH=J*Ck~W;FJNn76oqaxZR1@-Mzb%5+bBow~<&S%6z|5y2|wY8}#dZ4(Ab)GD?!vjH2sVOQ(ZJ*YllIv?Tc9{|CcJ3+C);u+|F|;FB8tFmXSqfB$Q>;I~+w3si`bFRY zczP>a3L2_&tud=$<~PXOGJ4QdO?c`x?1bJzjFeaSh-+5YBmV&bJ%QZTbXEP!G_MQl7SG1XN7<-&Dc$FbbMbAEk&{EIi=Usu_% z{Q57x@xz~g<+QAe(m(lwH}|Ky+fA!CYa*$Y*-~-}5`&nk^|jYte&ODox-QdDit3%s zc>ipoX!WS6r9_H#I}W?ev_G7lUL6mMPf49hxi}xKVP@c0SDeU6JDfwh6JsTls#ZkN z@GTJ3!s;F#HDjtaunZa2SW}~LBv$UB8p>;300flqsluC|Mg9jM2ta;>=y5rRt?Og? zLPUiisP5@Wfq4-^nFh0rtpK-Hr9#DB9}`4GHv_+PXZrZ^G*=m@Xg0Azb7e**QrcfH z_g}bpN_7jTLh#es%8q9 zbX{u|QJcFeKE6do>nhvLMvk)9)wn6*UZYkaR;I!v^Kss8chhEjxY`qwHP61fx_SGZ zN8kDSi?6)?^4ov74ofx8C{6x8C@L?|${q{`k##S$4Z^g#Z|tXc~X} zPe1HYQ7V@o%30ui%hl;AT7ck&KOw5Qeot@M2G^F{t zr~oxv1n=JMBI*WOp{!N)=D1X|x2nTHW}j@|=GLmnyy_|KbvutyIg@XRHL^#tOS({;&U0aS$*fKTA&<#K@brKmTVSNB0y0;##9k_Ih%Spa~DCm?^aRqaK$CArauM5z<`5wL#-@C6)Ma; z3|tD4fO*&qJQQ%DVWhFrG!fP+x=3A>K)4Y-u3AJfs}|KNHz&S-wmYYyDneXUtLj>{ zRxF~=7Jcjax|s$Z=(5sAhe|wd%2rVeVJuW=EF>eZP*N=eO0hA<6-o*wCavUwPO2Xg zvuLLSMw)PaO`n{S(Jn7b7;Z&JUC2eZs@XI}H(I&Ek3^6n(&2RT&LYubf;2xy(PGS> z8v0DVjQ4j&S8>WzNMDnjK10c%1*>5C*C!5IK1*Z`m zwU&{t%=k-xJOxqhTMJg!!ZMaJ4j2`SV09SknYUX(4iaN{_Jcg6)=X6-(s3*10v{>0 z_QOO&O?O&+O$gYLlA{5O!~Dfp)U!Wf+K4zOwq?~rSh+^t;HdLZqioQ_DUU}|{CWU~ zR^v%o3lb^55bzWw>hcCIej%SNa*Ip=-CCtmjN3+RUd@^YAPctSd#Ovvl7%kXLcFkv z7Q<_VpYi2PyoMu4ZE1vwAT5Kr)SQm1lnR6VV#<=gA->@9t+CP!2N8s9&kU(oL^mT3 zTtP9r@7DV5lq~uOaq^CtuNtTnEELc9T4ja?vRCrT(Fjm5QKUflRGY`%nlSbzjvqkr}pl z9DK_fh1E(+XeD$}x}_-q+SI8dIg&sjy%gfEap)50neugEnLF+v)67mUL^d+xu1pIi z|Jx73-o`Bn3a>;#MaOyh%sh_K?r18WnOYv{mRlR90FDhgwxkNQeLb4q#(R6qlXk87 z4N6ktHjm=zh;*B?yZLCRPBY-)9nu!GoL|#zXtz1-{*g+VnMDfsoyU8jRLxP_S3R$m zPop%u{qx;nAzF31l}ri+UhL!&O?zA!15ankDD`9ui=KLwEa)5=1rL%A1V22`wq`s0 z)|B4n`EIFeGs6)V-d>9zJancsy@@?J{+iaJ!(+Dq02GV>Vy%H;v=G9bhU9>0JU`=cTu-NZm~+vVYtZV?7ZtJVY(&h1XCg=?*=eF6fYPv;h*6i- zD#}Duv?_@@5YRAZ0SlpkR)t6f*)RkVRaBWzr!r3W9z5h}s5TAOQ9u|M53EU{<2YUK zkDq+Ti#{=1&S=)&P8LCi$h^iJ4 zs}$9HoAF{ArOH~R3bd*yiP%s;o9cyX{#*zO0Y5(0XNUD-H?4N@lSmYHIA4V-Xcb*W ztBQ!!DpfJB)uuy&==!icxjY!jq*ftR)mnv!R7KV*p5%m7wd;H$!o+vZHrwsyNALXX zlP8zN^7_MzfAH77b1_n3`ZsSs{-Ym%xZR#h*jpo@TYT>?L{;S8{d=#x^n%otK@2(@ z`N8=#a2i3ES`)&ll(X%0b2vTUFNZ~+T^;7R?xyi%b14Z@j4Tj!G(sQOcM{|w3%!SD@p+sWdd^<#$~OwO4vk;)!`u%(?e)4Wz=3n~$*Ury|x-8pioC-tN zv+Z;|>3{jhpT6^a`Ja9J#b5dPR~KR`1CJw^xG=c5=H_%shRtutKZS^hn2Ael%w|Pe zfJVk;A|ioSpb}M2Y?2Tp>eI|ah``z{sdY3U?ce3vK%^uBU8}C5^HNXCx>TvFBRT4o zDQv$9@(PI6Yqs8e?jEU&Y$I<&>USPB;G$a(_0QPho!c@K*NiEvm9wgX6y8ZKV28j0 zRt<@_$2R8xD3l9rHp4UwLt!FprcqV*hh<$Xr{HCOWCRodB&xOg*-I5Y)w&2opn|n( zt)Ar+fq<%16D-m6aEPeb8~Ig{Dq>TEj8tNc-`v82$XmOKl7w`pXSYuX$SaE|f3L(Q z9U7yMC_k^EdB$$LB&{(2;3{M}I3-f0T2;I@+>C>cr&6X7)2QQE%OGW_Wtxdj zwVEFn(OMybD!NvwO3JJ}&`?S#WY^e%vFJ!zoF;~SYBs(grP3XZJ8i=~5Vzl?`A-Z_ z;d~@9d*@lSe-0&#RdlMCoCSIB+lXQu?!j4R8YmjViB2Ta#`ez5ZN4v*^40#S_8fQQ ztzn&$0WCD>f-&@_D?Lh=PD-6^7@PtF6HGVlPBJ2FQuXp@58qwCoeUW&bc6{E5jl}i z9aRXKjVDyqx$0r9hgnv^z_c67b|{5h16!8I^E~k=Nf!~=ow~5xx#q^rgIs46wWs-~ zHUH#qGlEN8)CpAgui#GbAiqb!6GdFDO=D{hpziIq7K-(E&L&pfxYo9iu}0^#DPoYU zcZiqyucBLy=dy_(}4sT!2;j@@UdoHEyz*?#Jho`T_f*VLKDC%B_; z1jsbQtq;NYkJw`T;owMEP71$+<|$hQ*pau-2~fw{P9Q=MZc#7cK$?_WN$;l2l*Q?A zRU%J6*g8@Ko6pIYrgP38Qan&2liH%R$PFEz(PMzhK-*+Y^1aw0f>ahkyoDne!BcDc&*Vlsk;;I{xzN-qDA^2yv8nOA5uwxOPE4sOZ!>}UdE=i(WY{On&@9X?y>pA& zBHml}p%cOM3u&gzkTp2kOHXYpf*lfu5eY*R)DY;j-SEis%{=mWJRIv<2~bfcs3;Xy z1$dm!&zR_VbJVpG*e(WzZMFJ46;VHKg{4%et}B?@y$ZPfnOE6u%kJ*(>gh9?#Ud)e z@1?3&m9?~o&pvZRub!sRT5Hv{&g=5Z%P;TlTrAaxUTT`lP@A;iWh{?>_R010tErTA zo>ei74A{kfm0DHS~STmx!NEJv` zCCrr`Ke?WlWhkYp5R-_QI8?C!nXT+dYE`H;FjU2ETkhXEdwhBI)_WfkWTN%&{NU%m z_4zxeMV>A4&wlq!l~Nti<>@!a$YYSAitNsJuf6s%K|spHBk9Ato6SgZfZyRZl~VZ5 z`F4L?pWn=tNP)v)-fpnD*cP^i;BLno*TUjx`Z^D~Jw+{wD01t91UTRn)tlp~`t?U- z7T&%oK4>)5+0{pgh^eT`z~J+<-DE{7RGHX2z#*`Qc8)bHvv;r#J3y|!mJ}whf{&9Z zLh)%(05Fuo?A-*t4^Tjk3W3OISrTE}QG$xrLm&2%=Qp3X1j`A^?1cka;c{OV>sKP%@O{>87q^3(SpAFbEnS~Yy885y>z z9G-4MUF*8e!#ENbt$syR><%)sm01;LRh@m%=4lw#WnGtCxSm=0<`OF!e82n(Rbsa!sN0;aP&=Qq!;EkD7kP@$p#t*dA$ zmJacXA+qcGT`U@B+&1Qg#*0rvL2|T2m48*1Y zL@R^iZW^hA*hAewJZTrwEZ9|M_DDuy2mXG;S=a|-xVyE3ityEjZWW5Eb~D@R&HWUP zDBBCDlGxQ(Q6YFUJ0;j00%BTgRn=iA0-fho)km_}SVB^}uwY>om>~+b-NB7E2-Pj1 ziZ^sqNDg*Xv&Iq-K!F6%^pe$>giMmv%IBsDl0ui$zKPx5H@Z1j8Ojg;`%w*`y zK{Dd5Y7}int16cp2Zio{C{Id3*7Y^YFugv|VhocaCD=^z9Dz#6WifHI1@+vyfo`T@ zq+u+qG;pnEAOS8I2s|*cLLn*)VXn-+_komIRV%FK-B^Lz{iLcu!9LRjQ58{1lvFL_ z?YbR+%+!Rv@uJpk}knRyOmJ50A({ z<Ionqil!C_ zQliXgMrxqR^r#p8FzHQ_$pE8?5-hM$griRh5|$kuk>|&al^V*Mkph z-$Zs-X2iYc?7apbKL3_4_x!I<*w+M#$gtD=gN8+fn}Z;<-7NSReCv?LGmTRS9Xz)? z_mzA`NI4Is%+*La&K>ZB8Kqn_-!fmT*tOV{a1Hi(UzXK2hT}(==CRTCJr{G-i7&T2- zB#x!>3|(5Qc4o^5x^f~!M|3<^b|gLCwu(OZb!w`v*DK^NnDqp0?jC(QP^`|s%}CN} z$HQNwV_F?|{X5(0pu?Sg`oWclLXv$6_d^dtS@Xy7S6deQ;?Ot@Z#4|p@MgMFkQ4>P zsv{x}2}UHKR}4Om3P2&lG48Sc2 zv?;1W)GzG<_1#`BcgM$fPrHb1dPMMcaTOx&TcrCvG7)Rqs-SXpwZFRByYO}8LI4r7 z^rj(s)`Egaxs=|Oh~{}ZJKdC8e)g;9H#dj5;MYEQ^q>Auf1O0Z_{V?x{Aa&FnKwjHbUn3oc$;C96K%Mv8RZYsf}fL3`M?ywhOcj%LixkRTjiG6L4fG%NFEkfH#CM6?m6 zFnRD&>wN!oTAIAQS!yZ%rnNUVx$D#*yWMj3_|e6Wf3*7_{@ICCLc2@YJ$rWe;=#pd zpDl;uyGuUVY(9Q?_QOve|KZP{md$C05UlzZ3X>=`@|+vblM#9U=F(amHu1a<>K^vP zE760AAVOWXC)=BT4K5(%LdQe<;>)l9_TTvSC!c=!XK#MSTtt)#k*Gk6=X6nA+ZF~A z2QZbsw7x76#jb33E_~7i4yyt;fPf77lDQjeP6Q&3zSXO6!75l6Ql+`pcQ?DkZh!Co z#k*%OREUekZ3Kcqg;pU z{P=r+_19lq?~dEE6X{KRo2L3d{_N$W^UeS6r}zJhzwy!k`5>=fT%Al)U!3Vf;1!@a zVF?gWIBKb}pEW4?4+<3pmcAU@Vz^_fQfi#(Bh;XR3NOilv-<7IUX7*ZMRcveShqUqPr-w->?%MptFlwg-HfE z1?<6Nq8ieOa*6Vk63sqjY+8^H7DN~mZIoZ&b!YY|w4)SO@k~0z*|;O!z!`(+ArPWz zrP|St;Y|c>ZKCaKq)yQKsGXhmkk6QMi#21rR{q}cyDL1c1dP^yqH0o7?@5`e07nuwq@ODp>5|>xdoOhxlaC>co~0_# zTG|Q0x|*n(n1(Y^tHY}iq9B~pK-j_H_Uz^nlI?hJ6zET=t(uR>=#>)ex~7oz`E^IF zX&y6(S=W+t^yvt473h$vvjoWcFJXlT(gh-9i_M%Y4H*Cd002ouK~!~(9N94hj6ovo z^g2j(bK;yHhQ}{l!dw_UQ)MTnL*vF0B_dBy7*>dam8M;RJ(w*}sKeCT?q4d`@uXEUFtJ%dK>hRZC z3+DIm;)e5gy%^J$O7g~LNP*B4{MD)6fBSV$bO02ga489Ej@ru<(WI&rDl;nP_j_*K- zsksPWX9vAG^dQ=-kLqebs^c^9$rPqB;&6@r*x)k8CdI77Yal)!GDJGeo4cyyTmn_Z z2waeF33H4wC2nOkHQ)&O@|*8~hGq=&O}a8m89gER1)tZDz}N;1Jxjle@Ze*M@+TDG zh6`E%qp@76O4ckZ{_gJ?)?;`KT0J}*RM@2~a!0<@POpV!lj4@zFu4?XA zpqka1hEm1yhIC}OpT37yKL>z;bL?43g|2kg1N5=iD*_Sg&&8*6KgRAjE?FOX-CC{~ z%~(!b2TqVS<{G0^RZ*R$&Agcp$73O0j)%4^t|x(vRH4M1lMQoehhsY&^FoZOdg&pj zHW4S<1jVQ>WdBh!Z>pkg>D%q5R^DIT9QQ~2Y!{C~A~{Z_TaQ;S$fRA@|48f7yNE2U z-F^7*?BYT+dPL|-#F3EzNKtrt`Qpvh+pDQetu-ZZsUji}5s`L;F3Z)M-Md#Geg8+F z{OC81ZLw=scE?b?Gldnx)84(_{Bb$XBzI4zN_uR)bu^)-=ys98uCfZc7}lpQAm+W| z>&ty9TnhDWq@0R)EgQ9pHX@=Bk*-|@(nVF9bOqWXuisuu9P@^08)xh)cBj@Zfg$>7 zU@CNWx_NVT^VRd$rA#Na{3n0=H$J()Id=W!o5Mf)=RYGZN9lGGO1s!TOINj$^}Vag zlgE$FPPWUkl)?}_-`2b58+RRX7-R!0jEnP)059L|j$NB*TSQe)x6^j=W(SlGI|3I? z%xWT~!S1WiPs4uM#<*=43w2#adsk`FnlwRIH1SJYmdVxaUYKZa+M6_yE^7CM{rgr6 zOW8n}3Pee*rw2T!2zg9{r%KKls6rxZa-2;NnYjo1jo)$MFH}{Xp0yQFzl8zn9bHz~ zRY^se=-%0MQn|J6;vbS~7*Ir8SB36(#{==jZ~lND-R)P`Th^1l+}mH%=Rc=6ZzsX^ z`@_|ZY&ZOqA3Qv%1-%#R3}67%?y=fP6;QAeh^3)5nM(DJpSC-qFgD1tW~&>>bn;&AKbmOnI|SCWxMv* zMFp%>x~NCwo4BCdHaL!eRS{QWPg3b#H>oH z9r*wL@w0#MXYYUdc=KQU-bZ)uo*k5Vnv`w&c9Y9S#df)Tt5n8$&m%cRV>km7wRv}Wy zrdFhntT(H1B?{Fp8DH45jg5j`#Pz4RJ63?*#6;Rt443>UC9{xJ0WS#PUl~CH;@+sJ zQo%e|WY`|tSAOChw=7#AzV4ZWuz3c!viz0@LMw!h$S&dV25~~#C&tM zjt0b8)f68yUKYA2lsswzd7o4YDJ8c5FATePUJ4hc!e9oIGTUud508EE41n3M;Phiwkx!vRr*9Rl;_ zjzfuHiQ7SArYTC?AAny64~G#fL)9vDQqD8iG^Z7Xm?J7kLuS%TB%np~W|2daE+~xc z#ML`p+f8AG)o*Y+$^j~F{j>6FV2=Ebz(wi!MwINCSqk_Gx8Vq8j(5dgYjAI2x#R5! zzCcq{!o&}g6T9nTc3TGGaN1|VYZDOy7glggi?b$&9bDy7m}LWeu0dni{N1?% z!{)~3s3S4o)|ka$HRE^WfkVWOh&)d}+d%-ih*Cj_RO+!cFwtd8>m=6=o;<1M-k7j^fPv61ihk^3$)hfwPO4KV#btP7^wrX3>3bM zGIU-^OD@+fYY^*&P^MVMTbh83!4ctmhRJH?H4U2E4a#_XB?HKf(-0G%bF8>i2`)~# zEM5UO(4$$Dkk(w9kh^45;vWrpOVBqwAB7+S!P`bM90e0$va%}LqT^RV_aK%Kgg7yD zWe9f9tro=#DWoF=Xy{T9Z5eIlq$yV=mwG+VWbF{jozH|BK!g?Y@#)~!^c!LyQ_zs0 z2s3;|gR-PxiC`Z}yAtEd|HWZ0OfhquNj{8aj8|ur5z>`QWpYX554o5j^L{82ROm|g z($9tqK~6j^cML9$zd8n2fjocOuTQ#VrUi4^Lbm6-#VbsA6vL1GcD)?5+c*%(VGZx~moW2D@$p-*w@uSwXYfm8&n(h$9| z`mqYb2g#w*h=j~AljLD0<$)um?d>YWINa=SZgy?Ix3XFU^?i0V zgG3clRZB2ZJ16pMp=xBBF2|)z^TQ`k>Sj7D3o~a@igi2$d7U&-EoHjd9lrkhRquT> zQ9HI;n910#-rJ(Rp&t%!pHboO{?^~P`}oPt%}pRF5Gk=1Q%kY}&O}75cZi&A=Ce&v zt5c^=u@Mmj5_noc623=>-W}v}-|pQ#=_0D09OrssFBPbIh9HrZ<1uPZiTKUs)o$Oo zx?&sX>b(caBV84$T)41tI>M!JrFpJY>*t?8z1bZY?MI(H_&dM%U1`!l|KMMJ@$~EW z7w2cK9RXz`Ys+Ch0hNS_q{;nzcOO2u)B94G8G17D!}EDA)_^uu1RyZ$*~v6je)jt2 zuqc?8)(Hv$SO8B1Fd1j!Fw60H zQ$mTkFpMx_qFUf5@8fXK&4;DanOWjEsq+Xm%ixk93WYPj0FjgD=H^*xqmh-Zx1SBw+`b}4;U2zp^)8fKRK6qQa<~ z>F(XLH*eoxU){Kcbz6&Z0>Rw-ao*Gij~`rLUrE!3UP^iU_WJ9W*Wda0-n|ER-@Lx! zGTFU&DrDJn(nJZRuv;FYTDcvMDvkVpwG77?h{E2kHb$0MXbM+LaoyfAmPv-^SCm4; ztBLq83103b8|Q4N^7`fLAAIlAi_`7f;}HaKF$2Vfn-BxFU!zV-jtAAdPb_&eXfbNxFX{=I+k z)$wMxnWnxhrBId~AXlg4PMzQ|$z$&X>du>p%S0g3ro`$21Vxk*RsIRyx&f|P8VCtY z)Qu%~C`RcB?Lsm|g4NIkH9}LQYhe^bC7n=ujZO3htLkaI?Aqnwfd>N)E7WqeRcuF9 zpcW2m(EXf|7fE_n z8!F^`kr_>zBoCRK5(Ne_I|H(F-W4*i<@K6(AZF^SY#+3H+Gz~PVD><7v7i2KR;XW; zRVdi|9qEd;ZRxU)$=wOFlh?cws3@JO+O;aUN)Q|~)vfGo3I#@`%LP1tI&kGS4=WlgU9o|x$OquzLgqXyf z=1M3W-pYTdxBApPtoGlI??!+bv02yyyWHW+ZaUFv3oqIjbVV)$iiD?S*-?b zATv+wDR%0 zc8Nn!Midu;0mT4w^W(Do&@fv>iJ(s-v?163RV3p}?5X5@$>c5 za$5tWUx%Q1s(N30qVhC~l1_zm)t#`fn3hlJZ3Z;ABk+i3vDa^6D%NgxiX#M1a5t6^-sJ)*PFR=(Wn4JyE`cNE@8@{rPj@M z+j;{aOKZo)l~0ubiArHS&vo8F<#@A`rDb>5Vfx~Q>Z$ta!B#FkA~sRkY_}a)_D8h1 z?wOJrexiEPt998tL5Kq#x-Du15=);fhKDcL505fN)i11kceuCDyeD&=4yEpG@ zVOg4yR#u+3EsL}xLHf=6{p)9sKKl66AN^)mS{9jVweoisy<}E~sxTKQmgDh+arbO9 zS6&-kL?Rp?n?;QiZ2m!74%{+hbii_sM(TAr>0oJ@Q&Pp{tX zFK-$%FG~~A!deQa(&en(4|!=D0<0^j0>&K#kPg2IK!7r|)yvG-SDEPSWZukbDOyY@ z%!OAiHbY98*c#BN18__awS-vIS>=ud13qEPUI}p}hJ9Q;u4^O*DTkjB% zDQ-OyY(1682s=?K85n?wRP_9$9+v**sv*0^LZRq3FI5P*&~jLIRL_3+{r+cvdVKnP zbLVUlxj44VUwn?o54Vq=9NyntpVss9^3xwa`uSI1H<7uNrAq;nP=KypO3HS_oJ3z1 zQQ2dSU@xVC`#cwD~t;_L5!>$@L)`uNqW zcZD{>LZGe^2?8j!NEcO{=?6xqV7lVM#j@)8NKtxQUVZIHU z5);?BtOh_iV<%NhEMg{r6tbPC_wU|QTOQs&-MxR;0U-#ihF&kVpfag+X}t@WR;gQo z9~A%<=HA66SV2tES3)jQ3lq_c7jKut^6=69xz^WjFZ&`WWi!>w{qkS_%P+Tu|HB`i zzu!Inhkx{yv_8!&(#UFy!8Ah2n~sBwYGh`RM3E*6NJz}u8sIe?RpS(b$c_~=6VGmv z5oxVuE9hb$w9XGjgqR`?#Qq@eVoZr{=yWzqoDuq-gi>mmLdyJW#$ z1;Vz@PG-Wbgu6voWq|AyC!Hx^l^Brz$d7cQW?KM>h=_WZ!aP+k(04rcj&4a3M%ZAuKpfE!h9!HX&jTh(<~ih@jLV9Jo172%+KliO@SoO%Ued6pQ(G z&6a4IjX})Z21n$!&ck^EbKz2!)~{}kt#=e6Ff&y~HSXL{5Lc)3M4{atW|i?Y%w-T! zzWlb2>}E6YxLv#UUr}MI3_<~;Z~?0_6pT``@da5uLI!cr5DWsd-^%BxB+kYeizl^# z{3=Q0I5$NcE+3sxy5hJT$DCBAtz*GEng&H%$ac<8HoZCpzG>5)U zczIf%v1!4KAQv0M4pJEBh_rR}!*T0$eH{p~8st%*#V$shlze z0(2eBa+Im^Sg8P*VMSM6Ai@h|anGR0g9~u8OO*IL_Gz_ifxIK$4N1uLSt~>&r{`w| zw}PRaj^I3+MpzvVz&VaDbbLs?^65zJ@^x^4fuW!Xu#g7VB?dlOT}ed%valMF#;hqn zV~VRk43=c&;)ea85K*@!etHpVLP58ZSAy{QjvdH9Na~Ayh}IE_*ZZ&^coAItXh@hl z-PKkg0u4vXG|1mjo|G*Np&hd{!44FK5hbO1Cn;ygsq1t`3Te|&1Ip}0^6yaQA^~oE ze7oJYq+yTZaq!}!>39a|ir`t-!%ZWR2+a*p4s}0Z>b~h{5bZD^2Omc9; z5Z+?t$dhQ|`8NG5wWYZ+3We6_hYGa_$=$oX3Dah-Q@z^ln0eVR(lbg)`wB3olP#Ch zmqR-otXQ4TZAd~atxrn<5<&?ZYI!cIfQoi)OW&MrNZWonswmSfiIFIHn@7g5Ym~N* z_6ZdLU0a!^#~*z(pPcNENA|Q6Um@~9+x4v0vg{8pp1tUYWqYz+jzojjSpa0^^ckeH$x6eMl_ji8lJ81ImDF4+z|Jn8R;q-L7EX@jP2cY%) zvR2>Z$>Yaor`z6-b1h7IXFJ_LsfC9drZ}&wtar}0?{AjZ@Ap*7VOdmAJToW2T{u{-Lzxpv`p8!?lHq>zCLNfKO4Kk9fLf{fRXUNV z6fPI1)6KCjP3;0{FLQQkIsJd$>Try`P0qGnT1cMM3NC~i%AB7UT6kAR8-j3~fq&%6AaL>&- zI2GSjR!cW+<6{@}r#*Iz!p zvBnjZKxEBWN}Wj2mPJk6*e`iHU6$k$j3X4!%v+xq5&-S3m#LIeFW=uROS^af&ZGMm zmsk6JYjQlE%=PBb{{A0)G4ZGW>2KcK9S;A^A3rOMI!)5LMR*4EjIS`Fl4~*eT?+e} zm?J5~h0(x7-5hgaQgPjhZ6~1AVp&HZ6ykYi5w(S8E)}HGJvWWKRj$v79Q=xAUYu`% z*C``X%P%GsSgpqZWPxHcJhNKBiMPBpNFa|j@U;9g5R8yYCQ4#-NUc;)l_l?eF@S21 zIInWyQUqwNNmH{^j;sYB>aNQ|o`;m?D=PqclS=cX{%3^zA);}63N&c|yA^GP2}SHe zoO5;}AR=KvRl0J*XL}xv@V_w6m7(a;MFl;=50`l=z9kPMdfIE z&miK~`>~4vOgu5yLWNnOY>9a8pnalVTQMjBfJAj=+dQ~dqQY>3oPa{iZdXNhQ9p0& zKqpWsXi(DNJJ{`hVJ^i8I$H}v*%py|4`?O^72$$Hq~`aTNExM2EmR9gQ3=+4l>qB$ z?DwXbdxsha2jxP&p(}M|08MagO5BxLTcg(8c?AZv{nr4L2ID9~R7Aj%99@cvfyt-w{gIc;$op&~&^S@xQkSf-hd>d7yIG@HE3iavh++`{8Cm6pJ0s-p3v&B3*-hB+zw6 zFJnFtzv*p~C4zY>N84juf$rww4xExzw5zNu-e@tyYlh*jeuL-783nr zJmd{)S5xuPlkeS1_EU$#Z)3$kyWIPphiLl3I*n;h_XJCdQ<$(z$)tsYN@z7OTZZzU z?rFcxbHPZ`&_IT&6jxg_m`*->C8oJEKEm*nq@jjG0#_@NC)>9G(Tbw_#>0tLqd@#8 z8E0P*7Yz?#;#I>@n%eqS++uJOEBgaID06cMjjECA3Nr|;*qktqI+ii)6VX`UVe;Z- znlhB{B#<@3LP|l%RY0<_u!FO3bID^}ZvErD&uaHVRy4d@PGI%AvA=Fm$NC^NFP=fp z-ncgi+4AwxSln36v_`g1ZrF3Cx_=Q>lgXuWG>c5B_w?%X5kVvrsaqw9%_p; zwhAuN0kmR&!+ysHa=f{aLqw8J$9U>$QP#PX!>+G2CggDS_{g1IsRoh{bQXlx#M78P zg8K89QHWp&3lN#h;j&gb?%V3rikW|kx#d=CPHnXu_yv&x3U@+J%l z@&hMTg^D&2g2HRIsRDG^FAttPx&QE?2uST_i*QJoTil4l>b!mV;;Z+s-qup=Aq*^s zqx4SNr5_<(kJr1`&(7{W_~b`FDP`X6Zz>nBD2x&zVJx$PK)rQ_J~-W+Ox*j@{R)qZ zg%fkCB3^!5R10&{^787S#8aUrQe4r)T*fJp6;U$r?!AjxM~HH>TQ0A504=QpN(>f) z6_jG)!V^U`W+H&qTb7Y%+s>QAvHkLkXT8gvqJQ^yKYMa#zB$N0{)^}T`p>@F%=6Nk zjZ>N<*T|lwc5HX=-+OTHUTeKDqhsrrSV^=~05`jJ#n6kh%~AB}>uV)$y?5!PCHjqq ztqaJK5rT%Ur;btBHwNGn6qd zPc;K+k4*9cPN-d6cp!?)WMMUp)?(GsGS!{8(*kpa7;?~-3+FX44?Y22-Z{KZx|8Ldvi_<^&qnlrS ziTn5GZ-3`_z1!{Pi;Mcx&mMjLSxRF8v>S`Vw0) zDL+vLZMX9mUp)W8Z~fZEcC))#n5*~)NqU!MX|468GplrEX6?kxs(^FffYoh`&X`<_ zxoRh56^>840=?FHJT9+ay*)iUJvo^+m=62nv9*&rUGA6v$3Opq@#+8Ocb*i{|MpLw z5$QBftt}LhCXrWsXQE>D{K{~QFe9Q=O5sw~`lov`otWRTsy3=%P_<-KiW4oe$QhOo zD=JK0C@6Y0*h*(ImA_OIgr+{IYnvjp59sPf-8rlQBgq>(`Yio%W;n*#-6})_G;0Ex z9LWj{sbA|1OkiX<5fq)EKqaz@W=nI!T>ShO&`8jU{PVDBZn0M0+zXS(!YB0s9|f_O zamX{wfq>)6e4s<*_{U}riiIdbkl@0is2rVbH}h0V(ZaT&R#8q1yCqUUx{62>?X8Qd z6r69iUC601JJ}Z~QSWlSKX#GUrK>E8TKH@`Jvf{0oz8D>mUq`nEo|#VCXseRLWpcm zrHIyMiJJq++H!PEIoV zaJXel5oW~!Z*G|#CljGtbx2WeQVTI*s#KJE*REE*F44c=Nw;V+KaW&H5i#?KLh05*Qf{UhXN7eg2iZD`XeZ^-vpXUK?@*E4+$y;u8V&ol zeIws6Hd5gkP%fTnC0rB2a+;`85D+SXK`AB4Y+X1G1dht((ba^lExSux%DP8t9FgJ5 z-sbuM&Lj@XGvJ}J>o>d;bkIS_@HuqS2VvkTaS1{iB2)}x5Fhr?4iTt&6%5~T8%9)r zP#_w%+jE@7*O59$p;(&vp8l%bCivO_PFLYId1%P5KhA?S{8*S5J)z}?}6uakgnRH7LBbPstG~_;Ujj^@oNBx5;}gevf9E7rZi)!+}Tw?5`T#` zwAFA8%6H`+q|!y++;CEgb(iss@A5MMRNOwN7h2hd6?L7{)r=tt$eI;MV#Uppq|iAC zT_s+|Ac)2UlkY(iPFQcN2KMr=ti>QCBc`@qAEduti)%g;6yKtFdALgq*XesG@n{6u z49|--(H|sNKm|AUlt$BJD(*3)IUEK#*49-ZYq zglRss%(N39K@Frcj#knSbDcKZlcjY7wXMl8Go)5hN>$5do=!I)9CthEjdR(NN4;Y$ zL_*LJW^^QDddJc8`xhr?=dYf>Ivl%WBM`j(C}NjfOq`jr93d~jZ57+lTVs@uzV*rG z^mKnX#*skmzLgO(?o7dT>Y~q|y*loXC+BBvSx6z$`qGH3vqFa~%hlWC_2u_|?Wa#Z z{?2}Xkfu__67M>R-R`iAK_Mw%h_trco%sI6T!DkQ_e&p0fC$8{u|SPID$JJ+?+^X# zWD*q!qO83F(C!v2N{}l+txNRVfQVjR?b_0<(9b*-E|w1j^(r=M1*W^GigxL0!dyzN z<^1CG%V#fMzqu?bKl;|g-~XNOE=zxQb^QPQ!C&`AwL-0cplG-lRVWkpuBFzGK6qm3 zBMcPQyQkCnwz#(NFady`Z0dHq`T4VV9YsZ!W8*?obuXUOHsv>5YD^Es1Mh%X5~zQG zcgw9xh?K_Nt)myB3i8^NSN*U*3{BWW_hW_xIjMVCr$eF`qgfJ;+9F|s2ZxAn{ImL{ zs^1wLgpdMc-SKXl4NZ>#5wcs5wjiVcL(-U=)Ef=XxHy^i2f4XfDswoWn0@$CQd$m6 zJHOcc^f&SDP5n=PUwPiPw)^k@b^r1i-@niEblA0%)AI3?v(G+${Aa&>InO6udMQP< z7Xa+}AW8tUs1^`a+`DsnalScx{`7E+MlCkRIQ3#CbUN-251%|fIo(`e-58EJ9@|$> zU;X+gpMLnQ$8TT%yiQwBWbiWITx!wf*p7#OJY*1%bO#Y-fp&_HeU#PIkZ#L=oM_h$ zhU|G<3fD;#(iVn*idVL@avEVjE&0r17y=PwyV*Q{^-fgppP#(h9pINNiHRUxJC@xZ zt$BSzCW(S?5zSgl2I?ZB(v?_?eKcl4#xD7mi|5JST<_=Br@5ZY^I0v&rB$ZuWBb4V zvtRwM|GiKCw}11)yW9F-|M9b9@7sAJtr4_XR*z4Jjk%JfA&@p2?9LPHc6MJq=i{LgG9x- zD|=a2p&`^xHi;UUWm><&mqa~|D&qDB0a3yRaN^uW#{y%vtBGZ*L=JGxUNCd1RYVR; zlV;8~P&T}er$t5@?V1M0Fi9c>P$HR)gF92_b|_6#{(FTtQl(WiGG_x$+Gbi|S+ZD5 zAPggb><*_5XquN)}h)L%(@1< z3jlyFIv0HFd|nh#h>Czkv@$lOmo43$%3Mr(0mY`EQh&tlyz+MHP!&e&9m-8qTdN`y z7qOlaVus)3BqLC=d$6St*z7Kvi1lddsvXinZE0x7ic+Y|(9MQQ;k(QqUX%x0zCTZe zz{KUwRA^hRr%ulPR!ro|n7CGaM5I+VAUsq4+4GxJmHcppRtaJh zrB`fVqTzWd!!$U!7f-O#j8b&-Bx*=L@1O4(c0N<#HHriyM%v? zEGUG3V-|WMo3adKpCHmP+dT_j!B;+mJLttF^8S)A&&;V;)NmNp^h2mkuSb_ zT9y+yO|%09txScf7B0}P=shBr(AF?cp0ku8X@*4v9;%bGL0hbr)OIQ4aZn3lU!`#cEJ%g0Yp&8XRw=m1+&<4zT{9yCRmU_b z_P{>OJk}JeC^3RyAnB%Dn^@6g6V#6uT;@{~5l8YSDx=zC3}a1@<#WfjuHWKcvGeO& z<4Ji5QCtoGHcK^-|7sJhMqWTBcWOC$#V|KWC4r8GbVbn>yAj!QsRXeaOuv5v74&gEo8vl7dgNfOpR-H{`f3pN6)@t&A+Y;R6<1n=;<8M!XG`axrb zx1+S87-Luo%UIK}85)KR?(32`#&D`bJKUj$t;%%ho$!(mV!K(2Ea6JwmeOM zF2|!btLwuG*yVSQys+@JR%OLPSB6{!~W*}!$- zSyVdpW&i5gJZ(Pt;ZLU1^UIqX=GwY2p@0ApP9Gzp!j(jnq}@9^z1U7-T^R&^c&-Y- zx;JQ)iW5-=I_UMyQK3_%rAaZjX+}9HRq0(F8B^Y1m8Q(JI~=cWc3`SgnWu>fz4yLI zmoCJMWi;5uDpe)#xMUetA3VBKH{};!K9ys?yTyO_+u#4_?tHax|MIV2e(~j-&AgG` z!VcRMJmi9Cm;S8}J~%zubXn$7pmK3CKRBN&nWJD^aZ{jL^v<1=FJE50yKc3X!|}+V zLWK#|M$=q?TdQy;b{?BZS%GmptqRhpevNRw2&ZqBhE{TpVVd(Zw>&8MNlJJzA48gP z@-eCkbEaVXcmu(y`n6YgkD4kM0FnrnV>JqF&}xcmthANVkB^X>rKvI*q7tP-D{}$q z3a`-)Sl3HadGNKNbA~w=OyWaW@@x@PnqhQfHcLB`5`0dp5xJj za(=$-4*Olbb6$V^gGWFA>dgWz47-h6#A_HYied&$RG}hzeRZSKC=yF;>pbLgR7cA7 zcs%xHxqJ8G`s&7VUwX&0=dXAD+n;^*;h+D>&&|eJj*@*_dTYmn91jE~hIHSH9%*s* zF%`?Ovo$i~WJiSpX0a-79#N<$sIXCAR(McUr8l!9Tn$)5p={@@3NEaw9PB@F-05Zg z)mP6xdUWU6i#P8DT-mCIRA!adZ}ugzRc7%8sxlq7VKPX%N(toWeH8-uTDt&6Z@t#a zrS_#u@1^#QOjF@PWiEBMEPwA0ex>s9fBxH#9$(CV?_WNBce9*tW{7~4VJU1x3}*JB zCO1bA5vX$Eio(K#&g7kJ;Uu+^-BPTjRu2-wt5IPxI;Jp_=kW5twHlyc>WbQSG7m5N}~5NWo9t|9`!c5M)ZjITIU3jxN$@2c05g1F2;f$kQ=jv-lrE;3E^ z>|)zHU0?0kHVQ<{q-b4^t#=Uu6(&*X&L~;tUfh&{rVNKk2rv>6Ai;Z^3$Z&)Rd2RO zJ{}_Lh76`OL?*`WuiaKr>?86u6v>h(mf8@_90;V$uP=AI!!ng(uD1{wt5}W0tvuIx zt~}4B7M@C-<~kSJZ0cs7OW`}4`s89$h?*$dfgZ6Rdamr9LYBjFIQaD340Bip@4kU? zA__|2sBzZn*u{aPKZR9i4H!hq3}R)Kxzhc~QsvZ)HxpEsPqw5=j4q;`XqiMHN9e~z zs~*w0t3o;nDx_p2Vgjrl@sjORJ5E!bDr9MQYPpzbql|((RAoaCPRr@Uw4EyxGhc4$ zVp}Q!B_=R~$eM)NJ zl6aa3*f-VcL#+6qfWI2_&pL2*Ep^_<^dT~@6vWJtQR+ET5J;4#bTqsQ)0Dh0fs4HZ zZ}ltE3Z;-6k)Zj2w#$yu9f1PKEpeoZ1P?@797dpIt83iK>Ni0oD>Q^J^*EC(e2-MjsgR*BQw~v$ z+!p_ohvcydG^}6FDp0Db3VAsSO$ZG?7B@Xp4f!^wrAY{>dyv?<@QJ3aVTNJ`ktAXb zqBK7~!bw+iC?&pC@aPug^o}M09uuN0CA0cR6@F)1(}s<#6L?~uP1b`&^3u~o-NODk zg{^|*ppiI$bUlmwO$2zbAVqCr@hfLw0?ovs8<6??6&cyl}Xsa7A&+S8pvsc$(1Sl|HPbDh{zRRq#xf4RSW^T8+IefaGk z99!$Hb0INNBW1E=IVxbWtUXpiJE{Eed^;7irAzc<4ajCa`>1;_2#9E{blvdgX4!74 zl~EUavSVMjW^S956xzGhl>=0lj?0_<(t0V}MB47qA-y*bH6zv+>1H)j;)O94x;Q_5 z`|j%P>v!8ye)Qqp-~X*|FH3)Mz5LTZ`Xy7bg;t0k=UDx4D8SPDox2y0AKn*Pj4s#| zdUU=y+Z1&1CTO9Hr2XEVv-dZLXRmLVc)vdosCaIT((2S*Y1AiOabiFM@qnUnb=1G? zSrwG&s3GWX6^%f4&M#5)z?$U8B?R)!cy_}@IRbl*0wsN^*=Gk>L?+gb`_mtIL!5Ym z2V8*1Q+^G~u5k@24&la3Z2)gWL1Y?0A}Hh*QzJnDs@d<=Y~ty*o}W$cE)Nyt$0!<{ zhiN7Vgsytro@_w8KVUQShmW?u^Xpgt@E;$aKCKTQ>1J+sPFmNG9-e>t;r+k(>UF8} zBF%6~VKVF5RLL7O3n^}{_WS)}uj9hhqckJjN2(|@dRz9p-PzfBtuHJUR1_~?T|Rq# z{Onuj7x(X8z1x`HOEf`syctn)UIZd=7iz628YvZG zrcO%G!Yr!FMa64j74npL_Oe@X@mc+VfxNH`xUi^@NG(Lnz4x2er>T}w6nwGW>{|Q# z|LSRP^1uAi-MeS?|MoAQfBoig0Cqr$zrLx~(7X_lrQnsqg~LUL^=D!fmEI*>H4(9K zCnm+rL{p);mRgJrbHKnvQ{|#8s?0=6%v30ZkcOCx2(!oAUIZ}C=(9P6y%kpBGU@=W zfTAT;s$aOY9aGmV0+WjGq_?VA15G>JAyV%(yh2)DChz>>bbC5)PwM`tZ?AThc&d3@^ zn5CS%`SlU#L`;y-FtB052~`jZ7qUj=B1AMzwRPrF;^0hGr9qEfAk>elvL|0qI1NHn zD%V zSOs2Sxzqe{z`QUCSa$LHyTk5l68AbzJ14Wgfxl z$_UsIoTUtaYLQ{2z58}Jk*E=U<)v4JSFDa;K8O>eO@htQ*i^R=Ar&@(cx*5hfvF;v zU+I^IfFaH#$M5nq1jv-YWH3F-^Rb0VjyHrx42cbSNCWR%6Q3vY4feKtiEGnL#GoRz z#o=gV{*i0iSh@_?SK)Ce;n;2$?OU2_j(d2T6`g_jN8_q;h-LByc{MD~>0A_3$7uYS zZjE`!^~${wr|M=v9d8VCWI_3( z$QMKyVUzZl*Gj@h($Z>^k=o}DH_c>hSXy}Bg#`b(2bvQb6v>Lnr}fwQ?!ul^9>CS&zGYO5-SJ+P`J97^N_kAj5Jiq znLw-;FGdn77Sx!%FZGzlK!&Umvf}S*zs62G_hrLhTbLMUx(8jUO8D7Sp^z!H1zu0V z_BTwE&Dd>NFqZiwU2Sp9B}XybX!=eJ&eO$m{hSe!;cKdg)m&4v&v}XGUh>D0ZNQ`^XV9V`~ zw)Nebno93Vwf1AT6nBC^?@>~3~1pFU$yohDh1D$-lCHImi{opjk>zUtCH`2Me*-hXtn+d(4c zvU|v6=^yZsnvLoG&e`Vv*;adBx`}>ua^oz(Ujio`%(46nz0f|5Bz3_ z8y+S)7;)ZE(M6cBJG85t1BjHg_pV)pjX`DYali!-v6F%BUPx8W&o-wgo4@?a&!x%P z#Q)x}efq)u`Eu9)@aM08`Q@8h=Wcm+NnU_qagAV_>qj4cz=fqZE`=2L&*r-)Gilx# zP%p{DY0_?YED0af`1Uvo=8_Oe* zK`dON?hIMnj@X9hK+_^ZOlv)_0!j)*40$A9?e z^K>HGJ;XHC27_Tb#$59Nri+)La$Bgzr|*HdemO^TGUQ0xsy;PKt)j?!c1IPxOuN{`A1*x_WghLTMzzE|G_7J z|Bqh$)$^NeDV3pJnAGy2>}sn<8k3MfNkLk?$e8p<;DjCxT5h`|gA15f0+2mPi%sgCu_*_46DS`0F_}R?PQYENpvD`_Q9XA&d zE=nAxM-740M`97FrJS5@F7BKP;qCj~+4>X?{AL#MIh3a zPQ;M`=>U-!?v>ml0swN>j`Z9zIi3tIJ!;8$YL6+3^~@E4*k#O!zD<0I*eYzPmBur? z0ur+GB_dF_-U0D4RX5d9vXB^Jd8x)nHGoBl$x2dm#UfzHy@~JLKPf82d@OZaX(H8P znq&uUJ`z)KW+|lM;%10uVSuVX%h&^41C zKbSY0Y-?e;ExC3G#2>)KOr0Tah|Gp{WheU& z4_!;)ieN3KMBeV#MV-e-H5uB~zQwDpW{LCcu}Fwe0bUL-mqFulx7$PnIf=l|Ls{Z~ z!HfBnGzr92ke*VTPtX54as{cE#}1k=Uc6d5C_F*aUl8JwmI~t}hSC}NdJNsA@OVim zQXKCA8LDA~K8kgGoar+D_uK~aZt++hJYq~cXVmLp_83CPvkVD&H8DvjJ=2bZySaYCG$6p)FcDH{ciITA_J7=%^JlYpF2 zNO4REacwZhper8=q_0|kCf7H`AU2vwJnGJ`zvkDNDMM& zPK9)swJ?I|2~sQEBB>~9Ik|J*m$tjQ7U^zMJ%aL=3cTYg#EVJ;*6YDGS)kHI569(O z-~DKNezx=$c7s4*E>_~+4vtL*=FR4dUwrlM&HK$}LxA+wTa(_IMYRK>(zP9r?_Qmr z-+%n=Ujx^6+)u@C%%zhcWsB@pwAKPhC4F$dIhjja4t9ob_eNE%H!D*LLZ>3&<8jJK=hFXsr>bi;xmAi*(W6npL4<@xmUlgr>z* zraIlffA?m0^VQR@3-I{7{;l8qRJ*?0_kZ?pe`PI0)d>w&^uVB?QbhZM2Tv~Uob}cU zn1Jm}kM5pKm5m>0)uef9E6sDRMBOto0YheSrPWgu_2mKab~!5HHYf~&LVutEUrt{Tb8O-39O4jbv~D6F$v3!=#E8Di}FVG%8dk(J0M5V6~44pKFa zsH~GDS%ex-vLgp8t2G#duo#vA=N89+3@O0QoOp@3K!M?cOPFW?D!Q5I;%s{JwuJ%I zSgt@N0tK|r;JLkgyLs|Jnd!;Hli&G``d|IG{ps`i;KA|qe7SS7o$=A5(+?ls`Qq#M zrPOY5GSv9vLg-NI*J;*S2p9Lxg!EENuWVCW>tB5J zviE(aNl&@)oJPlN-Ik-IxA4l9 zM5IIv3D4&y)d`Fhpo=C5#93xGxS=v{e)ast4(__&pZ)fu z|Ks2O@c;R5-~6jzy%)taPb!@mrBr9Q7_hD=%w%1j!KD=LU6&SajyNt(GnZ1TnQgmX z8R!Ba@fo@aHlg)mDyG39-EpzP+oW610e7t{gdcZ@1DTQcAjSFtKNaZKUaxp$d1n)GAq463ynFTiox zp>V0Si0ab%1hlSJHqb0}p(s1;w;+s6VIqz$uV72|Vaptj$dco}=D_N1+Xa>e2lc}a zs89!kw30pAZsH2OL@vl0G_YswC2K<-10jgpct?y@?WP{cO5b(}L|T`l=tRP*)YQsT zC`l7xDt7W_T00e}5;4_MjQ&{!l_7$C)28TMu3Kl3$LE_uLCSd_YLjzHm2yy(ISY0_ zPF<@qK2?Z_Csz_ieJi^&o;UJ_kqhP%h&V3bKPc+7la655LyO4m^R7^Niz(nOyyTz_ zKZ1YX)sTEsT?!L$E4Cr{x!Njn@tSuLLBd!Qqw)pg<>V2i7v+=y)IrAF3LK)1{VL7` zjAl@cF6{%5BRna_&sXG@4>)%!oU{Rt1QM$gKZH5Wzs7ioMD(c2g(^^r9W=vGqS$@$ zhyu*hW!OoG-H!6OYM$BWHo~ZgrrjBZ04P?*X2b$S;e0I=MrM zc6q#4Z>gj)N2~ETK8zD>;*7SPzKNzAaR?vjDu_&@Ou9AS&sIw()ZLK;TohMHdMok* zxujvD{qq#d7|R}tm?%w0G#}fOA&2^b5W)h82k{g`3QVSs_be6~Ji#qn1&P89>t9U{rqYq63jIO*x1pp)n|3gh4_m(28;i$m13+LaJLk;R8khhQWo!bHbkG z@&x6T)+3%n?s%MbVT*EPHC2s4@ap2^ZA|7@)_gpx;PKXr204{32cfGz-9NIS4J3Qqo;B+u;Vix((={Uv~BsUjk z-nVI>fN&@j{)a$9inv8%5$_5qz@aZzPIk5ANj6Xt)1isE@_rPRAB^2gra36tR36=#W}P~Ytk0G71ynw ztM+ztdE8xn=huGk{)e9)4@Xv5S=+=q0HJr|MJ}&C4=TB|N;?oXyqqr$u2^suY0UyL)I}K-KcLn5#o400PWqW3wM5gNC@d- z#AkRKCB@lkJshU%o8!c+A~BpuHCF)Ipl#mP_gC%3>+<1aEoJ`k4=?`3pS=0{6@T!$ zZ!h+D&$gS>vu*v+cOHKA{IzN&Rq0A(m(Z0|86EEi60A7LSrRsCJQie zTbA9;?(FQG%PVPC#h+ikc=O_I|Ln=;-u*kTUtV!#zq6FE4)9h31`PAo76{Q=5OE^u zG$#>(MH-hn&C_x`+TB|Oe6`+`qr)ZQCi1G57fKw-8p&$?AxS+pVrso@Pd1-FfAu#% ze)6dDbzhED8hM38bbJZHK+N;-NK=S~1eoQS=$o0Z41RQ*sHKtNj)XL|nLZF+|`SHVxU6Y$-nM$RlpPy~t zz2D!xH=S-bhyAjd%f!Mn&vPN7O`RC1l>lY6v~f=z=qgwHMu+}>w_NQP&sZmG`{&FH zpq3a!MCLs2c5LT*bCAO#@Z2#J$2a6SK@!5LMxr8-^&JLL1XD!AgsL{xD4PR;YF8ZF zvS?R5HkrtmT3uA3-Z;{G6ZK{#i_n@MZ;+sM=^_@1sM;n3J?eoJOKiPb9Y>9dr%=K2dIFFKx|5bIJ>hN z-`+|A-pax;gU2X}WEMo#ZqK%k)}0rq9R=nq8)S)yncUt za5i<-S67QNAB2AX@^Y5r-~I82TT@|$amj0B4Bv7Z(WN&iNZSOn1R7A%4g&zMzJYCM6nz6q+5)uVFd937?8 z81a;ifZ_}cN|6T_A!b^zVcs242P*NEb|6F2^{8qMaH>f&!vJ_hIEc|AyItjvILuKR z_;_Q?DTTvVeGNi1iB?~7Vsc}p5q(i$DyIZiX*I^u`Pod6h$}KUWy@JjxCe1ZpC6!H z=rDOM1RP;m2!NVi@`wfVApll$RvK~u@0=E<+rq{n-UDHntGg9!SGj&a2?a zZR{)nJ0JK0&@{@IaODPc^)8!_kpVeZUu=qy zmqHm4Y@wehs3JRzkF%2y4A`$#bi+0>}*l<#(HWAQbS=}lBI@t2RS z3abKI4{EhLs}I|v(@4%mGJ}+SB;`SUSR_jR+Z(DPfK$#6E8S1~k^hXp`W)PiR3-8n z@Z@c%L7-Bm&E~i)7GW>TVtG%woaPj$lxcfHM7=eOEpH9S6u_-*_VBXQZsSQ*yAy#n z73O-_w`IRD6%-brwMNqY$U^O&jCFWWD?O!9sIa1oh;$Jl(c|Ip_|xy6-M{NroS6~O zClDl5!Q5M$x0_clUcG$we4cBacsbliJKAjp3n@SZk>&ks=IO)Fe(m(mo&Em6xd+2l zk7^0TR2dce;B<4osmIntoP<;_^rl`12k4#_2Lcw+%Y7?M%qk*w2+D=X)hetgSV4ukJh*$-+TqJDzAlhQr}aPn zn?Kk#br?x@bHEbftSLb>$BHu!1-$lL{yjwqqFNFF3CPl{ z#JhsoZzQR`P_hiaKz0jLyQ0L%-1rNut)88z=gbS!#o2V+FK$o6G>6Ftfx7lS)iP}k z&tIKAd7xl=^6>O`eth{4{xM#^n(p3jFV2=b^Xc9BlgDQd&re@m?h6&^esWZ73Itf= zV-g}rm+N;s@$57uChdMep6*--+V$po_vqrzX1i(EI}7KpZ+5@>;?2MR4Xc1{U)z^OSavl9c8XB5B=5E?%VgyU%$NC*J-B!z{(aF7QdkfGHTBzLRJMy ziHW&5&&^g|aW){9t0K~gESrMFuDDv!0zzLFp6cmTe)e+rfBA#2|FhqG z@E`y1-o5krAN}c@_eVM1OawHue*h7fSu)~dwKDKb)LVxtGs7Bak}@G{&xMf`CZ=@* zsqokte`e`ZC~={5b*2P`Ng>WBq#s}J6+qw!NTEqi=Z!NZitZ1>lDX^mCTS|KIr_s=(XHf1@A5Vfuf9GmPGX(H0J zx7O6VYFl4v@<0?6i6&50fs(QY5+)c&L4?ceGgE*dF3d`UQ3Z-!5oIlfr@~MyOC!@~Q4(+g6ZNhlE$iql(mf+PJ9MhGHVTmC zs5-#2wW(w+Vs%=HNL8eeo>aAhZAv37@E{?eYS4@MU=Nr=X)S=`-LZf5{#whXG80g0 zA;^Q1`Tp7V)#Yy2F)@=06{N#zG0S#=P<`ffIHj9vxN z9;2(GK^1X*Ab>W-W7X4E2oO^GcM>(poh~_N>qYgVo@>AggX~Ei=?J$pgH```oU>_& zIO4X1=9pHYseu(Df|6a_w!LPi!bD19<(6}E;jES<&Wd2w7Cg*JhKunc_oRs3p@3U4 z$7s6jSw4YrbcCSx%UjH=Dxx}}CgByE;G%2Jn!+ynqHCu8qz_4{^wTk)qX*@I)Iz}4 z>;ZXf;h2X(tI*elD@At|@(-s2f!I?b)V97n{sqHq8Zxcku!BNIMJ=3?*w_GwP8TCo zY$#r6Q=UWOnvgN53jq%48 zrH%F1H^vu=91|5_9%ori%bs`%YhN8iYcQ__v zeBwL-2}hyCs}%55Y#U5kKg8Zq`0O~lND*G0*@V!95Qd`;`?iv4hf%}4Al_!8la@bn z*@o2GuqC_gg|82_2=9_hMd~T|;jlx591yy+C&%m)p#T9kA^Sf8` za#Zn)j0-}7#;AkIqTCT2cm`ju1n%@Ss%P}fS1*%%6nQA3M+wY}!cI#>(kf*jgw@$(A$1*mN z-W$jME0mdg@7M3Ij=MdBxe|CPjNZD6kVKI?Rdl}LJ;6(H^g;fSAo`Skko>du`Dpts{edMD<%s!t;5%l`2G)!m05JpAMbq(mZC zUL6!zePq)^MCZ8>;iU3|^KD_;FVY2~+Es~I)DFv`N+KG$h*CfwGTdV4I-ZQyLSP4D+et&Y0W{>dKZx zX3Q-MN&uKDNT6N8*_t*?SQjN&AtXy3f~sydvpT}uG`C3 z<;fGJY5K`$r~mQ~ufG2J?C}SOH)n^pcTO&*yC?H^KYH-u_2+eS+DORr;!!LmN)?1| zP5Ky>l;*h>J|36w?0!5(l=pl2xI6TAJioZOx!GB_I%)dl(--=aN8kPA(ZBgOKi5dz zVJ7WhvNSRcL~7gaY>`6Jg;-rU>FyY&P35VI=<(*jki-I!oe@Xl6gB3&m?Rk!0V~JG zh1h;T5p!|eTm~^qlX7yi7m!-_p(XW-6<%}wI#x+{_4K>!HL`rG6 zMhZCTILBIC8#4t}CbctbA` zt^e?6?|$`u*_66r7N{~qbrGdfEv-paP?W&bg{}S_3EO31CT1%H=Sj5*wAJskd%B2- z`faM*OByhNJo!=LGOUHis?pkI;4}d6)K^!nsN_Ta9qHT{t%0-4)%eTwMYE-F}} zaaSwz%jaj)<9jEUSJxNTc(l-bvO$rvho`JWjXwJH&Pgfz-Qm^y{mmkW)>TEjW5Qx= zF)M*e<-&!Ga4c^1*t?nc09AmJ5c~=x6iU6T-LEz>gUBkoCq{RRLdcR@O3=+z=V~QV zx|6a{W^m!DluBi)R2Y@HD3wZupwM}$ulF)}>LaTu6H}!7s;9nL(zZ265s60Upkn74 z5k%Ove6_=S2mzuL8P!d+wKkV>zO5&lQwyF%)Y>B1@s(In1`Tc)s+w2enZuHr_?X)- zrEKa($_B(r+5r(PR2G!$hWAIY9>L0@tv_hEBjx#CK8)>16& z=R!=hC7e#iftV;sU>OME>zn@UYFEp2=y-N{^WbFu@cg8=-bkOlKXg@WPPVMa2C3LJ zJt`4XAtXNJ8WSuNN;!rmI zWCT+fF^a0d4h6#h$cP2JXx^=4BzQa?fjtEj_Gd@xvNr`Id%#MIt)_xHS&V@75d#F5 z7oO46)RB06#7#z883obdoku8*x;ttFo}<*Ju|%;x9#YtMSAZY_42lR^V>Eu5HXGFV zClwKZr5RhjY_$&1XlWU4KlU))xj8(tR%*S2nVG5DZ2;^<)N1i(IB=43`vr3P(VQd15s2V3asYSB4Eq;M#7~ZDvapQg_Bmpju$z4 zfD@L(uxGTtdg1swauL4q&kE8-9KKqa+|FcOzWI<_$ahrbcL5dzZyT#(sNWYhf?Z^F z#i*AS>XqhdXkD0}uv8u?egmwN-qO$feFnQ>(1z^gisS|$_|x>HW-*iYjI|1NKn@ox zLCs~m^_~Eaah!>KS8hp)5Hbxs-T&%QuJeJ=H7O}t**s)SV800q8E^DMf|Y$w*$&j9 z2wHZfF&=|4hb5=AqPa+<3GtU%02A7kQ_-LT$D_t#gdoS@G|W_Pjpl0EI;=ZItamw| z68HC3mWzU*T`kw(dve7+=*z#^10wE=SKQj~^g3gGX_fn?s-EmWENNOR&@JH(e==SX zmrha)27$C%J}13y4bApyMK^lh2oNvTu`==37>rFPCYwbXzp+?}KH_TE5Ea`-&BL|z zU}Zg1%jgbD%g$p~?+9&+)V7ro&(2uGpse&K)_*uoa-Pt)V2BK*KgxAmr)p^aCw`K; zmP;2_Vl5R;)#*3IWiCM1v?;S4kp~l@y8!lxvx$N(Z#1^|o-aR25=o73r;u3KtNUQY#U6YSNpC zb5yEg*#I_A>n}leS`9rO_oo+k?mvDE=Dv7(g?hB@tf;N7beZP)`sU`@7hkDT-OTNH zkfocZbb%<839TOJNc@+tdda8!MCss9i=jpKyA**)9F`)uB%H>SkZd0R{4YuxESRy{ zL{z8AA{bfv(w3+x6bli~-kt(gc)I`;yGUH@Vks5&<`G zy6K}2W`4duUT)^2D3dZ&REV^ACrD2Y~Gho{TMhYU_$p_5sM8=WT>#LQgTIX8sU7Vb6 z%H#99AKmXS-yd%FOCh>{e_I$=?~WI9J=xS3&o3{pkGrE+l42AT6lU`z#Kp>dQ%np% z?;5JCL?G`%>&HUmR>ZTzJz-OXdiZf7FPZ5~F6-etU+Bb7Ksgro0Bg1nUh7_YGC6gsp0315rUM)-SjKTzFlN5ny zAu7yV0EoIO6r!Ra;!>wtN>x??dTBCE3)dUeMR^j2iY#)N<2rZsoE&t-_<;C_)!B6IsDVCNbM2 zAP7+btBP}eraKU|mhrH|0p=*LpTIMe%;2v10E-2z!Lf(4q!2F&YS2i=JvAgyq?Ibd zQ_M{7D67lfw9*}%jf70=EnsGN z>*^S=#N=Gxt;8-f4;PMLm>dWgrc)-eW-k#5#esWRk5#x8;5YABWLlPE1=|C6C{bxB zQGR}Y$WUqzfLMI;?=}9A|G*@W!9E8mjn@tc6#fjUb5g>R6wh$nPJR=_VaV7aR z@KivafKnq$j0Q3wJ5rF0qFkdXVIJAhQRH2Tf~+R*fa~xs>M;!RP$IT9VqxT)SC}r} z;zJ|$8$!mh!;fmZ(t4ofnA9>UkyN=<;3i9qn?I+DsoHhI6ubZ`;%7N=A#Z3J)xV3 z#(lJa&~O|~D;YIYi5#k_mgWWwcGK4{R7KZYK%lHAh1Ghlt(~2XCyk^bCuWf~9817- z#Ym)1f0Wa7Y4Np4BY69)E0dDJV>{IiOfJ0o@+%N`ctV`gcq>*to!q4Q>iJDQ_yE&1 z#=yeAqz;=3R0>!CUj#7ow3!dbCd5S4mu?Lfd_JPlNDpN*E6|o@*&j%~$hMEc?Q z?$tD(J^t>G=F`*N<#lC(C)9-T3;1FMW~zt7!Dt0DqpH%~#%YiKtRlj- z>^r^Rw^G$IhdrxUD9ho?qrN(L#m zoB83xdvC9fOyzCv8SF8J85D2Zt?AU=hYM5DkS9302NBV}Y^~ z@`z)EcEj?95l@2B>@o!~3rB6Cu2EZh7L2p@Fcp|A6`kW2&qIihR9v;N+^A z&!ae9r!dXIB&HP~r)e6HI;wSuNVlth1c)V*psT7<;VkUJsxnP{b~?X%xA(F6^w?7=~RJ(LzW4vgEIz=mSaB_Whedq4|&B@8tVZ7RAD zJl)Ut-5@l)C!phOuP|-WuAqp6J$5p|v}%mLl}s9^*~MKDWz6EPTSb%zEUop;JT>5- zetG@%q5a*@?*2zVy8G$t<3IoE_;RmzxA^Q%{qB}o<>^iTi#Lb&3kuiXy2ZX+m@5mk z6e57x62U<5wroiEN*NB>+{kX-Dj=#oVnK4m=T;*2C3hrJMXfKwh?Fw-GM#al1C5n( zH|L9M3aTPRs6^AmQz=s|(^RY{O`U4tQkW*@7cZ~Qw*2V+`L`a`uiqYb$0my$_Q#2N zzt>-U{^r;^QL)Rs7HyJ3#WVqaE6$3Vc>4h(I#5WvO7XjPR&dZ`j&chPC{%-hb8ykD zTpF>FvvyO}8kBP3Lz7=Vdwmo=t>x^bo^7V>RHjN?n2BrU$~-YMX=P?B=1NeNO{b3X z_~BhCvl2D!BBI)RZ@r;eJ6>Axpj`zhW1&Xq05#a>a6-CWH5IN_jSuRUVZ?2&0HV=)JMer)Eb1ER zc+JXMIv`HUdhJ9FfMvTChgOk%G(4>X*L3TYiK+hYGz$oL?L##+EzHCuVk>TN)=Xa3 zWpijw@tnet?s0~X#z>#&%WZ;+;0r9?aYr0HPOO!g3F8Je=wXKsF897G6bl(H0|R`A zWsaW*49~bZY}#s(Gi+H0fu@rV6EdV2;YuJn+c<_LqIT_2TS-rFv!E|*tVU*xznD}c zxy=YgM-*__u`NTY&H;aAz#>$NgAL$Z? zQ2A4Nq(bM?+UPR%oe&LG0`qvA-58>d8N~it1m{6e{valR5V08EY6GL7Bj+dwad3N( zamSiMN&|I{O^-l&B{tvu$EAU8U7-rV3#0qhry$9KW%L?--!qI0WEgYv-690?%+G~D z-D04J_gy(+vpKG>tB?_^ts4>bI<(F?$C0F=wz%X-w=ntoA>)fFKe2m>`y3dI^A?RC zB4JoMz4U0b;wFYh>uT;AMk|ctYCK^BSBE@lV@F^EWE$RRe3_w4(i!R|&1BpqQiCN( zNkS&|I>{6{%c)7~s~+fUy`vhNPV4ntt!c0Tv0U~G%FRm3GndrajhK9LWU)>Z=X53? ztGligCTGxLLzpzCK31IKhycN(Q7B}7B2|t?s1{oqhC0@0gquWmzLe%Mf2U)|S6l4% zCc@3ICqyY%DHGucV?AkTm#wUOBHU89+>fz6NM(w3yH%_$kula@FW<6S|{X*GV(qnWf!z6`$d?ro4pz|ql~myO*7#kR)6 zVojz|h;;mcNwcCVfDHCSxvz7A#;t#`c=yTVJ>!qMxb-8T*~2QXT4C{vN*)2 z$n{1cfXc+1Syh(((pzU$4dzwJ>vF5r)s0oMLWl&CW4pe*1aYZ#+HOR_r#QWHaXhr8 zH-$>?fXbp>LB&hrSW7iIF6!XRP6NC$u=Ebq<#?!ddi>!BbyE+^Ld+1vF;FNnj8D}< z#M)ne_0_W5-MN1c(qvgwq!hN>u>hnU`_231=Iw(IzWdo|4zR8)nNcs-<@2p^EQZz>~mF{zVBR19(Xq`+~$tX@b_cIvr0Vh&MKM z%K{3_aQn|0)Q|I0D>?5L6>7am2pmM7Jyujns94KG0x1e-Id&i$M<{|IAO$*sMPsPm zgBCz7R0|a^e(CBgq2#9A4DE{M^}o`fsj6LCkK8!21;@$hbaQ>|9m7RNaTnW_CQ>(Z zxh{vN&rcpdR?+g|lkJbcfBjGXgx;4XOZ+i#&by_HTXr?9*>O{QMWs zz=TeAf72MOxFlgR4@)jnu<1Q&DeSFA+F|L(MMW4?{KA+6Yk1E-Ym32lPs^;kwTV=< zPN^tlxBSS0A5}1ODXdDiZ*0d|Bt)bFIyw2po6Fz%?uQ?jcTf9rq}nO_Lwdgmbrwz_ zo|LDAQUIkc!d7CE30?w~dB8y!4Pj@7tA-U~jDac%S*u8BwE81ef)b?lR_9vl{MT>W zi$A^mn;)P4#)sSg;IrwM?~WgA`KRaQ0V@;TbbNST{>iibyB(&9`yx=L%8+WDKa)lq zR;O1aH&@9@x7zWds?|0oYlI*L*TWGS zFoK`qsY3m025Wo8zxa2}2n%xuY*p0cNyh)$U25_Vmst90ok+!X|L z!vl(?i-JYf3K4Vx7ptQoR-;ogS;$-ZnddXUQB9DFpcJAwxHj+Qp=HozcHMxY0kVNL zqra_-PGaXkx+_?`y4Yo<%rf;gLcZX{;ayAy_C)5kMG^+D;)l4)rS3H2ZmD{8T~QFD zM60_PkV;l;RS2{)6#}uh(sEg_uc)q~9daK>M#Pax3P(0U$w*8yz*j#8@j%JpO)fPB z1T-Qg;B_z3w^&bzG_R0Ht3|1)xjK)s!{d|1hylM z)I;yIga|;)^gAQPpl0gUnsoC}+-HTx!Jz%bfceovkreL|$M5r6%bQoX>*BpUg#D5x^?OPsU zy~g1&MZoRT9ic69sy=+b!{Tv?l4|6;t%Gxo*^d$CvX3AahH-qP$q0<9T~-?x8u80| zZ2o84<#3OKt&c}%W6tOP;s_+eCcDL*iB0Dgy`_XEcd3rcTJpz1( z?@7Sq4ycDk7|*l~%j7X+zZ-bG6mk;N@v&M1TlIj0yx9w!_A`!tJd#>dODgt`TbG(cmrZ^29Y=aIV< znm9Bm91ajZHzieFF?x5oGcy6iBHJ|L#|8wMT4kB^$5uA6-16V2N4S8QGonHSTGBbB!u9CdzaphU4)oQDFVLp@ZO^j@84YBoStr;|LV~8ODV7} zlG?Q`O6;(za3Nr6oy560h^TaF0@D5N=E36+E*{*ssx(YqLEGJLpnU~Ib)Ki)_07wt zFPV6|-AF(7-s}TiIv_;SkB8&s8}0qccRo9N@TeV*R$W%Cz#BPY3go5Cs7wX8dp4h+ z%*$eJA0np6A$Jky>8y@CHKE;cvAh|9xG7fh-bNy(TB6dMRrRH=0-!ZHEQ_d^2`W=9 z%=^PZRGDij1*BSvb$ury;^LOBfQZV(4&#@KM=V`us=K_$zV8T>z|9pEkb0Kj>F>A_tvZ-~h&z`<-U6w8W zD4b}X7KQuCLt-~(@CqwPm>^J9Ey5sliHg*usvU8YM4S-g0T?|w0pWkOFx81qH+55! ztdr;x>Q>eRHlPV=q2l*tee@z)tk0&X1qF2~r)Tr~w|nv$Jh26qX+ThwMqK98e*Kzu zH<-6LIhlU?F7SL9Kjo_x{UgUyC2hh)IBkwvs}6+wZRL+`aSs`3rGo8P8w7y_QeE`_a9BKF

    HdeLh#GQI@#1V8sgi{z2(9F00hMp7+5y5TuGH;*B%)ia1;2dvTlA zotH)T@B}9D-Oi>eZCpF5sB)R7YP+9Hz2={;wWt!`RCXnP+iFJ_t-E5Q>pClNaT^6* ztlvr(LmIor4yEIh?Nf7JUr_uzI6irbqQGB|s|Lgea2npViTbrxvuw)E2Cs#FL$%}$z` zW+#tcW80v^<(hhbKla;ZHelGt{(0ZWu)O^S<$8I0e|dQvZ|Alh`+b|od>k`}&Ch6E zlP`?SyBM)KhM6>v^R}Cfq0=WE#&i0(5w;1$u*c*4_I4f-ovDj&OBFgfaH<*fQ z3-3%t3f0mj92I9pAzifY%|x>eG66RH#Op8T|NZN4|K8YV776QgAPP;+~Maw zY>pGal#b~jr)v=Inxh6-vCby&4j}REoNtFK%TJKIVHwPVLnx$4l#@`U8cw%tQUtFy z%(mqehC$k(McXEV)};av7}=M>EmM9@$z^8u+b)MwJ|n*=M$kH(latC(ye;za#{gv? z0_*!JGmZ@CWO|p=>4Wqca)Pq84f_CQi|cGjx9}~?1f|l=yawy<1Bd`*lDQ&Xfy9gg z+~;)P2DY&eySeb~<^4EkwDl)2_Rw-BcQ}kT4?WI@qKKO!Flf;SZH(@(-yj~UITK-( zE3lXy*~0EuaxhYtdS(EsYLp_}P!Od7Wopb8dIB(LW*Im`T-qm6MGu#M1b{PXvj91> z)fY<(O5hpOD5gB-uLb+E>WsC%3+8^<|4+geW)~obn^z0rxXTI@YFkh!AWlV0s$WL( zf5lQH#ZB0hyQa_Cb4t7dS!!Go-ca~D(BOzITFt&0!^RlfHa6OAAGh0nyKP$`wqZ7g zZS0a(?%UXh4RQ=_13NheSRQ1ZYYFlN-l5>Qqde5WTY?ZfO$FqxEvNd_$+U>2lT!$~ z@M5BPHDFCjrY?(ScGfln1^-)O)Tiatz}gUT##=gGAFkzgYS_3MfMB zftM;{wvbmjc53d9P!?xrbSn)gN^F%)1=NH>dGEmx5$4$9Uf#f%<(L|f!sku(ew%7T>C5zSs3KC$Er z_tr{oi}G3CUduyop`b#hmxa*|wU9JPuQeVjT^^EelQIdm7n;&k^e4sm3B1PdV4 zHG`LksEKj4W%=S(=p_Y3=ng9^V|R%sEZJ0Z*-8h@cckISwT2g)?qr*dr6f>tTd!3_ zf%3i+X)(CW-sRkrN114_An&B|x&&zFH}ieIfl|MEgqcL~=N zV-&OXI-Bs<3}0cwkUiEd@AY%{)rOwwH(fb#5&FtGSg?m}l5yD_7AMpfQ8~Y;-F&bd zm&ddbT-j)=xHZpwVW3pO`l!9pM!y&j>z)dW=#gg|-8_Zi7S#vkZ}4bpB9}G6VC|3am?eKFYj-gZMWM#Zo`bjhS9d${q}S>L@v)f zj`KXv^PH|}nw*i1WJ^{;W2r7iL#;%kS}QA~^b}-Kp-tP2M%zZTa2!TCvT$Qg=Lkzi z!KV%#W&AOt)r>{su>=tnipXBD$#d!3q)KVC%0eR1p+E&kT#%+^qb%1=CpMnKFzJFjAkIN6p`s;Ud5F(DM;O(x`O+{B8@ z$Bji9WpYjjd>{7d9tpel_Bh_&&+|CCi>aXFI8{)L(y-w!Od(P&a~`J7iOmdWhC0KR z4U2A!9NDKouA*2zcorlYWzJ}kRb8h8b9jWGP`(t|!RS)$88}<0CtVw6sZ=sVpaE<6 zm++$RK#*=jhp}*;vl5`=;dw2<80;hE$BD?y@XQk|_qtSXBA9#(()}=@20m^a#i9kH zG6n!?AtA3q-GrQ>3Ie-1oL-nGE?oi_7Mk&eHA72UW@3}Xu(8{)A-E5-r`vwpayCkg zzHw2@2bRS1&d;}!m@_ zN|Hr6@cE1;XZ<_hyb^~knujOfdD{B?*6DuV#`Dv5PXGFLoYM!gv>^U>Sl(Z5+tR3Y zC^_HQ0YX008~>0Y0ajPJi~h>UjhLfWBe2Bg?u)zD`E;toMUmj@*yX<~7J*h1me7Ww zNYN6KbR(MGnm6LevWzu$v>tmgI~PW}?k#Y8()^=iq-xl@Jd5>}{FzEc_ji^rqC~J4 z4lW|s--u!O{Inla?}z`*JNg^E5OJ|<{3nQ1DMP5PpUvt5qL-bOt^-%hNSExAYi zlH+ovlEOc$LLTWOd;jWdtNw)Lc=GaX!4KZ~`vBg51qm6pX`3orY}XuNLhKQPBt2 zA;;#5r3!RW7rmO+m%IcVk-*2ewv+T_gQq%8>2kfgj(YtC<&x*tiSP}UlJ5(PzX?mK zUvV*2yuP<>N3sM<;a|eiC8G&E|2=SCMb)MR|xk?U;-0Rw!Ud? zw6v+AU(rBpSV-w@)U_3m zvf`Mfc(2R{Ew&P(M>8_+48;hJg4Zka@d9b`tLqudw50s1xhl@xiy>TqGzm%+BiD|A z*$lojq~Twp53qX9e)ywmFTA!>%WIt%#Ihx)teQg9ZgB2UqFF2}2Q_bv&Y>j|JukVK(PxpPlZE~NdAM@0N*&qqaX2xv(8Ju%Y8p#>+ z|7@GCx5xQ-69!ZNr|PwwTYMsGFX8(>bRc@@jFn!NiOUyTjoJLj=o}O$ww+jLbvJ0R$X^ zh__?DpK~yJsV3f5>-jK=3thGO&z3?ijGAHLS(yhwa|**uQHaQ4q?iGpNSVv=Eg7+x zfKxKq2=?O`=i_um$ks6nym=4airz*5m~E}=aD31v5mx}wrBLPbCn;bNw@byIV92g{ z4os+*E!?1LOTdWS096XXb!DBvqmyCN^&(^7fYEMG`#vnPxsS(jYDODHl4HarRNeH2 z@VL`*q--ugh~Vl1t5Ue*9mw1^WKXiNR?OaeLHB(pfaAcB>>f=x1DgoY=|0`(dCri( z1dj41A3U0JEPt}lZK&RMvXG2YfcTR5P`^O=gN-(_D_{)&i=JAnj}tj^$D$OH92O$c zdZFPwyCV_nS8;Y@w0UH^BbWBtPy~3{PF{LJ0L(ZRh9Q{vB!cy=6#L@6Vb0ni!0fgs zN!zg7)BQF!Gr7yBEAIqt7zQ~QeK@n)f|oj3R1M=Ll9KFPPQwC+UFbX&I3S~PQzk^}u;5ZQi>mYL` zKug}bpl2^9flyRi%Y{xyYHu;2Y{xh{q{Q?@YTdlhlti^gNd>>$O$pGK`|bH@dwm?= zWBTf##HqO0^a&hVH}e2FxJBHM+{dtyZ^`1~avmbR4q@^%RlaC4b9VenrP`odZHU`j zSQwcJtC0?mbspR*fC}OIpc~6nxaxc}V5aqf6<#e!sC5?-E=GLD)Xl|^+EuMx3(Lpv zFL4T$kGT?jiUrj+eyt{n862a0zf{9p)=pCh(i*lv>(gzY((C(~Ibr>K5^^RDis1F$ ziwmTFYI%tHt|bG=$X#A_rfOpecHbLRs9+`ew%3Ua0F_N#I-p*wvY_$7Tv3Ym((0-H z;_jq=>?l3lzVKB#E`L;!{p7?XMg2H)l5$-g5^7SEd-=idUhnHjHId_z<0W1iut`y9 z(60I9WMmb1ja%t6TaIIx?#dDEk0@i)Y0{eg(jKe!xfY+#?Zo@0c}Z_@Q7?fDWi$oL zGUn!@;R#vo)DapYw8M4Hm+y1}7~2W%FRQ~aysnLX7WJJ1KTWX3xvk^t6fYuwRnN^6 z6+jRmW1-gOQg#mIk_hB8qkfI~@4~EQ2V3#y<#Ozem5hp}PK!ltrQKOxj;G_9s%v$$ zok>x=Y8n;LNVMZsRI#Kr<84cYr21JJIi9^zWb07#MP9E%8Rio2mX$mvn%8O6EAkgL zdP_mdrKr{w1+xYvxj8r2GrQJ*)>c|8@VdqLU5ZIEMuCNtl}x*@-C2#8slZa34v7z!GIjd6y4lhy0*ze`4{WJnel=|3SBB3 zQI@PN6})Dolo>1>mJ-p=uOHXS^7&2d`e-SWGCF7uMV;TpaI8PP82ycwt#@kJc^qw- z&WQR1q$}?)Ntr5MT95>3bwA1&dN2{qdg6Q>RXQf={hZV1 zwvGF3Jl*$ayUkONdsXA>bwt+35xU+$(4vc%FdzQ?aeV*v_;3I8a@+p$ z{Av97W&7O^&%gWe(@#Hs{@?zG&tLZ6>zIG}KL6=YZ~yt{w}1KN_3e1o^CtZ;$bppWpxY|N7gv?{AMc z-EU*R?{6=M+&9B?%_w3uBGO)>C7KJQf!iA?5u*XecHj0f?)UqB3<&bWoL1bQQUf*N- z^mDpoK$PLNzeq${X4?JcA0$+bvoS-o)b70QrA<;*AyYTOgdNo~FYKJmG63Th5vZyt zG^UG}pOPu&qQ=;+%+ZajgJDFpZYP=TEQ5dQ7+KJM2{9`5 zBV@3ef+ZrJ=d;USn+boY`6efLONThI{=XB2?QEGS?B8EO@`jJ7yOu=+WbCN_x zO50nsd_eaXXveCEQ}ij3Ec6+ltuMu|Q(g)^2rSJ~kIcA1-SY|EDFrv&JN=G->B zZ@1fKAkNbt=d>`-NL3QuDg(V_$3r4A;0wW!)uE<=`9jqhONk*@Il{=NrZg4TIzW~I z=mPaCkD$>`t6Al7%!0TAy?WiC?n_b+mlwnoOd>|ONXMm3dcXAYugh~vku5(by)$sV z3w5L&+6l%CO_7TTHBpo*U#KaTNQ~&epdP7=VyI}qG*D=2H`tWxHu&Y!jpT1HkN0B= z*%hP_Jh=Q5l*6ersY*H*l+O!4qYao@jC`T$+Q+3CE?2Z+(;`9)F1V68B(4UR)tME+ z{)VLL{H!I##bt5U9Yrm2HT4s=3z;=cc6@}4k>Ev4s>Xr@Q7cB&=Uz@m>4k;imzL>0 zwA?Q{ggVD|2P$3ULV|W-$mOWCa}w|Tbl(BKyd5>O0T~fMTIDOT3f1Q)n}wR`SReDg z*C{`R$sTO(CxB?GfnHvQA}m`qCB(_1;>wh3dBI0cxDqy9&sbSTJy5$qfU=Uwl*4?2 zfM}_#Y%-W}n;IRvG~SBH)Unq&byRD~J1h9OSW(TdYEswv7_IEoVhn zny*3y#g<%>TVGm67L6gYsJWN=QR0MaITZ4a_sV!HQh=-EFE%Yt0eyD$iM~BT-ES1o z=+D%*{<{~XuhAjJ25=Yps`W;x)yt#TD|*HGX0@=D+pu(Mo>xnQD0*LSB*Q2FoQZOS zsI}LOW?hA$j&|Ah{IJl5TZ{QsF&ou!EG}gM+f1)v)GG!dE{Sq0=d=k8_FYDWxr0fF zOUI?FLQ2EJvV!2Sbzf0CNlY?R45H)vWGwMmwI%t_s=T<` zG+nmzft`p8=cewy-VEenG^JYk|Mv`4ssvl45p{y97MF}1S{sjJLu3|m7SP!+DRU{B z0c2ZqGxt-HZ2)*WFx?+|=eh6OeZT#1y8-@w9_JBtQ@RgsARR_K zU59b!@bh#^L(y+#A0zfV#t7HJNOwg4qh#DH{YaNEsN|8XjB-E9u7+cllZsui93P-+ zb}+hu1tay^0MRU3A8{K&lQE2D(Id%EeET|o`+EM@e}3P_uTP)0&(Hhc|Mc|tzkB}U zkI(cfP zJZ!`Oq7={Q?!UY7KYZpV1E3$se|YBq`MoA>c-|{`*>5+7jGm!-_A#YnPC8zv+o%0^ zx9!It#t)zEr)S&DPS`JB-~Z45{kK2={Pz9Dr@L*#Fu*N4E6$7-n{CQgWiT_uT(hi# z%q!)w+1SU}_Ob6V;=<>2KTkg&N2J0y&TdN*F6-m?p_uDYJtDDE zHBkDxjY27m(!2s#ZL0I}Bv_S$1luIEzRRHmm%h`WJc4>ISX8!>#!)z%QaYd#VmU^4 zpFTyK6HYoXXS9?Pq5Zb)+h*H7oSVjUe?+4-WGpa?M39gqfH;M*k#ctr3}Bh?896Ma zSIUS*Qf7`m0L(B5mmbG_JEqFwWyK$P;vdFqoqAa?XYb`E`;p(l-X( zsp`IiD`HBw!ta#~h(Z^64N7KT?}q}b;@^P%Woxd1I8s=IBH=McbKAz#wr?C9nsXk< zaUNdPk$JG3fHX*##xOW^#i=O*K4{rqcv;p!nQ@8e$;47zr$-X^g?pHhR(Eiq8fnEG zbfwJY?JV4Vy2ldD%uwwD#eIw#m+Mm?GQAfas-NQg`0hLs|exug?->o)N8^t5kd#wdw%szPrnuo7>Mc{qhoVawxzStPks zkw`+7xmLY^Xz&cAZk(?C+i}0AGCX`Hf3Xa)L~&cVZs`ho8xgCWtWCD zWAcN_57dVvZr>Q$ouV_UK4A66mbJjenSI16`GU}N&31Efznxe6U*nef;SET^TQ_XYk5J7FRbQBR8>E-j6f71e!|}^_)xes*eDuT>C2eyGp%^&8@ewK2uap zjah28UD7HqNHA7&qE-MX0}v6gZp{g1JvfOa? zw6s~WMayfQ^#}hv#p2?LC$eeFTH4iezY9O~X`s@>N~d8M#s(-cOzj~~Ps%=S@f^bdq!A+pRD>(6nqf_{ z`~UsTIT8^P>r4J57Xw3NQIC9*%(;+8874FgW7|5=L)QuSDNR2fbIutV5OQ|&f>hxd zD`zAoMS4PnoQh!tW_$857*U`SxkQmFsLYZu5-x3Kv?0Ky_v1WHzi;EVkNa(Vz7Ggv z;{g4fg4{6(kuqYVn;hwA?Rn>JssBO3PEAEpLlzH4XEf7vUVO>o(~C5)xlw?!mW&|B z45b9&a*xX#HwI9KxEjtXz);F#qtQ~2gq*luUgr1j^XFgv|NCFQe|p}Ycl`9j{==vH z?|yjx5C8bX|Lfm>f&At0pI`mki@&^_FNeRqo$n9#^W1LRZQsYfTlJ7*e-@8`sHy`RUI=kdoc z_UXw?0f?5e*60R+spCo`*A$xJOtV>+sq_?dwZD4PuHB18{|g0qMCJB zVn7kw?Y51vZ-bHg<9^OL&tppSboY~GY*TTNojDwh2w6v&>cFbx>cr^>P8<)Ty_?at z?RMYCFc)3(>G}5Q(>?mxP2u(ZJRc_j&H4WJcz+z{pr~H5m7)G6v*s+*ea*@(keS4maUUs8Y1*s48$$<2c#Q6@*ncdV1f$+%6vIw zPNbKTR+(uxJ5M-xoaYQ{YqVkeFdA?BAaMe3Q(qtFJY7)CNuX%Pk+vdT@q~2|;4YOO zhZOJgRNK*-x@>fyqQWS{2;=+Xd_T@}=FFX>guu9h?mK8i&l&>|0~PE7v#Pv~gT*{a z507y-q+((@hYeu}8^$1Z@;11c4I>FB&MA@{c5GuG)99Wx4rzH<=6^!NC`1e{xgb&p zO_{Q&n#mO@38SxJiY>y&9%Q*Cz(D4<8%B1=PFP-j_JUQcjZW%!TooWBH)6kUw|#J! zPeoV9IV&HIHp&rDcAPb{85gn~jErN&lp%pkoTuozN{kqZ$Q%Z*s=FjX8RFtP^jWq* zT(G1zR*ll)`LR7`M7$aRMq~PUf}6u5T?;<8%}BJfNi%q4@X3n(-u}_CTw*Y zUF%`>1TMaDGvNi*0*#CeqnNb)iNrXH+@eu9vzwo$D0*g0NYW@+2D3O@RKV3D`6GSk z=-d~Maez12;AkuyI+9EB2pKHPd|Bw2$mvo(?`HdbA7<|J{W#9)a^*OP3Rw2jgYl9s zrN2thiZ0d^YMcq>><&pdroT_GZ)6pY7rM-=Mz&2*gSiD`170!uR~C*Iv}7XI+)3hj zpiv><>c+GQ7vsYyfXG(RDDezZ7P@N`AFIB|TB8kB7EWrszgd0njlD@WP`PfQ$bLEC zHX0W6_UESN2#xd*Q{`!)sF(77LHn3Kxz)F>9*6w z+E6rnWF8HBaQZ%oQLV0(m^+T7#Zu+n1$frwc+&GNcYl#qOF&x$u^b;3wNS%amspqM z#^Sn_YsT`)%Y#94K`MjpOa-Wl5R>;WCw28>JK*^-QLw)iOn==fGRJ>AFcW-ssO z>D}51jQgH`X~l<&j>)%m(2KK>+D09$$p{Z9Cy$++!~;jlYF{_YdcivFz;l zsXn>LVu)-3T+=RsO0|NJs2DSJ;n-qDwbG6wZamPcI07W)goRzrlZzwH^^{^-(e>pp zHvU+S;`&Dk2$GlU2@yJM#Zp3E|13LH5u6%x(WxXUDa*cGY)x#TT9OAqE#b2KT^6 z3!yV$!NSmaO2w9KsVWG*f^z-!+QyRel36m>n_6K71ef?;VsjN6DbmyrSFotpHi#x97uOm=(xbFbRq()}*CxTIF*wi{6$ujrHu zwCF?f60pm!C`5;tNo0tQCw+a)NyzX$@bh%azMj8O<5#6oRceSB{@C}Z7>rz z3xEs&vajFgFYf>J>m=W9w{M>|{`7hL{`38(FZVBB?*Hn4u+Kxg>74%c;lF(M-(HUI zZ#w3Doag&I-+9}|FwjO!Y=uN+nU*n{(pUyVf4q->cjqo25HacgkHh}wXMFpPN4dUZ zV^k?33f4}S*>3#2*o{^{wisq>hR^E}Vv z%uLcLw3X_h8%Yh6gBRRg4vb5~=rQGh(O9iCi}kpPQr)4Rt<;!83ZvGW6Wx7vnXzE- zLi}MGl0X?HC*dxGE3?ajXj!pHgYlFrbq>$zZ}0y0I6=X%j}0v`py1Pe7^nLYi8CGz z7psbXg$T1fO8hFat2#3$4V3ZBrb}vc69*i}C-Zu-S9fL4(Gj4{BHU@^#sExJ-PeR#&KksZrX`_wuPZ3#F z9fVY|2SCLbzPyUF0W|eJa_}%`U2R{`b{Yq043iLpwp|VR3OO?Nf;g{e zOeT)0MivSD8|Y;5LLR%aD%ON(D;l=SJ*u~zsQySkoy0t6gcI1IV$~jp@wRVK`pXO( zM$=23b573-h6W<6LVsOIUu(|3#VE+t-b8_~G>o3y?zDJbS|enz5*e&jM7n}kEWy7> za#D0wGuYS^vVJsmRE+mVv}hDS7b;?#RTY^d89k^3=~V^U&Pip2Nn@5eObKB5^&TylUFm1`&#VYFEC zbY-$I+ARpGrcWEI%Z|Ejtc4kBFqHM`uby%hhZUiLh2l}}CxvJ&SKb%U{)>|4vk1 z#8|otbhy;L2Xe0s_RCgLE9I&}6B&C?))mX!R3WCNF5~ZBWRG_lvZda#XIk7Ijv!`=sjKHLSLS3A76p9;#Gu6Wod%Oo(VwU&RZ_M1qTjdl zZZTG=iQIb0Py)QBZ;5J6gKFiG@C~)%((N5HxCHr@;XsQDQUT|u*+Icz2R0TdY*67e zEsi9lOM}I-iK#V8+tdqMJyu?x>Rv%>U-*z&rpr1nPFb(9ZZbMhfHH?okvIuf^!(xr zq-yH(LYbD*9*`n*wer6TC*=dY#h~n2?zcq0y_JH;X`zFlSSq39CdsAs#dQEnmz9{5 z{!3L8$J!5IWr5}Yv2;~u6n6cT?0!N zzg~eXiwhbRpQN zotco{1Ija(+~?ylADi8_u^9(>5;u|-;~z(~EvfTLojSxB&AW{ox7$uq7};wnOv=cq z_7%LTW&)|}vfK8u)ya6pJp@S0UYNn8eZvw?ht(N{@kx=%&pXc-aal3u}>C^VR=ke3$?aO`p^0fWi-`}48{%M#fy`1{`K3^XE{xZM4 zo^SJX=NQ|FTttiR;>xyjgTwICh94P)Z!(%eM*RCH{9gzDc|r~+&#Y6#KKR2I`?T4o zo81hO9;g1>xB2q^`0E?~@?GB!J>Dl|av01u-HdYznvos-X>i-jfGw%t37E|wnlo#r z=Q)qZ0rzMsCB$S-86)?Hkwl^hW!0@kLA30gmYEwaz**h>iPjmZd5wk<`}F&#`x6b0 z^D!UiyT`-{CTe*|@5t^r@#nU0_uFQrfTwFtKj(QKhewDj`qwk~pU`OcuAJ4@9<`*n zSczbA)CHoHM`ljdHFJJF+i$WAYW&IYQkhmm4N)x@d718uZj?Ahfuc>vA)V8Y)6a9# z%pkMq*|ph}lgIQkMymiMo;JJ8w~V2hiETO-3a~w?NN`=iCi2%@F!SjgRV307rEF~I zkZ31=OuZj7DkKc_7|l+2g$5esu!m;I+c^?k)1x2OIbrqnz;+`8q+B6}^tM#6vWp0j z$RfAti5>I)D?qhqneR~Oq|z(H$dJlO&_KE)jVj{!O5>s$k;EK@0L&zaflkn@-j^zB zFR+Ei#zc)U2}>$B+S6^j@0*#;>F47-=A3!VV3gLj>P+CR)Y=iwvAD-0(k8~5!dB#m z36Nt({v=m|_{a>|)R)`XdNzcrR;WQQP|Q_Wpk%5LX@111BuiY+$b&l-MU;)X1;L4I zIvL4XWHhU@Z8vhuaKN^0p=prqV&!Rw;T{Z`*j@xPTNEsTZ8(z7cvSYsT}4zx=g8nx zaE*f*nf5bkEiW~o@fnAREm{hOwXwpSG((OU4q6+c%~u>oPM4^7Z-N4=5?z222C?0@ z5h=_%&ok@sx4Q4I&{9T+D4fF+Sb`p_@>1T#%QFBM)SP?<$^}q@~UH+ubSt_R7sgh5D>3^n9v*rEO zBQEaB3c;vYp%@^go~ilE^(#tsHD3a$l=N2fybzwmX8d&D9;e>V%NW+m8!gUmPbRRh z`b8+#yX0xZ`f1^~uf11tU6hTyU)HF=t+;!IVETCAU3 zxDU;htr%KTitMF2+IU^bR@R7lC~Y*bHoKApS4g%GD_nb26pdwcFCSXx8|1xe9+uYC zMVk6D6gf;Hud!;0rT>;dpcuExLD!`NR|%U)i~Mw_0+8>JnwHeE{SqB^uRNq?!7;j%7yv|J=;n$%I(kJsH2+87lb z*3Un{n=p_CUhM-eQp~4D{ykG#q6~sWfWIm}TeK zcPyZ)c`AfXdEnMb<|82R%yE%Em8U+4+tY2^#(vw!7`NLfr639KZ%5R5`ETE&d6pg% z?sA2%VA-TE`K_K>GEv+S1LYRms?-%6HrSC%EZF94wWSHxEn&oIdlYObyMmjMH4^`g zdPLi7LXXqO)6IsR=K;tzI%vB^v~!HiIvH`v0~%~ngWS!G9+&=uJX}V4?A@&LhekHT z2ct|oxHrdBffv&dTGlMx-H`$nYB8FmPGE$St?Y>d!;Qe*}IkWXhMvCUK>Q3ku2 zaWj#0oNn)L{+Rsr4cj*jJU;Em=N(_3`1yv-!sC z9{!%01O{Q4jVQYu{9(sN4N0KPBslqH4)uk$1qOfIQ-@P_|vOi zC%+v$9OtwtygdAPI8KMh_|fw`J;qPUPj}GFHXg$)(=bD-Dj!O%!brKFhsz_ZLiMPG zWYIVVX<{b3rNU2cY&)E;p&8t3`e|7$qybYjj?w8)Pq$Cccag_2=Xttw7`NLN{iv;` z%>wchF)T6y$`PjvRgE;v#nlTej8#>NVF}u z+_X{I*0EAl(Rrwic1YlijIglit@YHRl@OqAof5x(@l>s17sb%mFtpKmyN=?lKa)_=_9qA#$sZ|VU!D!LIFvAVYX<;&K zpy1$_h;x-ULW0r44oHUrh1jz9AFUG8(fF;+bmc^%!g`jv329WbI2hHur`X*(cEGxS zZ2N+gB6laXZ)4w|_CW%3&bMRE(`U|s?J4u|z11u=jRK&U7!$!hqt6@_JEBiqS?K~y z0u*U;(-j%tRuXSHI3NVy2t`n*hCf!`aZG=Y=1}k)RNgcLj8Q1ZVe~1sfRIw?-m38w zt94h5RL^mzfyi~7(=-7b3?fA6Y?vX+UiqLF@6Illr_2mNq zeYtBoK#l5& zjD@z9V~(O`Ilbjz$byC5{c{tC3FVZQ@6|YFPDMH&0QS!Tl9qv&3>vnmB|f0)UN`+W zNi}2UN@Ap2nMkd*aUD$f_zU^7oBEmitN$5PQj^LjxU-L{sMFmfY5J?-1z z%j0}`Kj#XNCGSa6=XRwoi8)jW;xoLUZVOY2sq|y+M7jM7WbZ6s)!#2(16Bf|3b=Q= zUf|%B4RfAWWs^abhyokT24WbnFs59tOOkjD%t<_w?i>?E^vU33Ze1)um4O1XatqeR z6P#R9xqCOIbS{ZJ#S)NMY}vfoG=!qZStb7D3NwnxWi->j0b$hVr)@f3AG0~I*OFYr zwW(mqisYi`+4dI#WHtLD6a5RjN_16{&^ticr@V{I$U;e3zQ4ti6tm}0g+i9s zy`te4@}@~vd8@6;csY*tj+djYqC#2ATynp6N%7+86tF(!#5^o@QikQjds{-%0Id|N z+EpF>ig6}wN*-G0TxgiSdVHIKSiF8-4Jqq% zOPCjdS!|Q8YraBR@UClunrqRy86#zcCU|PX;Ic>*_#=?8@r~qeJHlFO-jNUm3i-kG#BWGu=1bc^R7{mwTeS4S)uu*MqT=HM0cEB` z3bhRzgVSC6`1JW1=Miv1QD~7)T!P%-(lJQE$T8{^G8MrSxV9ay4TLF-_UaWO9BbdH z4x)Ws@O{qmh(Q5}ST2JY2A0*3$u{M);~o_ZX3cRmgrjx&5b_#kyW-oL(R&PW|M zSa#ykv^4qdr$o%`(VnDd=EnwcKEqPND0v{p9G@~eBFyS-p$)XqPwIA zo{6f8MV9sha>@C!VHjgf_qXGmQ(>B?r!Ml;NNFtcxWn>Z!Blbs2Q3zmdMdm7Y1DYQ zQL3dpyUTh?FQznIj1yB&wCYiaJFm=GmriTqPdfv3ryLg|OfQnX*1hz`+XlET{@3>`kWc(;E2Z9$U57EL4)kl>qvzPNR*fA4$w0F z7eGejs}b$Y3dvlJaigR$LIFg71I8FcW3U6gxf#ew8^EyC&x7)Md!o={^Xf@vW+GE> zm~ncY43>)TKZ9MT%?i;*9%Q1nDEdBeAT6q;D3vMN25;NAi=a11b(iGlnX$Tz1!UN| z`3ljfukw8Jio059A|wkJ6q1;UU{25h0UKtkl~w95l3k%ah}}5K{&(fidMX59n3>ra zfg3bW7qAUOw4M;AG>n_s%z#%ZE0@TDo@f~;(H7e%=E%b-=E(C5S-ZkRS~4YQ2Ae7U z0at|8(mP8_p5AKP^fbt91cId-*|@Woq5^!oR_9skK6lKkei5(|)>seLWtB zM@nG3^7V0*_tFZy4OThXA?)#qxJ+95t`yO_V-QfdznHDv4J@dT&*|U@3aYJ77PZ6r zz?H#{r2bm*hea_KU`=NtqPBMZ?NVfU1M}&=lX!VMy@aGcl)Tv%7ws4oG%J-*jGq8Z z)l49FyWYB<(kQ>({_D9emW=O&f=c&_*Yp5f>0J!f@G-ec0xKa!g^W6^stgjYCjuSg zD9^Xj9qM3^_9=66T71-dD4iM0s%Mw^NwF@M4;KY{b*Ts%S3s)Hz1F~b-v{~z$qR2J zW!WJVc1*W0U~Cd?HWubsIQ)_h$6gyS*~%(qD*_`Oa`-6a`HEPkQYgH3&5jckGi!0U zs-Z)yt4^&+_wmfi%D2b3GI#1}LC<8e&^2}MS#-z;hu6!CroH~Q#HHvH%n*4Pm9@=! zY2feDc)099MJuexW1LQ{zv!oohE%CTC=9!tTW9uMVDg85sg7K&vT8R=inMsWj8qD-;!Q1e88yQPEeO=Q)W1sW#$^EeXZdvhcxQ0^^5wC0gk>fu zDVqG0S}E5;mlV!SDU7-d)%jfFQ6HYa=$pFa0vr~x)v>?&VSZA)9M*btDMppCY^h0- zFZQ_}@OsqZmKM1-7)V{#pXBu+TN+|mR=KO}R>$^L$KMhJu=vd_|*A0l#0_#gvFRSinL)78iKi>PF629eOQ0Kwyaqiicrr{S|$+D zG(3*Ps7UQ%1!Gf=JHvO_5F8GUJh9AMAln@_QgF|ion|?GCR_mrZEPmt@p#N>&-=dJ z#`*T{E)F>8?z=??oR|U&36|~HJ@e3vFd3-H#PSJg`qabW3qzXM&O}{=M%qXAkQBg} z-VsnmpjGc8v|2$~Wo79`ANrLu%|_h`%jYCybj=(C8}Sc6YxHr-F#U9l@tBnGGV${( zetyM$_5})ZF<^y+wJ$yd@|jM>3DZNTwew^VnhI2BBM43f43V4UR{6we*WcM zzZ`ZtAE!lKW(b^7!{t61(Eps6(>%Mw609CVmR2W+n4*YY+8G3@p$4)dxJ^kgV}=1h zD6je%?p*o!snu`(naMGI4&&4Pe!K7IoUgC%?iw~mGAIaV&AO|c zL$EH0f?F~Y2O#`y7lbn^6LBU`j6QI~HXFBnzu)#iHtwMO^f_ITP3Ke5vx!aT*Xr5_66wIei`E(D5CxR(e zy<5#Q%HD_i_SH5llgxw+{VGC=NH1W@Ol)?Kc{TTNW)v$)!s%+<4BIKIzbeMq;^a1XL87agJW^YBgpK5xy_7J5LA|h$cLdYhcWMWqLz!NE_|U##IUu1&SZQmf zIJ;6lW$(h;D%%CXU1ycQR$RDdMQM32Oer$7C1zsgcxJhXZ6(;wt}dTx&dO{5ZX8_? zs>~ds+e!u~DL}eRT85ugFK7{E*@43L71>&fN*chY=l!;g*Z28y#7Oas@+{A(-0G6w z>^TEuf%=DR39zc7JN~j_Q0i=s{9cE#^6Sjde^f{>n61L#>CFmN``8e+ovffl<$EGM z-Hf#{MmN*WBt__6rmzsi#(_X&7$pw5rjRxX64n)cG+#{NO!Jm!&h)(6#Y5?oR5i`I z`Qi0UT#`KMxXPC)KZze;WnJn57q3#!``C7Vdwq0Y9IU`n`(O=WykQR{Kn95U)XO__~x2-mel?by;-Nno=@bU3G;YuL^c$+L<#HOFS zBE!XgS4qsCJ&8hH9cF7($rXPrpA@YVq~%Ek&jjhzt3zEQrA0`9xy)>{hc`bY53OaE z!CHbH=Tbb?{#Z=k6Y-^#206d#uHX!o+|fXmM> zjI=1FlHdAxv0~f4i&`iSBf8Ni+R0z!>D;r+k%qvR5dfe!x%%!rdOqZ?-e zUg(x9UDmP=vXmpZ)}ext=?N_zQvY34uY9{+L2+uUfg+HXcrAM#OX9^2wj?evz{*Xm z>o+aBExx#fk5ve2X@II_M&Yhz#g;1p8)@7$1a|{8r%?7H8gL`K8&r{6^UL61rVa%< z3`G|$%%}UD?&ky`Pw-5dg!6F*^FW!sWrH#LFTzQldL4uCiF9@L5s) zaZV{uZB}AaXs|dUL}{!s@T}4*z%_jqv`p*lGn=f#<#Ub!f<8;K81qaAjW#w&r-Q`% z1A5?>2h4EWuycO8;mepm-SNZ5FHhUt&4@SPDK&*ez5;)K*S|dUmxq2k`2FC!b9(kL zGRooS=`+x+OA4}r#AZgwEJD34=xfwh0hZLErCzBXK~omy;&#MQQZwphqGAU|Y6gF$ zny5Mm0^Ru9vaZk2U7HBFyUPjOZ~OD7yM(vb$2q6L_A$EmaD)R`i9)Gw1H|X_j8>$n zeFM{n1sZ^hb7tJlkH8ipI0j;Tu9@xocDrq@gxu$xe$IJD1+ZK`Pr18tf^hl`*4{4D zA4scOdMq(nl)U99YtAA8(!BZ^3ovruw%fklZ~Jb;U=P=fR_K^#PWeR#Q*vOlr)&q* zVoWjxB%CuFV;ZxNhrGyFwFH{kRJdG#Vd-pz5+fN-I%{_z$w6#pvhg@hDH`8JS2_## zz5yd^eP!>MK1|`#_+1pO#s(1)Pv$bYI^8JpjQe7!`JvTRQ@#zpO1;H#5xt;bngTHp z*e&|=KMAB)M&$CkQNXG435-y8#bS2#4?tXI1*Ktu=!m~>cH6dn8^d_Izdz0xo{?Ny zcNKkaNEppBGaLj_L5$p^VoRxEVWe9j5rewTTnx}F@LeEILyUY3%ovdvkl z>I^y|87Xx7^h9GzkAp@`B4`q4yyz^1tsL$9$8w7~jPx>x1v3lX1dIsNQP3=uPJsdl z$ZQ+etibuOWU6Q)L9=a)VYaiJdO?!AHscm)y%+FPND6ttAsPuclOm->Gsa*8Rzo)^ zA0*36QBpc*rBy3i8uZXC%?f@dn zr=6atY5-va5}(zbZtHU`+@4|jxOVi6Hr8ZdE^#m6FKm$l*k&hBD+Ef24BrU3w0w(( zL7HXTO6Cn_i_?;PFo@lZnB%8D*xq!GqU{K^|NM&-h264sXR+-Rlj@0jEIOTCs?)UX`5P~QCS}X zM*uk%IRbXG675<`r{7Y951)j^e(kGWLp=Jh^hJnb6_hC{(qRQXOPeD7lUS%g(xuyG z_q%<6J5FyJH0!O1Lz@;f1pUA^Yg6e_XNQNfe3kptZ-@o5H7mKqJL3_xr9RjC_40R- z5wrYC^g>x|g1m5B8m7ya1W=tHSaj~Cg^DTIl2Qw z`S}W%^uk%evHS_iu8Ar|lDfV=)z=R75q-RDt2l>%3X11xT%r;65H@F(my2>yD#TFS zh;m_aO&8wjvs-_O8#vCGAAxln-%QcgBeBkUSp`-KvTCvAg%E6R>Qh5$%B39^t?N)! z%Wod-uyfxD1&|TLI#~r|iye}0mk^~^Ut$y|xd>OGw4j>zxT*z-+qkWLc z1(L%Hye=l`aLZ*`fYe$dwX!8}lrE`-%jYWmgVME?yjbyZTu)1EzG$6&Ii(L*J6suQ zEQYCoZi#NOxaX20o>52Fps{U7#lV-TYI>Gss>saJ|BK#Q$5gBva;=i6T4(FoI#AZ= zxZ>b`?OIAI5Z*| zEa)%6qRA1+wYAi96lnX%*&YyWMP+W|uv_X=S~bha-d(BWsu)n!aU(%^E}5G z5aF<4rDXF~CVQ`fnlZ$X@x!s1Ccu~;H*E_9KS~r`j&nkU4xF&J1HYVjI$Yqk;Vb#? zKJzoRkq-Rlcm3Zl`qM*ilkSuTDWm4$5GLeD=AvhZBco>6((wHj3!DYe5d86Kq?+%M{KsXvx>Nu{4U6m^#aGj7->9GLQq!9NbUCUMYg-?n|*L`4J{ zfSGM$+b!WYq$!+_W1bP>%PJig=vj$FfFqbYLXH`E3GTVHf6A+0*@K~+f|XL{97Dbq&l$74_Iad z;qMnP17gHM#p%NNhuPcXcsoymqYAPqc?BR+ca(E?act6Ll{j+%jNvV2Lfp@#5<=9X zC&-Q4ssbSmrW!S(B4G**n(>r;V_8}-nkSmeFWZZpGP>f8==(PI)evJ+L8h~;a1bvo zucKdBdmE)aKtj|h5Zh+A{dV8B7zccw^Zi}tj8qbhcwU72)1Z|A3%KMkUhmXW6Ouju zwgW}-Jic_wAd*hVWi%@9<;i3Q%W($;Bk7M7eOLi~w$blfsM5eFGt)*J(Q_{D$4Jl7 zZ~3bZ)YNw~)37|8bx9BgH+A_3sFDgSF}E5g7aF1w)sg_|H9Db4C2{+u$|^VeiLz zo<1cB8|kgF1utks(cxw^e3~T0T(49m=sQODa`Bq?<7Z z{k@Z3go4S%2&$Ux>h=}L$Ca6Rm(~Xw#*v#$i)P6}3sq}r5th0tg`mWk=v0Uhqfn!= z{KUnll|nnK+?c|ojbbDHk=8P;gpT=~^(P$!|L6c$AJ>adgV0?P*2NMAiY4=dF2~ZOV>Mscj87c z(MNu)Fn0F#2Gq@YKDfJSxh`25B_yGC;yy}w25nF(-M-doTDw49x}sdKGHYeIQiCtb zmvxMv`!FMTUPjK=37}4=!Dot4kqCVTY%R(nX{@WGhjoXM>`{RpmIL31TDoiTTOYSN z8RjC{1p%NoRH%4cio^xr_p*ziYqLqxWyM=-m5$7Fw#wDBsM{)PTqUTKC>i!T&z@Iz zwBICE9E3@eSoO-f&6v?udzZ#YpqCG^rhP@gluHPAavfs=ngWQbC?*n5RxVqBo+cQI zb1x2SV3}r^&tm`zzp=KsusxL3J_(bV<&Y*L=(xT#1ajK{NpTG1ves$k`Pi>==I8j*r}x2Q5LQybln~eL zZjTuNlZY(?(?Drkz~ke9h8=1$Ah>Jvrp}R>jMZ>z0S}Hl@v`Bu12ewgO8&r?U;cO> zY_hj=7Wx5b=v$kA9fP&KChqp4Khpa$g3&xV^y3^nN|O(Z-cu`1h4la$a-Qi;K`;K1 z2VJB0*da2(7+`wHs(`C6S?!&)=Pim6v99j<4Bfd#?z@w4S%p;MPObA%D5S`sRzy8e z!l`eJ@6d*`WJ(7JJ!L7W&|t1dYYbq`Ug3B=+f}Ir4{e}TQ-cJZ=qRPN`h{Vob=-*k zP>#7;y1J(a#X~X_#z6QayDhrXZIPWUxB?$*p>!K|yyCZy>+kRHUAt7+*Oo1NToG76 zVnuL~*$1XF4p0KKvEX;J$E|B{6-Sfiile@H(3R{4yrr}eACZvtDf>9_y&v+#Vz6H{ zm%WuvR}FsmQX9evK$o4judJ$#Wd7WHEky9T;)?jVaJ}N=>L%#?JL~T^?yT1>F-HWJS^x3rW10Rs4%_xlP>r#$tIlFMEa^QG z+OA9>&MLLIyZ6we9lrlZ|04*nOV0pY*Y(He_3^r@c<=r7weNSKc&$sS?SB6*EUJfl z?D3hcfeRqe$(3#@Xi&yD*DiDHql#E-Rdv7i3#dMdTa{bKr?P8eBdT)^D?Y9jE68|# zygolaJP1_g-dV`p2~<`xBlqqHFe0cKbw7MCYGciyYl*=JU&6%0`-rc`ZUBU+0DfH+cJBBL}a5%sYbVsf#zst2oJgN4%C%XEUKlJ1Z z2}E^w2TYy<>P`(pT?ue_fj@_diK^VXu!%$)K75v+m|elSW%fw4O~i-W_{c%Z)|mHQ zsEGLde0_dgA6J0byMF$>-}}xIOY0jGLJj^pY8ax!YLGJpPqL_sJL*VV*XdBw8&3kK zI_=np?m`F|T>^DDQrD-HvQE%Ft?A08iN00F(g5hLNryxV99)K>MqPbLNrg*GqN|n# zK$=+BWLd~P?hf1J58)JWlglMR*!$#rBFrcPS@$h88*tN41=y?5PPX(g2ePE@IC*ws7*1kL!+7glC($=V?o{-i|%FJ~> zKe;@d_qKQIZ0G0zOpj^rHiV*zT~XOxnfd6C5x&`%Di0#TYxOz%nlr(@m$i2m`hHmD z3LuAA^m^&_L+>G-(d3P4$J;2Iac-{*f7) zHEizXR>A%`<=80qWq9e`rk>N&VtPTmE_I3|P9DvxtXH;_^1%e#h=dOq6_L6z-P>K< z9Os!BLf6FJ&uCXcLf58Cx%DD{Myp(7#x(sjFlbgdXA0&~^78X`%e)nGJhv`jck_bs z;yRUSC3$G?Bv76z?U8f7Q}V{Y$fPY?Xw!3)Zq#JCo$@QvO=I<9rSA_Y@-Q4Nue*jl zjx_^=PH73K{_&x9|B@9^ms|fpXjL|IDU9?*SIbK5UW_3jnr3!kF&|@ksHHxa5QT9K zGCCd5SVM#KK{Wi5jCAsg<wn?{XR2Gm*hl4yYLkj&_3j2Qku@xJP0JD!FDa z<53=~*ZdoBZqEN*LlFM8Hm)8re1M>ZB_#1001r-dg}QO~hf0?%lp4NBgHiY0e7yGF zxw9M9z}eT199ZG&ysD+?@`AyHUKSj|%Cm!D7ejEdH=3pGojb8l>GVi!Y$7XD3fGCd0Rx4x@z8Lc)}wtJfezQH zEWQC+3#dNZ=cgV;Kf6m+Tt8XzRU9h}6B&oDK;8uwvLdjq*SA+(D`Mfgy85N^=l%5t zeFfoKeIZ`)xA^hK_X{L4>%H-9Aq)4<`)hM&aYfH&-{X9`+ylkRoajNS9z$lPKZUc` zMM4LR$pah*qo2zMuS0@6yh^ZWY$6Bw~wIXuo&-dL84NHy4$e7p(Red&C1bP-1 zrDKCNo~1EWmMBKmo?6(HyQ+ebzAC4AX;%fhj75czB(>8_^@^Z;605M-hxtKbqh=?V z{mIoP$y7F9S!5G*=?``hx^HA_H%V^)lHNo1(XuWu7{?R(D&p=$Z2NPF6Ur(`fARm&1Aa zQ^hAe1+xO3Sdd5@;L{KW2jVFB7)w*8XBQ1yfo>TV^0qAK)KJrX2PuMe^KH{#%~O`I z^oYJAD>V=Cm^C3;4=l`{Pe)4k)>)&R$`aGvr|~FUcIt4%2+Kt5%$iz{FE^6JY$01F zQm~oa#MX_Fw82O-AElL+V@;~UPmmhqOjCwR%k0EFy*W#ilD&qhZdN;KfPTM0?8N5o zx(AtowPQ92C`9(y91zy5g~?dU?Q9RLU+XM_fGQ4SGBTP=>69?$J6EmNaq)rXxW_t*VK;xcl`T%gft_2WvRaJC1B_OMIpBgG-rS>EEiYr@}y2Wy5(*)~X?vW?A*#1$4 zXHcfS9~8<(74nZizWwpr$AA3!*^yW=`gR5iS#`pNerdnCZ}elk>ZK2p4j|Jj{ve#DPH=Pds&X-x7@paSU5dI# z=>vUP!SkXPo?pRQ7Ub&S7O2{p)jxR!Usrs5Tx;=j#R?X=ceV&RTzjpE#if9?y4+GH zj5PMT69oR#H~jY>>-$&zFMs7fzuxyQ#0mxxTbdK4p8assE#}~Y8qb?7X$=5D-7h6B z#OOz7!dfv`^koK9KM8bdhw_>v5TURTCxsryk z-_wc}Aghvnn7xu!K%Zla6_J^pc-mDv@eZP}Rxq$4){5)87FR5OT$=`gL2_ zDMdV7rc~e9S0c;2f~&^eazW`LI%6o_62_Zgf_*pZgM$^OKnisA*f^YrDI4f|kZU1z zp+;10vqs|F0_U8Bq&e|(kD!GIWzeDiF2PVhT8yjM@oaeR=n$?I){kTc2vvcTG2(aY8p?Xu;O9py`UY0 zi?KG`L+>5x)jn``d^%dR1Cf^-9@DNQxO{w0jy0JI6!u2Gvn@srE)WqBfxc+sVnpy2 zeKG5BN9U8A014#B#c!Wiqi>?#d$;SH=COL7lSi7m3XX03@*`B z)xilLtwLl!epz9nj!N{dkawQMmrkClehJjz_??_bOz3X%kq(I_I@0@Va>=yTDYzRg z?ab1yyud%cy*@wI&#(K>pLfb7ox5+nu>EGoxkCWuhzq{fO;yJI9!HeAb!WEb8y*d% zcA)wQoS~rqL5C(FW;>LL#P6+)x2#4aCMfdr@?30npcaewo>46mhu4OE?yXno6?4vXC!|8d!8BFq_rH?oW zsQTmEb*=d4-(OD4Ps;R!Rdm#%C9bIgNl@)dCO`ZOJT(dLP?J`3?@K`kfHge8p~IBT z*=}jYvAVcVkz+iV^^F5P7BeZdeqi}~T1-r)L2-l#Dd=F+HsUzJGO~&UooPN{YTG8x z$E(Um-FepG!Qcxu)ZYHiyjHY1`au7z&5$1_(SUQ7`IrY`Q&koXrW}%~$2sQF6QCwg z6KNd5Hn^UL>WB7?4o;py6NC&xX)7sg+OuWk_t+~xvUZJ@PP5RvmuLicMn>@?6^IY! zG!dN?gFa~WJ_(M;AIpVDTqDpSVSqOSNKB)q(JSrA)On3_wm3`S*Ni@Ttp;A&%ACiR zO1Kl%s0xRhS!lET8uz%WQLslM9#Atg@X#b!T^|p$5T8rt$JY${mycQ1v}MYg4_U8| zpX0FG$2{!AB_2KFs2}u+qs5ajCg4mko$#G(j?>(DYO)1FYZT6NG@2%(50jbvpS~fg zTn3+^2;&|06n~b=meBCHx&qnNOl^i*Y*z&Yxh_DhXLIl4Tj=ebNk#WEdMUN~2R8Y-;y?ZS z=k>9w{`&ded$%%+5z14D_V*V<25cRa4v>H^CZac7T3ND6r891C2UY~CT<;9I<4ONG zV+^3HpuHrs`7LE2K{CMA4t|^*q(IH_1H8yP?;HCfa>a`Hd|h`R!$b$_d96rs32GiT z6}ynKK&2WXcLUmx=Gu`#`lDv0o#)n3b;9UkormFTn|AJXr6ERe;Y55Tm6bXUFn8YO ze=B&c>+_1&Vk}lCHa34|R)P@;^qHJ1@LI9Rmv;QcWmxd_7N|RG@qObze&TiE_l5uC zZ}C6<5r5zNKmVQo>)-h2kG)fvsY(-jmILtaZ6=#KI4)^RFMZ=}YY7sJ8ZRiTkLY8{ zM-3mYWJpdo4R0hQc?Ao7RdDs)3;*`p`oH{7zx_Y|-+%smzpq$2wAh)OixKN%t<{+= z4#!1RWfzoXVT6dbj)GM>u&wHv);FK`LTgSxP@a! z9=!sf?)lmc0*ikV%9m<@dbldp;?kem8>C`Z0yNWaz$D;*- zeg`d+XeG40Rz#`pp=Zm=THclEcBv74gLSqtB{Ga=&Xv{CyT-T(xS1dv*R|m*hmut* zqMW$ZSQu+%;wy8Tpye-ak*hC9SBYaKPL3l~oo#*$W*5FyGI&9Sa5`Dp)r8@F{(gFS zf5PePw)#^edZ48xZrbMyHU>cP_#+hKP%+UzWxIrdTF1=VnPkQSi3P3|Bx~`ri#~`5 zUGCnwj&?Es`1bna^9o(&Q@eV8+}dcPd?p^nN;Yi0`;pDy&`D57_jf+?fq2p*vojLp4cMz-8Zsd84`R zFH5CWg$;xA)Bb@uGXdSN+7MSte>Zei*^kc42UVZ*D$aWuxlBOz%|i;Dh|4=YxGPOTPVe}uukK2uYK?RNA2}5 zAKT@TjWGfbk2K3FYcX07c2MqV+)1pe5xvJU4cld`)~c{&`E%tOTSqD~$8!AdWPk_v zR4%I*K%RD(tf%NajsnB|c3YVo5cz8CBSUHFsN8WFQq70RrJBteq_eF?;H)kWqL*V_ z1J@(`dxY+#x;C$-AlAuv4?(g z;DnrTO6)wI54ZJ8>aExtSRI~& zc$mbrmpI5XAAFPw{JPwRi>51OKdB|@(gC4_)RmK*@?*5D(#-J*BR%7LYl0S5BT$Ex zaUb%5YCSVkIOo8I6^=Ut%E8-D}g>b%V@nf?;72KGqB}66+6pWjgm^b zRMqun=QwWUe`qEE8LaeHNvXWa_L(4FWRh+2`rzIO?rtCKZ4D0ZAJ@YpEqtW|+Y z-i6oa`ak@4zkj{!{k8Ah@2_`v-RgksY!v|@A`xU}nP?PxGrr@RUh}gd*)+n+AR2}$ zMwd*NW1R_TVP7cPPq=0Kkc3ve=|U922rME(hn-*wN-&*IS&Nn2x!>QXb&`!89jBN6bx#sOr$Mqj;5Xcr__?&qv9lQdlj! zG{;xk!=0Y3sg)H`uN9v!ysm3q5#U-YtB88<%y;z#mn-76x@@8kC`GU$xB|=T)*Xva z1q9mcnczl!ZT_|EzwG?af8*aj`EMWVfBv`YfA|OfdgniX`@Zk4Pf-WH6gjReRsBI&06X;{qGCh$)avUfA-l~Mtjr|2B8s)j+2fvLD)lb} zQ1wgL8AGSw3$a$L^;%KjUG?MruDjkl|NQz|Tvx1r{PB-Jen;)SGj)_T`)FXv&!~~^ z+!(Cs7MWGq6>V`)6$ys!eB6n9XQnS;GzStigerVh@}s1S?h?V{K&wRPqZ*95v@@T3 zcTJo*nvgwvGes|g>-XSGajF)8RRuLrlbfijLO6q7?1QdUnm4go@FgTV^N4{drf-+g zROPR_p&-ip>H=sQAnhRwSO_`ma3NK%uoHH0_}OTw`S#D1|6rk43m+?9*ZO!}YpuQU z^WHzd-tWD4<%%^o=Kvy(bQwZ0=Au)eR%dTA)xWT_aN-3V#^!0Uyq6JFH~mGdU>37* zt>{Q?aTO3?=KM>3xqQBckCp|#KU)d=2n5;3eh$MX*!>iV2;MsqeQdK!{)R;M?Il@- z72)zXP?fb3CLPao30FJWaJam@maVM_I6FsFny9z}r=N~7gC;{Y{b>let%OEc=aV=k zi^Z<{>=|~9N0a5C@S|^*h|7CzRp>(sSvw+ocM2Jq-L#U`$?mwW1#)MmV*uZ&!^&E* z7YC~?^@*0P`IKt*|J&{NRWLwJRb5pnwi(CMn+=t|&+8nNFP$ss!7in96h0|?VTnPi7$?6!Kzt)ghiskWK6A876hLs2q)6^!!@4vr3u65u0@2~q-_u5E2fWD!?Y%Yvr z69}4^5j7cOxxOH~O`;`t6h-+&?Y+Bc7D3n(IF~-byc9@O!c>a=j{Z!Yc6+8uoNz?j zPFj?+nL1`Ur7x-;ZLMhfdNiO4?k(jYt`m}8{|3%*i&C4ef|Gxlpj z2c;bG{R;wWg-wPe-K>LZy^zjZ2tmtP3}r|34heO(kIGtE2hK|V63w6C6}&lz!+4!^9Xe8gGsYI(bGD-> z_D-E(6Oz}nHq9`7EY{A*piL)vwJQ*C!0#X$BDK;bJ{~q%z%dyo&pWGfbWVq1TYZ`u z9Herc2RTO3>fvkur1x;g6gvq&YXs*3IWWZld7WJCSig;i97$cWt~r zKE8c^fZX}cT|fT%`PV?gh9kKsm@4;@lYhXu0n=S`S?-I{y|h`CI@xoeV)Xr7 z3mh1|qHox-QDW5S*mP)%)m?#t9cx{|j*(Yjry}R7=K9&iN3ZKz-SR8=PJZ0=xxfh7jpK}6elP~G0-zuR&GQL7)^7h3Jiy?bAgxK{lB`|H2^{qwiqK7uQ& z-n;(#zWRv)*_-cBkmbHWv!COsFeR#jgf@!(Y2fYB}}x)CnciqDVF>$;SOCicDm z{PXXxuQw3L;^MW|=j&R*t8aW*@$nJAtra@8nVpQQDr6E>%q+FoXvV)&J6&_C&sbW0 zB6?Te-QB%?jZNPLxrDBilrM0SNY#FnsfcBCy;Y}T){4yBx*Z1vRpJOojqhbv+t*9l zQ*u5+f?bN(e{XD0yF*phAflK(9&YSD^?I`}o#fT^M;!s_T=FE+vU|e$s!TEm0_>h! z_d}V%zVOytx?xpYN~te(&sBq$?I( z&UdyyiAGU*wHXhYm8%nEh>8MgE1Rh?^j=h$$tZwfK^1QpnjWDt^#_UNy87Ly0Y~Y3 zbusO6xMmm1DJm)8-zk8sq}ZX%u-mD0Xs|nFz#Ny0s<;-~Ow}|{WpKU~x7~Jk2H7Y( zM&Wk&TrFJs#8^t1LF~%hoZ}GsT2@_^S_Er7o@ojLAbg?0^GHOszhUR$Dw`Pe&Er+o zD%H$ZQ9NB)XFzKdxieSrMRxt#_n+^dKYm`nf4shZOunqW&mvzDd{NiMquN72q2vCYcJBY;1QGcDnukBjlbLAh(neukhWQw1RFbw98r=O*8 zB<6}vVgw_uh@t#u;I`F3p9jm2EB^8A0{Q*x{{Hi>;#$3h#Xu6~}E!)~2~wRWB|LTki? zDo(xIEI;RqK0WK)0sZXO%YdWyc(nPG;m<{gNsGgncG_VHsZP(rdAH&j`!bTHTWXb= z6$td&kb)!YmRdu9`&jRtUw8Hvugnuq;V6&PFHY;DqKOHl;7w-H5PBWt{4Hoqn-?wvOWL3u?t+awl5!z%Ii_8OHi8PRX>mI5ij#K&b-z zQYsw(q0my#uKDzH+2q_iFhjm-K9Oyis9V>~aWMkrZLGy<)~pcrP9 zj*C4~z4k!LJj!O;PjETu!~7p;?1SO@qh_)Oxw3*eilg=8xQtW(W>G(J#GQ&bLmF#0 zn;D6~MP-X{f_yEl`vfRtl8j?MNvR()E*dyc|?U%^qw zEt<3(HTVT`41!Jqmwx7jo_AR8=RY2^87miEf9B>MNxENM0nZeaK$^&YG+Jxp(T@_r zVtr_5l{;!`fy3~ldIeS|gr->)03Ds{0iO3CoO`Ux)0tZTdg!vrG`whhl48w&;#Xmh zuM6we|4!unaceb`a$yHyw{{B1ve}5tB{rii5e8#_h^0&|Upa1>i|NNhj z$e-{0^Jo3%Zy*2pKkBa^_t!hW?svpmWGqHa>@WA)^EI&B#Ml9~jv5k-SZ!A!J#h@t zsjYppDpp*d@p-+z{r39y+jV_h5i5)D`~LgypFe+oz3&PHfs0omV}&VJU8;>jq51@@ z51!GW)3%v=*ZWKD`#U%6TMVU*-L%|4vX8BT_^x2EOJIddeabNqwi!M*==5*-prErJ z?2l*dECerJ>-zk7U9VN-z4Pnqy>nj?SFF6VH`puC^8WGj20^@$6)S>#z1DTb#}(gR z>soPL(E=h%I@0$<=gw3#A?9AXWf^_)l#!^rrk>es6QU(bz_W|HDJzC{RvT)viy#8j zW2%3@7*(~i{CEl`tv!9JIvX+$8_14mx?$(|a*$E%1Ra6Ze^~}JGrzx|PMvof zng$inafk>dG7#nJgc|PM+@@csEP3Y?9dLC{tAyF!-p^JSWNiT5^ePpZRc6%&`0;C?Azq^MiyHDYRv8!bgCsSSuK0N;6t2J?2#l(JO?ku~1)$y4D@i09E zxJO(Z-c|By2LF#roojKH7~t)dQdb@mxRr%}^! z$n-vgv;Y1f=lX7l^r`EX=!T?YTMUp~D_(0YVrTb~%UAE?*qnNa)t7M>3ZW8CZKt^9 zRRf&T4<8GxTEP{mwKcYfFMaIoKF-dR8Fo{2J(9;OOhrsDbl2bQCL6u%;VpM%(H&4& zD_6q|5rGw9^TLzbKbWRsqj9GrYU>l`V-T%`59*4v(RZU}JvyRJ@GzY6u|R$%0Y;@= zqZ#XPvrM>EaX1K6X|3(u1F_dAqVkW=>-TThz4M>nzrJ>cE;Z_?&rHu7PbNF?%`mff z?W|f`S#Q{;o}oPv&qbz3GhN$}%jw(eWsS{PL{4ja8AJCd$gIi%h^qA*Cm4>Y^oBm0 zXHV#;MmZj!#fW0xuQLU14napUv!|*YkX}B8LXXgQ-2Zu$X8+7ws4VYSL%=V>fCnIy ztC|uE)IQlHnYX!rRON3UR~CNWdBuuQ(LgncI*VJi=lBo?%ctNBCp#+FFk!F(Sm>;d zmDYA`Y1Tn$OgWgh>o_jbbDuyB-E*Q3$oAjJc@nDB0|dj$<-1iHrGhX2bRv0^P##^7 z{QMD1Ul7oq+nQ^d+B&c4Yxn~q^ydKZ7jg9qCZnjiwE3yz0)6YTI1vEoa>g>$uxzkR z9)KB!e~1o`oGf;T8XXsqXVNVj#$#FS9M3o9tx7*Oa!Hn!&a{nyquWF$td)oEFkMwt zdZZm=um7CMu7^1ok?q18li~EHe}Bxo=h%CDk7&$!h({)jp2z^pREk;SQDEPe(6*j( z>Ox(r!~0yzSOBr)?8QzhhbLfwakS4%IX9&ZUU)e;P%%HZlnguiv8_);qzB};N;SO1 zNc7&|T=~T&-5jN?k?486M&U8of1qV$Z2Ki$q*gE*jV@~*m4Mxqw0*`YOEtU6=AABV zEvrzmi?kIqSn4zWvHtP+&unS`mtKJRai=8u^)4f*Nz?S)hOW<+kCRkmg2zovhst3m zUQ9JnbSvpX?}5Vn)d`7UbfPBhw@0R7O`dsoY#PDK9jI7G`~G)>FRSv|-WNA$LdGLtG87`)9jcqZ#Bo-FFar2_;m z&+Z`d7>5ThK%dBNRV_8I@qFRp&a|L~R zQtW=#(X?c3+)>*L4!{`r2t z-??+kA6NICYFFs1=qFKbzSR=uYr8J)CE1{U0jT55*aR;YV35({LP z>D~CR-}8U_GlRGSzkl-Izwtl)9)Enq|NO`Lzx~@E#P45U_kaAj|I6R^fBk#^x4-W1 z@BI1R_eSoHQyk}Oku3&WYR`s5W@Qhd^P`5FAY$>ikJq=4>)Yq++qV_h)%l~l^5@t6 z^XJbWe}Db_y7Nx5h`x-H+u^+SsAv6@Fk+!&?XpWmDS6Y-rHo!ziByOGsM$*!UaKsm z_F~S4T~%eG3mj9Sg%`OyZHA78kFf3LW%^;+>-agl4Wl`XigMPQ*ZMAb6b)lZNE z?|U-3q7Cv!b_L{Ys%6&zHk!5NQ~{g~l@842Kr6{B7OU<%eP$;s;bUzR{8XuuXhPpc zRzCcst+)%vOO@i;C6LwmA$GUEz%rP3&$B*2*%|PX+MHvzDgZTi5oDlHeVd$0Zz=*2 zG0~-#e&QFCEj&q@?6<`gJF{}H;OEEd^W*ipVrPBr`uWu@5IgIMwM-4g<3%4!ZeHM| zxRkJ`m+Trn9K`967l3s|CqNf;R%{X)FxBp;D1wWX!EDnp7dey^b3lWNzCznPjlnJL zfX!MA1oRYsyo-1Q>iS$7^pxUCK`pH?r=a~VGAE2=>)X!kh{IJ za(ywLzw7=5tZc`NYprXo%=-D>cWo3^{@dh(!OnaEWbDGOeDAD^<(#FLP{@YB0%I|P zuN5o!x`0w)Y$bM97Ix|UfLY*3lq$Z2IeQP6T{t)ff$Ok-c2zf(HtLw%o#4D2LWZs% z6{Q2$;px}e%4YL(?DxqPk4nz>{ZByv2zkKNJ;K}60%Aa?>Zl2V#^X~Sw5W!ukwc4gWVC+6v^^?3=9(+_9G1*V(ik2Ury6DFUUHc8P=Am)M=-C)?jiS ziU#VW&1*>N6ul_1KclSS0b?pB3h%>DZ9U%35GvNZm)gqy1t<-4K4XX@SUc(AW<%S= zQfT2?h{j%>4jb-a+pA+}#z>L#xJ1dM*hGW!PRX_s3@=)rG_jrxb3giAP=8W^?B?mU7vr5|uvg|i&M*C0? zKftu>$k{G?UOMp^X8a@TvXK{jZxyGY?~E2EeHR^$V4CAWKP3<8!H|yZDR#37|?{b)jrURqeb( zjp}1v0GXL5XQT~0Rq-XdU`Zj=ie_bvEz$h>VK%DZ>MT@w7xSTr1)?(wK$NlW;;PQq zRaI`4@{{4l2~qHIjUaTJZ3zyvBR;Kvr+lavAiDHJhYR~AEB3Zrb8c-EQxFtHw>&Gw zV~X^G05SqA*4O*zKmYy_AM3T&>ves6zB23H_r3RhXI1Tc78>wQf7qDZGo_9yjCiA);YhBk`aeZ9ZwMbTC*Ur87&fL4JL)e+n#TA_PaeeGi1zh0#S>%f7 z!;T}dLAfr0(Y*o$sxn!Hq|YcdC(Vvce7)r^W?f_jFCtNQ)_?gs|MQ>wTJaI}kI(q` z&-(9wU;qAj{ZIe)?f>-O1%RJl_mB7f=g<55&-(e}{(k4*Klj(J_g%ZNcUI-@L{*lP zH>6!o1V1jku64!ry4LFzYc08`;K%wX)YpFh`RDhqulwuA{(A3wE4J=yF=VjWQ5%2B z6=`KlRjbxN8cA%1os%PdII^<@z1Bg5HaQF4c0Vyy9d4673TCiRnrJ_#YGP^i^?3LI zA^5F^&lwS~&+GMCu_CTjRhfC;_xtO7zHh!?3g%d?Z zof{1TclXZ&;BG-E_zFy+y}Z7BO!Y@ciUP6V$yc%1T^3op!=lU{;JNvNwR|6Gk{2O1 zXa3v1DZs89s?1udo{0?ONYn*T?IM zwRY8yulM(#@As}w`gBRP)ASM}efLbq01`@>59r7$`owAZ1Tl1EOskYAcYN;~ikab% zUJ}<#)tAkP*oU}9<=g2OP)ODaPan;LPsR(m1-DL4ixosygk4K~3;I-`3ahZz(p@3d zsK!i?TrA0OZW-`hBweYsxLAn3tcB3NS1U<>ZmR;bLz+?DS1EB31$^ zjqd!Q8_uFQqc!*^&*UJXMeRzuTDACuF74x>aN;Z_s)Cg7QXtX z$?Bm*LA8AbX{^U#cySkTt*(HhwZ2B4;cf2WZT&1dFZYNdW)E^?aH5#@7LU-Oh;ZTw zmEuyJm}BPyMC;S!FpdgnNMcBe=bT4S+^&RCe>)h{Se3*y@ar?S!XV*^ztnI0_KM#= zFOdKI{`LK9lUNKF<^v}Z)bL5SdcgD@mJ92_tL06nQuSp+Z_hoHq)?9Cn_d{ed!%4a zvy_>(Uxxz2+X9NQ9#KgP3pmvX&{E4PD4y!_gTlyKYoz5@Y+-KDBTfH=4nExN>yaue z(WfEuhv-i@+JAkhQVr_QS0_Y)|I*BVu5=gyx^H?;An%v~P8%2U+be$iw*KS$`|it; z3h1pNB-pnZ!Oaa7xu~SL-SujWLgCp>NQoHRiv|$hOly8Y1=n7_v0vRs^TSYcH_eXivw+t}pYOMnlD zN&db5UZcZsgkY-Dj3k0?AbbqvXiHm6o2ZT$b6oteA;%jmYA4VzA}R^E$P|!?7LU|> z#V3hit@Cm_msc||zZOD7GwWV&W#aUs2RSM#fLH#rPVCb0I!yb&=PeO%R>&7ILbl)F&v4!oRasu&M;&ilYe;xh^7ih zS-c!o@WHboowSAzZN?*EI%;~_V5 zE6GvPBV04lG4&%Oxi5XZfGhl=XDuP|i$NI*9x=0mdrBePzQ1c9N4mBR2;CyhPs?*tUB zUhiwg^}0SkULV)>`T5Zco>^b-yzg7tqmCcEt2s;J&`BUL6hVAtoN(37c3Bk>uj}J= zt?RX7EpR0gneVT6WvYw6%Bh-g#p+%Bc1!YON+M9p-hyb6it>-{((4$AMXru~O-Qrr zc$fb&<{3f++Xw&c z^YuUd`}OaiaRvU{_xvy4_m7_i)Xv;hyOfygHDWLV?~T2y^CJaTMONKa_pYz6{p0=h z_1=5`cz^95@B3@-0Iygp_<8Am3x#_QU_@%o!zkl_R5_SE9<&)N)n7W9U&fvqLzXz% zo+|ALym2t!1tQ|EBFI>VKQj=U7>VfLmMnj*_*ikRYh9}e^Ly|2kN3Wnxn*wxU`UDx zjLx+6XjN-k5s%0bZh~J$B0|m0IEa{;g`MemPZ3ccIlLCHwO-d+TtK}pzAVi~g|?gA zDwHW;`cn046cJ2wMQ`#nYF{gYyzjn$m1N~8C=xX}7IER4M<0JtzdEq?kP`}>PEdM# z`_;@_REgP%?6&$Y&WhkdG16!8)2##&ybG^b1r#$2cVEff6Y|BmXNv=%D}6@OI)gPk z{(C2hYw`Dw*KZ%!Yef=Y@BP>JpI`62^CXKWwlxn^q%on5{(ll|DB#%@+~mXmHS`8f zMOPNxsQj^BCvxhpKjd*{x*D^M3hrbS6evBbLg0#h3m=#G&p>8but zKz7>yDyQz-a-?YyRL(v`H<$8h*xEJoq1bS6gSPnMkiD7u#7>SCM^?b;D%XEW zHSm(jnP4{-H)WIv&xeNC02XaKCN)xXl-03H_>kA^J3koxBj%XsYZ1SFyFNeH{mwss zeBC?U4_bQC5pCyx%8`3H@K=}t!lAt*oU#|?1TX5WqD&m%ZD-jqM|uVNYBZZhI39Xt zUj}&0#vjH2xV%j_ij^0Pc3NKNGK&^{EjdOwWH^5Q&~{11q2Zary#E*WuH~5cDJBbc zo>>k(A4=t*YbHHQdJwoG=14OQNXNHn$?f0zXP+zn@$LHi>;3iaLm#$QyUDwhpsCqZ zCW*NKN4`V;cpZIfeCRBEXTnN-gT_WiB6crc2F-9(sfxt47OM6>Hy)sOJsd|m3R1Xi zd-C_;F1}vW$69p&uQ(Y#J_jYhN1kCIQapJBoG%vz9T7hglu8<|`3>LbfwIZuNJ`MCf7nlbe zydIEIs;53s4i?%M^wIY^?nTDtQ%v1>yO70I1z&+7tSW-By4jZB=0c>7E?Ng7`m727 zRG&_baDQ$h$gA5#u`&>a0OFj1Ef&H8AhA}EsO?kGAS0M{?|i?1{QU8?BCgNtbzRqM z#fp#D_3?TswyfH&SFEbMJEF+0eN$SjW3)$|NtKSWG2(h%*A=m@h}E%TR=w~0e*fJ2 zuH0SO(aDsE2$jyulf&5y>x!L7U;2aU53D8S3Y}8Rb^wcP;jp?gPQ5-l58CB%4~K@K zCDePd`yzm#qne`F17FwmS^)6#>wXvh^Y{CI`)k+#_7&iD;T84A=lUQ2vHr(@yuLR6 z3tiL|!9xDr_xJY(_P*^V+xKrbT_2%7bJiyqm>?50Kr&+WBm#&fAS@(V4@B8b%bMFR~*W4iRa7TSX!LHJX(Az1} zrhzuXt)HmmrFLAXY6Vh=qZ|=MdkV;^JM+D9t-N!RZ%Qt7g0GLZMG+r04z-i8_no^k z`!0zr#G`9V2L=(>iU@Y-9*8dHC=LG{mq*1+5^Vs0h1{5Y%hgr^p8iiOibf8c2 zX>35d!Au0}-sp<74PrG;S5~mFJ3o+>#VvHqowzgi?wmdgjEJR!ynUkARi#Ov z%cLTBTBssSdOLBOVujwWZ)FeqKCCvFT8tek2dvKRn%srw*vH6*vrIdEKrn&Z(l#1Ng21u!dZlBTf6CW?F&=Mj(?uXpB@Y ztk|*n^!KVK7uK?jm!&dDs9}3F-DwGQg`oE`(V3enDkFysu+vj0wATj<89?;0^tINC zd*7MZJF_vZ`9zPXs;ePu1gf{FO70M&VOPBuQ4iimGX^v9bn3FQ`_PH|d{O3_xR@#1f#`FEre{CHmUVl8M{Hv)!c*6r$dj~%pUlkMmpufOdWRSjHo3Gy&h_PU=JhXB%xk)jLoG8T*+M5VSrt z3}837)NvW7VUD5K$gw3AE>-ByO%sO626QD6{kKNzlhHE^d@N(Vg8%rue%|+AKXV+n zIAh{em@D@y*)|~N*65o#>w7J4V%j*YM;^GHY*{8&;T%!bSz;W%3IN>!xpw_Bk1><+ zDcQs1+@XzwIOYGeqMWsH>$yT#!NVO_VLX;~RuxcAd(#CTm&{wf-{iD60iecHe3}Vw3ol=gBdOE;_KpCV3(+Nx&B_T6<_M z5Sfv2I_)I7ZSO5VZ_PXH2$kfj0iDSc7~ziFMgdIp4bk$9B^7e&MAlmK2yqK9Eyql7 zG$nOh#hfaa0c80wfvQT5WQ0^b==zex+YKx9N87Ma-+`;S1$bcw|Ojb3zQ= zZ?Ol_#^e&$lPWt4)Jt8Gr87-ZWlaWWl#e-Pkv=hK*I3Ui=JTr^QTl=p{oDtzhJjcG z3`Gx5)22N&ZVyuP0OYglM7QYjKr}bf=NW$;Ae}F!pHl_xA&(NxI6W$<>maJ68M9)> zB@CVMHmPY z69?(rKKmxQ<$;#yY<4%S73?kaAi1b$Gjp?`{q{pYY-T))?c6m@8e~Tl?#kc*2NZDO zNjWQA78+Nl;eA@LGe&MNO250QO&?$ZMQC+*0_`vw#+K_OIw1ECi4d zmEG4&WQ1zLp5+?&2qG2=S^4w(*H3))0IsW3BEcY5M64CT*HOc&y|eP(J2Ur2RXW85 zATwjd>*M3~TCuLR`X&n8d;k1--*=zSD|XwL#p`i$sY+r*mmf;c`xGxk0t{_*c4&21 zCKu*(^PPnvxyZ{tt%EbDmvle7&as6DYycJZSKhRi=b}FnuB$?3RHAqV5wEgxe!ugd zKkxtVfBX9V^+xXZy-R^dYWJJye&A!ix%21O-SnYLaKeflh*)bab#X5R&mfY{t{dM; z#>83&C(PgJ(sX^N!+S^-yZH7OkW*o+kDm>MG9p@5c73dYG{-N!SE}n)rn?puaroZT z;On(Mul4zHyvLgB1ymvA^qR7_P)mw5sEe$ zD^OVxlS+#fG_txDnaHb4ekD(x)o46J~ulVir*hqRne}-v;ZhL=jlQ*IL&VK<%vieK%`}2^`Ei730%|d7~wo zPKj)GU1#%v?h>q#n2Q1?Y^{5)3urf>@Ub#$SM9ES?8qrVtVL7 zwiSIdkHbGx<6h=78m~6bwLLweu+P!5)no=rdpwoB-Q3n$HH|uTyx8Cfqp~tu4O!!> zpG!7D^8pKbRX8PqzG!(;Q*eJ0bR;qlmvkF9O$g*r^!hX9g9*Q6b1 zs5oKKyeP{Nl6_XM)}$T1{Iiffr9VEeyYinua@uLY!LpyPaNoiT&!LHk(*~V(M-6KA zZ~9ygr+u5~bi>~XMm7Iwv^oh7FWMCha_`(_Ck0Q*hqet&khh>bN^=}43svl3*C{=g z4ng=#Yk$@T+Q!$)q%>utz;i#fIg=>bgAz9@NPs>)KMZfu33iuWOW2gC1pOF~><8}Y zQ1nPudQyrw$5 zK}F#y%s{PYZC&T3Bc!vnR?ne25NOq$gGzj8i{{adVLXL$rfSrw9;PY>Y&}1I&JvuR zj!I=+l-LW@I0sA0>O8X7G{nV=a7mbxK5#bkY=353r?F0U6!qX))hvRA=9_01$ zabfQ+@PVZSmXVtei6YsL2K4Vy!sZHa>)!Qins!~il zjFT=kJ{zMRRs&j(aac%PaPZ#Y40$r7(v4>i;BecWQ?v;^9P5{xtT(1~ts?!qaemm81CaV(rz29|9 z(Nz@#TCFL2-#>r8-(UOA zzJvhm1JwWITtSQb*-ueGJ)%gKDt^36xG$;Eqo(^>JTHR#>*n5O}oRMV(pz&aoM$2thHV*UW}@If8Ag2`@VDQ z{#{<{>Yz9u;RFM$$QC+#F?&uKN~EZAK`Tjz+l0&L)T+s#+z$_rS+ufUh5Q%E;B`fS zx3Xg~_%`s|(YKkM2*>KXDf<~p+r@QNgx#j%lYOHWfZ|3P;*ihyTlbl!W!n^jKy?xn zID3#lcE+R&y?V^L_)BCGCQg?rcT z&Qk>3LktCU>33!XuGjip*SC+gu7#}cU-yr%`%4$CGS;Fi9s28;z2sq?>fCcRxgW?M zm8X-8)DcMPOoQF2PG`hv&;*T9cBsV*8AV_% zUe{VHSoOZUEds7sA8YzAwIpXvqc58~w1&P}n20*VFFQ(Csz3; zV^=YCxn#>PGrtlnSMZY{)}pS04K6Y$*Vell9}Dk&br1xHZk^iqF;kdFJ0n$-#jfeG z1y7+r{YWI?Oyf$4KYLP^mfpRI2(6SH(2#z9L~V#2*w zV4D<;(ig-yUEbt+``TR^Lz~g4!OJTe#GbzNqVhr!Fc9#>zB{6uOip$AHS=vZNvkNVYX$g zDf!s35{LSASWy!vKlWr4>Qw8D&+Ep)zo4aZj+#J0J9AC&+-Jfa6CF`Efo(BAaK(Qd zW}ZAt%b6oSJJy<1qONs~M{-6Xl{82j;LdY6<16X+V@v5c>R%=~Pl&(_%Vu1K$8i&@ zup=px{(4pbYelq-FuES^m+-ptR=51czxEC7g2| z4>Uole?RKMBNq(xHDiha9h{X`MnIF96&%0lQ5P_q*VM?{%Z#ax+3^9Sd5XLHyHwY+ zdd^mDv&wmJBZSSYXE1UTtQZw*2Fnp$dG(wzEMINuHLw|T-rzqi2%o#aLnU}jpq&^z z?$J__)5jdmgE;b42ji0glj%uDUa{j7B{}P>6~Rj~E5L~-F$M3=m-DEHo*zE@-Q`E2 z?K*TH9BZ_`!9iWga1QKAq=JdI*aw&!CtZj#I{*N9eSW?oWA`R+ce_Vs4pJTgseY#I zyoJ&Q=jz4N;b@ejR#c-~dzV`V$ZpZz`2kT2Q3@Mozek}H#Z$#_GHchayYBa02{nz)s6X1LA_gBY98|a>Qp};8J;H)>MgyoL&gNH*~-XJ2lqU#HYYLRt) zoRUg3Qih0!KqxZ{>ee5=6D_(^x7G_uZ&p6)Mc#e zpw{xwT>^qqTYdryJ{b*e6auyTtZn7qEc9u{7L1q}(P8hTa?n}F1FE8tDCmw&Ewm8C zfkj%gKvy|6&^-M1Iqgf6>loLd6iBDbRL8(};*A+@5*3SKP z-(PoiTeU4ef-I$E+6{=~r1~;-K3bjzhUi)U{z@r#&=6%>PG_o)k7`>BauL^JFjjCy zUF=&~xPn)3>3EfiE2<0jiX_9KP3b^%f2wjVe*3&WU+Z;U0PdYXetiA-+V499h=^En zN$B8^ChAeXx3KZtxcw{LwZA1)38LxgxM=V9cmucf)M#W>2#e>zG?ovFg!6zkCt!l8 zx{6%U-A*NaFnom_x-J0Kc1jF;5LwFX+ffkU>YkjPm!kt+X?5pcayA@|1=Aui#dRqyHZtQ zdVgpN93qHQMqn-K##Lb7``+1=_)GVggHsS=a1S+frP~hLD4g<>$?8q=F8zyLCyL3j zWL6at(0sqY)YIH)knuM0-IP{GbcMibU-+ z^*ZkOsX?nt=21Xhj?g-nr0|bW-d+nhOVJ`7T~(wdbL||q6j2$H2y-(~Izj*Ry7Huq2V)%-X@`0k(W`PzzWwr5+1tjHy*iZT;_g{wSHvFIx)diw;p2ga)4(b1nA}xXOZa2 zH7Apg8*G4ZZ;@sokF25=yH%nLl_LbZJP1>52E9b3gagK1V2EGomL@zhqi3tkl04xf zW^a-9P5p@&XXh7XCSoa%{oo&y%^XeZM-x0JS4O}v(-)0;0QgyMSOT+l4@>N!kCXGR zbe(18VHFn3LkVb20JW3!REB(hiVsw5+v-ileC7aAs!a z-n$bN(4E$YXEzTcnDQRgWCd2Z9%QJbr*Amt>SBsOZMnHt+%BaL@VbaxiL9vHefS02 zRYLM>Jow&iYuw%0)sNHo1HTGMbxqFS3O{>F6>f3DsyTr5ur~FH>!s6{ZFlG*iR^82 zks*@ZH;!FmjJbY|-sKZ_jpj|x2n>`c$9fc6fYLy-E8SkMlf$O&_AaL*e`uV=! zJF9$yEU&d%SH~^ti0lC$G9vph;iLUe#BpE7tseED6FZE|Zmi~wjwznd3}RT1V@sJ* zT%DE^DaZT~SpiJ)?T4L*ZCM4>3bE|+?w$8W1mFA3Dx!i|*SdnQh_(2NwbuH$vQyrf zxl#Mh-3gf5_m=aOMwu_ee4D-}V4XXa&6sQ#aag+koz;E59LOw0)20L$R(Io)Qs|oM zR`+(pcKi+vgG^S{A_44s6ZLV$YpvJE`h2|r{P=nQyzlp2nTUwjTGJ>`;gMVpvbvBJ z`Wkib>>EJ>xR$=`IwK0E)Lm2lVCar2Bq}F;TqbUIzT%8k$gHfc;3k07fKJfW z=GBnZj9l@P_7?fotGNSqRyM~eu;hvi%MZI9x zcv$(w7j$f(c@f_}uFqFw)t`UA-?vzws+E=I99+btH3*kJSmQ%Y-%ZV=oJ07BvXv}s zdUrWoH=h~KI&nm?d5-!IX^BgXc~@0}3ko$PfeBR{X6qU}ua0$i7KUTg911!Pw85t< zIMPAA7Gcsk7B&6zS<;@n+a^46X{UgZPMR4Ds+2}7qp}Ab(}(`aqsF;=4YE=NpLDEE zX`mio`EkX^NBsTcy*K7IB>FQaqcg0j9@^laDTJHvHYnHwm`rJj>4|#<6uJ3qWldP% zclm|col&Z)bn|&1_BCBW-;OTM(Y$b`%ClZtq&gxLYvK4m42x5=A?B(=gt7EzlxX`N z36JH>X*KAL4`K$KT`~=giap3_xi>QG4>mUU*(ZY`o1Z)i)fEwE9SS@Ss%3(DSoIiz z1rqp0&B`58F*S}Vlcy=vZ7Y_dVIBos=fnsW23_C#Aqt?`zHkqob<(L68s>} zSjG-9pg6RX9DCE>>5RB>VKfNQT}R+-;Sd@NU}Pfssj&0$(}%8FLYm8|1H{R6!rr0v zuBB@8=}QybWTT~=*xyaTF*&sKlSA48(Ykid>H70fKVB;A+j35 z@z%5QUd2&$j)~bQx-qsj=x9%!g+rZ-O(j{6!I{d3ubQQquhY2}=YequqBPXM*DKsb z$xzR;PEU#fjN*$`(m{k3)*qQq+f#sG{^EmXv*~<19y~{(ptTa-CpIR54$b}rvX!Tv z^_Ez)ZvCOChdyZ^{W-_O>gHz`-75#^)0eHfD;1`9s9p-k%d8yc<-Pq@>S!*#i%_>t z(Hg>6G!V&(wbo{q`=2{VXLKP;m%2tFk?9=XY}3IFVy$R>3aVAq$9u{jx6k5q#rBPN z676t`@xEE86(p&?WFSz>W$Qj-Q*$z|GY%9AF`RYqhHz(Bl)za8bSqn97?tkn+>I-n zn+`}g!%Lcjs1QoZ5b}9~`96~zuXwHN`zV@EV7!#9sUvXyNdf4XQi9PSIaWcVl z3RZ55E}iaGL?HGw2_d0+he~Ov_lVD~oH0!*E5=t@RPQ`h7+9m#=%f z$F$D0;*_8W|Hdm-0kw;)74iD$RxEVsEAM;%{PBM8`@WN?z!ecIeqr#^@*u&?Dn{Qn zOGYfZ(bWJ|-~7*wvkff8+iWZGzW3N-6e_qMYt3=!?EYY=o^yBfj8(wi+Z=*{>VoZvC44pc zRQ+$*A+S3Z>avts!($^V%nZ7-Z$p4@32(039gNy{Ryt1tAR^Q$!jP=Ybs7##3xxy9 zC`=e2?d~tcr5ov^hgpc2I~+oO0`-(BSO017@6rmEo+a-gm&)>@r~*?YhHyfakB zC{hv#9TgVSdt!Al6b&|0HKvhIlRG=$o6U@3%<%4omM^aoN{p&S*t(unzgUrr)%$Wr;g%uiB z+J_01OBt&&`*&ESty|yUP%)ho!*_r*mZR!Strs=GN*z3C+Zd`zpoX130uBK6vEtju zdcD@y*ZtRzKDMkAfpZ*e#A(7thkA*F4C9XhX69)c#)rP7V+XT@W}gCZeOus8PIx(y zI!DeqN-rdKn8IK5hrsMEM4RozMSfi`m0MW!9<79gL8Njw5IlmMGvG&jtt!&i*eA8A zI&VOn6E!1w)ZcjlfGSp9!9Tvee*CbvH$2BD9=0)g=do;E zm|y^Lg4n+`Qd#33=z1XB**v9TMlJL$aP}}pD00J|o75wms{xuD`}GfP5Of!yGl?4G zFMU)+y2ckfqC}O7y4tbTQR4B|za)dbCo(2Z0t}tMq7=T@EQkHjpPca5P}ooHL;oaL zBRY(8eC!Fy1@kzdb3#PJhU?~8E(-I?J>>CVj14~Hb^XsaTi5M6etLjX9Vg`5ykXO{ zKKx>Den1_3hO?1yLhm58A6S^&P@VS<5CI^r#ylpBN? z6$qtIVg-tme3>tw`I}P$R;?uCbzQG(tylEzs>#?p|Nj2->*vq=-nHd13dQ$c>s~9a zh-<}l5xBaWQD)xnyDEJ`Z~{S>hA79X%0etHeX2mi1B_s0=xg0MyF=E9FezvEJI4ru zx`L{xUdmu^Wy2M$-ck+~5n!Mq7z@r+93-aSnE@Mm84Eth*PNn0Vl{@s{aiXKNiC=j3!CXOfFEeee z%V#Bwguw+4yj7{W&b4rTyFOmmbzRru&ieV@KYzZz-uvr)_k{_Jc&$Y$Q1V`0Tl!N& z(PzE8PB0kVGO*XHyyFuQC{}HbYiJOMH_$q^RWIinXT^Z7C_>;c(F7=0y0FIjjBbA;)!5hexdq*&_GWKw-xx;YgR-3nm(+*D`jUl9?!u612} z1%r`b_T4JAbt6l4V!ZunU+F7jRmQ9j{{nEACHeg>?L+BihyFVlo`1G8U z!=~DUqxzOv!o@-3T}VjyfH7to5=ikXV znRfHBF2QcJ$mz@3mKD*bWQScXIYgdr$h91k{J0O*FQVUz<2T`Pf9t#bR!74f#uN&1ty?c@xtUfls)>Db#*S`mAbotx%1M(wEUIbPt{i9kYT#lp^r? zia$Otkbi!^f4;Zro>T>0KSjR(BM)0zXMmtgp_w&*pSaQ4XQQ~PdjtY$w> zKtN@d95#)Yt|9bD)=BO>cLpJYLYJUVYdSbfg-PuRzaDC;e;sC^*t0EhvX|VFl<}uw2Egl)hH9sKY0%8k8iL0 z-rv8{S3Gr`Rr+(oIv>NAZkUF zPHA&uKW)~If;SCo>}o_8$wiRa-RSz_Hcr?(IHt78ES@y#VRu9nkq|Nztd;=4KtI2Q zXB2c2VbYPu&QeOx0oS5jBTNN?i5GoIRZgjJ^-W z_jeDF&K%2Y0l@WJ^nSVDkFkM14Kptrn=+qoIgh3poQ~$4xEjxV4y-DE*JFwDXp_|e zy0cXunCH|P3x9cqk*3^-XQcCds1bRh>$0bY4OkJgcB5s07|Fvg`{x#KCS0^)Yo&qe5sleboVvD$QTn^$C=XQ$Fufyx#EAMuP*y|j z3(wxai?fcWRI*0y=p54L{PwvPW(>csY0l2U0T>VdXbt8k<$rNrTu06RMe`pY8{NYQ z>m0QnGUP<|gN<-#2_EC;;|c~V;83f{FwEe3R44g4I@?4fL})oUa-g66y!B%XQ{OduO9x^6o2=l-s(e?>Xd=c4wy>e%YD8sQ$75ZX?v9xxD{Wh=*Yb_Mg$ETJ8Ry7S=e^`|&pZ zDtB#I5!c6cUDsM`t%$X%^1koCzyEmOeHQ9J9|dmPluvtRcJdk)(?V01<0@rkb=-M;3zd5|pCza5$;fUdc7w z!X`T5K5cqlsA_@L-1K4t?M%tnrM@mjI23*h^G|MmCRkDvFCulwGe|Ejgt0N7AE6|RVW4VcKOFEG|s&UR`!1Ows* z-W72*qc=LKbC)1dDiDh#YNxwU(O@D+(A-J$W(9dIt_7g>P6uot(Z?eNt}UYIwjC=p zLVG7!SJXjo-i=P55WIhib;Z^V8&b>Zj; z#WWW_d{k8&@6!pafqUAr;Q}HONmZGIqbT+I_w|~{mcY13bzYYo7H&-2^ z@Y`hVL^Xb*<}Hlnigmprz|lvI;CG(cAY0(}Jt3%+e{p7Brx zb?-r{ipamC1*eESLwaq}NiK=)aRdg-$2V(??w=&S-I$ z?rd>=t2yb6becjH3Uv{`eZD?l>%Hr*A7Ag?#LG#XR^KippTmvFmSoI8Ic~!=7LGrr zuHLNATJ;cGn-)`p(x~NM?X)LZC_>frmk6kl#rRV#S_+Y%KJy}vY@`}jbjmB7gc+5r z;RTpD!Y7rFPM=hQsrAG|P7+P@1anb@E;Q=p)a$F97(N2ZGD$xn%{)h|QpIU8G>OYb zxpFg0$3it<=FB92|MpS9pFcOJj9Cm`k?KIIzvk`t7C?Wg@1|f?WfBogT@>dSHQ1YyAj|nssTs8O(#HwP z;dPI__oI_mQR6U*6$)(N(MZ=|tbX9)WZUE!y?kDqkyLX?%A!q{SVZkZL9M&CnR(R= z=b71gl%}1(rAu!z9|@vI1_9pl*9Jm>_ShT~%`##)7V z^4eAyJb3Kmu8PM9E!a+lsRxB~Qzs$f{H!(ZMB~8p)!`$O|HW8w&R_utBPaN9`PP_x z!7bFG@;QxS;$E-0J<&jwme-qd&m=`ZTYrt`Y|wY)G?je}NFuULoyx5T9?{~#P%}N! zOD9X0{3aZ?ig42K4;avJan$mx=)b6k$J$y|cI!Apsd2R(v&a`5I>W~Yags#klQ<|{ zWO|fp(&R?sQ4xgN_W@*A9c50AkXBwxcKl>%{EzvLBxmz=CU?RDO+!x2eea2pc>;iM z1v^Rh{?8PsrxlX@mn^!&n6t8cF3)f*ARfbu*)}c=(VCF2 zT`8b5jzPCJulW~?T{c*y_QF!VzTv!UodQwVjuua>pln@ety8d3P@OkO#)^p5x37M@ zE;6#}{dK>8eBJN8D+vbq3L>I*wR6#aig736s;bKTs;sX&Rs^qDj1?<_YemF*@k0eY znRj|iwutDyVSPn%dyTGr=q>+aWyam!QwsO37;aJaZ5@RMu%^@tAm-Kr&0!wsKPsyF zmjf1nQwE`2CeY4g51Z^P+4icR?Evf7SRaYi{H)6y#LyI{466YKwue2pnytns*UVUj z+71yQb{EO$NqwAD$jIYg1Z^W(7az@;5OHj|+q65$1o^Rey{;?P>x#8jG4DJ7{_Dqm z@B8jm=3;O$&Af)pRbh4YTd8$7ft~W(zOsBaOHrtZb?+NM#OivU)J{TOE&p&dUOg9K zwOgrGqB~0U5f83dRlCgFs>}an6Ch(3qT2U~| zg3Q`gc1{B2W@_vzj|R;e6ANC!D%DW-%-`?)daKNZg)2zLb@8>>HoeyMO*qobAKC#) zJv?nQWMQLpc%D&3AiB=b*oZAnIGC`nGYPQqDGYVP^1rMILTk>cvkLG&#Np(oC2R# z-st!mx~c|4NHKT{=hzWMtmxEhAIGjH7XYH$M|aH8-Yw|Oyxyj`LhjzjG+~CJ!-hoL z_#CaWdZO4(rAvK?VVz|3#iJ73DGaXyxfrP2)tTQ@VMF;tkw`|7QJE#4ZTdlnt!7AP zOf8fX`^yF!=pIa4-QcRw<%MhUwN`;u`E_si{S+RLb~x}CzC(6)codxXuf9sjfT{h6 zAqq-uY1kzvt7?_L&_w2JPo&k9nw|Y+6Q?d+WSgijSj3X&h|(sNh7;xt?lw@t$VwLD z(SttXbjLi~@;a~`-K%spDXB+$d^tFliuVP}ReY_rVu9`-TrwH7{$RF5RB~jCdbmwI zSi8*?C&FwLu~+-$GjdCV+`VQKh<&@_w~uSB`1|Mk`&ZxTCgf zc!B+A`?lxi%~YK@wotzGc)$)NFsWL{BdTF&lm<}Ds$Wc`JRAL&pV`qw$1u$b5#69P zSZ{Guau+yNb$Y~N>lm`uq*9*y9fB8m203R+HBoAaN&3San-+ zlhpRd9rEOsH}Gd>E6vY5$?&5Fgzi}yAOCAQMz6{9%u{7Vb=B;LsMBLFrK4_}hMP^o z+f;1zdro0LOH7BWt*v54$cF~JGQBwRQ{tk01qqoQq#o1eCm-> zmFMaK!KiT3e1mL?4d*7BU+@*;y~Ec$R-ee3rtP+4%?h5D7faeZ;3On5+Z%dqS9-)E zJt(UJFkU`S@t@9b+q&(~TRk2DU;n+4tI?)RIL9u$iou?QwXb zRPGmq#Kf*oXFbUBt2)8v39SkS%zL>zi1ykwI~v%>33sLHM;}L@U`rDmKCX^YIgMQSjA}hAw`dL=n8#C z$VDu0fGnZ-79G<%iBZKX4t@?InF(hd>z2t3WV!a`p%s3|$q^~-?*1A?# zqP5}e%pX6#_O7g*Tg>tmAuW{zj=l912Bcc#VE20E-uF({&uV>-wXWdD$7@}2#l=r# zRqmac+2`6y=bBn?tYMg4g4Wow7KqYtnj>SA-0|&( z1RML(i7idNamL!^AYl!o<4DZ2Qb3iZga(3KSG+F1uIm-#iYnaq{_*qub??3mH;5J7 z2<}Xn51^uaz*-DPm>%|peO+PNib-9m(;j-)Uf1e1iBPt>=hDgBxvyhLy3}$ktFkip*3A~( ztX`Q}Gor^v=8#IDGwK*u4J_1k@q<@_Uw8ia+JAlj`u@H<*K=KQ%5bcjl)StdsKBP? zBql`gj63F?0_OJ6BEGuFDLOlaTB3ITpY~4NtYRWE3NFW(jV|(!vPYO&`){hWG(L_S zZhcULyv~h!gUZ_9tH)P<6g@MSP${KEvolOX9jBs zUPJ(EMHCle3yG?F`!WgSItF_rg9mR2>MA7~!c?c<${)Vt)^`TTr9o?XT3?b3t`*l6 ztJpV3rBjggBzzA&nvQnkBJ6whIdMCy&A6Ac(*$&rAwVQkyCtIg4~jU>1$6d*)`K;| zA2Fl#giTaH0*jVM@lGFHqB23F5A%PtR)xE&@@%QvmEo*Bi+y#Ee@pu`cO6btw>~2( zbA#0l*TGmF-$dA-HkB=R1G7vDa5iK@3B+Sno)OfTZh33$M5o69%DW_;86tlBT;D#| z&iZeEe|_EA$KIcUl~fDL7Ipfqm995Q%v?J%(AnW%7&C;<1*lR;9zQ%jVNBB`Ic1@L z$)USMPG7CjJ3i)bW$(#8WFjdwXisOKk$HK9r^#uPF`_Gj^)45;j`1s5+)xfsw~o)5 zB|2;67~v5=b)%S=4-WL(Ef|^~wa35A3yQ8BG~nP8N6P3o9g7*tCW|4fK3?m$kL%Cx zU;D^a$TJRC6!-ygJ*%@67Rabwr($^CN>6Kmzc`O99NS-=vD4s(3|NaHBHtU&!(SVr zwD;T(5cAP?#M24E@MZIA;k);RbZR?}Y>4ft#JC5<>gkzt3c_X~rLLzUWWcSg+l1A_ zq901q+SRo!D$9G+qxHbMQ-w<{ENd-Ui%ZFivt@1$m{y;WtV4oE>mKz9y5WtkaZ)^) zH1tI*PT{y$yJb~MuqVJuA0in!*sKnv7VUZRwDY^RQ%j19A5M`C1fougp5SdA$KmWmty41Dy z-h1c1MN|MAOMsI>W8(>{!euKRi3CvE>2sldkGNR7;fGui7b80zWiGByt4Y}q^WhJ@ zN7ig0wROF$=`KD>Iq8SLCD=!bhW%6@vUN>hH0`d3=8g^Zs?hBqx0)4qC-Pp)M|}Mu=~`M@+L=ZofcPN8LE3l zRiG~=tgLtDy%VVGatF8J1xRj9tL5i&#A@%YFbmwk8z)*x~F z1APlIcq*!QX2hqMO@OpnI55@?@=}S^gS>}Qn_+au9n)UF6ugMm8+=RGx@OhRx~>=?n~Nyc%QqSQl~o!*I{r_>recrwK%-6p^r$eNw0%*R@`2t;K7_wLqH@sym74dLFx`{t4;iNFUWX%0~q8am9)#@O|&Uzu*7-aex2$ zzITDV!d0O%6{7bfd(+VK~8r`wYgY7+rl}VrKIx z;N*`EOb*2_02{)ma_PFcs7`!Z(hovg&Msq_t(zES|NKQ53y@)YQisn zHSz2)a5#sh*nqC48I#ALlDws)SmW7krmEZMO)G^oLbKB6T=8Nv8#A`Hv>Wt>vf|rg z9YO9Ys?tl$FMVN<6Ix^bpc#OVHMU!toyVGDw-vY zs2lN>h{)Um8&2fNoUjYMSCL+tX$3Cznvz2i!fqj^@AH!)juw?ON1*C~VodxwF^{S&Q=TnF97@*89D2J|2RiU$hlTm*D8T$I*fCf<(Hp_OciI%KQ z8_f>_;BquaZvr!&p6*|PvjR`+o|01g#6#ef?DPjAp`HAu!!`snGO9NopLBwR31t{lz z`zN z58uNndi0?ibG$=|aZ*n(H<*Xc?iqfCzSc`;>RML98;@TY(gBkEjbDv7WC*Q(CYW$rr*``$$zAgOK+DM0Kk z?>2&GaOHjtWT*|T@(|V6#WFO!6;}aH5fxZDXM{02q?MpE!ku_A4EgaS5^nq)R`O?& zM)fzcYsrg?(af83)T+V8i+Wt;?15uYiCwpTXOUQ!>UcI#QLoR}@2{6sAJ{wZz3;vA z&i%d{tyaXfI#}+hSBq2wr4UFa*LJ|835^?_Pg3b(iIvV1UVVCz$ou|&Bfdz+y4LIB zy4LktJlN=OPF^D}V z5rli#>+_;XlU6$Li^IcOd-R1BDwCgP?t@ePC8_iHuYPskr*$gxJbr%y&e5%-Z}2;z zgVW}boP8-MCDT7z!F8?AkJq)LZ;s5Y_s{p&z3<&_AM6Vbo6L!YRP|w>=RS~Fp)>kC;+ZVAHNv?66~aQSM8lL7C2AB)dK4S<90NJ8%xtJki_!Ny1dR> zu@-^4@60{t>RUl*R946%zg&2hbIjjpMpfjBzFILc(myU41m-ShcKxWBTXkqoe;Oro zOS4y^cbw?cOv0$ZIb_&1%>9TvbMHPloxxa)wblw=!L`=4NGNf3lDtxR%7!(EK5rN+ z2-MGe|NV1+|9OA^+B-q664Q&xW)m8v zY^cm~{|0bz85I{C7TB371Cl7r%vv|ZN)%Jv$5Svfu+pv)J5#AUStl0Bh_#wDha#PB znmQxN0^oZpjQ2EYe31EL7jzwXBUSeH5BcrCTvlu_F?^V6=aX<5vOq8n2W;?E#0inLZa_ z|7j)nSQm*^qKy`a{#W6l4G#gfCRMG)Kfb-*_x}59V@i-Tx_S!d;iG5STnjVnFlWX8^~2@Z z*8v|UZusTl3V|M(93$wNu5sGxIFh!H0l)`g@uLQK=EtqQqXcdgG;msGNEWgpDDwwa zZVhAZW2sPk1gt5T0^HufV;H$e7-$_hIm$Dt#`?!hY8)WeB0!gU9@nm~J&20I;>n=A zM*L;-1J-cs>7#gQmcvu4`B8WmL&BNTWQ$WuA?qmD8Jt<2X<4IA#Tf-n1;Iv7O|?EX zsBp%s$=F%dI3iRh{KhdEFpm$Nne^!#)5mx~7eK57^cv(z1dUtO`Q0 z!Y@VsM=nER%~IgLR>J-k=*sY^vCCA88Hw`CP?s^&#^ zKxTS>JVhrwB!GIXyP4TIDo&7%3KK=Ok}L&Njij;SASH{U)02&=@1 zt9W1pwo&`|<18>rrw2WN>*c=;NuM@13{RPL&(j6&V* zk0T;tuZ|d_uM&VFj}Ckj?jMG}*eou-YSn9Ht?pN|tC}L0kKFpGd8OgeIBoUpY0IG8T_)!se*Yd2+kFLHU zQdr;ZYTYESsXuKM+Gy3Pvj2>yg_*EPbsKD&qtcq~cWDEtsNy7JKpT>bIeU_2x+aM0 zwW$%Gbg_&Ap?^H2*QH!l6|!cU>WmvLf0hs0$fIUps3!)YlO>f^PjY_1ot<*kqbCDA zC`IDB;#%u^trgwFgnRFwKYza8cUt9xDowTHok0Qx25PHo%?fVypsvjdbXE^=(xE5bm1Uoyd zs|GuLe;gl8zt2xJbv{ZGOmJ9LizK+~wwif`MH%FG@rd<8buJ{Q7zjjP8Qevpn1(*F zBC}d6bU@zl=dcPb(%#b$Rp(-F`0x9@JMVU{g|*_f)^)`zxZ;Xntj-7^z$>bXJ1cAu=0%|egws|YSJ z_LKB1TM)&r!h3p?zpzARtw5-|5{D!8h8?mBu;YLnDYr%KSd4Ke5^Or2Q1{{Y2v1+ZjUJE2M_s#}jMweOk!{x>s!^IwZ z&t%%-SSUto;}L0Z!GbWM4grcm$`M+;?e3{itoB&(6^P>p+RdU)fE{_6$m&a*+41E{Ik-ckOJ# zVT$^jj+`jK|90(N|Mjo;UA1%& z8$!j$(vD?}p6O9GdlQed+19SMU)P*>j#eo}RmQ1SBlJ@`AU$#V#NBebClll6IPH0s zrr_c&g1g7a>D#Vg4=p!I6SqS=?5v-0w}nWas$Kxil1gdi2T~0}Yq{p^X3TBW z7Vua>CZ3&;yAoR>MU09HNDY@Z&L{KmI4y8QsQ6afdL_FV9UdO1rQvK5_Tr!9o*TvS zsbcn5bYxHu?EoTLmS)bESrBCjQy4WAiER3$RA$X%#H zWmQD&bX4ZkAhZIIT{jf^0fF8L&zsei0vE69KivYlc4Kr*|LsDN%N62!u2{b&-fbQj zAeWqM#~HyTxoQtWhfTULD_D%|bqbU!*svCJW0RT4Y<5`4ir^dg{U6u=^}qk^YuEq# zzr0avMeWQ*-e2#(zW=zt?&hr5phQ%5=-=fuCq-Qt<{>*7veZ=^$M`tRgme3gi6kc_ zZtQ9hRrsOT^);`#3$^dMBZ9$*r4q~NqK&zXi@J$KHrwITD7{@UO+Y)Cp~v9dqLli< zJ^a-+J}qdNVIQpQ)uj`A?R>Q_?Y#_@(@OnSr$TvU&w{>k3)`D(-Z2>95=$0o?xCe& z!tstb1iGrCi5B4<0E=1Xi&&nrNeLr}YsGb~t2>Z&S>=8Iy!U;ps+3*35ySj*{tmiR zlBEh!1YI(gM!rs5u2C5yoICgRh~VyEfG$|T6lodce73689uAXrR5?i%uvF#&QYXM0 z1eTR{_*5@aEPlSOYeiOW@LH>LoHEI|idOd1{RDdg1yta4oTEsXD&a}iDRMP~XvK4F z*og#Of+Ps%1B*3WH-IOOrt_GYx>jKr9iY~YQiE!S8Fvg> zL6BR64R-hFleSdS?!dnA2{=Y}5Wck00-S%$hs%&YOiB$zAQf$j;sdiV?-O05PM|o1 zZr9*6nYLNY);f6_aR%ALT0CBzW4cA^fWM~O;2fQ(B7uro-S9ae6Ez8_)n55-7~&5L zl`b7uro2V(wfc&QbLX2Sr$c?DZ;!K=b%+gzF`cVXbuIfg;l2wcaqqqNy~t~=b6=G}q}C2oG{p2=-LAS<)n0@9+E1?;EH~ z6ny;Z(9rShU257e>0LQP92_dtLDm}86o0D&p*3@_0}&3LYhKrjG<4cBfrAoTQiqBu zX%n)hmJc6c)=VcMyyz#Qp^3{QcXDfj|F#Z#yY{lz37vi*71Myo?0F zrG++ylVFdLK74?r+PE)bQ1(b7Rhs4aoI%cC#Z_lI{r!9dQ4jsmvn>YrxoivXrZ@A! ziRxf>=m!b6`RsT|ucKLnbV)e2@jP@h7K!RGmpV3Y(6nT=d=kDm7c4sc-B7AKOdfK1 z7R6cH@NkPyh(g(_EZUY`_s&00kfYZZ9vmB16-Cp>F?)GV45M`)X&sipa~GVA#mal~ zX`Wth+jZv^o;|MgB%Tz^hV7vY?(L`edxw~;bA3b#b&KB-gv&RQl(P`C1iS_)QD75IyvbH zmdEntj&kNnsaC(IU+BJ>52Xt+iVoTV2aQmw_$fLmxKkX*iTewR?=?Wj4U@&AJN=#I z!|`VxbJhIQkokna;SL4Iw^l1#VA&^F33`>z%S;f5o(&O_IIpL&oE?6W^$nh6tnOjVryuO;_0>!)HI!ODBU?mf?#!>RVj-1R@wxaCTp$ye0`9yvi{RQuFntt{41}%;k3iQzW=dm z`O1vGu%rju@o;z2S=WS2oU4wk%`Oq(X;cvfs$C0#N2wrkncMUgjHaaHc)`aB|CWE( zy{ko5R`zk|#bjU=7rP1Dsn zp-=^N(IE?%PBMknJ22Kysd@Az4B(2#1rP}K)o~BDGt^-M&tc2#T3n!Xmx=X^Kv~WJ zuo!SUj+)&VdZFBc-6UmQT!C2Y^;)m%wHTH4weKH)|9rpSc_$*)iWOX^zmVHe_fy=7 zIGudx|Prnl_HO|Z(c{*v$ z#rxjDAej%8B~+Or9Cy(Sh_%*QtkO*j)HLSG4)I!1n&5Iar|CoQx@%$6JL)}PUt~E- zNHxVU8`Dy?6wFQ_;S{7@T~K7FXjj#jACgtMf^Ka&j)!2UO@DEyh3QU2>v@UxvA=(H zo}z$-TCa7z7FT@#dB5LTg+;!z`c&d;MRsW+QHUZU;_JTqGSf%PPnb{zrWDbRW#ltk z%GAVmW7>r4(Z*RCY`jCrT#YuIJ*v?+{X%p{30RjR70T8IJy*_EKvMrIs%G$KtSSja`G z)g`?*XXQPO{T!c3+MV1O3SA=WJ&bVPTmqz}*vyz+!q_#2dR0jDx-@( z_@HN4-GJedbm+{<@UWUw;f=aHi-D>YK+#?8d$Xg{0ncK8R{#M307*naRKoRsYp<-f zHw+Vpb)pES`^P;Xh26>SVc=GG<;R{OZuiKY)YYLz^EE|z_Ww8$s`(DEcX@Vwo4m+d z1lf0X()-zTZA>N^uh&|EzkYmu-J5b5vTZFD`Y-|P*+isa_&@gcw>0Aj^8&!IydQ@^qmmT#Ju>*M3=KsV6kk!!zO_o4w#J!Sjai6I_L zV*(5-si0@B*swQxQ2mo#v^#{k>>Q&l?U~cj!Xxb00xYUN%RvX`xo0rW9+t}uIxy@$ zxqi9Vcoq@(?G+y{{`2p9o4}RsC(&!{`0T-)>^o*YtiZdZ5OBfmPbTefwCQ|TBN98b z+87_5FF2Of^u=DuM#fmE9 znswB&(Qdk1+9@Am@DN2SNS$SR=HNDa8Np{rcAMno}?>LE^3HN}rB$_YB zO^&V#G34~@oXbXECz>86*W{uwvhtCp$tb|4k6EB>5u1TOyJ?rW&d}OvUwmdV@)Zqe zA&Nc<^aK_h`9IX}IU4g*4);7#tupbGWakPjIWk#2)yW4nU@*?JQI?!~!g)orWv7E` z)Cp7#{$$52LR&GcLc(D`iuN1M3XLkw><1-|wv^E|aU2sx%oHdwT6CizhkZz16AoJ;b=kV4cq~q9IpYkw z_0fPQG>^ZMe) z=i(0nwbu1|t;+rR5x@WT`nv1;kNZFW*B}4C|Mh0X$LqBe(*f+B;tSXVGKVP0!rke~ zn<6>~Xh(Vi5rC>Cl_Kj%GK6t1N+CF=(tB`Vi?HU)vx>I=(t$z3N(L_Z#jKn6y))vy z`0=qmulRUf*XPx(hVH~^2iAHW-eQt2A2n~Atq0+1+i!5;R5|(fCS{{^H3MZyp>y*+ zc&`x{T{AHOM0=~gNc1G|+Qf$j9}Ln>lcUW*m8&bXNh(NV zADUb1^W*yVdHwcz#ftmRudn_0_aEPXyzfi`E4bo9aB-2ku{eSX7|-s~Xu}-eRm^0h0%>BQ=eS4WAE})8veX zC40A0w9uI=zwy6gw9LM%pU2f3bSB`te^KTD2ieDogssbTL zlK#fO{wb4kuX{CytYBP=h%CI{_q{iCZdLxUgFyC`U&eDff57CdLks9gr$4)V8%LiX zr!y-@kO)4li|5{Kvdp&n6YdxPpned{__g#)BsOYgOrFj8=(14Giva-9ht`*lKldbb z9I4-t)m;@HYCoz`U6Eg?cNzLgf(tYGnt|19Di~KxRbl@>^!!&Y>na0`VGSR!1+tGy z;g{)^t|cz)-bn@6^>hptfmd+7*1FdFoj>j(zCO142!O@Fh|P1&c_kG5KQ6cLxQYs z6gE1190Cr*dL&V#oSMp%thOe?S&W)7!F%=5sL#Va&Nv>+Jnw&E0!|=MC%jf=g!zG8 zzT`b2wDnDTSXrM}{Qm9r=a2W-&YAJN3yyh>gphM~*uv3X2h0llA4_W$s`)$4BA)r$ zWCoa@1~P%J4RXAI#WXt+dVAPwJf6@?;QXwUrceic__zO zkEtE7o|nl}kfSS3b57hj$%3lB?(1AnR8F0FuJUEg;=<64npGyeje0cHxt$=WL%8r( zniJ5icg}Pi2^2i{`61+ZegzC_Sv3=jtfMq90cu3Z=@G$$1CrJtDvv&ikT~k7nq?Zd z;Q^h%pXa%pMLfQI-tu(Be&1OcqxJ#he%)i_(GL0zLdXFiYd% zdCCsLINzdjmre`yNKXS_zv?-V$K(&7>HF#WRoYYq(LU4XOw;7={McbDXDWx#NfTy! zrhn<80TUCOM#oAc9%V-dH`_bv4IB&UqCG&wQj2OYVqP_BOW3a~?bI5lmo$ zz*O*^)rQ@cfNQV}6DP|~@h|(7A%Hb(&AR{MI35f4kpDQehcyv87(&3^0?j3Xse|M= z<3Z*T%sA*e!1YVo5X0(VAd=?Jw4~4k>RL;VIM09{?x2hTrzMm|R?UU`;sf;Tl+o%& zZ+9lZ)g5^ju2>%t>k3}%URQDP+v~b6ETRg@dd14m>wWJ`WO47f-<4NnUYV8m&dj}c zshJF>GOw?IMER&(S5b8Z4RQ6gP~^G-g$!gNGfO@5y=+y%1r#dz|7YtDx8%rmBw^4D z^hl|0_t_`j2ir&5KYPx6-F-_^hC8u8U4&iz4{XBpF{f(6W`0MM(oLqx1W3$Oi z?>eTe@{FK&{o57~EYLcNvLyfp^MNkX82xYMf|Xn?p~z&eipD1rZz{XNsvygV@gOJc zqOQd>liN>z|H<#)Sl9i!;$J^s|N2_5moBT#Ow~z>YcrvZzHC>fOEOC+z0WDXwzHW) z?TV9`3~VMusGageCHy4)uuk!uB#_s(ZOIr=HAE+eHezRF;qy;&!= zr2KrX$W*xvkhLvbcGQ&v(TGa%=e8T#WV)uHeis0$M73x_Wpx4pIo&o$lWB^{FDhQhf;XcZrXa|)-W1F;6`*;ewO5QetXk@=^g*e`17NaMsk{KehPs)i+E)d|( zUEOA zj6s?N-KaiMylW$0#Mh4($$$U8@14Q8763#Pwz=j4S#9kqPg?nousb}n*R>@5n@WX5 zTca_nRlTFX4%T_50W{j0f%kg|Q4Lvj0d^k}6tb{I+x*&;IUN$!kcQ?vB0ZJ|@a05W zp|tg7c3qTszL`lE!*qw}avbvjt69qF)HP?aejD55aCyj0%IC10^le24%2_UsChTz} z$cZ>6fuw*caV`GGU#~y!=g+VAav?cK*AJ;&i! z^LIE->bWCvG^7ysaPn?G<)t=OxU4ljFn`vhrD?CDL5>!9ann?^{LNcb(3&=4Z5Sqd1B7B~ve? zg@qVhp_p z<T1|u-NJ_Ig zjSsXI!e#Z(Ojg@9z$e*GhA0zrfU0rog?d^_jwKf|uq(M25!J~5>$TR3B<^Sb`Sbn# zzH?V{ttO}vNlOFa4*Uip9%HCBg^k%sAl3pZNRbBiC8R4>c6Q3Jx1Sw>y;ao`5m=Gf zh;Xlb?7cmIN84tf7SW+~94S@v&JE;!ms%}ea+J(ieMl*!Rz%%r0iA*!UtWvmAcV$u zJI)$M?uSI?(KF0nt@ zWYm=-5kXd4(bsjo6ffkij(#Olxqf|h7i586Yp)QTXh6NDoy+_PQ)or0V-$K=##d$Lb5)>@NxItUi?oH`KSf z_N`$ZRvXUn4^JcCc(|lKwe5JqgXqQT_@JqW9z+s#HRS7BKfi(i%Rn^0zn^Mt zv41}wYQmSAti{)>Ir85*db=HS|nzFKRPK^SDvFgrw)cG@>s=BEZ6OJ>5OrBjeTb8e-v zW2(1N^myP#5!A8Njd^qAt&OH57RNJ&vOxaF&)4(h-`@{iD}sjVPD^zFe*|y#2mXZZ z3*Jc3fa}oiIEpp|+xUp75xDXrAhNqZ_^V11ad4yMnLVUdH^n|3lJfY5lf!;^T7U=# zeQA#~fSA(4&Sf=sG{T+OQfjQaOgl;+IJf4D2LR|h(?=!frT03PQ#wadrzvZF>x!Kx$5*mt4EMkV-wvJmju*$UX5u;f;+Xr zeBh!FGy3EIg%M3|ciFmjPdJiYak_-LY~jeJFV zOVv$yMf~f>^&dZ9U#~@SKlt<9a5ZA6!R(RT< zk4#3?f<|SJ0Q6Otc8L~Dw|)UY=B}GP5|u8h8fLEE7y5`)&?bro*`s`*igzNX=}FBZ zA^@)73MTkGxbOWu`TpL|kNE4wA3x*A>q=m6+#C0^_5O_~Gk{GM@uljakbSR&qF<9C zvt?&B!OZAv1d@pjY!ay(_Dnbx6fEPK;Y&ul5KaQKSwj*3ku9_LRKqnnpl?jhRN0sG zZr4>Rys*}KUDsNH%;$doe1E_1=edDkEXE4;LfUdDwGO_wbSTaN``IB|jY6?7szcRQ z?NWVBhD2jJeU~5V5MyRBoxC@JWOZO6mtY1NE31T#xvSMzNzeW2Sljhc*-tN%PzmLH zGE?c`%v4n-dcO-0|6gm#qbP)+3!y|^dEOzHMz-G6Qly$Y(`WFq##dpg?NmDor|UTdlJW_vHFVubW9N|ehM(2#ZFhQYAk(fjLQF~K*V&grm%@L+&fECepN zL`7-cO5Dj^CaYGpYK}Vf<_$RU(_Ui;kIZb8Jao(;Hd1a;Wg6SJJ!s#xLCQ*&-43G( zKrw=%Uv;f$6OhI`Gg1BF2Ybj`*)5eA|J}JiHZeqm?nRoY6halDdUXrvY7wIPc{Lvq ztEsc_mQb!LjG~Ee`R9p3Beel&7TQb$8NQdhJV8Xft`&^Tec$(eCzY*&HV;#M6X>bw zz9aX-%f5CFBoNGv4DF4ix{{{4p2L*|VH#N^v%H5)6}xY89g#Ux2`5Ubvs<%9f6&ZG z>@HoxseL3)exxXV9@D~4%J4wZ>0(0ADL@uyZY0zY2y^L4$S{rB(hx<(tb z(*(PTtQu85gswL!kAonu2*kR)c-@IFclqZcS27<`)r(`QkULMmPyVgll}K&^lOrhm zu1bwC;#sehcIeKhB1k6Miic#YwKgU|nUFSHOrnNuxyM!=d(GrG^Po&=ZK3C%?W8OU zuPu8$>1jHNt(H!vka9W`CBki555H818*KstZ#Z7b0a1wf8q3QM7-?*@Es#*=xLlv^EXeqQ#Gwvd$ggIr(wT7)8284 zj5yPpTCN96zxkB1zQNrt0Zc6Ju2fuCYH;wiST zBV5XK$)hu4y?$+MwjV9I>&rxSTcmzOL;HsmM_kz`im}d|kIZa4TjV7kF|>BHc&!ew z(}JnET*YBxGc{r$f;qmom!{Li;&P+h@-k>32py|GU)0k0hfqs9Q>gEm`8PdZ&Z_h> zn)o!@Gl9d%bd687+paJsLCnTM9`mJ3>R9%ngDMlex7vfHDZ9bt)DhBg`60LFF_zpI zO`~qBrdPTjfm1)q2%1`qWfA@D1Ep+n=UVxTK=C(aXa1=^UVe)=Kb`;pxcqOuc#rSg zAR}~2lmN+y!KLN0l~6h(oG=hcD<1!B6{0H~*q&B8j9}ggjoWi00e0S#Q!iTj=s9|WD#FkOU_N-1dkFjau>k$U>egCJG_V-! zTGxu}iYu6z-|y%5pFj7#_uei&pvgcwqNzg#f*;EsNcC1c)=C1adviq>cje@4suf(P zLRCW{kc=HWx7Dq3j&)vqg1_8KpsuJ3t|Hb#BBNV@XVY{5Yn66J1hBQiOG20U@=z7| z(9Cp)pn@BcWT8a0DO~j0DZ2>OzlABPS71=Ag;sB@TYC2{metjuwlkN;P_SJZR9TO* z-QC-IZB_mV6uPH(r&3qWx*{ks^5J2kQW@*ASSD}A-`)Qe7P)ctxO=G{B6^ z+?jjtZGWSNwc9Qc#2654UO0Zi-W{-?g%Jgl!-4Mo=E(XbW{Pgi;~M z8`LwVXhx5*h0iXSp~1&?<%Fv^wmJZ2#Kc`6(4v|9v|~2UPA!F(O$aukGAzsPvq7%D zm&zPPf29Up$X{8!K#7WpQ!e3F2U}nFFvAWd z`Dpi7PWxC3ONacNXD6@Qty__u=vZ8Kb5B^HHxO zB~oh^n(g3~r)X9hDxZtS!_1NTQQW6j zWv+|=@$(hr-+$h}-;YlAOSn@IG*Z$?^nZJ|bICflyy#}cr1mSp@=H%{@!70<+{8}3 z3>{sd6M~Y#na+T+48A&ieq3wY_SL+YR%ku6meC7I+5u^i;Vg*;Q#PrXTh{b7qP&CRh8@(PgHGSQWsa+fq34h#XT3SDdiu{m2=SL?2 zI6genM`lCqA(*r*6ZE}UX?I*>&>PZdR%&H^=;cR0c0y%Z80X3g$MPf_F5OOKR=b$` zyrFDnajJ)YJzg_MNo*W6Ceg4Ur`xFFN0fD%0YcPCQ=}E8QM7R;kvua&9SrA(qAeA`hLvf zgOb3_lspUj77d^|85J2foK>s8T8H5%nP~!=iSAF(uCa}_14nH_^z}~-?&)a`nzAmZ zu=SnM4-7t5!m0+UcDS)#~+~ zd>kj^|Bt*-3#4+8X}9@-@{L;P)oP<2VIKN$C}%qAY#%7mjaGc*eNKkaa!tQH&*|A@ zXR(NB5tF0dwzBFZ#{R)DN~@D>W+qBcs?(w$0MI0-#fS-NTRD}~@tidXixkK6W<~0a zhbtU3omEd@&S#AN>baJ3$|lZ{jR$JKZ*8OX-HyhR^wW>J#ZNRKaGj%5Wm2j5P9UEL z4CcKPj1`Ti;97=Z=oVC+2_=v_pS>YYrkXs3uO5zCMIjN900P*|YKfJ(bK}YCMjydN zycWOKinXqbt5N~xpOv25n+fin?+5RD?`Pl7v#X^=&N^2otjIb7XV4E^3_SZutXRlr zTSHuSk@j?oqp!HG6+eEwetx}PR{*&0=Xsv*oyfhwuZv$-RG#AOKP1pEolo$eDndnaab1r~I*HurqLYSbYglzbtdwpb zxTtC=nIse`Pkuq@ofMQNY8@AKLbwi{RWG+iqN*3G+JUHZdYM@rGJ?ve7Z`N~6&PKk z$I?LQtB)S00)rtzJ4yArlM!vKYY|L0MNxS_2yihAVdVaiPx^*adnOWf6|IsWYAjVT z7;2=Zol@!!xtLY^1#9)Tvp{rK&gC%Wz&_BoE7p+O{3u;?UpCY^IP00erA?jOx;wlnIntr38+lN3BlnIK*GuOO>|k5<$+h zQ17_!DjmajrF>Q_V67y%i0cYeIWHsYOxw;!d175(+tNy)v+U`Kaio&I+sjr@&&Q0E zUNN{TM2HFRGrF6VP_$kY{rO6`Hmw6ybwu@jGfbl(*|yG(v1kbvG^VP*y`&2E?7xRY z73pAA@&f#5xS7YnjCnSty{b0oNYfQT&0uQ+LxNb_1HN|Qec#WW1>FuMC4QaVfDm4^ zbGp)b*TL+>QHq*NG(?5hfOYLj>Yqm*rgutm>3X4|bdET(8%=nsW{H+ik|9>k%v{y! zjG2ReRL)zN#*>bRgxiil80zbm{vdTBk@(9`$xbeomNCS^4YkhbfBp|6WSR{Z(CpUs&;b3%4Nd_a$Nqe*!= zkB&|0NY$KI+>Sipeypb%wNyN3al9}h%GSSu&a@l`k4Lrwa^=_j96wk0&gbk{q_z%o zhAZ}-XK$TxQ2qb1N6+@NHLbeK&ba{tTpD|OgX|4ViW$U3^!&~AAuvFt>I{=3Rx`x_USX-qsX(+*a+%E`Ecq7 z9eSLx@gbj&rL4u)dL5(JN6_Ik?FBk^f+OL6d^E5MZe={|Cp*{JD%Vmw5Lg5TO7Z4| zSt_|bymr5)(Sy2fNnhtbCS(UZR-lYXX8;=+Om#gncH64?qlWpi%Knlqx}=4!Q5{Et z4X>}!mUR$)n7GbXtkX5Yst{+B!6k8 zvUdRTBX8*OGwqlA=eCx98=XLH(DB6VpX6>^6pg|hdzx_iGlCk;PH$E97!P_iTq`ZD z<1PAMI~sXXi%zE45}p6=%y7cv&z$$Rf#PHQGc|Lt_T1(gR^rSnLU)_>Hg&=D_=3IV z37_;8BpK8OqU;?vLE+(+-^g?k6I+QaVWV3qLv$H+?bKCkqhKcPz3=b$-up#Xg~-=y zeXUp*!`;|(@7y~U2x7(83%RciJUj2b?|a`*g~7Pr`$;*|=rL#yhq<_rNNh&z1e3|A z@L+Fba>W(AVqGgsJFYzTICPc;K!q+q-1K63aNZ8QB}oPZ$9@L=usI!RjZEb9upgEIAEWzO;-0ux6k`7nkr&FRH7jCfX#>~&>=Q2*HvkmNEe9fY$- zl=m7{jRYc^5xAzk83@$djwBPiOslSV*iV)3k?M*lu+J(h-MbkgV;Mq?gCukbgOp?^ zR0~+T7$o_0eRI_!?V(SMF|MwdJ)F-#lQS2Coekgp(ZkJ(!~`3&)uz$y;K#`i)pT?p4qcF+}$u7VjIw zhrMKZMb1td0?;vgr%Bb-Za|J+v!Vv4fle@GdZcJOdIo+*wtvxbz*UvQe}>_Ksq4Wt zRT&$GNi`Y&7?3TOj)nAC5yerEy7s`42IpzDOXnT}XuV?F5PHED^XDsm{`|V%`@ie> zDyQc1R4I041UU$3`l@+NU^{kFv)Oy^-6d-XY=T_kq7e~+%jlBCes=COH_c3lopyNS zyQgX`=B7fahGYE#0WVqaGL+8N*i^-h^wwu27sKAO*YBjxSm zMkh*Jlqt#Y-C`f&(QD|B)1ob|=r&uQNt@#*<;HnD#ybz%gA2-`s_xh4>lkQyXSnKk+&#Zf^P+C~SM zj_Aqa^2VmjVxZ&1IHTrajcm})WClOa9JFuD`6Rn2;_z{#@l#ShlE<(rv}43a`VF%@ zjZOz;goDlggb-zXuuXM_C-s@f8euZw9OM7~Q%;Mm=e-#8)*=oL+zHd{ak);)-*SZ7 zFDx=QSR^Y*GbXlO6V5O}Sl^eFCv<5m;M5pChJ@;w(}wUl2!lq0HgHVADlaIUP`zQ? zR(ooZ-mB%GG^Xcxh`3hZa3(zHRhufu=V@UePH}RBhNQMbTSH?yj;f%m5Pnq^Oven$ z=SfSdo6XK0Zr@Xh4{hbc$1K}*3T3jYpt5&;1WwG%{UEN{v!?M)=>~iAgrxH%_Osvb z_uu?pIy$jsCVNY-U`0ifa-t?==AF3$x$);4 ze{O(S!JjW)5#R6U`~BQEo+l3qC95>%ld5E~gUQ1jZ4;%pTlVFBmBV9C-YrweV)kEt zkYtem`uTct|NGZ>Zd85gwOIMwAfJ1Gf4{%q@BKWvN%CUVX98P&=h%h;Q!8=i1W<>o zk&vh=#tTAieY&Ix0I;F!L5$&^`WX~JWpTQ5m)Kh-Z7!O1s~0qTB7GjYSPxALvd88x>yEmTvs`2#y8ue#^2*T0R|uFyuBb+G*Xw$L`15`L z{=VOPmqlOI8ZvFf#$p*?>BvR~eBMNN5&}%@omu6^)RnprgDKE~4>xy3ql-elM_NcC zur{lfg+ZP$A+j;iK1m2{JNQ48r<=OXzDF1EJK18mZGogU7J>Kuyq`zfGpJtAsN1)z0~$^Or4&`k zCbY%X`iy4eXo5^smz)HuTr_Q>NL|9igPxie{jXYGvZyy57#1_&_H3vH=8-Np3h)GxFh&NH8v#q+6mumA= z$gpSZWksqW%i$gF=K{BSD7sRWEU*(yvoed3#XDcY|M+=bulW1V{pMgKPyvbcXf09Uc|kWp<(3oCN|Y*HzB9c;j#6x)I)7!VhSw0Fn}C~8x4;uEaQf`O0sDJ zC;TezR~NHEzS>J{)p8fq_P0!l6nbPyuaHei2FJlRR64?iq>}VqZ_Ul@g}swB^rjB& z(biTOz|%U2R3At8%{F5~Hu6{Wqs-^QmmE7l0a-!S(VKT$A8e9Gs!_$YGU1d2HjdPx z=GaSbwd|0=THpDn;SoIlWfclnq1N4glSwl0e&CSb1!r?wo9l5(KC!ANK z(f8nDR@f;>Z$2G8ZP5It7~oT3+O4&aW{RghMi7g+j6`HJa|j3Sgna& zNULQwCE$b`mXB4}pX4FV_70*DZN+G*dQZ^0FL1g{d|?(3>uV=7BB5;O7HOWlAoCdX zaPf3jk6H$zFSw-ArfMBs{q>#GaaE^oZlj!WJ>9$I`D{Gj_n+^l*j6n5c*WOR*IJhf zwUWf%4=P9|g2`9>^>saez3%6E-~0RfN#x!eNvv2vW`=`40M$1H@8{R= z??3nR+xzuc&9W`~qLIh8ZfQ!e4#P-c<)#D33>^S; z>MmAxoN3w$osRJ>K5n%R-`om?Tc#Wat1Y-LZ@9^*>qn~|Z|nK1@GTUi>dWB?mrhpb zTvyPR0tjpC5A^>#^F)Ih?Yx<%T4ECq@aN8*`RuJuw1^*H@pa{W@B7L7em3xE2r!i~ z^BVdkM_=$qwt#;pgjBO8r{v^;(&E-_QH|`~5Bz zN^%pDhTZ>mFx>pS7DBX13u=t*SF0o}!D{!2V}^#PRyYSfNH8;f{tTJlHE& zrz;~WCL}c;0$U|BAa+pD2?o!R=w#_8aBsM3bunV8UtZl4P(Y@dyG{e4H8kl)W;-`~ z&#m`t9TQb8`aycMn&P!963D$XxZN$~@cac}Enx*LHqoMtJL)!~DP%ET)fxCy4c&xE z{?i=|JU6MRc?N-8?9FUR(k@DMGxL7({jSxlE_Zpw zT8tH}s;O;dRujQ2t*Yu#ZLTz@FEDO1Nms#GL)@*uw-v_`4mWS&LPvkD1I``~)$!m+ z-=|ct+;C-PrK8MR8rvX6x}-%>Njg=zvCm7^d-OxGC(S48i|ys*_;K!+Cdo(+{aR7k z@g(-%_fDWqSf)Ue8zAd0umF;2lE%a|Vzl6`=|e0?GwRPx+Wt(^&u<*gsUlUAgqoA2 zJ9eaqDcIWQj8REe8$Ye9@+vlp(R;&qaTPf6YCyy={w~_JeCnQVZIfk9R7veTVWgp@ zUY1!mfN_@Od;kh%Z$il0BO zB>(%@`_FxZ)(0MXYPMsrS#XCa7$)fJEc_~mG}%w=$c;^5+gw?}Mdo{>Na&NOTZTcZ zsxBG9OIsmXhc?d5WY+OOAYCze=s+!4X`6bU^c`rb6Fc zot)+H`G~P#=fY00*~Z(CJA`&D-RT>4jB8iuFw530t!*{06OCxqw0~eP1A_SL$Hm~^ zzwgI!%o&IFV_RuBQPX5+tATX_ee2PlrfDsBH@xd*O0?JVlN(D69E+y1T;>e&{$D6o$Ks{C-ve4?8#v8t~Q>*alSCwFK z(joq0$~qeNKMegtAkcaaz8xR)C_d~|?n8+cEnCZVyc2qDAiT<~wEw{d4jXbDalGA` zqEluBypOAOJ8^YPm-a$>`TW@K+}kkOmfT)e|KvxdCgz>MMUnl7xnraX9@k~tC2p^k6Ee%$G#R+oT z+ToELa?Muib2%`-Ivh}b?wgwzr2_s+rx+Yhro_fEiR*;kgQB<9?@ph#1V;kBRB0VU zFH1f4!g1AsGj^J}vx>S$uPN_nyDz=#%&#+qn=!p&1{)#Rj@A>-%5{FRcX?Agb;{qT zvzY*j4i)jj-rw(s_`bNVuXSDV^}4>Q33=#xkG(hcPUaQybuIq9_Qu}(`}_HRp65v* zFUGZ2Fd50r6&J~!`Tc%={r>&uz28;8q07atac#K~%0aClc0SzKwK@t>I&^P%HzR@M zkw33pqV)A9CN2SH!&%3fo$Xa0?m)IlD5RhR#V$M3vEs}k{>X%itjGzH)q=TN{Z}!K z?`Ph|s94BFJ_%G=%W?VP(w;bjW`JtFRPDcGBUccayS7vI)-E5FB8if4Ff(&IwUY%L z*xRiT6Hj6%cVgdl!$?;7bPhj7&7HMr@@veq z;e~goGl;c#t?S3@TCYW}XXo?YzyAIE`@Wy8b8kULaPRX;^tNOnUGyG9y=CtDZ0l(6 zZPrmHyhYuxeKtXJRFdmxYLFRyrxgIETh4Yzqym}D%7eR%mNbI$^9B|Nw4xI_p>XRrzCM^ zr{}64yox@ycheeY>&&Y4nUs1beG#WIiYjP=Iao2Eq7!+joT0Ed&`y;5PJKwc(@LQ7ix6`#W{N_Nt!!WDskuVCOBk zGwURHW~xo8?Q|#%dSdpq!ciAAft6&GBXb7qqe?;;n>-V;iLF+HIdK3IbzyNcH8${D zy=KMA@lh|%%+jjz$OOIB9Z{VlovJWYJz3+|Af=%p< z4q}a-6Z@tirR2F)AuhCN7GGGSAT$-*5v&@pFsu1QiH)YQps(iAjzZV#xdIlAjXV;0 zu>3o&n*FL~Z*nXS)YC?AgqscU&3OvJc5_&l0A!bOI4(#ZuhQg7o_3D%;o6$_i)y$# z5uH-8KbQJ>qXtSf$>*2~YiV+3R5JCdmL96NYAPBk-q#d^iCoNo{a9aL*Pr|O_5JKF z)ob5m zS1^{&0AM3?@1^37YHC?5vw{l{3t7$gf~Od*Xk@1h(w78Vz0*do5nB@q=)G@t+%QGE zIkJ7}L@Acl&<)4-QCu&*@v?=tcaq1QtRgwiUUlw9Q1YTRneWV zd8`Y@IqR=g-J=TS%ywMZok}wlG@Am>q+xdaCR#s=-c+%sG244>y&VhoAqlHN=!x#T zDDUsgPFpXUOnMF=rv%H^gjpLQOfi8y*o4XQSpoWUhqXEo@uu>?_%V_iu^lUgNV5cR z)Y%A-j{nmUel70N)J|ZoXoj=w@Yb<QuImaeId%&>{1Qe*}4rDmHZY`|tlTcBM; zty~J-GTkr=0ursK1>YcHuZgaZW#=ZWKYDdL!A^MA)e&9NYkBnJrI&0t=%05IxTV?Z zWS4ayp+(XNAo;`mPYc)v)&W>AnYFY(Z&e=sHYA;9a`;@&O4dE>lAUlI(V!PN$G4xB zE}7I*TQ_Z~t_C~cIQwtbdQI3KL`tBcxvLd{)FtvgQ@!lap$58Rv!tWZ(>i2PN8T_y zo08BL@IaSUSv<;)ApKDP^$3_7B1T;`%a42|dMj~^cDA)Fmfl^kp3yfKw0EutibHw@ zZ6g>C(Me4Is8Pslh{(L?!U2yO$5vkJ7Cc%97bp5ppn?9}u3JI}FOME)5Z8281QQIx z5k-B4-1NaxdsbPd=1yrqW&(HS_wRQEi0{{m*Xw$Ht*?l6amBUN5h(Y5f_z0_tsk$o zckaCz{EGOxz`AxY`F{4l|NZ;VuRq_<-Wv-*aA{;sIdW>hD)STq;=&Bgv{;qg98Kbc zo$NAT`HWO!6@t`Z&#{hUjS0s`>g-cX)$vGi;!IXWiR^ofd;W*c%W91k^##FICvs#n zc7mXK|91kXqut5jDh0*_BDkTeJhW#-CX_m%Mr%&zQ8nOFQEIwC31twJcOVk)XW#e! zlNoDWffeieVkTZYkhq_HKiZVpon+)ea;)>E*W=fW46sqcTYQ{JCz&K)E3S22*ZTTe zU)S~he*gFX{CVF`6%!MDF_L|?N6%!3x)D+=u&4#$G)4{SShN4Nh8lmZ+_+hcHu!D* z985rNd1r53lXQz#0jT8FPZE1PbZ7>H`H&t5?+yC9wBGH#8F;^wi}(H1jVa($F_?_2 zF~{_%G$5wD(Js3me1?dnpTT@KgU|D*s59Jm2>0xg!t2cOB49}IRG@ZopFt5s?j>JFP5 zS-0{eb@Vj?!BsuuD^o|mSF!g~=x%0Ib7}4WKrEz=Q{kYF_4$eu8ima#4E(;ra? z1*({48Bjr8IAs%TmaBOQR@rL-2lHc%5wTX3BYVI1 z{cNT7%ox{f;u^|=uqK~iaR z>HBV6eqFa5l{hr!sze`MPaCsFS7YsG*3yvY3bulJw3 zm+Y8GeZB)NK_OruYUi2O&UDV9mB(0O74_ikw4F}SLhG>9CIvHFH=4g~2N<(F=QulmolvqXWrK~Nk)vy~^v&ak zQg$}#fU$AB{+|i_+vucxG#WPQIzcw0w_$XU%KUM~kFWLn`~80OsQEmb;%hD2y?E~b zSZ>)7KPH@X0V1LFx`<$tlXoT;#HCoZ}jA3xJ+{|Gl)AE)D8V37IXZSEgi~SR4YN#w%qW%4oORt9oJ-5wp@_GvMCld1lZK5dg-{^>CNu;u=XWRqU6Ms;h+F*B>GMnM;% z%f!&sz)zS;)j5;lR7-1VItxnr{!wGX*4~TX@82FO_VG9Pbpt^VVeDV^Zge^$W3Bmk zo>Dt-R;cFIDknyOc^BG_4|JNf#R0ihdwMY2*&*vae(TaMFc8shqnB`` zB`W0XTg{TTe&LHPuczIrU;wY!6nQTCA-NorI}oPVS|VzEYa#fJLr(ILotL*+u~x0V z-P>5guOW(F%g%LL2`z$u2)8Y_;Rn~45HPt9_hGeIfi6_4)!fQ5oj)I!R>1IZqj}=kZQtoj{6>a+o&xRsbAQJ#GV=9WU)S~Z zT3@gAy0EUeVzD+%6Bme!0I{F%ckZWddPrnO@IU|aum5;*?|k3S`^oq7JXZ~@R(Isr9jCgE}j$(r4<7bLLDj9pfiZ4mX^TIa^{qfVZ{en91( ztx%zic#Uj-7>ueiOrmP&bfsPS>$$9&F7YF0E+CQ1sb9M@c|$Lt$Yix#@tA$;IP0Hm zE6GA)g^AkURjqy+88TTX+7eIh?eq0xT{XDiet+AevRG<4yy7h?OO-)B+$4BRC z96tSU@ah1R&6D}Xyheut^Wdh#h7YuXXUwu>IjRieF}~6G$l0iYfi@5UwRBA5 zNi9;XRz%b*&Km23H|BihFm$YpiI^m}LE?m`tY;H=uIGU-xWQYYBO zqeC%k|JX$=p9M!!Xa}e}L#ljmU`vRyg0t6KP5KD^6PbASejWgcH(436vigW%T(66S z?~kiT?Y;NjMIyIyVNeFiRH@*($>Y%eoVJjm* zM3shG)F~FD|D^d*GnwAt6M@&b+Vorq8GNm^B0${tbALZ7_b}(M>BBE<21(~bHz2a*o9H)hcHw>*lBu_NZkxBxe>QG-}MOnkGY75`NN~XGjMsp&g1!f5_glU2a zpgIpIF>2~!H859cZOmiFE??BMr4}{!+Vj!(1+)jz8%{|eqn#JK*{iadb`uSMJ=*ZX;t=*{M$8r9IvMz%sdnBvQN zLa`7n-v$+ClZcbh4WrH`sv2vy;&|X`nMlh9!s}h=%>?wiJV;a@U66sOT>L^ryl`%N zU?=u*@yxE9$g2(KXco_R_R_YGwdEo^>3levRwu_tl+&`5J+u0`92{EIdYj9_1SIxR z_;9kyMG5BZugue0EiGP|ZF^_O0(dR__*(bhhbf_|d8~A2_cYszlU@G8@l4qJ8S-k1y+*>!StE3Q?yRb@5{qC&C&R3)q`R*O z*6nX2s~pxtvZJ)#Y4i=mX?>i}oac$yI%IPYoj!cGt#8z69txoP8xq^c-VKie_C~o5 zQ0PX9e&#&Nj>i#3)2bZ$@1;Z&15ObQKPqAxaQtjj7#5Y-{){Nkp=QrcxL-MPRI#wK zHPolNq%mR@2hil0WItRHs@J;&p~sX=-29o|jF5Lw&1Q!*fbGg&vdyroh!RZ%nsKl- zvj#JFL+MAJf(tWj9Qv^xw19f6AH~o;k3*^B6ma`u9OWFEbl0Z64&L>zhjWRy)g%ud zoQLK1|M-7%!^gbZpidEfic4%qs+BpsahAq9c91+f$}t}ReFUdf)PQNzGhwQgqSJ$&$lSn1cb2K))HbuL zn!swKqe3Sfgd8^bAt(plPM}k#5drvSP|cZizkfE%vDWV-d`2okA_9@|JUe~N%=lq; zUP+P~{0iBmT6gh%=llKr_itQ_uWSAFb^XWBe60uqt0H#pz3*o~RnJ{6q#n1EzzVFd z>n~vAm3u$Wz7zF%1u&~mm|=xa%4w=v59E{|P(qUMBDhnWyQoX}EXIi!vR*svoCl9C z(#u<@Q!3?Mk(}Qal27-ES=q8jwe8GwDyY;!=pZ``*=TgzK_AIm-lJ{;Uu#|e*Gpf< zsKJy1v3HxK82%S}x2uq7%kqnICy}B4q?Hrk^Xz9M-$|D`=6)9Wl?ee4gj~eSg32t-D6Jm~}uhw8yy3>AP@*z^>{M zoj5L&&5UZ_Z1j=CVWEo$2;zSw0k!x(_0ZXLsPB3z(HdRvpVb3 zU=}$hY?Zg(8`(VyjBC&ro8|apb?#Zbr(&*qBZ5iY*Fqw<8~kVU5-~qAwsKB5$9Zu0 zdce4P#|l98oz%VrS46cXqRLK>V6^QQg?f`3>0W02pWdt~8Bl4;WP*Wf#gDJbA?4rS z@9$fuR?D1HK&K~nuu#g;hvw47WxX6NW{^`To8{@-RaWa|x=R|u7i%W0T9#2SJ$;%i zt)VWgJ>o(ZKdyXz2(`rV^=#y>`(pnqZ3)loq#QbF`Rh^=POI*EFwRpy39#I%f z=WHcff2X95E<1-_W-P3AtpH;^_jBJ*8|=hy-B9zem-%ughGM7j9Ri3B-q^z|3o;A0cT4|M7E->a zN%oK%sZ7q8EJG@u%H~_J7`s%!8lo`@C+4k<83w0`k{wEZ=&08RpC2j}N(aaD9rSB5 zSMckKfBm@reBXb6-wDRTRznugHr>`@-r$&}B~VM)lbDSFTkw(h_tdg6&7Wy~_~0h+ zFP*z=pM`V!X38zG%s_PF*WCk)lWu|=?|m~>SQpj4cj3b19y1cTH#RbyD$L3H9C}#- zFpL=1tR0qh-J29G@@wSX9ry~X-j8( zxosNo-PFyKA(}MQrP2BzGyTtTI5=pzekGLIW1Szr26Tg@q-sVk_Nh+;`p$m62zizzXKuc?oa~f>(HuoCOGNzP!Hk5 zav_!0Zv2OG^jf2z?pTT+2sBRHFx-5s^`TQtT73xrW_o1{re}(@yx8aSj{#Df)y1O@ zed@^!=kbkwCyQgV5l^PcDouoXz|*9)rdemJa@N1aj}%p53(&9h-EN0t(L4@`qcvF} zMw|P{VBRH8EA#3^g6G8UM2ozQ|e5myhhf*Aun% zF&i_7s~wVbZmgOwo*S(F#bH_l+h@Qi{xqp%C>4rBqnhaz$TaQIuPPYQ&7YRGeB&%@ zFXPqHqineyQKqW35E0pjA-!dTuBy>0OrEyZsiYLpji<_?R{y!Wv|}?~!m*uO{XVib zIv%PLdGGxY5t-NGj`i%PZr!RdSu;7V=qR62W7yzQoA}^j=6>Hha9=Bek;Lta3zCcR zx+1p{s(bIfQQ5L!MZncYj<2-{>|FQ8``%AJxig{8df_H|(z}YALOH~$g<$XeGb5d$ zuVbxn`eQ=uA$Q%uOLVwWV~3jc;xzO}-^hb@mwj9kG6RaIpjx>p1IU;zhT5xihnLyc zTDtHHtT^2lQ?ym`xP8yfxnPwOD=(F)w7DgGpDsm4?H zv;XWJfAF<sp!DlenM#zVB!6{X9HqLv*g;3OnF}=V0Ya3g&m4U7t#JJ}s>U=~X(m$tra1&?lANBTJP4Mka{k8U%u< zd#r4>_8-Tjvu`R2ZHS>RW}4>!s_zkU$bqqaA&IR9VZAD8RO)_YtX75DzOw+dm%X`j z?beW0dsO=zUEq^_5ncAPy9cK3{gMUszVX16MAuX#^VwUcIt`sG$g>fKSJT|4w#;(1 zhPLK3@_JRVpRX&f>tf=Hh~Sg?>(BeWwY?Rl0`1s-izHP&4?&D^}f`@jUzfem`}M zuc5hQmC){|RLfq}tom3BuNVCD;jN>J$KR9Fzrtiz-_?)jH}!*THC6)I_mo6GRaamS zk_>rjON3OaqY)t8-3kdTnZ;}!>oNUztLs$X!Hbd*5_@aCSt&L-`RPmpdJ3GHChH;7 z(4ft#!=)y$om_8pQvYbb_Y4rM206s29B?1KZ0cu@n@n6+{J0i?|M~m<-YT(nyxi3{ z^4DlJb2R4A9|_$TB)XcJ!-TWPe2!C#>1WCZbaf9gfiyAlDeaXfYVxf&cWs*NErrho z<_#Mu11l;^5KrRC&Ao}hgW5Ggf`t_1#nl=4UEYtC)W^=OQoQrBqBHF3-tecb+fXzH z$7wDmI%MSK?wSHC>=7OrrqH@9*L;fcqvFQfbz|KI0vjwlR73v!S_J<7es()_n9TKS z$x}N#@D$O6BY5WNeR?iNT$@UdyG^@6s(}vkm@dAu?rZU*=jbYx1E@Z_h}N9+ersEU zplr*Zk!%w*N;9d}k%N{LJ4PZOb2FQ*`C565TCIs$rrSH{p-B0^*I=HofXby>~QyY|P1el)I zJ-S(UwyM;pjN5hx{-FKmV2>a!o%AczHSr%G-fEz@tHtL6f5}i9oFnr9xIjn0tbI65 zL!xOzkUO(vT8$6qTj8jwej>XP*K_I@lC9T%U7D4^=U%{mH+mL1d#FvUEII?qr$5nv z+o`wRNkG{fyr+tG#sGz{_;edh8-B#>ytT4%;xB=qGk2%5v=q6e51;z^1=(} zp|Vr%nmwl+4VKXXSuIaL?(_M1^p_fy8;kRJY*aJ-$YW;6Q5er;Jc}2+=a`>jln1eq zemL0HT04z_Uh}sj3h~{(*4i{0Z>L=wz>P}!a>KxUr0;nOOQNc-Gx;Vg&K&#uOh~mjcC>(3tAX#vxsDWUfns9;uv`yMnUqDTB&a8^L`eNC4 zb>0o%T`qxUDpQ~7OIp3R-=U@iqJPRA>J%OZ7cHw&k>^Pl0Wny2BNEJ=dwFLu5%+yB zHwsy6A)+#2PeGG3O%3Ra_6OZ%Mz$!>T34)V-5dY)?>~D#_b#YQ2Cv0ytsiSGVyio~ z5h?+-_^CiO0j%I!@nfw7@64_IS}k)#AP7bTVrm0N9NLU2_+&zRYADtM5>dBn`f|0* z+KWh=v!4H1tmorV^<-5)M}psByLcRDP71?+4${ z9ejcr!L`=c>-zDvkhyn0RY&ve=c&{hUe~%_D^@TA;B)Ukf4;x(XFpoRs>(50I&Id; zb>H`*(~}}1!jCFB-0h7#z!|5S~c&<0~CE4)j6~5e(pK@jw6L zum9J-e%w3%>)(IA-}}Ayog3AVUdHZhmj}oGUsu01^~LcrQjReERl(m8%Gr546+!^m z6;LD@$(^-_Pv>nw)zf$Ngvl@(5sG&t4M;1em% zzD>8hh^3R;31{0qG6}7rvx16mgHqjgpMYg*2?xZ%e__|=3T*f_I`igduOy;w>(TST+TrB z#G0`CtXkz*0XGvD-sFx3o`#900UmzimPtfXXL#vu0AaR2hSQI1G3fjH85}5S7J#@e znxr;SKOz9|P^{K2shyc-Gc^4t)9CGQn!66Ks?EoPV|L`B+mkJukMAD8X__+b(Xoef z9Xy1Aon<7Zi}lD4xP~D#dM+|7y946K*Xs&?-_M_Wcg06~(N8g1RX}gowdiW5!I=Z` zQHe>NOA@gJdvFbM?0>PgLCZKh)bSgOGDfR@Pp1J>m|nt7n`Jh>88U6Rg$z%(ZYdN7v|n?Y zLxP#f@tEu$_EToz0;NgeXc&d$en!u<*G9^|4mv$iW2d&AGLSu)jrg7YtFseB_8a}s zkL@x~Qm6q1rh+Pu<$wumZZpz)_-=hF_aS!Uk9PM~PlF zLu6Y3jDc)#sfW+R0edK%pP?6dl2(%o!m-Y+9-s>Vd48ZZ$l7kOB!I& z|Nm~yG@cnJO?$d9B4-M5s8CJCe*6&q!9^u(`!$1j&SMAwS9*qGTB)Kf8Tx(zPT#U_ zOGH*-S;%gQ&m9#WlA?90p?hOvlM75TW5rc^5R32kv!9JRvi@X>ImOQ0&n9(3k`=>d z4XNUG!g2B`n5?p;1b{k2RP{~Rj;(?Iy{Q5PJ9QdkwQ6tnclGb@LdsEl4#*oDloV_&0b zgsd($OWEdzT6qAX3yn~>;GI~pyLdp3o$A8 zRg^_Mw2F2uYdn}zjtm{qd_Nn4CL@0p!Lpfs~yQGW;(|%-WTP+JVJeDTY{;p?fmtv zX;wjrK12YF%uQwMn+VHyM8jjA=+JMKOEsS)s_o!$UDtd;p)Y}ivb{o$o|tAAojw!k z`GDv$;a2bLn_*g1K40%z&1b8#B+kPhjsKYz52W7S5aIq%ny6(1ev~i5Z;9p;YSTk zL{%#e86z9%$Gx{$EzgPM>LyI@@@xAaldL1W9b4;D`7c+00M+VCj0D;3_m476^p$%^ zXm8^vU9{QB7w4{gZEpZLJ9OlWT^M4svF5tOOP>*6?f5EdPa<3~$Kih>#Pyn(d?9n^ zy*HqH$_lWfdes5fTE_LVTho+A&h~p?oneF~x*4k>% zA$GW~D}syhJp228??G;0X#4y}aBg-f-SDoWX$p}({9cK+dR?qE*xCwOSrb&tK{Nqy zwKTota&Ynk?9QQR!Sx`IIHWhF@IyYD4wP}Ck_coq`nCb`vYW6?W{UKrb8vL!M{nau<_t-q@2R+U))v_xPb&O)T ze_o4U*K1wz_n-Is-m;6Fpy$B*I-rpK*QiWA3`avArre{%pl50@TNYA~litp8&1gM; zTdd>kEJ;nK)!pEX+AzhS_u&xIMBnyxZYP^|_5Yudl>34>n4X>a6f-66`ebPHvP@N% z(8!PrEcDU>kDVpM-a|vjCY-knrLnm;DmLhPYfibH0UFNOIxC7s^)XqX-V{M2Ou0qk)=fFSAigT&h;pn%aDywH7q=)L@~N&`$SbT!|I$sR^O0oEtez?zN#YnN-W6@slH=X*HbpU_s)$cN2fX*)ZN+M@G;(| zCQ4vV&(#!lX0g^q5ZUeF}?tB zIb>>6F+r?Yg;_cPQkq^BfFZ&oD+qXVK2b+s1z^HS!uliZMrEN|d&xeVRMctGE~WKB z?sjeT+e>f#%?bMfkoVrt`^_6WpRcd08q=+a3*1lMb-8M#QEU;I=g8+%%SqEoXBL^L zFS89fp`*)HAL z{Qdp!-{0TQ4l-hmchI*BNF!7#ZT%7|tXb`wtZq4xQAX5LRDeCSR`tO!)OrZR*H*V741%OQFQX-sX{ z5S5Te5Ryk1lvxLhbcdpW)o!Fop7kV2u83;|$!G6B@3)rQ549Z^Nvai}#3k)}RR7nw z;W73VBVtHqyzR|K2@Tzo8Q?ig;X@ww);FkTNEYD*4tA!#y~3xFiphS)TAkO10Kr2O ze2I}z1~!|v!Vnsc!i0J<4xXs1L%m#fT;1ALe%d&I=I5rUWFV5;h(yyXj;F+->RK;3 zY2$HQ0WHOPulI7LGW56yWSi|(5Hy$a~v+4GaT5p-CW*G}VeysQ2f8KXC_G)mwcCIEsJ20<@O=H%tBb?T> zv0dk(tUBFR71|ssq07g$tTdE8ncpMV6Gq?RDx=Jjxl&`6p{6j|~#_81(xAL@&4cwv3 z)1qqQQ>D)##CibTJKo!~=~_G$bE;_xS-h)LW2PWdNx7U(09jfUMMADnDK5XtBFaN@ zo`MC{%9e*)Y|Y9Be9>%YG~fhQ+Sjyoc2W{)IxyZJfu#5&YY#lJD zX_aQ$nYgWc&UXj(M(es>gPlS1kZTaOL8ZWYl~jV$fV-Qv5ma zj^2?;X*AF(WCZCErcdE^K+}Fn&W^{|oxE#k2s7Z!gYfv_R7hpk_MsrS>Ea&lL8 zltNOjQxwM_7!f-s5ZP$L>;o#>yAU+<`Jh+AJTE!zgH3ldWwLT~8@Y`lMPf=&Yc7MbPt{MpuC-RYBCgkZp8f03pZk6QFnL|;dhuUB ze*o**`MlpxKF|Bv51!oVn=Zx)k8pOoS@^6Lz2VdIHzDqo7D!~(;|7t4q|P!M8zv1V zwNJ6V3JDAr?z*!d0%|YlO}~$EH15^D-yVhx(*S|)aQ&WSaP80@7? z?6eoVaeE6*pPAT|d6&&YEsYSiPHEVYE5(X`0zmq`b zR!(+SID*SpkwnA)D$PkirP_P%K|qN9fBOGcvzl?w-t3VCu$X&eceP-9ULs;$5$YxP zezrPNn6X+FvZ?W$F?0`cfKXN?n_gQSY{fIAG&i!0jH0Ab*ukDWgyiU{HcB360jL_V zHvXnN5th%8SC8-`S2;vocF-ga2IiUikX(!gS; zsGVFdUs1Jzr7>c*@Jzs4yZn0ja@%~0zqMtcRokr+qdAC40g+(j&)1cSKi{{KEr%Gj ze0Es9AdO)C^D+Wf70*$=)%6oS{`&3|8&m4%ePu)Nlpg4%=z0^cy`GE_oAWiFGq6H? zvDy*08Xx?~wI9cP#RaxJ8ZxEtY+XF^w#~aILLS?(WdUT`M-feE9B2Wp*6#X!d<_ou zz5kK6YIxB>aBobbtA7A{JJ!Tji0oo9S?O>UE1i&gY@>6$MkH6f8bw=-2ORL&J^H6k zXaC#ZosZ;^Sn9ov$!=&2N_RThi+(@qx8Y0G!2v?%=QvKFb09HfkJE>5o|+(bEXv_30myV6wBh8-p%`4&8$JG z${3ueDD`ePf5_Bh)lTV%YtT*R*w{dHO?T@NqI|CT3MTEXxgBJ&S;QPsx;oGh5CMd5 zWAyb^bopO+^0bcY=U(G7);2*eHbBKN8qCg}4~U)BHL66gS*cjlD`mg76uhBHXMJ(3 zcfv77mj75Q7z{=*D@014`v5|>63R_(04wUg$6(ft56Q|H5}DY*ejYx_h}gM^D`G9? zuF5|W*n7vSwnrJ)LT(C9_UjeEO02!}(f{qIPtuM!l~Ic-Yzc-7XAgcR`0N9`dx)ZD ze-taVYBpwc00og-DxFDfp&AE#B|Oq=PH1x`)wZeGq>nS!q^gZw z1%E+tHosao;*5#auUe15WDv{Y^XV3mxx8LE^K8L6t0IC@nc{e@h={c!0wACJ`TOth z`@YM7>&(u5Ki}V*k%+j~>+4!yYvBj>lka=y-uLr(MP#gEV50i09{Ez>&ZjxUB@?W4 zD`&0@-Q_AG1t;lLf1r}LO&@fNneOS98t;gX#qFa+eyg8U4U0-aDb3Z&gLZd?VmSz z$aD#zi+jz&aR#YKc9Fuc-fSvssV4iRaU!vU`0?UjUtd3ey!L~C|9b!Z{rx;!7YDe< z-_FhE3O3D-?SzT|;M)dJ+Zn0cm9kPzQRJ7ywrsya9{SKp*lZgClX$Xk&8fY39bg{Z zX=^MzF<(F@@BwsxffD1c7=UM@rwIpi%igrZlPo3fvOY}naqX4?BbX(nPS-Txx zO(BkM5Y&4evmeRuBT9Ewcq;{9r&R5CdEeVoA*qAT;s3jqynQBi?w#1rPG>AAyOz22gThZ8=0N249utRJ!HawX2)(V@LH4CBQiq961Ve@P_{uV>z;LmlX#i zwO5(Ojr?&%1poc}-c~Ew?9AP9%^{gXWAX7DBDC8iOoLsQ*K7>x!-O?3kE~~_n5~}4 zBOJGJSu>EmC=<8oOwA%G*9$vuy%)oy3W9_8Ro@?22*N{w~x@Fd^ zw)L&&Rz|NSb32K)r*u*o$7-`zM(ZaPO0V0zmc3H_pS1n?^^(vKDjSnqX0y!-jao-| zEUT0r2-eej$(DomUN{0Kan<4&bO5;Qdmu_vRuzfXu|6HZ?l7OHIB2&Rv5aavQL!jc zaZ>$a^7yQ#cC}JEj;blDr%7vgs~1&>Rr9UfTC~h|-gty@t+Le~J(0*2O36hfvG)Vy z^MG|zRK2*iqOt=HFDd?E9}e(vYl z`+0I+cDUcem}J<;q3f=e>n+T|!Vo)X$DD&?4kQ~%3OGI;vd+K~=(gR&NQXI((>sDn z8zIMZ4%Q**s$SPs9(Hwbys`I=SVR(8ZL!U5g>zD!Y&OEaMWH^_cVMcAVp{L?l%WNw z5y3fln98a##DSsRJRgocYgcVslY^=KVFg+<=%E&H5r1c2uEl@-{PEY$L>b;-X3(((^JxlFZ%oKkO0e zGrMIt0+r<^0=k>E(uSfA_9`9V>v@?_k+};s&RxVVQ>DY&VnxTHWSi{#bDNp@6|C1Q zm!lF($V)YW>*Y0T>d2}|T>IleK(oQ-KVGAjYOUnK$891NLI-=-Tp!P<6Gf%B+g(dL zx!68TB_MiFZOi1K=mg%he*61^>mXiNyk6IRKfm5j*8S9;Nylq&rsl@ZVyFl8I49DdF8cX!*zBsLa+Ann?9hTdu#c7HmO!a|$^i*x}2J(jToXH1T zzFyI+4)oE*dcFU|5Yi0tFnewZJ8>hqAP+E~`Bcn|o{H zKj1GLn>GA~yrVYKj?kS0zrOuVNo*yK}b*CvN7fvb-h9~ zB5_p5o-XGrHoNg4h85+1r$h9l4lRT(q!jTAhWr$7`-q%~=R@zplb)w;|d- z%2b0a*Sp1;l#MK)1}!6*wpCM84NcajdLW?nMyNyY8WNc6m@xHX0CWc)XzT8M9kI(9 zG`%$H?>1n?Pm*`2U*?E6y+)duOj|N`yfcBKqY+bU^-!NUvrU7?IR7skB~d-vj+09t zW3UW|!0S1!XLS75>ewe1M{E4xTGn&cZIb=@20D&|){{!GJS3a#HIC@XUc_^@Nc4!D zVY>-{_qJPY&YPn$HxO}jWH_v}McQLF=aJa$So$Zl{KrPSfXlyVRs|ES@p(<-=vQTb z(PL^98{U{A{6ZTCNo^E|vK)@gBw>t0q#OV)wuaK=3^SE7oc?<0X=&Q7RdS=9G+rl= z$OxbP056NTHyqk%&Z)fWtWLv^1pL4_R4#sTKr@{=bBiFh8&ldyQg1_8oixJz1vy=t1fUHaZ19S;!8Mb zq6_6ur(qF&FOek!k1P|w6HGb@pXYgY?jgFWOkpw|uM4_#60ZjK-1~Vp zzTXkJ*1A@Fy{_`gJMrB2-g`fNO`Fv}JrS$45UeudIut8G^hQvn*18@pl_;hup_8eG zb?JP`uY!dZFd$PmuM{XLb_FZRi*N;Pml$LM;XtP0ECM@oMKF`WcEzdgfyk|!g&UpG zA!D&#`5*C$=!r<@BKzw110QLgSH&5gom^}5&ToUUA6r#3?piXM76|DR9ZuZcmY0yVFLF_9KUy)604cUkc~H$RBi50`|8ZO?XD< ziu4x!=cdAdp4{O^?#Bl2Wah56r;LjL7gBqBqFxU()X+f#zl^Yta_@Ztasaxie}HMt@vy=EoHQh`zk%j3a$Yw(e;XsOMBa)KG^D znIL`iGoUtMgGuinAA3~gmNLkkieEzo=SBidnA$x&B^_8YM}ILrhRsso*wj?W0U+m5 zy$Wr`6Jx-6XAJwbQnsT*kA+=FsIQyaO^AUO-NENPf?A%eA~X_f@#~5p|9ro{pBj$! z%JF39Ez2%^{J&2k=zj%&yw>-#-`*>< zX&Xjc>gXgX4Vkc=PS`3yJphv*0qYoBeZ)=L4#&g!tXCk=@=veSsX_+#1AMDz=l2FiLMUBc09@9SJ(t?W~7iHe6j!s?f8(c1V!NG!>D} zFH}#=1Bl8tYW};g)WGrQSfDnU;jA@iW@bB!7M)c=vK=8o%yBYJhmE)2=(&7k-46Z0 zB$yj&v!SG3s@+sJ0vk9}n_pe|R1oGy_8w}Y4*8m6X3uLZNeX?0+`y^29-RI+N9B&W zK%sU)rJF}XVotYFX3JbiC3Tr(2b>s^x)E84<>Fp8#kQTISzGBxvyA#gbo1>=iuJ2e z8eHh#HBW;rmU-KHp?L#>5vM=#(JFfM;*eegv*4hAN_%cCPXkL+Nl7RV3EAppTou$F zB`f3H^t$qCugI)F{7CZXRmw&V1d&xeghJ2!D~;7=lvfDQ=^beiAQmR_6C z>E|@)JV;9eTxQZ8-;t<>mh{@R+i%s>qnv7DIA>DOr-iCHO<`Q76H<=-4foBf_wKbiD?ZhSjM86xvaRRk#=uRzePvbe~iNjC| zPx}fjtNQIVi>C~qH@UTW6Ubf1l`94f_Nlqj&K9>!T-TG5ta}Wr4&RHBb%CQRUUufP zE#;xWf<777J_UbFoYbDwe)g_b{d+$I>r6yFM9eHvr|oJnU$36%v28;|KoncTA0I5e;o2lQfNJJwM~^ zu8d$rvNwlNU81nn)!TG`*PTJgYSw;maLz*+b(>+4ASi|08luf(lbVX$T!5l!MR2_q z`woG<-{1M(_x;#WWc%xEK%gIzNT=uY@nI7s^NsKOev{-og6mpqt*@`wB7uCKec#W$ zRU6q{fzHu1+Q^NiDS`H>66)J6HliEE46MI*I z6OUoa6@20p6sMW55oT)=OajXET1hz$1pNXj#@?Abg8%wjKYx6^uC+7&=hvU#-_M=9 z&c#DMX}eSe>|}OogNA30$&8$4ZU$-~bq{+Uv8#Lv>qL?`58)!@(>#-?LuXY(60ieB zP@W}$y;FCiRNl7PjW=#=`lY!+9zEmClx-*42F-Nq!y}v7ri4s!iY81(l78m79J8$H zB)K?6F~+EBKua{cKCX$16QkwSG>!B5BXdqzsabJQ(u?rF=%lqBy-waqs{^f1NqFnr z=(VEG=3m$9ji0KbuGXqsAX9rxh!sda&vQR=1jbYVy|ZQ%^SI0@kLR9OTsAL6xBHR{XKO%Kr5hLuTe9BbgN`?qUYTs z>iZmMKmW<~o4>PuHY|Tqc-HZiukZV=Etf;#$;iEFXCjarPiNJt3&EU| zvx(O%bQ4YuXm1nW)JOh7Fpj14xc@IC#PhQL991{XX7eyR^li{VSsD)ZUQ|JTOJOlsS09`L>9-tMYWkz^Us|Nq<{gf`;PuXp6->uNW zdA^DlMJ7y&cGkrb#?OOdVN$50v4igy@%mc#&fnj+n@^TVbF|Vc*6~wLZtl!e)H`Zp z+be%gkr%~COQLR*L#h5iOcD6; zM5i~|yRSlnJ#YWxq}FEEhj8Ge=sz9Mq18K`-S=ZZ6IVx#)htb~e7n=OivDDaM-!wo zV>rh$*kBy8HqSEnaki8r6xEaCuv{ymep~Zx30T$gSj-b*k4mCbol+dhk*o;=tGIjo zqaR^$iv0TXR%YR@k&yOiV>c!?IA3;-tV%_Mw}T7%3=ty{%d>q_`|6q$&LoyNrL59M zQsKq8!hO6~% z<4{=B5tGsJ{B%=^4`rT=j*z5>0`yO<&9>n7^E_3nm!eUxUYuS^R#=4po2X|{dg;uV zek@MG$u`m6Anh|Vt@FL|6rvr28+>e4w4T-C9w==yvTc4?xtD@Xek?hQT~MZ7cv}g) z>^w&^2rM#s>~DR5uxB`#vbJKa)&Y~z3rOI^+x|Q%?4?MFGP1TzfPn+DpJ;@g0#yc+S3JGc#5Y2+g1m#m#s8ccyFP z%sf(15Hyi3Bdz3q=|&)Z*P-(Tn!F`RP;RkYV%-EQL{|q}*-T%5;2zI4zjX<&_U-_# zW(!XxiS4sYLOo{z^uThLo=Ij#oe--_193mk&U+(nt`*mcS0Dm)dk|F-patBz%nx;; z=?Z*Z>)Ci+TsPyr?=3;rjAct>hRo*BsEaj06sth-**mKVjC4ZEQg@Kmb;#Ymohr>U ze5CG1tQBOY>)q1cyBRN(&6YcK76h!5l~RuyyeuI&p*8Zj#jv_s&>XS>(Qbb{ME|D! zu)Qjav#wPqsrSyEdEfiFpE^C3qa&s1S&J)Rp&JyZn^jc>oqcct83oJf{6s!a-uDy1 z@7mnH;uZ1Z>-tFmc%G-uFW+}xMM70*Hj3D(+4cZsujsv8CA@f)@9Fyl(#2v@R{&T* zYFSO*lE7Z_YZ-J_)got$nwF4-BA9RY-`Qz)y*Nd5d zp8S9Q{rk`R0U3;iWhMsrCYCtv89xLHBC__EP^k;a!9$jtE7|o4Un{w#=d5J`mdve{ z)u?I;mlmnaG>B)bMF`wzQ?1vL@X6wmm9K?ECC%aI!nSa_*a`#e@SKfia}q1CywsR8 zENbD41HLwQc}J@K;*=xWH=zSa`zS>t4q*IuqfP^q4a$VO4O3aX9+8G)2IM;x(BtoL zh}sjehw+CJxStJg)cay2vKrNy3jx@hPlepbXFqDxXu>xh9N4OTHlg9DO%J)ItKJ<6 z6skC$staObJUbg|3k6CRN52w1)a$5)*Xl{f#y)XuPQp8oAlR2AXGx=J%y9vVRG{Qi zITUES$dEk?u9eIFveE*aHLB0Wp#Wn%{>Z3nz0}ENBU@8@oGeoRG=`eUe@q&7Jpp%E z>QWu2C_?S|538_oA7~&hs6iw^EaJztUe|ix&+qs1q#RuKLI9{Ut;U$)hBgCfL3qOU z3~4oj4jBmvLTUEh*o8*mcAYg;Cqsqp4z$E8!0mvjLt^o`)(WYvY^^<2NyFD1rNIX| z6LM01Ceh}fYO_3OGyU$4H1w1T(mPL>1NrgIq4Kqai4>3h^?5IXyp%jHcxv7xL@1GV$yEeAWk)YUIs0lahDEvg#$7K%;*mN&P5~C zk;wZP>->G(1*EPNA5L-b9vf!Fy);eHty*C|+e0r?NdL=U?&Q_!Gdd{exw24}q{U$q zLFY#(vdlwvV)^B!hz`FcIQC*4N?ImR1ht82Ba(-tj3kb)AqQkytSQ{E64bi+gX1W? z&8omlZ?M|PlTVo3Df5=?{XgJRf|IQY#b9=G0E2O18p<& zJn%EqtSrE>%od~H%QLZZX3M&ID+W z*H+N47QtyCp4-Ue$AP|!3NxnWCv_@>bRI=eWP#fK@h~E3a<(_O;mle6j|97)#4*X{ zVDob?<%COvzs=}6z#la(cG zBvbYFV6`FK&eQdDOLxzcd!r&sD6mQZl#YW5nU3V`!BZml?qc!{tjbZ$G)!^4jZo0r z-Wpc>+W4XZo&fM5v3E{Gl)7S2%xwi3f!xjZ(vkX8jn#{`QRI}FQM1|Az=^x?FTuz= z^ZUtbF^Clr#PSUqBq}%4S; zWO}sHlC2e5){@ZPl{_jXlp9LJHtfdgoLA9Ph>Y%ha_@XL?&qm&ILYn2kJh67X}RJQ z4-NZwBPI)ys-++R<$sLa0fpDt*v$QX-vodaTr1X!udj=YOgwwP@8@~8?~Q=p>TL4f zibtZ3jhYs5<0<4I0;F>RDm$R#sZr?3MgTI<+s>z5 zf)5Vm&b`Qg{k;D5^XtcJz3=DO@Atp|yx&!a;=}uOt2LZz5pX-Q(hG(W)p&NxAVv-f zNo)D&g0cp^q}{+Fy@q~2N;F6G&sth#u=S<;(Sg<~hN_%OgbStY)ujNSuX|~1&@a(h zMVI3>$&lmUGQGo#>;9LVIh183nY5y)gP_hhfgN`{u|`n@NUkP15uF@NuDyP&WBW}>qbPv2F9T#Rc)-I-H8 zPglehSL#Zmy2r7UvzDiuvY~MGBYmb)0-kD96R27FNFp2pjhUeF@1Q?onNoZGtd`YD zTNt*DYa$>;G_?1VX%A&t$s@Q0Ne!b3r4DYTn6x0PZPzoy`KNdVywRG7MbFCK+)okc z9)Um^U6QIVs~2dARVvf$x*ky*K<3cRl_sjs;p0V%ltlvDxxo8A(P}hAUm9j^Ej5yM zU6DUuYeoEd-+%7j0ffhCeK5gxXlR+(`wps0g<5ypJvY)el}3kZ)*XGrYou{1xM=Mv z7z(t7mR{J>2OT=kZ}}@3*30j~HYM)>%7LY0q@G+Q6G?i@tS5X1S4Ob5Xxo=Ma9MGw zaK;hTggmfwk&jSbz-gz}UNr)3Jr*=24T?k$?Z)R@WZY<_wh3s1J+@NCd@6h}?aVF`DUy zNuc$iwXdwoA?rvNN0e-m;M&HH#5^<;86@1X)MNfw-)t5}xJIP;6|2y`Ganwm%)sa? zvXq%~3ra1ZMsHsq;|Jjq2aoae#ABEBpJt=_cWba{RDUX+&`Ptt#t#3;j!sKfdEthp z)&)6=^lSSI0%P+Wn6{(6q%}(>yxU`*l#r;i7ctP+bVF(h`L6VeDjMy(aSLwA;d;ZV z(&0vpImREh5vB1Ux9qgy%Cs1)A(#)(l!1t9>2WMci>`%67fb<2A1$(u9;Z?bVqSp* zt1{8O_3K;Wqm9En9Hpy0`hg#;vk$FG}af**D;Mja#Z8%9tL>ps0Kp zIu$%*;~+hNL%CzeXb=rnaY?PI$$-*6Qj_wXrb9^w}X z%VYZDF>}N?DTEOZ2WlLdHZN_v!ypWC#&nkGWg4Lu#B@jSDU!PJzD)f&W8Bbv}@NZXzp75+o6OWAE** z_7W#6ZZHIt%euOU(1Jr`=CEJjcZ z)HiakODeAR{u$nQpPPAam;q*Qx_jNt*0IxvJ(>c0D;&SP75|08lwU zMNr$%mpWGu!H3vn#^SZEi1_jKs(phevx@0_b3|oE+=TcO4(R%m;m9SfU3DLodUTcp z1|{{d(*_*-t0bVihq_Y~&g*;HYc-ds)rceG=Id+e=mE`c+I9a!w6CvEZ%<0p zVtfL4UjA4!a27DVSmko$&nah+jj+{NgDtBgV|BWcre$n3hI37Mev!>Ty;x$d!(*fa zBhXa37A;fjde2nm6IA=u`^o!$-Wyxdk+*qPTvv4gOx^m5UGAg#WfL~`e_X%Tj6sHR zP#7-)kcX5!4fAr(y|mJ8yysIulQm6W8HxH)_^@~DYBnIy{3kB+Rb2MMe1f5 z>+S@14X2;dMH6GAI(n3Kxzh+kPcFGe4;7B6U0p5x9Y#O9v3=)`XokfhL(>?Ykaj{V zT9AsPyqcY=>N1tq8X}0V6|ai`et+NHR4!98qL8^AMEl>S`VvqW!5S>Qh{L*?Q=ay| z50tL?ndY`xqgg!!Lx+bQ??V7BABSmZJ;afDvx*elLcaW5bc?-1%6>{h*ItbWX~IEW zj17&Yx481ty0t3Se8wD{u7UZEzhlW79IZk;t9^+>An2fC_yDbh7E3iLP!?k&#e*Nk z)m6_}o+e1KH2}JtErWSoao^A0wF{eu(1u}wgFWlSlfBksdkuYtirYP6-Ws_`fKvU(+Fj*4)|)yD_1$KLcBZ%|&S(w2PKXq|J>I zFa42WG$|QQbJbB`3C}Wbv20mH?_nD@+2|(_&pg*j<=z_20R;8govCQP9i#D+UbU8w zO?zlkW*sc(S>+*ptL~vU)0rA4$2e83r39;g|M7=g-d>bK(8)le;m@mYgGgsl=Od$} zC!&rPn?G7t{XoyRvqe(x`pNdvEr@y4P^i3fZ&`h?qD&}-C@mTYJztcL{!X2R72~KB z#$-`6UI0)-qxKua({jFPb%wAJ_Nucs{&uz%w7^pirA)dVHL`+e=~WNIexT(%sXFo6 zJ|t(>F>JOeOMl$nYcOqOGdkBY>oD`svLPB$2mZhRKmXqcX+=Bu;s8wtx*FTwsg$sY zp8C>d9oN!|dqocm&;*3?f{^Q4RJlL*-udjuEv^@V%;(wpB(sH`fQD+B(!B{J*UMjS| z$e`QM8ylDz%oV(r5{b!ND4|xmRkmyl9py~o-q<_uXTR^fbKlPfT+7{uIZ~~2Q?obE zz%XpMASRE?m3p86p&G{H3iF8zEcON#A~RRzk}74!K1RsOR#XMbVuh59z9u5b>GjU~ zNBUsbwfObIk0oQ<;P;I`@6xmF@@PC8d*^dMJ9jl)ZxeFhn)`V~NivgN{+##T)`--N zl>?i!)$5MTn8J4uhkT!KUyZ06i&>CS-(q9C>k$icYhmde0zs^Z_^- zk<>n-EK#sPor&(YyLB%Y06c;RxVH|{7h;yYnw4*CSlLj;pL*pavh6DpzJ#L0n%op; zwkOuK4?;k&mwK)}gt85o@ht1y5Db0E<9$za^e$Kf6^6$l83V)f8}+ZBRoO zsVJ#4tn{;eH@ev%WUWL`G1EZD11+VZ!~8pj9hLEaVG6;_7M6P;kb&3Y zk1MJXMUAG|*xtHsxPVf{Kh2CZ**=9QRf)j*us-%QsSSo%?FNcOS8edH4DC$Xk{YX< zyq^)GO#?_^1N-?X&srjcZ0kF|h(_IPb_%m;hu_!2*A-X9{XA9kl)#Zfg14D_()A1t z!k_71$$_PV6HCz!O;CYxaHUk~?41YN(U3Lyh*b@zaL z88y1_xRrR6{6MT6wrzgs?{OSkIYJu!8<8xb!|D(H_VR5X*XSu{_LXphP7={SIEMA| zTqf25b_=tgZ38z?)7%>Zqz0^m^TZ0S;NH2_2GiHq9GFut^a@xZ{o`KS`biEF_8YsZ zrL?x=R0sm(O4~defibGWmZTAQm8k8Kh~YwbafIsm7h{ z?Ao!8GyUY8CSq*@X``{AO*Kv6XMBbywmb*egBZ1PJV?Sn99AAr zz!~va&jpmS(b;6?5Mzm{tbX>+gRX`ynsJ=@dYOt#2!pDEiF9jXdvB=cCZ5o0rn52yJLFVHbW=KR(KBM(B- z%4{*W+4k5t5b-ethb>y!ets`}kGcUy3wP*~qw}8or;4_GeH&ow!np)J&~d-1?&SL) zD`oz7V5rAy6!oV)U%|-1VcHeem&OGgo~bofKIKS8jib{4TD3}nl}T@OY6snH^@u5e zRK)-e%Wb&%a7-sq9RvVgx}M{u^GYImImy{N+<8zih_$Gc!vrzu4i{eRV=wEV6_PjvSa=g36+vNCu|(XDI6YsFO+yo|-YRa%zS5i@-d3V?S< zW>Q*j-OTVL_I{q^wc_fHPJ)Tx5+jQg@+Oe^0J%}ca0C$v=98PdU2uY|l+fOJXVQ0} zz9LuZgqRm!m3^mSW9Ju%i+Qd6gVn9<{p9<39#m{i>nhVbtHLM}nBM4#P@8w{Y&A_b zbMh&P(xTQy8?>I-KZ)R~eWYNw5+|pxAnRPx;dZRQ)-V)!lb<-14Xp$=n79_n>ivS} z+4r6Adp~tzR|naea-ndRiA3O0iewv<6Lo{ITK{GcI~np?O`*$$(NotC&x{G2>9frG z>IP5HOy0K}=FSIr?)M+w494OWv4UT(E4~0+&)(0Sm1?YXBiw+jPt!tW8bIvsF3)d|mO^kL%};F9P?o|NGy6 zet*B8N9QB$7-l!m%YmV4lqkADiFD$F99AIJC>f=Cg265Jdq@PT77c`V9>H5gEa2RoTmP@02g2lx7QKOo4z*RdNkG0Sg^TvTh-ntfQEs4mR#g zP)KNju&G-wF#reHroUd9#0E|yKXk%y&g}dRH6u5l;U@27Vg7Z(ZLu0=HEiA(75@Ta){x0?OHqpzV0{3g)dxmY`$IL7w{X zN7Q5WuFK8Viubc?+o`ri7kORIQaaPGEncgGwEvvicnD7h69OEj@xM&{W3~VBcWHw?1;v81%%?Qf{5dYLbqJzHYMAL%9 z@8Tn6h{Gk>K55&cUk!AIuXomr)p>~12!YAU`LXn99nRn|vCist^;CW??~t&Xo;Bgn zzOgjTgGNO~lSOsmeR{V+uar!*ZsCwZdgxkr5a1jfYc(m%TNkr&eVxFy|ONSD2<6>Ob7E7p1+Td4ytl&Ln;td%k^*&?i zUzE^Y!Ds3_?&0Gpr?NSDQIa~BMys8}xapw{0{0N4%Xy4P_`>7EJm$q_cW`nf+y9JS zbU3QlS zoq*b(8z_-L9S>Ckr6NKt{N6nUr}(zfchYlS(1NN>0I}kV2t3bIBCb=bJChq(jKxXx zXcNo^#Eec^B-E#LXCn8`JD)iAfg=zR%eta&d^P+;?j2;!Inw7MceS9ZUTFr+gfE=T z``%=(ngmTM8+RK?NaGi{_eH$E;%8#xdY*kh`Rsf@`+>_OsPr5CbdS{r%xdAPbI+hBs+x(+2 zOxB%JgDw}K2?|YgDn)GtG1D|nh>FM}+~kX1gpGgTWfFC=7(KtV)+$3?*fvE4sWOKu zh6?+?TBcM73roL{)u>f_0X26Z6Z;~+zOJ7?UO&Gs=Kl5P{`KemeeY+NaMT~uY;C+i zA2l6|AW#TUoi2g&jTBXKJRY_q832|^r&BuU=%6sX5;ht8J!De35>YA0d4w|nuH;~D zl+Dy+%!&f}2;5q)Wxlc`byUHn3 z2%L^uQTq&uQv2)nzUGF_ zw?^B%uF}L6ToE94=6?3>518ZyJ8<)wh;-S^oxXXxTK7TS4Bq*l^hCid@LG$`u85jV&bJ!XAuX9PeWiBldx%tl@YL_kOQ446={kFL^7%ef1dv=)+s zPjeXgpq!zI3CT#8hbVOOyu_^Xz{l42vOc8t8x(4Q?in$2XIrr=CYogS?y62=A9q2U z5Lvcm3Z<^Dv6+CuPWiAgS$u-{y5egEGJn6H_ZER1By?0ErkJSwUM$A5g_<{#Kxcd%+R|u-_fY{EG7w!j$YDYlErJy+eK9xux8=FCcovt<24u`6>?8a8N_EaH*2^8<}x$~nDZyIW!wr!CUr1*Z94gGhRX z?5=xoObmot5DC^HEXh&NDHRGQi9KI9P_9oK2{W7Z@MA5ry+QV#fmKzz@czC;ZI$R1 zvzglB+F#TFs(4q+*IE&}+}$Q+xNST&h)q=NypoOiI6WmA~( zS%RdL;~6!s0a%6lZTv?8mkHf5ob;py;bWpRuj+wjhZ>i5IFx9@>F3yVIbLH4+Uu6;*KMuw3!A?r zI|U*hLVGJ*CD3lfQJZ$Lsx`dYRkZ5}x1^*qBOLc7uOP2QNhIN8;r4;Dx(;soY?T$I z1Xn*q`+qx~7AL4{zSXhOGteh|G;-my$uGtxPyRj;5qj>xM2@utino zJUamfpK7^Hu3f(kkR=mQHsHz4bgOaz;NEI2{A8t}?AfJVMB={lJ0DgYL#~Lgg-d<5 zlre%6sP6fY1QxP(%Xih{J^AN;?kC??UsmIQHpm!B?%f8GkBXSg{4I3Juh&S!7EDLe zK^;vk0Y+77RD18RdK6-MB|EiXrPcF6W&{~=U0jETQtScQRJxyR}3Wk z@f`Bre-ge793=7N2DuDI#ufVvs5B$WC`DQArwD_A;a79YO0lNRu&_iWIR;%wS(wb+ z&rK@D93XkEwIaS=FUD8q&YjP*@8`MiI%wjzHauZMFu7j%*QOWsH&%FDtn`4hp8eRK zEwKeERqVh@Vq%}2ENCq&(oyBGCoJfS)3npI>%>GlULmW$mQCJN;Gv)DUY07V(y(0O zd!W^zq+VRc_`3M>$JdYRS}XR>fB*je_4|E4TMlEAX#UDXbb6#2Mv}fl*J8GCiV48! zVy{b!)TFs5Ybb@Yt2(&qw-(2Y!$fRV-sWcoR*B3E->X~fg1y_6_VxrZhkiW@5kp%- z(fA>c&mWD znrUJo76=@m(B#W<>NlFC^&AC_JSc$IV#ZPL(s}1n+K8nc#yYqvr`-EJrECaPW1HOs z$hzg=qVw;AboKWqvx^?g2`On{kl`PjCag!H62Jj*KL#-^5YgetriK& z5oEe3tf@gI@6l?!HaUK7G zetcgUlQ7TpEWCJ~yXn^%U^?c5+^k+Y<2;azjz_Y26^;nS6OlFu_K6ulTQV(U*uC`_ z4?{e4vDPRzx;v-!N;qg8g4DnNBz&EH3y{Z3E2K5G+>HQeDYR=lMr75(fi`H)z>zRQ zIIE^keqv^kzvkexG{Zj{6>-kU+EYVzmCqu7zE%YO=lce{Kkw(%4ncLLfZNFzD=xR# zFd}8Bt@2DHo(|pepIodV`QT&+=;~`tMTe8=cT&I>fmF(KAE`{1yTvq2cwov#r-vRN zZwzMxuT@!KLEZH7PY(7$HWY^*DrPC2w%u{^C|i0t{3~x;_b+VA`V*bRY7J-AtrOV+ zvrWo6WE9WOl2GuhYsT@^$ zl}+ifh_DUdALDF=$yrY= z*Sy5YNhsye-fAlRA;08D9kA7NL}ziv;!3r4e>knE9WwUZv`K%ual(9DtB{9!G=R;# z@XtRrC!g+skzXS@)kYM{sSnIb*w1D1^Bw8`AzIt}@$<=pxy@lcT2)**HD3D+DAGQ! z)#CKq-VJMv`iQxX1^S1#I4~lQnflS4={s07kJ;>o`s$g8;|2E1%yVaN_b~t(r;q zM|$dQB{;aj5w)Ols5XUuzcjLEVAJeT<{^q>V%_dqi6(zml1)wR1bJ8?QxZw9WVTQ- zD{|uf45uGvcQGsIbvX3nb9GOWCv_TwqNi}#&OvAH`=om9dqgIx+C@ZZs_ogyMgXx3;$V~1X znY(&pd#}f9C;7Q~G@wSm+9Ww3uu4+*t_Hez>N2)W5F=F>vaO;aw!VH73U%W#8#yf#Cn3cGt6gIoCQF=?aQtLnal9R!@Q^srOego ztu|VjR1kHE*tMdQ3OkeDim$#xw2Af=;0`>T@BqyRv?kT zz4v~qI&|lr&Ck;(H3upa1Hj$==44LXd9)Af6$iV$KCo55Li5p`^zMmSb%%nX>QQB) zB~qbK8c8OLL9+{4A&fBQQSB(2&erW_g6!Jzp651dCAQ1Wh`yX35QxlR2OUI7WuQsz^iLNb zVv}Uo3<_D~pFu26_D7febn9o1IR8?Fkua^cZt7i;wN+IJn7hVxfvEwoDHo6*t^hn74fX{PBh6?dcD$RU*hBH!==p%LykA z74$&**6#y`fz+#?dpF;$*%x4wym(>NGG}J(1?-g7W)<0aS)fptHh+454jt;+N0>CN zda?kYNcd7FKzXj-KTK9v%WX8$B!F~4tgM;@xb>~UuZDH6yQF+t)|dej=pugksNUUn z%@w+vBusx?$dlP&yD3^R!8{5vjC3cT@t|8-}!1iwdnXibiS0MBIzVAn|NTLHm z_}nr*c54W+cca>(ZsZ*#uA5C0q zNuO8H6pm(Q(BOJJ1@eTe8Kt~u6Dz;Veq+?c%9E|Jy_U#vDna~M5rNGemmh6%|sTluYund$2`AX(1f(z^&Yl{Sv)TPT+{o+vR&I!0`cVAW5| z&wFQZ9J#btEE)Ej%)M0%P1|Ryy+UsFjuVXF3Upex^p& zz}6_#$lNH@8Hv96cIZ_vu^GwnoJ1{B(+|nWqVjh=b+3FEvuOF!?553MAYxsWjpmHs zFZo|QkS<0WGFU-(^SvfBo+hLt<`T_@67!b@1m_9*5lYbT#_sRO64eOzqQpfN8M{Ivb70xi*48OX2MyEj{{~ zr#^Y2Yz3!%DB#SVVd&E|qGcsdX%Nc>IZqo_qb4ei@v5k@tTMZ%l>_9XVqN@5o7E85 z0^te`prJJwwMhaXSF0apY)Ckcl00jre16RqS)WJsU(w&IbC+My49>-HbQz-niyEtk zBzseoI4)aLki~UKVp*APNN*decvx|LZWarN%4To;)DH|)Z2+CM^dBpHXN?Ux^w`@; zSsU5-C=1lP5_v^bUGA_6YqBhk#E`@u%6YFJlQS9~QA*uh=*Ubempw&fJkl_yPP6o>5$ zs<~5ItXdu<>+bnLV6WtgkpA&QGFuBHs+Yh5Cy!tgO!#)|h$r*8_Z#^0?D&({idV$z z6_@Th_0rbc#PkXp61jgY{uTyDGWY)W@RZQvgOl;v)@7SAY^ zw-xOh`T0o8^W68X+lNW6h-(Gcionj?d+*G>b3eOoQE}QLq_lK47N8(JOvuSeQ2!d zWlMf`N0Iru_~Z5Z`Qv(#cjoUu-@o4bzIBMO?h|TA?r|RL)%Gm}?$Zu4)=avx#nqkpWXy09$+PrNnrPVciP=}K|v=~^v*=>JZ0B}6lL9bsy)NLw##t&&N z3Nd-J*P3Z}66nEwSfTknP#N||_93r4UnP0Pg{7U~9_f3fJem=~T$k9tu)5Al=w0G7$4ZR5 zwK%=~(5ri7oX~7~RI;@JBY@%IG|CMWwq)xYbwc^;6<5Ta`+d6wso$)L+ofx@|DlOe z^>&xu<~w!dABKe{LAH&~c=YNV0N9@GfXr+Z4Kj1@`Bm$Fjw>z;*WYBsA09zfw1CSo zZ7fI@*EcUQ8~Io@4KQb@n$j=;>8#Ss&q~0{dZyKT*td z1}{Pb!__E(xqT^QOS(K<`$OOiomyuP-;guS&&9(B5vB6i-Wv21-GRl!Cj&{$5#6Ey zXC&`co9ASU&WVyw-N_MBq2Hhf4R>^&ES;>O1vWD~@nY6n-=SC3V52a_3D9HA!y^UT zG)X$1ePF;S-61`G{KjBlHR#PBH#PNe5?1Pfy& zhi)}zbKa`|axR%xfFCcSJ)I<;tphoh0h6;nD#}lH*V+Pc<^x*E`6t-_{7^*<1(hO? z&(&`y74$jx)-4ArpQhAaF~LrY)3jc4v-c1n{L}o7@!ReA=`Ck8s%LY<<8ziaJgspw z>?DzA-2(lPWUZZ%?Z9IR+y~6PS?I?cimFc@!kbZkVx~2)_e#;98IEXB%Z6=BFATWT zp5=HSIt=GOq?BIIw!S{#ZvxiSI68*f0a)&z8t+|WfGr1)IA<{q|1dAXhp?pm9JlB^ zwN?V3nu+;G>g$bEEs$FNt6m%AcBUU~RBrDQRj@QmkBLvQM;K0EYtON>fv}$n2M?a^ zsss^2ttP0`;#EGEZ4=`mCS?vr1lP5a*w4n!wE|T^6S?cyPCgH?F7?1(i)*cj+&lM% z%9>EUmLMgd+Q2DQoB;O2DjHLRhD=`;u`^INuqyFcReKS99)&o}2Xzz{6=)}%;?rg* z&ET{`+=)!rN&z6BjVF2U{KmcBc&+ui*0mVSMP{e9DT{Uj3$<%@5nnIz>w5O}&i#Go zz4v>Y7$pE^MAboL<}SBe0r%Efea!}~2o{)^8&I*K`Tn7V^?z(2BPtXOvGaAs6;x5r z&gXc|wZc=8qos3v6Cub5#n7j!1!Bgsx{~uoL{z)b+Np`&o@Zq42pzohGIMDwc7&I-Rrjgux6WHAM8xgUp@8OE8 zU^uz=zW2VL{XBazktYanvR6`Tfr|mV2_^tHIQU4Hu-1av9=x&z#ZEon2CS+O==Taa zgo1t{2-Qsq4uj0S3q8gg+3gKd>1Cu;i(V!9|I*OCcObuB*UulXpFb`#-|zijf4;w; z?L&mZR5c38No6WrYYsuC?!qIr&E7l`R>gzUoY|Mz6Go{PS`OaiF{_aa^od^6?v7d; z5cy%1T5bT|z3~=|n&=ce+}mH zVO5l<(<)&G*n~N~7UI11t=AP~JemK0w*F{KvK>bf#mq>L$kTm4TuahN>Hg0=X^mD_ zWrlA;4=^*(vnFTyRAz+x-XsVZ3?K-;PqjjNj;CNh-XE+2_kCGjVd6Q%MFlU5ePg$ot`{@g*Vp>U zdW>vi?o~(YVl~%l+6??CDJoFFnSYvI`u`U3#r1lvweaUT??(-$TK-lit1Y`kOx{Yi z=3Th7o(Y_OWFh0MTiR2CswK&0-fd;AteLwUrAteC6?*xK3oDXsD~kPS{VOuj;#fEG z_qj-V$|7O4ZItWkC0?{%Fm3_&ee%ku%sS-#p2BUGhHs2$5X6({5>1uqT~OU>tEpa> zhPS~iDPTB9zxLd*2|6jJTj7MdT@oHkhqgMAmhJP^*?O|*d+N=C3*Cc8GArZLAbHF+YJe!wTrAE};VWyL z+BZ6w42Zi(ivD~VL(VDaT60^Ezm9pGY+Qs6l!8XA>0?@9jw78;?ch?ab`F%D8R{=P!4=Z!$6!i$@ zh@;vVw_FvN$|5SenC{*PCk`~u7M-_Vvp}Ay%egulaYRUFatwS26mV+HPNB<9)&K2CZ2H~!Y+ zpQXR3M3m!(pUIbC^on7{?PVesJrg#*vG%ghQipVbQ`C=xke*tPfY#?k7KBeqF;&AF zaU);!M~X2=1Wog@i14hBH|`7!Jx^5iVb2IWnC|>{3z>un zf=^b)GL|&Eqw@zSVEcgtxUrVYL{2Gedkz_r$uG!U+m**V_HtJ7 zDZGE4Kj*B%eyzRm+WWQnYJCl(5>TticoTKbCcpRk?-!oh@50Y{-tT&!dLKMb73_jUE@iqw3IgWN=Rt zdtGU}7pZ}Buodz%%GoU9``7Ege|>#_zs__1_51z%=jZ+O?UW>ztLTfsTJ9-BT6Z9P z((6w!QrFiE17kJpPFX%Tx~T5glL;XYwJ}WQc$bl6wSIA9h zYCc5Q>>gt zpVSs-a}QC&sB{hq5r@C%5hFAO8Oq;C_3f%l`VQ(kW2=PeT&$(-RPl+^$W1dBS6^G9 zLTO&+9ABomx!oYv!q?{aYdux}`Zh6(RK*yH$}akugn zsVcsR>h!I)MTWOlJ~}NNE+q>d|l5CQ@H zZG@%%Dd&{7kcD+05bjMQ%fDZ&*w5zUkkfgHC3S0=JK!kG9#PMCO$&^ff-kP zB9iy#Bw(tlDe-tYl2E&f6lD!C2Svpdw%x!+ZYL%a;EdRgX9hFM~EMTVDl zrFZp}o$<-=utcK@h{+>gnBx=}lAw>+!+vfzeR+$7Dxxt%4E2?Mmtc@l-E3%?+gLZ! zaEVT|YY}Hqy*dfudHt%caoPbOFCFxuRU%5}s+vIXxS(-G_O&*pIQ0){_X;j;`O!kq zuk+7)-$;mu$vr!Xcx4Dh3}elK)LM4@s4w^a;SeQ=xEfjCl125r~J2wz?0K690CJN^~m3$v?)DdmHy8g>u z=SbG!&vQt;UTcAi+$d9T1Y*smSnm8$Vd}fXx<3zDd!5(jYwxeMzF&9^>HxZ)tkA)& zY4#WKMf|f@y;y~xs-O4ydDriAp29gOaBX$ZC^-moh(fJm0jrxyVVJeNbJ&$xgERT6 zTU_h)>h{G|=e*~W+&-lX`^qMgjBPub3NjZQB-uMZW0|&KC^12~u-?phN?Va3NmXL=6({+t~Ld|4Pc*c?jqZXd$ z!76g?s=fDXuMO@Ozg{@c>wV5~BDDVpX6%1WO;pNWoR015@*1HqX!2Glm^A`W{biRQ zglixjQ1bl#^;$`$b^_AMTo8wdgVl1tz%EoF$zvMSQaoob{PSPm|9rn*d;Pqh|NTF| zfB#9L2^|>K&|HT)$TP3?XoZ$P_SL;55lWu%RcACoxf6cqL@{zmAbNF^REtVMxG9K& z0-^S@KA4o8x@SF^$QeqFhF7P?oRJZz^jRC!6Sgk*8L2LOR`5A%%lLX zE|s7;FE5^M<|382E2eE<4f0h=ntM>o=6Od=m=v&iv=&O{cCSc9PvEtnNLRa}D&63% z=yZC?dU#CAB~#DRhj2FayJC&9_K!G4k8OYTA1Gn;%i{-ZtOb>^aU4fQLc#1T2UJPn z(gbr2lcVf~UJw-NQ>~+4FVDF+w8W_$t-xr#oP2(cc z<3F@&*?=)IHh3pJ1*XYoKfA{-E^QXY#01iY@VN^2hz4dRm-@|TE*|A|iduRaaiC?# zrw^4O#E-opcuiYFhXG#oV6H?wXfmLYWwM%Cq-c04oA#{GSUS{Q)M#Mz@EjwGaR!&I z&5z9wrQo-H#&$Sj_TPi34D|?rIfZqhpB*+mh%DRiu6*8}MS_Ae6eDF{R2aiHp0rL( zm=OqajF2u4rcuW+WV%;jkZ@K;rg4?;%Bu)r8+2ncm$WijGJ@n(67z#=S-Uj>T{0O> zQ0;)<6-^v%y)kDjgT7_#a#%wqqiK!4{h5;s8B$3Q=<>P+2X8#TOz(EMA0}2o1Q*=Y zB_A){7&gJo(b^7Rc8;^YMlXxMTpBs8d20ds07RW+BhCQE3n4-)pkEiup3sAvv!nbj<+ zcOJ?YizPp5auWqB`|PN_Eag*^VCQPf%JsYC2%J^*>WMP}siQEWPM&D-am|?f9j8#b z)jrQic;A7l1j0*n%@T7@qh-+dw=Uq+0=oZ*n>)wW?hCtup7g*)yGPq8zq0w}a+ zbpx`{5kMQ}g%tc+v*eGBEI2wz-Gw}?b3k^drT6=+eHQq&*K6Z@@7Lzn=F1y2B>Eb4 zOG=uwQC#>c)IYCNc%S-t>i5t2>H7o+ct;St))h2d*Dqg5#nFYDWPES!0Mo?dk7o96>IWM}Yd=;ze zr|Nxv{{7P>a_AL!?Y>q6tU3qJsdLWzJaw|uY#=Z}(W=`Uw3+vB);(*mZ}urvZZmAp zxh8pQx6;e!pJ~OtV@^O|MmU-wHNX8od56t{Qmj# zJpR}`TF>ab2j#sf;&_o3FS7M2Liup*LBd$FW!cBK!%i%#t1}#se+9@%K^?g&hG4v_ z8BcF_l4LfPUJja=M0IXf)slB?$l#ASpbD$=h1BIviLa^Ln z*%Jz8P&z$SvaS4RkVK|yc86k0XKYGC%&yxfW4y-xiA($sT+7|Y;54R-9!u*L__)>& zfYUy!(VHG&UraF+tlj5?PGM1Bo4;Obk$+BgQ@M3z!CEb()od5sYpJkj8Q7tDN0^1H zYfrI)hO})?s9;foyu4r>prEvoa~J?V+~fGgJM*D*$oNjC&@zO|51zM;#@X}6X(&Ll`g6uBA*5DqDZNxEv)dsgG)Zncg7bl4V z59bO0N!-+(k%Kw3=d-=nQY$lUgyXHCbZIO;kvVd=R z*SqwOOK5&FKf@fah^*j~BgB^J9VIU{Q8RvlQB1{e`dGWV-`5H>M)S9t-p<#Y$6#*& zwD>F5y%d_Za&-Pr?#cJBrL`agLHC>EnlMlgeDaVOth89rN{D>>~ zkl-qkTUX1;8|eAxybC;wz-tR|`L(NRpVLQUyY8iwY3uWeMJ^phmYP|~zvT713uz4?EAuXia!_vigQz;o)5)qRkT;amLX%E3{A^eM&0 zYja;E6VFo*PPxu`?{zT_S!~Eg5P%hLT`1xxbt>aBm0QXbV*}MkuAEa&k3?9&y&Ol` z1({4gC@esbXX+9EEgP}znjzYu!*M`|s4f=`VO=a1I`JJ2)P`xSyf{;x4k?bWKPKTS zEc-b>0423+@f_H%v7XcNKfu#H>GoP{uh-hTY6GvQ@H|i7@me>yE#6rX&io_O2;*?J z{uCEiTAa9k(*WRLrV*y0#jc^>RHyd9?qH=L<;1PpMM_DE_! zynmh&1EWbB?EX$tjpoXb&y)!RzLGeee~1r>ZkNSScK@6WO>5ye!Do+0#y2|}97Lw| zAZe1g9m}|~7Ohv(L|QzkB_nU7aP58a7i>HcLCLCe3ID9%+O6oEI8UZ*E0_jNKHk;V znM^dZEn`mDSBsv)x@eY20Zp`{2!I_*9Mo0dUd^_)+9Gk)i%gO;&HMBha;1{g0@kXhw53x#tUfge)GROHWn5d^CC z^2_=-|LGG3nZL|>yoClvtUkh6juNy4AxdFevJNR>;pFo7tV>-fl+x1n@BDXLHuU*` zLqF>1aB^L`iahgTd&31iW+P8bnlsPh_lv*2)+zjcpPzFzzeWX6<%~p5^d@slPcuK% z63u*RXlku;qRUl?(txVY;mpjVK3XZ;UMM@fjCzpmDOzXqM8lloi2nJSU3BZ0ra+r~ z6j>5o^ajG@D6WnELDyT1Fj=5PDoC-L7{tzihXja44eQre>(b!cXyW%jD=Z8ql1WxU zqHZr>cEB+`uYOc>P|g-$d;y8?FTNJvPyM{#GLaMW$<&akU*Q_ED;bw>9n)%8mOBd< zSq0gm*0*~2^R`g>&^$^vwt-!XzlOW#F4w|}ts31lkqT0Rw z@iKmarLGA&1pyU|E0*bX9F?QPD25kF>BgFziNQ(kIKd}px#8%^W3`PBEo`M|;@#e&!}9Vu2EMCQT0`p6p-UwuCI&DZubc$%arC-K!lWaBERf7r zOQl)ckS_ZDvHxlIF7r4_5$ab46WXm zv0Og5qQo#ZCkO$qLo3U)9FD9B-hCMR>!-Jehir@fITWC7WWTJ%@G4-xOvIudwJ9z4 zeX`P&qNC@Cnz)uMdTh1tkJv;c7MkQ-<`7rrnYbTuKb=8EYmq+OOLE$jrmwLz7IBDK zmk>-swSES|)XHU@ZnH9CN)@j?$(r$KR5Urs*0Q1FV-+jkihNp^81;-P{f7ma-DvGt zaMU>rW8}Z0()1^AZBAnRRM``IT_ydDU3RGfT2;u)SP35s$q%B;*9?Rn@%yppd)vik zIe%onqCK)c557jgm#96(S^ns*05Y`|p7&)XbuC|1ee=Ai$o zVNoj?3#(S(M6`jci#z&TjLWAtJM2!iT9fqdZ*g&PfmOB1wO=lc;5mIigjrit>jeNO zcYYKAyx(V$OHXp;`6+cPI5^#>A8QjN*6zcp+|+5(=hQiKUH$3`r4{V<5!zGS1lfr- z)}fWwM~izUR`y7tQpIvx?|9r3i>udj<*Y8t*e$Mabc@A_*h_6eC)~+sNRwvhY1>fjR;Hr!|xC-xMZM%gz2j(TB-r^)sHH$MOPPfvMV=EuXW3yD|BvRn=*QVrjQFZm-NPo0q`Z z+8X8e4*tcVOOh+%>KwBDuLLq`;91#POu1BG4vJGsBDelpHTL?pf`M-a5MtHH+2rDJJQ<)^NC{ z9DP9(!^cbqxVTVzZEHvmpsXPis~8vz98nuEL#j(DoKrxWE(V9p`@^L|_YA_(&%D_5 zH*#n#Dw#mHt{`8uDbrhTt$rP+o;o(D(Z0bW zj5*&UVMgQ6B?yR2I3Ha|S9m*30f{NztQ~C>ez&H~QA&#vNx0Fm_w}4;Z;Mx!I#RWF zY-A(n$rdK=S9?m1OaG65?7~QVExz`C&iVKIk*~WZhHJ~gFB}v2aER9Y8hPmd=nba& z90Nz)08b6Kb4g}I{I-nua>{WGy6vPRDGjSAKPG+Ll;g}O)wIU1ta5W*KpriTl%ETa|r8bAu?hX05z=7b+3Xr5edx=ypYBUie_@hy5qrP>A`!s5jlf#N^h5 zC!I}}`^3Tg0V=obdkQC0)tU{t(2F)`Zs`}tv>nhKru>8G180*IGTK|zUMSqKt3|nZ z#^prBqqNM145J}O&3lLW>Wk+y(5tTFABSlZaD)-@t?GS2GN7G5lOXUMD{eXM&#^IP_Y>I^M zGSK9e^Ks^@-J`JW;q`?H9W(br$b-R%NgybBpJ#VR~{x+H$ zYBud=>?3U^hWyhzA=X_-u&CN*Ch7=nhHkEC=h6|g*+i@Q7M3>v}1v z_&)W#pP%{sMrNN+RE4~iC7w9jE0YYRJIDE$uw8hN$rO?+@OBSz-PV9DxU ztmAC;@tUQd;L?vF9Dw*?!c#9qVgo^2ImEPSpfhc@2V&+%(eu- zH(Tp64G!J1>D9QV#H*Fh8>$7Im9bnL`#qs%Gdbh3=YKMUYmyXrXKCeBf~ybtBu>AjOZlZ ze8x7$RGnDkWvj``%^d`G=z2S>bW&r74=t;!yfpcp!L|as%X2;NW<*62IUHv(ucc-T z`p~HYj;{{0v)sLRUgR;w(W%=NN>UZfU~HKM8xujWzOy~M1Y z)&ka-g0HMCw-kip<%YPKWB%M?Yp#0{%t3?Mj+Ix+?e}Ip zLC)%UHjdScBk$ASHSfX*avmBMV*Sve=}G(C=}wcb@MH)^IbR{-r0}1I1K8@Qi299RIeahtr7#Y8KxQ++;*py`@u4gK*h!(Xl| zpP6^vm@Wj8>ES}2WPW&w&Lm`*LnT~X*RT9VWQk{>X7?)|=6borpGf8+e})@BPY6X~ zPGxa)jKc-|6HPQoF7vP`X1#_(_A8tM7J8{g6h<+!w;I18-;?ct;ICKm-aGK)r3A^mPWWT+kkVN6lQ%(zgm zki4#7YDp|NjSG@5T_)dN+LslAPZiNe@q6sOc$yr5hght&orqbwTCq>*Je58e-E7WO4Z^?ruqDl_ zLyx`%@91V{d%42ijJBb=iRLQusd}FJDg1e!RnKd2ZGLaQUh8Xh*&wN4UYg4VoU_P9 zd~N>o;sH<9zu)z*pXXoi^ZR`Y{My{AOT;Oh!cSi>aLiELF=tCxisVvO9_&UK{YjH& zQH=|}FW522SJ8)FPmOz^S>w(8dNZ+3Urr)-!$Ns)WSN17d!uX`e(v(yml`h48)>NM zu?NDW-Of&Hr=jLPFD{_Y9A+@!7=4|kGGUcHnSdO(6_c;I;`8@UhdD^|j1DcseD<|_Mz9h1mcm?pa z0CY3}sJO!+J%bOlYolV<{p)*wy>=b^{`36#dH=lKt%Y1`)e-n!J8vubsLz%6=#k|K z7xqHqgI$V;_FNo?Xf-Am8WgN-qzLyM9kX>UCY-s*-CH8He>b++bW+ZVw#ob=su^i;AYl>mgk$ zh-j3V08oMvwb_OlBCd+pxR|6M;kr2{HnG!R3pF;9A%)gy-HSjM{H|ADr}KW!iG3@l zdnuYpewUQl`?jd99|3%s2C~??Bc%bQvt`nVekM$Gl9j}i4^wRRQaK>qGcR^&rZ@(1 z?MIr>vPwl+c{&`^y81QDVV;#hA&RvYPpyv2N`{YzSoL0OZ2;|)SFIwrsu#PY;#D~H zoT`siPI0nL+ixBhuclGpP%#g9X)n_mra{7=ZTF%uKBHbjii>^ZB$= z*Xaq3P{syKZiSneXJ3p9`oO;_n9K-xE7@vpebk_pd)%BHS#Mz(w^$hjB4 zH@WbypXafvcpqYPV;AX2%0(4DAy^if^5Kfb^uL*q&U|3T zR>`y63#Ub2hBDPbS9RZVX{~OUTwK5^{qw*@MKJVoa*merwX7|@>=gLC!Wl8NvJ0Hu z(L>WJ_gX33M+`;^iPy^((!U<7Xq zc@Z)0>>7UAZ7XxK)GX!F$BUvKZK_>DE8hYST$~AV4uz4FY9Qd{z5Xu6jms9w3G!haE|x~5Thym#k%@X`D3ktW0f?e z2cRZA*Jpilg3M##6qICR6>Ly7euZ!t&XE*+ws<|LzW4=2ec3qSRRbt`f?I~p$;oureLD!9JH z3abY%b?vt{Y_nH0W0q^SEoXgUzGJM&{P6LoCHnvP|NO59XHEQAqehA1xVkc_oTmkRx@o8cG7TfFkwMAsiRhGD z`vchdBx5)|vVl^k`;I7<@v?`$fW5)Z#r3teTP5*%syA|u6|viKam!#fSFuj0+uUENbBJ1;1Tm$F_C$Qa`K?s_WyIxrvF$9ZwG2IISgKNMSiIKy+Wgw< zYp?IuehC~ZDXc2&Etk;F{-^M-r~dutJO_*5;(5-`!SA2vkM6ngc_H|VWWNri4yc-2 z61trr7lKF-BsUkaSH;agMO{qM|5w$mgTIWE#sWK6ZZ$G#~1(7+wN@)wqfZVAawv9@+?T`AnFrhqiV9s8* z0iru9FH_?=qMAnUkeVP&q2uYlDoQ6qeAdkw2q&aXcD}!e6yDG|R&ALip79?AeYO)Tsm{ zQ)b@%Pxo4al52w9rJZ0Y||HMo`YZ z4Exk|ASn^*F+e7EL4x%~Y(q;>rm)7o)}rMMmp1C;jjev|4)woQsOlSA?X6&_>d>-p zjoA7s_4aU0O{oX3mUeTS!EDboVInIZ0SQ`;wj=LW?qh3r&mc`$&Y;4>fJ-g9vH0* zNKUBDTAxo2KTH|UNO4ptXF)^W!+9MqOsqG^X>GrDq&d>G0Qe!gtfNer*EF>R))KFC zk5R$ua009Ago#xb?&%Y8tc7cwK(_8@!3MuX=3p@fk#3;yYK8>(!S*Zq?S)Q5*Jm)T zE2#ung9zf|HQSn_K>rdIG4;XMDdl;FaQ%d9?@rsf~#945o)T}~u& zzWEpl-^YguGviJ%G&5zsV-5fZ#$sf6G#r-kEweKk=ga|3c$hsjc`BZ_VRnJ13Zr%SWV@Gtnb+6`8gHNX0VC& z1)XMbt$iOB=#Px@lrVzhNyfJuk!s%MCBFIbh`^G>t!%s^O+z0Hv%Vrww52l1UPizO zaMkV^2(CX#b_-CCLx~H0E0PNoT>NbyLht@GAA9Tw_d-$}a88pB;ezzf7e1skI0;)Xe}T#_uU=83>d|968bd3}@8w{HXts^}Dxw;| z@$a-bak1F1G-xg1>GYcvE z?au}KYev~(j9yv`JX=&wy2i))Aw9M=PovN*;fx2u&oSR3tGp|!9=m`=2wzZzTPH3G z;FNJ(|7f~_3#h`2-OjB^lC>~;Di(i%V-IYTPob*sHf>O-DzMISgBx!Oj82NU$L9$P z;(LuRz0H1rE($}lA|-VCb4hofI_>11gJNxMgawuxt~%W_+ahf$YwMa z;?u3`-~03_(fwKk_c>64u8WC?>Xs;6AYN+~cur?!T;A6I$4hH;DdCuATV7Y5mA5ab zlCp*dby<&+JLv~M*^#DC1xnUgy$1Np1w5w!{8`0!ZPsg_U$67)YyI>N^8-)L0q#(#1wSZN=)xU9aogo5(+rWq6+ zfp;Ur3qaMeE@f&x;3iW?DG441H{?YpUrWiY1_=9djU?m2RBo= zv>JAxK~#0ipJTz6*>^8XkiI()nyP91UQ7xvS}s?vTGJ`x{xxyTo)Vz)G(T-H)n!E0 zg;uMcR=~cvqv{+K*23c2yZTh}_v^*it1Y7QV&^>P!8ymiRxiqSPkpwHFqI+s-}?2w(b)rZIfAk?qA`bw@$9iLGQ2E z;S!QK`DN5Ju9>%>fSg=eAvb+5Yr~W+!i1*Jx!;52IwyZsD-rslu=8t(WMJIJFMO! zB!^?U=0}fNE|4bQ>z9M#@& zS(*~8olDkB18hi0qJ}`bdXxJHw(~L#I*xBsO6R#7q6NQMl3fR zF4NBvKmujgDhIphgtQe+yW6wOc3xyDuPXnfm!4y5&`!QNmKVV~VtemdADdR> zprHNYjA-glLr6s)Sp*U;?7hUVRZm%m^L=S~8M_M6@6~s%U#KEa(Q_s-J6!eC(Gfr}8C`@#b%>$BlorVDndyUm0S=`8Iki2y}suh*1awb%Zr+p<$U053~ z7>k>I1*it?Uj6=$l>gTkzt;NmbKcJxk6_)l+AGMuf1zx)q*9kUB|06wl!)S-98^08 zg*?8h*42qNKq8IOw-~qrTv^<>6c=C$F=?C-F^@3@<69YQ0_D4^0f2p@>yaw~%A~{+ zP969;b_q!~jfWn;>|H9(OEcT+uc(xQwaS6eDS`OvzZ@%SR6$yO<=y%hypgM!(x(XL6YpoKn^}X@D4b}W^5!{GH)fNxWi*h3i!fe zgkr%NG7H2nxGQChrGUMl_e>@P0Z6xq zhmY~PO9+CiW0EFm*#DNf0*1RvsiH72mV-!SEo=2Uak62h5NWW7PF>|ZkJhU`R-|w* zWt?p<3~U?M6ir9?AxT;-qNC1u=DpF3WI}~Y_WICzSb(?3!2$pA0C7*cb)A61J5{rr)vhys?nyiy;; zfr(D5&}ow7HK5ZCH=1iYqhp}o8Stur&xhX5uhyW}5R7X@@=fsn`G5bfXOhWH_x<^0zDG3TNc@*x_p28G?vC$QFBSw{@29Hj_&T|)GcFY#)dD>7#NyFt z_BDGwfn{{38HF7)Ow+SZnXa1vjbyUTeACJ$-CuRmhP$p z={m*twbrk%{pAdY*IA1XR+w>5dIto6)hh))XgnJd5jZ zwzInmCS&u*N`FkC>Bz?ysrMXsafNH&+3!L81*=lOVE}amZaHY7r_*}WLm>iujStWV z|Mfxpn{K1Rq%c!4r(Hfn6`-TODw^|R>UP7P{^`7&uhF}#tY=-Q?wp{i^{PYPH`k_c zWr=$_;=$$GmJfM_aAV8}m{rRl6Bi9Kw~-f0sqzZ0wBmg&e!X5K-tTj@DEz2%FlvSW zihy`2O$Ys6LrC6z9&1&13pW&5emrT;X&QjUIDv-w?p%0VOKh#1Mr-R#%n2?}H` zk^hY)m;wIhpG1h#2Bk%AFe^VA{_zB(ANhqK+m!!ksNglSdyvsf;Q9=VB#w4!zF-8E zvo#@)r;bVw`LpIlj_s0C>X?C7_aXUy?f1KWzaQaLDYncMHO2w!ztCakfD2vi24V^K zstimUK-r;pJIZsb^vz)Bwye9PXrK^ux9OVdUH>VapMf2N)t*)x)a{zs3Y+$A=HZ z;FZVkX)xY5*+Yyeg%w=lgHmsivFCmzQSy@y41f@9_TXTllg_-x*d~wR*M2%LjeqP0 zbXvy@ZqN)~2f|so88fn(+MipD_%%S$ut~+Z-uPC@8$<0@EIOmuWyKLGq2^cD8iA8s z>sNGa7B1xdIq1YvcvL`<_G13a=;jTyx3iEZ~T28UFyX7I^&4)xcwtUd4myBG3mI=i0cE?7SAb zcL61a+pg=JJ_xj`YArnH5bQcWwa2?y6!z{1oPdk7PJO8V&agXj>Z=M0)faJUo4V?9 z&?tiE9Lkhcax`@NoUkzf=RAEk9Q$~FJyqyy*huv}H}zn-g;!d#95zcbtr?&T8taI?S@Wu6Ot@_$eoj>pTIp^m`=S2x6Z)o$QZ)NTA zujos!w;;i@k4hA>YeC|49UuXy;c=(5-TVx8_F)Y&*9Dzz6(>LoD()m|3q{@DMZFIv zuv0+YJ5G$p`Y$;%2Hh~=x}%=*P-LZeDwd+fUKmqK&FX|z0R-_l{CD|Ac(3`t#JzhG;6V+kj52Kc2Sq3tT7vS_Kr?* zJp&(lBfW+_wk(CFC%8`9ixKo>TUkCLd6{aJhcrpDv^Iblgb(p*=v8O>%{eg>0bkyi z9y~9{WB{qKysT<(qiC^}1S~t|@{`PTCm$E@6JjJGp#bc~z4q(1P&h}uM~%f^D~s2Q zhVn7G?5W)mg>UNYLXwXx46@0G{C8BUbQYV{rO*sjk`f`AXln(m39iBk%&ML?#py>j zDAufz64m#OTzNvRlMB{*;9YHfxDK)IaN7uSEjgeBdU=Uk`E!m`*uQd$6!T&BsUnc@ z<=|Ati>flOcNN!KRdPOkC%uf*8+4^505O5~U$oKhv<&5)T168BL{$Yyv}xuSdbISW zRq?ggUhAMvZ)i39u+3gyjU(2&EHgwiX;k>A-B+|As(AgMhSLtGc)esC=DoI2nV~=C zz7~^Fi+Qw>*{T>pv_gg&_WEIPh-2!vN#5?yITW_VyKKULt?Qj5{w!0lV?sPlCw2nq z#*}7VOns)7Ol}bPUaR|St)sIv5#FFs*#PxM*zx%5o=eSY-~-A)zBax$pQnC5eOA06 zI;=;=8+p04zBa|OcmqgLiI3HgNN+jxESzKNg+A(m;U87tpzltpI_j5lJwFaq9@} zeJQvCNb#$j#+6ITyK2NJFUC9J_>oD07r5eC!!tVrnV(mw@6m@qT8TP#@GrdR&T2XG zpU;n{&90|Uyz&9^yo%BD9p0N&&kXIM zTUx8@pya-K*r$r!V(xu7X>wy%)6H@fo|pGya*h2}hg0BUOEWsy=;b$Ci+t@%iMI@H zcR^4eSt3dWbZaS!@Olb{fCtj-1Ax^Bh?Y?w*J8BxpSV_3B}t?KjOlAGG86Ykoy=6! z59Mfc*@5cslr8w9!j45OUEN@*kh?!g6<$TyMSQ;)^s$5)1B3*II(3Dmk80=cwmev=YeyxgLQMtmCZG|6IDMKV5sb z0jp413!-@0rI|&fHOvmuu%qI#tDezr$*6v@L75Y+4%rRrW$iWtpIF*%Lg;>TdOMH7 z>N*{7OVwe^D*7x@g0gr}XcW8)sYIgtQ9QIJ9$x!(ydtqUkd?5!uq+Cb)S%=FJy*#q8P}<$b#Y zV18z6x%mQ}(ByxJGlH%@2J0oW=$I9ut5-_a0cV%SbxWuOyCdgbueI7DpQnzm7|A*W zU7ZjpNDdzT6-uI^^?rj`S?OySf&Rm5 zlok){;S@yivYbhoMz^af|3}zRaT(~yFK_xR8p6o<;?y3K_F4;Az}nnvopVm9=kRBN2LF(8ZvfR8`P_6=No25?-ge_ji~zkZ%$Fw2k=K8;GCK4xc~ z(od4Jjam;!@^g-HuI1@j|U$25T49#_BPJV{%>E>g%DC$H0`4H~4!!<>tkmoUo z6klU0-a_a%v0Q(EGLm?|LZ;~|=qz@D9cOtZ4?d%#8{lik9rL_Jee1=w6fqTM#1i;aTN9J}s9fBO`31bPWPz?&gZ6V}A(%1#5!O3pwGJly{;p z%?;XkJq&gh^_A%YF5U>zfOt>uF9nIsWsN^f{`!5q(lzG6y}v9i_}#9;Dm>5X8a?b!YM{Rh_mni<84)E;a$K zZGhh3L!ElO*}7iv_Y{<>t7^*r{ou^&+&DNiAthmNbYb!qO1FAC%AP2PWm5X zDbeL2ao8Jp~?WgdZ^Avxc^PtMNybY(f@~v>RQAJQDPUO&H3>bU> zbn~(Tdg(U$Dv=)H#DIPHSS;$&VWenEj)MSI^C(xpL7 z06;=zqM)vOa#H$g>B{3|qEO-*jhxy_4lZWs z+5urzyaK?vtq+CNe-%2x^AvENTEw&VUgTPQz19Ni>vgK0N4I#8IKHg?^|k-|`}NPS zT@U`%cdb6>D7>h(+@e%h?-Z?ytq(iuNg_Y_n{^lSO;-PESJBEbb10{&3_nemMCl|2#IyPUO zgiCJlfzli8WT#@`;Uo}<)U6MrswNnb6X5*P@b>E~XB1!Wc7sR2GxVwwZoUaEMthT5 zM(stlJx!F6ATgF6PCvxe;;ou|5gZgSN;%6502^va|L#5>0v|AnfUJxEX#@#klwAf) z7RH~p^ST(j6~_x#9}f(TuOzdKC|Md>>qDA_iej6NXJGY}HOcpxhSMn%0lG$K>B?X>KX# zFOKx=C+|Ocav9BLK-NaD^QiaVL8_qd`)i^2=kbOwGm5g~3n=Bc8vfOL*Z=1&Q)~Tb zOIf{Xiqk9C&y!{7mpE3thH2mG9Lq0*x!C{+` z(BD_JqIAzowc=Xiu(|*dq z`E+t&4RjM#4?LUs_Fe#2W3}L%;)DZye zsRr82B+64!LAf2xMI|N(7gAQs)?3!2_}AmZ!PxxUF`y(%yOUXZ%ggc~59aeJtt>je zINwwG;JUJMLmMuMW{vu}x3H4c@fA0%rfmV|ma`v+WYT1QXP)E_&kU{whgq@Q#aw~LQj%=ncqs}sB9WT`~wAw51BWGm&8JdwPc^8;oOJIh6FFk-$$6Z7&rl9rpBL>(?)wL9_i+cYhuMZ9rSTd7dh8EiO`RT7>zX6xy}Au!g($1&8l@!@2*WU zfh*!v{k-dq`Z@K*=e5^suNS$M&oKNKvPsez&rPE0wZOek;rZhG)ce#qIAt%b>j4PV zoVY37*=f&ZT{&2br)szFg>o^+pHXY0Mbxo$hY>iIRz*aDzCOPELY*pb`PK#5<+l2v zZ>_x;GU?tc;{D5ph>s?JVL+J+FORQg6iYSft>C4fxBvkF07*naRC}uNHCJ==CUd^5 z2_1}Ab4`-lrs_G?<;@MLeU91=%Y=Dg%sP3whU%=2HW$uL*57`p|DpVJ6M^SYy*9fu zvHBV=@U`7S(aWB>1wak@^N&gYYQ zqhq3ik38yKbg+Pn71$K|bGMHlo*i#%GUE7!L}9M>@S2o8xUACh_}=__z4l(Gsw;n8 zq?^zX$sC!h7Jbf%6QsyO3#w1BKvzCdb_Y?{HA_Ffficy!tj0rAhT3~S)47S(h`MUk zU~kvF*OMvh2!LFj4Cqcca-eM(-qqXDUU(*)TQ^2qQxlb!8Np_0y|qh3Sg;0LdF|L> zYw(1OW&&tSE=(f|AvV@m>^&v9Jqo5JdCn!`DG5hwxO}SzvW9^ndU~@u%yI~37I~_k zb505|vVF}|yXO6Qb|i4A-^Br^Dnd3cZr#O#}Qe&Qo_={V2{BLS6MHb3VWt0jLXv4cbRufya{XU zp^30yeEgJ(f$jG$5ch}XRIicv*4nY#!PANXX=YwQgSNjrQZrOw1791Pd_U(o$Eiq9 zz=Ev0f~a{k97|uBDBB&g2KI=f@lkY7#VGwTW^*}M!7u+wlMrjETr`o}E#S0E;mn=M zLBd=|*5k-j&FSHJl{fh3!>yVoNSA5Y`^2Hx%S!!hMm@Y^!ySPhYkeo?YI2xo?jYnBp{>1D(=-bkK!`vWDI-}^|TDT~Xo8ru6ga;?un-HT1erJu5fk6F| zy-ZT#E7*!lYDQV1N->F6p;*E)(qA$gZWFlb5!`WzUDBx84Qf|Zq38&+&;UXhnu(T| zDSBeqFlM)s!FY28Hv?%saWmYy#tO4cb0t6KQt5;qajXdwJ|Ys0uSNt$OJl!BHVa@2 zy{L@lbSJB0bQyDqp1dQYc{ZtG^v(~~jpSDp-4Eo5+8FT}n^<8)n}b;&AFu^z`r#yX z;jUemsBCNhU)by=lh9(hR=H)+w(&MAzYRBQ&zTR1oCl1DQ*>DuVG#8RON>8p&i>kn zvm~yJ0DzYhPqBS^{ltstW?Qs#_KE_HVNMXZv6t4mC7U~g=`79Z>`CKUDGlLw1B>0! z-!4`ZAxO2zQzve+i+T=D5gV%#nyO(Mm(ev$fxvXiqKlv;T)URSA~!FRIidL}b{4Eq z^_;U=*z`3B1ZsiY+(0d!!Z~=?sp`X(kL1BVxHn>F6q?g`^mPZPDQR_)*C9-d!24ht2(Ef@aW8PcpXXGaQwx3ff~-au2|iUlH9qIX zwHIEiJB#&&9{MDeh?ME|{?8^}u7WPca)5$Re4!HFHXF}`7uI1zC1#GE0PA`eFug+ZjwVzhpMAg&p4s^DwyEtms z)|oLjCiQ0mLb6z?4^T%eN#}+hRV$SJ2KSEJYKZ{l=5hR>p8dH^z|GM|?qZ_1^Ak8P zn)TXC1|U~orilrUJ5f_r=jciYs|3Hl_J9BSwKo5}&vOn7Po1ClQ{Zc>jg)%9W^-At z!E(I!SF0b+5BZ8cNa5ysCKE<0tbTnX5tMUSlKtsy% zs21}|g$W&0*pX>kZs#%nE_SyY?|t`3gGxAioI383y((QSD(_*GY8bI8_A6vT9cn0T0mG~YHJiG{8?utH{`&VJPv*W@eI1M3Rat}zTXh@YfA7=T6m zdaYmIF9OfO&pR2pUPtl5jt{22_rx@apBl&7)?C|g8YJnF}7$Ay#}uz%Gm0A08@58i@13TIZ0ke)Gx%U9iHL zvDfIMRO(~JlBNSo1pKCfdI@H?HRRHt3ZJ?7==CGhfS$*J?f`2{Xh>NiKH1D3C3=)9 z>8Xr1WE00y>w;)Lr{2#~E(FpHyjLQT8k)dyQkiNbKnbb}w>+Y^s-g)dj@+o=FzfDD z%$8M{Rb~ptpjtidtS=m!+Gsy)4|Xqk*hEZlGDh=oMg>!iJIgxtDx!#SSXp;3dBrR) z30iy^RGED&$G?bQ?IAdG zl$(fV)v!0eHlK6;JPz+1={TtkgP6ul@d%+A<6k)IGQc8rQzza}oUT%wjtg(1$xiLf zO4xWzU`HB4lJrZZU#RA-oqMAD9d!qdSq! z?XTf*OZ5mX)$X^Pv-v$Vi=&W=Pi~7|Odo|1-Rx@w%eC3DSD#7=ON%qShH2U7tt}lr zt33P=P#a+dMdx0^csi@9Q6Q-u8zd(SGh?{?qp2Jm{xXQ9`HlKrmd&g<=L>|BeZ%E0 z-e8m%J|>m$t>gwO#ViME@3EU;=uC!v(T8L(Sl0-NQ3*qu=^n_*!bpbwF9-PL*RT%*unM;3n+U~mSnyVf3)Y!sciAAk#p?%Ztu)kFiXA$V0HP4;+!MM@ARg9j zc-qYG+NkD`Ox@rJR#C&HLdiRgGx3_{{g<lr<2_NvU|*h zg3(t`Q~~t;1m}!zDWxZH*cEV#mnv6@Y3ki+y|&n=-ddc6dY%W*>7(7J%A53;_BDa@ z>`v()a*+dY)YY!5BMAF-L>tU0kWDuf4t$&8?xMdGk(#X0m&AeWX42SPP~SPSa(`2A zA|If@bI^INuDqy{_Vqc_?vKwXx5&z5TAueX^g{sK1gg(Eb%*b-#ZB(b7r9o^nZtEA);H`#BMayZ z-TTy2?4x2z=_T}O%K+=3)$hJp@1V{=doC1jMAPS0>;&y;wqCTr2s|RNNH_xc^<4`oR=>j>V#1g?KRRzCbNiU?P8RDRr_D)rYF zG{ZxeIqI*f{%|m6FbA}^cVT#ogk9#Lj@O8seS2@*nYiTr{ENL5=0Zk~heP#31TSh+ z6d|pl2?eNbmCg=y>E^T@QF0n8V_{v>H<0KrOf=utBelueo8Cofy%s$#%a2Y>;STI< z4WqB+JiBo6a$F!>U8xPSVLV}LoWxL}Pz%_5eZBT3i+G;%^E^7d&|0C>(}=<(0tpY{ zD9rMB_4$mzQ{(Kq&8{{t!G{_^o9iP6|HEXtN>u7ACY-%Jj4~X9H*m8BKJ^1Gt{yaK!kZ zQ+Hsc5Pit2HqR6dH&sRAyfs7QIOb&Svp!Y2R!j0b4i6ieeoj57{g^fzI7@nFtv|&6 zX&P4mToorWj7|q{GT!;LURqA;T-SvI(%C@WZ6fV<*t<**d-ScYa+FqcXSQ_Eq9t~E??H=_ z`hsyR5_S)2MRYOO0dsnbyl_g?_u~(ZrkB^gzc|*pH@^1*`TPAmN6uRFk`+5zkkhe4 zzlNVBgRW1q*6EFLH~$Bx=~WysG~rN{jf0oSN~k#QixN{(6L~%JWDVC)N-{C#lTRy!g4SGbT^M zW_~HeCz0rpM^*}?4Qafxl%j0sdXF*2&O^R8SRXIyWN^`tp_MvXW6kTr1o5X2?F~lD z(1oR_EZ@L-RNX<(tYkiPc?~`HL(?VZ=yU_fKngw;*iMUuwVqnj@IY{5FPSAJ70>r8+@PvzR zu0lNt>d0*KTT8i6&va$1j)_~ztaZuU6EKs zhxojmt>_#pfk->}Sh0N5B7g%QX%XhM>~4&zdxK=@`G5J`8xStY^P|gFX!zpZ z_r4Zi`}NQF{(7yw*Pox~fByaNKks)F(Vue&Yz4q;5o=>&|p@hpgzQ zWYz0)!J4s9Gd2&oerJ+b^eJ5nOa4^fzf%=NB8o}H_U{)~Mx}KzwUX1bpOgEN;8c8M zHrqU>ayM?+wHL9j%nE>Xu|!p2<)RNK7gTO($&@a?cJ;uDYLtmyp*JGKy%80)VUlof z-%zFrWTevUYOmlcd0z1E6h)R(;kPsc)r-w#d@Tc7ZGbvC8({s1bpGj7()OPTV9LXk_frJ{xq@Ib1$%z zKyMZ4*`GtqLJX%$UgMgdrCQ$kr&U}H7Cg}M&&yzkr|4t_%@$n5ytXz-0HD2659Q}M z&pCCDGME@OuhEHXot#%~0A_SL#aa3--1RZiu$#PCVSlr{r{YzFJ+)yG^rhC)%Zp%2 zOcKgXd9#oMA&$A&sCzAYVhyj60WRwv&f8xR_kuGhTJXuw`i3c?aQ{M{?K4?nUt1o> zsDhsKga-Qd)Anh!A8#Ol+Gr$^Oh8r+#@RlWkMSSfA z;LrPT>id=cIbpntN_SlvZ5qUfMV3iWrkczh<0ms%xx@-p5wbw8gun^w$(AbAZ&Va$_=SVL%nY|xg|)dMpvgIpsLVPAnWXPXKK4wMrb__1-) znX0xY7T~R#f+|g`b5J(G!it{!?RTTAH7eu*+tQ@@o#?-QbbVDaN{cqjv;AXlPRGZ3 zQms|ij{!z2@3I^W=kY%~Io#g9y3I@>ybH#Pfj`6{mA~Jgd#zD4d8*E z^sC5K1AqlkP0(S+EvW8lADuvy|56udwmjgSPmZwDG#YTePC6*t?Vl`ywGQhL&*`=@ z0GU8$zc^iu@f;B6)JlPSISE=%?5H|B2O6JChqp?{VCC866a)-)t%QvaB=#cL-V3{J zt%6qaiZGL_s`o+REG|6H>gx(vyK3*n>O54T_~-~TPSpdfQ}2bn>Q#J^tAqL($MAfd z;=)F4;Pv8D{66*5+sCZOy8(?Ab+CX3q&G}Ui=&c+b*fvM*^5`zA$zE8cwEhah~DK` zn(cH@g15~D+Y`J2WG5}FDXb+94asFVt0ocj6y2z4Ev-laOV{(ob{gP`%H1a<()80P zZy(}gq*TdNn6#<0`0~{FII(_-HxFgEHES=2Llc4)$1;266&}&DqixjcH{auTIe zK~sIb*4Jyl)_Pa{`FVcMatb_g z&)CbP#MFZE$_HBde%hdGIY-+|)+3N1HZco5Z@+8Ji34hZY)|Mu46p?pU)u`QbAA(peh?K#;A&=lo_3MV4Q;Hsb79=?!}*< za~`RtR!)##*YIkR4W2Jo*Na?9Z>M>@2y*6As}x1ScrQcQbX{DUdeSIC!wXPLDph@O zxM{@PR*>aG9^tvS8_|8n3Q0%5FT|cdl>wyALqIFTPk2Y98|aNAZIi2Jd#_;9-DwV& zhGbdCs{?8Say0_d(ya2CZK;N~rb4R@C#nUz#WTXzL@~@*J*SCXO~R{;Y_xJuc?;mv zl=NqM2`~b+oIImJmFP9E_ro`J+22WKWxllH2qbA{v6j7%9lW0hlW(mEo!boExRvb6 zFIbTUPRe+iOvjtlbGrrX9YT}d+PFC*RS5U%B(gs(StyFzA z_paHh^xF2LEo@sgg^=+GE$itU8zsFcL5P%vhx=9vA7!)-be;&YIen}klIOTk`Be^o24*9TKRP-X1xq)oN zgKIgU2ggI%s$~pt&?x0ga2+xrpQ$)`ymN`&2sQ3dA}aA}h+5#O$7xS9YvD#b_PA)0 zT%8taqs;12%*QT#iABqp0q7!7aZE~Gs5IKYv2RXa#iP` z`Xn>(Jhe6eoaZcJyYbLoVNre98&&l@^%UM!ugyiiR-a=wtqM{I%ZaKNikn+~Tk3uA z9Q;&Uc<+(IiKEc$C=L#|SO@5aB)Xu(%XKQpSIo`~QB}2t8KMo8X_-zFj#ZP5<60^c zg7Ld&l>;e6cLFnYw`KO67ue;H%Nn$dVeLYf0lHC6|DoEfN*x;wa=twNu&TQDEe^nW zgNDquR*G1VHMx24cuOE=XrcEet@lt6E2Ay#Ku4 zf1bWKuJ&4`qc;wGVu@8%csk&$r_+sVk+le{wMi_WoU7vdIRVZSP8DpO@ZDTxrf4W6 zyL};2cx6Mp=$yS}{J%u16Yk##nl0I-4i8eTB)D5g4DG$*r}ZOfUcNf{=Fb*vSXrNQ*Z(G!z#G^tdeFss zK%egy7f(i8lJ*?J6;Y-Gg98@`Gf88=`rfPhTI<(duh%N#&-?s&KhJ5C!dgrd$}1LT zxl!8T1Uq%xXatbCdMmmuwD;_kv};!{#q=F&ANdWjhN3f)nJ*Nxr_Y_{$4oVW1idEx zMX9`*j{y=zosFU^cck4Kj@3w!Uiky=cH`}`@{yb&023@`ZPr*5v!(B`AB&M9B^rgk zU)p1hp#0TvmX9uzFxN%dNLoJ5w$T1WyQxu?nB*M@(BrId(u8io#F7B2)&g0la85l( zJ0>gUTCBopHdP0t?x#*_$cE)25-&|G4$esVv~NI2l*WqBtDr$0gj5GDiW;N=nuCVOO^Tj~H zsHq=0lJIZ{!{sO_fH+)d#4yos377Lh8vrl0HTI3)E4c`dXVO@gelfGtv8<7URLZb= zu~|$^VY4E8BUoM>>YzfOy9dkmYvUxnxZxfH2 zh3xNjIDBLsH=Q$WNTtDLP6o6pbY%U>3H=|@KX;#xR9LJ|MmlFOqv}!2olDSvPpsN< zOwNP$a2EvTdv})p9_8nCNg@|yj%rCQ=bDs;ZgyQOVCxLY@QMixIN*m-v)g+$9$aa< z3yQBqpqA-^TR8OS3AU(voU60=J(5mg6|X4Y?lswHP%3Cyl(Hfp6biYc95d$s@VULG z9`(89JRyG>VG-#dPN9sP`c4Vo^6el%r6<+pKIYv7*a`1zbTimHtJLu3tW=yBEfzW@ zD1G9ELVmp~F)l2!!qh#!i_7#UNW37KLMN@N)=-dRLH7Vp+fz*?i1vib?eE#mWjX>A zAzeLBN|8!c%eP{vFVI9F-Vt%IQT?F`7?}^CyZg^xcdgaAAgw^nN` zYEG&c+)M4)-D#jSn&~9iX5TfLoJDD$*G28@-W* zHUE^y(#V>;cx>>(nDW1yFbXwSEvp(97y88IqV76=o;h7P`eGKSHmu92nrU|VXB*Xn+q)|(=Pm;vykQuXD;Y0+nQ03@%Y9mMC(Dg& zWz>P#V4znVrp!j1W4-n-+Wn+KW8r{Qmv(=l#5o(r4n7H6?7J z7hY)y*nrZtV)YyVPa{>|@w%b%un`m)2A#%DkE5nUs7j4v^UbbJeN>Ay*X!1fM)$4}Yo7hW>SA$t7H83r!blM3R ze~io@8J*Hq$Ej-P@`cO_9((L`TzO3_X}P`lwbyI!&GmksKhJre(xDN>F+M=G}p@|eb*RH6{?T6>M_fEXNDDT5`gfY zaA%oGpL+BdP`-Quy5$*2|DRU+dk5c-1&Yi26ZxURyr|~tNWkEeZi3y))S^$Nv`Xsf zw1eHMqMD=r++OVF5AVKy)z&_oU*4+!ZcGV6(f;Wqa?w3D)ED(@e?CP!B1nqS;vMd246-jicrtCqK?qb1Zja zXz=o-qQOTQceC{N0F^3TgIGmjT%u)7iH?b?V^rNzA^~qb+D4CfnkUiXk!e9DsU&KW zdrmA=<3#VKT-7Tw{8*a3u2EM0gi{Fur4}yeT_!C-HB)OA+>X1H0FwFL1|8iq8PKp( zquN`xnB;Et9rrlLO{HNgQJzlzWEhoM8@;tN$&Bto)X;tb4DI%?JT|Rq5T@s7&)ucQ ztIA(F-f)9s)N24XYK^x1vO!lPWx2C*nHkwcuWVE~8=U{i&!h29Upo`(+{&2?oq|Xv zKQi-P`Zb;xN$6VD>cd;~2bWl;+pyjmbe)_DLM+2X*=C!ZJW8cDbZZAUp*E_{GWXM% z%&TYZVLz*}Svu`lwZ9g=!S3vCYjQS9bFVTH>{Hcpu(;f856hu00GuR7s75+K0LpT>WPVM{vaz5X64>~po>2cK zT0N5%vmeIk#0p(2a`YrsN?cyCS8Zz6SZV@>T)6JbuA{6lDvo9MoV~!6RnC-#n2o+m z<%~R%i=DEN`Q{rsP&tXG(U&ao6!-nDJNdV!a-pdHykNFevF9;$QdRfpU4+vUvjP`- zU;R`L9A$sWTO+|yWb z{mm}>>sV5bHZ9E^9QB0;JlR^4?yM!zd7VvzsH29q)s)HF<(5e>-4bi9T0Y~snfA-2 zsh+5rv8Pv2An9MG*_eX`f3Daia($cJ!d7KRRUi7R(s5z^T;wliNKvw(m*)UHn+t{W zbjc*oL9KHRH)~bj6mcd^M6r&pDtoG)2aC1H-T&>&U}I5r#lEV$z$Siez78MMQ}u(| zg|~$}UK^dgDhD}Fe z7NZe^c}}}TX%deuUnR6RzxVq7dVRe%$aBuW|D5;pyq^=GiQ`k!+j;xWNL7OAOGo9Z zoWd#f0(ssf!L@X+O#e}LwN(Xm9;^q>D{00Tu^GrLV3w8O``YUiGt)~eRR9*BQKw>^*(YgYwOd^^3=>3R z#S_l0zE+4OTeY@A)AzsyQB-_8Dg>#06}D8tD~%E_)VS!2VC+d*V<{YW(1oeGdQn4Rc(jA@yL$s1t#E^Gi@eY27y#bt&ikd$Ey{J-9xIW zmn4`+dQ_gyowhd_uv3_Cz^3Ye^8U?#&}YoAiPWt_Sm`DwR|YF+r5VN^vI?e1$-2iW zOvnH;Vgc>dAgnyFiVeUi2=nY?`L^i@QU?2lhR({h8ps{R;xcugMX-GWmU)Qy9nT;s zOV~Kd`p&!Im*i~`>JubVra?sD9%xl9^0o2W>lA*TqokA9v!$WRR0?6>^}Z5J^QST$ zqSU};D0ld#JA3l4uS+7{!}h!~n$LhzM(W(D)JJCPbRd~kkqlcER_BoWF8fW0&v-Z0t)UUY4#2v7;*5GpJm2=;9-Q^0vxo~UO^^5E_sDPmn(n$cx z!ITE#OL0a~CbQ|_bA@9=D4oqUJtxc$Lc&XpuTHIPCO2sT<}oe1a?MMl{y3EL!JXLa zf>9cKbiXz~hZ8ZH{76j8mCbc~!Rsa28?Tte*z8aTjYfB;7A6SuY;SX`zjQ;-^t&R* zKm;z8!X#HJKhAXK@=;VfBM$kkp*hu!?2WazSS>Q?!Nr}041*xNoLwJy9@Xl6%qMJq zE;z3onHh{RS$~|>dv$C{DEsauI3JQ~FWR8sX>`W0aKOF#z(u=3S&AOC=%x}V_|%&g z%l(A?Phc9$;QEsd1MT^EE25q6|8risvdgS}tJ3BrKr= zxFs!A{hd+@gj(w@EZ0-@c~|qX!O)>gW%m)kh_ivU)&YI51H&zn?@(x^laJD)Qeho@ zW$0{NlVIPy;9bcoRB2aDv$LngL7xCts9tyOW;O{#IL>Kd>Vr^u6}oVx6v}TKiHz5= zX#e*q9Y)#*yYGLX_A&41dl*GkU-??#_ge2df8KRUb(<$Rv&b$=A^>hRbn8(9D$;fX zjfSYBXb`O34HZEwR-N2aDM}=Rst^$QFnG0$q5#%1K0A6-#i2Y_I7>f3t>+5hRNBFB zD6dsZu`iicBPpw^H(slI0jF75V8ecnjw)q>7xoq07|Xl+rNg@RK)T?%41XVg>a_ZO zzt-35_4QicuU&=rIlte}dCqfgV}KWpjjPs!oVyp_GY zJ0t*4;AGe<^W7GE_i#Jo0;DWmY~xs_Oo7rmA{+4VP0wZM=;zw~$9HOS@%38zN)?Hi zT36U8=PVb~uwvrgkFq`}?F`R_Ns#r*%+}Qxz)CSoOQ^itRNgRTr|^iB`68+wFo?YTTQj&$&K(t*sPSK;Bt@$Cq+_iup}0N zy->jJMXN%#J6jcG>;3lS>H$x{xYTZnGw#gK_DEN<+G9smOtz3OTKCclV=YGu{&+7K zHBtR2thHT1Z)h*Kc`i&$U+{U3MM@u>_h~|6*-K5zUl$5H8caTqt4)$@avHcY*2Tc> ziIRfwB1>=dmt-|A;v`{nYO*ft>#ZSPeG-C}-XwPJVEw0?H6vkRt@?T`fPdbdDEIDg zh9mNzR9vqsx@2yaD>a@+9eBt zf*iKFrMd$blDT>#89Bh&`cajh_8Ib-AQ}-V5_}E{S*`-ODq*m!O2c31CbZdQWNgzR zo0X10r9fL6ctyj_EtsKnGd!1SPP5SPRSoZIJSyo)b1;D4013}awlp0SN^p9S4KaUq z*G^lo*LHT(#h^SIxa2Xg2Xj=vxyxsL{3VqUkv|7XoE~v%vx!#g~BqeMd>VS zun!8WIy<8u+Zowthqe%%s*?rAYbA3F+LAn;8bE+GWf|$b8mLNj-zb^Ttl(X66L4EZ zJ8VOL0k6&@lGrYtZ-zqR$@y}vN7t$G#B)n$>EH}-Ws{qamI*7Ow+aV!u4$1v0$nB% zz3MBzYW3~(2{d(xg$x9>^qM^Og06UJ0Gm7$lN|XCp1HTH({8>iTUtXgW;5=Uu)E>2 zMZMA=hwKw{;tX1Q9mP;KPIIi9$_u$0!;jA&92D5;i{8q1?UpRG{SbW?$Qcb+O|v~6 z_F8M(P!Gi832!pc2R5q;=QIikhRdc}y63?#S86_Q$_l#f0tZ+)2a7zczMsLlt<~qH z!Tyx7#C+n7dLFE*hunolZsj^1WVH-R__c{z*yQ)(b8xEOr``|VIB&U1qT8!GkFL$b zPRE^kP`h`L4vO6xuS;yZk9Iv?l@?g}4&K(euI?#Q6>Dgp(Nb3eik520bT0ao3aN$w z91_(X^INT3{km^m*W8>Of*nZVlHcs3CabzWd=+Yqc?_0-4$YfgS@<9cH9XVx#|mXKp7TI1pQPiMT8n4uE~F8>^Ah<* z!HHB=$T+exnN#6ad|R)mV%_sT#OYGH)p_H+HgvM&v?ZLXZlx$~MN^8zP8~yvb&^X+ zV6-$-Sjy|6eTJEVgOoC4htx9J4m+tsx>+Dq6^|7>?3FxA8>BW`K=&4E>hcC(5 z1m&1H9%F+UqF(J86G+n_&PhXCM#!cCTcWBl-&8}SBkcHtU`3T$9UgeUF9}G@`H|>x z^EWx)>{*t>J~mpo!-lqy#T(3t=c}KK$CXy@=xggi;#56PPks$!X=UTYz{BK7c8|H7 z*^)l03*_QLHzcKNP4&1{t4^uyjfrPKN2YMiMU85Q;iHlnxoki@C&{9jug^4v3dIVe zxgp$!GcP^YQ8zr;^IfjQ%N=saT*oHcgXx)&jvlflc50m3ZDECuw*1k`@9fbo-Jf+* z;9ga9@0?jO>t;ut>g*Gk=;IZv(WFV$T>n$~rFqpJ z`*Rm;r@SW(G|N@tIcN{2RU%kiSu3U8* zNYctn??v}tg;hPhbl6`j}CJ8LVqOedC-r09RF#YMbb;cV+Rry41iW+?A^M8#O} zW``#Tq<^g6q`UBZ3`Ia}l5zQ7IVsOywqG?1XD8XSQU)VOBVy3@^L9>grt03{qaHCm zeRl?wB_H#QJB@L|yz90_de5f^eQKFi2NmIEn==Po$x#^PbauoKhv}KyKDvKg<~HTE z^9AQtoC$10o#dtTFnKCgL}`%gVI(x@aJSVpXy$!}vK%R#4MoV*B2a&`2V#!o<+iQ{ zrK^;Ka%w9U9@0~^U;eBVmce#ZI1{X_U8pNBh0qf+SQU<-pe-%Vyx=1J8yR>JJ_wRv zohIa%dXAlGL9QOvH>1UQy4A)&9<@gdNkS;zq1hx!-6^QtUo4dwq_?}MwfQ6ghu>KFuAdWjG_o7QFpJwxxQ6|E_70+-QA zJ7S-Nz&W?EV|E%2orQ+IS~gAnoCCVUJM&QsFU!%8Ko#R zuk3VVw}Foh z-S5k?M0b*71E?E?kRCKNoQ7VYDqTI`ZFMBLl(s;LR#tDa7~TrAi9u#*Ti6R;hqVZ- z_C`KM*6F*I-B9Iw&M9@9iw6bzu%!su0*)!!>R>}L9tfvTEPiH7yqA!Dm3R))@0@y9y~yHG{;~HSSP!us zic>a<160*>xazFUUD(|eF9x8>7un7WeH0c2o~q~IefZ}&@5A$)T?Thby*9Mu$(dl(MZXhWQ^p9N>)@GYQ=UZQEfjBCL0nja$E6q&GhTPAbe&mf>HT#uud(g(zY}w0ow3L&1 zY`!8;x)}AD&$GpSr(C>;w7^>Bwtju>iTpvQAB=SLh6g|>BzDISiUxqQb!2u|lXioL z;&Rj&1Po`F+b(c;1Uc+Z6yZWtkHNK?wiu);qQBr8PA0FsgiKOcS%`(*{WVtA-s|hN zzV|NF mHbB>-_c69d07pJSX6*!7Wh~tmc1r-yBrb(2WuhFM1d5P=JulAaVTj}em z1VOyHsbJI$*?F+cqkOb=m*!CV{0c8k+^6C=txrl#)Yrp3mzb718WTn+)_xOFn0h!p zXp{F)S324zj1(w(KV~6~0E zmUKn?8n(~I;gmiYBu)4Gv3-`JTW(J&>u_$1))r$(rN9xZ8^kDhyzspnM1hF~Va)<3 z6AoC(0hK5PRYcK3xAk_c6+^CxXagC{p*~WTqZ9mU*{veFH9j{H*!bn){4?|(VbwE{ zp7zW!>ef#)@eFcI^``?ACA=~3p_)O%u^TRJ<)=0ZO^|Y~!SZYqSu6u{2DWqHPi|`0?4g3+WTxYGf_HpA>?8(Ti_4xUb_YwuGme^qNi$~IYCw9 ztUAVy+6YveOx-|b#jdD@LKH;;N8H3}d3ls*_=wFM99qGs8XW7>zz(wNxZ+Y+5t3s} zB{1C}>8HTa3Iv@MvvE8yALw71chOMkG6*(HOS;21%8AM;1?E9(`&m}kE4ye{=&;i2 zoiHEBW}Woj?$Tazcts{+Yi)EWdy{fG61A$~Pi#^RU~w}OU^{SP{kC+g1cO=)|{`=)Z(hOmoAK5^}##{In3p9!PVKYSnkl+iO)ij zY}!pqgtI-@1Fkymc2LW+g$*a!x3IM(n5Z_`#Z^mzPOm{}f55%}?TdSWrdJ}DVtNH& zZoA`E?IPRYx+}L2&XV{|EW`R*CrDcY>vTITQbUM?h zb2>7AEpFnq*00TeUWP;)`R8=(tS z(H$lewCJxDkUF?7*|-V-!VU&gZK}Op4f+~_&Z_FmYMZAj)M9lmH;iEkI7n2Tj?hoYp-8>eSf`Pdy#m*pMU@R{qu7k$E2s!tR?QN z^V#Q|Hm7!n3ky|BAmz}xaWfpwtHw)ZBtu*$Q-_A}0$D3_xg_;D!0GaXIu7)P$X9A9A(r#esI0%KqM2?$ZdP0tFSL~S zXu>TS9F#YUoRi5$fmEb7ixyUAXIw36Ua99#NGi(1@Ut0185sl%O)NU+(-qX`6m#I; zDKUCHNL*%vz(o>z&WnWmyV*Tz9bOAxdw;z)$@fz~KhKYo-tpR^2PMZ>C#75xIUNMp z0edk4_?Gt&Lrqw&JKREvGBeIY8@)(@<>qKrUP3Qs*v))0W;iluYwU^feI| zy-RnKFmYVf%3%j8iP#%izdYgSKwlemh9AeSQlk*p7(S|nL*XnR0Y2pmXQU6fq^p-U zu!tgOFxIRnvvd1eaghhtAXb+&=@?gMTg$bAKD=qVS-7P%@o?UknHg=adV!YYR4`5+ zwnhwgYMkG50uCW{_;g<1YjZFh7PA7aZ4{au@1#Q!nRwH;MRU%oxhQC7+N399eyxTwtkwbx#(!uwq* zJWpQmdPRI!Cy?gaA-75vj(aMOJsRanx>v~^{}`V=xrvlVd^Yjk;+SvFQV1a1Qm;NH zb$LYK(g(c@3FzFMB%gIFYoy-PXbPkPCHi6%9akOAyaq?&wor^1VgXf-a^fh}9LDd0 zZO;B9g$H_OwqOuK(A`gtUuXoZ42~d}OX%Yet~F>Lb<~Kd$Hypdh6hDa(%Yt(I`1rP zkv;U(y01kZQ*jnfm)Yz&v=ROxdt=%c0-|!r!75~JgN^mtN@#U39c(Jxg-Zr5GYOw? zNQggzLse3LN)-gjGl+P|GTg|q4HN?%@d~@&?jdvI0r+7)(KbCd&*(qP$GjjC7)ny@&?}sxM$g7< zcx5W38G+`ZaRu^3i4gap{Lln;yxato+o&u_3}npS$l#a%&3_CR?bo5I~=KMN~ars zSFnolRLf1xWJU6_N;SdzitgnyYa&{#$3aDBC(309ptE~xe0@c1tK5@6xNlP<;IU=6 z&Y5PF2y~Nwc&+spLuz2b$^#X3Si$&p7?bU7`WSznWcj0|%w^KPqs_02T(1t-gg~$1zwdzG|Vs}+w zLv9$<(Q*{|tAJm87v86y2S4xUDV$v32c=XiM~n#&TR^QzSI(77ZoWYgQmm$8E#zg8 z>x=(l*!>0&I1B@83tMFMIbSWfasoi#HMX+x)fW}8brzs4fCP>{(`P!tzK#Xe-*0&? zCGAR;v5?0#)WL4R-mna-1M}uWu(Sx&CSH4ez1FYSeswL<&-wH7{5;QjN+X1pw4b@i z>0AW3;!P?ACpdDOZa5q)XNfj4mf2T&{Pabi!Gz?(`j0KBlctkictWJ{Ks7dyWs!SN zM1Rf!Pahoh*JW1bso^3Z8&ZeFjho3a2Lfuip!q95JmHHzl*_3}sCywb51P+qk1wxF zOreS_S(_;M_+ife1#I^e_qsoJ^ueVB*|UT*41sl;ijWo8P(mue(N6`}EJklq>TpX93Wi}~~rdk;%5 z*WL4--xs(hrAVrpTmF>8hD~?=^G{{dwNHr-M>3_h8I(_0n#Bz=Ns)8$K~1KvzdhXV zUZ!f0a2voIRiaKG6qU{rh8e~pJ{0YKfF#ztbm+@h!z6W3T7JD(M+ZjCX0&pBIgS02 zVFyhBYF=k&5XFHOzIs_BfZk}Nx^;D%h@R0Ybl<9`3@x0Hdne9#$tlPcM;Q^7(_6FN z{qtkQ9oj1yhQ;^iE%~g%ogIg)$d$^$o2dmA6^?I<%`wlr6yWw~6|7|;u>QFn;B}f< zSVJpaSxQqY86O3%?kRS6TAmqka5ZsM{!s*8i?7A1`gxz{cs4Ux-+uRL zLoFy=mg3haMiIu0l;^!3phP)*G(Nh@{KW6QR2El4)Zur(_$u21Yv!)l$tq}8fNs*+ zK2HuyM_r)DBY&iamlARXrmQ&z+RQv5L-9iO$rL)D7hmmVA8WZCW1@78a6qcAQq6Me z!?i&^g{`oSZ6^$f0l>xr#BUP^+Fe|j(L=h|)UO+M623X zxxE*I|C(oXMynXF#~j%K+Pitz^itP|$jf2zNAR?kXJ&Q%BU)j0vF7m?GNhrCL1U`k zE1?-NTOA1OI^3R?r@|@ewI|fSzQ(S7Dk>3ZmzHfC#i^}o!!jcpeZ8Q}P;@HWnb9_f zPc(8%?w4A|B**1dxnnO-SG#G<+_bZ1%u1s1lE2j;v0^|7L5cA;8i>}1hA3unC^06{ zMQJ9_QPcUqQr62AcDPL}kEqGt-;T*4%`p|}v0MbJ-+cMBYd=D2ba56>&Sp1)l*U{? za%=y5Pk=m~SA^<@*z0M`E34GJ$Cg@`80s3$JYce1ia2z7%Lxu40zR^rqe>RUy@WQX z@$M4q{fz_#*6*&`nK?&_^=U&+ie8*exxg;7Q`QnGe44T8VNRr%(o0FR{tc&2nYFCC zA$8sACS$Vs^B$)M`eFWjHEb&X*~gUuRkC%wr>k5FWEYOvkg4O%%GD@)Mqn-fJYACM z3oawCTi*d~X|gvB`}aJJ=moS1oziJj9<@d3digeyRkPFQ(+);PXPRdpA^{vN6p zP<#0dn}U6ZKs`!dts3)ME{#}NJx#E$cttCor6o8`(8A9U)9d2}gwfNEJ3+#fx;WC9Y?cM1@b26;~JV5;L%n@o;efjZ29&i{EE zV=c09>QO;s$=Tjm5STA85oW2!U)P}!^f8f=e=BAOEJT6#t%A-rEV*X|CtVU<9Z&6k zR5!8XjHnZiCkTUL)modIn^=3jHa8c6-+$hJ-p~7eoF4n&ugf*xbg`J>Ra4Q?Qx)E* zEYvOKH8-w4-)_BB*=qs>skc)tjcxLp>WaARGigfaEZyRUT-Z5ghYJU!BdfXpiR~wgO4{g41t;5phBl8WqI%7gL(akWMDw=Xt&C7(~ za^)^%ikDj2OcgYE!4OJh*>+5{7ER-(54VqROM|tCD8p4I2bQmOS=5hRbewZ+{&_>> zXbn-#hA%bt5PCz%4p1g+)7T5Iy}!N|$>-qbdA}dsh)d#_MBrUDLa!1?77kV$bGV-?0m&AFfLXhgR=6;`n6O}Y)P7a zw8d0rs&e$j!voWIlf&$PROwV(Sd}8%cJ7yz^~yKGr|zC{r4yuZzL4w!bamh&mMiDa ze2%wf=E^zyEHz2g;O|S?q&%&1>S#fVk69U~vOr79c3E)fZ2l&w5u@#8>ya$4t7oT+ zq00Y1$gls{Nl6DF^^-Vd!ywhuh>>Jc9cAqckCH&klu_znPw~+yu&jTPLN8|b!5~cf zY++ucA=yR?p(O-d@b;@922?in{x}rOwzCP>y2JWKo~&;tgAY{E&?2bn9VT`!Lnq1D z!d)o^HG!4>H5~Q**M+s}^;!h}^dZ)JW~D(V3#N7#PGKs*idc*ZX7^eSNL75R1;MUL zPVU4Zcb537>~4rC_EwxT5w_wg*K$%^oWQyIm?=T(@&tjU&9kP`qEOY|s-mDngZrl? zS*Yob*S(ZsFVmo#LxLELI90Z#^sFlA!U`wwHP{+!b%0E+EyoE* z--3qt0ifWr8?}~+%9+ZNL~jxqYA3x`#{p(p*T$mhP1k;kns^v0japq)agz-fx#%V0 zBHlw>3)1Jnc#Rl)S76pCo(V{1%H+XtghF@aICac#VYW~r;^fk4;z1k(+=ithn4XfE?}@)Fr!UZ>crFjexzu&QrBY=PQ6Jm525TPio+zy`FZox?bo zWu5D4A{Z9!tHSOsx1>3gU1U2S*M?E|iniv+GeGHV_1NWtToW;$N^+kzx@DgOfZi!; zx7hwjOg->P=n%5YZ~%6rGX;VRi#VM^a*-;nDL~>m)H$akgPwsRW9l};1UU(5-i+$X+&cp&xy-6)#Z~h|p_c~QS@AK#9`Tf-U;C<>qi7j!x?9h|j z2x|@_5K9^nYn_vw8v|say33ntn(SX%rIx#f*v_@}M65}#HDu`~pfFP?HaAwd48*wJ z{(o6BRe`cpG)FNI1E+yxu`c6naJ6lD?X$InMeMy_d+)W1IH!Kz_51uR@I22WTpK6U zI@@TSn23yp+L88ZD>WiK)shcqupac>J3ZX(_@Mu@rt8_9_!cweXjCOSZ}Iz+t#yt2 z5GJ0!XO3*IY#DLwt~;wnV!Ciiu*1B@Suj%j!)*@eHG}=D>089knh|I46AoTGK7da% zXC6V|a_fA($|3EqC#6{n5U zi(Q8CUq*R*f-$R#21aQI&%{_CU+mr-l)^O~+$Xq~xumDwGj5_%F*{l%V~ix`Xc(@R ztR7z~aw-V*aRaq2%6gSF-z-+;gIcy8+sP#ov#i%Atr_N;Rx=EgxEo8>r;%A!T^^4q zn{<0x@UDEV6+ZD*Z*17*wLZ1UnD%HzwdFasi6l>8v)3cn!q?_nc)!o{bTns#tju&u zPCsxqam1}IH6IaLSTKK?j?PRG^%(#GaJP@JLC>pMR>bOGIimud6`0kT5ThUD1}}Lg z;9XJw`w}TUY9>c8-aT?P9Z?J}__d)<97->>Y4W97UJzGD0=N6W1}wynm%Q*0w3TJ+ zeFoo;(tX}>RZ(AZEub5mpK&hIp@P}fC*Ebr=I8fNJ^uJ9j6UQDUm&6-MQsJg#7fNz zG~f%3eE}7mPqE?Z^Jru^AA+_}f{?8OqTiYkBf4v9Ud6xI;9PyCj~y*=Oe23SQ<;i@ z@wYk)-qi3E7&JQ4o2WhED&nZ`B?6Bcn1T33qWEMPl8h!XC2jgQ?Q2%>QLjaC=)A_d zqSS2(X$TTLQ%XSk;Xt>A^8ibGX~BAprN?`T-t8%)Y%wt-iY-D!!Ph66d-SMtNl4+2 zH*g`i-J3}$=S1_R#E?{-1`utSzXyP00z;^U@M=-#qDEKpHiFp?u`HXj5^9mp}b!e z?s(s#jbKv29D0s`0C;uv4Ex7o7;{S->Fx;mCOZkWo^#6lyI9J8_F@5aE)so0-nWn2 zM*y%VhLWzNu0llBDz#J4_HzN+SeDm!UKhpOHf~K=sFN06{U+U<2<4gE0ZI#~L{h=G zJanozt@6|Ruv042;lP~{RA2^aM>n>!g3D=DlAKisYk4F1*u|CZOzv$6`2kWraT_sP zWxKo$qSs0oMI#d$c}D^D9LA@VGIr30-khbSE?O!Oi*6ylF^?k9IS;fyKI!LBB~zN0_Z!>3fP^|SUf|`NH^8~`6;4ai{G2Cg-u0susi6X z^|jL*^&)IXh#wXqCPjqxW|?rWcgY{mAVYdGR;Z*Og7ysSuLAR~=SSf`W5S zxm2s%d<~$Ibi1D?27L$|-!-D0$V#LfyD{YgpaZ9?6X_=>IjX!(11IxIHGdVJ_U==4 zw$}Wt6{64Bnnv`#Ynk?}-6Qq^#+6b9K;;f1J1_LY>G&~f>8WK8{_ zNlMpawTxXs$6*-#oUo_LJTWDWE^~-GD3QM^7qh!oVQ6|Uf$-Mj&$Tk1f-GDpIp3s< z2RX{79Mf9ZLMps%AjkYxl>a$@i@$@ zZ5y*cgX?V@06GdsV&*N)39$JG?dvOtXZ7bMB|L;b@&402Zoy>2fc=AN)K=7k62%Npy-g zYSs~n0mcAmK$pLw5C^7%Z@VrM>|O%1N(LUW5BfI_fC`sG0J?ig((NMYh9N7s7hWbz zc=>8bCbaD|nsqt%0&os|qDau$Ceuf7`V@O5B~|L7!QP%{w&8HAZmWQDsUc570N?6^ zsM2*|W_N^3QynXTsfre>q9M5c*HGptfY!zK$wFGqo@s#Mrs*~U8Ak*A2S+ltcDQi= zRLTgBb8x%pUIj)reTi<5LtLzPg_Vt|{EyQIDTeBomp}>mUVo;eTGe?XTP$tO_feAyR#4a6 zc@Aa0iH5mSX_|bfT&zQ|bI~3nOyz;KE*D^mv!VlJwy8p@O!Zr2V?spv%B0Fr2eX}9 zp_j5F+~LeI7>aK+INR#Wj=&c0dOGg_O}5($azy)M#b|MEjZi+gQcwu&^!BHQm-+fL7!JIS>Chpk(fQ^05>eI>0J_yqQ zr3#&VQCJ0^8FqrPT>#A#`+?oSFOUhBlla-)CTDTwG>m=@=-eTe!h;rsD)Ozo3a}ZE zT*{U?pp$kO$LS6AbQ7_$N2XBUx>dgEDEaeFVNE4~K>*U-UX2xdECQ#QKjD*#ZAqmq zJDH1!rNi?xHx9@xIBnNRM#HX~VU-pc{)X=8<>FF)%vmP+IqN3H{yWI983CA6Jm(x; z%uy=S??Zp5F}}}9oC9vb=i;Clx+qC2%c?qspHuIr_QGr7wbojAvDYdrz)nonWA)GG zuf6{J3-1TNpXcZO{C?NF@SFyzP)OH25bT<_RI%8(xjtJe3KwsME}E|7Dy(dWfMC9u|O{Fy z1pGPmoag;kb95I@8gpo=$W%(|AzA{cv+PZK^tT$6P|hY|ao$}f)-zaUN9DK2d}u>h zqsXY~0q5?5Z6=pIt6a^|&Vb&C&f^ivR|TBs5xHFI3)qR(y?w~L^HI9?_r4{nJcT?o zsF$U^h^R?GHuUI?9T#NCs#{fhZ^Y;!M{O!m*9)?DCya|`5OK>gp3n&CiL;_vKyf`$ z(iQ*bKbctBV~--Z2zt&yN1LUgagf)p4$Qpv;@4|^?M>kQoS*0XJceUuM(9l8ggb>x z*s$7XuQd729(#or9+LzS6*<-kQhJ~(CyZ9%KzWIIUC;5r8}0m**u9@>G*t*3b(~LF zQ%b6G*RGy%njhL`U9ZIR^225^Mh8Hdb$@KFyQ#Upvb0iG78gfMp(Z0RU+1LcY8iwm zpY8O(@GBdy&9s-a#66tEf#EKmV!(4m=ULejZ3VnPC#rUdxMrUh3s?)U-N&WtE$4i% z@UdHVLn1G(qL`43TH1wZARNHCwIOK%m>X#+GH4DLs64@RH3))PB!q=Y)Y4$*o=WX> zM_B!@^48}9YELX7xbZuOQThE^Q=sNL5WrSE!q*Gqdn?^7Mkj5;m|MK;CSpp=FdUj^ z=dfwYQG_|VTzX%S$Gb? z%pmQ2?3!pFSiTJCg5Kd?;JFoq(iu-Xp6u%-q$@wc5sonY@dz#9{uh0%bvb$x4)ZCMWal^cdKapT1}e9h(MNv>7Bt@zT$@&NzZx{8^?3L2pX>*hJL z-gxEohg;Z?WN*c)YNHps`ohqHZx2*u$6@d3c};w##@H{PcUQHj?Y7W#%?x{k>zppm zqHij6IzuqUtaeAEz1xd*HJ~Iwc9lx%)Bx4@*=svx()BKV9KZe8M-zuDSoQC&ZDIFW zYosc$SO6D_V&qDeOLw=*n%qQ8$>clDwYo?6;$EA({Ry6Pp67WV?K-({ zN3WO4z}6~Y^}(Wc>c>@#vdZ45r~qy!n97!TlnPF3MqbvV&Q-0# zzHl_B*%Z#hJK(DL)AqN^6~~=2DT6@&^pG!)S>{#+o~ODO&IbERt<9AtlD+zEdqo!s ze-eAwP9Yw@-P;9Cp4Ls)FvUU=MB)dFsBEq)HFGdh^s`tjKIUepj={d-sEH2Dj!z&3 z%n8h{P*_3RXq6JjRMV&h9A@b&&o{~J1njkBU5MeWW})a>>>D1w_U`=t@Avt6PKH!h zdlcOda}yqd3d~%=VT4-5Q6&qE9ZfXjfED|;?T%BsXl?txbFk8s6^whHU_8sA^?D1z#=imOZUA#@_jBoKA~a^&(-`Aai%7qi8}M z5}8Uo+6jF}mMwI2Npt$!W%9c$(SfVOW?)GavW)t+UA zEKjL`V{=#KE9EmSFg8>IQ#k1~g`8K-`+G-CjV~_1Yv*#p@->?!mBb*t0In1JpgHA>7CyONt%y=Ms+RaL%S=5x zoH47o29$Oh+VQGKP?@305y;A>1Re9p+fhvjX029=L5?y(TqAOodzS!fVK1C2ozT~S zTqrd0q>C_a=OW43M|ji0{|->rkU!NUwrS6?g;4tHGbyu5Wil;*sMOkOUd)n(sSb5t zcD}4`Io%GE3YMB+m_JK@N96_Tu^F4hy*p)q?9BnKv^XaHD?c&%&=BKT9O>IMLeZiyH{<{VHF zdxX_#hM{KiPU*C!I+5AW%!Obk&1F>->^i>f^L8aQrfUnWpqHmB>qP80+{|jJrFQ@j z$QIe0r-nzMa>kAkO!;*cZM2wEh~%-Ad5dAI<>eyGusUxTqROqMJ#F(hKi_F}&%6Cv z!EI?vwPNF*{Hh2=^96$?U3aF^j2^S9caMhEQJds5JCET4GN~jb)RIf`T~*He9k*_h zU;!PDRN}=Fv~sqhMgAdb?ynbW>$w(^pN{r7SqLDxIv7`lk&~4~R096Crii+h*e=T0 z;Wd}n3ZZHzRM%u|dYoHR`zzFn+YU&-bZNenXq-1&_rHv%AYWv5#vHFijzgSBw_AgA#PmOEgsaNBD4D_=Y~`_Q#! z?W)8!y4_wmRImt3^h#Et$nG4RbADHG;fvgh-<#ari{0>HbhO0+ZsPS?zg|4w_4DA* z&-wj+{yccM{K@0J$FQ*m@opza75~aB_psbnrhC%0PXG!_n6yqE9L1pSj$F!-^=I1+ z!YL)%f-l4qt^l1#B(fZsqJHy?h3LW7`xb+4lb@HRj1C+bDmS@IdINrR8YLw zO`)YHTq+85onV(+)?LdULT}omPf1 zr9vlkLa(hbEsRbZ6ikk}NYU7Fsu3A%k(lEtqeAY-NAi zh3z^XaR`p7i4_!DzfOULB)c`CM_qv1oyU`xH8JbJ%Ow5d_@Ghz97Q5}ZNiEA(Q#AO z%v*Fy^BGnzvzr*i1`8{8Kh~?iQ2W)HVmwvPIX-cS8FQAYgF3xpD2E;6qI-12a0wSB zDOSEzE&;Fy-;idgFGH8*8#a8$lgSHAV09a6L^V%|P4s_`2COG-u0nO%VUgQ}#vh3H zROIMdxw>Cg1K`A`O$6aTaNlA%Su!78-O6}!J^&tZyu@~6rk(ag|=SNGhyiA;O~Krq|k96j+5^h_o>N|RKB zL%;i&b%E@wT%6>Fizxa}8ZJ5Yv|N@RnJ`(aj9hU+(LIAM2ADM+9Q4(`lTZWk`ADN; zm5<|&ddT=rQgb$BeEu2p|5)>Dp)bX$%lhCo)CVRs^Vbbomu3k?{73l_4l>Ei#@pJ{ zl?Pbbe>Q(I7Sv^-K1j@Dhw_=rj3=d23Iu&b;5yzxam7|64Q^IU&ndW?E(<6{lCd;B zsjA+$xn=ypm@YyvirEa-v*-es%MbXq`rZ|!31b^KS|v=NM80eTSt>u$`P5lSwTHu` zY%)(h{1S86a+3#suEeMO{I&l-TmQCfNscQCf~vIb9+}ni{|_@Fb7_&DUztnwr%cyl zRfhXs#5_P%0rMz7Cq1^WZOe=V6bdCsBVmf`XSyEx$9G=pSDEU6vIbDM(!IRG;}0fz zWiz*9(HrUOWUaiI>n%2oGXP(u6(7zsnby>dmbrNN+NIx_YHH~5oH^b=^U@btfl`_W z7TLl>J>>ip_+ba<`lX*L@8L|MmoTIa>b+h`O9aedUSi8Dy;I-yHZ-zIO)@X{-W1wh zeu4$Mz5OD!!tH3q#L?O{E1cdtCgaW?Fys^nAbV1DjOoc>)@oIKP+*;+-?$L$UCCD^ z&jhF9PyeIe*eF1IBJ|`6Z@*O4ZqXSK7r;H_z0mew-M6z2jzVnK*+#1#1iMNKTN8Sk z1S4gN;Y)470}y`45C8h= zt>}_adjMako_xatetqHJU*~h5U!VH>`~K(m=hvscZx^36VFl-Ldj9Z_*AQkeLX&>g zsjAylPkw}^9>I_r1>|t}Bni)ZYOASGp&{ezLJ?9kM(>$JG=a<}oj8gO-2*;{=bW$S zoTJrn_j7-Le?Fi3R5{s;Xq`B{@>CvNXE*r*x!hRkm-{kgNfZl)el^2wzZUbRy?(jy zSnO(|qyV1YU=pv??7D5ni7neb@F}UJVg-lgtf>+4Yzw463TUpw2 z|2$$?8)jPa^_jN4y<-n9?((0z=2}Cye?&$tO;*SKO@y@JJWWHgXc##I6Iy_G;c2j= zOhjSL#6Ga=P|yDT^{R}Bvx{Mm8RJatLWDdo!}fig)C)GD;a#Qo9J{{!!#f^+ZvFl1 z^ZmIWozJ1dOESTl9&GwP#^#7I=e{P&HO8|O#-<|_EY5w%(7x3fa%&xu1g%LM?JARTxHfC>K7bX$t!e(0>qhob ze5`teJF{vc^6G2HCI4B~LAe($db>(x8>XOm(?6@sLTM33|DQH!NNY2PLGo$#xvZXJ z19U7_gXwzOM8ULisa4^wKa2^)-krZghix|+)Z%{epmn8FLR}{0ow7_-i6*%Y9&~w% zvof_YF4mX3{htCctD0A4vfDD&hYfE7PsjwQ2l(-Y1N{EnTQgY>(=y>{jwC+7wcxHi z-VnqdUD{eU?;>4w#`VuMXznj3&r;48>WV-;`f_&jFue^BgUs=KwR)@~%JY9WPZY$ky0K;yNG_ z<)5;A%0X^a?uxnvdg^3J#61(KH&?XGFv7dg^^0{o4OMJ9dESF6vvUem%8c!UG^Bft zM3CMmhy$<43drITk!5yf*Jjkj zJ6A3Dj+9$d1=HNTDP(y4scbAZ70e#4RYZ=N+14MYP6G7fm6ruoCf>^Dg=!1kK6s@| zNfA8Vpc|W5-O$muev%II&flSci-H%M=QKH&Y2ra3qs4MGbnkts*AX*maB{GNPGj+b zhXOp>u>a>>{@N@}2V4l2E?!fQPPh{hY6{#9yE>`cnr+}~ez%`|jVom@!SEUfC(rkk z5bSSPSYUGL;fyK(x=W7_A(g5>)sjJRH|uxJZ*C9saR4dpc83A*TKpKCtRbJ;kF7PO z@*G5!6jm8xg=oE{wE1kbN@wx{ct{q#ZZ>9xA@B8_F@ZBsnrQO#sE$aUY5T4{<7D>H zW`6r~4;UmOK(#VuO~^q)dz%|(e?SHJj5~EPy!y)Kfqg^k`NG%9vKExlrzb=_W1E6w zQ{9g!e5jFQ7lxwiW?a(%Vzi(Dy9$lT4Em9?G$hr^Od|lLgO1ZMD(5=$Fp9JH#_bkD zLP^1KeNduDQs@&WkS-FvG)|lSwLuvnh;{n2FCYe-+F(vg&ilz%eBy-J@0y_NV(xyy zL_uvIZ;I0Ly_f1R4>_jftG+5Bn|O*PNiF!=>n7?}Js1OVe-#{^f zgIjpqpe{_66AUC;n=fnRpEpYErD#td3?e2;K~P64qY59NzFbXX9>_xc`}@}C-oJm> zkB2`W{`JM52ak7j2awC7n;zDG`N4nvIREA6`SpGO{{H;>uHWDHJ96KXGu}i~y^5%E zc0v@Mtx2FB0L5Z`fa5V;w)|%EKsFC{vYukWCcV}sXM!QrDT-iH+L~@)i>Nx!`Fhv~ ztv-j~x%Ynm{(OHv_s+2M;H)E4_LQ9Ztm6>}0>)@%sao^jQuv*8qD-m~%r!5$<%}8t zO;)}Sk_SDU8-Fg2klAJ#Q4ox(bF>Mx$w=A#U>v>8D7NT+mcQVK_^v}D*`q{BL8~45 z{715nbaXm7PDUkhX#{1D@Q8{<$ODTM)`vjti8Q+3HBKQWibpzpmXJ`xiSm|UShxG zYjhL8lL5Td}cC!R8H6KRcdD=3k0PVzay;q0fYUBtIY>zwaT_3`KamK#fE<8^h3aH(m0H*W0@_YmGZJM2gr;bv5)CLoHVeInA)?PmC< ztb9BIreEW#ErVylpqql|6;VP`)r5oR7L*+^9f|ytlc4an_JAizof2zmBV&iF<+>Wx z^BN-}Jca!--I$h0Rc;2Xfy*$Ah^tl`Tvq6w^i6AAo*#G$2nX3s{p4$jZl_OTUG6R* zLrtg2Q*Rf=;-CKnmXQlDy5OH7RGYT2|PvY;pdb>tW`>9K+ ztjnZJ56|8j&qa}pkjv_T18ihsVmp3}qXq|aWorpD4nPu<4V|kny$gSbhZl<9{THnS!Oil@FF-skH zU~mZ@`>JqH-XntZ!05wC5@q`gpo72nPUBts*E{I*@Pj#|4n877TS%qxvDr93cg}R& z?o|Q2bP1$Z2Uq&=U;%h-46^m!4iu6a3HoMSSCnuQ+}jm*0KXE%;KD}R_*Y*!HO^@} z3E&pu+BLUiD&MIZJgYHH6cs%WKK>+8N1-qrHjY4h1 z!AFrV825C}9O10l@|9yF+4Of6%WE6@-CYkFn%oIg9|BsueXoMfX}#Le!}Bfl^sQEK zL<08@R}(_F`ZZCzvoucc0@m zIJ_Lv$`a^XLW_EQ;AegM;!yiTRAt8>PF%qQt~!rY-bWPytx!46#BHpqXl3hd*Ywh9 zfVXgg@9+B0@6Xr4&#&{>kLO?a|psBY6U=Spvy?zqJj<~xy6%Z5m92M+FoY(u~5ICI^GD2W(X-i zQHAFiH@hrVa$?mv{35=-o-ePGtHQnY{rUdBpU?Nr4na6zZxE)Dg|L&Oa%Y2T%vuqs zuo$M$`JqxF8oH6%49j6xy{Mvx;GJj=kUhT0d8>btA_f-_lZ1vKlytWrtvb?}P1NRT zgT|lbDS7T3O2?U5rV4Fn+cF!Rm`VCRtDUXg&YHooswjLs9;Gy#OG0}=s*)I zDqM8G^t?OCv^fO^1v;MF=l{8(Q zH-pvBf+w$_o!6M}SOAm*7x45SDtc*2CC}f?jcRgMMU6uOWrfLF_F&hj3m^{bIUSt* z{#>0y71FjWa}Fc4#=qPTgngHYbi+r2cQ}A5iJZBA7)nHFWm&mrWNWL%imHVr;|#j| zW#q;yU+R2z@Qor&mDG37b_rW!`__&@qHYuWTyropg6HX4K1q~iW@#>>yeLm21`%kw z;99O1)2zr)X=>uowbOoBXBO@#gr#Y7a2VecS~;{ewUyZiZRiX>pR@f{w+@d4d=4Kr ztp?;D#-Y`}iJj3j-Z9F_B2_;p;!KMP z3XLZOn|j;RvSnr>k;7b;w5Pg!GFpc4Tk{)Bj{k>Aym6e&Sh`8L7K{qL5Sv zSJdzNMFT$sKOrDwu2KJV+gT8u?5a}W+4T``*c@|q z(6-=Cy?vU`=J0IfgBW*p2;;jvG;i>kQxq#cJfN&IL>)A|&ALe}iKrO-3>OJ2om*(u z5jon$2!8}N%a7`s6KIk)(b1A5OQda8Dbe>muR^z?k1SFXNQgX_hgSi-(IhS&ccOY%ev{IZc^RwCB9^oD&mJS542{rkPzuZu=yyg8OwmO*QPgnrOqK?yU@QOHmKp z)33L&%X2eFAkfY9YV)q!HV;YQMvK@=bcslwrG-PoKC5en($wI}inP+|bb94|Djl{) zDaAFf5h7Kc4nHyjlh(MJ-g&$|@(^ENUtiAwac}+pe7-;LU4La~kernc=^*5Fo80TE z7lk>|^quTXDZfLkF`P^t8*7k~JThR6JVpjX9*?9VQ|mUJ9kT?WEOA>X^pJ^bI?$JJ8`C9=|hO$GSc5b?Au1By#^5?^uX#} zgxtPDUN+D0S4G&G+8mteWczUWTiND^zOA3R@}Y91R0jw==kx;ePjyw!n95?wve2Q0 zuQF-bgeJsA9my5bHk)(9$S~<%btswb7ua+k$Gg3*xJ-_)gw12juqw5@>|noTc^#L* z0wCO~kq%gQ-f_~=bPFv+PeZ(#{f^i!+xg0$Dp&V0J!jGyVObu}spn{c@F!~dr5p5E zZPB|D>-2s?VAYb&F)ekcUwISRXgEwYl`7VoCGviGbCoo{dS|AxSy$4wxMMnD1{w{Q zR95?+mUc%K-q{nseF~l22rr^4NQ=G%kNCNc7#d6IXBdDS7ciYC;&&@?ag5{uR|l; z;Vldc9%nJ!jA`@6-?0DuNgK`*F0N>#!Zgba5&tK4Tt;>j{Z4!yQVkTHK<&)DEWHsc+AMhDiR;%(^m!0)R7^(M1SQ!LeKtPEG)A;(7R@1R zmMEf5!kGi^5Gs&xn-m!rFYN*8&scrhQ)24Z;XDVz8Pfx@YyVM$YxHoz!R+TCh zRRs3(#M0ulfU0-pRvaCc=761MrdXY^_C6Fc^xe9m7aevjtyNze^4OQXP2tDXzc$ay zgpyGDDe!9EURM>cw?dqB87z6V&&53$`;4elI9%XAw|?F4=NEo{@n2u(=W~8Md^#z` zhyBdk13)~i|I-itmmfcV-~0D>{r&6y`rO~2J}k01_;_uIM%W&oL5e6G+083{KHxrU ztaVv$`US14*K4~&V6dI(0obfuP~|44ALvVUx*T%Ok8{4BLoNO2|7{uUj8cZbr$jYL z0$$^*=u}P`M`?>8Zkj{&3YPC5&eQ~vuk-{ zb!ZKQ<}PC{IuBWicax}@fkLlt&^11sY~;*jr&{hXvtq1Hl6^$9vW?1w9>b|StyyOL zI9YTw5GO4ph|7Y8Edzc${CZ9c^xxm*>T%p7)6J4hZ&0cC2u%R6dM;5$Qh8@vMUfSD zAg5@`yydYZDa!!Qz4i)=u7$6mrC=;NIBO>iR5!5I@{9@+Piz&Y69|{LlQfWq&$_U| z!awlGUa#jY*m&@J)>*&ik?c&)mS(@?HUH%{^ip291e6ef-^x|_stm=1pYC(>4=1jO zod)jqoQ-<5Q?kEHi+N6Rw6nRE9g z>EZ6MSEHbpe-2UErgP020a!C8gZC6jW%Zkuv|H4ZoDEOT=`{&Yl|!&fYrCp%Ywufm zBrzxi22!(1AkjbSA=3-+h@$&8444dO9{`yQ_Fc{L8-Aykdng$J-Yh6G3f}KH9yP4+ zoZjdF-=DhLL)BwIk&iG9Ej;#)pLSv%HDjFjn0oTwNsyS`96t$Y9c81uB8I7QnZ#38 zKxAgcf~MJ#=xsu2PFE4u*O!ShPInZvFS1&BG1AV2m3yxICQ-3N62qVLHA4>tZ|bR~ zK`yAdAhL@`HdoABmfkh3u&)d6{eRnFJtPYuMVct|%1Irz`luHZ9`gI}y?9cAC=&OF zz8O8rgIL-onmz19YaZIJ+_(}>55d|6Yq?TN5ccCXRPs`#3HoinTdE7ATUYrGK1T9|S@-hE!t9XeFR0MTrdqumT`)YUmhub#YcICBHBOMaE;F#1*- zCRfKL2^+P@Q`y)}?t9uzne!9WbIs6qat0i1wukXS$CcaZDb`tRJwBtgP2*9~MG6gIm%z*iSND7A+aEGnDSM<~>-lv%8M zC3oCr?^48QgTH$nPBRfW_~Md6);(uQMyn+GJNvsqngzoLkr6sk;>g0lnu3d3T8` zE!u)7**LwNt}HLi7uBYoD%W;4`Xo5Z|H*w0aF4MSs(nt94aE#G^P%YU+V36Yhdwfc zUDegskrXX^C&SwyjaN$MS~N9-0H~>DS7?6X2_!zit@{1D{>Sgn&vSl$oqv7t>+AgN z`Y-iPR}OYY;ojn@pNBtx@_+g9d>8)n>+|>b{q_C%{?tVTnhI3*MOA4>32BFT<=O1p zQAJceg;S6a)Wc!l= zv|5}yBP5bAEfnKe5jRT94w+t&MM<$K`SCUEnlX`9#-uxhzAgY zdx&#*$V+_s_02*ZUe*|W0`8xg)`j`YcyshUG9Tq)y0kGv;C)FeKrgkNbS;Lna`5(dIf#s*@7bF z7?n2qJ38865lJu^+u>nBaS!}f%?0nkq#M#RbG|GXW#ZD7ZZ z_sbj=F%#n5$KyEsVyEz1e3t8`*HVn`Sr2gO0;K#4yD5ZIbDM)0cTtR@Q#64g4f9n} zMfr<0txNZjlq*vt^fs^*OY^RbqsSZ01I#Mj1+DFUk%I??_!CHZvSAjVhx|Mb*dyYY zZc$~W4Iqbx#q_nlF}HVtd_Gp@f$Q27=3#h$Q~QFQu0hReYE)jylG4MWNR&ZiLS`1HY1db2ZfI5ot-xF=t*3_x7y`6)NQh>iCClYeVw@_vu)6MD^(OV7gM(g~dn{O?08E z-wkek_~^5|)IVeb+loMKfnBM{cAu)_j9rmJtE;-@ty!GfJjN?Kx~f;nUeJfHoIban zi4onNGG`xp5m)j_sfU~Ya6E((YgS$0@!B+Gm~}*Ju1Jb3bolzQv@I`MG)&E_P{_VR zU8GY5@1GLmYT=F6g*sRY*OONQuY5EDu>8{H-?#q$`}@ED=8waFJ+kQ+@51-hN^x?6x}Lqi%t3uh+X)rW=d?DWZ;qEt zGCwElqk7lunJzRPjv~sNYu&Yn=R608_tw32>)uWz#%?{-#-`O0Cv5sReGA=aWd+C&(1e{oUVByt};?ji>$iN3=<=5 z!uip{4wC{;U5&7vIry-yS%y`0a#NJ=s3BxVFoAm_*yF3o9R4}_58;QaPwwgd5xrG| zQU=$esSb|LehqQo#%-8PPSq}>O)QQ*|Cu*uP5xFl4)2LYGlt1k_4K}v4V;v3G?^7q zJS?8`<7x8b_xJt%>CF^Pgs-(-kw<`c+lNTLKa~=+gvxa3o_>eVhvh&ks;|OEm~Y#a zI`rCRfewy9go<4c)!#50qVJIQNXeP)ZK<)d9>QXXc#oxLeVN)9MT*8^c54X6QwO1gyU2WLY7tR(R46GyI}8R=63Sf{itE zMfW03Dl?IoQWmXpDm6{+gzIZ+H3mtaUMUgKEabvF4jTT_WkQ|#A0A?qh9K&>2@=V~ z<1~jZqkp6t<1;MsNMg_R$Za+oB*E2Y0BfPhI*@(-Dg82YO}R$K+QofY(OOZF(5YcE zgtA38P96O)gDnY_Fe?gRv>3#aa3BdjJ4R2 zWNg`Lv8&~MJk+{lt=cmfrwvI0iRDmdU%wW!2Z#x#h=K52p|DnOxR3o`I+!>@!L9noY1ms1zk zpC+EebB^}z0r0u?x%b|ogGCUXb(C#)f)%-zWtB-VbLh_Sa+c$rF>ewxBtFm)_pC1} zVEVuyL9+Q<-@Q5h#NuPMF|Eo%o1GEqNKaHW26R|Z7_3ztstDf7&QqoWl99!e4=2q~ zN+tFQpCsUr`&e~3I?`V~F<&t|4O8XmQl_Xr!kC^vAoO;*OkYId)Ga*h{GgYJhfM?} zEvK9{GXPc=jPIilK}=NwF*hJ94#yfH17pE&%rsvzE0piaC_$J9cgCCOi#F0%I^zwb z^Xfl!r!lqdwyH-VrKLqv>D;D}(MS5cZH`gqGip*oIK=btiwD5>y`Ot0+a&>3SniLF46_sF>q{f55U@?vci-xD zmM+vdY`($j2#p7YRP4k9A8WrzHc6rR+ zpD?kA-TBLVLXeaxcDmbiYGjJvlburrfT^Nc^zpj*wE>wxosE!V`EcNdth8M9@dtosj%7$_pWWJdGSq)OJdzMfSE^qmJ{ ze2}jekeAZ%!b0x$0*{Ar<&d0(=gmL0%<69rqzrYZ+IFuyG>x6iJQfqiL(I`5&gLnA zuBy^P4VkD|;7}+s^EC4t&VQ$9I7Bvgi9A?xEf(8Wt-(N^miX{Ec%d$zZO(+gU$A~g z{vU>Bh0GGl+G1G0&P3M)x@zVepYL{>Gjk=n6(i*Z(uq;QU=6(z72U>4 zg!qBehDBkiEU2Tkpz;S6*OzzKUCTm+8!Kws8f-Wuq3t^kW%2*~|N8%ZSdSyi0B)YR z;Jmu#+JT~4H~19D>pZlSU@Xcmq4eEv`Bh|+z2{6H_SmPnS@r=sr@UN1fo245-2xA8 z6?OhoJ<3M5$v3-&&7JO52`@1uD+Rf5rhHysrtM50~tuqG+IzG>?R9~4;uvLctR zul3XK8Y4MX+;$L9-5#%kq3QKFxM}Rh6oKEV`tilTe(+yk&)0Ll4tu?%M;3p?H|z#{ zZuJqazrO1N*C%vcxIphfDbL1LxrSI()hkZRVMx`wYE3aD;5!clP{eZVCD8wXx*NE ztF<{~k{m|fEV-}t+x3b_-%tH_rs;dO{I8LGUSaNs=eexWSTSm+PaR2JkRst|p%S1;T5#r0NU;35#Pb)&m`Ls^myljTA04iHhEw zdfI+g6a_T19=I?!U2bofkh`5;Gb{x#nuAHQRdskC^6Tq7=YaTp?&ovAZ+!rIP?lJT zrA8*zI$S$BuU)JjY$}<}ZkJk8qfVJL3v>U)ps%4$-*T0$qozaaZspa7m*b*vo& z%jj}F-OtKoqn>rN&3sgL%t}jM>!7-~$a5yPIj#XaY5GmkB^lSc*Xf+`R%SM?HtL4m z@R1kToKefIiPQpIN*OkCkSSie1vwY>tcJelGl43e?BBWc)>_5jj|CyJzMejYfS*tO zzBj_`^hr}O^7>32aSVN^b;%n&>8P7fy3;I&VbszmzI5x+8|exYBwO~EhcM;kC6PVTb; ziO_k7=Nypt;`?epQY8Xr@%1cDG`bX>vRF!N=M3O82+1t4vB99v0Xu{E%%Pi>EGs?c zSs!lKz~kTze&h*Vn~UfGvp`J0!C8x9V#I+;J5Ee8+~EEwWR^InRUB0RK#B?{mALQM z1qYdUWs|TzEKyc)>Qwk@9mKv>Ul?B{r#Q6=OS#uHmD&rp7MTek4@ux75j?4+rbH)E zl~Ad1=_>)jvqnxR(;?`*xp@bm+&?2{7ye*q>$&&dbio0<6CW#~(}AnKHn{4272--Z z%pJ8?W~5gMq(r$&Juc;+&1 z?F#_#rjD&C5fioW8v!%qTjjjC(wuXx2KbejT38-h6J7=S@%5O(Z%H@xw@sD7-gYky zJnSQScszsgc&8WW-f4p!)b{W@$uIhiTNR&kNKk6K&4C>BZOfFYeMC-NiZICn8=dYT zJvOY1kWNR|>0`sHY#-77OW4y%-0T{;wc%Z&(!zpw2;8hP^04OTt)~Jk_K5qw#lS=y z6qVyhL!Ozu0iZP^txL7}{2%VgV4YN?nW=ArVsiRh_q<#@aLwmhpRlNT_@h0M#L>@< zE&Fj>-uTnrEd;((-Rr%`)SD!iJ&=Dh#-GNl2?*fTUyNrJYyX%3_y2L}Jr3PE*G$@d zJ+X$XWx7g}-J9l%ymcBA17&8@;tc!K%%xN;ME6L6?0CHF^&Nf(t9Q*+8gTDYtEEwO z!<)eA6?gFKCndn&TTCW;@6iT?Uioy|@bWg=V{@qJnov1JAFbUVrf79>S?Jx7AT-V6 zn$;4L)iEozZ#jgzs86N+9mN~FAP4m7s)d%ZXz84VVul2?JkjN~s?yXP-rW>qAHTKO zOTKwjv^>Ilc{rn|`#$qer>7jQ`N4r+)(9-M7ULg z@Dp8Q#Z~iQ_@-aPkHeo|&(9zH>+3x1S6o-@&GqIb^84cVz2Cp@ukZSO@As`wp)zCR z{lj|9aBI%lx@DQy=Q;yduk|3J_onyCSoQGqpXTLH-QVB$er{~zAl=9}?b~G;|AjIz zBYa~+k1o3^l!q{Q+~E<8uMvd_!bf{y_U)Y#jg`PgsX{%kMz_Mvog2wu$X(3>WbmNO zmmP%|${T(iop${%gm89&G-M9y7sf+7aGhMhHvtzEf~qsq3; zKe%s4pKwnfcIY)Jdmg7QygQJ=gfJ@ruMPSeU#*85o;mt6LMtIKi z^_=Iyz4-mPzdv1*i~b&+JvkX8d0l@Lyhj=Pnu$jk zAvhwx!+I&2Q6cKV>8c#hf*jJhKN#3W?TS6uFhC9HUgpT4tr~4{^)-w-JV5EInzcf4 zn(Xfouo6WVi@UgOVIY|hm)I4PIl&;V038kqXlXzMgE6;GskTLGH(R3Ptp=S4&9*VS zi!5vW)lrFuI8U!r=I7pzZ}+m~+fRvk%&2Sz;29#?7*piwNC|6(jY7s5`cB7}%P!#g ztkJMYa`eSU+6z!F%wbiO5>Ua)d@F1W{&64SQZcB}#U$%m&&_4911pCkPkE>e;Wy>I z>sABZkm@VOJU#>tc!qt74)9j3x9mvIj=Jl^e~bS2a~+pzY1m-7prq*@KRx%Ri8j#U z8{UWbIso{&_4({}`93x8AQTYa>v$i}JB(Y$?iTSt0mnNl_s0wgO!Ya8It-Rr_PAna zIE*LC!C;%b;&UJ}v`$sJGua$xnEnPogL*@2thgrd{FIfKR}=OS*G=!)w6g~4-1amI zrk{NtU5+v9&U6niD(p${g2}N>DeGJ1QV99 zM%7oNwM^-Aqv~bIrs**7h@3SHc^PwkG}+OEgV=Oi4a+sj)hPy)harY&vcAZtDmN)W zyJXg;iD5}qe=yU8emBZ)BJuKs*`YURukuU2g2cE>p=Fbvv~7k7W~)UKLl&>ZTCeZE zvv`IKk#33B+|mp~tVx{)Y=E*|X4b~~uH00Awry$1{_a%XGO?6aiAa$;3%MCYdf4U< z4$1XgHRAMQGjtl8^6U~UdI1ab>`WhvBNcM?&1i(yk0reC)%L#RF0KE4ONDFW+#^od< zP;vWc0}_byjONl#Mzf#5)~EFRE#ttcvLEQ&)wfC`(YxZ-MV2x`gxi(0laVM{nDbcC z?~f>`Ni7*v8azsMbTePkphaf2!LSF9i}`sIQ0hJfF+o zpZoXs=hyfB{lUjUevS{*>qAtZu0-S{pf+3`XrLn^(ZEKpL=GK~OATNextdi38qSpPq%_rzGt(anUz= z&KIg{E0<(lubeGsg@|FYc&*sl=A}I9xF}_*?JW`B*Isv6kX|dP)8CPj?ie`CIo)2`C}Z?$ zYpo>%<^FaxxFTID?Voy`DM&I)C$CzMq5g;x5puXJ(u9 zubzW*@Q?sL7oR@p;q_+&&?B!9>CEvOXcNdBW$aMu->>aw`|>&FAbpgb96Y%XeWtnX zQ^q{!o=N(?XCkIjjP`tT2=A401?d$w30|wq#FufqD$;LP!#{~dyCku+AHZ{B*t9=H z8qr+oCZkR zS{|NXJNgoYwKP>b1fGnFTl)s{4l@OsPoG8Z3>TL3CjOP%F7^gEu-9Rr)NL+`&LG9z z20uIKb_ud_y<7JFSAXpgC*cd`JNE+}oRuZq1_J;D?@JGq$su*ynetZ{d(X1RN! z$_b2FRcU7R3kmIQ*}O+#%3{MX{*zgqm78{Wj8~W}Fj-zq>oS?zz3x)Lz#xgNb>MX= z(j!^Hp&wURNzhy|v}M%4O+87rt-INGYAbf}u#ZK1q!f${Y?pZo(^Rb9s&5FpmPODc z_wHbv=qAM-Bg~SQN61?Pq}wLU8S)}gY#WvrBbLX~>$!^bm~E1KhZtc2^9rBz9;CF~ zjG70Ea^MINt%kQvM(3%&@ELplt(Epc?-SGrMPZzyf2^Ti^1Eqn5*gM#jdKrKrnx=y zSDs?PJZS@C=41>ivkF#AV!y~on=y48`@L^Bx*>jauAD%O16E9YW!raM!&v|M}lf|klHIFkhrG;{pkXo{kl%pjQGphq; zyTW7a?oyePmx3q9di5tgUOD0kr$Q8nhyEQmmT_W0d|>O3waJ0*;>vg&_C30U#qDQpNz5}2(A%f(}Lp)#n`SpD6 z^Xt2QecxZ-_k+5Hs|qAf*N6@;uIL5*+N0q195>i%^qlh?o|6^R{M`E7&-dqkJ~@fW zgEut%6iP>9*`i`ck~Mf$q_h*8kZ8Cz+J@IbpA>5!f(5F?HtfNfVcL(%00li+AGlWe zUA5-@eo_vdbw2R2Q+?)uSE9wDrp2clEB>Gy9dW(Bo57+78G-WT=n)lcyb5}<2bo|N zPw@1{h7qA-O+;^Lv^JoYnXpY^I3eMjc(ld>fKxcn`SEogvWU;E@9)p&)79r(HS-R(Mvvud(UBc! zjTy1BldYA-Ty7*JkLoc^W~Cv`CIYO-^_!EfBH9a(rS)iZ&h5c+^>K-4=nOkOp|8 zLye6==Nwsf7P|lW#~>s;edI{DOo$a~!DaWOz7C$Q%8}on`~BHE4Y1;se<*0?tZs4Z zT48MSvgo7J#!xz_XtaS6rmL~uRhvpw{iUkC0qbG_r~ZgM_st@zy&V^(>s9r~ht^{T z2g%GrT4jlFLkax_KY0z+dJa9bz_i(UV+94U1Wot~HjyjI8tR$?|+CxgT@v z*WiY$WI#JuU)nj|T{rA1woBSxSn_aYy%{H;JMpa>y2duUi0dzh{#y3|3mlHVQRAn0 zfj~ZPowfEZUqE%oWMF7!bySD}Lnnn7OUt@Lf{BYLw2ZWzqC)+-NpO^&BYU>UDT2Ws z-`04-f@J!P%BVb6P7F`dae;qEKnv$1=|sCEGdh+@kwko4M0>|se{CphLe328;jSIG z1jO|H$g}RcNLCB9tWgKH!CSa0Zw0Z_;h%DMJDvM^IAj)lgTTK7K?lUpikBDLZO+@S?KWi;`G=LfXgo>=5$cI z_iDH6F9fUZv8SAf^e?fuTqg^+4_MU7xzdgic$MMltt>6$1kX8zL|j)FGtH{m~*&t;hL^$%dcPGq^ArzwaSPo+e&9t+U9T$^@SHk4 zJm)zCaI5b3y@gL7y{a>Uy0?>3G6pb}^x%Hfmxo{Og=k?bpWt@Iv9gM{VPDbY9^Kyl^LF{Njx%3S#1y7{9vl5Su%ie`cO?- zA59EZZdP8HjD2FQqcD>7=Bx63HK5&+|Nobql}0Kc7!| zd8aepHLZyarg9OzXZo9WGel*c)*q`b0qeF2D!zTvhS@AZ;v`U(1`J%Y*Am6F34w8E z8oH9dOBKyL{c=+}&}_^r7Tw8jG|_A^6BjHPqYt+=;wnRthLa0d3KiXPWrPv*<$p~^ z$gh~}Yt1CBIM(b=xc=epV*+@{p76j@;}m<0wvHmhu8H(-4~)`WD-q9AdHy=%AGES2P80>gWv z+98nkU|3Nmv4(`_U9744KYPDC-9TsiR`J${#nS$ZroZlm7gHadCgDS3DeFfnOr-M< z+;pF(b`axr7-NEf5BLzpkEi$?-12X-$FW;nrk^y$tpg{C*!6n|Qfg$w?1BnT z-+d#Sz-SHBiONZZF(DjnA=C^DSSY{ir;&N;Q+ld%oF8o^Zr|l8HGxG`7Hrt{Y_z^Y zAtXOu@7orK?*|3KyLb}_AsT6EIU^w6hA(qSdvHDQ=;w<1%{(?+P{Rd?Nm%ZR zO>CFd>aPh6f8M_$v>196rP;+Zs!hzUBAM|mEd_2n_ZPM7zB+VT_zWu`Nx`9{Cwmlj zr`@j7x`E+mhtW+G?jUnU756*sO9QBXk~J z;2>?jQp$psXAevFTFVURVgiXTX^Ib zA8BuIYM7Aqz?eEn^XLKURu{IkeE~g)0i!LeE8rH5qCLT)Dn?X+*2#e$t+?cXWxW=W zQXrMqbX8@f%gN+*FU&kD9iHZ4{pKwpxX_7XQe?%fIOJAsjk6TZ z$ZX#@K!_WX=Y)?dZ5gz;z-KnlFkQ`}5Ei0s!Vd-;ymw%*?|i9R+FIg2cz#qQ7^6zwiC^H~;(Z z&yT}@{Ww3L^Yb}RzoIQZFc+0p>OR2N7w^~e*L{9}*RSu-@80UZPmyDhd`jRw<;8}? zQ+jRqoO3ih#pmAJTgiFN?^CFAPTkDxz(s^&F+(GdCXy~heWtKuQ43S+urMm;*$&5u zdLu1ab$Q^8kS&twEK?xZD{A54&_LxJK&ObR{*OGXwhs;D=@E8nu+pPo=~bmB0Pa3( zCTtlcVMTPk9$Hc1aOh>TC)TTRdqYtiq$V>I8*rPO1jCFn)VuDVx24Q?EhS*Krl2l+ zI1O}WuAGw$Tph(4UYeZd&2p|b|3nl10dQQ5R7##W9U{>uSu38SUbDpoGSJi)g z-_PfxRdSP__9$1>T~JZ=9kr$tIOml!1f1s`@f`lH05KU;?oQ@!Bt|hLN|rJ=4(veU zf7a=t`^6i&kd`%tIu>6MF0;Tv_C+3o$P25~hT@quNb+3W=I^YN zF$eXW-clBy!sk=hx^{XD$W~^C2x8OBe8XAMoy;H61mHBor0ufZ^es1dX-kDb^1O7z z@C0*tjH2Cc5>5gDsB{C0?M6kGF* zLzU)Ld4WH1OZ80J5ou)k-Mdwbx~NY-Iql3_8*ioH+nb4 z^*J8c%_~D<1(0;KGfOxV`&k@`QHEepqDu~(1z<9O|A^VBq$AB0th?DZn(41n#&A41 z3H#XyWdsH5r+jJf6CiOS^-7lK|}?l(5GZ>Ct3 z=1coP=7?E5OL~}_VMVl?T|@1VY*86z#>oj?4^QX%l-K$tRx;8L}!HgV*)4{Pp#~h*8MXG*b5GU=hqCyps)S zDy9A78krf-v{lQtNKj*@RE9*A0D>U)ePs+C9+lB1bsVB_ig@B){0lSb6>ffX3dwR53fHFOA0`=zf(jrv zkzE9Op-?ZxF)}IzkM-OxPL`8j7V@Bl?5&;%F2-Kw!M<4s%SEx7$Vs}PG`VZ=H_9pd zYrN7G>qLBonZQPiQ}84!Iu86n+m6U~hs`@iB{h#7sqYq8)fHzBd2`Mha)9j3kS6M? zZoA_UXC{|K30c!*L9jT!hjtgA!r$NbIrp!x^Y5?o2)y7%JVn*D<%GA;q0KK*x0E=UuJGUvm} z%=f4(YCD^B(nV&dI#hZ=VAi_Q6(?*NTD9*T% z6A*f?(C=nXxyQDzF>VHLZ6$ zMr2oKmoi$!AL79p%P&)~UeHxO)uONU`LOY;x+eR?MU@m>C`Wd2>PiOVGs4Gm=J0D=NPHHA!@XV$_ubc&_sKRc;gqR03{}0hb%PGUF=i4GGB1a)GTaD*F>XYzPE*zWLVn67+W#k&9fdX zf7g!Gc8&cQV=?}5`<*Omd{Ze|I#9#vY1xG5Bq_cooc`yb2ia;WWDDEdCNhe-5fz$P zDkLH4hGz;$W>sPj`z5~wHxst2LcV$WW;ahC?YVUVefDbEj9p0SrBK6an6XwgIPAXDXn>VymXx*Rc3bf+Eu?()(qE87opA28|+t9fO{+#|T<*l~v$ z%N~}??8O(Jt^4cCGLeqv@te%@8r=2g9@Zh-!Vs+U9RD0Vg?nlTk3+h@*B$SbAPJUB zmYF?LLY-%C2iARGC-uPRvi6M+;C+PaJkFYOVUazx1R|>xoEi^|**={DHOI^q`dp;$ z#Ua=GzXzC2XJ8^At7gA85_7z5+0FpiCx~kI*PagYW~&MDu$~L1D;qDdGGkiFfq-o3 zN4<+Ci+6eN^v>?&ex|dL@&U=&$>*rhqnOWTIxblnO2&%ei_8GkP`Xr(?bQEwl8jAy zLOuJHM~G6L`Ruu>*&R_t*F5`_}ix)j`Fm=fO&{ z-`WA#Y37`#s*A4$JlWIanaN;3>zGRwgANV9$+J=y*Pe7fI iuQ_|9G_J7tBT?DU z4l0bVIk7n%nR0$V3mI0d#H^hqBSy!T1k z>ekBKV1OxZjSp+78Hjr|{yDldpr8?;RCLQ4ApiAWj&bOe1dd2figz{&WB9@weK2Wm ziad1K^sp+R5tlhz>Ur)>y1Xy381hrBX{;g(Rreg1jVc`IMA-t$U2JMCv<2nJ+4xk|nr`(0;AyQI4{h_(`J$(ty=89A zox^SY%G=3yxgOWfhI3B$R6^&YfXaIeu)v#18tf9cA}PNbMc=KRr3%2kezY2#ENrG) zt{lV=UVklUNob{XGDMwm*My)ty6%~Oa($~$hK;grbis_8^dCtg(wnzj6E1Ff4|`Q4 z6ap`ZkKY?H*-#SevH!BqhM(&!+!nSl%Cnwx4*9t~SAq3Q`>Fr3=(SXzU)d;%{W6p5 zW@qaACXnLp@*m|rpi1X`t?FxS6Y1fGWJrQm?7pQ3F1pUKAXqJ=xL*jO;l=4rS@Z+? zxmo<~a)FJ((XMH81~i+=GY(Ghb}SQ__el1fQe9Q*JBk#SFSr0U*67A7_Q?!&$Ft%I z_sb_^l{GoDXk@{v?g$5&_>Ig-<--w89dG! z+q`hHuniJYGzGM|X5Kk^L?IT*JBHGKBdy~xJy$Y|WhQY=+3fVn(6xJxg@+LXRb_dG z0ba}Ek-$SPuBot=X%_ecI09r%3F_Ud?W$8{kBf2xwJermb(RA4#TuZYIEnxxl$8A>w z$p7pA=l{5CrXtN2rP6vlRbc|Xeg}7E2EwymDxl~s^0pnj{UbP>vek^=K~WXr?R7f2)@lVqC(pbfgbvM@PJ-R)lJu{iMZz+ z)aa9Ae=*~?L#s4`%AmARn#)24ZYK!#G3v&zNnv7BTG7?RlcEwvNkkB?i6+e%md4tS zoO=(UUDmAo1fRxJqN^~K{<2aZt)o5$SB0Eh%HMrxh_)mW9LeK@`VH8yaGOmMsw~`<50b zo(=0ZcMvZYN&;SDY^jNky<1w}Hz;&vEdz;({kr#_exKNS1*u-`fd>@wVa}kU4c1Fm z1EKDo=)v_LT813o6Eo%yEDQFIY;d(}B1C6fR_edKg`8?2qd8FS%hrj1<_y0W*+$5l zGiG3@pb!kb@XQ?3_VqkJACmmsdvASzblh+`u#>Z1899GpN)OGtH{x5Zary(M(mR$| zIn^9%DWhPvBrNoy&mM6_>!=BiI7h>gK30WjY>$~QO)Kn5x5+=e`V!&pKKlB=!z7qM zIi3=!&L%2hACtfeiG;Ajtp@`4mhJX}v4v!spRCxwxq^CrQL09XQ4Pbg=5>h5ia|}{ zWtk3DpXzWk|o*CU!uiG|H)JI}2e(~Zr?i7C){Sj>@mJ8+Sw@Z@5PLw_|n zd1+}EcD1l586%4fu!ocxpwMD%b##@=g}OXw-Gjs<~$hH)RB%!tD#3Y@g?#n ztp=L4*(uDAc*mpE7cswBF2)Z?V&haCwwdgrtvUAn2ZWQ*-J(D4G08N9iy1-tv7)Cq zxPmK_bj@A=utRY13cIqU2VK71EX1%6a%H}u#5m=!H~Ql4?t)`QK^`*NZN)~0S1_!^ zJsEb<&CYes!lI^iQ;!Xdw>468Cug{wh%-x)!z!DdoZy^AoUrnK+~#?=VJw8jKieK} z;jxA`2F6N2ub47yxE(NPo@XY4Pu2AVz{IC|WU;xNlrIMXMzq}v`zSvYe584L^}bK&Oi4aSJgj#JdJS+L}G~WABb1VF*}o&~bsh{45A* zpF)f6mQbDrLS42UW|-EuIoaP(zoSX%=5_!*YSSK-d4z)J8Jw-j0X7(mc_foqE zB?Wg^eGD!%Y4az=q)bp+vp^AEr#r#Dr`#G&I?F<(vdnjYd_gFf? zub@q(BSS?~#;%Ea$I=p~0KA(5tBQFKH`A;JSH9dg=*WrXqxr;zgwy&EwMudcV2>Yc zSfO?iFE4NlpWpXCzw77o`TF9&p7Y~5&%vqGCIEPEOn}6XbG{D#`tkhu`TX^}{{H^_ z`h9=j&-ZuPSU#u*EYxwSi9NPDee45zyI~!>c@BD}l!e|cY|iiSy^bN2Gh3Z9cmC9& zoh!YF+Jcq>9-oV?qh=?;u)yOg^J1hJP)Ef2w`PPfyB#}#tEI-G!lM9NIG)4nHFy0o z>d873EI57cK*ssfyF4_(86m2|oMOFz5$)CCe&0RFxV-{jdJmU(Z3~X#+ZOck8r(-9>Qu zH_YEH>#E{b-ifT7Z0^k4^1yAauHf>({@WPT+?u}*~jheQXNcmA&_k0&<1-BQQEl82|{TL^l&ksJ0;O;jR*DFENp;X zcO|%igv0u_sm^HwIwNVZp*vgN5XP}o&Qmh5XBSimGcpj?%g_#iUq!li8)ojD{Rgu$ z1VgiJ8AsO`6;Ki1Z@75sHqYH$&2pUG35ZJn<{wVbfu(D_4)y-V!K(YUb973`5o^5Rn8D%o|z_uoJP^5xWe9};BE>H#VdhyL2=Dr4bDI)t0*bD;i6sbc)HE^JHutuj zPQ}S2_YW(ngyB8T3E5QZV>sGsy6&Bj0|CN(Az zkTwHEJe2K^O!Vff%4O69hQoMg#(|2d%YF@)BseyB5)1vY#vH@kNGB`eDp>8@_pUj_ z1;F%Ib@P?M)*tWsxyZ5bdF7E79@*7XMZpCVIj`; zB^Y8svVli%8O&h}xCEryl@-?GO)aPz^X5c1xz-~VCS@lOIhtpB7x!7mOu`LC`YUiP z5^?bV?f?7Vu6E;zEY!lEsylm&=JR){yVJLrwFORP69>(=jBHYZAhL0oQ%+UoSvNa* zY0(_vnY~o)Jl=R!Yc$9RnwD}`jy z)MVkxR{!h@om`pEdl&8AgKEZygoK~zDqg90Cgzc`Y&U&(s}9{`0%(G( zQ;jlFfzVd>@QE`woTEo|1xieOEc0qAN3ugQ%qDD7f<|Ot^^iZm@Yj#$=izhs41&?# z`g-`+4<6w62Y-Lpr;5O*@cUE0Klkrn-+zB}?kf7cWA*oikM5>+2q`Tja==C*i_2U&T4FDQa1{1FqkL(*kI73)%0@IYk1f7Yg)q(}>`Sw4WjU zux%g_vzr)gRHgZGO`+>_YQLo+9g^Lb9_ZiDl~X)Dh|tZhB2Y6HYNM~dG5~zwY(hWO zRG7t3Fs@hUBG)dFxe3fA9lc!NV;~W_SP-D6rOFiE-=`sOe(bniWh2F+1s+~*D3Emy zpWX-HoD1ArDy$fb{RZp3&Px&E;RiTjr$Aw)l&d0HMtN>l#ex&UV0Kv)cJ20i9%u@B z$jBxFdnMX@S9S;oESS~OX#ez&^7FbpI>bvA<37$b0M|X15a??rKht9a+Rk}^ws|nJ zIBe{P=AMwdX~XO(PKRx5>o6Rl@8ejjw(ae|F-3foXwAPlx<&&77{*w2DB5CF z;zs@0t{MJd$_dYBsPv|CVMrH^&Y&cl$4VfQ6 zTBJ7N4#u2%)Zl)%z{z5C*Yds+$1Z1M5+$aN;1|a8Wg?5gp~1^JQ<0f|c_g^3WV_Aq zAtrK2u7Ih0jn2-i(S}WS=5gHD%dOMlICN>M%yxv_C(&CmOoJy?AS2uTCm?8zxgTjh z4D&Q+g$=;9+QF;_07tWNfwTH{uxIN!+)^VPbw4fB6oX9!Qf%qXFb2{ctcvti7U4h5 z=x(Ka$0S6Q^TXM`1k6i(xya^OI2vX5!fK3Qc;}6S6lTWA%j!xL-m!QDz;tuz)ydXx zI2CqsO!I5?t8ekDwS?)N)g2)2UndQ^-~0nwe=wB^^rep{DK8%_Q^fr=6as!n<=lT^ zQg#Tj{e!6EksW;9ihT_1i(cRaS_=fPa=qzq+O}wDKs-RQEB)2nIE{9^kA_*EoiO*) z*64MhqCd+4akA1}ub87zC}LM1Mrc_*D1W9E2eGlafCd@U3J;Ebo6;hz;UKsY)G-20 z{htx=8dPgOT;sXpj-^@_XHAF0X>k*K-JV~Uf@8@x56a}ejPYtCu*ds(V#u&Pimzni$ zb8FF!xv^ZK8(WRwq{|_e3!#$+3EMZxw(vKiUn^l>4pd2^2zrN2qA{Y7gLQLcIl0-{ zWyiTLK-d_l9b-^qgzt9C)L2FUB|0c&?U&+Ig;J)f?{ED2{yYaizs_G@{Bh3Xiq6p& z_$mDU+*^H0D<1Os!GC={|Nim({eA!Q>-+cTeyR$*-m63TSZ8V;kGr+kNqLegl{kwp zx!ct|?L{*?irN~-YJrOq8#juys>EvbuGkIJa#c>&y?9vHRoz5cVlnHsmJWd_l$+BH zg{->O5;o7X8rCyJ?;agBc_Oe&W0|AK$}i^!klK#0t?f+E7B%vnTIldo-XGB@dz=Up zBetJ6{9W@M-!M~1@EifIpR{T=9;|7z^_VrxvexUGLmZguyk>sA`XOqi+hSgtdrK!C zp2IKVIfp%zy>;t$0QC9Lhb#fCwUDT^oMLB-Yj57P9uwwFhwui5ukm`&l?&CMfsSw0 z?Vu}Pq^C3r=p7lyqMBPfXfD(m!C{E#KXdq6_cwiwFHFn5o?_%tugxy&nWkue56({N7Sk8~=*(iYD?{c& zYXCEJw2Hi4b1T}*PE;Nb)?s};>`BoN@cH0#hpK{Lg^||;z7pwB(1hCHVR|L_We6`z zmr@&y($QMEOMgwt)D;sYsqzxEts68LaFR)=gO1e#<`-4)@LqEsC@a9JDHpb6UBxM( zm2)1w@9Gx?_H%&uK*&C^kHUDhLvkCERm18w2SSexg<7Ayjz1DpdI&Cd=4xK*7<3A< zS>5bTptL%iu`U-?X1XHPIS-lAsSsr)59&5W;GCzavb<8Ms3^PlqL-FqVrV#K!agfa z7CQ{46U6K176jR+P(f!kIcaHRrNS+mP~6cb%HYSDX3PGBwnx9tT@wNm^l;UzlqfCW zLQ`YbR}u*Nb5Ef-0t6wzZv6v-UL>9|YA0<|oH6&xBWsb5Ya8p?igjmdm;~iK_i=I+ zH{{$eN-6Y%w6y=`AqxjKt#|cs5UWWx$Pn6V{gfc_&RmLdQN*z+$|D{%H;6K(2`96wCl&9#lJyEzYJz7PI)lkIgs{cu zL#Ft!n(v$YWxIjLl4*-3oPh@^t*F4id zo?BrvjpJt70O+7uk-Cz5?REmQYFqBM{*CL`_~TWtt7!|MZM-v4B+K9*e^+(PAzyH_&cK1NVhK2pt zcj&mkRVv0Qb!zQmJF8ZyH5-2_?(O7%Q*n+&n378?7#C5Ux&*kY)YUz= zRnYu1$xK=lRC=l0)5KDmyeVM6)h4d;xXam5FLs6Tyf#KBJG4HQ9Y__JPNClqo9XB| z;yhid*xi{+=IXAOA=}+)$8e6KvkwHV4phCJq1Wj2@mbd|Z=XYeo>Quj3iu6c-ag&sRzZ-p# zG(Gg7`2$qX$wuBy_2ZbJlBf=~mzzU#C3ae3sov8&(E+Se`1$bPKhMvv=OJZfwya#n|s3=PhA$WT4be8P2^d|?ez`eWa{DiSr8g2Xji{hhGd-RbnB6MQAdNR z9>rYhw3#I)O7$YaI=LsgX^UpLow6cfElOU(1@n*cqNhLRnGJ8)g(FJ_aY0DJuuTiy z&bw}ov~U3Ui!(*#1f5LQ6n3#=Ma0u&`E~ep=xmI8Yj)PRs>}f+Yxnw$B#MRX#2+V* z(IlVJ%asfJ^UShmrrLKAv72F>X!RKOQlN8O>F|xs7z`FkWQB;yTtDx(WdnnD-{?~J zh!HInS(s2&H+1ANU+dr?82DHNPy26nHMSwGAqAzS3K`Cv4biseR#`7`VGt+oY<$QD z(K`0peF@sht}RaIPQk{ErNER{koRu{VA_C4)<~1mDynFOuY;%eEhWD{^<7oBb3>Xi z(qr7t9W|Ta_WK18#lPI`U#z6#h+k}gakPb!x;TsKk#A-A1~oCwt;&kK+Aw1iNkKa+ zFDMSOJz(?ClMw)DOtgYgPZ^k{kBh}tPZznBl0uA{)hp9QOlDc_d;={0RaP?GMM3au zr$cSFLqv?TUq%>{5P|4D*=BVlYt3q1o18pkJ6(w7Ufs#^#zQwuGNhR4YNFa#$rWifdw2H*68ovazvZwiz;T z6DPpuQA__g`bxA=Ut;V< zayu97BozXa(QgQK{W_T~@L)!|fx+B=k32n-vHCi#Q467KWxm)1ghG|Xlr zlYS*lu3u*tIte(6HQ6bB18~%pDAqaTH{td}SZ1TY9$FocG`N&5$;^m4KFN@{R(Tsx^RoI8dpW z2;?l-oMzaEDg|I>UzLygw^>;eFfV{jPR#%x!>Ef#MP@71S8{$s9x-DQbVUoTfcs*C zXs7X#go0{3oW(dme|UkLx6en8m>e+6p5#ri9VW=RWnQ-eZ|}@NCBH3qx_}EECW+~L zX}k{?I|>-W)K$@eBwI2x-#Uw1T+VzTHGw!qJ-*tgiIG!4q55&99jyLPbM#gxS#vj~ zjo#e51vEpwQ4_sset~{zu}z1gEkF82$QurZrz7op%c*Onrx=SGPz;~Rpl6~2bPDYI zG?muc^1Y*e__}n^;#tg1_+4v_pghTA%TL~!C^CnN#)N+TYQJuZXeyec4I76X^VmJrH5<<=%t#~ffa_)Jt=qD(v$zqc-;)*^Z+HuvtKzkcO&2ZRS=wM zB~lm_?~N(d!kf>_;%qDM3DVG3xLKync{16Da6i8PoUSIHbKKuvB^MUcBIiy3lt630 z4|TP&>{C=f>DoTon*e}aKj|%9&oX^B6a)7npV4-&mKo2l@Ff<^rsmfnw#8haNz_#4 zW*5t)zwAtgg2d`+Tl1`P#F~q3X=Z^%crFyz-!0!cg0FhXr^^RRe85DyuuvY%5MG2R z?=FZg_%C%bgR(9GRd(%y6G#E`{;VY)teKr*U^^&5$#*wYh_yhexyQg0r)Eg3@AKu; zmmX3GKEy*l2VL3xRNbq0ONV_da7VVdVQ47}>m2K)r9=_ZqzmXA)6lbTCXH z?~GCjoS^wd)xeq(NPW`gSc>$mCMkq>i`$-qF0&N5`nW`l!v zse6Z{MTj~PN}BO=cV=}bjT+m$wR1NhyG_H4OayysJogBBHPmjW{e{YD#!(DW67V(7 z^$Sv^wSQzQtJaO5&%K2%p=uS=l=vri0DMT~FqD)}WD>K@fCI`zH4T8+X`JZRqP#?L z5#`DRE?P~}x0$j9FQhhmxuXLl)(9(}mzCt!RH>BtW%D=*Mn_=4)mjXsRdzq=+G2IP zsK0K(M%Fd7-gD9mc#g6qiXc{(NOgV81Fg#Gpt#pDw)CVM;6Wv)Yh4EMVPLN~TV1ZK z1j^{lRL|)7B!bCU3h2?LE8v_8G-8siYFT;@tcGPUW2liDotyK=!@>-=WetzgE3<1s zuOly=09=(@5^@oh5M)F;MGboh2CM9nSYIRa%E#HFaflrrMg^kodA*vmri@|>#o8jL z=(UdHMV+}@%2*RPPzNVp$IxDtWb0Hqr?BV;xourAkS~nsaoHP}&^i>GPP$@DXm}7I zBj3}@9TKUFGLv-5gufp?IGt8a@)$CE89u*dk_-MQ%G+$UTpUK4oDgf*`ihuMON3TL z>?9<2w7CZ^ilrJ|6g#<*LyKaU_%m?Gls!ajx@&-N>l+T_9FHcl-o?K^)(944mJM2Kz+5nUzz-BsY6t^(iFl(- z0hl#Oc573ng0$vyC|0JVp!DuhoHyz-wS>OVX=~;;wY*~N@1kFpK)&L$`#Xn<5=o*- z*u(!d7>H#lTE{u(Xq)$YwJH@~5C8gl{`K&A@R&@j497QledYuF{=UDyKmYlz-=F%J z!YTvb>x5Cah~5jaf+w%T@-{jZxH_`ZfyzWyG`mmq!wZVJ+@DX=lN|$fgW;_38((4Z z7y=c-Cr1lTf^=2(wj)-1HcKzI*=-{#D`H+hTRHj>t7XESYcA8;9g=>OCnvSV<3GX{ zL!@d^ne(~ppbeocNo>3|oNrVbrMa96#G)KEos7Erg2)_;0VpMPo7TpoMY0b0951>B zZZ+r@wC2M2l}0WU=L;tONUUxp&o|8yrOIMp>7CXxOpLnd(}DK*q1j|wiE zQEj%utkrk+4w(_u@vI&!uLL&(^>>nj5*Za>1JM#N=TTN3o21juD(H3Av~^f?3yPhU z=uxp6mu4?8%Fd~P7OhjpA)>ahH)brq?#~LxcbmGK1JOSAfoMlM{W*v+|CuSA`D5EL z>o4|6B3=FeHlqKQR6OSThy(<`JI^Lj(7qPD_oxUNTl@jDmu5@fCBb4l z7i%1PSzV}t>59>y*}_2h&a%yVq25!~$iQ?Qd3?_V;$p}`jTwzT%SPB`8!AjP0@8)9 z8nYL_f5OuvS(C4-v}8LZNw}3jqarG{wd!$PhO|fzGd7hQRIfxla>ayK zz|5*6NtQ14ZkQqAgEh^QvMI~S&j_cJed)WYxM`MwqV@&Tm0ZR(*pj$;ao2kOSnfBH zYu2DG*RL9Nk|WE90yxjdM2pQ{_l%f(N1077k@6bx#dCe%NzgCIDS_&(tTV&)7c5`; zbGJtc%UChzy~LaaMkb9W6)lnI;Z-gk_KQYMYaQ~w|JKh5CEBG40a;qNe>3@_yq5&X zr%UXj(J>PRkLWoBg!Otj}T*qj9?N%%RLFV(UTEvWn^O-B33WD_jPxa9tIyX&M`j;%VTTXyF4hg z8lX(tb8Z=n#=KScptSwb*f+OU;?&7}h~n|d%0oUy&i1UqE}iJRbA3{~UFQCrv>*A3 zw4;$gnQZ1M!d0ST1~#LE5+3=OZmI(aQyRydf8fXgR3gc#G8Sj~JtE8p&l`fP><)NE z=OY2+eh{S)EQ0_m4qucsqxPPhIa=UJR9$@Q8W8mXzQ615@B2T-YWc;AoIMGIQ0F1$^2`Y&6bxkuVc)TAZ=W@MZa> z_4&j9cGAs)0!3=leWcq86Jx*C-Kd#-Er1Luhx!{O)fb!vw*~bjGfc^440>2NGfWL| zdT{;>fGgoIh!9P1Z#*jQuioDggCf zgMh_&NU~!gW0APR@h2mmgL59AUc%ec{7W*K{ErhM9AsOC+AdY(xmCOxrT3YzQUgwl z*V99_jT6&ko^P4O92_?=d6sLn*Pvpi6Ya|xU@ZL?D2cEgnig12bu<6zZ^ee(pL0R8 zJs9jJs_IRp@rT>lHgcP;v!p2w?NYPyt6~rvF3ey(U003gCh5Dp26#6K8#ri)Nbr~S z)WTFSYkU@I0;_cF&o*79`@P7pk;&)aIfuZ#_5IQE&8>7^noP{Bgq3tLY_`0X@0)t; zZcJ>J!pXeo#3f2r>rJ#0026?=_<}pqhVxDWs zQ|l{cv!Ue~J1A59fQJUVGHCxsS0EPMik<;OW*Y8;7Cz z&wtL{DMIq|Ss)pS+Q$adn`V zh!fuO&va4Ya7Yf%SenIvMYm-{5+qVg@}s$+pJV8 zLItLFF0Sjsdas{>>tI#Qf9Vay!3qOVgsD55#;?U%4O`48S3FUbl#&X<9~3ol*}v#n zwUcuX$6Dz_|D)*FWx8N|vp__v$J+qKL(C?)$&Entw}xz3u{zSoBh`p2NZOi!$wlnu z1NIUDNehM)=nS~JEH+cib`2yxF~M_X;SgxrTL3sU5rj!*1Ozj1Z-oPwmU{L#;J_lv za;(x(rUbn*1y(b{-ho{FzG*^%vKU-5&`77<2#Xb?Hrd0K9|p8$qNX{-JFKR;AHx-DT^FaPT{_FqYO(2KeR{2?m34lv$5yC~RTLiC%uWeUvMKp-- zfnM@Mw&QW_Q&o#u+R$%sz66r_yssfPFre`jfL^enG*0TMdFLc`!Mvkc5!zGCi}b?X z2?w@9+55lHd!V<($;fjyt0SuF?5&Yg__w`f8;|3{wxvmeN_`X=%@&C2^SiuJdWZI` zgR8pQ1qo{EtxDB@QdH2#2@v#x7OH%bjbPpVltdc>WG~1Ap1p2%rH{mbahpnq$0U=M zYGy5>0M|k)#hky;4U?Uc>8kng#^kbXdCS67Tg+Nv++2Q6W-Ss9j3#qR?2eUdI%|?V zeqI`}fA!>aUxjGPngt-JdySFj@aMz7p7Ynw=f|U!7@-^;Vv>wb6!7`3U!VHV_x<(# z`TfBKLzk#>xV!YzPVr#0Ay?u+B;S>051gZVI9KA2aJqQALOv@KyI+cSXH!KYWVT7Y zZ8?u6s7kcsgauXS6*YbQi&su(Rhl!9WVa`3+!SvMxEXh`U+Bp{(YMPro0RLF5>|a< ziFU%Jy(nz|hf4bQpP4}Ae%*htVnH1S?q4$twJ>hb7w&j}-4nUd+}J{F#D|E1hkVZI zdi}k1@6EgRZNIFnBly9U)HeY!%MV8G5@rS^U^NLLoRi>-eAtpsFql;y?!Or{D9tNSP$NAR=e(L0M2E=*M{&uy0tuHaCLzeX52R}W|_d`zxF&ScddMqWVkCl&xx=D9w*C)RGbV`cTbt!p%v53vQ(b97mruP=& z^6k+49u5E$h@fdfyI?Vxi6f>q843p3^lEysm}geI3_k4EJ&JQm;Glw5VWt2R)M^iy zl_}0OTzu#YS4`|2)UHnnHu0Trtn@mkY44;zjT@v*RaJ?8EoX4FBKFCnt97h(7nn5k z@*JwP2`J>+u{NFz1{3X+`@Wx$W;T z5s*!SgG?IUEdpN9^3+2m-VJkAfD}FxbM7Jvh3wDe5swEQt{+X>kSg%Jt1@g%G>&iW z921$i-k}w=E+*-2hf9=UXJ~+higfiQAEtwwEhhoVwTRFO!%Xn+gaT8Z^nQ}{l3xMU zLVipaS=!6oeAQJmylCmY5&iIa}EX>FHfGJb`oJA3xg zIA2|?*X2&WivtX~nGTsB(u3EO#$YF|b8>kHXAAoGd^8Pr`qx(NEGosE2Mcp%%K`h9rv)9!^OlST`GFa0764q;YTCTB^CU3<5CYIFUli~|_B6v#SzC8H z(_Qq*4F@{kk~ts3%I>71xmc3kjHyj`7A(`+@uCbAF1HYL3N7IJ{kW7%T=!J{iHDzx zvT5){Yi63{vhx5*qK^P0LGTt%j@bhWwa;ul;mM{6<0&eN;L(P2l?_UgQmMb0o^LuR zZJtg$EY=kzNHoAgE^=Ys;d{YmiwfP&ilOwFq}JDS&F07M2v0lwumpy>{`!c9eLMTu z{(){UzoIn|bckHVlyeO7viWgS9^yIp>vVbUe7V^em8)i^4xcQ#-t*m zSdHXoAHGu6v}1El*015s`A<1XR(E<)Q<(`=3_=%<6lR8h;#gsFI5Pd&JI%z1A664XRKu0x_!h&^=Ki?hFO2-Mr@o( zi=NO$RI%;vYKt)mD@%Rkio?!hVF{hu3#`YlF;;2}!~BBg7|qWi;CENG9rZ1I>RPS) zdm|kfc=*X`jiS-Pp8pNQSm^atTwU%+(m4|~*>S3aX4S@zVAj4XhvEE51C_V(T@Y7W z5SG*UsL@LNN&u~5V$!^7#YsyBQN)%p>;}mq5RzR~=+^1gyeU4yC>oJ!cFl&(PS%?t z%ayGDu0;b^Vn%GMhTj5sXFA7&XD`$U8q+p~sP;O9+2866n8?)FIJX(3hI1{FtZeez zzW$J3=R96Y{C(@*N`iOP>-!l)xJ{O)90$a@+Y~je8ace+?HHX{`;+CIC!?1_m6ULF z=B8@&K;puQa*16|LxnO+i(DdyC(<)6Z9kOHSaR>p=%fe#Q+V|_c6({KiFSRZ9nO=*`{2zccs9#H#9*EaSoct8{(u*U6nL(IBO zI%e=kZvGA$`7=3vA-WZ&?`Tu_S@6&u^;Qr|_Af;Jfz?$(n{2_x~(snCATFBLJji4U`M^3sV}Gd zDHzRE)li_H!$1ADyJjqfQ&*dJV_s}#NIPW0HbIjMbJl@x_Mr^YbFgY-GO<(J>%q-s z0ZBj0%#U63Saw^KGTdsy$De5Wc+u)VVo(>qSja4zFKzj1i{S->pkvzUnxh-NAQz}KgO>|f@1D_#tZEb9j#H&M zM6zNCf49>?#IJTuR~;B(FR&&v_Mujbd{%b#nAzZVzbJX)^=fWa7jGhfIiT$k;!3b} zJJ{f1w$+j?pl69G+o;p%5~|PYOSZ$SuBY~r<O`t;Pm_j}<}4f6c2#o;34v zP9dzc$M}ttVzbbJ;hGgG3V}w|t!$~3H#?MnQ=)QjL{0Wh)Vxr0h%e%t0-4uWQ(^M9 z4@Kf?!%g6p4>y5XXz;fAYRigUE~t%5lZ$A|+DRct4QOF8C8&?jvX2zp0K^7H-1cHz z`A=H;#}^#MuOu4?9rqnJ7=iK%xNgtzQk`tI;|JJWBW6gyG@2l2N{D*HM%WE%kMW#RDJfWTZTpg|_*y-W)EhqK&x88c;2E18lUWi1l+DB> zl|^~s6f>%yiMeT$^w48EnhwIOYUvxdQPGCUS()z{6G_7ZUN%$BWifilo7SwD6$x_1 z(qj{4iB^*iotNG4$~v|6c}yDWNmeWP5fB}k@~H(MVar{<*5{6HTWo3O`*uOwUV7$M zhNfD;F8Im#1X9tOq<=gLPqz1*L@*(Y|0zJCE$!(fzUT#A-hZYjK4t!;d-Y7n!)oDYdcsnV=lW(`0mJ#M2+1$A{q~!uoEltiu zbja_rC+1h!!XcAoQ8SQpBHx0cWwwwWwvjEY^HSzJ>3hAPsJ5{rYf`g7v>0C@Y>R|R z)GA-^h)KjpB=>pRX|n0SN3RYKPPQDqk(x~$yJfj)RRBuF70R2Rp9n9Ds!8Qp4-(th zn`YG9a$aeyP!lZnk!Fqy7&u{t21kHJ&lyfr6BOqv^uh*1n>GE_0O8B>qI0&mdfq0; zcm|WhHk^m#f4JmeXGHp29t<&yP~k z2Jlw#Rn&_>irVoOokzR*)-fOoM^gf{3ZRotJIG)(7LZZv_gOiNo(Hj49))rP&=Hg&jU#u_r{_m2= zJQX+(`_95X3k%^%51v#r5d)pk&@;igE`&Kgd;raWqe?=YQpE9e}h z!4;jKJkt1wFY*|J++D_`jf@s{thN8@WzQz4BU8LCR`gF;O`J@rqLLOp)Ni!U+`D6N z0#uK(Ce~nUUz){0ah3iTd74PFwvOFaTWp{01-`RJzOZ<}>F^zH(E*0KZIY>>sKVSM zNv6~GGVm&f*!i-TFBL3kYlm++?M^rU@LKMunS;-*+oVwT>NZjH=?<5S+s95bQ*LDJ z$0j56EMc*yF+?a*Ev|{nRs^0ds-09D2fFE&$Fw^ctqijleIR&Z@=~YU@IWN&L}K(C zUyL>t%=s5Vy(G^yH6?5R5vtCU9{E}DWQ4y|My;pbarY=ui47ahRLob&ntFgXoDu8` zBNW{Q+ds}N;AiQkk?-!`TvJ72?TNC- z*S3^_Ji3s}TnWs9P@=SmdC8ePUhY4OGbWpGiWX8~U}sUdQs=uCR#Y9^~%FW*kUx3~2vOyb{3LNOL;u$dj3A z368Q;2I+C&y6HG84wR!~YGHWdx2liz?1ukC^|`1$Oi*DAm&SI-tBw zexasWt_vv50eUZ}gN8wSxnkBj1Lap);Q(KPoCI!`QJ4>*>R%7EKx8VuzCJj6GDP)wzKq*3djaHAw#C|o=in4Cdfgv`2cVacp1K$0$=n_s-5vn+w8mNE zxBaKb^=05tZU@}#!Yrwi_#Kxy^2=lEV{DoMEb%n&KzJg{2dEf`yXbHDrNUC0*;xa_ zzQlIiYaI;RxUBEwaT2)hllH@Tpphi_)WoIVDs(t#HQM#T*$Fq0YicMDrY7;Gg{QY_ zXf;^))VD7Q@$i$-DEbgsV)97jI!a{F)jA{h2 z`_)r}r@VKt7{9t#(?u|{9WH8k7>z7DC3lGIhKlo{gagojb}j3((u z==o+I!n8lyFI+aJ5Ul$U20e+>6NiSs8nwx}VM1W~4l$BLexT599m5#ZCkQLWh+H=}~bqZI-q#VbKEzq?Bod&p=IyINZ+>1FP>5V!aru z$u*qIUP;ghSP>1N5*^(I_5IG;1wVVDk4vk}5Kz43_#BDh&?>{#>>m@wV-jy={WEB^ zdtRx>IdRkB3@h9(?wgn>5=vo07}#5^C?qW~#|7dtOScJ!gs4MFiLQWt_eDFs+3D6v zmK8PtV3xM$qNVBV21_V2dRj925~!NZxQYb(PyyxX6IPGT?GRppS5=;F2J1?PzMdYl zwQY5}z;qSPMT>Eq)79s&UpU;UN%*1Djzx!vkDlodxJ#qL;hL95S}ZLrL0NiZXvJ4U z-&HzW*IIM~Az{*|vJx!b)?QLKl$rtT)Pd%)xLK|M zLW72=K(BaKap#pZmew>E^{=!pdB@i3YLfVAAh1Ul<(fXp>oCp>{M`(`raHS4XYX}!HU&}_*ZaQ5 z#wK{q8RJelJmO1cq&uh|q!<8LWLZ(d+zA7n9+ECahf4Nzg^PJ^FL*JhhYIDzo6-0V zN=aIwdfJ90vtWk(N}9FFoK>?hC0x^CtXV8?#dr*qiD58f!O`$aro{P{fJ_fdK7qt~n& z?z7zMG?x<2-$UpN#nt7jb1JjNtb2XrSR2#tcsdopG3F?VP78x6Dutlqno%aN+V00o zU7cl?^7OTvTaRf4!Jeb4$I$J-LdbWuXTGxI!EJ!(eq;na=WzIDA`}?Im4kMPJm5TJ)t-VRP3vvcjC&jQ|KRUlc)jS&W z$DM=Bp0pZMCzsI9gJ`&O)7ltfFd0;2$9-rfAhwZf2wHLI4oT{Cr2BSNS{e-1@dV6_ zE(4D+Wf(Kmn3<%cWQM*lO4d}s=$E)~Fj7=Kp1{xWcw>JSrrXkyHvL&tW}XJ1&0T`?>oK zOG%ArpmE7uqDKu0^(jgAX2v^O3C~avN;8I$1|7cyX8$ z-gF;ijF!@aeC)dmH!v)7*FSwhixeVo3IZPT=&s5tB8%YCc&hc8{X>{ctv@-L6iUtaAyc^n=o zQ^}k+yeMReJQ-&ksnjOJn7P zS^K>&EYq1K`l1beD zm4Yvs+3ZWZT574uoi!FxB3IdNw_uG90acX_Mu;bB!wgAn7}+pQm!~`igh8Cz z1XJ6R?Q~tT)9&av><_9tjt4B$(W-H565u4CF8#TfVMKs3X|N=B)BS1@!jz7T)KItG zoPqeBE{(!T`dhngZb;{ajz|niP3dDj=wx_;?OMeZ2WB%gmQZo8CF3GK*0owXdX6&L zS>uN&&vx2!u#K$`_Qz6RT5)_xti>q)GsQ(_!}*EM^(XqF)@QkFIQISRvVS!`j0T;i zGsU>64Y#}RU_k7#a+$+~OgpBe;>bx}vxb!Rb5jHu6O_Zld(5G?a2jK$$iBYTa;0MR zJ-`q-CN9@>hom!`&@OS|p^Oj5~-lrJXuV>HwjcXvu!r;^i zCY;kV)C#0xv(q`DO|m4`9R|LCe{{TZ#N6UN=?uzwCwsCY3Owdawz}(N;Z4xnL=NOh zzsTwcg?c9h^?g$c{6S*CkfXZPfu!8NQ&9e$b_1$pr`PA?G`TO_% zI{fR$`T3l$Cp;270wivs>Ky!h_~V?<&-3ed{rY^qKll6A=gmUzT<*Q_;>s4}l5~K# zAG^ipIdw06I84+2?a@w-J?ig<=dLG$GJe`i7(%zRr9GC5J-5Uz4X}(1Q{}K3IoJEx z@(XwmduPrv&UV6BjGDKQc6^c^d@&&a{%{dFkCrQGY$0fqed$IbA~ z`Vh~ABeL#Ho@dxC?143M;JAJIK7_YwVE+@{XdzT~PQB(`w}Ja7tI8Bfnrq79Cw+*^ z`tqt)jv}?aQprWC@bv1!;6R+`iW76sV{Obwq~1j6E(c zcPWpsxu-ucjd++b(I$dsr_yTZDY|suzTPujKBpDY1E}R>N5M)`G4({*e)Nv&4ZqD) zsOp`;!XC2kxX3OXXUI(@Uvjl4(g3b|1`fjjh<)QBx7jr+tM#x)IulO9_SeXNqt4=W zv72uUwIk6gkpEXZQ?@gAi2t-jr_-FW|hJ4;(RVgRT=RRj@Xk-S< zg>&dvIyf4@&knvuSBA|Z)H*si3&jw~PBX*`OP}sLN#5sP?@NHn@);*n%^Uc3Fv6Q! z7xQyM%;uU^2CrdD;Oj_p$WK}`PzKduj3hWrTSm)`8SKJ_N8(J^_hZl4Nw+WbqOb`W z(M(x&m{ccIpgaobKQuF}WWIgm`zxn&;%vH!9(_)hjFwsq7&$4w5ZxB<)bGwX#J8zC zDCWd!*>DZrCO@s_DFPSa*Xp~YCWaXI%@)bDxfXjwzFN^NwucMG&Lp+ORN50+o)kE- zXE5nmvkA8vt~GIBbzzR~3s1I)mAzZ4v^?-fRbjmZm<3j*S;WocAtcXw?`rK0X{h`FgSk02cAa|WwyFBqZUqfvjEVSwNK zcQ$?JZi9v6rUNB!zx9IZF-Ckv3}VXV*XEmZG?d`f6B#--wtBxkx$HTLGj^+I%udGu z!mp=ra8xrMJ_CVyo3}JMtA|bpkxC&mrtA#Z54KHcdNSsa*!FNexG!Z&2WRd0G3aCM zGN=3Ynf<`J&kdRAWDJ!@bj=H8HBS+CbYBoS=Xg;Gs%{(oR`7yY+0f2nkWyg2{>R$S-=dJ9@5ywJXQT3w0*cl6s zT!T@DSRpkAv)D z5@g*w;F$?qCeUG8fETJ{8+8jXU;Qe+13G&o05MC>G*{|l%QA6w0wvVCJ}GBY?8?r` z0A=O20AC-J7*W*gA*&UDy-U$hnXn=YW(+UkXh;m*DGG*?+d?a6nhK7uu$0)Cb9xbT z7W#dNs`8;X9`~U!R&(y$a>3UnPN zucQZWZtF23m!rJm(V1-7BZR22);la@qR#p8Ne`J|wqMwA2oIx&7wKuH*%gxla|#jR zHFdKSj;-l!?`$r3?bS_p(68`^Jf|mN>3x5Z)t?Ae06SxV=k-0?0fo|rvdfPQ9NlHt zzh<5ZmaJ#xpGYNXK2=-Bi`~+3S}9Rr6__GiVWLP;%Ppk+RquZJA}>_bz{t6xUOnXM z5ntgYr>Y~v8OC9nVgqx9+-N)pq*IC8Hw70*L!zeikMdVN9-NtC%RtN{8C{@zR_uv| ztCUsRo(;>jOT4lM$)Nuw#ujvP@8k0{UV-hWS^0#dcfL@iN{Mn`;%0lxKhBqJJ)3vg zemPJv4g@D+%T=-)O4;$sINApDH38BZklKy2IL?C+yEc)+vGW?j+vX$xl6Us3SnCa@ zs*+)f)0jeJ2?J?Eg43LAU9v_Xz*!0)U(PJ2GTFj%85@jQgLfI4lQF zeiQq}2_r!4i|z~mxBvRzZq8J2FJB0lhRFiuJw)KWzMXZos6)Yh2JRZyuYJA~>JmUA%|y} zl>w~B{+`XT8B-I0$D~`NR(-HJp(fG>dDN(;S97$U&?1D8zT>1JT?OK_sCs&e<27)J z#4O7;$u1D5z;oJC^ZG(IWF>%Vt@)h1g>1A=zvf7_Z~_pUC`vrE@Y=MDkz zgFlX3JtgdQScl#wJxgtP#8mJBpmZu~Tlbo$!}?e6K=eRMr(d9~E`W&fDM1D5js>WQ57X>UAB3S2 zg~91BJx4nVGIhp~uSObH0!bYsog8lZLVEPRZFIzF+M(`=h7}QES?-z05xetUo4?X5 z$;6Vnzrn|BnpPfiIN|$|b1MReI1j(hIXs2B_kQ2{c%opx8=W+`>Tipt%poz3snb^#)z~Yaea~X4;leax7_uA@{m6OOIE} zz(hYyo?-L&c@J8FsWs-h3@7!QOlg624xe+r9XKR6iJV`k4EO%@Dxy z%uWLvZ$?V`Gnt!CXJ!>+#PYHXAroN_pe7Y2*Z7XF(0)P4hMhb;;lGu%3_tKT(Rx~s z)3g`7%_E*~A{N-gW);yimjPauHYVMa;?NIX&%r}ETxTvJL2qQgkQonPnIc@ZKAEgy zVfTUr@_qH-ygVI`nuCln)H1UDPB&(Ce8MEj!oRCjgVMJ2LSYDhw2OUxza&aS z=#OP1uN)MpLuckTR;*Iu3S+oY@cigz6$|+B zV1j++3j6_&l>^mUjU(H6wuV1?iM0SG)DnNG5^2ngbO0yv|KO<9Dvs@7MXIYk3KJFk z9xi&gMJpUe4EPpi>w(<@q#12XP$nBs4sO?kktREsEtO|?vWWIepww>Rgij^QY++Cy zbwQL{Gl&{kI*+44n-{(E9`{O!6Fph%?z^>AjL%28C6-_6XtJ2!@JRk=Aci>2P}I9q zLq!V@J5hGO7|TpXG$SQtzvRY}>%glWI|~j8j6OFu`<{2wHGnTthL&gb(v1f@ zS#Y08&KfiVRR_Fi`AA!SP{V_JFGH{$|3GO2$6hb&B41*OB#Ms?50!H;|F1%q&hT*@ zrBH25hY?`C-~e{@(4e}dxAe@>6DZDYpi7$q9x;C#s>uR#dw@LshHa!&mB!w0h@yNv z1*TX)YOfV>3aLfb0yG0ne0q@4jlZQaiJ1}6K!uwXa)47Ygwn=l)j7N@$fvEp=xsh& zz21^czr!DK;^+1$Blz#P{`39)#UEGU%>su98^Q;$)CGqsD0|^a~ zJ_BlJI~ma`LPqoXUty3AjxIe{uV~>2CXOolBg{SCV4|K_D`9t5G39yWGt<%4>sgcs z?$*0|XqQ174^+|_#i)$4sRw3$jvhGXED_f-lh|z~%^9npI?L3(=woHdeXUM&aZ|Ps zYDW-$M;_t^90~VIk_{;3k6H?BNKktLn(5aHtk_w5zgkV&G%=&oujSv0BU4xuWfw&T zj{9o{N4e9t`e0m{u};L*3zh0Pno4 zu;wJj9Tzcm*y@~3N3(~7(=bP?)F^E`E*8N2S#^_vM&iOp51UXDFG_F~(PMtcwT%fmdhUZH6hwLZTqZrUI@3#{PYSWGWt=E zNTPf|ckb{WBWTJ-_kPctbopV`lrbYz>SZKpl{NSb{75rLGM&U;u3?nLOPn>KZy2Cv zSwe8_!_c@E_dDns0&`-91^|EDv5hatB#;?n4um@D)3|nscDK=hBH>O0q3rJY+o!#D zZ|G*xL+vif&4N_EGq4BE9`)I_@#hqwW7Oi6*c7B+YW3TG1fT$2X*DD0* z{fKEaSYJ4Z={v`<)vIocoR`z`tFb?_^loXZO_i^$gpyXK75zb~fh*!&$2Lb#F?U&S!5gy9D1Qjw5 z{lfB#xjnu$!2+-L$(C(MM^Mt>N~UI4UlQyknfmu8tEKDw=&O@9J7(7aO~x+ML^#o` zh;Y}iT*3LZ7900qZ4hpo?$`qO|NP(o+noyAPIXqFYi47m!_Whr_66}su_+&k9PDW3 zyZW^!Vv}P!V}$AUYx*d3UG&N&*V7K0z6>Vr+sm&vVJ{B@>X6=@9TYdww<6v zSkXc8`zQ-HqWwI+B_BhRUD(zuh-IBAFt~+Q{Msr<5VCdJ`%*bX~ zOnpSx6S()B^8rxzfg-j!!W&G^R6Kx#ylr4ry_6&MCIl!i);Vi;BzeXH`z6|z%8Xd< z|B-N!J8-HDNp4CKt6VV&UTMJRK=v#LYVM;iOwJMZ5jz(=CbuWcrJL?K)$Jweluhg7 z(wluYsku~fy4E-o6bb)+UnXgoUi1X*!SAaZBjTS}S@C3+(flfM)&X!>KM#L=oqzp! zetz+fqbDZ$FBNlv?~7l*@2~IsT~$>#=Q9^7mRxqMUL9Ads(3J31!yol4q)n)Qw~Xr z?hr5uuJr6&wYyv4Jy`z%k*K?kJ6C1cy_jAARzI0^b0E<9$ zzfhT|sElq{8aaL2yK6hbcITS9@6T^}aMHgQ{`>{y$2%!Na;YF}9D`+%$Fxq6(LZL8P?r*eL&y1j9eGyF2~ zg2#-jmNFh}nZYKXE(pm!Y8H1kNw~c@Vk;~&l7~C^XTR3C<&N*2#IhPDfdM#FYLIfs zbMQPkU=_aa{djq3lq;4U7`r%ML@K#EUd-a}Fx%m29my`PiCti|D_5%{+F{exjBCO5>ze(oC{8R^*t8;Rv*0a)-3Z(>V@#r7hwX{W1CwYYRNAu?bpjnD+! z_%OL^GL+;3ewQV>IqEYktAk804hF0cD{F%sWzKhh?JTOfx^WrmPyt`m1iN>_2Yi?^E}HRO^5+HP(wajc0+t> zkGyPa4jE7Dnd$O7yKQgHm;6|pH(!&rr;Ip&TQ}SKVVleTT&f00%6PNH@XWwtqp4oP z#!mYOgnYMlb&{98w*`eWg}*hf&;2KVpbBOibC?gEO(?mkuKLB>O3JP{RxSIOizY>h z2?M!FxF83%#Nq?7`eIz)H(mST3-3c<^4dI75`QwPBihrk zHFmSeFk8oej#XyZWoNoc13YzCLxWf+_F0H)gPhS_M%Ewl_#Msq*@M(PeTok+Q!Us} z6k8L}6Bv^{JrpgcjIVsa`P^pd4B=UeRRgoz$p)>KIW+A+0-t->ym(rc?Q(msfF>F5 z49$Y))b;wi9ppSf`AlYQt*_- z8Ud_Oy2eGgqDPu2w-uC4A_yjZnG{;vpOZ~4Mpi-9R>w>dO|j1g)$5XUr3)n0M%Yyi z=EDwr35i-CiNn5Ff2Wkgj>v7m_ARuw?`-36-w z3G1sBLv|gS&#Fz9fsfIvxKQAv`^}O%@AtP16O+$Eaen{WLKBl7W1?5eQS2DUDPWyQLtpR8yF+gTSwAGflI*q$FHj(u%RwU9 z&g}||+A_4h&$GJWiO_CxA!UPrYyDAMV@f~E6i+{gERs*x1tjO@cyW zu|E)0RlU(w;z%(9TlsY%d>`(~4O}leQxoXy)IWGncq3ws(k6@9m6A7USsSFfNa0KJ zeZwoeB-WU;FFFU$Ip=`H=TqOGytbpNJ~UmydIj!qg$Ex?l&9wws_vRs@~*Si7H$@1 zF*G(NV{My+Vm_QEzgIvDDwNGGT}Je*~}AChFg=?G{=0h;;2KGb5ZtLxl5kF z!zqF)ISHyu4AAw&Qt*cf9yq7Y(C zw8wR1oCsiTrse!J%v1ZWrwW!<_6(8IdCW9j=(&8m=T&>DSOJQPWvMI}3GEcZ+wynf z3eii+M1QiVGMYsa9QByCpi)``>3+8AKE zIpY~DW}Sp+9Waq$u_C+}-u``Ux~pB5K*+f=^h-hrg;{_}`DJVn3+dRd(7?itjjCRb z5!ad|II$&`r+U?L6=@6&c?l4DsFFX@M?#&7cdJ#k+A|#Mq4pS)EB3=)wS>k}A_{=_ zM}c?H?Xh!uCZoK$i$-{-3+5U+7>YDymXaZaZO7bk<82YYQ!+?q!k!5jCv-Q6hEHIy zdzM*$=X!tjn1X0UV7=gVaQ{TLo}QXX9P|8A z(h8E7u<|;E&lhd3oIYf0xN1&)XHVajn19H#nF6&~u2?R-;iLm{Wp||<571|bS0wnq z{qO&+{34oq1b5VugI>3CU&iWQsGnB0i1OaAa8p3_RwojI&{lATG)_BOAreZ_Ic53X8~k?U)C`Wh}3-=`dVe_TsmoV!DGh z8?bO0zEq#|;6B$Z_qRfe65+T~QOT-uArz>d@VS17)|SEdIp;X7R{#zm?;Rg>Hd2#q zj7YS|0mqX22)o9=G~WVB0h!hZ~XrL{I09*a%}1TN15My++36Wkjh_c z*xvfk1EiI8ln!3Q4p(F2ddUK#LygGz)p#vK!X=pZB%Y_W2~WBEUFIG3N~l8Wy?(Aw zMRtQszF9c7lEJ8*f})XWKbIDHuVRT1bQ;O^r;Qn=|Pe1F0oJkOQ^t;qBWK45#vLrpxOb ze4TU1!o9aX7dxSQ_tE4$u?`(jfSvg-y8Xm>r+z5 zFFZ8r13qLB;0+2 z!pt`>7Me^MP1v8$v%E&eQELz&CuQv(CV#J{ucawAtCr+)eFuU*l4p&5}cWz*S(?2UT0-D;ZfI5@`z&hl%$8XRRg&wF)Pp=W6G_6u;uF3 zERu4?%hlOU5sULfp8xYqhd)1e&~bkT*#4{1i9u}x$TCmGBQOg`Uk)DFaE`qmGbZfQ z>R{wgYpum>_3p{d9Hd|T2lj=*WfJbIZ)2JXY$HE4ZX^s}3w+4IcwF$Z@rw_}bAOPq zE#Yu;O-lM5vF$uJ^f)&k7=#~`kIPVZ*N|>HWB*}~;Xs7|O|>VuMAmv+5;!Mi0e6 zH}e{`?6vqLgo!k)V*P=T!~Ty1T8q?dzP2>Y1J;Ka@=zNb)2v%K=hzi8!W*y|71oeN zmCNf`)9G7ta@l43*Eg8Jiw%=aA_1o7HtoP3B2)*7?;Z#%B01(?iSk7wVX1Ybs|dY# zp{-*E*)^3-CiA}T4-zjV`*E;VNhxAOZ#s=c@pK4|xL1kU-y3+W2wla2KmOGGcex`P z#))7(I#S$UNayioQrRP4jl}2K%rp41JVJMN8!MVv@eEJScb7IROpq9U1k zY<-=_GYNerr2-sMe0eDgisZm7M?+d>UepjjB z{{I`uwUZG)YvOwZFAi`Rw+J`)SI(Nmzm?WT_m1#6w>Qm}mJ3c`7Wa-e+ZBY2VC#AL?N81G>oU zHEkK(%{e0uLRTh~v;)J4mS^5>Z7BW*zCZQX+Zaug|M~e?GrI^})RRQ0+9BMHru~+^>2S3OstLyp6gOma#YceK-`M-E6&7ZWx9s zyDL=~S2ADE|43?0d9ji#UT_=uF1o@7I#!TuBe(fJGTs^OYzYv0 zWTtAl7mCF+`I*}Uk;l}GN~HpqCp3OjgBH&!VR>kL5IR4S@x30>jIS`U2>z<|ml90R z;w(XA;7;s31$Vlf(-wXVAOw2F5HFNYHFC^yer&B)#=W6faZ)z7(AKxdvf0Ed=k_t} zL{wI}by!GcG-jq)OOAP1jLFZj0V;D2GA>h)_xLVA_-7U!U8Fw~=g4{;9&Jo{@4ep_ zz4}F>>P|Rvq%l8RvYqKLfl{FDsoA^7E;9Z6p5rf0T8tl!zv{VU_eAn;1K1XoxiUdY_H&$c@mEi)BHavdE~XRtjWnrk>WRvTB7 zlX%>k*%NfY+#uR*z&MtW{pOM;So+*$}mWBahYA*>R<9IV1cw|xwip$S8F-`ya zs?9CYN-2pgD-nuzcl?P)dYq4)7GU_^8Qjja0q}qNkN@Rrxp+k|;~p$Xc=76x_YU_o z+bSEHm)1A3DpGYJHy{g^fIk3i&%CUn_@!Xd{91OHEEJ7WX*Qf{3TT3 zR{S-F8Vu^WD=KqArenP^db7 zI}Z^fPvIu-NT)-0ORnT#=L3sU^yenI9iqAn;g^W}SyaRe>5VygVsXKW|JXmeY%`7^ zXHXBFy?GF>q|def*@4qBj0xrsxz$)p#->u9v_tNtF`}y9ozk(t6<(M*%^0ja`RX?B zwE_rjLPhJ&W~d%No|8HBYsE`^q)K}|PJ*gvY-Cb&>9=yHBy}`i(P4VNhxNzn_4VSf z_xXCw-k@=1LkX(1qvGd-Pt{-F_uD(r6;LXbmNhDv5M|O%%+qE|k3~qw9{=0(GAt0GsDn$^W@zpXDJ~h-jGbsn5_Vc+y)LhA!0zlB=Z|FfyFCteRvQ`#XWaY7)Dmr&a!tP@HB=z zIj6JvHRBxbmPiL}K#?92I-_a=bM)Ig3~&k_8bbk}9_JNkE+nxTW7BoZdr*!x(dqb@ zveyLhxlcLnCUSXI%w?Hva$cMa(HvgVQXS1Mpbv9vnN(Pr=#8F>B>t%{7O8zC&f)9u z5T9G0d+&w!Lyup!3LJPd{|P7)fI zrE?C>;S0D`pTei6nEyyOOp@$RV{r`2N7NT&SU@nJ4^lk?kh*0@mErn7%>b-5G~eDo zCFgiVm#BVB*E(?26h)JVOKR{;<~{*sa1VBgN{oya)zhSBr0Tb4j`4wO3R~oJHOu62 zsnd_E5w6!uvNn@Q0RgPHE2~vetFjcD>M2Ki6C{#t0+-lCmy}47q+8nanfy2pm5it`U?|5adj^>Q?a_ zq%r|r6LAfq>YfQ9Wj*Q_^R4_@RC;*epj-m${4;>H77bgL$7v=QsOfyGcO7N2eEPJS~^J_tq1=T`r0*CO&w) zHpd92P{=W@Hc~YXA0H3VN;-q~-ki8nN>N`(=u-TmzuY-;|3)2i)t^1NQ z`S2Rz-a1(~auOKYKTDFpENc*|XYvqx3A4X!9~-*Tem$oVmV3%L(JKMW1x)$`QV0cz z0#^{H!M}b*qFfXC$M^m78(*K#*Ezpl z{CaCCJ9bSIoCDUabMQs}dc8hh=dbV2@9+D4@v#{0@Q5k*T!UuUj|(9s3eSdAz-$Hv zb{IPQmsYi4{&)+?AdMMo!lTHAo@ZAsWSwmiGRt|^83^qmF2%hhSJ;!sf9 zS1LGRGmLmBCpvP?J@V)$pBaWspiros+g09dxdUf!=(+l3EUmMgr-v0gnFFMVt`-GZ z6FMN}mkG}VD`wd#i$jrjB7{9ehSkqGG6mc^>UGti`%j;wdk?5}FHwK_b9rbG?h;G# zGP#W3?#8jI9g5gHW}>ttV>Y142ajRVdA-#!9mZiHxyEApwdyc}dkG|iE<>1pPAOg! z(XsCbZwJwP;n!D_8^i&Y2N?Lxyf@d-z%onvTfK_VLe1|s8c@g2k;16N!SSCEWqWu( za#q?lumh$Vo&!`vEmkD$l~$LxvE_7y~XEkC z5xGFRWNep%a&UH>tXGei`RPH2`v0rrtv#bWiQ|{9lEl{}hE)d(d9{E8IC{%u_|HcF zs4NBna~`uUd7k zS3X$}zFG;_f^ld%NW5&DlU3ce1c$Tawz>GC|HG|qX<8n_UhL<=UTgAUR zhFp=cK)CMJ5_7bxeZ?jaHHKx=P56P8t8ADtAbakF*g`(y1&9|DQaX0isx znF9K4MB7ldG1A=n@$mva9BK@QE`1A9bC+?kaBSb>Vab&rm*uZp#cFIesT>H;S=TpR zwk|p}|C;2?GF)uT-(M?j+diHv=pi2YmAO&CC4IqzF-iVnhFttp%IAhU8toSoPb;dDYuo$ak+^74SG&NPL63?TFG%q<)3J|7A|AIv zCotzRI)v7;K-u}a^QwosvCe{7L8aF1Fi0bY<0Y|7C4|I$c%n+*MU0L%zyJ9^{+HXG zb`(qK4Y2wi>~hla+KcbWZB;D_pfihII8+rtdzwh{KGc!b>AfWs$-DM%9-5HZAbyLz zFYAqSdd-=JE(?$S`rJX?;=CIT@QTjDWeH0}Z&;p33Nm5axF3YE$+&Q5eKnl8yy%Up zlQP+lTR*1&-cND8)CZll`d~Z8nSM=^qAa&is;jn0MR_~@>{L>x8IY6g0ra8CFe6BW zQ;Di8_d<$dXvHD>MRAfG%MQfY+XF_=>JHL5V)+I!gT>1y+yv{GiR#^`Jn3S;)gM>Q zvBy^-p_T}HjyIcyoyjovFt4dg-L4oGvScfFXh-rqxx&0mrBH4H`I>+tK~{d)a+^XtWzD~kzB z!64XE?ycXS`u+X+{i#pkmZEf@M^^^x^0y{^UoAPwyBdtDa!i2E2p)u-iA?;J*5&b0JQ@|cA+U9xKpe0 ztw79KFLul2qAS4~Ae?(B zwE|hIyt7#1uuP!bAiPWkB<>yOS60cGWudu2A=zfLCEY43SY`sf2$3BsJ^%JHtQfdy z--7}gomN3&SRUkXY048>8LpLbMQAoEJTG7uT0Ln))$*EU%Zq#4wd1t0A0d?)cZX$| zg32O&2R9SJH(u<0{2nkG&#H_aT0UUA8f&r(*d_L3JS`+%`a?%9F2`9LzI7qhh-K6m6*yWwutbM$>rLeD|C#6!g~xt*2Nxcg(ekJWmAzQH&->EGs} zVT9eb4U4UZ|CAkS<`p?`*$I*}gcDX}QuXt@+xonG-XXZ6cdlipOm&xElTG-yUQ?M0 zhuO%of7om(c3~O0Ogx2*@q!F^d}<3cKZ~lOYeai@&c1CwL&u}9^H?v(HjqWK(L)U1 zv4`_GT8tjHL9awx6LB1%$Ixso`8=kTKU-Ngo2d>6Z6;Fbj=`uUz;&;Jd73GaEgg6i zZ2i6MlF#rz1Ot&&G_yox7ap;4je$rbRtmt24NNF~Fw6|G?N$ctG1t>tLVm(qkRi8e ztO1LnxTDjFWSH7XC#K%YNky#nl=3A;YJQe&%my_9_W}EGUE7~HRe|yQFnVR~UF3OC z;+b0P*a2&t4W8^kTP$LMxurd~`+=57YAI1L84SH#Z0L%Ecxqt~6GRA>-;nU*ur3`0 z^B28HtXo4AboUSXixze^>&GHyR;9UCO`zDze}ZfeOabuT61N!Cv}T=%#T_=Z!f3hN zaIr~y-J%v8hBb*2<~QnA%3&mr5MWO-aWDwhL(7c0Cf3AoAHcrsVE_2I1R)(WI|fmA zU<&32Cw-cxKDZOkpU91#L!4&;wf~nCi8EOT~_+P z;E0gnaN_-9HY4-IpO(C0awF9vKOyTfYET8 z=p_X%ie$krjS!NvV}k!S45MA{svzb0E6pCvs07!tjoUn1t&ET( z_el%{LezVn;lvB$jOR*`p32d_lCg9os*%;D@l z3%mXK@mUcTK~L5#tdNa#`DP^>HZ~lc8m!@TN8w_?S)Rh!29|MIv5gpZ)$x>^^3z5e zTj+Qc-y4irR$E?oaKP?b!?8xarXcTG#EXo0H4b(Ew#7Feob-sRkC(jxvH|KfYN)JZ)ZEx>bDd@m*_G84R2`aGq`y zSVli7R0gd55HGH`F*fr1o{QJT3Yh7KziBY`&yfL_mdgIMry38I;}3VrpPpI#a>}s- zmHA<6c@5>V10xAKILHMG(Qn^=0nUKaSU6`E6V@$xxZE%sAU!l-(h@(w52ok{5b5{# zpFC}~p6Od-3~QQMN7fWe>JcBaF+G5>!EJhrLb)bkuIim;fa6s4F_avmh$ITOmGV?8|hRbtL?A^Dscmu)kI4eO0pXwf8GQ3X#)Akb+NFYF<;#raL z+y*1^!2+d0t>vr{RnK7Me`CzypInL6)>+MXJSsAijHd;S2PGa-%bkPm!w_l#kt2+s zC^}kL>RTz^c&lq78tt-yWGk^-+Iue0ufElmL*n(LoqFMadqM9CulGL|u+OUP%z}IA zcVdVi8MPV`CaqY$<*E0_&fF-g?KnU9ghYo5t=q2c%<#z#W}Ht-Ve0!6MF}j%E{*Ru zFUMJ!XpkVi)W?UlWM(~#|L~vw>k!9jxq$P$X+vlnlw|?9V__31~Wl0PWS1&V^H#VEx*cBU(XU7G&%f=6gtsA~>jZ$s9DfJkKT42sB7Z??abs95; z|0jFO&%cun0BhY9+#(6^N@#J^SAjfcG`Vd z(ESUy`wroXoYp)atpsu*&pk4kS2_CJRBTZ8HDy)Vl5L0O@keSkuHi%`{w+A`FT3ApyB8+|D_VLJjQAY~WT`sT*5Y0LP2;2{z z;fNA~H$rat|GxPC{`~&_{PjVBy$5#LD}Q7QpV9e~cg8$y(P(N>dyc3|e{Uj4MNKg?32tjP zL+>s*+fWrgbyX#BKzC$)a1`THBDVdE3ndGy>%pe!@C`8+aEUHfyz}Go62i7gcM3n& zLl*Z8T4v+ydWgt2IVzB&OsI&s!c!F#dTj+o9xdh(GnbfRm=p*f6cbU}gvRhppY6R? zT%vx^+f)G}Z1&RSCRObI5uJqQdjQs)YQjlk2a%S(5oZTowPoKx!uovmHj}hR0 zH|u>ln*DChz#I&8tgdz6`03nNV)tAKyeNr(t~QPwoAGqFm&JEbKOeV}H*Ki8xsZnJ zAL8i)_@nA#_U)A@ZdgsgUeIr~vLp1ApN3S|($4tglV|$B>jQJ7&8e1HVw(%$G1oKm zZKOh6U?Ron@b3r~hPvWSKiT6!{_K=tE%_~TwT;TDZRBO~9|G`}viXj2F*6Marf(p0 zqar>%^+}Hx;$QfH>WPaxlx(wUrt#pEPu1kIXaWX+{Okaq0Xbt157L9JyPAOS$qSi8 z9Z|C~7E}Ls1Gn8R?z0y9oXw0}7xLH<_Lx2Qdq;`u{{6|`QGLYU&m+0G(+DgPXJM~V z6p^lU@Z%18Of85VrZ)~*`7&VzU53H6s zTHh(du_l%$1?RWcVgO@WvSoRgUmca_+Jdv!*2rPm`&vqg+GJ7s#MhWw5MvefoB=vm z7=lDa3{xwxZc|i%+~Q1{wS$z@G=XAur#NG3Qi@ky?Yr(5aUfEd(AYa%LK{Zih4#naij=ScX(j5)d|t8Kk-6?bZSp01zdyP;?DOUDx9^#VZNv?^FMN1Hn^Kna5=;~Xc(TLcg3Lyijv7q>rbZ&dWsi#}Ku$mKM}A4{i; zfvz>&qk5NrKk>vL^y6fTvhs;`tvYB0ss#DERVQQ9>=rg;gUB=Wll)drZx`L!gi$`G zYs&?+&7Ag->n$vo(N2g7xhL&z7~7a0uab?%2W@5(vm23*Lzn?bsb*uEcOb0bf-Im4 z^a&3Ybdgm1skIW3Pw`%S|M_{p?)$?(-mkC2_si~ARlCS?fLp%~zJ9&_c%R?5et*|r z-}iS(mGFwtBHI?DyH*=XyVZF@+5A+dfAY8;u!SVW4HLOR@@9xyO~8%OR&>iCTXeZY zk5`B8n8u*?j5=nAZ8KwLxl9NN#h`JjeIM-HWnPhLCuF~9F8X$>ZsDppxH1$zOfEOj z4E>brQM*_)<886^CUB<5#@uNXDy&c)bJ?C=_HJ3Y6tX)tBG!sxpOHRe3NnOkZi zahg5mL$xPtg0*RiMbgmbs3wZ}ke3JuR@K9hv^l7;lVPq^xml`0!-bX|&TU8n2YkKV z^HjJgZOETB41-c|s_1Hd_ITw4-^4wls!zK~J%{^0kGZcDXnrHEf6ZTM1P*39gUYD= zo0#x$0QuPJ@rvOr;n{}u5XD!Z*67h)Pej1_0Hnt)XJ_OC-qJ)(Z zw_IN=-BvSs>0`{vOG9!zegq>*!E~Yh3aXl5@{dh-<;E+*Tai)N4_1&nkELJCV;>@C zE`n@N?}iks@pk2@l7HOHNK*Tri=I8MDLgmFOqsz^AhVrG!~m9gTH1&d4eaI5JZ2%n zja}~Qgck|TM;?Nq!{5qe{nvxubNxoiS=@Hn{*NC=l`9$#&steHpZ5usas6Oy+?ssk zY!T0T?qfyAENxT1zDb9$f&85cTnJht+BB-$pXC_qhH4d!AZfiulRkH`S?o}J8u>@~J zT3;GoH;hh-RN$HL68VI2V5ByxnnkabhG$9AUy|lPxOF3yGRE1SDW-n#x;W936TnRm-q9y#H1-7APL>ndzvtktZg z%{>BcoMZeSB={fx(|^6_gCLn?=lTf-wFV0rPYGb_oCD*ujL(Z#RW*IeAdrHE$^dN< zITcYM&OkwLOo<& zGWdgC`y4~< zC=0s6#Z80qW#R2p=3-CAhbn*<*(50bDU&WKbNTa(6S7#Zn_`qz+vIXzZUs2ejP>U{ z)ZtJe1S#)M=|h3^lzBm-MuqR9cL$%cgiM;SMeAt3Ye`K7a#GxMc>|7u7TSi6l zBqak-s9V=g;rff_(wn%!Cqq>EOL>?H6>Xm!rNVJAVs@MR=rvS(zRE4%GO3!J=ddd$ zSsAG6cLzsAP^8}C5?CfcxE9^WfK1>29+1!Hj!|XTD8#_pX-@u;d7`}jPSV_!^10tl-dz?Q92_%wJGGdcoG5d#C$tn3$ZUn{ zDf!3J4J=7)*Gnoqyj*eK77n}51YZogdg?JV+iv@4a&6P35|g6!YYHMo-GpC6k4T(e zh!)5&9K?JsT)d-J3`2xPY?tE32baeQY7VvT+%K`NsWBlSsPaS9zR%_@m5U6{2v3;e zsgX0Xf9L_jD`GS|KIzV9O^57$x@F!7GFP6Id)jw4?=sO@ zYBCBXFfrz#;XOC@HBXPP4U|05W(;ohh5RCUv0GRY&mYQD^=;xDh5?NW|1S9;Y>8{h&6W&f@BuH zPJHHJ@IW%{NF!)#jc5K0SMmLf*ahdXzoT_+S2y|F(`r@MLVI z1k)#dlw}_RA6x)0zJU9&sjnm1J)d%*eL^qS5W=f% zy^FRj-D(P~PXW^!kl;|aQ0(dqWA8ij>KD?EP)$}aK2IMe(f+20DEn3Q@0c}_)Q<7- zKcul?QJ}ne?U1w>h2>~ptySeROdQ85m15dvtZsPdMuad4@wUf3k&#vv+!=O5^2%|T zwts)23Myuj8nc_x0LHY2CbSS=eMuDH>nC!{M2X}irj9wPxboE&$QcDMMi48~69` z`u%;sZ+)a%1TXLWT$PmCdp{w?+({%S!VT*yeYb}iQ?Y63$E`i@*-Y*Z_PXHN9;ku{YYS~2(b3H9}BEbDph7yoG)hB~U5DoOb!Tn=w7z^y9 zkPiKR`p^*}t->%fr~yomVLU`As0xzwUC$6VR3Hf6)6oPcVksSpBep!~NH2~&D3-3)amxM-0LCekWmgo#y zW2WmGO*-nRCjrXG;mXH0YIScF3~`R?v2A9IXDm^<*fN34eTE;bkK{4@JH7{-I)W)b z`PB%qBh9SOhhU6(jHomf&i!{(c>uq)qB$Loc?8Yif}Ie>JUdXf^fS+J$#kwdXFU!E zvOb2@t6kT6agZ>Ha~!CV`xFF#nJDJ^a&k5nlt1GBASiHkPTI8Cc^aP9FdKOnaO z`)_ElX1ShA%l7$a>Ioi|y)A0Gwd`pK*{1jFQG3|QPZHDu-7D;PE$OE`9{g=mvEg7n ze3t=+r%kyc%Q^F|5_Y9smh0t;5yKDwOysg2LwFo_rByCftVM&k8`tzXHRuRRQ?H}n zwRhY*_q5!RDuds!iol+#FDDc~RWqJDU!Ii2QC|W234k+6*PVX^#BI;pR{r*U?{AC1%Ydlqd-hr#z?RZ z)h30;sG|fsn>FOk)Mhfdeo7f*>IpzsUD5{>!iP`%~Ya`u@JZZ>8XV5+LE6T(DLX=Vm3dMLKK*OVo$GN8_R_ zOJ%LGBqQQugH-W=cyhb^_2qrxl{@&rmNuu`n@&1L1gi<&fbyW(&`qo`sK5Zbt?LR* zlb7Z6B452pKmk?vR-cC}meVG}_%7hKA6lPg3r5u;5g{**$&{zeMfSuKZ}8qFVzgoA zRa9wgato^DqTVaPnV0TmfwQb#LDXiPS3bD{%`%Cx_gxS#qf-@qY_1&9FknJ847=(E z5L-3&-4ZgyV2@u<)I!>mD>UB8xnyc1Pt8=qE!SwWoD;a0JGY$uu+2$dn__$Fp$S+# zsbVXReMYbeK2NiZ(O~ANh_;ACEweGOM-_U#_wWV04ysQkLEVqd8WTdS!+0Z>*X)EO zM36h~&mc6wIye?DGyNgqtv+2H_01W>t)juf1TROjN2#*3>}P8nuaDeGCa#yT!4Q$} ztlGRLQ&S>DSBDqi-4VZqV-Sz25}dVN2gDgu*klZ-M)Z0nJRXJs*lxn+A7>1crwh&NOBz>l&|eoT>$EH&)`%&Z;W~mea(ULaqZHegLluj+M(9s_nZAU=()J6>eruXj4M~0UU(4H|!ib zkBX^5zTbS1}_6(g66VX7iU=E%>e>f z-$hol20g|NxLW>dp5mzQuo-sj@HM<;Dae|f5y|%=t`6qgN?WU&cWugMmBqU;LR@OF z8I)CFsmKh1SIGL#(6}vU2Z(v@tWs_Jp6|s9Y}LL~WxRlo|Ei_Cr4DjN6M5Dq8@ay? zR4ajwC{pVZ-0<65ZTf|Id`vrE$&@5+-;H)HZNx1cJh}b;?!<}Zm9^t)A`rGo*ont` zXKK5@47NsV>=?RZN-G%6c>EPkfO9q{rzQMS%d)pXT`MKqY}n0rWXi5VJ+HfpsEba< zsV0#5{*D7GRbi8pAT8PNlh8|J*5`=L!DoYq-I-C&cIxb=FT3&fUI)*%(WsW#XU1qqAVy2zEFk<6_keP(Ez$cvDsbrwB(z9xJH7lCo@&RO9=`T9I!?9P(rN`4ch1x(AjsHe4>M|yq`yES zuUCh>$lqrh^Q;#oW?&0Q?!#sL4z-hslV+`vLIJ$xlO;kFa@~XVxEu#o;l){K|K{QF(>{!1VvUX zZJC^aPZOehpxS_~LIQUk5n~UXd(k2wdB~F!!m8@F0PQRON|<9#ex!PfsuC(SmADkb z_K>FBhr{-Kni(QvSdvL44j7jFGO9gF~mql zZVFXr`#)nZwg;;6F^C_n>V8;r>dQ0M4Rd4Tw$KZAWGNszpqjYqVO7aw_M zUuGoD&8!07Apt)qQO%vkHRyECB?`}F!d3+d$x-GGy7rIZ&^tK71q$Q8zcw2pF7ueN z4Wdu{-f}jgxhOSeyg778KdHpgH|9{mC*>~RVaBtq^)Wmnt>rit0CGT$za5}3+3o8q zk6zUrXXdD^29J{#s-43df6R;%o`zJ??@JJ+)JwkDJi@53#H;{C#jLS535R09wqr{> zjKBk>=2pRwAHian?1t^Q2Vw;ZKvmCQD>zTi>~K^?PSI*)QA-w1B;$Djpr{G9lLczh z$|OuFl=!!`GTY}9_P8D8jfm#?HVylX$F)&glpN1EeRR;&3WU*MK{S?p(J>iGtH|2zhyiXMyaD0_Ux+Z zt0`Cv1lM?cp#$|Ohkg@E9X1Q8&)M@GjYbVod3pQ*mOu*YL6Ofu2;FfPVr9uAs9 zi&8}>3g3PhBH-a^$C5}IV=NWeoT#5K(_mm8Slezl;iWP`KYz%{Om!%1JS%dUAV1|J zgG)%kVC2kto*3OfL~ueT;k0>klGND~tpMmfdRd9>r+lL!gaz+|fk9c>caN#E@p=c+ z1>m~UMq$XUNIlpwUad)3?GsUEsIjV4<`aEaC1`lv62*AOB3*-7On@mwCH*2|A?^pj z{Q{aL+L1NFGp8v;eYR4fnoSC@PzQWDVt04Uu@wQtMHP8YMPp>%Fx7}F(})2gjJ$(t zYzKw9A)5^Ts_cZT6!gZ*g4Q^LZ;b#g%0s@o?@YUGm+wz>-gz}Q6i`Qu>t>eKj)vmN zLx`h*Q%AD$;po+61wo&oa`vGBZ38Ppxe`=4KNP}THS_2io|~Kv1iGL3(X<90^{L35 z#Ma7CS$cWd)*-V_7||CJ4eu)IK%Snu=Bd(ZL%9we+F&0s&H<$`R#o%Ht1Pg9>dK=* z2bx&xaVU+PMav+=$Yr|1F8O=RsY;sfJweL6SS8Sqc++L;!{N5fNEB+X?7g&#!ue{? zfqu~#bG@cmMCmi^P)5c+6v~OJdvBp;%~PSt3{8BZV#1{pHyb5x@mgglRxjrQ-F~H? zRq^csS3^%#-HXq~=i;Bg@BjPP{lEYD{eS)W{f}>auL#_Nbo6R8s$ayv{yP8mFYkZ* zy=rgRcGS&x=Ii1-!^N`2q>P)MluiI1JRSqkD}0QrRGk39FlsAPaP@U%9Hs zEE7e#2@TPZE+x9Qv}Y>mVs2aHby0jw2yVV8hlDbKC51C`7;vkQ;TI5zM&CN9?E|Qm& zy^X(WnE{^jV(+U!2~Lr3o-KmY;+Bb;A6)Pj?yXM;iMr)Kt-7|{bMQLsjj{Un6KrUd z0R$(u0Ib=^$QclYjY7pDqi&79eQ~|W*TG?->QnXo>2dmDXkhGNt4-409nMnbSREaz zy|lH~hp!8{m4wL|e%NB0flYcioS9fm>JbPgAP%1QIBiSod%8`zw(DSTp)&W3lWCkb zBw3p+u(GNjlUhqhx?X%dE7-EYSl&}U?e#SJC6+eiAR8Pdj@kuFLF~bmZEps(5~KCk z7avnpn$M*u1?Z~osO})>0-2H0wtU%;NkCSoTcQ_`r84bR(%YjdL8< zysr_)7FUx>O1r`y$F&i43501=ESs8CEb^Mn-&L|f17~8~%o{dT^fkul#Aq!5p952>*6#pLHYAxu)-Tn|(VDuT} zgoXUzNTM6VdzU}dVxHvyYl*Ue^ ziqpGoI~_A}!XvO8{Ht3@iyW8(bUz6RL)a}uoaXrpelTm1S1gi23~%4M1)Gfy6Ywj zRg8FMSmv#RDvrbX+q173kv|Txuz;K(+U#M>$S92};p$cs^8&?Ok@4_{UQ4-ou&b(y z|LcGL?_GwvQCu*~4r2f1JPT3=e$>m$Cqgo|VDa=eJ=JB8Bmr?-ziT{$^H=>Rb|uVl zbM4+aOE}WIcvm8+T05HAQKb+YsNt@a9oEzX>_#E))2zEfY8JZ_rwJk}UhLxB;ERg$^#GV@dej9{0BDw}j1-l4@l0;k}5mh+tQ<`ieBqKt*Ma=i>Z#pNP- z?==fDyIkvXBVRX>Ey&WiqKa%DfkNe!dXL?!C=i07BS<`>l|4~EZZ+U42spX`7lq?h zXiPy}BTrphouE~89ed*fhMx^f@y@K8vdC(iZqLSERvB8S^l^62h7X&PyOH%e=Y8iO3or9`C>41p)`_|`kKNs%$1iBz-qba>P7_>5i7yt`<_6a$CjTEE^7PXZb z2WcpQ)Ho(8{nGir6Oz8>QbpO!DawwCn4GlUW?9T~j#nY?P3L1d*CEfz?o)M%dv9F< z+Bsv-jy#kd5=@huoeO~WZf7bY8vcV-3r2lY?|HMMyeXP~XISa)j`t~yg$hjDfj+lu z*uI+L)rcRa!u#H{uCN$YMB8$8WHZz@Gq7a^rs6;Co1wXhoP=MvvzaZ9XGj$)Ci|V= z^7-BQa*e4(Cbmw<0%fADo^T9nScncdJEpz}{{n*I7RY+mUB2NrwlOy3IAOJqn=n?h z^=pXh2Q4J6*O3kP1^3>MUSAF6S>o~|`%D*~F1KMb@MWQg?+>Ovpf}y_)!1s?hTAC~ znj24!g#20>km#h%Vmck1FZDIPfZ0-@K_rdUA|91;F_%3pK4~@*L|J6fAzC3+;AX;L zW6Je0JLx<$zSXU+nbzE$yDN-5!?-{c;e?of!GidyuPDb5&gcO!qz+s(WTnwW`rN>?q`vRAJ+j7s=3&E;mL(2h(3jO<>3G|W%TqSHo05W_?HCQ>$qsg44caqBd8u&-UImEP9G#+LqQIE+=sppeHv4w40{uSxvP5nfFR}Z# zfOZsmfSd(Vg*3>o7&!11mCaDY@jL}ScPtw1&n5fEAi+|74=Aj|9~k)7#B7IR@Uws% z2pY{b$8gQ421YUbYPqp_$k@#&LZRQp2)o@eRf*h(OQWOK0go{xe_pW`0-Uw_OHueffsRWnBTK_h>{3|1)V}ViU!KnmIBhPU485f+*(C(nXx4D_L+lo~$ z($$bSBMP{TiLE#oQ?zDVJhQWR$c)Ucdi0Np*8uG@<9e)C+g-Qh$~U8fvxk?bC8_6_ z=oplSp=WZU(!+>UOkBvjZ&{LtM6`tzI}1XN3;0}0#%>#8vzg8)Asdj?gLBOM}KZl<8%fs=9BnfU>g8bj#<2O zu~^8)@y-O|BG+O)N&|>FrY%O^XeY| zX(6Jy6J2|)2VT5#B~SiZx)1jkdUSPf__4vuqSoSI?!buA7yKBrr{lX9$|OCunFm}Q z&lhxn#a{pq>PD}AZV!pNxJ}kfJ>qP#dhcbHH41G{r(YefUJkyp+qD@4!3%H_S8Ll| z8zRb8j|d;@VfuJwR&|)yFiG626Qa5TeyhGe_4`xrZ~XB-zuxDI)1zr&3V2v}v0iV! z!MfUk?%w)VX4GYkv#8TD&ANv1)3pX6L)&o!h~cPa^~O{QwLUe<8p9A}N;e(yXBN9#ZZR1W5 z0}NUsl&eB@0^asj|2&C@EXIIVIkRklpO4lW>&Yajzk85qQk3f=?q?+AO5IkzJ>0;W zT^gXwslPJ`fxlO`=7n6ZF4<7?nn}O7a7Lww29q$0ykzK}DVcfHBqK9n5a*oNY2U=B zR8t;ZKFxz#+(MEGMWgcA|EWdH2dp~UtOXq*Ak4nV1-hT8=F!nfRDB(bFiOIV4g9I$1e_s z{k7;dL}`p9fcM5+RDBiek;odz61b$4(~Ie1_lN^qMo~UZO6n$)}VyDRaI*;JPa42 zU?dP|s=-n54o0+y#P{0a^@qetU@`{L$0*9G>e4cJ+^lWj-iqX zFrts+Ef>!eCh`Gc^ohI{(<8Y2a36abBF}N*;RzdK5~2D|J&H%H3DU+Z79Lt~K`7ao z6ampf4~7Wp7CIiUTYc$mo`h z|$x=J>-;#(d&#T4HO_S>3aGhzifRS-rJT7WCG|E;$zp{&_Q0k0k>!yz2zhcWU+ zxS2+lSwV1Cb%PQCX!EaQBSQgaZJ%S8=-XH+@bRo>Zs=Mc&+IxiiCzO#V^tMIC;@~m z7%2>}3ao-Q7JK6@gW=PDlYrlI^wy!7j&Et>XuXHC*!sx_uHH7V1G}6(JC7tD{u6*6 zL2sI1&0_(#8(Y6tGQqnpaMzb_-)no z<2G$=Ga?1!&^rRHuZ{!KS-%H*#1$-ipbCesblw=uM6be-T6QJ8g)*TJrSug$irIt4 z!LO;7WC{#Bu%EOT9Rlh2J$E~;rhbeU((hV-2vn|!8M;t|?wqzI4 z-~&v;fM~lcvxfk<-6UKw+`i$DroZjfyMSwdJf|JlDM;15{nBdL1TsUrqs`L*Yu&*y zSairS2XJyRD_r)#u&_kC;~zM)q=|}yyYX+zS#hhLh8&jSBseZVkf%4;Y8Y7|&~a_u zFqjhnKjDu@_z5V!hFM>M+?bOuHxp89p1ZhF&}F* zMc_qd*V#|u_A5KW{i=LdI%ru+e)$i@kO8iv3TNWJl<>jmT6UE*xgblL5MueU5F^Tc zle5Aydx{#^xtT2{ho>hrtj9UlYscj&3ePWniM2Vlm6ETP)% z=u65v`te8cx$4L5@loqvec#tCCZp}*oRFtBf(aRo^XX`&aaR^l^mf1 zoJHZJtL*yYG!b=_vnw5@O&rtEmV^Z_#M+WC3To#hiC&jP@|FU?;gmhqbqcfA&*ohW zrbxc)CbBv0G7F_F;8cFqZ|6CkD^vfOIpu!GKj#1cz%nIfBN3r zlpGmV(FvV#M0_B4J1Y|@iH&p1qQ+h(nrCdWPmV2BK2H!&F@dq%c~+SSt@H=hZ35nQ zMFnGrC||z-b=Vf?G0S%M<;lP_!XZ5$PK&!&0vjQa5y zklqY#?Bil9)+)Rs3CKyx`O-LBLzJwjUc=0_2Z`#ow$>xa-VdfmE?%EX*C zWCiGwNh4+>pnw^Gl6KFH&NN%f^D`Wv4i{^*x%fVLzQ+VZdF*Pcd$g@EymL7RobAQa zY-mlVI~F+rlr3W%Du%74tTMFzuqSws4jXckTDNN<{(N)GNMFf-;;vHOT{dN1TTqRd z6LBlyHV=j^Y&iK6=O{Hcp%5D@e)b1A51N|8_6P@sF%<)wfph@JD(mYBYuod>O2a1* zmen*xDlCVXDd(a5-~RJ|yN}S`l%`MEyHMX!4u=YPn}TvMwxu>&FXoj(Xl=}kYE_sf zEKfj?rgK&WD2muF#nC=mUa3$8Bel;lIE<-JP2+kc;co1SijqgqVb3%=IOGrq@fRE& zpJ5BB(RL*6jilu+q z0A|84Fe#$1uTAinGJ5JP{jH`VNB8(!*H1I+;2V9CQB2UbET=d)o~{n1G@AGSMXk-Y3$=Jt#J%vV4(Hz|evO$2Gg*N*n{;YVo&P%iah~dZ_y;+*>6JQWGE$ zXpOtZmJL?PE|L~|y(p~2Z5cv8EIsO)(GRD4W#xgxe}DmLGdvxNq4n0M9zpTq43yQESA(WkECaS}5v?*@PZM!QaW+ z{nIDm4E$st*f6jJ!Li&$&NLw90C4^oQWHCSFuHjJnF1NjnB9^)nsuhW z%Q<*~M@`c8xwydnc&nI|H9Dn!@JPw1ZvrqHB$MoG-%Z zgk57rBj3kCLsG1;Wu~sPSrYyV%G_{b=(nkHLX5fhqR!7=O&R zYY2nYC^E~K_eiEY5)EHs%raafgPAtczljaQF7t5j9+(`(CCpTp)2FJQ*D03>RdWh7Crn3+jh zRtWTq2jMFJWd(AJD3)(>I8kNGIo3U%xC6OXVJ}MCTwfrBhb<>gdYt{lv*uL+uH~>p^?$1V$<1Uh1ELjoOPnd2!#LUusunnh z6Rb>Zg)7whd0F;EkU&((z{Iu9909DiuKIjQ^s$Bo^wEHK0iq?-o_JORTE#4D)Rru7 zP|M@>1dS)U=W=hOgai4QM5HpR3<}zKu*M4X!i6+6(>E^!r?3!@}cj;Xt4ij?MK7qQZyZj0#ME_VD* za2}jT=`IQI!k(Ur9Vk(v7f0HGS$eZ=BIMe8F4@6y9BYMih-k>v8{ciPjM?8x58n8K z_(TG0H!5Yrk*%L2Q|L68gIy!Z!aO};vdZ>Q?r@1gDnNi`SQ+R~%@q-W)lT!~OSJAq#AVf*iLS6NC*|L*< z;9)Olys$z&eRO9=JXx_=LzdZ2HAFOVte4V<*Ql|p+)~|Kf*S~r}CrXHR9lfYw zV>1^QBVd!55dSb+G+P4rV!zkx(b*aT=qrY-U$z=~_&QQZ%^&Y>=#VttJrJMGzkA}h zEkkBL;Zc@Jpv*M=A>rJnP~E^rz2n$z9$ieHh3UnOY`t8Oo5P4>h4U|%1IT+t(=owf zM0_l*!LM>vlKEfT^I9k?ZXd|pk?Cqg!_thehPtGP=S9Kth{Rz@txn#||4 zKc?IRl3q?&Tz~47>x?LKDn}9zJqF&z`BhSJPm@OJ837;o(D~CUCskOG=;G1XEkw3~+dDiO zL+wQ4mDDw}uwX_X!LT3en$e`OKAd(XH!CCY^BfsPA|%quJC^w9T(uZ8s4)(mPd$$2 zAH2KA=vTrp4%)ouyYTtmo}hFuM9`6EW0uh@GL6=e=2a^8?{FzhtC-du_6A|;SyB>R zxMNxx-f*cPk_B)LWg0W4&%J`io(cbkRsOD;8axB~b2|`hBtO{rc*-ceZkp{I;2ca= zWc9Zlj1rolIH1}mSFPgi>0r#sXbfj?J))M0%S`*Zpia@X z+un^BBT0G&5ME()oG+9H`bha^Ml*5WvwqmtDs4^21P~s=hdgx;x+z$Rnv7^A0bGw6 zS#98##r4&E@=ula z%#640sRP^=0fU1KBm}RaXnOa051A!@*d_YMTjPZlOZ7Z^Wt@VA+XW(;!f__hRk|sgw9z`uh%@=RfVI&7AFV&tb2q3FE*wTB99MDRl+G;#Bj$$LrS`_`Y|_m3BUebv|Nyw7=^%wfgCM(CKu@hFuR z8>#27_djjj_42e2Z38Rl4xS4BY@?2tRXU3xd%gAHus5a>g$e)%10?Dyt+@yBjf#@t zIcIU10>aU1J^t)$MX4D_Licy zpd!JzfW5%{%x26x%chk}Y^Sk+5x>lazQFYnr$dpsp6}PhG49zvBe3KtN&<=~)XY@R z%5!I4hK0!1hUfXNfE%6kZ?DIYr4<0)kfRhQV#mU&UJGsKnXCfPR;E)k0|;+$+_#$} ziAMTx-qWg8(2V~V#%zXMX=TdbG5y-y2u>s+*scxH#(sZ3-Wuc_&J#`<^TU|m2zj>& z>>+5ea`~6Wuyr(84ClK64?FAAnmsgUYr`Of$Z;Zr0I1E65paq-#B_UbcTrS*o^}~e zel{?0pttb~cw?>=`O@>A0D+XDY^$DqnUIW0XY^u5!?=2y%$)qbz5;Y-E5V8F#cN(3 zqRillP|-)S4J7|eA-abeyOdW>(DwvnB`O!5%&Z&|73gik3*Ai%9IclNxvK@nh*3?+ zg;u09I)yw0q!UZW9U^qAsHC!3fze*#l)Oy1;ez1A#MaWdw&c>=6h6^@QT&yF!S09*YepvZ9ff*>#;oyQ5=pZ}!H|%T=)PToLn_>_0xU%lsB~P#y zjPVV^*hd|iC=YJHawr~j6^9%zG%Pazl+^p@2ikBC8z9~t`{9I#Xw9L-5eCUwHZBaK!nMqbTVktlo@L7yVUTN+ai3T`gvBv@5CoGSK z%pa$`1glI+m2nkr;Wci}LwfG#Oe?$Xtc6lI)m1dRu>o7sudGbuagrGUo%brWR*ppj zTwy8n5!dr8OC!-{Oaz+FS&0uvXB?w!nOqKB=AOi@p$UtdPh7YB8;a|;!YxwGUt(7d zR|ZCtxrlvi%MTJ!Y(qLAd!GcYD%-e`&|4tyHAggj(Xb?_Sz+EL+gl@g`z0*1$up|p zmIjb7O@y;1m%Xe+O&S3bRO#(|8VGOXYynY-fszNXoxsOSSM?i*eH42r3`+0M9ulho z8G|(N1BlX|4sEf5GKZ0M%vk`STB%idSv6eJ{xkdUrzU zmgS@0I&P!Ps2qhQ&qR3N&tM+ASHKD%@r5#y70(E!{TNb&rT1X8!#eCvT#|K(RRH0b zwT#z4dpE^kBL{_A$0ixX;Yq0@;Z^EzanT;(r3oV&X7EM;+QgO6paS$x zH8USFmIkS~aHx}Y5FZ|q5WLwX$}p|~dIy^Q-#`SVBJEh|hy*qPFc}PjH}0USwCS5C zdr(&g{yf{2GzA^mlf#6E90SE(knpiSa3??yL*2j3JU^|bGWZA$7bhhbqg#WE&Z*yGmAKn z%-0q`pt>8@;YEf}*Fc?Hb!DP#l>LlLow62}+d=wfRi3F!Q}0%ADiIb*RVDq>{F<_^ z4i)ns&xx$;YB`d$fiIZw1$P2>TdtVcwi9cg!?qT=kqO=M_Kr`Zv?Y|$Zd?N{npSwi zG5|X)pHK_h^kpLeyx(!>bmhr*lsd*VQW)nR7GfEvwdiV2BJ(32A=ST-w2o`rv8w7g z_9o5gf7~=5!QT2P2->uS6qa*Ds%tgeo`ThvTU5;&hGM1fWJXKR5MY_NLZj^F^U+Kv|YPN^4`%lGE7y zav$Axk@}W#IOguQ+M#lsaoG(FAnScUyABOjSEro=&<0gbBIA?dpVC#|b|e6muV%`2 zyc2r~q%8E>3qn@lIU-V4pNso){95S0FM|;*Q;{6J zbrNTrL9>v$bp~0eCrT66T#O?1TNhu_8YOuebPQ(I;+*#I6H4cxM0mw7MvRmqvd zQRkM9N#24wZo<-O#jBzPG(p+Hugt!eYE_o2@{908jU1=343a$A+smW7g~~A#-u4c2 z{B?}LNswsS9qt(FHcSUomd((|evxbJB|<+ORzdBobAyRg4wcS=C5bG3+egL!>{lMP zO~b-p@l`{9)C#c70AoyW z!s*!(!}8ZXsQ4%&DO_!nFEuseo0T5G`!yimNuF7oa~w^brPX+Iimc@mRi=`NaTHC~ zJa4j~A22rbVacRILR=og_`Yp#6Y+xggPX#j&Ce*QKpvAQK2zq!Dcg}0)98GwvH~z9 zVJi+!0QH=tpH6bd{$%%b9K)ImGTmXcg#ym@%#9E+-iJ-V{6A1p6S%iK3~@?`kDrbi zTb^+;Pd+wWKD+^VW&#;sEw>NN8YB|Z(!u;L`aNcqfa{viN(kVLWyFFES6FvsJXl|F z7AoOdL;$M&*M_su5)tnBXX4Myd9&dkyl88FF`wF2WFFz@m^DB#K*N+w+LP=D+*xRH zSvOXrlcQOYzym*BlbXt!3vl`=feQnt;SglN&hlS`N8vS3Qk5!G6{6xX8~++hyclyG z?zHmoB&UXgbt#a;$u0IM0uD1jV?&MVCTR9|8Zz>Ykh5@@rMpKZ$`Zx4Fh5N;XbxDu z&;wsUTI8JXF$zymd*DM5(i2Z4Kps%_0PjsOP+{+5!xJ|&GdX1khle!m)sM>f)7w2g z+iO%}nWrk(*c0E03D(HDoH{uN8z3@ev%dV^EJxSAuU7*DAR4^3h%wWzHZ+~@^eBL8 zRb(5F{Ku{V+ffjE8Zi`7rYiAR?HILQllc&!G3*&j(*;h4z}S@lKqYKBmQaX~8(n8A zT$Zsct@+PYFPGISUmJ=yk*uoL@}1dgQf-4@O@aCciq7Q5B3eqBYP{CZ4r@_xvHihW zZRqGm%gDC2o1N$vaFgfhSfHOn+B)zyi7 zIe7`d8}K%8-r=XQp{pY=;@*5^psF9-!M2yN4ql{5(&6ZPVHJ6*u9rL;jvTt@fKn!y z#6oTIjT3G~O0tY)4IW}lP}_hPULLdl466Xvx~>REgx%xp3_X^Lo^mN)To7D3cIj5a z7~n$;FNt!`ke(Iatchk+BHi9rv1!wn=7?G+@u>|emFFGc#?D){L&I=f*C{~Uy2qu) z_C2S$5~DVlifaS#ioO1#pe1lW1lJ747L*cY=^$L&F>%}`;OsGRX&mglk+6n)FZnor z(a1cR79R^@8)#8t{+d&;B8P8gQ5fMQ_E2=a#@DoU99Ot?H@8Cc@Nejo;Vh|LjJ&F9 zj&WO%WR`n?>chMe#>~a2{z0wG-nuyik^1gr2Qw@|kNWN%jeB6jM|znv#B_)Ys4sh2 z4II&36mH(|Ukkq7!(sl?@%nf1^L@WB{yg{B>wLZVdgZ1OsK*PCcpV<{{W_mp-=F*Y z;`^f`m>d1CBGznMMPl94p{4-#3C^k)^cYQ)eH8n{D&=BTkHZ$Ac%RT#z(lQtg&ar< zo^vXV#I^x#qUR^|vxbKlwUQ9Egs&dpmumVe)k)lrHD^qw;e|DX~zsDiDx-Z zW5UgfE-NnDIboA?5Vlc^Kd4VoO%)E}J;CE&Bt}<(FWbIvdKXKXd@)Rp86~+#ycn14CAx$PCco^KhayM!#oXK0e!YsDUd!{8-$zC zAMkgtzt8+atDv*`AraLuWe0gtr5T`YjFSSbyt-7L+i(E6DIqT&Qj2Wt!a3(X388dYP z(n*2=pQ#F`piSfbAU{##o`6Nlv~J1pCNCmoSvT%#jdxM0KdvD5#Cn;oL(8BdI3t04 z2dQrOKBV?ZSgJ%Y$3X)N@$}q5OM|%)upJC2ofaDLYA)fZ0fJZ;MU#37+`QR~Mj4A- zcq~;FU|vD*jSG}P6sZHsp^t-d!Gx_8evI76Qcp_Ug4kJ{uy>XsskXj!xC$nFnHti_ zxC}U3k=lbYO;J)u{>U&TkdOwss%YVmD=ABjDMJ{?Aw1fhCPY*tvM4T&V$Rq`h@nB8 zYMiDi*v(eE&aLEDx`72O5!y8(HW||W+u{Lj(i1w3K5|aZNUSs?r~NbH9Z%?RwbpSZ zr#wY_a-!h(-G*LBmm_rDJMR30GzzlSBNflT%M?q2Z%6XKAepPp23z8c2NEG(+A8p!e0jI=y&E#fZ9RJNP@==Cmj)z)Y86VXB>u3+Bs1zKvfPG<1al) z2dJRy9%?ikfRrT0Y-ahhEdMcG^(Wc&9Y%D^+Ay(9F>?-IlH~7b+E2e0T%|Rxf9ipr za}s^YERWdNlHtWPSQm6Y)rNF5<4uUOBC?DjqBD*6H?2GXaqjD%;FaCF=8QJ~vJ zZEX?xsLUgQHlD3|BG{N*NTx!sO&Y-m>mqiu=-F(S+J!l3{Pa)k{Ott9bdUkpxS>(x zEsaWE*3m{sgy-o1&gqVib8&&ZV%K62q3x>!oyo(hv|SNE;0BfkNRtb9wDO31AO{@vO9Se2YnOV)HS(goSp zC)TAY#x#%{aS&d5aKK3J!#$;38TomhvXVYT*rKbhFY7J>L=m`$ zxWZM3AsO?mU1j6j+Bm$gB18?pzcw$mRbVRu&mV^PB@3{G%D%LlmFT5UuG-beu zLLZlv04Kp!+~cZ^T-n ztHCy*N#NLXuaqPxnOMi>kQKd`kt8>Sta=5+NMv(#Uy3@W_X@cT$8*r?)ri)2^tS@^6V%p>MsQdM3MHv${BA^oNp zgP|q#Y=>;={*~{^QmtNj@{D2qDwV@)@fjp4oPI8^^{AF|UwsXI7Fiyg2;h9oNAECLsa0S^d1CgBA7HkmSZf?u4kpP zpq$VW(tG-&;6w)pXv@m*TB?Owa0%ZN;*6VN3EtV=dFbS|lfr0;cV0=ZMBAhZO`Hvo za5W*$o_Qfjstc?GTSJ$YJe2MoW?qOuTkNS3(=*T|S@6rsiSDqBY}WzTaO+UcE3bASa8DCKEI~RQu}__>Gr4I>f76jxppZx-EOH za^T-GT&9Sqs_$oQ@9|sLHAB^mQkn*bPmJbcaJ90n|`78H2U8 zNW`0cu&dV&ybDsl=4e;zWW|TWWSjk#>S>5nZPmJQRjRQBwv_nj=^Z1yUE3{GACuV9 zk|{|`>DoX+duK^C3-46gaKv>!y;8T{C&n?&sNA>cvYVqc(F;4?wTZzh_Ugn`AU59B zU2AJ&OU-^ziu!z^p!Gp`O|f1n;qa7hoMYC&L#w9L#VENb;GF{&uft0=obsl#4L0XE z>Jj1=Re14O&;905l^WvAy|-(Krpl#Nf=*~rT=kAzCGRf_;&_)AlH28pQpw&W4it%Q zu?)z?MAHv+%GlHfb}VqwGs#5xbD}MJvm-3WbJzk|yFjNA(z3CuB{ zGE5DxyI$or{o>jV<|Z#R|6Pj=b-|;EfA0hsz^HlZ`{IN8zW1+he!cj|>%3lkvCnoy zE>&hy)%y7&UcX*n7vDJ`q7=W|0$-=`KeAB??D!fPv-#=_ZFanB>$>4XkJbr!-zgR2 zs%D$N;U(Sha;PdsjrnL+qXjP9PgI84Ay$;+U=rX&gknxAilIx5NchvwR=B8ha*nWE zPKPEPLgW^7yw*7{uE3!~uj`<`5i?C$6W7q}1q~jqhbak?IkMg63#s37)u z=WJiYU>;;>7OT*d9R#v3w8ZRKWI?y7-*vaFPNh;c>h{8Tt0>jcZNDuc8#3~7$Wv+~ zE`mNl+0m-zOuTZKTG$_RPt@&L1gBY=%k}s*c~8=(-V8gAF+Xohd#y&CT2}w9nGNRV61CrA0hG==4P;Hn* zySaB6fqz1+sv_cZvi|;A}+NUdHb(nRf17qe41)aW0uYS2*NX{fzRJxM+W&_$) z-Jl?T6$3-l8oQRKm7ix$TY(#w}MA97?k|lP}W61n+KU zVL2zIZ$DTgV1~VnfOcjELG2+Ps|J8n0jk`bUkd1Y4>$hlT8kg%B-buX`vu(Ou(X|# zx{$)itvA!}aUGaEsCDSJ6KjJ`V~<*STGq$fQ_9G?_c73Z(ilrs45^$VBy%x$dFUf< z7N$YpwCaZv;3E_T!S;IB!Db0-LPtNFjST&mI=;U~t;=Oc$|LA;F0_P%B4`fi;m7rKBhN~Ct5xrjd`Y#54r!!6pTxZ==Z`K<`aw%=FI^B{%kR{gn$0n1-u z9ai-LWfHKTyL+Oa`vSR;x;7q1-K<;C!Iig;67xF74FJTISZ085QPAbq3fm`ckUoor{Wcc2<=dJ#zTz2v`ABxiio?iaixDHBsS=}t~AD;GPbs( zrqz-|%|EMnfqPLGxA3|6>%0E>*ZqI~`T576pMUzjUsx> zKrqo&iSu>N>)F)4!i;btdX8ag;DR(Q5kpl}jab9V|X$0RX=w7=Q)sDR}y49b6rLS(8} zVcf=HGgs_1c$dRtTo^Nq{&X-=VsSf+P$qZ9v;3z?xQh;6ZFJbw`+hLA@<}g@_4;K+e%&ojws(h5s>@sh{25aTJ-8*u{o}09fDWE}t9|pwY$xvMTz2 zT#h0@EOcVAhwf6v%vZ9I;f=lZ$f%lG|Lg9h<&n;K)^=JI8&)gA zekPVZEw_kTM%bBk@?%yw;7_i(q-d1V@Hn@z^D`Fsp#H(>5)~?sPl&r$fN$6{*NwE26HsFp;#FDS@$gv{?&NU9kDXG^X8auFlO&nIX=BdnOg&Blo!HHt! z?yLfjx?#$v7q}axrzU>yWw`>hp?jmWhI@U$5oURFba$HjjpN7$Uj$rQ_Zpy1JSA{d zq%VI->blUesL}Ze34>x^jZ?QiUWX<^HWt~X{FpOjE$OvHPg0ffDLbT=oz-q&SMLDP zE9;H$r2;6Td1HPD*O+VC?%l7bZe6&F58pEk7JIF ziR5WeNQls*`u?`J$qWE8y@Y;U}(6)2+d-ZgB6j#+*znHXIl@YU{_Vu#q6hU??T`WhZI@PD}srvlp`R3OL zzh3A4#=DCG-drl+>Ex&0r(TEe;{EXZ-tW)-E_`Nxgfy}#4?b2^<8^O+a7*1n=*q2` zO|xjZa2dYFJ~Wa+6+KebKDq@1g%6MltOMzCHd%mONhL(_SdKvB-#hw7lsIrHUR)q# zdoEn-8q{$;dV&yd9o5x>Fmj-TIvzA6tD#)Y;K~b&)4C8dYl{Wv%_=I`x$z!bzFNG} zCI(=Q*(*r9^cacyWoz-_(uN2_Zx#d{b1HV@@T(ufN zZ!Pt)l4Zaj1@_)ux`XEz38K(jzZsdWrx*ccekyt!snl(=Fv!Y?eDVv-MNC$BO;|cW z2P%xqQ=}6Cz`oB2YiJ_|7%OX)4;UnxM3HRHAR}EwUpzsdp$+5~yc&pP9S${Pe~xov z*w#?4hNHG9hywSlp)iu4$4!VfV)%emZ+Dzg}aPgY7m*9>*sgV<5mS!ox{>nW%hUQ995|yR-L;o^e{4H z>B8j@XZMl&gwJHrB?4smUb>3t9KaGtGq~=~ZKC6psrihgEI)&f@mxi#zKsH|Q8dA> zJjb*^`g3_Vq_AwF+)rrgu;+qxXHoD0SL0&s)H5UouBs|To^#f`D2L>pE<&U8LEkA` ze$WRTjalsicIpuVhZBn)dl+O}BwQDWZl{i~eReD<}$P=VE z4vk7Gy4GAXaNQ|cnM5H2YbtVUD_{V_({qX{ahZUYY>(?nD;pXD7&n6lzi~tN;uew2 z`;K&`$%``06t*fOkZMC(%w$lWkguLITRq(t_7DkSLe2ij=B}{*x$tw?Rm~^^yMf*= zRAAAhn`o!)+Py`v$V}UYvBp)c!AKia#gjUqUj@^$0tU6TNBy85Va_td%Vn$E<$?L_ zq^XgWxVD_yh!FdY3pm@?k3_u4wK;OXUIRZPk^7;hcq?q-I2vkBI*!Vue1mV*vgw4= zDgbZaSIL+C!eNrc9Aih&-3}9W71e!CN?2J_5hE8Zc2(~7TBy-%Z44c;M8c=NowXkA zGDn3PdCUfY@|5K^t)AQK=Z)_!tNAs`KB$$t{Q;~0XPgV3R=;sty$m9WnwQyMoh(?E z@twGsVyBhMLf2DdP)eJ;b=|>s&aR8-y%w1m&r!YweV4BMdNCk5w5KHf>quF9l-AbQTO|Pf9n0=*Na~-zETPnMW9e0V*n~`$rCROtieN5BgHD6r( ztQ-4 zBztycauAjSNy-P*wpi}8uy(j`@2KEUou36vCY`lASlSKJ13Ilgl)Oqg6!aY_)Ev5Koe6Vfp=W<186l|pskHS2-xm2wWQim}N`0wdFUwe}kOLVw=oj4vErVb{5UdBd0;omDc`^W0 z5Ud%=?8o(m7|9?@{6}9V#7Z;GX%3_zpOUK%x9&ENLo# z1c$bpc)Iut9B;h;ue*9|CrMAX8Ca{jk%-uekrKB~BiSh}7s^?PqQn6KBdNaY;Anjc zgxg`}R?&0w3OGj-5(`#a}3+94TR*q zwfW^_`5iTHtu2}CsCibEK9>ni5Ix(IJMVW%WL$9Q*6Rd0WXq$<@ zb5No}im~28Z~;Rs4PLW#5dTQB3o>kf9 z+M$8b4nXjA@;=tyrO192xB&I)Wj{?5?R4y%(dB_R7%PBT&H?Dg76_WqM=WLT7j>14 z12`|_9o|{@AkWdcmo0oAuTb{=+qh2pPD;)f&VAhbOHcD^GY@n0zE$8rN~Vw$&EKK& zOOs$j*y7xWIIFPGQfF`9d$I?cVWs-zyy&vy6~XPbFdAxM(a%MB;6lRnDwe0|DZ+^Y_A`bKpalexvC*TpFC)Z%Vsb^#iYJqImY7aa*X?G^qM)f*8y}_l0 zb}v5neoCOZOhw;{0Vl_B1VymBLwszk$LfvGP=;u69QJX(S$a~e)I=4O3O+cSIVKgL zcZW=9Z82+KGt)UEWMInPp?`GXaFq2gu02H#Bmk|;fgYpgwi;naImAuX4)$S(R5wb> zO%Hk{=5}|{WAApM+?kFPfnn9f$rfsHOT|3JLElL5)ZY&$kxFaL-es_cn`Oh<6D^p8w9<w8X~ZhF$kN$&)4yy7{5qvQybDAZVuYK)ofur}N` z%GQ>deu@G`kc;RQ1*89^Ha9EY!sP_Y!qQdQ+N9QVR*u=RPH%T$!X?&JQg&g?72w&q z-axJRgwwj15Lu4tg~SEhQOA&}YSDYF&=KY^<*DHZ$NNv<@#$4HL>9M&4GaRBg#k*_omW=ZMfl&bc*& z`3p}5p33C-jWUkT6BH2pEA9HgT3IzKN*aiElm7DzP>q0`&lsz@O1@A;i8vI6--rRVCOg&t;I3=%Y!iT z1+-k{zN2qISVG!S8T7#KyzU=2G& z$Ff`b|1*kh#)`X)*v2kYJVo{V#X(eTgUl|9S=&JhLT)jtACb9=+!$tW`G zk4L~6xCAzB?PO&q6+m?mF3DWXTD{%xSD`@edVtoHp0 z1Kt#6ShS482x#{^y+7TNDzzBf6>Q{WAA53X;u3_2k@+puy`ruu_8Exun~w0VpYYpl zO@IX_vs>TomYg>1FhM|F?daa$f?q$e!ONT;Z)ap#hc5N%xLEslP3yjzl~yB|N`o|y zC#ve4qotqY023P$0oY60$LEE+3h0}ZqW;f?0_G!STnSMX6;Pm~(Y6Bg*6j*xl5fwV zK6EVe>ha#riBXCkS9u^MU@DvkXhbbm3xiBeMy9?fMwTluGx0NX_eg`9ntGJ_)XW_+9Db+9VmPxEW%j%8mgFWf1Jo#u_y$&GNLEY`d$nC436fQ7< zI%7bk7nW`D!;?Q4d8!o8mz2oSeWShQ=Kpdfc_OHvhP-q5+=?H~Hi z4gS+six{8871Lr4_Amj6CEI+PM@p0(B_=}vcn-5=x@TI>twVYo;7dnaNo#NwDBDL> z6<6PtC*&FQ9^84J>EjB41F8VryJ>@G6c4*rMXdpKh*hTMla@!yzhn>H@ge+lsfflE z0Pa?frVAvlPcpGkU{*ZNqTvfI7|G7m%8Qz1y;>&r`c9CHYGqtwFsx~^w=0p8F2C}l zVxm+8f;$lWYYAQ^a;%VB-kB?PmxA}QuH%jf9nRhe-=}GbLbL1lbPtIw73Mtx~Kw=&`ujtsDpiys=8nkd9X=0V?=ADcCCn`Z&Fm`l4al7*6{J0Keqx zy{RYSP^BHQ5i50Du;Grv!xg_PA`>NUVsq9a1c2_1+s0ze%KY2!V{L`CVZH~!?o+x? zzbW&~39qXt6AN@7kj;23Q95SB(|sDZ4lx;+ZkQ~Oz1+hL2W<~Jde*=4if?OcM%TkZ z1P_(;I^y^Q3=LJt&rszJ#a+&$0Uo@jxPp#YbG~H$Z93|h1uzh;#2>Wx$rarf7Bb|rE|Xyw zX2+V|1?U>t;vmg46~wC@rJh^>4 zH)ym9;P|KPHj@PvSS;rdhwgN#j)| zXZ9SR*V^pA-gk^Z%p#Q?O|~4gWc)qG&Jb&D9Y1!RZeA0o7NX(MmgI<~V}BV~ZR@U8 zVN7M*@)x#VtA56SN;@QDt|m(PnUo+F_p<2f=Wfz+y{sLLh`w@1}QKFPTsCSq4U zd%ldp(8&eE2s*T`?ZB_jeDIN1%KZW#DCqqoi^kH*CH*dE14v&C`1`qaFM3ZoVON1VxQFqe{+H~QHwR5%v5RWC z#QuuRvPWB#-6sUE&&-T_u-og*%^mQ^F)Bq|qH;V#RX>|72RJcsOGxUrM+YS3!2(Zx z5#GAQE*hV=Y<020+l_NVNTWQ6wKKQo;P|D4lCkfpHi!(tpoA7}B{Y?%Gqr9rugb&v zmSfd37_kCfXq=O`dw$t)%Y0!ibsTCd9VjS-TR9KVLICB}npYG5Awy7<@h~DMZG@Vy zX}%^>K$yx556meRZPGfc#y2n}vf147=Anjp-nzXjlQZN6=uQaQdvD#4&2AGGdeMN3 zq?kG)sqyjj{-iadZJ{1J9&84#j!*&7_IPc*{`OD?MQ7Zhc@`a5UG^*+Pwm^RyN!tp zvGrMn;z|SKV20-eu^#g*FQ^cd!kz=Y%SyV$psgx75a@QW_3$V|o6x0HEjBTrPTf^5 z7XI!s)2g>cCO%*`9W4l@HIGO305y8~n0h_9255HBPdL#HUBD{4Qcxn!$)>?iwLBKA zE&Be-RDg{Psjt%(w)MO%!0rgCa2KTDT&D?Rm04gcgpP9doxqG-qeASk)AHP58{mk+ zKc=l9=&B1u-HG*;*m|13jIMnfHP%doIi}-AR2y9Cua5tP71Z;euH`S{wS-zOhRjJj zQe_Xwle7hyaaLC-=xUTiPs6pwFXL(}FWGuK{mK9mSL4NjR#UA&9=W>Q6qIPLMGIXK zOAHz2aO1y5?XtGLYE}auBS$0{_bhDDCkPPzC}oHt=ZUmL*SYQTv(cjABKLG@yO!d% zF;>6oVW>!)tgv_!j%CA7UFVMp?vMe+HM$;A`x$Hd%|?SWQH=3rdWBZinM7V_!J|F8 zd_))3yc5K>dnT4Qs$6H^j3|avOgu;8a>+T$Y#}^vvv z1^Un=HecFhE+OLKez~pI-aM{soHCD7h9ubmx7d%x(rANY?O%d9E;CNnx!UkpkYoi&-I-3pb=XnFgBU_asPgUf3g{m8^E09kf7kW zBb4`DAoSmBdW)3mx4xIn@Fu4h>ntRyX>3wXhh-<$1EJ+@{{^iTMzp-_Iy?%)mw%TvZ#;F#bRVKt zx)60wcCuGQeA~)R?b+SJ<2JM$Lwx&&$9vp+VV^ytqgIWRA~GFSve&!>h1;7OKK2y} zG-cre^lDB5M%%+d79M3b^hVNojk`KvHTB!wbJvh{>wbUmed_(;`^EQ*FZg}b>u^v>1q#3c zz7F5#d~SVCeX2gUZn42zDLNKn|y| zrQH0cE~W54VK^o+F33iC(Ep%@W{D*C6E z%lVfgf5t9hivsf?wj@QYTBj4hw5Iwruj|zZOW55S1yo0nNE@#7`ZcmN78t@Zzac!- zGL7rOE_?MT?re3F&uDyRqOXeILZ{RFS6VD4E6A;6HurXK@ukZ%ae?G9HdmWsm30R3 z=IgY|6#GFo)HEo+>6CBYuV!4Suv~9$XK!lzf`f=d*Kq~^q1*iFMcOm@h`q$eRmE*4 z_}V+R8~{Z8vY5i`H1o7XU0A&p4R^-5yEE3k6j;rl+DtNGSE(RlF=IgUyEE%ra95iC zD^9b#IGhW-SpmG7+jw{B=DvkJD5$oa$ROG6TLsc**?NXFr`b!UOaCxuv6j~#di-A2 zNtk%z^o^-dsD(zYF)09;n4Df#b75gCJ@yHQLBim+@3)_26QWGT%h{4(S&WVs7OLCc zkQ-sP`s;olI-T+(spqHttRhcKHBc^VN@#5hnn*`S6X)QOY3ArTBcq5TP06z=eY-IY z4HZvPI@Ic9&W53({Tww<^hLRly;ArmS$F^SFCAG$ZhV(#K|hG zwU|}l^q;aEVYBRcDp|7k9>66zWPcqab7H_|#7KJOyvYG$xU{&pV9d#d0_PXMM$`Gs4045p^nGr06eujTvr(K zbiYeii9t85Ka~x5dMbl${podqJHi-zz4hQarXSKd4VAM8!y;f+)B5TA zn7p(YwLv7{H`}CWjqR++5(0dMqZZ|%ND;m;VNPNBbFmtx0!dcAjMa-*esMyW@LR-Ex8`kJ&KR{6k*qdBA2ZV3It ziHq`wB{pOfcA9}gb=6VZ{8bgb%g_)b8_6-cb4f_z%v|O}py^bm1ALHFwIgMmX`u_R4MPB8W?eeXF z^i0{D>=6kgRO?|x2VnL?*RYJXwGa&%Mqk>wcNt&1Qm%Op6riM|_}cbNP=xtLmN|d_MKpcm4DC{l{OQKfgcUw?0+EzO@8`sDRx)$3MQ# zAMf+W>-F{G>u7hO!$W509iH^ywyBdm3N%{G2G8O9)eDWP16*~~)T60JVPa}by{vmq z2up7V2ZHF81#Ck>iVFu|H%{iP5>1f_=$QC5CS;k11chM>WG4hFdP%27D6a*NLdL{e zL`GT=T4G&U4ENnPE7F)A262mi>p-U?HVAX0gugLrO06Ls5Y18G37I_1K6lyaW`T70 zq4W084|8;ro}pMsVD5y0e4^P1Yqm$6coI}d#In_B2jzwA%9|Tu_k%}#@Xj?gvhsYQ zdMYZET>}_0nw!23UzBz0-PLK4857E|CkJiSY1awhp#3YmQbepnay)kSN`ps1FaHXl z^`nvM+Hl03%C^zFiG`t@7kxH2!v;bRB6XX7P-~4XrTIrN65^)`du9{FSAL02>H41% zq2DL4YTEC>N2OG1)|ekVN}`e5pTrhik8qc+#?wEab?k4=pp?Hk*4QQ(GSGN&@}yRP zD-ew0x}f@OY>|Uz)O)#4Nt|UwE2AfH#vtq`#iW%rvC$KuL&$oB@`D6fl;z6;;%Rgb z0t?wxga#N6ZyULZ|3X%6a9ZOTps?Sjwz~?jeY2X#*)w4RE3IN*UT|^KC4qnvN+G(@ zcy+{#bdlbu8R%FF$}h<^$I47PxligCx3TeMAL^B}Sx`d&s_!o$j0CnHm2G@2>E*IW zzkPV#O({Vo%p@Mq^fn)>JLAiZ6+w;Rxx`ym+xW04w% zi4;Z^nY%V!vePU3m|Qy!{`K*@tCo`C*brg^g)8>;|givWTNt0fw5P zOYLHX)hB2QV|Vb&P4ayj?UiEnKhtfShV7ub3g+$sIGG`FyvD47&XgTZBCaM4-i|L> zTct5s$$miy7vAL{P_m2JJ>3!XN6gDDV5paVx!Ah7qhiZ@x0B|iSt`g`og z$Tq_GcfM85{Mxo8DWx(MvFcJJ=GZU#^0;S-EYjuTjqT!&4&o)}_sf|6z%(V-QkA9| zM3rOrCL=D~+umXj!Em++$q{|-l;drQ*_Te5SHn(e%Zv$4rlf^F zQFdC!da71@O^?Y7dIxC^xdCpldw>`mlv)s3_q$vI>E|$n)_``?+l;xHEKv`rp0u0d13Ui^1d)M#nBVju|rV)46lY0 zU7K*#jDDlQzx3Vj1#qe4U3#~-fR4R`af6>Ohj?Cu=}Ad#u%-(KM=M>fhHH}!I(YT_ z;^j7w)mN-4r5nI%AW(&vnHJFd-_XQx3ZQ`k|I>?{tz5MbqQHJz*OidgUFzbH9=;D=7oUsIt?xpW-+Gqa#SvSc zbCi-fyN`bG8ZS_)UI-*f%=ShIKd(rk+w_#!rlCuoZ~faF-DXun)o6vH3phNbRkypm zrfWs^4)oU*Z;f*DAqD;Na%WmgWo+619Hm_p2%T6xLC(4ZrmzLT3fAVK{zZ@FBn9uG zU0|{Qa?U=Jwq?tvg*L^miJpotyT6Ls+MTNS$;^D3II|or?8lq{s4+Y^R_2(+jBNAc zt$XQZa3rF^s2uk%hw)2fpT@>ON=5yMn8X}`s%9aXx&g>6Ds9_zB-+%+nFCudia2>9 zi1L2hgd?=G=oqOcR*p>ic;aTwtIOsNZD2m#Sdp#7MSb7{0oEy5WXG-vIK_ww055Ow z+@71x*%X&(TBfR|ZT*L9v?^OfCCyz+YVOudouoGO>XA~jwfAjnHPjmYxb{-)CzrRC z1XZbrEUs)(c4ejH-fin}oh2lk>&f=L%3ch74#`#HRGbzbd=BjiL>)GRk0vW0*|ak-_$j%&y;v zAk+wDZntEMw2+;R`PGUwyO5oz7p6RFIU?`pVq(80G)wqCH|$ zQaL_6K&!QdYQ&L_5{;Jc#b`35vo?@Y5qyMIwPtMVGhu;Mc*MHOE8oWkhcrqn9qn&a zI47agzl7ak5oNYaQrp@`KNyqOta9voP8B!QRbetLZvyJNkk=UKtW2~YU^0iM&|UM&gj*Dy4(dbMXrXIzC6_r>U_})} zsBFK6irbAIXWV*)NX4uQA3CI@KC^b*n?dg%6bu}*ce8K))Xy)viSFE>~L zhK}KlO0>&}E!G74D1bQw*Crbn0zhZ|8oz6N2IeCWr*G7ySxvs6KzPBm-U6W867{!`>di-wJthtz9k7Pur+6!Oe2kKU`+<&}Qi zQHt9?Pemz-KrP`0;g|45fDOb))jG&HQk1_Aj8)sb&a!KA63E@{nFU-0lT!Wh_=QQ?Glnl>LsEa&MT(fxB+tr1QSJM%1*%u@ZN4C z6W|4Sdl02%gJuAHY|7M*c&pis53H*W%T=mqSFk{2BFUBAHFaEfJ|!CqI_YXA-$3T>dlZiy zfP9F=;+j0iV@l2BF;JUU89DvkDY3MYH*4~IJw58gVYjkY?++J~P~^6wFgq?Dcx!Fu ze>TOkKDeH{_XjbklR^e4igB=C^DPlUEVkG+x#BHe#|>|U2f!QGrC+QYmIa4tj*m7c zQ1&FR^(d7^@EqAmEHgI2sOsC*S<_f?>fBd5!0B0~8{CVX{7E$&7d9igHII^NHgX{L zExu8Hj!6Y=hlySUQ(AGcOuo^7S@*+9{MAGuk%@80M=S&KiDPdiYiAwhVn7pGIv_gyyikz6~jP_7>OJ%7ciz_zrvDG*FxZJ z>6VFEA=qAyo(7A)jO8FXd6=5lGR}cm#cZtCy?Xk0HFQ6)aq3O>`ZZ{SycQRsEX$Np z;);mM;^UgcdSZft6D%M_lCl{oYt&-8*7b8q2`;o4DqLx+>7nYTD;!F533gtEmdZwI zPORxBdQZ`^jgZ~_X4TK2Y9FE;L6(_r?gVPc_n3!ncC^vFuvS|9OS3A%m z6rFq8JK7bkALDT}WOgaptn161pUkdHJ`ocgSVPUxfo}qb7HVS#<3TlJwTIe4jhh-C zwNn>?lZxLQD~^84_?}Sbdl@k`{zrAu;F~Ny zc46&O2YfX@IMGeGeVeRYvRg-6o`!YVy_G4h&_d1&=6$WV5E*-@wp@da9~tZjAsI=e z`^peuv6~Ed*!bI@{ZWmW$|Q}6GOR}x&N8LncJ~~ra^l1B5}RFp>a_D@stqa1H1c)S zFYCrnHkf1v0iGc)bMl|3-|}+M6ucDn8hqQI*1GIGiPi&7odviE27t36v5zQx*mwVV zCls(4N|fT#I7mtJr~y%*IjB6omx=oy*QUvym=RivsC1bKud7@Y&kE1PENQ)e$hvEd zjCu`4fv5jT2+OC@NrD*8nb+VAEXf506y=lw*@h|cI7qAtR=4Vvl;c#v(F9&~HKmXe zPU?KYMH!t6?w*!K(xpZ^$!Z+wb52h#?{MA{=mcr?)H@tYW+hcl1T!;Z>#9}KTQ%uz zT*pfTt7BY?w2I`tUUV3dYBYt5^0t94Q<*KY5`;0~m*BN-EncXn>Kp-=bxg0DMRE>l zl(#|IO#%H%xlK)QPU6;0rq#8#9v3^YrwvZdpTlssF+qz|YaM#VR{BskE`{pKa``1^7&r%&VVcbyQY2F}h6FJbxC< z_Ah<@dl}5#j#DG9ReC5-AY~3s6sS_WUZC2;wvaUcfUxgL{V%5V_@57oo%}|+DaofC z*YAq&jo`g#k-ZX7a;qB6B0FZMDaqPU?&u0jPwhDD%18S88^1?2T&i$+j{QB?xV%uo zIL}Lg4|Fjof089)T1SxWX9=d2^4KkHJR0G^9Nguxgs{*kv+D1eStG1SMn3sa1N3!^ zwiCVJj9|gb!h`ZdSQ^Ccwaty`+ho+X?2C7()r3Q)!BL*RafTl?HAZ5faVnb$#%T5V zSU8Cs4kwdO7)=7m+=fjmQKfb5D0GQ^s3I(8k4)hlsJ%Hoa&8(e+cn;*tK*C;t4`b) zAE02wzg-4!mz30gv0Tw{xQA!D(9W4Lt6~1??`)=UJe`vIW^&nN3&6b|K#mg5B;m%T zaeR<{0E-tAD9#*_)@ZW(?+g)Ot1@=rh_vh~X4F<`w855Iko*9BU~X-7ZVcwlf^i~> zf8XWEyE>va>W;aDy*zrpLVlRFYum)t*8p~dhLEeGXhm=XYu~2)&IjDJ6%tj=OZ1I0 zRyimO9J7B#8&0ZRnSRM-YN}WFB5#1eK>?l{BsOR9h9epPfE?$5S-H32;W40uq3w(- z!61|nYfPJ!BRq)2E+g`$(tTv!>sH^0+>&?kg$b_Jd zf@#frNGR$I?*z;pL24sY2a?=Gm?#~U+SMc>Fz0Q zEI9z;hsI`+;E80QWaw5cqUb4GOUpznQ(9X%n;VT@f${XmjF9LcJ?jDejj+=J8$Z|M zaJTG&QD2cN{`FCq4|MGokOI-$B{|H{jauDvqi?FYY(TTrnADpunaxzy4RJ+pB1WIV zD)@2^rj{5H1hcrTXVHQ*?B-(4$hqD-zlU zQA1!ww}1vsN{ESC@xv&?S1%fxXBpRx``gYVJC-1$v+_CEHeC^(y;B zz9R8DcBamlk3Cm~7ZirD23EPYKA#iu+}x=6;3ZH%yFNjntFi*8aY0=w^)W0~H41AZ zGgn6Z0Q5M0n^;O-nxzob_1c?PyR*xS?r&WJ*)$Ex4XDZJeeJY|XYs`7MZav^SDkZC z(M9W|JqF}fO<&W;0?Op`<}X0jb}RPLw=|{-JgA`Dq%7?Q{j5IjwF-6I>s~H{-HkkL z9yTbs_FCTe)~GgtUQP4*2YZ{93fwG8Xb-EZx|b+*%T=N7HTIPH;Pi~UA6D@;l;0@i zOj9zScf3p9+%{R>yfn^^EB%5KJ_^Tv8!Oz%{4YO^x_*FQO<6?u#}J6Xg!AVLV@pCY5+Gf_p;TB z`GSy^)#GD(qSp3^VjoYbaoR5aYV-N;{XrLRSHVNZwo8-Y_*w@a^DpRciWG)S;d5Uhe! zZyd7ZsFb$n!$=I?*zY!$)HF&Y@903SZHNOeWty0zL}hyWZetu8Kv8b)2=|4oapHDA zSODOkd=1zAou@0BYU4*KNy#bh?F~yKLNUsi*%VmH zQ33u_h0=Q-8!NRot485+vCd|=zdiSA%oAhD_!Tv?k!z6Frjp5W-Ii>xsm-G_AIVzR z*PxvDZPhOnpdB{G5 z&1J?`aslh2j0SS0Yz)_?n`!lmpO=tiyVQH^=1LO{irzk3!*}fp9$-gP8G>tKjtVwQ zORnXnx3gNl(+;^nU(N61d}CMH+Q7m{xSM!|0+j(>%e=>9!?F{{&?#fL!-+nGw`vf1 zsm1`rb$h6|H3dI~7f-LZ;(u%|7S49g>5XOJH}()sF8~{!)(I8N&drDWF=c2vA?%|p z8D6lX@iH&H4&JRjtIT9nxZ_g+t@dNbX%0U^>i27|`w5_c>zu))rMVVkTbN(n@z|KD zZ?jr$Y|WEy*i=^pSO&UDnm*QqkJV>%lJOlopmxSu#<%DCRPd*|>BApzi0&gaTpEP9{$+0VI!V`-@X>0Y=d zJr+<`{f-N*u8fw1sA39D47AuINCkjdr}IdFvT7-TNjWdT^1_1mS+v4r+EK`oOD2Er%mJZl{M> zD-Vo{Q-~%qk?Zd3plZB21Oe!GxSeFcPGqMm#~&hVnXnS934x^QXLg!MtQ424vS}3} zTD{)I$#4?zu9H!9ajEv$eosJ0;x_ncmIQFhFCJElT?QNN>#v~^+SEz5UjUdh^f*%1 z3U0sN*P(bX?8w+4C}d^)AnRUlNuD7r;1azL277Q3_RXU7vI}2S_ZG=(54iXC76{kd zvpn$}GGQ zRkrFI7w>E8cvpTSX2}d|&%X`Wy+4ZTP@({rST-VZ`Q$>C3@I&tS;j&3J)>mnHKfWi znG7b?N=23>g2wvPy30THp3!(rVaS(~i%jyX; zG>K1v*`e`4Xw`CW)4it;#i{a%Vc?3)CCT1^p`N*7j~IrhMq^=XtC~hwVs)o`)KDf# zl1Emp7qy8Jo4+eh9; zww&NDR19k-=+u*7-QMVmquPn3t#+d`jktO(_bx&J^S~?@B6BF1f1B`#kz1HcTqyUs zM^4v2mGrsuca8SWDZEVD-CxOG7R4^ka%7#(Np90Czh$;{?w`|lGOPkaUopOU{X360 z88r<-p8mGwo}^#Q(2Xp4^PSmuXXOHcG;Raz7dNi;j@2nFfvv3;mPJ>X%W9VKxSd{w zh6`+BLZ#qD`AV@n_m(37J3z$0RsMR2*upUh)dJhrg$Fb2L;4Q8Fn#JUE87+s4lx_~ zOK4feoI5$bC6K^wwcXRP+uE&|PXhaR3A~)d1Mc!U6eYr}T!ORO48Hd;1(Y9n-+ zfV}e>nQbCt%s+h~NQ1QNTaXIq#$W7T!JxR%!in_*Y#753CcyaLG=Qd2tG!nfA#$R6 zc^Dyt!wlgLu?d)$TJzuZ!;uOe!vglH(Gi$Bjh@?G%quuK47ZIL1O2DU6)O9+9(^6aE6CjcDXEbI()TcwbqATcUBik zk+anjMAGSvhG(EUCd(q&@q3%zg5v)KzMMu)*4-?J#X8zEyll zLLd$4Y?CFzA0a{URTePXG_en`% z?9IF(rsaAT_w)@_&>JDH>u9~PI)0bx$14ejV~DE|=b=~3&n*fyzmB(d&9r)xFS6W! zU}+PsV^`Lh%j_*bxVCO#%Zy9<&gK32NeGiJO1n@A;@dYWk5U|kx_8f^Sl21 zzJGmRZ+JzFrKLi*9z?5=iKic`ANR!5i;CDQlObKM2k^PWT?2RyujUpf!#y}`-3B>oU|2EtEtB} z>XKHNSOA?_j!PNQs#338W(9KfqdA6Q(T%m>u6{ZBu}ZqD0xuLbtl08l_#p%hS>{#8 z;0cm@>RT`3BPzs3JQ5#KFLp!dSz8mR?LXflrK%SVyyw6N7eLfSm80z8 z*72D}Q$yJ`rSv!(_JY6GPifJAh1sq~nF|1}QhDtX0*4L~#_(XM{-=H;`9XHuOl;4T zNpkiaiSfD4x@?j$Q(rW!HAH6gvHbdUn=A=vPe+@IjlR5oj>L~ag}ejdsNc3w$1RFN zZE>_wZJD!qd*Zog4WaP=2B!7-36NTKOFmkyT;EMy*nG`OwN#4Ka>&R?Uy#uiOinB! zf0u--unk`wmDM)hududDrfWk0-oqeilVBb#4pjxWloH5x1~iIFC%2zrP_-6xcRy7} zzR>qDfr)+V(@hL2gUR*Py)J4!t!aIg=tLt-Av4TGf@5S~G$8>%eq~kmKhJ@JpEvwu zGV{LWyxq`3lv{bvTk$1p-Uz90_%#|hrz(Jbkm$1WmX-7E9_VqSifgL^e5!U-JjZqE zJ}HRlC4vX5Qnh1CUw-=pvPSUU4L4Z{NENglS^8mmD@aJ=^W9P9Doe|N$sy#^odM}s zvU!)Kj*hJsSywnh@;*KeF+QrldP@&EI;y~Xr?*Bpcj8dxa9%Thcm{eEuX;2|Pr6VFDt7q)|af^4i!Hi&njb6d#YYrF?yBJsprLhhi z5CCx9roW=Jt}vEBIl{^KCnHHLvX)GBXItGFI`UN4C~E*=ap3&p-qKFrQZXOb&KA-o zVKrFVko|zN)Y?0`n%sIBJHO=@s?3QxqaXco=Hn2d);ZPxFg#T7MDcblqNc}}zw*!Z<(O&k9qQ$VxUZT^PGP{?gRtz<_U>(oXyCDeHz zs>}pT(S7d**aVvXz677+8nC#5zMJ#MttKk^p20tgIF#4jXJo3v&=O{oYV3tIs_g#i zDy7SGp-t_nT<<>)m{plJ=M#GO=-V>wK5;YK>%EcJ)7LOyWrN-$hr>X68hg=6MrVq# z@*9RX^r>vZj!_ALF*1A$+hQ#($)Y1Vkh$SG@%qfFJG3F!*ZVoRCV z!bFc>B8!(#aM!PpK%}ou#2SWRP+&{nX_pR@X>mrAF(<~qn^(MYv{Pp6mH@{wdov!_tg1-lQtTT?tNcUDQ zuL5>$i|~b!6dyt`3IXQ#7GkT(#rHfl-{KSrbUmtb&<>RPUYWJEUsgDZ`6XaN{Tx45 zxkjU`x|G+*G%h`WzJtudtH2h7-L9wlvJjptd9Hd%Kg$BKhbpfV?m2kD-kR#S0^G`_ zFhARP$96rXvut{A5ChXgb=b6cIbNpVIE57prBowz4052>CmaKKBCY>aq~+g?AuMBd z=o!O8a}*w);}`JJUaY#qU8mkKJm;}yKt~2XZyp^BUMdExpLB8Mk^L%nRrRSa*s^4z zwynQym;p^1vDs(3I7}OETu9I&a}dE!+vDG%eyxl-6OXk^|SZRRyni%4Doy%uS0xn^3ERnGs9 z(f&Pb`4XK)!J`cp^88E^9z zqn4&Oxq>;D5p;SgD2DVoAHPeXCAXAch}O#zp);> z1?~q6>I`$0pl;>H*TXj~@1=U14#xFzrG_FjkQe;zK2@cH{`8BROONX5QN-X=g06Ch z*ETu)nB7=OkY-_KUteHv&gq~J%gjZAkxmT;_Z3leA%#RT?Au(I+tpV9dB)mk4cW@F zfVy|&H>|jiyh=}^#+m#hM+EJV+J@~mZJ&3 zjVR-Q0~3DR#%=dl1IREXixD@$K2#A%dKUMjFYqnPb_=&l^%Z4l)JE(H?in)x7vN+t zns1D@fH^-h<1hh+4e0@{{Qy!Mev!Zd&;M7~w&f^#24OApx`lLR8qo#RfB*OYbM>8itwBYK zN9g9l;ln2aPRaN4uo~~j=l8UV{*lOq!VeqD?9f`CbCuR=9_HhNsN4vmRIbr%QcJV2 zV!s5wVJbL)^4pI7_cNe7KfCgwA%BkyLvaOSO}XFkSdQ;NUf zv-{nc66#?!4gg=Ia6Ok;-R*rbFPB55nxYlnb*>AP%HCVzm8eg|!nML@_`7^rt>w*9 zZ5Q^s(1$Mz&}^F0&*6I7F#)t}n{VV+_p8yBSIg4Ox)+yT&yuy-i~3%_k39=hClkyX zp|dt7Qy*ynt!x4*O4OkZfV=#FQ|;<~Ln^IKUJUN7{FQ3u|{h##&H`zx99oRd;5p3@N~!A%l)cs zV8Ij}MkB1|kBPJhvGy@mh!DI*sEQvj+7m71k!qLU?=w8uvJ1&owgn_qIke<9ni{+M zy&?*kZ5XArXgO|#nK2$&NSGC2lp?VtkEC@qF60nEb9K!Zp`%+n)mP)Lr$8aILbM@U z7}AQJg`-X$g#q*E;DoOk&7dL)4j$w--75WA@_GS!!Gx_|D8CbSJZxFq za7t`FQ%tsZ2>1q9V|8P#u-s5JYXm2oTx#_7Fp)zq%0z<)@ElK7t6Ri8sX#)jI8;^T zZ_OQ^GfFc{yW18_ui${LeEi`4v{xG}Lbjr^*eKeT>I|wA_jaiV z#E=YXAz{v%5Yy}3%1)r6uHCVcEIOkH1g|^6Y6+FFxK0p2i(9OXUb?EAc(h0duav^4 z0*kA}Jy$M3n7EN1yOP3|+z>2bkR&Rg=+u0?U@6#iGjke3ccOU)Lv5>-u_3uEd2UZt zTjR;5v&V?DRs5w!EIuW4c*Az`Af)*UGis659$^$Q)pXv+K=)ck;%zv`4zXCNx@Xqp z8&~r@coWjRszx)D;8s%eomSvL;pUOGo1g3(o9Gx0ue1`)YGVLidUwFes}QebK;Rt8 zcTLa(R{!Qs{%36&)PTfvt~iN3)Zp$25`rsp>64U&aOl!l*VKX!F?dEBH0{-2wgi8{ zJmYfm4mmf=8q)4SKBlDzgPM^%?Uq;2tej($YA!+%Dyjbtk;Dpy;nJl!iuiS+e@Zuw zoRW9f$LVO*>Dz1J*rH1Tz)5Ma5Y0%js^^4B67T~+R8_X>ROpNB(x(HCQlZJ(;;$-qj*Ju8LP z+zKqAi}yOLWO`5g%*om{Nr7GqEgO%)-TssOb8Sy!+atja3XJPn;e4cH79L2&GJ^z> ze7oq@2ygYj>lP)xGX{_45etLrM;c60I0goN7ZF&pin4*Yyu`&%@NrZ|N8C0SND_7x z3()kbJ*_g^mJW-J}~KDo0z( zrcO(+xs`pxy=q)bnpkLPkm1P>i+rZDbHO2*k}0zcifoX zjjVctQZQ2VE1QTb7$NF4jnLVa74W&DpKTN}Ten#Zvvi)o(nvVDpXbiP3qreKDG|{l z2$mnp_LWqORC1IXw_%p>UKC{#*^*&;oWc#X{~j|UY#XswCfK`$+j?sAxwh0_VX2vK zSh}s{mbWta6F$WcmSzh(wH^gf$htC@dn_uXSkRTA!8`!(TW4Iw)XNahP?o*&niQaK zbNW347U5nPu|irJ%-L`LcaWt@v03X`{&waVRU!(I`R23{j%2sXwV^%N`J%ii(qd5G z{c=(8MbjQwn7-}IvJ1fCSGo#8m-M(Sl5kjA#b7CbFQzRA@)I-?8N{9XGwC6MFPKv_ zmB+0uYOq&4h%s&!|L}O8t{CS<&nvA*EZv#ouo!YUeZg}fJB&&Ge{3)_&f?I~Pm?p(c>n(7OQW`)Y* zA9=8!GO0G;e#on*TxX77Vae++alL4+ZJyaS8YnFc`_9Xv3R__=;z(U_gRdVUbq(vj z@ZiwBi*>|`PX&Kx5Sno=ZGgx_t*g*A!DuJtb((Vd?<|=hoP*+JGuTnr}ZJFL|7QwyApMQ>`9BK;`t3YqT4 zrW0pw)e9bt)4=4>XtO0jWm@`;<}=yKU@nIg)Trv37cLOxEU$;qXwdQl=SHDy5* zp%`_l6#A*B=FVr?+)0TiBJ6*2OX?6MDL!#JGM4#JL)WI_32%JSGLv z)H!U%7)$9!1TrO|njwID3eCkmU3M(ZuR9$8&`JW~yj%tyO)|$TGI<5&;9S#!9kXsp zptX2T#6<0`M1}1y8CVyMTT#&B1?vuEvJ}{Li>fDQD&1u{n)h3MeWNm6 zF0WThswzvvxO2Lj^W|K+?B=|Mc(Mzpvq>!>@0suNnpXK)4sT2I2?*c-%b);75^bNJ=S3e}FuCkM2f3M87^8J&^u)Tt%C zYF?XmTWL-=ippQs74cYbq8!~}(P2lW+H&P>p-(Q*xjY|l=pow$#|1;=TD9N?_G2H2 z9mH%Unt>&*gwm&_0OHjwi(-Mh9@I&D6= zVmZ$tLJOu^)t1?m0XRB@ zDbHA%#BIV_Y*P^{y1JphNY#hb7yboH7_x%UN){F#H0B;=H`n6Pro*l-wKgTPrrD3x zwdO&X5ceyKSr5544br7JzCIg5;5?4>hM*wZ4sv|L?hU3sA?ImoF!zIHBghk zuV<-^+=3pJ*_>@m>3_KplevJv%-oA@gkGfYbS<&(+Nc~CoJ&3Ik~p*PSz5987#@YX zrJ4Z4oIww^(?ZBB5LO}i^G(yW1W+xwRD_qIqG*%mc-kaC%9izrkS~D&k{f{($-eWj z?xpOwA_TsjUK$43dWyI6zd5yAS*ti}+l$X1SGF;!9Jq%Grnw~JSU{I_n3NIkW8|ggA$n%j=KI%%{)(RzK*G9_yY}yL^N|jakM5sN)QVoecSsln{U?~p$=pGWSsgSm+w=9)J+60V?q9!mnXQ(W66pBl>#IT#03VAxN(zPgR9->-@LnsOt0b`UuRdKVBn+oaYvx+R1eG+uEH9bK zSA^X?A^=o_r&DN(s?4kCwkwUhO`b*3@EkfckQpCW87tM-lNC)ZpEn5wDhPkgts-Z@ z6&fUAxVH5rKZFO-^P&iei+M2H@8+a!^}zE|#JwFT^06-($-bcYe@1Syi}kBt4&{i; zt$i!@5M#dZ%-mhH*ZIIUe6x+bg^PLkx~ftH_h5_=QE_&CyZyc(`ji{C$-B4TIAr zGk5Zd4Y+@|mjNYKr^i~j6XF5!aLbM9?9yq1Xlp-haA#?7dY@q08d4783#Cy z4!3+6?Tc-&X4{t?X(IyET;Q^kd)+!)=3f}FAc6a`2riaz$4Mh)JYt4K7FruH9`t$l zc3WPF*{Q?VbX$lIi-y)X)9LU{PK4}On?=X4E+OQS4ssVwQHfN?No%u&)f}3m{V1gc za7?=K4WS!>Dm)~EHUzM8bZSdH)i#4=NN}S3XqxF9U0$!V2Ysr;@gk-cX)xzpC-ht! z83QQ4$E8`#+-{nnDl>QlVDrc~Mt5zr3xza;j?&E7o7ROf144!uGJW~nu^ePl%~)E=kpl78AHA3meU9bz3XjQ4M$ zEWCD$A24(+t9nflk2$txGKXlyV;24=nBDN01L{HH&X~d&TOQX!_<7^L<%8v~HDM#O zn1K9ovVcaNn&AyS`sb@cn4z{q`1!L!K6tMbs3_O3>Q1R%;bP^6RlsQ?{~|xpOh`(q zV9(`e$lYA{@AB-5VaAC(I5fs0z(71KFW({38-~VL-o(6iKIo<~-y`6wyUK3T$6E?52o_M1h%<+Z3r;ufa zRv3CrS0OmDdGz1~x`2DV3L{ixJp`M*tOPQ+)y^`K!lInMXX+_cwU!A~=xU8VP2_5W z$1&Z_wR_tRjtiBWY#%Br*?GoHr;Y|~j1J|RLd)j7eN0;lBJ2|Q5QrR;c8E%J1|85q zai7n_RWP$cP%GeheKVI8S!oVhkb!pmQSnkf0yCb`ZbFbrFqldMUt?Xu1ufKITL z&z0s^ign~;-bAJgIf>LBF>Cn#IW;x*0r5or;Ra@VVoIY5d3oOP`n!8}pu5UsJM### z9w?JKFS_dVecq8{6%bt&-(|G92h4#Ml+jouHH~D3kF?^x+qlgXyrWy7q?+?Md=#`Y z43Tdt@!gz1ocUV$$18bvRF+mxtdxfZp2VoLm~)*Hio<4o?Tgb3^A1!B8lc6NbI;0!z(V${2(egtC}`HiE_n{ovp8wTA0jsxP1wsq?r{GqP@a8 zp74fWLP5Wr1IakgRj8RqXdC5v-H=Tvbiq)j2y?!~G)s{sI5nFD&krdnm%X)XIx;(_xaySO zd@c5Nf5XhRb7Zg`cfTX*1cy+bFE?H6)NA&DZdmCuHY^|4*%rC6ZncFI986LdjkaN2 zvL~_zWnbe~x>D7zX=r42n=!VbT!(U4vJL08N)kai1Q*-987Sr|qcKddzi*&Xd!)|9 zu@a?7FP@d96al@y+rBrT{iVVl9y093IBkORNOmXa4Ki0e1QRp71wh5T&V>J;;hVbR zy0Xx3>;lR_fEIweofK#_wMclwYMGOYWz~3eY&a@mG^lnm+W@&pmcQU>C4<#$iu&eTo5OxHKcsX`l0rNjUBf zldo#o7?Q&?v4Nob#sP-4CokW&(*;PlBG91v@gZJ&e7f!Lu7q!KW z3Q~VAZl4D!)tm&*m$xMh+{jw6k-tnzuFe8L*{zE!@vF+Mvr*N+!z-4A50qMra`Sa} z6>5~`ZHbvU_!{@G1*Wau>*-0FjrD?ey{CGMAwhX3LgBqyo4h&sq}od&Di(!{F}h44 zf`$3a~67y^OC)LnwqVf$uitzIYYS&W_`Hj!#mi5upF9UA1hs zud&+9R5vzgP0tS(i&+Mr{ZN`3*^SaNz%+O4d>pO-A4E>zdhiI^1D1NF%Q=@U!cITB z^NndQQ%-X^b=`?)j8W`=#$d}8)268pG-uWX#nvpPMpmUBFP|xeFV8jIZ3Ux;<0w59 zAu>b~9)Ih}HsM(!-gkG(ffKA7UJ%j8=A!1~EgwBG(!$3Y78vlQRltP?H#7d}TUDp= z>(p68)k-#J^A2!6_@M5s-}nB$n7!xjGGEUEHBnd+SSde4>ByH?yqjN}Ce~bG<@hB2 zF`u6Kq2-iydkApyPoow0XZLDQ>Nh?p*c@2^Q~pEjUOCTDvXD~>h6XB%j!ts5bs3~C z`88Q|uj(_0$p$p2Fxqg_7DE-`sxHdxn2}UE6Z-K5qmfoJ6X@56m4B-RX=c=gnz@Sw z0Gl*6*$`;(sp+bkg`ZL;29k`gwn<;wZ)(ffWFRw_TP)`sm7z3UmN88;Q6wolaAO5I zSf!-4t5PZvd(qMMG!ur0ZINK=kzB`UuRt$)%oV``-=$uai#8QKd;MfJHD>o;<`JNm zvMgfo}2Z2@9S6RY$r--ad zQzlQ&6rj;#bg`LabNggvJ0^QOmtXWBwNPu^#oQxu+`mwykRpJu?5Z$!lXhP9$=OS> zGNCG{Nfnlpg%h+p9wh8*%W{H#lrD3lFAkT2mR5Yhhp6<@;CV$>el>zJ#-BLNO=SGH zLAsX*2}_vrzY60uAtIFdcN81oyQrH2mq)X@S96%I6+VKZC5xvlqQT%1yXZLR)vuI8 zG`IS$OLq>CVQor?rb;yB3fGq_Wt}u*7u$7{#r(E=+w8vBsv`)TDaN^|Syfu40JR6t z&rT@8ePS%Gb!@lRJ^1*57YVUMgqmBWc>n-pu}MThRFI&N-eO#nryAa&Qpwmd-{_FI z&Q_j=MdHaIF8`b*40>JP4IllfG`_Wg-n*q*mSVk54D*s zrX6eL8c#cwh1AY+9Ig~NXBAX45K@P36;~NA9694%l~ox48qZ7iJSL7=YJDp!34|MC z!Y?-C0Xl(^DE)7on^wL9Zrzk1u2`J_*^yqK+e&- z_)}vl-^t8x62StH<+?YAx&6e{^sHMOHqA)8Rh}~){*V9lAA{6+IVOuu;86Y)e$3J=toy672kX*r%b-+p4e&bbla8M>vB+w(}YrE zGIa`9GSG#C56}$UR`h39V=Y{G(%n`y(Ljyj7KS;Fn@O~aR+SUxj#v3f6}%DAirmbu z20f(A2E3zovBFW%tNv(-SuQk#^z1IRfCzNgIY7_bcG>p^-$&}5fcGHZIThBj!Qe5M zwcAKhh}a&gN|NwcZ5%SMvQ^Gf)-R6NnsdC$ z9Li@j@3HoF(N$AG&Uhuborma`{iRxpkTw#Tgw8p79-TbKZPls@_*8vPeGX3X7Rd%` zvn){!+`d1*@zedU+pSk0PBHYtj4FZV%7=8JBL<{ zwvM(gYu&ihg^>caOxgtd?FmRbaT3eQ+0K_p4+Q)OH~y3^j*29pENF6urkJo$lM&jJ z{ylt2-U}quHKjLVTrOMl8G-k@m$qEgJ!dAwy;l6EJMJ$eQ`8=osd!(_+bvtLIgm&| z7(_u6Mf5PCxE0-gZqTRo&~)q732}$2&GMJC07z~~;%}9HoQ<$e%|D`BmI6|!ko@7i zljLHevoe+0T|hqTaApHt<}p53cS%+|sFp5LQi{_pK;?hJvPCxKb}lKC(S(v$%SkJI z05N&3?#j0@kAq))1tnhfSz^G~_mK`Y*N-BkwFfQLPZ}Xs6wM@d(M(N~KrU|Um91cb zXyHq2w!H}#n6NSH=ukLfbBJ!e=YhnPf|)7+i!TyD964E<*kQV#qDE)cDKAJdt$dqW z4TXHtWMeikY-6#dR)e|Gu9k4%->1N*T)NeFB{&lUs4B2RwcJj^V72iPBn%;FP#R)x z5x6*C;gFD|13^!#f?<94Q$yP&i_7tCTQ=x9(v*~Xu3|*b^tsBS|NlRD= zR#)>uymmNJo6mN=T61NkWaxR>Mr$8ohDgcq?&ibu!kk`6G87~5g|3yd)>peA`JeH=ZF%9cCI4rh=@X3b7R*~)~k(;<4`*jMAk;D%O?Zez&e|sD| zj<^YmD!

    6lKUhP9A3 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

    E-U; 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